<?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>101650</bug_id>
          
          <creation_ts>2012-11-08 15:07:59 -0800</creation_ts>
          <short_desc>AX: textUnderElement should consider alt text, but skip links and controls</short_desc>
          <delta_ts>2012-12-17 14:25:15 -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>Accessibility</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>104912</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominic Mazzoni">dmazzoni</reporter>
          <assigned_to name="Dominic Mazzoni">dmazzoni</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bdakin</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mrobinson</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>762222</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-11-08 15:07:59 -0800</bug_when>
    <thetext>This bug made it so that a generic focusable element such as &lt;div tabindex=0&gt; wouldn&apos;t be ignored and would get its title from inner text: https://bugs.webkit.org/show_bug.cgi?id=94302

However, this sometimes leads to undesirable behavior, for example:

  &lt;div tabindex=0&gt;
    &lt;a href=&quot;#&quot;&gt;Alpha&lt;/a&gt;
    &lt;a href=&quot;#&quot;&gt;Bravo&lt;/a&gt;
    &lt;a href=&quot;#&quot;&gt;Charlie&lt;/a&gt;
  &lt;/div&gt;

In this example, the title of the container is &quot;Alpha Bravo Charlie&quot;, which is okay, but VoiceOver will also read &quot;Alpha Bravo Charlie&quot; when you focus each of the links, too. So we shouldn&apos;t get the title of a generic focusable control from inner content if it has children that are focusable.

The new proposal is that when an element is focusable and when it doesn&apos;t have a specific role, then it should get its title from inner text ONLY if it doesn&apos;t have any descendants that are focusable or other containers (like lists).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762237</commentid>
    <comment_count>1</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2012-11-08 15:21:26 -0800</bug_when>
    <thetext>Probably should also avoid nameFrom:contents on elements with ARIA roles that explicitly disallow this, too. For example, this could get &quot;Foo&quot; as the accessible name:

&lt;div tabindex=&quot;0&quot;&gt;&lt;div&gt;Foo&lt;/div&gt;&lt;/div&gt;

but this should not:

&lt;div tabindex=&quot;0&quot;&gt;&lt;div role=&quot;group&quot;&gt;Foo&lt;/div&gt;&lt;/div&gt;

because the group role defines nameFrom:author (not contents) and the text alternative computation explicitly disallows traversing these nodes for name computation.

http://www.w3.org/WAI/PF/aria/complete#group</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762248</commentid>
    <comment_count>2</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2012-11-08 15:35:02 -0800</bug_when>
    <thetext>You could concatenate any author-supplied name of these, but don&apos;t traverse the contents of elements matching these explicit roles.

alert, alertdialog, application, article, banner, combobox, complementary, contentinfo, definition, dialog, document, form, grid, group, list, listbox, log, main, marquee, math, menu, menubar, navigation, note, progressbar, radiogroup, range, region, search, select, separator, scrollbar, slider, spinbutton, status, tablist, tabpanel, textbox, timer, toolbar, tree, treegrid</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788515</commentid>
    <comment_count>3</comment_count>
      <attachid>178821</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-12-11 09:40:49 -0800</bug_when>
    <thetext>Created attachment 178821
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788523</commentid>
    <comment_count>4</comment_count>
      <attachid>178821</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-11 09:46:34 -0800</bug_when>
    <thetext>Comment on attachment 178821
Patch

Attachment 178821 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15277205</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788525</commentid>
    <comment_count>5</comment_count>
      <attachid>178821</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-11 09:47:39 -0800</bug_when>
    <thetext>Comment on attachment 178821
Patch

Attachment 178821 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15276280</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788527</commentid>
    <comment_count>6</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-12-11 09:48:01 -0800</bug_when>
    <thetext>OK, here&apos;s a first attempt at a patch. It&apos;s not quite ready because a few tests have some minor differences in output, mostly whitespace differences.

What do you think of this approach? As I was implementing it I realized that this could help fix another longstanding bug, which is that an element&apos;s title, when derived from content, would not use alternative text of descendants. As an example, &lt;button&gt;A picture of a &lt;img src=&quot;duck.jpg&quot; alt=&quot;duck&quot;&gt;&lt;/button&gt; should return &quot;A picture of a duck&quot; as its title - and this change fixes that exact case.

This may also help with some cases where using Range to get the text under element was failing because text wasn&apos;t rendered.

One consequence of this change is that I was forced to simplify the logic of accessibilityIsIgnored so that it didn&apos;t call textUnderElement (indirectly) anymore, because accessibilityIsIgnored is called when an object is deleted, and that was leading to all sorts of crashes. The changes I made to accessibilityIsIgnored have *no* effect on any tests, even though they do far less computation than before - so hopefully you agree that this is a good change. If you like, I could split this into a separate change we could land first.

A potential risk is if using Range to get the plaintext was doing any important text processing that&apos;s now lost. If so, it wasn&apos;t covered by any tests - but the Range code is pretty complicated and I can&apos;t be sure there isn&apos;t anything important there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788532</commentid>
    <comment_count>7</comment_count>
      <attachid>178821</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 09:48:43 -0800</bug_when>
    <thetext>Comment on attachment 178821
Patch

Attachment 178821 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15258622</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788533</commentid>
    <comment_count>8</comment_count>
      <attachid>178821</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-11 09:49:26 -0800</bug_when>
    <thetext>Comment on attachment 178821
Patch

Attachment 178821 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15260485</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788536</commentid>
    <comment_count>9</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-12-11 09:52:22 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; OK, here&apos;s a first attempt at a patch. It&apos;s not quite ready because a few tests have some minor differences in output, mostly whitespace differences.
&gt; 
&gt; What do you think of this approach? As I was implementing it I realized that this could help fix another longstanding bug, which is that an element&apos;s title, when derived from content, would not use alternative text of descendants. As an example, &lt;button&gt;A picture of a &lt;img src=&quot;duck.jpg&quot; alt=&quot;duck&quot;&gt;&lt;/button&gt; should return &quot;A picture of a duck&quot; as its title - and this change fixes that exact case.
&gt; 
&gt; This may also help with some cases where using Range to get the text under element was failing because text wasn&apos;t rendered.
&gt; 
&gt; One consequence of this change is that I was forced to simplify the logic of accessibilityIsIgnored so that it didn&apos;t call textUnderElement (indirectly) anymore, because accessibilityIsIgnored is called when an object is deleted, and that was leading to all sorts of crashes. The changes I made to accessibilityIsIgnored have *no* effect on any tests, even though they do far less computation than before - so hopefully you agree that this is a good change. If you like, I could split this into a separate change we could land first.
&gt; 

let&apos;s make this a separate patch so it will be easier to catch regressions.



&gt; A potential risk is if using Range to get the plaintext was doing any important text processing that&apos;s now lost. If so, it wasn&apos;t covered by any tests - but the Range code is pretty complicated and I can&apos;t be sure there isn&apos;t anything important there.

I&apos;m also not sure of what we might lose, but I know what we are losing now (which is the &quot;duck&quot; scenario you mentioned) so I had been thinking for awhile we&apos;d have to do this anyway</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788542</commentid>
    <comment_count>10</comment_count>
      <attachid>178825</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-12-11 10:00:41 -0800</bug_when>
    <thetext>Created attachment 178825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788544</commentid>
    <comment_count>11</comment_count>
      <attachid>178821</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-12-11 10:02:22 -0800</bug_when>
    <thetext>Comment on attachment 178821
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1434
&gt; +    if (!canSetFocusAttribute()) {

what are the kinds of cases you are trying to capture here?

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1445
&gt; +        if (child-&gt;isList() || child-&gt;isAccessibilityTable() || child-&gt;isTree() || child-&gt;isCanvas())

how did you determine this list? what about other things like svg roots?

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:625
&gt; +        return AccessibilityNodeObject::textUnderElement();

a AXRenderObject without a renderer is usually an object that is being detached. did you find a case where you needed this call?

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1257
&gt; +    if (!getAttribute(aria_helpAttr).isEmpty() || !getAttribute(aria_describedbyAttr).isEmpty() || !getAttribute(altAttr).isEmpty() || !getAttribute(titleAttr).isEmpty())

is this the exhaustive list of attributes that comprised those three checks (helpText, title, axDescription)?

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1260
&gt; +    if (isGenericFocusableElement() &amp;&amp; roleValue() != SVGRootRole &amp;&amp; node-&gt;firstChild())

this line deserves a comment. why is the node-&gt;firstChild() important? what if the first child was aria-hidden or something</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788545</commentid>
    <comment_count>12</comment_count>
      <attachid>178825</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 10:03:30 -0800</bug_when>
    <thetext>Comment on attachment 178825
Patch

Attachment 178825 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15275309</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788546</commentid>
    <comment_count>13</comment_count>
      <attachid>178825</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-11 10:05:02 -0800</bug_when>
    <thetext>Comment on attachment 178825
Patch

Attachment 178825 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15260492</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788547</commentid>
    <comment_count>14</comment_count>
      <attachid>178821</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-11 10:05:07 -0800</bug_when>
    <thetext>Comment on attachment 178821
Patch

Attachment 178821 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15281131</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788548</commentid>
    <comment_count>15</comment_count>
      <attachid>178825</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-11 10:06:26 -0800</bug_when>
    <thetext>Comment on attachment 178825
Patch

Attachment 178825 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15284073</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788550</commentid>
    <comment_count>16</comment_count>
      <attachid>178821</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-11 10:11:57 -0800</bug_when>
    <thetext>Comment on attachment 178821
Patch

Attachment 178821 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15281130</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788562</commentid>
    <comment_count>17</comment_count>
      <attachid>178825</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-11 10:18:32 -0800</bug_when>
    <thetext>Comment on attachment 178825
Patch

Attachment 178825 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15280159</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788564</commentid>
    <comment_count>18</comment_count>
      <attachid>178825</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-12-11 10:19:05 -0800</bug_when>
    <thetext>Comment on attachment 178825
Patch

Attachment 178825 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15257737</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788565</commentid>
    <comment_count>19</comment_count>
      <attachid>178825</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-11 10:19:46 -0800</bug_when>
    <thetext>Comment on attachment 178825
Patch

Attachment 178825 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15281137</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788589</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 10:47:39 -0800</bug_when>
    <thetext>Attachment 178821 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/acce...&quot; exit_code: 1
LayoutTests/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:11:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:12:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:13:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:14:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 6 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788612</commentid>
    <comment_count>21</comment_count>
      <attachid>178825</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-12-11 11:05:31 -0800</bug_when>
    <thetext>Comment on attachment 178825
Patch

Attachment 178825 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15258648</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788634</commentid>
    <comment_count>22</comment_count>
      <attachid>178825</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-11 11:40:05 -0800</bug_when>
    <thetext>Comment on attachment 178825
Patch

Attachment 178825 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15272396</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788641</commentid>
    <comment_count>23</comment_count>
      <attachid>178821</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-12-11 11:54:03 -0800</bug_when>
    <thetext>Comment on attachment 178821
Patch

Attachment 178821 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15260520</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788757</commentid>
    <comment_count>24</comment_count>
      <attachid>178821</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-12-11 13:52:19 -0800</bug_when>
    <thetext>Comment on attachment 178821
Patch

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1434
&gt;&gt; +    if (!canSetFocusAttribute()) {
&gt; 
&gt; what are the kinds of cases you are trying to capture here?

The idea was to check alt text when textUnderElement was called recursively, but not for the top level element that it&apos;s initially called on, which is usually focusable. But that isn&apos;t quite right - I&apos;ll move it inside the loop and do this check on the child directly.

&gt;&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1445
&gt;&gt; +        if (child-&gt;isList() || child-&gt;isAccessibilityTable() || child-&gt;isTree() || child-&gt;isCanvas())
&gt; 
&gt; how did you determine this list? what about other things like svg roots?

SVG roots are focusable (not sure why), so that isn&apos;t needed.

This list isn&apos;t perfect - I was just trying to go from the discussion on this bug, which basically seemed to say that we shouldn&apos;t get inner text from a big container element like a list. I added table, tree, and canvas since those seem similar. Almost all of the other cases were focusable.

I moved this into a utility function to make it more clear.

&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:625
&gt;&gt; +        return AccessibilityNodeObject::textUnderElement();
&gt; 
&gt; a AXRenderObject without a renderer is usually an object that is being detached. did you find a case where you needed this call?

No, you&apos;re probably right.

&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1257
&gt;&gt; +    if (!getAttribute(aria_helpAttr).isEmpty() || !getAttribute(aria_describedbyAttr).isEmpty() || !getAttribute(altAttr).isEmpty() || !getAttribute(titleAttr).isEmpty())
&gt; 
&gt; is this the exhaustive list of attributes that comprised those three checks (helpText, title, axDescription)?

Will respond on this bug, as discussed:

https://bugs.webkit.org/show_bug.cgi?id=104688</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788764</commentid>
    <comment_count>25</comment_count>
      <attachid>178868</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-12-11 13:56:33 -0800</bug_when>
    <thetext>Created attachment 178868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788908</commentid>
    <comment_count>26</comment_count>
      <attachid>178868</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 16:00:02 -0800</bug_when>
    <thetext>Comment on attachment 178868
Patch

Attachment 178868 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15284178

New failing tests:
accessibility/aria-toggle-button-with-title.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788930</commentid>
    <comment_count>27</comment_count>
      <attachid>178868</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-12-11 16:16:34 -0800</bug_when>
    <thetext>Comment on attachment 178868
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1429
&gt; +static bool shouldRecurseIntoObjectForInnerText(AccessibilityObject* obj)

what do you think of the name shouldUseAccessiblityObjectInnerText()

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1431
&gt; +    if (obj-&gt;canSetFocusAttribute())

some comments about why we shouldn&apos;t recurse for canSetFocus() and the other if() check would be good here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789693</commentid>
    <comment_count>28</comment_count>
      <attachid>178868</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-12-12 10:44:16 -0800</bug_when>
    <thetext>Comment on attachment 178868
Patch

OK, I renamed the bug to capture the essence of the issue and I&apos;ve got all tests passing, will upload momentarily.

Please take a close look at the test expectations I needed to change. I think most are an improvement, but a couple are unclear. Let me know if you think we should improve the accessible text for a couple of those corner cases or if they look fine.

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1429
&gt;&gt; +static bool shouldRecurseIntoObjectForInnerText(AccessibilityObject* obj)
&gt; 
&gt; what do you think of the name shouldUseAccessiblityObjectInnerText()

Sure. I added a lot more comments too.

&gt;&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1431
&gt;&gt; +    if (obj-&gt;canSetFocusAttribute())
&gt; 
&gt; some comments about why we shouldn&apos;t recurse for canSetFocus() and the other if() check would be good here

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789699</commentid>
    <comment_count>29</comment_count>
      <attachid>179080</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-12-12 10:54:42 -0800</bug_when>
    <thetext>Created attachment 179080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789706</commentid>
    <comment_count>30</comment_count>
      <attachid>179080</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-12-12 10:59:20 -0800</bug_when>
    <thetext>Comment on attachment 179080
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1482
&gt; +            static_cast&lt;AccessibilityNodeObject*&gt;(child)-&gt;alternativeText(textOrder);

you can also use toAccessibilityNode() instead of the static_cast</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789761</commentid>
    <comment_count>31</comment_count>
      <attachid>179095</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-12-12 11:48:41 -0800</bug_when>
    <thetext>Created attachment 179095
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789762</commentid>
    <comment_count>32</comment_count>
      <attachid>179095</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 11:52:11 -0800</bug_when>
    <thetext>Comment on attachment 179095
Patch for landing

Rejecting attachment 179095 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ernal-link-anchors2-expected.txt.rej
patching file LayoutTests/platform/mac/accessibility/static-text-role-uses-text-under-element-expected.txt
patching file LayoutTests/platform/mac/accessibility/static-text-role-uses-text-under-element.html
patching file LayoutTests/platform/mac/accessibility/table-with-aria-role-expected.txt
Hunk #1 succeeded at 7 with fuzz 1.

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/15277703</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789839</commentid>
    <comment_count>33</comment_count>
      <attachid>179113</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-12-12 13:09:53 -0800</bug_when>
    <thetext>Created attachment 179113
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789881</commentid>
    <comment_count>34</comment_count>
      <attachid>179113</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 13:51:53 -0800</bug_when>
    <thetext>Comment on attachment 179113
Patch for landing

Clearing flags on attachment: 179113

Committed r137512: &lt;http://trac.webkit.org/changeset/137512&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789882</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 13:51:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789909</commentid>
    <comment_count>36</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-12-12 14:19:30 -0800</bug_when>
    <thetext>i think we might have a test case failure with

accessibility/internal-link-anchors2.html on the mac

-AXTopLevelUIElement: &lt;AXHeading: &apos;[edit] Tourette syndrome&apos;&gt;
+AXTopLevelUIElement: &lt;AXHeading: &apos;[] Tourette syndrome&apos;&gt;
 AXARIABusy: 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789915</commentid>
    <comment_count>37</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-12-12 14:24:11 -0800</bug_when>
    <thetext>Sorry, I must have merged it incorrectly. I&apos;ll do a quick fix for it now.

(In reply to comment #36)
&gt; i think we might have a test case failure with
&gt; 
&gt; accessibility/internal-link-anchors2.html on the mac
&gt; 
&gt; -AXTopLevelUIElement: &lt;AXHeading: &apos;[edit] Tourette syndrome&apos;&gt;
&gt; +AXTopLevelUIElement: &lt;AXHeading: &apos;[] Tourette syndrome&apos;&gt;
&gt;  AXARIABusy: 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789959</commentid>
    <comment_count>38</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-12-12 15:06:17 -0800</bug_when>
    <thetext>Committed r137521: &lt;http://trac.webkit.org/changeset/137521&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790561</commentid>
    <comment_count>39</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-12-13 06:50:52 -0800</bug_when>
    <thetext>I think this might be causing crashes on the GTK+ bots. After this patch the entire layout test step started timing out and I see this crash locally running tests like accessibility/aria-controls-with-tabs.html.

#0  0x00007ffff61e1e9a in WebCore::AccessibilityRenderObject::nextSibling() const () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#1  0x00007ffff61d4724 in WebCore::AccessibilityNodeObject::textUnderElement() const () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#2  0x00007ffff61e08c1 in WebCore::AccessibilityRenderObject::textUnderElement() const () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#3  0x00007ffff61d48b8 in WebCore::AccessibilityNodeObject::textUnderElement() const () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#4  0x00007ffff61e08c1 in WebCore::AccessibilityRenderObject::textUnderElement() const () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#5  0x00007ffff700d629 in WebCore::AccessibilityObject::accessibilityPlatformIncludesObject() const () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#6  0x00007ffff61e3f10 in WebCore::AccessibilityRenderObject::accessibilityIsIgnoredBase() const () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#7  0x00007ffff61e9626 in WebCore::AccessibilityRenderObject::accessibilityIsIgnored() const () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#8  0x00007ffff61d97df in WebCore::AccessibilityObject::notifyIfIgnoredValueChanged() () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#9  0x00007ffff6922b46 in WebCore::RenderInline::splitFlow(WebCore::RenderObject*, WebCore::RenderBlock*, WebCore::RenderObject*, WebCore::RenderBoxModelObject*) ()
   from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#10 0x00007ffff692307a in WebCore::RenderInline::addChildIgnoringContinuation(WebCore::RenderObject*, WebCore::RenderObject*) ()
   from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#11 0x00007ffff642ad9f in WebCore::NodeRenderingContext::createRendererForElementIfNeeded() () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#12 0x00007ffff63f65e7 in WebCore::Element::createRendererIfNeeded() () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#13 0x00007ffff63ff2f1 in WebCore::Element::attach() () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#14 0x00007ffff63b6273 in WebCore::ContainerNode::attach() () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#15 0x00007ffff63ff35d in WebCore::Element::attach() () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#16 0x00007ffff63fee48 in WebCore::Element::recalcStyle(WebCore::Node::StyleChange) () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#17 0x00007ffff63febd8 in WebCore::Element::recalcStyle(WebCore::Node::StyleChange) () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#18 0x00007ffff63febd8 in WebCore::Element::recalcStyle(WebCore::Node::StyleChange) () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#19 0x00007ffff63febd8 in WebCore::Element::recalcStyle(WebCore::Node::StyleChange) () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#20 0x00007ffff63d53fb in WebCore::Document::recalcStyle(WebCore::Node::StyleChange) () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#21 0x00007ffff63d57fe in WebCore::Document::updateStyleIfNeeded() () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#22 0x00007ffff63d6bf4 in WebCore::Document::updateLayout() () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#23 0x00007ffff63d87d9 in WebCore::Document::updateLayoutIgnorePendingStylesheets() () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#24 0x00007ffff63f9f35 in WebCore::Element::focus(bool) () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#25 0x00007ffff6bc9dfe in WebCore::jsElementPrototypeFunctionFocus(JSC::ExecState*) () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#26 0x00007fffa864d265 in ?? ()
#27 0xffff000000000002 in ?? ()
#28 0x00007ffff7b7ccd3 in llint_op_call () from /home/martin/WebKit/WebKitBuild/Release/.libs/libjavascriptcoregtk-3.0.so.0
#29 0x00007fffa7a20000 in ?? ()
#30 0x00007ffff7c199a1 in JSC::ProgramExecutable::compileInternal(JSC::ExecState*, JSC::JSScope*, JSC::JITCode::JITType, unsigned int) ()
   from /home/martin/WebKit/WebKitBuild/Release/.libs/libjavascriptcoregtk-3.0.so.0
#31 0x00007ffff7b18744 in JSC::Interpreter::execute(JSC::ProgramExecutable*, JSC::ExecState*, JSC::JSObject*) () from /home/martin/WebKit/WebKitBuild/Release/.libs/libjavascriptcoregtk-3.0.so.0
#32 0x00007ffff7c0a38e in JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, JSC::JSValue*) () from /home/martin/WebKit/WebKitBuild/Release/.libs/libjavascriptcoregtk-3.0.so.0
#33 0x00007ffff6261395 in WebCore::ScriptController::evaluateInWorld(WebCore::ScriptSourceCode const&amp;, WebCore::DOMWrapperWorld*) ()
   from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#34 0x00007ffff62619f2 in WebCore::ScriptController::evaluate(WebCore::ScriptSourceCode const&amp;) () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit---#35 0x00007ffff643f4f3 in WebCore::ScriptElement::executeScript(WebCore::ScriptSourceCode const&amp;) () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#36 0x00007ffff6443503 in WebCore::ScriptElement::prepareScript(WTF::TextPosition const&amp;, WebCore::ScriptElement::LegacyTypeSupport) ()
   from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#37 0x00007ffff65faafb in WebCore::HTMLScriptRunner::runScript(WebCore::Element*, WTF::TextPosition const&amp;) () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#38 0x00007ffff65fb4dd in WebCore::HTMLScriptRunner::execute(WTF::PassRefPtr&lt;WebCore::Element&gt;, WTF::TextPosition const&amp;) ()
   from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#39 0x00007ffff65e340e in WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder() () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#40 0x00007ffff65e34d2 in WebCore::HTMLDocumentParser::canTakeNextToken(WebCore::HTMLDocumentParser::SynchronousMode, WebCore::PumpSession&amp;) ()
   from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#41 0x00007ffff65e36b0 in WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode) () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#42 0x00007ffff65e55e1 in WebCore::HTMLDocumentParser::resumeParsingAfterScriptExecution() () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#43 0x00007ffff65e58d8 in WebCore::HTMLDocumentParser::notifyFinished(WebCore::CachedResource*) () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#44 0x00007ffff673a8fd in WebCore::CachedResource::checkNotify() () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#45 0x00007ffff67a7b99 in WebCore::SubresourceLoader::didFinishLoading(double) () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#46 0x00007ffff6ed86f2 in WebCore::readCallback(_GObject*, _GAsyncResult*, void*) () from /home/martin/WebKit/WebKitBuild/Release/.libs/libwebkitgtk-3.0.so.0
#47 0x00007ffff542b234 in async_ready_callback_wrapper (source_object=0xc9b640, res=0xc9ba70, user_data=0x7fffe8667690) at ginputstream.c:529
#48 0x00007ffff544001e in g_simple_async_result_complete (simple=0xc9ba70) at gsimpleasyncresult.c:777
#49 0x00007ffff54400b8 in complete_in_idle_cb_for_thread (_data=0xca1c80) at gsimpleasyncresult.c:845
#50 0x00007ffff7ec8575 in g_main_dispatch (context=0x4d50c0) at gmain.c:2784
#51 g_main_context_dispatch (context=context@entry=0x4d50c0) at gmain.c:3288
#52 0x00007ffff7ec88b8 in g_main_context_iterate (context=0x4d50c0, block=block@entry=1, dispatch=dispatch@entry=1, self=&lt;optimized out&gt;) at gmain.c:3359
#53 0x00007ffff7ec8d22 in g_main_loop_run (loop=0x5bfc30) at gmain.c:3553
#54 0x00007ffff5a2e9a5 in gtk_main () at gtkmain.c:1161
#55 0x000000000043a075 in runTest(std::string const&amp;) ()
#56 0x000000000043ab99 in main ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790571</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 07:02:05 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 104912</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790574</commentid>
    <comment_count>41</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-12-13 07:04:41 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; Re-opened since this is blocked by bug 104912

Normally I would try to contact you guys, but I&apos;m in the wrong timezone and the bots are scattered to the wind like so many grains of sand. I&apos;m going to rollout the patch now, but let me know if you need a hand fixing things for GTK+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790835</commentid>
    <comment_count>42</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-12-13 12:51:18 -0800</bug_when>
    <thetext>So this was rolled out with http://trac.webkit.org/changeset/137592 , and the rollout caused accessibility/internal-link-anchors2.html to start failing. I just updated the results. Just wanted to note that here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792995</commentid>
    <comment_count>43</comment_count>
      <attachid>179795</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-12-17 13:41:35 -0800</bug_when>
    <thetext>Created attachment 179795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793003</commentid>
    <comment_count>44</comment_count>
      <attachid>179796</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-12-17 13:47:43 -0800</bug_when>
    <thetext>Created attachment 179796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793004</commentid>
    <comment_count>45</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-12-17 13:48:09 -0800</bug_when>
    <thetext>As discussed offline with GTK folks, this patch now restores the previous behavior for GTK and skips the two affected tests. I filed a new bug (https://bugs.webkit.org/show_bug.cgi?id=105214) to track the work needed on the GTK side.

Take another quick look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793035</commentid>
    <comment_count>46</comment_count>
      <attachid>179796</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-17 14:25:08 -0800</bug_when>
    <thetext>Comment on attachment 179796
Patch

Clearing flags on attachment: 179796

Committed r137946: &lt;http://trac.webkit.org/changeset/137946&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793036</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-17 14:25:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178821</attachid>
            <date>2012-12-11 09:40:49 -0800</date>
            <delta_ts>2012-12-11 13:56:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101650-20121211093810.patch</filename>
            <type>text/plain</type>
            <size>14254</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUzZTRiOWY4MTE1OTQx
M2FkY2RhNDYwZDE2MDVjYjU0MjA3MjM4Ny4uNjM3ZjEzYjA4ZWEyZTE0ODMyYWViMzJkOWE2MmMz
MjdlYTQ3NWUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEyLTExICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBGb2N1c2Fi
bGUgZGl2IHNob3VsZCBoYXZlIGVtcHR5IHRpdGxlIGlmIGl0IGhhcyBpbm5lciBmb2N1c2FibGUg
ZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMTY1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEdldHRpbmcgaW5uZXIgdGV4dCBmcm9tIGFuIGVsZW1lbnQgbm93IGlnbm9yZXMgZm9jdXNhYmxl
IGRlc2NlbmRhbnRzIGFuZAorCWNvbnRhaW5lcnMsIGJ1dCB1c2VzIGFsdGVybmF0aXZlIHRleHQu
CisKKwlUaGUgY29tcHV0YXRpb24gb2YgdGV4dFVuZGVyRWxlbWVudCBpcyBub3cgcmVjdXJzaXZl
LiBUaGlzIGNhdXNlZCBhIGNyYXNoCisJaWYgaXQgd2FzIGNhbGxlZCBieSBhY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkIGR1cmluZyBvYmplY3QgZGVzdHJ1Y3Rpb24sCisJc28gSSBzaW1wbGlmaWVkIGFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQgdG8gbm90IGFjdHVhbGx5IGNhbGwgdGV4dFVuZGVyRWxlbWVu
dCwKKwl3aXRob3V0IGFmZmVjdGluZyB0ZXN0IHJlc3VsdHMsIHdoaWNoIHNob3VsZCBhY3R1YWxs
eSBiZSBhIGRlY2VudCBzcGVlZHVwLgorCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvYnV0
dG9uLXRpdGxlLXVzZXMtaW5uZXItaW1nLWFsdC5odG1sCisgICAgICAgIFRlc3Q6IGFjY2Vzc2li
aWxpdHkvZm9jdXNhYmxlLWRpdi5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojp0ZXh0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKwogMjAxMi0xMi0w
NiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
VXNlIGFsd2F5cyB0aGUgb3JkZXIgaXRlcmF0b3IgZnJvbSBkYXRhIG1lbWJlciBpbiBSZW5kZXJG
bGV4aWJsZUJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCBhYmQxMDk2OWY4ZmJkMDlkNzIxZmIyMTM5
ODUzY2Y4ZDljZjczYTUxLi4xZGEyZDA2OTg0MDI3MTBiODliZTEyZjRlZTAxODc2MTBmMzM0NjJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtMTQyOCwxNyArMTQyOCwyNiBAQCB1bnNpZ25lZCBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6aGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdAogU3RyaW5nIEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KCkgY29uc3QKIHsKICAgICBO
b2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotCi0gICAgLy8gTm90ZTogVGV4dEl0ZXJhdG9yIGRvZXNuJ3QgcmV0dXJuIGFu
eSB0ZXh0IGZvciBub2RlcyB0aGF0IGRvbid0IGhhdmUgcmVuZGVyZXJzLgotICAgIC8vIElmIHRo
aXMgY291bGQgYmUgZml4ZWQsIGl0J2QgYmUgbW9yZSBhY2N1cmF0ZSB1c2UgVGV4dEl0ZXJhdG9y
IGhlcmUuCi0gICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgcmV0dXJuIHRv
RWxlbWVudChub2RlKS0+aW5uZXJUZXh0KCk7Ci0gICAgZWxzZSBpZiAobm9kZS0+aXNUZXh0Tm9k
ZSgpKQorICAgIGlmIChub2RlICYmIG5vZGUtPmlzVGV4dE5vZGUoKSkKICAgICAgICAgcmV0dXJu
IHRvVGV4dChub2RlKS0+d2hvbGVUZXh0KCk7Ci0gICAgCi0gICAgcmV0dXJuIFN0cmluZygpOwor
CisgICAgaWYgKCFjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpKSB7CisgICAgICAgIFZlY3RvcjxBY2Nl
c3NpYmlsaXR5VGV4dD4gdGV4dE9yZGVyOworICAgICAgICBhbHRlcm5hdGl2ZVRleHQodGV4dE9y
ZGVyKTsKKyAgICAgICAgaWYgKHRleHRPcmRlci5zaXplKCkgPiAwKQorICAgICAgICAgICAgcmV0
dXJuIHRleHRPcmRlclswXS50ZXh0OworICAgIH0KKworICAgIFN0cmluZyByZXN1bHQ7CisgICAg
Zm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkLT5jYW5TZXRG
b2N1c0F0dHJpYnV0ZSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChjaGls
ZC0+aXNMaXN0KCkgfHwgY2hpbGQtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgfHwgY2hpbGQtPmlz
VHJlZSgpIHx8IGNoaWxkLT5pc0NhbnZhcygpKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIHJlc3VsdC5hcHBlbmQoY2hpbGQtPnRleHRVbmRlckVsZW1lbnQoKSk7CisgICAgfQorCisg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0
aXRsZSgpIGNvbnN0CkBAIC0xNDk1LDYgKzE1MDQsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OnRpdGxlKCkgY29uc3QKIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
Ojp0ZXh0KCkgY29uc3QKIHsKKzE1MDdjMTQ5OAogICAgIC8vIElmIHRoaXMgaXMgYSB1c2VyIGRl
ZmluZWQgc3RhdGljIHRleHQsIHVzZSB0aGUgYWNjZXNzaWJsZSBuYW1lIGNvbXB1dGF0aW9uLiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgaWYgKGFyaWFSb2xlQXR0
cmlidXRlKCkgPT0gU3RhdGljVGV4dFJvbGUpCiAgICAgICAgIHJldHVybiBhcmlhQWNjZXNzaWJp
bGl0eURlc2NyaXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAyZDQyMmMyMzEwZmU0
ZTA1YjI3NmQ4ZWRhMGM3ZDQ1Yjg5NjU0ZTg0Li4wZTkyNjMxNjg4YzRkMGE1ZWI5NzRiM2U2Y2Jl
NmNmMGYwNTkyY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTYyMiwxMyArNjIyLDExIEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoZWxwVGV4dCgpIGNvbnN0CiBTdHJp
bmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX3JlbmRlcmVyKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgCisg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCgp
OworCiAgICAgaWYgKG1fcmVuZGVyZXItPmlzRmlsZVVwbG9hZENvbnRyb2woKSkKICAgICAgICAg
cmV0dXJuIHRvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wobV9yZW5kZXJlciktPmJ1dHRvblZhbHVl
KCk7CiAgICAgCi0gICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKLQogI2lmIEVO
QUJMRShNQVRITUwpCiAgICAgLy8gTWF0aCBvcGVyYXRvcnMgY3JlYXRlIFJlbmRlclRleHQgbm9k
ZXMgb24gdGhlIGZseSB0aGF0IGFyZSBub3QgdGllZCBpbnRvIHRoZSBET00gaW4gYSByZWFzb25h
YmxlIHdheSwKICAgICAvLyBzbyByYW5nZU9mQ29udGVudHMgZG9lcyBub3Qgd29yayBmb3IgdGhl
bSAobm9yIGRvZXMgcmVndWxhciB0ZXh0IHNlbGVjdGlvbikuCkBAIC02NDAsMTYgKzYzOCw2IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KCkgY29u
c3QKICAgICB9CiAjZW5kaWYKICAgICAKLSAgICBpZiAobm9kZSkgewotICAgICAgICBpZiAoRnJh
bWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewotICAgICAgICAgICAgLy8g
Y2F0Y2ggc3RhbGUgV2ViQ29yZUFYT2JqZWN0IChzZWUgPHJkYXI6Ly9wcm9ibGVtLzM5NjAxOTY+
KQotICAgICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICE9IG5vZGUtPmRvY3VtZW50KCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgICAgICAgICByZXR1cm4g
cGxhaW5UZXh0KHJhbmdlT2ZDb250ZW50cyhub2RlKS5nZXQoKSwgdGV4dEl0ZXJhdG9yQmVoYXZp
b3JGb3JUZXh0UmFuZ2UoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCiAgICAgLy8gU29tZXRp
bWVzIHRleHQgZnJhZ21lbnRzIGRvbid0IGhhdmUgTm9kZSdzIGFzc29jaWF0ZWQgd2l0aCB0aGVt
IChsaWtlIHdoZW4KICAgICAvLyBDU1MgY29udGVudCBpcyB1c2VkIHRvIGluc2VydCB0ZXh0KS4K
ICAgICBpZiAobV9yZW5kZXJlci0+aXNUZXh0KCkpIHsKQEAgLTY1OCw5ICs2NDYsNyBAQCBTdHJp
bmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCgpIGNvbnN0CiAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKHN0YXRpY19jYXN0PFJlbmRlclRleHRGcmFnbWVudCo+
KG1fcmVuZGVyZXIpLT5jb250ZW50U3RyaW5nKCkpOwogICAgIH0KICAgICAKLSAgICAvLyByZXR1
cm4gdGhlIG51bGwgc3RyaW5nIGZvciBhbm9ueW1vdXMgdGV4dCBiZWNhdXNlIGl0IGlzIG5vbi10
cml2aWFsIHRvIGdldAotICAgIC8vIHRoZSBhY3R1YWwgdGV4dCBhbmQsIHNvIGZhciwgdGhhdCBp
cyBub3QgbmVlZGVkCi0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCgpOwogfQogCiBOb2RlKiBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojpub2RlKCkgY29uc3QKQEAgLTEyNjQsOSArMTI1MCwyNCBAQCBib29s
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25z
dAogICAgIC8vIGNoZWNrIGlmIHRoZXJlJ3Mgc29tZSBraW5kIG9mIGFjY2Vzc2libGUgbmFtZSBm
b3IgdGhlIGVsZW1lbnQpCiAgICAgLy8gdG8gZGVjaWRlIGFuIGVsZW1lbnQncyB2aXNpYmlsaXR5
IGlzIG5vdCBhcyBkZWZpbml0aXZlIGFzCiAgICAgLy8gcHJldmlvdXMgY2hlY2tzLCBzbyB0aGlz
IHNob3VsZCByZW1haW4gYXMgb25lIG9mIHRoZSBsYXN0LgotICAgIGlmICghaGVscFRleHQoKS5p
c0VtcHR5KCkgfHwgIXRpdGxlKCkuaXNFbXB0eSgpIHx8ICFhY2Nlc3NpYmlsaXR5RGVzY3JpcHRp
b24oKS5pc0VtcHR5KCkpCisgICAgLy8KKyAgICAvLyBUaGVzZSBjaGVja3MgYXJlIHNpbXBsaWZp
ZWQgaW4gdGhlIGludGVyZXN0IG9mIGV4ZWN1dGlvbiBzcGVlZCAtCisgICAgLy8gZm9yIGV4YW1w
bGUsIGFueSBlbGVtZW50IHdpdGggYW4gYWx0IGF0dHJpYnV0ZSB3aWxsIGJlIHVuaWdub3JlZCwK
KyAgICAvLyByYXRoZXIgdGhhbiBvbmx5IGltYWdlcyB3aXRoIGFuIGFsdCBhdHRyaWJ1dGUgYmVp
bmcgdW5pZ25vcmVkLgorICAgIGlmICghZ2V0QXR0cmlidXRlKGFyaWFfaGVscEF0dHIpLmlzRW1w
dHkoKSB8fCAhZ2V0QXR0cmlidXRlKGFyaWFfZGVzY3JpYmVkYnlBdHRyKS5pc0VtcHR5KCkgfHwg
IWdldEF0dHJpYnV0ZShhbHRBdHRyKS5pc0VtcHR5KCkgfHwgIWdldEF0dHJpYnV0ZSh0aXRsZUF0
dHIpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCisgICAgaWYgKGlz
R2VuZXJpY0ZvY3VzYWJsZUVsZW1lbnQoKSAmJiByb2xlVmFsdWUoKSAhPSBTVkdSb290Um9sZSAm
JiBub2RlLT5maXJzdENoaWxkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgh
YXJpYUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisjaWYgRU5BQkxFKE1BVEhNTCkKKyAgICBpZiAoIWdldEF0dHJpYnV0ZShNYXRo
TUxOYW1lczo6YWx0dGV4dEF0dHIpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
I2VuZGlmCisKICAgICAvLyBCeSBkZWZhdWx0LCBvYmplY3RzIHNob3VsZCBiZSBpZ25vcmVkIHNv
IHRoYXQgdGhlIEFYIGhpZXJhcmNoeSBpcyBub3QgCiAgICAgLy8gZmlsbGVkIHdpdGggdW5uZWNl
c3NhcnkgaXRlbXMuCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjUwYzhmOTZmMGFiYzFkY2E3
MThhOTg1MjlmM2ViM2IxZTNjZDFmNi4uZTljYzEzZDJjZjViNmI5MTQ5N2NkN2Y4ODEyNmQ2N2Vm
NjhjZjQ4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTEyLTExICBEb21pbmljIE1henpv
bmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBGb2N1c2FibGUgZGl2IHNo
b3VsZCBoYXZlIGVtcHR5IHRpdGxlIGlmIGl0IGhhcyBpbm5lciBmb2N1c2FibGUgZWxlbWVudHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTY1MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgbmV3
IHRlc3RzIHRvIHNob3cgdGhhdCBnZXR0aW5nIGlubmVyIHRleHQgZnJvbSBhbiBlbGVtZW50IG5v
dyBpZ25vcmVzCisJZm9jdXNhYmxlIGRlc2NlbmRhbnRzIGFuZCBjb250YWluZXJzLCBidXQgdXNl
cyBhbHRlcm5hdGl2ZSB0ZXh0LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9idXR0b24tdGl0
bGUtdXNlcy1pbm5lci1pbWctYWx0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9idXR0b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi1leHBlY3RlZC50eHQ6IEV4dGVu
ZGVkIHdpdGggYWRkaXRpb25hbCB0ZXN0IGNhc2VzLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
Zm9jdXNhYmxlLWRpdi5odG1sOiBFeHRlbmRlZCB3aXRoIGFkZGl0aW9uYWwgdGVzdCBjYXNlcy4K
KwogMjAxMi0xMi0wNyAgSsOhbm9zIEJhZGljcyAgPGpiYWRpY3NAaW5mLnUtc3plZ2VkLmh1Pgog
CiAgICAgICAgIFtRdF0gR2FyZGVuaW5nIGFmdGVyIHIxMzY4NTcsIHIxMzY4OTMgYW5kIDEzNjkx
OS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYnV0dG9uLXRpdGxlLXVz
ZXMtaW5uZXItaW1nLWFsdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2J1dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1hbHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM4MzY3YTc3MTgxNzI1NjFjOGZmMThmNDhjZGE1YjRkZGJkODE1MzMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2J1dHRvbi10aXRsZS11c2VzLWlubmVyLWlt
Zy1hbHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK0J1dHRvbiB3aXRoIGltYWdlIG9m
IAorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4g
Z2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdldHMgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9t
IGNvbnRlbnRzLi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1l
bnQuYWN0aXZlRWxlbWVudCA9PSBidXR0b24gaXMgdHJ1ZQorUEFTUyBheEJ1dHRvbi50aXRsZS5p
bmRleE9mKCdCdXR0b24gd2l0aCBpbWFnZSBvZiBjYWtlJykgPj0gMCBpcyB0cnVlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9idXR0b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2J1dHRvbi10aXRsZS11c2VzLWlubmVy
LWltZy1hbHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWEyNGU4M2U5MGU0NWE2NDc3OWYwZTNmZDIxM2U1
OTFkNmJlNWM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9i
dXR0b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0Lmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCFE
T0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKworPHN0eWxlPgorYnV0dG9uIHsKKyAg
cGFkZGluZzogMzBweDsKK30KKzwvc3R5bGU+CisKKzxidXR0b24gaWQ9ImNha2UiPkJ1dHRvbiB3
aXRoIGltYWdlIG9mIDxpbWcgYWx0PSJjYWtlIiBzcmM9InJlc291cmNlcy9jYWtlLnBuZyIgd2lk
dGg9IjQwcHgiPjwvYnV0dG9uPgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNh
YmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdldHMgaXRzIGFjY2Vzc2li
bGUgdGV4dCBmcm9tIGNvbnRlbnRzLi4iKTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKworICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y2FrZScpOworICAgIGJ1dHRvbi5mb2N1cygpOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5hY3Rp
dmVFbGVtZW50ID09IGJ1dHRvbiIsICJ0cnVlIik7CisgICAgd2luZG93LmF4QnV0dG9uID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgc2hvdWxkQmUoImF4QnV0
dG9uLnRpdGxlLmluZGV4T2YoJ0J1dHRvbiB3aXRoIGltYWdlIG9mIGNha2UnKSA+PSAwIiwgInRy
dWUiKTsKK30KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi1leHBlY3RlZC50eHQKaW5k
ZXggZDM4NDQyNjAwZGM0ZjIzNzc3NWZkYmJlZGM2ZTQ5Mzc3OWQ4YjZkMi4uZGM0ODAzOGQ2NGE4
YmU1YmY0MjNjNzY5NThjM2M4NTI0MmYwNWRhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2ZvY3VzYWJsZS1kaXYtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsMTIgQEAK
IEEKIEIKIEMKLVRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgYSBnZW5lcmljIGZvY3VzYWJsZSBk
aXYgY2FuIGdldCBhY2Nlc3NpYmlsaXR5IGZvY3VzLgorTGluaworSW5pdGlhbCB0ZXh0IGJlZm9y
ZSBsaW5rTGluaworTGlzdCBpdGVtCitJbml0aWFsIHRleHQgYmVmb3JlIGxpc3QKK0xpc3QgaXRl
bQorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4g
Z2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdldHMgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9t
IGNvbnRlbnRzLi4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCkBAIC0xNCw2ICsxOSwx
NiBAQCBQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZGl2MiBpcyB0cnVlCiBQQVNTIGxh
c3RDaGFyKGF4RGl2Mi50aXRsZSkgaXMgIkMiCiBQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQg
PT0gZGl2MyBpcyB0cnVlCiBQQVNTIGxhc3RDaGFyKGF4RGl2My5kZXNjcmlwdGlvbikgaXMgIkQi
CitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZGl2NCBpcyB0cnVlCitQQVNTIGF4RGl2
NC50aXRsZS5pbmRleE9mKCdMaW5rJykgaXMgLTEKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dCA9PSBkaXY1IGlzIHRydWUKK1BBU1MgYXhEaXY1LnRpdGxlLmluZGV4T2YoJ0xpbmsnKSBpcyAt
MQorUEFTUyBheERpdjUudGl0bGUuaW5kZXhPZignSW5pdGlhbCB0ZXh0IGJlZm9yZSBsaW5rJykg
Pj0gMCBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZGl2NiBpcyB0cnVl
CitQQVNTIGF4RGl2Ni50aXRsZS5pbmRleE9mKCdMaXN0IGl0ZW0nKSBpcyAtMQorUEFTUyBkb2N1
bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjcgaXMgdHJ1ZQorUEFTUyBheERpdjcudGl0bGUuaW5k
ZXhPZignTGlzdCBpdGVtJykgaXMgLTEKK1BBU1MgYXhEaXY3LnRpdGxlLmluZGV4T2YoJ0luaXRp
YWwgdGV4dCBiZWZvcmUgbGlzdCcpID49IDAgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2ZvY3VzYWJsZS1kaXYuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
Zm9jdXNhYmxlLWRpdi5odG1sCmluZGV4IGFkZmZmYmY0M2I5ZjI3YzFlMWI1OWYyM2RiMzM0YmEz
OGMwZDkwZTAuLjIwOWQyYTQ2ZDhhYzM3YjQxYmY1M2QyMDk4MDg0MTAxY2ViMzk1N2QgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi5odG1sCisrKyBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi5odG1sCkBAIC0zLDE0ICsz
LDIzIEBACiA8Ym9keT4KIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+CiAKKzwhLS0gQSBsaW5rIGFsd2F5cyBnZXRzIGl0cyBhY2Nlc3Np
YmxlIHRleHQgZnJvbSBjb250ZW50cy4gLS0+CiA8YSBpZD0ibGluayIgaHJlZj0iIyI+QTwvYT4K
KworPCEtLSBBIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBzaG91bGQgYWxzbyBnZXQgaXRzIGFjY2Vz
c2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLiAtLT4KIDxkaXYgaWQ9ImRpdiIgdGFiaW5kZXg9IjAi
PkI8L2Rpdj4KIDxkaXYgaWQ9ImRpdjIiIHRhYmluZGV4PSIwIj48ZGl2PjwvZGl2PkM8L2Rpdj4K
IDxkaXYgaWQ9ImRpdjMiIHRhYmluZGV4PSIwIiBhcmlhLWxhYmVsPSJEIj48L2Rpdj4KIAorPCEt
LSBBIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBzaG91bGQgbm90IGdldCBhY2Nlc3NpYmxlIHRleHQg
ZnJvbSBjaGlsZHJlbiB0aGF0IGFyZSBmb2N1c2FibGUgb3IgY29udGFpbmVycy4gLS0+Cis8ZGl2
IGlkPSJkaXY0IiB0YWJpbmRleD0iMCI+PGEgaHJlZj0iIyI+TGluazwvYT48L2Rpdj4KKzxkaXYg
aWQ9ImRpdjUiIHRhYmluZGV4PSIwIj5Jbml0aWFsIHRleHQgYmVmb3JlIGxpbms8YSBocmVmPSIj
Ij5MaW5rPC9hPjwvZGl2PgorPGRpdiBpZD0iZGl2NiIgdGFiaW5kZXg9IjAiPjx1bD48bGk+TGlz
dCBpdGVtPC9saT48L3VsPjwvZGl2PgorPGRpdiBpZD0iZGl2NyIgdGFiaW5kZXg9IjAiPkluaXRp
YWwgdGV4dCBiZWZvcmUgbGlzdDx1bD48bGk+TGlzdCBpdGVtPC9saT48L3VsPjwvZGl2PgorCiA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+Ci1kZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IG1ha2VzIHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2li
aWxpdHkgZm9jdXMuIik7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBh
IGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdl
dHMgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLi4iKTsKIAogaWYgKHdpbmRvdy50
ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewogICAgIHdpbmRv
dy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKQEAgLTQyLDYgKzUxLDMyIEBAIGlmICh3aW5kb3cu
dGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKICAgICBzaG91
bGRCZSgiZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkaXYzIiwgInRydWUiKTsKICAgICB3aW5k
b3cuYXhEaXYzID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CiAgICAg
c2hvdWxkQmUoImxhc3RDaGFyKGF4RGl2My5kZXNjcmlwdGlvbikiLCAiXCJEXCIiKTsKKworICAg
IHZhciBkaXY0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdjQnKTsKKyAgICBkaXY0LmZv
Y3VzKCk7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZGl2NCIsICJ0
cnVlIik7CisgICAgd2luZG93LmF4RGl2NCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3Vz
ZWRFbGVtZW50OworICAgIHNob3VsZEJlKCJheERpdjQudGl0bGUuaW5kZXhPZignTGluaycpIiwg
Ii0xIik7CisKKyAgICB2YXIgZGl2NSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXY1Jyk7
CisgICAgZGl2NS5mb2N1cygpOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5hY3RpdmVFbGVtZW50
ID09IGRpdjUiLCAidHJ1ZSIpOworICAgIHdpbmRvdy5heERpdjUgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBzaG91bGRCZSgiYXhEaXY1LnRpdGxlLmluZGV4
T2YoJ0xpbmsnKSIsICItMSIpOworICAgIHNob3VsZEJlKCJheERpdjUudGl0bGUuaW5kZXhPZign
SW5pdGlhbCB0ZXh0IGJlZm9yZSBsaW5rJykgPj0gMCIsICJ0cnVlIik7CisKKyAgICB2YXIgZGl2
NiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXY2Jyk7CisgICAgZGl2Ni5mb2N1cygpOwor
ICAgIHNob3VsZEJlKCJkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjYiLCAidHJ1ZSIpOwor
ICAgIHdpbmRvdy5heERpdjYgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dDsKKyAgICBzaG91bGRCZSgiYXhEaXY2LnRpdGxlLmluZGV4T2YoJ0xpc3QgaXRlbScpIiwgIi0x
Iik7CisKKyAgICB2YXIgZGl2NyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXY3Jyk7Cisg
ICAgZGl2Ny5mb2N1cygpOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09
IGRpdjciLCAidHJ1ZSIpOworICAgIHdpbmRvdy5heERpdjcgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBzaG91bGRCZSgiYXhEaXY3LnRpdGxlLmluZGV4T2Yo
J0xpc3QgaXRlbScpIiwgIi0xIik7CisgICAgc2hvdWxkQmUoImF4RGl2Ny50aXRsZS5pbmRleE9m
KCdJbml0aWFsIHRleHQgYmVmb3JlIGxpc3QnKSA+PSAwIiwgInRydWUiKTsKIH0KIAogPC9zY3Jp
cHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178825</attachid>
            <date>2012-12-11 10:00:41 -0800</date>
            <delta_ts>2012-12-11 13:56:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101650-20121211095802.patch</filename>
            <type>text/plain</type>
            <size>14263</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg1Y2ExODliMzBhZGNk
NjJlMjNkNWIwZTNhNTBiOGFkMDE2ZDRkYS4uZjM0OGNjOGIzMzMxZTI2NTQ5NGIzNWJlYzU5ZmFh
Y2M0YWYwN2VhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEyLTExICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBGb2N1c2Fi
bGUgZGl2IHNob3VsZCBoYXZlIGVtcHR5IHRpdGxlIGlmIGl0IGhhcyBpbm5lciBmb2N1c2FibGUg
ZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMTY1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEdldHRpbmcgaW5uZXIgdGV4dCBmcm9tIGFuIGVsZW1lbnQgbm93IGlnbm9yZXMgZm9jdXNhYmxl
IGRlc2NlbmRhbnRzIGFuZAorICAgICAgICBjb250YWluZXJzLCBidXQgdXNlcyBhbHRlcm5hdGl2
ZSB0ZXh0LgorCisgICAgICAgIFRoZSBjb21wdXRhdGlvbiBvZiB0ZXh0VW5kZXJFbGVtZW50IGlz
IG5vdyByZWN1cnNpdmUuIFRoaXMgY2F1c2VkIGEgY3Jhc2gKKyAgICAgICAgaWYgaXQgd2FzIGNh
bGxlZCBieSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGR1cmluZyBvYmplY3QgZGVzdHJ1Y3Rpb24s
CisgICAgICAgIHNvIEkgc2ltcGxpZmllZCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIHRvIG5vdCBh
Y3R1YWxseSBjYWxsIHRleHRVbmRlckVsZW1lbnQsCisgICAgICAgIHdpdGhvdXQgYWZmZWN0aW5n
IHRlc3QgcmVzdWx0cywgd2hpY2ggc2hvdWxkIGFjdHVhbGx5IGJlIGEgZGVjZW50IHNwZWVkdXAu
CisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9idXR0b24tdGl0bGUtdXNlcy1pbm5lci1p
bWctYWx0Lmh0bWwKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2Lmh0
bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRleHRVbmRlckVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRleHQp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0ZXh0VW5kZXJF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQpOgorCiAyMDEyLTEyLTExICBIYWppbWUgTW9ycml0YSAgPG1v
cnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBJc0FjdGl2ZUZsYWcsIElzSG92ZXJGbGFnLCBJ
bkFjdGl2ZUNoYWluRmxhZyBjYW4gYmUgdW5pZmllZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggMjJh
OGZhYmYwMjk3NjJhMmZkMDRkYWRiNDI1MzM5YmE5MDg4NTI4Mi4uNmFlZWEyNjUxNzk3YjA5Zjdj
NWE5OTExZTk4M2M3ZTRhNzhjMmY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTE0MjksMTcgKzE0
MjksMjYgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhpZXJhcmNoaWNhbExl
dmVsKCkgY29uc3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dFVuZGVyRWxl
bWVudCgpIGNvbnN0CiB7CiAgICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKLSAgICBpZiAo
IW5vZGUpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIC8vIE5vdGU6IFRleHRJdGVy
YXRvciBkb2Vzbid0IHJldHVybiBhbnkgdGV4dCBmb3Igbm9kZXMgdGhhdCBkb24ndCBoYXZlIHJl
bmRlcmVycy4KLSAgICAvLyBJZiB0aGlzIGNvdWxkIGJlIGZpeGVkLCBpdCdkIGJlIG1vcmUgYWNj
dXJhdGUgdXNlIFRleHRJdGVyYXRvciBoZXJlLgotICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2Rl
KCkpCi0gICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSktPmlubmVyVGV4dCgpOwotICAgIGVs
c2UgaWYgKG5vZGUtPmlzVGV4dE5vZGUoKSkKKyAgICBpZiAobm9kZSAmJiBub2RlLT5pc1RleHRO
b2RlKCkpCiAgICAgICAgIHJldHVybiB0b1RleHQobm9kZSktPndob2xlVGV4dCgpOwotICAgIAot
ICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGlmICghY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSkg
eworICAgICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+IHRleHRPcmRlcjsKKyAgICAgICAg
YWx0ZXJuYXRpdmVUZXh0KHRleHRPcmRlcik7CisgICAgICAgIGlmICh0ZXh0T3JkZXIuc2l6ZSgp
ID4gMCkKKyAgICAgICAgICAgIHJldHVybiB0ZXh0T3JkZXJbMF0udGV4dDsKKyAgICB9CisKKyAg
ICBTdHJpbmcgcmVzdWx0OworICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQgPSBm
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAg
ICAgIGlmIChjaGlsZC0+Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBpZiAoY2hpbGQtPmlzTGlzdCgpIHx8IGNoaWxkLT5pc0FjY2Vzc2liaWxp
dHlUYWJsZSgpIHx8IGNoaWxkLT5pc1RyZWUoKSB8fCBjaGlsZC0+aXNDYW52YXMoKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICByZXN1bHQuYXBwZW5kKGNoaWxkLT50ZXh0VW5kZXJF
bGVtZW50KCkpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFN0cmluZyBBY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdDo6dGl0bGUoKSBjb25zdApAQCAtMTQ5Niw2ICsxNTA1LDcgQEAg
U3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0aXRsZSgpIGNvbnN0CiAKIFN0cmluZyBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dCgpIGNvbnN0CiB7CisxNTA3YzE0OTgKICAgICAv
LyBJZiB0aGlzIGlzIGEgdXNlciBkZWZpbmVkIHN0YXRpYyB0ZXh0LCB1c2UgdGhlIGFjY2Vzc2li
bGUgbmFtZSBjb21wdXRhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IFN0YXRpY1RleHRSb2xlKQogICAgICAg
ICByZXR1cm4gYXJpYUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKaW5kZXggOGQ1MTQ5YTIwMjc2NGE4ZDMzMTRjZDJhYzNiNzdhZjgzYzY0NTlkMS4uYWNlMTRm
MThlOTMwNGUwNjBiYzJmYjYyN2Q4YTg5NmYzYTg2OTMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CkBAIC02MjMsMTMgKzYyMywxMSBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aGVscFRleHQoKSBjb25zdAogU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHRV
bmRlckVsZW1lbnQoKSBjb25zdAogewogICAgIGlmICghbV9yZW5kZXJlcikKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotICAgIAorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OnRleHRVbmRlckVsZW1lbnQoKTsKKwogICAgIGlmIChtX3JlbmRlcmVyLT5pc0ZpbGVVcGxv
YWRDb250cm9sKCkpCiAgICAgICAgIHJldHVybiB0b1JlbmRlckZpbGVVcGxvYWRDb250cm9sKG1f
cmVuZGVyZXIpLT5idXR0b25WYWx1ZSgpOwogICAgIAotICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRl
cmVyLT5ub2RlKCk7Ci0KICNpZiBFTkFCTEUoTUFUSE1MKQogICAgIC8vIE1hdGggb3BlcmF0b3Jz
IGNyZWF0ZSBSZW5kZXJUZXh0IG5vZGVzIG9uIHRoZSBmbHkgdGhhdCBhcmUgbm90IHRpZWQgaW50
byB0aGUgRE9NIGluIGEgcmVhc29uYWJsZSB3YXksCiAgICAgLy8gc28gcmFuZ2VPZkNvbnRlbnRz
IGRvZXMgbm90IHdvcmsgZm9yIHRoZW0gKG5vciBkb2VzIHJlZ3VsYXIgdGV4dCBzZWxlY3Rpb24p
LgpAQCAtNjQxLDE2ICs2MzksNiBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
dGV4dFVuZGVyRWxlbWVudCgpIGNvbnN0CiAgICAgfQogI2VuZGlmCiAgICAgCi0gICAgaWYgKG5v
ZGUpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1l
KCkpIHsKLSAgICAgICAgICAgIC8vIGNhdGNoIHN0YWxlIFdlYkNvcmVBWE9iamVjdCAoc2VlIDxy
ZGFyOi8vcHJvYmxlbS8zOTYwMTk2PikKLSAgICAgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQo
KSAhPSBub2RlLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LQotICAgICAgICAgICAgcmV0dXJuIHBsYWluVGV4dChyYW5nZU9mQ29udGVudHMobm9kZSkuZ2V0
KCksIHRleHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkpOwotICAgICAgICB9Ci0gICAg
fQotICAgIAogICAgIC8vIFNvbWV0aW1lcyB0ZXh0IGZyYWdtZW50cyBkb24ndCBoYXZlIE5vZGUn
cyBhc3NvY2lhdGVkIHdpdGggdGhlbSAobGlrZSB3aGVuCiAgICAgLy8gQ1NTIGNvbnRlbnQgaXMg
dXNlZCB0byBpbnNlcnQgdGV4dCkuCiAgICAgaWYgKG1fcmVuZGVyZXItPmlzVGV4dCgpKSB7CkBA
IC02NTksOSArNjQ3LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHRV
bmRlckVsZW1lbnQoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhzdGF0aWNfY2Fz
dDxSZW5kZXJUZXh0RnJhZ21lbnQqPihtX3JlbmRlcmVyKS0+Y29udGVudFN0cmluZygpKTsKICAg
ICB9CiAgICAgCi0gICAgLy8gcmV0dXJuIHRoZSBudWxsIHN0cmluZyBmb3IgYW5vbnltb3VzIHRl
eHQgYmVjYXVzZSBpdCBpcyBub24tdHJpdmlhbCB0byBnZXQKLSAgICAvLyB0aGUgYWN0dWFsIHRl
eHQgYW5kLCBzbyBmYXIsIHRoYXQgaXMgbm90IG5lZWRlZAotICAgIHJldHVybiBTdHJpbmcoKTsK
KyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQoKTsK
IH0KIAogTm9kZSogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bm9kZSgpIGNvbnN0CkBAIC0x
MjY1LDkgKzEyNTEsMjQgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICAvLyBjaGVjayBpZiB0aGVyZSdzIHNvbWUga2lu
ZCBvZiBhY2Nlc3NpYmxlIG5hbWUgZm9yIHRoZSBlbGVtZW50KQogICAgIC8vIHRvIGRlY2lkZSBh
biBlbGVtZW50J3MgdmlzaWJpbGl0eSBpcyBub3QgYXMgZGVmaW5pdGl2ZSBhcwogICAgIC8vIHBy
ZXZpb3VzIGNoZWNrcywgc28gdGhpcyBzaG91bGQgcmVtYWluIGFzIG9uZSBvZiB0aGUgbGFzdC4K
LSAgICBpZiAoIWhlbHBUZXh0KCkuaXNFbXB0eSgpIHx8ICF0aXRsZSgpLmlzRW1wdHkoKSB8fCAh
YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkuaXNFbXB0eSgpKQorICAgIC8vCisgICAgLy8gVGhl
c2UgY2hlY2tzIGFyZSBzaW1wbGlmaWVkIGluIHRoZSBpbnRlcmVzdCBvZiBleGVjdXRpb24gc3Bl
ZWQgLQorICAgIC8vIGZvciBleGFtcGxlLCBhbnkgZWxlbWVudCB3aXRoIGFuIGFsdCBhdHRyaWJ1
dGUgd2lsbCBiZSB1bmlnbm9yZWQsCisgICAgLy8gcmF0aGVyIHRoYW4gb25seSBpbWFnZXMgd2l0
aCBhbiBhbHQgYXR0cmlidXRlIGJlaW5nIHVuaWdub3JlZC4KKyAgICBpZiAoIWdldEF0dHJpYnV0
ZShhcmlhX2hlbHBBdHRyKS5pc0VtcHR5KCkgfHwgIWdldEF0dHJpYnV0ZShhcmlhX2Rlc2NyaWJl
ZGJ5QXR0cikuaXNFbXB0eSgpIHx8ICFnZXRBdHRyaWJ1dGUoYWx0QXR0cikuaXNFbXB0eSgpIHx8
ICFnZXRBdHRyaWJ1dGUodGl0bGVBdHRyKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKKworICAgIGlmIChpc0dlbmVyaWNGb2N1c2FibGVFbGVtZW50KCkgJiYgcm9sZVZh
bHVlKCkgIT0gU1ZHUm9vdFJvbGUgJiYgbm9kZS0+Zmlyc3RDaGlsZCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoIWFyaWFBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworI2lmIEVOQUJMRShNQVRITUwpCisgICAg
aWYgKCFnZXRBdHRyaWJ1dGUoTWF0aE1MTmFtZXM6OmFsdHRleHRBdHRyKS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCiAgICAgLy8gQnkgZGVmYXVsdCwgb2JqZWN0
cyBzaG91bGQgYmUgaWdub3JlZCBzbyB0aGF0IHRoZSBBWCBoaWVyYXJjaHkgaXMgbm90IAogICAg
IC8vIGZpbGxlZCB3aXRoIHVubmVjZXNzYXJ5IGl0ZW1zLgogICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDI2ZmM3NDA3MDA2ZmU3NTAxMzZmOWVhNmYyNTIxMGIwYzYxZWQ1OTIuLjRhMjRiZGVmY2Nh
ZjFlZWI4MGNjNGU5NGI2ZGZhNTRkMDQ0YTI3MDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAx
Mi0xMi0xMSAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBBWDogRm9jdXNhYmxlIGRpdiBzaG91bGQgaGF2ZSBlbXB0eSB0aXRsZSBpZiBpdCBoYXMgaW5u
ZXIgZm9jdXNhYmxlIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDE2NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRzIG5ldyB0ZXN0cyB0byBzaG93IHRoYXQgZ2V0dGluZyBpbm5lciB0
ZXh0IGZyb20gYW4gZWxlbWVudCBub3cgaWdub3JlcworICAgICAgICBmb2N1c2FibGUgZGVzY2Vu
ZGFudHMgYW5kIGNvbnRhaW5lcnMsIGJ1dCB1c2VzIGFsdGVybmF0aXZlIHRleHQuCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2J1dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1hbHQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2J1dHRvbi10aXRsZS11c2Vz
LWlubmVyLWltZy1hbHQuaHRtbDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9mb2N1
c2FibGUtZGl2LWV4cGVjdGVkLnR4dDogRXh0ZW5kZWQgd2l0aCBhZGRpdGlvbmFsIHRlc3QgY2Fz
ZXMuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2Lmh0bWw6IEV4dGVuZGVk
IHdpdGggYWRkaXRpb25hbCB0ZXN0IGNhc2VzLgorCiAyMDEyLTEyLTExICBBbmRyZXkgS29zeWFr
b3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjEzNzI2Ni4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYnV0dG9u
LXRpdGxlLXVzZXMtaW5uZXItaW1nLWFsdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2J1dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1hbHQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM4MzY3YTc3MTgxNzI1NjFjOGZmMThmNDhjZGE1YjRkZGJkODE1MzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2J1dHRvbi10aXRsZS11c2Vz
LWlubmVyLWltZy1hbHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK0J1dHRvbiB3aXRo
IGltYWdlIG9mIAorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNhYmxl
IGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdldHMgaXRzIGFjY2Vzc2libGUg
dGV4dCBmcm9tIGNvbnRlbnRzLi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBidXR0b24gaXMgdHJ1ZQorUEFTUyBheEJ1dHRv
bi50aXRsZS5pbmRleE9mKCdCdXR0b24gd2l0aCBpbWFnZSBvZiBjYWtlJykgPj0gMCBpcyB0cnVl
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9idXR0b24tdGl0bGUtdXNlcy1pbm5l
ci1pbWctYWx0Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2J1dHRvbi10aXRsZS11
c2VzLWlubmVyLWltZy1hbHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWEyNGU4M2U5MGU0NWE2NDc3OWYw
ZTNmZDIxM2U1OTFkNmJlNWM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9idXR0b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0Lmh0bWwKQEAgLTAsMCArMSwz
MiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKworPHN0eWxlPgorYnV0
dG9uIHsKKyAgcGFkZGluZzogMzBweDsKK30KKzwvc3R5bGU+CisKKzxidXR0b24gaWQ9ImNha2Ui
PkJ1dHRvbiB3aXRoIGltYWdlIG9mIDxpbWcgYWx0PSJjYWtlIiBzcmM9InJlc291cmNlcy9jYWtl
LnBuZyIgd2lkdGg9IjQwcHgiPjwvYnV0dG9uPgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdlbmVy
aWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdldHMgaXRz
IGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLi4iKTsKKworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy50ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY2FrZScpOworICAgIGJ1dHRvbi5mb2N1cygpOworICAgIHNob3VsZEJlKCJkb2N1
bWVudC5hY3RpdmVFbGVtZW50ID09IGJ1dHRvbiIsICJ0cnVlIik7CisgICAgd2luZG93LmF4QnV0
dG9uID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgc2hvdWxk
QmUoImF4QnV0dG9uLnRpdGxlLmluZGV4T2YoJ0J1dHRvbiB3aXRoIGltYWdlIG9mIGNha2UnKSA+
PSAwIiwgInRydWUiKTsKK30KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi1leHBlY3Rl
ZC50eHQKaW5kZXggZDM4NDQyNjAwZGM0ZjIzNzc3NWZkYmJlZGM2ZTQ5Mzc3OWQ4YjZkMi4uZGM0
ODAzOGQ2NGE4YmU1YmY0MjNjNzY5NThjM2M4NTI0MmYwNWRhNyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2LWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ZvY3VzYWJsZS1kaXYtZXhwZWN0ZWQudHh0CkBAIC0xLDcg
KzEsMTIgQEAKIEEKIEIKIEMKLVRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgYSBnZW5lcmljIGZv
Y3VzYWJsZSBkaXYgY2FuIGdldCBhY2Nlc3NpYmlsaXR5IGZvY3VzLgorTGluaworSW5pdGlhbCB0
ZXh0IGJlZm9yZSBsaW5rTGluaworTGlzdCBpdGVtCitJbml0aWFsIHRleHQgYmVmb3JlIGxpc3QK
K0xpc3QgaXRlbQorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNhYmxl
IGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdldHMgaXRzIGFjY2Vzc2libGUg
dGV4dCBmcm9tIGNvbnRlbnRzLi4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCkBAIC0x
NCw2ICsxOSwxNiBAQCBQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZGl2MiBpcyB0cnVl
CiBQQVNTIGxhc3RDaGFyKGF4RGl2Mi50aXRsZSkgaXMgIkMiCiBQQVNTIGRvY3VtZW50LmFjdGl2
ZUVsZW1lbnQgPT0gZGl2MyBpcyB0cnVlCiBQQVNTIGxhc3RDaGFyKGF4RGl2My5kZXNjcmlwdGlv
bikgaXMgIkQiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZGl2NCBpcyB0cnVlCitQ
QVNTIGF4RGl2NC50aXRsZS5pbmRleE9mKCdMaW5rJykgaXMgLTEKK1BBU1MgZG9jdW1lbnQuYWN0
aXZlRWxlbWVudCA9PSBkaXY1IGlzIHRydWUKK1BBU1MgYXhEaXY1LnRpdGxlLmluZGV4T2YoJ0xp
bmsnKSBpcyAtMQorUEFTUyBheERpdjUudGl0bGUuaW5kZXhPZignSW5pdGlhbCB0ZXh0IGJlZm9y
ZSBsaW5rJykgPj0gMCBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZGl2
NiBpcyB0cnVlCitQQVNTIGF4RGl2Ni50aXRsZS5pbmRleE9mKCdMaXN0IGl0ZW0nKSBpcyAtMQor
UEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjcgaXMgdHJ1ZQorUEFTUyBheERpdjcu
dGl0bGUuaW5kZXhPZignTGlzdCBpdGVtJykgaXMgLTEKK1BBU1MgYXhEaXY3LnRpdGxlLmluZGV4
T2YoJ0luaXRpYWwgdGV4dCBiZWZvcmUgbGlzdCcpID49IDAgaXMgdHJ1ZQogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2ZvY3VzYWJsZS1kaXYuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvZm9jdXNhYmxlLWRpdi5odG1sCmluZGV4IGFkZmZmYmY0M2I5ZjI3YzFlMWI1OWYy
M2RiMzM0YmEzOGMwZDkwZTAuLjIwOWQyYTQ2ZDhhYzM3YjQxYmY1M2QyMDk4MDg0MTAxY2ViMzk1
N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi5odG1sCkBA
IC0zLDE0ICszLDIzIEBACiA8Ym9keT4KIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiAKKzwhLS0gQSBsaW5rIGFsd2F5cyBnZXRzIGl0
cyBhY2Nlc3NpYmxlIHRleHQgZnJvbSBjb250ZW50cy4gLS0+CiA8YSBpZD0ibGluayIgaHJlZj0i
IyI+QTwvYT4KKworPCEtLSBBIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBzaG91bGQgYWxzbyBnZXQg
aXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLiAtLT4KIDxkaXYgaWQ9ImRpdiIgdGFi
aW5kZXg9IjAiPkI8L2Rpdj4KIDxkaXYgaWQ9ImRpdjIiIHRhYmluZGV4PSIwIj48ZGl2PjwvZGl2
PkM8L2Rpdj4KIDxkaXYgaWQ9ImRpdjMiIHRhYmluZGV4PSIwIiBhcmlhLWxhYmVsPSJEIj48L2Rp
dj4KIAorPCEtLSBBIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBzaG91bGQgbm90IGdldCBhY2Nlc3Np
YmxlIHRleHQgZnJvbSBjaGlsZHJlbiB0aGF0IGFyZSBmb2N1c2FibGUgb3IgY29udGFpbmVycy4g
LS0+Cis8ZGl2IGlkPSJkaXY0IiB0YWJpbmRleD0iMCI+PGEgaHJlZj0iIyI+TGluazwvYT48L2Rp
dj4KKzxkaXYgaWQ9ImRpdjUiIHRhYmluZGV4PSIwIj5Jbml0aWFsIHRleHQgYmVmb3JlIGxpbms8
YSBocmVmPSIjIj5MaW5rPC9hPjwvZGl2PgorPGRpdiBpZD0iZGl2NiIgdGFiaW5kZXg9IjAiPjx1
bD48bGk+TGlzdCBpdGVtPC9saT48L3VsPjwvZGl2PgorPGRpdiBpZD0iZGl2NyIgdGFiaW5kZXg9
IjAiPkluaXRpYWwgdGV4dCBiZWZvcmUgbGlzdDx1bD48bGk+TGlzdCBpdGVtPC9saT48L3VsPjwv
ZGl2PgorCiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+Ci1kZXNjcmlwdGlvbigi
VGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0
IGFjY2Vzc2liaWxpdHkgZm9jdXMuIik7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1
cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9j
dXMgYW5kIGdldHMgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLi4iKTsKIAogaWYg
KHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewog
ICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKQEAgLTQyLDYgKzUxLDMyIEBAIGlm
ICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsK
ICAgICBzaG91bGRCZSgiZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkaXYzIiwgInRydWUiKTsK
ICAgICB3aW5kb3cuYXhEaXYzID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQ7CiAgICAgc2hvdWxkQmUoImxhc3RDaGFyKGF4RGl2My5kZXNjcmlwdGlvbikiLCAiXCJEXCIi
KTsKKworICAgIHZhciBkaXY0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdjQnKTsKKyAg
ICBkaXY0LmZvY3VzKCk7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0g
ZGl2NCIsICJ0cnVlIik7CisgICAgd2luZG93LmF4RGl2NCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50OworICAgIHNob3VsZEJlKCJheERpdjQudGl0bGUuaW5kZXhPZign
TGluaycpIiwgIi0xIik7CisKKyAgICB2YXIgZGl2NSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdkaXY1Jyk7CisgICAgZGl2NS5mb2N1cygpOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5hY3Rp
dmVFbGVtZW50ID09IGRpdjUiLCAidHJ1ZSIpOworICAgIHdpbmRvdy5heERpdjUgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBzaG91bGRCZSgiYXhEaXY1LnRp
dGxlLmluZGV4T2YoJ0xpbmsnKSIsICItMSIpOworICAgIHNob3VsZEJlKCJheERpdjUudGl0bGUu
aW5kZXhPZignSW5pdGlhbCB0ZXh0IGJlZm9yZSBsaW5rJykgPj0gMCIsICJ0cnVlIik7CisKKyAg
ICB2YXIgZGl2NiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXY2Jyk7CisgICAgZGl2Ni5m
b2N1cygpOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjYiLCAi
dHJ1ZSIpOworICAgIHdpbmRvdy5heERpdjYgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudDsKKyAgICBzaG91bGRCZSgiYXhEaXY2LnRpdGxlLmluZGV4T2YoJ0xpc3QgaXRl
bScpIiwgIi0xIik7CisKKyAgICB2YXIgZGl2NyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdk
aXY3Jyk7CisgICAgZGl2Ny5mb2N1cygpOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5hY3RpdmVF
bGVtZW50ID09IGRpdjciLCAidHJ1ZSIpOworICAgIHdpbmRvdy5heERpdjcgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBzaG91bGRCZSgiYXhEaXY3LnRpdGxl
LmluZGV4T2YoJ0xpc3QgaXRlbScpIiwgIi0xIik7CisgICAgc2hvdWxkQmUoImF4RGl2Ny50aXRs
ZS5pbmRleE9mKCdJbml0aWFsIHRleHQgYmVmb3JlIGxpc3QnKSA+PSAwIiwgInRydWUiKTsKIH0K
IAogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178868</attachid>
            <date>2012-12-11 13:56:33 -0800</date>
            <delta_ts>2012-12-12 10:54:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101650-20121211135354.patch</filename>
            <type>text/plain</type>
            <size>14192</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjZkNGFmYWJjMjNhYjQx
ZjU2NzgzMjQyYTM2YTcxMmU2YTdkMmMzYy4uMDRiNWRlZDc3ZTJjYTkwODY5ZDFmNzAzOGRmM2Uy
NWFhZmZiYjYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEyLTExICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiBGb2N1c2Fi
bGUgZGl2IHNob3VsZCBoYXZlIGVtcHR5IHRpdGxlIGlmIGl0IGhhcyBpbm5lciBmb2N1c2FibGUg
ZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMTY1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEdldHRpbmcgaW5uZXIgdGV4dCBmcm9tIGFuIGVsZW1lbnQgbm93IGlnbm9yZXMgZm9jdXNhYmxl
IGRlc2NlbmRhbnRzIGFuZAorICAgICAgICBjb250YWluZXJzLCBidXQgdXNlcyBhbHRlcm5hdGl2
ZSB0ZXh0LgorCisgICAgICAgIFRoZSBjb21wdXRhdGlvbiBvZiB0ZXh0VW5kZXJFbGVtZW50IGlz
IG5vdyByZWN1cnNpdmUuIFRoaXMgY2F1c2VkIGEgY3Jhc2gKKyAgICAgICAgaWYgaXQgd2FzIGNh
bGxlZCBieSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGR1cmluZyBvYmplY3QgZGVzdHJ1Y3Rpb24s
CisgICAgICAgIHNvIEkgc2ltcGxpZmllZCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIHRvIG5vdCBh
Y3R1YWxseSBjYWxsIHRleHRVbmRlckVsZW1lbnQsCisgICAgICAgIHdpdGhvdXQgYWZmZWN0aW5n
IHRlc3QgcmVzdWx0cywgd2hpY2ggc2hvdWxkIGFjdHVhbGx5IGJlIGEgZGVjZW50IHNwZWVkdXAu
CisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9idXR0b24tdGl0bGUtdXNlcy1pbm5lci1p
bWctYWx0Lmh0bWwKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2Lmh0
bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRleHRVbmRlckVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRleHQp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0ZXh0VW5kZXJF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQpOgorCiAyMDEyLTEyLTExICBKb25hdGhvbiBKb25nc21hICA8
am9uYXRob24uam9uZ3NtYUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgW0dUS10gU291cCBu
ZXR3b3JrIGxvZ3MgYXJlIGZyZXF1ZW50bHkgaW50ZXJydXB0ZWQgYnkgb3RoZXIgbG9nZ2luZyBt
ZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCAyMmE4ZmFiZjAyOTc2MmEyZmQwNGRhZGI0MjUz
MzliYTkwODg1MjgyLi45Y2I1OTcxYmIwNjhjZmJiOGI1YzUxM2Q2NWU3NTQwNTBhZWI4MWRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0LmNwcApAQCAtMTQyNiwyMCArMTQyNiwzOSBAQCB1bnNpZ25lZCBBY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdDo6aGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdAogICAgIHJldHVybiBs
ZXZlbDsKIH0KIAorc3RhdGljIGJvb2wgc2hvdWxkUmVjdXJzZUludG9PYmplY3RGb3JJbm5lclRl
eHQoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQoreworICAgIGlmIChvYmotPmNhblNldEZvY3Vz
QXR0cmlidXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAob2JqLT5pc0xpc3Qo
KSB8fCBvYmotPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgfHwgb2JqLT5pc1RyZWUoKSB8fCBvYmot
PmlzQ2FudmFzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KCkgY29u
c3QKIHsKICAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOwotICAgIGlmICghbm9kZSkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgLy8gTm90ZTogVGV4dEl0ZXJhdG9yIGRvZXNu
J3QgcmV0dXJuIGFueSB0ZXh0IGZvciBub2RlcyB0aGF0IGRvbid0IGhhdmUgcmVuZGVyZXJzLgot
ICAgIC8vIElmIHRoaXMgY291bGQgYmUgZml4ZWQsIGl0J2QgYmUgbW9yZSBhY2N1cmF0ZSB1c2Ug
VGV4dEl0ZXJhdG9yIGhlcmUuCi0gICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAg
ICAgcmV0dXJuIHRvRWxlbWVudChub2RlKS0+aW5uZXJUZXh0KCk7Ci0gICAgZWxzZSBpZiAobm9k
ZS0+aXNUZXh0Tm9kZSgpKQorICAgIGlmIChub2RlICYmIG5vZGUtPmlzVGV4dE5vZGUoKSkKICAg
ICAgICAgcmV0dXJuIHRvVGV4dChub2RlKS0+d2hvbGVUZXh0KCk7Ci0gICAgCi0gICAgcmV0dXJu
IFN0cmluZygpOworCisgICAgU3RyaW5nIHJlc3VsdDsKKyAgICBmb3IgKEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkgeworICAgICAgICBpZiAoIXNob3VsZFJlY3Vyc2VJbnRvT2JqZWN0Rm9ySW5uZXJU
ZXh0KGNoaWxkKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChjaGlsZC0+
aXNBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpKSB7CisgICAgICAgICAgICBWZWN0b3I8QWNjZXNz
aWJpbGl0eVRleHQ+IHRleHRPcmRlcjsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Kj4oY2hpbGQpLT5hbHRlcm5hdGl2ZVRleHQodGV4dE9yZGVyKTsKKyAg
ICAgICAgICAgIGlmICh0ZXh0T3JkZXIuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQodGV4dE9yZGVyWzBdLnRleHQpOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LmFwcGVuZChjaGls
ZC0+dGV4dFVuZGVyRWxlbWVudCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQog
CiBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRpdGxlKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCmluZGV4IDhkNTE0OWEyMDI3NjRhOGQzMzE0Y2QyYWMzYjc3YWY4M2M2NDU5ZDEu
LmUzYjJmOWFiMjdiMDAzMGExY2EzMzcyNDgwMDAxMDRjZGIxZjFlOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcApAQCAtNjI0LDEyICs2MjQsMTAgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OnRleHRVbmRlckVsZW1lbnQoKSBjb25zdAogewogICAgIGlmICghbV9yZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIAorCiAgICAgaWYgKG1fcmVuZGVyZXItPmlz
RmlsZVVwbG9hZENvbnRyb2woKSkKICAgICAgICAgcmV0dXJuIHRvUmVuZGVyRmlsZVVwbG9hZENv
bnRyb2wobV9yZW5kZXJlciktPmJ1dHRvblZhbHVlKCk7CiAgICAgCi0gICAgTm9kZSogbm9kZSA9
IG1fcmVuZGVyZXItPm5vZGUoKTsKLQogI2lmIEVOQUJMRShNQVRITUwpCiAgICAgLy8gTWF0aCBv
cGVyYXRvcnMgY3JlYXRlIFJlbmRlclRleHQgbm9kZXMgb24gdGhlIGZseSB0aGF0IGFyZSBub3Qg
dGllZCBpbnRvIHRoZSBET00gaW4gYSByZWFzb25hYmxlIHdheSwKICAgICAvLyBzbyByYW5nZU9m
Q29udGVudHMgZG9lcyBub3Qgd29yayBmb3IgdGhlbSAobm9yIGRvZXMgcmVndWxhciB0ZXh0IHNl
bGVjdGlvbikuCkBAIC02NDEsMTYgKzYzOSw2IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KCkgY29uc3QKICAgICB9CiAjZW5kaWYKICAgICAKLSAg
ICBpZiAobm9kZSkgewotICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQo
KS0+ZnJhbWUoKSkgewotICAgICAgICAgICAgLy8gY2F0Y2ggc3RhbGUgV2ViQ29yZUFYT2JqZWN0
IChzZWUgPHJkYXI6Ly9wcm9ibGVtLzM5NjAxOTY+KQotICAgICAgICAgICAgaWYgKGZyYW1lLT5k
b2N1bWVudCgpICE9IG5vZGUtPmRvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotCi0gICAgICAgICAgICByZXR1cm4gcGxhaW5UZXh0KHJhbmdlT2ZDb250ZW50cyhu
b2RlKS5nZXQoKSwgdGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgCiAgICAgLy8gU29tZXRpbWVzIHRleHQgZnJhZ21lbnRzIGRvbid0IGhh
dmUgTm9kZSdzIGFzc29jaWF0ZWQgd2l0aCB0aGVtIChsaWtlIHdoZW4KICAgICAvLyBDU1MgY29u
dGVudCBpcyB1c2VkIHRvIGluc2VydCB0ZXh0KS4KICAgICBpZiAobV9yZW5kZXJlci0+aXNUZXh0
KCkpIHsKQEAgLTY1OSw5ICs2NDcsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6dGV4dFVuZGVyRWxlbWVudCgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKHN0
YXRpY19jYXN0PFJlbmRlclRleHRGcmFnbWVudCo+KG1fcmVuZGVyZXIpLT5jb250ZW50U3RyaW5n
KCkpOwogICAgIH0KICAgICAKLSAgICAvLyByZXR1cm4gdGhlIG51bGwgc3RyaW5nIGZvciBhbm9u
eW1vdXMgdGV4dCBiZWNhdXNlIGl0IGlzIG5vbi10cml2aWFsIHRvIGdldAotICAgIC8vIHRoZSBh
Y3R1YWwgdGV4dCBhbmQsIHNvIGZhciwgdGhhdCBpcyBub3QgbmVlZGVkCi0gICAgcmV0dXJuIFN0
cmluZygpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dFVuZGVyRWxl
bWVudCgpOwogfQogCiBOb2RlKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpub2RlKCkgY29u
c3QKQEAgLTEyNjUsOSArMTI1MSwyNCBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgIC8vIGNoZWNrIGlmIHRoZXJlJ3Mg
c29tZSBraW5kIG9mIGFjY2Vzc2libGUgbmFtZSBmb3IgdGhlIGVsZW1lbnQpCiAgICAgLy8gdG8g
ZGVjaWRlIGFuIGVsZW1lbnQncyB2aXNpYmlsaXR5IGlzIG5vdCBhcyBkZWZpbml0aXZlIGFzCiAg
ICAgLy8gcHJldmlvdXMgY2hlY2tzLCBzbyB0aGlzIHNob3VsZCByZW1haW4gYXMgb25lIG9mIHRo
ZSBsYXN0LgotICAgIGlmICghaGVscFRleHQoKS5pc0VtcHR5KCkgfHwgIXRpdGxlKCkuaXNFbXB0
eSgpIHx8ICFhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKS5pc0VtcHR5KCkpCisgICAgLy8KKyAg
ICAvLyBUaGVzZSBjaGVja3MgYXJlIHNpbXBsaWZpZWQgaW4gdGhlIGludGVyZXN0IG9mIGV4ZWN1
dGlvbiBzcGVlZCAtCisgICAgLy8gZm9yIGV4YW1wbGUsIGFueSBlbGVtZW50IHdpdGggYW4gYWx0
IGF0dHJpYnV0ZSB3aWxsIGJlIHVuaWdub3JlZCwKKyAgICAvLyByYXRoZXIgdGhhbiBvbmx5IGlt
YWdlcyB3aXRoIGFuIGFsdCBhdHRyaWJ1dGUgYmVpbmcgdW5pZ25vcmVkLgorICAgIGlmICghZ2V0
QXR0cmlidXRlKGFyaWFfaGVscEF0dHIpLmlzRW1wdHkoKSB8fCAhZ2V0QXR0cmlidXRlKGFyaWFf
ZGVzY3JpYmVkYnlBdHRyKS5pc0VtcHR5KCkgfHwgIWdldEF0dHJpYnV0ZShhbHRBdHRyKS5pc0Vt
cHR5KCkgfHwgIWdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIAorCisgICAgaWYgKGlzR2VuZXJpY0ZvY3VzYWJsZUVsZW1lbnQoKSAm
JiByb2xlVmFsdWUoKSAhPSBTVkdSb290Um9sZSAmJiBub2RlLT5maXJzdENoaWxkKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghYXJpYUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlv
bigpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgRU5BQkxFKE1BVEhN
TCkKKyAgICBpZiAoIWdldEF0dHJpYnV0ZShNYXRoTUxOYW1lczo6YWx0dGV4dEF0dHIpLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKICAgICAvLyBCeSBkZWZhdWx0
LCBvYmplY3RzIHNob3VsZCBiZSBpZ25vcmVkIHNvIHRoYXQgdGhlIEFYIGhpZXJhcmNoeSBpcyBu
b3QgCiAgICAgLy8gZmlsbGVkIHdpdGggdW5uZWNlc3NhcnkgaXRlbXMuCiAgICAgcmV0dXJuIHRy
dWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZGU5MTEwYWYyNzZmYTgyNzZhZDI0OGE2ODU3OWY4ZDg4MzE4ZDY0OS4uYTkx
YzMzMTc4OTU0N2M2MGU0ZDkxMjI1ODhlZWUwZDQ2Y2Q1OGQ5MiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDEyLTEyLTExICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgor
CisgICAgICAgIEFYOiBGb2N1c2FibGUgZGl2IHNob3VsZCBoYXZlIGVtcHR5IHRpdGxlIGlmIGl0
IGhhcyBpbm5lciBmb2N1c2FibGUgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTY1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgbmV3IHRlc3RzIHRvIHNob3cgdGhhdCBnZXR0aW5n
IGlubmVyIHRleHQgZnJvbSBhbiBlbGVtZW50IG5vdyBpZ25vcmVzCisgICAgICAgIGZvY3VzYWJs
ZSBkZXNjZW5kYW50cyBhbmQgY29udGFpbmVycywgYnV0IHVzZXMgYWx0ZXJuYXRpdmUgdGV4dC4K
KworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYnV0dG9uLXRpdGxlLXVzZXMtaW5uZXItaW1nLWFs
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYnV0dG9uLXRp
dGxlLXVzZXMtaW5uZXItaW1nLWFsdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2ZvY3VzYWJsZS1kaXYtZXhwZWN0ZWQudHh0OiBFeHRlbmRlZCB3aXRoIGFkZGl0aW9uYWwg
dGVzdCBjYXNlcy4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2ZvY3VzYWJsZS1kaXYuaHRtbDog
RXh0ZW5kZWQgd2l0aCBhZGRpdGlvbmFsIHRlc3QgY2FzZXMuCisKIDIwMTItMTItMTEgIEJldGgg
RGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0aW5nIHRoZXNlIHRlc3Qg
cmVzdWx0cyBhZnRlciBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzcwMDYgCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2J1dHRvbi10aXRsZS11c2VzLWlu
bmVyLWltZy1hbHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9idXR0
b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODM2
N2E3NzE4MTcyNTYxYzhmZjE4ZjQ4Y2RhNWI0ZGRiZDgxNTMzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9idXR0b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitCdXR0b24gd2l0aCBpbWFnZSBvZiAKK1Ro
aXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgYSBnZW5lcmljIGZvY3VzYWJsZSBkaXYgY2FuIGdldCBh
Y2Nlc3NpYmlsaXR5IGZvY3VzIGFuZCBnZXRzIGl0cyBhY2Nlc3NpYmxlIHRleHQgZnJvbSBjb250
ZW50cy4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LmFj
dGl2ZUVsZW1lbnQgPT0gYnV0dG9uIGlzIHRydWUKK1BBU1MgYXhCdXR0b24udGl0bGUuaW5kZXhP
ZignQnV0dG9uIHdpdGggaW1hZ2Ugb2YgY2FrZScpID49IDAgaXMgdHJ1ZQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvYnV0dG9uLXRpdGxlLXVzZXMtaW5uZXItaW1nLWFsdC5odG1s
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9idXR0b24tdGl0bGUtdXNlcy1pbm5lci1pbWct
YWx0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVhMjRlODNlOTBlNDVhNjQ3NzlmMGUzZmQyMTNlNTkxZDZi
ZTVjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYnV0dG9u
LXRpdGxlLXVzZXMtaW5uZXItaW1nLWFsdC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQ
RSBIVE1MPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KK2J1dHRvbiB7CisgIHBhZGRp
bmc6IDMwcHg7Cit9Cis8L3N0eWxlPgorCis8YnV0dG9uIGlkPSJjYWtlIj5CdXR0b24gd2l0aCBp
bWFnZSBvZiA8aW1nIGFsdD0iY2FrZSIgc3JjPSJyZXNvdXJjZXMvY2FrZS5wbmciIHdpZHRoPSI0
MHB4Ij48L2J1dHRvbj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgYSBnZW5lcmljIGZvY3VzYWJsZSBk
aXYgY2FuIGdldCBhY2Nlc3NpYmlsaXR5IGZvY3VzIGFuZCBnZXRzIGl0cyBhY2Nlc3NpYmxlIHRl
eHQgZnJvbSBjb250ZW50cy4uIik7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisKKyAgICB2YXIgYnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nha2Un
KTsKKyAgICBidXR0b24uZm9jdXMoKTsKKyAgICBzaG91bGRCZSgiZG9jdW1lbnQuYWN0aXZlRWxl
bWVudCA9PSBidXR0b24iLCAidHJ1ZSIpOworICAgIHdpbmRvdy5heEJ1dHRvbiA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIHNob3VsZEJlKCJheEJ1dHRvbi50
aXRsZS5pbmRleE9mKCdCdXR0b24gd2l0aCBpbWFnZSBvZiBjYWtlJykgPj0gMCIsICJ0cnVlIik7
Cit9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ZvY3VzYWJsZS1kaXYtZXhwZWN0ZWQudHh0CmluZGV4IGQz
ODQ0MjYwMGRjNGYyMzc3NzVmZGJiZWRjNmU0OTM3NzlkOGI2ZDIuLmRjNDgwMzhkNjRhOGJlNWJm
NDIzYzc2OTU4YzNjODUyNDJmMDVkYTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvZm9jdXNhYmxlLWRpdi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9mb2N1c2FibGUtZGl2LWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDEyIEBACiBBCiBC
CiBDCi1UaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGEgZ2VuZXJpYyBmb2N1c2FibGUgZGl2IGNh
biBnZXQgYWNjZXNzaWJpbGl0eSBmb2N1cy4KK0xpbmsKK0luaXRpYWwgdGV4dCBiZWZvcmUgbGlu
a0xpbmsKK0xpc3QgaXRlbQorSW5pdGlhbCB0ZXh0IGJlZm9yZSBsaXN0CitMaXN0IGl0ZW0KK1Ro
aXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgYSBnZW5lcmljIGZvY3VzYWJsZSBkaXYgY2FuIGdldCBh
Y2Nlc3NpYmlsaXR5IGZvY3VzIGFuZCBnZXRzIGl0cyBhY2Nlc3NpYmxlIHRleHQgZnJvbSBjb250
ZW50cy4uCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApAQCAtMTQsNiArMTksMTYgQEAg
UEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjIgaXMgdHJ1ZQogUEFTUyBsYXN0Q2hh
cihheERpdjIudGl0bGUpIGlzICJDIgogUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRp
djMgaXMgdHJ1ZQogUEFTUyBsYXN0Q2hhcihheERpdjMuZGVzY3JpcHRpb24pIGlzICJEIgorUEFT
UyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjQgaXMgdHJ1ZQorUEFTUyBheERpdjQudGl0
bGUuaW5kZXhPZignTGluaycpIGlzIC0xCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0g
ZGl2NSBpcyB0cnVlCitQQVNTIGF4RGl2NS50aXRsZS5pbmRleE9mKCdMaW5rJykgaXMgLTEKK1BB
U1MgYXhEaXY1LnRpdGxlLmluZGV4T2YoJ0luaXRpYWwgdGV4dCBiZWZvcmUgbGluaycpID49IDAg
aXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjYgaXMgdHJ1ZQorUEFT
UyBheERpdjYudGl0bGUuaW5kZXhPZignTGlzdCBpdGVtJykgaXMgLTEKK1BBU1MgZG9jdW1lbnQu
YWN0aXZlRWxlbWVudCA9PSBkaXY3IGlzIHRydWUKK1BBU1MgYXhEaXY3LnRpdGxlLmluZGV4T2Yo
J0xpc3QgaXRlbScpIGlzIC0xCitQQVNTIGF4RGl2Ny50aXRsZS5pbmRleE9mKCdJbml0aWFsIHRl
eHQgYmVmb3JlIGxpc3QnKSA+PSAwIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9mb2N1c2FibGUtZGl2Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ZvY3Vz
YWJsZS1kaXYuaHRtbAppbmRleCBhZGZmZmJmNDNiOWYyN2MxZTFiNTlmMjNkYjMzNGJhMzhjMGQ5
MGUwLi4yMDlkMmE0NmQ4YWMzN2I0MWJmNTNkMjA5ODA4NDEwMWNlYjM5NTdkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ZvY3VzYWJsZS1kaXYuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ZvY3VzYWJsZS1kaXYuaHRtbApAQCAtMywxNCArMywyMyBA
QAogPGJvZHk+CiA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgogCis8IS0tIEEgbGluayBhbHdheXMgZ2V0cyBpdHMgYWNjZXNzaWJsZSB0
ZXh0IGZyb20gY29udGVudHMuIC0tPgogPGEgaWQ9ImxpbmsiIGhyZWY9IiMiPkE8L2E+CisKKzwh
LS0gQSBnZW5lcmljIGZvY3VzYWJsZSBkaXYgc2hvdWxkIGFsc28gZ2V0IGl0cyBhY2Nlc3NpYmxl
IHRleHQgZnJvbSBjb250ZW50cy4gLS0+CiA8ZGl2IGlkPSJkaXYiIHRhYmluZGV4PSIwIj5CPC9k
aXY+CiA8ZGl2IGlkPSJkaXYyIiB0YWJpbmRleD0iMCI+PGRpdj48L2Rpdj5DPC9kaXY+CiA8ZGl2
IGlkPSJkaXYzIiB0YWJpbmRleD0iMCIgYXJpYS1sYWJlbD0iRCI+PC9kaXY+CiAKKzwhLS0gQSBn
ZW5lcmljIGZvY3VzYWJsZSBkaXYgc2hvdWxkIG5vdCBnZXQgYWNjZXNzaWJsZSB0ZXh0IGZyb20g
Y2hpbGRyZW4gdGhhdCBhcmUgZm9jdXNhYmxlIG9yIGNvbnRhaW5lcnMuIC0tPgorPGRpdiBpZD0i
ZGl2NCIgdGFiaW5kZXg9IjAiPjxhIGhyZWY9IiMiPkxpbms8L2E+PC9kaXY+Cis8ZGl2IGlkPSJk
aXY1IiB0YWJpbmRleD0iMCI+SW5pdGlhbCB0ZXh0IGJlZm9yZSBsaW5rPGEgaHJlZj0iIyI+TGlu
azwvYT48L2Rpdj4KKzxkaXYgaWQ9ImRpdjYiIHRhYmluZGV4PSIwIj48dWw+PGxpPkxpc3QgaXRl
bTwvbGk+PC91bD48L2Rpdj4KKzxkaXYgaWQ9ImRpdjciIHRhYmluZGV4PSIwIj5Jbml0aWFsIHRl
eHQgYmVmb3JlIGxpc3Q8dWw+PGxpPkxpc3QgaXRlbTwvbGk+PC91bD48L2Rpdj4KKwogPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0PgotZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBtYWtl
cyBzdXJlIHRoYXQgYSBnZW5lcmljIGZvY3VzYWJsZSBkaXYgY2FuIGdldCBhY2Nlc3NpYmlsaXR5
IGZvY3VzLiIpOworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgYSBnZW5l
cmljIGZvY3VzYWJsZSBkaXYgY2FuIGdldCBhY2Nlc3NpYmlsaXR5IGZvY3VzIGFuZCBnZXRzIGl0
cyBhY2Nlc3NpYmxlIHRleHQgZnJvbSBjb250ZW50cy4uIik7CiAKIGlmICh3aW5kb3cudGVzdFJ1
bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKICAgICB3aW5kb3cudGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CkBAIC00Miw2ICs1MSwzMiBAQCBpZiAod2luZG93LnRlc3RS
dW5uZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CiAgICAgc2hvdWxkQmUo
ImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZGl2MyIsICJ0cnVlIik7CiAgICAgd2luZG93LmF4
RGl2MyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OwogICAgIHNob3Vs
ZEJlKCJsYXN0Q2hhcihheERpdjMuZGVzY3JpcHRpb24pIiwgIlwiRFwiIik7CisKKyAgICB2YXIg
ZGl2NCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXY0Jyk7CisgICAgZGl2NC5mb2N1cygp
OworICAgIHNob3VsZEJlKCJkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjQiLCAidHJ1ZSIp
OworICAgIHdpbmRvdy5heERpdjQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudDsKKyAgICBzaG91bGRCZSgiYXhEaXY0LnRpdGxlLmluZGV4T2YoJ0xpbmsnKSIsICItMSIp
OworCisgICAgdmFyIGRpdjUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2NScpOworICAg
IGRpdjUuZm9jdXMoKTsKKyAgICBzaG91bGRCZSgiZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBk
aXY1IiwgInRydWUiKTsKKyAgICB3aW5kb3cuYXhEaXY1ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgc2hvdWxkQmUoImF4RGl2NS50aXRsZS5pbmRleE9mKCdM
aW5rJykiLCAiLTEiKTsKKyAgICBzaG91bGRCZSgiYXhEaXY1LnRpdGxlLmluZGV4T2YoJ0luaXRp
YWwgdGV4dCBiZWZvcmUgbGluaycpID49IDAiLCAidHJ1ZSIpOworCisgICAgdmFyIGRpdjYgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2NicpOworICAgIGRpdjYuZm9jdXMoKTsKKyAgICBz
aG91bGRCZSgiZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkaXY2IiwgInRydWUiKTsKKyAgICB3
aW5kb3cuYXhEaXY2ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Cisg
ICAgc2hvdWxkQmUoImF4RGl2Ni50aXRsZS5pbmRleE9mKCdMaXN0IGl0ZW0nKSIsICItMSIpOwor
CisgICAgdmFyIGRpdjcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2NycpOworICAgIGRp
djcuZm9jdXMoKTsKKyAgICBzaG91bGRCZSgiZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkaXY3
IiwgInRydWUiKTsKKyAgICB3aW5kb3cuYXhEaXY3ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Zm9jdXNlZEVsZW1lbnQ7CisgICAgc2hvdWxkQmUoImF4RGl2Ny50aXRsZS5pbmRleE9mKCdMaXN0
IGl0ZW0nKSIsICItMSIpOworICAgIHNob3VsZEJlKCJheERpdjcudGl0bGUuaW5kZXhPZignSW5p
dGlhbCB0ZXh0IGJlZm9yZSBsaXN0JykgPj0gMCIsICJ0cnVlIik7CiB9CiAKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179080</attachid>
            <date>2012-12-12 10:54:42 -0800</date>
            <delta_ts>2012-12-12 11:48:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101650-20121212105202.patch</filename>
            <type>text/plain</type>
            <size>23262</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFmOTk4MTA0NzM1Mzg1
N2EzMjQ5NTA3MDA5Y2FiYmIwNzQ1OWFkNC4uMTBlNGY3YmJhNjIwYTg4MGYxMzJkZDZkYzYwMTEz
ZjgyYTljOGE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEyLTEyICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiB0ZXh0VW5k
ZXJFbGVtZW50IHNob3VsZCBjb25zaWRlciBhbHQgdGV4dCwgYnV0IHNraXAgbGlua3MgYW5kIGNv
bnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDE2NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBH
ZXR0aW5nIGlubmVyIHRleHQgZnJvbSBhbiBlbGVtZW50IG5vdyBpZ25vcmVzIGZvY3VzYWJsZSBk
ZXNjZW5kYW50cyBhbmQKKyAgICAgICAgY29udGFpbmVycywgYnV0IHVzZXMgYWx0ZXJuYXRpdmUg
dGV4dC4KKworICAgICAgICBUaGUgY29tcHV0YXRpb24gb2YgdGV4dFVuZGVyRWxlbWVudCBpcyBu
b3cgcmVjdXJzaXZlLiBUaGlzIGNhdXNlZCBhIGNyYXNoCisgICAgICAgIGlmIGl0IHdhcyBjYWxs
ZWQgYnkgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCBkdXJpbmcgb2JqZWN0IGRlc3RydWN0aW9uLAor
ICAgICAgICBzbyBJIHNpbXBsaWZpZWQgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCB0byBub3QgYWN0
dWFsbHkgY2FsbCB0ZXh0VW5kZXJFbGVtZW50LAorICAgICAgICB3aXRob3V0IGFmZmVjdGluZyB0
ZXN0IHJlc3VsdHMsIHdoaWNoIHNob3VsZCBhY3R1YWxseSBiZSBhIGRlY2VudCBzcGVlZHVwLgor
CisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvYnV0dG9uLXRpdGxlLXVzZXMtaW5uZXItaW1n
LWFsdC5odG1sCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi5odG1s
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVXNlQWNjZXNzaWJs
aXR5T2JqZWN0SW5uZXJUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCk6CisKIDIwMTItMTItMTIgIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYiBpbnNwZWN0b3Ig
cHJpbnRzIGEgd2FybmluZyBhYm91dCAiRGVidWciIG5vdCBiZWluZyBsb2NhbGl6ZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdC5jcHAKaW5kZXggMGU1Yzk3ODZiNGIwNzI0YjVjMTIxMDk4ZTkzNzEwYjQ1ZjVkOTliNC4u
MzkzYmNhZTEyYmFmZjE5NWM2NzQ4YzY0ZWYxMTRmZWRkODk1YzZkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5j
cHAKQEAgLTE0MzQsMjAgKzE0MzQsNjIgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QKICAgICByZXR1cm4gbGV2ZWw7CiB9CiAKKy8v
IFdoZW4gYnVpbGRpbmcgdGhlIHRleHRVbmRlckVsZW1lbnQgZm9yIGFuIG9iamVjdCwgZGV0ZXJt
aW5lIHdoZXRoZXIgb3Igbm90CisvLyB3ZSBzaG91bGQgaW5jbHVkZSB0aGUgaW5uZXIgdGV4dCBv
ZiB0aGlzIGdpdmVuIGRlc2NlbmRhbnQgb2JqZWN0IG9yIHNraXAgaXQuCitzdGF0aWMgYm9vbCBz
aG91bGRVc2VBY2Nlc3NpYmxpdHlPYmplY3RJbm5lclRleHQoQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqKQoreworICAgIC8vIENvbnNpZGVyIHRoaXMgaHlwb3RoZXRpY2FsIGV4YW1wbGU6CisgICAg
Ly8gPGRpdiB0YWJpbmRleD0wPgorICAgIC8vICAgPGgyPgorICAgIC8vICAgICBUYWJsZSBvZiBj
b250ZW50cworICAgIC8vICAgPC9oMj4KKyAgICAvLyAgIDxhIGhyZWY9IiNzdGFydCI+SnVtcCB0
byBzdGFydCBvZiBib29rPC9hPgorICAgIC8vICAgPHVsPgorICAgIC8vICAgICA8bGk+PGEgaHJl
Zj0iIzEiPkNoYXB0ZXIgMTwvYT48L2xpPgorICAgIC8vICAgICA8bGk+PGEgaHJlZj0iIzEiPkNo
YXB0ZXIgMjwvYT48L2xpPgorICAgIC8vICAgPC91bD4KKyAgICAvLyA8L2Rpdj4KKyAgICAvLwor
ICAgIC8vIFRoZSBnb2FsIGlzIHRvIHJldHVybiBhIHJlYXNvbmFibGUgdGl0bGUgZm9yIHRoZSBv
dXRlciBjb250YWluZXIgZGl2LCBiZWNhdXNlCisgICAgLy8gaXQncyBmb2N1c2FibGUgLSBidXQg
d2l0aG91dCBtYWtpbmcgaXRzIHRpdGxlIGJlIHRoZSBmdWxsIGlubmVyIHRleHQsIHdoaWNoIGlz
CisgICAgLy8gcXVpdGUgbG9uZy4gQXMgYSBoZXVyaXN0aWMsIHNraXAgbGlua3MsIGNvbnRyb2xz
LCBhbmQgZWxlbWVudHMgdGhhdCBhcmUgdXN1YWxseQorICAgIC8vIGNvbnRhaW5lcnMgd2l0aCBs
b3RzIG9mIGNoaWxkcmVuLgorCisgICAgLy8gU2tpcCBmb2N1c2FibGUgY2hpbGRyZW4sIHNvIHdl
IGRvbid0IGluY2x1ZGUgdGhlIHRleHQgb2YgbGlua3MgYW5kIGNvbnRyb2xzLgorICAgIGlmIChv
YmotPmNhblNldEZvY3VzQXR0cmlidXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIFNraXAgYmlnIGNvbnRhaW5lciBlbGVtZW50cyBsaWtlIGxpc3RzLCB0YWJsZXMsIGV0Yy4K
KyAgICBpZiAob2JqLT5pc0xpc3QoKSB8fCBvYmotPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgfHwg
b2JqLT5pc1RyZWUoKSB8fCBvYmotPmlzQ2FudmFzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiB0cnVlOworfQorCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OnRleHRVbmRlckVsZW1lbnQoKSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2Rl
KCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICAvLyBO
b3RlOiBUZXh0SXRlcmF0b3IgZG9lc24ndCByZXR1cm4gYW55IHRleHQgZm9yIG5vZGVzIHRoYXQg
ZG9uJ3QgaGF2ZSByZW5kZXJlcnMuCi0gICAgLy8gSWYgdGhpcyBjb3VsZCBiZSBmaXhlZCwgaXQn
ZCBiZSBtb3JlIGFjY3VyYXRlIHVzZSBUZXh0SXRlcmF0b3IgaGVyZS4KLSAgICBpZiAobm9kZS0+
aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpLT5pbm5lclRl
eHQoKTsKLSAgICBlbHNlIGlmIChub2RlLT5pc1RleHROb2RlKCkpCisgICAgaWYgKG5vZGUgJiYg
bm9kZS0+aXNUZXh0Tm9kZSgpKQogICAgICAgICByZXR1cm4gdG9UZXh0KG5vZGUpLT53aG9sZVRl
eHQoKTsKLSAgICAKLSAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBTdHJpbmcgcmVzdWx0Owor
ICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICghc2hvdWxkVXNl
QWNjZXNzaWJsaXR5T2JqZWN0SW5uZXJUZXh0KGNoaWxkKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGlmIChjaGlsZC0+aXNBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpKSB7Cisg
ICAgICAgICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+IHRleHRPcmRlcjsKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Kj4oY2hpbGQpLT5hbHRlcm5h
dGl2ZVRleHQodGV4dE9yZGVyKTsKKyAgICAgICAgICAgIGlmICh0ZXh0T3JkZXIuc2l6ZSgpID4g
MCkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodGV4dE9yZGVyWzBdLnRleHQpOwor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZChjaGlsZC0+dGV4dFVuZGVyRWxlbWVudCgpKTsKKyAgICB9CisK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OnRpdGxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGFmNTY4NmFjZTBmNjAzNGMz
NjkyODNjMTE3ZWZmYTk4MjE0MTg5MDEuLjZkYjlkMzYxMGI1Zjc0ZDllODg3YjVhOGU0MzNmY2Ux
MzYxYWU5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtNjI0LDEyICs2MjQsMTAgQEAgU3Ry
aW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQoKSBjb25zdAog
ewogICAgIGlmICghbV9yZW5kZXJlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIAor
CiAgICAgaWYgKG1fcmVuZGVyZXItPmlzRmlsZVVwbG9hZENvbnRyb2woKSkKICAgICAgICAgcmV0
dXJuIHRvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wobV9yZW5kZXJlciktPmJ1dHRvblZhbHVlKCk7
CiAgICAgCi0gICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKLQogI2lmIEVOQUJM
RShNQVRITUwpCiAgICAgLy8gTWF0aCBvcGVyYXRvcnMgY3JlYXRlIFJlbmRlclRleHQgbm9kZXMg
b24gdGhlIGZseSB0aGF0IGFyZSBub3QgdGllZCBpbnRvIHRoZSBET00gaW4gYSByZWFzb25hYmxl
IHdheSwKICAgICAvLyBzbyByYW5nZU9mQ29udGVudHMgZG9lcyBub3Qgd29yayBmb3IgdGhlbSAo
bm9yIGRvZXMgcmVndWxhciB0ZXh0IHNlbGVjdGlvbikuCkBAIC02NDAsMjggKzYzOCwyOCBAQCBT
dHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCgpIGNvbnN0
CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICAKLSAgICBpZiAobm9kZSkgewotICAgICAg
ICBpZiAoRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewotICAgICAg
ICAgICAgLy8gY2F0Y2ggc3RhbGUgV2ViQ29yZUFYT2JqZWN0IChzZWUgPHJkYXI6Ly9wcm9ibGVt
LzM5NjAxOTY+KQotICAgICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICE9IG5vZGUtPmRv
Y3VtZW50KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgICAgICAg
ICByZXR1cm4gcGxhaW5UZXh0KHJhbmdlT2ZDb250ZW50cyhub2RlKS5nZXQoKSwgdGV4dEl0ZXJh
dG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSk7CisgICAgaWYgKG1fcmVuZGVyZXItPmlzVGV4dCgp
KSB7CisgICAgICAgIC8vIElmIHBvc3NpYmxlLCB1c2UgYSB0ZXh0IGl0ZXJhdG9yIHRvIGdldCB0
aGUgdGV4dCwgc28gdGhhdCB3aGl0ZXNwYWNlCisgICAgICAgIC8vIGlzIGhhbmRsZWQgY29uc2lz
dGVudGx5LgorICAgICAgICBpZiAoTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKSkgeworICAgICAg
ICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKKyAg
ICAgICAgICAgICAgICAvLyBjYXRjaCBzdGFsZSBXZWJDb3JlQVhPYmplY3QgKHNlZSA8cmRhcjov
L3Byb2JsZW0vMzk2MDE5Nj4pCisgICAgICAgICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgp
ICE9IG5vZGUtPmRvY3VtZW50KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgICAgICAgICAgICAgIHJldHVybiBwbGFpblRleHQocmFuZ2VPZkNvbnRlbnRzKG5v
ZGUpLmdldCgpLCB0ZXh0SXRlcmF0b3JCZWhhdmlvckZvclRleHRSYW5nZSgpKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgIH0KICAgICAKLSAgICAvLyBTb21ldGltZXMgdGV4dCBmcmFn
bWVudHMgZG9uJ3QgaGF2ZSBOb2RlJ3MgYXNzb2NpYXRlZCB3aXRoIHRoZW0gKGxpa2Ugd2hlbgot
ICAgIC8vIENTUyBjb250ZW50IGlzIHVzZWQgdG8gaW5zZXJ0IHRleHQpLgotICAgIGlmIChtX3Jl
bmRlcmVyLT5pc1RleHQoKSkgeworICAgICAgICAvLyBTb21ldGltZXMgdGV4dCBmcmFnbWVudHMg
ZG9uJ3QgaGF2ZSBOb2RlcyBhc3NvY2lhdGVkIHdpdGggdGhlbSAobGlrZSB3aGVuCisgICAgICAg
IC8vIENTUyBjb250ZW50IGlzIHVzZWQgdG8gaW5zZXJ0IHRleHQpLgogICAgICAgICBSZW5kZXJU
ZXh0KiByZW5kZXJUZXh0T2JqZWN0ID0gdG9SZW5kZXJUZXh0KG1fcmVuZGVyZXIpOwogICAgICAg
ICBpZiAocmVuZGVyVGV4dE9iamVjdC0+aXNUZXh0RnJhZ21lbnQoKSkKICAgICAgICAgICAgIHJl
dHVybiBTdHJpbmcoc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4obV9yZW5kZXJlcikt
PmNvbnRlbnRTdHJpbmcoKSk7CiAgICAgfQogICAgIAotICAgIC8vIHJldHVybiB0aGUgbnVsbCBz
dHJpbmcgZm9yIGFub255bW91cyB0ZXh0IGJlY2F1c2UgaXQgaXMgbm9uLXRyaXZpYWwgdG8gZ2V0
Ci0gICAgLy8gdGhlIGFjdHVhbCB0ZXh0IGFuZCwgc28gZmFyLCB0aGF0IGlzIG5vdCBuZWVkZWQK
LSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
Ojp0ZXh0VW5kZXJFbGVtZW50KCk7CiB9CiAKIE5vZGUqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6Om5vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJhOGEwNzY5ZmQyYzg3ZDM2YjU1NjQyMTk4ZGY0MjQ3
NWZlZmRjNDcuLmVlMWZhYmQyZjQ2NDliYTFiNGRjOTFmMjdlODg5NmJiZGI5NWRjYjYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNyBAQAorMjAxMi0xMi0xMiAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlA
Z29vZ2xlLmNvbT4KKworICAgICAgICBBWDogdGV4dFVuZGVyRWxlbWVudCBzaG91bGQgY29uc2lk
ZXIgYWx0IHRleHQsIGJ1dCBza2lwIGxpbmtzIGFuZCBjb250cm9scworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNjUwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBuZXcgdGVzdHMgdG8gc2hvdyB0
aGF0IGdldHRpbmcgaW5uZXIgdGV4dCBmcm9tIGFuIGVsZW1lbnQgbm93IGlnbm9yZXMKKyAgICAg
ICAgZm9jdXNhYmxlIGRlc2NlbmRhbnRzIGFuZCBjb250YWluZXJzLCBidXQgdXNlcyBhbHRlcm5h
dGl2ZSB0ZXh0LgorCisgICAgICAgIFVwZGF0ZXMgYW5kIHJlYmFzZWxpbmVzIHNldmVyYWwgdGVz
dHMgdG8gcmVmbGVjdCB0aGUgbmV3IGxvZ2ljLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9i
dXR0b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9idXR0b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi1leHBlY3RlZC50
eHQ6IEV4dGVuZGVkIHdpdGggbW9yZSB0ZXN0IGNhc2VzLgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvZm9jdXNhYmxlLWRpdi5odG1sOiBFeHRlbmRlZCB3aXRoIG1vcmUgdGVzdCBjYXNlcy4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOiBVbi1za2lwIHRlc3Qg
dGhhdCBub3cgcGFzc2VzLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxp
dHkvaW1hZ2UtbGluay1leHBlY3RlZC50eHQ6IFJlYmFzZWxpbmUKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS9pbWFnZS1saW5rLWV4cGVjdGVkLnR4dDogUmViYXNlbGluZQor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2ludGVybmFsLWxpbmstYW5jaG9y
czItZXhwZWN0ZWQudHh0OiBSZWJhc2VsaW5lCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvc3RhdGljLXRleHQtcm9sZS11c2VzLXRleHQtdW5kZXItZWxlbWVudC1leHBlY3Rl
ZC50eHQ6IFJlYmFzZWxpbmUKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9z
dGF0aWMtdGV4dC1yb2xlLXVzZXMtdGV4dC11bmRlci1lbGVtZW50Lmh0bWw6IEZpeAorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtYXJpYS1yb2xlLWV4cGVj
dGVkLnR4dDogUmViYXNlbGluZQorCiAyMDEyLTEyLTEyICBTaGlueWEgS2F3YW5ha2EgIDxzaGlu
eWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbU2hhZG93IERPTV0gSW1wbGVtZW50IEhUTUxT
aGFkb3dFbGVtZW50OjpvbGRlclNoYWRvd1Jvb3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvYnV0dG9uLXRpdGxlLXVzZXMtaW5uZXItaW1nLWFsdC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2J1dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1h
bHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4MzY3YTc3MTgxNzI1NjFjOGZmMThmNDhjZGE1
YjRkZGJkODE1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2J1dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1hbHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTIgQEAKK0J1dHRvbiB3aXRoIGltYWdlIG9mIAorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBh
IGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdl
dHMgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLi4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBidXR0b24gaXMg
dHJ1ZQorUEFTUyBheEJ1dHRvbi50aXRsZS5pbmRleE9mKCdCdXR0b24gd2l0aCBpbWFnZSBvZiBj
YWtlJykgPj0gMCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9idXR0
b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2J1dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1hbHQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWEy
NGU4M2U5MGU0NWE2NDc3OWYwZTNmZDIxM2U1OTFkNmJlNWM5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9idXR0b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0
Lmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKworPHN0eWxlPgorYnV0dG9uIHsKKyAgcGFkZGluZzogMzBweDsKK30KKzwvc3R5bGU+CisK
KzxidXR0b24gaWQ9ImNha2UiPkJ1dHRvbiB3aXRoIGltYWdlIG9mIDxpbWcgYWx0PSJjYWtlIiBz
cmM9InJlc291cmNlcy9jYWtlLnBuZyIgd2lkdGg9IjQwcHgiPjwvYnV0dG9uPgorCis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2Vz
IHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkg
Zm9jdXMgYW5kIGdldHMgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLi4iKTsKKwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
eworICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciBidXR0b24g
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FrZScpOworICAgIGJ1dHRvbi5mb2N1cygpOwor
ICAgIHNob3VsZEJlKCJkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGJ1dHRvbiIsICJ0cnVlIik7
CisgICAgd2luZG93LmF4QnV0dG9uID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQ7CisgICAgc2hvdWxkQmUoImF4QnV0dG9uLnRpdGxlLmluZGV4T2YoJ0J1dHRvbiB3aXRo
IGltYWdlIG9mIGNha2UnKSA+PSAwIiwgInRydWUiKTsKK30KKworPC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9m
b2N1c2FibGUtZGl2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9j
dXNhYmxlLWRpdi1leHBlY3RlZC50eHQKaW5kZXggZDM4NDQyNjAwZGM0ZjIzNzc3NWZkYmJlZGM2
ZTQ5Mzc3OWQ4YjZkMi4uZGM0ODAzOGQ2NGE4YmU1YmY0MjNjNzY5NThjM2M4NTI0MmYwNWRhNyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ZvY3VzYWJsZS1kaXYtZXhw
ZWN0ZWQudHh0CkBAIC0xLDcgKzEsMTIgQEAKIEEKIEIKIEMKLVRoaXMgdGVzdCBtYWtlcyBzdXJl
IHRoYXQgYSBnZW5lcmljIGZvY3VzYWJsZSBkaXYgY2FuIGdldCBhY2Nlc3NpYmlsaXR5IGZvY3Vz
LgorTGluaworSW5pdGlhbCB0ZXh0IGJlZm9yZSBsaW5rTGluaworTGlzdCBpdGVtCitJbml0aWFs
IHRleHQgYmVmb3JlIGxpc3QKK0xpc3QgaXRlbQorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBh
IGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdl
dHMgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLi4KIAogT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgogCkBAIC0xNCw2ICsxOSwxNiBAQCBQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQgPT0gZGl2MiBpcyB0cnVlCiBQQVNTIGxhc3RDaGFyKGF4RGl2Mi50aXRsZSkgaXMgIkMiCiBQ
QVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZGl2MyBpcyB0cnVlCiBQQVNTIGxhc3RDaGFy
KGF4RGl2My5kZXNjcmlwdGlvbikgaXMgIkQiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQg
PT0gZGl2NCBpcyB0cnVlCitQQVNTIGF4RGl2NC50aXRsZS5pbmRleE9mKCdMaW5rJykgaXMgLTEK
K1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkaXY1IGlzIHRydWUKK1BBU1MgYXhEaXY1
LnRpdGxlLmluZGV4T2YoJ0xpbmsnKSBpcyAtMQorUEFTUyBheERpdjUudGl0bGUuaW5kZXhPZign
SW5pdGlhbCB0ZXh0IGJlZm9yZSBsaW5rJykgPj0gMCBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmFj
dGl2ZUVsZW1lbnQgPT0gZGl2NiBpcyB0cnVlCitQQVNTIGF4RGl2Ni50aXRsZS5pbmRleE9mKCdM
aXN0IGl0ZW0nKSBpcyAtMQorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjcgaXMg
dHJ1ZQorUEFTUyBheERpdjcudGl0bGUuaW5kZXhPZignTGlzdCBpdGVtJykgaXMgLTEKK1BBU1Mg
YXhEaXY3LnRpdGxlLmluZGV4T2YoJ0luaXRpYWwgdGV4dCBiZWZvcmUgbGlzdCcpID49IDAgaXMg
dHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ZvY3VzYWJsZS1kaXYuaHRtbCBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi5odG1sCmluZGV4IGFkZmZm
YmY0M2I5ZjI3YzFlMWI1OWYyM2RiMzM0YmEzOGMwZDkwZTAuLjIwOWQyYTQ2ZDhhYzM3YjQxYmY1
M2QyMDk4MDg0MTAxY2ViMzk1N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvZm9jdXNhYmxlLWRpdi5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9j
dXNhYmxlLWRpdi5odG1sCkBAIC0zLDE0ICszLDIzIEBACiA8Ym9keT4KIDxzY3JpcHQgc3JjPSIu
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiAKKzwhLS0gQSBs
aW5rIGFsd2F5cyBnZXRzIGl0cyBhY2Nlc3NpYmxlIHRleHQgZnJvbSBjb250ZW50cy4gLS0+CiA8
YSBpZD0ibGluayIgaHJlZj0iIyI+QTwvYT4KKworPCEtLSBBIGdlbmVyaWMgZm9jdXNhYmxlIGRp
diBzaG91bGQgYWxzbyBnZXQgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLiAtLT4K
IDxkaXYgaWQ9ImRpdiIgdGFiaW5kZXg9IjAiPkI8L2Rpdj4KIDxkaXYgaWQ9ImRpdjIiIHRhYmlu
ZGV4PSIwIj48ZGl2PjwvZGl2PkM8L2Rpdj4KIDxkaXYgaWQ9ImRpdjMiIHRhYmluZGV4PSIwIiBh
cmlhLWxhYmVsPSJEIj48L2Rpdj4KIAorPCEtLSBBIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBzaG91
bGQgbm90IGdldCBhY2Nlc3NpYmxlIHRleHQgZnJvbSBjaGlsZHJlbiB0aGF0IGFyZSBmb2N1c2Fi
bGUgb3IgY29udGFpbmVycy4gLS0+Cis8ZGl2IGlkPSJkaXY0IiB0YWJpbmRleD0iMCI+PGEgaHJl
Zj0iIyI+TGluazwvYT48L2Rpdj4KKzxkaXYgaWQ9ImRpdjUiIHRhYmluZGV4PSIwIj5Jbml0aWFs
IHRleHQgYmVmb3JlIGxpbms8YSBocmVmPSIjIj5MaW5rPC9hPjwvZGl2PgorPGRpdiBpZD0iZGl2
NiIgdGFiaW5kZXg9IjAiPjx1bD48bGk+TGlzdCBpdGVtPC9saT48L3VsPjwvZGl2PgorPGRpdiBp
ZD0iZGl2NyIgdGFiaW5kZXg9IjAiPkluaXRpYWwgdGV4dCBiZWZvcmUgbGlzdDx1bD48bGk+TGlz
dCBpdGVtPC9saT48L3VsPjwvZGl2PgorCiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3Jp
cHQ+Ci1kZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9j
dXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMuIik7CitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0
IGFjY2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdldHMgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNv
bnRlbnRzLi4iKTsKIAogaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgewogICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKQEAg
LTQyLDYgKzUxLDMyIEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIpIHsKICAgICBzaG91bGRCZSgiZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9
PSBkaXYzIiwgInRydWUiKTsKICAgICB3aW5kb3cuYXhEaXYzID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQ7CiAgICAgc2hvdWxkQmUoImxhc3RDaGFyKGF4RGl2My5kZXNj
cmlwdGlvbikiLCAiXCJEXCIiKTsKKworICAgIHZhciBkaXY0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2RpdjQnKTsKKyAgICBkaXY0LmZvY3VzKCk7CisgICAgc2hvdWxkQmUoImRvY3VtZW50
LmFjdGl2ZUVsZW1lbnQgPT0gZGl2NCIsICJ0cnVlIik7CisgICAgd2luZG93LmF4RGl2NCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIHNob3VsZEJlKCJheERp
djQudGl0bGUuaW5kZXhPZignTGluaycpIiwgIi0xIik7CisKKyAgICB2YXIgZGl2NSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdkaXY1Jyk7CisgICAgZGl2NS5mb2N1cygpOworICAgIHNob3Vs
ZEJlKCJkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjUiLCAidHJ1ZSIpOworICAgIHdpbmRv
dy5heERpdjUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBz
aG91bGRCZSgiYXhEaXY1LnRpdGxlLmluZGV4T2YoJ0xpbmsnKSIsICItMSIpOworICAgIHNob3Vs
ZEJlKCJheERpdjUudGl0bGUuaW5kZXhPZignSW5pdGlhbCB0ZXh0IGJlZm9yZSBsaW5rJykgPj0g
MCIsICJ0cnVlIik7CisKKyAgICB2YXIgZGl2NiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdk
aXY2Jyk7CisgICAgZGl2Ni5mb2N1cygpOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5hY3RpdmVF
bGVtZW50ID09IGRpdjYiLCAidHJ1ZSIpOworICAgIHdpbmRvdy5heERpdjYgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBzaG91bGRCZSgiYXhEaXY2LnRpdGxl
LmluZGV4T2YoJ0xpc3QgaXRlbScpIiwgIi0xIik7CisKKyAgICB2YXIgZGl2NyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdkaXY3Jyk7CisgICAgZGl2Ny5mb2N1cygpOworICAgIHNob3VsZEJl
KCJkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjciLCAidHJ1ZSIpOworICAgIHdpbmRvdy5h
eERpdjcgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBzaG91
bGRCZSgiYXhEaXY3LnRpdGxlLmluZGV4T2YoJ0xpc3QgaXRlbScpIiwgIi0xIik7CisgICAgc2hv
dWxkQmUoImF4RGl2Ny50aXRsZS5pbmRleE9mKCdJbml0aWFsIHRleHQgYmVmb3JlIGxpc3QnKSA+
PSAwIiwgInRydWUiKTsKIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA0NmM2YTI3NTViNTEwMjIwMjdjZTk1Zjdl
MjJmOGU0NDlhZGFjNjU4Li4xZWE3Yzc2ZThjZDQwYmMwODc5MDIyNzkzY2I5ZWEwNTU3M2ZhYjYz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTEzOTQsNyArMTM5NCw2IEBAIGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2FyaWEt
dXNlZC1vbi1pbWFnZS1tYXBzLmh0bWwgWyBTa2lwIF0KIGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3Np
YmlsaXR5L2RlbGV0aW5nLWlmcmFtZS1kZXN0cm95cy1heGNhY2hlLmh0bWwgWyBTa2lwIF0KIGNy
YnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2RvY3VtZW50LWF0dHJpYnV0ZXMuaHRtbCBbIFNr
aXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvaWZyYW1lLWJhc3RhcmRpemF0aW9u
Lmh0bWwgWyBTa2lwIF0KLWNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2ltYWdlLWxpbmsu
aHRtbCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvaW1hZ2UtbWFwLXVw
ZGF0ZS1wYXJlbnQtY3Jhc2guaHRtbCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2li
aWxpdHkvaW1hZ2UtbWFwMi5odG1sIFsgU2tpcCBdCiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJp
bGl0eS9pbnRlcm5hbC1saW5rLWFuY2hvcnMyLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbGluay1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2lt
YWdlLWxpbmstZXhwZWN0ZWQudHh0CmluZGV4IGExY2Q5MGJlYzMzZjhhZjFkYTkwOTRmNjQ3N2Rm
MDRlNDIwOWRjNGMuLjkzMWRiYmJjZGVmMDEyYTYyZWJlNjY2MGY4OTJhMzc4ZmIwNmFlOTAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaW1h
Z2UtbGluay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS9pbWFnZS1saW5rLWV4cGVjdGVkLnR4dApAQCAtMyw1NSArMywxMyBAQCBJ
bWFnZSBsaW5rIGluIHRoZSBwcmVzZW5jZSBvZiBpbmxpbmUgY29udGludWF0aW9ucwogVGhpcyB0
ZXN0IGNoZWNrcyB0aGF0IHRoZSByaWdodCBhY2Nlc3NpYmlsaXR5IHRyZWUgaXMgZ2VuZXJhdGVk
IGZvciBhIGxpbmsgaW5zaWRlIGFuIGltYWdlCiAKIAorQVhUaXRsZTogRGVsaWNpb3VzIGNha2UK
IEFYUm9sZTogQVhMaW5rCi1BWFN1YnJvbGU6IChudWxsKQotQVhSb2xlRGVzY3JpcHRpb246IGxp
bmsKLUFYQ2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDE+Ci1BWEhlbHA6IAotQVhQYXJlbnQ6IDxB
WExpbms+Ci1BWFNpemU6IE5TU2l6ZTogezI4MCwgMjEzfQotQVhUaXRsZTogCiBBWERlc2NyaXB0
aW9uOiAKLUFYVmFsdWU6IAotQVhGb2N1c2VkOiAxCi1BWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8
QVhMaW5rPgotQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1h
cmtlcjogPEFYTGluaz4KLUFYRW5kVGV4dE1hcmtlcjogPEFYTGluaz4KLUFYVmlzaXRlZDogMAot
QVhMaW5rZWRVSUVsZW1lbnRzOiAobnVsbCkKLUFYU2VsZWN0ZWQ6IDAKLUFYQmxvY2tRdW90ZUxl
dmVsOiAwCi1BWFRvcExldmVsVUlFbGVtZW50OiA8QVhMaW5rPgotQVhVUkw6IGh0dHA6Ly93d3cu
d293aGVhZC5jb20vP2l0ZW09MzM5MjQKLUFYQWNjZXNzS2V5OiAobnVsbCkKLQogCiBDaGlsZCAw
OgotQVhSb2xlOiBBWEltYWdlCi1BWFN1YnJvbGU6IChudWxsKQotQVhSb2xlRGVzY3JpcHRpb246
IGltYWdlCi1BWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAwPgotQVhIZWxwOiAKLUFYUGFyZW50
OiA8QVhJbWFnZT4KLUFYU2l6ZTogTlNTaXplOiB7MjgwLCAyMDl9CiBBWFRpdGxlOiAKK0FYUm9s
ZTogQVhJbWFnZQogQVhEZXNjcmlwdGlvbjogRGVsaWNpb3VzIGNha2UKLUFYVmFsdWU6IAotQVhG
b2N1c2VkOiAwCi1BWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhJbWFnZT4KLUFYU2VsZWN0ZWRU
ZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRNYXJrZXI6IDxBWEltYWdlPgotQVhF
bmRUZXh0TWFya2VyOiA8QVhJbWFnZT4KLUFYVmlzaXRlZDogMAotQVhMaW5rZWRVSUVsZW1lbnRz
OiAobnVsbCkKLUFYU2VsZWN0ZWQ6IDAKLUFYQmxvY2tRdW90ZUxldmVsOiAwCi1BWFRvcExldmVs
VUlFbGVtZW50OiA8QVhJbWFnZT4KLUFYVVJMOiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Jl
c291cmNlcy9jYWtlLnBuZwotQVhBY2Nlc3NLZXk6IChudWxsKQotCiAKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbGluay1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9pbWFnZS1saW5r
LWV4cGVjdGVkLnR4dAppbmRleCBhMWNkOTBiZWMzM2Y4YWYxZGE5MDk0ZjY0NzdkZjA0ZTQyMDlk
YzRjLi5jY2QwNmQxYzUxYjM4NmY4NzlkNDlmZWY5OWJhZDY1OTJkODEwZjU5IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9pbWFnZS1saW5rLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9pbWFn
ZS1saW5rLWV4cGVjdGVkLnR4dApAQCAtOCwyMiArOCwyMiBAQCBBWFN1YnJvbGU6IChudWxsKQog
QVhSb2xlRGVzY3JpcHRpb246IGxpbmsKIEFYQ2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDE+CiBB
WEhlbHA6IAotQVhQYXJlbnQ6IDxBWExpbms+CitBWFBhcmVudDogPEFYTGluazogJ0RlbGljaW91
cyBjYWtlJz4KIEFYU2l6ZTogTlNTaXplOiB7MjgwLCAyMTN9Ci1BWFRpdGxlOiAKK0FYVGl0bGU6
IERlbGljaW91cyBjYWtlCiBBWERlc2NyaXB0aW9uOiAKIEFYVmFsdWU6IAogQVhGb2N1c2VkOiAx
CiBBWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhMaW5rPgorQVhXaW5kb3c6IDxBWExpbms6ICdE
ZWxpY2lvdXMgY2FrZSc+CiBBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3Rh
cnRUZXh0TWFya2VyOiA8QVhMaW5rPgotQVhFbmRUZXh0TWFya2VyOiA8QVhMaW5rPgorQVhTdGFy
dFRleHRNYXJrZXI6IDxBWExpbms6ICdEZWxpY2lvdXMgY2FrZSc+CitBWEVuZFRleHRNYXJrZXI6
IDxBWExpbms6ICdEZWxpY2lvdXMgY2FrZSc+CiBBWFZpc2l0ZWQ6IDAKIEFYTGlua2VkVUlFbGVt
ZW50czogKG51bGwpCiBBWFNlbGVjdGVkOiAwCiBBWEJsb2NrUXVvdGVMZXZlbDogMAotQVhUb3BM
ZXZlbFVJRWxlbWVudDogPEFYTGluaz4KK0FYVG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWExpbms6ICdE
ZWxpY2lvdXMgY2FrZSc+CiBBWFVSTDogaHR0cDovL3d3dy53b3doZWFkLmNvbS8/aXRlbT0zMzky
NAogQVhBY2Nlc3NLZXk6IChudWxsKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS9pbnRlcm5hbC1saW5rLWFuY2hvcnMyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2ludGVybmFsLWxpbmstYW5j
aG9yczItZXhwZWN0ZWQudHh0CmluZGV4IGRiNjVjZjk4ODg0MTc3ZDlmNTU2Y2ZkOWM3NDg0NGU1
ZjIzNDM2N2EuLmFhZThhOTk5MTg2YTUzZDAwOWY2MDZiOTQxYmMzNDdmZTMzNWQyNjMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2ludGVybmFsLWxp
bmstYW5jaG9yczItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L2ludGVybmFsLWxpbmstYW5jaG9yczItZXhwZWN0ZWQudHh0CkBAIC01LDIy
ICs1LDIyIEBAIEFYU3Vicm9sZTogKG51bGwpCiBBWFJvbGVEZXNjcmlwdGlvbjogaGVhZGluZwog
QVhDaGlsZHJlbjogPGFycmF5IG9mIHNpemUgND4KIEFYSGVscDogCi1BWFBhcmVudDogPEFYSGVh
ZGluZzogJ1tlZGl0XSBUb3VyZXR0ZSBzeW5kcm9tZSc+CitBWFBhcmVudDogPEFYSGVhZGluZzog
J1tdIFRvdXJldHRlIHN5bmRyb21lJz4KIEFYU2l6ZTogTlNTaXplOiB7NzY5LCAyMn0KLUFYVGl0
bGU6IFtlZGl0XSBUb3VyZXR0ZSBzeW5kcm9tZQorQVhUaXRsZTogW10gVG91cmV0dGUgc3luZHJv
bWUKIEFYRGVzY3JpcHRpb246IAogQVhWYWx1ZTogMwogQVhGb2N1c2VkOiAwCiBBWEVuYWJsZWQ6
IDEKLUFYV2luZG93OiA8QVhIZWFkaW5nOiAnW2VkaXRdIFRvdXJldHRlIHN5bmRyb21lJz4KK0FY
V2luZG93OiA8QVhIZWFkaW5nOiAnW10gVG91cmV0dGUgc3luZHJvbWUnPgogQVhTZWxlY3RlZFRl
eHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogPEFYSGVhZGluZzogJ1tl
ZGl0XSBUb3VyZXR0ZSBzeW5kcm9tZSc+Ci1BWEVuZFRleHRNYXJrZXI6IDxBWEhlYWRpbmc6ICdb
ZWRpdF0gVG91cmV0dGUgc3luZHJvbWUnPgorQVhTdGFydFRleHRNYXJrZXI6IDxBWEhlYWRpbmc6
ICdbXSBUb3VyZXR0ZSBzeW5kcm9tZSc+CitBWEVuZFRleHRNYXJrZXI6IDxBWEhlYWRpbmc6ICdb
XSBUb3VyZXR0ZSBzeW5kcm9tZSc+CiBBWFZpc2l0ZWQ6IDAKIEFYTGlua2VkVUlFbGVtZW50czog
KG51bGwpCiBBWFNlbGVjdGVkOiAwCiBBWEJsb2NrUXVvdGVMZXZlbDogMAotQVhUb3BMZXZlbFVJ
RWxlbWVudDogPEFYSGVhZGluZzogJ1tlZGl0XSBUb3VyZXR0ZSBzeW5kcm9tZSc+CitBWFRvcExl
dmVsVUlFbGVtZW50OiA8QVhIZWFkaW5nOiAnW10gVG91cmV0dGUgc3luZHJvbWUnPgogCiAtLS0t
LS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvc3RhdGljLXRleHQtcm9sZS11c2VzLXRleHQtdW5kZXItZWxlbWVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGF0aWMtdGV4dC1y
b2xlLXVzZXMtdGV4dC11bmRlci1lbGVtZW50LWV4cGVjdGVkLnR4dAppbmRleCBkMGI3YzU2M2Rj
NGVhNzdlMGVmZjI5MmI3ZmYwYWMxMTRlY2YxNDQyLi41NWVjZTdhZjAzNjlhNTQ5NjhkNzk1NTZl
ZTY1MGJlNDk3ZjQwMmNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS9zdGF0aWMtdGV4dC1yb2xlLXVzZXMtdGV4dC11bmRlci1lbGVtZW50LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGF0
aWMtdGV4dC1yb2xlLXVzZXMtdGV4dC11bmRlci1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtNCw3
ICs0LDcgQEAgVGhpcyB0ZXN0cyB0aGF0IGlmIGFuIGVsZW1lbnQgdXNlcyB0aGUgJ3RleHQnIHJv
bGUgYnV0IGRvZXMgbm90IHVzZSBhbiBhcmlhLWxhYmUKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KIAogCi1QQVNTIHRleHQuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IFRleHQgMSBUZXh0IDIg
VGV4dCAzJworUEFTUyB0ZXh0LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiAgIFRleHQgMycKIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3RhdGljLXRleHQtcm9s
ZS11c2VzLXRleHQtdW5kZXItZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvc3RhdGljLXRleHQtcm9sZS11c2VzLXRleHQtdW5kZXItZWxlbWVudC5o
dG1sCmluZGV4IGZmZjFiMGFmZmQ1OTk3M2M4YmE0NGIxOGU5ZGVhMzU3MTczNzA2ZWMuLjdiNTI4
ZGQzM2VmYTM5NjZmMGVlOTdjMGJjNjI1OWY3ZjFmNzEwMDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N0YXRpYy10ZXh0LXJvbGUtdXNlcy10ZXh0
LXVuZGVyLWVsZW1lbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS9zdGF0aWMtdGV4dC1yb2xlLXVzZXMtdGV4dC11bmRlci1lbGVtZW50Lmh0bWwKQEAg
LTI2LDcgKzI2LDcgQEAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgIGlmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRleHQxIikuZm9jdXMoKTsKICAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nVmFsdWUi
LCAiJ0FYVmFsdWU6IFRleHQgMSBUZXh0IDIgVGV4dCAzJyIpOworICAgICAgICBzaG91bGRCZSgi
dGV4dC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogICBUZXh0IDMnIik7CiAgICAgfQogCiA8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L3RhYmxlLXdpdGgtYXJpYS1yb2xlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtYXJpYS1yb2xlLWV4cGVjdGVkLnR4dAppbmRl
eCBlNjZiZGI5M2QwNWFlOGJiMDgwZTEyY2Y1NTk1YTBmZjhiMmJkNTRhLi5kMzE4ZTBlMjE3ODRh
NjlkZTgzZTU5MmJiMTg1Zjg3ZmEzZjAzZGNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWFyaWEtcm9sZS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1h
cmlhLXJvbGUtZXhwZWN0ZWQudHh0CkBAIC03LDMzICs3LDIxIEBAIEFYU3Vicm9sZTogKG51bGwp
CiBBWFJvbGVEZXNjcmlwdGlvbjogYnV0dG9uCiBBWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAw
PgogQVhIZWxwOiAKLUFYUGFyZW50OiA8QVhCdXR0b246ICd0ZXN0CXRlc3QJdGVzdAotdGVzdAl0
ZXN0CXRlc3QKLSc+CitBWFBhcmVudDogPEFYQnV0dG9uOiAndGVzdHRlc3R0ZXN0dGVzdHRlc3R0
ZXN0Jz4KIEFYU2l6ZTogTlNTaXplOiB7ODUsIDUyfQotQVhUaXRsZTogdGVzdAl0ZXN0CXRlc3QK
LXRlc3QJdGVzdAl0ZXN0Ci0KK0FYVGl0bGU6IHRlc3R0ZXN0dGVzdHRlc3R0ZXN0dGVzdAogQVhE
ZXNjcmlwdGlvbjogCiBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQotQVhXaW5kb3c6IDxBWEJ1
dHRvbjogJ3Rlc3QJdGVzdAl0ZXN0Ci10ZXN0CXRlc3QJdGVzdAotJz4KK0FYV2luZG93OiA8QVhC
dXR0b246ICd0ZXN0dGVzdHRlc3R0ZXN0dGVzdHRlc3QnPgogQVhTZWxlY3RlZFRleHRNYXJrZXJS
YW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogPEFYQnV0dG9uOiAndGVzdAl0ZXN0CXRl
c3QKLXRlc3QJdGVzdAl0ZXN0Ci0nPgotQVhFbmRUZXh0TWFya2VyOiA8QVhCdXR0b246ICd0ZXN0
CXRlc3QJdGVzdAotdGVzdAl0ZXN0CXRlc3QKLSc+CitBWFN0YXJ0VGV4dE1hcmtlcjogPEFYQnV0
dG9uOiAndGVzdHRlc3R0ZXN0dGVzdHRlc3R0ZXN0Jz4KK0FYRW5kVGV4dE1hcmtlcjogPEFYQnV0
dG9uOiAndGVzdHRlc3R0ZXN0dGVzdHRlc3R0ZXN0Jz4KIEFYVmlzaXRlZDogMAogQVhMaW5rZWRV
SUVsZW1lbnRzOiAobnVsbCkKIEFYU2VsZWN0ZWQ6IDAKIEFYQmxvY2tRdW90ZUxldmVsOiAwCi1B
WFRvcExldmVsVUlFbGVtZW50OiA8QVhCdXR0b246ICd0ZXN0CXRlc3QJdGVzdAotdGVzdAl0ZXN0
CXRlc3QKLSc+CitBWFRvcExldmVsVUlFbGVtZW50OiA8QVhCdXR0b246ICd0ZXN0dGVzdHRlc3R0
ZXN0dGVzdHRlc3QnPgogQVhUaXRsZVVJRWxlbWVudDogKG51bGwpCiBBWEFjY2Vzc0tleTogKG51
bGwpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179095</attachid>
            <date>2012-12-12 11:48:41 -0800</date>
            <delta_ts>2012-12-12 13:09:49 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-101650-20121212114602.patch</filename>
            <type>text/plain</type>
            <size>23250</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFmOTk4MTA0NzM1Mzg1
N2EzMjQ5NTA3MDA5Y2FiYmIwNzQ1OWFkNC4uYWRlMmViNDZhODMwYjU3Mzk3Y2UzZWRlNTM3ODVk
ZTZmZmVhYWEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEyLTEyICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiB0ZXh0VW5k
ZXJFbGVtZW50IHNob3VsZCBjb25zaWRlciBhbHQgdGV4dCwgYnV0IHNraXAgbGlua3MgYW5kIGNv
bnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDE2NTAKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICBH
ZXR0aW5nIGlubmVyIHRleHQgZnJvbSBhbiBlbGVtZW50IG5vdyBpZ25vcmVzIGZvY3VzYWJsZSBk
ZXNjZW5kYW50cyBhbmQKKyAgICAgICAgY29udGFpbmVycywgYnV0IHVzZXMgYWx0ZXJuYXRpdmUg
dGV4dC4KKworICAgICAgICBUaGUgY29tcHV0YXRpb24gb2YgdGV4dFVuZGVyRWxlbWVudCBpcyBu
b3cgcmVjdXJzaXZlLiBUaGlzIGNhdXNlZCBhIGNyYXNoCisgICAgICAgIGlmIGl0IHdhcyBjYWxs
ZWQgYnkgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCBkdXJpbmcgb2JqZWN0IGRlc3RydWN0aW9uLAor
ICAgICAgICBzbyBJIHNpbXBsaWZpZWQgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCB0byBub3QgYWN0
dWFsbHkgY2FsbCB0ZXh0VW5kZXJFbGVtZW50LAorICAgICAgICB3aXRob3V0IGFmZmVjdGluZyB0
ZXN0IHJlc3VsdHMsIHdoaWNoIHNob3VsZCBhY3R1YWxseSBiZSBhIGRlY2VudCBzcGVlZHVwLgor
CisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvYnV0dG9uLXRpdGxlLXVzZXMtaW5uZXItaW1n
LWFsdC5odG1sCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi5odG1s
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVXNlQWNjZXNzaWJs
aXR5T2JqZWN0SW5uZXJUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCk6CisKIDIwMTItMTItMTIgIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYiBpbnNwZWN0b3Ig
cHJpbnRzIGEgd2FybmluZyBhYm91dCAiRGVidWciIG5vdCBiZWluZyBsb2NhbGl6ZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdC5jcHAKaW5kZXggMGU1Yzk3ODZiNGIwNzI0YjVjMTIxMDk4ZTkzNzEwYjQ1ZjVkOTliNC4u
MDhhMGQ3YjZjMmM1NGM0YWMwNGMzY2ZlMDlhMTc2MTkxNmVlODQ1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5j
cHAKQEAgLTE0MzQsMjAgKzE0MzQsNjIgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QKICAgICByZXR1cm4gbGV2ZWw7CiB9CiAKKy8v
IFdoZW4gYnVpbGRpbmcgdGhlIHRleHRVbmRlckVsZW1lbnQgZm9yIGFuIG9iamVjdCwgZGV0ZXJt
aW5lIHdoZXRoZXIgb3Igbm90CisvLyB3ZSBzaG91bGQgaW5jbHVkZSB0aGUgaW5uZXIgdGV4dCBv
ZiB0aGlzIGdpdmVuIGRlc2NlbmRhbnQgb2JqZWN0IG9yIHNraXAgaXQuCitzdGF0aWMgYm9vbCBz
aG91bGRVc2VBY2Nlc3NpYmxpdHlPYmplY3RJbm5lclRleHQoQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqKQoreworICAgIC8vIENvbnNpZGVyIHRoaXMgaHlwb3RoZXRpY2FsIGV4YW1wbGU6CisgICAg
Ly8gPGRpdiB0YWJpbmRleD0wPgorICAgIC8vICAgPGgyPgorICAgIC8vICAgICBUYWJsZSBvZiBj
b250ZW50cworICAgIC8vICAgPC9oMj4KKyAgICAvLyAgIDxhIGhyZWY9IiNzdGFydCI+SnVtcCB0
byBzdGFydCBvZiBib29rPC9hPgorICAgIC8vICAgPHVsPgorICAgIC8vICAgICA8bGk+PGEgaHJl
Zj0iIzEiPkNoYXB0ZXIgMTwvYT48L2xpPgorICAgIC8vICAgICA8bGk+PGEgaHJlZj0iIzEiPkNo
YXB0ZXIgMjwvYT48L2xpPgorICAgIC8vICAgPC91bD4KKyAgICAvLyA8L2Rpdj4KKyAgICAvLwor
ICAgIC8vIFRoZSBnb2FsIGlzIHRvIHJldHVybiBhIHJlYXNvbmFibGUgdGl0bGUgZm9yIHRoZSBv
dXRlciBjb250YWluZXIgZGl2LCBiZWNhdXNlCisgICAgLy8gaXQncyBmb2N1c2FibGUgLSBidXQg
d2l0aG91dCBtYWtpbmcgaXRzIHRpdGxlIGJlIHRoZSBmdWxsIGlubmVyIHRleHQsIHdoaWNoIGlz
CisgICAgLy8gcXVpdGUgbG9uZy4gQXMgYSBoZXVyaXN0aWMsIHNraXAgbGlua3MsIGNvbnRyb2xz
LCBhbmQgZWxlbWVudHMgdGhhdCBhcmUgdXN1YWxseQorICAgIC8vIGNvbnRhaW5lcnMgd2l0aCBs
b3RzIG9mIGNoaWxkcmVuLgorCisgICAgLy8gU2tpcCBmb2N1c2FibGUgY2hpbGRyZW4sIHNvIHdl
IGRvbid0IGluY2x1ZGUgdGhlIHRleHQgb2YgbGlua3MgYW5kIGNvbnRyb2xzLgorICAgIGlmIChv
YmotPmNhblNldEZvY3VzQXR0cmlidXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIFNraXAgYmlnIGNvbnRhaW5lciBlbGVtZW50cyBsaWtlIGxpc3RzLCB0YWJsZXMsIGV0Yy4K
KyAgICBpZiAob2JqLT5pc0xpc3QoKSB8fCBvYmotPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgfHwg
b2JqLT5pc1RyZWUoKSB8fCBvYmotPmlzQ2FudmFzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiB0cnVlOworfQorCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OnRleHRVbmRlckVsZW1lbnQoKSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2Rl
KCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICAvLyBO
b3RlOiBUZXh0SXRlcmF0b3IgZG9lc24ndCByZXR1cm4gYW55IHRleHQgZm9yIG5vZGVzIHRoYXQg
ZG9uJ3QgaGF2ZSByZW5kZXJlcnMuCi0gICAgLy8gSWYgdGhpcyBjb3VsZCBiZSBmaXhlZCwgaXQn
ZCBiZSBtb3JlIGFjY3VyYXRlIHVzZSBUZXh0SXRlcmF0b3IgaGVyZS4KLSAgICBpZiAobm9kZS0+
aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpLT5pbm5lclRl
eHQoKTsKLSAgICBlbHNlIGlmIChub2RlLT5pc1RleHROb2RlKCkpCisgICAgaWYgKG5vZGUgJiYg
bm9kZS0+aXNUZXh0Tm9kZSgpKQogICAgICAgICByZXR1cm4gdG9UZXh0KG5vZGUpLT53aG9sZVRl
eHQoKTsKLSAgICAKLSAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBTdHJpbmcgcmVzdWx0Owor
ICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICghc2hvdWxkVXNl
QWNjZXNzaWJsaXR5T2JqZWN0SW5uZXJUZXh0KGNoaWxkKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGlmIChjaGlsZC0+aXNBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpKSB7Cisg
ICAgICAgICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+IHRleHRPcmRlcjsKKyAgICAgICAg
ICAgIHRvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoY2hpbGQpLT5hbHRlcm5hdGl2ZVRleHQodGV4
dE9yZGVyKTsKKyAgICAgICAgICAgIGlmICh0ZXh0T3JkZXIuc2l6ZSgpID4gMCkgeworICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQodGV4dE9yZGVyWzBdLnRleHQpOworICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0
LmFwcGVuZChjaGlsZC0+dGV4dFVuZGVyRWxlbWVudCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRpdGxlKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGFmNTY4NmFjZTBmNjAzNGMzNjkyODNjMTE3ZWZm
YTk4MjE0MTg5MDEuLjZkYjlkMzYxMGI1Zjc0ZDllODg3YjVhOGU0MzNmY2UxMzYxYWU5ZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtNjI0LDEyICs2MjQsMTAgQEAgU3RyaW5nIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQoKSBjb25zdAogewogICAgIGlmICgh
bV9yZW5kZXJlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIAorCiAgICAgaWYgKG1f
cmVuZGVyZXItPmlzRmlsZVVwbG9hZENvbnRyb2woKSkKICAgICAgICAgcmV0dXJuIHRvUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2wobV9yZW5kZXJlciktPmJ1dHRvblZhbHVlKCk7CiAgICAgCi0gICAg
Tm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKLQogI2lmIEVOQUJMRShNQVRITUwpCiAg
ICAgLy8gTWF0aCBvcGVyYXRvcnMgY3JlYXRlIFJlbmRlclRleHQgbm9kZXMgb24gdGhlIGZseSB0
aGF0IGFyZSBub3QgdGllZCBpbnRvIHRoZSBET00gaW4gYSByZWFzb25hYmxlIHdheSwKICAgICAv
LyBzbyByYW5nZU9mQ29udGVudHMgZG9lcyBub3Qgd29yayBmb3IgdGhlbSAobm9yIGRvZXMgcmVn
dWxhciB0ZXh0IHNlbGVjdGlvbikuCkBAIC02NDAsMjggKzYzOCwyOCBAQCBTdHJpbmcgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCgpIGNvbnN0CiAgICAgICAgIH0K
ICAgICB9CiAjZW5kaWYKLSAgICAKLSAgICBpZiAobm9kZSkgewotICAgICAgICBpZiAoRnJhbWUq
IGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewotICAgICAgICAgICAgLy8gY2F0
Y2ggc3RhbGUgV2ViQ29yZUFYT2JqZWN0IChzZWUgPHJkYXI6Ly9wcm9ibGVtLzM5NjAxOTY+KQot
ICAgICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICE9IG5vZGUtPmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgICAgICAgICByZXR1cm4gcGxh
aW5UZXh0KHJhbmdlT2ZDb250ZW50cyhub2RlKS5nZXQoKSwgdGV4dEl0ZXJhdG9yQmVoYXZpb3JG
b3JUZXh0UmFuZ2UoKSk7CisgICAgaWYgKG1fcmVuZGVyZXItPmlzVGV4dCgpKSB7CisgICAgICAg
IC8vIElmIHBvc3NpYmxlLCB1c2UgYSB0ZXh0IGl0ZXJhdG9yIHRvIGdldCB0aGUgdGV4dCwgc28g
dGhhdCB3aGl0ZXNwYWNlCisgICAgICAgIC8vIGlzIGhhbmRsZWQgY29uc2lzdGVudGx5LgorICAg
ICAgICBpZiAoTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKSkgeworICAgICAgICAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKKyAgICAgICAgICAgICAg
ICAvLyBjYXRjaCBzdGFsZSBXZWJDb3JlQVhPYmplY3QgKHNlZSA8cmRhcjovL3Byb2JsZW0vMzk2
MDE5Nj4pCisgICAgICAgICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICE9IG5vZGUtPmRv
Y3VtZW50KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgICAg
ICAgICAgICAgIHJldHVybiBwbGFpblRleHQocmFuZ2VPZkNvbnRlbnRzKG5vZGUpLmdldCgpLCB0
ZXh0SXRlcmF0b3JCZWhhdmlvckZvclRleHRSYW5nZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgIH0KICAgICAKLSAgICAvLyBTb21ldGltZXMgdGV4dCBmcmFnbWVudHMgZG9uJ3Qg
aGF2ZSBOb2RlJ3MgYXNzb2NpYXRlZCB3aXRoIHRoZW0gKGxpa2Ugd2hlbgotICAgIC8vIENTUyBj
b250ZW50IGlzIHVzZWQgdG8gaW5zZXJ0IHRleHQpLgotICAgIGlmIChtX3JlbmRlcmVyLT5pc1Rl
eHQoKSkgeworICAgICAgICAvLyBTb21ldGltZXMgdGV4dCBmcmFnbWVudHMgZG9uJ3QgaGF2ZSBO
b2RlcyBhc3NvY2lhdGVkIHdpdGggdGhlbSAobGlrZSB3aGVuCisgICAgICAgIC8vIENTUyBjb250
ZW50IGlzIHVzZWQgdG8gaW5zZXJ0IHRleHQpLgogICAgICAgICBSZW5kZXJUZXh0KiByZW5kZXJU
ZXh0T2JqZWN0ID0gdG9SZW5kZXJUZXh0KG1fcmVuZGVyZXIpOwogICAgICAgICBpZiAocmVuZGVy
VGV4dE9iamVjdC0+aXNUZXh0RnJhZ21lbnQoKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmco
c3RhdGljX2Nhc3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4obV9yZW5kZXJlciktPmNvbnRlbnRTdHJp
bmcoKSk7CiAgICAgfQogICAgIAotICAgIC8vIHJldHVybiB0aGUgbnVsbCBzdHJpbmcgZm9yIGFu
b255bW91cyB0ZXh0IGJlY2F1c2UgaXQgaXMgbm9uLXRyaXZpYWwgdG8gZ2V0Ci0gICAgLy8gdGhl
IGFjdHVhbCB0ZXh0IGFuZCwgc28gZmFyLCB0aGF0IGlzIG5vdCBuZWVkZWQKLSAgICByZXR1cm4g
U3RyaW5nKCk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0ZXh0VW5kZXJF
bGVtZW50KCk7CiB9CiAKIE5vZGUqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om5vZGUoKSBj
b25zdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGJhOGEwNzY5ZmQyYzg3ZDM2YjU1NjQyMTk4ZGY0MjQ3NWZlZmRjNDcuLjBm
Zjk3MTFhYTBiNmM5ZmNlMDMyZWZlODdmMjMzNjUzMzAwMTY0ZDIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NyBAQAorMjAxMi0xMi0xMiAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4K
KworICAgICAgICBBWDogdGV4dFVuZGVyRWxlbWVudCBzaG91bGQgY29uc2lkZXIgYWx0IHRleHQs
IGJ1dCBza2lwIGxpbmtzIGFuZCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNjUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMg
RmxlaXphY2guCisKKyAgICAgICAgQWRkcyBuZXcgdGVzdHMgdG8gc2hvdyB0aGF0IGdldHRpbmcg
aW5uZXIgdGV4dCBmcm9tIGFuIGVsZW1lbnQgbm93IGlnbm9yZXMKKyAgICAgICAgZm9jdXNhYmxl
IGRlc2NlbmRhbnRzIGFuZCBjb250YWluZXJzLCBidXQgdXNlcyBhbHRlcm5hdGl2ZSB0ZXh0Lgor
CisgICAgICAgIFVwZGF0ZXMgYW5kIHJlYmFzZWxpbmVzIHNldmVyYWwgdGVzdHMgdG8gcmVmbGVj
dCB0aGUgbmV3IGxvZ2ljLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9idXR0b24tdGl0bGUt
dXNlcy1pbm5lci1pbWctYWx0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9idXR0b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi1leHBlY3RlZC50eHQ6IEV4dGVuZGVk
IHdpdGggbW9yZSB0ZXN0IGNhc2VzLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZm9jdXNhYmxl
LWRpdi5odG1sOiBFeHRlbmRlZCB3aXRoIG1vcmUgdGVzdCBjYXNlcy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOiBVbi1za2lwIHRlc3QgdGhhdCBub3cgcGFz
c2VzLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbGlu
ay1leHBlY3RlZC50eHQ6IFJlYmFzZWxpbmUKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS9pbWFnZS1saW5rLWV4cGVjdGVkLnR4dDogUmViYXNlbGluZQorICAgICAgICAqIHBs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2ludGVybmFsLWxpbmstYW5jaG9yczItZXhwZWN0ZWQu
dHh0OiBSZWJhc2VsaW5lCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3Rh
dGljLXRleHQtcm9sZS11c2VzLXRleHQtdW5kZXItZWxlbWVudC1leHBlY3RlZC50eHQ6IFJlYmFz
ZWxpbmUKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGF0aWMtdGV4dC1y
b2xlLXVzZXMtdGV4dC11bmRlci1lbGVtZW50Lmh0bWw6IEZpeAorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtYXJpYS1yb2xlLWV4cGVjdGVkLnR4dDogUmVi
YXNlbGluZQorCiAyMDEyLTEyLTEyICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbU2hhZG93IERPTV0gSW1wbGVtZW50IEhUTUxTaGFkb3dFbGVtZW50
OjpvbGRlclNoYWRvd1Jvb3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
YnV0dG9uLXRpdGxlLXVzZXMtaW5uZXItaW1nLWFsdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2J1dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1hbHQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM4MzY3YTc3MTgxNzI1NjFjOGZmMThmNDhjZGE1YjRkZGJkODE1MzMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2J1dHRvbi10aXRs
ZS11c2VzLWlubmVyLWltZy1hbHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK0J1dHRv
biB3aXRoIGltYWdlIG9mIAorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9j
dXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdldHMgaXRzIGFjY2Vz
c2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBidXR0b24gaXMgdHJ1ZQorUEFTUyBh
eEJ1dHRvbi50aXRsZS5pbmRleE9mKCdCdXR0b24gd2l0aCBpbWFnZSBvZiBjYWtlJykgPj0gMCBp
cyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9idXR0b24tdGl0bGUtdXNl
cy1pbm5lci1pbWctYWx0Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2J1dHRvbi10
aXRsZS11c2VzLWlubmVyLWltZy1hbHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWEyNGU4M2U5MGU0NWE2
NDc3OWYwZTNmZDIxM2U1OTFkNmJlNWM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9idXR0b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0Lmh0bWwKQEAgLTAs
MCArMSwzMiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKworPHN0eWxl
PgorYnV0dG9uIHsKKyAgcGFkZGluZzogMzBweDsKK30KKzwvc3R5bGU+CisKKzxidXR0b24gaWQ9
ImNha2UiPkJ1dHRvbiB3aXRoIGltYWdlIG9mIDxpbWcgYWx0PSJjYWtlIiBzcmM9InJlc291cmNl
cy9jYWtlLnBuZyIgd2lkdGg9IjQwcHgiPjwvYnV0dG9uPgorCis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBh
IGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdl
dHMgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLi4iKTsKKworaWYgKHdpbmRvdy50
ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRv
dy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY2FrZScpOworICAgIGJ1dHRvbi5mb2N1cygpOworICAgIHNob3VsZEJl
KCJkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGJ1dHRvbiIsICJ0cnVlIik7CisgICAgd2luZG93
LmF4QnV0dG9uID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAg
c2hvdWxkQmUoImF4QnV0dG9uLnRpdGxlLmluZGV4T2YoJ0J1dHRvbiB3aXRoIGltYWdlIG9mIGNh
a2UnKSA+PSAwIiwgInRydWUiKTsKK30KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi1l
eHBlY3RlZC50eHQKaW5kZXggZDM4NDQyNjAwZGM0ZjIzNzc3NWZkYmJlZGM2ZTQ5Mzc3OWQ4YjZk
Mi4uZGM0ODAzOGQ2NGE4YmU1YmY0MjNjNzY5NThjM2M4NTI0MmYwNWRhNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ZvY3VzYWJsZS1kaXYtZXhwZWN0ZWQudHh0CkBA
IC0xLDcgKzEsMTIgQEAKIEEKIEIKIEMKLVRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgYSBnZW5l
cmljIGZvY3VzYWJsZSBkaXYgY2FuIGdldCBhY2Nlc3NpYmlsaXR5IGZvY3VzLgorTGluaworSW5p
dGlhbCB0ZXh0IGJlZm9yZSBsaW5rTGluaworTGlzdCBpdGVtCitJbml0aWFsIHRleHQgYmVmb3Jl
IGxpc3QKK0xpc3QgaXRlbQorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9j
dXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdldHMgaXRzIGFjY2Vz
c2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLi4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgog
CkBAIC0xNCw2ICsxOSwxNiBAQCBQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZGl2MiBp
cyB0cnVlCiBQQVNTIGxhc3RDaGFyKGF4RGl2Mi50aXRsZSkgaXMgIkMiCiBQQVNTIGRvY3VtZW50
LmFjdGl2ZUVsZW1lbnQgPT0gZGl2MyBpcyB0cnVlCiBQQVNTIGxhc3RDaGFyKGF4RGl2My5kZXNj
cmlwdGlvbikgaXMgIkQiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZGl2NCBpcyB0
cnVlCitQQVNTIGF4RGl2NC50aXRsZS5pbmRleE9mKCdMaW5rJykgaXMgLTEKK1BBU1MgZG9jdW1l
bnQuYWN0aXZlRWxlbWVudCA9PSBkaXY1IGlzIHRydWUKK1BBU1MgYXhEaXY1LnRpdGxlLmluZGV4
T2YoJ0xpbmsnKSBpcyAtMQorUEFTUyBheERpdjUudGl0bGUuaW5kZXhPZignSW5pdGlhbCB0ZXh0
IGJlZm9yZSBsaW5rJykgPj0gMCBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQg
PT0gZGl2NiBpcyB0cnVlCitQQVNTIGF4RGl2Ni50aXRsZS5pbmRleE9mKCdMaXN0IGl0ZW0nKSBp
cyAtMQorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjcgaXMgdHJ1ZQorUEFTUyBh
eERpdjcudGl0bGUuaW5kZXhPZignTGlzdCBpdGVtJykgaXMgLTEKK1BBU1MgYXhEaXY3LnRpdGxl
LmluZGV4T2YoJ0luaXRpYWwgdGV4dCBiZWZvcmUgbGlzdCcpID49IDAgaXMgdHJ1ZQogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ZvY3VzYWJsZS1kaXYuaHRtbCBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi5odG1sCmluZGV4IGFkZmZmYmY0M2I5ZjI3YzFl
MWI1OWYyM2RiMzM0YmEzOGMwZDkwZTAuLjIwOWQyYTQ2ZDhhYzM3YjQxYmY1M2QyMDk4MDg0MTAx
Y2ViMzk1N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNhYmxl
LWRpdi5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi5o
dG1sCkBAIC0zLDE0ICszLDIzIEBACiA8Ym9keT4KIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiAKKzwhLS0gQSBsaW5rIGFsd2F5cyBn
ZXRzIGl0cyBhY2Nlc3NpYmxlIHRleHQgZnJvbSBjb250ZW50cy4gLS0+CiA8YSBpZD0ibGluayIg
aHJlZj0iIyI+QTwvYT4KKworPCEtLSBBIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBzaG91bGQgYWxz
byBnZXQgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLiAtLT4KIDxkaXYgaWQ9ImRp
diIgdGFiaW5kZXg9IjAiPkI8L2Rpdj4KIDxkaXYgaWQ9ImRpdjIiIHRhYmluZGV4PSIwIj48ZGl2
PjwvZGl2PkM8L2Rpdj4KIDxkaXYgaWQ9ImRpdjMiIHRhYmluZGV4PSIwIiBhcmlhLWxhYmVsPSJE
Ij48L2Rpdj4KIAorPCEtLSBBIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBzaG91bGQgbm90IGdldCBh
Y2Nlc3NpYmxlIHRleHQgZnJvbSBjaGlsZHJlbiB0aGF0IGFyZSBmb2N1c2FibGUgb3IgY29udGFp
bmVycy4gLS0+Cis8ZGl2IGlkPSJkaXY0IiB0YWJpbmRleD0iMCI+PGEgaHJlZj0iIyI+TGluazwv
YT48L2Rpdj4KKzxkaXYgaWQ9ImRpdjUiIHRhYmluZGV4PSIwIj5Jbml0aWFsIHRleHQgYmVmb3Jl
IGxpbms8YSBocmVmPSIjIj5MaW5rPC9hPjwvZGl2PgorPGRpdiBpZD0iZGl2NiIgdGFiaW5kZXg9
IjAiPjx1bD48bGk+TGlzdCBpdGVtPC9saT48L3VsPjwvZGl2PgorPGRpdiBpZD0iZGl2NyIgdGFi
aW5kZXg9IjAiPkluaXRpYWwgdGV4dCBiZWZvcmUgbGlzdDx1bD48bGk+TGlzdCBpdGVtPC9saT48
L3VsPjwvZGl2PgorCiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+Ci1kZXNjcmlw
dGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBj
YW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMuIik7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1h
a2VzIHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxp
dHkgZm9jdXMgYW5kIGdldHMgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLi4iKTsK
IAogaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgewogICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKQEAgLTQyLDYgKzUxLDMy
IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpIHsKICAgICBzaG91bGRCZSgiZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkaXYzIiwgInRy
dWUiKTsKICAgICB3aW5kb3cuYXhEaXYzID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNl
ZEVsZW1lbnQ7CiAgICAgc2hvdWxkQmUoImxhc3RDaGFyKGF4RGl2My5kZXNjcmlwdGlvbikiLCAi
XCJEXCIiKTsKKworICAgIHZhciBkaXY0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdjQn
KTsKKyAgICBkaXY0LmZvY3VzKCk7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQgPT0gZGl2NCIsICJ0cnVlIik7CisgICAgd2luZG93LmF4RGl2NCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIHNob3VsZEJlKCJheERpdjQudGl0bGUuaW5k
ZXhPZignTGluaycpIiwgIi0xIik7CisKKyAgICB2YXIgZGl2NSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdkaXY1Jyk7CisgICAgZGl2NS5mb2N1cygpOworICAgIHNob3VsZEJlKCJkb2N1bWVu
dC5hY3RpdmVFbGVtZW50ID09IGRpdjUiLCAidHJ1ZSIpOworICAgIHdpbmRvdy5heERpdjUgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBzaG91bGRCZSgiYXhE
aXY1LnRpdGxlLmluZGV4T2YoJ0xpbmsnKSIsICItMSIpOworICAgIHNob3VsZEJlKCJheERpdjUu
dGl0bGUuaW5kZXhPZignSW5pdGlhbCB0ZXh0IGJlZm9yZSBsaW5rJykgPj0gMCIsICJ0cnVlIik7
CisKKyAgICB2YXIgZGl2NiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXY2Jyk7CisgICAg
ZGl2Ni5mb2N1cygpOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRp
djYiLCAidHJ1ZSIpOworICAgIHdpbmRvdy5heERpdjYgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5mb2N1c2VkRWxlbWVudDsKKyAgICBzaG91bGRCZSgiYXhEaXY2LnRpdGxlLmluZGV4T2YoJ0xp
c3QgaXRlbScpIiwgIi0xIik7CisKKyAgICB2YXIgZGl2NyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdkaXY3Jyk7CisgICAgZGl2Ny5mb2N1cygpOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5h
Y3RpdmVFbGVtZW50ID09IGRpdjciLCAidHJ1ZSIpOworICAgIHdpbmRvdy5heERpdjcgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBzaG91bGRCZSgiYXhEaXY3
LnRpdGxlLmluZGV4T2YoJ0xpc3QgaXRlbScpIiwgIi0xIik7CisgICAgc2hvdWxkQmUoImF4RGl2
Ny50aXRsZS5pbmRleE9mKCdJbml0aWFsIHRleHQgYmVmb3JlIGxpc3QnKSA+PSAwIiwgInRydWUi
KTsKIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVz
dEV4cGVjdGF0aW9ucwppbmRleCA0NmM2YTI3NTViNTEwMjIwMjdjZTk1ZjdlMjJmOGU0NDlhZGFj
NjU4Li4xZWE3Yzc2ZThjZDQwYmMwODc5MDIyNzkzY2I5ZWEwNTU3M2ZhYjYzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEzOTQsNyAr
MTM5NCw2IEBAIGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2FyaWEtdXNlZC1vbi1pbWFn
ZS1tYXBzLmh0bWwgWyBTa2lwIF0KIGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2RlbGV0
aW5nLWlmcmFtZS1kZXN0cm95cy1heGNhY2hlLmh0bWwgWyBTa2lwIF0KIGNyYnVnLmNvbS8xMDMy
MiBhY2Nlc3NpYmlsaXR5L2RvY3VtZW50LWF0dHJpYnV0ZXMuaHRtbCBbIFNraXAgXQogY3JidWcu
Y29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvaWZyYW1lLWJhc3RhcmRpemF0aW9uLmh0bWwgWyBTa2lw
IF0KLWNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2ltYWdlLWxpbmsuaHRtbCBbIFNraXAg
XQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvaW1hZ2UtbWFwLXVwZGF0ZS1wYXJlbnQt
Y3Jhc2guaHRtbCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvaW1hZ2Ut
bWFwMi5odG1sIFsgU2tpcCBdCiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0eS9pbnRlcm5h
bC1saW5rLWFuY2hvcnMyLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbGluay1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2ltYWdlLWxpbmstZXhw
ZWN0ZWQudHh0CmluZGV4IGExY2Q5MGJlYzMzZjhhZjFkYTkwOTRmNjQ3N2RmMDRlNDIwOWRjNGMu
LjkzMWRiYmJjZGVmMDEyYTYyZWJlNjY2MGY4OTJhMzc4ZmIwNmFlOTAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbGluay1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9pbWFnZS1saW5rLWV4cGVjdGVkLnR4dApAQCAtMyw1NSArMywxMyBAQCBJbWFnZSBsaW5rIGlu
IHRoZSBwcmVzZW5jZSBvZiBpbmxpbmUgY29udGludWF0aW9ucwogVGhpcyB0ZXN0IGNoZWNrcyB0
aGF0IHRoZSByaWdodCBhY2Nlc3NpYmlsaXR5IHRyZWUgaXMgZ2VuZXJhdGVkIGZvciBhIGxpbmsg
aW5zaWRlIGFuIGltYWdlCiAKIAorQVhUaXRsZTogRGVsaWNpb3VzIGNha2UKIEFYUm9sZTogQVhM
aW5rCi1BWFN1YnJvbGU6IChudWxsKQotQVhSb2xlRGVzY3JpcHRpb246IGxpbmsKLUFYQ2hpbGRy
ZW46IDxhcnJheSBvZiBzaXplIDE+Ci1BWEhlbHA6IAotQVhQYXJlbnQ6IDxBWExpbms+Ci1BWFNp
emU6IE5TU2l6ZTogezI4MCwgMjEzfQotQVhUaXRsZTogCiBBWERlc2NyaXB0aW9uOiAKLUFYVmFs
dWU6IAotQVhGb2N1c2VkOiAxCi1BWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhMaW5rPgotQVhT
ZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogPEFYTGlu
az4KLUFYRW5kVGV4dE1hcmtlcjogPEFYTGluaz4KLUFYVmlzaXRlZDogMAotQVhMaW5rZWRVSUVs
ZW1lbnRzOiAobnVsbCkKLUFYU2VsZWN0ZWQ6IDAKLUFYQmxvY2tRdW90ZUxldmVsOiAwCi1BWFRv
cExldmVsVUlFbGVtZW50OiA8QVhMaW5rPgotQVhVUkw6IGh0dHA6Ly93d3cud293aGVhZC5jb20v
P2l0ZW09MzM5MjQKLUFYQWNjZXNzS2V5OiAobnVsbCkKLQogCiBDaGlsZCAwOgotQVhSb2xlOiBB
WEltYWdlCi1BWFN1YnJvbGU6IChudWxsKQotQVhSb2xlRGVzY3JpcHRpb246IGltYWdlCi1BWENo
aWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAwPgotQVhIZWxwOiAKLUFYUGFyZW50OiA8QVhJbWFnZT4K
LUFYU2l6ZTogTlNTaXplOiB7MjgwLCAyMDl9CiBBWFRpdGxlOiAKK0FYUm9sZTogQVhJbWFnZQog
QVhEZXNjcmlwdGlvbjogRGVsaWNpb3VzIGNha2UKLUFYVmFsdWU6IAotQVhGb2N1c2VkOiAwCi1B
WEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhJbWFnZT4KLUFYU2VsZWN0ZWRUZXh0TWFya2VyUmFu
Z2U6IChudWxsKQotQVhTdGFydFRleHRNYXJrZXI6IDxBWEltYWdlPgotQVhFbmRUZXh0TWFya2Vy
OiA8QVhJbWFnZT4KLUFYVmlzaXRlZDogMAotQVhMaW5rZWRVSUVsZW1lbnRzOiAobnVsbCkKLUFY
U2VsZWN0ZWQ6IDAKLUFYQmxvY2tRdW90ZUxldmVsOiAwCi1BWFRvcExldmVsVUlFbGVtZW50OiA8
QVhJbWFnZT4KLUFYVVJMOiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Jlc291cmNlcy9jYWtl
LnBuZwotQVhBY2Nlc3NLZXk6IChudWxsKQotCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbGluay1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9pbWFnZS1saW5rLWV4cGVjdGVkLnR4
dAppbmRleCBhMWNkOTBiZWMzM2Y4YWYxZGE5MDk0ZjY0NzdkZjA0ZTQyMDlkYzRjLi5jY2QwNmQx
YzUxYjM4NmY4NzlkNDlmZWY5OWJhZDY1OTJkODEwZjU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9pbWFnZS1saW5rLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9pbWFnZS1saW5rLWV4cGVj
dGVkLnR4dApAQCAtOCwyMiArOCwyMiBAQCBBWFN1YnJvbGU6IChudWxsKQogQVhSb2xlRGVzY3Jp
cHRpb246IGxpbmsKIEFYQ2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDE+CiBBWEhlbHA6IAotQVhQ
YXJlbnQ6IDxBWExpbms+CitBWFBhcmVudDogPEFYTGluazogJ0RlbGljaW91cyBjYWtlJz4KIEFY
U2l6ZTogTlNTaXplOiB7MjgwLCAyMTN9Ci1BWFRpdGxlOiAKK0FYVGl0bGU6IERlbGljaW91cyBj
YWtlCiBBWERlc2NyaXB0aW9uOiAKIEFYVmFsdWU6IAogQVhGb2N1c2VkOiAxCiBBWEVuYWJsZWQ6
IDEKLUFYV2luZG93OiA8QVhMaW5rPgorQVhXaW5kb3c6IDxBWExpbms6ICdEZWxpY2lvdXMgY2Fr
ZSc+CiBBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2Vy
OiA8QVhMaW5rPgotQVhFbmRUZXh0TWFya2VyOiA8QVhMaW5rPgorQVhTdGFydFRleHRNYXJrZXI6
IDxBWExpbms6ICdEZWxpY2lvdXMgY2FrZSc+CitBWEVuZFRleHRNYXJrZXI6IDxBWExpbms6ICdE
ZWxpY2lvdXMgY2FrZSc+CiBBWFZpc2l0ZWQ6IDAKIEFYTGlua2VkVUlFbGVtZW50czogKG51bGwp
CiBBWFNlbGVjdGVkOiAwCiBBWEJsb2NrUXVvdGVMZXZlbDogMAotQVhUb3BMZXZlbFVJRWxlbWVu
dDogPEFYTGluaz4KK0FYVG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWExpbms6ICdEZWxpY2lvdXMgY2Fr
ZSc+CiBBWFVSTDogaHR0cDovL3d3dy53b3doZWFkLmNvbS8/aXRlbT0zMzkyNAogQVhBY2Nlc3NL
ZXk6IChudWxsKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS9pbnRlcm5hbC1saW5rLWFuY2hvcnMyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2ludGVybmFsLWxpbmstYW5jaG9yczItZXhwZWN0
ZWQudHh0CmluZGV4IGRiNjVjZjk4ODg0MTc3ZDlmNTU2Y2ZkOWM3NDg0NGU1ZjIzNDM2N2EuLmFh
ZThhOTk5MTg2YTUzZDAwOWY2MDZiOTQxYmMzNDdmZTMzNWQyNjMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2ludGVybmFsLWxpbmstYW5jaG9yczIt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L2ludGVybmFsLWxpbmstYW5jaG9yczItZXhwZWN0ZWQudHh0CkBAIC01LDIyICs1LDIyIEBAIEFY
U3Vicm9sZTogKG51bGwpCiBBWFJvbGVEZXNjcmlwdGlvbjogaGVhZGluZwogQVhDaGlsZHJlbjog
PGFycmF5IG9mIHNpemUgND4KIEFYSGVscDogCi1BWFBhcmVudDogPEFYSGVhZGluZzogJ1tlZGl0
XSBUb3VyZXR0ZSBzeW5kcm9tZSc+CitBWFBhcmVudDogPEFYSGVhZGluZzogJ1tdIFRvdXJldHRl
IHN5bmRyb21lJz4KIEFYU2l6ZTogTlNTaXplOiB7NzY5LCAyMn0KLUFYVGl0bGU6IFtlZGl0XSBU
b3VyZXR0ZSBzeW5kcm9tZQorQVhUaXRsZTogW10gVG91cmV0dGUgc3luZHJvbWUKIEFYRGVzY3Jp
cHRpb246IAogQVhWYWx1ZTogMwogQVhGb2N1c2VkOiAwCiBBWEVuYWJsZWQ6IDEKLUFYV2luZG93
OiA8QVhIZWFkaW5nOiAnW2VkaXRdIFRvdXJldHRlIHN5bmRyb21lJz4KK0FYV2luZG93OiA8QVhI
ZWFkaW5nOiAnW10gVG91cmV0dGUgc3luZHJvbWUnPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5n
ZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogPEFYSGVhZGluZzogJ1tlZGl0XSBUb3VyZXR0
ZSBzeW5kcm9tZSc+Ci1BWEVuZFRleHRNYXJrZXI6IDxBWEhlYWRpbmc6ICdbZWRpdF0gVG91cmV0
dGUgc3luZHJvbWUnPgorQVhTdGFydFRleHRNYXJrZXI6IDxBWEhlYWRpbmc6ICdbXSBUb3VyZXR0
ZSBzeW5kcm9tZSc+CitBWEVuZFRleHRNYXJrZXI6IDxBWEhlYWRpbmc6ICdbXSBUb3VyZXR0ZSBz
eW5kcm9tZSc+CiBBWFZpc2l0ZWQ6IDAKIEFYTGlua2VkVUlFbGVtZW50czogKG51bGwpCiBBWFNl
bGVjdGVkOiAwCiBBWEJsb2NrUXVvdGVMZXZlbDogMAotQVhUb3BMZXZlbFVJRWxlbWVudDogPEFY
SGVhZGluZzogJ1tlZGl0XSBUb3VyZXR0ZSBzeW5kcm9tZSc+CitBWFRvcExldmVsVUlFbGVtZW50
OiA8QVhIZWFkaW5nOiAnW10gVG91cmV0dGUgc3luZHJvbWUnPgogCiAtLS0tLS0tLS0tLS0KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3RhdGlj
LXRleHQtcm9sZS11c2VzLXRleHQtdW5kZXItZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGF0aWMtdGV4dC1yb2xlLXVzZXMtdGV4
dC11bmRlci1lbGVtZW50LWV4cGVjdGVkLnR4dAppbmRleCBkMGI3YzU2M2RjNGVhNzdlMGVmZjI5
MmI3ZmYwYWMxMTRlY2YxNDQyLi41NWVjZTdhZjAzNjlhNTQ5NjhkNzk1NTZlZTY1MGJlNDk3ZjQw
MmNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9z
dGF0aWMtdGV4dC1yb2xlLXVzZXMtdGV4dC11bmRlci1lbGVtZW50LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGF0aWMtdGV4dC1yb2xl
LXVzZXMtdGV4dC11bmRlci1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcgQEAgVGhp
cyB0ZXN0cyB0aGF0IGlmIGFuIGVsZW1lbnQgdXNlcyB0aGUgJ3RleHQnIHJvbGUgYnV0IGRvZXMg
bm90IHVzZSBhbiBhcmlhLWxhYmUKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNT
IHRleHQuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IFRleHQgMSBUZXh0IDIgVGV4dCAzJworUEFT
UyB0ZXh0LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiAgIFRleHQgMycKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3RhdGljLXRleHQtcm9sZS11c2VzLXRleHQt
dW5kZXItZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvc3RhdGljLXRleHQtcm9sZS11c2VzLXRleHQtdW5kZXItZWxlbWVudC5odG1sCmluZGV4IGZm
ZjFiMGFmZmQ1OTk3M2M4YmE0NGIxOGU5ZGVhMzU3MTczNzA2ZWMuLjdiNTI4ZGQzM2VmYTM5NjZm
MGVlOTdjMGJjNjI1OWY3ZjFmNzEwMDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L3N0YXRpYy10ZXh0LXJvbGUtdXNlcy10ZXh0LXVuZGVyLWVsZW1l
bnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGF0
aWMtdGV4dC1yb2xlLXVzZXMtdGV4dC11bmRlci1lbGVtZW50Lmh0bWwKQEAgLTI2LDcgKzI2LDcg
QEAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQxIikuZm9j
dXMoKTsKICAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudDsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6
IFRleHQgMSBUZXh0IDIgVGV4dCAzJyIpOworICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdW
YWx1ZSIsICInQVhWYWx1ZTogICBUZXh0IDMnIik7CiAgICAgfQogCiA8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgt
YXJpYS1yb2xlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L3RhYmxlLXdpdGgtYXJpYS1yb2xlLWV4cGVjdGVkLnR4dAppbmRleCBlNjZiZGI5M2Qw
NWFlOGJiMDgwZTEyY2Y1NTk1YTBmZjhiMmJkNTRhLi5kMzE4ZTBlMjE3ODRhNjlkZTgzZTU5MmJi
MTg1Zjg3ZmEzZjAzZGNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS90YWJsZS13aXRoLWFyaWEtcm9sZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1hcmlhLXJvbGUtZXhw
ZWN0ZWQudHh0CkBAIC03LDMzICs3LDIxIEBAIEFYU3Vicm9sZTogKG51bGwpCiBBWFJvbGVEZXNj
cmlwdGlvbjogYnV0dG9uCiBBWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhIZWxwOiAK
LUFYUGFyZW50OiA8QVhCdXR0b246ICd0ZXN0CXRlc3QJdGVzdAotdGVzdAl0ZXN0CXRlc3QKLSc+
CitBWFBhcmVudDogPEFYQnV0dG9uOiAndGVzdHRlc3R0ZXN0dGVzdHRlc3R0ZXN0Jz4KIEFYU2l6
ZTogTlNTaXplOiB7ODUsIDUyfQotQVhUaXRsZTogdGVzdAl0ZXN0CXRlc3QKLXRlc3QJdGVzdAl0
ZXN0Ci0KK0FYVGl0bGU6IHRlc3R0ZXN0dGVzdHRlc3R0ZXN0dGVzdAogQVhEZXNjcmlwdGlvbjog
CiBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQotQVhXaW5kb3c6IDxBWEJ1dHRvbjogJ3Rlc3QJ
dGVzdAl0ZXN0Ci10ZXN0CXRlc3QJdGVzdAotJz4KK0FYV2luZG93OiA8QVhCdXR0b246ICd0ZXN0
dGVzdHRlc3R0ZXN0dGVzdHRlc3QnPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwp
Ci1BWFN0YXJ0VGV4dE1hcmtlcjogPEFYQnV0dG9uOiAndGVzdAl0ZXN0CXRlc3QKLXRlc3QJdGVz
dAl0ZXN0Ci0nPgotQVhFbmRUZXh0TWFya2VyOiA8QVhCdXR0b246ICd0ZXN0CXRlc3QJdGVzdAot
dGVzdAl0ZXN0CXRlc3QKLSc+CitBWFN0YXJ0VGV4dE1hcmtlcjogPEFYQnV0dG9uOiAndGVzdHRl
c3R0ZXN0dGVzdHRlc3R0ZXN0Jz4KK0FYRW5kVGV4dE1hcmtlcjogPEFYQnV0dG9uOiAndGVzdHRl
c3R0ZXN0dGVzdHRlc3R0ZXN0Jz4KIEFYVmlzaXRlZDogMAogQVhMaW5rZWRVSUVsZW1lbnRzOiAo
bnVsbCkKIEFYU2VsZWN0ZWQ6IDAKIEFYQmxvY2tRdW90ZUxldmVsOiAwCi1BWFRvcExldmVsVUlF
bGVtZW50OiA8QVhCdXR0b246ICd0ZXN0CXRlc3QJdGVzdAotdGVzdAl0ZXN0CXRlc3QKLSc+CitB
WFRvcExldmVsVUlFbGVtZW50OiA8QVhCdXR0b246ICd0ZXN0dGVzdHRlc3R0ZXN0dGVzdHRlc3Qn
PgogQVhUaXRsZVVJRWxlbWVudDogKG51bGwpCiBBWEFjY2Vzc0tleTogKG51bGwpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179113</attachid>
            <date>2012-12-12 13:09:53 -0800</date>
            <delta_ts>2012-12-17 13:41:31 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-101650-20121212130714.patch</filename>
            <type>text/plain</type>
            <size>23118</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGI4OGVlZThlZmM1MTlk
N2MxZjFiZmVhZWY1NWY2ZDAxNjc0NjBlYS4uZGYzZWQ5ZmRlNWJhYjYxNmZhODFiMzAwOTgzYmIz
ZDFiOTljNzEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEyLTEyICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiB0ZXh0VW5k
ZXJFbGVtZW50IHNob3VsZCBjb25zaWRlciBhbHQgdGV4dCwgYnV0IHNraXAgbGlua3MgYW5kIGNv
bnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDE2NTAKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICBH
ZXR0aW5nIGlubmVyIHRleHQgZnJvbSBhbiBlbGVtZW50IG5vdyBpZ25vcmVzIGZvY3VzYWJsZSBk
ZXNjZW5kYW50cyBhbmQKKyAgICAgICAgY29udGFpbmVycywgYnV0IHVzZXMgYWx0ZXJuYXRpdmUg
dGV4dC4KKworICAgICAgICBUaGUgY29tcHV0YXRpb24gb2YgdGV4dFVuZGVyRWxlbWVudCBpcyBu
b3cgcmVjdXJzaXZlLiBUaGlzIGNhdXNlZCBhIGNyYXNoCisgICAgICAgIGlmIGl0IHdhcyBjYWxs
ZWQgYnkgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCBkdXJpbmcgb2JqZWN0IGRlc3RydWN0aW9uLAor
ICAgICAgICBzbyBJIHNpbXBsaWZpZWQgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCB0byBub3QgYWN0
dWFsbHkgY2FsbCB0ZXh0VW5kZXJFbGVtZW50LAorICAgICAgICB3aXRob3V0IGFmZmVjdGluZyB0
ZXN0IHJlc3VsdHMsIHdoaWNoIHNob3VsZCBhY3R1YWxseSBiZSBhIGRlY2VudCBzcGVlZHVwLgor
CisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvYnV0dG9uLXRpdGxlLXVzZXMtaW5uZXItaW1n
LWFsdC5odG1sCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi5odG1s
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVXNlQWNjZXNzaWJs
aXR5T2JqZWN0SW5uZXJUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCk6CisKIDIwMTItMTItMTIgIE5vJ2FtIFJv
c2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
OiByMTM3NDgxIGNhdXNlZCBhIGJ1aWxkIGZhaWx1cmUgd2l0aCBHVEsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAK
aW5kZXggMGU1Yzk3ODZiNGIwNzI0YjVjMTIxMDk4ZTkzNzEwYjQ1ZjVkOTliNC4uMDhhMGQ3YjZj
MmM1NGM0YWMwNGMzY2ZlMDlhMTc2MTkxNmVlODQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTE0
MzQsMjAgKzE0MzQsNjIgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhpZXJh
cmNoaWNhbExldmVsKCkgY29uc3QKICAgICByZXR1cm4gbGV2ZWw7CiB9CiAKKy8vIFdoZW4gYnVp
bGRpbmcgdGhlIHRleHRVbmRlckVsZW1lbnQgZm9yIGFuIG9iamVjdCwgZGV0ZXJtaW5lIHdoZXRo
ZXIgb3Igbm90CisvLyB3ZSBzaG91bGQgaW5jbHVkZSB0aGUgaW5uZXIgdGV4dCBvZiB0aGlzIGdp
dmVuIGRlc2NlbmRhbnQgb2JqZWN0IG9yIHNraXAgaXQuCitzdGF0aWMgYm9vbCBzaG91bGRVc2VB
Y2Nlc3NpYmxpdHlPYmplY3RJbm5lclRleHQoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQorewor
ICAgIC8vIENvbnNpZGVyIHRoaXMgaHlwb3RoZXRpY2FsIGV4YW1wbGU6CisgICAgLy8gPGRpdiB0
YWJpbmRleD0wPgorICAgIC8vICAgPGgyPgorICAgIC8vICAgICBUYWJsZSBvZiBjb250ZW50cwor
ICAgIC8vICAgPC9oMj4KKyAgICAvLyAgIDxhIGhyZWY9IiNzdGFydCI+SnVtcCB0byBzdGFydCBv
ZiBib29rPC9hPgorICAgIC8vICAgPHVsPgorICAgIC8vICAgICA8bGk+PGEgaHJlZj0iIzEiPkNo
YXB0ZXIgMTwvYT48L2xpPgorICAgIC8vICAgICA8bGk+PGEgaHJlZj0iIzEiPkNoYXB0ZXIgMjwv
YT48L2xpPgorICAgIC8vICAgPC91bD4KKyAgICAvLyA8L2Rpdj4KKyAgICAvLworICAgIC8vIFRo
ZSBnb2FsIGlzIHRvIHJldHVybiBhIHJlYXNvbmFibGUgdGl0bGUgZm9yIHRoZSBvdXRlciBjb250
YWluZXIgZGl2LCBiZWNhdXNlCisgICAgLy8gaXQncyBmb2N1c2FibGUgLSBidXQgd2l0aG91dCBt
YWtpbmcgaXRzIHRpdGxlIGJlIHRoZSBmdWxsIGlubmVyIHRleHQsIHdoaWNoIGlzCisgICAgLy8g
cXVpdGUgbG9uZy4gQXMgYSBoZXVyaXN0aWMsIHNraXAgbGlua3MsIGNvbnRyb2xzLCBhbmQgZWxl
bWVudHMgdGhhdCBhcmUgdXN1YWxseQorICAgIC8vIGNvbnRhaW5lcnMgd2l0aCBsb3RzIG9mIGNo
aWxkcmVuLgorCisgICAgLy8gU2tpcCBmb2N1c2FibGUgY2hpbGRyZW4sIHNvIHdlIGRvbid0IGlu
Y2x1ZGUgdGhlIHRleHQgb2YgbGlua3MgYW5kIGNvbnRyb2xzLgorICAgIGlmIChvYmotPmNhblNl
dEZvY3VzQXR0cmlidXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFNraXAg
YmlnIGNvbnRhaW5lciBlbGVtZW50cyBsaWtlIGxpc3RzLCB0YWJsZXMsIGV0Yy4KKyAgICBpZiAo
b2JqLT5pc0xpc3QoKSB8fCBvYmotPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgfHwgb2JqLT5pc1Ry
ZWUoKSB8fCBvYmotPmlzQ2FudmFzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRleHRVbmRl
ckVsZW1lbnQoKSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7Ci0gICAg
aWYgKCFub2RlKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICAvLyBOb3RlOiBUZXh0
SXRlcmF0b3IgZG9lc24ndCByZXR1cm4gYW55IHRleHQgZm9yIG5vZGVzIHRoYXQgZG9uJ3QgaGF2
ZSByZW5kZXJlcnMuCi0gICAgLy8gSWYgdGhpcyBjb3VsZCBiZSBmaXhlZCwgaXQnZCBiZSBtb3Jl
IGFjY3VyYXRlIHVzZSBUZXh0SXRlcmF0b3IgaGVyZS4KLSAgICBpZiAobm9kZS0+aXNFbGVtZW50
Tm9kZSgpKQotICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpLT5pbm5lclRleHQoKTsKLSAg
ICBlbHNlIGlmIChub2RlLT5pc1RleHROb2RlKCkpCisgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNU
ZXh0Tm9kZSgpKQogICAgICAgICByZXR1cm4gdG9UZXh0KG5vZGUpLT53aG9sZVRleHQoKTsKLSAg
ICAKLSAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBTdHJpbmcgcmVzdWx0OworICAgIGZvciAo
QWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICghc2hvdWxkVXNlQWNjZXNzaWJs
aXR5T2JqZWN0SW5uZXJUZXh0KGNoaWxkKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIGlmIChjaGlsZC0+aXNBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpKSB7CisgICAgICAgICAg
ICBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+IHRleHRPcmRlcjsKKyAgICAgICAgICAgIHRvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QoY2hpbGQpLT5hbHRlcm5hdGl2ZVRleHQodGV4dE9yZGVyKTsK
KyAgICAgICAgICAgIGlmICh0ZXh0T3JkZXIuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQodGV4dE9yZGVyWzBdLnRleHQpOworICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LmFwcGVuZChj
aGlsZC0+dGV4dFVuZGVyRWxlbWVudCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRpdGxlKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCmluZGV4IGFmNTY4NmFjZTBmNjAzNGMzNjkyODNjMTE3ZWZmYTk4MjE0MTg5
MDEuLjZkYjlkMzYxMGI1Zjc0ZDllODg3YjVhOGU0MzNmY2UxMzYxYWU5ZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcApAQCAtNjI0LDEyICs2MjQsMTAgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQoKSBjb25zdAogewogICAgIGlmICghbV9yZW5kZXJl
cikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIAorCiAgICAgaWYgKG1fcmVuZGVyZXIt
PmlzRmlsZVVwbG9hZENvbnRyb2woKSkKICAgICAgICAgcmV0dXJuIHRvUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2wobV9yZW5kZXJlciktPmJ1dHRvblZhbHVlKCk7CiAgICAgCi0gICAgTm9kZSogbm9k
ZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKLQogI2lmIEVOQUJMRShNQVRITUwpCiAgICAgLy8gTWF0
aCBvcGVyYXRvcnMgY3JlYXRlIFJlbmRlclRleHQgbm9kZXMgb24gdGhlIGZseSB0aGF0IGFyZSBu
b3QgdGllZCBpbnRvIHRoZSBET00gaW4gYSByZWFzb25hYmxlIHdheSwKICAgICAvLyBzbyByYW5n
ZU9mQ29udGVudHMgZG9lcyBub3Qgd29yayBmb3IgdGhlbSAobm9yIGRvZXMgcmVndWxhciB0ZXh0
IHNlbGVjdGlvbikuCkBAIC02NDAsMjggKzYzOCwyOCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCgpIGNvbnN0CiAgICAgICAgIH0KICAgICB9CiAj
ZW5kaWYKLSAgICAKLSAgICBpZiAobm9kZSkgewotICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0g
bm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewotICAgICAgICAgICAgLy8gY2F0Y2ggc3RhbGUg
V2ViQ29yZUFYT2JqZWN0IChzZWUgPHJkYXI6Ly9wcm9ibGVtLzM5NjAxOTY+KQotICAgICAgICAg
ICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICE9IG5vZGUtPmRvY3VtZW50KCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgICAgICAgICByZXR1cm4gcGxhaW5UZXh0KHJh
bmdlT2ZDb250ZW50cyhub2RlKS5nZXQoKSwgdGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFu
Z2UoKSk7CisgICAgaWYgKG1fcmVuZGVyZXItPmlzVGV4dCgpKSB7CisgICAgICAgIC8vIElmIHBv
c3NpYmxlLCB1c2UgYSB0ZXh0IGl0ZXJhdG9yIHRvIGdldCB0aGUgdGV4dCwgc28gdGhhdCB3aGl0
ZXNwYWNlCisgICAgICAgIC8vIGlzIGhhbmRsZWQgY29uc2lzdGVudGx5LgorICAgICAgICBpZiAo
Tm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKSkgeworICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFt
ZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBjYXRj
aCBzdGFsZSBXZWJDb3JlQVhPYmplY3QgKHNlZSA8cmRhcjovL3Byb2JsZW0vMzk2MDE5Nj4pCisg
ICAgICAgICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICE9IG5vZGUtPmRvY3VtZW50KCkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgICAgICAgICAgICAg
IHJldHVybiBwbGFpblRleHQocmFuZ2VPZkNvbnRlbnRzKG5vZGUpLmdldCgpLCB0ZXh0SXRlcmF0
b3JCZWhhdmlvckZvclRleHRSYW5nZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
IH0KICAgICAKLSAgICAvLyBTb21ldGltZXMgdGV4dCBmcmFnbWVudHMgZG9uJ3QgaGF2ZSBOb2Rl
J3MgYXNzb2NpYXRlZCB3aXRoIHRoZW0gKGxpa2Ugd2hlbgotICAgIC8vIENTUyBjb250ZW50IGlz
IHVzZWQgdG8gaW5zZXJ0IHRleHQpLgotICAgIGlmIChtX3JlbmRlcmVyLT5pc1RleHQoKSkgewor
ICAgICAgICAvLyBTb21ldGltZXMgdGV4dCBmcmFnbWVudHMgZG9uJ3QgaGF2ZSBOb2RlcyBhc3Nv
Y2lhdGVkIHdpdGggdGhlbSAobGlrZSB3aGVuCisgICAgICAgIC8vIENTUyBjb250ZW50IGlzIHVz
ZWQgdG8gaW5zZXJ0IHRleHQpLgogICAgICAgICBSZW5kZXJUZXh0KiByZW5kZXJUZXh0T2JqZWN0
ID0gdG9SZW5kZXJUZXh0KG1fcmVuZGVyZXIpOwogICAgICAgICBpZiAocmVuZGVyVGV4dE9iamVj
dC0+aXNUZXh0RnJhZ21lbnQoKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoc3RhdGljX2Nh
c3Q8UmVuZGVyVGV4dEZyYWdtZW50Kj4obV9yZW5kZXJlciktPmNvbnRlbnRTdHJpbmcoKSk7CiAg
ICAgfQogICAgIAotICAgIC8vIHJldHVybiB0aGUgbnVsbCBzdHJpbmcgZm9yIGFub255bW91cyB0
ZXh0IGJlY2F1c2UgaXQgaXMgbm9uLXRyaXZpYWwgdG8gZ2V0Ci0gICAgLy8gdGhlIGFjdHVhbCB0
ZXh0IGFuZCwgc28gZmFyLCB0aGF0IGlzIG5vdCBuZWVkZWQKLSAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KCk7
CiB9CiAKIE5vZGUqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om5vZGUoKSBjb25zdApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDQ1YTQ2NTFhMDEyZjQwMjZiM2I0NTFhZGFlNzdhNmRlMDY5MmFjNWUuLmZkZDE5MTAyZTNi
ZmNmYzIxNTM2OGZlZWI0MzRmZTljODQyNmM2NTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAx
Mi0xMi0xMiAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBBWDogdGV4dFVuZGVyRWxlbWVudCBzaG91bGQgY29uc2lkZXIgYWx0IHRleHQsIGJ1dCBza2lw
IGxpbmtzIGFuZCBjb250cm9scworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAxNjUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2gu
CisKKyAgICAgICAgQWRkcyBuZXcgdGVzdHMgdG8gc2hvdyB0aGF0IGdldHRpbmcgaW5uZXIgdGV4
dCBmcm9tIGFuIGVsZW1lbnQgbm93IGlnbm9yZXMKKyAgICAgICAgZm9jdXNhYmxlIGRlc2NlbmRh
bnRzIGFuZCBjb250YWluZXJzLCBidXQgdXNlcyBhbHRlcm5hdGl2ZSB0ZXh0LgorCisgICAgICAg
IFVwZGF0ZXMgYW5kIHJlYmFzZWxpbmVzIHNldmVyYWwgdGVzdHMgdG8gcmVmbGVjdCB0aGUgbmV3
IGxvZ2ljLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9idXR0b24tdGl0bGUtdXNlcy1pbm5l
ci1pbWctYWx0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9i
dXR0b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi1leHBlY3RlZC50eHQ6IEV4dGVuZGVkIHdpdGggbW9y
ZSB0ZXN0IGNhc2VzLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi5odG1s
OiBFeHRlbmRlZCB3aXRoIG1vcmUgdGVzdCBjYXNlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9UZXN0RXhwZWN0YXRpb25zOiBVbi1za2lwIHRlc3QgdGhhdCBub3cgcGFzc2VzLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbGluay1leHBlY3Rl
ZC50eHQ6IFJlYmFzZWxpbmUKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9p
bWFnZS1saW5rLWV4cGVjdGVkLnR4dDogUmViYXNlbGluZQorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L2ludGVybmFsLWxpbmstYW5jaG9yczItZXhwZWN0ZWQudHh0OiBSZWJh
c2VsaW5lCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3RhdGljLXRleHQt
cm9sZS11c2VzLXRleHQtdW5kZXItZWxlbWVudC1leHBlY3RlZC50eHQ6IFJlYmFzZWxpbmUKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGF0aWMtdGV4dC1yb2xlLXVzZXMt
dGV4dC11bmRlci1lbGVtZW50Lmh0bWw6IEZpeAorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L3RhYmxlLXdpdGgtYXJpYS1yb2xlLWV4cGVjdGVkLnR4dDogUmViYXNlbGluZQor
CiAyMDEyLTEyLTEyICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IE1hcmsgZmFzdC9jc3MvbmVzdGVkLXJvdW5kZWQtY29ybmVycy5odG1sIGFzIGZsYWt5IG9uIENo
cm9taXVtL01vdW50YWluTGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9idXR0b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvYnV0dG9uLXRpdGxlLXVzZXMtaW5uZXItaW1nLWFsdC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzgzNjdhNzcxODE3MjU2MWM4ZmYxOGY0OGNkYTViNGRkYmQ4MTUz
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYnV0dG9uLXRp
dGxlLXVzZXMtaW5uZXItaW1nLWFsdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorQnV0
dG9uIHdpdGggaW1hZ2Ugb2YgCitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGEgZ2VuZXJpYyBm
b2N1c2FibGUgZGl2IGNhbiBnZXQgYWNjZXNzaWJpbGl0eSBmb2N1cyBhbmQgZ2V0cyBpdHMgYWNj
ZXNzaWJsZSB0ZXh0IGZyb20gY29udGVudHMuLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGJ1dHRvbiBpcyB0cnVlCitQQVNT
IGF4QnV0dG9uLnRpdGxlLmluZGV4T2YoJ0J1dHRvbiB3aXRoIGltYWdlIG9mIGNha2UnKSA+PSAw
IGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2J1dHRvbi10aXRsZS11
c2VzLWlubmVyLWltZy1hbHQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYnV0dG9u
LXRpdGxlLXVzZXMtaW5uZXItaW1nLWFsdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1YTI0ZTgzZTkwZTQ1
YTY0Nzc5ZjBlM2ZkMjEzZTU5MWQ2YmU1YzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2J1dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1hbHQuaHRtbApAQCAt
MCwwICsxLDMyIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorCis8c3R5
bGU+CitidXR0b24geworICBwYWRkaW5nOiAzMHB4OworfQorPC9zdHlsZT4KKworPGJ1dHRvbiBp
ZD0iY2FrZSI+QnV0dG9uIHdpdGggaW1hZ2Ugb2YgPGltZyBhbHQ9ImNha2UiIHNyYz0icmVzb3Vy
Y2VzL2Nha2UucG5nIiB3aWR0aD0iNDBweCI+PC9idXR0b24+CisKKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0
IGEgZ2VuZXJpYyBmb2N1c2FibGUgZGl2IGNhbiBnZXQgYWNjZXNzaWJpbGl0eSBmb2N1cyBhbmQg
Z2V0cyBpdHMgYWNjZXNzaWJsZSB0ZXh0IGZyb20gY29udGVudHMuLiIpOworCitpZiAod2luZG93
LnRlc3RSdW5uZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgd2lu
ZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFyIGJ1dHRvbiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjYWtlJyk7CisgICAgYnV0dG9uLmZvY3VzKCk7CisgICAgc2hvdWxk
QmUoImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gYnV0dG9uIiwgInRydWUiKTsKKyAgICB3aW5k
b3cuYXhCdXR0b24gPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAg
ICBzaG91bGRCZSgiYXhCdXR0b24udGl0bGUuaW5kZXhPZignQnV0dG9uIHdpdGggaW1hZ2Ugb2Yg
Y2FrZScpID49IDAiLCAidHJ1ZSIpOworfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ZvY3VzYWJsZS1k
aXYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2
LWV4cGVjdGVkLnR4dAppbmRleCBkMzg0NDI2MDBkYzRmMjM3Nzc1ZmRiYmVkYzZlNDkzNzc5ZDhi
NmQyLi5kYzQ4MDM4ZDY0YThiZTViZjQyM2M3Njk1OGMzYzg1MjQyZjA1ZGE3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ZvY3VzYWJsZS1kaXYtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi1leHBlY3RlZC50eHQK
QEAgLTEsNyArMSwxMiBAQAogQQogQgogQwotVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdl
bmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMuCitMaW5rCitJ
bml0aWFsIHRleHQgYmVmb3JlIGxpbmtMaW5rCitMaXN0IGl0ZW0KK0luaXRpYWwgdGV4dCBiZWZv
cmUgbGlzdAorTGlzdCBpdGVtCitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGEgZ2VuZXJpYyBm
b2N1c2FibGUgZGl2IGNhbiBnZXQgYWNjZXNzaWJpbGl0eSBmb2N1cyBhbmQgZ2V0cyBpdHMgYWNj
ZXNzaWJsZSB0ZXh0IGZyb20gY29udGVudHMuLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKQEAgLTE0LDYgKzE5LDE2IEBAIFBBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkaXYy
IGlzIHRydWUKIFBBU1MgbGFzdENoYXIoYXhEaXYyLnRpdGxlKSBpcyAiQyIKIFBBU1MgZG9jdW1l
bnQuYWN0aXZlRWxlbWVudCA9PSBkaXYzIGlzIHRydWUKIFBBU1MgbGFzdENoYXIoYXhEaXYzLmRl
c2NyaXB0aW9uKSBpcyAiRCIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkaXY0IGlz
IHRydWUKK1BBU1MgYXhEaXY0LnRpdGxlLmluZGV4T2YoJ0xpbmsnKSBpcyAtMQorUEFTUyBkb2N1
bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjUgaXMgdHJ1ZQorUEFTUyBheERpdjUudGl0bGUuaW5k
ZXhPZignTGluaycpIGlzIC0xCitQQVNTIGF4RGl2NS50aXRsZS5pbmRleE9mKCdJbml0aWFsIHRl
eHQgYmVmb3JlIGxpbmsnKSA+PSAwIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dCA9PSBkaXY2IGlzIHRydWUKK1BBU1MgYXhEaXY2LnRpdGxlLmluZGV4T2YoJ0xpc3QgaXRlbScp
IGlzIC0xCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZGl2NyBpcyB0cnVlCitQQVNT
IGF4RGl2Ny50aXRsZS5pbmRleE9mKCdMaXN0IGl0ZW0nKSBpcyAtMQorUEFTUyBheERpdjcudGl0
bGUuaW5kZXhPZignSW5pdGlhbCB0ZXh0IGJlZm9yZSBsaXN0JykgPj0gMCBpcyB0cnVlCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi5odG1sIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2Lmh0bWwKaW5kZXggYWRmZmZiZjQzYjlmMjdj
MWUxYjU5ZjIzZGIzMzRiYTM4YzBkOTBlMC4uMjA5ZDJhNDZkOGFjMzdiNDFiZjUzZDIwOTgwODQx
MDFjZWIzOTU3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9mb2N1c2Fi
bGUtZGl2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2
Lmh0bWwKQEAgLTMsMTQgKzMsMjMgQEAKIDxib2R5PgogPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIAorPCEtLSBBIGxpbmsgYWx3YXlz
IGdldHMgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLiAtLT4KIDxhIGlkPSJsaW5r
IiBocmVmPSIjIj5BPC9hPgorCis8IS0tIEEgZ2VuZXJpYyBmb2N1c2FibGUgZGl2IHNob3VsZCBh
bHNvIGdldCBpdHMgYWNjZXNzaWJsZSB0ZXh0IGZyb20gY29udGVudHMuIC0tPgogPGRpdiBpZD0i
ZGl2IiB0YWJpbmRleD0iMCI+QjwvZGl2PgogPGRpdiBpZD0iZGl2MiIgdGFiaW5kZXg9IjAiPjxk
aXY+PC9kaXY+QzwvZGl2PgogPGRpdiBpZD0iZGl2MyIgdGFiaW5kZXg9IjAiIGFyaWEtbGFiZWw9
IkQiPjwvZGl2PgogCis8IS0tIEEgZ2VuZXJpYyBmb2N1c2FibGUgZGl2IHNob3VsZCBub3QgZ2V0
IGFjY2Vzc2libGUgdGV4dCBmcm9tIGNoaWxkcmVuIHRoYXQgYXJlIGZvY3VzYWJsZSBvciBjb250
YWluZXJzLiAtLT4KKzxkaXYgaWQ9ImRpdjQiIHRhYmluZGV4PSIwIj48YSBocmVmPSIjIj5MaW5r
PC9hPjwvZGl2PgorPGRpdiBpZD0iZGl2NSIgdGFiaW5kZXg9IjAiPkluaXRpYWwgdGV4dCBiZWZv
cmUgbGluazxhIGhyZWY9IiMiPkxpbms8L2E+PC9kaXY+Cis8ZGl2IGlkPSJkaXY2IiB0YWJpbmRl
eD0iMCI+PHVsPjxsaT5MaXN0IGl0ZW08L2xpPjwvdWw+PC9kaXY+Cis8ZGl2IGlkPSJkaXY3IiB0
YWJpbmRleD0iMCI+SW5pdGlhbCB0ZXh0IGJlZm9yZSBsaXN0PHVsPjxsaT5MaXN0IGl0ZW08L2xp
PjwvdWw+PC9kaXY+CisKIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KLWRlc2Ny
aXB0aW9uKCJUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGEgZ2VuZXJpYyBmb2N1c2FibGUgZGl2
IGNhbiBnZXQgYWNjZXNzaWJpbGl0eSBmb2N1cy4iKTsKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Qg
bWFrZXMgc3VyZSB0aGF0IGEgZ2VuZXJpYyBmb2N1c2FibGUgZGl2IGNhbiBnZXQgYWNjZXNzaWJp
bGl0eSBmb2N1cyBhbmQgZ2V0cyBpdHMgYWNjZXNzaWJsZSB0ZXh0IGZyb20gY29udGVudHMuLiIp
OwogCiBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9s
bGVyKSB7CiAgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwpAQCAtNDIsNiArNTEs
MzIgQEAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgewogICAgIHNob3VsZEJlKCJkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjMiLCAi
dHJ1ZSIpOwogICAgIHdpbmRvdy5heERpdjMgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudDsKICAgICBzaG91bGRCZSgibGFzdENoYXIoYXhEaXYzLmRlc2NyaXB0aW9uKSIs
ICJcIkRcIiIpOworCisgICAgdmFyIGRpdjQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2
NCcpOworICAgIGRpdjQuZm9jdXMoKTsKKyAgICBzaG91bGRCZSgiZG9jdW1lbnQuYWN0aXZlRWxl
bWVudCA9PSBkaXY0IiwgInRydWUiKTsKKyAgICB3aW5kb3cuYXhEaXY0ID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgc2hvdWxkQmUoImF4RGl2NC50aXRsZS5p
bmRleE9mKCdMaW5rJykiLCAiLTEiKTsKKworICAgIHZhciBkaXY1ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2RpdjUnKTsKKyAgICBkaXY1LmZvY3VzKCk7CisgICAgc2hvdWxkQmUoImRvY3Vt
ZW50LmFjdGl2ZUVsZW1lbnQgPT0gZGl2NSIsICJ0cnVlIik7CisgICAgd2luZG93LmF4RGl2NSA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIHNob3VsZEJlKCJh
eERpdjUudGl0bGUuaW5kZXhPZignTGluaycpIiwgIi0xIik7CisgICAgc2hvdWxkQmUoImF4RGl2
NS50aXRsZS5pbmRleE9mKCdJbml0aWFsIHRleHQgYmVmb3JlIGxpbmsnKSA+PSAwIiwgInRydWUi
KTsKKworICAgIHZhciBkaXY2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpdjYnKTsKKyAg
ICBkaXY2LmZvY3VzKCk7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0g
ZGl2NiIsICJ0cnVlIik7CisgICAgd2luZG93LmF4RGl2NiA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50OworICAgIHNob3VsZEJlKCJheERpdjYudGl0bGUuaW5kZXhPZign
TGlzdCBpdGVtJykiLCAiLTEiKTsKKworICAgIHZhciBkaXY3ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2RpdjcnKTsKKyAgICBkaXY3LmZvY3VzKCk7CisgICAgc2hvdWxkQmUoImRvY3VtZW50
LmFjdGl2ZUVsZW1lbnQgPT0gZGl2NyIsICJ0cnVlIik7CisgICAgd2luZG93LmF4RGl2NyA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIHNob3VsZEJlKCJheERp
djcudGl0bGUuaW5kZXhPZignTGlzdCBpdGVtJykiLCAiLTEiKTsKKyAgICBzaG91bGRCZSgiYXhE
aXY3LnRpdGxlLmluZGV4T2YoJ0luaXRpYWwgdGV4dCBiZWZvcmUgbGlzdCcpID49IDAiLCAidHJ1
ZSIpOwogfQogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDlhYmNmZGE1YTVhYjUzOTkyNTlmOWY3ZGU2YzQ3YTA0NTJi
MTc5YTAuLjAwMTBhZGM1NGNjMDI4Y2EwNzJlNTU3ZDZkZDI4MzYwNDgyYWRjYjMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTM5Niw3
ICsxMzk2LDYgQEAgY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvYXJpYS11c2VkLW9uLWlt
YWdlLW1hcHMuaHRtbCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvZGVs
ZXRpbmctaWZyYW1lLWRlc3Ryb3lzLWF4Y2FjaGUuaHRtbCBbIFNraXAgXQogY3JidWcuY29tLzEw
MzIyIGFjY2Vzc2liaWxpdHkvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sIFsgU2tpcCBdCiBjcmJ1
Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0eS9pZnJhbWUtYmFzdGFyZGl6YXRpb24uaHRtbCBbIFNr
aXAgXQotY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvaW1hZ2UtbGluay5odG1sIFsgU2tp
cCBdCiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0eS9pbWFnZS1tYXAtdXBkYXRlLXBhcmVu
dC1jcmFzaC5odG1sIFsgU2tpcCBdCiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0eS9pbWFn
ZS1tYXAyLmh0bWwgWyBTa2lwIF0KIGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2ludGVy
bmFsLWxpbmstYW5jaG9yczIuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9pbWFnZS1saW5rLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbGluay1l
eHBlY3RlZC50eHQKaW5kZXggYTFjZDkwYmVjMzNmOGFmMWRhOTA5NGY2NDc3ZGYwNGU0MjA5ZGM0
Yy4uOTMxZGJiYmNkZWYwMTJhNjJlYmU2NjYwZjg5MmEzNzhmYjA2YWU5MCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9pbWFnZS1saW5rLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmls
aXR5L2ltYWdlLWxpbmstZXhwZWN0ZWQudHh0CkBAIC0zLDU1ICszLDEzIEBAIEltYWdlIGxpbmsg
aW4gdGhlIHByZXNlbmNlIG9mIGlubGluZSBjb250aW51YXRpb25zCiBUaGlzIHRlc3QgY2hlY2tz
IHRoYXQgdGhlIHJpZ2h0IGFjY2Vzc2liaWxpdHkgdHJlZSBpcyBnZW5lcmF0ZWQgZm9yIGEgbGlu
ayBpbnNpZGUgYW4gaW1hZ2UKIAogCitBWFRpdGxlOiBEZWxpY2lvdXMgY2FrZQogQVhSb2xlOiBB
WExpbmsKLUFYU3Vicm9sZTogKG51bGwpCi1BWFJvbGVEZXNjcmlwdGlvbjogbGluawotQVhDaGls
ZHJlbjogPGFycmF5IG9mIHNpemUgMT4KLUFYSGVscDogCi1BWFBhcmVudDogPEFYTGluaz4KLUFY
U2l6ZTogTlNTaXplOiB7MjgwLCAyMTN9Ci1BWFRpdGxlOiAKIEFYRGVzY3JpcHRpb246IAotQVhW
YWx1ZTogCi1BWEZvY3VzZWQ6IDEKLUFYRW5hYmxlZDogMQotQVhXaW5kb3c6IDxBWExpbms+Ci1B
WFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2VyOiA8QVhM
aW5rPgotQVhFbmRUZXh0TWFya2VyOiA8QVhMaW5rPgotQVhWaXNpdGVkOiAwCi1BWExpbmtlZFVJ
RWxlbWVudHM6IChudWxsKQotQVhTZWxlY3RlZDogMAotQVhCbG9ja1F1b3RlTGV2ZWw6IDAKLUFY
VG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWExpbms+Ci1BWFVSTDogaHR0cDovL3d3dy53b3doZWFkLmNv
bS8/aXRlbT0zMzkyNAotQVhBY2Nlc3NLZXk6IChudWxsKQotCiAKIENoaWxkIDA6Ci1BWFJvbGU6
IEFYSW1hZ2UKLUFYU3Vicm9sZTogKG51bGwpCi1BWFJvbGVEZXNjcmlwdGlvbjogaW1hZ2UKLUFY
Q2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDA+Ci1BWEhlbHA6IAotQVhQYXJlbnQ6IDxBWEltYWdl
PgotQVhTaXplOiBOU1NpemU6IHsyODAsIDIwOX0KIEFYVGl0bGU6IAorQVhSb2xlOiBBWEltYWdl
CiBBWERlc2NyaXB0aW9uOiBEZWxpY2lvdXMgY2FrZQotQVhWYWx1ZTogCi1BWEZvY3VzZWQ6IDAK
LUFYRW5hYmxlZDogMQotQVhXaW5kb3c6IDxBWEltYWdlPgotQVhTZWxlY3RlZFRleHRNYXJrZXJS
YW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogPEFYSW1hZ2U+Ci1BWEVuZFRleHRNYXJr
ZXI6IDxBWEltYWdlPgotQVhWaXNpdGVkOiAwCi1BWExpbmtlZFVJRWxlbWVudHM6IChudWxsKQot
QVhTZWxlY3RlZDogMAotQVhCbG9ja1F1b3RlTGV2ZWw6IDAKLUFYVG9wTGV2ZWxVSUVsZW1lbnQ6
IDxBWEltYWdlPgotQVhVUkw6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcmVzb3VyY2VzL2Nh
a2UucG5nCi1BWEFjY2Vzc0tleTogKG51bGwpCi0KIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9pbWFnZS1saW5rLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2ltYWdlLWxpbmstZXhwZWN0ZWQu
dHh0CmluZGV4IDlkYzllMjgyMmUxZmYzNTc5YjNlYzFkN2ZiNjlhNWQ1ODk3Mjg2MWYuLmZjMDZi
NTA1MjJmMjdhNWYxNThmMzE3MWUyMjM1NzM4ZTM1ZDJkMWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2ltYWdlLWxpbmstZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2ltYWdlLWxpbmstZXhw
ZWN0ZWQudHh0CkBAIC04LDIyICs4LDIyIEBAIEFYU3Vicm9sZTogKG51bGwpCiBBWFJvbGVEZXNj
cmlwdGlvbjogbGluawogQVhDaGlsZHJlbjogPGFycmF5IG9mIHNpemUgMT4KIEFYSGVscDogCi1B
WFBhcmVudDogPEFYTGluaz4KK0FYUGFyZW50OiA8QVhMaW5rOiAnRGVsaWNpb3VzIGNha2UnPgog
QVhTaXplOiBOU1NpemU6IHsyODAsIDIxM30KLUFYVGl0bGU6IAorQVhUaXRsZTogRGVsaWNpb3Vz
IGNha2UKIEFYRGVzY3JpcHRpb246IAogQVhWYWx1ZTogCiBBWEZvY3VzZWQ6IDEKIEFYRW5hYmxl
ZDogMQotQVhXaW5kb3c6IDxBWExpbms+CitBWFdpbmRvdzogPEFYTGluazogJ0RlbGljaW91cyBj
YWtlJz4KIEFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRNYXJr
ZXI6IDxBWExpbms+Ci1BWEVuZFRleHRNYXJrZXI6IDxBWExpbms+CitBWFN0YXJ0VGV4dE1hcmtl
cjogPEFYTGluazogJ0RlbGljaW91cyBjYWtlJz4KK0FYRW5kVGV4dE1hcmtlcjogPEFYTGluazog
J0RlbGljaW91cyBjYWtlJz4KIEFYVmlzaXRlZDogMAogQVhMaW5rZWRVSUVsZW1lbnRzOiAobnVs
bCkKIEFYU2VsZWN0ZWQ6IDAKIEFYQmxvY2tRdW90ZUxldmVsOiAwCi1BWFRvcExldmVsVUlFbGVt
ZW50OiA8QVhMaW5rPgorQVhUb3BMZXZlbFVJRWxlbWVudDogPEFYTGluazogJ0RlbGljaW91cyBj
YWtlJz4KIEFYVVJMOiBodHRwOi8vd3d3Lndvd2hlYWQuY29tLz9pdGVtPTMzOTI0CiBBWEFjY2Vz
c0tleTogKG51bGwpCiBBWEFSSUFCdXN5OiAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9pbnRlcm5hbC1saW5rLWFuY2hvcnMyLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2ludGVybmFsLWxpbmst
YW5jaG9yczItZXhwZWN0ZWQudHh0CmluZGV4IDMwYmY2ODZjODQxYjYxMmVhZTg4NTZjMDI4NzI4
MjRiNmQxMWExZmMuLjMwNTQyNDlhZDcyOTQyY2JmNDUyZWUxN2RjMTM5NTk0YWYwMTFjOTggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2ludGVybmFs
LWxpbmstYW5jaG9yczItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L2ludGVybmFsLWxpbmstYW5jaG9yczItZXhwZWN0ZWQudHh0CkBAIC01
LDE3ICs1LDE3IEBAIEFYU3Vicm9sZTogKG51bGwpCiBBWFJvbGVEZXNjcmlwdGlvbjogaGVhZGlu
ZwogQVhDaGlsZHJlbjogPGFycmF5IG9mIHNpemUgND4KIEFYSGVscDogCi1BWFBhcmVudDogPEFY
SGVhZGluZzogJ1tlZGl0XSBUb3VyZXR0ZSBzeW5kcm9tZSc+CitBWFBhcmVudDogPEFYSGVhZGlu
ZzogJ1tdIFRvdXJldHRlIHN5bmRyb21lJz4KIEFYU2l6ZTogTlNTaXplOiB7NzY5LCAyMn0KLUFY
VGl0bGU6IFtlZGl0XSBUb3VyZXR0ZSBzeW5kcm9tZQorQVhUaXRsZTogW10gVG91cmV0dGUgc3lu
ZHJvbWUKIEFYRGVzY3JpcHRpb246IAogQVhWYWx1ZTogMwogQVhGb2N1c2VkOiAwCiBBWEVuYWJs
ZWQ6IDEKLUFYV2luZG93OiA8QVhIZWFkaW5nOiAnW2VkaXRdIFRvdXJldHRlIHN5bmRyb21lJz4K
K0FYV2luZG93OiA8QVhIZWFkaW5nOiAnW10gVG91cmV0dGUgc3luZHJvbWUnPgogQVhTZWxlY3Rl
ZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogPEFYSGVhZGluZzog
J1tlZGl0XSBUb3VyZXR0ZSBzeW5kcm9tZSc+Ci1BWEVuZFRleHRNYXJrZXI6IDxBWEhlYWRpbmc6
ICdbZWRpdF0gVG91cmV0dGUgc3luZHJvbWUnPgorQVhTdGFydFRleHRNYXJrZXI6IDxBWEhlYWRp
bmc6ICdbXSBUb3VyZXR0ZSBzeW5kcm9tZSc+CitBWEVuZFRleHRNYXJrZXI6IDxBWEhlYWRpbmc6
ICdbXSBUb3VyZXR0ZSBzeW5kcm9tZSc+CiBBWFZpc2l0ZWQ6IDAKIEFYTGlua2VkVUlFbGVtZW50
czogKG51bGwpCiBBWFNlbGVjdGVkOiAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS9zdGF0aWMtdGV4dC1yb2xlLXVzZXMtdGV4dC11bmRlci1lbGVt
ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L3N0YXRpYy10ZXh0LXJvbGUtdXNlcy10ZXh0LXVuZGVyLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGQwYjdjNTYzZGM0ZWE3N2UwZWZmMjkyYjdmZjBhYzExNGVjZjE0NDIuLjU1ZWNlN2FmMDM2
OWE1NDk2OGQ3OTU1NmVlNjUwYmU0OTdmNDAyY2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N0YXRpYy10ZXh0LXJvbGUtdXNlcy10ZXh0LXVuZGVy
LWVsZW1lbnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L3N0YXRpYy10ZXh0LXJvbGUtdXNlcy10ZXh0LXVuZGVyLWVsZW1lbnQtZXhwZWN0
ZWQudHh0CkBAIC00LDcgKzQsNyBAQCBUaGlzIHRlc3RzIHRoYXQgaWYgYW4gZWxlbWVudCB1c2Vz
IHRoZSAndGV4dCcgcm9sZSBidXQgZG9lcyBub3QgdXNlIGFuIGFyaWEtbGFiZQogT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgdGV4dC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTog
VGV4dCAxIFRleHQgMiBUZXh0IDMnCitQQVNTIHRleHQuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6
ICAgVGV4dCAzJwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBM
RVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9z
dGF0aWMtdGV4dC1yb2xlLXVzZXMtdGV4dC11bmRlci1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGF0aWMtdGV4dC1yb2xlLXVzZXMtdGV4dC11
bmRlci1lbGVtZW50Lmh0bWwKaW5kZXggZmZmMWIwYWZmZDU5OTczYzhiYTQ0YjE4ZTlkZWEzNTcx
NzM3MDZlYy4uN2I1MjhkZDMzZWZhMzk2NmYwZWU5N2MwYmM2MjU5ZjdmMWY3MTAwMCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3RhdGljLXRleHQt
cm9sZS11c2VzLXRleHQtdW5kZXItZWxlbWVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N0YXRpYy10ZXh0LXJvbGUtdXNlcy10ZXh0LXVuZGVyLWVs
ZW1lbnQuaHRtbApAQCAtMjYsNyArMjYsNyBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAg
aWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewogICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGV4dDEiKS5mb2N1cygpOwogICAgICAgICB2YXIgdGV4dCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OwotICAgICAgICBzaG91bGRCZSgidGV4
dC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogVGV4dCAxIFRleHQgMiBUZXh0IDMnIik7CisgICAg
ICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiAgIFRleHQgMyciKTsK
ICAgICB9CiAKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1hcmlhLXJvbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1hcmlhLXJvbGUtZXhw
ZWN0ZWQudHh0CmluZGV4IDA1ODY3ZmYxMzQ0OWZmZWNiYjM5MDQxYWUyZjNlMzgwODg3NjI3YjUu
LjIyNTA0NDhmNDYzYWVmNGQyYTk5M2IwZjA1MGZiYjEzYWVhMWY1YTAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtYXJpYS1yb2xl
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS90YWJsZS13aXRoLWFyaWEtcm9sZS1leHBlY3RlZC50eHQKQEAgLTcsMzMgKzcsMjEgQEAgQVhT
dWJyb2xlOiAobnVsbCkKIEFYUm9sZURlc2NyaXB0aW9uOiBidXR0b24KIEFYQ2hpbGRyZW46IDxh
cnJheSBvZiBzaXplIDA+CiBBWEhlbHA6IAotQVhQYXJlbnQ6IDxBWEJ1dHRvbjogJ3Rlc3QJdGVz
dAl0ZXN0Ci10ZXN0CXRlc3QJdGVzdAotJz4KK0FYUGFyZW50OiA8QVhCdXR0b246ICd0ZXN0dGVz
dHRlc3R0ZXN0dGVzdHRlc3QnPgogQVhTaXplOiBOU1NpemU6IHs4NSwgNTJ9Ci1BWFRpdGxlOiB0
ZXN0CXRlc3QJdGVzdAotdGVzdAl0ZXN0CXRlc3QKLQorQVhUaXRsZTogdGVzdHRlc3R0ZXN0dGVz
dHRlc3R0ZXN0CiBBWERlc2NyaXB0aW9uOiAKIEFYRm9jdXNlZDogMAogQVhFbmFibGVkOiAxCi1B
WFdpbmRvdzogPEFYQnV0dG9uOiAndGVzdAl0ZXN0CXRlc3QKLXRlc3QJdGVzdAl0ZXN0Ci0nPgor
QVhXaW5kb3c6IDxBWEJ1dHRvbjogJ3Rlc3R0ZXN0dGVzdHRlc3R0ZXN0dGVzdCc+CiBBWFNlbGVj
dGVkVGV4dE1hcmtlclJhbmdlOiAobnVsbCkKLUFYU3RhcnRUZXh0TWFya2VyOiA8QVhCdXR0b246
ICd0ZXN0CXRlc3QJdGVzdAotdGVzdAl0ZXN0CXRlc3QKLSc+Ci1BWEVuZFRleHRNYXJrZXI6IDxB
WEJ1dHRvbjogJ3Rlc3QJdGVzdAl0ZXN0Ci10ZXN0CXRlc3QJdGVzdAotJz4KK0FYU3RhcnRUZXh0
TWFya2VyOiA8QVhCdXR0b246ICd0ZXN0dGVzdHRlc3R0ZXN0dGVzdHRlc3QnPgorQVhFbmRUZXh0
TWFya2VyOiA8QVhCdXR0b246ICd0ZXN0dGVzdHRlc3R0ZXN0dGVzdHRlc3QnPgogQVhWaXNpdGVk
OiAwCiBBWExpbmtlZFVJRWxlbWVudHM6IChudWxsKQogQVhTZWxlY3RlZDogMAogQVhCbG9ja1F1
b3RlTGV2ZWw6IDAKLUFYVG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWEJ1dHRvbjogJ3Rlc3QJdGVzdAl0
ZXN0Ci10ZXN0CXRlc3QJdGVzdAotJz4KK0FYVG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWEJ1dHRvbjog
J3Rlc3R0ZXN0dGVzdHRlc3R0ZXN0dGVzdCc+CiBBWFRpdGxlVUlFbGVtZW50OiAobnVsbCkKIEFY
QWNjZXNzS2V5OiAobnVsbCkKIEFYQVJJQUJ1c3k6IDAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179795</attachid>
            <date>2012-12-17 13:41:35 -0800</date>
            <delta_ts>2012-12-17 13:47:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101650-20121217133853.patch</filename>
            <type>text/plain</type>
            <size>24863</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTIwZTYxYjZhMzYxZTI5
MWJmNTJlMmQ3MDFjMzJhYjQ1MjUwMDhlNy4uYjY1NWU3ZjMyZTM0YWZiYjdiN2E5YmU3ODVkYjU5
NDU3MGFiMmRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEyLTEzICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiB0ZXh0VW5k
ZXJFbGVtZW50IHNob3VsZCBjb25zaWRlciBhbHQgdGV4dCwgYnV0IHNraXAgbGlua3MgYW5kIGNv
bnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDE2NTAKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICBH
ZXR0aW5nIGlubmVyIHRleHQgZnJvbSBhbiBlbGVtZW50IG5vdyBpZ25vcmVzIGZvY3VzYWJsZSBk
ZXNjZW5kYW50cworICAgICAgICBhbmQgY29udGFpbmVycywgYnV0IHVzZXMgYWx0ZXJuYXRpdmUg
dGV4dC4gIFRoZSBjb21wdXRhdGlvbiBvZgorICAgICAgICB0ZXh0VW5kZXJFbGVtZW50IGlzIG5v
dyByZWN1cnNpdmUgYW5kIGRvZXNuJ3QgZGVwZW5kIG9uIHRleHQKKyAgICAgICAgaXRlcmF0b3Jz
LCB3aGljaCBtaWdodCBub3QgZG8gdGhlIHJpZ2h0IHRoaW5nIGZvciBhY2Nlc3NpYmlsaXR5Cisg
ICAgICAgIGFueXdheXMuCisKKyAgICAgICAgRm9yIEdUSywgdGhlIG9sZCBiZWhhdmlvciBpcyBy
ZXRhaW5lZCBzbyB0aGF0IHN1cHBvcnQgZm9yCisgICAgICAgIHRoZSBvYmplY3QgcmVwbGFjZW1l
bnQgY2hhcmFjdGVyIGlzIHN0aWxsIHRoZXJlLiBGaWxlZCBhIG5ldworICAgICAgICBidWcgKDEw
NTIxNCkgZm9yIEdUSyBmb2xrcyB0byBsb29rIGF0IHRoaXMuCisKKyAgICAgICAgVGVzdDogYWNj
ZXNzaWJpbGl0eS9idXR0b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0Lmh0bWwKKyAgICAgICAg
VGVzdDogYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2Lmh0bWwKKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRVc2VBY2Nlc3NpYmxpdHlPYmplY3RJbm5lclRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRleHRVbmRlckVs
ZW1lbnQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0ZXh0
VW5kZXJFbGVtZW50KToKKwogMjAxMi0xMi0xNyAgRWR1YXJkbyBMaW1hIE1pdGV2ICA8ZWxpbWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBVc2UgZ3N0X2VsZW1lbnRfbGlua19w
YWRzX2Z1bGwoKSB3aXRoIENIRUNLX05PVEhJTkcgZm9yIHNwZWVkIGFuZCBzYW5pdHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdC5jcHAKaW5kZXggMGU1Yzk3ODZiNGIwNzI0YjVjMTIxMDk4ZTkzNzEwYjQ1ZjVkOTliNC4u
MDhhMGQ3YjZjMmM1NGM0YWMwNGMzY2ZlMDlhMTc2MTkxNmVlODQ1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5j
cHAKQEAgLTE0MzQsMjAgKzE0MzQsNjIgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QKICAgICByZXR1cm4gbGV2ZWw7CiB9CiAKKy8v
IFdoZW4gYnVpbGRpbmcgdGhlIHRleHRVbmRlckVsZW1lbnQgZm9yIGFuIG9iamVjdCwgZGV0ZXJt
aW5lIHdoZXRoZXIgb3Igbm90CisvLyB3ZSBzaG91bGQgaW5jbHVkZSB0aGUgaW5uZXIgdGV4dCBv
ZiB0aGlzIGdpdmVuIGRlc2NlbmRhbnQgb2JqZWN0IG9yIHNraXAgaXQuCitzdGF0aWMgYm9vbCBz
aG91bGRVc2VBY2Nlc3NpYmxpdHlPYmplY3RJbm5lclRleHQoQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqKQoreworICAgIC8vIENvbnNpZGVyIHRoaXMgaHlwb3RoZXRpY2FsIGV4YW1wbGU6CisgICAg
Ly8gPGRpdiB0YWJpbmRleD0wPgorICAgIC8vICAgPGgyPgorICAgIC8vICAgICBUYWJsZSBvZiBj
b250ZW50cworICAgIC8vICAgPC9oMj4KKyAgICAvLyAgIDxhIGhyZWY9IiNzdGFydCI+SnVtcCB0
byBzdGFydCBvZiBib29rPC9hPgorICAgIC8vICAgPHVsPgorICAgIC8vICAgICA8bGk+PGEgaHJl
Zj0iIzEiPkNoYXB0ZXIgMTwvYT48L2xpPgorICAgIC8vICAgICA8bGk+PGEgaHJlZj0iIzEiPkNo
YXB0ZXIgMjwvYT48L2xpPgorICAgIC8vICAgPC91bD4KKyAgICAvLyA8L2Rpdj4KKyAgICAvLwor
ICAgIC8vIFRoZSBnb2FsIGlzIHRvIHJldHVybiBhIHJlYXNvbmFibGUgdGl0bGUgZm9yIHRoZSBv
dXRlciBjb250YWluZXIgZGl2LCBiZWNhdXNlCisgICAgLy8gaXQncyBmb2N1c2FibGUgLSBidXQg
d2l0aG91dCBtYWtpbmcgaXRzIHRpdGxlIGJlIHRoZSBmdWxsIGlubmVyIHRleHQsIHdoaWNoIGlz
CisgICAgLy8gcXVpdGUgbG9uZy4gQXMgYSBoZXVyaXN0aWMsIHNraXAgbGlua3MsIGNvbnRyb2xz
LCBhbmQgZWxlbWVudHMgdGhhdCBhcmUgdXN1YWxseQorICAgIC8vIGNvbnRhaW5lcnMgd2l0aCBs
b3RzIG9mIGNoaWxkcmVuLgorCisgICAgLy8gU2tpcCBmb2N1c2FibGUgY2hpbGRyZW4sIHNvIHdl
IGRvbid0IGluY2x1ZGUgdGhlIHRleHQgb2YgbGlua3MgYW5kIGNvbnRyb2xzLgorICAgIGlmIChv
YmotPmNhblNldEZvY3VzQXR0cmlidXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIFNraXAgYmlnIGNvbnRhaW5lciBlbGVtZW50cyBsaWtlIGxpc3RzLCB0YWJsZXMsIGV0Yy4K
KyAgICBpZiAob2JqLT5pc0xpc3QoKSB8fCBvYmotPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgfHwg
b2JqLT5pc1RyZWUoKSB8fCBvYmotPmlzQ2FudmFzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiB0cnVlOworfQorCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OnRleHRVbmRlckVsZW1lbnQoKSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2Rl
KCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICAvLyBO
b3RlOiBUZXh0SXRlcmF0b3IgZG9lc24ndCByZXR1cm4gYW55IHRleHQgZm9yIG5vZGVzIHRoYXQg
ZG9uJ3QgaGF2ZSByZW5kZXJlcnMuCi0gICAgLy8gSWYgdGhpcyBjb3VsZCBiZSBmaXhlZCwgaXQn
ZCBiZSBtb3JlIGFjY3VyYXRlIHVzZSBUZXh0SXRlcmF0b3IgaGVyZS4KLSAgICBpZiAobm9kZS0+
aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpLT5pbm5lclRl
eHQoKTsKLSAgICBlbHNlIGlmIChub2RlLT5pc1RleHROb2RlKCkpCisgICAgaWYgKG5vZGUgJiYg
bm9kZS0+aXNUZXh0Tm9kZSgpKQogICAgICAgICByZXR1cm4gdG9UZXh0KG5vZGUpLT53aG9sZVRl
eHQoKTsKLSAgICAKLSAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBTdHJpbmcgcmVzdWx0Owor
ICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICghc2hvdWxkVXNl
QWNjZXNzaWJsaXR5T2JqZWN0SW5uZXJUZXh0KGNoaWxkKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGlmIChjaGlsZC0+aXNBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpKSB7Cisg
ICAgICAgICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+IHRleHRPcmRlcjsKKyAgICAgICAg
ICAgIHRvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoY2hpbGQpLT5hbHRlcm5hdGl2ZVRleHQodGV4
dE9yZGVyKTsKKyAgICAgICAgICAgIGlmICh0ZXh0T3JkZXIuc2l6ZSgpID4gMCkgeworICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQodGV4dE9yZGVyWzBdLnRleHQpOworICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0
LmFwcGVuZChjaGlsZC0+dGV4dFVuZGVyRWxlbWVudCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRpdGxlKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGFmNTY4NmFjZTBmNjAzNGMzNjkyODNjMTE3ZWZm
YTk4MjE0MTg5MDEuLjk4Njc1YjFmNjQ5YThhMjBkMTIzN2Q5MDE1MmU3NTZhYWQyNzFjMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtNjI0LDEyICs2MjQsMTAgQEAgU3RyaW5nIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQoKSBjb25zdAogewogICAgIGlmICgh
bV9yZW5kZXJlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIAorCiAgICAgaWYgKG1f
cmVuZGVyZXItPmlzRmlsZVVwbG9hZENvbnRyb2woKSkKICAgICAgICAgcmV0dXJuIHRvUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2wobV9yZW5kZXJlciktPmJ1dHRvblZhbHVlKCk7CiAgICAgCi0gICAg
Tm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKLQogI2lmIEVOQUJMRShNQVRITUwpCiAg
ICAgLy8gTWF0aCBvcGVyYXRvcnMgY3JlYXRlIFJlbmRlclRleHQgbm9kZXMgb24gdGhlIGZseSB0
aGF0IGFyZSBub3QgdGllZCBpbnRvIHRoZSBET00gaW4gYSByZWFzb25hYmxlIHdheSwKICAgICAv
LyBzbyByYW5nZU9mQ29udGVudHMgZG9lcyBub3Qgd29yayBmb3IgdGhlbSAobm9yIGRvZXMgcmVn
dWxhciB0ZXh0IHNlbGVjdGlvbikuCkBAIC02NDAsOCArNjM4LDEzIEBAIFN0cmluZyBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KCkgY29uc3QKICAgICAgICAgfQog
ICAgIH0KICNlbmRpZgotICAgIAotICAgIGlmIChub2RlKSB7CisKKyNpZiBQTEFURk9STShHVEsp
CisgICAgLy8gT24gR1RLLCBhbHdheXMgdXNlIGEgdGV4dCBpdGVyYXRvciBpbiBvcmRlciB0byBn
ZXQgZW1iZWRkZWQgb2JqZWN0IGNoYXJhY3RlcnMuCisgICAgLy8gVE9ETzogQWRkIHN1cHBvcnQg
Zm9yIGVtYmVkZGVkIG9iamVjdCBjaGFyYWN0ZXJzIHRvIHRoZSBvdGhlciBjb2RlcGF0aHMgdGhh
dCB0cnkKKyAgICAvLyB0byBidWlsZCB0aGUgYWNjZXNzaWJsZSB0ZXh0IHJlY3Vyc2l2ZWx5LCBz
byB0aGlzIHNwZWNpYWwgY2FzZSBpc24ndCBuZWVkZWQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTIxNAorICAgIGlmIChOb2RlKiBub2RlID0gdGhp
cy0+bm9kZSgpKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgp
LT5mcmFtZSgpKSB7CiAgICAgICAgICAgICAvLyBjYXRjaCBzdGFsZSBXZWJDb3JlQVhPYmplY3Qg
KHNlZSA8cmRhcjovL3Byb2JsZW0vMzk2MDE5Nj4pCiAgICAgICAgICAgICBpZiAoZnJhbWUtPmRv
Y3VtZW50KCkgIT0gbm9kZS0+ZG9jdW1lbnQoKSkKQEAgLTY1MCwxOCArNjUzLDI5IEBAIFN0cmlu
ZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KCkgY29uc3QKICAg
ICAgICAgICAgIHJldHVybiBwbGFpblRleHQocmFuZ2VPZkNvbnRlbnRzKG5vZGUpLmdldCgpLCB0
ZXh0SXRlcmF0b3JCZWhhdmlvckZvclRleHRSYW5nZSgpKTsKICAgICAgICAgfQogICAgIH0KLSAg
ICAKLSAgICAvLyBTb21ldGltZXMgdGV4dCBmcmFnbWVudHMgZG9uJ3QgaGF2ZSBOb2RlJ3MgYXNz
b2NpYXRlZCB3aXRoIHRoZW0gKGxpa2Ugd2hlbgotICAgIC8vIENTUyBjb250ZW50IGlzIHVzZWQg
dG8gaW5zZXJ0IHRleHQpLgorI2VuZGlmCisKICAgICBpZiAobV9yZW5kZXJlci0+aXNUZXh0KCkp
IHsKKyAgICAgICAgLy8gSWYgcG9zc2libGUsIHVzZSBhIHRleHQgaXRlcmF0b3IgdG8gZ2V0IHRo
ZSB0ZXh0LCBzbyB0aGF0IHdoaXRlc3BhY2UKKyAgICAgICAgLy8gaXMgaGFuZGxlZCBjb25zaXN0
ZW50bHkuCisgICAgICAgIGlmIChOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpKSB7CisgICAgICAg
ICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgeworICAg
ICAgICAgICAgICAgIC8vIGNhdGNoIHN0YWxlIFdlYkNvcmVBWE9iamVjdCAoc2VlIDxyZGFyOi8v
cHJvYmxlbS8zOTYwMTk2PikKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkg
IT0gbm9kZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygp
OworCisgICAgICAgICAgICAgICAgcmV0dXJuIHBsYWluVGV4dChyYW5nZU9mQ29udGVudHMobm9k
ZSkuZ2V0KCksIHRleHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgCisgICAgICAgIC8vIFNvbWV0aW1lcyB0ZXh0IGZyYWdtZW50
cyBkb24ndCBoYXZlIE5vZGVzIGFzc29jaWF0ZWQgd2l0aCB0aGVtIChsaWtlIHdoZW4KKyAgICAg
ICAgLy8gQ1NTIGNvbnRlbnQgaXMgdXNlZCB0byBpbnNlcnQgdGV4dCkuCiAgICAgICAgIFJlbmRl
clRleHQqIHJlbmRlclRleHRPYmplY3QgPSB0b1JlbmRlclRleHQobV9yZW5kZXJlcik7CiAgICAg
ICAgIGlmIChyZW5kZXJUZXh0T2JqZWN0LT5pc1RleHRGcmFnbWVudCgpKQogICAgICAgICAgICAg
cmV0dXJuIFN0cmluZyhzdGF0aWNfY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQqPihtX3JlbmRlcmVy
KS0+Y29udGVudFN0cmluZygpKTsKICAgICB9CiAgICAgCi0gICAgLy8gcmV0dXJuIHRoZSBudWxs
IHN0cmluZyBmb3IgYW5vbnltb3VzIHRleHQgYmVjYXVzZSBpdCBpcyBub24tdHJpdmlhbCB0byBn
ZXQKLSAgICAvLyB0aGUgYWN0dWFsIHRleHQgYW5kLCBzbyBmYXIsIHRoYXQgaXMgbm90IG5lZWRl
ZAotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OnRleHRVbmRlckVsZW1lbnQoKTsKIH0KIAogTm9kZSogQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6bm9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTI2ZDI2MzA0YTlhNDA3MzA3M2E4ZTE5NzQ0MjRj
MmMzYjI5NzEzNy4uNDNlNjkxMTYxODRhZDhjMmYwNzUyNWM1YmY5MjllM2E2YjM2MTI2ZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEyLTEzICBEb21pbmljIE1henpvbmkgIDxkbWF6em9u
aUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiB0ZXh0VW5kZXJFbGVtZW50IHNob3VsZCBjb25z
aWRlciBhbHQgdGV4dCwgYnV0IHNraXAgbGlua3MgYW5kIGNvbnRyb2xzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE2NTAKKworICAgICAgICBSZXZp
ZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICBBZGRzIG5ldyB0ZXN0cyB0byBzaG93
IHRoYXQgZ2V0dGluZyBpbm5lciB0ZXh0IGZyb20gYW4gZWxlbWVudAorICAgICAgICBub3cgaWdu
b3JlcyBmb2N1c2FibGUgZGVzY2VuZGFudHMgYW5kIGNvbnRhaW5lcnMsIGJ1dCB1c2VzIGFsdGVy
bmF0aXZlCisgICAgICAgIHRleHQuCisKKyAgICAgICAgVXBkYXRlcyBhbmQgcmViYXNlbGluZXMg
c2V2ZXJhbCB0ZXN0cyB0byByZWZsZWN0IHRoZSBuZXcgbG9naWMuCisgICAgICAgIFNraXBzIHRo
ZXNlIHRlc3RzIG9uIEdUSyB1bnRpbCBzdXBwb3J0IGZvciB0aGUgb2JqZWN0IHJlcGxhY2VtZW50
CisgICAgICAgIGNoYXJhY3RlciBjYW4gYmUgYWRkZWQuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2J1dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1hbHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2J1dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1hbHQu
aHRtbDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2LWV4cGVj
dGVkLnR4dDogRXh0ZW5kZWQgd2l0aCBtb3JlIHRlc3QgY2FzZXMuCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9mb2N1c2FibGUtZGl2Lmh0bWw6IEV4dGVuZGVkIHdpdGggbW9yZSB0ZXN0IGNhc2Vz
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6IFVuLXNraXAg
dGVzdCB0aGF0IG5vdyBwYXNzZXMuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNz
aWJpbGl0eS9pbWFnZS1saW5rLWV4cGVjdGVkLnR4dDogUmViYXNlbGluZQorICAgICAgICAqIHBs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2ltYWdlLWxpbmstZXhwZWN0ZWQudHh0OiBSZWJhc2Vs
aW5lCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW50ZXJuYWwtbGluay1h
bmNob3JzMi1leHBlY3RlZC50eHQ6IFJlYmFzZWxpbmUKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS9zdGF0aWMtdGV4dC1yb2xlLXVzZXMtdGV4dC11bmRlci1lbGVtZW50LWV4
cGVjdGVkLnR4dDogUmViYXNlbGluZQorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L3N0YXRpYy10ZXh0LXJvbGUtdXNlcy10ZXh0LXVuZGVyLWVsZW1lbnQuaHRtbDogRml4Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1hcmlhLXJvbGUt
ZXhwZWN0ZWQudHh0OiBSZWJhc2VsaW5lCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBl
Y3RhdGlvbnM6IFNraXAgdGhlc2UgdGVzdHMgdW50aWwgdGhpcyBmZWF0dXJlIGlzIGltcGxlbWVu
dGVkIGZvciBHVEsuCisKIDIwMTItMTItMTcgIEJlbSBKb25lcy1CZXkgIDxiam9uZXNiZUBhZG9i
ZS5jb20+CiAKICAgICAgICAgW0NTUyBFeGNsdXNpb25zXSBGbG9hdHMgc2hvdWxkIHJlc3BlY3Qg
c2hhcGUtaW5zaWRlIG9uIGV4Y2x1c2lvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvYnV0dG9uLXRpdGxlLXVzZXMtaW5uZXItaW1nLWFsdC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2J1dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1hbHQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4MzY3YTc3MTgxNzI1NjFjOGZmMThmNDhjZGE1YjRk
ZGJkODE1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2J1
dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1hbHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIg
QEAKK0J1dHRvbiB3aXRoIGltYWdlIG9mIAorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdl
bmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdldHMg
aXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLi4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBidXR0b24gaXMgdHJ1
ZQorUEFTUyBheEJ1dHRvbi50aXRsZS5pbmRleE9mKCdCdXR0b24gd2l0aCBpbWFnZSBvZiBjYWtl
JykgPj0gMCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9idXR0b24t
dGl0bGUtdXNlcy1pbm5lci1pbWctYWx0Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2J1dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1hbHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWEyNGU4
M2U5MGU0NWE2NDc3OWYwZTNmZDIxM2U1OTFkNmJlNWM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9idXR0b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0Lmh0
bWwKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KworPHN0eWxlPgorYnV0dG9uIHsKKyAgcGFkZGluZzogMzBweDsKK30KKzwvc3R5bGU+CisKKzxi
dXR0b24gaWQ9ImNha2UiPkJ1dHRvbiB3aXRoIGltYWdlIG9mIDxpbWcgYWx0PSJjYWtlIiBzcmM9
InJlc291cmNlcy9jYWtlLnBuZyIgd2lkdGg9IjQwcHgiPjwvYnV0dG9uPgorCis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1
cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9j
dXMgYW5kIGdldHMgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLi4iKTsKKworaWYg
KHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewor
ICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciBidXR0b24gPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FrZScpOworICAgIGJ1dHRvbi5mb2N1cygpOworICAg
IHNob3VsZEJlKCJkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGJ1dHRvbiIsICJ0cnVlIik7Cisg
ICAgd2luZG93LmF4QnV0dG9uID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQ7CisgICAgc2hvdWxkQmUoImF4QnV0dG9uLnRpdGxlLmluZGV4T2YoJ0J1dHRvbiB3aXRoIGlt
YWdlIG9mIGNha2UnKSA+PSAwIiwgInRydWUiKTsKK30KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9mb2N1
c2FibGUtZGl2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNh
YmxlLWRpdi1leHBlY3RlZC50eHQKaW5kZXggZDM4NDQyNjAwZGM0ZjIzNzc3NWZkYmJlZGM2ZTQ5
Mzc3OWQ4YjZkMi4uZGM0ODAzOGQ2NGE4YmU1YmY0MjNjNzY5NThjM2M4NTI0MmYwNWRhNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ZvY3VzYWJsZS1kaXYtZXhwZWN0
ZWQudHh0CkBAIC0xLDcgKzEsMTIgQEAKIEEKIEIKIEMKLVRoaXMgdGVzdCBtYWtlcyBzdXJlIHRo
YXQgYSBnZW5lcmljIGZvY3VzYWJsZSBkaXYgY2FuIGdldCBhY2Nlc3NpYmlsaXR5IGZvY3VzLgor
TGluaworSW5pdGlhbCB0ZXh0IGJlZm9yZSBsaW5rTGluaworTGlzdCBpdGVtCitJbml0aWFsIHRl
eHQgYmVmb3JlIGxpc3QKK0xpc3QgaXRlbQorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdl
bmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdldHMg
aXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLi4KIAogT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgogCkBAIC0xNCw2ICsxOSwxNiBAQCBQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQg
PT0gZGl2MiBpcyB0cnVlCiBQQVNTIGxhc3RDaGFyKGF4RGl2Mi50aXRsZSkgaXMgIkMiCiBQQVNT
IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZGl2MyBpcyB0cnVlCiBQQVNTIGxhc3RDaGFyKGF4
RGl2My5kZXNjcmlwdGlvbikgaXMgIkQiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0g
ZGl2NCBpcyB0cnVlCitQQVNTIGF4RGl2NC50aXRsZS5pbmRleE9mKCdMaW5rJykgaXMgLTEKK1BB
U1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkaXY1IGlzIHRydWUKK1BBU1MgYXhEaXY1LnRp
dGxlLmluZGV4T2YoJ0xpbmsnKSBpcyAtMQorUEFTUyBheERpdjUudGl0bGUuaW5kZXhPZignSW5p
dGlhbCB0ZXh0IGJlZm9yZSBsaW5rJykgPj0gMCBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmFjdGl2
ZUVsZW1lbnQgPT0gZGl2NiBpcyB0cnVlCitQQVNTIGF4RGl2Ni50aXRsZS5pbmRleE9mKCdMaXN0
IGl0ZW0nKSBpcyAtMQorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjcgaXMgdHJ1
ZQorUEFTUyBheERpdjcudGl0bGUuaW5kZXhPZignTGlzdCBpdGVtJykgaXMgLTEKK1BBU1MgYXhE
aXY3LnRpdGxlLmluZGV4T2YoJ0luaXRpYWwgdGV4dCBiZWZvcmUgbGlzdCcpID49IDAgaXMgdHJ1
ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ZvY3VzYWJsZS1kaXYuaHRtbCBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi5odG1sCmluZGV4IGFkZmZmYmY0
M2I5ZjI3YzFlMWI1OWYyM2RiMzM0YmEzOGMwZDkwZTAuLjIwOWQyYTQ2ZDhhYzM3YjQxYmY1M2Qy
MDk4MDg0MTAxY2ViMzk1N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
Zm9jdXNhYmxlLWRpdi5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNh
YmxlLWRpdi5odG1sCkBAIC0zLDE0ICszLDIzIEBACiA8Ym9keT4KIDxzY3JpcHQgc3JjPSIuLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiAKKzwhLS0gQSBsaW5r
IGFsd2F5cyBnZXRzIGl0cyBhY2Nlc3NpYmxlIHRleHQgZnJvbSBjb250ZW50cy4gLS0+CiA8YSBp
ZD0ibGluayIgaHJlZj0iIyI+QTwvYT4KKworPCEtLSBBIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBz
aG91bGQgYWxzbyBnZXQgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLiAtLT4KIDxk
aXYgaWQ9ImRpdiIgdGFiaW5kZXg9IjAiPkI8L2Rpdj4KIDxkaXYgaWQ9ImRpdjIiIHRhYmluZGV4
PSIwIj48ZGl2PjwvZGl2PkM8L2Rpdj4KIDxkaXYgaWQ9ImRpdjMiIHRhYmluZGV4PSIwIiBhcmlh
LWxhYmVsPSJEIj48L2Rpdj4KIAorPCEtLSBBIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBzaG91bGQg
bm90IGdldCBhY2Nlc3NpYmxlIHRleHQgZnJvbSBjaGlsZHJlbiB0aGF0IGFyZSBmb2N1c2FibGUg
b3IgY29udGFpbmVycy4gLS0+Cis8ZGl2IGlkPSJkaXY0IiB0YWJpbmRleD0iMCI+PGEgaHJlZj0i
IyI+TGluazwvYT48L2Rpdj4KKzxkaXYgaWQ9ImRpdjUiIHRhYmluZGV4PSIwIj5Jbml0aWFsIHRl
eHQgYmVmb3JlIGxpbms8YSBocmVmPSIjIj5MaW5rPC9hPjwvZGl2PgorPGRpdiBpZD0iZGl2NiIg
dGFiaW5kZXg9IjAiPjx1bD48bGk+TGlzdCBpdGVtPC9saT48L3VsPjwvZGl2PgorPGRpdiBpZD0i
ZGl2NyIgdGFiaW5kZXg9IjAiPkluaXRpYWwgdGV4dCBiZWZvcmUgbGlzdDx1bD48bGk+TGlzdCBp
dGVtPC9saT48L3VsPjwvZGl2PgorCiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+
Ci1kZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNh
YmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMuIik7CitkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFj
Y2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdldHMgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRl
bnRzLi4iKTsKIAogaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcikgewogICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKQEAgLTQy
LDYgKzUxLDMyIEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKICAgICBzaG91bGRCZSgiZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBk
aXYzIiwgInRydWUiKTsKICAgICB3aW5kb3cuYXhEaXYzID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQ7CiAgICAgc2hvdWxkQmUoImxhc3RDaGFyKGF4RGl2My5kZXNjcmlw
dGlvbikiLCAiXCJEXCIiKTsKKworICAgIHZhciBkaXY0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2RpdjQnKTsKKyAgICBkaXY0LmZvY3VzKCk7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmFj
dGl2ZUVsZW1lbnQgPT0gZGl2NCIsICJ0cnVlIik7CisgICAgd2luZG93LmF4RGl2NCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIHNob3VsZEJlKCJheERpdjQu
dGl0bGUuaW5kZXhPZignTGluaycpIiwgIi0xIik7CisKKyAgICB2YXIgZGl2NSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdkaXY1Jyk7CisgICAgZGl2NS5mb2N1cygpOworICAgIHNob3VsZEJl
KCJkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjUiLCAidHJ1ZSIpOworICAgIHdpbmRvdy5h
eERpdjUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBzaG91
bGRCZSgiYXhEaXY1LnRpdGxlLmluZGV4T2YoJ0xpbmsnKSIsICItMSIpOworICAgIHNob3VsZEJl
KCJheERpdjUudGl0bGUuaW5kZXhPZignSW5pdGlhbCB0ZXh0IGJlZm9yZSBsaW5rJykgPj0gMCIs
ICJ0cnVlIik7CisKKyAgICB2YXIgZGl2NiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXY2
Jyk7CisgICAgZGl2Ni5mb2N1cygpOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5hY3RpdmVFbGVt
ZW50ID09IGRpdjYiLCAidHJ1ZSIpOworICAgIHdpbmRvdy5heERpdjYgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBzaG91bGRCZSgiYXhEaXY2LnRpdGxlLmlu
ZGV4T2YoJ0xpc3QgaXRlbScpIiwgIi0xIik7CisKKyAgICB2YXIgZGl2NyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdkaXY3Jyk7CisgICAgZGl2Ny5mb2N1cygpOworICAgIHNob3VsZEJlKCJk
b2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjciLCAidHJ1ZSIpOworICAgIHdpbmRvdy5heERp
djcgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBzaG91bGRC
ZSgiYXhEaXY3LnRpdGxlLmluZGV4T2YoJ0xpc3QgaXRlbScpIiwgIi0xIik7CisgICAgc2hvdWxk
QmUoImF4RGl2Ny50aXRsZS5pbmRleE9mKCdJbml0aWFsIHRleHQgYmVmb3JlIGxpc3QnKSA+PSAw
IiwgInRydWUiKTsKIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhZGNjNDIzYjg4NjQ1ZWMxMmIzZTZlNzMxZmU0
NjRjM2Q5YTNiNjgyLi5mYWE2MGU5Y2NhZDlhYjFjYjYwY2JkYWU1ZmJkOGMyY2I5NWRlOGU2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTEzOTgsNyArMTM5OCw2IEBAIGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2FyaWEtdXNl
ZC1vbi1pbWFnZS1tYXBzLmh0bWwgWyBTa2lwIF0KIGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmls
aXR5L2RlbGV0aW5nLWlmcmFtZS1kZXN0cm95cy1heGNhY2hlLmh0bWwgWyBTa2lwIF0KIGNyYnVn
LmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2RvY3VtZW50LWF0dHJpYnV0ZXMuaHRtbCBbIFNraXAg
XQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvaWZyYW1lLWJhc3RhcmRpemF0aW9uLmh0
bWwgWyBTa2lwIF0KLWNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2ltYWdlLWxpbmsuaHRt
bCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvaW1hZ2UtbWFwLXVwZGF0
ZS1wYXJlbnQtY3Jhc2guaHRtbCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxp
dHkvaW1hZ2UtbWFwMi5odG1sIFsgU2tpcCBdCiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0
eS9pbnRlcm5hbC1saW5rLWFuY2hvcnMyLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbGluay1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2ltYWdl
LWxpbmstZXhwZWN0ZWQudHh0CmluZGV4IGExY2Q5MGJlYzMzZjhhZjFkYTkwOTRmNjQ3N2RmMDRl
NDIwOWRjNGMuLjkzMWRiYmJjZGVmMDEyYTYyZWJlNjY2MGY4OTJhMzc4ZmIwNmFlOTAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaW1hZ2Ut
bGluay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNj
ZXNzaWJpbGl0eS9pbWFnZS1saW5rLWV4cGVjdGVkLnR4dApAQCAtMyw1NSArMywxMyBAQCBJbWFn
ZSBsaW5rIGluIHRoZSBwcmVzZW5jZSBvZiBpbmxpbmUgY29udGludWF0aW9ucwogVGhpcyB0ZXN0
IGNoZWNrcyB0aGF0IHRoZSByaWdodCBhY2Nlc3NpYmlsaXR5IHRyZWUgaXMgZ2VuZXJhdGVkIGZv
ciBhIGxpbmsgaW5zaWRlIGFuIGltYWdlCiAKIAorQVhUaXRsZTogRGVsaWNpb3VzIGNha2UKIEFY
Um9sZTogQVhMaW5rCi1BWFN1YnJvbGU6IChudWxsKQotQVhSb2xlRGVzY3JpcHRpb246IGxpbmsK
LUFYQ2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDE+Ci1BWEhlbHA6IAotQVhQYXJlbnQ6IDxBWExp
bms+Ci1BWFNpemU6IE5TU2l6ZTogezI4MCwgMjEzfQotQVhUaXRsZTogCiBBWERlc2NyaXB0aW9u
OiAKLUFYVmFsdWU6IAotQVhGb2N1c2VkOiAxCi1BWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhM
aW5rPgotQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtl
cjogPEFYTGluaz4KLUFYRW5kVGV4dE1hcmtlcjogPEFYTGluaz4KLUFYVmlzaXRlZDogMAotQVhM
aW5rZWRVSUVsZW1lbnRzOiAobnVsbCkKLUFYU2VsZWN0ZWQ6IDAKLUFYQmxvY2tRdW90ZUxldmVs
OiAwCi1BWFRvcExldmVsVUlFbGVtZW50OiA8QVhMaW5rPgotQVhVUkw6IGh0dHA6Ly93d3cud293
aGVhZC5jb20vP2l0ZW09MzM5MjQKLUFYQWNjZXNzS2V5OiAobnVsbCkKLQogCiBDaGlsZCAwOgot
QVhSb2xlOiBBWEltYWdlCi1BWFN1YnJvbGU6IChudWxsKQotQVhSb2xlRGVzY3JpcHRpb246IGlt
YWdlCi1BWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAwPgotQVhIZWxwOiAKLUFYUGFyZW50OiA8
QVhJbWFnZT4KLUFYU2l6ZTogTlNTaXplOiB7MjgwLCAyMDl9CiBBWFRpdGxlOiAKK0FYUm9sZTog
QVhJbWFnZQogQVhEZXNjcmlwdGlvbjogRGVsaWNpb3VzIGNha2UKLUFYVmFsdWU6IAotQVhGb2N1
c2VkOiAwCi1BWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhJbWFnZT4KLUFYU2VsZWN0ZWRUZXh0
TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRNYXJrZXI6IDxBWEltYWdlPgotQVhFbmRU
ZXh0TWFya2VyOiA8QVhJbWFnZT4KLUFYVmlzaXRlZDogMAotQVhMaW5rZWRVSUVsZW1lbnRzOiAo
bnVsbCkKLUFYU2VsZWN0ZWQ6IDAKLUFYQmxvY2tRdW90ZUxldmVsOiAwCi1BWFRvcExldmVsVUlF
bGVtZW50OiA8QVhJbWFnZT4KLUFYVVJMOiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Jlc291
cmNlcy9jYWtlLnBuZwotQVhBY2Nlc3NLZXk6IChudWxsKQotCiAKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkYTc4OGE1MGU4ZmY4ZWFkNzk1ZmRjYWJl
NmU5ZDA0YWM3MDZlZGM0Li4zMzkyYTM5ZWE0Yjg2MjBiMGViZGFjM2Q4ZjM4MjM3MTYzMWQ1YzA5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzcyLDcg
Kzc3Miw5IEBAIHdlYmtpdC5vcmcvYi85ODM1OCBhY2Nlc3NpYmlsaXR5L2FyaWEtc2Nyb2xsYmFy
LXJvbGUuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzk4MzU5IGFjY2Vzc2liaWxpdHkv
YXJpYS10ZXh0LXJvbGUuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzk4MzYwIGFjY2Vz
c2liaWxpdHkvYXJpYS11c2VkLW9uLWltYWdlLW1hcHMuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzk4MzYxIGFjY2Vzc2liaWxpdHkvYnV0dG9uLXByZXNzLWFjdGlvbi5odG1sIFsgRmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvMTA1MjE0IGFjY2Vzc2liaWxpdHkvYnV0dG9uLXRpdGxlLXVz
ZXMtaW5uZXItaW1nLWFsdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTgzNjMgYWNj
ZXNzaWJpbGl0eS9jYW52YXMtZmFsbGJhY2stY29udGVudC0yLmh0bWwgWyBGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi8xMDUyMTQgYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2Lmh0bWwgWyBGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi85ODM3MCBhY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZyYW1lLXNl
bmRzLW5vdGlmaWNhdGlvbi5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTgzNzEgYWNj
ZXNzaWJpbGl0eS9sb2FkaW5nLWlmcmFtZS11cGRhdGVzLWF4dHJlZS5odG1sIFsgRmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvOTgzNzIgYWNjZXNzaWJpbGl0eS9vbmNsaWNrLWhhbmRsZXJzLmh0bWwg
WyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L2ltYWdlLWxpbmstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvaW1hZ2UtbGluay1leHBlY3RlZC50eHQKaW5kZXggOWRjOWUyODIyZTFm
ZjM1NzliM2VjMWQ3ZmI2OWE1ZDU4OTcyODYxZi4uZmMwNmI1MDUyMmYyN2E1ZjE1OGYzMTcxZTIy
MzU3MzhlMzVkMmQxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvaW1hZ2UtbGluay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbGluay1leHBlY3RlZC50eHQKQEAgLTgsMjIgKzgs
MjIgQEAgQVhTdWJyb2xlOiAobnVsbCkKIEFYUm9sZURlc2NyaXB0aW9uOiBsaW5rCiBBWENoaWxk
cmVuOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhIZWxwOiAKLUFYUGFyZW50OiA8QVhMaW5rPgorQVhQ
YXJlbnQ6IDxBWExpbms6ICdEZWxpY2lvdXMgY2FrZSc+CiBBWFNpemU6IE5TU2l6ZTogezI4MCwg
MjEzfQotQVhUaXRsZTogCitBWFRpdGxlOiBEZWxpY2lvdXMgY2FrZQogQVhEZXNjcmlwdGlvbjog
CiBBWFZhbHVlOiAKIEFYRm9jdXNlZDogMQogQVhFbmFibGVkOiAxCi1BWFdpbmRvdzogPEFYTGlu
az4KK0FYV2luZG93OiA8QVhMaW5rOiAnRGVsaWNpb3VzIGNha2UnPgogQVhTZWxlY3RlZFRleHRN
YXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogPEFYTGluaz4KLUFYRW5kVGV4
dE1hcmtlcjogPEFYTGluaz4KK0FYU3RhcnRUZXh0TWFya2VyOiA8QVhMaW5rOiAnRGVsaWNpb3Vz
IGNha2UnPgorQVhFbmRUZXh0TWFya2VyOiA8QVhMaW5rOiAnRGVsaWNpb3VzIGNha2UnPgogQVhW
aXNpdGVkOiAwCiBBWExpbmtlZFVJRWxlbWVudHM6IChudWxsKQogQVhTZWxlY3RlZDogMAogQVhC
bG9ja1F1b3RlTGV2ZWw6IDAKLUFYVG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWExpbms+CitBWFRvcExl
dmVsVUlFbGVtZW50OiA8QVhMaW5rOiAnRGVsaWNpb3VzIGNha2UnPgogQVhVUkw6IGh0dHA6Ly93
d3cud293aGVhZC5jb20vP2l0ZW09MzM5MjQKIEFYQWNjZXNzS2V5OiAobnVsbCkKIEFYQVJJQUJ1
c3k6IDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L2ludGVybmFsLWxpbmstYW5jaG9yczItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvaW50ZXJuYWwtbGluay1hbmNob3JzMi1leHBlY3RlZC50eHQK
aW5kZXggMzBiZjY4NmM4NDFiNjEyZWFlODg1NmMwMjg3MjgyNGI2ZDExYTFmYy4uMzA1NDI0OWFk
NzI5NDJjYmY0NTJlZTE3ZGMxMzk1OTRhZjAxMWM5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW50ZXJuYWwtbGluay1hbmNob3JzMi1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW50ZXJu
YWwtbGluay1hbmNob3JzMi1leHBlY3RlZC50eHQKQEAgLTUsMTcgKzUsMTcgQEAgQVhTdWJyb2xl
OiAobnVsbCkKIEFYUm9sZURlc2NyaXB0aW9uOiBoZWFkaW5nCiBBWENoaWxkcmVuOiA8YXJyYXkg
b2Ygc2l6ZSA0PgogQVhIZWxwOiAKLUFYUGFyZW50OiA8QVhIZWFkaW5nOiAnW2VkaXRdIFRvdXJl
dHRlIHN5bmRyb21lJz4KK0FYUGFyZW50OiA8QVhIZWFkaW5nOiAnW10gVG91cmV0dGUgc3luZHJv
bWUnPgogQVhTaXplOiBOU1NpemU6IHs3NjksIDIyfQotQVhUaXRsZTogW2VkaXRdIFRvdXJldHRl
IHN5bmRyb21lCitBWFRpdGxlOiBbXSBUb3VyZXR0ZSBzeW5kcm9tZQogQVhEZXNjcmlwdGlvbjog
CiBBWFZhbHVlOiAzCiBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQotQVhXaW5kb3c6IDxBWEhl
YWRpbmc6ICdbZWRpdF0gVG91cmV0dGUgc3luZHJvbWUnPgorQVhXaW5kb3c6IDxBWEhlYWRpbmc6
ICdbXSBUb3VyZXR0ZSBzeW5kcm9tZSc+CiBBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVs
bCkKLUFYU3RhcnRUZXh0TWFya2VyOiA8QVhIZWFkaW5nOiAnW2VkaXRdIFRvdXJldHRlIHN5bmRy
b21lJz4KLUFYRW5kVGV4dE1hcmtlcjogPEFYSGVhZGluZzogJ1tlZGl0XSBUb3VyZXR0ZSBzeW5k
cm9tZSc+CitBWFN0YXJ0VGV4dE1hcmtlcjogPEFYSGVhZGluZzogJ1tdIFRvdXJldHRlIHN5bmRy
b21lJz4KK0FYRW5kVGV4dE1hcmtlcjogPEFYSGVhZGluZzogJ1tdIFRvdXJldHRlIHN5bmRyb21l
Jz4KIEFYVmlzaXRlZDogMAogQVhMaW5rZWRVSUVsZW1lbnRzOiAobnVsbCkKIEFYU2VsZWN0ZWQ6
IDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N0
YXRpYy10ZXh0LXJvbGUtdXNlcy10ZXh0LXVuZGVyLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3RhdGljLXRleHQtcm9sZS11c2Vz
LXRleHQtdW5kZXItZWxlbWVudC1leHBlY3RlZC50eHQKaW5kZXggZDBiN2M1NjNkYzRlYTc3ZTBl
ZmYyOTJiN2ZmMGFjMTE0ZWNmMTQ0Mi4uNTVlY2U3YWYwMzY5YTU0OTY4ZDc5NTU2ZWU2NTBiZTQ5
N2Y0MDJjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvc3RhdGljLXRleHQtcm9sZS11c2VzLXRleHQtdW5kZXItZWxlbWVudC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3RhdGljLXRleHQt
cm9sZS11c2VzLXRleHQtdW5kZXItZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTQsNyArNCw3IEBA
IFRoaXMgdGVzdHMgdGhhdCBpZiBhbiBlbGVtZW50IHVzZXMgdGhlICd0ZXh0JyByb2xlIGJ1dCBk
b2VzIG5vdCB1c2UgYW4gYXJpYS1sYWJlCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAot
UEFTUyB0ZXh0LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBUZXh0IDEgVGV4dCAyIFRleHQgMycK
K1BBU1MgdGV4dC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogICBUZXh0IDMnCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N0YXRpYy10ZXh0LXJvbGUtdXNlcy10
ZXh0LXVuZGVyLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L3N0YXRpYy10ZXh0LXJvbGUtdXNlcy10ZXh0LXVuZGVyLWVsZW1lbnQuaHRtbAppbmRl
eCBmZmYxYjBhZmZkNTk5NzNjOGJhNDRiMThlOWRlYTM1NzE3MzcwNmVjLi43YjUyOGRkMzNlZmEz
OTY2ZjBlZTk3YzBiYzYyNTlmN2YxZjcxMDAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGF0aWMtdGV4dC1yb2xlLXVzZXMtdGV4dC11bmRlci1l
bGVtZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
c3RhdGljLXRleHQtcm9sZS11c2VzLXRleHQtdW5kZXItZWxlbWVudC5odG1sCkBAIC0yNiw3ICsy
Niw3IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0MSIp
LmZvY3VzKCk7CiAgICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQ7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ1ZhbHVlIiwgIidBWFZh
bHVlOiBUZXh0IDEgVGV4dCAyIFRleHQgMyciKTsKKyAgICAgICAgc2hvdWxkQmUoInRleHQuc3Ry
aW5nVmFsdWUiLCAiJ0FYVmFsdWU6ICAgVGV4dCAzJyIpOwogICAgIH0KIAogPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS13
aXRoLWFyaWEtcm9sZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS90YWJsZS13aXRoLWFyaWEtcm9sZS1leHBlY3RlZC50eHQKaW5kZXggMDU4Njdm
ZjEzNDQ5ZmZlY2JiMzkwNDFhZTJmM2UzODA4ODc2MjdiNS4uMjI1MDQ0OGY0NjNhZWY0ZDJhOTkz
YjBmMDUwZmJiMTNhZWExZjVhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1hcmlhLXJvbGUtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtYXJpYS1yb2xl
LWV4cGVjdGVkLnR4dApAQCAtNywzMyArNywyMSBAQCBBWFN1YnJvbGU6IChudWxsKQogQVhSb2xl
RGVzY3JpcHRpb246IGJ1dHRvbgogQVhDaGlsZHJlbjogPGFycmF5IG9mIHNpemUgMD4KIEFYSGVs
cDogCi1BWFBhcmVudDogPEFYQnV0dG9uOiAndGVzdAl0ZXN0CXRlc3QKLXRlc3QJdGVzdAl0ZXN0
Ci0nPgorQVhQYXJlbnQ6IDxBWEJ1dHRvbjogJ3Rlc3R0ZXN0dGVzdHRlc3R0ZXN0dGVzdCc+CiBB
WFNpemU6IE5TU2l6ZTogezg1LCA1Mn0KLUFYVGl0bGU6IHRlc3QJdGVzdAl0ZXN0Ci10ZXN0CXRl
c3QJdGVzdAotCitBWFRpdGxlOiB0ZXN0dGVzdHRlc3R0ZXN0dGVzdHRlc3QKIEFYRGVzY3JpcHRp
b246IAogQVhGb2N1c2VkOiAwCiBBWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhCdXR0b246ICd0
ZXN0CXRlc3QJdGVzdAotdGVzdAl0ZXN0CXRlc3QKLSc+CitBWFdpbmRvdzogPEFYQnV0dG9uOiAn
dGVzdHRlc3R0ZXN0dGVzdHRlc3R0ZXN0Jz4KIEFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2U6IChu
dWxsKQotQVhTdGFydFRleHRNYXJrZXI6IDxBWEJ1dHRvbjogJ3Rlc3QJdGVzdAl0ZXN0Ci10ZXN0
CXRlc3QJdGVzdAotJz4KLUFYRW5kVGV4dE1hcmtlcjogPEFYQnV0dG9uOiAndGVzdAl0ZXN0CXRl
c3QKLXRlc3QJdGVzdAl0ZXN0Ci0nPgorQVhTdGFydFRleHRNYXJrZXI6IDxBWEJ1dHRvbjogJ3Rl
c3R0ZXN0dGVzdHRlc3R0ZXN0dGVzdCc+CitBWEVuZFRleHRNYXJrZXI6IDxBWEJ1dHRvbjogJ3Rl
c3R0ZXN0dGVzdHRlc3R0ZXN0dGVzdCc+CiBBWFZpc2l0ZWQ6IDAKIEFYTGlua2VkVUlFbGVtZW50
czogKG51bGwpCiBBWFNlbGVjdGVkOiAwCiBBWEJsb2NrUXVvdGVMZXZlbDogMAotQVhUb3BMZXZl
bFVJRWxlbWVudDogPEFYQnV0dG9uOiAndGVzdAl0ZXN0CXRlc3QKLXRlc3QJdGVzdAl0ZXN0Ci0n
PgorQVhUb3BMZXZlbFVJRWxlbWVudDogPEFYQnV0dG9uOiAndGVzdHRlc3R0ZXN0dGVzdHRlc3R0
ZXN0Jz4KIEFYVGl0bGVVSUVsZW1lbnQ6IChudWxsKQogQVhBY2Nlc3NLZXk6IChudWxsKQogQVhB
UklBQnVzeTogMAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179796</attachid>
            <date>2012-12-17 13:47:43 -0800</date>
            <delta_ts>2012-12-17 14:25:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101650-20121217134501.patch</filename>
            <type>text/plain</type>
            <size>25036</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTIwZTYxYjZhMzYxZTI5
MWJmNTJlMmQ3MDFjMzJhYjQ1MjUwMDhlNy4uYjY1NWU3ZjMyZTM0YWZiYjdiN2E5YmU3ODVkYjU5
NDU3MGFiMmRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEyLTEzICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiB0ZXh0VW5k
ZXJFbGVtZW50IHNob3VsZCBjb25zaWRlciBhbHQgdGV4dCwgYnV0IHNraXAgbGlua3MgYW5kIGNv
bnRyb2xzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDE2NTAKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICBH
ZXR0aW5nIGlubmVyIHRleHQgZnJvbSBhbiBlbGVtZW50IG5vdyBpZ25vcmVzIGZvY3VzYWJsZSBk
ZXNjZW5kYW50cworICAgICAgICBhbmQgY29udGFpbmVycywgYnV0IHVzZXMgYWx0ZXJuYXRpdmUg
dGV4dC4gIFRoZSBjb21wdXRhdGlvbiBvZgorICAgICAgICB0ZXh0VW5kZXJFbGVtZW50IGlzIG5v
dyByZWN1cnNpdmUgYW5kIGRvZXNuJ3QgZGVwZW5kIG9uIHRleHQKKyAgICAgICAgaXRlcmF0b3Jz
LCB3aGljaCBtaWdodCBub3QgZG8gdGhlIHJpZ2h0IHRoaW5nIGZvciBhY2Nlc3NpYmlsaXR5Cisg
ICAgICAgIGFueXdheXMuCisKKyAgICAgICAgRm9yIEdUSywgdGhlIG9sZCBiZWhhdmlvciBpcyBy
ZXRhaW5lZCBzbyB0aGF0IHN1cHBvcnQgZm9yCisgICAgICAgIHRoZSBvYmplY3QgcmVwbGFjZW1l
bnQgY2hhcmFjdGVyIGlzIHN0aWxsIHRoZXJlLiBGaWxlZCBhIG5ldworICAgICAgICBidWcgKDEw
NTIxNCkgZm9yIEdUSyBmb2xrcyB0byBsb29rIGF0IHRoaXMuCisKKyAgICAgICAgVGVzdDogYWNj
ZXNzaWJpbGl0eS9idXR0b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0Lmh0bWwKKyAgICAgICAg
VGVzdDogYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2Lmh0bWwKKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRVc2VBY2Nlc3NpYmxpdHlPYmplY3RJbm5lclRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRleHRVbmRlckVs
ZW1lbnQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0ZXh0
VW5kZXJFbGVtZW50KToKKwogMjAxMi0xMi0xNyAgRWR1YXJkbyBMaW1hIE1pdGV2ICA8ZWxpbWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBVc2UgZ3N0X2VsZW1lbnRfbGlua19w
YWRzX2Z1bGwoKSB3aXRoIENIRUNLX05PVEhJTkcgZm9yIHNwZWVkIGFuZCBzYW5pdHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdC5jcHAKaW5kZXggMGU1Yzk3ODZiNGIwNzI0YjVjMTIxMDk4ZTkzNzEwYjQ1ZjVkOTliNC4u
MDhhMGQ3YjZjMmM1NGM0YWMwNGMzY2ZlMDlhMTc2MTkxNmVlODQ1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5j
cHAKQEAgLTE0MzQsMjAgKzE0MzQsNjIgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QKICAgICByZXR1cm4gbGV2ZWw7CiB9CiAKKy8v
IFdoZW4gYnVpbGRpbmcgdGhlIHRleHRVbmRlckVsZW1lbnQgZm9yIGFuIG9iamVjdCwgZGV0ZXJt
aW5lIHdoZXRoZXIgb3Igbm90CisvLyB3ZSBzaG91bGQgaW5jbHVkZSB0aGUgaW5uZXIgdGV4dCBv
ZiB0aGlzIGdpdmVuIGRlc2NlbmRhbnQgb2JqZWN0IG9yIHNraXAgaXQuCitzdGF0aWMgYm9vbCBz
aG91bGRVc2VBY2Nlc3NpYmxpdHlPYmplY3RJbm5lclRleHQoQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqKQoreworICAgIC8vIENvbnNpZGVyIHRoaXMgaHlwb3RoZXRpY2FsIGV4YW1wbGU6CisgICAg
Ly8gPGRpdiB0YWJpbmRleD0wPgorICAgIC8vICAgPGgyPgorICAgIC8vICAgICBUYWJsZSBvZiBj
b250ZW50cworICAgIC8vICAgPC9oMj4KKyAgICAvLyAgIDxhIGhyZWY9IiNzdGFydCI+SnVtcCB0
byBzdGFydCBvZiBib29rPC9hPgorICAgIC8vICAgPHVsPgorICAgIC8vICAgICA8bGk+PGEgaHJl
Zj0iIzEiPkNoYXB0ZXIgMTwvYT48L2xpPgorICAgIC8vICAgICA8bGk+PGEgaHJlZj0iIzEiPkNo
YXB0ZXIgMjwvYT48L2xpPgorICAgIC8vICAgPC91bD4KKyAgICAvLyA8L2Rpdj4KKyAgICAvLwor
ICAgIC8vIFRoZSBnb2FsIGlzIHRvIHJldHVybiBhIHJlYXNvbmFibGUgdGl0bGUgZm9yIHRoZSBv
dXRlciBjb250YWluZXIgZGl2LCBiZWNhdXNlCisgICAgLy8gaXQncyBmb2N1c2FibGUgLSBidXQg
d2l0aG91dCBtYWtpbmcgaXRzIHRpdGxlIGJlIHRoZSBmdWxsIGlubmVyIHRleHQsIHdoaWNoIGlz
CisgICAgLy8gcXVpdGUgbG9uZy4gQXMgYSBoZXVyaXN0aWMsIHNraXAgbGlua3MsIGNvbnRyb2xz
LCBhbmQgZWxlbWVudHMgdGhhdCBhcmUgdXN1YWxseQorICAgIC8vIGNvbnRhaW5lcnMgd2l0aCBs
b3RzIG9mIGNoaWxkcmVuLgorCisgICAgLy8gU2tpcCBmb2N1c2FibGUgY2hpbGRyZW4sIHNvIHdl
IGRvbid0IGluY2x1ZGUgdGhlIHRleHQgb2YgbGlua3MgYW5kIGNvbnRyb2xzLgorICAgIGlmIChv
YmotPmNhblNldEZvY3VzQXR0cmlidXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIFNraXAgYmlnIGNvbnRhaW5lciBlbGVtZW50cyBsaWtlIGxpc3RzLCB0YWJsZXMsIGV0Yy4K
KyAgICBpZiAob2JqLT5pc0xpc3QoKSB8fCBvYmotPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgfHwg
b2JqLT5pc1RyZWUoKSB8fCBvYmotPmlzQ2FudmFzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiB0cnVlOworfQorCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6
OnRleHRVbmRlckVsZW1lbnQoKSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2Rl
KCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICAvLyBO
b3RlOiBUZXh0SXRlcmF0b3IgZG9lc24ndCByZXR1cm4gYW55IHRleHQgZm9yIG5vZGVzIHRoYXQg
ZG9uJ3QgaGF2ZSByZW5kZXJlcnMuCi0gICAgLy8gSWYgdGhpcyBjb3VsZCBiZSBmaXhlZCwgaXQn
ZCBiZSBtb3JlIGFjY3VyYXRlIHVzZSBUZXh0SXRlcmF0b3IgaGVyZS4KLSAgICBpZiAobm9kZS0+
aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpLT5pbm5lclRl
eHQoKTsKLSAgICBlbHNlIGlmIChub2RlLT5pc1RleHROb2RlKCkpCisgICAgaWYgKG5vZGUgJiYg
bm9kZS0+aXNUZXh0Tm9kZSgpKQogICAgICAgICByZXR1cm4gdG9UZXh0KG5vZGUpLT53aG9sZVRl
eHQoKTsKLSAgICAKLSAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBTdHJpbmcgcmVzdWx0Owor
ICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICghc2hvdWxkVXNl
QWNjZXNzaWJsaXR5T2JqZWN0SW5uZXJUZXh0KGNoaWxkKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGlmIChjaGlsZC0+aXNBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpKSB7Cisg
ICAgICAgICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+IHRleHRPcmRlcjsKKyAgICAgICAg
ICAgIHRvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoY2hpbGQpLT5hbHRlcm5hdGl2ZVRleHQodGV4
dE9yZGVyKTsKKyAgICAgICAgICAgIGlmICh0ZXh0T3JkZXIuc2l6ZSgpID4gMCkgeworICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQodGV4dE9yZGVyWzBdLnRleHQpOworICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0
LmFwcGVuZChjaGlsZC0+dGV4dFVuZGVyRWxlbWVudCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnRpdGxlKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGFmNTY4NmFjZTBmNjAzNGMzNjkyODNjMTE3ZWZm
YTk4MjE0MTg5MDEuLjk4Njc1YjFmNjQ5YThhMjBkMTIzN2Q5MDE1MmU3NTZhYWQyNzFjMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtNjI0LDEyICs2MjQsMTAgQEAgU3RyaW5nIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQoKSBjb25zdAogewogICAgIGlmICgh
bV9yZW5kZXJlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIAorCiAgICAgaWYgKG1f
cmVuZGVyZXItPmlzRmlsZVVwbG9hZENvbnRyb2woKSkKICAgICAgICAgcmV0dXJuIHRvUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2wobV9yZW5kZXJlciktPmJ1dHRvblZhbHVlKCk7CiAgICAgCi0gICAg
Tm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKLQogI2lmIEVOQUJMRShNQVRITUwpCiAg
ICAgLy8gTWF0aCBvcGVyYXRvcnMgY3JlYXRlIFJlbmRlclRleHQgbm9kZXMgb24gdGhlIGZseSB0
aGF0IGFyZSBub3QgdGllZCBpbnRvIHRoZSBET00gaW4gYSByZWFzb25hYmxlIHdheSwKICAgICAv
LyBzbyByYW5nZU9mQ29udGVudHMgZG9lcyBub3Qgd29yayBmb3IgdGhlbSAobm9yIGRvZXMgcmVn
dWxhciB0ZXh0IHNlbGVjdGlvbikuCkBAIC02NDAsOCArNjM4LDEzIEBAIFN0cmluZyBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KCkgY29uc3QKICAgICAgICAgfQog
ICAgIH0KICNlbmRpZgotICAgIAotICAgIGlmIChub2RlKSB7CisKKyNpZiBQTEFURk9STShHVEsp
CisgICAgLy8gT24gR1RLLCBhbHdheXMgdXNlIGEgdGV4dCBpdGVyYXRvciBpbiBvcmRlciB0byBn
ZXQgZW1iZWRkZWQgb2JqZWN0IGNoYXJhY3RlcnMuCisgICAgLy8gVE9ETzogQWRkIHN1cHBvcnQg
Zm9yIGVtYmVkZGVkIG9iamVjdCBjaGFyYWN0ZXJzIHRvIHRoZSBvdGhlciBjb2RlcGF0aHMgdGhh
dCB0cnkKKyAgICAvLyB0byBidWlsZCB0aGUgYWNjZXNzaWJsZSB0ZXh0IHJlY3Vyc2l2ZWx5LCBz
byB0aGlzIHNwZWNpYWwgY2FzZSBpc24ndCBuZWVkZWQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTIxNAorICAgIGlmIChOb2RlKiBub2RlID0gdGhp
cy0+bm9kZSgpKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgp
LT5mcmFtZSgpKSB7CiAgICAgICAgICAgICAvLyBjYXRjaCBzdGFsZSBXZWJDb3JlQVhPYmplY3Qg
KHNlZSA8cmRhcjovL3Byb2JsZW0vMzk2MDE5Nj4pCiAgICAgICAgICAgICBpZiAoZnJhbWUtPmRv
Y3VtZW50KCkgIT0gbm9kZS0+ZG9jdW1lbnQoKSkKQEAgLTY1MCwxOCArNjUzLDI5IEBAIFN0cmlu
ZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0ZXh0VW5kZXJFbGVtZW50KCkgY29uc3QKICAg
ICAgICAgICAgIHJldHVybiBwbGFpblRleHQocmFuZ2VPZkNvbnRlbnRzKG5vZGUpLmdldCgpLCB0
ZXh0SXRlcmF0b3JCZWhhdmlvckZvclRleHRSYW5nZSgpKTsKICAgICAgICAgfQogICAgIH0KLSAg
ICAKLSAgICAvLyBTb21ldGltZXMgdGV4dCBmcmFnbWVudHMgZG9uJ3QgaGF2ZSBOb2RlJ3MgYXNz
b2NpYXRlZCB3aXRoIHRoZW0gKGxpa2Ugd2hlbgotICAgIC8vIENTUyBjb250ZW50IGlzIHVzZWQg
dG8gaW5zZXJ0IHRleHQpLgorI2VuZGlmCisKICAgICBpZiAobV9yZW5kZXJlci0+aXNUZXh0KCkp
IHsKKyAgICAgICAgLy8gSWYgcG9zc2libGUsIHVzZSBhIHRleHQgaXRlcmF0b3IgdG8gZ2V0IHRo
ZSB0ZXh0LCBzbyB0aGF0IHdoaXRlc3BhY2UKKyAgICAgICAgLy8gaXMgaGFuZGxlZCBjb25zaXN0
ZW50bHkuCisgICAgICAgIGlmIChOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpKSB7CisgICAgICAg
ICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgeworICAg
ICAgICAgICAgICAgIC8vIGNhdGNoIHN0YWxlIFdlYkNvcmVBWE9iamVjdCAoc2VlIDxyZGFyOi8v
cHJvYmxlbS8zOTYwMTk2PikKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkg
IT0gbm9kZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygp
OworCisgICAgICAgICAgICAgICAgcmV0dXJuIHBsYWluVGV4dChyYW5nZU9mQ29udGVudHMobm9k
ZSkuZ2V0KCksIHRleHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgCisgICAgICAgIC8vIFNvbWV0aW1lcyB0ZXh0IGZyYWdtZW50
cyBkb24ndCBoYXZlIE5vZGVzIGFzc29jaWF0ZWQgd2l0aCB0aGVtIChsaWtlIHdoZW4KKyAgICAg
ICAgLy8gQ1NTIGNvbnRlbnQgaXMgdXNlZCB0byBpbnNlcnQgdGV4dCkuCiAgICAgICAgIFJlbmRl
clRleHQqIHJlbmRlclRleHRPYmplY3QgPSB0b1JlbmRlclRleHQobV9yZW5kZXJlcik7CiAgICAg
ICAgIGlmIChyZW5kZXJUZXh0T2JqZWN0LT5pc1RleHRGcmFnbWVudCgpKQogICAgICAgICAgICAg
cmV0dXJuIFN0cmluZyhzdGF0aWNfY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQqPihtX3JlbmRlcmVy
KS0+Y29udGVudFN0cmluZygpKTsKICAgICB9CiAgICAgCi0gICAgLy8gcmV0dXJuIHRoZSBudWxs
IHN0cmluZyBmb3IgYW5vbnltb3VzIHRleHQgYmVjYXVzZSBpdCBpcyBub24tdHJpdmlhbCB0byBn
ZXQKLSAgICAvLyB0aGUgYWN0dWFsIHRleHQgYW5kLCBzbyBmYXIsIHRoYXQgaXMgbm90IG5lZWRl
ZAotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OnRleHRVbmRlckVsZW1lbnQoKTsKIH0KIAogTm9kZSogQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6bm9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTI2ZDI2MzA0YTlhNDA3MzA3M2E4ZTE5NzQ0MjRj
MmMzYjI5NzEzNy4uNDNlNjkxMTYxODRhZDhjMmYwNzUyNWM1YmY5MjllM2E2YjM2MTI2ZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEyLTEzICBEb21pbmljIE1henpvbmkgIDxkbWF6em9u
aUBnb29nbGUuY29tPgorCisgICAgICAgIEFYOiB0ZXh0VW5kZXJFbGVtZW50IHNob3VsZCBjb25z
aWRlciBhbHQgdGV4dCwgYnV0IHNraXAgbGlua3MgYW5kIGNvbnRyb2xzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE2NTAKKworICAgICAgICBSZXZp
ZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICBBZGRzIG5ldyB0ZXN0cyB0byBzaG93
IHRoYXQgZ2V0dGluZyBpbm5lciB0ZXh0IGZyb20gYW4gZWxlbWVudAorICAgICAgICBub3cgaWdu
b3JlcyBmb2N1c2FibGUgZGVzY2VuZGFudHMgYW5kIGNvbnRhaW5lcnMsIGJ1dCB1c2VzIGFsdGVy
bmF0aXZlCisgICAgICAgIHRleHQuCisKKyAgICAgICAgVXBkYXRlcyBhbmQgcmViYXNlbGluZXMg
c2V2ZXJhbCB0ZXN0cyB0byByZWZsZWN0IHRoZSBuZXcgbG9naWMuCisgICAgICAgIFNraXBzIHRo
ZXNlIHRlc3RzIG9uIEdUSyB1bnRpbCBzdXBwb3J0IGZvciB0aGUgb2JqZWN0IHJlcGxhY2VtZW50
CisgICAgICAgIGNoYXJhY3RlciBjYW4gYmUgYWRkZWQuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2J1dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1hbHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2J1dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1hbHQu
aHRtbDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2LWV4cGVj
dGVkLnR4dDogRXh0ZW5kZWQgd2l0aCBtb3JlIHRlc3QgY2FzZXMuCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9mb2N1c2FibGUtZGl2Lmh0bWw6IEV4dGVuZGVkIHdpdGggbW9yZSB0ZXN0IGNhc2Vz
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6IFVuLXNraXAg
dGVzdCB0aGF0IG5vdyBwYXNzZXMuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNz
aWJpbGl0eS9pbWFnZS1saW5rLWV4cGVjdGVkLnR4dDogUmViYXNlbGluZQorICAgICAgICAqIHBs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2ltYWdlLWxpbmstZXhwZWN0ZWQudHh0OiBSZWJhc2Vs
aW5lCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW50ZXJuYWwtbGluay1h
bmNob3JzMi1leHBlY3RlZC50eHQ6IFJlYmFzZWxpbmUKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS9zdGF0aWMtdGV4dC1yb2xlLXVzZXMtdGV4dC11bmRlci1lbGVtZW50LWV4
cGVjdGVkLnR4dDogUmViYXNlbGluZQorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L3N0YXRpYy10ZXh0LXJvbGUtdXNlcy10ZXh0LXVuZGVyLWVsZW1lbnQuaHRtbDogRml4Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1hcmlhLXJvbGUt
ZXhwZWN0ZWQudHh0OiBSZWJhc2VsaW5lCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBl
Y3RhdGlvbnM6IFNraXAgdGhlc2UgdGVzdHMgdW50aWwgdGhpcyBmZWF0dXJlIGlzIGltcGxlbWVu
dGVkIGZvciBHVEsuCisKIDIwMTItMTItMTcgIEJlbSBKb25lcy1CZXkgIDxiam9uZXNiZUBhZG9i
ZS5jb20+CiAKICAgICAgICAgW0NTUyBFeGNsdXNpb25zXSBGbG9hdHMgc2hvdWxkIHJlc3BlY3Qg
c2hhcGUtaW5zaWRlIG9uIGV4Y2x1c2lvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvYnV0dG9uLXRpdGxlLXVzZXMtaW5uZXItaW1nLWFsdC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2J1dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1hbHQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4MzY3YTc3MTgxNzI1NjFjOGZmMThmNDhjZGE1YjRk
ZGJkODE1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2J1
dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1hbHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIg
QEAKK0J1dHRvbiB3aXRoIGltYWdlIG9mIAorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdl
bmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdldHMg
aXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLi4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBidXR0b24gaXMgdHJ1
ZQorUEFTUyBheEJ1dHRvbi50aXRsZS5pbmRleE9mKCdCdXR0b24gd2l0aCBpbWFnZSBvZiBjYWtl
JykgPj0gMCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9idXR0b24t
dGl0bGUtdXNlcy1pbm5lci1pbWctYWx0Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2J1dHRvbi10aXRsZS11c2VzLWlubmVyLWltZy1hbHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWEyNGU4
M2U5MGU0NWE2NDc3OWYwZTNmZDIxM2U1OTFkNmJlNWM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9idXR0b24tdGl0bGUtdXNlcy1pbm5lci1pbWctYWx0Lmh0
bWwKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KworPHN0eWxlPgorYnV0dG9uIHsKKyAgcGFkZGluZzogMzBweDsKK30KKzwvc3R5bGU+CisKKzxi
dXR0b24gaWQ9ImNha2UiPkJ1dHRvbiB3aXRoIGltYWdlIG9mIDxpbWcgYWx0PSJjYWtlIiBzcmM9
InJlc291cmNlcy9jYWtlLnBuZyIgd2lkdGg9IjQwcHgiPjwvYnV0dG9uPgorCis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1
cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9j
dXMgYW5kIGdldHMgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLi4iKTsKKworaWYg
KHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewor
ICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciBidXR0b24gPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FrZScpOworICAgIGJ1dHRvbi5mb2N1cygpOworICAg
IHNob3VsZEJlKCJkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGJ1dHRvbiIsICJ0cnVlIik7Cisg
ICAgd2luZG93LmF4QnV0dG9uID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQ7CisgICAgc2hvdWxkQmUoImF4QnV0dG9uLnRpdGxlLmluZGV4T2YoJ0J1dHRvbiB3aXRoIGlt
YWdlIG9mIGNha2UnKSA+PSAwIiwgInRydWUiKTsKK30KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9mb2N1
c2FibGUtZGl2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNh
YmxlLWRpdi1leHBlY3RlZC50eHQKaW5kZXggZDM4NDQyNjAwZGM0ZjIzNzc3NWZkYmJlZGM2ZTQ5
Mzc3OWQ4YjZkMi4uZGM0ODAzOGQ2NGE4YmU1YmY0MjNjNzY5NThjM2M4NTI0MmYwNWRhNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ZvY3VzYWJsZS1kaXYtZXhwZWN0
ZWQudHh0CkBAIC0xLDcgKzEsMTIgQEAKIEEKIEIKIEMKLVRoaXMgdGVzdCBtYWtlcyBzdXJlIHRo
YXQgYSBnZW5lcmljIGZvY3VzYWJsZSBkaXYgY2FuIGdldCBhY2Nlc3NpYmlsaXR5IGZvY3VzLgor
TGluaworSW5pdGlhbCB0ZXh0IGJlZm9yZSBsaW5rTGluaworTGlzdCBpdGVtCitJbml0aWFsIHRl
eHQgYmVmb3JlIGxpc3QKK0xpc3QgaXRlbQorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdl
bmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdldHMg
aXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLi4KIAogT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgogCkBAIC0xNCw2ICsxOSwxNiBAQCBQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQg
PT0gZGl2MiBpcyB0cnVlCiBQQVNTIGxhc3RDaGFyKGF4RGl2Mi50aXRsZSkgaXMgIkMiCiBQQVNT
IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZGl2MyBpcyB0cnVlCiBQQVNTIGxhc3RDaGFyKGF4
RGl2My5kZXNjcmlwdGlvbikgaXMgIkQiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0g
ZGl2NCBpcyB0cnVlCitQQVNTIGF4RGl2NC50aXRsZS5pbmRleE9mKCdMaW5rJykgaXMgLTEKK1BB
U1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBkaXY1IGlzIHRydWUKK1BBU1MgYXhEaXY1LnRp
dGxlLmluZGV4T2YoJ0xpbmsnKSBpcyAtMQorUEFTUyBheERpdjUudGl0bGUuaW5kZXhPZignSW5p
dGlhbCB0ZXh0IGJlZm9yZSBsaW5rJykgPj0gMCBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmFjdGl2
ZUVsZW1lbnQgPT0gZGl2NiBpcyB0cnVlCitQQVNTIGF4RGl2Ni50aXRsZS5pbmRleE9mKCdMaXN0
IGl0ZW0nKSBpcyAtMQorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjcgaXMgdHJ1
ZQorUEFTUyBheERpdjcudGl0bGUuaW5kZXhPZignTGlzdCBpdGVtJykgaXMgLTEKK1BBU1MgYXhE
aXY3LnRpdGxlLmluZGV4T2YoJ0luaXRpYWwgdGV4dCBiZWZvcmUgbGlzdCcpID49IDAgaXMgdHJ1
ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2ZvY3VzYWJsZS1kaXYuaHRtbCBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNhYmxlLWRpdi5odG1sCmluZGV4IGFkZmZmYmY0
M2I5ZjI3YzFlMWI1OWYyM2RiMzM0YmEzOGMwZDkwZTAuLjIwOWQyYTQ2ZDhhYzM3YjQxYmY1M2Qy
MDk4MDg0MTAxY2ViMzk1N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
Zm9jdXNhYmxlLWRpdi5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZm9jdXNh
YmxlLWRpdi5odG1sCkBAIC0zLDE0ICszLDIzIEBACiA8Ym9keT4KIDxzY3JpcHQgc3JjPSIuLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiAKKzwhLS0gQSBsaW5r
IGFsd2F5cyBnZXRzIGl0cyBhY2Nlc3NpYmxlIHRleHQgZnJvbSBjb250ZW50cy4gLS0+CiA8YSBp
ZD0ibGluayIgaHJlZj0iIyI+QTwvYT4KKworPCEtLSBBIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBz
aG91bGQgYWxzbyBnZXQgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRlbnRzLiAtLT4KIDxk
aXYgaWQ9ImRpdiIgdGFiaW5kZXg9IjAiPkI8L2Rpdj4KIDxkaXYgaWQ9ImRpdjIiIHRhYmluZGV4
PSIwIj48ZGl2PjwvZGl2PkM8L2Rpdj4KIDxkaXYgaWQ9ImRpdjMiIHRhYmluZGV4PSIwIiBhcmlh
LWxhYmVsPSJEIj48L2Rpdj4KIAorPCEtLSBBIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBzaG91bGQg
bm90IGdldCBhY2Nlc3NpYmxlIHRleHQgZnJvbSBjaGlsZHJlbiB0aGF0IGFyZSBmb2N1c2FibGUg
b3IgY29udGFpbmVycy4gLS0+Cis8ZGl2IGlkPSJkaXY0IiB0YWJpbmRleD0iMCI+PGEgaHJlZj0i
IyI+TGluazwvYT48L2Rpdj4KKzxkaXYgaWQ9ImRpdjUiIHRhYmluZGV4PSIwIj5Jbml0aWFsIHRl
eHQgYmVmb3JlIGxpbms8YSBocmVmPSIjIj5MaW5rPC9hPjwvZGl2PgorPGRpdiBpZD0iZGl2NiIg
dGFiaW5kZXg9IjAiPjx1bD48bGk+TGlzdCBpdGVtPC9saT48L3VsPjwvZGl2PgorPGRpdiBpZD0i
ZGl2NyIgdGFiaW5kZXg9IjAiPkluaXRpYWwgdGV4dCBiZWZvcmUgbGlzdDx1bD48bGk+TGlzdCBp
dGVtPC9saT48L3VsPjwvZGl2PgorCiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+
Ci1kZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNh
YmxlIGRpdiBjYW4gZ2V0IGFjY2Vzc2liaWxpdHkgZm9jdXMuIik7CitkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBhIGdlbmVyaWMgZm9jdXNhYmxlIGRpdiBjYW4gZ2V0IGFj
Y2Vzc2liaWxpdHkgZm9jdXMgYW5kIGdldHMgaXRzIGFjY2Vzc2libGUgdGV4dCBmcm9tIGNvbnRl
bnRzLi4iKTsKIAogaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcikgewogICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKQEAgLTQy
LDYgKzUxLDMyIEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKICAgICBzaG91bGRCZSgiZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBk
aXYzIiwgInRydWUiKTsKICAgICB3aW5kb3cuYXhEaXYzID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQ7CiAgICAgc2hvdWxkQmUoImxhc3RDaGFyKGF4RGl2My5kZXNjcmlw
dGlvbikiLCAiXCJEXCIiKTsKKworICAgIHZhciBkaXY0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2RpdjQnKTsKKyAgICBkaXY0LmZvY3VzKCk7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmFj
dGl2ZUVsZW1lbnQgPT0gZGl2NCIsICJ0cnVlIik7CisgICAgd2luZG93LmF4RGl2NCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIHNob3VsZEJlKCJheERpdjQu
dGl0bGUuaW5kZXhPZignTGluaycpIiwgIi0xIik7CisKKyAgICB2YXIgZGl2NSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdkaXY1Jyk7CisgICAgZGl2NS5mb2N1cygpOworICAgIHNob3VsZEJl
KCJkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjUiLCAidHJ1ZSIpOworICAgIHdpbmRvdy5h
eERpdjUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBzaG91
bGRCZSgiYXhEaXY1LnRpdGxlLmluZGV4T2YoJ0xpbmsnKSIsICItMSIpOworICAgIHNob3VsZEJl
KCJheERpdjUudGl0bGUuaW5kZXhPZignSW5pdGlhbCB0ZXh0IGJlZm9yZSBsaW5rJykgPj0gMCIs
ICJ0cnVlIik7CisKKyAgICB2YXIgZGl2NiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaXY2
Jyk7CisgICAgZGl2Ni5mb2N1cygpOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5hY3RpdmVFbGVt
ZW50ID09IGRpdjYiLCAidHJ1ZSIpOworICAgIHdpbmRvdy5heERpdjYgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBzaG91bGRCZSgiYXhEaXY2LnRpdGxlLmlu
ZGV4T2YoJ0xpc3QgaXRlbScpIiwgIi0xIik7CisKKyAgICB2YXIgZGl2NyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdkaXY3Jyk7CisgICAgZGl2Ny5mb2N1cygpOworICAgIHNob3VsZEJlKCJk
b2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGRpdjciLCAidHJ1ZSIpOworICAgIHdpbmRvdy5heERp
djcgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBzaG91bGRC
ZSgiYXhEaXY3LnRpdGxlLmluZGV4T2YoJ0xpc3QgaXRlbScpIiwgIi0xIik7CisgICAgc2hvdWxk
QmUoImF4RGl2Ny50aXRsZS5pbmRleE9mKCdJbml0aWFsIHRleHQgYmVmb3JlIGxpc3QnKSA+PSAw
IiwgInRydWUiKTsKIH0KIAogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhZGNjNDIzYjg4NjQ1ZWMxMmIzZTZlNzMxZmU0
NjRjM2Q5YTNiNjgyLi5mYWE2MGU5Y2NhZDlhYjFjYjYwY2JkYWU1ZmJkOGMyY2I5NWRlOGU2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTEzOTgsNyArMTM5OCw2IEBAIGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2FyaWEtdXNl
ZC1vbi1pbWFnZS1tYXBzLmh0bWwgWyBTa2lwIF0KIGNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmls
aXR5L2RlbGV0aW5nLWlmcmFtZS1kZXN0cm95cy1heGNhY2hlLmh0bWwgWyBTa2lwIF0KIGNyYnVn
LmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2RvY3VtZW50LWF0dHJpYnV0ZXMuaHRtbCBbIFNraXAg
XQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvaWZyYW1lLWJhc3RhcmRpemF0aW9uLmh0
bWwgWyBTa2lwIF0KLWNyYnVnLmNvbS8xMDMyMiBhY2Nlc3NpYmlsaXR5L2ltYWdlLWxpbmsuaHRt
bCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxpdHkvaW1hZ2UtbWFwLXVwZGF0
ZS1wYXJlbnQtY3Jhc2guaHRtbCBbIFNraXAgXQogY3JidWcuY29tLzEwMzIyIGFjY2Vzc2liaWxp
dHkvaW1hZ2UtbWFwMi5odG1sIFsgU2tpcCBdCiBjcmJ1Zy5jb20vMTAzMjIgYWNjZXNzaWJpbGl0
eS9pbnRlcm5hbC1saW5rLWFuY2hvcnMyLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbGluay1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2ltYWdl
LWxpbmstZXhwZWN0ZWQudHh0CmluZGV4IGExY2Q5MGJlYzMzZjhhZjFkYTkwOTRmNjQ3N2RmMDRl
NDIwOWRjNGMuLjkzMWRiYmJjZGVmMDEyYTYyZWJlNjY2MGY4OTJhMzc4ZmIwNmFlOTAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvaW1hZ2Ut
bGluay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNj
ZXNzaWJpbGl0eS9pbWFnZS1saW5rLWV4cGVjdGVkLnR4dApAQCAtMyw1NSArMywxMyBAQCBJbWFn
ZSBsaW5rIGluIHRoZSBwcmVzZW5jZSBvZiBpbmxpbmUgY29udGludWF0aW9ucwogVGhpcyB0ZXN0
IGNoZWNrcyB0aGF0IHRoZSByaWdodCBhY2Nlc3NpYmlsaXR5IHRyZWUgaXMgZ2VuZXJhdGVkIGZv
ciBhIGxpbmsgaW5zaWRlIGFuIGltYWdlCiAKIAorQVhUaXRsZTogRGVsaWNpb3VzIGNha2UKIEFY
Um9sZTogQVhMaW5rCi1BWFN1YnJvbGU6IChudWxsKQotQVhSb2xlRGVzY3JpcHRpb246IGxpbmsK
LUFYQ2hpbGRyZW46IDxhcnJheSBvZiBzaXplIDE+Ci1BWEhlbHA6IAotQVhQYXJlbnQ6IDxBWExp
bms+Ci1BWFNpemU6IE5TU2l6ZTogezI4MCwgMjEzfQotQVhUaXRsZTogCiBBWERlc2NyaXB0aW9u
OiAKLUFYVmFsdWU6IAotQVhGb2N1c2VkOiAxCi1BWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhM
aW5rPgotQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtl
cjogPEFYTGluaz4KLUFYRW5kVGV4dE1hcmtlcjogPEFYTGluaz4KLUFYVmlzaXRlZDogMAotQVhM
aW5rZWRVSUVsZW1lbnRzOiAobnVsbCkKLUFYU2VsZWN0ZWQ6IDAKLUFYQmxvY2tRdW90ZUxldmVs
OiAwCi1BWFRvcExldmVsVUlFbGVtZW50OiA8QVhMaW5rPgotQVhVUkw6IGh0dHA6Ly93d3cud293
aGVhZC5jb20vP2l0ZW09MzM5MjQKLUFYQWNjZXNzS2V5OiAobnVsbCkKLQogCiBDaGlsZCAwOgot
QVhSb2xlOiBBWEltYWdlCi1BWFN1YnJvbGU6IChudWxsKQotQVhSb2xlRGVzY3JpcHRpb246IGlt
YWdlCi1BWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAwPgotQVhIZWxwOiAKLUFYUGFyZW50OiA8
QVhJbWFnZT4KLUFYU2l6ZTogTlNTaXplOiB7MjgwLCAyMDl9CiBBWFRpdGxlOiAKK0FYUm9sZTog
QVhJbWFnZQogQVhEZXNjcmlwdGlvbjogRGVsaWNpb3VzIGNha2UKLUFYVmFsdWU6IAotQVhGb2N1
c2VkOiAwCi1BWEVuYWJsZWQ6IDEKLUFYV2luZG93OiA8QVhJbWFnZT4KLUFYU2VsZWN0ZWRUZXh0
TWFya2VyUmFuZ2U6IChudWxsKQotQVhTdGFydFRleHRNYXJrZXI6IDxBWEltYWdlPgotQVhFbmRU
ZXh0TWFya2VyOiA8QVhJbWFnZT4KLUFYVmlzaXRlZDogMAotQVhMaW5rZWRVSUVsZW1lbnRzOiAo
bnVsbCkKLUFYU2VsZWN0ZWQ6IDAKLUFYQmxvY2tRdW90ZUxldmVsOiAwCi1BWFRvcExldmVsVUlF
bGVtZW50OiA8QVhJbWFnZT4KLUFYVVJMOiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Jlc291
cmNlcy9jYWtlLnBuZwotQVhBY2Nlc3NLZXk6IChudWxsKQotCiAKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkYTc4OGE1MGU4ZmY4ZWFkNzk1ZmRjYWJl
NmU5ZDA0YWM3MDZlZGM0Li4zMzkyYTM5ZWE0Yjg2MjBiMGViZGFjM2Q4ZjM4MjM3MTYzMWQ1YzA5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzcyLDcg
Kzc3Miw5IEBAIHdlYmtpdC5vcmcvYi85ODM1OCBhY2Nlc3NpYmlsaXR5L2FyaWEtc2Nyb2xsYmFy
LXJvbGUuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzk4MzU5IGFjY2Vzc2liaWxpdHkv
YXJpYS10ZXh0LXJvbGUuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzk4MzYwIGFjY2Vz
c2liaWxpdHkvYXJpYS11c2VkLW9uLWltYWdlLW1hcHMuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzk4MzYxIGFjY2Vzc2liaWxpdHkvYnV0dG9uLXByZXNzLWFjdGlvbi5odG1sIFsgRmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvMTA1MjE0IGFjY2Vzc2liaWxpdHkvYnV0dG9uLXRpdGxlLXVz
ZXMtaW5uZXItaW1nLWFsdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTgzNjMgYWNj
ZXNzaWJpbGl0eS9jYW52YXMtZmFsbGJhY2stY29udGVudC0yLmh0bWwgWyBGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi8xMDUyMTQgYWNjZXNzaWJpbGl0eS9mb2N1c2FibGUtZGl2Lmh0bWwgWyBGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi85ODM3MCBhY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZyYW1lLXNl
bmRzLW5vdGlmaWNhdGlvbi5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTgzNzEgYWNj
ZXNzaWJpbGl0eS9sb2FkaW5nLWlmcmFtZS11cGRhdGVzLWF4dHJlZS5odG1sIFsgRmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvOTgzNzIgYWNjZXNzaWJpbGl0eS9vbmNsaWNrLWhhbmRsZXJzLmh0bWwg
WyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L2ltYWdlLWxpbmstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvaW1hZ2UtbGluay1leHBlY3RlZC50eHQKaW5kZXggOWRjOWUyODIyZTFm
ZjM1NzliM2VjMWQ3ZmI2OWE1ZDU4OTcyODYxZi4uZmMwNmI1MDUyMmYyN2E1ZjE1OGYzMTcxZTIy
MzU3MzhlMzVkMmQxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvaW1hZ2UtbGluay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvaW1hZ2UtbGluay1leHBlY3RlZC50eHQKQEAgLTgsMjIgKzgs
MjIgQEAgQVhTdWJyb2xlOiAobnVsbCkKIEFYUm9sZURlc2NyaXB0aW9uOiBsaW5rCiBBWENoaWxk
cmVuOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhIZWxwOiAKLUFYUGFyZW50OiA8QVhMaW5rPgorQVhQ
YXJlbnQ6IDxBWExpbms6ICdEZWxpY2lvdXMgY2FrZSc+CiBBWFNpemU6IE5TU2l6ZTogezI4MCwg
MjEzfQotQVhUaXRsZTogCitBWFRpdGxlOiBEZWxpY2lvdXMgY2FrZQogQVhEZXNjcmlwdGlvbjog
CiBBWFZhbHVlOiAKIEFYRm9jdXNlZDogMQogQVhFbmFibGVkOiAxCi1BWFdpbmRvdzogPEFYTGlu
az4KK0FYV2luZG93OiA8QVhMaW5rOiAnRGVsaWNpb3VzIGNha2UnPgogQVhTZWxlY3RlZFRleHRN
YXJrZXJSYW5nZTogKG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogPEFYTGluaz4KLUFYRW5kVGV4
dE1hcmtlcjogPEFYTGluaz4KK0FYU3RhcnRUZXh0TWFya2VyOiA8QVhMaW5rOiAnRGVsaWNpb3Vz
IGNha2UnPgorQVhFbmRUZXh0TWFya2VyOiA8QVhMaW5rOiAnRGVsaWNpb3VzIGNha2UnPgogQVhW
aXNpdGVkOiAwCiBBWExpbmtlZFVJRWxlbWVudHM6IChudWxsKQogQVhTZWxlY3RlZDogMAogQVhC
bG9ja1F1b3RlTGV2ZWw6IDAKLUFYVG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWExpbms+CitBWFRvcExl
dmVsVUlFbGVtZW50OiA8QVhMaW5rOiAnRGVsaWNpb3VzIGNha2UnPgogQVhVUkw6IGh0dHA6Ly93
d3cud293aGVhZC5jb20vP2l0ZW09MzM5MjQKIEFYQWNjZXNzS2V5OiAobnVsbCkKIEFYQVJJQUJ1
c3k6IDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L2ludGVybmFsLWxpbmstYW5jaG9yczItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvaW50ZXJuYWwtbGluay1hbmNob3JzMi1leHBlY3RlZC50eHQK
aW5kZXggMzBiZjY4NmM4NDFiNjEyZWFlODg1NmMwMjg3MjgyNGI2ZDExYTFmYy4uYmNmMTg4MjQ4
ZGMyYzU4M2FiMjg5ZDhjZGYxOWQ1ZGVmOGI0ZTBjYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW50ZXJuYWwtbGluay1hbmNob3JzMi1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW50ZXJu
YWwtbGluay1hbmNob3JzMi1leHBlY3RlZC50eHQKQEAgLTUsMjIgKzUsMjIgQEAgQVhTdWJyb2xl
OiAobnVsbCkKIEFYUm9sZURlc2NyaXB0aW9uOiBoZWFkaW5nCiBBWENoaWxkcmVuOiA8YXJyYXkg
b2Ygc2l6ZSA0PgogQVhIZWxwOiAKLUFYUGFyZW50OiA8QVhIZWFkaW5nOiAnW2VkaXRdIFRvdXJl
dHRlIHN5bmRyb21lJz4KK0FYUGFyZW50OiA8QVhIZWFkaW5nOiAnW10gVG91cmV0dGUgc3luZHJv
bWUnPgogQVhTaXplOiBOU1NpemU6IHs3NjksIDIyfQotQVhUaXRsZTogW2VkaXRdIFRvdXJldHRl
IHN5bmRyb21lCitBWFRpdGxlOiBbXSBUb3VyZXR0ZSBzeW5kcm9tZQogQVhEZXNjcmlwdGlvbjog
CiBBWFZhbHVlOiAzCiBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQotQVhXaW5kb3c6IDxBWEhl
YWRpbmc6ICdbZWRpdF0gVG91cmV0dGUgc3luZHJvbWUnPgorQVhXaW5kb3c6IDxBWEhlYWRpbmc6
ICdbXSBUb3VyZXR0ZSBzeW5kcm9tZSc+CiBBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlOiAobnVs
bCkKLUFYU3RhcnRUZXh0TWFya2VyOiA8QVhIZWFkaW5nOiAnW2VkaXRdIFRvdXJldHRlIHN5bmRy
b21lJz4KLUFYRW5kVGV4dE1hcmtlcjogPEFYSGVhZGluZzogJ1tlZGl0XSBUb3VyZXR0ZSBzeW5k
cm9tZSc+CitBWFN0YXJ0VGV4dE1hcmtlcjogPEFYSGVhZGluZzogJ1tdIFRvdXJldHRlIHN5bmRy
b21lJz4KK0FYRW5kVGV4dE1hcmtlcjogPEFYSGVhZGluZzogJ1tdIFRvdXJldHRlIHN5bmRyb21l
Jz4KIEFYVmlzaXRlZDogMAogQVhMaW5rZWRVSUVsZW1lbnRzOiAobnVsbCkKIEFYU2VsZWN0ZWQ6
IDAKIEFYQmxvY2tRdW90ZUxldmVsOiAwCi1BWFRvcExldmVsVUlFbGVtZW50OiA8QVhIZWFkaW5n
OiAnW2VkaXRdIFRvdXJldHRlIHN5bmRyb21lJz4KK0FYVG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWEhl
YWRpbmc6ICdbXSBUb3VyZXR0ZSBzeW5kcm9tZSc+CiBBWEFSSUFCdXN5OiAwCiAKIC0tLS0tLS0t
LS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
c3RhdGljLXRleHQtcm9sZS11c2VzLXRleHQtdW5kZXItZWxlbWVudC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGF0aWMtdGV4dC1yb2xlLXVz
ZXMtdGV4dC11bmRlci1lbGVtZW50LWV4cGVjdGVkLnR4dAppbmRleCBkMGI3YzU2M2RjNGVhNzdl
MGVmZjI5MmI3ZmYwYWMxMTRlY2YxNDQyLi41NWVjZTdhZjAzNjlhNTQ5NjhkNzk1NTZlZTY1MGJl
NDk3ZjQwMmNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS9zdGF0aWMtdGV4dC1yb2xlLXVzZXMtdGV4dC11bmRlci1lbGVtZW50LWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGF0aWMtdGV4
dC1yb2xlLXVzZXMtdGV4dC11bmRlci1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcg
QEAgVGhpcyB0ZXN0cyB0aGF0IGlmIGFuIGVsZW1lbnQgdXNlcyB0aGUgJ3RleHQnIHJvbGUgYnV0
IGRvZXMgbm90IHVzZSBhbiBhcmlhLWxhYmUKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAog
Ci1QQVNTIHRleHQuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IFRleHQgMSBUZXh0IDIgVGV4dCAz
JworUEFTUyB0ZXh0LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiAgIFRleHQgMycKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3RhdGljLXRleHQtcm9sZS11c2Vz
LXRleHQtdW5kZXItZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvc3RhdGljLXRleHQtcm9sZS11c2VzLXRleHQtdW5kZXItZWxlbWVudC5odG1sCmlu
ZGV4IGZmZjFiMGFmZmQ1OTk3M2M4YmE0NGIxOGU5ZGVhMzU3MTczNzA2ZWMuLjdiNTI4ZGQzM2Vm
YTM5NjZmMGVlOTdjMGJjNjI1OWY3ZjFmNzEwMDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N0YXRpYy10ZXh0LXJvbGUtdXNlcy10ZXh0LXVuZGVy
LWVsZW1lbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS9zdGF0aWMtdGV4dC1yb2xlLXVzZXMtdGV4dC11bmRlci1lbGVtZW50Lmh0bWwKQEAgLTI2LDcg
KzI2LDcgQEAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQx
IikuZm9jdXMoKTsKICAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5m
b2N1c2VkRWxlbWVudDsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nVmFsdWUiLCAiJ0FY
VmFsdWU6IFRleHQgMSBUZXh0IDIgVGV4dCAzJyIpOworICAgICAgICBzaG91bGRCZSgidGV4dC5z
dHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogICBUZXh0IDMnIik7CiAgICAgfQogCiA8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxl
LXdpdGgtYXJpYS1yb2xlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtYXJpYS1yb2xlLWV4cGVjdGVkLnR4dAppbmRleCAwNTg2
N2ZmMTM0NDlmZmVjYmIzOTA0MWFlMmYzZTM4MDg4NzYyN2I1Li4yMjUwNDQ4ZjQ2M2FlZjRkMmE5
OTNiMGYwNTBmYmIxM2FlYTFmNWEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLWFyaWEtcm9sZS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1hcmlhLXJv
bGUtZXhwZWN0ZWQudHh0CkBAIC03LDMzICs3LDIxIEBAIEFYU3Vicm9sZTogKG51bGwpCiBBWFJv
bGVEZXNjcmlwdGlvbjogYnV0dG9uCiBBWENoaWxkcmVuOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhI
ZWxwOiAKLUFYUGFyZW50OiA8QVhCdXR0b246ICd0ZXN0CXRlc3QJdGVzdAotdGVzdAl0ZXN0CXRl
c3QKLSc+CitBWFBhcmVudDogPEFYQnV0dG9uOiAndGVzdHRlc3R0ZXN0dGVzdHRlc3R0ZXN0Jz4K
IEFYU2l6ZTogTlNTaXplOiB7ODUsIDUyfQotQVhUaXRsZTogdGVzdAl0ZXN0CXRlc3QKLXRlc3QJ
dGVzdAl0ZXN0Ci0KK0FYVGl0bGU6IHRlc3R0ZXN0dGVzdHRlc3R0ZXN0dGVzdAogQVhEZXNjcmlw
dGlvbjogCiBBWEZvY3VzZWQ6IDAKIEFYRW5hYmxlZDogMQotQVhXaW5kb3c6IDxBWEJ1dHRvbjog
J3Rlc3QJdGVzdAl0ZXN0Ci10ZXN0CXRlc3QJdGVzdAotJz4KK0FYV2luZG93OiA8QVhCdXR0b246
ICd0ZXN0dGVzdHRlc3R0ZXN0dGVzdHRlc3QnPgogQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZTog
KG51bGwpCi1BWFN0YXJ0VGV4dE1hcmtlcjogPEFYQnV0dG9uOiAndGVzdAl0ZXN0CXRlc3QKLXRl
c3QJdGVzdAl0ZXN0Ci0nPgotQVhFbmRUZXh0TWFya2VyOiA8QVhCdXR0b246ICd0ZXN0CXRlc3QJ
dGVzdAotdGVzdAl0ZXN0CXRlc3QKLSc+CitBWFN0YXJ0VGV4dE1hcmtlcjogPEFYQnV0dG9uOiAn
dGVzdHRlc3R0ZXN0dGVzdHRlc3R0ZXN0Jz4KK0FYRW5kVGV4dE1hcmtlcjogPEFYQnV0dG9uOiAn
dGVzdHRlc3R0ZXN0dGVzdHRlc3R0ZXN0Jz4KIEFYVmlzaXRlZDogMAogQVhMaW5rZWRVSUVsZW1l
bnRzOiAobnVsbCkKIEFYU2VsZWN0ZWQ6IDAKIEFYQmxvY2tRdW90ZUxldmVsOiAwCi1BWFRvcExl
dmVsVUlFbGVtZW50OiA8QVhCdXR0b246ICd0ZXN0CXRlc3QJdGVzdAotdGVzdAl0ZXN0CXRlc3QK
LSc+CitBWFRvcExldmVsVUlFbGVtZW50OiA8QVhCdXR0b246ICd0ZXN0dGVzdHRlc3R0ZXN0dGVz
dHRlc3QnPgogQVhUaXRsZVVJRWxlbWVudDogKG51bGwpCiBBWEFjY2Vzc0tleTogKG51bGwpCiBB
WEFSSUFCdXN5OiAwCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>