<?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>108284</bug_id>
          
          <creation_ts>2013-01-29 18:56:09 -0800</creation_ts>
          <short_desc>Snapshotted plug-in should use shadow root</short_desc>
          <delta_ts>2013-02-11 13:41:16 -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>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>108273</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tkent</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>819684</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-01-29 18:56:09 -0800</bug_when>
    <thetext>A snapshotted plug-in should use an internal shadow root, so that it can display a message to the user indicating what is happening. Currently, this is implemented by retrieving an image that is burnt into the Renderer.

As part of this, we&apos;ll provide a default styling that could be customized by ports using the extraPlugInsStyleSheet() function. For example, Mac will grab this content from its injected bundle to provide a platform-like UI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819685</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-01-29 18:56:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/13112495&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820463</commentid>
    <comment_count>2</comment_count>
      <attachid>185545</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-01-30 13:18:35 -0800</bug_when>
    <thetext>Created attachment 185545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820691</commentid>
    <comment_count>3</comment_count>
      <attachid>185545</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2013-01-30 15:30:43 -0800</bug_when>
    <thetext>Comment on attachment 185545
Patch

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

Unofficial r=me with adjustments to style calc calls

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:146
&gt; +    if (displayState() == DisplayingSnapshot &amp;&amp; document()-&gt;page() &amp;&amp; document()-&gt;page()-&gt;settings()-&gt;plugInSnapshottingEnabled()) {

Is the setting check required? The displayState should only ever not be Playing if the setting is enabled.

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:355
&gt; +        recalcStyle(Force);

Is this second recalcStyle necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820763</commentid>
    <comment_count>4</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-01-30 16:17:42 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 185545 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185545&amp;action=review
&gt; 
&gt; Unofficial r=me with adjustments to style calc calls
&gt; 
&gt; &gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:146
&gt; &gt; +    if (displayState() == DisplayingSnapshot &amp;&amp; document()-&gt;page() &amp;&amp; document()-&gt;page()-&gt;settings()-&gt;plugInSnapshottingEnabled()) {
&gt; 
&gt; Is the setting check required? The displayState should only ever not be Playing if the setting is enabled.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:355
&gt; &gt; +        recalcStyle(Force);
&gt; 
&gt; Is this second recalcStyle necessary?

Fixed both of these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820985</commentid>
    <comment_count>5</comment_count>
      <attachid>185659</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-01-30 19:24:48 -0800</bug_when>
    <thetext>Created attachment 185659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820987</commentid>
    <comment_count>6</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-01-30 19:26:29 -0800</bug_when>
    <thetext>Updated patch after r141066, which changed the way you attach shadow roots and their subtrees.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820988</commentid>
    <comment_count>7</comment_count>
      <attachid>185659</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-30 19:32:53 -0800</bug_when>
    <thetext>Comment on attachment 185659
Patch

Attachment 185659 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16257054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820990</commentid>
    <comment_count>8</comment_count>
      <attachid>185659</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2013-01-30 19:37:00 -0800</bug_when>
    <thetext>Comment on attachment 185659
Patch

Need to appropriately remove of startLabelImage() and references to LabelSize from other ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820991</commentid>
    <comment_count>9</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2013-01-30 19:40:06 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 185659 [details])
&gt; Need to appropriately remove of startLabelImage() and references to LabelSize from other ports.

... which means removing ChromeClient::plugInStartLabelImage(). Or alternatively, don&apos;t remove LabelSize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820992</commentid>
    <comment_count>10</comment_count>
      <attachid>185659</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 19:44:07 -0800</bug_when>
    <thetext>Comment on attachment 185659
Patch

Attachment 185659 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16218894</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821000</commentid>
    <comment_count>11</comment_count>
      <attachid>185659</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-30 19:54:01 -0800</bug_when>
    <thetext>Comment on attachment 185659
Patch

Attachment 185659 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16250104</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821094</commentid>
    <comment_count>12</comment_count>
      <attachid>185659</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-30 22:21:04 -0800</bug_when>
    <thetext>Comment on attachment 185659
Patch

Attachment 185659 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/16265001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821111</commentid>
    <comment_count>13</comment_count>
      <attachid>185659</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-30 22:56:30 -0800</bug_when>
    <thetext>Comment on attachment 185659
Patch

Attachment 185659 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16267005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821139</commentid>
    <comment_count>14</comment_count>
      <attachid>185659</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-30 23:41:12 -0800</bug_when>
    <thetext>Comment on attachment 185659
Patch

Attachment 185659 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16269023</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821168</commentid>
    <comment_count>15</comment_count>
      <attachid>185659</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-31 00:11:53 -0800</bug_when>
    <thetext>Comment on attachment 185659
Patch

Attachment 185659 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16268051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821281</commentid>
    <comment_count>16</comment_count>
      <attachid>185659</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-31 02:26:13 -0800</bug_when>
    <thetext>Comment on attachment 185659
Patch

Attachment 185659 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16278112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821313</commentid>
    <comment_count>17</comment_count>
      <attachid>185659</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 03:08:32 -0800</bug_when>
    <thetext>Comment on attachment 185659
Patch

Attachment 185659 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16269119</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821577</commentid>
    <comment_count>18</comment_count>
      <attachid>185659</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-31 09:17:25 -0800</bug_when>
    <thetext>Comment on attachment 185659
Patch

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

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:291
&gt; +void HTMLPlugInImageElement::didAddUserAgentShadowRoot(ShadowRoot* root)

Elliott&apos;s been refactoring around this. Need to cc him so that he don&apos;t stomp over ya here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821595</commentid>
    <comment_count>19</comment_count>
      <attachid>185659</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-31 09:44:17 -0800</bug_when>
    <thetext>Comment on attachment 185659
Patch

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

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:337
&gt; +    recalcStyle(Force);

Why do you need to manually cause the style recalc or set all these needs properties? This seems really wrong. Just like doing appendChild() in JS, we handle all of that automatically here.

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:351
&gt; +        attach();

Adding a shadow root will already cause a reattach. You don&apos;t need to do it manually. See: ElementShadow::addShadowRoot

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:362
&gt; +    attach();

reattach(). What&apos;s the reason for wanting to destroy and recreate the render tree here?

&gt; Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp:171
&gt; +    firstChild()-&gt;style()-&gt;setWidth(Length(newSize.width(), Fixed));

I think you should be able to do this with just CSS? It doesn&apos;t seem you should need to layout the child twice here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821646</commentid>
    <comment_count>20</comment_count>
      <attachid>185810</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-01-31 10:39:50 -0800</bug_when>
    <thetext>Created attachment 185810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821658</commentid>
    <comment_count>21</comment_count>
      <attachid>185810</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-31 10:45:41 -0800</bug_when>
    <thetext>Comment on attachment 185810
Patch

Attachment 185810 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16270281</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821675</commentid>
    <comment_count>22</comment_count>
      <attachid>185810</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-31 10:54:26 -0800</bug_when>
    <thetext>Comment on attachment 185810
Patch

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

Looks great, two small things.

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:295
&gt; +    RefPtr&lt;Element&gt; shadowContainer = doc-&gt;createElement(divTag, ASSERT_NO_EXCEPTION);

It would be nicer to use HTMLDivElement::create(doc) instead here since you wouldn&apos;t need that ASSERT_NO_EXCEPTION.

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:357
&gt; +    attach();

Lets use reattach()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821684</commentid>
    <comment_count>23</comment_count>
      <attachid>185810</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 10:57:16 -0800</bug_when>
    <thetext>Comment on attachment 185810
Patch

Attachment 185810 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16292035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821706</commentid>
    <comment_count>24</comment_count>
      <attachid>185810</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 11:06:49 -0800</bug_when>
    <thetext>Comment on attachment 185810
Patch

Attachment 185810 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16266339</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821728</commentid>
    <comment_count>25</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-01-31 11:16:16 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 185659 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185659&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:291
&gt; &gt; +void HTMLPlugInImageElement::didAddUserAgentShadowRoot(ShadowRoot* root)
&gt; 
&gt; Elliott&apos;s been refactoring around this. Need to cc him so that he don&apos;t stomp over ya here.

Oh, I thought that was the result of the refactoring :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821733</commentid>
    <comment_count>26</comment_count>
      <attachid>185810</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-31 11:17:50 -0800</bug_when>
    <thetext>Comment on attachment 185810
Patch

Attachment 185810 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16264360</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821739</commentid>
    <comment_count>27</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-01-31 11:21:04 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 185659 [details] [details])
&gt; &gt; Need to appropriately remove of startLabelImage() and references to LabelSize from other ports.
&gt; 
&gt; ... which means removing ChromeClient::plugInStartLabelImage(). Or alternatively, don&apos;t remove LabelSize.

This is just a side effect of this patch depending on https://bugs.webkit.org/show_bug.cgi?id=108273

I&apos;ll run against EWS before landing, once that other one has committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821745</commentid>
    <comment_count>28</comment_count>
      <attachid>185828</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-01-31 11:24:32 -0800</bug_when>
    <thetext>Created attachment 185828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821748</commentid>
    <comment_count>29</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-01-31 11:25:49 -0800</bug_when>
    <thetext>New patch with fixed for comments from Dimitri and Elliot. Sorry, this is going to fail the bots once more and cause bugzilla email :( Like I said, it&apos;s expecting https://bugs.webkit.org/show_bug.cgi?id=108273</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821756</commentid>
    <comment_count>30</comment_count>
      <attachid>185828</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 11:35:58 -0800</bug_when>
    <thetext>Comment on attachment 185828
Patch

Attachment 185828 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16270314</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821769</commentid>
    <comment_count>31</comment_count>
      <attachid>185828</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-31 11:42:56 -0800</bug_when>
    <thetext>Comment on attachment 185828
Patch

Attachment 185828 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16251495</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821773</commentid>
    <comment_count>32</comment_count>
      <attachid>185828</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-31 11:45:39 -0800</bug_when>
    <thetext>Comment on attachment 185828
Patch

Attachment 185828 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16273347</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821791</commentid>
    <comment_count>33</comment_count>
      <attachid>185828</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 11:59:54 -0800</bug_when>
    <thetext>Comment on attachment 185828
Patch

Attachment 185828 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16269363</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821802</commentid>
    <comment_count>34</comment_count>
      <attachid>185828</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-31 12:04:32 -0800</bug_when>
    <thetext>Comment on attachment 185828
Patch

Attachment 185828 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/16270324</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821843</commentid>
    <comment_count>35</comment_count>
      <attachid>185828</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-31 12:38:54 -0800</bug_when>
    <thetext>Comment on attachment 185828
Patch

Attachment 185828 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16266378</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822063</commentid>
    <comment_count>36</comment_count>
      <attachid>185828</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-31 15:56:54 -0800</bug_when>
    <thetext>Comment on attachment 185828
Patch

Attachment 185828 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16303061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822209</commentid>
    <comment_count>37</comment_count>
      <attachid>185828</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2013-01-31 18:22:01 -0800</bug_when>
    <thetext>Comment on attachment 185828
Patch

Unofficial r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822243</commentid>
    <comment_count>38</comment_count>
      <attachid>185828</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-31 19:27:08 -0800</bug_when>
    <thetext>Comment on attachment 185828
Patch

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

Unofficial r=me on this. Two nits.

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:337
&gt; +    return (childContext.isOnUpperEncapsulationBoundary() &amp;&amp; HTMLElement::childShouldCreateRenderer(childContext));

nit: extra parens are not needed.

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:343
&gt; +    if (displayState() == DisplayingSnapshot &amp;&amp; !userAgentShadowRoot()) {

Why do you both assert about it and check here? Early return is usually considered better as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822394</commentid>
    <comment_count>39</comment_count>
      <attachid>185828</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-31 23:46:45 -0800</bug_when>
    <thetext>Comment on attachment 185828
Patch

Attachment 185828 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16297473</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822734</commentid>
    <comment_count>40</comment_count>
      <attachid>185828</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-01 07:06:43 -0800</bug_when>
    <thetext>Comment on attachment 185828
Patch

Attachment 185828 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16301707</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822902</commentid>
    <comment_count>41</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-01 09:58:45 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; (From update of attachment 185828 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185828&amp;action=review
&gt; 
&gt; Unofficial r=me on this. Two nits.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:337
&gt; &gt; +    return (childContext.isOnUpperEncapsulationBoundary() &amp;&amp; HTMLElement::childShouldCreateRenderer(childContext));
&gt; 
&gt; nit: extra parens are not needed.

Removed.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:343
&gt; &gt; +    if (displayState() == DisplayingSnapshot &amp;&amp; !userAgentShadowRoot()) {
&gt; 
&gt; Why do you both assert about it and check here? Early return is usually considered better as well.

Good point. I&apos;ve removed the test in the conditional, and swapped it around to an early return.

I won&apos;t upload a new patch to avoid the EWS build fail emails :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822977</commentid>
    <comment_count>42</comment_count>
      <attachid>185828</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-02-01 10:58:59 -0800</bug_when>
    <thetext>Comment on attachment 185828
Patch

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

&gt; Source/WebCore/css/plugIns.css:42
&gt; +/*
&gt; + * This is the UA StyleSheet for &lt;object&gt; and &lt;embed&gt; elements.
&gt; + *
&gt; + * Such elements, when snapshotted (paused), will contain a ShadowRoot
&gt; + * with the following structure:
&gt; + *
&gt; + * &lt;object&gt;
&gt; + *   #ShadowRoot
&gt; + *     &lt;div class=&quot;snapshot-container&quot;&gt;
&gt; + *       &lt;div class=&quot;snapshot-overlay&quot;&gt;&lt;/div&gt; &lt;!-- e.g. for dimming content --&gt;
&gt; + *         &lt;div class=&quot;snapshot-label&quot;&gt;
&gt; + *           &lt;span class=&quot;snapshot-title&quot;&gt;Snapshotted Plug-In&lt;/span&gt;
&gt; + *           &lt;span class=&quot;snapshot-subtitle&quot;&gt;Click to restart&lt;/span&gt;
&gt; + *         &lt;/div&gt;
&gt; + *       &lt;/div&gt;
&gt; + *     &lt;/div&gt;
&gt; + *
&gt; + */

It&apos;s a shame to bog down UA stylesheet parsing with big comments. Or is this stripped out before we convert to const char[] ?

&gt; Source/WebCore/css/plugIns.css:55
&gt; +object::-webkit-snapshotted-plugin-content * {
&gt; +    cursor: hand;
&gt; +    pointer-events: none;
&gt; +    -webkit-user-select: none;
&gt; +}

Is this necessary on all child nodes or just some container?

&gt; Source/WebCore/css/plugIns.css:91
&gt; +    color: #444;

You have used every one of rgba(), keyword and hex values for colors!

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:74
&gt; +    , m_snapshotImage(0)

No need to init a RefPtr.

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:311
&gt; +        String clientTitleText = document()-&gt;page()-&gt;chrome()-&gt;client()-&gt;plugInStartLabelTitle();

Do you need to null-check chrome()-&gt;client()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824594</commentid>
    <comment_count>43</comment_count>
      <attachid>185828</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-04 11:17:29 -0800</bug_when>
    <thetext>Comment on attachment 185828
Patch

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

&gt;&gt; Source/WebCore/css/plugIns.css:42
&gt;&gt; + */
&gt; 
&gt; It&apos;s a shame to bog down UA stylesheet parsing with big comments. Or is this stripped out before we convert to const char[] ?

Yes, it&apos;s stripped out.

&gt;&gt; Source/WebCore/css/plugIns.css:55
&gt;&gt; +}
&gt; 
&gt; Is this necessary on all child nodes or just some container?

Removed

&gt;&gt; Source/WebCore/css/plugIns.css:91
&gt;&gt; +    color: #444;
&gt; 
&gt; You have used every one of rgba(), keyword and hex values for colors!

Thank you!! :)

All rgb or rgba now.

&gt;&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:74
&gt;&gt; +    , m_snapshotImage(0)
&gt; 
&gt; No need to init a RefPtr.

Fixed.

&gt;&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:311
&gt;&gt; +        String clientTitleText = document()-&gt;page()-&gt;chrome()-&gt;client()-&gt;plugInStartLabelTitle();
&gt; 
&gt; Do you need to null-check chrome()-&gt;client()?

No. No other use of this does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828749</commentid>
    <comment_count>44</comment_count>
      <attachid>187360</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-08 13:49:54 -0800</bug_when>
    <thetext>Created attachment 187360
Landing EWS test

Landing Patch for EWS Test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828751</commentid>
    <comment_count>45</comment_count>
      <attachid>187360</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-08 13:56:41 -0800</bug_when>
    <thetext>Comment on attachment 187360
Landing EWS test

Attachment 187360 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16428824</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828756</commentid>
    <comment_count>46</comment_count>
      <attachid>187360</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-08 14:03:23 -0800</bug_when>
    <thetext>Comment on attachment 187360
Landing EWS test

Attachment 187360 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16445893</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828757</commentid>
    <comment_count>47</comment_count>
      <attachid>187360</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-08 14:06:02 -0800</bug_when>
    <thetext>Comment on attachment 187360
Landing EWS test

Attachment 187360 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16429840</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828761</commentid>
    <comment_count>48</comment_count>
      <attachid>187360</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-02-08 14:14:55 -0800</bug_when>
    <thetext>Comment on attachment 187360
Landing EWS test

Attachment 187360 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/16432857</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828762</commentid>
    <comment_count>49</comment_count>
      <attachid>187360</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-08 14:15:55 -0800</bug_when>
    <thetext>Comment on attachment 187360
Landing EWS test

Attachment 187360 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16435830</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828791</commentid>
    <comment_count>50</comment_count>
      <attachid>187360</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-08 15:25:53 -0800</bug_when>
    <thetext>Comment on attachment 187360
Landing EWS test

Attachment 187360 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16445954</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828808</commentid>
    <comment_count>51</comment_count>
      <attachid>187360</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-02-08 15:59:16 -0800</bug_when>
    <thetext>Comment on attachment 187360
Landing EWS test

Attachment 187360 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16432937</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828818</commentid>
    <comment_count>52</comment_count>
      <attachid>187381</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-08 16:05:54 -0800</bug_when>
    <thetext>Created attachment 187381
Another build test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828819</commentid>
    <comment_count>53</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-08 16:06:28 -0800</bug_when>
    <thetext>
chromium, qt and gtk are failing to link looking for snapshottedPlugInLabelTitle() and snapshottedPlugInLabelSubtitle() both of which landed in http://trac.webkit.org/changeset/142311

I&apos;m not sure why it can&apos;t find those methods.

mac &amp; mac-wk2 build error seems unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828824</commentid>
    <comment_count>54</comment_count>
      <attachid>187381</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-08 16:18:29 -0800</bug_when>
    <thetext>Comment on attachment 187381
Another build test

Attachment 187381 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16465014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828828</commentid>
    <comment_count>55</comment_count>
      <attachid>187384</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-08 16:25:50 -0800</bug_when>
    <thetext>Created attachment 187384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828830</commentid>
    <comment_count>56</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-08 16:26:24 -0800</bug_when>
    <thetext>Duh! I forgot to update platform localized strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828839</commentid>
    <comment_count>57</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-08 16:56:32 -0800</bug_when>
    <thetext>The gtk failure is the same unrelated one that mac was hitting in InlineBox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828850</commentid>
    <comment_count>58</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-08 17:27:19 -0800</bug_when>
    <thetext>Committed r142333: &lt;http://trac.webkit.org/changeset/142333&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828889</commentid>
    <comment_count>59</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-08 19:32:36 -0800</bug_when>
    <thetext>Rolled out and landed again in http://trac.webkit.org/changeset/142343</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829282</commentid>
    <comment_count>60</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-02-10 06:16:53 -0800</bug_when>
    <thetext>(In reply to comment #59)
&gt; Rolled out and landed again in http://trac.webkit.org/changeset/142343

Let me roll it out.  This change is very suspicious about a test crash.

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20-%20webkit.org&amp;showExpectations=true&amp;tests=inspector%2Fprofiler%2Fselector-profiler-url.html

If the roll out won&apos;t resolve the crash, I&apos;ll re-land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829286</commentid>
    <comment_count>61</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-02-10 06:26:39 -0800</bug_when>
    <thetext>Reverted r142343 for reason:

It might make inspector/profiler/selector-profiler-url.html crashy.

Committed r142400: &lt;http://trac.webkit.org/changeset/142400&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829359</commentid>
    <comment_count>62</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-10 14:12:31 -0800</bug_when>
    <thetext>(In reply to comment #61)
&gt; Reverted r142343 for reason:
&gt; 
&gt; It might make inspector/profiler/selector-profiler-url.html crashy.
&gt; 
&gt; Committed r142400: &lt;http://trac.webkit.org/changeset/142400&gt;

Has it made a difference? I can never understand those flakiness pages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829364</commentid>
    <comment_count>63</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-02-10 15:34:12 -0800</bug_when>
    <thetext>(In reply to comment #62)
&gt; &gt; Reverted r142343 for reason:
&gt; &gt; 
&gt; &gt; It might make inspector/profiler/selector-profiler-url.html crashy.
&gt; &gt; 
&gt; &gt; Committed r142400: &lt;http://trac.webkit.org/changeset/142400&gt;
&gt; 
&gt; Has it made a difference? I can never understand those flakiness pages.

Yes, the revert fixed the crash.



Stack trace on Apple MountainLion Debug WK1 follows.  Other ports had similar stack.


Process:         DumpRenderTree [11741]
Path:            /Volumes/VOLUME/*/DumpRenderTree
Identifier:      DumpRenderTree
Version:         0
Code Type:       X86-64 (Native)
Parent Process:  Python [11327]
User ID:         501

Date/Time:       2013-02-10 07:48:29.816 -0800
OS Version:      Mac OS X 10.8.2 (12C54)
Report Version:  10

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x000000000000000f

VM Regions Near 0xf:
--&gt; 
    __TEXT                 000000010ed93000-000000010ee2f000 [  624K] r-x/rwx SM=COW  /Volumes/VOLUME/*

Application Specific Information:
CRASHING TEST: inspector/profiler/selector-profiler-url.html

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x0000000110bc1cdc WebCore::CSSRule::hasCachedSelectorText() const + 12 (CSSRule.h:107)
1   com.apple.WebCore             	0x0000000110bc16fd WebCore::CSSStyleRule::selectorText() const + 45 (CSSStyleRule.cpp:82)
2   com.apple.WebCore             	0x00000001112ebd39 WebCore::SelectorProfile::startSelector(WebCore::CSSStyleRule const*) + 57 (InspectorCSSAgent.cpp:172)
3   com.apple.WebCore             	0x00000001112e7c12 WebCore::InspectorCSSAgent::willMatchRule(WebCore::StyleRule*, WebCore::StyleResolver*) + 146 (InspectorCSSAgent.cpp:964)
4   com.apple.WebCore             	0x000000011135f27e WebCore::InspectorInstrumentation::willMatchRuleImpl(WebCore::InstrumentingAgents*, WebCore::StyleRule*, WebCore::StyleResolver*) + 78 (InspectorInstrumentation.cpp:607)
5   com.apple.WebCore             	0x00000001120c501a WebCore::InspectorInstrumentation::willMatchRule(WebCore::Document*, WebCore::StyleRule*, WebCore::StyleResolver*) + 106 (InspectorInstrumentation.h:1205)
6   com.apple.WebCore             	0x00000001120af70d WebCore::StyleResolver::collectMatchingRulesForList(WTF::Vector&lt;WebCore::RuleData, 0ul&gt; const*, WebCore::StyleResolver::MatchRequest const&amp;, WebCore::StyleResolver::RuleRange&amp;) + 253 (StyleResolver.cpp:696)
7   com.apple.WebCore             	0x00000001120af5fc WebCore::StyleResolver::collectMatchingRules(WebCore::StyleResolver::MatchRequest const&amp;, WebCore::StyleResolver::RuleRange&amp;) + 1052 (StyleResolver.cpp:518)
8   com.apple.WebCore             	0x00000001120b01b2 WebCore::StyleResolver::matchUARules(WebCore::StyleResolver::MatchResult&amp;, WebCore::RuleSet*) + 162 (StyleResolver.cpp:675)
9   com.apple.WebCore             	0x00000001120b05eb WebCore::StyleResolver::matchUARules(WebCore::StyleResolver::MatchResult&amp;) + 171 (StyleResolver.cpp:1193)
10  com.apple.WebCore             	0x00000001120b0289 WebCore::StyleResolver::matchAllRules(WebCore::StyleResolver::MatchResult&amp;, bool) + 57 (StyleResolver.cpp:750)
11  com.apple.WebCore             	0x00000001120ae46b WebCore::StyleResolver::styleForElement(WebCore::Element*, WebCore::RenderStyle*, WebCore::StyleSharingBehavior, WebCore::RuleMatchingBehavior, WebCore::RenderRegion*) + 1179 (StyleResolver.cpp:1445)
12  com.apple.WebCore             	0x0000000110e8591b WebCore::Element::styleForRenderer() + 283 (Element.cpp:1330)
13  com.apple.WebCore             	0x0000000110e85abd WebCore::Element::recalcStyle(WebCore::Node::StyleChange) + 397 (Element.cpp:1350)
14  com.apple.WebCore             	0x0000000110e85fdd WebCore::Element::recalcStyle(WebCore::Node::StyleChange) + 1709 (Element.cpp:1419)
15  com.apple.WebCore             	0x0000000110e85fdd WebCore::Element::recalcStyle(WebCore::Node::StyleChange) + 1709 (Element.cpp:1419)
16  com.apple.WebCore             	0x0000000110c71cde WebCore::Document::recalcStyle(WebCore::Node::StyleChange) + 1166 (Document.cpp:1804)
17  com.apple.WebCore             	0x0000000110c6dedc WebCore::Document::updateStyleIfNeeded() + 396 (Document.cpp:1852)
18  com.apple.WebCore             	0x0000000111e934ed WebCore::RenderView::repaintSelection() const + 45 (RenderView.cpp:563)
19  com.apple.WebCore             	0x0000000110fc053e WebCore::FrameSelection::focusedOrActiveStateChanged() + 78 (FrameSelection.cpp:1691)
20  com.apple.WebCore             	0x0000000110fc0a6a WebCore::FrameSelection::setFocused(bool) + 106 (FrameSelection.cpp:1739)
21  com.apple.WebCore             	0x0000000110f40c0d WebCore::FocusController::setFocused(bool) + 269 (FocusController.cpp:227)
22  com.apple.WebKit              	0x000000011021d8f1 -[WebHTMLView becomeFirstResponder] + 609 (WebHTMLView.mm:3844)
23  com.apple.AppKit              	0x00007fff956758e8 -[NSWindow makeFirstResponder:] + 702
24  com.apple.WebKit              	0x00000001101aa98e -[WebDefaultUIDelegate webView:makeFirstResponder:] + 62 (WebDefaultUIDelegate.m:99)
25  com.apple.CoreFoundation      	0x00007fff8f6e863c __invoking___ + 140
26  com.apple.CoreFoundation      	0x00007fff8f6e84d7 -[NSInvocation invoke] + 263
27  com.apple.CoreFoundation      	0x00007fff8f6e86a9 -[NSInvocation invokeWithTarget:] + 57
28  com.apple.WebKit              	0x00000001102b7e09 -[_WebSafeForwarder forwardInvocation:] + 361 (WebView.mm:3128)
29  com.apple.CoreFoundation      	0x00007fff8f6e3737 ___forwarding___ + 775
30  com.apple.CoreFoundation      	0x00007fff8f6e33b8 _CF_forwarding_prep_0 + 232
31  com.apple.WebKit              	0x000000011019c3d1 WebChromeClient::makeFirstResponder(NSResponder*) + 129 (WebChromeClient.mm:778)
32  com.apple.WebCore             	0x00000001109dfa81 WebCore::Chrome::focusNSView(NSView*) + 369 (ChromeMac.mm:46)
33  com.apple.WebCore             	0x000000011237f209 WebCore::Widget::setFocus(bool) + 201 (WidgetMac.mm:113)
34  com.apple.WebCore             	0x0000000110c77d37 WebCore::Document::setFocusedNode(WTF::PassRefPtr&lt;WebCore::Node&gt;, WebCore::FocusDirection) + 2071 (Document.cpp:3414)
35  com.apple.WebCore             	0x0000000110f42c1d WebCore::FocusController::setFocusedNode(WebCore::Node*, WTF::PassRefPtr&lt;WebCore::Frame&gt;, WebCore::FocusDirection) + 973 (FocusController.cpp:620)
36  com.apple.WebCore             	0x0000000110e880f2 WebCore::Element::focus(bool, WebCore::FocusDirection) + 306 (Element.cpp:1894)
37  com.apple.WebCore             	0x000000011116ef9f WebCore::HTMLInputElement::focus(bool, WebCore::FocusDirection) + 111 (HTMLInputElement.cpp:377)
38  com.apple.WebCore             	0x0000000111556bac WebCore::jsElementPrototypeFunctionFocus(JSC::ExecState*) + 444 (JSElement.cpp:1991)
39  ???                           	0x00002ae2a6801045 0 + 47152944386117
40  com.apple.JavaScriptCore      	0x000000010f197fe4 JSC::JITCode::execute(JSC::JSStack*, JSC::ExecState*, JSC::JSGlobalData*) + 84 (JITCode.h:135)
41  com.apple.JavaScriptCore      	0x000000010f190719 JSC::Interpreter::execute(JSC::EvalExecutable*, JSC::ExecState*, JSC::JSValue, JSC::JSScope*) + 2169 (Interpreter.cpp:1321)
42  com.apple.JavaScriptCore      	0x000000010f230565 JSC::globalFuncEval(JSC::ExecState*) + 997 (JSGlobalObjectFunctions.cpp:523)
43  com.apple.JavaScriptCore      	0x000000010f195289 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 1561 (Interpreter.cpp:1058)
44  com.apple.JavaScriptCore      	0x000000010efa4a52 JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 306 (CallData.cpp:40)
45  com.apple.WebCore             	0x000000011168ee52 WebCore::JSInjectedScriptHost::evaluate(JSC::ExecState*) + 482 (JSInjectedScriptHostCustom.cpp:304)
46  com.apple.WebCore             	0x000000011168b82a WebCore::jsInjectedScriptHostPrototypeFunctionEvaluate(JSC::ExecState*) + 410 (JSInjectedScriptHost.cpp:310)
47  ???                           	0x00002ae2a6801045 0 + 47152944386117
48  com.apple.JavaScriptCore      	0x000000010f197fe4 JSC::JITCode::execute(JSC::JSStack*, JSC::ExecState*, JSC::JSGlobalData*) + 84 (JITCode.h:135)
49  com.apple.JavaScriptCore      	0x000000010f19525f JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 1519 (Interpreter.cpp:1055)
50  com.apple.JavaScriptCore      	0x000000010efa4a52 JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 306 (CallData.cpp:40)
51  com.apple.WebCore             	0x0000000111425572 WebCore::JSMainThreadExecState::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 146 (JSMainThreadExecState.h:56)
52  com.apple.WebCore             	0x0000000111f3b329 WebCore::ScriptFunctionCall::call(bool&amp;, bool) + 537 (ScriptFunctionCall.cpp:140)
53  com.apple.WebCore             	0x000000011125bae5 WebCore::InjectedScriptBase::callFunctionWithEvalEnabled(WebCore::ScriptFunctionCall&amp;, bool&amp;) const + 213 (InjectedScriptBase.cpp:91)
54  com.apple.WebCore             	0x000000011125bbc9 WebCore::InjectedScriptBase::makeCall(WebCore::ScriptFunctionCall&amp;, WTF::RefPtr&lt;WebCore::InspectorValue&gt;*) + 137 (InjectedScriptBase.cpp:108)
55  com.apple.WebCore             	0x000000011125bd7a WebCore::InjectedScriptBase::makeEvalCall(WTF::String*, WebCore::ScriptFunctionCall&amp;, WTF::RefPtr&lt;WebCore::TypeBuilder::Runtime::RemoteObject&gt;*, WebCore::TypeBuilder::OptOutput&lt;bool&gt;*) + 74 (InjectedScriptBase.cpp:120)
56  com.apple.WebCore             	0x0000000111256e6c WebCore::InjectedScript::evaluate(WTF::String*, WTF::String const&amp;, WTF::String const&amp;, bool, bool, bool, WTF::RefPtr&lt;WebCore::TypeBuilder::Runtime::RemoteObject&gt;*, WebCore::TypeBuilder::OptOutput&lt;bool&gt;*) + 316 (InjectedScript.cpp:72)
57  com.apple.WebCore             	0x00000001113aadf8 WebCore::InspectorRuntimeAgent::evaluate(WTF::String*, WTF::String const&amp;, WTF::String const*, bool const*, bool const*, int const*, bool const*, bool const*, WTF::RefPtr&lt;WebCore::TypeBuilder::Runtime::RemoteObject&gt;&amp;, WebCore::TypeBuilder::OptOutput&lt;bool&gt;*) + 600 (InspectorRuntimeAgent.cpp:92)
58  com.apple.WebCore             	0x00000001113ab043 non-virtual thunk to WebCore::InspectorRuntimeAgent::evaluate(WTF::String*, WTF::String const&amp;, WTF::String const*, bool const*, bool const*, int const*, bool const*, bool const*, WTF::RefPtr&lt;WebCore::TypeBuilder::Runtime::RemoteObject&gt;&amp;, WebCore::TypeBuilder::OptOutput&lt;bool&gt;*) + 179
59  com.apple.WebCore             	0x00000001112a6bd1 WebCore::InspectorBackendDispatcherImpl::Runtime_evaluate(long, WebCore::InspectorObject*) + 1553 (InspectorBackendDispatcher.cpp:1662)
60  com.apple.WebCore             	0x00000001112c4789 WebCore::InspectorBackendDispatcherImpl::dispatch(WTF::String const&amp;) + 1833 (InspectorBackendDispatcher.cpp:6335)
61  com.apple.WebCore             	0x00000001112d8390 WebCore::InspectorController::dispatchMessageFromFrontend(WTF::String const&amp;) + 96 (InspectorController.cpp:357)
62  com.apple.WebCore             	0x000000011135862e WebCore::InspectorBackendDispatchTask::onTimer(WebCore::Timer&lt;WebCore::InspectorBackendDispatchTask&gt;*) + 110 (InspectorFrontendClientLocal.cpp:94)
63  com.apple.WebCore             	0x0000000111358a43 WebCore::Timer&lt;WebCore::InspectorBackendDispatchTask&gt;::fired() + 115 (Timer.h:106)
64  com.apple.WebCore             	0x000000011229b356 WebCore::ThreadTimers::sharedTimerFiredInternal() + 294 (ThreadTimers.cpp:119)
65  com.apple.WebCore             	0x000000011229b0e9 WebCore::ThreadTimers::sharedTimerFired() + 25 (ThreadTimers.cpp:94)
66  com.apple.WebCore             	0x0000000111fcb513 WebCore::timerFired(__CFRunLoopTimer*, void*) + 67 (SharedTimerMac.mm:167)
67  com.apple.CoreFoundation      	0x00007fff8f6b1da4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
68  com.apple.CoreFoundation      	0x00007fff8f6b18bd __CFRunLoopDoTimer + 557
69  com.apple.CoreFoundation      	0x00007fff8f697099 __CFRunLoopRun + 1513
70  com.apple.CoreFoundation      	0x00007fff8f6966b2 CFRunLoopRunSpecific + 290
71  com.apple.Foundation          	0x00007fff8c68489e -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 268
72  DumpRenderTree                	0x000000010edac009 runTest(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;) + 5017 (DumpRenderTree.mm:1375)
73  DumpRenderTree                	0x000000010edaabfa runTestingServerLoop() + 282 (DumpRenderTree.mm:832)
74  DumpRenderTree                	0x000000010edaa5f5 dumpRenderTree(int, char const**) + 405 (DumpRenderTree.mm:887)
75  DumpRenderTree                	0x000000010edac7f9 main + 105 (DumpRenderTree.mm:925)
76  libdyld.dylib                 	0x00007fff8f51f7e1 start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830067</commentid>
    <comment_count>64</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-11 13:41:16 -0800</bug_when>
    <thetext>Removed the offending style rule that was causing the crash. It&apos;s not really related to this commit, so I&apos;ll file another bug.

Committed r142507: &lt;http://trac.webkit.org/changeset/142507&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185545</attachid>
            <date>2013-01-30 13:18:35 -0800</date>
            <delta_ts>2013-01-30 19:24:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108284-20130131081519.patch</filename>
            <type>text/plain</type>
            <size>30685</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODllMWZiYjQwYjMwOTZh
MjA0NGVmMGY3ZGVhZmZjNmQyOGFhYjliMi4uY2E4ZWZlNDgyN2I5ZWI1YzI4ZDNiNzY0NzgxNzFj
Njg2MTU2NWIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTAxLTMwICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBTbmFwc2hvdHRlZCBwbHVnLWlu
IHNob3VsZCB1c2Ugc2hhZG93IHJvb3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwODI4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEEgc25hcHNob3R0ZWQgcGx1Z2luIG5lZWRzIHRvIGluZGljYXRlIHRv
IHRoZSB1c2VyIHRoYXQgaXQgY2FuIGJlIGNsaWNrZWQKKyAgICAgICAgdG8gYmUgcmVzdGFydGVk
LiBQcmV2aW91c2x5IHRoaXMgd2FzIGRvbmUgd2l0aCBhbiBpbWFnZSB0aGF0IGhhZCBlbWJlZGRl
ZAorICAgICAgICB0ZXh0LiBJbnN0ZWFkLCB3ZSBub3cgdXNlIGFuIGludGVybmFsIHNoYWRvdyBy
b290IHRvIGVtYmVkIHNvbWUgbWFya3VwIHRoYXQKKyAgICAgICAgd2lsbCBkaXNwbGF5IGluc3Ry
dWN0aW9ucyB0aGF0IGNhbiBiZSBsb2NhbGlzZWQuCisKKyAgICAgICAgVGhlIFVBIHN0eWxlc2hl
ZXQgZm9yIHBsdWctaW5zIHByb3ZpZGVzIGEgZGVmYXVsdCBzdHlsaW5nIGZvciB0aGUgbGFiZWws
IHdoaWNoCisgICAgICAgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHBvcnRzLgorCisgICAgICAgIElu
IHRoZSBwcm9jZXNzLCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiBubyBsb25nZXIgaW5oZXJpdHMg
ZnJvbSBSZW5kZXJFbWJlZGRlZE9iamVjdCwKKyAgICAgICAgc2luY2UgaXQgaXMgb25seSByZXNw
b25zaWJsZSBmb3IgZHJhd2luZyBhIHBhdXNlZCBwbHVnLWluLiBUaGUgc25hcHNob3QgY3JlYXRp
b24KKyAgICAgICAgY2FuIHdvcmsgd2l0aCB0aGUgZGVmYXVsdCByZW5kZXJlciwgYnV0IGEgc2hh
ZG93IHJvb3QgcmVxdWlyZXMgc29tZXRoaW5nIGxpa2UKKyAgICAgICAgUmVuZGVyQmxvY2sgaW4g
b3JkZXIgdG8gZHJhdyBpdHMgY2hpbGRyZW4uIFdlIHN3YXAgZnJvbSBvbmUgcmVuZGVyZXIgdG8g
YW5vdGhlciB3aGVuCisgICAgICAgIG5lY2Vzc2FyeSBieSBkZXRhY2hpbmcgYW5kIGF0dGFjaGlu
ZyB0aGUgcGx1Z2luIGVsZW1lbnQuCisKKyAgICAgICAgVW5mb3J0dW5hdGVseSB0aGlzIGlzIGRp
ZmZpY3VsdCB0byB0ZXN0LCBiZWNhdXNlIHRoZSBzbmFwc2hvdHRpbmcgcmVxdWlyZXMKKyAgICAg
ICAgdGltZSB0byBleGVjdXRlLCBhbmQgYWxzbyBhIFBsdWdpblZpZXcgdG8gYmUgaW5zdGFudGlh
dGVkLgorCisgICAgICAgICogY3NzL3BsdWdJbnMuY3NzOgorICAgICAgICAob2JqZWN0Ojotd2Vi
a2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50KTogTmV3IHJ1bGVzIGZvciBhIGRlZmF1bHQg
bGFiZWwgc3R5bGUuCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IFRh
a2UgaW50byBhY2NvdW50IHRoZSBmYWN0CisgICAgICAgIHRoYXQgUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4gbm8gbG9uZ2VyIGlzIGFuIGVtYmVkZGVkIG9iamVjdC4KKyAgICAgICAgKiBodG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6SFRNTFBsdWdJbkltYWdlRWxlbWVudCk6IE5ldyBkZWZhdWx0IHZhbHVlcyBp
biBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OmNyZWF0ZVJlbmRlcmVyKTogSWYgd2UncmUgc2hvd2luZyBhIHNuYXBzaG90LCBjcmVhdGUgc3Vj
aAorICAgICAgICBhIHJlbmRlcmVyLCBvdGhlcndpc2UgdXNlIHRoZSB0eXBpY2FsIHBsdWctaW4g
cGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVNu
YXBzaG90KTogS2VlcCBhIHJlY29yZCBvZiB0aGUgc25hcHNob3QsIHNpbmNlIHdlJ2xsCisgICAg
ICAgIG5lZWQgdG8gZ2l2ZSBpdCB0byB0aGUgcmVuZGVyZXIuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlKTogQnVpbGQgYSBzdWJ0
cmVlIHRoYXQgd2lsbCBkaXNwbGF5IGEgbGFiZWwuCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50Lmg6CisgICAgICAgIChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KTogTmV3IG1l
bWJlciB2YXJpYWJsZSB0byByZWNvcmQgdGhlIHNuYXBzaG90IGltYWdlIGFuZCB3aGV0aGVyIHRo
ZSBsYWJlbAorICAgICAgICBzaG91bGQgc2hvdyBpbW1lZGlhdGVseS4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKTogTmV3IGluaGVy
aXRhbmNlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50
KTogSWYgd2UncmUgaW4gdGhlIGJhY2tncm91bmQgcGFpbnQgcGhhc2UsIHJlbmRlciB0aGUgc25h
cHNob3QgaW1hZ2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6
bGF5b3V0KTogUGFzcyB0aGUgc2l6ZSBvZiB0aGUgY29udGFpbmVyIGRvd24gaW50byB0aGUgc2hh
ZG93IHRyZWUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFp
bnRTbmFwc2hvdEltYWdlKTogUmVuYW1lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOiBSZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdFdpdGhMYWJlbCk6IFJlbmFtZS4g
Tm8gbmVlZCBmb3IgbGFiZWwgc2l6ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbjo6Z2V0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90
dGVkUGx1Z0luOjpoYW5kbGVFdmVudCk6IFRoZSByZW5kZXJlciBkb2Vzbid0IHJlc3RhcnQgdGhl
IHBsdWctaW4gYW55IG1vcmUuIFRlbGwgdGhlIGVsZW1lbnQgYW5kIGl0IHdpbGwgZG8gaXQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmg6CisgICAgICAgIChS
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik6IE5ldyBpbmhlcml0YW5jZS4gU29tZSBtZXRob2QgcmVu
YW1pbmcuCisKIDIwMTMtMDEtMjkgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSB1c2Ugb2YgcGx1Z0luU3RhcnRMYWJlbEltYWdlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvcGx1Z0lucy5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGx1Z0lu
cy5jc3MKaW5kZXggODgzMTI0MGRjZTY4NDJlNTVlMzk3NGIyNGZjNzVhYmUzNTg1YWNjNS4uYjhl
YmY5OTQ4NjZiNzZkYzE2MTc3MmU4MTg1NzIzZjkxMGJlMTgxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL3BsdWdJbnMuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wbHVnSW5z
LmNzcwpAQCAtMjIsNCArMjIsNzEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLyogcGx1Zy1p
bnMgKi8KKy8qCisgKiBUaGlzIGlzIHRoZSBVQSBTdHlsZVNoZWV0IGZvciA8b2JqZWN0PiBhbmQg
PGVtYmVkPiBlbGVtZW50cy4KKyAqIAorICogU3VjaCBlbGVtZW50cywgd2hlbiBzbmFwc2hvdHRl
ZCAocGF1c2VkKSwgd2lsbCBjb250YWluIGEgU2hhZG93Um9vdAorICogd2l0aCB0aGUgZm9sbG93
aW5nIHN0cnVjdHVyZToKKyAqCisgKiA8b2JqZWN0PgorICogICAjU2hhZG93Um9vdAorICogICAg
IDxkaXYgY2xhc3M9InNuYXBzaG90LWNvbnRhaW5lciI+CisgKiAgICAgICA8ZGl2IGNsYXNzPSJz
bmFwc2hvdC1vdmVybGF5Ij48L2Rpdj4gPCEtLSBlLmcuIGZvciBkaW1taW5nIGNvbnRlbnQgLS0+
CisgKiAgICAgICAgIDxkaXYgY2xhc3M9InNuYXBzaG90LWxhYmVsIj4KKyAqICAgICAgICAgICA8
c3BhbiBjbGFzcz0ic25hcHNob3QtdGl0bGUiPlNuYXBzaG90dGVkIFBsdWctSW48L3NwYW4+Cisg
KiAgICAgICAgICAgPHNwYW4gY2xhc3M9InNuYXBzaG90LXN1YnRpdGxlIj5DbGljayB0byByZXN0
YXJ0PC9zcGFuPgorICogICAgICAgICA8L2Rpdj4KKyAqICAgICAgIDwvZGl2PgorICogICAgIDwv
ZGl2PgorICoKKyAqLworCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRl
bnQgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworfQorCitvYmplY3Q6Oi13ZWJr
aXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgKiB7CisgICAgY3Vyc29yOiBoYW5kOworICAg
IHBvaW50ZXItZXZlbnRzOiBub25lOworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Cit9
CisKK29iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3Qt
Y29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgd2lkdGg6IDEwMCU7Cisg
ICAgaGVpZ2h0OiAxMDAlOworfQorCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2lu
LWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3Qtb3ZlcmxheSB7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKKyAg
ICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgIGJvcmRlcjogMnB4IHNvbGlkICM4ODg7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjE1KTsKK30KKworb2JqZWN0Ojot
d2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50OmhvdmVyIC5zbmFwc2hvdC1jb250YWlu
ZXIgLnNuYXBzaG90LW92ZXJsYXkgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAy
NTUsIDI1NSwgMC4xNSk7Cit9CisKK29iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4t
Y29udGVudCAuc25hcHNob3QtY29udGFpbmVyIC5zbmFwc2hvdC1sYWJlbCB7CisgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICBib3JkZXIt
cmFkaXVzOiAxMHB4OworICAgIG1hcmdpbjogMWVtOworICAgIHBhZGRpbmc6IDAuMjVlbSAyZW07
CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0
ZWQtcGx1Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3QtbGFiZWwgLnNu
YXBzaG90LXRpdGxlIHsKKyAgICBmb250LXdlaWdodDogYm9sZDsKK30KKworb2JqZWN0Ojotd2Vi
a2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBz
aG90LWxhYmVsIC5zbmFwc2hvdC1zdWJ0aXRsZSB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOwor
ICAgIGNvbG9yOiAjNDQ0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50
LmNwcAppbmRleCBlMjkwMmFkNzE3NjQ2NTg2OGVmOTk1OGE4YTY0NGVlNTAwOTQwNTAzLi42ZGU3
NjRiNTMzNWY2MGVkMmY1YjU0YzE3ZjZmOTdmNjYxMzU5NWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcApAQCAtMjAxLDEwICsyMDEsOSBAQCB2b2lkIEhUTUxQ
bHVnSW5FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAg
ICAgIHRvUmVuZGVyRW1iZWRkZWRPYmplY3QociktPmhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5k
aWNhdG9yRXZlbnQoZXZlbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAg
ICAgIGlmIChyLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkgJiYgZGlzcGxheVN0YXRlKCkgPCBQbGF5
aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKSB7Ci0gICAgICAgICAgICB0b1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luKHIpLT5oYW5kbGVFdmVudChldmVudCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHIgJiYgci0+aXNTbmFwc2hvdHRlZFBsdWdJbigpICYm
IGRpc3BsYXlTdGF0ZSgpIDwgUGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykgeworICAgICAg
ICB0b1JlbmRlclNuYXBzaG90dGVkUGx1Z0luKHIpLT5oYW5kbGVFdmVudChldmVudCk7CisgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIXIgfHwgIXItPmlzV2lkZ2V0KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBkMGI1
Mzk4ZGRiMjkyYWJlOWY1YzhhODhhZWY2ZmRjYWMzZDY0NDBmLi4zNTUwZWFjYTU2MDA0ZDBlOWVl
NjNlMGUxZjMyNTNhMDgzMjY5MmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTIxLDYgKzIxLDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgiCiAKKyNpbmNsdWRlICJDaHJv
bWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAg
LTI4LDkgKzMwLDExIEBACiAjaW5jbHVkZSAiSFRNTEltYWdlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJp
bmdzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNp
bmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbHVnSW5DbGllbnQuaCIKICNpbmNs
dWRlICJQbHVnSW5PcmlnaW5IYXNoLmgiCkBAIC00MCwxMCArNDQsMTQgQEAKICNpbmNsdWRlICJS
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAi
U3R5bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCiBzdGF0aWMgY29uc3QgaW50IGF1dG9T
dGFydFBsdWdJblNpemVUaHJlc2hvbGRXaWR0aCA9IDE7CiBzdGF0aWMgY29uc3QgaW50IGF1dG9T
dGFydFBsdWdJblNpemVUaHJlc2hvbGRIZWlnaHQgPSAxOwogc3RhdGljIGNvbnN0IGludCBhdXRv
U2hvd0xhYmVsU2l6ZVRocmVzaG9sZFdpZHRoID0gNDAwOwpAQCAtNjAsNyArNjgsMTAgQEAgSFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6SFRNTFBsdWdJbkltYWdlRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2MKICAgICAsIG1fbmVlZHNXaWRnZXRVcGRhdGUoIWNyZWF0ZWRC
eVBhcnNlcikKICAgICAsIG1fc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyhwcmVmZXJQbHVn
SW5zRm9ySW1hZ2VzT3B0aW9uID09IFNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiAgICAg
LCBtX25lZWRzRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKGZhbHNlKQorICAgICwgbV9zaG91
bGRTaG93U25hcHNob3RMYWJlbEF1dG9tYXRpY2FsbHkoZmFsc2UpCiAgICAgLCBtX3NpbXVsYXRl
ZE1vdXNlQ2xpY2tUaW1lcih0aGlzLCAmSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2ltdWxhdGVk
TW91c2VDbGlja1RpbWVyRmlyZWQsIHNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lckRlbGF5KQorICAg
ICwgbV9zd2FwUmVuZGVyZXJUaW1lcih0aGlzLCAmSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3dh
cFJlbmRlcmVyVGltZXJGaXJlZCkKKyAgICAsIG1fc25hcHNob3RJbWFnZSgwKQogewogICAgIHNl
dEhhc0N1c3RvbUNhbGxiYWNrcygpOwogfQpAQCAtMTMxLDIwICsxNDIsMjcgQEAgUmVuZGVyT2Jq
ZWN0KiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclMKICAgICAgICAgbV9uZWVkc0RvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNr
cyA9IHRydWU7CiAgICAgICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyRm9yUGFnZUNhY2hlU3VzcGVu
c2lvbkNhbGxiYWNrcyh0aGlzKTsKICAgICB9Ci0gICAgCisKKyAgICBpZiAoZGlzcGxheVN0YXRl
KCkgPT0gRGlzcGxheWluZ1NuYXBzaG90ICYmIGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVu
dCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQoKSkgewor
ICAgICAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiogcmVuZGVyU25hcHNob3R0ZWRQbHVnSW4g
PSBuZXcgKGFyZW5hKSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbih0aGlzKTsKKyAgICAgICAgcmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4tPnVwZGF0ZVNuYXBzaG90KG1fc25hcHNob3RJbWFnZSk7Cisg
ICAgICAgIGlmIChtX3Nob3VsZFNob3dTbmFwc2hvdExhYmVsQXV0b21hdGljYWxseSkKKyAgICAg
ICAgICAgIHJlbmRlclNuYXBzaG90dGVkUGx1Z0luLT5zZXRTaG91bGRTaG93TGFiZWxBdXRvbWF0
aWNhbGx5KCk7CisgICAgICAgIHJldHVybiByZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjsKKyAgICB9
CisKICAgICAvLyBGYWxsYmFjayBjb250ZW50IGJyZWFrcyB0aGUgRE9NLT5SZW5kZXJlciBjbGFz
cyByZWxhdGlvbnNoaXAgb2YgdGhpcwogICAgIC8vIGNsYXNzIGFuZCBhbGwgc3VwZXJjbGFzc2Vz
IGJlY2F1c2UgY3JlYXRlT2JqZWN0IHdvbid0IG5lY2Vzc2FyaWx5CiAgICAgLy8gcmV0dXJuIGEg
UmVuZGVyRW1iZWRkZWRPYmplY3QsIFJlbmRlclBhcnQgb3IgZXZlbiBSZW5kZXJXaWRnZXQuCiAg
ICAgaWYgKHVzZUZhbGxiYWNrQ29udGVudCgpKQogICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0
OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOworCiAgICAgaWYgKGlzSW1hZ2VUeXBlKCkpIHsK
ICAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2UodGhp
cyk7CiAgICAgICAgIGltYWdlLT5zZXRJbWFnZVJlc291cmNlKFJlbmRlckltYWdlUmVzb3VyY2U6
OmNyZWF0ZSgpKTsKICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KIAotICAgIGlmIChkb2N1
bWVudCgpLT5wYWdlKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5zZXR0aW5ncygpLT5wbHVnSW5T
bmFwc2hvdHRpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbih0aGlzKTsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyRW1i
ZWRkZWRPYmplY3QodGhpcyk7CiB9CiAKQEAgLTI1NywxMSArMjc1LDg1IEBAIHZvaWQgSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6dXBkYXRlV2lkZ2V0Q2FsbGJhY2soTm9kZSogbiwgdW5zaWduZWQp
CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlU25hcHNob3QoUGFzc1JlZlB0
cjxJbWFnZT4gaW1hZ2UpCiB7Ci0gICAgaWYgKGRpc3BsYXlTdGF0ZSgpID4gRGlzcGxheWluZ1Nu
YXBzaG90IHx8ICFyZW5kZXJlcigpLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkpCisgICAgaWYgKGRp
c3BsYXlTdGF0ZSgpID4gRGlzcGxheWluZ1NuYXBzaG90KQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3NuYXBzaG90SW1hZ2UgPSBpbWFnZTsKKyAgICBpZiAocmVuZGVyZXIoKS0+aXNTbmFwc2hv
dHRlZFBsdWdJbigpKSB7CisgICAgICAgIHRvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4ocmVuZGVy
ZXIoKSktPnVwZGF0ZVNuYXBzaG90KGltYWdlKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAot
ICAgIHRvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4ocmVuZGVyZXIoKSktPnVwZGF0ZVNuYXBzaG90
KGltYWdlKTsKICAgICBzZXREaXNwbGF5U3RhdGUoRGlzcGxheWluZ1NuYXBzaG90KTsKKyAgICBt
X3N3YXBSZW5kZXJlclRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKK3sKKyAgICBBU1NFUlQoIXVzZXJB
Z2VudFNoYWRvd1Jvb3QoKSk7CisgICAgU2hhZG93Um9vdDo6Y3JlYXRlKHRoaXMsIFNoYWRvd1Jv
b3Q6OlVzZXJBZ2VudFNoYWRvd1Jvb3QpOworCisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50
KCk7CisKKyAgICBSZWZQdHI8RWxlbWVudD4gc2hhZG93Q29udGFpbmVyID0gZG9jLT5jcmVhdGVF
bGVtZW50KGRpdlRhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgc2hhZG93Q29udGFpbmVy
LT5zZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250
ZW50IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworCisgICAgUmVmUHRy
PEVsZW1lbnQ+IGNvbnRhaW5lciA9IGRvYy0+Y3JlYXRlRWxlbWVudChkaXZUYWcsIEFTU0VSVF9O
T19FWENFUFRJT04pOworICAgIGNvbnRhaW5lci0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRv
bWljU3RyaW5nKCJzbmFwc2hvdC1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisKKyAgICBSZWZQdHI8RWxlbWVudD4gb3ZlcmxheSA9IGRvYy0+Y3JlYXRl
RWxlbWVudChkaXZUYWcsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIG92ZXJsYXktPnNldEF0
dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZygic25hcHNob3Qtb3ZlcmxheSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBjb250YWluZXItPmFwcGVuZENo
aWxkKG92ZXJsYXksIEFTU0VSVF9OT19FWENFUFRJT04pOworCisgICAgUmVmUHRyPEVsZW1lbnQ+
IGxhYmVsID0gZG9jLT5jcmVhdGVFbGVtZW50KGRpdlRhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7
CisgICAgbGFiZWwtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZygic25hcHNo
b3QtbGFiZWwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisKKyAgICBT
dHJpbmcgdGl0bGVUZXh0ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFRpdGxlKCk7CisgICAgU3Ry
aW5nIHN1YnRpdGxlVGV4dCA9IHNuYXBzaG90dGVkUGx1Z0luTGFiZWxTdWJ0aXRsZSgpOworICAg
IGlmIChkb2N1bWVudCgpLT5wYWdlKCkpIHsKKyAgICAgICAgU3RyaW5nIGNsaWVudFRpdGxlVGV4
dCA9IGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbHVnSW5TdGFydExh
YmVsVGl0bGUoKTsKKyAgICAgICAgaWYgKCFjbGllbnRUaXRsZVRleHQuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgdGl0bGVUZXh0ID0gY2xpZW50VGl0bGVUZXh0OworICAgICAgICBTdHJpbmcgY2xp
ZW50U3VidGl0bGVUZXh0ID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCkt
PnBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSgpOworICAgICAgICBpZiAoIWNsaWVudFN1YnRpdGxl
VGV4dC5pc0VtcHR5KCkpCisgICAgICAgICAgICBzdWJ0aXRsZVRleHQgPSBjbGllbnRTdWJ0aXRs
ZVRleHQ7CisgICAgfQorCisgICAgUmVmUHRyPEVsZW1lbnQ+IHRpdGxlID0gZG9jLT5jcmVhdGVF
bGVtZW50KGRpdlRhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgdGl0bGUtPnNldEF0dHJp
YnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZygic25hcHNob3QtdGl0bGUiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgdGl0bGUtPmFwcGVuZENoaWxkKGRvYy0+
Y3JlYXRlVGV4dE5vZGUodGl0bGVUZXh0KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgbGFi
ZWwtPmFwcGVuZENoaWxkKHRpdGxlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKworICAgIFJlZlB0
cjxFbGVtZW50PiBzdWJUaXRsZSA9IGRvYy0+Y3JlYXRlRWxlbWVudChkaXZUYWcsIEFTU0VSVF9O
T19FWENFUFRJT04pOworICAgIHN1YlRpdGxlLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9t
aWNTdHJpbmcoInNuYXBzaG90LXN1YnRpdGxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOworICAgIHN1YlRpdGxlLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2Rl
KHN1YnRpdGxlVGV4dCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIGxhYmVsLT5hcHBlbmRD
aGlsZChzdWJUaXRsZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisKKyAgICBjb250YWluZXItPmFw
cGVuZENoaWxkKGxhYmVsLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKworICAgIHNoYWRvd0NvbnRh
aW5lci0+YXBwZW5kQ2hpbGQoY29udGFpbmVyLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICB1
c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHNoYWRvd0NvbnRhaW5lciwgQVNTRVJU
X05PX0VYQ0VQVElPTik7CisKKyAgICB1c2VyQWdlbnRTaGFkb3dSb290KCktPnNldE5lZWRzU3R5
bGVSZWNhbGMoKTsKKyAgICB1c2VyQWdlbnRTaGFkb3dSb290KCktPnNldENoaWxkTmVlZHNTdHls
ZVJlY2FsYygpOworICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2Up
OworICAgIHJlY2FsY1N0eWxlKEZvcmNlKTsKK30KKworYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0
JiBjaGlsZENvbnRleHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIChjaGlsZENvbnRleHQuaXNPblVw
cGVyRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KCkgJiYgSFRNTEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoY2hpbGRDb250ZXh0KSk7Cit9CisKK3ZvaWQgSFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6c3dhcFJlbmRlcmVyVGltZXJGaXJlZChUaW1lcjxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
PiopCit7CisgICAgQVNTRVJUKGRpc3BsYXlTdGF0ZSgpID09IERpc3BsYXlpbmdTbmFwc2hvdCk7
CisgICAgaWYgKGRpc3BsYXlTdGF0ZSgpID09IERpc3BsYXlpbmdTbmFwc2hvdCAmJiAhdXNlckFn
ZW50U2hhZG93Um9vdCgpKSB7CisgICAgICAgIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKKyAgICAg
ICAgZGV0YWNoKCk7CisgICAgICAgIGF0dGFjaCgpOworICAgICAgICByZWNhbGNTdHlsZShGb3Jj
ZSk7CisgICAgfQogfQogCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlj
a1NuYXBzaG90KFBhc3NSZWZQdHI8TW91c2VFdmVudD4gZXZlbnQpCkBAIC0yNjksNiArMzYxLDkg
QEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1c2VyRGlkQ2xpY2tTbmFwc2hvdChQYXNz
UmVmUHRyPE1vdXNlRXZlbnQ+IGV2ZW50KQogICAgIG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25h
cHNob3QgPSBldmVudDsKICAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpKQogICAgICAgICBkb2N1
bWVudCgpLT5wYWdlKCktPnBsdWdJbkNsaWVudCgpLT5hZGRBdXRvU3RhcnRPcmlnaW4oZG9jdW1l
bnQoKS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKSwg
bV9wbHVnSW5PcmlnaW5IYXNoKTsKKworICAgIGRldGFjaCgpOworICAgIGF0dGFjaCgpOwogfQog
CiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ01vdXNlQ2xpY2so
KQpAQCAtMzE4LDE2ICs0MTMsMTIgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJm
cmFtZUxvYWRlcldpbGxDcmVhdGVQbHVnSW4oY29uc3QgS1VSTCYgdXJsKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKCFyZW5kZXJlcigpLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkp
IHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBSZW5kZXJlciBpcyBub3Qgc25hcHNob3R0ZWQg
cGx1Z2luLCBzZXQgdG8gcGxheSIsIHRoaXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAg
IGlmIChTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgewogICAgICAg
ICBMT0coUGx1Z2lucywgIiVwIFNjcmlwdCBpcyBwcm9jZXNzaW5nIHVzZXIgZ2VzdHVyZSwgc2V0
IHRvIHBsYXkiLCB0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIExheW91dFJl
Y3QgcmVjdCA9IHRvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4ocmVuZGVyZXIoKSktPmNvbnRlbnRC
b3hSZWN0KCk7CisgICAgTGF5b3V0UmVjdCByZWN0ID0gdG9SZW5kZXJFbWJlZGRlZE9iamVjdChy
ZW5kZXJlcigpKS0+Y29udGVudEJveFJlY3QoKTsKICAgICBpbnQgd2lkdGggPSByZWN0LndpZHRo
KCk7CiAgICAgaW50IGhlaWdodCA9IHJlY3QuaGVpZ2h0KCk7CiAgICAgaWYgKCF3aWR0aCB8fCAh
aGVpZ2h0IHx8ICh3aWR0aCA8PSBhdXRvU3RhcnRQbHVnSW5TaXplVGhyZXNob2xkV2lkdGggJiYg
aGVpZ2h0IDw9IGF1dG9TdGFydFBsdWdJblNpemVUaHJlc2hvbGRIZWlnaHQpKSB7CkBAIC0zNTAs
MTAgKzQ0MSwxMyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVy
V2lsbENyZWF0ZVBsdWdJbihjb25zdCBLVVJMJiB1cmwpCiAgICAgfQogCiAgICAgaWYgKHNob3Vs
ZFBsdWdJblNob3dMYWJlbEF1dG9tYXRpY2FsbHkoZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJh
bWUoKS0+dmlldygpLT5jb250ZW50c1NpemUoKSwgdGhpcykpCi0gICAgICAgIHRvUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4ocmVuZGVyZXIoKSktPnNldFNob3VsZFNob3dMYWJlbEF1dG9tYXRpY2Fs
bHkoKTsKKyAgICAgICAgc2V0U2hvdWxkU2hvd1NuYXBzaG90TGFiZWxBdXRvbWF0aWNhbGx5KCk7
CiAKICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gaGFzaCAleCBpcyAlZHglZCwgb3JpZ2lu
IGlzIG5vdCBhdXRvLXN0YXJ0LCBzZXQgdG8gd2FpdCBmb3Igc25hcHNob3QiLCB0aGlzLCBtX3Bs
dWdJbk9yaWdpbkhhc2gsIHdpZHRoLCBoZWlnaHQpOwotICAgIHNldERpc3BsYXlTdGF0ZShXYWl0
aW5nRm9yU25hcHNob3QpOworICAgIC8vIFdlIG1heSBoYXZlIGdvdCB0byB0aGlzIHBvaW50IGJ5
IHJlc3RhcnRpbmcgYSBzbmFwc2hvdHRlZCBwbHVnLWluLCBpbiB3aGljaCBjYXNlIHdlIGRvbid0
IHdhbnQgdG8KKyAgICAvLyByZXNldCB0aGUgZGlzcGxheSBzdGF0ZS4KKyAgICBpZiAoZGlzcGxh
eVN0YXRlKCkgIT0gUGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykKKyAgICAgICAgc2V0RGlz
cGxheVN0YXRlKFdhaXRpbmdGb3JTbmFwc2hvdCk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6c3ViZnJhbWVMb2FkZXJEaWRDcmVhdGVQbHVnSW4oY29uc3QgV2lkZ2V0KiB3aWRn
ZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4
IDA0NzMxYjVlNGVlNjNhNTRiODE5OWViZjIzZTNkNjYyNmQwYjY0Y2IuLjZkMDBiYmU1ZDBjYzdi
YmJkYmNjYWZiYmZmZGE5Mjg4ZWVjZWU3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5oCkBAIC0yNSwxMSArMjUsMTMgQEAKIAogI2luY2x1ZGUgIlJl
bmRlclN0eWxlLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MSW1hZ2VMb2FkZXI7CiBj
bGFzcyBGcmFtZUxvYWRlcjsKK2NsYXNzIEltYWdlOwogY2xhc3MgTW91c2VFdmVudDsKIGNsYXNz
IFdpZGdldDsKIApAQCAtMzcsNyArMzksNyBAQCBlbnVtIFBsdWdpbkNyZWF0aW9uT3B0aW9uIHsK
ICAgICBDcmVhdGVBbnlXaWRnZXRUeXBlLAogICAgIENyZWF0ZU9ubHlOb25OZXRzY2FwZVBsdWdp
bnMsCiB9OwotICAgIAorCiBlbnVtIFByZWZlclBsdWdJbnNGb3JJbWFnZXNPcHRpb24gewogICAg
IFNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMsCiAgICAgU2hvdWxkTm90UHJlZmVyUGx1Z0lu
c0ZvckltYWdlcwpAQCAtNjYsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdWJmcmFtZUxv
YWRlcldpbGxDcmVhdGVQbHVnSW4oY29uc3QgS1VSTCYgcGx1Z0luVVJMKTsKICAgICB2b2lkIHN1
YmZyYW1lTG9hZGVyRGlkQ3JlYXRlUGx1Z0luKGNvbnN0IFdpZGdldCopOwogCisgICAgdm9pZCBj
cmVhdGVTaGFkb3dTdWJ0cmVlKCk7CisKIHByb3RlY3RlZDoKICAgICBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiwgYm9vbCBjcmVh
dGVkQnlQYXJzZXIsIFByZWZlclBsdWdJbnNGb3JJbWFnZXNPcHRpb24pOwogCkBAIC05MiwyMiAr
OTYsMzEgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwg
Ym9vbCB3aWxsUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpOwotICAgIAorCisgICAgdmlydHVhbCBi
b29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQm
KSBjb25zdCBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRy
ZW4oKTsKIAogICAgIHZvaWQgdXBkYXRlV2lkZ2V0SWZOZWNlc3NhcnkoKTsKICAgICB2aXJ0dWFs
IGJvb2wgdXNlRmFsbGJhY2tDb250ZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAK
KwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTbmFwc2hvdChQYXNzUmVmUHRyPEltYWdlPikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoUGVuZGluZ01vdXNlQ2xpY2soKSBPVkVS
UklERTsKICAgICB2b2lkIHNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lckZpcmVkKERlZmVycmFibGVP
bmVTaG90VGltZXI8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4qKTsKIAorICAgIHZvaWQgc3dhcFJl
bmRlcmVyVGltZXJGaXJlZChUaW1lcjxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PiopOworCisgICAg
dm9pZCBzZXRTaG91bGRTaG93U25hcHNob3RMYWJlbEF1dG9tYXRpY2FsbHkoKSB7IG1fc2hvdWxk
U2hvd1NuYXBzaG90TGFiZWxBdXRvbWF0aWNhbGx5ID0gdHJ1ZTsgfQorCiAgICAgYm9vbCBtX25l
ZWRzV2lkZ2V0VXBkYXRlOwogICAgIGJvb2wgbV9zaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2Vz
OwogICAgIGJvb2wgbV9uZWVkc0RvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrczsKKyAgICBib29s
IG1fc2hvdWxkU2hvd1NuYXBzaG90TGFiZWxBdXRvbWF0aWNhbGx5OwogICAgIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gbV9jdXN0b21TdHlsZUZvclBhZ2VDYWNoZTsKICAgICBSZWZQdHI8TW91c2VFdmVu
dD4gbV9wZW5kaW5nQ2xpY2tFdmVudEZyb21TbmFwc2hvdDsKICAgICBEZWZlcnJhYmxlT25lU2hv
dFRpbWVyPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+IG1fc2ltdWxhdGVkTW91c2VDbGlja1RpbWVy
OworICAgIFRpbWVyPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+IG1fc3dhcFJlbmRlcmVyVGltZXI7
CisgICAgUmVmUHRyPEltYWdlPiBtX3NuYXBzaG90SW1hZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBz
aG90dGVkUGx1Z0luLmNwcAppbmRleCBhNjM1MWM5ZDQ3NmI2OGViMTBiODEwMTg0MmNjOTg2ODdj
MmQ1OGU5Li5jYzMwNTQyNjdmMDgwNTRjNjJkNjdjNGUwMjE1NmZkZWZkNGIzODRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5j
cHAKQEAgLTQwLDE0ICs0MCwxMyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWlu
dEluZm8uaCIKICNpbmNsdWRlICJQYXRoLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2lu
Y2x1ZGUgIlNvdXJjZUdyYXBoaWMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMg
Y29uc3QgaW50IGF1dG9TdGFydFBsdWdJblNpemVUaHJlc2hvbGRXaWR0aCA9IDE7CiBzdGF0aWMg
Y29uc3QgaW50IGF1dG9TdGFydFBsdWdJblNpemVUaHJlc2hvbGRIZWlnaHQgPSAxOwotc3RhdGlj
IGNvbnN0IGludCBzdGFydExhYmVsUGFkZGluZyA9IDEwOyAvLyBMYWJlbCBzaG91bGQgYmUgMTBw
eCBmcm9tIGVkZ2Ugb2YgYm94Lgotc3RhdGljIGNvbnN0IGludCBzdGFydExhYmVsSW5zZXQgPSAy
MDsgLy8gQnV0IHRoZSBsYWJlbCBpcyBpbnNldCBmcm9tIGl0cyBib3ggYWxzby4gRklYTUU6IFRo
aXMgd2lsbCBiZSByZW1vdmVkIHdoZW4gd2UgZ28gdG8gYSBTaGFkb3dET00gYXBwcm9hY2guCiBz
dGF0aWMgY29uc3QgZG91YmxlIHNob3dMYWJlbEFmdGVyTW91c2VPdmVyRGVsYXkgPSAxOwogc3Rh
dGljIGNvbnN0IGRvdWJsZSBzaG93TGFiZWxBdXRvbWF0aWNhbGx5RGVsYXkgPSAzOwogc3RhdGlj
IGNvbnN0IGludCBzbmFwc2hvdExhYmVsQmx1clJhZGl1cyA9IDU7CkBAIC0xMDAsNyArOTksNyBA
QCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luQmx1ckZpbHRlcjo6YXBwbHkoKQogI2VuZGlm
CiAKIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50KiBlbGVtZW50KQotICAgIDogUmVuZGVyRW1iZWRkZWRPYmplY3Qo
ZWxlbWVudCkKKyAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQpCiAgICAgLCBtX3NuYXBzaG90UmVz
b3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkpCiAgICAgLCBtX3Nob3VsZFNob3dM
YWJlbChmYWxzZSkKICAgICAsIG1fc2hvdWxkU2hvd0xhYmVsQXV0b21hdGljYWxseShmYWxzZSkK
QEAgLTE0NSwyOCArMTQ0LDM4IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnVwZGF0
ZVNuYXBzaG90KFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKQogCiB2b2lkIFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQogewotICAgIGlmIChwbHVnSW5JbWFnZUVsZW1lbnQoKS0+ZGlzcGxheVN0
YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykg
ewotICAgICAgICBSZW5kZXJSZXBsYWNlZDo6cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7
Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VC
bG9ja0JhY2tncm91bmQgJiYgcGx1Z0luSW1hZ2VFbGVtZW50KCktPmRpc3BsYXlTdGF0ZSgpIDwg
SFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2spIHsKKyAgICAg
ICAgaWYgKG1fc2hvdWxkU2hvd0xhYmVsKQorICAgICAgICAgICAgcGFpbnRTbmFwc2hvdFdpdGhM
YWJlbChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cGFpbnRTbmFwc2hvdChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICB9CiAKLSAgICBSZW5k
ZXJFbWJlZGRlZE9iamVjdDo6cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CisgICAgUmVu
ZGVyQmxvY2s6OnBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogfQogCi12b2lkIFJlbmRl
clNuYXBzaG90dGVkUGx1Z0luOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCit2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1
Z0luOjpsYXlvdXQoKQogewotICAgIGlmIChwbHVnSW5JbWFnZUVsZW1lbnQoKS0+ZGlzcGxheVN0
YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykg
ewotICAgICAgICBpZiAobV9zaG91bGRTaG93TGFiZWwpCi0gICAgICAgICAgICBwYWludFJlcGxh
Y2VkU25hcHNob3RXaXRoTGFiZWwocGFpbnRJbmZvLCBwYWludE9mZnNldCk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHBhaW50UmVwbGFjZWRTbmFwc2hvdChwYWludEluZm8sIHBhaW50T2Zm
c2V0KTsKKyAgICBTdGFja1N0YXRzOjpMYXlvdXRDaGVja1BvaW50IGxheW91dENoZWNrUG9pbnQ7
CisgICAgTGF5b3V0U2l6ZSBvbGRTaXplID0gY29udGVudEJveFJlY3QoKS5zaXplKCk7CisKKyAg
ICBSZW5kZXJCbG9jazo6bGF5b3V0KCk7CisKKyAgICBMYXlvdXRTaXplIG5ld1NpemUgPSBjb250
ZW50Qm94UmVjdCgpLnNpemUoKTsKKyAgICBpZiAobmV3U2l6ZSA9PSBvbGRTaXplKQogICAgICAg
ICByZXR1cm47Ci0gICAgfQogCi0gICAgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFj
ZWQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CisgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0
YXRlUHVzaGVyKHZpZXcoKSwgdGhpcywgbG9jYXRpb25PZmZzZXQoKSwgaGFzVHJhbnNmb3JtKCkg
fHwgaGFzUmVmbGVjdGlvbigpIHx8IHN0eWxlKCktPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2Rl
KCkpOworCisgICAgZmlyc3RDaGlsZCgpLT5zdHlsZSgpLT5zZXRIZWlnaHQoTGVuZ3RoKG5ld1Np
emUuaGVpZ2h0KCksIEZpeGVkKSk7CisgICAgZmlyc3RDaGlsZCgpLT5zdHlsZSgpLT5zZXRXaWR0
aChMZW5ndGgobmV3U2l6ZS53aWR0aCgpLCBGaXhlZCkpOworICAgIGZpcnN0Q2hpbGQoKS0+c2V0
TmVlZHNMYXlvdXQodHJ1ZSwgTWFya09ubHlUaGlzKTsKKyAgICBmaXJzdENoaWxkKCktPmxheW91
dCgpOworCisgICAgc3RhdGVQdXNoZXIucG9wKCk7CiB9CiAKLXZvaWQgUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW46OnBhaW50U25hcHNob3QoSW1hZ2UqIGltYWdlLCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQordm9pZCBSZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbjo6cGFpbnRTbmFwc2hvdEltYWdlKEltYWdlKiBpbWFnZSwgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBMYXlvdXRVbml0
IGNXaWR0aCA9IGNvbnRlbnRXaWR0aCgpOwogICAgIExheW91dFVuaXQgY0hlaWdodCA9IGNvbnRl
bnRIZWlnaHQoKTsKQEAgLTE4MCw3ICsxODksNyBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1
Z0luOjpwYWludFNuYXBzaG90KEltYWdlKiBpbWFnZSwgUGFpbnRJbmZvJiBwYWludEluZm8sCiAj
ZW5kaWYKIAogICAgIExheW91dFNpemUgY29udGVudFNpemUoY1dpZHRoLCBjSGVpZ2h0KTsKLSAg
ICBMYXlvdXRQb2ludCBjb250ZW50TG9jYXRpb24gPSBwYWludE9mZnNldDsKKyAgICBMYXlvdXRQ
b2ludCBjb250ZW50TG9jYXRpb24gPSBsb2NhdGlvbigpICsgcGFpbnRPZmZzZXQ7CiAgICAgY29u
dGVudExvY2F0aW9uLm1vdmUoYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9w
KCkgKyBwYWRkaW5nVG9wKCkpOwogCiAgICAgTGF5b3V0UmVjdCByZWN0KGNvbnRlbnRMb2NhdGlv
biwgY29udGVudFNpemUpOwpAQCAtMTkyLDMxICsyMDEsMTMgQEAgdm9pZCBSZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdChJbWFnZSogaW1hZ2UsIFBhaW50SW5mbyYgcGFpbnRJ
bmZvLAogICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgp
LCBhbGlnbmVkUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlciwgc2hvdWxkUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOwogfQogCi12b2lkIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjpwYWludFJlcGxhY2VkU25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKK3ZvaWQgUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW46OnBhaW50U25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCkKIHsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gbV9zbmFwc2hv
dFJlc291cmNlLT5pbWFnZSgpOwogICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBwYWludFNuYXBzaG90KGltYWdlLmdldCgpLCBwYWludElu
Zm8sIHBhaW50T2Zmc2V0KTsKLX0KLQotSW1hZ2UqIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpz
dGFydExhYmVsSW1hZ2UoTGFiZWxTaXplIHNpemUpIGNvbnN0Ci17Ci0gICAgc3RhdGljIEltYWdl
KiBsYWJlbEltYWdlc1syXSA9IHsgMCwgMCB9OwotICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVk
SW1hZ2VzWzJdID0geyBmYWxzZSwgZmFsc2UgfTsKLQotICAgIGludCBhcnJheUluZGV4ID0gc3Rh
dGljX2Nhc3Q8aW50PihzaXplKTsKLSAgICBpZiAobGFiZWxJbWFnZXNbYXJyYXlJbmRleF0pCi0g
ICAgICAgIHJldHVybiBsYWJlbEltYWdlc1thcnJheUluZGV4XTsKLSAgICBpZiAoaW5pdGlhbGl6
ZWRJbWFnZXNbYXJyYXlJbmRleF0pCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGRvY3Vt
ZW50KCktPnBhZ2UoKSkgewotICAgICAgICBsYWJlbEltYWdlc1thcnJheUluZGV4XSA9IGRvY3Vt
ZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbHVnSW5TdGFydExhYmVsSW1hZ2Uo
c2l6ZSkubGVha1JlZigpOwotICAgICAgICBpbml0aWFsaXplZEltYWdlc1thcnJheUluZGV4XSA9
IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBsYWJlbEltYWdlc1thcnJheUluZGV4XTsKKyAgICBw
YWludFNuYXBzaG90SW1hZ2UoaW1hZ2UuZ2V0KCksIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwog
fQogCiAjaWYgRU5BQkxFKEZJTFRFUlMpCkBAIC0yMzgsNyArMjI5LDcgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8SW1hZ2U+IHNuYXBzaG90dGVkUGx1Z2luSW1hZ2VGb3JMYWJlbERpc3BsYXkoUGFzc1Jl
ZlB0cjxJbWFnZT4KIH0KICNlbmRpZgogCi12b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpw
YWludFJlcGxhY2VkU25hcHNob3RXaXRoTGFiZWwoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCkKK3ZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46
OnBhaW50U25hcHNob3RXaXRoTGFiZWwoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBpZiAoY29udGVudEJveFJlY3QoKS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0Nyw0MyArMjM4LDI2IEBAIHZvaWQgUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW46OnBhaW50UmVwbGFjZWRTbmFwc2hvdFdpdGhMYWJlbChQYWludEluZm8m
IHBhaW50SW5mCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2hvd2VkTGFiZWxPbmNlID0gdHJ1
ZTsKLSAgICBMYXlvdXRSZWN0IHJlY3QgPSBjb250ZW50Qm94UmVjdCgpOwotICAgIExheW91dFJl
Y3QgbGFiZWxSZWN0ID0gdHJ5VG9GaXRTdGFydExhYmVsKExhYmVsU2l6ZUxhcmdlLCByZWN0KTsK
LSAgICBMYWJlbFNpemUgc2l6ZSA9IE5vTGFiZWw7Ci0gICAgaWYgKCFsYWJlbFJlY3QuaXNFbXB0
eSgpKQotICAgICAgICBzaXplID0gTGFiZWxTaXplTGFyZ2U7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IGxhYmVsUmVjdCA9IHRyeVRvRml0U3RhcnRMYWJlbChMYWJlbFNpemVTbWFsbCwgcmVjdCk7Ci0g
ICAgICAgIGlmICghbGFiZWxSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHNpemUgPSBMYWJl
bFNpemVTbWFsbDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEltYWdlKiBsYWJlbEltYWdlID0gc3RhcnRMYWJlbEltYWdlKHNpemUpOwotICAgIGlmICgh
bGFiZWxJbWFnZSkKLSAgICAgICAgcmV0dXJuOworICAgIExheW91dFJlY3QgbGFiZWxSZWN0Owog
CiAgICAgUmVmUHRyPEltYWdlPiBzbmFwc2hvdEltYWdlID0gbV9zbmFwc2hvdFJlc291cmNlLT5p
bWFnZSgpOwogICAgIGlmICghc25hcHNob3RJbWFnZSB8fCBzbmFwc2hvdEltYWdlLT5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKEZJTFRFUlMpCi0gICAgUmVmUHRyPElt
YWdlPiBibHVycmVkU25hcHNob3RJbWFnZSA9IG1fc25hcHNob3RSZXNvdXJjZUZvckxhYmVsLT5p
bWFnZSgpOwotICAgIGlmICghYmx1cnJlZFNuYXBzaG90SW1hZ2UgfHwgYmx1cnJlZFNuYXBzaG90
SW1hZ2UtPmlzTnVsbCgpKSB7Ci0gICAgICAgIGJsdXJyZWRTbmFwc2hvdEltYWdlID0gc25hcHNo
b3R0ZWRQbHVnaW5JbWFnZUZvckxhYmVsRGlzcGxheShzbmFwc2hvdEltYWdlLCBsYWJlbFJlY3Qp
OwotICAgICAgICBtX3NuYXBzaG90UmVzb3VyY2VGb3JMYWJlbC0+c2V0Q2FjaGVkSW1hZ2UobmV3
IENhY2hlZEltYWdlKGJsdXJyZWRTbmFwc2hvdEltYWdlLmdldCgpKSk7CisgICAgLy8gRklYTUU6
IFRlbXBvcmFyaWx5IGRpc2FibGluZyB0aGUgYmx1ciBiZWhpbmQgdGhlIGxhYmVsLgorICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgzNjgKKyAgICBpZiAo
IWxhYmVsUmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmVmUHRyPEltYWdlPiBibHVycmVkU25h
cHNob3RJbWFnZSA9IG1fc25hcHNob3RSZXNvdXJjZUZvckxhYmVsLT5pbWFnZSgpOworICAgICAg
ICBpZiAoIWJsdXJyZWRTbmFwc2hvdEltYWdlIHx8IGJsdXJyZWRTbmFwc2hvdEltYWdlLT5pc051
bGwoKSkgeworICAgICAgICAgICAgYmx1cnJlZFNuYXBzaG90SW1hZ2UgPSBzbmFwc2hvdHRlZFBs
dWdpbkltYWdlRm9yTGFiZWxEaXNwbGF5KHNuYXBzaG90SW1hZ2UsIGxhYmVsUmVjdCk7CisgICAg
ICAgICAgICBtX3NuYXBzaG90UmVzb3VyY2VGb3JMYWJlbC0+c2V0Q2FjaGVkSW1hZ2UobmV3IENh
Y2hlZEltYWdlKGJsdXJyZWRTbmFwc2hvdEltYWdlLmdldCgpKSk7CisgICAgICAgIH0KKyAgICAg
ICAgc25hcHNob3RJbWFnZSA9IGJsdXJyZWRTbmFwc2hvdEltYWdlOwogICAgIH0KLSAgICBzbmFw
c2hvdEltYWdlID0gYmx1cnJlZFNuYXBzaG90SW1hZ2U7CiAjZW5kaWYKIAotICAgIHBhaW50U25h
cHNob3Qoc25hcHNob3RJbWFnZS5nZXQoKSwgcGFpbnRJbmZvLCBwYWludE9mZnNldCk7Ci0KLSAg
ICAvLyBSZW1lbWJlciB0aGF0IHRoZSBsYWJlbFJlY3QgaW5jbHVkZXMgdGhlIGxhYmVsIGluc2V0
LCBzbyB3ZSBuZWVkIHRvIGFkanVzdCBmb3IgaXQuCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRy
YXdJbWFnZShsYWJlbEltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSW50UmVjdChyb3VuZGVkSW50UG9pbnQocGFpbnRPZmZzZXQgKyBs
YWJlbFJlY3QubG9jYXRpb24oKSAtIEludFNpemUoc3RhcnRMYWJlbEluc2V0LCBzdGFydExhYmVs
SW5zZXQpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRl
ZEludFNpemUobGFiZWxSZWN0LnNpemUoKSArIEludFNpemUoMiAqIHN0YXJ0TGFiZWxJbnNldCwg
MiAqIHN0YXJ0TGFiZWxJbnNldCkpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxhYmVsSW1hZ2UtPnJlY3QoKSk7CisgICAgcGFpbnRTbmFwc2hvdEltYWdlKHNuYXBzaG90SW1h
Z2UuZ2V0KCksIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogfQogCiB2b2lkIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjpyZXBhaW50TGFiZWwoKQpAQCAtMzA5LDcgKzI4Myw3IEBAIEN1cnNvckRp
cmVjdGl2ZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6Z2V0Q3Vyc29yKGNvbnN0IExheW91dFBv
aW50JiBwb2ludCwgQ3VyCiAgICAgICAgIG92ZXJyaWRlQ3Vyc29yID0gaGFuZEN1cnNvcigpOwog
ICAgICAgICByZXR1cm4gU2V0Q3Vyc29yOwogICAgIH0KLSAgICByZXR1cm4gUmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OmdldEN1cnNvcihwb2ludCwgb3ZlcnJpZGVDdXJzb3IpOworICAgIHJldHVybiBS
ZW5kZXJCbG9jazo6Z2V0Q3Vyc29yKHBvaW50LCBvdmVycmlkZUN1cnNvcik7CiB9CiAKIHZvaWQg
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmhhbmRsZUV2ZW50KEV2ZW50KiBldmVudCkKQEAgLTMy
NSwxMiArMjk5LDYgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQo
RXZlbnQqIGV2ZW50KQogCiAgICAgICAgIHBsdWdJbkltYWdlRWxlbWVudCgpLT5zZXREaXNwbGF5
U3RhdGUoSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2spOwog
ICAgICAgICBwbHVnSW5JbWFnZUVsZW1lbnQoKS0+dXNlckRpZENsaWNrU25hcHNob3QobW91c2VF
dmVudCk7Ci0KLSAgICAgICAgaWYgKHdpZGdldCgpKSB7Ci0gICAgICAgICAgICBpZiAoRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+bG9h
ZGVyKCktPmNsaWVudCgpLT5yZWNyZWF0ZVBsdWdpbih3aWRnZXQoKSk7Ci0gICAgICAgICAgICBy
ZXBhaW50KCk7Ci0gICAgICAgIH0KICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7
CiAgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25F
dmVudCkgewogICAgICAgICBpZiAobW91c2VFdmVudC0+YnV0dG9uKCkgIT0gTGVmdEJ1dHRvbikK
QEAgLTM1OCwyNyArMzI2LDYgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6aGFuZGxl
RXZlbnQoRXZlbnQqIGV2ZW50KQogICAgIH0KIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbjo6dHJ5VG9GaXRTdGFydExhYmVsKExhYmVsU2l6ZSBzaXplLCBjb25zdCBMYXlv
dXRSZWN0JiBjb250ZW50Qm94KSBjb25zdAotewotICAgIEltYWdlKiBsYWJlbEltYWdlID0gc3Rh
cnRMYWJlbEltYWdlKHNpemUpOwotICAgIGlmICghbGFiZWxJbWFnZSkKLSAgICAgICAgcmV0dXJu
IExheW91dFJlY3QoKTsKLQotICAgIC8vIEFzc3VtZSB0aGF0IHRoZSBsYWJlbEltYWdlIGhhcyBi
ZWVuIHByb3ZpZGVkIHRvIG1hdGNoIG91ciBkZXZpY2Ugc2NhbGUuCi0gICAgZmxvYXQgc2NhbGVG
YWN0b3IgPSAxOwotICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpCi0gICAgICAgIHNjYWxlRmFj
dG9yID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIEludFNp
emUgbGFiZWxJbWFnZVNpemUgPSBsYWJlbEltYWdlLT5zaXplKCk7Ci0gICAgbGFiZWxJbWFnZVNp
emUuc2NhbGUoMSAvIChzY2FsZUZhY3RvciA/IHNjYWxlRmFjdG9yIDogMSkpOwotCi0gICAgTGF5
b3V0U2l6ZSBsYWJlbFNpemUgPSBsYWJlbEltYWdlU2l6ZSAtIExheW91dFNpemUoMiAqIHN0YXJ0
TGFiZWxJbnNldCwgMiAqIHN0YXJ0TGFiZWxJbnNldCk7Ci0gICAgTGF5b3V0UmVjdCBjYW5kaWRh
dGVSZWN0KGNvbnRlbnRCb3gubWF4WE1pbllDb3JuZXIoKSArIExheW91dFNpemUoLXN0YXJ0TGFi
ZWxQYWRkaW5nLCBzdGFydExhYmVsUGFkZGluZykgKyBMYXlvdXRTaXplKC1sYWJlbFNpemUud2lk
dGgoKSwgMCksIGxhYmVsU2l6ZSk7Ci0gICAgLy8gVGhlIG1pbmltdW0gYWxsb3dlZCBjb250ZW50
IGJveCBzaXplIGlzIHRoZSBsYWJlbCBpbWFnZSBwbGFjZWQgaW4gdGhlIGNlbnRlciBvZiB0aGUg
Ym94LCBzdXJyb3VuZGVkIGJ5IHN0YXJ0TGFiZWxQYWRkaW5nLgotICAgIGlmIChjYW5kaWRhdGVS
ZWN0LngoKSA8IHN0YXJ0TGFiZWxQYWRkaW5nIHx8IGNhbmRpZGF0ZVJlY3QubWF4WSgpID4gY29u
dGVudEJveC5oZWlnaHQoKSAtIHN0YXJ0TGFiZWxQYWRkaW5nKQotICAgICAgICByZXR1cm4gTGF5
b3V0UmVjdCgpOwotICAgIHJldHVybiBjYW5kaWRhdGVSZWN0OwotfQotCiB2b2lkIFJlbmRlclNu
YXBzaG90dGVkUGx1Z0luOjpyZXNldERlbGF5VGltZXIoU2hvd1JlYXNvbiByZWFzb24pCiB7CiAg
ICAgbV9zaG93UmVhc29uID0gcmVhc29uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAppbmRleCBiOWRlNjJjYmFjMmFhY2ZhNWExNGM2
OWJkNDJhNjkyZmZlNjU1Nzc0Li5lNjg2MzFkY2M4OTVkODIzNGRiNjRiNWE5MzAyOWRhMTJmNjRl
YWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbl9oCiAjZGVmaW5lIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luX2gKIAotI2luY2x1ZGUgIlJl
bmRlckVtYmVkZGVkT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKIAogI2luY2x1
ZGUgIlJlbmRlckltYWdlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtMzUsMTcg
KzM1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxl
bWVudDsKIAotY2xhc3MgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4gOiBwdWJsaWMgUmVuZGVyRW1i
ZWRkZWRPYmplY3QgeworY2xhc3MgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4gOiBwdWJsaWMgUmVu
ZGVyQmxvY2sgewogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
KEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbigpOwogCi0gICAgZW51bSBMYWJlbFNpemUgewotICAgICAgICBMYWJlbFNpemVTbWFs
bCwKLSAgICAgICAgTGFiZWxTaXplTGFyZ2UsCi0gICAgICAgIE5vTGFiZWwsCi0gICAgfTsKLQog
ICAgIHZvaWQgdXBkYXRlU25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4pOwogCiAgICAgdm9pZCBo
YW5kbGVFdmVudChFdmVudCopOwpAQCAtNjAsMTUgKzU0LDEzIEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBDdXJzb3JEaXJlY3RpdmUgZ2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiwgQ3Vyc29y
JikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzU25hcHNob3R0ZWRQbHVnSW4o
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklE
RTsKIAotICAgIHZvaWQgcGFpbnRSZXBsYWNlZFNuYXBzaG90KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50Jik7Ci0gICAgdm9pZCBwYWludFJlcGxhY2VkU25hcHNob3RXaXRoTGFiZWwoUGFp
bnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKLSAgICB2b2lkIHBhaW50U25hcHNob3QoSW1h
Z2UqLCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZvaWQgcGFpbnRTbmFw
c2hvdChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZvaWQgcGFpbnRTbmFw
c2hvdFdpdGhMYWJlbChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZvaWQg
cGFpbnRTbmFwc2hvdEltYWdlKEltYWdlKiwgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQm
KTsKICAgICB2b2lkIHJlcGFpbnRMYWJlbCgpOwogCi0gICAgTGF5b3V0UmVjdCB0cnlUb0ZpdFN0
YXJ0TGFiZWwoTGFiZWxTaXplLCBjb25zdCBMYXlvdXRSZWN0JiBjb250ZW50Qm94KSBjb25zdDsK
LSAgICBJbWFnZSogc3RhcnRMYWJlbEltYWdlKExhYmVsU2l6ZSkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGxheW91dCgpIE9WRVJSSURFOwogCiAgICAgZW51bSBTaG93UmVhc29uIHsKICAgICAg
ICAgVXNlck1vdXNlZE92ZXIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185659</attachid>
            <date>2013-01-30 19:24:48 -0800</date>
            <delta_ts>2013-01-31 10:39:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108284-20130131142129.patch</filename>
            <type>text/plain</type>
            <size>30330</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ3Nzc2Y2U5YWRmOTky
YTUzYzgxZDY1OTIyZjcyOWFkYTY5NTNlYi4uODNhODJmY2ZmNjc2NDlhZTQ4OWY0NGVkZDI1MGMy
OGZhMmMwNDdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU2IEBACiAyMDEzLTAxLTMwICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAorICAgICAgICBTbmFwc2hvdHRlZCBwbHVnLWlu
IHNob3VsZCB1c2Ugc2hhZG93IHJvb3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwODI4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEEgc25hcHNob3R0ZWQgcGx1Z2luIG5lZWRzIHRvIGluZGljYXRlIHRv
IHRoZSB1c2VyIHRoYXQgaXQgY2FuIGJlIGNsaWNrZWQKKyAgICAgICAgdG8gYmUgcmVzdGFydGVk
LiBQcmV2aW91c2x5IHRoaXMgd2FzIGRvbmUgd2l0aCBhbiBpbWFnZSB0aGF0IGhhZCBlbWJlZGRl
ZAorICAgICAgICB0ZXh0LiBJbnN0ZWFkLCB3ZSBub3cgdXNlIGFuIGludGVybmFsIHNoYWRvdyBy
b290IHRvIGVtYmVkIHNvbWUgbWFya3VwIHRoYXQKKyAgICAgICAgd2lsbCBkaXNwbGF5IGluc3Ry
dWN0aW9ucyB0aGF0IGNhbiBiZSBsb2NhbGlzZWQuCisKKyAgICAgICAgVGhlIFVBIHN0eWxlc2hl
ZXQgZm9yIHBsdWctaW5zIHByb3ZpZGVzIGEgZGVmYXVsdCBzdHlsaW5nIGZvciB0aGUgbGFiZWws
IHdoaWNoCisgICAgICAgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHBvcnRzLgorCisgICAgICAgIElu
IHRoZSBwcm9jZXNzLCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiBubyBsb25nZXIgaW5oZXJpdHMg
ZnJvbSBSZW5kZXJFbWJlZGRlZE9iamVjdCwKKyAgICAgICAgc2luY2UgaXQgaXMgb25seSByZXNw
b25zaWJsZSBmb3IgZHJhd2luZyBhIHBhdXNlZCBwbHVnLWluLiBUaGUgc25hcHNob3QgY3JlYXRp
b24KKyAgICAgICAgY2FuIHdvcmsgd2l0aCB0aGUgZGVmYXVsdCByZW5kZXJlciwgYnV0IGEgc2hh
ZG93IHJvb3QgcmVxdWlyZXMgc29tZXRoaW5nIGxpa2UKKyAgICAgICAgUmVuZGVyQmxvY2sgaW4g
b3JkZXIgdG8gZHJhdyBpdHMgY2hpbGRyZW4uIFdlIHN3YXAgZnJvbSBvbmUgcmVuZGVyZXIgdG8g
YW5vdGhlciB3aGVuCisgICAgICAgIG5lY2Vzc2FyeSBieSBkZXRhY2hpbmcgYW5kIGF0dGFjaGlu
ZyB0aGUgcGx1Z2luIGVsZW1lbnQuCisKKyAgICAgICAgVW5mb3J0dW5hdGVseSB0aGlzIGlzIGRp
ZmZpY3VsdCB0byB0ZXN0LCBiZWNhdXNlIHRoZSBzbmFwc2hvdHRpbmcgcmVxdWlyZXMKKyAgICAg
ICAgdGltZSB0byBleGVjdXRlLCBhbmQgYWxzbyBhIFBsdWdpblZpZXcgdG8gYmUgaW5zdGFudGlh
dGVkLgorCisgICAgICAgICogY3NzL3BsdWdJbnMuY3NzOgorICAgICAgICAob2JqZWN0Ojotd2Vi
a2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50KTogTmV3IHJ1bGVzIGZvciBhIGRlZmF1bHQg
bGFiZWwgc3R5bGUuCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IFRh
a2UgaW50byBhY2NvdW50IHRoZSBmYWN0CisgICAgICAgIHRoYXQgUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4gbm8gbG9uZ2VyIGlzIGFuIGVtYmVkZGVkIG9iamVjdC4KKyAgICAgICAgKiBodG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6SFRNTFBsdWdJbkltYWdlRWxlbWVudCk6IE5ldyBkZWZhdWx0IHZhbHVlcyBp
biBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OmNyZWF0ZVJlbmRlcmVyKTogSWYgd2UncmUgc2hvd2luZyBhIHNuYXBzaG90LCBjcmVhdGUgc3Vj
aAorICAgICAgICBhIHJlbmRlcmVyLCBvdGhlcndpc2UgdXNlIHRoZSB0eXBpY2FsIHBsdWctaW4g
cGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVNu
YXBzaG90KTogS2VlcCBhIHJlY29yZCBvZiB0aGUgc25hcHNob3QsIHNpbmNlIHdlJ2xsCisgICAg
ICAgIG5lZWQgdG8gZ2l2ZSBpdCB0byB0aGUgcmVuZGVyZXIuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KTogQnVpbGQg
YSBzdWJ0cmVlIHRoYXQgd2lsbCBkaXNwbGF5IGEgbGFiZWwuCisgICAgICAgICogaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgIChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KTog
TmV3IG1lbWJlciB2YXJpYWJsZSB0byByZWNvcmQgdGhlIHNuYXBzaG90IGltYWdlIGFuZCB3aGV0
aGVyIHRoZSBsYWJlbAorICAgICAgICBzaG91bGQgc2hvdyBpbW1lZGlhdGVseS4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKTogTmV3
IGluaGVyaXRhbmNlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46
OnBhaW50KTogSWYgd2UncmUgaW4gdGhlIGJhY2tncm91bmQgcGFpbnQgcGhhc2UsIHJlbmRlciB0
aGUgc25hcHNob3QgaW1hZ2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbjo6bGF5b3V0KTogUGFzcyB0aGUgc2l6ZSBvZiB0aGUgY29udGFpbmVyIGRvd24gaW50byB0
aGUgc2hhZG93IHRyZWUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bjo6cGFpbnRTbmFwc2hvdEltYWdlKTogUmVuYW1lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOiBSZW5hbWUuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdFdpdGhMYWJlbCk6IFJl
bmFtZS4gTm8gbmVlZCBmb3IgbGFiZWwgc2l6ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbjo6Z2V0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNu
YXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudCk6IFRoZSByZW5kZXJlciBkb2Vzbid0IHJlc3Rh
cnQgdGhlIHBsdWctaW4gYW55IG1vcmUuIFRlbGwgdGhlIGVsZW1lbnQgYW5kIGl0IHdpbGwgZG8g
aXQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmg6CisgICAg
ICAgIChSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik6IE5ldyBpbmhlcml0YW5jZS4gU29tZSBtZXRo
b2QgcmVuYW1pbmcuCisKKzIwMTMtMDEtMzAgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29t
PgorCiAgICAgICAgIFNoYWRvdyB0cmVlIGRvZXNuJ3QgY2FsY3VsYXRlIHN0eWxlIGNvcnJlY3Rs
eSBpZiBzaGFyZWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwODQwNAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGx1Z0lucy5jc3Mg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGx1Z0lucy5jc3MKaW5kZXggYmNlNzE2ZGUzMmFjMjMyYTkz
OTRiNzFhZWMwZTJkNWZhM2M4NWFiMC4uM2JkZTNhZjQ2M2FhYTY1NmQxYTBlNjcxM2E3ZTA5NDM1
NTNiMTczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BsdWdJbnMuY3NzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wbHVnSW5zLmNzcwpAQCAtMjIsNSArMjIsNzEgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotLyogcGx1Zy1pbnMgKi8KLXB7fSAvKk5lZWRlZCBieSBXaW5kb3dz
IGJlY2F1c2UgaXQgZG9lc24ndCBsaWtlIGVtcHR5IGZpbGVzKi8KKy8qCisgKiBUaGlzIGlzIHRo
ZSBVQSBTdHlsZVNoZWV0IGZvciA8b2JqZWN0PiBhbmQgPGVtYmVkPiBlbGVtZW50cy4KKyAqCisg
KiBTdWNoIGVsZW1lbnRzLCB3aGVuIHNuYXBzaG90dGVkIChwYXVzZWQpLCB3aWxsIGNvbnRhaW4g
YSBTaGFkb3dSb290CisgKiB3aXRoIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOgorICoKKyAqIDxv
YmplY3Q+CisgKiAgICNTaGFkb3dSb290CisgKiAgICAgPGRpdiBjbGFzcz0ic25hcHNob3QtY29u
dGFpbmVyIj4KKyAqICAgICAgIDxkaXYgY2xhc3M9InNuYXBzaG90LW92ZXJsYXkiPjwvZGl2PiA8
IS0tIGUuZy4gZm9yIGRpbW1pbmcgY29udGVudCAtLT4KKyAqICAgICAgICAgPGRpdiBjbGFzcz0i
c25hcHNob3QtbGFiZWwiPgorICogICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbmFwc2hvdC10aXRs
ZSI+U25hcHNob3R0ZWQgUGx1Zy1Jbjwvc3Bhbj4KKyAqICAgICAgICAgICA8c3BhbiBjbGFzcz0i
c25hcHNob3Qtc3VidGl0bGUiPkNsaWNrIHRvIHJlc3RhcnQ8L3NwYW4+CisgKiAgICAgICAgIDwv
ZGl2PgorICogICAgICAgPC9kaXY+CisgKiAgICAgPC9kaXY+CisgKgorICovCisKK29iamVjdDo6
LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCB7CisgICAgcG9zaXRpb246IHJlbGF0
aXZlOworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBo
ZWlnaHQ6IDEwMCU7Cit9CisKK29iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29u
dGVudCAqIHsKKyAgICBjdXJzb3I6IGhhbmQ7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cisg
ICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKK30KKworb2JqZWN0Ojotd2Via2l0LXNuYXBz
aG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgeworICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7Cit9CisKK29i
amVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFp
bmVyIC5zbmFwc2hvdC1vdmVybGF5IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgd2lk
dGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7
CisgICAgYm9yZGVyOiAycHggc29saWQgIzg4ODsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Jh
KDAsIDAsIDAsIDAuMTUpOworfQorCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2lu
LWNvbnRlbnQ6aG92ZXIgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3Qtb3ZlcmxheSB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKK30KKworb2Jq
ZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWlu
ZXIgLnNuYXBzaG90LWxhYmVsIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYmFja2dy
b3VuZC1jb2xvcjogeWVsbG93OworICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CisgICAgbWFyZ2lu
OiAxZW07CisgICAgcGFkZGluZzogMC4yNWVtIDJlbTsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7
Cit9CisKK29iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNo
b3QtY29udGFpbmVyIC5zbmFwc2hvdC1sYWJlbCAuc25hcHNob3QtdGl0bGUgeworICAgIGZvbnQt
d2VpZ2h0OiBib2xkOworfQorCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNv
bnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3QtbGFiZWwgLnNuYXBzaG90LXN1YnRp
dGxlIHsKKyAgICBmb250LXN0eWxlOiBpdGFsaWM7CisgICAgY29sb3I6ICM0NDQ7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCmluZGV4IGUyOTAyYWQ3MTc2NDY1
ODY4ZWY5OTU4YThhNjQ0ZWU1MDA5NDA1MDMuLjZkZTc2NGI1MzM1ZjYwZWQyZjViNTRjMTdmNmY5
N2Y2NjEzNTk1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3Bw
CkBAIC0yMDEsMTAgKzIwMSw5IEBAIHZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgdG9SZW5kZXJFbWJlZGRlZE9iamVj
dChyKS0+aGFuZGxlVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JFdmVudChldmVudCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHItPmlzU25hcHNob3R0ZWRQ
bHVnSW4oKSAmJiBkaXNwbGF5U3RhdGUoKSA8IFBsYXlpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2sp
IHsKLSAgICAgICAgICAgIHRvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4ociktPmhhbmRsZUV2ZW50
KGV2ZW50KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIH0gZWxzZSBpZiAo
ciAmJiByLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkgJiYgZGlzcGxheVN0YXRlKCkgPCBQbGF5aW5n
V2l0aFBlbmRpbmdNb3VzZUNsaWNrKSB7CisgICAgICAgIHRvUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW4ociktPmhhbmRsZUV2ZW50KGV2ZW50KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IGlmICghciB8fCAhci0+aXNXaWRnZXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGQwYjUzOThkZGIyOTJhYmU5ZjVjOGE4OGFlZjZm
ZGNhYzNkNjQ0MGYuLjA0ZDg4ZWVmZTAwMzZlY2FmMDYyOThiZDVjMzA5MzI2OGRlN2FlMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAt
MjEsNiArMjEsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNs
aWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgpAQCAtMjgsOSArMzAsMTEgQEAKICNpbmNsdWRl
ICJIVE1MSW1hZ2VMb2FkZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJ
bWFnZS5oIgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5o
IgorI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlBsdWdJbkNsaWVudC5oIgogI2luY2x1ZGUgIlBsdWdJbk9yaWdpbkhhc2guaCIK
QEAgLTQwLDEwICs0NCwxNCBAQAogI2luY2x1ZGUgIlJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCisjaW5jbHVk
ZSAiVGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CisKIHN0YXRpYyBjb25zdCBpbnQgYXV0b1N0YXJ0UGx1Z0luU2l6ZVRocmVzaG9sZFdp
ZHRoID0gMTsKIHN0YXRpYyBjb25zdCBpbnQgYXV0b1N0YXJ0UGx1Z0luU2l6ZVRocmVzaG9sZEhl
aWdodCA9IDE7CiBzdGF0aWMgY29uc3QgaW50IGF1dG9TaG93TGFiZWxTaXplVGhyZXNob2xkV2lk
dGggPSA0MDA7CkBAIC02MCw3ICs2OCwxMCBAQCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogICAg
ICwgbV9uZWVkc1dpZGdldFVwZGF0ZSghY3JlYXRlZEJ5UGFyc2VyKQogICAgICwgbV9zaG91bGRQ
cmVmZXJQbHVnSW5zRm9ySW1hZ2VzKHByZWZlclBsdWdJbnNGb3JJbWFnZXNPcHRpb24gPT0gU2hv
dWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKICAgICAsIG1fbmVlZHNEb2N1bWVudEFjdGl2YXRp
b25DYWxsYmFja3MoZmFsc2UpCisgICAgLCBtX3Nob3VsZFNob3dTbmFwc2hvdExhYmVsQXV0b21h
dGljYWxseShmYWxzZSkKICAgICAsIG1fc2ltdWxhdGVkTW91c2VDbGlja1RpbWVyKHRoaXMsICZI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzaW11bGF0ZWRNb3VzZUNsaWNrVGltZXJGaXJlZCwgc2lt
dWxhdGVkTW91c2VDbGlja1RpbWVyRGVsYXkpCisgICAgLCBtX3N3YXBSZW5kZXJlclRpbWVyKHRo
aXMsICZIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpzd2FwUmVuZGVyZXJUaW1lckZpcmVkKQorICAg
ICwgbV9zbmFwc2hvdEltYWdlKDApCiB7CiAgICAgc2V0SGFzQ3VzdG9tQ2FsbGJhY2tzKCk7CiB9
CkBAIC0xMzEsMjAgKzE0MiwyNyBAQCBSZW5kZXJPYmplY3QqIEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyUwogICAgICAgICBt
X25lZWRzRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzID0gdHJ1ZTsKICAgICAgICAgZG9jdW1l
bnQoKS0+cmVnaXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOwogICAg
IH0KLSAgICAKKworICAgIGlmIChkaXNwbGF5U3RhdGUoKSA9PSBEaXNwbGF5aW5nU25hcHNob3Qp
IHsKKyAgICAgICAgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4qIHJlbmRlclNuYXBzaG90dGVkUGx1
Z0luID0gbmV3IChhcmVuYSkgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4odGhpcyk7CisgICAgICAg
IHJlbmRlclNuYXBzaG90dGVkUGx1Z0luLT51cGRhdGVTbmFwc2hvdChtX3NuYXBzaG90SW1hZ2Up
OworICAgICAgICBpZiAobV9zaG91bGRTaG93U25hcHNob3RMYWJlbEF1dG9tYXRpY2FsbHkpCisg
ICAgICAgICAgICByZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi0+c2V0U2hvdWxkU2hvd0xhYmVsQXV0
b21hdGljYWxseSgpOworICAgICAgICByZXR1cm4gcmVuZGVyU25hcHNob3R0ZWRQbHVnSW47Cisg
ICAgfQorCiAgICAgLy8gRmFsbGJhY2sgY29udGVudCBicmVha3MgdGhlIERPTS0+UmVuZGVyZXIg
Y2xhc3MgcmVsYXRpb25zaGlwIG9mIHRoaXMKICAgICAvLyBjbGFzcyBhbmQgYWxsIHN1cGVyY2xh
c3NlcyBiZWNhdXNlIGNyZWF0ZU9iamVjdCB3b24ndCBuZWNlc3NhcmlseQogICAgIC8vIHJldHVy
biBhIFJlbmRlckVtYmVkZGVkT2JqZWN0LCBSZW5kZXJQYXJ0IG9yIGV2ZW4gUmVuZGVyV2lkZ2V0
LgogICAgIGlmICh1c2VGYWxsYmFja0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlck9i
amVjdDo6Y3JlYXRlT2JqZWN0KHRoaXMsIHN0eWxlKTsKKwogICAgIGlmIChpc0ltYWdlVHlwZSgp
KSB7CiAgICAgICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IG5ldyAoYXJlbmEpIFJlbmRlckltYWdl
KHRoaXMpOwogICAgICAgICBpbWFnZS0+c2V0SW1hZ2VSZXNvdXJjZShSZW5kZXJJbWFnZVJlc291
cmNlOjpjcmVhdGUoKSk7CiAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9CiAKLSAgICBpZiAo
ZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKS0+cGx1
Z0luU25hcHNob3R0aW5nRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4odGhpcyk7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRl
ckVtYmVkZGVkT2JqZWN0KHRoaXMpOwogfQogCkBAIC0yNTcsMTEgKzI3NSw4MSBAQCB2b2lkIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVdpZGdldENhbGxiYWNrKE5vZGUqIG4sIHVuc2ln
bmVkKQogCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVNuYXBzaG90KFBhc3NS
ZWZQdHI8SW1hZ2U+IGltYWdlKQogewotICAgIGlmIChkaXNwbGF5U3RhdGUoKSA+IERpc3BsYXlp
bmdTbmFwc2hvdCB8fCAhcmVuZGVyZXIoKS0+aXNTbmFwc2hvdHRlZFBsdWdJbigpKQorICAgIGlm
IChkaXNwbGF5U3RhdGUoKSA+IERpc3BsYXlpbmdTbmFwc2hvdCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihyZW5kZXJlcigpKS0+dXBkYXRlU25hcHNo
b3QoaW1hZ2UpOworICAgIG1fc25hcHNob3RJbWFnZSA9IGltYWdlOworICAgIGlmIChyZW5kZXJl
cigpLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkpIHsKKyAgICAgICAgdG9SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbihyZW5kZXJlcigpKS0+dXBkYXRlU25hcHNob3QoaW1hZ2UpOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgc2V0RGlzcGxheVN0YXRlKERpc3BsYXlpbmdTbmFwc2hvdCk7Cisg
ICAgbV9zd2FwUmVuZGVyZXJUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290KiBy
b290KQoreworICAgIERvY3VtZW50KiBkb2MgPSBkb2N1bWVudCgpOworCisgICAgUmVmUHRyPEVs
ZW1lbnQ+IHNoYWRvd0NvbnRhaW5lciA9IGRvYy0+Y3JlYXRlRWxlbWVudChkaXZUYWcsIEFTU0VS
VF9OT19FWENFUFRJT04pOworICAgIHNoYWRvd0NvbnRhaW5lci0+c2V0UHNldWRvKEF0b21pY1N0
cmluZygiLXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKworICAgIFJlZlB0cjxFbGVtZW50PiBjb250YWluZXIg
PSBkb2MtPmNyZWF0ZUVsZW1lbnQoZGl2VGFnLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBj
b250YWluZXItPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZygic25hcHNob3Qt
Y29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworCisgICAg
UmVmUHRyPEVsZW1lbnQ+IG92ZXJsYXkgPSBkb2MtPmNyZWF0ZUVsZW1lbnQoZGl2VGFnLCBBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKKyAgICBvdmVybGF5LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBB
dG9taWNTdHJpbmcoInNuYXBzaG90LW92ZXJsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZChvdmVybGF5LCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKKworICAgIFJlZlB0cjxFbGVtZW50PiBsYWJlbCA9IGRvYy0+Y3JlYXRl
RWxlbWVudChkaXZUYWcsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIGxhYmVsLT5zZXRBdHRy
aWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoInNuYXBzaG90LWxhYmVsIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworCisgICAgU3RyaW5nIHRpdGxlVGV4dCA9IHNu
YXBzaG90dGVkUGx1Z0luTGFiZWxUaXRsZSgpOworICAgIFN0cmluZyBzdWJ0aXRsZVRleHQgPSBz
bmFwc2hvdHRlZFBsdWdJbkxhYmVsU3VidGl0bGUoKTsKKyAgICBpZiAoZG9jdW1lbnQoKS0+cGFn
ZSgpKSB7CisgICAgICAgIFN0cmluZyBjbGllbnRUaXRsZVRleHQgPSBkb2N1bWVudCgpLT5wYWdl
KCktPmNocm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFRpdGxlKCk7CisgICAgICAg
IGlmICghY2xpZW50VGl0bGVUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHRpdGxlVGV4dCA9
IGNsaWVudFRpdGxlVGV4dDsKKyAgICAgICAgU3RyaW5nIGNsaWVudFN1YnRpdGxlVGV4dCA9IGRv
Y3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbHVnSW5TdGFydExhYmVsU3Vi
dGl0bGUoKTsKKyAgICAgICAgaWYgKCFjbGllbnRTdWJ0aXRsZVRleHQuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgc3VidGl0bGVUZXh0ID0gY2xpZW50U3VidGl0bGVUZXh0OworICAgIH0KKworICAg
IFJlZlB0cjxFbGVtZW50PiB0aXRsZSA9IGRvYy0+Y3JlYXRlRWxlbWVudChkaXZUYWcsIEFTU0VS
VF9OT19FWENFUFRJT04pOworICAgIHRpdGxlLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9t
aWNTdHJpbmcoInNuYXBzaG90LXRpdGxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIHRpdGxlLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKHRpdGxl
VGV4dCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIGxhYmVsLT5hcHBlbmRDaGlsZCh0aXRs
ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisKKyAgICBSZWZQdHI8RWxlbWVudD4gc3ViVGl0bGUg
PSBkb2MtPmNyZWF0ZUVsZW1lbnQoZGl2VGFnLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBz
dWJUaXRsZS0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJzbmFwc2hvdC1z
dWJ0aXRsZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdWJU
aXRsZS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZShzdWJ0aXRsZVRleHQpLCBBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKKyAgICBsYWJlbC0+YXBwZW5kQ2hpbGQoc3ViVGl0bGUsIEFTU0VS
VF9OT19FWENFUFRJT04pOworCisgICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZChsYWJlbCwgQVNT
RVJUX05PX0VYQ0VQVElPTik7CisKKyAgICBzaGFkb3dDb250YWluZXItPmFwcGVuZENoaWxkKGNv
bnRhaW5lciwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgcm9vdC0+YXBwZW5kQ2hpbGQoc2hh
ZG93Q29udGFpbmVyLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKworICAgIHJvb3QtPnNldE5lZWRz
U3R5bGVSZWNhbGMoKTsKKyAgICByb290LT5zZXRDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAg
ICBzZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKKyAgICByZWNhbGNT
dHlsZShGb3JjZSk7Cit9CisKK2Jvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y2hpbGRTaG91
bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY2hpbGRDb250ZXh0
KSBjb25zdAoreworICAgIHJldHVybiAoY2hpbGRDb250ZXh0LmlzT25VcHBlckVuY2Fwc3VsYXRp
b25Cb3VuZGFyeSgpICYmIEhUTUxFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNo
aWxkQ29udGV4dCkpOworfQorCit2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN3YXBSZW5k
ZXJlclRpbWVyRmlyZWQoVGltZXI8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4qKQoreworICAgIEFT
U0VSVChkaXNwbGF5U3RhdGUoKSA9PSBEaXNwbGF5aW5nU25hcHNob3QpOworICAgIGlmIChkaXNw
bGF5U3RhdGUoKSA9PSBEaXNwbGF5aW5nU25hcHNob3QgJiYgIXVzZXJBZ2VudFNoYWRvd1Jvb3Qo
KSkgeworICAgICAgICBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgICAgIGRldGFj
aCgpOworICAgICAgICBhdHRhY2goKTsKKyAgICB9CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6dXNlckRpZENsaWNrU25hcHNob3QoUGFzc1JlZlB0cjxNb3VzZUV2ZW50PiBldmVu
dCkKQEAgLTI2OSw2ICszNTcsOSBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJE
aWRDbGlja1NuYXBzaG90KFBhc3NSZWZQdHI8TW91c2VFdmVudD4gZXZlbnQpCiAgICAgbV9wZW5k
aW5nQ2xpY2tFdmVudEZyb21TbmFwc2hvdCA9IGV2ZW50OwogICAgIGlmIChkb2N1bWVudCgpLT5w
YWdlKCkpCiAgICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+cGx1Z0luQ2xpZW50KCktPmFkZEF1
dG9TdGFydE9yaWdpbihkb2N1bWVudCgpLT5wYWdlKCktPm1haW5GcmFtZSgpLT5kb2N1bWVudCgp
LT5iYXNlVVJMKCkuaG9zdCgpLCBtX3BsdWdJbk9yaWdpbkhhc2gpOworCisgICAgZGV0YWNoKCk7
CisgICAgYXR0YWNoKCk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlzcGF0
Y2hQZW5kaW5nTW91c2VDbGljaygpCkBAIC0zMTgsMTYgKzQwOSwxMiBAQCB2b2lkIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBLVVJM
JiB1cmwpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIXJlbmRlcmVyKCktPmlz
U25hcHNob3R0ZWRQbHVnSW4oKSkgewotICAgICAgICBMT0coUGx1Z2lucywgIiVwIFJlbmRlcmVy
IGlzIG5vdCBzbmFwc2hvdHRlZCBwbHVnaW4sIHNldCB0byBwbGF5IiwgdGhpcyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CiAgICAgaWYgKFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSgpKSB7CiAgICAgICAgIExPRyhQbHVnaW5zLCAiJXAgU2NyaXB0IGlzIHByb2Nlc3Np
bmcgdXNlciBnZXN0dXJlLCBzZXQgdG8gcGxheSIsIHRoaXMpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgTGF5b3V0UmVjdCByZWN0ID0gdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihy
ZW5kZXJlcigpKS0+Y29udGVudEJveFJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IHJlY3QgPSB0b1Jl
bmRlckVtYmVkZGVkT2JqZWN0KHJlbmRlcmVyKCkpLT5jb250ZW50Qm94UmVjdCgpOwogICAgIGlu
dCB3aWR0aCA9IHJlY3Qud2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0ID0gcmVjdC5oZWlnaHQoKTsK
ICAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQgfHwgKHdpZHRoIDw9IGF1dG9TdGFydFBsdWdJblNp
emVUaHJlc2hvbGRXaWR0aCAmJiBoZWlnaHQgPD0gYXV0b1N0YXJ0UGx1Z0luU2l6ZVRocmVzaG9s
ZEhlaWdodCkpIHsKQEAgLTM1MCwxMCArNDM3LDEzIEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IEtVUkwmIHVybCkKICAg
ICB9CiAKICAgICBpZiAoc2hvdWxkUGx1Z0luU2hvd0xhYmVsQXV0b21hdGljYWxseShkb2N1bWVu
dCgpLT5wYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpLCB0aGlzKSkK
LSAgICAgICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihyZW5kZXJlcigpKS0+c2V0U2hvdWxk
U2hvd0xhYmVsQXV0b21hdGljYWxseSgpOworICAgICAgICBzZXRTaG91bGRTaG93U25hcHNob3RM
YWJlbEF1dG9tYXRpY2FsbHkoKTsKIAogICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBoYXNo
ICV4IGlzICVkeCVkLCBvcmlnaW4gaXMgbm90IGF1dG8tc3RhcnQsIHNldCB0byB3YWl0IGZvciBz
bmFwc2hvdCIsIHRoaXMsIG1fcGx1Z0luT3JpZ2luSGFzaCwgd2lkdGgsIGhlaWdodCk7Ci0gICAg
c2V0RGlzcGxheVN0YXRlKFdhaXRpbmdGb3JTbmFwc2hvdCk7CisgICAgLy8gV2UgbWF5IGhhdmUg
Z290IHRvIHRoaXMgcG9pbnQgYnkgcmVzdGFydGluZyBhIHNuYXBzaG90dGVkIHBsdWctaW4sIGlu
IHdoaWNoIGNhc2Ugd2UgZG9uJ3Qgd2FudCB0bworICAgIC8vIHJlc2V0IHRoZSBkaXNwbGF5IHN0
YXRlLgorICAgIGlmIChkaXNwbGF5U3RhdGUoKSAhPSBQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNs
aWNrKQorICAgICAgICBzZXREaXNwbGF5U3RhdGUoV2FpdGluZ0ZvclNuYXBzaG90KTsKIH0KIAog
dm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJ
bihjb25zdCBXaWRnZXQqIHdpZGdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmgKaW5kZXggMDQ3MzFiNWU0ZWU2M2E1NGI4MTk5ZWJmMjNlM2Q2NjI2ZDBi
NjRjYi4uZDJiODFiZDU2NjkwOGY2Mjc0YmU5ZjBhNWQyYjAyZDBiMzc2MTk1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKQEAgLTI1LDExICsyNSwx
MyBAQAogCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEhUTUxJbWFnZUxvYWRlcjsKIGNsYXNzIEZyYW1lTG9hZGVyOworY2xhc3MgSW1hZ2U7CiBjbGFz
cyBNb3VzZUV2ZW50OwogY2xhc3MgV2lkZ2V0OwogCkBAIC0zNyw3ICszOSw3IEBAIGVudW0gUGx1
Z2luQ3JlYXRpb25PcHRpb24gewogICAgIENyZWF0ZUFueVdpZGdldFR5cGUsCiAgICAgQ3JlYXRl
T25seU5vbk5ldHNjYXBlUGx1Z2lucywKIH07Ci0gICAgCisKIGVudW0gUHJlZmVyUGx1Z0luc0Zv
ckltYWdlc09wdGlvbiB7CiAgICAgU2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcywKICAgICBT
aG91bGROb3RQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzCkBAIC05MiwyMiArOTQsMzIgQEAgcHJvdGVj
dGVkOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVjYWxj
U3R5bGUoU3R5bGVDaGFuZ2UpOwotICAgIAorCisgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxk
Q3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopIE9WRVJS
SURFOworCiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogCiAgICAg
dm9pZCB1cGRhdGVXaWRnZXRJZk5lY2Vzc2FyeSgpOwogICAgIHZpcnR1YWwgYm9vbCB1c2VGYWxs
YmFja0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAorCiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVNuYXBzaG90KFBhc3NSZWZQdHI8SW1hZ2U+KSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hQZW5kaW5nTW91c2VDbGljaygpIE9WRVJSSURFOwogICAgIHZv
aWQgc2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRmlyZWQoRGVmZXJyYWJsZU9uZVNob3RUaW1lcjxI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50PiopOwogCisgICAgdm9pZCBzd2FwUmVuZGVyZXJUaW1lckZp
cmVkKFRpbWVyPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+Kik7CisKKyAgICB2b2lkIHNldFNob3Vs
ZFNob3dTbmFwc2hvdExhYmVsQXV0b21hdGljYWxseSgpIHsgbV9zaG91bGRTaG93U25hcHNob3RM
YWJlbEF1dG9tYXRpY2FsbHkgPSB0cnVlOyB9CisKICAgICBib29sIG1fbmVlZHNXaWRnZXRVcGRh
dGU7CiAgICAgYm9vbCBtX3Nob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXM7CiAgICAgYm9vbCBt
X25lZWRzRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzOworICAgIGJvb2wgbV9zaG91bGRTaG93
U25hcHNob3RMYWJlbEF1dG9tYXRpY2FsbHk7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX2N1
c3RvbVN0eWxlRm9yUGFnZUNhY2hlOwogICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBtX3BlbmRpbmdD
bGlja0V2ZW50RnJvbVNuYXBzaG90OwogICAgIERlZmVycmFibGVPbmVTaG90VGltZXI8SFRNTFBs
dWdJbkltYWdlRWxlbWVudD4gbV9zaW11bGF0ZWRNb3VzZUNsaWNrVGltZXI7CisgICAgVGltZXI8
SFRNTFBsdWdJbkltYWdlRWxlbWVudD4gbV9zd2FwUmVuZGVyZXJUaW1lcjsKKyAgICBSZWZQdHI8
SW1hZ2U+IG1fc25hcHNob3RJbWFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4u
Y3BwCmluZGV4IGE2MzUxYzlkNDc2YjY4ZWIxMGI4MTAxODQyY2M5ODY4N2MyZDU4ZTkuLmNjMzA1
NDI2N2YwODA1NGM2MmQ2N2M0ZTAyMTU2ZmRlZmQ0YjM4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtNDAsMTQg
KzQwLDEzIEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2lu
Y2x1ZGUgIlBhdGguaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU291cmNl
R3JhcGhpYy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBpbnQgYXV0
b1N0YXJ0UGx1Z0luU2l6ZVRocmVzaG9sZFdpZHRoID0gMTsKIHN0YXRpYyBjb25zdCBpbnQgYXV0
b1N0YXJ0UGx1Z0luU2l6ZVRocmVzaG9sZEhlaWdodCA9IDE7Ci1zdGF0aWMgY29uc3QgaW50IHN0
YXJ0TGFiZWxQYWRkaW5nID0gMTA7IC8vIExhYmVsIHNob3VsZCBiZSAxMHB4IGZyb20gZWRnZSBv
ZiBib3guCi1zdGF0aWMgY29uc3QgaW50IHN0YXJ0TGFiZWxJbnNldCA9IDIwOyAvLyBCdXQgdGhl
IGxhYmVsIGlzIGluc2V0IGZyb20gaXRzIGJveCBhbHNvLiBGSVhNRTogVGhpcyB3aWxsIGJlIHJl
bW92ZWQgd2hlbiB3ZSBnbyB0byBhIFNoYWRvd0RPTSBhcHByb2FjaC4KIHN0YXRpYyBjb25zdCBk
b3VibGUgc2hvd0xhYmVsQWZ0ZXJNb3VzZU92ZXJEZWxheSA9IDE7CiBzdGF0aWMgY29uc3QgZG91
YmxlIHNob3dMYWJlbEF1dG9tYXRpY2FsbHlEZWxheSA9IDM7CiBzdGF0aWMgY29uc3QgaW50IHNu
YXBzaG90TGFiZWxCbHVyUmFkaXVzID0gNTsKQEAgLTEwMCw3ICs5OSw3IEBAIHZvaWQgUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW5CbHVyRmlsdGVyOjphcHBseSgpCiAjZW5kaWYKIAogUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQqIGVsZW1lbnQpCi0gICAgOiBSZW5kZXJFbWJlZGRlZE9iamVjdChlbGVtZW50KQorICAg
IDogUmVuZGVyQmxvY2soZWxlbWVudCkKICAgICAsIG1fc25hcHNob3RSZXNvdXJjZShSZW5kZXJJ
bWFnZVJlc291cmNlOjpjcmVhdGUoKSkKICAgICAsIG1fc2hvdWxkU2hvd0xhYmVsKGZhbHNlKQog
ICAgICwgbV9zaG91bGRTaG93TGFiZWxBdXRvbWF0aWNhbGx5KGZhbHNlKQpAQCAtMTQ1LDI4ICsx
NDQsMzggQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6dXBkYXRlU25hcHNob3QoUGFz
c1JlZlB0cjxJbWFnZT4gaW1hZ2UpCiAKIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQp
CiB7Ci0gICAgaWYgKHBsdWdJbkltYWdlRWxlbWVudCgpLT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQ
bHVnSW5FbGVtZW50OjpQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKSB7Ci0gICAgICAgIFJl
bmRlclJlcGxhY2VkOjpwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKLSAgICAgICAgcmV0
dXJuOworICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3Vu
ZCAmJiBwbHVnSW5JbWFnZUVsZW1lbnQoKS0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxl
bWVudDo6UGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykgeworICAgICAgICBpZiAobV9zaG91
bGRTaG93TGFiZWwpCisgICAgICAgICAgICBwYWludFNuYXBzaG90V2l0aExhYmVsKHBhaW50SW5m
bywgcGFpbnRPZmZzZXQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwYWludFNuYXBzaG90
KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAgIH0KIAotICAgIFJlbmRlckVtYmVkZGVkT2Jq
ZWN0OjpwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKKyAgICBSZW5kZXJCbG9jazo6cGFp
bnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiB9CiAKLXZvaWQgUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW46OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCkKK3ZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmxheW91dCgp
CiB7Ci0gICAgaWYgKHBsdWdJbkltYWdlRWxlbWVudCgpLT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQ
bHVnSW5FbGVtZW50OjpQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKSB7Ci0gICAgICAgIGlm
IChtX3Nob3VsZFNob3dMYWJlbCkKLSAgICAgICAgICAgIHBhaW50UmVwbGFjZWRTbmFwc2hvdFdp
dGhMYWJlbChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgcGFpbnRSZXBsYWNlZFNuYXBzaG90KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOworICAgIFN0
YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQgbGF5b3V0Q2hlY2tQb2ludDsKKyAgICBMYXlvdXRT
aXplIG9sZFNpemUgPSBjb250ZW50Qm94UmVjdCgpLnNpemUoKTsKKworICAgIFJlbmRlckJsb2Nr
OjpsYXlvdXQoKTsKKworICAgIExheW91dFNpemUgbmV3U2l6ZSA9IGNvbnRlbnRCb3hSZWN0KCku
c2l6ZSgpOworICAgIGlmIChuZXdTaXplID09IG9sZFNpemUpCiAgICAgICAgIHJldHVybjsKLSAg
ICB9CiAKLSAgICBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZChwYWludEluZm8s
IHBhaW50T2Zmc2V0KTsKKyAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIodmll
dygpLCB0aGlzLCBsb2NhdGlvbk9mZnNldCgpLCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNSZWZsZWN0
aW9uKCkgfHwgc3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSk7CisKKyAgICBm
aXJzdENoaWxkKCktPnN0eWxlKCktPnNldEhlaWdodChMZW5ndGgobmV3U2l6ZS5oZWlnaHQoKSwg
Rml4ZWQpKTsKKyAgICBmaXJzdENoaWxkKCktPnN0eWxlKCktPnNldFdpZHRoKExlbmd0aChuZXdT
aXplLndpZHRoKCksIEZpeGVkKSk7CisgICAgZmlyc3RDaGlsZCgpLT5zZXROZWVkc0xheW91dCh0
cnVlLCBNYXJrT25seVRoaXMpOworICAgIGZpcnN0Q2hpbGQoKS0+bGF5b3V0KCk7CisKKyAgICBz
dGF0ZVB1c2hlci5wb3AoKTsKIH0KIAotdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFp
bnRTbmFwc2hvdChJbWFnZSogaW1hZ2UsIFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQpCit2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWlu
dFNuYXBzaG90SW1hZ2UoSW1hZ2UqIGltYWdlLCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIExheW91dFVuaXQgY1dpZHRoID0gY29u
dGVudFdpZHRoKCk7CiAgICAgTGF5b3V0VW5pdCBjSGVpZ2h0ID0gY29udGVudEhlaWdodCgpOwpA
QCAtMTgwLDcgKzE4OSw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25h
cHNob3QoSW1hZ2UqIGltYWdlLCBQYWludEluZm8mIHBhaW50SW5mbywKICNlbmRpZgogCiAgICAg
TGF5b3V0U2l6ZSBjb250ZW50U2l6ZShjV2lkdGgsIGNIZWlnaHQpOwotICAgIExheW91dFBvaW50
IGNvbnRlbnRMb2NhdGlvbiA9IHBhaW50T2Zmc2V0OworICAgIExheW91dFBvaW50IGNvbnRlbnRM
b2NhdGlvbiA9IGxvY2F0aW9uKCkgKyBwYWludE9mZnNldDsKICAgICBjb250ZW50TG9jYXRpb24u
bW92ZShib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdU
b3AoKSk7CiAKICAgICBMYXlvdXRSZWN0IHJlY3QoY29udGVudExvY2F0aW9uLCBjb250ZW50U2l6
ZSk7CkBAIC0xOTIsMzEgKzIwMSwxMyBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpw
YWludFNuYXBzaG90KEltYWdlKiBpbWFnZSwgUGFpbnRJbmZvJiBwYWludEluZm8sCiAgICAgY29u
dGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0
LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCB1
c2VMb3dRdWFsaXR5U2NhbGluZyk7CiB9CiAKLXZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46
OnBhaW50UmVwbGFjZWRTbmFwc2hvdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0KQordm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRT
bmFwc2hvdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogewogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBtX3NuYXBzaG90UmVzb3VyY2UtPmlt
YWdlKCk7CiAgICAgaWYgKCFpbWFnZSB8fCBpbWFnZS0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHBhaW50U25hcHNob3QoaW1hZ2UuZ2V0KCksIHBhaW50SW5mbywgcGFpbnRPZmZz
ZXQpOwotfQotCi1JbWFnZSogUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnN0YXJ0TGFiZWxJbWFn
ZShMYWJlbFNpemUgc2l6ZSkgY29uc3QKLXsKLSAgICBzdGF0aWMgSW1hZ2UqIGxhYmVsSW1hZ2Vz
WzJdID0geyAwLCAwIH07Ci0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWRJbWFnZXNbMl0gPSB7
IGZhbHNlLCBmYWxzZSB9OwotCi0gICAgaW50IGFycmF5SW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+
KHNpemUpOwotICAgIGlmIChsYWJlbEltYWdlc1thcnJheUluZGV4XSkKLSAgICAgICAgcmV0dXJu
IGxhYmVsSW1hZ2VzW2FycmF5SW5kZXhdOwotICAgIGlmIChpbml0aWFsaXplZEltYWdlc1thcnJh
eUluZGV4XSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgp
KSB7Ci0gICAgICAgIGxhYmVsSW1hZ2VzW2FycmF5SW5kZXhdID0gZG9jdW1lbnQoKS0+cGFnZSgp
LT5jaHJvbWUoKS0+Y2xpZW50KCktPnBsdWdJblN0YXJ0TGFiZWxJbWFnZShzaXplKS5sZWFrUmVm
KCk7Ci0gICAgICAgIGluaXRpYWxpemVkSW1hZ2VzW2FycmF5SW5kZXhdID0gdHJ1ZTsKLSAgICB9
Ci0gICAgcmV0dXJuIGxhYmVsSW1hZ2VzW2FycmF5SW5kZXhdOworICAgIHBhaW50U25hcHNob3RJ
bWFnZShpbWFnZS5nZXQoKSwgcGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiB9CiAKICNpZiBFTkFC
TEUoRklMVEVSUykKQEAgLTIzOCw3ICsyMjksNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZT4g
c25hcHNob3R0ZWRQbHVnaW5JbWFnZUZvckxhYmVsRGlzcGxheShQYXNzUmVmUHRyPEltYWdlPgog
fQogI2VuZGlmCiAKLXZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50UmVwbGFjZWRT
bmFwc2hvdFdpdGhMYWJlbChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQordm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hv
dFdpdGhMYWJlbChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0KQogewogICAgIGlmIChjb250ZW50Qm94UmVjdCgpLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjQ3LDQzICsyMzgsMjYgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bjo6cGFpbnRSZXBsYWNlZFNuYXBzaG90V2l0aExhYmVsKFBhaW50SW5mbyYgcGFpbnRJbmYKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9zaG93ZWRMYWJlbE9uY2UgPSB0cnVlOwotICAgIExheW91
dFJlY3QgcmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7Ci0gICAgTGF5b3V0UmVjdCBsYWJlbFJlY3Qg
PSB0cnlUb0ZpdFN0YXJ0TGFiZWwoTGFiZWxTaXplTGFyZ2UsIHJlY3QpOwotICAgIExhYmVsU2l6
ZSBzaXplID0gTm9MYWJlbDsKLSAgICBpZiAoIWxhYmVsUmVjdC5pc0VtcHR5KCkpCi0gICAgICAg
IHNpemUgPSBMYWJlbFNpemVMYXJnZTsKLSAgICBlbHNlIHsKLSAgICAgICAgbGFiZWxSZWN0ID0g
dHJ5VG9GaXRTdGFydExhYmVsKExhYmVsU2l6ZVNtYWxsLCByZWN0KTsKLSAgICAgICAgaWYgKCFs
YWJlbFJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgc2l6ZSA9IExhYmVsU2l6ZVNtYWxsOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSW1hZ2UqIGxh
YmVsSW1hZ2UgPSBzdGFydExhYmVsSW1hZ2Uoc2l6ZSk7Ci0gICAgaWYgKCFsYWJlbEltYWdlKQot
ICAgICAgICByZXR1cm47CisgICAgTGF5b3V0UmVjdCBsYWJlbFJlY3Q7CiAKICAgICBSZWZQdHI8
SW1hZ2U+IHNuYXBzaG90SW1hZ2UgPSBtX3NuYXBzaG90UmVzb3VyY2UtPmltYWdlKCk7CiAgICAg
aWYgKCFzbmFwc2hvdEltYWdlIHx8IHNuYXBzaG90SW1hZ2UtPmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm47CiAKICNpZiBFTkFCTEUoRklMVEVSUykKLSAgICBSZWZQdHI8SW1hZ2U+IGJsdXJyZWRT
bmFwc2hvdEltYWdlID0gbV9zbmFwc2hvdFJlc291cmNlRm9yTGFiZWwtPmltYWdlKCk7Ci0gICAg
aWYgKCFibHVycmVkU25hcHNob3RJbWFnZSB8fCBibHVycmVkU25hcHNob3RJbWFnZS0+aXNOdWxs
KCkpIHsKLSAgICAgICAgYmx1cnJlZFNuYXBzaG90SW1hZ2UgPSBzbmFwc2hvdHRlZFBsdWdpbklt
YWdlRm9yTGFiZWxEaXNwbGF5KHNuYXBzaG90SW1hZ2UsIGxhYmVsUmVjdCk7Ci0gICAgICAgIG1f
c25hcHNob3RSZXNvdXJjZUZvckxhYmVsLT5zZXRDYWNoZWRJbWFnZShuZXcgQ2FjaGVkSW1hZ2Uo
Ymx1cnJlZFNuYXBzaG90SW1hZ2UuZ2V0KCkpKTsKKyAgICAvLyBGSVhNRTogVGVtcG9yYXJpbHkg
ZGlzYWJsaW5nIHRoZSBibHVyIGJlaGluZCB0aGUgbGFiZWwuCisgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODM2OAorICAgIGlmICghbGFiZWxSZWN0Lmlz
RW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8SW1hZ2U+IGJsdXJyZWRTbmFwc2hvdEltYWdlID0g
bV9zbmFwc2hvdFJlc291cmNlRm9yTGFiZWwtPmltYWdlKCk7CisgICAgICAgIGlmICghYmx1cnJl
ZFNuYXBzaG90SW1hZ2UgfHwgYmx1cnJlZFNuYXBzaG90SW1hZ2UtPmlzTnVsbCgpKSB7CisgICAg
ICAgICAgICBibHVycmVkU25hcHNob3RJbWFnZSA9IHNuYXBzaG90dGVkUGx1Z2luSW1hZ2VGb3JM
YWJlbERpc3BsYXkoc25hcHNob3RJbWFnZSwgbGFiZWxSZWN0KTsKKyAgICAgICAgICAgIG1fc25h
cHNob3RSZXNvdXJjZUZvckxhYmVsLT5zZXRDYWNoZWRJbWFnZShuZXcgQ2FjaGVkSW1hZ2UoYmx1
cnJlZFNuYXBzaG90SW1hZ2UuZ2V0KCkpKTsKKyAgICAgICAgfQorICAgICAgICBzbmFwc2hvdElt
YWdlID0gYmx1cnJlZFNuYXBzaG90SW1hZ2U7CiAgICAgfQotICAgIHNuYXBzaG90SW1hZ2UgPSBi
bHVycmVkU25hcHNob3RJbWFnZTsKICNlbmRpZgogCi0gICAgcGFpbnRTbmFwc2hvdChzbmFwc2hv
dEltYWdlLmdldCgpLCBwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKLQotICAgIC8vIFJlbWVtYmVy
IHRoYXQgdGhlIGxhYmVsUmVjdCBpbmNsdWRlcyB0aGUgbGFiZWwgaW5zZXQsIHNvIHdlIG5lZWQg
dG8gYWRqdXN0IGZvciBpdC4KLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGxhYmVs
SW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCArIGxhYmVsUmVjdC5sb2Nh
dGlvbigpIC0gSW50U2l6ZShzdGFydExhYmVsSW5zZXQsIHN0YXJ0TGFiZWxJbnNldCkpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3VuZGVkSW50U2l6ZShsYWJl
bFJlY3Quc2l6ZSgpICsgSW50U2l6ZSgyICogc3RhcnRMYWJlbEluc2V0LCAyICogc3RhcnRMYWJl
bEluc2V0KSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxJbWFnZS0+
cmVjdCgpKTsKKyAgICBwYWludFNuYXBzaG90SW1hZ2Uoc25hcHNob3RJbWFnZS5nZXQoKSwgcGFp
bnRJbmZvLCBwYWludE9mZnNldCk7CiB9CiAKIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46
OnJlcGFpbnRMYWJlbCgpCkBAIC0zMDksNyArMjgzLDcgQEAgQ3Vyc29yRGlyZWN0aXZlIFJlbmRl
clNuYXBzaG90dGVkUGx1Z0luOjpnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBD
dXIKICAgICAgICAgb3ZlcnJpZGVDdXJzb3IgPSBoYW5kQ3Vyc29yKCk7CiAgICAgICAgIHJldHVy
biBTZXRDdXJzb3I7CiAgICAgfQotICAgIHJldHVybiBSZW5kZXJFbWJlZGRlZE9iamVjdDo6Z2V0
Q3Vyc29yKHBvaW50LCBvdmVycmlkZUN1cnNvcik7CisgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpn
ZXRDdXJzb3IocG9pbnQsIG92ZXJyaWRlQ3Vyc29yKTsKIH0KIAogdm9pZCBSZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQpAQCAtMzI1LDEyICsyOTksNiBA
QCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudChFdmVudCogZXZlbnQp
CiAKICAgICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50KCktPnNldERpc3BsYXlTdGF0ZShIVE1MUGx1
Z0luRWxlbWVudDo6UGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGljayk7CiAgICAgICAgIHBsdWdJ
bkltYWdlRWxlbWVudCgpLT51c2VyRGlkQ2xpY2tTbmFwc2hvdChtb3VzZUV2ZW50KTsKLQotICAg
ICAgICBpZiAod2lkZ2V0KCkpIHsKLSAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1
bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50
KCktPnJlY3JlYXRlUGx1Z2luKHdpZGdldCgpKTsKLSAgICAgICAgICAgIHJlcGFpbnQoKTsKLSAg
ICAgICAgfQogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9IGVsc2Ug
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KSB7CiAgICAg
ICAgIGlmIChtb3VzZUV2ZW50LT5idXR0b24oKSAhPSBMZWZ0QnV0dG9uKQpAQCAtMzU4LDI3ICsz
MjYsNiBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudChFdmVudCog
ZXZlbnQpCiAgICAgfQogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjp0
cnlUb0ZpdFN0YXJ0TGFiZWwoTGFiZWxTaXplIHNpemUsIGNvbnN0IExheW91dFJlY3QmIGNvbnRl
bnRCb3gpIGNvbnN0Ci17Ci0gICAgSW1hZ2UqIGxhYmVsSW1hZ2UgPSBzdGFydExhYmVsSW1hZ2Uo
c2l6ZSk7Ci0gICAgaWYgKCFsYWJlbEltYWdlKQotICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgp
OwotCi0gICAgLy8gQXNzdW1lIHRoYXQgdGhlIGxhYmVsSW1hZ2UgaGFzIGJlZW4gcHJvdmlkZWQg
dG8gbWF0Y2ggb3VyIGRldmljZSBzY2FsZS4KLSAgICBmbG9hdCBzY2FsZUZhY3RvciA9IDE7Ci0g
ICAgaWYgKGRvY3VtZW50KCktPnBhZ2UoKSkKLSAgICAgICAgc2NhbGVGYWN0b3IgPSBkb2N1bWVu
dCgpLT5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgSW50U2l6ZSBsYWJlbEltYWdl
U2l6ZSA9IGxhYmVsSW1hZ2UtPnNpemUoKTsKLSAgICBsYWJlbEltYWdlU2l6ZS5zY2FsZSgxIC8g
KHNjYWxlRmFjdG9yID8gc2NhbGVGYWN0b3IgOiAxKSk7Ci0KLSAgICBMYXlvdXRTaXplIGxhYmVs
U2l6ZSA9IGxhYmVsSW1hZ2VTaXplIC0gTGF5b3V0U2l6ZSgyICogc3RhcnRMYWJlbEluc2V0LCAy
ICogc3RhcnRMYWJlbEluc2V0KTsKLSAgICBMYXlvdXRSZWN0IGNhbmRpZGF0ZVJlY3QoY29udGVu
dEJveC5tYXhYTWluWUNvcm5lcigpICsgTGF5b3V0U2l6ZSgtc3RhcnRMYWJlbFBhZGRpbmcsIHN0
YXJ0TGFiZWxQYWRkaW5nKSArIExheW91dFNpemUoLWxhYmVsU2l6ZS53aWR0aCgpLCAwKSwgbGFi
ZWxTaXplKTsKLSAgICAvLyBUaGUgbWluaW11bSBhbGxvd2VkIGNvbnRlbnQgYm94IHNpemUgaXMg
dGhlIGxhYmVsIGltYWdlIHBsYWNlZCBpbiB0aGUgY2VudGVyIG9mIHRoZSBib3gsIHN1cnJvdW5k
ZWQgYnkgc3RhcnRMYWJlbFBhZGRpbmcuCi0gICAgaWYgKGNhbmRpZGF0ZVJlY3QueCgpIDwgc3Rh
cnRMYWJlbFBhZGRpbmcgfHwgY2FuZGlkYXRlUmVjdC5tYXhZKCkgPiBjb250ZW50Qm94LmhlaWdo
dCgpIC0gc3RhcnRMYWJlbFBhZGRpbmcpCi0gICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7Ci0g
ICAgcmV0dXJuIGNhbmRpZGF0ZVJlY3Q7Ci19Ci0KIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW46OnJlc2V0RGVsYXlUaW1lcihTaG93UmVhc29uIHJlYXNvbikKIHsKICAgICBtX3Nob3dSZWFz
b24gPSByZWFzb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbi5oCmluZGV4IGI5ZGU2MmNiYWMyYWFjZmE1YTE0YzY5YmQ0MmE2OTJmZmU2
NTU3NzQuLmU2ODYzMWRjYzg5NWQ4MjM0ZGI2NGI1YTkzMDI5ZGExMmY2NGVhYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCkBA
IC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luX2gKICNkZWZp
bmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW5faAogCi0jaW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRP
YmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogCiAjaW5jbHVkZSAiUmVuZGVySW1h
Z2VSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC0zNSwxNyArMzUsMTEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OwogCi1jbGFz
cyBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiA6IHB1YmxpYyBSZW5kZXJFbWJlZGRlZE9iamVjdCB7
CitjbGFzcyBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbklt
YWdlRWxlbWVudCopOwogICAgIHZpcnR1YWwgflJlbmRlclNuYXBzaG90dGVkUGx1Z0luKCk7CiAK
LSAgICBlbnVtIExhYmVsU2l6ZSB7Ci0gICAgICAgIExhYmVsU2l6ZVNtYWxsLAotICAgICAgICBM
YWJlbFNpemVMYXJnZSwKLSAgICAgICAgTm9MYWJlbCwKLSAgICB9OwotCiAgICAgdm9pZCB1cGRh
dGVTbmFwc2hvdChQYXNzUmVmUHRyPEltYWdlPik7CiAKICAgICB2b2lkIGhhbmRsZUV2ZW50KEV2
ZW50Kik7CkBAIC02MCwxNSArNTQsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEN1cnNvckRp
cmVjdGl2ZSBnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBDdXJzb3ImKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTbmFwc2hvdHRlZFBsdWdJbigpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZXBs
YWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOwogCi0gICAgdm9p
ZCBwYWludFJlcGxhY2VkU25hcHNob3QoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsK
LSAgICB2b2lkIHBhaW50UmVwbGFjZWRTbmFwc2hvdFdpdGhMYWJlbChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpOwotICAgIHZvaWQgcGFpbnRTbmFwc2hvdChJbWFnZSosIFBhaW50SW5m
byYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdm9pZCBwYWludFNuYXBzaG90KFBhaW50SW5m
byYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdm9pZCBwYWludFNuYXBzaG90V2l0aExhYmVs
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdm9pZCBwYWludFNuYXBzaG90
SW1hZ2UoSW1hZ2UqLCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZvaWQg
cmVwYWludExhYmVsKCk7CiAKLSAgICBMYXlvdXRSZWN0IHRyeVRvRml0U3RhcnRMYWJlbChMYWJl
bFNpemUsIGNvbnN0IExheW91dFJlY3QmIGNvbnRlbnRCb3gpIGNvbnN0OwotICAgIEltYWdlKiBz
dGFydExhYmVsSW1hZ2UoTGFiZWxTaXplKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0
KCkgT1ZFUlJJREU7CiAKICAgICBlbnVtIFNob3dSZWFzb24gewogICAgICAgICBVc2VyTW91c2Vk
T3ZlciwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185810</attachid>
            <date>2013-01-31 10:39:50 -0800</date>
            <delta_ts>2013-01-31 11:24:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108284-20130201053632.patch</filename>
            <type>text/plain</type>
            <size>29528</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ3Nzc2Y2U5YWRmOTky
YTUzYzgxZDY1OTIyZjcyOWFkYTY5NTNlYi4uMzc4MTBiMzFjZGFiOGNlNDE2MjJhY2ZjZDhiMGU5
OGJiNjU1MDMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU2IEBACiAyMDEzLTAxLTMwICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAorICAgICAgICBTbmFwc2hvdHRlZCBwbHVnLWlu
IHNob3VsZCB1c2Ugc2hhZG93IHJvb3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwODI4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEEgc25hcHNob3R0ZWQgcGx1Z2luIG5lZWRzIHRvIGluZGljYXRlIHRv
IHRoZSB1c2VyIHRoYXQgaXQgY2FuIGJlIGNsaWNrZWQKKyAgICAgICAgdG8gYmUgcmVzdGFydGVk
LiBQcmV2aW91c2x5IHRoaXMgd2FzIGRvbmUgd2l0aCBhbiBpbWFnZSB0aGF0IGhhZCBlbWJlZGRl
ZAorICAgICAgICB0ZXh0LiBJbnN0ZWFkLCB3ZSBub3cgdXNlIGFuIGludGVybmFsIHNoYWRvdyBy
b290IHRvIGVtYmVkIHNvbWUgbWFya3VwIHRoYXQKKyAgICAgICAgd2lsbCBkaXNwbGF5IGluc3Ry
dWN0aW9ucyB0aGF0IGNhbiBiZSBsb2NhbGlzZWQuCisKKyAgICAgICAgVGhlIFVBIHN0eWxlc2hl
ZXQgZm9yIHBsdWctaW5zIHByb3ZpZGVzIGEgZGVmYXVsdCBzdHlsaW5nIGZvciB0aGUgbGFiZWws
IHdoaWNoCisgICAgICAgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHBvcnRzLgorCisgICAgICAgIElu
IHRoZSBwcm9jZXNzLCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiBubyBsb25nZXIgaW5oZXJpdHMg
ZnJvbSBSZW5kZXJFbWJlZGRlZE9iamVjdCwKKyAgICAgICAgc2luY2UgaXQgaXMgb25seSByZXNw
b25zaWJsZSBmb3IgZHJhd2luZyBhIHBhdXNlZCBwbHVnLWluLiBUaGUgc25hcHNob3QgY3JlYXRp
b24KKyAgICAgICAgY2FuIHdvcmsgd2l0aCB0aGUgZGVmYXVsdCByZW5kZXJlciwgYnV0IGEgc2hh
ZG93IHJvb3QgcmVxdWlyZXMgc29tZXRoaW5nIGxpa2UKKyAgICAgICAgUmVuZGVyQmxvY2sgaW4g
b3JkZXIgdG8gZHJhdyBpdHMgY2hpbGRyZW4uIFdlIHN3YXAgZnJvbSBvbmUgcmVuZGVyZXIgdG8g
YW5vdGhlciB3aGVuCisgICAgICAgIG5lY2Vzc2FyeSBlaXRoZXIgYnkgY3JlYXRpbmcgdGhlIHNo
YWRvdyByb290IG9yIGJ5IGV4cGxpY2l0bHkgZGV0YWNoaW5nIGFuZCBhdHRhY2hpbmcKKyAgICAg
ICAgdGhlIHBsdWdpbiBlbGVtZW50LgorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgdGhpcyBpcyBk
aWZmaWN1bHQgdG8gdGVzdCwgYmVjYXVzZSB0aGUgc25hcHNob3R0aW5nIHJlcXVpcmVzCisgICAg
ICAgIHRpbWUgdG8gZXhlY3V0ZSwgYW5kIGFsc28gYSBQbHVnaW5WaWV3IHRvIGJlIGluc3RhbnRp
YXRlZC4KKworICAgICAgICAqIGNzcy9wbHVnSW5zLmNzczoKKyAgICAgICAgKG9iamVjdDo6LXdl
YmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCk6IE5ldyBydWxlcyBmb3IgYSBkZWZhdWx0
IGxhYmVsIHN0eWxlLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBU
YWtlIGludG8gYWNjb3VudCB0aGUgZmFjdAorICAgICAgICB0aGF0IFJlbmRlclNuYXBzaG90dGVk
UGx1Z0luIG5vIGxvbmdlciBpcyBhbiBlbWJlZGRlZCBvYmplY3QuCisgICAgICAgICogaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQpOiBOZXcgZGVmYXVsdCB2YWx1ZXMg
aW4gY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcik6IElmIHdlJ3JlIHNob3dpbmcgYSBzbmFwc2hvdCwgY3JlYXRlIHN1
Y2gKKyAgICAgICAgYSByZW5kZXJlciwgb3RoZXJ3aXNlIHVzZSB0aGUgdHlwaWNhbCBwbHVnLWlu
IHBhdGguCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVT
bmFwc2hvdCk6IEtlZXAgYSByZWNvcmQgb2YgdGhlIHNuYXBzaG90LCBzaW5jZSB3ZSdsbAorICAg
ICAgICBuZWVkIHRvIGdpdmUgaXQgdG8gdGhlIHJlbmRlcmVyLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6IEJ1aWxk
IGEgc3VidHJlZSB0aGF0IHdpbGwgZGlzcGxheSBhIGxhYmVsLgorICAgICAgICAqIGh0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5oOgorICAgICAgICAoSFRNTFBsdWdJbkltYWdlRWxlbWVudCk6
IE5ldyBtZW1iZXIgdmFyaWFibGUgdG8gcmVjb3JkIHRoZSBzbmFwc2hvdCBpbWFnZSBhbmQgd2hl
dGhlciB0aGUgbGFiZWwKKyAgICAgICAgc2hvdWxkIHNob3cgaW1tZWRpYXRlbHkuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik6IE5l
dyBpbmhlcml0YW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
OjpwYWludCk6IElmIHdlJ3JlIGluIHRoZSBiYWNrZ3JvdW5kIHBhaW50IHBoYXNlLCByZW5kZXIg
dGhlIHNuYXBzaG90IGltYWdlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW46OnBhaW50U25hcHNob3RJbWFnZSk6IFJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KTogUmVuYW1lLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3RXaXRoTGFiZWwp
OiBSZW5hbWUuIE5vIG5lZWQgZm9yIGxhYmVsIHNpemVzLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQpOiBUaGUgcmVuZGVyZXIgZG9lc24ndCBy
ZXN0YXJ0IHRoZSBwbHVnLWluIGFueSBtb3JlLiBUZWxsIHRoZSBlbGVtZW50IGFuZCBpdCB3aWxs
IGRvIGl0LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oOgor
ICAgICAgICAoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOiBOZXcgaW5oZXJpdGFuY2UuIFNvbWUg
bWV0aG9kIHJlbmFtaW5nLgorCisyMDEzLTAxLTMwICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxl
LmNvbT4KKwogICAgICAgICBTaGFkb3cgdHJlZSBkb2Vzbid0IGNhbGN1bGF0ZSBzdHlsZSBjb3Jy
ZWN0bHkgaWYgc2hhcmVkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDg0MDQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BsdWdJbnMu
Y3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL3BsdWdJbnMuY3NzCmluZGV4IGJjZTcxNmRlMzJhYzIz
MmE5Mzk0YjcxYWVjMGUyZDVmYTNjODVhYjAuLjNiZGUzYWY0NjNhYWE2NTZkMWEwZTY3MTNhN2Uw
OTQzNTUzYjE3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wbHVnSW5zLmNzcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGx1Z0lucy5jc3MKQEAgLTIyLDUgKzIyLDcxIEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLS8qIHBsdWctaW5zICovCi1we30gLypOZWVkZWQgYnkgV2lu
ZG93cyBiZWNhdXNlIGl0IGRvZXNuJ3QgbGlrZSBlbXB0eSBmaWxlcyovCisvKgorICogVGhpcyBp
cyB0aGUgVUEgU3R5bGVTaGVldCBmb3IgPG9iamVjdD4gYW5kIDxlbWJlZD4gZWxlbWVudHMuCisg
KgorICogU3VjaCBlbGVtZW50cywgd2hlbiBzbmFwc2hvdHRlZCAocGF1c2VkKSwgd2lsbCBjb250
YWluIGEgU2hhZG93Um9vdAorICogd2l0aCB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKKyAqCisg
KiA8b2JqZWN0PgorICogICAjU2hhZG93Um9vdAorICogICAgIDxkaXYgY2xhc3M9InNuYXBzaG90
LWNvbnRhaW5lciI+CisgKiAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1vdmVybGF5Ij48L2Rp
dj4gPCEtLSBlLmcuIGZvciBkaW1taW5nIGNvbnRlbnQgLS0+CisgKiAgICAgICAgIDxkaXYgY2xh
c3M9InNuYXBzaG90LWxhYmVsIj4KKyAqICAgICAgICAgICA8c3BhbiBjbGFzcz0ic25hcHNob3Qt
dGl0bGUiPlNuYXBzaG90dGVkIFBsdWctSW48L3NwYW4+CisgKiAgICAgICAgICAgPHNwYW4gY2xh
c3M9InNuYXBzaG90LXN1YnRpdGxlIj5DbGljayB0byByZXN0YXJ0PC9zcGFuPgorICogICAgICAg
ICA8L2Rpdj4KKyAqICAgICAgIDwvZGl2PgorICogICAgIDwvZGl2PgorICoKKyAqLworCitvYmpl
Y3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgeworICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgd2lkdGg6IDEwMCU7Cisg
ICAgaGVpZ2h0OiAxMDAlOworfQorCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2lu
LWNvbnRlbnQgKiB7CisgICAgY3Vyc29yOiBoYW5kOworICAgIHBvaW50ZXItZXZlbnRzOiBub25l
OworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Cit9CisKK29iamVjdDo6LXdlYmtpdC1z
bmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVyIHsKKyAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworfQor
CitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNv
bnRhaW5lciAuc25hcHNob3Qtb3ZlcmxheSB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKKyAgICBib3gtc2l6aW5nOiBib3JkZXIt
Ym94OworICAgIGJvcmRlcjogMnB4IHNvbGlkICM4ODg7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiYSgwLCAwLCAwLCAwLjE1KTsKK30KKworb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBs
dWdpbi1jb250ZW50OmhvdmVyIC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LW92ZXJsYXkg
eworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7Cit9CisK
K29iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29u
dGFpbmVyIC5zbmFwc2hvdC1sYWJlbCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGJh
Y2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICBib3JkZXItcmFkaXVzOiAxMHB4OworICAgIG1h
cmdpbjogMWVtOworICAgIHBhZGRpbmc6IDAuMjVlbSAyZW07CisgICAgdGV4dC1hbGlnbjogY2Vu
dGVyOworfQorCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNu
YXBzaG90LWNvbnRhaW5lciAuc25hcHNob3QtbGFiZWwgLnNuYXBzaG90LXRpdGxlIHsKKyAgICBm
b250LXdlaWdodDogYm9sZDsKK30KKworb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdp
bi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LWxhYmVsIC5zbmFwc2hvdC1z
dWJ0aXRsZSB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworICAgIGNvbG9yOiAjNDQ0OworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRleCBlMjkwMmFkNzE3
NjQ2NTg2OGVmOTk1OGE4YTY0NGVlNTAwOTQwNTAzLi42ZGU3NjRiNTMzNWY2MGVkMmY1YjU0YzE3
ZjZmOTdmNjYxMzU5NWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50
LmNwcApAQCAtMjAxLDEwICsyMDEsOSBAQCB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIHRvUmVuZGVyRW1iZWRkZWRP
YmplY3QociktPmhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yRXZlbnQoZXZlbnQpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChyLT5pc1NuYXBzaG90
dGVkUGx1Z0luKCkgJiYgZGlzcGxheVN0YXRlKCkgPCBQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNs
aWNrKSB7Ci0gICAgICAgICAgICB0b1JlbmRlclNuYXBzaG90dGVkUGx1Z0luKHIpLT5oYW5kbGVF
dmVudChldmVudCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICB9IGVsc2Ug
aWYgKHIgJiYgci0+aXNTbmFwc2hvdHRlZFBsdWdJbigpICYmIGRpc3BsYXlTdGF0ZSgpIDwgUGxh
eWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykgeworICAgICAgICB0b1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luKHIpLT5oYW5kbGVFdmVudChldmVudCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBpZiAoIXIgfHwgIXItPmlzV2lkZ2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBkMGI1Mzk4ZGRiMjkyYWJlOWY1YzhhODhh
ZWY2ZmRjYWMzZDY0NDBmLi4wNjM3YTg1YzQwNmMzM2ZkMWU5ZjJlYTY3MTYwZTM1Y2VmOWExYmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAK
QEAgLTIxLDYgKzIxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmgiCiAKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJv
bWVDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTI4LDkgKzMwLDExIEBACiAjaW5j
bHVkZSAiSFRNTEltYWdlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5
bGUuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJQbHVnSW5DbGllbnQuaCIKICNpbmNsdWRlICJQbHVnSW5PcmlnaW5IYXNo
LmgiCkBAIC00MCwxMCArNDQsMTQgQEAKICNpbmNsdWRlICJSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
KyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgorI2lu
Y2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOworCiBzdGF0aWMgY29uc3QgaW50IGF1dG9TdGFydFBsdWdJblNpemVUaHJlc2hv
bGRXaWR0aCA9IDE7CiBzdGF0aWMgY29uc3QgaW50IGF1dG9TdGFydFBsdWdJblNpemVUaHJlc2hv
bGRIZWlnaHQgPSAxOwogc3RhdGljIGNvbnN0IGludCBhdXRvU2hvd0xhYmVsU2l6ZVRocmVzaG9s
ZFdpZHRoID0gNDAwOwpAQCAtNjAsNyArNjgsMTAgQEAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
SFRNTFBsdWdJbkltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2MK
ICAgICAsIG1fbmVlZHNXaWRnZXRVcGRhdGUoIWNyZWF0ZWRCeVBhcnNlcikKICAgICAsIG1fc2hv
dWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyhwcmVmZXJQbHVnSW5zRm9ySW1hZ2VzT3B0aW9uID09
IFNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiAgICAgLCBtX25lZWRzRG9jdW1lbnRBY3Rp
dmF0aW9uQ2FsbGJhY2tzKGZhbHNlKQorICAgICwgbV9zaG91bGRTaG93U25hcHNob3RMYWJlbEF1
dG9tYXRpY2FsbHkoZmFsc2UpCiAgICAgLCBtX3NpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lcih0aGlz
LCAmSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRmlyZWQs
IHNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lckRlbGF5KQorICAgICwgbV9zd2FwUmVuZGVyZXJUaW1l
cih0aGlzLCAmSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3dhcFJlbmRlcmVyVGltZXJGaXJlZCkK
KyAgICAsIG1fc25hcHNob3RJbWFnZSgwKQogewogICAgIHNldEhhc0N1c3RvbUNhbGxiYWNrcygp
OwogfQpAQCAtMTMxLDIwICsxNDIsMjcgQEAgUmVuZGVyT2JqZWN0KiBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclMKICAgICAg
ICAgbV9uZWVkc0RvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyA9IHRydWU7CiAgICAgICAgIGRv
Y3VtZW50KCktPnJlZ2lzdGVyRm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsK
ICAgICB9Ci0gICAgCisKKyAgICBpZiAoZGlzcGxheVN0YXRlKCkgPT0gRGlzcGxheWluZ1NuYXBz
aG90KSB7CisgICAgICAgIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luKiByZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbiA9IG5ldyAoYXJlbmEpIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luKHRoaXMpOworICAg
ICAgICByZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi0+dXBkYXRlU25hcHNob3QobV9zbmFwc2hvdElt
YWdlKTsKKyAgICAgICAgaWYgKG1fc2hvdWxkU2hvd1NuYXBzaG90TGFiZWxBdXRvbWF0aWNhbGx5
KQorICAgICAgICAgICAgcmVuZGVyU25hcHNob3R0ZWRQbHVnSW4tPnNldFNob3VsZFNob3dMYWJl
bEF1dG9tYXRpY2FsbHkoKTsKKyAgICAgICAgcmV0dXJuIHJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
OworICAgIH0KKwogICAgIC8vIEZhbGxiYWNrIGNvbnRlbnQgYnJlYWtzIHRoZSBET00tPlJlbmRl
cmVyIGNsYXNzIHJlbGF0aW9uc2hpcCBvZiB0aGlzCiAgICAgLy8gY2xhc3MgYW5kIGFsbCBzdXBl
cmNsYXNzZXMgYmVjYXVzZSBjcmVhdGVPYmplY3Qgd29uJ3QgbmVjZXNzYXJpbHkKICAgICAvLyBy
ZXR1cm4gYSBSZW5kZXJFbWJlZGRlZE9iamVjdCwgUmVuZGVyUGFydCBvciBldmVuIFJlbmRlcldp
ZGdldC4KICAgICBpZiAodXNlRmFsbGJhY2tDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBSZW5k
ZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCh0aGlzLCBzdHlsZSk7CisKICAgICBpZiAoaXNJbWFnZVR5
cGUoKSkgewogICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBuZXcgKGFyZW5hKSBSZW5kZXJJ
bWFnZSh0aGlzKTsKICAgICAgICAgaW1hZ2UtPnNldEltYWdlUmVzb3VyY2UoUmVuZGVySW1hZ2VS
ZXNvdXJjZTo6Y3JlYXRlKCkpOwogICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfQogCi0gICAg
aWYgKGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCkt
PnBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIG5ldyAoYXJlbmEp
IFJlbmRlclNuYXBzaG90dGVkUGx1Z0luKHRoaXMpOwogICAgIHJldHVybiBuZXcgKGFyZW5hKSBS
ZW5kZXJFbWJlZGRlZE9iamVjdCh0aGlzKTsKIH0KIApAQCAtMjU3LDExICsyNzUsNzYgQEAgdm9p
ZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVXaWRnZXRDYWxsYmFjayhOb2RlKiBuLCB1
bnNpZ25lZCkKIAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVTbmFwc2hvdChQ
YXNzUmVmUHRyPEltYWdlPiBpbWFnZSkKIHsKLSAgICBpZiAoZGlzcGxheVN0YXRlKCkgPiBEaXNw
bGF5aW5nU25hcHNob3QgfHwgIXJlbmRlcmVyKCktPmlzU25hcHNob3R0ZWRQbHVnSW4oKSkKKyAg
ICBpZiAoZGlzcGxheVN0YXRlKCkgPiBEaXNwbGF5aW5nU25hcHNob3QpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc25hcHNob3RJbWFnZSA9IGltYWdlOworICAgIGlmIChyZW5kZXJlcigpLT5p
c1NuYXBzaG90dGVkUGx1Z0luKCkpIHsKKyAgICAgICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bihyZW5kZXJlcigpKS0+dXBkYXRlU25hcHNob3QoaW1hZ2UpOwogICAgICAgICByZXR1cm47Cisg
ICAgfQogCi0gICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihyZW5kZXJlcigpKS0+dXBkYXRl
U25hcHNob3QoaW1hZ2UpOwogICAgIHNldERpc3BsYXlTdGF0ZShEaXNwbGF5aW5nU25hcHNob3Qp
OworICAgIG1fc3dhcFJlbmRlcmVyVGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9v
dCogcm9vdCkKK3sKKyAgICBEb2N1bWVudCogZG9jID0gZG9jdW1lbnQoKTsKKworICAgIFJlZlB0
cjxFbGVtZW50PiBzaGFkb3dDb250YWluZXIgPSBkb2MtPmNyZWF0ZUVsZW1lbnQoZGl2VGFnLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBzaGFkb3dDb250YWluZXItPnNldFBzZXVkbyhBdG9t
aWNTdHJpbmcoIi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisKKyAgICBSZWZQdHI8RWxlbWVudD4gY29udGFp
bmVyID0gZG9jLT5jcmVhdGVFbGVtZW50KGRpdlRhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7Cisg
ICAgY29udGFpbmVyLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoInNuYXBz
aG90LWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKwor
ICAgIFJlZlB0cjxFbGVtZW50PiBvdmVybGF5ID0gZG9jLT5jcmVhdGVFbGVtZW50KGRpdlRhZywg
QVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgb3ZlcmxheS0+c2V0QXR0cmlidXRlKGNsYXNzQXR0
ciwgQXRvbWljU3RyaW5nKCJzbmFwc2hvdC1vdmVybGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOworICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQob3ZlcmxheSwgQVNT
RVJUX05PX0VYQ0VQVElPTik7CisKKyAgICBSZWZQdHI8RWxlbWVudD4gbGFiZWwgPSBkb2MtPmNy
ZWF0ZUVsZW1lbnQoZGl2VGFnLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBsYWJlbC0+c2V0
QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJzbmFwc2hvdC1sYWJlbCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKworICAgIFN0cmluZyB0aXRsZVRleHQg
PSBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsVGl0bGUoKTsKKyAgICBTdHJpbmcgc3VidGl0bGVUZXh0
ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRpdGxlKCk7CisgICAgaWYgKGRvY3VtZW50KCkt
PnBhZ2UoKSkgeworICAgICAgICBTdHJpbmcgY2xpZW50VGl0bGVUZXh0ID0gZG9jdW1lbnQoKS0+
cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBsdWdJblN0YXJ0TGFiZWxUaXRsZSgpOworICAg
ICAgICBpZiAoIWNsaWVudFRpdGxlVGV4dC5pc0VtcHR5KCkpCisgICAgICAgICAgICB0aXRsZVRl
eHQgPSBjbGllbnRUaXRsZVRleHQ7CisgICAgICAgIFN0cmluZyBjbGllbnRTdWJ0aXRsZVRleHQg
PSBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJl
bFN1YnRpdGxlKCk7CisgICAgICAgIGlmICghY2xpZW50U3VidGl0bGVUZXh0LmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIHN1YnRpdGxlVGV4dCA9IGNsaWVudFN1YnRpdGxlVGV4dDsKKyAgICB9CisK
KyAgICBSZWZQdHI8RWxlbWVudD4gdGl0bGUgPSBkb2MtPmNyZWF0ZUVsZW1lbnQoZGl2VGFnLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICB0aXRsZS0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwg
QXRvbWljU3RyaW5nKCJzbmFwc2hvdC10aXRsZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKyAgICB0aXRsZS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZSh0
aXRsZVRleHQpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBsYWJlbC0+YXBwZW5kQ2hpbGQo
dGl0bGUsIEFTU0VSVF9OT19FWENFUFRJT04pOworCisgICAgUmVmUHRyPEVsZW1lbnQ+IHN1YlRp
dGxlID0gZG9jLT5jcmVhdGVFbGVtZW50KGRpdlRhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7Cisg
ICAgc3ViVGl0bGUtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZygic25hcHNo
b3Qtc3VidGl0bGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
c3ViVGl0bGUtPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoc3VidGl0bGVUZXh0KSwg
QVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgbGFiZWwtPmFwcGVuZENoaWxkKHN1YlRpdGxlLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKworICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQobGFiZWws
IEFTU0VSVF9OT19FWENFUFRJT04pOworCisgICAgc2hhZG93Q29udGFpbmVyLT5hcHBlbmRDaGls
ZChjb250YWluZXIsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIHJvb3QtPmFwcGVuZENoaWxk
KHNoYWRvd0NvbnRhaW5lciwgQVNTRVJUX05PX0VYQ0VQVElPTik7Cit9CisKK2Jvb2wgSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVu
ZGVyaW5nQ29udGV4dCYgY2hpbGRDb250ZXh0KSBjb25zdAoreworICAgIHJldHVybiAoY2hpbGRD
b250ZXh0LmlzT25VcHBlckVuY2Fwc3VsYXRpb25Cb3VuZGFyeSgpICYmIEhUTUxFbGVtZW50Ojpj
aGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkQ29udGV4dCkpOworfQorCit2b2lkIEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OnN3YXBSZW5kZXJlclRpbWVyRmlyZWQoVGltZXI8SFRNTFBsdWdJ
bkltYWdlRWxlbWVudD4qKQoreworICAgIEFTU0VSVChkaXNwbGF5U3RhdGUoKSA9PSBEaXNwbGF5
aW5nU25hcHNob3QpOworICAgIGlmIChkaXNwbGF5U3RhdGUoKSA9PSBEaXNwbGF5aW5nU25hcHNo
b3QgJiYgIXVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkgeworICAgICAgICAvLyBDcmVhdGUgYSBzaGFk
b3cgcm9vdCwgd2hpY2ggd2lsbCB0cmlnZ2VyIHRoZSBjb2RlIHRvIGFkZCBhIHNuYXBzaG90IGNv
bnRhaW5lcgorICAgICAgICAvLyBhbmQgcmVhdHRhY2gsIHRodXMgbWFraW5nIGEgbmV3IFJlbmRl
cmVyLgorICAgICAgICBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgfQogfQogCiB2
b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlja1NuYXBzaG90KFBhc3NSZWZQ
dHI8TW91c2VFdmVudD4gZXZlbnQpCkBAIC0yNjksNiArMzUyLDkgQEAgdm9pZCBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50Ojp1c2VyRGlkQ2xpY2tTbmFwc2hvdChQYXNzUmVmUHRyPE1vdXNlRXZlbnQ+
IGV2ZW50KQogICAgIG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNob3QgPSBldmVudDsKICAg
ICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpKQogICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPnBs
dWdJbkNsaWVudCgpLT5hZGRBdXRvU3RhcnRPcmlnaW4oZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWlu
RnJhbWUoKS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKSwgbV9wbHVnSW5PcmlnaW5IYXNo
KTsKKworICAgIGRldGFjaCgpOworICAgIGF0dGFjaCgpOwogfQogCiB2b2lkIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ01vdXNlQ2xpY2soKQpAQCAtMzE4LDE2ICs0MDQs
MTIgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxvYWRlcldpbGxDcmVh
dGVQbHVnSW4oY29uc3QgS1VSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKCFyZW5kZXJlcigpLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkpIHsKLSAgICAgICAgTE9HKFBs
dWdpbnMsICIlcCBSZW5kZXJlciBpcyBub3Qgc25hcHNob3R0ZWQgcGx1Z2luLCBzZXQgdG8gcGxh
eSIsIHRoaXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIGlmIChTY3JpcHRDb250cm9s
bGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgewogICAgICAgICBMT0coUGx1Z2lucywgIiVw
IFNjcmlwdCBpcyBwcm9jZXNzaW5nIHVzZXIgZ2VzdHVyZSwgc2V0IHRvIHBsYXkiLCB0aGlzKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIExheW91dFJlY3QgcmVjdCA9IHRvUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4ocmVuZGVyZXIoKSktPmNvbnRlbnRCb3hSZWN0KCk7CisgICAgTGF5
b3V0UmVjdCByZWN0ID0gdG9SZW5kZXJFbWJlZGRlZE9iamVjdChyZW5kZXJlcigpKS0+Y29udGVu
dEJveFJlY3QoKTsKICAgICBpbnQgd2lkdGggPSByZWN0LndpZHRoKCk7CiAgICAgaW50IGhlaWdo
dCA9IHJlY3QuaGVpZ2h0KCk7CiAgICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0IHx8ICh3aWR0aCA8
PSBhdXRvU3RhcnRQbHVnSW5TaXplVGhyZXNob2xkV2lkdGggJiYgaGVpZ2h0IDw9IGF1dG9TdGFy
dFBsdWdJblNpemVUaHJlc2hvbGRIZWlnaHQpKSB7CkBAIC0zNTAsMTAgKzQzMiwxMyBAQCB2b2lk
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihj
b25zdCBLVVJMJiB1cmwpCiAgICAgfQogCiAgICAgaWYgKHNob3VsZFBsdWdJblNob3dMYWJlbEF1
dG9tYXRpY2FsbHkoZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpLT5jb250
ZW50c1NpemUoKSwgdGhpcykpCi0gICAgICAgIHRvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4ocmVu
ZGVyZXIoKSktPnNldFNob3VsZFNob3dMYWJlbEF1dG9tYXRpY2FsbHkoKTsKKyAgICAgICAgc2V0
U2hvdWxkU2hvd1NuYXBzaG90TGFiZWxBdXRvbWF0aWNhbGx5KCk7CiAKICAgICBMT0coUGx1Z2lu
cywgIiVwIFBsdWctaW4gaGFzaCAleCBpcyAlZHglZCwgb3JpZ2luIGlzIG5vdCBhdXRvLXN0YXJ0
LCBzZXQgdG8gd2FpdCBmb3Igc25hcHNob3QiLCB0aGlzLCBtX3BsdWdJbk9yaWdpbkhhc2gsIHdp
ZHRoLCBoZWlnaHQpOwotICAgIHNldERpc3BsYXlTdGF0ZShXYWl0aW5nRm9yU25hcHNob3QpOwor
ICAgIC8vIFdlIG1heSBoYXZlIGdvdCB0byB0aGlzIHBvaW50IGJ5IHJlc3RhcnRpbmcgYSBzbmFw
c2hvdHRlZCBwbHVnLWluLCBpbiB3aGljaCBjYXNlIHdlIGRvbid0IHdhbnQgdG8KKyAgICAvLyBy
ZXNldCB0aGUgZGlzcGxheSBzdGF0ZS4KKyAgICBpZiAoZGlzcGxheVN0YXRlKCkgIT0gUGxheWlu
Z1dpdGhQZW5kaW5nTW91c2VDbGljaykKKyAgICAgICAgc2V0RGlzcGxheVN0YXRlKFdhaXRpbmdG
b3JTbmFwc2hvdCk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVM
b2FkZXJEaWRDcmVhdGVQbHVnSW4oY29uc3QgV2lkZ2V0KiB3aWRnZXQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDA0NzMxYjVlNGVlNjNhNTRi
ODE5OWViZjIzZTNkNjYyNmQwYjY0Y2IuLmQyYjgxYmQ1NjY5MDhmNjI3NGJlOWYwYTVkMmIwMmQw
YjM3NjE5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5oCkBAIC0yNSwxMSArMjUsMTMgQEAKIAogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBIVE1MSW1hZ2VMb2FkZXI7CiBjbGFzcyBGcmFtZUxvYWRlcjsK
K2NsYXNzIEltYWdlOwogY2xhc3MgTW91c2VFdmVudDsKIGNsYXNzIFdpZGdldDsKIApAQCAtMzcs
NyArMzksNyBAQCBlbnVtIFBsdWdpbkNyZWF0aW9uT3B0aW9uIHsKICAgICBDcmVhdGVBbnlXaWRn
ZXRUeXBlLAogICAgIENyZWF0ZU9ubHlOb25OZXRzY2FwZVBsdWdpbnMsCiB9OwotICAgIAorCiBl
bnVtIFByZWZlclBsdWdJbnNGb3JJbWFnZXNPcHRpb24gewogICAgIFNob3VsZFByZWZlclBsdWdJ
bnNGb3JJbWFnZXMsCiAgICAgU2hvdWxkTm90UHJlZmVyUGx1Z0luc0ZvckltYWdlcwpAQCAtOTIs
MjIgKzk0LDMyIEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0
dWFsIGJvb2wgd2lsbFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKTsKLSAgICAKKworICAgIHZpcnR1
YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250
ZXh0JikgY29uc3QgT1ZFUlJJREU7CisgICAgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290
KFNoYWRvd1Jvb3QqKSBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5n
Q2hpbGRyZW4oKTsKIAogICAgIHZvaWQgdXBkYXRlV2lkZ2V0SWZOZWNlc3NhcnkoKTsKICAgICB2
aXJ0dWFsIGJvb2wgdXNlRmFsbGJhY2tDb250ZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTbmFwc2hvdChQYXNzUmVmUHRyPEltYWdl
PikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoUGVuZGluZ01vdXNlQ2xpY2so
KSBPVkVSUklERTsKICAgICB2b2lkIHNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lckZpcmVkKERlZmVy
cmFibGVPbmVTaG90VGltZXI8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4qKTsKIAorICAgIHZvaWQg
c3dhcFJlbmRlcmVyVGltZXJGaXJlZChUaW1lcjxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PiopOwor
CisgICAgdm9pZCBzZXRTaG91bGRTaG93U25hcHNob3RMYWJlbEF1dG9tYXRpY2FsbHkoKSB7IG1f
c2hvdWxkU2hvd1NuYXBzaG90TGFiZWxBdXRvbWF0aWNhbGx5ID0gdHJ1ZTsgfQorCiAgICAgYm9v
bCBtX25lZWRzV2lkZ2V0VXBkYXRlOwogICAgIGJvb2wgbV9zaG91bGRQcmVmZXJQbHVnSW5zRm9y
SW1hZ2VzOwogICAgIGJvb2wgbV9uZWVkc0RvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrczsKKyAg
ICBib29sIG1fc2hvdWxkU2hvd1NuYXBzaG90TGFiZWxBdXRvbWF0aWNhbGx5OwogICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gbV9jdXN0b21TdHlsZUZvclBhZ2VDYWNoZTsKICAgICBSZWZQdHI8TW91
c2VFdmVudD4gbV9wZW5kaW5nQ2xpY2tFdmVudEZyb21TbmFwc2hvdDsKICAgICBEZWZlcnJhYmxl
T25lU2hvdFRpbWVyPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+IG1fc2ltdWxhdGVkTW91c2VDbGlj
a1RpbWVyOworICAgIFRpbWVyPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+IG1fc3dhcFJlbmRlcmVy
VGltZXI7CisgICAgUmVmUHRyPEltYWdlPiBtX3NuYXBzaG90SW1hZ2U7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRleCBhNjM1MWM5ZDQ3NmI2OGViMTBiODEwMTg0MmNj
OTg2ODdjMmQ1OGU5Li4yM2UwYjEwMzI5YWFkZjhiY2ZhYTM3Y2QzNmIxYzk3MTdlM2YyOTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbi5jcHAKQEAgLTQwLDE0ICs0MCwxMyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQYWludEluZm8uaCIKICNpbmNsdWRlICJQYXRoLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5o
IgogI2luY2x1ZGUgIlNvdXJjZUdyYXBoaWMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGF0aWMgY29uc3QgaW50IGF1dG9TdGFydFBsdWdJblNpemVUaHJlc2hvbGRXaWR0aCA9IDE7CiBz
dGF0aWMgY29uc3QgaW50IGF1dG9TdGFydFBsdWdJblNpemVUaHJlc2hvbGRIZWlnaHQgPSAxOwot
c3RhdGljIGNvbnN0IGludCBzdGFydExhYmVsUGFkZGluZyA9IDEwOyAvLyBMYWJlbCBzaG91bGQg
YmUgMTBweCBmcm9tIGVkZ2Ugb2YgYm94Lgotc3RhdGljIGNvbnN0IGludCBzdGFydExhYmVsSW5z
ZXQgPSAyMDsgLy8gQnV0IHRoZSBsYWJlbCBpcyBpbnNldCBmcm9tIGl0cyBib3ggYWxzby4gRklY
TUU6IFRoaXMgd2lsbCBiZSByZW1vdmVkIHdoZW4gd2UgZ28gdG8gYSBTaGFkb3dET00gYXBwcm9h
Y2guCiBzdGF0aWMgY29uc3QgZG91YmxlIHNob3dMYWJlbEFmdGVyTW91c2VPdmVyRGVsYXkgPSAx
Owogc3RhdGljIGNvbnN0IGRvdWJsZSBzaG93TGFiZWxBdXRvbWF0aWNhbGx5RGVsYXkgPSAzOwog
c3RhdGljIGNvbnN0IGludCBzbmFwc2hvdExhYmVsQmx1clJhZGl1cyA9IDU7CkBAIC0xMDAsNyAr
OTksNyBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luQmx1ckZpbHRlcjo6YXBwbHkoKQog
I2VuZGlmCiAKIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBlbGVtZW50KQotICAgIDogUmVuZGVyRW1iZWRkZWRP
YmplY3QoZWxlbWVudCkKKyAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQpCiAgICAgLCBtX3NuYXBz
aG90UmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkpCiAgICAgLCBtX3Nob3Vs
ZFNob3dMYWJlbChmYWxzZSkKICAgICAsIG1fc2hvdWxkU2hvd0xhYmVsQXV0b21hdGljYWxseShm
YWxzZSkKQEAgLTE0NSwyOCArMTQ0LDE3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46
OnVwZGF0ZVNuYXBzaG90KFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKQogCiB2b2lkIFJlbmRlclNu
YXBzaG90dGVkUGx1Z0luOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChwbHVnSW5JbWFnZUVsZW1lbnQoKS0+ZGlz
cGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZ1dpdGhQZW5kaW5nTW91c2VD
bGljaykgewotICAgICAgICBSZW5kZXJSZXBsYWNlZDo6cGFpbnQocGFpbnRJbmZvLCBwYWludE9m
ZnNldCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZW5kZXJFbWJlZGRlZE9iamVj
dDo6cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7Ci19Ci0KLXZvaWQgUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW46OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCkKLXsKLSAgICBpZiAocGx1Z0luSW1hZ2VFbGVtZW50KCkt
PmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmdXaXRoUGVuZGluZ01v
dXNlQ2xpY2spIHsKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VCbG9ja0Jh
Y2tncm91bmQgJiYgcGx1Z0luSW1hZ2VFbGVtZW50KCktPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBs
dWdJbkVsZW1lbnQ6OlBsYXlpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2spIHsKICAgICAgICAgaWYg
KG1fc2hvdWxkU2hvd0xhYmVsKQotICAgICAgICAgICAgcGFpbnRSZXBsYWNlZFNuYXBzaG90V2l0
aExhYmVsKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOworICAgICAgICAgICAgcGFpbnRTbmFwc2hv
dFdpdGhMYWJlbChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcGFpbnRSZXBsYWNlZFNuYXBzaG90KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBwYWludFNuYXBzaG90KHBhaW50SW5mbywgcGFpbnRP
ZmZzZXQpOwogICAgIH0KIAotICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2Vk
KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOworICAgIFJlbmRlckJsb2NrOjpwYWludChwYWludElu
Zm8sIHBhaW50T2Zmc2V0KTsKIH0KIAotdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFp
bnRTbmFwc2hvdChJbWFnZSogaW1hZ2UsIFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQpCit2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWlu
dFNuYXBzaG90SW1hZ2UoSW1hZ2UqIGltYWdlLCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIExheW91dFVuaXQgY1dpZHRoID0gY29u
dGVudFdpZHRoKCk7CiAgICAgTGF5b3V0VW5pdCBjSGVpZ2h0ID0gY29udGVudEhlaWdodCgpOwpA
QCAtMTgwLDcgKzE2OCw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25h
cHNob3QoSW1hZ2UqIGltYWdlLCBQYWludEluZm8mIHBhaW50SW5mbywKICNlbmRpZgogCiAgICAg
TGF5b3V0U2l6ZSBjb250ZW50U2l6ZShjV2lkdGgsIGNIZWlnaHQpOwotICAgIExheW91dFBvaW50
IGNvbnRlbnRMb2NhdGlvbiA9IHBhaW50T2Zmc2V0OworICAgIExheW91dFBvaW50IGNvbnRlbnRM
b2NhdGlvbiA9IGxvY2F0aW9uKCkgKyBwYWludE9mZnNldDsKICAgICBjb250ZW50TG9jYXRpb24u
bW92ZShib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdU
b3AoKSk7CiAKICAgICBMYXlvdXRSZWN0IHJlY3QoY29udGVudExvY2F0aW9uLCBjb250ZW50U2l6
ZSk7CkBAIC0xOTIsMzEgKzE4MCwxMyBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpw
YWludFNuYXBzaG90KEltYWdlKiBpbWFnZSwgUGFpbnRJbmZvJiBwYWludEluZm8sCiAgICAgY29u
dGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0
LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCB1
c2VMb3dRdWFsaXR5U2NhbGluZyk7CiB9CiAKLXZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46
OnBhaW50UmVwbGFjZWRTbmFwc2hvdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0KQordm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRT
bmFwc2hvdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogewogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBtX3NuYXBzaG90UmVzb3VyY2UtPmlt
YWdlKCk7CiAgICAgaWYgKCFpbWFnZSB8fCBpbWFnZS0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHBhaW50U25hcHNob3QoaW1hZ2UuZ2V0KCksIHBhaW50SW5mbywgcGFpbnRPZmZz
ZXQpOwotfQotCi1JbWFnZSogUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnN0YXJ0TGFiZWxJbWFn
ZShMYWJlbFNpemUgc2l6ZSkgY29uc3QKLXsKLSAgICBzdGF0aWMgSW1hZ2UqIGxhYmVsSW1hZ2Vz
WzJdID0geyAwLCAwIH07Ci0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWRJbWFnZXNbMl0gPSB7
IGZhbHNlLCBmYWxzZSB9OwotCi0gICAgaW50IGFycmF5SW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+
KHNpemUpOwotICAgIGlmIChsYWJlbEltYWdlc1thcnJheUluZGV4XSkKLSAgICAgICAgcmV0dXJu
IGxhYmVsSW1hZ2VzW2FycmF5SW5kZXhdOwotICAgIGlmIChpbml0aWFsaXplZEltYWdlc1thcnJh
eUluZGV4XSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgp
KSB7Ci0gICAgICAgIGxhYmVsSW1hZ2VzW2FycmF5SW5kZXhdID0gZG9jdW1lbnQoKS0+cGFnZSgp
LT5jaHJvbWUoKS0+Y2xpZW50KCktPnBsdWdJblN0YXJ0TGFiZWxJbWFnZShzaXplKS5sZWFrUmVm
KCk7Ci0gICAgICAgIGluaXRpYWxpemVkSW1hZ2VzW2FycmF5SW5kZXhdID0gdHJ1ZTsKLSAgICB9
Ci0gICAgcmV0dXJuIGxhYmVsSW1hZ2VzW2FycmF5SW5kZXhdOworICAgIHBhaW50U25hcHNob3RJ
bWFnZShpbWFnZS5nZXQoKSwgcGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiB9CiAKICNpZiBFTkFC
TEUoRklMVEVSUykKQEAgLTIzOCw3ICsyMDgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZT4g
c25hcHNob3R0ZWRQbHVnaW5JbWFnZUZvckxhYmVsRGlzcGxheShQYXNzUmVmUHRyPEltYWdlPgog
fQogI2VuZGlmCiAKLXZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50UmVwbGFjZWRT
bmFwc2hvdFdpdGhMYWJlbChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQordm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hv
dFdpdGhMYWJlbChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0KQogewogICAgIGlmIChjb250ZW50Qm94UmVjdCgpLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjQ3LDQzICsyMTcsMjYgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bjo6cGFpbnRSZXBsYWNlZFNuYXBzaG90V2l0aExhYmVsKFBhaW50SW5mbyYgcGFpbnRJbmYKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9zaG93ZWRMYWJlbE9uY2UgPSB0cnVlOwotICAgIExheW91
dFJlY3QgcmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7Ci0gICAgTGF5b3V0UmVjdCBsYWJlbFJlY3Qg
PSB0cnlUb0ZpdFN0YXJ0TGFiZWwoTGFiZWxTaXplTGFyZ2UsIHJlY3QpOwotICAgIExhYmVsU2l6
ZSBzaXplID0gTm9MYWJlbDsKLSAgICBpZiAoIWxhYmVsUmVjdC5pc0VtcHR5KCkpCi0gICAgICAg
IHNpemUgPSBMYWJlbFNpemVMYXJnZTsKLSAgICBlbHNlIHsKLSAgICAgICAgbGFiZWxSZWN0ID0g
dHJ5VG9GaXRTdGFydExhYmVsKExhYmVsU2l6ZVNtYWxsLCByZWN0KTsKLSAgICAgICAgaWYgKCFs
YWJlbFJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgc2l6ZSA9IExhYmVsU2l6ZVNtYWxsOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSW1hZ2UqIGxh
YmVsSW1hZ2UgPSBzdGFydExhYmVsSW1hZ2Uoc2l6ZSk7Ci0gICAgaWYgKCFsYWJlbEltYWdlKQot
ICAgICAgICByZXR1cm47CisgICAgTGF5b3V0UmVjdCBsYWJlbFJlY3Q7CiAKICAgICBSZWZQdHI8
SW1hZ2U+IHNuYXBzaG90SW1hZ2UgPSBtX3NuYXBzaG90UmVzb3VyY2UtPmltYWdlKCk7CiAgICAg
aWYgKCFzbmFwc2hvdEltYWdlIHx8IHNuYXBzaG90SW1hZ2UtPmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm47CiAKICNpZiBFTkFCTEUoRklMVEVSUykKLSAgICBSZWZQdHI8SW1hZ2U+IGJsdXJyZWRT
bmFwc2hvdEltYWdlID0gbV9zbmFwc2hvdFJlc291cmNlRm9yTGFiZWwtPmltYWdlKCk7Ci0gICAg
aWYgKCFibHVycmVkU25hcHNob3RJbWFnZSB8fCBibHVycmVkU25hcHNob3RJbWFnZS0+aXNOdWxs
KCkpIHsKLSAgICAgICAgYmx1cnJlZFNuYXBzaG90SW1hZ2UgPSBzbmFwc2hvdHRlZFBsdWdpbklt
YWdlRm9yTGFiZWxEaXNwbGF5KHNuYXBzaG90SW1hZ2UsIGxhYmVsUmVjdCk7Ci0gICAgICAgIG1f
c25hcHNob3RSZXNvdXJjZUZvckxhYmVsLT5zZXRDYWNoZWRJbWFnZShuZXcgQ2FjaGVkSW1hZ2Uo
Ymx1cnJlZFNuYXBzaG90SW1hZ2UuZ2V0KCkpKTsKKyAgICAvLyBGSVhNRTogVGVtcG9yYXJpbHkg
ZGlzYWJsaW5nIHRoZSBibHVyIGJlaGluZCB0aGUgbGFiZWwuCisgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODM2OAorICAgIGlmICghbGFiZWxSZWN0Lmlz
RW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8SW1hZ2U+IGJsdXJyZWRTbmFwc2hvdEltYWdlID0g
bV9zbmFwc2hvdFJlc291cmNlRm9yTGFiZWwtPmltYWdlKCk7CisgICAgICAgIGlmICghYmx1cnJl
ZFNuYXBzaG90SW1hZ2UgfHwgYmx1cnJlZFNuYXBzaG90SW1hZ2UtPmlzTnVsbCgpKSB7CisgICAg
ICAgICAgICBibHVycmVkU25hcHNob3RJbWFnZSA9IHNuYXBzaG90dGVkUGx1Z2luSW1hZ2VGb3JM
YWJlbERpc3BsYXkoc25hcHNob3RJbWFnZSwgbGFiZWxSZWN0KTsKKyAgICAgICAgICAgIG1fc25h
cHNob3RSZXNvdXJjZUZvckxhYmVsLT5zZXRDYWNoZWRJbWFnZShuZXcgQ2FjaGVkSW1hZ2UoYmx1
cnJlZFNuYXBzaG90SW1hZ2UuZ2V0KCkpKTsKKyAgICAgICAgfQorICAgICAgICBzbmFwc2hvdElt
YWdlID0gYmx1cnJlZFNuYXBzaG90SW1hZ2U7CiAgICAgfQotICAgIHNuYXBzaG90SW1hZ2UgPSBi
bHVycmVkU25hcHNob3RJbWFnZTsKICNlbmRpZgogCi0gICAgcGFpbnRTbmFwc2hvdChzbmFwc2hv
dEltYWdlLmdldCgpLCBwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKLQotICAgIC8vIFJlbWVtYmVy
IHRoYXQgdGhlIGxhYmVsUmVjdCBpbmNsdWRlcyB0aGUgbGFiZWwgaW5zZXQsIHNvIHdlIG5lZWQg
dG8gYWRqdXN0IGZvciBpdC4KLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGxhYmVs
SW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbnRSZWN0KHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCArIGxhYmVsUmVjdC5sb2Nh
dGlvbigpIC0gSW50U2l6ZShzdGFydExhYmVsSW5zZXQsIHN0YXJ0TGFiZWxJbnNldCkpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3VuZGVkSW50U2l6ZShsYWJl
bFJlY3Quc2l6ZSgpICsgSW50U2l6ZSgyICogc3RhcnRMYWJlbEluc2V0LCAyICogc3RhcnRMYWJl
bEluc2V0KSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxJbWFnZS0+
cmVjdCgpKTsKKyAgICBwYWludFNuYXBzaG90SW1hZ2Uoc25hcHNob3RJbWFnZS5nZXQoKSwgcGFp
bnRJbmZvLCBwYWludE9mZnNldCk7CiB9CiAKIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46
OnJlcGFpbnRMYWJlbCgpCkBAIC0zMDksNyArMjYyLDcgQEAgQ3Vyc29yRGlyZWN0aXZlIFJlbmRl
clNuYXBzaG90dGVkUGx1Z0luOjpnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBD
dXIKICAgICAgICAgb3ZlcnJpZGVDdXJzb3IgPSBoYW5kQ3Vyc29yKCk7CiAgICAgICAgIHJldHVy
biBTZXRDdXJzb3I7CiAgICAgfQotICAgIHJldHVybiBSZW5kZXJFbWJlZGRlZE9iamVjdDo6Z2V0
Q3Vyc29yKHBvaW50LCBvdmVycmlkZUN1cnNvcik7CisgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpn
ZXRDdXJzb3IocG9pbnQsIG92ZXJyaWRlQ3Vyc29yKTsKIH0KIAogdm9pZCBSZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQpAQCAtMzI1LDEyICsyNzgsNiBA
QCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudChFdmVudCogZXZlbnQp
CiAKICAgICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50KCktPnNldERpc3BsYXlTdGF0ZShIVE1MUGx1
Z0luRWxlbWVudDo6UGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGljayk7CiAgICAgICAgIHBsdWdJ
bkltYWdlRWxlbWVudCgpLT51c2VyRGlkQ2xpY2tTbmFwc2hvdChtb3VzZUV2ZW50KTsKLQotICAg
ICAgICBpZiAod2lkZ2V0KCkpIHsKLSAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1
bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50
KCktPnJlY3JlYXRlUGx1Z2luKHdpZGdldCgpKTsKLSAgICAgICAgICAgIHJlcGFpbnQoKTsKLSAg
ICAgICAgfQogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9IGVsc2Ug
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KSB7CiAgICAg
ICAgIGlmIChtb3VzZUV2ZW50LT5idXR0b24oKSAhPSBMZWZ0QnV0dG9uKQpAQCAtMzU4LDI3ICsz
MDUsNiBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudChFdmVudCog
ZXZlbnQpCiAgICAgfQogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjp0
cnlUb0ZpdFN0YXJ0TGFiZWwoTGFiZWxTaXplIHNpemUsIGNvbnN0IExheW91dFJlY3QmIGNvbnRl
bnRCb3gpIGNvbnN0Ci17Ci0gICAgSW1hZ2UqIGxhYmVsSW1hZ2UgPSBzdGFydExhYmVsSW1hZ2Uo
c2l6ZSk7Ci0gICAgaWYgKCFsYWJlbEltYWdlKQotICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgp
OwotCi0gICAgLy8gQXNzdW1lIHRoYXQgdGhlIGxhYmVsSW1hZ2UgaGFzIGJlZW4gcHJvdmlkZWQg
dG8gbWF0Y2ggb3VyIGRldmljZSBzY2FsZS4KLSAgICBmbG9hdCBzY2FsZUZhY3RvciA9IDE7Ci0g
ICAgaWYgKGRvY3VtZW50KCktPnBhZ2UoKSkKLSAgICAgICAgc2NhbGVGYWN0b3IgPSBkb2N1bWVu
dCgpLT5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgSW50U2l6ZSBsYWJlbEltYWdl
U2l6ZSA9IGxhYmVsSW1hZ2UtPnNpemUoKTsKLSAgICBsYWJlbEltYWdlU2l6ZS5zY2FsZSgxIC8g
KHNjYWxlRmFjdG9yID8gc2NhbGVGYWN0b3IgOiAxKSk7Ci0KLSAgICBMYXlvdXRTaXplIGxhYmVs
U2l6ZSA9IGxhYmVsSW1hZ2VTaXplIC0gTGF5b3V0U2l6ZSgyICogc3RhcnRMYWJlbEluc2V0LCAy
ICogc3RhcnRMYWJlbEluc2V0KTsKLSAgICBMYXlvdXRSZWN0IGNhbmRpZGF0ZVJlY3QoY29udGVu
dEJveC5tYXhYTWluWUNvcm5lcigpICsgTGF5b3V0U2l6ZSgtc3RhcnRMYWJlbFBhZGRpbmcsIHN0
YXJ0TGFiZWxQYWRkaW5nKSArIExheW91dFNpemUoLWxhYmVsU2l6ZS53aWR0aCgpLCAwKSwgbGFi
ZWxTaXplKTsKLSAgICAvLyBUaGUgbWluaW11bSBhbGxvd2VkIGNvbnRlbnQgYm94IHNpemUgaXMg
dGhlIGxhYmVsIGltYWdlIHBsYWNlZCBpbiB0aGUgY2VudGVyIG9mIHRoZSBib3gsIHN1cnJvdW5k
ZWQgYnkgc3RhcnRMYWJlbFBhZGRpbmcuCi0gICAgaWYgKGNhbmRpZGF0ZVJlY3QueCgpIDwgc3Rh
cnRMYWJlbFBhZGRpbmcgfHwgY2FuZGlkYXRlUmVjdC5tYXhZKCkgPiBjb250ZW50Qm94LmhlaWdo
dCgpIC0gc3RhcnRMYWJlbFBhZGRpbmcpCi0gICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7Ci0g
ICAgcmV0dXJuIGNhbmRpZGF0ZVJlY3Q7Ci19Ci0KIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW46OnJlc2V0RGVsYXlUaW1lcihTaG93UmVhc29uIHJlYXNvbikKIHsKICAgICBtX3Nob3dSZWFz
b24gPSByZWFzb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbi5oCmluZGV4IGI5ZGU2MmNiYWMyYWFjZmE1YTE0YzY5YmQ0MmE2OTJmZmU2
NTU3NzQuLmE2NjdiNGY3MTFlZTFmZmI1ODVjZjIzMDMzZGZlNGVjMWNkZGJlMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCkBA
IC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luX2gKICNkZWZp
bmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW5faAogCi0jaW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRP
YmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogCiAjaW5jbHVkZSAiUmVuZGVySW1h
Z2VSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC0zNSwxNyArMzUsMTEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OwogCi1jbGFz
cyBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiA6IHB1YmxpYyBSZW5kZXJFbWJlZGRlZE9iamVjdCB7
CitjbGFzcyBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbklt
YWdlRWxlbWVudCopOwogICAgIHZpcnR1YWwgflJlbmRlclNuYXBzaG90dGVkUGx1Z0luKCk7CiAK
LSAgICBlbnVtIExhYmVsU2l6ZSB7Ci0gICAgICAgIExhYmVsU2l6ZVNtYWxsLAotICAgICAgICBM
YWJlbFNpemVMYXJnZSwKLSAgICAgICAgTm9MYWJlbCwKLSAgICB9OwotCiAgICAgdm9pZCB1cGRh
dGVTbmFwc2hvdChQYXNzUmVmUHRyPEltYWdlPik7CiAKICAgICB2b2lkIGhhbmRsZUV2ZW50KEV2
ZW50Kik7CkBAIC02MCwxNiArNTQsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEN1cnNvckRp
cmVjdGl2ZSBnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBDdXJzb3ImKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTbmFwc2hvdHRlZFBsdWdJbigpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZXBs
YWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOwogCi0gICAgdm9p
ZCBwYWludFJlcGxhY2VkU25hcHNob3QoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsK
LSAgICB2b2lkIHBhaW50UmVwbGFjZWRTbmFwc2hvdFdpdGhMYWJlbChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpOwotICAgIHZvaWQgcGFpbnRTbmFwc2hvdChJbWFnZSosIFBhaW50SW5m
byYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdm9pZCBwYWludFNuYXBzaG90KFBhaW50SW5m
byYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdm9pZCBwYWludFNuYXBzaG90V2l0aExhYmVs
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdm9pZCBwYWludFNuYXBzaG90
SW1hZ2UoSW1hZ2UqLCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZvaWQg
cmVwYWludExhYmVsKCk7CiAKLSAgICBMYXlvdXRSZWN0IHRyeVRvRml0U3RhcnRMYWJlbChMYWJl
bFNpemUsIGNvbnN0IExheW91dFJlY3QmIGNvbnRlbnRCb3gpIGNvbnN0OwotICAgIEltYWdlKiBz
dGFydExhYmVsSW1hZ2UoTGFiZWxTaXplKSBjb25zdDsKLQogICAgIGVudW0gU2hvd1JlYXNvbiB7
CiAgICAgICAgIFVzZXJNb3VzZWRPdmVyLAogICAgICAgICBTaG91bGRTaG93QXV0b21hdGljYWxs
eQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185828</attachid>
            <date>2013-01-31 11:24:32 -0800</date>
            <delta_ts>2013-02-08 13:49:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108284-20130201062114.patch</filename>
            <type>text/plain</type>
            <size>29431</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ3Nzc2Y2U5YWRmOTky
YTUzYzgxZDY1OTIyZjcyOWFkYTY5NTNlYi4uMzc4MTBiMzFjZGFiOGNlNDE2MjJhY2ZjZDhiMGU5
OGJiNjU1MDMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU2IEBACiAyMDEzLTAxLTMwICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAorICAgICAgICBTbmFwc2hvdHRlZCBwbHVnLWlu
IHNob3VsZCB1c2Ugc2hhZG93IHJvb3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwODI4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEEgc25hcHNob3R0ZWQgcGx1Z2luIG5lZWRzIHRvIGluZGljYXRlIHRv
IHRoZSB1c2VyIHRoYXQgaXQgY2FuIGJlIGNsaWNrZWQKKyAgICAgICAgdG8gYmUgcmVzdGFydGVk
LiBQcmV2aW91c2x5IHRoaXMgd2FzIGRvbmUgd2l0aCBhbiBpbWFnZSB0aGF0IGhhZCBlbWJlZGRl
ZAorICAgICAgICB0ZXh0LiBJbnN0ZWFkLCB3ZSBub3cgdXNlIGFuIGludGVybmFsIHNoYWRvdyBy
b290IHRvIGVtYmVkIHNvbWUgbWFya3VwIHRoYXQKKyAgICAgICAgd2lsbCBkaXNwbGF5IGluc3Ry
dWN0aW9ucyB0aGF0IGNhbiBiZSBsb2NhbGlzZWQuCisKKyAgICAgICAgVGhlIFVBIHN0eWxlc2hl
ZXQgZm9yIHBsdWctaW5zIHByb3ZpZGVzIGEgZGVmYXVsdCBzdHlsaW5nIGZvciB0aGUgbGFiZWws
IHdoaWNoCisgICAgICAgIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHBvcnRzLgorCisgICAgICAgIElu
IHRoZSBwcm9jZXNzLCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiBubyBsb25nZXIgaW5oZXJpdHMg
ZnJvbSBSZW5kZXJFbWJlZGRlZE9iamVjdCwKKyAgICAgICAgc2luY2UgaXQgaXMgb25seSByZXNw
b25zaWJsZSBmb3IgZHJhd2luZyBhIHBhdXNlZCBwbHVnLWluLiBUaGUgc25hcHNob3QgY3JlYXRp
b24KKyAgICAgICAgY2FuIHdvcmsgd2l0aCB0aGUgZGVmYXVsdCByZW5kZXJlciwgYnV0IGEgc2hh
ZG93IHJvb3QgcmVxdWlyZXMgc29tZXRoaW5nIGxpa2UKKyAgICAgICAgUmVuZGVyQmxvY2sgaW4g
b3JkZXIgdG8gZHJhdyBpdHMgY2hpbGRyZW4uIFdlIHN3YXAgZnJvbSBvbmUgcmVuZGVyZXIgdG8g
YW5vdGhlciB3aGVuCisgICAgICAgIG5lY2Vzc2FyeSBlaXRoZXIgYnkgY3JlYXRpbmcgdGhlIHNo
YWRvdyByb290IG9yIGJ5IGV4cGxpY2l0bHkgZGV0YWNoaW5nIGFuZCBhdHRhY2hpbmcKKyAgICAg
ICAgdGhlIHBsdWdpbiBlbGVtZW50LgorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgdGhpcyBpcyBk
aWZmaWN1bHQgdG8gdGVzdCwgYmVjYXVzZSB0aGUgc25hcHNob3R0aW5nIHJlcXVpcmVzCisgICAg
ICAgIHRpbWUgdG8gZXhlY3V0ZSwgYW5kIGFsc28gYSBQbHVnaW5WaWV3IHRvIGJlIGluc3RhbnRp
YXRlZC4KKworICAgICAgICAqIGNzcy9wbHVnSW5zLmNzczoKKyAgICAgICAgKG9iamVjdDo6LXdl
YmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCk6IE5ldyBydWxlcyBmb3IgYSBkZWZhdWx0
IGxhYmVsIHN0eWxlLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBU
YWtlIGludG8gYWNjb3VudCB0aGUgZmFjdAorICAgICAgICB0aGF0IFJlbmRlclNuYXBzaG90dGVk
UGx1Z0luIG5vIGxvbmdlciBpcyBhbiBlbWJlZGRlZCBvYmplY3QuCisgICAgICAgICogaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQpOiBOZXcgZGVmYXVsdCB2YWx1ZXMg
aW4gY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcik6IElmIHdlJ3JlIHNob3dpbmcgYSBzbmFwc2hvdCwgY3JlYXRlIHN1
Y2gKKyAgICAgICAgYSByZW5kZXJlciwgb3RoZXJ3aXNlIHVzZSB0aGUgdHlwaWNhbCBwbHVnLWlu
IHBhdGguCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVT
bmFwc2hvdCk6IEtlZXAgYSByZWNvcmQgb2YgdGhlIHNuYXBzaG90LCBzaW5jZSB3ZSdsbAorICAg
ICAgICBuZWVkIHRvIGdpdmUgaXQgdG8gdGhlIHJlbmRlcmVyLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6IEJ1aWxk
IGEgc3VidHJlZSB0aGF0IHdpbGwgZGlzcGxheSBhIGxhYmVsLgorICAgICAgICAqIGh0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5oOgorICAgICAgICAoSFRNTFBsdWdJbkltYWdlRWxlbWVudCk6
IE5ldyBtZW1iZXIgdmFyaWFibGUgdG8gcmVjb3JkIHRoZSBzbmFwc2hvdCBpbWFnZSBhbmQgd2hl
dGhlciB0aGUgbGFiZWwKKyAgICAgICAgc2hvdWxkIHNob3cgaW1tZWRpYXRlbHkuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik6IE5l
dyBpbmhlcml0YW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
OjpwYWludCk6IElmIHdlJ3JlIGluIHRoZSBiYWNrZ3JvdW5kIHBhaW50IHBoYXNlLCByZW5kZXIg
dGhlIHNuYXBzaG90IGltYWdlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW46OnBhaW50U25hcHNob3RJbWFnZSk6IFJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KTogUmVuYW1lLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3RXaXRoTGFiZWwp
OiBSZW5hbWUuIE5vIG5lZWQgZm9yIGxhYmVsIHNpemVzLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQpOiBUaGUgcmVuZGVyZXIgZG9lc24ndCBy
ZXN0YXJ0IHRoZSBwbHVnLWluIGFueSBtb3JlLiBUZWxsIHRoZSBlbGVtZW50IGFuZCBpdCB3aWxs
IGRvIGl0LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oOgor
ICAgICAgICAoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOiBOZXcgaW5oZXJpdGFuY2UuIFNvbWUg
bWV0aG9kIHJlbmFtaW5nLgorCisyMDEzLTAxLTMwICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxl
LmNvbT4KKwogICAgICAgICBTaGFkb3cgdHJlZSBkb2Vzbid0IGNhbGN1bGF0ZSBzdHlsZSBjb3Jy
ZWN0bHkgaWYgc2hhcmVkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDg0MDQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BsdWdJbnMu
Y3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL3BsdWdJbnMuY3NzCmluZGV4IGJjZTcxNmRlMzJhYzIz
MmE5Mzk0YjcxYWVjMGUyZDVmYTNjODVhYjAuLjNiZGUzYWY0NjNhYWE2NTZkMWEwZTY3MTNhN2Uw
OTQzNTUzYjE3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wbHVnSW5zLmNzcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGx1Z0lucy5jc3MKQEAgLTIyLDUgKzIyLDcxIEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLS8qIHBsdWctaW5zICovCi1we30gLypOZWVkZWQgYnkgV2lu
ZG93cyBiZWNhdXNlIGl0IGRvZXNuJ3QgbGlrZSBlbXB0eSBmaWxlcyovCisvKgorICogVGhpcyBp
cyB0aGUgVUEgU3R5bGVTaGVldCBmb3IgPG9iamVjdD4gYW5kIDxlbWJlZD4gZWxlbWVudHMuCisg
KgorICogU3VjaCBlbGVtZW50cywgd2hlbiBzbmFwc2hvdHRlZCAocGF1c2VkKSwgd2lsbCBjb250
YWluIGEgU2hhZG93Um9vdAorICogd2l0aCB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKKyAqCisg
KiA8b2JqZWN0PgorICogICAjU2hhZG93Um9vdAorICogICAgIDxkaXYgY2xhc3M9InNuYXBzaG90
LWNvbnRhaW5lciI+CisgKiAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1vdmVybGF5Ij48L2Rp
dj4gPCEtLSBlLmcuIGZvciBkaW1taW5nIGNvbnRlbnQgLS0+CisgKiAgICAgICAgIDxkaXYgY2xh
c3M9InNuYXBzaG90LWxhYmVsIj4KKyAqICAgICAgICAgICA8c3BhbiBjbGFzcz0ic25hcHNob3Qt
dGl0bGUiPlNuYXBzaG90dGVkIFBsdWctSW48L3NwYW4+CisgKiAgICAgICAgICAgPHNwYW4gY2xh
c3M9InNuYXBzaG90LXN1YnRpdGxlIj5DbGljayB0byByZXN0YXJ0PC9zcGFuPgorICogICAgICAg
ICA8L2Rpdj4KKyAqICAgICAgIDwvZGl2PgorICogICAgIDwvZGl2PgorICoKKyAqLworCitvYmpl
Y3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgeworICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgd2lkdGg6IDEwMCU7Cisg
ICAgaGVpZ2h0OiAxMDAlOworfQorCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2lu
LWNvbnRlbnQgKiB7CisgICAgY3Vyc29yOiBoYW5kOworICAgIHBvaW50ZXItZXZlbnRzOiBub25l
OworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Cit9CisKK29iamVjdDo6LXdlYmtpdC1z
bmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVyIHsKKyAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworfQor
CitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNv
bnRhaW5lciAuc25hcHNob3Qtb3ZlcmxheSB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKKyAgICBib3gtc2l6aW5nOiBib3JkZXIt
Ym94OworICAgIGJvcmRlcjogMnB4IHNvbGlkICM4ODg7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiYSgwLCAwLCAwLCAwLjE1KTsKK30KKworb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBs
dWdpbi1jb250ZW50OmhvdmVyIC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LW92ZXJsYXkg
eworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7Cit9CisK
K29iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29u
dGFpbmVyIC5zbmFwc2hvdC1sYWJlbCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGJh
Y2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICBib3JkZXItcmFkaXVzOiAxMHB4OworICAgIG1h
cmdpbjogMWVtOworICAgIHBhZGRpbmc6IDAuMjVlbSAyZW07CisgICAgdGV4dC1hbGlnbjogY2Vu
dGVyOworfQorCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNu
YXBzaG90LWNvbnRhaW5lciAuc25hcHNob3QtbGFiZWwgLnNuYXBzaG90LXRpdGxlIHsKKyAgICBm
b250LXdlaWdodDogYm9sZDsKK30KKworb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdp
bi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LWxhYmVsIC5zbmFwc2hvdC1z
dWJ0aXRsZSB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworICAgIGNvbG9yOiAjNDQ0OworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRleCBlMjkwMmFkNzE3
NjQ2NTg2OGVmOTk1OGE4YTY0NGVlNTAwOTQwNTAzLi42ZGU3NjRiNTMzNWY2MGVkMmY1YjU0YzE3
ZjZmOTdmNjYxMzU5NWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50
LmNwcApAQCAtMjAxLDEwICsyMDEsOSBAQCB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIHRvUmVuZGVyRW1iZWRkZWRP
YmplY3QociktPmhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yRXZlbnQoZXZlbnQpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChyLT5pc1NuYXBzaG90
dGVkUGx1Z0luKCkgJiYgZGlzcGxheVN0YXRlKCkgPCBQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNs
aWNrKSB7Ci0gICAgICAgICAgICB0b1JlbmRlclNuYXBzaG90dGVkUGx1Z0luKHIpLT5oYW5kbGVF
dmVudChldmVudCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICB9IGVsc2Ug
aWYgKHIgJiYgci0+aXNTbmFwc2hvdHRlZFBsdWdJbigpICYmIGRpc3BsYXlTdGF0ZSgpIDwgUGxh
eWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykgeworICAgICAgICB0b1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luKHIpLT5oYW5kbGVFdmVudChldmVudCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBpZiAoIXIgfHwgIXItPmlzV2lkZ2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBkMGI1Mzk4ZGRiMjkyYWJlOWY1YzhhODhh
ZWY2ZmRjYWMzZDY0NDBmLi4wNWQ2ZTVlYWY1ZDc1MzcxOWE5NDBkMTJiOTBhZDBiMTRkOGM2ZGQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAK
QEAgLTIxLDE2ICsyMSwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNo
cm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgorI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlTG9hZGVy
LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRl
ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1v
dXNlRXZlbnQuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJOb2Rl
UmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbHVnSW5D
bGllbnQuaCIKICNpbmNsdWRlICJQbHVnSW5PcmlnaW5IYXNoLmgiCkBAIC00MCwxMCArNDQsMTQg
QEAKICNpbmNsdWRlICJSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290
LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgIlRleHQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCiBzdGF0aWMg
Y29uc3QgaW50IGF1dG9TdGFydFBsdWdJblNpemVUaHJlc2hvbGRXaWR0aCA9IDE7CiBzdGF0aWMg
Y29uc3QgaW50IGF1dG9TdGFydFBsdWdJblNpemVUaHJlc2hvbGRIZWlnaHQgPSAxOwogc3RhdGlj
IGNvbnN0IGludCBhdXRvU2hvd0xhYmVsU2l6ZVRocmVzaG9sZFdpZHRoID0gNDAwOwpAQCAtNjAs
NyArNjgsMTAgQEAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6SFRNTFBsdWdJbkltYWdlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2MKICAgICAsIG1fbmVlZHNXaWRnZXRV
cGRhdGUoIWNyZWF0ZWRCeVBhcnNlcikKICAgICAsIG1fc2hvdWxkUHJlZmVyUGx1Z0luc0Zvcklt
YWdlcyhwcmVmZXJQbHVnSW5zRm9ySW1hZ2VzT3B0aW9uID09IFNob3VsZFByZWZlclBsdWdJbnNG
b3JJbWFnZXMpCiAgICAgLCBtX25lZWRzRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKGZhbHNl
KQorICAgICwgbV9zaG91bGRTaG93U25hcHNob3RMYWJlbEF1dG9tYXRpY2FsbHkoZmFsc2UpCiAg
ICAgLCBtX3NpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lcih0aGlzLCAmSFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6c2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRmlyZWQsIHNpbXVsYXRlZE1vdXNlQ2xpY2tU
aW1lckRlbGF5KQorICAgICwgbV9zd2FwUmVuZGVyZXJUaW1lcih0aGlzLCAmSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6c3dhcFJlbmRlcmVyVGltZXJGaXJlZCkKKyAgICAsIG1fc25hcHNob3RJbWFn
ZSgwKQogewogICAgIHNldEhhc0N1c3RvbUNhbGxiYWNrcygpOwogfQpAQCAtMTMxLDIwICsxNDIs
MjcgQEAgUmVuZGVyT2JqZWN0KiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclMKICAgICAgICAgbV9uZWVkc0RvY3VtZW50QWN0
aXZhdGlvbkNhbGxiYWNrcyA9IHRydWU7CiAgICAgICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyRm9y
UGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKICAgICB9Ci0gICAgCisKKyAgICBp
ZiAoZGlzcGxheVN0YXRlKCkgPT0gRGlzcGxheWluZ1NuYXBzaG90KSB7CisgICAgICAgIFJlbmRl
clNuYXBzaG90dGVkUGx1Z0luKiByZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiA9IG5ldyAoYXJlbmEp
IFJlbmRlclNuYXBzaG90dGVkUGx1Z0luKHRoaXMpOworICAgICAgICByZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbi0+dXBkYXRlU25hcHNob3QobV9zbmFwc2hvdEltYWdlKTsKKyAgICAgICAgaWYgKG1f
c2hvdWxkU2hvd1NuYXBzaG90TGFiZWxBdXRvbWF0aWNhbGx5KQorICAgICAgICAgICAgcmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4tPnNldFNob3VsZFNob3dMYWJlbEF1dG9tYXRpY2FsbHkoKTsKKyAg
ICAgICAgcmV0dXJuIHJlbmRlclNuYXBzaG90dGVkUGx1Z0luOworICAgIH0KKwogICAgIC8vIEZh
bGxiYWNrIGNvbnRlbnQgYnJlYWtzIHRoZSBET00tPlJlbmRlcmVyIGNsYXNzIHJlbGF0aW9uc2hp
cCBvZiB0aGlzCiAgICAgLy8gY2xhc3MgYW5kIGFsbCBzdXBlcmNsYXNzZXMgYmVjYXVzZSBjcmVh
dGVPYmplY3Qgd29uJ3QgbmVjZXNzYXJpbHkKICAgICAvLyByZXR1cm4gYSBSZW5kZXJFbWJlZGRl
ZE9iamVjdCwgUmVuZGVyUGFydCBvciBldmVuIFJlbmRlcldpZGdldC4KICAgICBpZiAodXNlRmFs
bGJhY2tDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVj
dCh0aGlzLCBzdHlsZSk7CisKICAgICBpZiAoaXNJbWFnZVR5cGUoKSkgewogICAgICAgICBSZW5k
ZXJJbWFnZSogaW1hZ2UgPSBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZSh0aGlzKTsKICAgICAgICAg
aW1hZ2UtPnNldEltYWdlUmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkpOwog
ICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfQogCi0gICAgaWYgKGRvY3VtZW50KCktPnBhZ2Uo
KSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCktPnBsdWdJblNuYXBzaG90dGluZ0Vu
YWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNuYXBzaG90dGVkUGx1
Z0luKHRoaXMpOwogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJFbWJlZGRlZE9iamVjdCh0
aGlzKTsKIH0KIApAQCAtMjU3LDExICsyNzUsNzYgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50Ojp1cGRhdGVXaWRnZXRDYWxsYmFjayhOb2RlKiBuLCB1bnNpZ25lZCkKIAogdm9pZCBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVTbmFwc2hvdChQYXNzUmVmUHRyPEltYWdlPiBpbWFn
ZSkKIHsKLSAgICBpZiAoZGlzcGxheVN0YXRlKCkgPiBEaXNwbGF5aW5nU25hcHNob3QgfHwgIXJl
bmRlcmVyKCktPmlzU25hcHNob3R0ZWRQbHVnSW4oKSkKKyAgICBpZiAoZGlzcGxheVN0YXRlKCkg
PiBEaXNwbGF5aW5nU25hcHNob3QpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc25hcHNob3RJ
bWFnZSA9IGltYWdlOworICAgIGlmIChyZW5kZXJlcigpLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkp
IHsKKyAgICAgICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihyZW5kZXJlcigpKS0+dXBkYXRl
U25hcHNob3QoaW1hZ2UpOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgdG9SZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbihyZW5kZXJlcigpKS0+dXBkYXRlU25hcHNob3QoaW1hZ2UpOwogICAg
IHNldERpc3BsYXlTdGF0ZShEaXNwbGF5aW5nU25hcHNob3QpOworICAgIG1fc3dhcFJlbmRlcmVy
VGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKK3sKKyAgICBEb2N1
bWVudCogZG9jID0gZG9jdW1lbnQoKTsKKworICAgIFJlZlB0cjxFbGVtZW50PiBzaGFkb3dDb250
YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7CisgICAgc2hhZG93Q29udGFpbmVy
LT5zZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250
ZW50IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworCisgICAgUmVmUHRy
PEVsZW1lbnQ+IGNvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKKyAgICBj
b250YWluZXItPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZygic25hcHNob3Qt
Y29udGFpbmVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworCisgICAg
UmVmUHRyPEVsZW1lbnQ+IG92ZXJsYXkgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7Cisg
ICAgb3ZlcmxheS0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJzbmFwc2hv
dC1vdmVybGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIGNv
bnRhaW5lci0+YXBwZW5kQ2hpbGQob3ZlcmxheSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisKKyAg
ICBSZWZQdHI8RWxlbWVudD4gbGFiZWwgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7Cisg
ICAgbGFiZWwtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZygic25hcHNob3Qt
bGFiZWwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisKKyAgICBTdHJp
bmcgdGl0bGVUZXh0ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFRpdGxlKCk7CisgICAgU3RyaW5n
IHN1YnRpdGxlVGV4dCA9IHNuYXBzaG90dGVkUGx1Z0luTGFiZWxTdWJ0aXRsZSgpOworICAgIGlm
IChkb2N1bWVudCgpLT5wYWdlKCkpIHsKKyAgICAgICAgU3RyaW5nIGNsaWVudFRpdGxlVGV4dCA9
IGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbHVnSW5TdGFydExhYmVs
VGl0bGUoKTsKKyAgICAgICAgaWYgKCFjbGllbnRUaXRsZVRleHQuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgdGl0bGVUZXh0ID0gY2xpZW50VGl0bGVUZXh0OworICAgICAgICBTdHJpbmcgY2xpZW50
U3VidGl0bGVUZXh0ID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBs
dWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSgpOworICAgICAgICBpZiAoIWNsaWVudFN1YnRpdGxlVGV4
dC5pc0VtcHR5KCkpCisgICAgICAgICAgICBzdWJ0aXRsZVRleHQgPSBjbGllbnRTdWJ0aXRsZVRl
eHQ7CisgICAgfQorCisgICAgUmVmUHRyPEVsZW1lbnQ+IHRpdGxlID0gSFRNTERpdkVsZW1lbnQ6
OmNyZWF0ZShkb2MpOworICAgIHRpdGxlLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNT
dHJpbmcoInNuYXBzaG90LXRpdGxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIHRpdGxlLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKHRpdGxlVGV4
dCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIGxhYmVsLT5hcHBlbmRDaGlsZCh0aXRsZSwg
QVNTRVJUX05PX0VYQ0VQVElPTik7CisKKyAgICBSZWZQdHI8RWxlbWVudD4gc3ViVGl0bGUgPSBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7CisgICAgc3ViVGl0bGUtPnNldEF0dHJpYnV0ZShj
bGFzc0F0dHIsIEF0b21pY1N0cmluZygic25hcHNob3Qtc3VidGl0bGUiLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc3ViVGl0bGUtPmFwcGVuZENoaWxkKGRvYy0+
Y3JlYXRlVGV4dE5vZGUoc3VidGl0bGVUZXh0KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAg
bGFiZWwtPmFwcGVuZENoaWxkKHN1YlRpdGxlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKworICAg
IGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQobGFiZWwsIEFTU0VSVF9OT19FWENFUFRJT04pOworCisg
ICAgc2hhZG93Q29udGFpbmVyLT5hcHBlbmRDaGlsZChjb250YWluZXIsIEFTU0VSVF9OT19FWENF
UFRJT04pOworICAgIHJvb3QtPmFwcGVuZENoaWxkKHNoYWRvd0NvbnRhaW5lciwgQVNTRVJUX05P
X0VYQ0VQVElPTik7Cit9CisKK2Jvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y2hpbGRTaG91
bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY2hpbGRDb250ZXh0
KSBjb25zdAoreworICAgIHJldHVybiAoY2hpbGRDb250ZXh0LmlzT25VcHBlckVuY2Fwc3VsYXRp
b25Cb3VuZGFyeSgpICYmIEhUTUxFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNo
aWxkQ29udGV4dCkpOworfQorCit2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN3YXBSZW5k
ZXJlclRpbWVyRmlyZWQoVGltZXI8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4qKQoreworICAgIEFT
U0VSVChkaXNwbGF5U3RhdGUoKSA9PSBEaXNwbGF5aW5nU25hcHNob3QpOworICAgIGlmIChkaXNw
bGF5U3RhdGUoKSA9PSBEaXNwbGF5aW5nU25hcHNob3QgJiYgIXVzZXJBZ2VudFNoYWRvd1Jvb3Qo
KSkgeworICAgICAgICAvLyBDcmVhdGUgYSBzaGFkb3cgcm9vdCwgd2hpY2ggd2lsbCB0cmlnZ2Vy
IHRoZSBjb2RlIHRvIGFkZCBhIHNuYXBzaG90IGNvbnRhaW5lcgorICAgICAgICAvLyBhbmQgcmVh
dHRhY2gsIHRodXMgbWFraW5nIGEgbmV3IFJlbmRlcmVyLgorICAgICAgICBlbnN1cmVVc2VyQWdl
bnRTaGFkb3dSb290KCk7CisgICAgfQogfQogCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OnVzZXJEaWRDbGlja1NuYXBzaG90KFBhc3NSZWZQdHI8TW91c2VFdmVudD4gZXZlbnQpCkBAIC0y
NjksNiArMzUyLDggQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1c2VyRGlkQ2xpY2tT
bmFwc2hvdChQYXNzUmVmUHRyPE1vdXNlRXZlbnQ+IGV2ZW50KQogICAgIG1fcGVuZGluZ0NsaWNr
RXZlbnRGcm9tU25hcHNob3QgPSBldmVudDsKICAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpKQog
ICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPnBsdWdJbkNsaWVudCgpLT5hZGRBdXRvU3RhcnRP
cmlnaW4oZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+YmFzZVVS
TCgpLmhvc3QoKSwgbV9wbHVnSW5PcmlnaW5IYXNoKTsKKworICAgIHJlYXR0YWNoKCk7CiB9CiAK
IHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTW91c2VDbGljaygp
CkBAIC0zMTgsMTYgKzQwMywxMiBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1YmZy
YW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBLVVJMJiB1cmwpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAoIXJlbmRlcmVyKCktPmlzU25hcHNob3R0ZWRQbHVnSW4oKSkg
ewotICAgICAgICBMT0coUGx1Z2lucywgIiVwIFJlbmRlcmVyIGlzIG5vdCBzbmFwc2hvdHRlZCBw
bHVnaW4sIHNldCB0byBwbGF5IiwgdGhpcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAg
aWYgKFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7CiAgICAgICAg
IExPRyhQbHVnaW5zLCAiJXAgU2NyaXB0IGlzIHByb2Nlc3NpbmcgdXNlciBnZXN0dXJlLCBzZXQg
dG8gcGxheSIsIHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTGF5b3V0UmVj
dCByZWN0ID0gdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihyZW5kZXJlcigpKS0+Y29udGVudEJv
eFJlY3QoKTsKKyAgICBMYXlvdXRSZWN0IHJlY3QgPSB0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHJl
bmRlcmVyKCkpLT5jb250ZW50Qm94UmVjdCgpOwogICAgIGludCB3aWR0aCA9IHJlY3Qud2lkdGgo
KTsKICAgICBpbnQgaGVpZ2h0ID0gcmVjdC5oZWlnaHQoKTsKICAgICBpZiAoIXdpZHRoIHx8ICFo
ZWlnaHQgfHwgKHdpZHRoIDw9IGF1dG9TdGFydFBsdWdJblNpemVUaHJlc2hvbGRXaWR0aCAmJiBo
ZWlnaHQgPD0gYXV0b1N0YXJ0UGx1Z0luU2l6ZVRocmVzaG9sZEhlaWdodCkpIHsKQEAgLTM1MCwx
MCArNDMxLDEzIEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJX
aWxsQ3JlYXRlUGx1Z0luKGNvbnN0IEtVUkwmIHVybCkKICAgICB9CiAKICAgICBpZiAoc2hvdWxk
UGx1Z0luU2hvd0xhYmVsQXV0b21hdGljYWxseShkb2N1bWVudCgpLT5wYWdlKCktPm1haW5GcmFt
ZSgpLT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpLCB0aGlzKSkKLSAgICAgICAgdG9SZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbihyZW5kZXJlcigpKS0+c2V0U2hvdWxkU2hvd0xhYmVsQXV0b21hdGljYWxs
eSgpOworICAgICAgICBzZXRTaG91bGRTaG93U25hcHNob3RMYWJlbEF1dG9tYXRpY2FsbHkoKTsK
IAogICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBoYXNoICV4IGlzICVkeCVkLCBvcmlnaW4g
aXMgbm90IGF1dG8tc3RhcnQsIHNldCB0byB3YWl0IGZvciBzbmFwc2hvdCIsIHRoaXMsIG1fcGx1
Z0luT3JpZ2luSGFzaCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgc2V0RGlzcGxheVN0YXRlKFdhaXRp
bmdGb3JTbmFwc2hvdCk7CisgICAgLy8gV2UgbWF5IGhhdmUgZ290IHRvIHRoaXMgcG9pbnQgYnkg
cmVzdGFydGluZyBhIHNuYXBzaG90dGVkIHBsdWctaW4sIGluIHdoaWNoIGNhc2Ugd2UgZG9uJ3Qg
d2FudCB0bworICAgIC8vIHJlc2V0IHRoZSBkaXNwbGF5IHN0YXRlLgorICAgIGlmIChkaXNwbGF5
U3RhdGUoKSAhPSBQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKQorICAgICAgICBzZXREaXNw
bGF5U3RhdGUoV2FpdGluZ0ZvclNuYXBzaG90KTsKIH0KIAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50OjpzdWJmcmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJbihjb25zdCBXaWRnZXQqIHdpZGdl
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKaW5kZXgg
MDQ3MzFiNWU0ZWU2M2E1NGI4MTk5ZWJmMjNlM2Q2NjI2ZDBiNjRjYi4uZDJiODFiZDU2NjkwOGY2
Mjc0YmU5ZjBhNWQyYjAyZDBiMzc2MTk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmgKQEAgLTI1LDExICsyNSwxMyBAQAogCiAjaW5jbHVkZSAiUmVu
ZGVyU3R5bGUuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxJbWFnZUxvYWRlcjsKIGNs
YXNzIEZyYW1lTG9hZGVyOworY2xhc3MgSW1hZ2U7CiBjbGFzcyBNb3VzZUV2ZW50OwogY2xhc3Mg
V2lkZ2V0OwogCkBAIC0zNyw3ICszOSw3IEBAIGVudW0gUGx1Z2luQ3JlYXRpb25PcHRpb24gewog
ICAgIENyZWF0ZUFueVdpZGdldFR5cGUsCiAgICAgQ3JlYXRlT25seU5vbk5ldHNjYXBlUGx1Z2lu
cywKIH07Ci0gICAgCisKIGVudW0gUHJlZmVyUGx1Z0luc0ZvckltYWdlc09wdGlvbiB7CiAgICAg
U2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcywKICAgICBTaG91bGROb3RQcmVmZXJQbHVnSW5z
Rm9ySW1hZ2VzCkBAIC05MiwyMiArOTQsMzIgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpOwot
ICAgIAorCisgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3Qg
Tm9kZVJlbmRlcmluZ0NvbnRleHQmKSBjb25zdCBPVkVSUklERTsKKyAgICB2b2lkIGRpZEFkZFVz
ZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopIE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2
b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogCiAgICAgdm9pZCB1cGRhdGVXaWRnZXRJZk5l
Y2Vzc2FyeSgpOwogICAgIHZpcnR1YWwgYm9vbCB1c2VGYWxsYmFja0NvbnRlbnQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNuYXBzaG90
KFBhc3NSZWZQdHI8SW1hZ2U+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hQ
ZW5kaW5nTW91c2VDbGljaygpIE9WRVJSSURFOwogICAgIHZvaWQgc2ltdWxhdGVkTW91c2VDbGlj
a1RpbWVyRmlyZWQoRGVmZXJyYWJsZU9uZVNob3RUaW1lcjxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
PiopOwogCisgICAgdm9pZCBzd2FwUmVuZGVyZXJUaW1lckZpcmVkKFRpbWVyPEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ+Kik7CisKKyAgICB2b2lkIHNldFNob3VsZFNob3dTbmFwc2hvdExhYmVsQXV0
b21hdGljYWxseSgpIHsgbV9zaG91bGRTaG93U25hcHNob3RMYWJlbEF1dG9tYXRpY2FsbHkgPSB0
cnVlOyB9CisKICAgICBib29sIG1fbmVlZHNXaWRnZXRVcGRhdGU7CiAgICAgYm9vbCBtX3Nob3Vs
ZFByZWZlclBsdWdJbnNGb3JJbWFnZXM7CiAgICAgYm9vbCBtX25lZWRzRG9jdW1lbnRBY3RpdmF0
aW9uQ2FsbGJhY2tzOworICAgIGJvb2wgbV9zaG91bGRTaG93U25hcHNob3RMYWJlbEF1dG9tYXRp
Y2FsbHk7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX2N1c3RvbVN0eWxlRm9yUGFnZUNhY2hl
OwogICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBtX3BlbmRpbmdDbGlja0V2ZW50RnJvbVNuYXBzaG90
OwogICAgIERlZmVycmFibGVPbmVTaG90VGltZXI8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4gbV9z
aW11bGF0ZWRNb3VzZUNsaWNrVGltZXI7CisgICAgVGltZXI8SFRNTFBsdWdJbkltYWdlRWxlbWVu
dD4gbV9zd2FwUmVuZGVyZXJUaW1lcjsKKyAgICBSZWZQdHI8SW1hZ2U+IG1fc25hcHNob3RJbWFn
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCmluZGV4IGE2MzUxYzlkNDc2
YjY4ZWIxMGI4MTAxODQyY2M5ODY4N2MyZDU4ZTkuLjIzZTBiMTAzMjlhYWRmOGJjZmFhMzdjZDM2
YjFjOTcxN2UzZjI5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtNDAsMTQgKzQwLDEzIEBACiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlBhdGguaCIKKyNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU291cmNlR3JhcGhpYy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBpbnQgYXV0b1N0YXJ0UGx1Z0luU2l6ZVRocmVz
aG9sZFdpZHRoID0gMTsKIHN0YXRpYyBjb25zdCBpbnQgYXV0b1N0YXJ0UGx1Z0luU2l6ZVRocmVz
aG9sZEhlaWdodCA9IDE7Ci1zdGF0aWMgY29uc3QgaW50IHN0YXJ0TGFiZWxQYWRkaW5nID0gMTA7
IC8vIExhYmVsIHNob3VsZCBiZSAxMHB4IGZyb20gZWRnZSBvZiBib3guCi1zdGF0aWMgY29uc3Qg
aW50IHN0YXJ0TGFiZWxJbnNldCA9IDIwOyAvLyBCdXQgdGhlIGxhYmVsIGlzIGluc2V0IGZyb20g
aXRzIGJveCBhbHNvLiBGSVhNRTogVGhpcyB3aWxsIGJlIHJlbW92ZWQgd2hlbiB3ZSBnbyB0byBh
IFNoYWRvd0RPTSBhcHByb2FjaC4KIHN0YXRpYyBjb25zdCBkb3VibGUgc2hvd0xhYmVsQWZ0ZXJN
b3VzZU92ZXJEZWxheSA9IDE7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNob3dMYWJlbEF1dG9tYXRp
Y2FsbHlEZWxheSA9IDM7CiBzdGF0aWMgY29uc3QgaW50IHNuYXBzaG90TGFiZWxCbHVyUmFkaXVz
ID0gNTsKQEAgLTEwMCw3ICs5OSw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW5CbHVy
RmlsdGVyOjphcHBseSgpCiAjZW5kaWYKIAogUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OlJlbmRl
clNuYXBzaG90dGVkUGx1Z0luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIGVsZW1lbnQpCi0gICAg
OiBSZW5kZXJFbWJlZGRlZE9iamVjdChlbGVtZW50KQorICAgIDogUmVuZGVyQmxvY2soZWxlbWVu
dCkKICAgICAsIG1fc25hcHNob3RSZXNvdXJjZShSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUo
KSkKICAgICAsIG1fc2hvdWxkU2hvd0xhYmVsKGZhbHNlKQogICAgICwgbV9zaG91bGRTaG93TGFi
ZWxBdXRvbWF0aWNhbGx5KGZhbHNlKQpAQCAtMTQ1LDI4ICsxNDQsMTcgQEAgdm9pZCBSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbjo6dXBkYXRlU25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2Up
CiAKIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKHBsdWdJbklt
YWdlRWxlbWVudCgpLT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5n
V2l0aFBlbmRpbmdNb3VzZUNsaWNrKSB7Ci0gICAgICAgIFJlbmRlclJlcGxhY2VkOjpwYWludChw
YWludEluZm8sIHBhaW50T2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJl
bmRlckVtYmVkZGVkT2JqZWN0OjpwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKLX0KLQot
dm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQotewotICAgIGlmIChwbHVn
SW5JbWFnZUVsZW1lbnQoKS0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UGxh
eWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykgeworICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0g
UGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCAmJiBwbHVnSW5JbWFnZUVsZW1lbnQoKS0+ZGlzcGxh
eVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGlj
aykgewogICAgICAgICBpZiAobV9zaG91bGRTaG93TGFiZWwpCi0gICAgICAgICAgICBwYWludFJl
cGxhY2VkU25hcHNob3RXaXRoTGFiZWwocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CisgICAgICAg
ICAgICBwYWludFNuYXBzaG90V2l0aExhYmVsKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBwYWludFJlcGxhY2VkU25hcHNob3QocGFpbnRJbmZvLCBw
YWludE9mZnNldCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHBhaW50U25hcHNob3Qo
cGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgfQogCi0gICAgUmVuZGVyRW1iZWRkZWRPYmpl
Y3Q6OnBhaW50UmVwbGFjZWQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CisgICAgUmVuZGVyQmxv
Y2s6OnBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogfQogCi12b2lkIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KEltYWdlKiBpbWFnZSwgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKK3ZvaWQgUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3RJbWFnZShJbWFnZSogaW1hZ2UsIFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgTGF5b3V0
VW5pdCBjV2lkdGggPSBjb250ZW50V2lkdGgoKTsKICAgICBMYXlvdXRVbml0IGNIZWlnaHQgPSBj
b250ZW50SGVpZ2h0KCk7CkBAIC0xODAsNyArMTY4LDcgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbjo6cGFpbnRTbmFwc2hvdChJbWFnZSogaW1hZ2UsIFBhaW50SW5mbyYgcGFpbnRJbmZv
LAogI2VuZGlmCiAKICAgICBMYXlvdXRTaXplIGNvbnRlbnRTaXplKGNXaWR0aCwgY0hlaWdodCk7
Ci0gICAgTGF5b3V0UG9pbnQgY29udGVudExvY2F0aW9uID0gcGFpbnRPZmZzZXQ7CisgICAgTGF5
b3V0UG9pbnQgY29udGVudExvY2F0aW9uID0gbG9jYXRpb24oKSArIHBhaW50T2Zmc2V0OwogICAg
IGNvbnRlbnRMb2NhdGlvbi5tb3ZlKGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCksIGJvcmRl
clRvcCgpICsgcGFkZGluZ1RvcCgpKTsKIAogICAgIExheW91dFJlY3QgcmVjdChjb250ZW50TG9j
YXRpb24sIGNvbnRlbnRTaXplKTsKQEAgLTE5MiwzMSArMTgwLDEzIEBAIHZvaWQgUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QoSW1hZ2UqIGltYWdlLCBQYWludEluZm8mIHBh
aW50SW5mbywKICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlKCktPmNvbG9yU3Bh
Y2UoKSwgYWxpZ25lZFJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIHNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKIH0KIAotdm9pZCBSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRSZXBsYWNlZFNuYXBzaG90KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCit2b2lkIFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IG1fc25h
cHNob3RSZXNvdXJjZS0+aW1hZ2UoKTsKICAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFpbnRTbmFwc2hvdChpbWFnZS5nZXQoKSwgcGFp
bnRJbmZvLCBwYWludE9mZnNldCk7Ci19Ci0KLUltYWdlKiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bjo6c3RhcnRMYWJlbEltYWdlKExhYmVsU2l6ZSBzaXplKSBjb25zdAotewotICAgIHN0YXRpYyBJ
bWFnZSogbGFiZWxJbWFnZXNbMl0gPSB7IDAsIDAgfTsKLSAgICBzdGF0aWMgYm9vbCBpbml0aWFs
aXplZEltYWdlc1syXSA9IHsgZmFsc2UsIGZhbHNlIH07Ci0KLSAgICBpbnQgYXJyYXlJbmRleCA9
IHN0YXRpY19jYXN0PGludD4oc2l6ZSk7Ci0gICAgaWYgKGxhYmVsSW1hZ2VzW2FycmF5SW5kZXhd
KQotICAgICAgICByZXR1cm4gbGFiZWxJbWFnZXNbYXJyYXlJbmRleF07Ci0gICAgaWYgKGluaXRp
YWxpemVkSW1hZ2VzW2FycmF5SW5kZXhdKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChk
b2N1bWVudCgpLT5wYWdlKCkpIHsKLSAgICAgICAgbGFiZWxJbWFnZXNbYXJyYXlJbmRleF0gPSBk
b2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbElt
YWdlKHNpemUpLmxlYWtSZWYoKTsKLSAgICAgICAgaW5pdGlhbGl6ZWRJbWFnZXNbYXJyYXlJbmRl
eF0gPSB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gbGFiZWxJbWFnZXNbYXJyYXlJbmRleF07Cisg
ICAgcGFpbnRTbmFwc2hvdEltYWdlKGltYWdlLmdldCgpLCBwYWludEluZm8sIHBhaW50T2Zmc2V0
KTsKIH0KIAogI2lmIEVOQUJMRShGSUxURVJTKQpAQCAtMjM4LDcgKzIwOCw3IEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPEltYWdlPiBzbmFwc2hvdHRlZFBsdWdpbkltYWdlRm9yTGFiZWxEaXNwbGF5KFBh
c3NSZWZQdHI8SW1hZ2U+CiB9CiAjZW5kaWYKIAotdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bjo6cGFpbnRSZXBsYWNlZFNuYXBzaG90V2l0aExhYmVsKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCit2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1
Z0luOjpwYWludFNuYXBzaG90V2l0aExhYmVsKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgaWYgKGNvbnRlbnRCb3hSZWN0KCkuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0yNDcsNDMgKzIxNywyNiBAQCB2b2lkIFJlbmRl
clNuYXBzaG90dGVkUGx1Z0luOjpwYWludFJlcGxhY2VkU25hcHNob3RXaXRoTGFiZWwoUGFpbnRJ
bmZvJiBwYWludEluZgogICAgICAgICByZXR1cm47CiAKICAgICBtX3Nob3dlZExhYmVsT25jZSA9
IHRydWU7Ci0gICAgTGF5b3V0UmVjdCByZWN0ID0gY29udGVudEJveFJlY3QoKTsKLSAgICBMYXlv
dXRSZWN0IGxhYmVsUmVjdCA9IHRyeVRvRml0U3RhcnRMYWJlbChMYWJlbFNpemVMYXJnZSwgcmVj
dCk7Ci0gICAgTGFiZWxTaXplIHNpemUgPSBOb0xhYmVsOwotICAgIGlmICghbGFiZWxSZWN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgc2l6ZSA9IExhYmVsU2l6ZUxhcmdlOwotICAgIGVsc2UgewotICAg
ICAgICBsYWJlbFJlY3QgPSB0cnlUb0ZpdFN0YXJ0TGFiZWwoTGFiZWxTaXplU21hbGwsIHJlY3Qp
OwotICAgICAgICBpZiAoIWxhYmVsUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBzaXplID0g
TGFiZWxTaXplU21hbGw7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBJbWFnZSogbGFiZWxJbWFnZSA9IHN0YXJ0TGFiZWxJbWFnZShzaXplKTsKLSAgICBp
ZiAoIWxhYmVsSW1hZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICBMYXlvdXRSZWN0IGxhYmVsUmVj
dDsKIAogICAgIFJlZlB0cjxJbWFnZT4gc25hcHNob3RJbWFnZSA9IG1fc25hcHNob3RSZXNvdXJj
ZS0+aW1hZ2UoKTsKICAgICBpZiAoIXNuYXBzaG90SW1hZ2UgfHwgc25hcHNob3RJbWFnZS0+aXNO
dWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShGSUxURVJTKQotICAgIFJlZlB0
cjxJbWFnZT4gYmx1cnJlZFNuYXBzaG90SW1hZ2UgPSBtX3NuYXBzaG90UmVzb3VyY2VGb3JMYWJl
bC0+aW1hZ2UoKTsKLSAgICBpZiAoIWJsdXJyZWRTbmFwc2hvdEltYWdlIHx8IGJsdXJyZWRTbmFw
c2hvdEltYWdlLT5pc051bGwoKSkgewotICAgICAgICBibHVycmVkU25hcHNob3RJbWFnZSA9IHNu
YXBzaG90dGVkUGx1Z2luSW1hZ2VGb3JMYWJlbERpc3BsYXkoc25hcHNob3RJbWFnZSwgbGFiZWxS
ZWN0KTsKLSAgICAgICAgbV9zbmFwc2hvdFJlc291cmNlRm9yTGFiZWwtPnNldENhY2hlZEltYWdl
KG5ldyBDYWNoZWRJbWFnZShibHVycmVkU25hcHNob3RJbWFnZS5nZXQoKSkpOworICAgIC8vIEZJ
WE1FOiBUZW1wb3JhcmlseSBkaXNhYmxpbmcgdGhlIGJsdXIgYmVoaW5kIHRoZSBsYWJlbC4KKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MzY4CisgICAg
aWYgKCFsYWJlbFJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxJbWFnZT4gYmx1cnJl
ZFNuYXBzaG90SW1hZ2UgPSBtX3NuYXBzaG90UmVzb3VyY2VGb3JMYWJlbC0+aW1hZ2UoKTsKKyAg
ICAgICAgaWYgKCFibHVycmVkU25hcHNob3RJbWFnZSB8fCBibHVycmVkU25hcHNob3RJbWFnZS0+
aXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGJsdXJyZWRTbmFwc2hvdEltYWdlID0gc25hcHNob3R0
ZWRQbHVnaW5JbWFnZUZvckxhYmVsRGlzcGxheShzbmFwc2hvdEltYWdlLCBsYWJlbFJlY3QpOwor
ICAgICAgICAgICAgbV9zbmFwc2hvdFJlc291cmNlRm9yTGFiZWwtPnNldENhY2hlZEltYWdlKG5l
dyBDYWNoZWRJbWFnZShibHVycmVkU25hcHNob3RJbWFnZS5nZXQoKSkpOworICAgICAgICB9Cisg
ICAgICAgIHNuYXBzaG90SW1hZ2UgPSBibHVycmVkU25hcHNob3RJbWFnZTsKICAgICB9Ci0gICAg
c25hcHNob3RJbWFnZSA9IGJsdXJyZWRTbmFwc2hvdEltYWdlOwogI2VuZGlmCiAKLSAgICBwYWlu
dFNuYXBzaG90KHNuYXBzaG90SW1hZ2UuZ2V0KCksIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwot
Ci0gICAgLy8gUmVtZW1iZXIgdGhhdCB0aGUgbGFiZWxSZWN0IGluY2x1ZGVzIHRoZSBsYWJlbCBp
bnNldCwgc28gd2UgbmVlZCB0byBhZGp1c3QgZm9yIGl0LgotICAgIHBhaW50SW5mby5jb250ZXh0
LT5kcmF3SW1hZ2UobGFiZWxJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEludFJlY3Qocm91bmRlZEludFBvaW50KHBhaW50T2Zmc2V0
ICsgbGFiZWxSZWN0LmxvY2F0aW9uKCkgLSBJbnRTaXplKHN0YXJ0TGFiZWxJbnNldCwgc3RhcnRM
YWJlbEluc2V0KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJv
dW5kZWRJbnRTaXplKGxhYmVsUmVjdC5zaXplKCkgKyBJbnRTaXplKDIgKiBzdGFydExhYmVsSW5z
ZXQsIDIgKiBzdGFydExhYmVsSW5zZXQpKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsYWJlbEltYWdlLT5yZWN0KCkpOworICAgIHBhaW50U25hcHNob3RJbWFnZShzbmFwc2hv
dEltYWdlLmdldCgpLCBwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKIH0KIAogdm9pZCBSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbjo6cmVwYWludExhYmVsKCkKQEAgLTMwOSw3ICsyNjIsNyBAQCBDdXJz
b3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNvcihjb25zdCBMYXlv
dXRQb2ludCYgcG9pbnQsIEN1cgogICAgICAgICBvdmVycmlkZUN1cnNvciA9IGhhbmRDdXJzb3Io
KTsKICAgICAgICAgcmV0dXJuIFNldEN1cnNvcjsKICAgICB9Ci0gICAgcmV0dXJuIFJlbmRlckVt
YmVkZGVkT2JqZWN0OjpnZXRDdXJzb3IocG9pbnQsIG92ZXJyaWRlQ3Vyc29yKTsKKyAgICByZXR1
cm4gUmVuZGVyQmxvY2s6OmdldEN1cnNvcihwb2ludCwgb3ZlcnJpZGVDdXJzb3IpOwogfQogCiB2
b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudChFdmVudCogZXZlbnQpCkBA
IC0zMjUsMTIgKzI3OCw2IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmhhbmRsZUV2
ZW50KEV2ZW50KiBldmVudCkKIAogICAgICAgICBwbHVnSW5JbWFnZUVsZW1lbnQoKS0+c2V0RGlz
cGxheVN0YXRlKEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNr
KTsKICAgICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50KCktPnVzZXJEaWRDbGlja1NuYXBzaG90KG1v
dXNlRXZlbnQpOwotCi0gICAgICAgIGlmICh3aWRnZXQoKSkgewotICAgICAgICAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICAgICAgZnJhbWUt
PmxvYWRlcigpLT5jbGllbnQoKS0+cmVjcmVhdGVQbHVnaW4od2lkZ2V0KCkpOwotICAgICAgICAg
ICAgcmVwYWludCgpOwotICAgICAgICB9CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOwogICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vk
b3duRXZlbnQpIHsKICAgICAgICAgaWYgKG1vdXNlRXZlbnQtPmJ1dHRvbigpICE9IExlZnRCdXR0
b24pCkBAIC0zNTgsMjcgKzMwNSw2IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46Omhh
bmRsZUV2ZW50KEV2ZW50KiBldmVudCkKICAgICB9CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW46OnRyeVRvRml0U3RhcnRMYWJlbChMYWJlbFNpemUgc2l6ZSwgY29uc3Qg
TGF5b3V0UmVjdCYgY29udGVudEJveCkgY29uc3QKLXsKLSAgICBJbWFnZSogbGFiZWxJbWFnZSA9
IHN0YXJ0TGFiZWxJbWFnZShzaXplKTsKLSAgICBpZiAoIWxhYmVsSW1hZ2UpCi0gICAgICAgIHJl
dHVybiBMYXlvdXRSZWN0KCk7Ci0KLSAgICAvLyBBc3N1bWUgdGhhdCB0aGUgbGFiZWxJbWFnZSBo
YXMgYmVlbiBwcm92aWRlZCB0byBtYXRjaCBvdXIgZGV2aWNlIHNjYWxlLgotICAgIGZsb2F0IHNj
YWxlRmFjdG9yID0gMTsKLSAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICBzY2Fs
ZUZhY3RvciA9IGRvY3VtZW50KCktPnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBJ
bnRTaXplIGxhYmVsSW1hZ2VTaXplID0gbGFiZWxJbWFnZS0+c2l6ZSgpOwotICAgIGxhYmVsSW1h
Z2VTaXplLnNjYWxlKDEgLyAoc2NhbGVGYWN0b3IgPyBzY2FsZUZhY3RvciA6IDEpKTsKLQotICAg
IExheW91dFNpemUgbGFiZWxTaXplID0gbGFiZWxJbWFnZVNpemUgLSBMYXlvdXRTaXplKDIgKiBz
dGFydExhYmVsSW5zZXQsIDIgKiBzdGFydExhYmVsSW5zZXQpOwotICAgIExheW91dFJlY3QgY2Fu
ZGlkYXRlUmVjdChjb250ZW50Qm94Lm1heFhNaW5ZQ29ybmVyKCkgKyBMYXlvdXRTaXplKC1zdGFy
dExhYmVsUGFkZGluZywgc3RhcnRMYWJlbFBhZGRpbmcpICsgTGF5b3V0U2l6ZSgtbGFiZWxTaXpl
LndpZHRoKCksIDApLCBsYWJlbFNpemUpOwotICAgIC8vIFRoZSBtaW5pbXVtIGFsbG93ZWQgY29u
dGVudCBib3ggc2l6ZSBpcyB0aGUgbGFiZWwgaW1hZ2UgcGxhY2VkIGluIHRoZSBjZW50ZXIgb2Yg
dGhlIGJveCwgc3Vycm91bmRlZCBieSBzdGFydExhYmVsUGFkZGluZy4KLSAgICBpZiAoY2FuZGlk
YXRlUmVjdC54KCkgPCBzdGFydExhYmVsUGFkZGluZyB8fCBjYW5kaWRhdGVSZWN0Lm1heFkoKSA+
IGNvbnRlbnRCb3guaGVpZ2h0KCkgLSBzdGFydExhYmVsUGFkZGluZykKLSAgICAgICAgcmV0dXJu
IExheW91dFJlY3QoKTsKLSAgICByZXR1cm4gY2FuZGlkYXRlUmVjdDsKLX0KLQogdm9pZCBSZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbjo6cmVzZXREZWxheVRpbWVyKFNob3dSZWFzb24gcmVhc29uKQog
ewogICAgIG1fc2hvd1JlYXNvbiA9IHJlYXNvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgKaW5kZXggYjlkZTYyY2JhYzJhYWNmYTVh
MTRjNjliZDQyYTY5MmZmZTY1NTc3NC4uYTY2N2I0ZjcxMWVlMWZmYjU4NWNmMjMwMzNkZmU0ZWMx
Y2RkYmUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBz
aG90dGVkUGx1Z0luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBz
aG90dGVkUGx1Z0luLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW5faAogI2RlZmluZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbl9oCiAKLSNpbmNsdWRl
ICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAKICNp
bmNsdWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTM1
LDE3ICszNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ7CiAKLWNsYXNzIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luIDogcHVibGljIFJlbmRl
ckVtYmVkZGVkT2JqZWN0IHsKK2NsYXNzIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luIDogcHVibGlj
IFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+UmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4oKTsKIAotICAgIGVudW0gTGFiZWxTaXplIHsKLSAgICAgICAgTGFiZWxTaXpl
U21hbGwsCi0gICAgICAgIExhYmVsU2l6ZUxhcmdlLAotICAgICAgICBOb0xhYmVsLAotICAgIH07
Ci0KICAgICB2b2lkIHVwZGF0ZVNuYXBzaG90KFBhc3NSZWZQdHI8SW1hZ2U+KTsKIAogICAgIHZv
aWQgaGFuZGxlRXZlbnQoRXZlbnQqKTsKQEAgLTYwLDE2ICs1NCwxMiBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgQ3Vyc29yRGlyZWN0aXZlIGdldEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYsIEN1
cnNvciYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1NuYXBzaG90dGVkUGx1
Z0luKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBw
YWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgT1ZF
UlJJREU7CiAKLSAgICB2b2lkIHBhaW50UmVwbGFjZWRTbmFwc2hvdChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpOwotICAgIHZvaWQgcGFpbnRSZXBsYWNlZFNuYXBzaG90V2l0aExhYmVs
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7Ci0gICAgdm9pZCBwYWludFNuYXBzaG90
KEltYWdlKiwgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2b2lkIHBhaW50
U25hcHNob3QoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2b2lkIHBhaW50
U25hcHNob3RXaXRoTGFiZWwoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2
b2lkIHBhaW50U25hcHNob3RJbWFnZShJbWFnZSosIFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50Jik7CiAgICAgdm9pZCByZXBhaW50TGFiZWwoKTsKIAotICAgIExheW91dFJlY3QgdHJ5VG9G
aXRTdGFydExhYmVsKExhYmVsU2l6ZSwgY29uc3QgTGF5b3V0UmVjdCYgY29udGVudEJveCkgY29u
c3Q7Ci0gICAgSW1hZ2UqIHN0YXJ0TGFiZWxJbWFnZShMYWJlbFNpemUpIGNvbnN0OwotCiAgICAg
ZW51bSBTaG93UmVhc29uIHsKICAgICAgICAgVXNlck1vdXNlZE92ZXIsCiAgICAgICAgIFNob3Vs
ZFNob3dBdXRvbWF0aWNhbGx5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187360</attachid>
            <date>2013-02-08 13:49:54 -0800</date>
            <delta_ts>2013-02-08 16:05:46 -0800</delta_ts>
            <desc>Landing EWS test</desc>
            <filename>bug-108284-20130209084625.patch</filename>
            <type>text/plain</type>
            <size>39564</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM1MzlhNjE3ZWEyNWY0
ZmEzODIyNTJhYzY0NWIxZDYzODJlODhjYy4uZjIyODJmYjIxMzJlMWZhMzJkY2NlNDdjMzM2NmRi
NWMxN2ZlODkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDExMyBAQAogMjAxMy0wMi0wOCAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKKyAgICAgICAgU25hcHNob3R0ZWQgcGx1Zy1p
biBzaG91bGQgdXNlIHNoYWRvdyByb290CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDgyODQKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFz
ZXIuCisKKyAgICAgICAgQSBzbmFwc2hvdHRlZCBwbHVnaW4gbmVlZHMgdG8gaW5kaWNhdGUgdG8g
dGhlIHVzZXIgdGhhdCBpdCBjYW4gYmUgY2xpY2tlZAorICAgICAgICB0byBiZSByZXN0YXJ0ZWQu
IFByZXZpb3VzbHkgdGhpcyB3YXMgZG9uZSB3aXRoIGFuIGltYWdlIHRoYXQgaGFkIGVtYmVkZGVk
CisgICAgICAgIHRleHQuIEluc3RlYWQsIHdlIG5vdyB1c2UgYW4gaW50ZXJuYWwgc2hhZG93IHJv
b3QgdG8gZW1iZWQgc29tZSBtYXJrdXAgdGhhdAorICAgICAgICB3aWxsIGRpc3BsYXkgaW5zdHJ1
Y3Rpb25zIHRoYXQgY2FuIGJlIGxvY2FsaXNlZC4KKworICAgICAgICBUaGUgVUEgc3R5bGVzaGVl
dCBmb3IgcGx1Zy1pbnMgcHJvdmlkZXMgYSBkZWZhdWx0IHN0eWxpbmcgZm9yIHRoZSBsYWJlbCwg
d2hpY2gKKyAgICAgICAgY2FuIGJlIG92ZXJyaWRkZW4gYnkgcG9ydHMuCisKKyAgICAgICAgSW4g
dGhlIHByb2Nlc3MsIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luIG5vIGxvbmdlciBpbmhlcml0cyBm
cm9tIFJlbmRlckVtYmVkZGVkT2JqZWN0LAorICAgICAgICBzaW5jZSBpdCBpcyBvbmx5IHJlc3Bv
bnNpYmxlIGZvciBkcmF3aW5nIGEgcGF1c2VkIHBsdWctaW4uIFRoZSBzbmFwc2hvdCBjcmVhdGlv
bgorICAgICAgICBjYW4gd29yayB3aXRoIHRoZSBkZWZhdWx0IHJlbmRlcmVyLCBidXQgYSBzaGFk
b3cgcm9vdCByZXF1aXJlcyBzb21ldGhpbmcgbGlrZQorICAgICAgICBSZW5kZXJCbG9jayBpbiBv
cmRlciB0byBkcmF3IGl0cyBjaGlsZHJlbi4gV2Ugc3dhcCBmcm9tIG9uZSByZW5kZXJlciB0byBh
bm90aGVyIHdoZW4KKyAgICAgICAgbmVjZXNzYXJ5IGVpdGhlciBieSBjcmVhdGluZyB0aGUgc2hh
ZG93IHJvb3Qgb3IgYnkgZXhwbGljaXRseSBkZXRhY2hpbmcgYW5kIGF0dGFjaGluZworICAgICAg
ICB0aGUgcGx1Z2luIGVsZW1lbnQuCisKKyAgICAgICAgVW5mb3J0dW5hdGVseSB0aGlzIGlzIGRp
ZmZpY3VsdCB0byB0ZXN0LCBiZWNhdXNlIHRoZSBzbmFwc2hvdHRpbmcgcmVxdWlyZXMKKyAgICAg
ICAgdGltZSB0byBleGVjdXRlLCBhbmQgYWxzbyBhIFBsdWdpblZpZXcgdG8gYmUgaW5zdGFudGlh
dGVkLgorCisgICAgICAgICogY3NzL3BsdWdJbnMuY3NzOgorICAgICAgICAob2JqZWN0Ojotd2Vi
a2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50KTogTmV3IHJ1bGVzIGZvciBhIGRlZmF1bHQg
bGFiZWwgc3R5bGUuCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTog
VGFrZSBpbnRvIGFjY291bnQgdGhlIGZhY3QKKyAgICAgICAgdGhhdCBSZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbiBubyBsb25nZXIgaXMgYW4gZW1iZWRkZWQgb2JqZWN0LgorCisgICAgICAgICogaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQpOiBOZXcgZGVmYXVsdCB2YWx1
ZXMgaW4gY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcik6IE1ha2Ugc3VyZSB0byBjYWxsIGJhc2UgY2xhc3MuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6d2lsbFJlY2FsY1N0eWxlKTogTm8gbmVl
ZCB0byByZWF0dGFjaCBpZiB3ZSdyZSBhIHNuYXBzaG90LgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOiBJZiB3ZSdyZSBzaG93aW5nIGEg
c25hcHNob3QsIGNyZWF0ZSBzdWNoCisgICAgICAgICAgICBhIHJlbmRlcmVyLCBvdGhlcndpc2Ug
dXNlIHRoZSB0eXBpY2FsIHBsdWctaW4gcGF0aC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVNuYXBzaG90KTogS2VlcCBhIHJlY29yZCBvZiB0aGUgc25h
cHNob3QsIHNpbmNlIHdlJ2xsCisgICAgICAgICAgICBuZWVkIHRvIGdpdmUgaXQgdG8gdGhlIHJl
bmRlcmVyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkQWRk
VXNlckFnZW50U2hhZG93Um9vdCk6IEJ1aWxkIGEgc3VidHJlZSB0aGF0IHdpbGwgZGlzcGxheSBh
IGxhYmVsLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oOgorICAgICAg
ICAoSFRNTFBsdWdJbkltYWdlRWxlbWVudCk6IE5ldyBtZW1iZXIgdmFyaWFibGUgdG8gcmVjb3Jk
IHRoZSBzbmFwc2hvdCBpbWFnZSBhbmQgd2hldGhlciB0aGUgbGFiZWwKKyAgICAgICAgICAgIHNo
b3VsZCBzaG93IGltbWVkaWF0ZWx5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcik6IE92ZXJyaWRlIHRoaXMgdG8gaW5k
aWNhdGUgd2Ugc2hvdWxkIGNyZWF0ZQorICAgICAgICAgICAgYSByZW5kZXJlciBpbiBTaGFkb3cg
Um9vdC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN3YXBSZW5k
ZXJlclRpbWVyRmlyZWQpOiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdHJpZ2dlcmVkIHdoZW4gd2Ug
bmVlZAorICAgICAgICAgICAgdG8gc3dhcCB0byB0aGUgU2hhZG93IFJvb3QuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1c2VyRGlkQ2xpY2tTbmFwc2hvdCk6IFRo
ZSB1c2VyIGhhcyB0YXBwZWQgb24gdGhlIHNuYXBzaG90IHNvIHRoZSBwbHVnaW4KKyAgICAgICAg
ICAgIGluIGJlaW5nIHJlY3JlYXRlZC4gTWFrZSBzdXJlIHdlIHJlYXR0YWNoIHNvIHRoYXQgYSBw
bHVnaW4gcmVuZGVyZXIgd2lsbCBiZSBjcmVhdGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKTogTWFrZSBz
dXJlIHdlIHNldCB0aGUgcmlnaHQKKyAgICAgICAgICAgIGRpc3BsYXlTdGF0ZSBmb3Igc25hcHNo
b3RzLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oOgorICAgICAgICAo
SFRNTFBsdWdJbkltYWdlRWxlbWVudCk6IFRoZSBuZXcgbWV0aG9kcyBsaXN0ZWQgYWJvdmUuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzZXRTaG91bGRTaG93U25h
cHNob3RMYWJlbEF1dG9tYXRpY2FsbHkpOiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QKKyAgICAg
ICAgICAgIGEgc25hcHNob3Qgc2hvdWxkIGJlIGltbWVkaWF0ZWx5IGxhYmVsZWQuCisKKyAgICAg
ICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOiBObyBuZWVkIGZvciBwbHVnSW5TdGFydExhYmVsSW1h
Z2UgYW55IG1vcmUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OlJlbmRl
clNuYXBzaG90dGVkUGx1Z0luKTogTmV3IGluaGVyaXRhbmNlLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50KTogSWYgd2UncmUgaW4gdGhlIGJhY2tncm91
bmQgcGFpbnQgcGhhc2UsIHJlbmRlciB0aGUgc25hcHNob3QgaW1hZ2UuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdEltYWdlKTogUmVuYW1l
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNo
b3QpOiBSZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6
cGFpbnRTbmFwc2hvdFdpdGhMYWJlbCk6IFJlbmFtZS4gTm8gbmVlZCBmb3IgbGFiZWwgc2l6ZXMu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6Z2V0Q3Vyc29yKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudCk6
IFRoZSByZW5kZXJlciBkb2Vzbid0IHJlc3RhcnQgdGhlIHBsdWctaW4gYW55IG1vcmUuIFRlbGwg
dGhlIGVsZW1lbnQgYW5kIGl0IHdpbGwgZG8gaXQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNuYXBzaG90dGVkUGx1Z0luLmg6CisgICAgICAgIChSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik6
IE5ldyBpbmhlcml0YW5jZS4gU29tZSBtZXRob2QgcmVuYW1pbmcuCisKKyAgICAgICAgKiBjc3Mv
cGx1Z0lucy5jc3M6CisgICAgICAgIChvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2lu
LWNvbnRlbnQpOgorICAgICAgICAob2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1j
b250ZW50ICopOgorICAgICAgICAob2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1j
b250ZW50IC5zbmFwc2hvdC1jb250YWluZXIpOgorICAgICAgICAob2JqZWN0Ojotd2Via2l0LXNu
YXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LW92
ZXJsYXkpOgorICAgICAgICAob2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250
ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LWxhYmVsKToKKyAgICAgICAgKG9iamVj
dDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVy
IC5zbmFwc2hvdC1sYWJlbCAuc25hcHNob3QtdGl0bGUpOgorICAgICAgICAob2JqZWN0Ojotd2Vi
a2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBz
aG90LWxhYmVsIC5zbmFwc2hvdC1zdWJ0aXRsZSk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0lu
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcik6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6SFRNTFBsdWdJbkltYWdlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3aWxsUmVjYWxjU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlU25hcHNob3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OnN3YXBSZW5kZXJlclRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6dXNlckRpZENsaWNrU25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKToKKyAg
ICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoSFRNTFBsdWdJbkltYWdlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzZXRTaG91bGRTaG93U25hcHNob3RMYWJlbEF1dG9tYXRp
Y2FsbHkpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVk
UGx1Z0luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFw
c2hvdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpw
YWludFNuYXBzaG90KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
OjpwYWludFNuYXBzaG90V2l0aExhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjpnZXRDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW46OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4uaDoKKyAgICAgICAgKFJlbmRlclNuYXBzaG90dGVkUGx1Z0luKToKKwor
MjAxMy0wMi0wOCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisKICAgICAgICAgUHV0
IHNuYXBzaG90dGluZyBsYWJlbCB0ZXh0IGludG8gbG9jYWxpemFibGUgc3RyaW5ncwogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MjY4CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCBjMTFmNmVlYjcxYTZmN2U5NTI2YjM2NTZlNzA4MjgxODhlNzMzZDBlLi5lNjg5NmMx
NzQwNzA2MWExYzhhMTUzZWVlNWNhNTlkNTAxNDhmOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
MjYgQEAKIDIwMTMtMDItMDggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCisgICAg
ICAgIFNuYXBzaG90dGVkIHBsdWctaW4gc2hvdWxkIHVzZSBzaGFkb3cgcm9vdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4Mjg0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIFdlIG5vIGxvbmdlciBoYXZlIGFu
eSBuZWVkIGZvciBwbHVnSW5TdGFydExhYmVsSW1hZ2UuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcDogUmVtb3ZlIHBs
dWdJblN0YXJ0TGFiZWxJbWFnZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Lmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDogRGl0dG8uCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDogRGl0dG8uCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xp
ZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZVVJQ2xpZW50Lmg6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQpOgorCisyMDEzLTAyLTA4ICBEZWFuIEphY2tzb24g
IDxkaW5vQGFwcGxlLmNvbT4KKwogICAgICAgICBEbyBub3QgcmVnaXN0ZXIgYXV0b3N0YXJ0IGZv
ciBwbHVnaW5zIGZyb20gZmlsZTovLyAob3Igbm93aGVyZSkKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODI3MQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGx1Z0lucy5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGx1Z0lucy5jc3MK
aW5kZXggYmNlNzE2ZGUzMmFjMjMyYTkzOTRiNzFhZWMwZTJkNWZhM2M4NWFiMC4uNTEyYjVkN2Uy
MDViY2FmYTQwMTRiMzFlMDdlNDZlOWY4ZjIxZmE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BsdWdJbnMuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wbHVnSW5zLmNzcwpA
QCAtMjIsNSArMjIsNjAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLyogcGx1Zy1pbnMgKi8K
LXB7fSAvKk5lZWRlZCBieSBXaW5kb3dzIGJlY2F1c2UgaXQgZG9lc24ndCBsaWtlIGVtcHR5IGZp
bGVzKi8KKy8qCisgKiBUaGlzIGlzIHRoZSBVQSBTdHlsZVNoZWV0IGZvciA8b2JqZWN0PiBhbmQg
PGVtYmVkPiBlbGVtZW50cy4KKyAqCisgKiBTdWNoIGVsZW1lbnRzLCB3aGVuIHNuYXBzaG90dGVk
IChwYXVzZWQpLCB3aWxsIGNvbnRhaW4gYSBTaGFkb3dSb290CisgKiB3aXRoIHRoZSBmb2xsb3dp
bmcgc3RydWN0dXJlOgorICoKKyAqIDxvYmplY3Q+CisgKiAgICNTaGFkb3dSb290CisgKiAgICAg
PGRpdiBjbGFzcz0ic25hcHNob3QtY29udGFpbmVyIj4KKyAqICAgICAgIDxkaXYgY2xhc3M9InNu
YXBzaG90LW92ZXJsYXkiPjwvZGl2PiA8IS0tIGUuZy4gZm9yIGRpbW1pbmcgY29udGVudCAtLT4K
KyAqICAgICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3QtbGFiZWwiPgorICogICAgICAgICAgIDxk
aXYgY2xhc3M9InNuYXBzaG90LXRpdGxlIj5TbmFwc2hvdHRlZCBQbHVnLUluPC9kaXY+CisgKiAg
ICAgICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3Qtc3VidGl0bGUiPkNsaWNrIHRvIHJlc3RhcnQ8
L2Rpdj4KKyAqICAgICAgICAgPC9kaXY+CisgKiAgICAgICA8L2Rpdj4KKyAqICAgICA8L2Rpdj4K
KyAqCisgKi8KKworb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IHsK
KyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
IHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKK30KKworb2JqZWN0Ojotd2Via2l0LXNu
YXBzaG90dGVkLXBsdWdpbi1jb250ZW50ICogeworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5v
bmU7Cit9CisKK29iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25h
cHNob3QtY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgd2lkdGg6IDEw
MCU7CisgICAgaGVpZ2h0OiAxMDAlOworfQorCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQt
cGx1Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3Qtb3ZlcmxheSB7Cisg
ICAgZGlzcGxheTogbm9uZTsKK30KKworb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdp
bi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LWxhYmVsIHsKKyAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CisgICAgY29sb3I6
IGJsYWNrOworICAgIG1hcmdpbjogMWVtOworICAgIHBhZGRpbmc6IDAuMjVlbSAyZW07CisgICAg
dGV4dC1hbGlnbjogY2VudGVyOworfQorCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1
Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3QtbGFiZWwgLnNuYXBzaG90
LXRpdGxlIHsKKyAgICBmb250LXdlaWdodDogYm9sZDsKK30KKworb2JqZWN0Ojotd2Via2l0LXNu
YXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LWxh
YmVsIC5zbmFwc2hvdC1zdWJ0aXRsZSB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworICAgIGNv
bG9yOiAjNDQ0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcApp
bmRleCBlMjkwMmFkNzE3NjQ2NTg2OGVmOTk1OGE4YTY0NGVlNTAwOTQwNTAzLi4xYWE4MzZkNWU4
ZThhMzI0ZTYxNjEzNTQ2NWFiMDU4NzFjODJkNWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5FbGVtZW50LmNwcApAQCAtMjAxLDEwICsyMDEsMTAgQEAgdm9pZCBIVE1MUGx1Z0lu
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgICAgICB0
b1JlbmRlckVtYmVkZGVkT2JqZWN0KHIpLT5oYW5kbGVVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRv
ckV2ZW50KGV2ZW50KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBp
ZiAoci0+aXNTbmFwc2hvdHRlZFBsdWdJbigpICYmIGRpc3BsYXlTdGF0ZSgpIDwgUGxheWluZ1dp
dGhQZW5kaW5nTW91c2VDbGljaykgewotICAgICAgICAgICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbihyKS0+aGFuZGxlRXZlbnQoZXZlbnQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9CisgICAgfSBlbHNlIGlmIChyICYmIHItPmlzU25hcHNob3R0ZWRQbHVnSW4oKSAmJiBkaXNw
bGF5U3RhdGUoKSA8IFBsYXlpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2spIHsKKyAgICAgICAgdG9S
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihyKS0+aGFuZGxlRXZlbnQoZXZlbnQpOworICAgICAgICBI
VE1MRnJhbWVPd25lckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFyIHx8ICFyLT5pc1dpZGdldCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggNTk3YmNj
NTU3MTNhNmVlZTUzNmY4M2E5ZmM5YjE5ODU5YjQwMDg0YS4uNjg0YjNlYTFiNzk5NGYyM2I5YmI0
Njk3MWNkYjM4NjA3NzcxOTAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0yMSwxNiArMjEsMjAgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgiCiAKKyNpbmNsdWRlICJDaHJv
bWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxJbWFnZUxvYWRlci5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkltYWdlLmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxl
LmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiUGx1Z0luQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGx1Z0luT3JpZ2luSGFzaC5o
IgpAQCAtNDEsMTAgKzQ1LDE0IEBACiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJUZXh0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
Kwogc3RhdGljIGNvbnN0IGludCBhdXRvU3RhcnRQbHVnSW5TaXplVGhyZXNob2xkV2lkdGggPSAx
Owogc3RhdGljIGNvbnN0IGludCBhdXRvU3RhcnRQbHVnSW5TaXplVGhyZXNob2xkSGVpZ2h0ID0g
MTsKIHN0YXRpYyBjb25zdCBpbnQgYXV0b1Nob3dMYWJlbFNpemVUaHJlc2hvbGRXaWR0aCA9IDQw
MDsKQEAgLTYxLDcgKzY5LDkgQEAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6SFRNTFBsdWdJbklt
YWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2MKICAgICAsIG1fbmVl
ZHNXaWRnZXRVcGRhdGUoIWNyZWF0ZWRCeVBhcnNlcikKICAgICAsIG1fc2hvdWxkUHJlZmVyUGx1
Z0luc0ZvckltYWdlcyhwcmVmZXJQbHVnSW5zRm9ySW1hZ2VzT3B0aW9uID09IFNob3VsZFByZWZl
clBsdWdJbnNGb3JJbWFnZXMpCiAgICAgLCBtX25lZWRzRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJh
Y2tzKGZhbHNlKQorICAgICwgbV9zaG91bGRTaG93U25hcHNob3RMYWJlbEF1dG9tYXRpY2FsbHko
ZmFsc2UpCiAgICAgLCBtX3NpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lcih0aGlzLCAmSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6c2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRmlyZWQsIHNpbXVsYXRlZE1v
dXNlQ2xpY2tUaW1lckRlbGF5KQorICAgICwgbV9zd2FwUmVuZGVyZXJUaW1lcih0aGlzLCAmSFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6c3dhcFJlbmRlcmVyVGltZXJGaXJlZCkKIHsKICAgICBzZXRI
YXNDdXN0b21DYWxsYmFja3MoKTsKIH0KQEAgLTEzMiwyNyArMTQyLDM0IEBAIFJlbmRlck9iamVj
dCogSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTCiAgICAgICAgIG1fbmVlZHNEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3Mg
PSB0cnVlOwogICAgICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvclBhZ2VDYWNoZVN1c3BlbnNp
b25DYWxsYmFja3ModGhpcyk7CiAgICAgfQotICAgIAorCisgICAgaWYgKGRpc3BsYXlTdGF0ZSgp
ID09IERpc3BsYXlpbmdTbmFwc2hvdCkgeworICAgICAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
biogcmVuZGVyU25hcHNob3R0ZWRQbHVnSW4gPSBuZXcgKGFyZW5hKSBSZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbih0aGlzKTsKKyAgICAgICAgcmVuZGVyU25hcHNob3R0ZWRQbHVnSW4tPnVwZGF0ZVNu
YXBzaG90KG1fc25hcHNob3RJbWFnZSk7CisgICAgICAgIGlmIChtX3Nob3VsZFNob3dTbmFwc2hv
dExhYmVsQXV0b21hdGljYWxseSkKKyAgICAgICAgICAgIHJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
LT5zZXRTaG91bGRTaG93TGFiZWxBdXRvbWF0aWNhbGx5KCk7CisgICAgICAgIHJldHVybiByZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbjsKKyAgICB9CisKICAgICAvLyBGYWxsYmFjayBjb250ZW50IGJy
ZWFrcyB0aGUgRE9NLT5SZW5kZXJlciBjbGFzcyByZWxhdGlvbnNoaXAgb2YgdGhpcwogICAgIC8v
IGNsYXNzIGFuZCBhbGwgc3VwZXJjbGFzc2VzIGJlY2F1c2UgY3JlYXRlT2JqZWN0IHdvbid0IG5l
Y2Vzc2FyaWx5CiAgICAgLy8gcmV0dXJuIGEgUmVuZGVyRW1iZWRkZWRPYmplY3QsIFJlbmRlclBh
cnQgb3IgZXZlbiBSZW5kZXJXaWRnZXQuCiAgICAgaWYgKHVzZUZhbGxiYWNrQ29udGVudCgpKQog
ICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOwor
CiAgICAgaWYgKGlzSW1hZ2VUeXBlKCkpIHsKICAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0g
bmV3IChhcmVuYSkgUmVuZGVySW1hZ2UodGhpcyk7CiAgICAgICAgIGltYWdlLT5zZXRJbWFnZVJl
c291cmNlKFJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSgpKTsKICAgICAgICAgcmV0dXJuIGlt
YWdlOwogICAgIH0KIAotICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkgJiYgZG9jdW1lbnQoKS0+
cGFnZSgpLT5zZXR0aW5ncygpLT5wbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKCkpCi0gICAgICAg
IHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbih0aGlzKTsKICAgICBy
ZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyRW1iZWRkZWRPYmplY3QodGhpcyk7CiB9CiAKIGJvb2wg
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKQogewog
ICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBuZWNlc3Nhcnk/ICBNYW51YWwgcmUtYXR0YWNoIGlz
IGFsbW9zdCBhbHdheXMgd3JvbmcuCi0gICAgaWYgKCF1c2VGYWxsYmFja0NvbnRlbnQoKSAmJiBu
ZWVkc1dpZGdldFVwZGF0ZSgpICYmIHJlbmRlcmVyKCkgJiYgIWlzSW1hZ2VUeXBlKCkpCisgICAg
aWYgKCF1c2VGYWxsYmFja0NvbnRlbnQoKSAmJiBuZWVkc1dpZGdldFVwZGF0ZSgpICYmIHJlbmRl
cmVyKCkgJiYgIWlzSW1hZ2VUeXBlKCkgJiYgKGRpc3BsYXlTdGF0ZSgpICE9IERpc3BsYXlpbmdT
bmFwc2hvdCkpCiAgICAgICAgIHJlYXR0YWNoKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0y
NTgsMTEgKzI3NSw3NyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVdpZGdl
dENhbGxiYWNrKE5vZGUqIG4sIHVuc2lnbmVkKQogCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ6OnVwZGF0ZVNuYXBzaG90KFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKQogewotICAgIGlmIChk
aXNwbGF5U3RhdGUoKSA+IERpc3BsYXlpbmdTbmFwc2hvdCB8fCAhcmVuZGVyZXIoKS0+aXNTbmFw
c2hvdHRlZFBsdWdJbigpKQorICAgIGlmIChkaXNwbGF5U3RhdGUoKSA+IERpc3BsYXlpbmdTbmFw
c2hvdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihy
ZW5kZXJlcigpKS0+dXBkYXRlU25hcHNob3QoaW1hZ2UpOworICAgIG1fc25hcHNob3RJbWFnZSA9
IGltYWdlOworICAgIGlmIChyZW5kZXJlcigpLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkpIHsKKyAg
ICAgICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihyZW5kZXJlcigpKS0+dXBkYXRlU25hcHNo
b3QoaW1hZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgc2V0RGlzcGxheVN0YXRl
KERpc3BsYXlpbmdTbmFwc2hvdCk7CisgICAgbV9zd2FwUmVuZGVyZXJUaW1lci5zdGFydE9uZVNo
b3QoMCk7Cit9CisKK3ZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50
U2hhZG93Um9vdChTaGFkb3dSb290KiByb290KQoreworICAgIERvY3VtZW50KiBkb2MgPSBkb2N1
bWVudCgpOworCisgICAgUmVmUHRyPEVsZW1lbnQ+IHNoYWRvd0NvbnRhaW5lciA9IEhUTUxEaXZF
bGVtZW50OjpjcmVhdGUoZG9jKTsKKyAgICBzaGFkb3dDb250YWluZXItPnNldFBzZXVkbyhBdG9t
aWNTdHJpbmcoIi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisKKyAgICBSZWZQdHI8RWxlbWVudD4gY29udGFp
bmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2MpOworICAgIGNvbnRhaW5lci0+c2V0QXR0
cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJzbmFwc2hvdC1jb250YWluZXIiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisKKyAgICBSZWZQdHI8RWxlbWVudD4g
b3ZlcmxheSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKKyAgICBvdmVybGF5LT5zZXRB
dHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoInNuYXBzaG90LW92ZXJsYXkiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgY29udGFpbmVyLT5hcHBlbmRD
aGlsZChvdmVybGF5LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKworICAgIFJlZlB0cjxFbGVtZW50
PiBsYWJlbCA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKKyAgICBsYWJlbC0+c2V0QXR0
cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJzbmFwc2hvdC1sYWJlbCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKworICAgIFN0cmluZyB0aXRsZVRleHQgPSBz
bmFwc2hvdHRlZFBsdWdJbkxhYmVsVGl0bGUoKTsKKyAgICBTdHJpbmcgc3VidGl0bGVUZXh0ID0g
c25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRpdGxlKCk7CisgICAgaWYgKGRvY3VtZW50KCktPnBh
Z2UoKSkgeworICAgICAgICBTdHJpbmcgY2xpZW50VGl0bGVUZXh0ID0gZG9jdW1lbnQoKS0+cGFn
ZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBsdWdJblN0YXJ0TGFiZWxUaXRsZSgpOworICAgICAg
ICBpZiAoIWNsaWVudFRpdGxlVGV4dC5pc0VtcHR5KCkpCisgICAgICAgICAgICB0aXRsZVRleHQg
PSBjbGllbnRUaXRsZVRleHQ7CisgICAgICAgIFN0cmluZyBjbGllbnRTdWJ0aXRsZVRleHQgPSBk
b2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFN1
YnRpdGxlKCk7CisgICAgICAgIGlmICghY2xpZW50U3VidGl0bGVUZXh0LmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgIHN1YnRpdGxlVGV4dCA9IGNsaWVudFN1YnRpdGxlVGV4dDsKKyAgICB9CisKKyAg
ICBSZWZQdHI8RWxlbWVudD4gdGl0bGUgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7Cisg
ICAgdGl0bGUtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZygic25hcHNob3Qt
dGl0bGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgdGl0bGUt
PmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUodGl0bGVUZXh0KSwgQVNTRVJUX05PX0VY
Q0VQVElPTik7CisgICAgbGFiZWwtPmFwcGVuZENoaWxkKHRpdGxlLCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKKworICAgIFJlZlB0cjxFbGVtZW50PiBzdWJUaXRsZSA9IEhUTUxEaXZFbGVtZW50Ojpj
cmVhdGUoZG9jKTsKKyAgICBzdWJUaXRsZS0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWlj
U3RyaW5nKCJzbmFwc2hvdC1zdWJ0aXRsZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICBzdWJUaXRsZS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZShz
dWJ0aXRsZVRleHQpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBsYWJlbC0+YXBwZW5kQ2hp
bGQoc3ViVGl0bGUsIEFTU0VSVF9OT19FWENFUFRJT04pOworCisgICAgY29udGFpbmVyLT5hcHBl
bmRDaGlsZChsYWJlbCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisKKyAgICBzaGFkb3dDb250YWlu
ZXItPmFwcGVuZENoaWxkKGNvbnRhaW5lciwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgcm9v
dC0+YXBwZW5kQ2hpbGQoc2hhZG93Q29udGFpbmVyLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKK30K
KworYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVy
KGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjaGlsZENvbnRleHQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGNoaWxkQ29udGV4dC5pc09uVXBwZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoKSAmJiBI
VE1MRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZENvbnRleHQpOworfQor
Cit2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN3YXBSZW5kZXJlclRpbWVyRmlyZWQoVGlt
ZXI8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4qKQoreworICAgIEFTU0VSVChkaXNwbGF5U3RhdGUo
KSA9PSBEaXNwbGF5aW5nU25hcHNob3QpOworICAgIGlmICh1c2VyQWdlbnRTaGFkb3dSb290KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIENyZWF0ZSBhIHNoYWRvdyByb290LCB3aGljaCB3
aWxsIHRyaWdnZXIgdGhlIGNvZGUgdG8gYWRkIGEgc25hcHNob3QgY29udGFpbmVyCisgICAgLy8g
YW5kIHJlYXR0YWNoLCB0aHVzIG1ha2luZyBhIG5ldyBSZW5kZXJlci4KKyAgICBlbnN1cmVVc2Vy
QWdlbnRTaGFkb3dSb290KCk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXNl
ckRpZENsaWNrU25hcHNob3QoUGFzc1JlZlB0cjxNb3VzZUV2ZW50PiBldmVudCkKQEAgLTI3MCw2
ICszNTMsOCBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlja1NuYXBz
aG90KFBhc3NSZWZQdHI8TW91c2VFdmVudD4gZXZlbnQpCiAgICAgbV9wZW5kaW5nQ2xpY2tFdmVu
dEZyb21TbmFwc2hvdCA9IGV2ZW50OwogICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkgJiYgIVNj
aGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwoZG9jdW1lbnQoKS0+cGFn
ZSgpLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLnByb3RvY29sKCkpKQogICAg
ICAgICBkb2N1bWVudCgpLT5wYWdlKCktPnBsdWdJbkNsaWVudCgpLT5hZGRBdXRvU3RhcnRPcmln
aW4oZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgp
Lmhvc3QoKSwgbV9wbHVnSW5PcmlnaW5IYXNoKTsKKworICAgIHJlYXR0YWNoKCk7CiB9CiAKIHZv
aWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTW91c2VDbGljaygpCkBA
IC0zMTksMTYgKzQwNCwxMiBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1YmZyYW1l
TG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBLVVJMJiB1cmwpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAoIXJlbmRlcmVyKCktPmlzU25hcHNob3R0ZWRQbHVnSW4oKSkgewot
ICAgICAgICBMT0coUGx1Z2lucywgIiVwIFJlbmRlcmVyIGlzIG5vdCBzbmFwc2hvdHRlZCBwbHVn
aW4sIHNldCB0byBwbGF5IiwgdGhpcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgaWYg
KFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7CiAgICAgICAgIExP
RyhQbHVnaW5zLCAiJXAgU2NyaXB0IGlzIHByb2Nlc3NpbmcgdXNlciBnZXN0dXJlLCBzZXQgdG8g
cGxheSIsIHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTGF5b3V0UmVjdCBy
ZWN0ID0gdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihyZW5kZXJlcigpKS0+Y29udGVudEJveFJl
Y3QoKTsKKyAgICBMYXlvdXRSZWN0IHJlY3QgPSB0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHJlbmRl
cmVyKCkpLT5jb250ZW50Qm94UmVjdCgpOwogICAgIGludCB3aWR0aCA9IHJlY3Qud2lkdGgoKTsK
ICAgICBpbnQgaGVpZ2h0ID0gcmVjdC5oZWlnaHQoKTsKICAgICBpZiAoIXdpZHRoIHx8ICFoZWln
aHQgfHwgKHdpZHRoIDw9IGF1dG9TdGFydFBsdWdJblNpemVUaHJlc2hvbGRXaWR0aCAmJiBoZWln
aHQgPD0gYXV0b1N0YXJ0UGx1Z0luU2l6ZVRocmVzaG9sZEhlaWdodCkpIHsKQEAgLTM1MSwxMCAr
NDMyLDEzIEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJXaWxs
Q3JlYXRlUGx1Z0luKGNvbnN0IEtVUkwmIHVybCkKICAgICB9CiAKICAgICBpZiAoc2hvdWxkUGx1
Z0luU2hvd0xhYmVsQXV0b21hdGljYWxseShkb2N1bWVudCgpLT5wYWdlKCktPm1haW5GcmFtZSgp
LT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpLCB0aGlzKSkKLSAgICAgICAgdG9SZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbihyZW5kZXJlcigpKS0+c2V0U2hvdWxkU2hvd0xhYmVsQXV0b21hdGljYWxseSgp
OworICAgICAgICBzZXRTaG91bGRTaG93U25hcHNob3RMYWJlbEF1dG9tYXRpY2FsbHkoKTsKIAog
ICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBoYXNoICV4IGlzICVkeCVkLCBvcmlnaW4gaXMg
bm90IGF1dG8tc3RhcnQsIHNldCB0byB3YWl0IGZvciBzbmFwc2hvdCIsIHRoaXMsIG1fcGx1Z0lu
T3JpZ2luSGFzaCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgc2V0RGlzcGxheVN0YXRlKFdhaXRpbmdG
b3JTbmFwc2hvdCk7CisgICAgLy8gV2UgbWF5IGhhdmUgZ290IHRvIHRoaXMgcG9pbnQgYnkgcmVz
dGFydGluZyBhIHNuYXBzaG90dGVkIHBsdWctaW4sIGluIHdoaWNoIGNhc2Ugd2UgZG9uJ3Qgd2Fu
dCB0bworICAgIC8vIHJlc2V0IHRoZSBkaXNwbGF5IHN0YXRlLgorICAgIGlmIChkaXNwbGF5U3Rh
dGUoKSAhPSBQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKQorICAgICAgICBzZXREaXNwbGF5
U3RhdGUoV2FpdGluZ0ZvclNuYXBzaG90KTsKIH0KIAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50OjpzdWJmcmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJbihjb25zdCBXaWRnZXQqIHdpZGdldCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKaW5kZXggMDQ3
MzFiNWU0ZWU2M2E1NGI4MTk5ZWJmMjNlM2Q2NjI2ZDBiNjRjYi4uZDJiODFiZDU2NjkwOGY2Mjc0
YmU5ZjBhNWQyYjAyZDBiMzc2MTk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmgKQEAgLTI1LDExICsyNSwxMyBAQAogCiAjaW5jbHVkZSAiUmVuZGVy
U3R5bGUuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxJbWFnZUxvYWRlcjsKIGNsYXNz
IEZyYW1lTG9hZGVyOworY2xhc3MgSW1hZ2U7CiBjbGFzcyBNb3VzZUV2ZW50OwogY2xhc3MgV2lk
Z2V0OwogCkBAIC0zNyw3ICszOSw3IEBAIGVudW0gUGx1Z2luQ3JlYXRpb25PcHRpb24gewogICAg
IENyZWF0ZUFueVdpZGdldFR5cGUsCiAgICAgQ3JlYXRlT25seU5vbk5ldHNjYXBlUGx1Z2lucywK
IH07Ci0gICAgCisKIGVudW0gUHJlZmVyUGx1Z0luc0ZvckltYWdlc09wdGlvbiB7CiAgICAgU2hv
dWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcywKICAgICBTaG91bGROb3RQcmVmZXJQbHVnSW5zRm9y
SW1hZ2VzCkBAIC05MiwyMiArOTQsMzIgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopOwogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpOwotICAg
IAorCisgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9k
ZVJlbmRlcmluZ0NvbnRleHQmKSBjb25zdCBPVkVSUklERTsKKyAgICB2b2lkIGRpZEFkZFVzZXJB
Z2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopIE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2b2lk
IGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogCiAgICAgdm9pZCB1cGRhdGVXaWRnZXRJZk5lY2Vz
c2FyeSgpOwogICAgIHZpcnR1YWwgYm9vbCB1c2VGYWxsYmFja0NvbnRlbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNuYXBzaG90KFBh
c3NSZWZQdHI8SW1hZ2U+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hQZW5k
aW5nTW91c2VDbGljaygpIE9WRVJSSURFOwogICAgIHZvaWQgc2ltdWxhdGVkTW91c2VDbGlja1Rp
bWVyRmlyZWQoRGVmZXJyYWJsZU9uZVNob3RUaW1lcjxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Piop
OwogCisgICAgdm9pZCBzd2FwUmVuZGVyZXJUaW1lckZpcmVkKFRpbWVyPEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ+Kik7CisKKyAgICB2b2lkIHNldFNob3VsZFNob3dTbmFwc2hvdExhYmVsQXV0b21h
dGljYWxseSgpIHsgbV9zaG91bGRTaG93U25hcHNob3RMYWJlbEF1dG9tYXRpY2FsbHkgPSB0cnVl
OyB9CisKICAgICBib29sIG1fbmVlZHNXaWRnZXRVcGRhdGU7CiAgICAgYm9vbCBtX3Nob3VsZFBy
ZWZlclBsdWdJbnNGb3JJbWFnZXM7CiAgICAgYm9vbCBtX25lZWRzRG9jdW1lbnRBY3RpdmF0aW9u
Q2FsbGJhY2tzOworICAgIGJvb2wgbV9zaG91bGRTaG93U25hcHNob3RMYWJlbEF1dG9tYXRpY2Fs
bHk7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX2N1c3RvbVN0eWxlRm9yUGFnZUNhY2hlOwog
ICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBtX3BlbmRpbmdDbGlja0V2ZW50RnJvbVNuYXBzaG90Owog
ICAgIERlZmVycmFibGVPbmVTaG90VGltZXI8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4gbV9zaW11
bGF0ZWRNb3VzZUNsaWNrVGltZXI7CisgICAgVGltZXI8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4g
bV9zd2FwUmVuZGVyZXJUaW1lcjsKKyAgICBSZWZQdHI8SW1hZ2U+IG1fc25hcHNob3RJbWFnZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
CmluZGV4IDM0MDNiMzk1YTlkZjMyZTU2OGRmZWJiNTI0OWQ5ODdiOTA2ZGI4ZDUuLjVmNmNlMzlh
NTE5MDRlYTQ1MzBkNWJiNzNlNTVhMjE4MmZjNTU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaApAQCAtMzczLDcgKzM3Myw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBp
c0VtcHR5Q2hyb21lQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJbWFnZT4gcGx1Z0luU3RhcnRMYWJlbEltYWdlKFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luOjpMYWJlbFNpemUpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFN0
cmluZyBwbHVnSW5TdGFydExhYmVsVGl0bGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQog
ICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSgpIGNvbnN0IHsgcmV0
dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luRXh0cmFTdHlsZVNoZWV0
KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCmluZGV4IGE2MzUxYzlkNDc2YjY4
ZWIxMGI4MTAxODQyY2M5ODY4N2MyZDU4ZTkuLjIzZTBiMTAzMjlhYWRmOGJjZmFhMzdjZDM2YjFj
OTcxN2UzZjI5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtNDAsMTQgKzQwLDEzIEBACiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlBhdGguaCIKKyNpbmNsdWRl
ICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU291cmNlR3JhcGhpYy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBpbnQgYXV0b1N0YXJ0UGx1Z0luU2l6ZVRocmVzaG9s
ZFdpZHRoID0gMTsKIHN0YXRpYyBjb25zdCBpbnQgYXV0b1N0YXJ0UGx1Z0luU2l6ZVRocmVzaG9s
ZEhlaWdodCA9IDE7Ci1zdGF0aWMgY29uc3QgaW50IHN0YXJ0TGFiZWxQYWRkaW5nID0gMTA7IC8v
IExhYmVsIHNob3VsZCBiZSAxMHB4IGZyb20gZWRnZSBvZiBib3guCi1zdGF0aWMgY29uc3QgaW50
IHN0YXJ0TGFiZWxJbnNldCA9IDIwOyAvLyBCdXQgdGhlIGxhYmVsIGlzIGluc2V0IGZyb20gaXRz
IGJveCBhbHNvLiBGSVhNRTogVGhpcyB3aWxsIGJlIHJlbW92ZWQgd2hlbiB3ZSBnbyB0byBhIFNo
YWRvd0RPTSBhcHByb2FjaC4KIHN0YXRpYyBjb25zdCBkb3VibGUgc2hvd0xhYmVsQWZ0ZXJNb3Vz
ZU92ZXJEZWxheSA9IDE7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNob3dMYWJlbEF1dG9tYXRpY2Fs
bHlEZWxheSA9IDM7CiBzdGF0aWMgY29uc3QgaW50IHNuYXBzaG90TGFiZWxCbHVyUmFkaXVzID0g
NTsKQEAgLTEwMCw3ICs5OSw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW5CbHVyRmls
dGVyOjphcHBseSgpCiAjZW5kaWYKIAogUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OlJlbmRlclNu
YXBzaG90dGVkUGx1Z0luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIGVsZW1lbnQpCi0gICAgOiBS
ZW5kZXJFbWJlZGRlZE9iamVjdChlbGVtZW50KQorICAgIDogUmVuZGVyQmxvY2soZWxlbWVudCkK
ICAgICAsIG1fc25hcHNob3RSZXNvdXJjZShSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUoKSkK
ICAgICAsIG1fc2hvdWxkU2hvd0xhYmVsKGZhbHNlKQogICAgICwgbV9zaG91bGRTaG93TGFiZWxB
dXRvbWF0aWNhbGx5KGZhbHNlKQpAQCAtMTQ1LDI4ICsxNDQsMTcgQEAgdm9pZCBSZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbjo6dXBkYXRlU25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCiAK
IHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKHBsdWdJbkltYWdl
RWxlbWVudCgpLT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nV2l0
aFBlbmRpbmdNb3VzZUNsaWNrKSB7Ci0gICAgICAgIFJlbmRlclJlcGxhY2VkOjpwYWludChwYWlu
dEluZm8sIHBhaW50T2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKLX0KLQotdm9p
ZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQotewotICAgIGlmIChwbHVnSW5J
bWFnZUVsZW1lbnQoKS0+ZGlzcGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWlu
Z1dpdGhQZW5kaW5nTW91c2VDbGljaykgeworICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFp
bnRQaGFzZUJsb2NrQmFja2dyb3VuZCAmJiBwbHVnSW5JbWFnZUVsZW1lbnQoKS0+ZGlzcGxheVN0
YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykg
ewogICAgICAgICBpZiAobV9zaG91bGRTaG93TGFiZWwpCi0gICAgICAgICAgICBwYWludFJlcGxh
Y2VkU25hcHNob3RXaXRoTGFiZWwocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CisgICAgICAgICAg
ICBwYWludFNuYXBzaG90V2l0aExhYmVsKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBwYWludFJlcGxhY2VkU25hcHNob3QocGFpbnRJbmZvLCBwYWlu
dE9mZnNldCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHBhaW50U25hcHNob3QocGFp
bnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgfQogCi0gICAgUmVuZGVyRW1iZWRkZWRPYmplY3Q6
OnBhaW50UmVwbGFjZWQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CisgICAgUmVuZGVyQmxvY2s6
OnBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogfQogCi12b2lkIFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KEltYWdlKiBpbWFnZSwgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKK3ZvaWQgUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW46OnBhaW50U25hcHNob3RJbWFnZShJbWFnZSogaW1hZ2UsIFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgTGF5b3V0VW5p
dCBjV2lkdGggPSBjb250ZW50V2lkdGgoKTsKICAgICBMYXlvdXRVbml0IGNIZWlnaHQgPSBjb250
ZW50SGVpZ2h0KCk7CkBAIC0xODAsNyArMTY4LDcgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbjo6cGFpbnRTbmFwc2hvdChJbWFnZSogaW1hZ2UsIFBhaW50SW5mbyYgcGFpbnRJbmZvLAog
I2VuZGlmCiAKICAgICBMYXlvdXRTaXplIGNvbnRlbnRTaXplKGNXaWR0aCwgY0hlaWdodCk7Ci0g
ICAgTGF5b3V0UG9pbnQgY29udGVudExvY2F0aW9uID0gcGFpbnRPZmZzZXQ7CisgICAgTGF5b3V0
UG9pbnQgY29udGVudExvY2F0aW9uID0gbG9jYXRpb24oKSArIHBhaW50T2Zmc2V0OwogICAgIGNv
bnRlbnRMb2NhdGlvbi5tb3ZlKGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCksIGJvcmRlclRv
cCgpICsgcGFkZGluZ1RvcCgpKTsKIAogICAgIExheW91dFJlY3QgcmVjdChjb250ZW50TG9jYXRp
b24sIGNvbnRlbnRTaXplKTsKQEAgLTE5MiwzMSArMTgwLDEzIEBAIHZvaWQgUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QoSW1hZ2UqIGltYWdlLCBQYWludEluZm8mIHBhaW50
SW5mbywKICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlKCktPmNvbG9yU3BhY2Uo
KSwgYWxpZ25lZFJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIHNob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKCksIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKIH0KIAotdm9pZCBSZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbjo6cGFpbnRSZXBsYWNlZFNuYXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCit2b2lkIFJlbmRlclNuYXBzaG90dGVk
UGx1Z0luOjpwYWludFNuYXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IG1fc25hcHNo
b3RSZXNvdXJjZS0+aW1hZ2UoKTsKICAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFpbnRTbmFwc2hvdChpbWFnZS5nZXQoKSwgcGFpbnRJ
bmZvLCBwYWludE9mZnNldCk7Ci19Ci0KLUltYWdlKiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6
c3RhcnRMYWJlbEltYWdlKExhYmVsU2l6ZSBzaXplKSBjb25zdAotewotICAgIHN0YXRpYyBJbWFn
ZSogbGFiZWxJbWFnZXNbMl0gPSB7IDAsIDAgfTsKLSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXpl
ZEltYWdlc1syXSA9IHsgZmFsc2UsIGZhbHNlIH07Ci0KLSAgICBpbnQgYXJyYXlJbmRleCA9IHN0
YXRpY19jYXN0PGludD4oc2l6ZSk7Ci0gICAgaWYgKGxhYmVsSW1hZ2VzW2FycmF5SW5kZXhdKQot
ICAgICAgICByZXR1cm4gbGFiZWxJbWFnZXNbYXJyYXlJbmRleF07Ci0gICAgaWYgKGluaXRpYWxp
emVkSW1hZ2VzW2FycmF5SW5kZXhdKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmIChkb2N1
bWVudCgpLT5wYWdlKCkpIHsKLSAgICAgICAgbGFiZWxJbWFnZXNbYXJyYXlJbmRleF0gPSBkb2N1
bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbEltYWdl
KHNpemUpLmxlYWtSZWYoKTsKLSAgICAgICAgaW5pdGlhbGl6ZWRJbWFnZXNbYXJyYXlJbmRleF0g
PSB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gbGFiZWxJbWFnZXNbYXJyYXlJbmRleF07CisgICAg
cGFpbnRTbmFwc2hvdEltYWdlKGltYWdlLmdldCgpLCBwYWludEluZm8sIHBhaW50T2Zmc2V0KTsK
IH0KIAogI2lmIEVOQUJMRShGSUxURVJTKQpAQCAtMjM4LDcgKzIwOCw3IEBAIHN0YXRpYyBQYXNz
UmVmUHRyPEltYWdlPiBzbmFwc2hvdHRlZFBsdWdpbkltYWdlRm9yTGFiZWxEaXNwbGF5KFBhc3NS
ZWZQdHI8SW1hZ2U+CiB9CiAjZW5kaWYKIAotdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6
cGFpbnRSZXBsYWNlZFNuYXBzaG90V2l0aExhYmVsKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCit2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
OjpwYWludFNuYXBzaG90V2l0aExhYmVsKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgaWYgKGNvbnRlbnRCb3hSZWN0KCkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CkBAIC0yNDcsNDMgKzIxNywyNiBAQCB2b2lkIFJlbmRlclNu
YXBzaG90dGVkUGx1Z0luOjpwYWludFJlcGxhY2VkU25hcHNob3RXaXRoTGFiZWwoUGFpbnRJbmZv
JiBwYWludEluZgogICAgICAgICByZXR1cm47CiAKICAgICBtX3Nob3dlZExhYmVsT25jZSA9IHRy
dWU7Ci0gICAgTGF5b3V0UmVjdCByZWN0ID0gY29udGVudEJveFJlY3QoKTsKLSAgICBMYXlvdXRS
ZWN0IGxhYmVsUmVjdCA9IHRyeVRvRml0U3RhcnRMYWJlbChMYWJlbFNpemVMYXJnZSwgcmVjdCk7
Ci0gICAgTGFiZWxTaXplIHNpemUgPSBOb0xhYmVsOwotICAgIGlmICghbGFiZWxSZWN0LmlzRW1w
dHkoKSkKLSAgICAgICAgc2l6ZSA9IExhYmVsU2l6ZUxhcmdlOwotICAgIGVsc2UgewotICAgICAg
ICBsYWJlbFJlY3QgPSB0cnlUb0ZpdFN0YXJ0TGFiZWwoTGFiZWxTaXplU21hbGwsIHJlY3QpOwot
ICAgICAgICBpZiAoIWxhYmVsUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBzaXplID0gTGFi
ZWxTaXplU21hbGw7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBJbWFnZSogbGFiZWxJbWFnZSA9IHN0YXJ0TGFiZWxJbWFnZShzaXplKTsKLSAgICBpZiAo
IWxhYmVsSW1hZ2UpCi0gICAgICAgIHJldHVybjsKKyAgICBMYXlvdXRSZWN0IGxhYmVsUmVjdDsK
IAogICAgIFJlZlB0cjxJbWFnZT4gc25hcHNob3RJbWFnZSA9IG1fc25hcHNob3RSZXNvdXJjZS0+
aW1hZ2UoKTsKICAgICBpZiAoIXNuYXBzaG90SW1hZ2UgfHwgc25hcHNob3RJbWFnZS0+aXNOdWxs
KCkpCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShGSUxURVJTKQotICAgIFJlZlB0cjxJ
bWFnZT4gYmx1cnJlZFNuYXBzaG90SW1hZ2UgPSBtX3NuYXBzaG90UmVzb3VyY2VGb3JMYWJlbC0+
aW1hZ2UoKTsKLSAgICBpZiAoIWJsdXJyZWRTbmFwc2hvdEltYWdlIHx8IGJsdXJyZWRTbmFwc2hv
dEltYWdlLT5pc051bGwoKSkgewotICAgICAgICBibHVycmVkU25hcHNob3RJbWFnZSA9IHNuYXBz
aG90dGVkUGx1Z2luSW1hZ2VGb3JMYWJlbERpc3BsYXkoc25hcHNob3RJbWFnZSwgbGFiZWxSZWN0
KTsKLSAgICAgICAgbV9zbmFwc2hvdFJlc291cmNlRm9yTGFiZWwtPnNldENhY2hlZEltYWdlKG5l
dyBDYWNoZWRJbWFnZShibHVycmVkU25hcHNob3RJbWFnZS5nZXQoKSkpOworICAgIC8vIEZJWE1F
OiBUZW1wb3JhcmlseSBkaXNhYmxpbmcgdGhlIGJsdXIgYmVoaW5kIHRoZSBsYWJlbC4KKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MzY4CisgICAgaWYg
KCFsYWJlbFJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxJbWFnZT4gYmx1cnJlZFNu
YXBzaG90SW1hZ2UgPSBtX3NuYXBzaG90UmVzb3VyY2VGb3JMYWJlbC0+aW1hZ2UoKTsKKyAgICAg
ICAgaWYgKCFibHVycmVkU25hcHNob3RJbWFnZSB8fCBibHVycmVkU25hcHNob3RJbWFnZS0+aXNO
dWxsKCkpIHsKKyAgICAgICAgICAgIGJsdXJyZWRTbmFwc2hvdEltYWdlID0gc25hcHNob3R0ZWRQ
bHVnaW5JbWFnZUZvckxhYmVsRGlzcGxheShzbmFwc2hvdEltYWdlLCBsYWJlbFJlY3QpOworICAg
ICAgICAgICAgbV9zbmFwc2hvdFJlc291cmNlRm9yTGFiZWwtPnNldENhY2hlZEltYWdlKG5ldyBD
YWNoZWRJbWFnZShibHVycmVkU25hcHNob3RJbWFnZS5nZXQoKSkpOworICAgICAgICB9CisgICAg
ICAgIHNuYXBzaG90SW1hZ2UgPSBibHVycmVkU25hcHNob3RJbWFnZTsKICAgICB9Ci0gICAgc25h
cHNob3RJbWFnZSA9IGJsdXJyZWRTbmFwc2hvdEltYWdlOwogI2VuZGlmCiAKLSAgICBwYWludFNu
YXBzaG90KHNuYXBzaG90SW1hZ2UuZ2V0KCksIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwotCi0g
ICAgLy8gUmVtZW1iZXIgdGhhdCB0aGUgbGFiZWxSZWN0IGluY2x1ZGVzIHRoZSBsYWJlbCBpbnNl
dCwgc28gd2UgbmVlZCB0byBhZGp1c3QgZm9yIGl0LgotICAgIHBhaW50SW5mby5jb250ZXh0LT5k
cmF3SW1hZ2UobGFiZWxJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEludFJlY3Qocm91bmRlZEludFBvaW50KHBhaW50T2Zmc2V0ICsg
bGFiZWxSZWN0LmxvY2F0aW9uKCkgLSBJbnRTaXplKHN0YXJ0TGFiZWxJbnNldCwgc3RhcnRMYWJl
bEluc2V0KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5k
ZWRJbnRTaXplKGxhYmVsUmVjdC5zaXplKCkgKyBJbnRTaXplKDIgKiBzdGFydExhYmVsSW5zZXQs
IDIgKiBzdGFydExhYmVsSW5zZXQpKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsYWJlbEltYWdlLT5yZWN0KCkpOworICAgIHBhaW50U25hcHNob3RJbWFnZShzbmFwc2hvdElt
YWdlLmdldCgpLCBwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKIH0KIAogdm9pZCBSZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbjo6cmVwYWludExhYmVsKCkKQEAgLTMwOSw3ICsyNjIsNyBAQCBDdXJzb3JE
aXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNvcihjb25zdCBMYXlvdXRQ
b2ludCYgcG9pbnQsIEN1cgogICAgICAgICBvdmVycmlkZUN1cnNvciA9IGhhbmRDdXJzb3IoKTsK
ICAgICAgICAgcmV0dXJuIFNldEN1cnNvcjsKICAgICB9Ci0gICAgcmV0dXJuIFJlbmRlckVtYmVk
ZGVkT2JqZWN0OjpnZXRDdXJzb3IocG9pbnQsIG92ZXJyaWRlQ3Vyc29yKTsKKyAgICByZXR1cm4g
UmVuZGVyQmxvY2s6OmdldEN1cnNvcihwb2ludCwgb3ZlcnJpZGVDdXJzb3IpOwogfQogCiB2b2lk
IFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudChFdmVudCogZXZlbnQpCkBAIC0z
MjUsMTIgKzI3OCw2IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmhhbmRsZUV2ZW50
KEV2ZW50KiBldmVudCkKIAogICAgICAgICBwbHVnSW5JbWFnZUVsZW1lbnQoKS0+c2V0RGlzcGxh
eVN0YXRlKEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKTsK
ICAgICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50KCktPnVzZXJEaWRDbGlja1NuYXBzaG90KG1vdXNl
RXZlbnQpOwotCi0gICAgICAgIGlmICh3aWRnZXQoKSkgewotICAgICAgICAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICAgICAgZnJhbWUtPmxv
YWRlcigpLT5jbGllbnQoKS0+cmVjcmVhdGVQbHVnaW4od2lkZ2V0KCkpOwotICAgICAgICAgICAg
cmVwYWludCgpOwotICAgICAgICB9CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgp
OwogICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3du
RXZlbnQpIHsKICAgICAgICAgaWYgKG1vdXNlRXZlbnQtPmJ1dHRvbigpICE9IExlZnRCdXR0b24p
CkBAIC0zNTgsMjcgKzMwNSw2IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmhhbmRs
ZUV2ZW50KEV2ZW50KiBldmVudCkKICAgICB9CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW46OnRyeVRvRml0U3RhcnRMYWJlbChMYWJlbFNpemUgc2l6ZSwgY29uc3QgTGF5
b3V0UmVjdCYgY29udGVudEJveCkgY29uc3QKLXsKLSAgICBJbWFnZSogbGFiZWxJbWFnZSA9IHN0
YXJ0TGFiZWxJbWFnZShzaXplKTsKLSAgICBpZiAoIWxhYmVsSW1hZ2UpCi0gICAgICAgIHJldHVy
biBMYXlvdXRSZWN0KCk7Ci0KLSAgICAvLyBBc3N1bWUgdGhhdCB0aGUgbGFiZWxJbWFnZSBoYXMg
YmVlbiBwcm92aWRlZCB0byBtYXRjaCBvdXIgZGV2aWNlIHNjYWxlLgotICAgIGZsb2F0IHNjYWxl
RmFjdG9yID0gMTsKLSAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICBzY2FsZUZh
Y3RvciA9IGRvY3VtZW50KCktPnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBJbnRT
aXplIGxhYmVsSW1hZ2VTaXplID0gbGFiZWxJbWFnZS0+c2l6ZSgpOwotICAgIGxhYmVsSW1hZ2VT
aXplLnNjYWxlKDEgLyAoc2NhbGVGYWN0b3IgPyBzY2FsZUZhY3RvciA6IDEpKTsKLQotICAgIExh
eW91dFNpemUgbGFiZWxTaXplID0gbGFiZWxJbWFnZVNpemUgLSBMYXlvdXRTaXplKDIgKiBzdGFy
dExhYmVsSW5zZXQsIDIgKiBzdGFydExhYmVsSW5zZXQpOwotICAgIExheW91dFJlY3QgY2FuZGlk
YXRlUmVjdChjb250ZW50Qm94Lm1heFhNaW5ZQ29ybmVyKCkgKyBMYXlvdXRTaXplKC1zdGFydExh
YmVsUGFkZGluZywgc3RhcnRMYWJlbFBhZGRpbmcpICsgTGF5b3V0U2l6ZSgtbGFiZWxTaXplLndp
ZHRoKCksIDApLCBsYWJlbFNpemUpOwotICAgIC8vIFRoZSBtaW5pbXVtIGFsbG93ZWQgY29udGVu
dCBib3ggc2l6ZSBpcyB0aGUgbGFiZWwgaW1hZ2UgcGxhY2VkIGluIHRoZSBjZW50ZXIgb2YgdGhl
IGJveCwgc3Vycm91bmRlZCBieSBzdGFydExhYmVsUGFkZGluZy4KLSAgICBpZiAoY2FuZGlkYXRl
UmVjdC54KCkgPCBzdGFydExhYmVsUGFkZGluZyB8fCBjYW5kaWRhdGVSZWN0Lm1heFkoKSA+IGNv
bnRlbnRCb3guaGVpZ2h0KCkgLSBzdGFydExhYmVsUGFkZGluZykKLSAgICAgICAgcmV0dXJuIExh
eW91dFJlY3QoKTsKLSAgICByZXR1cm4gY2FuZGlkYXRlUmVjdDsKLX0KLQogdm9pZCBSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbjo6cmVzZXREZWxheVRpbWVyKFNob3dSZWFzb24gcmVhc29uKQogewog
ICAgIG1fc2hvd1JlYXNvbiA9IHJlYXNvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgKaW5kZXggYjlkZTYyY2JhYzJhYWNmYTVhMTRj
NjliZDQyYTY5MmZmZTY1NTc3NC4uYTY2N2I0ZjcxMWVlMWZmYjU4NWNmMjMwMzNkZmU0ZWMxY2Rk
YmUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW5faAogI2RlZmluZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbl9oCiAKLSNpbmNsdWRlICJS
ZW5kZXJFbWJlZGRlZE9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAKICNpbmNs
dWRlICJSZW5kZXJJbWFnZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTM1LDE3
ICszNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ7CiAKLWNsYXNzIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luIDogcHVibGljIFJlbmRlckVt
YmVkZGVkT2JqZWN0IHsKK2NsYXNzIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luIDogcHVibGljIFJl
bmRlckJsb2NrIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+UmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4oKTsKIAotICAgIGVudW0gTGFiZWxTaXplIHsKLSAgICAgICAgTGFiZWxTaXplU21h
bGwsCi0gICAgICAgIExhYmVsU2l6ZUxhcmdlLAotICAgICAgICBOb0xhYmVsLAotICAgIH07Ci0K
ICAgICB2b2lkIHVwZGF0ZVNuYXBzaG90KFBhc3NSZWZQdHI8SW1hZ2U+KTsKIAogICAgIHZvaWQg
aGFuZGxlRXZlbnQoRXZlbnQqKTsKQEAgLTYwLDE2ICs1NCwxMiBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgQ3Vyc29yRGlyZWN0aXZlIGdldEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYsIEN1cnNv
ciYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1NuYXBzaG90dGVkUGx1Z0lu
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgT1ZFUlJJ
REU7CiAKLSAgICB2b2lkIHBhaW50UmVwbGFjZWRTbmFwc2hvdChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpOwotICAgIHZvaWQgcGFpbnRSZXBsYWNlZFNuYXBzaG90V2l0aExhYmVsKFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7Ci0gICAgdm9pZCBwYWludFNuYXBzaG90KElt
YWdlKiwgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2b2lkIHBhaW50U25h
cHNob3QoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2b2lkIHBhaW50U25h
cHNob3RXaXRoTGFiZWwoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2b2lk
IHBhaW50U25hcHNob3RJbWFnZShJbWFnZSosIFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jik7CiAgICAgdm9pZCByZXBhaW50TGFiZWwoKTsKIAotICAgIExheW91dFJlY3QgdHJ5VG9GaXRT
dGFydExhYmVsKExhYmVsU2l6ZSwgY29uc3QgTGF5b3V0UmVjdCYgY29udGVudEJveCkgY29uc3Q7
Ci0gICAgSW1hZ2UqIHN0YXJ0TGFiZWxJbWFnZShMYWJlbFNpemUpIGNvbnN0OwotCiAgICAgZW51
bSBTaG93UmVhc29uIHsKICAgICAgICAgVXNlck1vdXNlZE92ZXIsCiAgICAgICAgIFNob3VsZFNo
b3dBdXRvbWF0aWNhbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQu
Y3BwCmluZGV4IGUyYjk1N2Q2NGNlYWQyZTFiZTYzMTAxMjdhNjY4YTA0NDI0Njc3NTkuLmY4ZDFh
NDAxODQyMjdiNmY0YmRjZWYxM2I2YzgxNDgzNmZiODVjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCkBAIC0xNjMsMjYgKzE2Myw2IEBAIHVpbnQ2NF90
IEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpkaWRFeGNlZWREYXRhYmFzZVF1b3RhKFdlYlBh
Z2UqIHBhZ2UsIFdlYlNlCiAgICAgcmV0dXJuIG1fY2xpZW50LmRpZEV4Y2VlZERhdGFiYXNlUXVv
dGEodG9BUEkocGFnZSksIHRvQVBJKG9yaWdpbiksIHRvQVBJKGRhdGFiYXNlTmFtZS5pbXBsKCkp
LCB0b0FQSShkYXRhYmFzZURpc3BsYXlOYW1lLmltcGwoKSksIGN1cnJlbnRRdW90YUJ5dGVzLCBj
dXJyZW50T3JpZ2luVXNhZ2VCeXRlcywgY3VycmVudERhdGFiYXNlVXNhZ2VCeXRlcywgZXhwZWN0
ZWRVc2FnZUJ5dGVzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJJ
bWFnZT4gSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnBsdWdJblN0YXJ0TGFiZWxJbWFnZShS
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6TGFiZWxTaXplIHNpemUpIGNvbnN0Ci17Ci0gICAgaWYg
KCFtX2NsaWVudC5wbHVnSW5TdGFydExhYmVsSW1hZ2UpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgV0tCdW5kbGVQYWdlTGFiZWxTaXplIHdrU2l6ZTsKLSAgICBzd2l0Y2ggKHNpemUpIHsKLSAg
ICBjYXNlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpMYWJlbFNpemVTbWFsbDoKLSAgICAgICAg
d2tTaXplID0gV0tCdW5kbGVQYWdlTGFiZWxTaXplU21hbGw7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OkxhYmVsU2l6ZUxhcmdlOgotICAgICAgICB3
a1NpemUgPSBXS0J1bmRsZVBhZ2VMYWJlbFNpemVMYXJnZTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0dXJuIGFkb3B0UmVm
KHRvSW1wbChtX2NsaWVudC5wbHVnSW5TdGFydExhYmVsSW1hZ2Uod2tTaXplLCBtX2NsaWVudC5j
bGllbnRJbmZvKSkpOwotfQotCiBTdHJpbmcgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnBs
dWdJblN0YXJ0TGFiZWxUaXRsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oCmluZGV4IDU2OTYzODIxMjlkYzE0
NTQwNWJmNTQ3OTI0NDMzNTZlOTNmODI5M2YuLmFkOGZlMjRkMjE1MzNhNDZhNzQ5ZTcyNWNmMGNm
YTEzZDg0ZWI2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgK
QEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJBUElDbGllbnQuaCIKICNpbmNsdWRlICJXS0J1
bmRsZVBhZ2UuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgotI2luY2x1ZGUgIldlYkltYWdlLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTcxLDcgKzcwLDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
UmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViUGFnZSosIFdlYlNlY3VyaXR5T3Jp
Z2luKiwgaW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkKTsKICAgICB1aW50NjRfdCBkaWRFeGNlZWRE
YXRhYmFzZVF1b3RhKFdlYlBhZ2UqLCBXZWJTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlzcGxheU5hbWUsIHVpbnQ2NF90
IGN1cnJlbnRRdW90YUJ5dGVzLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2VCeXRlcywgdWlu
dDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2VCeXRlcywgdWludDY0X3QgZXhwZWN0ZWRVc2FnZUJ5
dGVzKTsKIAotICAgIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IHBsdWdJblN0YXJ0TGFiZWxJbWFnZShX
ZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6TGFiZWxTaXplKSBjb25zdDsKICAgICBT
dHJpbmcgcGx1Z0luU3RhcnRMYWJlbFRpdGxlKCkgY29uc3Q7CiAgICAgU3RyaW5nIHBsdWdJblN0
YXJ0TGFiZWxTdWJ0aXRsZSgpIGNvbnN0OwogICAgIFN0cmluZyBwbHVnSW5FeHRyYVN0eWxlU2hl
ZXQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAzMzM4MWZmZTU5YWRiMDM0
MmM4N2JkODgzZjYyNDZhZGMyMmVlM2IwLi40NjkwN2NlMGU2YzNhMWNhNTczMTI0MjlmMDk5MDY0
ZDZhNTQyMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03OTgsMTEgKzc5OCw2IEBA
IHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpsb2dEaWFnbm9zdGljTWVzc2FnZShjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShtX3BhZ2UsIG1lc3NhZ2Us
IGRlc2NyaXB0aW9uLCBzdWNjZXNzKTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gV2ViQ2hyb21l
Q2xpZW50OjpwbHVnSW5TdGFydExhYmVsSW1hZ2UoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46Okxh
YmVsU2l6ZSBzaXplKSBjb25zdAotewotICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxl
VUlDbGllbnQoKS5wbHVnSW5TdGFydExhYmVsSW1hZ2Uoc2l6ZSktPmJpdG1hcCgpLT5jcmVhdGVJ
bWFnZSgpOwotfQotCiBTdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsVGl0
bGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQo
KS5wbHVnSW5TdGFydExhYmVsVGl0bGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGQyZmMw
OTM2NjNmNzI5ZmY5NTZkMDY3MDM1M2RiYzNkZjZkNmE5YWMuLjNlYTNhM2I1OGM5MTVmMjFkYzBj
ZTI4NTNlZTJjZmM3YTAyMGVkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjgsNyArMjgs
NiBAQAogI2RlZmluZSBXZWJDaHJvbWVDbGllbnRfaAogCiAjaW5jbHVkZSA8V2ViQ29yZS9DaHJv
bWVDbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9WaWV3cG9ydEFyZ3VtZW50cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC0yMTgsNyArMjE3LDYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBsb2dEaWFn
bm9zdGljTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24sIGNvbnN0IFN0cmluZyYgc3VjY2VzcykgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IHBsdWdJblN0YXJ0TGFiZWxJbWFnZShXZWJDb3JlOjpS
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6TGFiZWxTaXplKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIFN0cmluZyBwbHVnSW5TdGFydExhYmVsVGl0bGUoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIFN0cmluZyBwbHVnSW5TdGFydExhYmVsU3VidGl0bGUoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIFN0cmluZyBwbHVnSW5FeHRyYVN0eWxlU2hlZXQoKSBjb25zdCBPVkVS
UklERTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187381</attachid>
            <date>2013-02-08 16:05:54 -0800</date>
            <delta_ts>2013-02-08 16:25:42 -0800</delta_ts>
            <desc>Another build test</desc>
            <filename>bug-108284-20130209110227.patch</filename>
            <type>text/plain</type>
            <size>37112</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM1MzlhNjE3ZWEyNWY0
ZmEzODIyNTJhYzY0NWIxZDYzODJlODhjYy4uODkyMTE2MWFlMDRiMjkxMjZlMjZmOWJlNTU1M2I1
Y2EyNTEwY2NiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDczIEBACiAyMDEzLTAyLTA4ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAorICAgICAgICBTbmFwc2hvdHRlZCBwbHVnLWlu
IHNob3VsZCB1c2Ugc2hhZG93IHJvb3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwODI4NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNl
ci4KKworICAgICAgICBBIHNuYXBzaG90dGVkIHBsdWdpbiBuZWVkcyB0byBpbmRpY2F0ZSB0byB0
aGUgdXNlciB0aGF0IGl0IGNhbiBiZSBjbGlja2VkCisgICAgICAgIHRvIGJlIHJlc3RhcnRlZC4g
UHJldmlvdXNseSB0aGlzIHdhcyBkb25lIHdpdGggYW4gaW1hZ2UgdGhhdCBoYWQgZW1iZWRkZWQK
KyAgICAgICAgdGV4dC4gSW5zdGVhZCwgd2Ugbm93IHVzZSBhbiBpbnRlcm5hbCBzaGFkb3cgcm9v
dCB0byBlbWJlZCBzb21lIG1hcmt1cCB0aGF0CisgICAgICAgIHdpbGwgZGlzcGxheSBpbnN0cnVj
dGlvbnMgdGhhdCBjYW4gYmUgbG9jYWxpc2VkLgorCisgICAgICAgIFRoZSBVQSBzdHlsZXNoZWV0
IGZvciBwbHVnLWlucyBwcm92aWRlcyBhIGRlZmF1bHQgc3R5bGluZyBmb3IgdGhlIGxhYmVsLCB3
aGljaAorICAgICAgICBjYW4gYmUgb3ZlcnJpZGRlbiBieSBwb3J0cy4KKworICAgICAgICBJbiB0
aGUgcHJvY2VzcywgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4gbm8gbG9uZ2VyIGluaGVyaXRzIGZy
b20gUmVuZGVyRW1iZWRkZWRPYmplY3QsCisgICAgICAgIHNpbmNlIGl0IGlzIG9ubHkgcmVzcG9u
c2libGUgZm9yIGRyYXdpbmcgYSBwYXVzZWQgcGx1Zy1pbi4gVGhlIHNuYXBzaG90IGNyZWF0aW9u
CisgICAgICAgIGNhbiB3b3JrIHdpdGggdGhlIGRlZmF1bHQgcmVuZGVyZXIsIGJ1dCBhIHNoYWRv
dyByb290IHJlcXVpcmVzIHNvbWV0aGluZyBsaWtlCisgICAgICAgIFJlbmRlckJsb2NrIGluIG9y
ZGVyIHRvIGRyYXcgaXRzIGNoaWxkcmVuLiBXZSBzd2FwIGZyb20gb25lIHJlbmRlcmVyIHRvIGFu
b3RoZXIgd2hlbgorICAgICAgICBuZWNlc3NhcnkgZWl0aGVyIGJ5IGNyZWF0aW5nIHRoZSBzaGFk
b3cgcm9vdCBvciBieSBleHBsaWNpdGx5IGRldGFjaGluZyBhbmQgYXR0YWNoaW5nCisgICAgICAg
IHRoZSBwbHVnaW4gZWxlbWVudC4KKworICAgICAgICBVbmZvcnR1bmF0ZWx5IHRoaXMgaXMgZGlm
ZmljdWx0IHRvIHRlc3QsIGJlY2F1c2UgdGhlIHNuYXBzaG90dGluZyByZXF1aXJlcworICAgICAg
ICB0aW1lIHRvIGV4ZWN1dGUsIGFuZCBhbHNvIGEgUGx1Z2luVmlldyB0byBiZSBpbnN0YW50aWF0
ZWQuCisKKyAgICAgICAgKiBjc3MvcGx1Z0lucy5jc3M6CisgICAgICAgIChvYmplY3Q6Oi13ZWJr
aXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQpOiBOZXcgcnVsZXMgZm9yIGEgZGVmYXVsdCBs
YWJlbCBzdHlsZS4KKworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBU
YWtlIGludG8gYWNjb3VudCB0aGUgZmFjdAorICAgICAgICB0aGF0IFJlbmRlclNuYXBzaG90dGVk
UGx1Z0luIG5vIGxvbmdlciBpcyBhbiBlbWJlZGRlZCBvYmplY3QuCisKKyAgICAgICAgKiBodG1s
L0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6SFRNTFBsdWdJbkltYWdlRWxlbWVudCk6IE5ldyBkZWZhdWx0IHZhbHVl
cyBpbiBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKTogTWFrZSBzdXJlIHRvIGNhbGwgYmFzZSBjbGFzcy4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Ojp3aWxsUmVjYWxjU3R5bGUpOiBObyBuZWVk
IHRvIHJlYXR0YWNoIGlmIHdlJ3JlIGEgc25hcHNob3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6IElmIHdlJ3JlIHNob3dpbmcgYSBz
bmFwc2hvdCwgY3JlYXRlIHN1Y2gKKyAgICAgICAgICAgIGEgcmVuZGVyZXIsIG90aGVyd2lzZSB1
c2UgdGhlIHR5cGljYWwgcGx1Zy1pbiBwYXRoLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6dXBkYXRlU25hcHNob3QpOiBLZWVwIGEgcmVjb3JkIG9mIHRoZSBzbmFw
c2hvdCwgc2luY2Ugd2UnbGwKKyAgICAgICAgICAgIG5lZWQgdG8gZ2l2ZSBpdCB0byB0aGUgcmVu
ZGVyZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRV
c2VyQWdlbnRTaGFkb3dSb290KTogQnVpbGQgYSBzdWJ0cmVlIHRoYXQgd2lsbCBkaXNwbGF5IGEg
bGFiZWwuCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmg6CisgICAgICAg
IChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KTogTmV3IG1lbWJlciB2YXJpYWJsZSB0byByZWNvcmQg
dGhlIHNuYXBzaG90IGltYWdlIGFuZCB3aGV0aGVyIHRoZSBsYWJlbAorICAgICAgICAgICAgc2hv
dWxkIHNob3cgaW1tZWRpYXRlbHkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50Ojpzd2FwUmVuZGVyZXJUaW1lckZpcmVkKTogVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRy
aWdnZXJlZCB3aGVuIHdlIG5lZWQKKyAgICAgICAgICAgIHRvIHN3YXAgdG8gdGhlIFNoYWRvdyBS
b290LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXNlckRpZENs
aWNrU25hcHNob3QpOiBUaGUgdXNlciBoYXMgdGFwcGVkIG9uIHRoZSBzbmFwc2hvdCBzbyB0aGUg
cGx1Z2luCisgICAgICAgICAgICBpbiBiZWluZyByZWNyZWF0ZWQuIE1ha2Ugc3VyZSB3ZSByZWF0
dGFjaCBzbyB0aGF0IGEgcGx1Z2luIHJlbmRlcmVyIHdpbGwgYmUgY3JlYXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0
ZVBsdWdJbik6IE1ha2Ugc3VyZSB3ZSBzZXQgdGhlIHJpZ2h0CisgICAgICAgICAgICBkaXNwbGF5
U3RhdGUgZm9yIHNuYXBzaG90cy4KKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuaDoKKyAgICAgICAgKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQpOiBUaGUgbmV3IG1ldGhvZHMg
bGlzdGVkIGFib3ZlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
c2V0U2hvdWxkU2hvd1NuYXBzaG90TGFiZWxBdXRvbWF0aWNhbGx5KTogSW5kaWNhdGVzIHdoZXRo
ZXIgb3Igbm90CisgICAgICAgICAgICBhIHNuYXBzaG90IHNob3VsZCBiZSBpbW1lZGlhdGVseSBs
YWJlbGVkLgorCisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDogTm8gbmVlZCBmb3IgcGx1
Z0luU3RhcnRMYWJlbEltYWdlIGFueSBtb3JlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNuYXBzaG90dGVkUGx1Z0luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90
dGVkUGx1Z0luOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik6IE5ldyBpbmhlcml0YW5jZS4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludCk6IElmIHdlJ3Jl
IGluIHRoZSBiYWNrZ3JvdW5kIHBhaW50IHBoYXNlLCByZW5kZXIgdGhlIHNuYXBzaG90IGltYWdl
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNo
b3RJbWFnZSk6IFJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1
Z0luOjpwYWludFNuYXBzaG90KTogUmVuYW1lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25h
cHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3RXaXRoTGFiZWwpOiBSZW5hbWUuIE5vIG5lZWQg
Zm9yIGxhYmVsIHNpemVzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVn
SW46OmdldEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bjo6aGFuZGxlRXZlbnQpOiBUaGUgcmVuZGVyZXIgZG9lc24ndCByZXN0YXJ0IHRoZSBwbHVnLWlu
IGFueSBtb3JlLiBUZWxsIHRoZSBlbGVtZW50IGFuZCBpdCB3aWxsIGRvIGl0LgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oOgorICAgICAgICAoUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4pOiBOZXcgaW5oZXJpdGFuY2UuIFNvbWUgbWV0aG9kIHJlbmFtaW5nLgor
CisyMDEzLTAyLTA4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKwogICAgICAgICBQ
dXQgc25hcHNob3R0aW5nIGxhYmVsIHRleHQgaW50byBsb2NhbGl6YWJsZSBzdHJpbmdzCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgyNjgKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IGMxMWY2ZWViNzFhNmY3ZTk1MjZiMzY1NmU3MDgyODE4OGU3MzNkMGUuLjNhNzc3
NTliZWE2NGNhZjI0NjRlMjA5NWM0NDE2NGRlMGVlZjY1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSwxOSBAQAogMjAxMy0wMi0wOCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKKyAg
ICAgICAgU25hcHNob3R0ZWQgcGx1Zy1pbiBzaG91bGQgdXNlIHNoYWRvdyByb290CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgyODQKKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgV2Ugbm8gbG9uZ2VyIGhhdmUg
YW55IG5lZWQgZm9yIHBsdWdJblN0YXJ0TGFiZWxJbWFnZS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwOiBSZW1vdmUg
cGx1Z0luU3RhcnRMYWJlbEltYWdlLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaDogRGl0dG8uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOiBEaXR0by4KKwor
MjAxMy0wMi0wOCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisKICAgICAgICAgRG8g
bm90IHJlZ2lzdGVyIGF1dG9zdGFydCBmb3IgcGx1Z2lucyBmcm9tIGZpbGU6Ly8gKG9yIG5vd2hl
cmUpCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgy
NzEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BsdWdJbnMuY3NzIGIvU291cmNl
L1dlYkNvcmUvY3NzL3BsdWdJbnMuY3NzCmluZGV4IGJjZTcxNmRlMzJhYzIzMmE5Mzk0YjcxYWVj
MGUyZDVmYTNjODVhYjAuLjUzOTU2NzkxZGI2MTVhZDM5NTY4NWVkOTFlN2NmYWU5NGZiMjI0YmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wbHVnSW5zLmNzcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGx1Z0lucy5jc3MKQEAgLTIyLDUgKzIyLDc0IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLS8qIHBsdWctaW5zICovCi1we30gLypOZWVkZWQgYnkgV2luZG93cyBiZWNhdXNl
IGl0IGRvZXNuJ3QgbGlrZSBlbXB0eSBmaWxlcyovCisvKgorICogVGhpcyBpcyB0aGUgVUEgU3R5
bGVTaGVldCBmb3IgPG9iamVjdD4gYW5kIDxlbWJlZD4gZWxlbWVudHMuCisgKgorICogU3VjaCBl
bGVtZW50cywgd2hlbiBzbmFwc2hvdHRlZCAocGF1c2VkKSwgd2lsbCBjb250YWluIGEgU2hhZG93
Um9vdAorICogd2l0aCB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKKyAqCisgKiA8b2JqZWN0Pgor
ICogICAjU2hhZG93Um9vdAorICogICAgIDxkaXYgY2xhc3M9InNuYXBzaG90LWNvbnRhaW5lciI+
CisgKiAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1vdmVybGF5Ij48L2Rpdj4gPCEtLSBlLmcu
IGZvciBkaW1taW5nIGNvbnRlbnQgLS0+CisgKiAgICAgICAgIDxkaXYgY2xhc3M9InNuYXBzaG90
LWxhYmVsIj4KKyAqICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC10aXRsZSI+U25hcHNo
b3R0ZWQgUGx1Zy1JbjwvZGl2PgorICogICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXBzaG90LXN1
YnRpdGxlIj5DbGljayB0byByZXN0YXJ0PC9kaXY+CisgKiAgICAgICAgIDwvZGl2PgorICogICAg
ICAgPC9kaXY+CisgKiAgICAgPC9kaXY+CisgKgorICovCisKK29iamVjdDo6LXdlYmtpdC1zbmFw
c2hvdHRlZC1wbHVnaW4tY29udGVudCwKK2VtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdp
bi1jb250ZW50Cit7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7Cit9CisKK29iamVj
dDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAqLAorZW1iZWQ6Oi13ZWJraXQt
c25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgKgoreworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6
IG5vbmU7Cit9CisKK29iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAu
c25hcHNob3QtY29udGFpbmVyLAorZW1iZWQ6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNv
bnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lcgoreworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7Cit9CisKK29iamVjdDo6LXdlYmtpdC1z
bmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVyIC5zbmFwc2hvdC1v
dmVybGF5LAorZW1iZWQ6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNuYXBz
aG90LWNvbnRhaW5lciAuc25hcHNob3Qtb3ZlcmxheQoreworICAgIGRpc3BsYXk6IG5vbmU7Cit9
CisKK29iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3Qt
Y29udGFpbmVyIC5zbmFwc2hvdC1sYWJlbCwKK2VtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBs
dWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LWxhYmVsCit7CisgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworICAgIGNv
bG9yOiBibGFjazsKKyAgICBtYXJnaW46IDFlbTsKKyAgICBwYWRkaW5nOiAwLjI1ZW0gMmVtOwor
ICAgIHRleHQtYWxpZ246IGNlbnRlcjsKK30KKworb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVk
LXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LWxhYmVsIC5zbmFw
c2hvdC10aXRsZSwKK2VtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5z
bmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LWxhYmVsIC5zbmFwc2hvdC10aXRsZQoreworICAg
IGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1
Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3QtbGFiZWwgLnNuYXBzaG90
LXN1YnRpdGxlLAorZW1iZWQ6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNu
YXBzaG90LWNvbnRhaW5lciAuc25hcHNob3QtbGFiZWwgLnNuYXBzaG90LXN1YnRpdGxlCit7Cisg
ICAgZm9udC1zdHlsZTogaXRhbGljOworICAgIGNvbG9yOiAjNDQ0OworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRleCBlMjkwMmFkNzE3NjQ2NTg2OGVmOTk1
OGE4YTY0NGVlNTAwOTQwNTAzLi4xYWE4MzZkNWU4ZThhMzI0ZTYxNjEzNTQ2NWFiMDU4NzFjODJk
NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcApAQCAtMjAx
LDEwICsyMDEsMTAgQEAgdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCiAgICAgICAgICAgICB0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHIpLT5o
YW5kbGVVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckV2ZW50KGV2ZW50KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAoci0+aXNTbmFwc2hvdHRlZFBsdWdJbigp
ICYmIGRpc3BsYXlTdGF0ZSgpIDwgUGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykgewotICAg
ICAgICAgICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihyKS0+aGFuZGxlRXZlbnQoZXZlbnQp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgfSBlbHNlIGlmIChyICYmIHIt
PmlzU25hcHNob3R0ZWRQbHVnSW4oKSAmJiBkaXNwbGF5U3RhdGUoKSA8IFBsYXlpbmdXaXRoUGVu
ZGluZ01vdXNlQ2xpY2spIHsKKyAgICAgICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihyKS0+
aGFuZGxlRXZlbnQoZXZlbnQpOworICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoZXZlbnQpOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYg
KCFyIHx8ICFyLT5pc1dpZGdldCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5jcHAKaW5kZXggNTk3YmNjNTU3MTNhNmVlZTUzNmY4M2E5ZmM5YjE5ODU5
YjQwMDg0YS4uMTJmYTEwNmU4MDM0MzIzMTQ1YWFmNDUxNjZhZmNlYTkzODA0ZmE3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0yMSwx
NiArMjEsMjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50LmgiCiAKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGll
bnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNs
dWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUxvYWRlci5oIgotI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiTG9jYWxp
emVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50
LmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlcmlu
Z0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGx1Z0luQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiUGx1Z0luT3JpZ2luSGFzaC5oIgpAQCAtNDEsMTAgKzQ1LDE0IEBACiAjaW5j
bHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0
eWxlUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJUZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogc3RhdGljIGNvbnN0IGludCBhdXRvU3Rh
cnRQbHVnSW5TaXplVGhyZXNob2xkV2lkdGggPSAxOwogc3RhdGljIGNvbnN0IGludCBhdXRvU3Rh
cnRQbHVnSW5TaXplVGhyZXNob2xkSGVpZ2h0ID0gMTsKIHN0YXRpYyBjb25zdCBpbnQgYXV0b1No
b3dMYWJlbFNpemVUaHJlc2hvbGRXaWR0aCA9IDQwMDsKQEAgLTYxLDcgKzY5LDkgQEAgSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6SFRNTFBsdWdJbkltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2MKICAgICAsIG1fbmVlZHNXaWRnZXRVcGRhdGUoIWNyZWF0ZWRCeVBh
cnNlcikKICAgICAsIG1fc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyhwcmVmZXJQbHVnSW5z
Rm9ySW1hZ2VzT3B0aW9uID09IFNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiAgICAgLCBt
X25lZWRzRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKGZhbHNlKQorICAgICwgbV9zaG91bGRT
aG93U25hcHNob3RMYWJlbEF1dG9tYXRpY2FsbHkoZmFsc2UpCiAgICAgLCBtX3NpbXVsYXRlZE1v
dXNlQ2xpY2tUaW1lcih0aGlzLCAmSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c2ltdWxhdGVkTW91
c2VDbGlja1RpbWVyRmlyZWQsIHNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lckRlbGF5KQorICAgICwg
bV9zd2FwUmVuZGVyZXJUaW1lcih0aGlzLCAmSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3dhcFJl
bmRlcmVyVGltZXJGaXJlZCkKIHsKICAgICBzZXRIYXNDdXN0b21DYWxsYmFja3MoKTsKIH0KQEAg
LTEzMiwyNyArMTQyLDM0IEBAIFJlbmRlck9iamVjdCogSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTCiAgICAgICAgIG1fbmVl
ZHNEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3MgPSB0cnVlOwogICAgICAgICBkb2N1bWVudCgp
LT5yZWdpc3RlckZvclBhZ2VDYWNoZVN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7CiAgICAgfQot
ICAgIAorCisgICAgaWYgKGRpc3BsYXlTdGF0ZSgpID09IERpc3BsYXlpbmdTbmFwc2hvdCkgewor
ICAgICAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiogcmVuZGVyU25hcHNob3R0ZWRQbHVnSW4g
PSBuZXcgKGFyZW5hKSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbih0aGlzKTsKKyAgICAgICAgcmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4tPnVwZGF0ZVNuYXBzaG90KG1fc25hcHNob3RJbWFnZSk7Cisg
ICAgICAgIGlmIChtX3Nob3VsZFNob3dTbmFwc2hvdExhYmVsQXV0b21hdGljYWxseSkKKyAgICAg
ICAgICAgIHJlbmRlclNuYXBzaG90dGVkUGx1Z0luLT5zZXRTaG91bGRTaG93TGFiZWxBdXRvbWF0
aWNhbGx5KCk7CisgICAgICAgIHJldHVybiByZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjsKKyAgICB9
CisKICAgICAvLyBGYWxsYmFjayBjb250ZW50IGJyZWFrcyB0aGUgRE9NLT5SZW5kZXJlciBjbGFz
cyByZWxhdGlvbnNoaXAgb2YgdGhpcwogICAgIC8vIGNsYXNzIGFuZCBhbGwgc3VwZXJjbGFzc2Vz
IGJlY2F1c2UgY3JlYXRlT2JqZWN0IHdvbid0IG5lY2Vzc2FyaWx5CiAgICAgLy8gcmV0dXJuIGEg
UmVuZGVyRW1iZWRkZWRPYmplY3QsIFJlbmRlclBhcnQgb3IgZXZlbiBSZW5kZXJXaWRnZXQuCiAg
ICAgaWYgKHVzZUZhbGxiYWNrQ29udGVudCgpKQogICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0
OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOworCiAgICAgaWYgKGlzSW1hZ2VUeXBlKCkpIHsK
ICAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2UodGhp
cyk7CiAgICAgICAgIGltYWdlLT5zZXRJbWFnZVJlc291cmNlKFJlbmRlckltYWdlUmVzb3VyY2U6
OmNyZWF0ZSgpKTsKICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KIAotICAgIGlmIChkb2N1
bWVudCgpLT5wYWdlKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5zZXR0aW5ncygpLT5wbHVnSW5T
bmFwc2hvdHRpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbih0aGlzKTsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyRW1i
ZWRkZWRPYmplY3QodGhpcyk7CiB9CiAKIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d2ls
bFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKQogewogICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBu
ZWNlc3Nhcnk/ICBNYW51YWwgcmUtYXR0YWNoIGlzIGFsbW9zdCBhbHdheXMgd3JvbmcuCi0gICAg
aWYgKCF1c2VGYWxsYmFja0NvbnRlbnQoKSAmJiBuZWVkc1dpZGdldFVwZGF0ZSgpICYmIHJlbmRl
cmVyKCkgJiYgIWlzSW1hZ2VUeXBlKCkpCisgICAgaWYgKCF1c2VGYWxsYmFja0NvbnRlbnQoKSAm
JiBuZWVkc1dpZGdldFVwZGF0ZSgpICYmIHJlbmRlcmVyKCkgJiYgIWlzSW1hZ2VUeXBlKCkgJiYg
KGRpc3BsYXlTdGF0ZSgpICE9IERpc3BsYXlpbmdTbmFwc2hvdCkpCiAgICAgICAgIHJlYXR0YWNo
KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNTgsMTEgKzI3NSw3MiBAQCB2b2lkIEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVdpZGdldENhbGxiYWNrKE5vZGUqIG4sIHVuc2lnbmVk
KQogCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVNuYXBzaG90KFBhc3NSZWZQ
dHI8SW1hZ2U+IGltYWdlKQogewotICAgIGlmIChkaXNwbGF5U3RhdGUoKSA+IERpc3BsYXlpbmdT
bmFwc2hvdCB8fCAhcmVuZGVyZXIoKS0+aXNTbmFwc2hvdHRlZFBsdWdJbigpKQorICAgIGlmIChk
aXNwbGF5U3RhdGUoKSA+IERpc3BsYXlpbmdTbmFwc2hvdCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihyZW5kZXJlcigpKS0+dXBkYXRlU25hcHNob3Qo
aW1hZ2UpOworICAgIG1fc25hcHNob3RJbWFnZSA9IGltYWdlOworICAgIGlmIChyZW5kZXJlcigp
LT5pc1NuYXBzaG90dGVkUGx1Z0luKCkpIHsKKyAgICAgICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbihyZW5kZXJlcigpKS0+dXBkYXRlU25hcHNob3QoaW1hZ2UpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgc2V0RGlzcGxheVN0YXRlKERpc3BsYXlpbmdTbmFwc2hvdCk7CisgICAg
bV9zd2FwUmVuZGVyZXJUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290KiByb290
KQoreworICAgIERvY3VtZW50KiBkb2MgPSBkb2N1bWVudCgpOworCisgICAgUmVmUHRyPEVsZW1l
bnQ+IHNoYWRvd0NvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKKyAgICBz
aGFkb3dDb250YWluZXItPnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtc25hcHNob3R0
ZWQtcGx1Z2luLWNvbnRlbnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisKKyAgICBSZWZQdHI8RWxlbWVudD4gY29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0
ZShkb2MpOworICAgIGNvbnRhaW5lci0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3Ry
aW5nKCJzbmFwc2hvdC1jb250YWluZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisKKyAgICBSZWZQdHI8RWxlbWVudD4gb3ZlcmxheSA9IEhUTUxEaXZFbGVtZW50Ojpj
cmVhdGUoZG9jKTsKKyAgICBvdmVybGF5LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNT
dHJpbmcoInNuYXBzaG90LW92ZXJsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7CisgICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZChvdmVybGF5LCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKKworICAgIFJlZlB0cjxFbGVtZW50PiBsYWJlbCA9IEhUTUxEaXZFbGVtZW50Ojpj
cmVhdGUoZG9jKTsKKyAgICBsYWJlbC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3Ry
aW5nKCJzbmFwc2hvdC1sYWJlbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKworICAgIFN0cmluZyB0aXRsZVRleHQgPSBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsVGl0bGUo
KTsKKyAgICBTdHJpbmcgc3VidGl0bGVUZXh0ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRp
dGxlKCk7CisgICAgaWYgKGRvY3VtZW50KCktPnBhZ2UoKSkgeworICAgICAgICBTdHJpbmcgY2xp
ZW50VGl0bGVUZXh0ID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBs
dWdJblN0YXJ0TGFiZWxUaXRsZSgpOworICAgICAgICBpZiAoIWNsaWVudFRpdGxlVGV4dC5pc0Vt
cHR5KCkpCisgICAgICAgICAgICB0aXRsZVRleHQgPSBjbGllbnRUaXRsZVRleHQ7CisgICAgICAg
IFN0cmluZyBjbGllbnRTdWJ0aXRsZVRleHQgPSBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgp
LT5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKCk7CisgICAgICAgIGlmICghY2xp
ZW50U3VidGl0bGVUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHN1YnRpdGxlVGV4dCA9IGNs
aWVudFN1YnRpdGxlVGV4dDsKKyAgICB9CisKKyAgICBSZWZQdHI8RWxlbWVudD4gdGl0bGUgPSBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7CisgICAgdGl0bGUtPnNldEF0dHJpYnV0ZShjbGFz
c0F0dHIsIEF0b21pY1N0cmluZygic25hcHNob3QtdGl0bGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CisgICAgdGl0bGUtPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4
dE5vZGUodGl0bGVUZXh0KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgbGFiZWwtPmFwcGVu
ZENoaWxkKHRpdGxlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKworICAgIFJlZlB0cjxFbGVtZW50
PiBzdWJUaXRsZSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKKyAgICBzdWJUaXRsZS0+
c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJzbmFwc2hvdC1zdWJ0aXRsZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBzdWJUaXRsZS0+YXBw
ZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZShzdWJ0aXRsZVRleHQpLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKKyAgICBsYWJlbC0+YXBwZW5kQ2hpbGQoc3ViVGl0bGUsIEFTU0VSVF9OT19FWENF
UFRJT04pOworCisgICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZChsYWJlbCwgQVNTRVJUX05PX0VY
Q0VQVElPTik7CisKKyAgICBzaGFkb3dDb250YWluZXItPmFwcGVuZENoaWxkKGNvbnRhaW5lciwg
QVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgcm9vdC0+YXBwZW5kQ2hpbGQoc2hhZG93Q29udGFp
bmVyLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKK30KKwordm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50Ojpzd2FwUmVuZGVyZXJUaW1lckZpcmVkKFRpbWVyPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+
KikKK3sKKyAgICBBU1NFUlQoZGlzcGxheVN0YXRlKCkgPT0gRGlzcGxheWluZ1NuYXBzaG90KTsK
KyAgICBpZiAodXNlckFnZW50U2hhZG93Um9vdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBDcmVhdGUgYSBzaGFkb3cgcm9vdCwgd2hpY2ggd2lsbCB0cmlnZ2VyIHRoZSBjb2RlIHRvIGFk
ZCBhIHNuYXBzaG90IGNvbnRhaW5lcgorICAgIC8vIGFuZCByZWF0dGFjaCwgdGh1cyBtYWtpbmcg
YSBuZXcgUmVuZGVyZXIuCisgICAgZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOwogfQogCiB2
b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlja1NuYXBzaG90KFBhc3NSZWZQ
dHI8TW91c2VFdmVudD4gZXZlbnQpCkBAIC0yNzAsNiArMzQ4LDggQEAgdm9pZCBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50Ojp1c2VyRGlkQ2xpY2tTbmFwc2hvdChQYXNzUmVmUHRyPE1vdXNlRXZlbnQ+
IGV2ZW50KQogICAgIG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNob3QgPSBldmVudDsKICAg
ICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpICYmICFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRV
UkxTY2hlbWVBc0xvY2FsKGRvY3VtZW50KCktPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmRvY3VtZW50
KCktPmJhc2VVUkwoKS5wcm90b2NvbCgpKSkKICAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5w
bHVnSW5DbGllbnQoKS0+YWRkQXV0b1N0YXJ0T3JpZ2luKGRvY3VtZW50KCktPnBhZ2UoKS0+bWFp
bkZyYW1lKCktPmRvY3VtZW50KCktPmJhc2VVUkwoKS5ob3N0KCksIG1fcGx1Z0luT3JpZ2luSGFz
aCk7CisKKyAgICByZWF0dGFjaCgpOwogfQogCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OmRpc3BhdGNoUGVuZGluZ01vdXNlQ2xpY2soKQpAQCAtMzE5LDE2ICszOTksMTIgQEAgdm9pZCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxvYWRlcldpbGxDcmVhdGVQbHVnSW4oY29u
c3QgS1VSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFyZW5kZXJl
cigpLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkpIHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBS
ZW5kZXJlciBpcyBub3Qgc25hcHNob3R0ZWQgcGx1Z2luLCBzZXQgdG8gcGxheSIsIHRoaXMpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIGlmIChTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNz
aW5nVXNlckdlc3R1cmUoKSkgewogICAgICAgICBMT0coUGx1Z2lucywgIiVwIFNjcmlwdCBpcyBw
cm9jZXNzaW5nIHVzZXIgZ2VzdHVyZSwgc2V0IHRvIHBsYXkiLCB0aGlzKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIExheW91dFJlY3QgcmVjdCA9IHRvUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4ocmVuZGVyZXIoKSktPmNvbnRlbnRCb3hSZWN0KCk7CisgICAgTGF5b3V0UmVjdCByZWN0
ID0gdG9SZW5kZXJFbWJlZGRlZE9iamVjdChyZW5kZXJlcigpKS0+Y29udGVudEJveFJlY3QoKTsK
ICAgICBpbnQgd2lkdGggPSByZWN0LndpZHRoKCk7CiAgICAgaW50IGhlaWdodCA9IHJlY3QuaGVp
Z2h0KCk7CiAgICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0IHx8ICh3aWR0aCA8PSBhdXRvU3RhcnRQ
bHVnSW5TaXplVGhyZXNob2xkV2lkdGggJiYgaGVpZ2h0IDw9IGF1dG9TdGFydFBsdWdJblNpemVU
aHJlc2hvbGRIZWlnaHQpKSB7CkBAIC0zNTEsMTAgKzQyNywxMyBAQCB2b2lkIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBLVVJMJiB1
cmwpCiAgICAgfQogCiAgICAgaWYgKHNob3VsZFBsdWdJblNob3dMYWJlbEF1dG9tYXRpY2FsbHko
ZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpLT5jb250ZW50c1NpemUoKSwg
dGhpcykpCi0gICAgICAgIHRvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4ocmVuZGVyZXIoKSktPnNl
dFNob3VsZFNob3dMYWJlbEF1dG9tYXRpY2FsbHkoKTsKKyAgICAgICAgc2V0U2hvdWxkU2hvd1Nu
YXBzaG90TGFiZWxBdXRvbWF0aWNhbGx5KCk7CiAKICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWct
aW4gaGFzaCAleCBpcyAlZHglZCwgb3JpZ2luIGlzIG5vdCBhdXRvLXN0YXJ0LCBzZXQgdG8gd2Fp
dCBmb3Igc25hcHNob3QiLCB0aGlzLCBtX3BsdWdJbk9yaWdpbkhhc2gsIHdpZHRoLCBoZWlnaHQp
OwotICAgIHNldERpc3BsYXlTdGF0ZShXYWl0aW5nRm9yU25hcHNob3QpOworICAgIC8vIFdlIG1h
eSBoYXZlIGdvdCB0byB0aGlzIHBvaW50IGJ5IHJlc3RhcnRpbmcgYSBzbmFwc2hvdHRlZCBwbHVn
LWluLCBpbiB3aGljaCBjYXNlIHdlIGRvbid0IHdhbnQgdG8KKyAgICAvLyByZXNldCB0aGUgZGlz
cGxheSBzdGF0ZS4KKyAgICBpZiAoZGlzcGxheVN0YXRlKCkgIT0gUGxheWluZ1dpdGhQZW5kaW5n
TW91c2VDbGljaykKKyAgICAgICAgc2V0RGlzcGxheVN0YXRlKFdhaXRpbmdGb3JTbmFwc2hvdCk7
CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJEaWRDcmVh
dGVQbHVnSW4oY29uc3QgV2lkZ2V0KiB3aWRnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDA0NzMxYjVlNGVlNjNhNTRiODE5OWViZjIzZTNk
NjYyNmQwYjY0Y2IuLjM5NDljZDcyZjYwZTg4NGIwN2QwMzQxNmJkY2M4MTJkMzVkYTExYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBAIC0yNSwx
MSArMjUsMTMgQEAKIAogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBIVE1MSW1hZ2VMb2FkZXI7CiBjbGFzcyBGcmFtZUxvYWRlcjsKK2NsYXNzIEltYWdl
OwogY2xhc3MgTW91c2VFdmVudDsKIGNsYXNzIFdpZGdldDsKIApAQCAtMzcsNyArMzksNyBAQCBl
bnVtIFBsdWdpbkNyZWF0aW9uT3B0aW9uIHsKICAgICBDcmVhdGVBbnlXaWRnZXRUeXBlLAogICAg
IENyZWF0ZU9ubHlOb25OZXRzY2FwZVBsdWdpbnMsCiB9OwotICAgIAorCiBlbnVtIFByZWZlclBs
dWdJbnNGb3JJbWFnZXNPcHRpb24gewogICAgIFNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMs
CiAgICAgU2hvdWxkTm90UHJlZmVyUGx1Z0luc0ZvckltYWdlcwpAQCAtOTIsMjIgKzk0LDMxIEBA
IHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgd2ls
bFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKTsKLSAgICAKKworICAgIHZvaWQgZGlkQWRkVXNlckFn
ZW50U2hhZG93Um9vdChTaGFkb3dSb290KikgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAKICAgICB2b2lkIHVwZGF0ZVdpZGdldElmTmVjZXNz
YXJ5KCk7CiAgICAgdmlydHVhbCBib29sIHVzZUZhbGxiYWNrQ29udGVudCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU25hcHNob3QoUGFz
c1JlZlB0cjxJbWFnZT4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFBlbmRp
bmdNb3VzZUNsaWNrKCkgT1ZFUlJJREU7CiAgICAgdm9pZCBzaW11bGF0ZWRNb3VzZUNsaWNrVGlt
ZXJGaXJlZChEZWZlcnJhYmxlT25lU2hvdFRpbWVyPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+Kik7
CiAKKyAgICB2b2lkIHN3YXBSZW5kZXJlclRpbWVyRmlyZWQoVGltZXI8SFRNTFBsdWdJbkltYWdl
RWxlbWVudD4qKTsKKworICAgIHZvaWQgc2V0U2hvdWxkU2hvd1NuYXBzaG90TGFiZWxBdXRvbWF0
aWNhbGx5KCkgeyBtX3Nob3VsZFNob3dTbmFwc2hvdExhYmVsQXV0b21hdGljYWxseSA9IHRydWU7
IH0KKwogICAgIGJvb2wgbV9uZWVkc1dpZGdldFVwZGF0ZTsKICAgICBib29sIG1fc2hvdWxkUHJl
ZmVyUGx1Z0luc0ZvckltYWdlczsKICAgICBib29sIG1fbmVlZHNEb2N1bWVudEFjdGl2YXRpb25D
YWxsYmFja3M7CisgICAgYm9vbCBtX3Nob3VsZFNob3dTbmFwc2hvdExhYmVsQXV0b21hdGljYWxs
eTsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1fY3VzdG9tU3R5bGVGb3JQYWdlQ2FjaGU7CiAg
ICAgUmVmUHRyPE1vdXNlRXZlbnQ+IG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNob3Q7CiAg
ICAgRGVmZXJyYWJsZU9uZVNob3RUaW1lcjxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PiBtX3NpbXVs
YXRlZE1vdXNlQ2xpY2tUaW1lcjsKKyAgICBUaW1lcjxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PiBt
X3N3YXBSZW5kZXJlclRpbWVyOworICAgIFJlZlB0cjxJbWFnZT4gbV9zbmFwc2hvdEltYWdlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
aW5kZXggMzQwM2IzOTVhOWRmMzJlNTY4ZGZlYmI1MjQ5ZDk4N2I5MDZkYjhkNS4uNWY2Y2UzOWE1
MTkwNGVhNDUzMGQ1YmI3M2U1NWEyMTgyZmM1NTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCkBAIC0zNzMsNyArMzczLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlz
RW1wdHlDaHJvbWVDbGllbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPEltYWdlPiBwbHVnSW5TdGFydExhYmVsSW1hZ2UoUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW46OkxhYmVsU2l6ZSkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgU3Ry
aW5nIHBsdWdJblN0YXJ0TGFiZWxUaXRsZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAg
ICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKCkgY29uc3QgeyByZXR1
cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBwbHVnSW5FeHRyYVN0eWxlU2hlZXQo
KSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggYTYzNTFjOWQ0NzZiNjhl
YjEwYjgxMDE4NDJjYzk4Njg3YzJkNThlOS4uMjNlMGIxMDMyOWFhZGY4YmNmYWEzN2NkMzZiMWM5
NzE3ZTNmMjk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC00MCwxNCArNDAsMTMgQEAKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgorI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTb3VyY2VHcmFwaGljLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGludCBhdXRvU3RhcnRQbHVnSW5TaXplVGhyZXNob2xk
V2lkdGggPSAxOwogc3RhdGljIGNvbnN0IGludCBhdXRvU3RhcnRQbHVnSW5TaXplVGhyZXNob2xk
SGVpZ2h0ID0gMTsKLXN0YXRpYyBjb25zdCBpbnQgc3RhcnRMYWJlbFBhZGRpbmcgPSAxMDsgLy8g
TGFiZWwgc2hvdWxkIGJlIDEwcHggZnJvbSBlZGdlIG9mIGJveC4KLXN0YXRpYyBjb25zdCBpbnQg
c3RhcnRMYWJlbEluc2V0ID0gMjA7IC8vIEJ1dCB0aGUgbGFiZWwgaXMgaW5zZXQgZnJvbSBpdHMg
Ym94IGFsc28uIEZJWE1FOiBUaGlzIHdpbGwgYmUgcmVtb3ZlZCB3aGVuIHdlIGdvIHRvIGEgU2hh
ZG93RE9NIGFwcHJvYWNoLgogc3RhdGljIGNvbnN0IGRvdWJsZSBzaG93TGFiZWxBZnRlck1vdXNl
T3ZlckRlbGF5ID0gMTsKIHN0YXRpYyBjb25zdCBkb3VibGUgc2hvd0xhYmVsQXV0b21hdGljYWxs
eURlbGF5ID0gMzsKIHN0YXRpYyBjb25zdCBpbnQgc25hcHNob3RMYWJlbEJsdXJSYWRpdXMgPSA1
OwpAQCAtMTAwLDcgKzk5LDcgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbkJsdXJGaWx0
ZXI6OmFwcGx5KCkKICNlbmRpZgogCiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6UmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCogZWxlbWVudCkKLSAgICA6IFJl
bmRlckVtYmVkZGVkT2JqZWN0KGVsZW1lbnQpCisgICAgOiBSZW5kZXJCbG9jayhlbGVtZW50KQog
ICAgICwgbV9zbmFwc2hvdFJlc291cmNlKFJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSgpKQog
ICAgICwgbV9zaG91bGRTaG93TGFiZWwoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFNob3dMYWJlbEF1
dG9tYXRpY2FsbHkoZmFsc2UpCkBAIC0xNDUsMjggKzE0NCwxNyBAQCB2b2lkIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjp1cGRhdGVTbmFwc2hvdChQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkKIAog
dm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKLSAgICBpZiAocGx1Z0luSW1hZ2VF
bGVtZW50KCktPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmdXaXRo
UGVuZGluZ01vdXNlQ2xpY2spIHsKLSAgICAgICAgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KHBhaW50
SW5mbywgcGFpbnRPZmZzZXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmVuZGVy
RW1iZWRkZWRPYmplY3Q6OnBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwotfQotCi12b2lk
IFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCi17Ci0gICAgaWYgKHBsdWdJbklt
YWdlRWxlbWVudCgpLT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5n
V2l0aFBlbmRpbmdNb3VzZUNsaWNrKSB7CisgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWlu
dFBoYXNlQmxvY2tCYWNrZ3JvdW5kICYmIHBsdWdJbkltYWdlRWxlbWVudCgpLT5kaXNwbGF5U3Rh
dGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKSB7
CiAgICAgICAgIGlmIChtX3Nob3VsZFNob3dMYWJlbCkKLSAgICAgICAgICAgIHBhaW50UmVwbGFj
ZWRTbmFwc2hvdFdpdGhMYWJlbChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKKyAgICAgICAgICAg
IHBhaW50U25hcHNob3RXaXRoTGFiZWwocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHBhaW50UmVwbGFjZWRTbmFwc2hvdChwYWludEluZm8sIHBhaW50
T2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcGFpbnRTbmFwc2hvdChwYWlu
dEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICB9CiAKLSAgICBSZW5kZXJFbWJlZGRlZE9iamVjdDo6
cGFpbnRSZXBsYWNlZChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKKyAgICBSZW5kZXJCbG9jazo6
cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiB9CiAKLXZvaWQgUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW46OnBhaW50U25hcHNob3QoSW1hZ2UqIGltYWdlLCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQordm9pZCBSZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbjo6cGFpbnRTbmFwc2hvdEltYWdlKEltYWdlKiBpbWFnZSwgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBMYXlvdXRVbml0
IGNXaWR0aCA9IGNvbnRlbnRXaWR0aCgpOwogICAgIExheW91dFVuaXQgY0hlaWdodCA9IGNvbnRl
bnRIZWlnaHQoKTsKQEAgLTE4MCw3ICsxNjgsNyBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1
Z0luOjpwYWludFNuYXBzaG90KEltYWdlKiBpbWFnZSwgUGFpbnRJbmZvJiBwYWludEluZm8sCiAj
ZW5kaWYKIAogICAgIExheW91dFNpemUgY29udGVudFNpemUoY1dpZHRoLCBjSGVpZ2h0KTsKLSAg
ICBMYXlvdXRQb2ludCBjb250ZW50TG9jYXRpb24gPSBwYWludE9mZnNldDsKKyAgICBMYXlvdXRQ
b2ludCBjb250ZW50TG9jYXRpb24gPSBsb2NhdGlvbigpICsgcGFpbnRPZmZzZXQ7CiAgICAgY29u
dGVudExvY2F0aW9uLm1vdmUoYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9w
KCkgKyBwYWRkaW5nVG9wKCkpOwogCiAgICAgTGF5b3V0UmVjdCByZWN0KGNvbnRlbnRMb2NhdGlv
biwgY29udGVudFNpemUpOwpAQCAtMTkyLDMxICsxODAsMTMgQEAgdm9pZCBSZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdChJbWFnZSogaW1hZ2UsIFBhaW50SW5mbyYgcGFpbnRJ
bmZvLAogICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgp
LCBhbGlnbmVkUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlciwgc2hvdWxkUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOwogfQogCi12b2lkIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjpwYWludFJlcGxhY2VkU25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKK3ZvaWQgUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW46OnBhaW50U25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCkKIHsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gbV9zbmFwc2hv
dFJlc291cmNlLT5pbWFnZSgpOwogICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBwYWludFNuYXBzaG90KGltYWdlLmdldCgpLCBwYWludElu
Zm8sIHBhaW50T2Zmc2V0KTsKLX0KLQotSW1hZ2UqIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpz
dGFydExhYmVsSW1hZ2UoTGFiZWxTaXplIHNpemUpIGNvbnN0Ci17Ci0gICAgc3RhdGljIEltYWdl
KiBsYWJlbEltYWdlc1syXSA9IHsgMCwgMCB9OwotICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVk
SW1hZ2VzWzJdID0geyBmYWxzZSwgZmFsc2UgfTsKLQotICAgIGludCBhcnJheUluZGV4ID0gc3Rh
dGljX2Nhc3Q8aW50PihzaXplKTsKLSAgICBpZiAobGFiZWxJbWFnZXNbYXJyYXlJbmRleF0pCi0g
ICAgICAgIHJldHVybiBsYWJlbEltYWdlc1thcnJheUluZGV4XTsKLSAgICBpZiAoaW5pdGlhbGl6
ZWRJbWFnZXNbYXJyYXlJbmRleF0pCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGRvY3Vt
ZW50KCktPnBhZ2UoKSkgewotICAgICAgICBsYWJlbEltYWdlc1thcnJheUluZGV4XSA9IGRvY3Vt
ZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbHVnSW5TdGFydExhYmVsSW1hZ2Uo
c2l6ZSkubGVha1JlZigpOwotICAgICAgICBpbml0aWFsaXplZEltYWdlc1thcnJheUluZGV4XSA9
IHRydWU7Ci0gICAgfQotICAgIHJldHVybiBsYWJlbEltYWdlc1thcnJheUluZGV4XTsKKyAgICBw
YWludFNuYXBzaG90SW1hZ2UoaW1hZ2UuZ2V0KCksIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwog
fQogCiAjaWYgRU5BQkxFKEZJTFRFUlMpCkBAIC0yMzgsNyArMjA4LDcgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8SW1hZ2U+IHNuYXBzaG90dGVkUGx1Z2luSW1hZ2VGb3JMYWJlbERpc3BsYXkoUGFzc1Jl
ZlB0cjxJbWFnZT4KIH0KICNlbmRpZgogCi12b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpw
YWludFJlcGxhY2VkU25hcHNob3RXaXRoTGFiZWwoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCkKK3ZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46
OnBhaW50U25hcHNob3RXaXRoTGFiZWwoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBpZiAoY29udGVudEJveFJlY3QoKS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI0Nyw0MyArMjE3LDI2IEBAIHZvaWQgUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW46OnBhaW50UmVwbGFjZWRTbmFwc2hvdFdpdGhMYWJlbChQYWludEluZm8m
IHBhaW50SW5mCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2hvd2VkTGFiZWxPbmNlID0gdHJ1
ZTsKLSAgICBMYXlvdXRSZWN0IHJlY3QgPSBjb250ZW50Qm94UmVjdCgpOwotICAgIExheW91dFJl
Y3QgbGFiZWxSZWN0ID0gdHJ5VG9GaXRTdGFydExhYmVsKExhYmVsU2l6ZUxhcmdlLCByZWN0KTsK
LSAgICBMYWJlbFNpemUgc2l6ZSA9IE5vTGFiZWw7Ci0gICAgaWYgKCFsYWJlbFJlY3QuaXNFbXB0
eSgpKQotICAgICAgICBzaXplID0gTGFiZWxTaXplTGFyZ2U7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IGxhYmVsUmVjdCA9IHRyeVRvRml0U3RhcnRMYWJlbChMYWJlbFNpemVTbWFsbCwgcmVjdCk7Ci0g
ICAgICAgIGlmICghbGFiZWxSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHNpemUgPSBMYWJl
bFNpemVTbWFsbDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEltYWdlKiBsYWJlbEltYWdlID0gc3RhcnRMYWJlbEltYWdlKHNpemUpOwotICAgIGlmICgh
bGFiZWxJbWFnZSkKLSAgICAgICAgcmV0dXJuOworICAgIExheW91dFJlY3QgbGFiZWxSZWN0Owog
CiAgICAgUmVmUHRyPEltYWdlPiBzbmFwc2hvdEltYWdlID0gbV9zbmFwc2hvdFJlc291cmNlLT5p
bWFnZSgpOwogICAgIGlmICghc25hcHNob3RJbWFnZSB8fCBzbmFwc2hvdEltYWdlLT5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKEZJTFRFUlMpCi0gICAgUmVmUHRyPElt
YWdlPiBibHVycmVkU25hcHNob3RJbWFnZSA9IG1fc25hcHNob3RSZXNvdXJjZUZvckxhYmVsLT5p
bWFnZSgpOwotICAgIGlmICghYmx1cnJlZFNuYXBzaG90SW1hZ2UgfHwgYmx1cnJlZFNuYXBzaG90
SW1hZ2UtPmlzTnVsbCgpKSB7Ci0gICAgICAgIGJsdXJyZWRTbmFwc2hvdEltYWdlID0gc25hcHNo
b3R0ZWRQbHVnaW5JbWFnZUZvckxhYmVsRGlzcGxheShzbmFwc2hvdEltYWdlLCBsYWJlbFJlY3Qp
OwotICAgICAgICBtX3NuYXBzaG90UmVzb3VyY2VGb3JMYWJlbC0+c2V0Q2FjaGVkSW1hZ2UobmV3
IENhY2hlZEltYWdlKGJsdXJyZWRTbmFwc2hvdEltYWdlLmdldCgpKSk7CisgICAgLy8gRklYTUU6
IFRlbXBvcmFyaWx5IGRpc2FibGluZyB0aGUgYmx1ciBiZWhpbmQgdGhlIGxhYmVsLgorICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgzNjgKKyAgICBpZiAo
IWxhYmVsUmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmVmUHRyPEltYWdlPiBibHVycmVkU25h
cHNob3RJbWFnZSA9IG1fc25hcHNob3RSZXNvdXJjZUZvckxhYmVsLT5pbWFnZSgpOworICAgICAg
ICBpZiAoIWJsdXJyZWRTbmFwc2hvdEltYWdlIHx8IGJsdXJyZWRTbmFwc2hvdEltYWdlLT5pc051
bGwoKSkgeworICAgICAgICAgICAgYmx1cnJlZFNuYXBzaG90SW1hZ2UgPSBzbmFwc2hvdHRlZFBs
dWdpbkltYWdlRm9yTGFiZWxEaXNwbGF5KHNuYXBzaG90SW1hZ2UsIGxhYmVsUmVjdCk7CisgICAg
ICAgICAgICBtX3NuYXBzaG90UmVzb3VyY2VGb3JMYWJlbC0+c2V0Q2FjaGVkSW1hZ2UobmV3IENh
Y2hlZEltYWdlKGJsdXJyZWRTbmFwc2hvdEltYWdlLmdldCgpKSk7CisgICAgICAgIH0KKyAgICAg
ICAgc25hcHNob3RJbWFnZSA9IGJsdXJyZWRTbmFwc2hvdEltYWdlOwogICAgIH0KLSAgICBzbmFw
c2hvdEltYWdlID0gYmx1cnJlZFNuYXBzaG90SW1hZ2U7CiAjZW5kaWYKIAotICAgIHBhaW50U25h
cHNob3Qoc25hcHNob3RJbWFnZS5nZXQoKSwgcGFpbnRJbmZvLCBwYWludE9mZnNldCk7Ci0KLSAg
ICAvLyBSZW1lbWJlciB0aGF0IHRoZSBsYWJlbFJlY3QgaW5jbHVkZXMgdGhlIGxhYmVsIGluc2V0
LCBzbyB3ZSBuZWVkIHRvIGFkanVzdCBmb3IgaXQuCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRy
YXdJbWFnZShsYWJlbEltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSW50UmVjdChyb3VuZGVkSW50UG9pbnQocGFpbnRPZmZzZXQgKyBs
YWJlbFJlY3QubG9jYXRpb24oKSAtIEludFNpemUoc3RhcnRMYWJlbEluc2V0LCBzdGFydExhYmVs
SW5zZXQpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRl
ZEludFNpemUobGFiZWxSZWN0LnNpemUoKSArIEludFNpemUoMiAqIHN0YXJ0TGFiZWxJbnNldCwg
MiAqIHN0YXJ0TGFiZWxJbnNldCkpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxhYmVsSW1hZ2UtPnJlY3QoKSk7CisgICAgcGFpbnRTbmFwc2hvdEltYWdlKHNuYXBzaG90SW1h
Z2UuZ2V0KCksIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogfQogCiB2b2lkIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjpyZXBhaW50TGFiZWwoKQpAQCAtMzA5LDcgKzI2Miw3IEBAIEN1cnNvckRp
cmVjdGl2ZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6Z2V0Q3Vyc29yKGNvbnN0IExheW91dFBv
aW50JiBwb2ludCwgQ3VyCiAgICAgICAgIG92ZXJyaWRlQ3Vyc29yID0gaGFuZEN1cnNvcigpOwog
ICAgICAgICByZXR1cm4gU2V0Q3Vyc29yOwogICAgIH0KLSAgICByZXR1cm4gUmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OmdldEN1cnNvcihwb2ludCwgb3ZlcnJpZGVDdXJzb3IpOworICAgIHJldHVybiBS
ZW5kZXJCbG9jazo6Z2V0Q3Vyc29yKHBvaW50LCBvdmVycmlkZUN1cnNvcik7CiB9CiAKIHZvaWQg
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmhhbmRsZUV2ZW50KEV2ZW50KiBldmVudCkKQEAgLTMy
NSwxMiArMjc4LDYgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQo
RXZlbnQqIGV2ZW50KQogCiAgICAgICAgIHBsdWdJbkltYWdlRWxlbWVudCgpLT5zZXREaXNwbGF5
U3RhdGUoSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2spOwog
ICAgICAgICBwbHVnSW5JbWFnZUVsZW1lbnQoKS0+dXNlckRpZENsaWNrU25hcHNob3QobW91c2VF
dmVudCk7Ci0KLSAgICAgICAgaWYgKHdpZGdldCgpKSB7Ci0gICAgICAgICAgICBpZiAoRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+bG9h
ZGVyKCktPmNsaWVudCgpLT5yZWNyZWF0ZVBsdWdpbih3aWRnZXQoKSk7Ci0gICAgICAgICAgICBy
ZXBhaW50KCk7Ci0gICAgICAgIH0KICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7
CiAgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25F
dmVudCkgewogICAgICAgICBpZiAobW91c2VFdmVudC0+YnV0dG9uKCkgIT0gTGVmdEJ1dHRvbikK
QEAgLTM1OCwyNyArMzA1LDYgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6aGFuZGxl
RXZlbnQoRXZlbnQqIGV2ZW50KQogICAgIH0KIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbjo6dHJ5VG9GaXRTdGFydExhYmVsKExhYmVsU2l6ZSBzaXplLCBjb25zdCBMYXlv
dXRSZWN0JiBjb250ZW50Qm94KSBjb25zdAotewotICAgIEltYWdlKiBsYWJlbEltYWdlID0gc3Rh
cnRMYWJlbEltYWdlKHNpemUpOwotICAgIGlmICghbGFiZWxJbWFnZSkKLSAgICAgICAgcmV0dXJu
IExheW91dFJlY3QoKTsKLQotICAgIC8vIEFzc3VtZSB0aGF0IHRoZSBsYWJlbEltYWdlIGhhcyBi
ZWVuIHByb3ZpZGVkIHRvIG1hdGNoIG91ciBkZXZpY2Ugc2NhbGUuCi0gICAgZmxvYXQgc2NhbGVG
YWN0b3IgPSAxOwotICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpCi0gICAgICAgIHNjYWxlRmFj
dG9yID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIEludFNp
emUgbGFiZWxJbWFnZVNpemUgPSBsYWJlbEltYWdlLT5zaXplKCk7Ci0gICAgbGFiZWxJbWFnZVNp
emUuc2NhbGUoMSAvIChzY2FsZUZhY3RvciA/IHNjYWxlRmFjdG9yIDogMSkpOwotCi0gICAgTGF5
b3V0U2l6ZSBsYWJlbFNpemUgPSBsYWJlbEltYWdlU2l6ZSAtIExheW91dFNpemUoMiAqIHN0YXJ0
TGFiZWxJbnNldCwgMiAqIHN0YXJ0TGFiZWxJbnNldCk7Ci0gICAgTGF5b3V0UmVjdCBjYW5kaWRh
dGVSZWN0KGNvbnRlbnRCb3gubWF4WE1pbllDb3JuZXIoKSArIExheW91dFNpemUoLXN0YXJ0TGFi
ZWxQYWRkaW5nLCBzdGFydExhYmVsUGFkZGluZykgKyBMYXlvdXRTaXplKC1sYWJlbFNpemUud2lk
dGgoKSwgMCksIGxhYmVsU2l6ZSk7Ci0gICAgLy8gVGhlIG1pbmltdW0gYWxsb3dlZCBjb250ZW50
IGJveCBzaXplIGlzIHRoZSBsYWJlbCBpbWFnZSBwbGFjZWQgaW4gdGhlIGNlbnRlciBvZiB0aGUg
Ym94LCBzdXJyb3VuZGVkIGJ5IHN0YXJ0TGFiZWxQYWRkaW5nLgotICAgIGlmIChjYW5kaWRhdGVS
ZWN0LngoKSA8IHN0YXJ0TGFiZWxQYWRkaW5nIHx8IGNhbmRpZGF0ZVJlY3QubWF4WSgpID4gY29u
dGVudEJveC5oZWlnaHQoKSAtIHN0YXJ0TGFiZWxQYWRkaW5nKQotICAgICAgICByZXR1cm4gTGF5
b3V0UmVjdCgpOwotICAgIHJldHVybiBjYW5kaWRhdGVSZWN0OwotfQotCiB2b2lkIFJlbmRlclNu
YXBzaG90dGVkUGx1Z0luOjpyZXNldERlbGF5VGltZXIoU2hvd1JlYXNvbiByZWFzb24pCiB7CiAg
ICAgbV9zaG93UmVhc29uID0gcmVhc29uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAppbmRleCBiOWRlNjJjYmFjMmFhY2ZhNWExNGM2
OWJkNDJhNjkyZmZlNjU1Nzc0Li5hNjY3YjRmNzExZWUxZmZiNTg1Y2YyMzAzM2RmZTRlYzFjZGRi
ZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbl9oCiAjZGVmaW5lIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luX2gKIAotI2luY2x1ZGUgIlJl
bmRlckVtYmVkZGVkT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKIAogI2luY2x1
ZGUgIlJlbmRlckltYWdlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtMzUsMTcg
KzM1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxl
bWVudDsKIAotY2xhc3MgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4gOiBwdWJsaWMgUmVuZGVyRW1i
ZWRkZWRPYmplY3QgeworY2xhc3MgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4gOiBwdWJsaWMgUmVu
ZGVyQmxvY2sgewogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
KEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbigpOwogCi0gICAgZW51bSBMYWJlbFNpemUgewotICAgICAgICBMYWJlbFNpemVTbWFs
bCwKLSAgICAgICAgTGFiZWxTaXplTGFyZ2UsCi0gICAgICAgIE5vTGFiZWwsCi0gICAgfTsKLQog
ICAgIHZvaWQgdXBkYXRlU25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4pOwogCiAgICAgdm9pZCBo
YW5kbGVFdmVudChFdmVudCopOwpAQCAtNjAsMTYgKzU0LDEyIEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBDdXJzb3JEaXJlY3RpdmUgZ2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiwgQ3Vyc29y
JikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzU25hcHNob3R0ZWRQbHVnSW4o
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklE
RTsKIAotICAgIHZvaWQgcGFpbnRSZXBsYWNlZFNuYXBzaG90KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50Jik7Ci0gICAgdm9pZCBwYWludFJlcGxhY2VkU25hcHNob3RXaXRoTGFiZWwoUGFp
bnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKLSAgICB2b2lkIHBhaW50U25hcHNob3QoSW1h
Z2UqLCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZvaWQgcGFpbnRTbmFw
c2hvdChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZvaWQgcGFpbnRTbmFw
c2hvdFdpdGhMYWJlbChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZvaWQg
cGFpbnRTbmFwc2hvdEltYWdlKEltYWdlKiwgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQm
KTsKICAgICB2b2lkIHJlcGFpbnRMYWJlbCgpOwogCi0gICAgTGF5b3V0UmVjdCB0cnlUb0ZpdFN0
YXJ0TGFiZWwoTGFiZWxTaXplLCBjb25zdCBMYXlvdXRSZWN0JiBjb250ZW50Qm94KSBjb25zdDsK
LSAgICBJbWFnZSogc3RhcnRMYWJlbEltYWdlKExhYmVsU2l6ZSkgY29uc3Q7Ci0KICAgICBlbnVt
IFNob3dSZWFzb24gewogICAgICAgICBVc2VyTW91c2VkT3ZlciwKICAgICAgICAgU2hvdWxkU2hv
d0F1dG9tYXRpY2FsbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5j
cHAKaW5kZXggZTJiOTU3ZDY0Y2VhZDJlMWJlNjMxMDEyN2E2NjhhMDQ0MjQ2Nzc1OS4uZjhkMWE0
MDE4NDIyN2I2ZjRiZGNlZjEzYjZjODE0ODM2ZmI4NWMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKQEAgLTE2MywyNiArMTYzLDYgQEAgdWludDY0X3Qg
SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoV2ViUGFn
ZSogcGFnZSwgV2ViU2UKICAgICByZXR1cm4gbV9jbGllbnQuZGlkRXhjZWVkRGF0YWJhc2VRdW90
YSh0b0FQSShwYWdlKSwgdG9BUEkob3JpZ2luKSwgdG9BUEkoZGF0YWJhc2VOYW1lLmltcGwoKSks
IHRvQVBJKGRhdGFiYXNlRGlzcGxheU5hbWUuaW1wbCgpKSwgY3VycmVudFF1b3RhQnl0ZXMsIGN1
cnJlbnRPcmlnaW5Vc2FnZUJ5dGVzLCBjdXJyZW50RGF0YWJhc2VVc2FnZUJ5dGVzLCBleHBlY3Rl
ZFVzYWdlQnl0ZXMsIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCi1QYXNzUmVmUHRyPFdlYklt
YWdlPiBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbEltYWdlKFJl
bmRlclNuYXBzaG90dGVkUGx1Z0luOjpMYWJlbFNpemUgc2l6ZSkgY29uc3QKLXsKLSAgICBpZiAo
IW1fY2xpZW50LnBsdWdJblN0YXJ0TGFiZWxJbWFnZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICBXS0J1bmRsZVBhZ2VMYWJlbFNpemUgd2tTaXplOwotICAgIHN3aXRjaCAoc2l6ZSkgewotICAg
IGNhc2UgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OkxhYmVsU2l6ZVNtYWxsOgotICAgICAgICB3
a1NpemUgPSBXS0J1bmRsZVBhZ2VMYWJlbFNpemVTbWFsbDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6TGFiZWxTaXplTGFyZ2U6Ci0gICAgICAgIHdr
U2l6ZSA9IFdLQnVuZGxlUGFnZUxhYmVsU2l6ZUxhcmdlOwotICAgICAgICBicmVhazsKLSAgICBk
ZWZhdWx0OgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYo
dG9JbXBsKG1fY2xpZW50LnBsdWdJblN0YXJ0TGFiZWxJbWFnZSh3a1NpemUsIG1fY2xpZW50LmNs
aWVudEluZm8pKSk7Ci19Ci0KIFN0cmluZyBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6cGx1
Z0luU3RhcnRMYWJlbFRpdGxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKaW5kZXggNTY5NjM4MjEyOWRjMTQ1
NDA1YmY1NDc5MjQ0MzM1NmU5M2Y4MjkzZi4uYWQ4ZmUyNGQyMTUzM2E0NmE3NDllNzI1Y2YwY2Zh
MTNkODRlYjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaApA
QCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkFQSUNsaWVudC5oIgogI2luY2x1ZGUgIldLQnVu
ZGxlUGFnZS5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCi0jaW5jbHVkZSAiV2ViSW1hZ2UuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KIApAQCAtNzEsNyArNzAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRS
ZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJQYWdlKiwgV2ViU2VjdXJpdHlPcmln
aW4qLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQpOwogICAgIHVpbnQ2NF90IGRpZEV4Y2VlZERh
dGFiYXNlUXVvdGEoV2ViUGFnZSosIFdlYlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXNwbGF5TmFtZSwgdWludDY0X3Qg
Y3VycmVudFF1b3RhQnl0ZXMsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZUJ5dGVzLCB1aW50
NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZUJ5dGVzLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlQnl0
ZXMpOwogCi0gICAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gcGx1Z0luU3RhcnRMYWJlbEltYWdlKFdl
YkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpMYWJlbFNpemUpIGNvbnN0OwogICAgIFN0
cmluZyBwbHVnSW5TdGFydExhYmVsVGl0bGUoKSBjb25zdDsKICAgICBTdHJpbmcgcGx1Z0luU3Rh
cnRMYWJlbFN1YnRpdGxlKCkgY29uc3Q7CiAgICAgU3RyaW5nIHBsdWdJbkV4dHJhU3R5bGVTaGVl
dCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDMzMzgxZmZlNTlhZGIwMzQy
Yzg3YmQ4ODNmNjI0NmFkYzIyZWUzYjAuLjQ2OTA3Y2UwZTZjM2ExY2E1NzMxMjQyOWYwOTkwNjRk
NmE1NDIxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTc5OCwxMSArNzk4LDYgQEAg
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVEaWFnbm9z
dGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKG1fcGFnZSwgbWVzc2FnZSwg
ZGVzY3JpcHRpb24sIHN1Y2Nlc3MpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBXZWJDaHJvbWVD
bGllbnQ6OnBsdWdJblN0YXJ0TGFiZWxJbWFnZShSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6TGFi
ZWxTaXplIHNpemUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVV
SUNsaWVudCgpLnBsdWdJblN0YXJ0TGFiZWxJbWFnZShzaXplKS0+Yml0bWFwKCktPmNyZWF0ZUlt
YWdlKCk7Ci19Ci0KIFN0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnBsdWdJblN0YXJ0TGFiZWxUaXRs
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgp
LnBsdWdJblN0YXJ0TGFiZWxUaXRsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZDJmYzA5
MzY2M2Y3MjlmZjk1NmQwNjcwMzUzZGJjM2RmNmQ2YTlhYy4uM2VhM2EzYjU4YzkxNWYyMWRjMGNl
Mjg1M2VlMmNmYzdhMDIwZWQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yOCw3ICsyOCw2
IEBACiAjZGVmaW5lIFdlYkNocm9tZUNsaWVudF9oCiAKICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9t
ZUNsaWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTIxOCw3ICsyMTcsNiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGxvZ0RpYWdu
b3N0aWNNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlw
dGlvbiwgY29uc3QgU3RyaW5nJiBzdWNjZXNzKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpJbWFnZT4gcGx1Z0luU3RhcnRMYWJlbEltYWdlKFdlYkNvcmU6OlJl
bmRlclNuYXBzaG90dGVkUGx1Z0luOjpMYWJlbFNpemUpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxUaXRsZSgpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSgpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJbkV4dHJhU3R5bGVTaGVldCgpIGNvbnN0IE9WRVJS
SURFOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187384</attachid>
            <date>2013-02-08 16:25:50 -0800</date>
            <delta_ts>2013-02-08 19:32:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108284-20130209112223.patch</filename>
            <type>text/plain</type>
            <size>42337</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM1MzlhNjE3ZWEyNWY0
ZmEzODIyNTJhYzY0NWIxZDYzODJlODhjYy4uNzIxYWQ2MmRlZTVkZDMxYjhiOTc5Y2M2MTA2YWEx
YTgzMzBjOWIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDgxIEBACiAyMDEzLTAyLTA4ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAorICAgICAgICBTbmFwc2hvdHRlZCBwbHVnLWlu
IHNob3VsZCB1c2Ugc2hhZG93IHJvb3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwODI4NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNl
ci4KKworICAgICAgICBBIHNuYXBzaG90dGVkIHBsdWdpbiBuZWVkcyB0byBpbmRpY2F0ZSB0byB0
aGUgdXNlciB0aGF0IGl0IGNhbiBiZSBjbGlja2VkCisgICAgICAgIHRvIGJlIHJlc3RhcnRlZC4g
UHJldmlvdXNseSB0aGlzIHdhcyBkb25lIHdpdGggYW4gaW1hZ2UgdGhhdCBoYWQgZW1iZWRkZWQK
KyAgICAgICAgdGV4dC4gSW5zdGVhZCwgd2Ugbm93IHVzZSBhbiBpbnRlcm5hbCBzaGFkb3cgcm9v
dCB0byBlbWJlZCBzb21lIG1hcmt1cCB0aGF0CisgICAgICAgIHdpbGwgZGlzcGxheSBpbnN0cnVj
dGlvbnMgdGhhdCBjYW4gYmUgbG9jYWxpc2VkLgorCisgICAgICAgIFRoZSBVQSBzdHlsZXNoZWV0
IGZvciBwbHVnLWlucyBwcm92aWRlcyBhIGRlZmF1bHQgc3R5bGluZyBmb3IgdGhlIGxhYmVsLCB3
aGljaAorICAgICAgICBjYW4gYmUgb3ZlcnJpZGRlbiBieSBwb3J0cy4KKworICAgICAgICBJbiB0
aGUgcHJvY2VzcywgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4gbm8gbG9uZ2VyIGluaGVyaXRzIGZy
b20gUmVuZGVyRW1iZWRkZWRPYmplY3QsCisgICAgICAgIHNpbmNlIGl0IGlzIG9ubHkgcmVzcG9u
c2libGUgZm9yIGRyYXdpbmcgYSBwYXVzZWQgcGx1Zy1pbi4gVGhlIHNuYXBzaG90IGNyZWF0aW9u
CisgICAgICAgIGNhbiB3b3JrIHdpdGggdGhlIGRlZmF1bHQgcmVuZGVyZXIsIGJ1dCBhIHNoYWRv
dyByb290IHJlcXVpcmVzIHNvbWV0aGluZyBsaWtlCisgICAgICAgIFJlbmRlckJsb2NrIGluIG9y
ZGVyIHRvIGRyYXcgaXRzIGNoaWxkcmVuLiBXZSBzd2FwIGZyb20gb25lIHJlbmRlcmVyIHRvIGFu
b3RoZXIgd2hlbgorICAgICAgICBuZWNlc3NhcnkgZWl0aGVyIGJ5IGNyZWF0aW5nIHRoZSBzaGFk
b3cgcm9vdCBvciBieSBleHBsaWNpdGx5IGRldGFjaGluZyBhbmQgYXR0YWNoaW5nCisgICAgICAg
IHRoZSBwbHVnaW4gZWxlbWVudC4KKworICAgICAgICBVbmZvcnR1bmF0ZWx5IHRoaXMgaXMgZGlm
ZmljdWx0IHRvIHRlc3QsIGJlY2F1c2UgdGhlIHNuYXBzaG90dGluZyByZXF1aXJlcworICAgICAg
ICB0aW1lIHRvIGV4ZWN1dGUsIGFuZCBhbHNvIGEgUGx1Z2luVmlldyB0byBiZSBpbnN0YW50aWF0
ZWQuCisKKyAgICAgICAgKiBjc3MvcGx1Z0lucy5jc3M6CisgICAgICAgIChvYmplY3Q6Oi13ZWJr
aXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQpOiBOZXcgcnVsZXMgZm9yIGEgZGVmYXVsdCBs
YWJlbCBzdHlsZS4KKworICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOiBN
YWtlIHN1cmUgYWxsIHBvcnRzIGhhdmUgcGx1Z2luIHN0cmluZ3MsIG5vdyBpdCBpcyBjYWxsZWQu
CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL0xvY2FsaXplZFN0cmluZ3NDaHJvbWl1bS5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZWZsL0xvY2FsaXplZFN0cmluZ3NFZmwuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9M
b2NhbGl6ZWRTdHJpbmdzUXQuY3BwOgorCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcik6IFRha2UgaW50byBhY2NvdW50IHRoZSBmYWN0CisgICAgICAgIHRoYXQgUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4gbm8gbG9uZ2VyIGlzIGFuIGVtYmVkZGVkIG9iamVjdC4KKworICAg
ICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KTogTmV3IGRl
ZmF1bHQgdmFsdWVzIGluIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJ
bkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBNYWtlIHN1cmUgdG8gY2FsbCBiYXNlIGNs
YXNzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OndpbGxSZWNhbGNTdHls
ZSk6IE5vIG5lZWQgdG8gcmVhdHRhY2ggaWYgd2UncmUgYSBzbmFwc2hvdC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKTogSWYgd2UncmUg
c2hvd2luZyBhIHNuYXBzaG90LCBjcmVhdGUgc3VjaAorICAgICAgICAgICAgYSByZW5kZXJlciwg
b3RoZXJ3aXNlIHVzZSB0aGUgdHlwaWNhbCBwbHVnLWluIHBhdGguCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVTbmFwc2hvdCk6IEtlZXAgYSByZWNvcmQg
b2YgdGhlIHNuYXBzaG90LCBzaW5jZSB3ZSdsbAorICAgICAgICAgICAgbmVlZCB0byBnaXZlIGl0
IHRvIHRoZSByZW5kZXJlci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QpOiBCdWlsZCBhIHN1YnRyZWUgdGhhdCB3aWxs
IGRpc3BsYXkgYSBsYWJlbC4KKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
aDoKKyAgICAgICAgKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQpOiBOZXcgbWVtYmVyIHZhcmlhYmxl
IHRvIHJlY29yZCB0aGUgc25hcHNob3QgaW1hZ2UgYW5kIHdoZXRoZXIgdGhlIGxhYmVsCisgICAg
ICAgICAgICBzaG91bGQgc2hvdyBpbW1lZGlhdGVseS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OnN3YXBSZW5kZXJlclRpbWVyRmlyZWQpOiBUaGUgY2FsbGJhY2sg
ZnVuY3Rpb24gdHJpZ2dlcmVkIHdoZW4gd2UgbmVlZAorICAgICAgICAgICAgdG8gc3dhcCB0byB0
aGUgU2hhZG93IFJvb3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
Ojp1c2VyRGlkQ2xpY2tTbmFwc2hvdCk6IFRoZSB1c2VyIGhhcyB0YXBwZWQgb24gdGhlIHNuYXBz
aG90IHNvIHRoZSBwbHVnaW4KKyAgICAgICAgICAgIGluIGJlaW5nIHJlY3JlYXRlZC4gTWFrZSBz
dXJlIHdlIHJlYXR0YWNoIHNvIHRoYXQgYSBwbHVnaW4gcmVuZGVyZXIgd2lsbCBiZSBjcmVhdGVk
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2Fk
ZXJXaWxsQ3JlYXRlUGx1Z0luKTogTWFrZSBzdXJlIHdlIHNldCB0aGUgcmlnaHQKKyAgICAgICAg
ICAgIGRpc3BsYXlTdGF0ZSBmb3Igc25hcHNob3RzLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5oOgorICAgICAgICAoSFRNTFBsdWdJbkltYWdlRWxlbWVudCk6IFRoZSBu
ZXcgbWV0aG9kcyBsaXN0ZWQgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpzZXRTaG91bGRTaG93U25hcHNob3RMYWJlbEF1dG9tYXRpY2FsbHkpOiBJbmRp
Y2F0ZXMgd2hldGhlciBvciBub3QKKyAgICAgICAgICAgIGEgc25hcHNob3Qgc2hvdWxkIGJlIGlt
bWVkaWF0ZWx5IGxhYmVsZWQuCisKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOiBObyBu
ZWVkIGZvciBwbHVnSW5TdGFydExhYmVsSW1hZ2UgYW55IG1vcmUuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKTogTmV3IGluaGVy
aXRhbmNlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50
KTogSWYgd2UncmUgaW4gdGhlIGJhY2tncm91bmQgcGFpbnQgcGhhc2UsIHJlbmRlciB0aGUgc25h
cHNob3QgaW1hZ2UuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6
cGFpbnRTbmFwc2hvdEltYWdlKTogUmVuYW1lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25h
cHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOiBSZW5hbWUuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdFdpdGhMYWJlbCk6IFJlbmFt
ZS4gTm8gbmVlZCBmb3IgbGFiZWwgc2l6ZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbjo6Z2V0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudCk6IFRoZSByZW5kZXJlciBkb2Vzbid0IHJlc3RhcnQg
dGhlIHBsdWctaW4gYW55IG1vcmUuIFRlbGwgdGhlIGVsZW1lbnQgYW5kIGl0IHdpbGwgZG8gaXQu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmg6CisgICAgICAg
IChSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik6IE5ldyBpbmhlcml0YW5jZS4gU29tZSBtZXRob2Qg
cmVuYW1pbmcuCisKKzIwMTMtMDItMDggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgor
CiAgICAgICAgIFB1dCBzbmFwc2hvdHRpbmcgbGFiZWwgdGV4dCBpbnRvIGxvY2FsaXphYmxlIHN0
cmluZ3MKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
ODI2OAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzExZjZlZWI3MWE2ZjdlOTUyNmIzNjU2ZTcwODI4MTg4ZTcz
M2QwZS4uM2E3Nzc1OWJlYTY0Y2FmMjQ2NGUyMDk1YzQ0MTY0ZGUwZWVmNjUxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDE5IEBACiAyMDEzLTAyLTA4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxl
LmNvbT4KIAorICAgICAgICBTbmFwc2hvdHRlZCBwbHVnLWluIHNob3VsZCB1c2Ugc2hhZG93IHJv
b3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODI4
NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBXZSBubyBs
b25nZXIgaGF2ZSBhbnkgbmVlZCBmb3IgcGx1Z0luU3RhcnRMYWJlbEltYWdlLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5j
cHA6IFJlbW92ZSBwbHVnSW5TdGFydExhYmVsSW1hZ2UuCisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oOiBEaXR0by4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6IERpdHRv
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6
IERpdHRvLgorCisyMDEzLTAyLTA4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKwog
ICAgICAgICBEbyBub3QgcmVnaXN0ZXIgYXV0b3N0YXJ0IGZvciBwbHVnaW5zIGZyb20gZmlsZTov
LyAob3Igbm93aGVyZSkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwODI3MQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGx1Z0lucy5j
c3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGx1Z0lucy5jc3MKaW5kZXggYmNlNzE2ZGUzMmFjMjMy
YTkzOTRiNzFhZWMwZTJkNWZhM2M4NWFiMC4uNTM5NTY3OTFkYjYxNWFkMzk1Njg1ZWQ5MWU3Y2Zh
ZTk0ZmIyMjRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BsdWdJbnMuY3NzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wbHVnSW5zLmNzcwpAQCAtMjIsNSArMjIsNzQgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotLyogcGx1Zy1pbnMgKi8KLXB7fSAvKk5lZWRlZCBieSBXaW5k
b3dzIGJlY2F1c2UgaXQgZG9lc24ndCBsaWtlIGVtcHR5IGZpbGVzKi8KKy8qCisgKiBUaGlzIGlz
IHRoZSBVQSBTdHlsZVNoZWV0IGZvciA8b2JqZWN0PiBhbmQgPGVtYmVkPiBlbGVtZW50cy4KKyAq
CisgKiBTdWNoIGVsZW1lbnRzLCB3aGVuIHNuYXBzaG90dGVkIChwYXVzZWQpLCB3aWxsIGNvbnRh
aW4gYSBTaGFkb3dSb290CisgKiB3aXRoIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOgorICoKKyAq
IDxvYmplY3Q+CisgKiAgICNTaGFkb3dSb290CisgKiAgICAgPGRpdiBjbGFzcz0ic25hcHNob3Qt
Y29udGFpbmVyIj4KKyAqICAgICAgIDxkaXYgY2xhc3M9InNuYXBzaG90LW92ZXJsYXkiPjwvZGl2
PiA8IS0tIGUuZy4gZm9yIGRpbW1pbmcgY29udGVudCAtLT4KKyAqICAgICAgICAgPGRpdiBjbGFz
cz0ic25hcHNob3QtbGFiZWwiPgorICogICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXBzaG90LXRp
dGxlIj5TbmFwc2hvdHRlZCBQbHVnLUluPC9kaXY+CisgKiAgICAgICAgICAgPGRpdiBjbGFzcz0i
c25hcHNob3Qtc3VidGl0bGUiPkNsaWNrIHRvIHJlc3RhcnQ8L2Rpdj4KKyAqICAgICAgICAgPC9k
aXY+CisgKiAgICAgICA8L2Rpdj4KKyAqICAgICA8L2Rpdj4KKyAqCisgKi8KKworb2JqZWN0Ojot
d2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50LAorZW1iZWQ6Oi13ZWJraXQtc25hcHNo
b3R0ZWQtcGx1Z2luLWNvbnRlbnQKK3sKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsK
K30KKworb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50ICosCitlbWJl
ZDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAqCit7CisgICAgLXdlYmtpdC11
c2VyLXNlbGVjdDogbm9uZTsKK30KKworb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdp
bi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIsCitlbWJlZDo6LXdlYmtpdC1zbmFwc2hvdHRl
ZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVyCit7CisgICAgcG9zaXRpb246IGFi
c29sdXRlOworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKK30KKworb2JqZWN0
Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIg
LnNuYXBzaG90LW92ZXJsYXksCitlbWJlZDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29u
dGVudCAuc25hcHNob3QtY29udGFpbmVyIC5zbmFwc2hvdC1vdmVybGF5Cit7CisgICAgZGlzcGxh
eTogbm9uZTsKK30KKworb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50
IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LWxhYmVsLAorZW1iZWQ6Oi13ZWJraXQtc25h
cHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3QtbGFi
ZWwKK3sKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogd2hp
dGU7CisgICAgY29sb3I6IGJsYWNrOworICAgIG1hcmdpbjogMWVtOworICAgIHBhZGRpbmc6IDAu
MjVlbSAyZW07CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCitvYmplY3Q6Oi13ZWJraXQt
c25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3Qt
bGFiZWwgLnNuYXBzaG90LXRpdGxlLAorZW1iZWQ6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2lu
LWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3QtbGFiZWwgLnNuYXBzaG90LXRp
dGxlCit7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK29iamVjdDo6LXdlYmtpdC1zbmFw
c2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVyIC5zbmFwc2hvdC1sYWJl
bCAuc25hcHNob3Qtc3VidGl0bGUsCitlbWJlZDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4t
Y29udGVudCAuc25hcHNob3QtY29udGFpbmVyIC5zbmFwc2hvdC1sYWJlbCAuc25hcHNob3Qtc3Vi
dGl0bGUKK3sKKyAgICBmb250LXN0eWxlOiBpdGFsaWM7CisgICAgY29sb3I6ICM0NDQ7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCmluZGV4IGUyOTAyYWQ3MTc2
NDY1ODY4ZWY5OTU4YThhNjQ0ZWU1MDA5NDA1MDMuLjFhYTgzNmQ1ZThlOGEzMjRlNjE2MTM1NDY1
YWIwNTg3MWM4MmQ1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQu
Y3BwCkBAIC0yMDEsMTAgKzIwMSwxMCBAQCB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIHRvUmVuZGVyRW1iZWRkZWRP
YmplY3QociktPmhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yRXZlbnQoZXZlbnQpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChyLT5pc1NuYXBzaG90
dGVkUGx1Z0luKCkgJiYgZGlzcGxheVN0YXRlKCkgPCBQbGF5aW5nV2l0aFBlbmRpbmdNb3VzZUNs
aWNrKSB7Ci0gICAgICAgICAgICB0b1JlbmRlclNuYXBzaG90dGVkUGx1Z0luKHIpLT5oYW5kbGVF
dmVudChldmVudCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICB9IGVsc2Ug
aWYgKHIgJiYgci0+aXNTbmFwc2hvdHRlZFBsdWdJbigpICYmIGRpc3BsYXlTdGF0ZSgpIDwgUGxh
eWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykgeworICAgICAgICB0b1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luKHIpLT5oYW5kbGVFdmVudChldmVudCk7CisgICAgICAgIEhUTUxGcmFtZU93bmVyRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CisgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBpZiAoIXIgfHwgIXItPmlzV2lkZ2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCA1OTdiY2M1NTcxM2E2ZWVlNTM2Zjgz
YTlmYzliMTk4NTliNDAwODRhLi4xMmZhMTA2ZTgwMzQzMjMxNDVhYWY0NTE2NmFmY2VhOTM4MDRm
YTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5j
cHAKQEAgLTIxLDE2ICsyMSwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUg
IkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgorI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlTG9h
ZGVyLmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNs
dWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJO
b2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbHVn
SW5DbGllbnQuaCIKICNpbmNsdWRlICJQbHVnSW5PcmlnaW5IYXNoLmgiCkBAIC00MSwxMCArNDUs
MTQgQEAKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAj
aW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCiBzdGF0aWMgY29uc3Qg
aW50IGF1dG9TdGFydFBsdWdJblNpemVUaHJlc2hvbGRXaWR0aCA9IDE7CiBzdGF0aWMgY29uc3Qg
aW50IGF1dG9TdGFydFBsdWdJblNpemVUaHJlc2hvbGRIZWlnaHQgPSAxOwogc3RhdGljIGNvbnN0
IGludCBhdXRvU2hvd0xhYmVsU2l6ZVRocmVzaG9sZFdpZHRoID0gNDAwOwpAQCAtNjEsNyArNjks
OSBAQCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogICAgICwgbV9uZWVkc1dpZGdldFVwZGF0ZSgh
Y3JlYXRlZEJ5UGFyc2VyKQogICAgICwgbV9zaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKHBy
ZWZlclBsdWdJbnNGb3JJbWFnZXNPcHRpb24gPT0gU2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdl
cykKICAgICAsIG1fbmVlZHNEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3MoZmFsc2UpCisgICAg
LCBtX3Nob3VsZFNob3dTbmFwc2hvdExhYmVsQXV0b21hdGljYWxseShmYWxzZSkKICAgICAsIG1f
c2ltdWxhdGVkTW91c2VDbGlja1RpbWVyKHRoaXMsICZIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpz
aW11bGF0ZWRNb3VzZUNsaWNrVGltZXJGaXJlZCwgc2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRGVs
YXkpCisgICAgLCBtX3N3YXBSZW5kZXJlclRpbWVyKHRoaXMsICZIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50Ojpzd2FwUmVuZGVyZXJUaW1lckZpcmVkKQogewogICAgIHNldEhhc0N1c3RvbUNhbGxiYWNr
cygpOwogfQpAQCAtMTMyLDI3ICsxNDIsMzQgQEAgUmVuZGVyT2JqZWN0KiBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclMKICAg
ICAgICAgbV9uZWVkc0RvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyA9IHRydWU7CiAgICAgICAg
IGRvY3VtZW50KCktPnJlZ2lzdGVyRm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlz
KTsKICAgICB9Ci0gICAgCisKKyAgICBpZiAoZGlzcGxheVN0YXRlKCkgPT0gRGlzcGxheWluZ1Nu
YXBzaG90KSB7CisgICAgICAgIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luKiByZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbiA9IG5ldyAoYXJlbmEpIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luKHRoaXMpOwor
ICAgICAgICByZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi0+dXBkYXRlU25hcHNob3QobV9zbmFwc2hv
dEltYWdlKTsKKyAgICAgICAgaWYgKG1fc2hvdWxkU2hvd1NuYXBzaG90TGFiZWxBdXRvbWF0aWNh
bGx5KQorICAgICAgICAgICAgcmVuZGVyU25hcHNob3R0ZWRQbHVnSW4tPnNldFNob3VsZFNob3dM
YWJlbEF1dG9tYXRpY2FsbHkoKTsKKyAgICAgICAgcmV0dXJuIHJlbmRlclNuYXBzaG90dGVkUGx1
Z0luOworICAgIH0KKwogICAgIC8vIEZhbGxiYWNrIGNvbnRlbnQgYnJlYWtzIHRoZSBET00tPlJl
bmRlcmVyIGNsYXNzIHJlbGF0aW9uc2hpcCBvZiB0aGlzCiAgICAgLy8gY2xhc3MgYW5kIGFsbCBz
dXBlcmNsYXNzZXMgYmVjYXVzZSBjcmVhdGVPYmplY3Qgd29uJ3QgbmVjZXNzYXJpbHkKICAgICAv
LyByZXR1cm4gYSBSZW5kZXJFbWJlZGRlZE9iamVjdCwgUmVuZGVyUGFydCBvciBldmVuIFJlbmRl
cldpZGdldC4KICAgICBpZiAodXNlRmFsbGJhY2tDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBS
ZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCh0aGlzLCBzdHlsZSk7CisKICAgICBpZiAoaXNJbWFn
ZVR5cGUoKSkgewogICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBuZXcgKGFyZW5hKSBSZW5k
ZXJJbWFnZSh0aGlzKTsKICAgICAgICAgaW1hZ2UtPnNldEltYWdlUmVzb3VyY2UoUmVuZGVySW1h
Z2VSZXNvdXJjZTo6Y3JlYXRlKCkpOwogICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfQogCi0g
ICAgaWYgKGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPnNldHRpbmdz
KCktPnBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIG5ldyAoYXJl
bmEpIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luKHRoaXMpOwogICAgIHJldHVybiBuZXcgKGFyZW5h
KSBSZW5kZXJFbWJlZGRlZE9iamVjdCh0aGlzKTsKIH0KIAogYm9vbCBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50Ojp3aWxsUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpCiB7CiAgICAgLy8gRklYTUU6IFdo
eSBpcyB0aGlzIG5lY2Vzc2FyeT8gIE1hbnVhbCByZS1hdHRhY2ggaXMgYWxtb3N0IGFsd2F5cyB3
cm9uZy4KLSAgICBpZiAoIXVzZUZhbGxiYWNrQ29udGVudCgpICYmIG5lZWRzV2lkZ2V0VXBkYXRl
KCkgJiYgcmVuZGVyZXIoKSAmJiAhaXNJbWFnZVR5cGUoKSkKKyAgICBpZiAoIXVzZUZhbGxiYWNr
Q29udGVudCgpICYmIG5lZWRzV2lkZ2V0VXBkYXRlKCkgJiYgcmVuZGVyZXIoKSAmJiAhaXNJbWFn
ZVR5cGUoKSAmJiAoZGlzcGxheVN0YXRlKCkgIT0gRGlzcGxheWluZ1NuYXBzaG90KSkKICAgICAg
ICAgcmVhdHRhY2goKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI1OCwxMSArMjc1LDcyIEBA
IHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlV2lkZ2V0Q2FsbGJhY2soTm9kZSog
biwgdW5zaWduZWQpCiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlU25hcHNo
b3QoUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCiB7Ci0gICAgaWYgKGRpc3BsYXlTdGF0ZSgpID4g
RGlzcGxheWluZ1NuYXBzaG90IHx8ICFyZW5kZXJlcigpLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkp
CisgICAgaWYgKGRpc3BsYXlTdGF0ZSgpID4gRGlzcGxheWluZ1NuYXBzaG90KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB0b1JlbmRlclNuYXBzaG90dGVkUGx1Z0luKHJlbmRlcmVyKCkpLT51cGRh
dGVTbmFwc2hvdChpbWFnZSk7CisgICAgbV9zbmFwc2hvdEltYWdlID0gaW1hZ2U7CisgICAgaWYg
KHJlbmRlcmVyKCktPmlzU25hcHNob3R0ZWRQbHVnSW4oKSkgeworICAgICAgICB0b1JlbmRlclNu
YXBzaG90dGVkUGx1Z0luKHJlbmRlcmVyKCkpLT51cGRhdGVTbmFwc2hvdChpbWFnZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICBzZXREaXNwbGF5U3RhdGUoRGlzcGxheWluZ1NuYXBz
aG90KTsKKyAgICBtX3N3YXBSZW5kZXJlclRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9p
ZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRv
d1Jvb3QqIHJvb3QpCit7CisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50KCk7CisKKyAgICBS
ZWZQdHI8RWxlbWVudD4gc2hhZG93Q29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShk
b2MpOworICAgIHNoYWRvd0NvbnRhaW5lci0+c2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtp
dC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKKworICAgIFJlZlB0cjxFbGVtZW50PiBjb250YWluZXIgPSBIVE1MRGl2RWxl
bWVudDo6Y3JlYXRlKGRvYyk7CisgICAgY29udGFpbmVyLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRy
LCBBdG9taWNTdHJpbmcoInNuYXBzaG90LWNvbnRhaW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKworICAgIFJlZlB0cjxFbGVtZW50PiBvdmVybGF5ID0gSFRNTERp
dkVsZW1lbnQ6OmNyZWF0ZShkb2MpOworICAgIG92ZXJsYXktPnNldEF0dHJpYnV0ZShjbGFzc0F0
dHIsIEF0b21pY1N0cmluZygic25hcHNob3Qtb3ZlcmxheSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKKyAgICBjb250YWluZXItPmFwcGVuZENoaWxkKG92ZXJsYXksIEFT
U0VSVF9OT19FWENFUFRJT04pOworCisgICAgUmVmUHRyPEVsZW1lbnQ+IGxhYmVsID0gSFRNTERp
dkVsZW1lbnQ6OmNyZWF0ZShkb2MpOworICAgIGxhYmVsLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRy
LCBBdG9taWNTdHJpbmcoInNuYXBzaG90LWxhYmVsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworCisgICAgU3RyaW5nIHRpdGxlVGV4dCA9IHNuYXBzaG90dGVkUGx1Z0lu
TGFiZWxUaXRsZSgpOworICAgIFN0cmluZyBzdWJ0aXRsZVRleHQgPSBzbmFwc2hvdHRlZFBsdWdJ
bkxhYmVsU3VidGl0bGUoKTsKKyAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpKSB7CisgICAgICAg
IFN0cmluZyBjbGllbnRUaXRsZVRleHQgPSBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5j
bGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFRpdGxlKCk7CisgICAgICAgIGlmICghY2xpZW50VGl0
bGVUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHRpdGxlVGV4dCA9IGNsaWVudFRpdGxlVGV4
dDsKKyAgICAgICAgU3RyaW5nIGNsaWVudFN1YnRpdGxlVGV4dCA9IGRvY3VtZW50KCktPnBhZ2Uo
KS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbHVnSW5TdGFydExhYmVsU3VidGl0bGUoKTsKKyAgICAg
ICAgaWYgKCFjbGllbnRTdWJ0aXRsZVRleHQuaXNFbXB0eSgpKQorICAgICAgICAgICAgc3VidGl0
bGVUZXh0ID0gY2xpZW50U3VidGl0bGVUZXh0OworICAgIH0KKworICAgIFJlZlB0cjxFbGVtZW50
PiB0aXRsZSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKKyAgICB0aXRsZS0+c2V0QXR0
cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJzbmFwc2hvdC10aXRsZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICB0aXRsZS0+YXBwZW5kQ2hpbGQoZG9j
LT5jcmVhdGVUZXh0Tm9kZSh0aXRsZVRleHQpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBs
YWJlbC0+YXBwZW5kQ2hpbGQodGl0bGUsIEFTU0VSVF9OT19FWENFUFRJT04pOworCisgICAgUmVm
UHRyPEVsZW1lbnQ+IHN1YlRpdGxlID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2MpOworICAg
IHN1YlRpdGxlLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoInNuYXBzaG90
LXN1YnRpdGxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIHN1
YlRpdGxlLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKHN1YnRpdGxlVGV4dCksIEFT
U0VSVF9OT19FWENFUFRJT04pOworICAgIGxhYmVsLT5hcHBlbmRDaGlsZChzdWJUaXRsZSwgQVNT
RVJUX05PX0VYQ0VQVElPTik7CisKKyAgICBjb250YWluZXItPmFwcGVuZENoaWxkKGxhYmVsLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKworICAgIHNoYWRvd0NvbnRhaW5lci0+YXBwZW5kQ2hpbGQo
Y29udGFpbmVyLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICByb290LT5hcHBlbmRDaGlsZChz
aGFkb3dDb250YWluZXIsIEFTU0VSVF9OT19FWENFUFRJT04pOworfQorCit2b2lkIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OnN3YXBSZW5kZXJlclRpbWVyRmlyZWQoVGltZXI8SFRNTFBsdWdJbklt
YWdlRWxlbWVudD4qKQoreworICAgIEFTU0VSVChkaXNwbGF5U3RhdGUoKSA9PSBEaXNwbGF5aW5n
U25hcHNob3QpOworICAgIGlmICh1c2VyQWdlbnRTaGFkb3dSb290KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIENyZWF0ZSBhIHNoYWRvdyByb290LCB3aGljaCB3aWxsIHRyaWdnZXIgdGhl
IGNvZGUgdG8gYWRkIGEgc25hcHNob3QgY29udGFpbmVyCisgICAgLy8gYW5kIHJlYXR0YWNoLCB0
aHVzIG1ha2luZyBhIG5ldyBSZW5kZXJlci4KKyAgICBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290
KCk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXNlckRpZENsaWNrU25hcHNo
b3QoUGFzc1JlZlB0cjxNb3VzZUV2ZW50PiBldmVudCkKQEAgLTI3MCw2ICszNDgsOCBAQCB2b2lk
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVzZXJEaWRDbGlja1NuYXBzaG90KFBhc3NSZWZQdHI8
TW91c2VFdmVudD4gZXZlbnQpCiAgICAgbV9wZW5kaW5nQ2xpY2tFdmVudEZyb21TbmFwc2hvdCA9
IGV2ZW50OwogICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkgJiYgIVNjaGVtZVJlZ2lzdHJ5Ojpz
aG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwoZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJhbWUo
KS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLnByb3RvY29sKCkpKQogICAgICAgICBkb2N1bWVudCgp
LT5wYWdlKCktPnBsdWdJbkNsaWVudCgpLT5hZGRBdXRvU3RhcnRPcmlnaW4oZG9jdW1lbnQoKS0+
cGFnZSgpLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKSwgbV9wbHVn
SW5PcmlnaW5IYXNoKTsKKworICAgIHJlYXR0YWNoKCk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTW91c2VDbGljaygpCkBAIC0zMTksMTYgKzM5OSwx
MiBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0
ZVBsdWdJbihjb25zdCBLVVJMJiB1cmwpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAoIXJlbmRlcmVyKCktPmlzU25hcHNob3R0ZWRQbHVnSW4oKSkgewotICAgICAgICBMT0coUGx1
Z2lucywgIiVwIFJlbmRlcmVyIGlzIG5vdCBzbmFwc2hvdHRlZCBwbHVnaW4sIHNldCB0byBwbGF5
IiwgdGhpcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgaWYgKFNjcmlwdENvbnRyb2xs
ZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7CiAgICAgICAgIExPRyhQbHVnaW5zLCAiJXAg
U2NyaXB0IGlzIHByb2Nlc3NpbmcgdXNlciBnZXN0dXJlLCBzZXQgdG8gcGxheSIsIHRoaXMpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTGF5b3V0UmVjdCByZWN0ID0gdG9SZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbihyZW5kZXJlcigpKS0+Y29udGVudEJveFJlY3QoKTsKKyAgICBMYXlv
dXRSZWN0IHJlY3QgPSB0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHJlbmRlcmVyKCkpLT5jb250ZW50
Qm94UmVjdCgpOwogICAgIGludCB3aWR0aCA9IHJlY3Qud2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0
ID0gcmVjdC5oZWlnaHQoKTsKICAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQgfHwgKHdpZHRoIDw9
IGF1dG9TdGFydFBsdWdJblNpemVUaHJlc2hvbGRXaWR0aCAmJiBoZWlnaHQgPD0gYXV0b1N0YXJ0
UGx1Z0luU2l6ZVRocmVzaG9sZEhlaWdodCkpIHsKQEAgLTM1MSwxMCArNDI3LDEzIEBAIHZvaWQg
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNv
bnN0IEtVUkwmIHVybCkKICAgICB9CiAKICAgICBpZiAoc2hvdWxkUGx1Z0luU2hvd0xhYmVsQXV0
b21hdGljYWxseShkb2N1bWVudCgpLT5wYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPmNvbnRl
bnRzU2l6ZSgpLCB0aGlzKSkKLSAgICAgICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihyZW5k
ZXJlcigpKS0+c2V0U2hvdWxkU2hvd0xhYmVsQXV0b21hdGljYWxseSgpOworICAgICAgICBzZXRT
aG91bGRTaG93U25hcHNob3RMYWJlbEF1dG9tYXRpY2FsbHkoKTsKIAogICAgIExPRyhQbHVnaW5z
LCAiJXAgUGx1Zy1pbiBoYXNoICV4IGlzICVkeCVkLCBvcmlnaW4gaXMgbm90IGF1dG8tc3RhcnQs
IHNldCB0byB3YWl0IGZvciBzbmFwc2hvdCIsIHRoaXMsIG1fcGx1Z0luT3JpZ2luSGFzaCwgd2lk
dGgsIGhlaWdodCk7Ci0gICAgc2V0RGlzcGxheVN0YXRlKFdhaXRpbmdGb3JTbmFwc2hvdCk7Cisg
ICAgLy8gV2UgbWF5IGhhdmUgZ290IHRvIHRoaXMgcG9pbnQgYnkgcmVzdGFydGluZyBhIHNuYXBz
aG90dGVkIHBsdWctaW4sIGluIHdoaWNoIGNhc2Ugd2UgZG9uJ3Qgd2FudCB0bworICAgIC8vIHJl
c2V0IHRoZSBkaXNwbGF5IHN0YXRlLgorICAgIGlmIChkaXNwbGF5U3RhdGUoKSAhPSBQbGF5aW5n
V2l0aFBlbmRpbmdNb3VzZUNsaWNrKQorICAgICAgICBzZXREaXNwbGF5U3RhdGUoV2FpdGluZ0Zv
clNuYXBzaG90KTsKIH0KIAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxv
YWRlckRpZENyZWF0ZVBsdWdJbihjb25zdCBXaWRnZXQqIHdpZGdldCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKaW5kZXggMDQ3MzFiNWU0ZWU2M2E1NGI4
MTk5ZWJmMjNlM2Q2NjI2ZDBiNjRjYi4uMzk0OWNkNzJmNjBlODg0YjA3ZDAzNDE2YmRjYzgxMmQz
NWRhMTFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmgKQEAgLTI1LDExICsyNSwxMyBAQAogCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxJbWFnZUxvYWRlcjsKIGNsYXNzIEZyYW1lTG9hZGVyOwor
Y2xhc3MgSW1hZ2U7CiBjbGFzcyBNb3VzZUV2ZW50OwogY2xhc3MgV2lkZ2V0OwogCkBAIC0zNyw3
ICszOSw3IEBAIGVudW0gUGx1Z2luQ3JlYXRpb25PcHRpb24gewogICAgIENyZWF0ZUFueVdpZGdl
dFR5cGUsCiAgICAgQ3JlYXRlT25seU5vbk5ldHNjYXBlUGx1Z2lucywKIH07Ci0gICAgCisKIGVu
dW0gUHJlZmVyUGx1Z0luc0ZvckltYWdlc09wdGlvbiB7CiAgICAgU2hvdWxkUHJlZmVyUGx1Z0lu
c0ZvckltYWdlcywKICAgICBTaG91bGROb3RQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzCkBAIC05Miwy
MiArOTQsMzEgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1
YWwgYm9vbCB3aWxsUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpOwotICAgIAorCisgICAgdm9pZCBk
aWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBPVkVSUklERTsKKwogICAgIHZp
cnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKIAogICAgIHZvaWQgdXBkYXRlV2lk
Z2V0SWZOZWNlc3NhcnkoKTsKICAgICB2aXJ0dWFsIGJvb2wgdXNlRmFsbGJhY2tDb250ZW50KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVT
bmFwc2hvdChQYXNzUmVmUHRyPEltYWdlPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoUGVuZGluZ01vdXNlQ2xpY2soKSBPVkVSUklERTsKICAgICB2b2lkIHNpbXVsYXRlZE1v
dXNlQ2xpY2tUaW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90VGltZXI8SFRNTFBsdWdJbkltYWdl
RWxlbWVudD4qKTsKIAorICAgIHZvaWQgc3dhcFJlbmRlcmVyVGltZXJGaXJlZChUaW1lcjxIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50PiopOworCisgICAgdm9pZCBzZXRTaG91bGRTaG93U25hcHNob3RM
YWJlbEF1dG9tYXRpY2FsbHkoKSB7IG1fc2hvdWxkU2hvd1NuYXBzaG90TGFiZWxBdXRvbWF0aWNh
bGx5ID0gdHJ1ZTsgfQorCiAgICAgYm9vbCBtX25lZWRzV2lkZ2V0VXBkYXRlOwogICAgIGJvb2wg
bV9zaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzOwogICAgIGJvb2wgbV9uZWVkc0RvY3VtZW50
QWN0aXZhdGlvbkNhbGxiYWNrczsKKyAgICBib29sIG1fc2hvdWxkU2hvd1NuYXBzaG90TGFiZWxB
dXRvbWF0aWNhbGx5OwogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9jdXN0b21TdHlsZUZvclBh
Z2VDYWNoZTsKICAgICBSZWZQdHI8TW91c2VFdmVudD4gbV9wZW5kaW5nQ2xpY2tFdmVudEZyb21T
bmFwc2hvdDsKICAgICBEZWZlcnJhYmxlT25lU2hvdFRpbWVyPEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ+IG1fc2ltdWxhdGVkTW91c2VDbGlja1RpbWVyOworICAgIFRpbWVyPEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ+IG1fc3dhcFJlbmRlcmVyVGltZXI7CisgICAgUmVmUHRyPEltYWdlPiBtX3NuYXBz
aG90SW1hZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAppbmRleCAzNDAzYjM5NWE5ZGYzMmU1NjhkZmViYjUyNDlkOTg3YjkwNmRiOGQ1
Li41ZjZjZTM5YTUxOTA0ZWE0NTMwZDViYjczZTU1YTIxODJmYzU1NTQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgKQEAgLTM3Myw3ICszNzMsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNFbXB0eUNocm9tZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IHBsdWdJblN0YXJ0TGFiZWxJbWFnZShSZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbjo6TGFiZWxTaXplKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAg
dmlydHVhbCBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFRpdGxlKCkgY29uc3QgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBwbHVnSW5TdGFydExhYmVsU3VidGl0bGUoKSBj
b25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJbkV4dHJh
U3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCmluZGV4IDAwMDZhMDVmMDg5YzQyMDRiM2Rj
NGI4NGJlOGFjYmY2NTVlMTY5ZDUuLjMyZDA3ODNkMDg5NTFlOWM5N2E4ZDI0MDY4YjlmYzNhMWVk
MmRmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwOSwg
MjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDYsIDIwMDksIDIwMTAsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0
cmluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAppbmRl
eCBiNDc3ZjQ3Y2Q0MTU5NjM5YzdmNmNlNWIzOTViNDQxMzg3MzkxZDc0Li5mZDgxZmY4Zjc2N2Jm
YWY5ZmIxNDhiNWMyZjU2MTBkNWZmYTIwZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TG9jYWxpemVkU3RyaW5ncy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNiwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA5LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlh
IFMuTAogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9Mb2NhbGl6ZWRTdHJpbmdzQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFja0JlcnJ5LmNwcApp
bmRleCBhYWQyNGRkNTVjYjhjMWUwZDgyNTQzODU5MmY5MmIzYjA3MjE1M2U2Li5lYTNkZDBjN2Zh
NTNiZGRhZDEyM2QxNzg1OGI4MTY5YmY2YWNjZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFja0JlcnJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFj
a0JlcnJ5LmNwcApAQCAtNjE3LDQgKzYxNywxNiBAQCBTdHJpbmcgZmlsZUJ1dHRvbk5vRmlsZXNT
ZWxlY3RlZExhYmVsKCkKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzX3Jlc291cmNlLmdl
dFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6RklMRV9CVVRUT05fTk9fRklMRV9TRUxFQ1RF
RF9MQUJFTCkpOwogfQogCitTdHJpbmcgc25hcHNob3R0ZWRQbHVnSW5MYWJlbFRpdGxlKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5n
IHNuYXBzaG90dGVkUGx1Z0luTGFiZWxTdWJ0aXRsZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0xvY2FsaXplZFN0cmlu
Z3NDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Mb2NhbGl6
ZWRTdHJpbmdzQ2hyb21pdW0uY3BwCmluZGV4IDhlZTI4YTcyODE1NGYwZWE2MTFiY2ZmM2FjYzNk
OThjZDRhOWRjZWYuLmJlODk4YzNkMTRkMjU4NmZjYTNjMTJiNTliNmI5N2E0OTE0OGIzMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0xvY2FsaXplZFN0cmlu
Z3NDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vTG9j
YWxpemVkU3RyaW5nc0Nocm9taXVtLmNwcApAQCAtNDE2LDYgKzQxNiw4IEBAIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdFbnRlclZpZGVvRnVsbHNjcmVlbigpIHsgcmV0dXJuIFN0cmluZygpOyB9
CiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5KCkgeyByZXR1cm4gU3RyaW5nKCk7
IH0KIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBhdXNlKCkgeyByZXR1cm4gU3RyaW5n
KCk7IH0KIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNZWRpYU11dGUoKSB7IHJldHVybiBTdHJp
bmcoKTsgfQorU3RyaW5nIHNuYXBzaG90dGVkUGx1Z0luTGFiZWxUaXRsZSgpIHsgcmV0dXJuIFN0
cmluZygpOyB9CitTdHJpbmcgc25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRpdGxlKCkgeyByZXR1
cm4gU3RyaW5nKCk7IH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIFN0cmluZyB0ZXh0VHJh
Y2tDbG9zZWRDYXB0aW9uc1RleHQoKSB7IHJldHVybiBTdHJpbmcoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0xvY2FsaXplZFN0cmluZ3NFZmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0xvY2FsaXplZFN0cmluZ3NFZmwuY3BwCmluZGV4IDA2
MDlmNTk1M2NjMzRhY2I4OTMyZGVlZjJiYzllMjViNDUxZDUxNTUuLjU4NzcxMDYzYzhlYTMwYTBj
ZWM1NTUzZTM5NTBkM2FkZmQxMWU5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9Mb2NhbGl6ZWRTdHJpbmdzRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvTG9jYWxpemVkU3RyaW5nc0VmbC5jcHAKQEAgLTYxMCw0ICs2MTAsMTUgQEAgU3Ry
aW5nIHRleHRUcmFja05vTGFiZWxUZXh0KCkKIH0KICNlbmRpZgogCitTdHJpbmcgc25hcHNob3R0
ZWRQbHVnSW5MYWJlbFRpdGxlKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKCJTbmFwc2hvdHRlZCBQ
bHVnLUluIik7Cit9CisKK1N0cmluZyBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsU3VidGl0bGUoKQor
eworICAgIHJldHVybiBTdHJpbmcoIkNsaWNrIHRvIHJlc3RhcnQiKTsKK30KKworCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9jYWxpemVkU3RyaW5nc0d0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9jYWxpemVkU3RyaW5nc0d0ay5jcHAK
aW5kZXggMmIyYzBmMzc2ZDU2NWU5NTdlMjg3YmRlMzJmOGE4ODdjNmU4YWVjYi4uYjUwZDhhZjFi
N2I0ZjQ1MmFjNTEyMWM4OGY5MDhlM2U1NGM5MTkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcApAQCAtNzc0LDQgKzc3NCwx
NCBAQCBTdHJpbmcgdGV4dFRyYWNrTm9MYWJlbFRleHQoKQogfQogI2VuZGlmCiAKK1N0cmluZyBz
bmFwc2hvdHRlZFBsdWdJbkxhYmVsVGl0bGUoKQoreworICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KENfKCJTbmFwc2hvdHRlZCBQbHVnLUluIiwgIlRpdGxlIG9mIHRoZSBsYWJlbCB0byBzaG93
IG9uIGEgc25hcHNob3R0ZWQgcGx1Zy1pbiIpKTsKK30KKworU3RyaW5nIHNuYXBzaG90dGVkUGx1
Z0luTGFiZWxTdWJ0aXRsZSgpCit7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoQ18oIkNs
aWNrIHRvIHJlc3RhcnQiLCAiU3VidGl0bGUgb2YgdGhlIGxhYmVsIHRvIHNob3cgb24gYSBzbmFw
c2hvdHRlZCBwbHVnLWluIikpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9Mb2NhbGl6ZWRTdHJpbmdzUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvTG9jYWxpemVkU3RyaW5nc1F0LmNwcAppbmRleCAwOGEyN2E5ZDViMGIzYTI4OTA1MDdm
MDM2MWIwMWQ2ZTExNDNiMjg3Li45MTQxZjg2ODQ4MzNlNWU5ZjEzOGU5ZGM5NzgwYjExNzFiMDNl
ZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Mb2NhbGl6ZWRTdHJp
bmdzUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0xvY2FsaXplZFN0cmlu
Z3NRdC5jcHAKQEAgLTcyMyw2ICs3MjMsMTggQEAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlQmFk
SW5wdXRGb3JOdW1iZXJUZXh0KCkKICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlz
bWF0Y2hUZXh0KCk7CiB9CiAKK1N0cmluZyBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsVGl0bGUoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJp
bmcgc25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRpdGxlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwogU3RyaW5nIGxvY2FsaXplZFN0cmluZyhj
b25zdCBjaGFyKiBrZXkpCiB7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoa2V5LCBzdHJs
ZW4oa2V5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBz
aG90dGVkUGx1Z0luLmNwcAppbmRleCBhNjM1MWM5ZDQ3NmI2OGViMTBiODEwMTg0MmNjOTg2ODdj
MmQ1OGU5Li4yM2UwYjEwMzI5YWFkZjhiY2ZhYTM3Y2QzNmIxYzk3MTdlM2YyOTQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5j
cHAKQEAgLTQwLDE0ICs0MCwxMyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWlu
dEluZm8uaCIKICNpbmNsdWRlICJQYXRoLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2lu
Y2x1ZGUgIlNvdXJjZUdyYXBoaWMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMg
Y29uc3QgaW50IGF1dG9TdGFydFBsdWdJblNpemVUaHJlc2hvbGRXaWR0aCA9IDE7CiBzdGF0aWMg
Y29uc3QgaW50IGF1dG9TdGFydFBsdWdJblNpemVUaHJlc2hvbGRIZWlnaHQgPSAxOwotc3RhdGlj
IGNvbnN0IGludCBzdGFydExhYmVsUGFkZGluZyA9IDEwOyAvLyBMYWJlbCBzaG91bGQgYmUgMTBw
eCBmcm9tIGVkZ2Ugb2YgYm94Lgotc3RhdGljIGNvbnN0IGludCBzdGFydExhYmVsSW5zZXQgPSAy
MDsgLy8gQnV0IHRoZSBsYWJlbCBpcyBpbnNldCBmcm9tIGl0cyBib3ggYWxzby4gRklYTUU6IFRo
aXMgd2lsbCBiZSByZW1vdmVkIHdoZW4gd2UgZ28gdG8gYSBTaGFkb3dET00gYXBwcm9hY2guCiBz
dGF0aWMgY29uc3QgZG91YmxlIHNob3dMYWJlbEFmdGVyTW91c2VPdmVyRGVsYXkgPSAxOwogc3Rh
dGljIGNvbnN0IGRvdWJsZSBzaG93TGFiZWxBdXRvbWF0aWNhbGx5RGVsYXkgPSAzOwogc3RhdGlj
IGNvbnN0IGludCBzbmFwc2hvdExhYmVsQmx1clJhZGl1cyA9IDU7CkBAIC0xMDAsNyArOTksNyBA
QCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luQmx1ckZpbHRlcjo6YXBwbHkoKQogI2VuZGlm
CiAKIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50KiBlbGVtZW50KQotICAgIDogUmVuZGVyRW1iZWRkZWRPYmplY3Qo
ZWxlbWVudCkKKyAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQpCiAgICAgLCBtX3NuYXBzaG90UmVz
b3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkpCiAgICAgLCBtX3Nob3VsZFNob3dM
YWJlbChmYWxzZSkKICAgICAsIG1fc2hvdWxkU2hvd0xhYmVsQXV0b21hdGljYWxseShmYWxzZSkK
QEAgLTE0NSwyOCArMTQ0LDE3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnVwZGF0
ZVNuYXBzaG90KFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKQogCiB2b2lkIFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQogewotICAgIGlmIChwbHVnSW5JbWFnZUVsZW1lbnQoKS0+ZGlzcGxheVN0
YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGljaykg
ewotICAgICAgICBSZW5kZXJSZXBsYWNlZDo6cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFp
bnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7Ci19Ci0KLXZvaWQgUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW46OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCkKLXsKLSAgICBpZiAocGx1Z0luSW1hZ2VFbGVtZW50KCktPmRpc3Bs
YXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmdXaXRoUGVuZGluZ01vdXNlQ2xp
Y2spIHsKKyAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VCbG9ja0JhY2tncm91
bmQgJiYgcGx1Z0luSW1hZ2VFbGVtZW50KCktPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVs
ZW1lbnQ6OlBsYXlpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2spIHsKICAgICAgICAgaWYgKG1fc2hv
dWxkU2hvd0xhYmVsKQotICAgICAgICAgICAgcGFpbnRSZXBsYWNlZFNuYXBzaG90V2l0aExhYmVs
KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOworICAgICAgICAgICAgcGFpbnRTbmFwc2hvdFdpdGhM
YWJlbChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
cGFpbnRSZXBsYWNlZFNuYXBzaG90KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBwYWludFNuYXBzaG90KHBhaW50SW5mbywgcGFpbnRPZmZzZXQp
OwogICAgIH0KIAotICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKHBhaW50
SW5mbywgcGFpbnRPZmZzZXQpOworICAgIFJlbmRlckJsb2NrOjpwYWludChwYWludEluZm8sIHBh
aW50T2Zmc2V0KTsKIH0KIAotdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFw
c2hvdChJbWFnZSogaW1hZ2UsIFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQpCit2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBz
aG90SW1hZ2UoSW1hZ2UqIGltYWdlLCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIExheW91dFVuaXQgY1dpZHRoID0gY29udGVudFdp
ZHRoKCk7CiAgICAgTGF5b3V0VW5pdCBjSGVpZ2h0ID0gY29udGVudEhlaWdodCgpOwpAQCAtMTgw
LDcgKzE2OCw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3Qo
SW1hZ2UqIGltYWdlLCBQYWludEluZm8mIHBhaW50SW5mbywKICNlbmRpZgogCiAgICAgTGF5b3V0
U2l6ZSBjb250ZW50U2l6ZShjV2lkdGgsIGNIZWlnaHQpOwotICAgIExheW91dFBvaW50IGNvbnRl
bnRMb2NhdGlvbiA9IHBhaW50T2Zmc2V0OworICAgIExheW91dFBvaW50IGNvbnRlbnRMb2NhdGlv
biA9IGxvY2F0aW9uKCkgKyBwYWludE9mZnNldDsKICAgICBjb250ZW50TG9jYXRpb24ubW92ZShi
b3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSk7
CiAKICAgICBMYXlvdXRSZWN0IHJlY3QoY29udGVudExvY2F0aW9uLCBjb250ZW50U2l6ZSk7CkBA
IC0xOTIsMzEgKzE4MCwxMyBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNu
YXBzaG90KEltYWdlKiBpbWFnZSwgUGFpbnRJbmZvJiBwYWludEluZm8sCiAgICAgY29udGV4dC0+
ZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBDb21w
b3NpdGVTb3VyY2VPdmVyLCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCB1c2VMb3dR
dWFsaXR5U2NhbGluZyk7CiB9CiAKLXZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50
UmVwbGFjZWRTbmFwc2hvdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQordm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hv
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQog
ewogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBtX3NuYXBzaG90UmVzb3VyY2UtPmltYWdlKCk7
CiAgICAgaWYgKCFpbWFnZSB8fCBpbWFnZS0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHBhaW50U25hcHNob3QoaW1hZ2UuZ2V0KCksIHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwot
fQotCi1JbWFnZSogUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnN0YXJ0TGFiZWxJbWFnZShMYWJl
bFNpemUgc2l6ZSkgY29uc3QKLXsKLSAgICBzdGF0aWMgSW1hZ2UqIGxhYmVsSW1hZ2VzWzJdID0g
eyAwLCAwIH07Ci0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWRJbWFnZXNbMl0gPSB7IGZhbHNl
LCBmYWxzZSB9OwotCi0gICAgaW50IGFycmF5SW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KHNpemUp
OwotICAgIGlmIChsYWJlbEltYWdlc1thcnJheUluZGV4XSkKLSAgICAgICAgcmV0dXJuIGxhYmVs
SW1hZ2VzW2FycmF5SW5kZXhdOwotICAgIGlmIChpbml0aWFsaXplZEltYWdlc1thcnJheUluZGV4
XSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0g
ICAgICAgIGxhYmVsSW1hZ2VzW2FycmF5SW5kZXhdID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJv
bWUoKS0+Y2xpZW50KCktPnBsdWdJblN0YXJ0TGFiZWxJbWFnZShzaXplKS5sZWFrUmVmKCk7Ci0g
ICAgICAgIGluaXRpYWxpemVkSW1hZ2VzW2FycmF5SW5kZXhdID0gdHJ1ZTsKLSAgICB9Ci0gICAg
cmV0dXJuIGxhYmVsSW1hZ2VzW2FycmF5SW5kZXhdOworICAgIHBhaW50U25hcHNob3RJbWFnZShp
bWFnZS5nZXQoKSwgcGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiB9CiAKICNpZiBFTkFCTEUoRklM
VEVSUykKQEAgLTIzOCw3ICsyMDgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZT4gc25hcHNo
b3R0ZWRQbHVnaW5JbWFnZUZvckxhYmVsRGlzcGxheShQYXNzUmVmUHRyPEltYWdlPgogfQogI2Vu
ZGlmCiAKLXZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50UmVwbGFjZWRTbmFwc2hv
dFdpdGhMYWJlbChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0KQordm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdFdpdGhM
YWJlbChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
KQogewogICAgIGlmIChjb250ZW50Qm94UmVjdCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjQ3LDQzICsyMTcsMjYgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFp
bnRSZXBsYWNlZFNuYXBzaG90V2l0aExhYmVsKFBhaW50SW5mbyYgcGFpbnRJbmYKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9zaG93ZWRMYWJlbE9uY2UgPSB0cnVlOwotICAgIExheW91dFJlY3Qg
cmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7Ci0gICAgTGF5b3V0UmVjdCBsYWJlbFJlY3QgPSB0cnlU
b0ZpdFN0YXJ0TGFiZWwoTGFiZWxTaXplTGFyZ2UsIHJlY3QpOwotICAgIExhYmVsU2l6ZSBzaXpl
ID0gTm9MYWJlbDsKLSAgICBpZiAoIWxhYmVsUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHNpemUg
PSBMYWJlbFNpemVMYXJnZTsKLSAgICBlbHNlIHsKLSAgICAgICAgbGFiZWxSZWN0ID0gdHJ5VG9G
aXRTdGFydExhYmVsKExhYmVsU2l6ZVNtYWxsLCByZWN0KTsKLSAgICAgICAgaWYgKCFsYWJlbFJl
Y3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgc2l6ZSA9IExhYmVsU2l6ZVNtYWxsOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSW1hZ2UqIGxhYmVsSW1h
Z2UgPSBzdGFydExhYmVsSW1hZ2Uoc2l6ZSk7Ci0gICAgaWYgKCFsYWJlbEltYWdlKQotICAgICAg
ICByZXR1cm47CisgICAgTGF5b3V0UmVjdCBsYWJlbFJlY3Q7CiAKICAgICBSZWZQdHI8SW1hZ2U+
IHNuYXBzaG90SW1hZ2UgPSBtX3NuYXBzaG90UmVzb3VyY2UtPmltYWdlKCk7CiAgICAgaWYgKCFz
bmFwc2hvdEltYWdlIHx8IHNuYXBzaG90SW1hZ2UtPmlzTnVsbCgpKQogICAgICAgICByZXR1cm47
CiAKICNpZiBFTkFCTEUoRklMVEVSUykKLSAgICBSZWZQdHI8SW1hZ2U+IGJsdXJyZWRTbmFwc2hv
dEltYWdlID0gbV9zbmFwc2hvdFJlc291cmNlRm9yTGFiZWwtPmltYWdlKCk7Ci0gICAgaWYgKCFi
bHVycmVkU25hcHNob3RJbWFnZSB8fCBibHVycmVkU25hcHNob3RJbWFnZS0+aXNOdWxsKCkpIHsK
LSAgICAgICAgYmx1cnJlZFNuYXBzaG90SW1hZ2UgPSBzbmFwc2hvdHRlZFBsdWdpbkltYWdlRm9y
TGFiZWxEaXNwbGF5KHNuYXBzaG90SW1hZ2UsIGxhYmVsUmVjdCk7Ci0gICAgICAgIG1fc25hcHNo
b3RSZXNvdXJjZUZvckxhYmVsLT5zZXRDYWNoZWRJbWFnZShuZXcgQ2FjaGVkSW1hZ2UoYmx1cnJl
ZFNuYXBzaG90SW1hZ2UuZ2V0KCkpKTsKKyAgICAvLyBGSVhNRTogVGVtcG9yYXJpbHkgZGlzYWJs
aW5nIHRoZSBibHVyIGJlaGluZCB0aGUgbGFiZWwuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODM2OAorICAgIGlmICghbGFiZWxSZWN0LmlzRW1wdHko
KSkgeworICAgICAgICBSZWZQdHI8SW1hZ2U+IGJsdXJyZWRTbmFwc2hvdEltYWdlID0gbV9zbmFw
c2hvdFJlc291cmNlRm9yTGFiZWwtPmltYWdlKCk7CisgICAgICAgIGlmICghYmx1cnJlZFNuYXBz
aG90SW1hZ2UgfHwgYmx1cnJlZFNuYXBzaG90SW1hZ2UtPmlzTnVsbCgpKSB7CisgICAgICAgICAg
ICBibHVycmVkU25hcHNob3RJbWFnZSA9IHNuYXBzaG90dGVkUGx1Z2luSW1hZ2VGb3JMYWJlbERp
c3BsYXkoc25hcHNob3RJbWFnZSwgbGFiZWxSZWN0KTsKKyAgICAgICAgICAgIG1fc25hcHNob3RS
ZXNvdXJjZUZvckxhYmVsLT5zZXRDYWNoZWRJbWFnZShuZXcgQ2FjaGVkSW1hZ2UoYmx1cnJlZFNu
YXBzaG90SW1hZ2UuZ2V0KCkpKTsKKyAgICAgICAgfQorICAgICAgICBzbmFwc2hvdEltYWdlID0g
Ymx1cnJlZFNuYXBzaG90SW1hZ2U7CiAgICAgfQotICAgIHNuYXBzaG90SW1hZ2UgPSBibHVycmVk
U25hcHNob3RJbWFnZTsKICNlbmRpZgogCi0gICAgcGFpbnRTbmFwc2hvdChzbmFwc2hvdEltYWdl
LmdldCgpLCBwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKLQotICAgIC8vIFJlbWVtYmVyIHRoYXQg
dGhlIGxhYmVsUmVjdCBpbmNsdWRlcyB0aGUgbGFiZWwgaW5zZXQsIHNvIHdlIG5lZWQgdG8gYWRq
dXN0IGZvciBpdC4KLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGxhYmVsSW1hZ2Us
IENvbG9yU3BhY2VEZXZpY2VSR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
bnRSZWN0KHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCArIGxhYmVsUmVjdC5sb2NhdGlvbigp
IC0gSW50U2l6ZShzdGFydExhYmVsSW5zZXQsIHN0YXJ0TGFiZWxJbnNldCkpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3VuZGVkSW50U2l6ZShsYWJlbFJlY3Qu
c2l6ZSgpICsgSW50U2l6ZSgyICogc3RhcnRMYWJlbEluc2V0LCAyICogc3RhcnRMYWJlbEluc2V0
KSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxJbWFnZS0+cmVjdCgp
KTsKKyAgICBwYWludFNuYXBzaG90SW1hZ2Uoc25hcHNob3RJbWFnZS5nZXQoKSwgcGFpbnRJbmZv
LCBwYWludE9mZnNldCk7CiB9CiAKIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnJlcGFp
bnRMYWJlbCgpCkBAIC0zMDksNyArMjYyLDcgQEAgQ3Vyc29yRGlyZWN0aXZlIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjpnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXIKICAg
ICAgICAgb3ZlcnJpZGVDdXJzb3IgPSBoYW5kQ3Vyc29yKCk7CiAgICAgICAgIHJldHVybiBTZXRD
dXJzb3I7CiAgICAgfQotICAgIHJldHVybiBSZW5kZXJFbWJlZGRlZE9iamVjdDo6Z2V0Q3Vyc29y
KHBvaW50LCBvdmVycmlkZUN1cnNvcik7CisgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpnZXRDdXJz
b3IocG9pbnQsIG92ZXJyaWRlQ3Vyc29yKTsKIH0KIAogdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbjo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQpAQCAtMzI1LDEyICsyNzgsNiBAQCB2b2lk
IFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudChFdmVudCogZXZlbnQpCiAKICAg
ICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50KCktPnNldERpc3BsYXlTdGF0ZShIVE1MUGx1Z0luRWxl
bWVudDo6UGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGljayk7CiAgICAgICAgIHBsdWdJbkltYWdl
RWxlbWVudCgpLT51c2VyRGlkQ2xpY2tTbmFwc2hvdChtb3VzZUV2ZW50KTsKLQotICAgICAgICBp
ZiAod2lkZ2V0KCkpIHsKLSAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgp
LT5mcmFtZSgpKQotICAgICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnJl
Y3JlYXRlUGx1Z2luKHdpZGdldCgpKTsKLSAgICAgICAgICAgIHJlcGFpbnQoKTsKLSAgICAgICAg
fQogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9IGVsc2UgaWYgKGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KSB7CiAgICAgICAgIGlm
IChtb3VzZUV2ZW50LT5idXR0b24oKSAhPSBMZWZ0QnV0dG9uKQpAQCAtMzU4LDI3ICszMDUsNiBA
QCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudChFdmVudCogZXZlbnQp
CiAgICAgfQogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjp0cnlUb0Zp
dFN0YXJ0TGFiZWwoTGFiZWxTaXplIHNpemUsIGNvbnN0IExheW91dFJlY3QmIGNvbnRlbnRCb3gp
IGNvbnN0Ci17Ci0gICAgSW1hZ2UqIGxhYmVsSW1hZ2UgPSBzdGFydExhYmVsSW1hZ2Uoc2l6ZSk7
Ci0gICAgaWYgKCFsYWJlbEltYWdlKQotICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwotCi0g
ICAgLy8gQXNzdW1lIHRoYXQgdGhlIGxhYmVsSW1hZ2UgaGFzIGJlZW4gcHJvdmlkZWQgdG8gbWF0
Y2ggb3VyIGRldmljZSBzY2FsZS4KLSAgICBmbG9hdCBzY2FsZUZhY3RvciA9IDE7Ci0gICAgaWYg
KGRvY3VtZW50KCktPnBhZ2UoKSkKLSAgICAgICAgc2NhbGVGYWN0b3IgPSBkb2N1bWVudCgpLT5w
YWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgSW50U2l6ZSBsYWJlbEltYWdlU2l6ZSA9
IGxhYmVsSW1hZ2UtPnNpemUoKTsKLSAgICBsYWJlbEltYWdlU2l6ZS5zY2FsZSgxIC8gKHNjYWxl
RmFjdG9yID8gc2NhbGVGYWN0b3IgOiAxKSk7Ci0KLSAgICBMYXlvdXRTaXplIGxhYmVsU2l6ZSA9
IGxhYmVsSW1hZ2VTaXplIC0gTGF5b3V0U2l6ZSgyICogc3RhcnRMYWJlbEluc2V0LCAyICogc3Rh
cnRMYWJlbEluc2V0KTsKLSAgICBMYXlvdXRSZWN0IGNhbmRpZGF0ZVJlY3QoY29udGVudEJveC5t
YXhYTWluWUNvcm5lcigpICsgTGF5b3V0U2l6ZSgtc3RhcnRMYWJlbFBhZGRpbmcsIHN0YXJ0TGFi
ZWxQYWRkaW5nKSArIExheW91dFNpemUoLWxhYmVsU2l6ZS53aWR0aCgpLCAwKSwgbGFiZWxTaXpl
KTsKLSAgICAvLyBUaGUgbWluaW11bSBhbGxvd2VkIGNvbnRlbnQgYm94IHNpemUgaXMgdGhlIGxh
YmVsIGltYWdlIHBsYWNlZCBpbiB0aGUgY2VudGVyIG9mIHRoZSBib3gsIHN1cnJvdW5kZWQgYnkg
c3RhcnRMYWJlbFBhZGRpbmcuCi0gICAgaWYgKGNhbmRpZGF0ZVJlY3QueCgpIDwgc3RhcnRMYWJl
bFBhZGRpbmcgfHwgY2FuZGlkYXRlUmVjdC5tYXhZKCkgPiBjb250ZW50Qm94LmhlaWdodCgpIC0g
c3RhcnRMYWJlbFBhZGRpbmcpCi0gICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7Ci0gICAgcmV0
dXJuIGNhbmRpZGF0ZVJlY3Q7Ci19Ci0KIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnJl
c2V0RGVsYXlUaW1lcihTaG93UmVhc29uIHJlYXNvbikKIHsKICAgICBtX3Nob3dSZWFzb24gPSBy
ZWFzb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbi5oCmluZGV4IGI5ZGU2MmNiYWMyYWFjZmE1YTE0YzY5YmQ0MmE2OTJmZmU2NTU3NzQu
LmE2NjdiNGY3MTFlZTFmZmI1ODVjZjIzMDMzZGZlNGVjMWNkZGJlMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oCkBAIC0yNiw3
ICsyNiw3IEBACiAjaWZuZGVmIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luX2gKICNkZWZpbmUgUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW5faAogCi0jaW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRPYmplY3Qu
aCIKKyNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNv
dXJjZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC0zNSwxNyArMzUsMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OwogCi1jbGFzcyBSZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbiA6IHB1YmxpYyBSZW5kZXJFbWJlZGRlZE9iamVjdCB7CitjbGFz
cyBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxl
bWVudCopOwogICAgIHZpcnR1YWwgflJlbmRlclNuYXBzaG90dGVkUGx1Z0luKCk7CiAKLSAgICBl
bnVtIExhYmVsU2l6ZSB7Ci0gICAgICAgIExhYmVsU2l6ZVNtYWxsLAotICAgICAgICBMYWJlbFNp
emVMYXJnZSwKLSAgICAgICAgTm9MYWJlbCwKLSAgICB9OwotCiAgICAgdm9pZCB1cGRhdGVTbmFw
c2hvdChQYXNzUmVmUHRyPEltYWdlPik7CiAKICAgICB2b2lkIGhhbmRsZUV2ZW50KEV2ZW50Kik7
CkBAIC02MCwxNiArNTQsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEN1cnNvckRpcmVjdGl2
ZSBnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBDdXJzb3ImKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNTbmFwc2hvdHRlZFBsdWdJbigpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZXBsYWNlZChQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIE9WRVJSSURFOwogCi0gICAgdm9pZCBwYWlu
dFJlcGxhY2VkU25hcHNob3QoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKLSAgICB2
b2lkIHBhaW50UmVwbGFjZWRTbmFwc2hvdFdpdGhMYWJlbChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpOwotICAgIHZvaWQgcGFpbnRTbmFwc2hvdChJbWFnZSosIFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50Jik7CisgICAgdm9pZCBwYWludFNuYXBzaG90KFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50Jik7CisgICAgdm9pZCBwYWludFNuYXBzaG90V2l0aExhYmVsKFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdm9pZCBwYWludFNuYXBzaG90SW1hZ2Uo
SW1hZ2UqLCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZvaWQgcmVwYWlu
dExhYmVsKCk7CiAKLSAgICBMYXlvdXRSZWN0IHRyeVRvRml0U3RhcnRMYWJlbChMYWJlbFNpemUs
IGNvbnN0IExheW91dFJlY3QmIGNvbnRlbnRCb3gpIGNvbnN0OwotICAgIEltYWdlKiBzdGFydExh
YmVsSW1hZ2UoTGFiZWxTaXplKSBjb25zdDsKLQogICAgIGVudW0gU2hvd1JlYXNvbiB7CiAgICAg
ICAgIFVzZXJNb3VzZWRPdmVyLAogICAgICAgICBTaG91bGRTaG93QXV0b21hdGljYWxseQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAppbmRleCBlMmI5NTdkNjRj
ZWFkMmUxYmU2MzEwMTI3YTY2OGEwNDQyNDY3NzU5Li5mOGQxYTQwMTg0MjI3YjZmNGJkY2VmMTNi
NmM4MTQ4MzZmYjg1YzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xp
ZW50LmNwcApAQCAtMTYzLDI2ICsxNjMsNiBAQCB1aW50NjRfdCBJbmplY3RlZEJ1bmRsZVBhZ2VV
SUNsaWVudDo6ZGlkRXhjZWVkRGF0YWJhc2VRdW90YShXZWJQYWdlKiBwYWdlLCBXZWJTZQogICAg
IHJldHVybiBtX2NsaWVudC5kaWRFeGNlZWREYXRhYmFzZVF1b3RhKHRvQVBJKHBhZ2UpLCB0b0FQ
SShvcmlnaW4pLCB0b0FQSShkYXRhYmFzZU5hbWUuaW1wbCgpKSwgdG9BUEkoZGF0YWJhc2VEaXNw
bGF5TmFtZS5pbXBsKCkpLCBjdXJyZW50UXVvdGFCeXRlcywgY3VycmVudE9yaWdpblVzYWdlQnl0
ZXMsIGN1cnJlbnREYXRhYmFzZVVzYWdlQnl0ZXMsIGV4cGVjdGVkVXNhZ2VCeXRlcywgbV9jbGll
bnQuY2xpZW50SW5mbyk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxl
UGFnZVVJQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsSW1hZ2UoUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW46OkxhYmVsU2l6ZSBzaXplKSBjb25zdAotewotICAgIGlmICghbV9jbGllbnQucGx1Z0luU3Rh
cnRMYWJlbEltYWdlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFdLQnVuZGxlUGFnZUxhYmVs
U2l6ZSB3a1NpemU7Ci0gICAgc3dpdGNoIChzaXplKSB7Ci0gICAgY2FzZSBSZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbjo6TGFiZWxTaXplU21hbGw6Ci0gICAgICAgIHdrU2l6ZSA9IFdLQnVuZGxlUGFn
ZUxhYmVsU2l6ZVNtYWxsOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luOjpMYWJlbFNpemVMYXJnZToKLSAgICAgICAgd2tTaXplID0gV0tCdW5kbGVQYWdl
TGFiZWxTaXplTGFyZ2U7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiBhZG9wdFJlZih0b0ltcGwobV9jbGllbnQucGx1
Z0luU3RhcnRMYWJlbEltYWdlKHdrU2l6ZSwgbV9jbGllbnQuY2xpZW50SW5mbykpKTsKLX0KLQog
U3RyaW5nIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsVGl0bGUo
KSBjb25zdAogewogICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlVUlDbGllbnQuaAppbmRleCA1Njk2MzgyMTI5ZGMxNDU0MDViZjU0NzkyNDQzMzU2ZTkz
ZjgyOTNmLi5hZDhmZTI0ZDIxNTMzYTQ2YTc0OWU3MjVjZjBjZmExM2Q4NGViNmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oCkBAIC0yOSw3ICsyOSw2IEBACiAj
aW5jbHVkZSAiQVBJQ2xpZW50LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVQYWdlLmgiCiAjaW5jbHVk
ZSAiV2ViRXZlbnQuaCIKLSNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBA
IC03MSw3ICs3MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlYWNoQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKFdlYlBhZ2UqLCBXZWJTZWN1cml0eU9yaWdpbiosIGludDY0X3QgdG90YWxC
eXRlc05lZWRlZCk7CiAgICAgdWludDY0X3QgZGlkRXhjZWVkRGF0YWJhc2VRdW90YShXZWJQYWdl
KiwgV2ViU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZURpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGFCeXRlcywg
dWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlQnl0ZXMsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFz
ZVVzYWdlQnl0ZXMsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2VCeXRlcyk7CiAKLSAgICBQYXNzUmVm
UHRyPFdlYkltYWdlPiBwbHVnSW5TdGFydExhYmVsSW1hZ2UoV2ViQ29yZTo6UmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW46OkxhYmVsU2l6ZSkgY29uc3Q7CiAgICAgU3RyaW5nIHBsdWdJblN0YXJ0TGFi
ZWxUaXRsZSgpIGNvbnN0OwogICAgIFN0cmluZyBwbHVnSW5TdGFydExhYmVsU3VidGl0bGUoKSBj
b25zdDsKICAgICBTdHJpbmcgcGx1Z0luRXh0cmFTdHlsZVNoZWV0KCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKaW5kZXggMzMzODFmZmU1OWFkYjAzNDJjODdiZDg4M2Y2MjQ2YWRjMjJl
ZTNiMC4uNDY5MDdjZTBlNmMzYTFjYTU3MzEyNDI5ZjA5OTA2NGQ2YTU0MjFmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcApAQCAtNzk4LDExICs3OTgsNiBAQCB2b2lkIFdlYkNocm9tZUNsaWVu
dDo6bG9nRGlhZ25vc3RpY01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCku
bG9nRGlhZ25vc3RpY01lc3NhZ2UobV9wYWdlLCBtZXNzYWdlLCBkZXNjcmlwdGlvbiwgc3VjY2Vz
cyk7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IFdlYkNocm9tZUNsaWVudDo6cGx1Z0luU3RhcnRM
YWJlbEltYWdlKFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpMYWJlbFNpemUgc2l6ZSkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9wYWdlLT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkucGx1Z0luU3Rh
cnRMYWJlbEltYWdlKHNpemUpLT5iaXRtYXAoKS0+Y3JlYXRlSW1hZ2UoKTsKLX0KLQogU3RyaW5n
IFdlYkNocm9tZUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbFRpdGxlKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9wYWdlLT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkucGx1Z0luU3RhcnRMYWJlbFRp
dGxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBkMmZjMDkzNjYzZjcyOWZmOTU2ZDA2NzAz
NTNkYmMzZGY2ZDZhOWFjLi4zZWEzYTNiNThjOTE1ZjIxZGMwY2UyODUzZWUyY2ZjN2EwMjBlZDAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTI4LDcgKzI4LDYgQEAKICNkZWZpbmUgV2ViQ2hy
b21lQ2xpZW50X2gKIAogI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lQ2xpZW50Lmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9JbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMjE4LDcgKzIxNyw2IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcm
IHN1Y2Nlc3MpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6Oklt
YWdlPiBwbHVnSW5TdGFydExhYmVsSW1hZ2UoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVn
SW46OkxhYmVsU2l6ZSkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgcGx1Z0lu
U3RhcnRMYWJlbFRpdGxlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgcGx1
Z0luU3RhcnRMYWJlbFN1YnRpdGxlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJp
bmcgcGx1Z0luRXh0cmFTdHlsZVNoZWV0KCkgY29uc3QgT1ZFUlJJREU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>