<?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>103335</bug_id>
          
          <creation_ts>2012-11-26 17:54:29 -0800</creation_ts>
          <short_desc>[CSS Grid Layout] Support &lt;percentage&gt; and viewport-relative breadth sizes</short_desc>
          <delta_ts>2012-12-03 13:10:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>EasyFix</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>60731</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>776143</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-26 17:54:29 -0800</bug_when>
    <thetext>Our breadth resolution is limited for the moment to only fixed lengths:

void RenderGrid::computedUsedBreadthOfGridTracks(TrackSizingDirection direction, Vector&lt;GridTrack&gt;&amp; tracks)
{
   ....
   GridTrack track;
   if (trackStyles[i].isFixed())
       track.m_usedBreadth = trackStyles[i].getFloatValue();
   else
       notImplemented();
   ....
}

We should be able to support &lt;percentage&gt;, calc and viewport percentage (basically anything falling under Length::isSpecified()) very easily.

Note that we wrongly don&apos;t allow calc in createGridTrackBreadth (StyleResolver.cpp) which should be fixed and also we should ensure with some test that we don&apos;t accept any of the other &lt;length&gt; values (like fill-available, fit-content, ...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776758</commentid>
    <comment_count>1</comment_count>
      <attachid>176269</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-11-27 08:12:06 -0800</bug_when>
    <thetext>Created attachment 176269
all-breadth-size.diff

OK, patch up for RFC. Seems something as simple as this does the trick?

Do we want to thoroughly test all the valid and invalid length types in this same test or should I create another one? Also some calc expressions seem to not work (like calc(100% - 15px) or whatever), but I assume this is because the grid layout implementation is still in the very early stages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776936</commentid>
    <comment_count>2</comment_count>
      <attachid>176269</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-27 10:23:05 -0800</bug_when>
    <thetext>Comment on attachment 176269
all-breadth-size.diff

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

You need to have some testing for the layout side of your change. This will require a check-layout.js test.

You have several choices to do this:
* indirect method by getting the offset from the grid, see LayoutTests/fast/css-grid-layout/place-cell-by-index.html
* direct method using 100% percent width / height on the grid items so that they match the grid tracks&apos; breadth (which requires bug 102968).

&gt; Do we want to thoroughly test all the valid and invalid length types in this same test or should I create another one?

I would add them to the single value test (LayoutTests/fast/css-grid-layout/grid-columns-rows-get-set.html).

&gt; Also some calc expressions seem to not work (like calc(100% - 15px) or whatever), but I assume this is because the grid layout implementation is still in the very early stages.

That&apos;s because the simple calc() you test resolves to a fixed length which we know how to dump. I would check if we don&apos;t need to handle calc inside valueForGridTrackBreadth (CSSComputedStyleDeclaration.cpp)

&gt; LayoutTests/fast/css-grid-layout/resources/grid-columns-rows-get-set-multiple.js:26
&gt; +var gridWithCalcElement = document.getElementById(&quot;gridWithCalcElement&quot;);
&gt; +shouldBe(&quot;getComputedStyle(gridWithCalcElement, &apos;&apos;).getPropertyValue(&apos;-webkit-grid-columns&apos;)&quot;, &quot;&apos;100px 100px&apos;&quot;);
&gt; +shouldBe(&quot;getComputedStyle(gridWithCalcElement, &apos;&apos;).getPropertyValue(&apos;-webkit-grid-rows&apos;)&quot;, &quot;&apos;100px 100px&apos;&quot;);

This testing only validates that we properly apply the calc values properly, which is only half of your change (StyleResolver.cpp).

You are lacking a couple of cases:
* percentage
* viewport percentage
* -webkit-calc(100%)
* -webkit-calc(25% + 25px)
* setting from JavaScript.

Also, I advise people not to use the same value several times or you could miss some variable inversion in the code.

Btw, it&apos;s good to have a test for the multiple value case but we should try to also just test parsing the values one by one to have good isolation in case of regression.

&gt; Source/WebCore/rendering/RenderGrid.cpp:147
&gt; +        if (trackStyles[i].isSpecified())
&gt;              track.m_usedBreadth = trackStyles[i].getFloatValue();
&gt;          else
&gt;              notImplemented();

That&apos;s one way, the other one is to switch to using trackStyles[i].type() to explicitly say what we support, which are not implemented and also catch what we should never see here.

I prefer the explicit way because of the extra documentation it gives but this works too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777394</commentid>
    <comment_count>3</comment_count>
      <attachid>176269</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-27 17:04:36 -0800</bug_when>
    <thetext>Comment on attachment 176269
all-breadth-size.diff

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

&gt; Source/WebCore/rendering/RenderGrid.cpp:145
&gt; +        if (trackStyles[i].isSpecified())
&gt;              track.m_usedBreadth = trackStyles[i].getFloatValue();

Actually this is completely wrong sorry for missing that.

You need to use valueForLength (see css/LengthFunctions.h) to do the conversion: this patch would convert 15% into 15px :(.

What&apos;s tricky is what to pass in as the |maximumValue| for the conversion. You should have computed your logicalWidth already so it&apos;s easy for logical width or column direction. For logical height or row direction, you will need to infer it from the style using computeContentLogicalHeight or some similar function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778027</commentid>
    <comment_count>4</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-11-28 10:24:14 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; Also some calc expressions seem to not work (like calc(100% - 15px) or whatever), but I assume this is because the grid layout implementation is still in the very early stages.
&gt; 
&gt; That&apos;s because the simple calc() you test resolves to a fixed length which we know how to dump. I would check if we don&apos;t need to handle calc inside valueForGridTrackBreadth (CSSComputedStyleDeclaration.cpp)

calc() values were being handled inside the if(length.isPercent()) call, since isPercent() will return true for isCalculated(). So adding an explicit call for isCalculated() before that seems to fix things (at least now I get actual values instead of the empty string for complex calc() expressions).

Question though: it seems the only sane thing to do for isCalculated() is to make the same call than the fallback case, ie, &quot;zoomAdjustedPixelValue(trackLength.value(), style);&quot;. So I guess I can change isPercent() to a type() = Percent and let everything else fall through. Or I could also just remove the Percent case and let the fallback handle it, since it will end up doing basically the same minus the adjustment for zoom (so basically this only seems to make sense if we want Percent to not be influenced by zoom if I got it right).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779139</commentid>
    <comment_count>5</comment_count>
      <attachid>176754</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-11-29 10:20:16 -0800</bug_when>
    <thetext>Created attachment 176754
breadth-types.diff

OK, another RFC patch.

Updates:

- I came to the conclusion that in CSSComputedStyleDeclaration we *really* had to use valueForLength to get the proper dump results, so I&apos;m doing that (had to pass RenderView through a couple of methods).
- Not using .isPercent() since it also includes the &apos;Calc&apos; type, which must be handled separately. Added a comment for this.
- Also using valueForLength() in RenderGrid, same reasons. Not sure of whether the max width or height values I&apos;m using make sense, to be honest (I think the width one at least does).
- Tried to add tests for all this as suggested, including a new layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779661</commentid>
    <comment_count>6</comment_count>
      <attachid>176754</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-29 17:41:55 -0800</bug_when>
    <thetext>Comment on attachment 176754
breadth-types.diff

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

Btw, if you sync past r135965, you can use fast/css-grid-layout/percent-grid-item-in-percent-grid-track.html and fast/css-grid-layout/percent-grid-item-in-percent-grid-track-in-percent-grid.html to assess if you are on the right track. They should be passing after this change and only require RenderGrid::computedUsedBreadthOfGridTracks to be properly implemented!

&gt; LayoutTests/fast/css-grid-layout/grid-columns-rows-get-set.html:11
&gt; +    font: 10px Ahem;

I don&apos;t see why you need to set the font size here, could you clarify why it&apos;s needed outside the &apos;em&apos; resolution?

&gt; LayoutTests/fast/css-grid-layout/resources/grid-columns-rows-get-set.js:30
&gt; +var gridWithCalcComplexElement = document.getElementById(&quot;gridWithCalcComplexElement&quot;);
&gt; +shouldBe(&quot;getComputedStyle(gridWithCalcComplexElement, &apos;&apos;).getPropertyValue(&apos;-webkit-grid-columns&apos;)&quot;, &quot;&apos;150px&apos;&quot;);
&gt; +shouldBe(&quot;getComputedStyle(gridWithCalcComplexElement, &apos;&apos;).getPropertyValue(&apos;-webkit-grid-rows&apos;)&quot;, &quot;&apos;75px&apos;&quot;);

These results are wrong AFAICT, you only get the fixed part of your calc expression.

The easiest way to properly check the percent resolution is to have a container with a fixed height and width as that avoids any circular dependency when resolving percent (for &apos;height&apos;, it can mean that we just interpret it as being &apos;auto&apos;, see http://www.w3.org/TR/CSS21/visudet.html#the-height-property).

If you put a containing block of 800 * 600px (which matches the size of DRT&apos;s viewport) and if you force all the values to be absolute, you should expect:
* column = 450px (50% of 800 + 150)
* row = 465px (65% * 600 + 75)

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:993
&gt; +    return zoomAdjustedPixelValue(valueForLength(trackLength, 0, renderView), style);

The reason you get the value without resolving the percentage properly above is that you pass &apos;0&apos; as maxValue, which is used to resolve percentage.

&gt; Source/WebCore/rendering/RenderGrid.cpp:145
&gt; +        if (trackStyles[i].isSpecified())
&gt; +            track.m_usedBreadth = valueForLength(trackStyles[i], direction == ForColumns ? m_maxPreferredLogicalWidth : logicalHeight(), view());

This is wrong:
* percentages should be resolved against the logical width (logicalWidth()), not the maximum preferred logical widths. The former is your size as computed during this layout, the latter represents the maximum amount of space a renderer can take (e.g. for text, it would represent the layout with the longest possible lines (ie no extra breaks)).
* using logicalHeight() for the row resolution doesn&apos;t work for a good reason: your logical height is usually determined by your children. This means that you are probably using the previous layout&apos;s value (or just 0 if we reset it). That&apos;s why you have to infer it from your style using computeContentLogicalHeight().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780195</commentid>
    <comment_count>7</comment_count>
      <attachid>176987</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-11-30 10:04:01 -0800</bug_when>
    <thetext>Created attachment 176987
breadth-types.diff

OK, another patch. I think I&apos;m making progress but not quite there yet.

- Using zoomAdjustedPixelValueForLength (note the ForLength) now in valueForGridTrackBreadth. This seems to give proper results almost everywhere, and allows us to drop the special case for Percent (so only special case for Auto remains).
- Made the changes requested to RenderGrid. The two testcases you mention (fast/css-grid-layout/percent-grid-item-in-percent-grid-track.html and fast/css-grid-layout/percent-grid-item-in-percent-grid-track-in-percent-grid.html) indeed improved, but still won&apos;t work 100%. I&apos;ll attach the diffs after.
- The complex calc expressions are still not working, we went back again to no result in the dump. Not sure if I&apos;m not getting what the text should look like here, though.
- Moved the font setting just to the EM class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780196</commentid>
    <comment_count>8</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-11-30 10:06:48 -0800</bug_when>
    <thetext>The diff for fast/css-grid-layout/percent-grid-item-in-percent-grid-track-in-percent-grid.html

--- /home/xan/git/webkit/build/normal/layout-test-results/fast/css-grid-layout/percent-grid-item-in-percent-grid-track-in-percent-grid-expected.txt
+++ /home/xan/git/webkit/build/normal/layout-test-results/fast/css-grid-layout/percent-grid-item-in-percent-grid-track-in-percent-grid-actual.txt
@@ -1,12 +1,9 @@
 Test that percentage sized grid items inside percentage sized grid tracks inside a percentage size grid get properly sized.
 
 FAIL:
-Expected 160 for width, but got 0. 
-Expected 90 for height, but got 0. 
-Expected 80 for width, but got 0. 
-Expected 105 for height, but got 0. 
-Expected 240 for width, but got 0. 
-Expected 210 for height, but got 0. 
+Expected 90 for height, but got 54. 
+Expected 105 for height, but got 147. 
+Expected 210 for height, but got 294. 
 
 &lt;div class=&quot;container&quot;&gt;
 &lt;div class=&quot;grid&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;300&quot;&gt;
@@ -17,12 +14,9 @@
 &lt;/div&gt;
 &lt;/div&gt;
 FAIL:
-Expected 160 for width, but got 0. 
-Expected 90 for height, but got 0. 
-Expected 80 for width, but got 0. 
-Expected 105 for height, but got 0. 
-Expected 240 for width, but got 0. 
-Expected 210 for height, but got 0. 
+Expected 90 for height, but got 54. 
+Expected 105 for height, but got 147. 
+Expected 210 for height, but got 294. 
 
 &lt;div class=&quot;container&quot;&gt;
 &lt;div class=&quot;grid&quot; style=&quot;-webkit-writing-mode: horizontal-bt&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;300&quot;&gt;
@@ -33,12 +27,9 @@
 &lt;/div&gt;
 &lt;/div&gt;
 FAIL:
-Expected 120 for width, but got 0. 
-Expected 180 for height, but got 0. 
-Expected 140 for width, but got 0. 
-Expected 60 for height, but got 0. 
-Expected 280 for width, but got 0. 
-Expected 180 for height, but got 0. 
+Expected 120 for width, but got 45. 
+Expected 140 for width, but got 122. 
+Expected 280 for width, but got 245. 
 
 &lt;div class=&quot;container&quot;&gt;
 &lt;div class=&quot;grid&quot; style=&quot;-webkit-writing-mode: vertical-rl;&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;300&quot;&gt;
@@ -49,12 +40,9 @@
 &lt;/div&gt;
 &lt;/div&gt;
 FAIL:
-Expected 120 for width, but got 0. 
-Expected 180 for height, but got 0. 
-Expected 140 for width, but got 0. 
-Expected 60 for height, but got 0. 
-Expected 280 for width, but got 0. 
-Expected 180 for height, but got 0. 
+Expected 120 for width, but got 45. 
+Expected 140 for width, but got 122. 
+Expected 280 for width, but got 245. 
 
 &lt;div class=&quot;container&quot;&gt;
 &lt;div class=&quot;grid&quot; style=&quot;-webkit-writing-mode: vertical-lr;&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;300&quot;&gt;

--

The diff for fast/css-grid-layout/percent-grid-item-in-percent-grid-track.html:

--- /home/xan/git/webkit/build/normal/layout-test-results/fast/css-grid-layout/percent-grid-item-in-percent-grid-track-expected.txt
+++ /home/xan/git/webkit/build/normal/layout-test-results/fast/css-grid-layout/percent-grid-item-in-percent-grid-track-actual.txt
@@ -1,11 +1,8 @@
 Test that percentage sized grid items inside percentage sized grid tracks get properly sized.
 
 FAIL:
-Expected 160 for width, but got 0. 
 Expected 90 for height, but got 0. 
-Expected 80 for width, but got 0. 
 Expected 105 for height, but got 0. 
-Expected 240 for width, but got 0. 
 Expected 210 for height, but got 0. 
 
 &lt;div class=&quot;grid&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;300&quot;&gt;
@@ -15,11 +12,8 @@
     &lt;div id=&quot;d&quot; data-expected-width=&quot;240&quot; data-expected-height=&quot;210&quot;&gt;&lt;/div&gt;
 &lt;/div&gt;
 FAIL:
-Expected 160 for width, but got 0. 
 Expected 90 for height, but got 0. 
-Expected 80 for width, but got 0. 
 Expected 105 for height, but got 0. 
-Expected 240 for width, but got 0. 
 Expected 210 for height, but got 0. 
 
 &lt;div class=&quot;grid&quot; style=&quot;-webkit-writing-mode: horizontal-bt&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;300&quot;&gt;
@@ -29,12 +23,9 @@
     &lt;div id=&quot;d&quot; data-expected-width=&quot;240&quot; data-expected-height=&quot;210&quot;&gt;&lt;/div&gt;
 &lt;/div&gt;
 FAIL:
-Expected 120 for width, but got 0. 
-Expected 180 for height, but got 0. 
-Expected 140 for width, but got 0. 
-Expected 60 for height, but got 0. 
-Expected 280 for width, but got 0. 
-Expected 180 for height, but got 0. 
+Expected 120 for width, but got 69. 
+Expected 140 for width, but got 188. 
+Expected 280 for width, but got 376. 
 
 &lt;div class=&quot;grid&quot; style=&quot;-webkit-writing-mode: vertical-rl;&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;300&quot;&gt;
     &lt;div id=&quot;a&quot; data-expected-width=&quot;120&quot; data-expected-height=&quot;15&quot;&gt;&lt;/div&gt;
@@ -43,12 +34,9 @@
     &lt;div id=&quot;d&quot; data-expected-width=&quot;280&quot; data-expected-height=&quot;180&quot;&gt;&lt;/div&gt;
 &lt;/div&gt;
 FAIL:
-Expected 120 for width, but got 0. 
-Expected 180 for height, but got 0. 
-Expected 140 for width, but got 0. 
-Expected 60 for height, but got 0. 
-Expected 280 for width, but got 0. 
-Expected 180 for height, but got 0. 
+Expected 120 for width, but got 69. 
+Expected 140 for width, but got 188. 
+Expected 280 for width, but got 376. 
 
 &lt;div class=&quot;grid&quot; style=&quot;-webkit-writing-mode: vertical-lr;&quot; data-expected-width=&quot;400&quot; data-expected-height=&quot;300&quot;&gt;
     &lt;div id=&quot;a&quot; data-expected-width=&quot;120&quot; data-expected-height=&quot;15&quot;&gt;&lt;/div&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780231</commentid>
    <comment_count>9</comment_count>
      <attachid>176987</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-30 10:52:37 -0800</bug_when>
    <thetext>Comment on attachment 176987
breadth-types.diff

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

We talked about the patch on IRC with Xan and decided to push the calc case to a follow-up bug as it seems to be more involved to get right (especially on the getComputedStyle side).

Btw, don&apos;t forget that you need to test the layout side of your change as your grid areas are now properly sized. You can follow the other examples (e.g. fast/css-grid-layout/percent-grid-item-in-percent-grid-track.html) on how to get the grid areas size.

&gt; LayoutTests/fast/css-grid-layout/grid-columns-rows-get-set.html:50
&gt; +.gridWithFitContent {
&gt; +    -webkit-grid-columns: -webkit-fit-content;
&gt; +    -webkit-grid-rows: -webkit-fit-available;
&gt; +}

Probably good to test both values (fit-content, fit-available) for both properties.

&gt; Source/WebCore/rendering/RenderGrid.cpp:145
&gt; +            track.m_usedBreadth = valueForLength(trackStyles[i].length(), direction == ForColumns ? logicalWidth() : computeContentLogicalHeight(MainOrPreferredSize, trackStyles[i].length()), view());

Better! However you are doing the wrong resolution for the rows: you are resolving percentage trackStyle against itself which is not what you want. You want to resolve it against the grid element&apos;s style&apos;s logical height. I am sure this is why the tests are failing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780241</commentid>
    <comment_count>10</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-11-30 11:03:25 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; Source/WebCore/rendering/RenderGrid.cpp:145
&gt; &gt; +            track.m_usedBreadth = valueForLength(trackStyles[i].length(), direction == ForColumns ? logicalWidth() : computeContentLogicalHeight(MainOrPreferredSize, trackStyles[i].length()), view());
&gt; 
&gt; Better! However you are doing the wrong resolution for the rows: you are resolving percentage trackStyle against itself which is not what you want. You want to resolve it against the grid element&apos;s style&apos;s logical height. I am sure this is why the tests are failing.

Yeah, that nailed it!

I&apos;ll upload a new patch without the calc() support, and open a new bug to continue working on calc() after this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780295</commentid>
    <comment_count>11</comment_count>
      <attachid>177006</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-11-30 12:18:30 -0800</bug_when>
    <thetext>Created attachment 177006
breadth-size.diff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780301</commentid>
    <comment_count>12</comment_count>
      <attachid>177006</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-11-30 12:20:20 -0800</bug_when>
    <thetext>Comment on attachment 177006
breadth-size.diff

OK, first version that should be reasonably ready for review.

Dropped calc() support as agreed, added a new layout test, modified all the expected results for passing tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781642</commentid>
    <comment_count>13</comment_count>
      <attachid>177286</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-12-03 10:51:08 -0800</bug_when>
    <thetext>Created attachment 177286
breadth-sizes.diff

Updated after changes in SVN trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781700</commentid>
    <comment_count>14</comment_count>
      <attachid>177286</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-12-03 11:31:08 -0800</bug_when>
    <thetext>Comment on attachment 177286
breadth-sizes.diff

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

&gt; LayoutTests/ChangeLog:3
&gt; +        [CSS Grid Layout] Support all specified breadth size

We should probably rename the title to cover only &lt;percentage&gt; and viewport relative sizes.

&gt; LayoutTests/ChangeLog:14
&gt; +        * fast/css-grid-layout/resources/grid-columns-rows-get-set.js: test the new breatdth length types.

Let&apos;s add a test for the multiple entry cases to make sure we support it properly too!

&gt; LayoutTests/fast/css-grid-layout/breadth-size-resolution-grid.html:69
&gt; +

You should probably keep some orthogonal writing mode case. Here the grid element and the grid items always have the same writing mode.

Here is an example of orthogonal writing mode:
&lt;div class=&quot;grid&quot;&gt;
     &lt;div id=&quot;a&quot; class=&quot;verticalRL&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;60&quot;&gt;&lt;/div&gt;
     &lt;div id=&quot;b&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;60&quot;&gt;&lt;/div&gt;
     &lt;div id=&quot;c&quot; class=&quot;verticalRL&quot; data-expected-width=&quot;100&quot; data-expected-height=&quot;100&quot;&gt;&lt;/div&gt;
     &lt;div id=&quot;d&quot; data-expected-width=&quot;80&quot; data-expected-height=&quot;100&quot;&gt;&lt;/div&gt;
 &lt;/div&gt;

(#a and #c have an orthogonal writing mode with respect to their parent)

&gt; LayoutTests/fast/css-grid-layout/resources/grid-columns-rows-get-set.js:3
&gt;  debug(&quot;Test getting |display| set through CSS&quot;);

This is wrong btw, we should change it while we are touching this code:

debug(&quot;Test getting -webkit-grid-columns and -webkit-grid-rows through CSS.&quot;);

&gt; LayoutTests/fast/css-grid-layout/resources/grid-columns-rows-get-set.js:28
&gt; +var gridWithFitContentElement = document.getElementById(&quot;gridWithFitContentElement&quot;);

Adding a debug(...) comment about why those are not valid would be nice as it would make the output more readable. For example:

debug(&quot;Test getting wrong values for -webkit-grid-columns and -webkit-grid-rows through CSS (they should resolve to the default: &apos;none&apos;.&quot;);

&gt; Source/WebCore/ChangeLog:10
&gt; +        types. calc() support is still missing, we&apos;ll do it in a follow-up
&gt; +        patch.

Would be nice to give the *why* here: calc() support is postponed to a follow-up bug as it seems to require more work to be properly serialized in CSSComputedStyleDeclaration.

&gt; Source/WebCore/ChangeLog:13
&gt; +        (WebCore::valueForGridTrackBreadth): support the new types.

Sentences starts with a capital letter (this applies to all entries).

&gt; Source/WebCore/ChangeLog:14
&gt; +        (WebCore::valueForGridTrackList): modify the call to the upper

s/upper/above/ (upper doesn&apos;t sound right here but I am not a native speaker so I could be wrong).

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1002
&gt; +static PassRefPtr&lt;CSSValue&gt; valueForGridTrackBreadth(const GridTrackSize&amp; trackSize, const RenderStyle* style, RenderView *renderView)

This could be a const RenderView* if valueForLength wasn&apos;t dumb (bug worthy though)

&gt; Source/WebCore/rendering/RenderGrid.cpp:145
&gt; +        if (trackLength.isFixed() || trackLength.isPercent() || trackLength.isViewportPercentage())

Let&apos;s add a FIXME about supporting calc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781801</commentid>
    <comment_count>15</comment_count>
      <attachid>177286</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-12-03 13:09:54 -0800</bug_when>
    <thetext>Comment on attachment 177286
breadth-sizes.diff

Just pushed as https://trac.webkit.org/changeset/136432, hopefully with all the changes requested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781802</commentid>
    <comment_count>16</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-12-03 13:10:13 -0800</bug_when>
    <thetext>Closing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176269</attachid>
            <date>2012-11-27 08:12:06 -0800</date>
            <delta_ts>2012-11-29 10:20:16 -0800</delta_ts>
            <desc>all-breadth-size.diff</desc>
            <filename>all-breadth-size.diff</filename>
            <type>text/plain</type>
            <size>6974</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBkOGM0NzE3MzdjYWU4MTliMDUzY2Q4ZDhmNGU1YThmYWVhYWNkMjU5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhhbkBpZ2FsaWEuY29tPgpEYXRlOiBUdWUs
IDI3IE5vdiAyMDEyIDE3OjA3OjEwICswMTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMi0xMS0yNyAg
WGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFtDU1MgR3JpZCBMYXlvdXRd
IFN1cHBvcnQgYWxsIHNwZWNpZmllZCBicmVhZHRoIHNpemUKICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzM1CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlR3JpZFRyYWNrQnJlYWR0aCk6IGFsc28gY29uc2lkZXIgJ2NhbGMnIGxl
bmd0aAogICAgICAgIHR5cGVzLgogICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgog
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlZFVzZWRCcmVhZHRoT2ZHcmlkVHJh
Y2tzKTogdXNlCiAgICAgICAgTGVuZ3RoOjppc1NwZWNpZmllZCgpLCBzaW5jZSBpdCBjYW4gaGFu
ZGxlIGFsbCB0aGUgdHlwZXMgd2UKICAgICAgICBjdXJyZW50bHkgc3VwcG9ydC4KCjIwMTItMTEt
MjcgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgoKICAgICAgICBbQ1NTIEdyaWQgTGF5
b3V0XSBTdXBwb3J0IGFsbCBzcGVjaWZpZWQgYnJlYWR0aCBzaXplCiAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMzNQoKICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWNv
bHVtbnMtcm93cy1nZXQtc2V0LW11bHRpcGxlLmh0bWw6CiAgICAgICAgdGVzdCBjYWxjIHR5cGUg
bGVuZ3Rocy4KICAgICAgICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L3Jlc291cmNlcy9ncmlkLWNv
bHVtbnMtcm93cy1nZXQtc2V0LW11bHRpcGxlLmpzOgogICAgICAgIGRpdHRvLgotLS0KIExheW91
dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArKysr
KysrKysrKysKIC4uLi9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LW11bHRpcGxlLmh0bWwgICAg
ICAgIHwgICAgNyArKysrKysrCiAuLi4vZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC1tdWx0aXBs
ZS5qcyAgICAgICAgICB8ICAgIDQgKysrKwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDE1ICsrKysrKysrKysrKysrKwogU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwICAgICAgICAgICAgICAgfCAgICAyICstCiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgICAgICAgICAgICB8ICAgIDIgKy0KIDYg
ZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MGRkNzUzMC4uNTdmNTk4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTExLTI3ICBYYW4g
TG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBT
dXBwb3J0IGFsbCBzcGVjaWZpZWQgYnJlYWR0aCBzaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzMzUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29s
dW1ucy1yb3dzLWdldC1zZXQtbXVsdGlwbGUuaHRtbDoKKyAgICAgICAgdGVzdCBjYWxjIHR5cGUg
bGVuZ3Rocy4KKyAgICAgICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9yZXNvdXJjZXMvZ3JpZC1j
b2x1bW5zLXJvd3MtZ2V0LXNldC1tdWx0aXBsZS5qczoKKyAgICAgICAgZGl0dG8uCisKIDIwMTIt
MTAtMDggIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgogCiAgICAgICAgIENoYW5n
aW5nIHBvc2l0aW9uOnJlbGF0aXZlIHRvIHBvc2l0aW9uOnN0YXRpYyByZXN1bHRzIGluIG1pcy1w
b3NpdGlvbmVkIGRpdgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlv
dXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC1tdWx0aXBsZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC1tdWx0aXBsZS5o
dG1sCmluZGV4IDI1OGI0OGUuLmU3OGRkMDggMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtbXVsdGlwbGUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWNvbHVtbnMtcm93cy1n
ZXQtc2V0LW11bHRpcGxlLmh0bWwKQEAgLTQ0LDYgKzQ0LDEyIEBAIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKICAgICAtd2Via2l0LWdyaWQtcm93czogMTJlbSAxOHB4IGF1dG87CiAgICAgZm9udDog
MTBweCBBaGVtOwogfQorLmdyaWRXaXRoQ2FsYyB7CisgICAgZGlzcGxheTogLXdlYmtpdC1ncmlk
OworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW5zOiAtd2Via2l0LWNhbGMoMTAwcHgpIC13ZWJraXQt
Y2FsYygxMDBweCk7CisgICAgLXdlYmtpdC1ncmlkLXJvd3M6IC13ZWJraXQtY2FsYygxMDBweCkg
LXdlYmtpdC1jYWxjKDEwMHB4KTsKKyAgICBmb250OiAxMHB4IEFoZW07Cit9CiA8L3N0eWxlPgog
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8
L2hlYWQ+CkBAIC01NSw2ICs2MSw3IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKIDxkaXYgY2xh
c3M9ImdyaWRXaXRoTm9uZUFuZEF1dG8iIGlkPSJncmlkV2l0aE5vbmVBbmRBdXRvIj48L2Rpdj4K
IDxkaXYgY2xhc3M9ImdyaWRXaXRoTm9uZUFuZEZpeGVkIiBpZD0iZ3JpZFdpdGhOb25lQW5kRml4
ZWQiPjwvZGl2PgogPGRpdiBjbGFzcz0iZ3JpZFdpdGhUaHJlZUl0ZW1zIiBpZD0iZ3JpZFdpdGhU
aHJlZUl0ZW1zIj48L2Rpdj4KKzxkaXYgY2xhc3M9ImdyaWRXaXRoQ2FsYyIgaWQ9ImdyaWRXaXRo
Q2FsY0VsZW1lbnQiPjwvZGl2PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9ncmlkLWNvbHVtbnMt
cm93cy1nZXQtc2V0LW11bHRpcGxlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L3Jlc291cmNlcy9ncmlkLWNvbHVtbnMt
cm93cy1nZXQtc2V0LW11bHRpcGxlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlv
dXQvcmVzb3VyY2VzL2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtbXVsdGlwbGUuanMKaW5kZXgg
YTgxMDhlOC4uZjcyM2ViYiAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1s
YXlvdXQvcmVzb3VyY2VzL2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtbXVsdGlwbGUuanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvcmVzb3VyY2VzL2dyaWQtY29sdW1u
cy1yb3dzLWdldC1zZXQtbXVsdGlwbGUuanMKQEAgLTIxLDYgKzIxLDEwIEBAIHZhciBncmlkV2l0
aFRocmVlSXRlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JpZFdpdGhUaHJlZUl0ZW1z
Iik7CiBzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFRocmVlSXRlbXMsICcnKS5n
ZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIiwgIicxNXB4IGF1dG8gMTAw
cHgnIik7CiBzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFRocmVlSXRlbXMsICcn
KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIiwgIicxMjBweCAxOHB4IGF1
dG8nIik7CiAKK3ZhciBncmlkV2l0aENhbGNFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImdyaWRXaXRoQ2FsY0VsZW1lbnQiKTsKK3Nob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKGdy
aWRXaXRoQ2FsY0VsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29s
dW1ucycpIiwgIicxMDBweCAxMDBweCciKTsKK3Nob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKGdy
aWRXaXRoQ2FsY0VsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93
cycpIiwgIicxMDBweCAxMDBweCciKTsKKwogZGVidWcoIiIpOwogZGVidWcoIlRlc3QgdGhlIGlu
aXRpYWwgdmFsdWUiKTsKIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMzAyY2ZlYy4uMzA1ZTI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDEyLTExLTI3ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBTdXBwb3J0IGFsbCBzcGVjaWZpZWQgYnJlYWR0aCBzaXpl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzMzUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9T
dHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdyaWRUcmFja0JyZWFk
dGgpOiBhbHNvIGNvbnNpZGVyICdjYWxjJyBsZW5ndGgKKyAgICAgICAgdHlwZXMuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6Y29tcHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyk6IHVzZQorICAgICAgICBMZW5ndGg6
OmlzU3BlY2lmaWVkKCksIHNpbmNlIGl0IGNhbiBoYW5kbGUgYWxsIHRoZSB0eXBlcyB3ZQorICAg
ICAgICBjdXJyZW50bHkgc3VwcG9ydC4KKwogMjAxMi0xMS0yNSAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW5hbWUgRHluYW1pY05vZGVMaXN0IHRvIExpdmVO
b2RlTGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDMwZGJjNTYuLjAy
OTg2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTI2NjEsNyArMjY2
MSw3IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6dXNlU1ZHWm9vbVJ1bGVzKCkKIAogc3RhdGljIGJv
b2wgY3JlYXRlR3JpZFRyYWNrQnJlYWR0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUsIFN0eWxlUmVzb2x2ZXIqIHNlbGVjdG9yLCBMZW5ndGgmIGxlbmd0aCkKIHsKLSAgICBMZW5n
dGggd29ya2luZ0xlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJ
bnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgVmlld3BvcnRQZXJjZW50YWdl
Q29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3It
PnJvb3RFbGVtZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7
CisgICAgTGVuZ3RoIHdvcmtpbmdMZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+Y29udmVydFRvTGVu
Z3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0
ZWRDb252ZXJzaW9uIHwgVmlld3BvcnRQZXJjZW50YWdlQ29udmVyc2lvbiB8IEF1dG9Db252ZXJz
aW9uPihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgc2Vs
ZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgaWYgKHdvcmtpbmdMZW5ndGgu
aXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggZTUyMDU4MS4uNzRlYzVkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgUmVu
ZGVyR3JpZDo6Y29tcHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyhUcmFja1NpemluZ0RpcmVj
dGlvbiBkaXJlY3Rpb24sCiAgICAgY29uc3QgVmVjdG9yPExlbmd0aD4mIHRyYWNrU3R5bGVzID0g
KGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IHN0eWxlKCktPmdyaWRDb2x1bW5zKCkgOiBzdHls
ZSgpLT5ncmlkUm93cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tTdHlsZXMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgR3JpZFRyYWNrIHRyYWNrOwotICAgICAgICBpZiAodHJh
Y2tTdHlsZXNbaV0uaXNGaXhlZCgpKQorICAgICAgICBpZiAodHJhY2tTdHlsZXNbaV0uaXNTcGVj
aWZpZWQoKSkKICAgICAgICAgICAgIHRyYWNrLm1fdXNlZEJyZWFkdGggPSB0cmFja1N0eWxlc1tp
XS5nZXRGbG9hdFZhbHVlKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0tIAoxLjcuNy42Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176754</attachid>
            <date>2012-11-29 10:20:16 -0800</date>
            <delta_ts>2012-11-30 10:04:01 -0800</delta_ts>
            <desc>breadth-types.diff</desc>
            <filename>breadth-types.diff</filename>
            <type>text/plain</type>
            <size>18737</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA3MTFjNDNlZGY2NWJhYmZhYjg0Yjk5MDljM2Q1NjJmNDQwZTYwNDIzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhhbkBpZ2FsaWEuY29tPgpEYXRlOiBUdWUs
IDI3IE5vdiAyMDEyIDE3OjA3OjEwICswMTAwClN1YmplY3Q6IFtQQVRDSF0gW0NTUyBHcmlkIExh
eW91dF0gU3VwcG9ydCBhbGwgc3BlY2lmaWVkIGJyZWFkdGggc2l6ZQogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMzNQoKUkZDIHBhdGNoIDIsIGFkZCBwZXJjZW50
YWdlLCBjYWxjKCksIHZpZXdwb3J0IHBlcmNlbnRhZ2UgYXMgc3VwcG9ydGVkCmJyZWFkdGggc2l6
ZSB0eXBlcywgcGx1cyB0ZXN0cy4KLS0tCiAuLi4vZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC1l
eHBlY3RlZC50eHQgICAgICAgICB8ICAgMTYgKysrKysrKy0KIC4uLmdyaWQtY29sdW1ucy1yb3dz
LWdldC1zZXQtbXVsdGlwbGUtZXhwZWN0ZWQudHh0IHwgICAgMiArCiAuLi4vZ3JpZC1jb2x1bW5z
LXJvd3MtZ2V0LXNldC1tdWx0aXBsZS5odG1sICAgICAgICB8ICAgIDcgKysrKwogLi4uL2Nzcy1n
cmlkLWxheW91dC9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0Lmh0bWwgfCAgIDM4ICsrKysrKysr
KysrKysrLS0tLS0KIC4uLi9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LW11bHRpcGxlLmpzICAg
ICAgICAgIHwgICAgNCArKwogLi4uL3Jlc291cmNlcy9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0
LmpzICAgICAgICAgfCAgIDM2ICsrKysrKysrKysrKysrKysrLS0KIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIHwgICAxNSArKysrLS0tLQogU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwICAgICAgICAgICAgICAgfCAgICAyICstCiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgICAgICAgICAgICB8ICAgIDQg
Ky0KIDkgZmlsZXMgY2hhbmdlZCwgOTkgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5z
LXJvd3MtZ2V0LXNldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxh
eW91dC9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LWV4cGVjdGVkLnR4dAppbmRleCA3ZTliY2Jl
Li4zMTlmNzVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9n
cmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LWV4cGVjdGVkLnR4
dApAQCAtNCw4ICs0LDggQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogCiBUZXN0IGdldHRp
bmcgfGRpc3BsYXl8IHNldCB0aHJvdWdoIENTUwotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRF
bGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbnMnKSBpcyAn
bm9uZScKLVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkRWxlbWVudCwgJycpLmdldFByb3BlcnR5
VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dzJykgaXMgJ25vbmUnCitQQVNTIGdldENvbXB1dGVkU3R5
bGUoZ3JpZFdpdGhOb25lRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3Jp
ZC1jb2x1bW5zJykgaXMgJ25vbmUnCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhOb25l
RWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dzJykgaXMgJ25v
bmUnCiBQQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhGaXhlZEVsZW1lbnQsICcnKS5nZXRQ
cm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIGlzICcxMHB4JwogUEFTUyBnZXRD
b21wdXRlZFN0eWxlKGdyaWRXaXRoRml4ZWRFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgn
LXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAnMTVweCcKIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlk
V2l0aFBlcmNlbnRFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNv
bHVtbnMnKSBpcyAnNTMlJwpAQCAtMTQsNiArMTQsMTQgQEAgUEFTUyBnZXRDb21wdXRlZFN0eWxl
KGdyaWRXaXRoQXV0b0VsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQt
Y28KIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aEF1dG9FbGVtZW50LCAnJykuZ2V0UHJv
cGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAnYXV0bycKIFBBU1MgZ2V0Q29tcHV0
ZWRTdHlsZShncmlkV2l0aEVNRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQt
Z3JpZC1jb2x1bW5zJykgaXMgJzEwMHB4JwogUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRo
RU1FbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAn
MTUwcHgnCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhDYWxjRWxlbWVudCwgJycpLmdl
dFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5zJykgaXMgJzE1MHB4JworUEFTUyBn
ZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoQ2FsY0VsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVl
KCctd2Via2l0LWdyaWQtcm93cycpIGlzICc3NXB4JworUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdy
aWRXaXRoQ2FsY0NvbXBsZXhFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1n
cmlkLWNvbHVtbnMnKSBpcyAnMTUwcHgnCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhD
YWxjQ29tcGxleEVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93
cycpIGlzICc3NXB4JworUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoVmlld1BvcnRQZXJj
ZW50YWdlRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5z
JykgaXMgJzY0cHgnCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhWaWV3UG9ydFBlcmNl
bnRhZ2VFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBp
cyAnNjBweCcKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aEZpdENvbnRlbnRBdmFpbGFi
bGVFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbnMnKSBp
cyAnbm9uZScKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aEZpdENvbnRlbnRBdmFpbGFi
bGVFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAn
bm9uZScKIAogVGVzdCB0aGUgaW5pdGlhbCB2YWx1ZQogUEFTUyBnZXRDb21wdXRlZFN0eWxlKGVs
ZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIGlzICdu
b25lJwpAQCAtMjYsNiArMzQsMTAgQEAgUEFTUyBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsICcn
KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIGlzICcKIFBBU1MgZ2V0
Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlk
LXJvd3MnKSBpcyAnNDAlJwogUEFTUyBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsICcnKS5nZXRQ
cm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIGlzICdhdXRvJwogUEFTUyBnZXRD
b21wdXRlZFN0eWxlKGVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQt
cm93cycpIGlzICdhdXRvJworUEFTUyBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsICcnKS5nZXRQ
cm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIGlzICcxNTBweCcKK1BBU1MgZ2V0
Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlk
LXJvd3MnKSBpcyAnNzVweCcKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0
UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbnMnKSBpcyAnODBweCcKK1BBU1MgZ2V0
Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlk
LXJvd3MnKSBpcyAnMTUwcHgnCiAKIFRlc3Qgc2V0dGluZyBncmlkLWNvbHVtbnMgYW5kIGdyaWQt
cm93cyBiYWNrIHRvICdub25lJyB0aHJvdWdoIEpTCiBQQVNTIGdldENvbXB1dGVkU3R5bGUoZWxl
bWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5zJykgaXMgJzE4
cHgnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWNv
bHVtbnMtcm93cy1nZXQtc2V0LW11bHRpcGxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtbXVsdGlwbGUtZXhw
ZWN0ZWQudHh0CmluZGV4IGYxOTAxNjQuLjMzNzZlNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtbXVsdGlwbGUt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQt
Y29sdW1ucy1yb3dzLWdldC1zZXQtbXVsdGlwbGUtZXhwZWN0ZWQudHh0CkBAIC0xNCw2ICsxNCw4
IEBAIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aEVNRWxlbWVudCwgJycpLmdldFByb3Bl
cnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1CiBQQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZFdp
dGhFTUVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIGlz
ICcxNTBweCAxNzBweCcKIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFRocmVlSXRlbXMs
ICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIGlzICcxNXB4IGF1
dG8gMTAwcHgnCiBQQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhUaHJlZUl0ZW1zLCAnJyku
Z2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAnMTIwcHggMThweCBhdXRv
JworUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoQ2FsY0VsZW1lbnQsICcnKS5nZXRQcm9w
ZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIGlzICcxMDBweCAxMDBweCcKK1BBU1Mg
Z2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aENhbGNFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1
ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAnMTAwcHggMTAwcHgnCiAKIFRlc3QgdGhlIGluaXRp
YWwgdmFsdWUKIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVydHlW
YWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbnMnKSBpcyAnbm9uZScKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtbXVs
dGlwbGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1u
cy1yb3dzLWdldC1zZXQtbXVsdGlwbGUuaHRtbAppbmRleCAyNThiNDhlLi5lNzhkZDA4IDEwMDc1
NQotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWNvbHVtbnMtcm93
cy1nZXQtc2V0LW11bHRpcGxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1s
YXlvdXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC1tdWx0aXBsZS5odG1sCkBAIC00NCw2ICs0
NCwxMiBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgLXdlYmtpdC1ncmlkLXJvd3M6IDEy
ZW0gMThweCBhdXRvOwogICAgIGZvbnQ6IDEwcHggQWhlbTsKIH0KKy5ncmlkV2l0aENhbGMgewor
ICAgIGRpc3BsYXk6IC13ZWJraXQtZ3JpZDsKKyAgICAtd2Via2l0LWdyaWQtY29sdW1uczogLXdl
YmtpdC1jYWxjKDEwMHB4KSAtd2Via2l0LWNhbGMoMTAwcHgpOworICAgIC13ZWJraXQtZ3JpZC1y
b3dzOiAtd2Via2l0LWNhbGMoMTAwcHgpIC13ZWJraXQtY2FsYygxMDBweCk7CisgICAgZm9udDog
MTBweCBBaGVtOworfQogPC9zdHlsZT4KIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPC9oZWFkPgpAQCAtNTUsNiArNjEsNyBAQCBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCiA8ZGl2IGNsYXNzPSJncmlkV2l0aE5vbmVBbmRBdXRvIiBpZD0iZ3Jp
ZFdpdGhOb25lQW5kQXV0byI+PC9kaXY+CiA8ZGl2IGNsYXNzPSJncmlkV2l0aE5vbmVBbmRGaXhl
ZCIgaWQ9ImdyaWRXaXRoTm9uZUFuZEZpeGVkIj48L2Rpdj4KIDxkaXYgY2xhc3M9ImdyaWRXaXRo
VGhyZWVJdGVtcyIgaWQ9ImdyaWRXaXRoVGhyZWVJdGVtcyI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJn
cmlkV2l0aENhbGMiIGlkPSJncmlkV2l0aENhbGNFbGVtZW50Ij48L2Rpdj4KIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC1tdWx0aXBsZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91
dC9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1n
cmlkLWxheW91dC9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0Lmh0bWwKaW5kZXggMmQ0OTM5My4u
M2RlYTMyMyAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3Jp
ZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdy
aWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQuaHRtbApAQCAtOCwzOSArOCw1NyBA
QCBpZiAod2luZG93LnRlc3RSdW5uZXIpCiA8c3R5bGU+CiAuZ3JpZCB7CiAgICAgZGlzcGxheTog
LXdlYmtpdC1ncmlkOworICAgIGZvbnQ6IDEwcHggQWhlbTsKK30KKy5ncmlkV2l0aE5vbmUgewog
ICAgIC13ZWJraXQtZ3JpZC1jb2x1bW5zOiBub25lOwogICAgIC13ZWJraXQtZ3JpZC1yb3dzOiBu
b25lOwogfQogLmdyaWRXaXRoRml4ZWQgewotICAgIGRpc3BsYXk6IC13ZWJraXQtZ3JpZDsKICAg
ICAtd2Via2l0LWdyaWQtY29sdW1uczogMTBweDsKICAgICAtd2Via2l0LWdyaWQtcm93czogMTVw
eDsKIH0KIC5ncmlkV2l0aFBlcmNlbnQgewotICAgIGRpc3BsYXk6IC13ZWJraXQtZ3JpZDsKICAg
ICAtd2Via2l0LWdyaWQtY29sdW1uczogNTMlOwogICAgIC13ZWJraXQtZ3JpZC1yb3dzOiAyNyU7
CiB9CiAuZ3JpZFdpdGhBdXRvIHsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWdyaWQ7CiAgICAgLXdl
YmtpdC1ncmlkLWNvbHVtbnM6IGF1dG87CiAgICAgLXdlYmtpdC1ncmlkLXJvd3M6IGF1dG87CiB9
CiAuZ3JpZFdpdGhFTSB7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ncmlkOwogICAgIC13ZWJraXQt
Z3JpZC1jb2x1bW5zOiAxMGVtOwogICAgIC13ZWJraXQtZ3JpZC1yb3dzOiAxNWVtOwotICAgIGZv
bnQ6IDEwcHggQWhlbTsKK30KKy5ncmlkV2l0aENhbGMgeworICAgIC13ZWJraXQtZ3JpZC1jb2x1
bW5zOiAtd2Via2l0LWNhbGMoMTUwcHgpOworICAgIC13ZWJraXQtZ3JpZC1yb3dzOiAtd2Via2l0
LWNhbGMoNzVweCk7Cit9CisuZ3JpZFdpdGhDYWxjQ29tcGxleCB7CisgICAgLXdlYmtpdC1ncmlk
LWNvbHVtbnM6IC13ZWJraXQtY2FsYyg1MCUgKyAxNTBweCk7CisgICAgLXdlYmtpdC1ncmlkLXJv
d3M6IC13ZWJraXQtY2FsYyg2NSUgKyA3NXB4KTsKK30KKy5ncmlkV2l0aFZpZXdQb3J0UGVyY2Vu
dGFnZSB7CisgICAgLXdlYmtpdC1ncmlkLWNvbHVtbnM6IDh2dzsKKyAgICAtd2Via2l0LWdyaWQt
cm93czogMTB2aDsKK30KKy5ncmlkV2l0aEZpdENvbnRlbnQgeworICAgIC13ZWJraXQtZ3JpZC1j
b2x1bW5zOiAtd2Via2l0LWZpdC1jb250ZW50OworICAgIC13ZWJraXQtZ3JpZC1yb3dzOiAtd2Vi
a2l0LWZpdC1hdmFpbGFibGU7CiB9CiA8L3N0eWxlPgogPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxkaXYgY2xh
c3M9ImdyaWQiIGlkPSJncmlkRWxlbWVudCI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJncmlkV2l0aEZp
eGVkIiBpZD0iZ3JpZFdpdGhGaXhlZEVsZW1lbnQiPjwvZGl2PgotPGRpdiBjbGFzcz0iZ3JpZFdp
dGhQZXJjZW50IiBpZD0iZ3JpZFdpdGhQZXJjZW50RWxlbWVudCI+PC9kaXY+Ci08ZGl2IGNsYXNz
PSJncmlkV2l0aEF1dG8iIGlkPSJncmlkV2l0aEF1dG9FbGVtZW50Ij48L2Rpdj4KLTxkaXYgY2xh
c3M9ImdyaWRXaXRoRU0iIGlkPSJncmlkV2l0aEVNRWxlbWVudCI+PC9kaXY+Cis8ZGl2IGNsYXNz
PSJncmlkIGdyaWRXaXRoTm9uZSIgaWQ9ImdyaWRXaXRoTm9uZUVsZW1lbnQiPjwvZGl2PgorPGRp
diBjbGFzcz0iZ3JpZCBncmlkV2l0aEZpeGVkIiBpZD0iZ3JpZFdpdGhGaXhlZEVsZW1lbnQiPjwv
ZGl2PgorPGRpdiBjbGFzcz0iZ3JpZCBncmlkV2l0aFBlcmNlbnQiIGlkPSJncmlkV2l0aFBlcmNl
bnRFbGVtZW50Ij48L2Rpdj4KKzxkaXYgY2xhc3M9ImdyaWQgZ3JpZFdpdGhBdXRvIiBpZD0iZ3Jp
ZFdpdGhBdXRvRWxlbWVudCI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJncmlkIGdyaWRXaXRoRU0iIGlk
PSJncmlkV2l0aEVNRWxlbWVudCI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJncmlkIGdyaWRXaXRoQ2Fs
YyIgaWQ9ImdyaWRXaXRoQ2FsY0VsZW1lbnQiPjwvZGl2PgorPGRpdiBjbGFzcz0iZ3JpZCBncmlk
V2l0aENhbGNDb21wbGV4IiBpZD0iZ3JpZFdpdGhDYWxjQ29tcGxleEVsZW1lbnQiPjwvZGl2Pgor
PGRpdiBjbGFzcz0iZ3JpZCBncmlkV2l0aFZpZXdQb3J0UGVyY2VudGFnZSIgaWQ9ImdyaWRXaXRo
Vmlld1BvcnRQZXJjZW50YWdlRWxlbWVudCI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJncmlkIGdyaWRX
aXRoRml0Q29udGVudEF2YWlsYWJsZSIgaWQ9ImdyaWRXaXRoRml0Q29udGVudEF2YWlsYWJsZUVs
ZW1lbnQiPjwvZGl2PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9ncmlkLWNvbHVtbnMtcm93cy1n
ZXQtc2V0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWdyaWQtbGF5b3V0L3Jlc291cmNlcy9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LW11
bHRpcGxlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvcmVzb3VyY2VzL2dy
aWQtY29sdW1ucy1yb3dzLWdldC1zZXQtbXVsdGlwbGUuanMKaW5kZXggYTgxMDhlOC4uZjcyM2Vi
YiAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvcmVzb3VyY2Vz
L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtbXVsdGlwbGUuanMKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtZ3JpZC1sYXlvdXQvcmVzb3VyY2VzL2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQt
bXVsdGlwbGUuanMKQEAgLTIxLDYgKzIxLDEwIEBAIHZhciBncmlkV2l0aFRocmVlSXRlbXMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JpZFdpdGhUaHJlZUl0ZW1zIik7CiBzaG91bGRCZSgi
Z2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFRocmVlSXRlbXMsICcnKS5nZXRQcm9wZXJ0eVZhbHVl
KCctd2Via2l0LWdyaWQtY29sdW1ucycpIiwgIicxNXB4IGF1dG8gMTAwcHgnIik7CiBzaG91bGRC
ZSgiZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFRocmVlSXRlbXMsICcnKS5nZXRQcm9wZXJ0eVZh
bHVlKCctd2Via2l0LWdyaWQtcm93cycpIiwgIicxMjBweCAxOHB4IGF1dG8nIik7CiAKK3ZhciBn
cmlkV2l0aENhbGNFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyaWRXaXRoQ2Fs
Y0VsZW1lbnQiKTsKK3Nob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoQ2FsY0VsZW1l
bnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIiwgIicxMDBw
eCAxMDBweCciKTsKK3Nob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoQ2FsY0VsZW1l
bnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIiwgIicxMDBweCAx
MDBweCciKTsKKwogZGVidWcoIiIpOwogZGVidWcoIlRlc3QgdGhlIGluaXRpYWwgdmFsdWUiKTsK
IHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9yZXNvdXJjZXMvZ3JpZC1jb2x1bW5z
LXJvd3MtZ2V0LXNldC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L3Jlc291
cmNlcy9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LmpzCmluZGV4IDFkMWFlMzcuLjI3NThlM2Ug
MTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L3Jlc291cmNlcy9n
cmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdy
aWQtbGF5b3V0L3Jlc291cmNlcy9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LmpzCkBAIC0xLDkg
KzEsOSBAQAogZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBzZXR0aW5nIGFuZCBnZXR0aW5nIGdyaWQt
Y29sdW1ucyBhbmQgZ3JpZC1yb3dzIHdvcmtzIGFzIGV4cGVjdGVkJyk7CiAKIGRlYnVnKCJUZXN0
IGdldHRpbmcgfGRpc3BsYXl8IHNldCB0aHJvdWdoIENTUyIpOwotdmFyIGdyaWRFbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyaWRFbGVtZW50Iik7Ci1zaG91bGRCZSgiZ2V0Q29t
cHV0ZWRTdHlsZShncmlkRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3Jp
ZC1jb2x1bW5zJykiLCAiJ25vbmUnIik7Ci1zaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShncmlk
RWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dzJykiLCAiJ25v
bmUnIik7Cit2YXIgZ3JpZFdpdGhOb25lRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJncmlkV2l0aE5vbmVFbGVtZW50Iik7CitzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShncmlk
V2l0aE5vbmVFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVt
bnMnKSIsICInbm9uZSciKTsKK3Nob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoTm9u
ZUVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIiwgIidu
b25lJyIpOwogCiB2YXIgZ3JpZFdpdGhGaXhlZEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZ3JpZFdpdGhGaXhlZEVsZW1lbnQiKTsKIHNob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxl
KGdyaWRXaXRoRml4ZWRFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlk
LWNvbHVtbnMnKSIsICInMTBweCciKTsKQEAgLTIxLDYgKzIxLDIyIEBAIHZhciBncmlkV2l0aEVN
RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmlkV2l0aEVNRWxlbWVudCIpOwog
c2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhFTUVsZW1lbnQsICcnKS5nZXRQcm9w
ZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIiwgIicxMDBweCciKTsKIHNob3VsZEJl
KCJnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoRU1FbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1
ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSIsICInMTUwcHgnIik7CiAKK3ZhciBncmlkV2l0aENhbGNF
bGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyaWRXaXRoQ2FsY0VsZW1lbnQiKTsK
K3Nob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoQ2FsY0VsZW1lbnQsICcnKS5nZXRQ
cm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIiwgIicxNTBweCciKTsKK3Nob3Vs
ZEJlKCJnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoQ2FsY0VsZW1lbnQsICcnKS5nZXRQcm9wZXJ0
eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIiwgIic3NXB4JyIpOworCit2YXIgZ3JpZFdpdGhD
YWxjQ29tcGxleEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JpZFdpdGhDYWxj
Q29tcGxleEVsZW1lbnQiKTsKK3Nob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoQ2Fs
Y0NvbXBsZXhFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVt
bnMnKSIsICInMTUwcHgnIik7CitzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aENh
bGNDb21wbGV4RWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dz
JykiLCAiJzc1cHgnIik7CisKK3ZhciBncmlkV2l0aFZpZXdQb3J0UGVyY2VudGFnZUVsZW1lbnQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JpZFdpdGhWaWV3UG9ydFBlcmNlbnRhZ2VFbGVt
ZW50Iik7CitzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFZpZXdQb3J0UGVyY2Vu
dGFnZUVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycp
IiwgIic2NHB4JyIpOworc2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhWaWV3UG9y
dFBlcmNlbnRhZ2VFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJv
d3MnKSIsICInNjBweCciKTsKKwordmFyIGdyaWRXaXRoRml0Q29udGVudEF2YWlsYWJsZUVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JpZFdpdGhGaXRDb250ZW50QXZhaWxhYmxl
RWxlbWVudCIpOworc2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhGaXRDb250ZW50
QXZhaWxhYmxlRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1
bW5zJykiLCAiJ25vbmUnIik7CitzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aEZp
dENvbnRlbnRBdmFpbGFibGVFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1n
cmlkLXJvd3MnKSIsICInbm9uZSciKTsKKwogZGVidWcoIiIpOwogZGVidWcoIlRlc3QgdGhlIGlu
aXRpYWwgdmFsdWUiKTsKIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CkBAIC00OSw2ICs2NSwyMCBAQCBlbGVtZW50LnN0eWxlLndlYmtpdEdyaWRSb3dzID0gImF1
dG8iOwogc2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgJycpLmdldFByb3BlcnR5
VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5zJykiLCAiJ2F1dG8nIik7CiBzaG91bGRCZSgiZ2V0
Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlk
LXJvd3MnKSIsICInYXV0byciKTsKIAorZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKK2VsZW1lbnQuc3R5
bGUud2Via2l0R3JpZENvbHVtbnMgPSAiLXdlYmtpdC1jYWxjKDE1MHB4KSI7CitlbGVtZW50LnN0
eWxlLndlYmtpdEdyaWRSb3dzID0gIi13ZWJraXQtY2FsYyg3NXB4KSI7CitzaG91bGRCZSgiZ2V0
Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlk
LWNvbHVtbnMnKSIsICInMTUwcHgnIik7CitzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShlbGVt
ZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSIsICInNzVweCci
KTsKKworZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKK2VsZW1lbnQuc3R5bGUud2Via2l0R3JpZENvbHVt
bnMgPSAiMTB2dyI7CitlbGVtZW50LnN0eWxlLndlYmtpdEdyaWRSb3dzID0gIjI1dmgiOworc2hv
dWxkQmUoImdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13
ZWJraXQtZ3JpZC1jb2x1bW5zJykiLCAiJzgwcHgnIik7CitzaG91bGRCZSgiZ2V0Q29tcHV0ZWRT
dHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSIs
ICInMTUwcHgnIik7CisKIGRlYnVnKCIiKTsKIGRlYnVnKCJUZXN0IHNldHRpbmcgZ3JpZC1jb2x1
bW5zIGFuZCBncmlkLXJvd3MgYmFjayB0byAnbm9uZScgdGhyb3VnaCBKUyIpOwogZWxlbWVudC5z
dHlsZS53ZWJraXRHcmlkQ29sdW1ucyA9ICIxOHB4IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNGJjN2IwOC4uZjYxNGZi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKQEAgLTk4MywxNiArOTgzLDE3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6dmFsdWVGb3JGaWx0ZXIoY29uc3QgUmVuZGVyT2JqCiB9
CiAjZW5kaWYKIAotc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNr
QnJlYWR0aChjb25zdCBMZW5ndGgmIHRyYWNrTGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5
bGUpCitzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRo
KGNvbnN0IExlbmd0aCYgdHJhY2tMZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVu
ZGVyVmlldyogcmVuZGVyVmlldykKIHsKLSAgICBpZiAodHJhY2tMZW5ndGguaXNQZXJjZW50KCkp
CisgICAgLy8gV2Ugb25seSB3YW50IFBlcmNlbnQgaGVyZSwgaXNQZXJjZW50KCkgaGFuZGxlcyBi
b3RoICdDYWxjdWxhdGVkJyBhbmQgJ1BlcmNlbnQnLgorICAgIGlmICh0cmFja0xlbmd0aC50eXBl
KCkgPT0gUGVyY2VudCkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVl
KHRyYWNrTGVuZ3RoKTsKICAgICBpZiAodHJhY2tMZW5ndGguaXNBdXRvKCkpCiAgICAgICAgIHJl
dHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsK
LSAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh0cmFja0xlbmd0aC52YWx1ZSgpLCBz
dHlsZSk7CisgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWVGb3JMZW5ndGgo
dHJhY2tMZW5ndGgsIDAsIHJlbmRlclZpZXcpLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVm
UHRyPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0xpc3QoY29uc3QgVmVjdG9yPExlbmd0aD4m
IHRyYWNrTGVuZ3RocywgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChjb25zdCBWZWN0b3I8TGVuZ3RoPiYg
dHJhY2tMZW5ndGhzLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclZpZXcqIHJlbmRl
clZpZXcpCiB7CiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYXQgbGVhc3QgYW4gZWxlbWVudCEKICAg
ICBBU1NFUlQodHJhY2tMZW5ndGhzLnNpemUoKSk7CkBAIC0xMDAzLDcgKzEwMDQsNyBAQCBzdGF0
aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KGNvbnN0IFZlY3Rv
cjxMZW5ndGg+JiB0cmFja0xlbgogCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHRyYWNrTGVuZ3Rocy5zaXplKCk7ICsraSkKLSAgICAgICAgbGlzdC0+YXBwZW5kKHZh
bHVlRm9yR3JpZFRyYWNrQnJlYWR0aCh0cmFja0xlbmd0aHNbaV0sIHN0eWxlKSk7CisgICAgICAg
IGxpc3QtPmFwcGVuZCh2YWx1ZUZvckdyaWRUcmFja0JyZWFkdGgodHJhY2tMZW5ndGhzW2ldLCBz
dHlsZSwgcmVuZGVyVmlldykpOwogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KIApAQCAt
MTgyNiwxMCArMTgyNywxMCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICAgICAg
cmV0dXJuIGxpc3QucmVsZWFzZSgpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRHcmlkQ29sdW1uczogewotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yR3JpZFRy
YWNrTGlzdChzdHlsZS0+Z3JpZENvbHVtbnMoKSwgc3R5bGUuZ2V0KCkpOworICAgICAgICAgICAg
cmV0dXJuIHZhbHVlRm9yR3JpZFRyYWNrTGlzdChzdHlsZS0+Z3JpZENvbHVtbnMoKSwgc3R5bGUu
Z2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZFJvd3M6IHsKLSAgICAgICAgICAgIHJldHVy
biB2YWx1ZUZvckdyaWRUcmFja0xpc3Qoc3R5bGUtPmdyaWRSb3dzKCksIHN0eWxlLmdldCgpKTsK
KyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckdyaWRUcmFja0xpc3Qoc3R5bGUtPmdyaWRSb3dz
KCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZENvbHVtbjoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBjNmQwMzMyLi42YmFkNTgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0yNjYxLDcgKzI2NjEsNyBAQCBib29sIFN0
eWxlUmVzb2x2ZXI6OnVzZVNWR1pvb21SdWxlcygpCiAKIHN0YXRpYyBib29sIGNyZWF0ZUdyaWRU
cmFja0JyZWFkdGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBTdHlsZVJlc29s
dmVyKiBzZWxlY3RvciwgTGVuZ3RoJiBsZW5ndGgpCiB7Ci0gICAgTGVuZ3RoIHdvcmtpbmdMZW5n
dGggPSBwcmltaXRpdmVWYWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNp
b24gfCBQZXJjZW50Q29udmVyc2lvbiB8IFZpZXdwb3J0UGVyY2VudGFnZUNvbnZlcnNpb24gfCBB
dXRvQ29udmVyc2lvbj4oc2VsZWN0b3ItPnN0eWxlKCksIHNlbGVjdG9yLT5yb290RWxlbWVudFN0
eWxlKCksIHNlbGVjdG9yLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOworICAgIExlbmd0aCB3
b3JraW5nTGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVn
ZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbiB8
IFZpZXdwb3J0UGVyY2VudGFnZUNvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4oc2VsZWN0b3It
PnN0eWxlKCksIHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCksIHNlbGVjdG9yLT5zdHlsZSgp
LT5lZmZlY3RpdmVab29tKCkpOwogICAgIGlmICh3b3JraW5nTGVuZ3RoLmlzVW5kZWZpbmVkKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdy
aWQuY3BwCmluZGV4IDQ5MmE4M2YuLjIwMmI5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAKQEAgLTE0MSw4ICsxNDEsOCBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1
dGVkVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9u
LAogICAgIGNvbnN0IFZlY3RvcjxMZW5ndGg+JiB0cmFja1N0eWxlcyA9IChkaXJlY3Rpb24gPT0g
Rm9yQ29sdW1ucykgPyBzdHlsZSgpLT5ncmlkQ29sdW1ucygpIDogc3R5bGUoKS0+Z3JpZFJvd3Mo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYWNrU3R5bGVzLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIEdyaWRUcmFjayB0cmFjazsKLSAgICAgICAgaWYgKHRyYWNrU3R5bGVzW2ldLmlz
Rml4ZWQoKSkKLSAgICAgICAgICAgIHRyYWNrLm1fdXNlZEJyZWFkdGggPSB0cmFja1N0eWxlc1tp
XS5nZXRGbG9hdFZhbHVlKCk7CisgICAgICAgIGlmICh0cmFja1N0eWxlc1tpXS5pc1NwZWNpZmll
ZCgpKQorICAgICAgICAgICAgdHJhY2subV91c2VkQnJlYWR0aCA9IHZhbHVlRm9yTGVuZ3RoKHRy
YWNrU3R5bGVzW2ldLCBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IG1fbWF4UHJlZmVycmVkTG9n
aWNhbFdpZHRoIDogbG9naWNhbEhlaWdodCgpLCB2aWV3KCkpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogCi0tIAoxLjcuNy42Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176987</attachid>
            <date>2012-11-30 10:04:01 -0800</date>
            <delta_ts>2012-11-30 12:20:01 -0800</delta_ts>
            <desc>breadth-types.diff</desc>
            <filename>breadth-types.diff</filename>
            <type>text/plain</type>
            <size>17081</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA2NDA0YzkwNGViYWQ5MTIxYmI3YTNkMjEyOTk5YTZkYmZiMjk5MmI5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhhbkBpZ2FsaWEuY29tPgpEYXRlOiBGcmks
IDMwIE5vdiAyMDEyIDA5OjIxOjI1ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gUkZDIHYzCgotLS0K
IC4uLi9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LWV4cGVjdGVkLnR4dCAgICAgICAgIHwgICAx
NiArKysrKysrLQogLi4uZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC1tdWx0aXBsZS1leHBlY3Rl
ZC50eHQgfCAgICAyICsKIC4uLi9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LW11bHRpcGxlLmh0
bWwgICAgICAgIHwgICAgNyArKysrCiAuLi4vY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1y
b3dzLWdldC1zZXQuaHRtbCB8ICAgMzggKysrKysrKysrKysrKysrLS0tLS0KIC4uLi9ncmlkLWNv
bHVtbnMtcm93cy1nZXQtc2V0LW11bHRpcGxlLmpzICAgICAgICAgIHwgICAgNCArKwogLi4uL3Jl
c291cmNlcy9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LmpzICAgICAgICAgfCAgIDM2ICsrKysr
KysrKysrKysrKysrLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwIHwgICAgNCArLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cCAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuY3BwICAgICAgICAgICAgfCAgICA0ICstCiA5IGZpbGVzIGNoYW5nZWQsIDkzIGluc2Vy
dGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNl
dC1leHBlY3RlZC50eHQKaW5kZXggN2U5YmNiZS4uZjc0Nzk4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1
bW5zLXJvd3MtZ2V0LXNldC1leHBlY3RlZC50eHQKQEAgLTQsOCArNCw4IEBAIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFCiAKIAogVGVzdCBnZXR0aW5nIHxkaXNwbGF5fCBzZXQgdGhyb3VnaCBDU1MK
LVBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUo
Jy13ZWJraXQtZ3JpZC1jb2x1bW5zJykgaXMgJ25vbmUnCi1QQVNTIGdldENvbXB1dGVkU3R5bGUo
Z3JpZEVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIGlz
ICdub25lJworUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoTm9uZUVsZW1lbnQsICcnKS5n
ZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIGlzICdub25lJworUEFTUyBn
ZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoTm9uZUVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVl
KCctd2Via2l0LWdyaWQtcm93cycpIGlzICdub25lJwogUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdy
aWRXaXRoRml4ZWRFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNv
bHVtbnMnKSBpcyAnMTBweCcKIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aEZpeGVkRWxl
bWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dzJykgaXMgJzE1cHgn
CiBQQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhQZXJjZW50RWxlbWVudCwgJycpLmdldFBy
b3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5zJykgaXMgJzUzJScKQEAgLTE0LDYgKzE0
LDE0IEBAIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aEF1dG9FbGVtZW50LCAnJykuZ2V0
UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvCiBQQVNTIGdldENvbXB1dGVkU3R5bGUoZ3Jp
ZFdpdGhBdXRvRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dz
JykgaXMgJ2F1dG8nCiBQQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhFTUVsZW1lbnQsICcn
KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIGlzICcxMDBweCcKIFBB
U1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aEVNRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFs
dWUoJy13ZWJraXQtZ3JpZC1yb3dzJykgaXMgJzE1MHB4JworUEFTUyBnZXRDb21wdXRlZFN0eWxl
KGdyaWRXaXRoQ2FsY0VsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQt
Y29sdW1ucycpIGlzICcxNTBweCcKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aENhbGNF
bGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAnNzVw
eCcKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aENhbGNDb21wbGV4RWxlbWVudCwgJycp
LmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5zJykgaXMgJzE1MHB4JworUEFT
UyBnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoQ2FsY0NvbXBsZXhFbGVtZW50LCAnJykuZ2V0UHJv
cGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAnNzVweCcKK1BBU1MgZ2V0Q29tcHV0
ZWRTdHlsZShncmlkV2l0aFZpZXdQb3J0UGVyY2VudGFnZUVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0
eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIGlzICc4dncnCitQQVNTIGdldENvbXB1dGVk
U3R5bGUoZ3JpZFdpdGhWaWV3UG9ydFBlcmNlbnRhZ2VFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlW
YWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAnMTB2aCcKK1BBU1MgZ2V0Q29tcHV0ZWRTdHls
ZShncmlkV2l0aEZpdENvbnRlbnRBdmFpbGFibGVFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1
ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbnMnKSBpcyAnbm9uZScKK1BBU1MgZ2V0Q29tcHV0ZWRTdHls
ZShncmlkV2l0aEZpdENvbnRlbnRBdmFpbGFibGVFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1
ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAnbm9uZScKIAogVGVzdCB0aGUgaW5pdGlhbCB2YWx1
ZQogUEFTUyBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCct
d2Via2l0LWdyaWQtY29sdW1ucycpIGlzICdub25lJwpAQCAtMjYsNiArMzQsMTAgQEAgUEFTUyBn
ZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdy
aWQtY29sdW1ucycpIGlzICcKIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0
UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAnNDAlJwogUEFTUyBnZXRDb21w
dXRlZFN0eWxlKGVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29s
dW1ucycpIGlzICdhdXRvJwogUEFTUyBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsICcnKS5nZXRQ
cm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIGlzICdhdXRvJworUEFTUyBnZXRDb21w
dXRlZFN0eWxlKGVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29s
dW1ucycpIGlzICcxNTBweCcKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0
UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAnNzVweCcKK1BBU1MgZ2V0Q29t
cHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNv
bHVtbnMnKSBpcyAnMTB2dycKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0
UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAnMjV2aCcKIAogVGVzdCBzZXR0
aW5nIGdyaWQtY29sdW1ucyBhbmQgZ3JpZC1yb3dzIGJhY2sgdG8gJ25vbmUnIHRocm91Z2ggSlMK
IFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdl
YmtpdC1ncmlkLWNvbHVtbnMnKSBpcyAnMThweCcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtbXVsdGlwbGUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5z
LXJvd3MtZ2V0LXNldC1tdWx0aXBsZS1leHBlY3RlZC50eHQKaW5kZXggZjE5MDE2NC4uMzM3NmU0
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1
bW5zLXJvd3MtZ2V0LXNldC1tdWx0aXBsZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC1tdWx0aXBsZS1l
eHBlY3RlZC50eHQKQEAgLTE0LDYgKzE0LDggQEAgUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRX
aXRoRU1FbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHUKIFBB
U1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aEVNRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFs
dWUoJy13ZWJraXQtZ3JpZC1yb3dzJykgaXMgJzE1MHB4IDE3MHB4JwogUEFTUyBnZXRDb21wdXRl
ZFN0eWxlKGdyaWRXaXRoVGhyZWVJdGVtcywgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQt
Z3JpZC1jb2x1bW5zJykgaXMgJzE1cHggYXV0byAxMDBweCcKIFBBU1MgZ2V0Q29tcHV0ZWRTdHls
ZShncmlkV2l0aFRocmVlSXRlbXMsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQt
cm93cycpIGlzICcxMjBweCAxOHB4IGF1dG8nCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZFdp
dGhDYWxjRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5z
JykgaXMgJzEwMHB4IDEwMHB4JworUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoQ2FsY0Vs
ZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIGlzICcxMDBw
eCAxMDBweCcKIAogVGVzdCB0aGUgaW5pdGlhbCB2YWx1ZQogUEFTUyBnZXRDb21wdXRlZFN0eWxl
KGVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIGlz
ICdub25lJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3Jp
ZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC1tdWx0aXBsZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC1tdWx0aXBsZS5odG1sCmlu
ZGV4IDI1OGI0OGUuLmU3OGRkMDggMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdy
aWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtbXVsdGlwbGUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0
LW11bHRpcGxlLmh0bWwKQEAgLTQ0LDYgKzQ0LDEyIEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
ICAgICAtd2Via2l0LWdyaWQtcm93czogMTJlbSAxOHB4IGF1dG87CiAgICAgZm9udDogMTBweCBB
aGVtOwogfQorLmdyaWRXaXRoQ2FsYyB7CisgICAgZGlzcGxheTogLXdlYmtpdC1ncmlkOworICAg
IC13ZWJraXQtZ3JpZC1jb2x1bW5zOiAtd2Via2l0LWNhbGMoMTAwcHgpIC13ZWJraXQtY2FsYygx
MDBweCk7CisgICAgLXdlYmtpdC1ncmlkLXJvd3M6IC13ZWJraXQtY2FsYygxMDBweCkgLXdlYmtp
dC1jYWxjKDEwMHB4KTsKKyAgICBmb250OiAxMHB4IEFoZW07Cit9CiA8L3N0eWxlPgogPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+
CkBAIC01NSw2ICs2MSw3IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKIDxkaXYgY2xhc3M9Imdy
aWRXaXRoTm9uZUFuZEF1dG8iIGlkPSJncmlkV2l0aE5vbmVBbmRBdXRvIj48L2Rpdj4KIDxkaXYg
Y2xhc3M9ImdyaWRXaXRoTm9uZUFuZEZpeGVkIiBpZD0iZ3JpZFdpdGhOb25lQW5kRml4ZWQiPjwv
ZGl2PgogPGRpdiBjbGFzcz0iZ3JpZFdpdGhUaHJlZUl0ZW1zIiBpZD0iZ3JpZFdpdGhUaHJlZUl0
ZW1zIj48L2Rpdj4KKzxkaXYgY2xhc3M9ImdyaWRXaXRoQ2FsYyIgaWQ9ImdyaWRXaXRoQ2FsY0Vs
ZW1lbnQiPjwvZGl2PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy9ncmlkLWNvbHVtbnMtcm93cy1n
ZXQtc2V0LW11bHRpcGxlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdl
dC1zZXQuaHRtbAppbmRleCAyZDQ5MzkzLi45MzYzZjRlIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0
LXNldC5odG1sCkBAIC04LDM5ICs4LDU5IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKIDxzdHls
ZT4KIC5ncmlkIHsKICAgICBkaXNwbGF5OiAtd2Via2l0LWdyaWQ7Cit9CisuZ3JpZFdpdGhOb25l
IHsKICAgICAtd2Via2l0LWdyaWQtY29sdW1uczogbm9uZTsKICAgICAtd2Via2l0LWdyaWQtcm93
czogbm9uZTsKIH0KIC5ncmlkV2l0aEZpeGVkIHsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWdyaWQ7
CiAgICAgLXdlYmtpdC1ncmlkLWNvbHVtbnM6IDEwcHg7CiAgICAgLXdlYmtpdC1ncmlkLXJvd3M6
IDE1cHg7CiB9CiAuZ3JpZFdpdGhQZXJjZW50IHsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWdyaWQ7
CiAgICAgLXdlYmtpdC1ncmlkLWNvbHVtbnM6IDUzJTsKICAgICAtd2Via2l0LWdyaWQtcm93czog
MjclOwogfQogLmdyaWRXaXRoQXV0byB7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ncmlkOwogICAg
IC13ZWJraXQtZ3JpZC1jb2x1bW5zOiBhdXRvOwogICAgIC13ZWJraXQtZ3JpZC1yb3dzOiBhdXRv
OwogfQogLmdyaWRXaXRoRU0gewotICAgIGRpc3BsYXk6IC13ZWJraXQtZ3JpZDsKICAgICAtd2Vi
a2l0LWdyaWQtY29sdW1uczogMTBlbTsKICAgICAtd2Via2l0LWdyaWQtcm93czogMTVlbTsKICAg
ICBmb250OiAxMHB4IEFoZW07CiB9CisuZ3JpZFdpdGhDYWxjIHsKKyAgICAtd2Via2l0LWdyaWQt
Y29sdW1uczogLXdlYmtpdC1jYWxjKDE1MHB4KTsKKyAgICAtd2Via2l0LWdyaWQtcm93czogLXdl
YmtpdC1jYWxjKDc1cHgpOworfQorLmdyaWRXaXRoQ2FsY0NvbXBsZXggeworICAgIC13ZWJraXQt
Z3JpZC1jb2x1bW5zOiAtd2Via2l0LWNhbGMoNTAlICsgMTUwcHgpOworICAgIC13ZWJraXQtZ3Jp
ZC1yb3dzOiAtd2Via2l0LWNhbGMoNjUlICsgNzVweCk7CisgICAgd2lkdGg6IDgwMHB4OworICAg
IGhlaWdodDogNjAwcHg7Cit9CisuZ3JpZFdpdGhWaWV3UG9ydFBlcmNlbnRhZ2UgeworICAgIC13
ZWJraXQtZ3JpZC1jb2x1bW5zOiA4dnc7CisgICAgLXdlYmtpdC1ncmlkLXJvd3M6IDEwdmg7Cit9
CisuZ3JpZFdpdGhGaXRDb250ZW50IHsKKyAgICAtd2Via2l0LWdyaWQtY29sdW1uczogLXdlYmtp
dC1maXQtY29udGVudDsKKyAgICAtd2Via2l0LWdyaWQtcm93czogLXdlYmtpdC1maXQtYXZhaWxh
YmxlOworfQogPC9zdHlsZT4KIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08ZGl2IGNsYXNzPSJncmlkIiBpZD0i
Z3JpZEVsZW1lbnQiPjwvZGl2PgotPGRpdiBjbGFzcz0iZ3JpZFdpdGhGaXhlZCIgaWQ9ImdyaWRX
aXRoRml4ZWRFbGVtZW50Ij48L2Rpdj4KLTxkaXYgY2xhc3M9ImdyaWRXaXRoUGVyY2VudCIgaWQ9
ImdyaWRXaXRoUGVyY2VudEVsZW1lbnQiPjwvZGl2PgotPGRpdiBjbGFzcz0iZ3JpZFdpdGhBdXRv
IiBpZD0iZ3JpZFdpdGhBdXRvRWxlbWVudCI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJncmlkV2l0aEVN
IiBpZD0iZ3JpZFdpdGhFTUVsZW1lbnQiPjwvZGl2PgorPGRpdiBjbGFzcz0iZ3JpZCBncmlkV2l0
aE5vbmUiIGlkPSJncmlkV2l0aE5vbmVFbGVtZW50Ij48L2Rpdj4KKzxkaXYgY2xhc3M9ImdyaWQg
Z3JpZFdpdGhGaXhlZCIgaWQ9ImdyaWRXaXRoRml4ZWRFbGVtZW50Ij48L2Rpdj4KKzxkaXYgY2xh
c3M9ImdyaWQgZ3JpZFdpdGhQZXJjZW50IiBpZD0iZ3JpZFdpdGhQZXJjZW50RWxlbWVudCI+PC9k
aXY+Cis8ZGl2IGNsYXNzPSJncmlkIGdyaWRXaXRoQXV0byIgaWQ9ImdyaWRXaXRoQXV0b0VsZW1l
bnQiPjwvZGl2PgorPGRpdiBjbGFzcz0iZ3JpZCBncmlkV2l0aEVNIiBpZD0iZ3JpZFdpdGhFTUVs
ZW1lbnQiPjwvZGl2PgorPGRpdiBjbGFzcz0iZ3JpZCBncmlkV2l0aENhbGMiIGlkPSJncmlkV2l0
aENhbGNFbGVtZW50Ij48L2Rpdj4KKzxkaXYgY2xhc3M9ImdyaWQgZ3JpZFdpdGhDYWxjQ29tcGxl
eCIgaWQ9ImdyaWRXaXRoQ2FsY0NvbXBsZXhFbGVtZW50Ij48L2Rpdj4KKzxkaXYgY2xhc3M9Imdy
aWQgZ3JpZFdpdGhWaWV3UG9ydFBlcmNlbnRhZ2UiIGlkPSJncmlkV2l0aFZpZXdQb3J0UGVyY2Vu
dGFnZUVsZW1lbnQiPjwvZGl2PgorPGRpdiBjbGFzcz0iZ3JpZCBncmlkV2l0aEZpdENvbnRlbnRB
dmFpbGFibGUiIGlkPSJncmlkV2l0aEZpdENvbnRlbnRBdmFpbGFibGVFbGVtZW50Ij48L2Rpdj4K
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxh
eW91dC9yZXNvdXJjZXMvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC1tdWx0aXBsZS5qcyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L3Jlc291cmNlcy9ncmlkLWNvbHVtbnMtcm93
cy1nZXQtc2V0LW11bHRpcGxlLmpzCmluZGV4IGE4MTA4ZTguLmY3MjNlYmIgMTAwNzU1Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L3Jlc291cmNlcy9ncmlkLWNvbHVtbnMt
cm93cy1nZXQtc2V0LW11bHRpcGxlLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQt
bGF5b3V0L3Jlc291cmNlcy9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LW11bHRpcGxlLmpzCkBA
IC0yMSw2ICsyMSwxMCBAQCB2YXIgZ3JpZFdpdGhUaHJlZUl0ZW1zID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImdyaWRXaXRoVGhyZWVJdGVtcyIpOwogc2hvdWxkQmUoImdldENvbXB1dGVkU3R5
bGUoZ3JpZFdpdGhUaHJlZUl0ZW1zLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlk
LWNvbHVtbnMnKSIsICInMTVweCBhdXRvIDEwMHB4JyIpOwogc2hvdWxkQmUoImdldENvbXB1dGVk
U3R5bGUoZ3JpZFdpdGhUaHJlZUl0ZW1zLCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1n
cmlkLXJvd3MnKSIsICInMTIwcHggMThweCBhdXRvJyIpOwogCit2YXIgZ3JpZFdpdGhDYWxjRWxl
bWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmlkV2l0aENhbGNFbGVtZW50Iik7Citz
aG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aENhbGNFbGVtZW50LCAnJykuZ2V0UHJv
cGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbnMnKSIsICInMTAwcHggMTAwcHgnIik7Citz
aG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aENhbGNFbGVtZW50LCAnJykuZ2V0UHJv
cGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSIsICInMTAwcHggMTAwcHgnIik7CisKIGRl
YnVnKCIiKTsKIGRlYnVnKCJUZXN0IHRoZSBpbml0aWFsIHZhbHVlIik7CiB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtZ3JpZC1sYXlvdXQvcmVzb3VyY2VzL2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQu
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9yZXNvdXJjZXMvZ3JpZC1jb2x1
bW5zLXJvd3MtZ2V0LXNldC5qcwppbmRleCAxZDFhZTM3Li4yNGQxZmRlIDEwMDc1NQotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9yZXNvdXJjZXMvZ3JpZC1jb2x1bW5zLXJv
d3MtZ2V0LXNldC5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9yZXNv
dXJjZXMvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC5qcwpAQCAtMSw5ICsxLDkgQEAKIGRlc2Ny
aXB0aW9uKCdUZXN0IHRoYXQgc2V0dGluZyBhbmQgZ2V0dGluZyBncmlkLWNvbHVtbnMgYW5kIGdy
aWQtcm93cyB3b3JrcyBhcyBleHBlY3RlZCcpOwogCiBkZWJ1ZygiVGVzdCBnZXR0aW5nIHxkaXNw
bGF5fCBzZXQgdGhyb3VnaCBDU1MiKTsKLXZhciBncmlkRWxlbWVudCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJncmlkRWxlbWVudCIpOwotc2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUoZ3Jp
ZEVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIiwg
Iidub25lJyIpOwotc2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUoZ3JpZEVsZW1lbnQsICcnKS5n
ZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIiwgIidub25lJyIpOwordmFyIGdy
aWRXaXRoTm9uZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JpZFdpdGhOb25l
RWxlbWVudCIpOworc2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhOb25lRWxlbWVu
dCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5zJykiLCAiJ25vbmUn
Iik7CitzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aE5vbmVFbGVtZW50LCAnJyku
Z2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSIsICInbm9uZSciKTsKIAogdmFy
IGdyaWRXaXRoRml4ZWRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyaWRXaXRo
Rml4ZWRFbGVtZW50Iik7CiBzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aEZpeGVk
RWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5zJykiLCAi
JzEwcHgnIik7CkBAIC0yMSw2ICsyMSwyMiBAQCB2YXIgZ3JpZFdpdGhFTUVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JpZFdpdGhFTUVsZW1lbnQiKTsKIHNob3VsZEJlKCJnZXRD
b21wdXRlZFN0eWxlKGdyaWRXaXRoRU1FbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdl
YmtpdC1ncmlkLWNvbHVtbnMnKSIsICInMTAwcHgnIik7CiBzaG91bGRCZSgiZ2V0Q29tcHV0ZWRT
dHlsZShncmlkV2l0aEVNRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3Jp
ZC1yb3dzJykiLCAiJzE1MHB4JyIpOwogCit2YXIgZ3JpZFdpdGhDYWxjRWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJncmlkV2l0aENhbGNFbGVtZW50Iik7CitzaG91bGRCZSgiZ2V0
Q29tcHV0ZWRTdHlsZShncmlkV2l0aENhbGNFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgn
LXdlYmtpdC1ncmlkLWNvbHVtbnMnKSIsICInMTUwcHgnIik7CitzaG91bGRCZSgiZ2V0Q29tcHV0
ZWRTdHlsZShncmlkV2l0aENhbGNFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtp
dC1ncmlkLXJvd3MnKSIsICInNzVweCciKTsKKwordmFyIGdyaWRXaXRoQ2FsY0NvbXBsZXhFbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyaWRXaXRoQ2FsY0NvbXBsZXhFbGVtZW50
Iik7CitzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aENhbGNDb21wbGV4RWxlbWVu
dCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5zJykiLCAiJzQ1MHB4
JyIpOworc2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhDYWxjQ29tcGxleEVsZW1l
bnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIiwgIic0NjVweCci
KTsKKwordmFyIGdyaWRXaXRoVmlld1BvcnRQZXJjZW50YWdlRWxlbWVudCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJncmlkV2l0aFZpZXdQb3J0UGVyY2VudGFnZUVsZW1lbnQiKTsKK3Nob3Vs
ZEJlKCJnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoVmlld1BvcnRQZXJjZW50YWdlRWxlbWVudCwg
JycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5zJykiLCAiJzh2dyciKTsK
K3Nob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoVmlld1BvcnRQZXJjZW50YWdlRWxl
bWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dzJykiLCAiJzEwdmgn
Iik7CisKK3ZhciBncmlkV2l0aEZpdENvbnRlbnRBdmFpbGFibGVFbGVtZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImdyaWRXaXRoRml0Q29udGVudEF2YWlsYWJsZUVsZW1lbnQiKTsKK3No
b3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoRml0Q29udGVudEF2YWlsYWJsZUVsZW1l
bnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIiwgIidub25l
JyIpOworc2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhGaXRDb250ZW50QXZhaWxh
YmxlRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dzJykiLCAi
J25vbmUnIik7CisKIGRlYnVnKCIiKTsKIGRlYnVnKCJUZXN0IHRoZSBpbml0aWFsIHZhbHVlIik7
CiB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpAQCAtNDksNiAr
NjUsMjAgQEAgZWxlbWVudC5zdHlsZS53ZWJraXRHcmlkUm93cyA9ICJhdXRvIjsKIHNob3VsZEJl
KCJnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0
LWdyaWQtY29sdW1ucycpIiwgIidhdXRvJyIpOwogc2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUo
ZWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dzJykiLCAiJ2F1
dG8nIik7CiAKK2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2RvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CitlbGVtZW50LnN0eWxlLndlYmtpdEdyaWRD
b2x1bW5zID0gIi13ZWJraXQtY2FsYygxNTBweCkiOworZWxlbWVudC5zdHlsZS53ZWJraXRHcmlk
Um93cyA9ICItd2Via2l0LWNhbGMoNzVweCkiOworc2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUo
ZWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5zJykiLCAi
JzE1MHB4JyIpOworc2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgJycpLmdldFBy
b3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dzJykiLCAiJzc1cHgnIik7CisKK2VsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZWxlbWVudCk7CitlbGVtZW50LnN0eWxlLndlYmtpdEdyaWRDb2x1bW5zID0gIjEwdnciOwor
ZWxlbWVudC5zdHlsZS53ZWJraXRHcmlkUm93cyA9ICIyNXZoIjsKK3Nob3VsZEJlKCJnZXRDb21w
dXRlZFN0eWxlKGVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29s
dW1ucycpIiwgIicxMHZ3JyIpOworc2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwg
JycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dzJykiLCAiJzI1dmgnIik7CisK
IGRlYnVnKCIiKTsKIGRlYnVnKCJUZXN0IHNldHRpbmcgZ3JpZC1jb2x1bW5zIGFuZCBncmlkLXJv
d3MgYmFjayB0byAnbm9uZScgdGhyb3VnaCBKUyIpOwogZWxlbWVudC5zdHlsZS53ZWJraXRHcmlk
Q29sdW1ucyA9ICIxOHB4IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYjRiMTljNy4uYjA1MmZiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTk4
NSwxMSArOTg1LDkgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjp2YWx1ZUZvckZpbHRlcihjb25zdCBSZW5kZXJPYmoKIAogc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aChjb25zdCBHcmlkVHJhY2tTaXpl
JiB0cmFja1NpemUsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKLSAgICBpZiAodHJhY2tT
aXplLmxlbmd0aCgpLmlzUGVyY2VudCgpKQotICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCku
Y3JlYXRlVmFsdWUodHJhY2tTaXplLmxlbmd0aCgpKTsKICAgICBpZiAodHJhY2tTaXplLmxlbmd0
aCgpLmlzQXV0bygpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlQXV0byk7Ci0gICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFs
dWUodHJhY2tTaXplLmxlbmd0aCgpLnZhbHVlKCksIHN0eWxlKTsKKyAgICByZXR1cm4gem9vbUFk
anVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aCh0cmFja1NpemUubGVuZ3RoKCksIHN0eWxlKTsKIH0K
IAogc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChjb25z
dCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6ZXMsIGNvbnN0IFJlbmRlclN0eWxlKiBz
dHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA5NWE5NzU3Li45MDlj
YmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0yNjYxLDcgKzI2NjEs
NyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OnVzZVNWR1pvb21SdWxlcygpCiAKIHN0YXRpYyBib29s
IGNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
LCBTdHlsZVJlc29sdmVyKiBzZWxlY3RvciwgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplKQogewot
ICAgIExlbmd0aCB3b3JraW5nTGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbnZlcnRUb0xlbmd0
aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBWaWV3cG9ydFBl
cmNlbnRhZ2VDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KHNlbGVjdG9yLT5zdHlsZSgpLCBz
ZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBzZWxlY3Rvci0+c3R5bGUoKS0+ZWZmZWN0aXZl
Wm9vbSgpKTsKKyAgICBMZW5ndGggd29ya2luZ0xlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb252
ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwg
Q2FsY3VsYXRlZENvbnZlcnNpb24gfCBWaWV3cG9ydFBlcmNlbnRhZ2VDb252ZXJzaW9uIHwgQXV0
b0NvbnZlcnNpb24+KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHls
ZSgpLCBzZWxlY3Rvci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKICAgICBpZiAod29ya2lu
Z0xlbmd0aC5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCBlN2EzNTFjLi40OTlkMGRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0xNDEsOCArMTQxLDggQEAg
dm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlZFVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwKICAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4m
IHRyYWNrU3R5bGVzID0gKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IHN0eWxlKCktPmdyaWRD
b2x1bW5zKCkgOiBzdHlsZSgpLT5ncmlkUm93cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdHJhY2tTdHlsZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgR3JpZFRyYWNrIHRyYWNrOwot
ICAgICAgICBpZiAodHJhY2tTdHlsZXNbaV0ubGVuZ3RoKCkuaXNGaXhlZCgpKQotICAgICAgICAg
ICAgdHJhY2subV91c2VkQnJlYWR0aCA9IHRyYWNrU3R5bGVzW2ldLmxlbmd0aCgpLmdldEZsb2F0
VmFsdWUoKTsKKyAgICAgICAgaWYgKHRyYWNrU3R5bGVzW2ldLmxlbmd0aCgpLmlzU3BlY2lmaWVk
KCkpCisgICAgICAgICAgICB0cmFjay5tX3VzZWRCcmVhZHRoID0gdmFsdWVGb3JMZW5ndGgodHJh
Y2tTdHlsZXNbaV0ubGVuZ3RoKCksIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gbG9naWNhbFdp
ZHRoKCkgOiBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWFpbk9yUHJlZmVycmVkU2l6ZSwg
dHJhY2tTdHlsZXNbaV0ubGVuZ3RoKCkpLCB2aWV3KCkpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogCi0tIAoxLjcuNy42Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177006</attachid>
            <date>2012-11-30 12:18:30 -0800</date>
            <delta_ts>2012-12-03 10:51:08 -0800</delta_ts>
            <desc>breadth-size.diff</desc>
            <filename>breadth-size.diff</filename>
            <type>text/plain</type>
            <size>26500</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAyNjQ4ZDk2ZjhhNTg5NzdjYzViOTlkZGM5NWFjZTVkOWYzODUyZDk5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhhbkBpZ2FsaWEuY29tPgpEYXRlOiBGcmks
IDMwIE5vdiAyMDEyIDA5OjIxOjI1ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMi0xMS0zMCAg
WGFuIExvcGV6ICA8eGFuQGlnYWxpYS5jb20+CgogICAgW0NTUyBHcmlkIExheW91dF0gU3VwcG9y
dCBhbGwgc3BlY2lmaWVkIGJyZWFkdGggc2l6ZQogICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMzMzNQoKICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoK
ICAgIEFkZCBzdXBwb3J0IGZvciBwZXJjZW50IGFuZCB2aWV3cG9ydCBwZXJjZW50IGJyZWFkdGgg
c2l6ZQogICAgdHlwZXMuIGNhbGMoKSBzdXBwb3J0IGlzIHN0aWxsIG1pc3NpbmcsIHdlJ2xsIGRv
IGl0IGluIGEgZm9sbG93LXVwCiAgICBwYXRjaC4KCiAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwOgogICAgKFdlYkNvcmU6OnZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aCk6
IHN1cHBvcnQgdGhlIG5ldyB0eXBlcy4KICAgIChXZWJDb3JlOjp2YWx1ZUZvckdyaWRUcmFja0xp
c3QpOiBtb2RpZnkgdGhlIGNhbGwgdG8gdGhlIHVwcGVyCiAgICBtZXRob2QsIHNpbmNlIGl0cyBz
aWduYXR1cmUgaXMgY2hhbmdlZC4KICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOiBkaXR0by4KICAgICogcmVuZGVyaW5nL1JlbmRl
ckdyaWQuY3BwOgogICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVkVXNlZEJyZWFkdGhP
ZkdyaWRUcmFja3MpOiBzdXBwb3J0CiAgICBwZXJjZW50IGFuZCB2aWV3cG9ydCBwZXJjZW50YWdl
IGxlbmd0aHMuCgoyMDEyLTExLTMwICBYYW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KCiAgICBb
Q1NTIEdyaWQgTGF5b3V0XSBTdXBwb3J0IGFsbCBzcGVjaWZpZWQgYnJlYWR0aCBzaXplCiAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzM1CgogICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9icmVhZHRo
LXNpemUtcmVzb2x1dGlvbi1ncmlkLWV4cGVjdGVkLnR4dDogQWRkZWQuCiAgICAqIGZhc3QvY3Nz
LWdyaWQtbGF5b3V0L2JyZWFkdGgtc2l6ZS1yZXNvbHV0aW9uLWdyaWQuaHRtbDogQWRkZWQuCiAg
ICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtZXhwZWN0
ZWQudHh0OiB0ZXN0IHRoZSBuZXcgYnJlYWR0aCBsZW5ndGggdHlwZXMuCiAgICAqIGZhc3QvY3Nz
LWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQuaHRtbDogZGl0dG8uCiAgICAq
IGZhc3QvY3NzLWdyaWQtbGF5b3V0L3BlcmNlbnQtZ3JpZC1pdGVtLWluLXBlcmNlbnQtZ3JpZC10
cmFjay1leHBlY3RlZC50eHQ6IHdlIG5vdyBwYXNzIHRoaXMgdGVzdC4KICAgICogZmFzdC9jc3Mt
Z3JpZC1sYXlvdXQvcGVyY2VudC1ncmlkLWl0ZW0taW4tcGVyY2VudC1ncmlkLXRyYWNrLWluLXBl
cmNlbnQtZ3JpZC1leHBlY3RlZC50eHQ6IGRpdHRvLgogICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91
dC9yZXNvdXJjZXMvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC5qczogdGVzdCB0aGUgbmV3IGJy
ZWF0ZHRoIGxlbmd0aCB0eXBlcy4KLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTUgKysrKwogLi4uL2JyZWFkdGgtc2l6ZS1yZXNvbHV0
aW9uLWdyaWQtZXhwZWN0ZWQudHh0ICAgICAgfCAgICA0ICsKIC4uLi9icmVhZHRoLXNpemUtcmVz
b2x1dGlvbi1ncmlkLmh0bWwgICAgICAgICAgICAgIHwgICA3MSArKysrKysrKysrKysrKysrKysr
KwogLi4uL2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtZXhwZWN0ZWQudHh0ICAgICAgICAgfCAg
IDEyICsrKy0KIC4uLi9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC5o
dG1sIHwgICAzMSArKysrKystLS0KIC4uLm50LWdyaWQtaXRlbS1pbi1wZXJjZW50LWdyaWQtdHJh
Y2stZXhwZWN0ZWQudHh0IHwgICA2MCArLS0tLS0tLS0tLS0tLS0tCiAuLi5wZXJjZW50LWdyaWQt
dHJhY2staW4tcGVyY2VudC1ncmlkLWV4cGVjdGVkLnR4dCB8ICAgNjggKy0tLS0tLS0tLS0tLS0t
LS0tLQogLi4uL3Jlc291cmNlcy9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LmpzICAgICAgICAg
fCAgIDI1ICsrKysrKy0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAyMCArKysrKysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwIHwgICAxNiArKy0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAgICAgICAgICAgICB8ICAgIDUgKy0KIDExIGZpbGVzIGNoYW5nZWQsIDE4
MyBpbnNlcnRpb25zKCspLCAxNDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5
b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvYnJlYWR0aC1zaXplLXJlc29sdXRpb24tZ3Jp
ZC1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1n
cmlkLWxheW91dC9icmVhZHRoLXNpemUtcmVzb2x1dGlvbi1ncmlkLmh0bWwKCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWI0
MjUyYi4uNDZmNWFhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTExLTMwICBYYW4gTG9w
ZXogIDx4YW5AaWdhbGlhLmNvbT4KKworICAgICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBTdXBwb3J0
IGFsbCBzcGVjaWZpZWQgYnJlYWR0aCBzaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMzMzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2JyZWFkdGgtc2l6ZS1y
ZXNvbHV0aW9uLWdyaWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy1n
cmlkLWxheW91dC9icmVhZHRoLXNpemUtcmVzb2x1dGlvbi1ncmlkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtZXhw
ZWN0ZWQudHh0OiB0ZXN0IHRoZSBuZXcgYnJlYWR0aCBsZW5ndGggdHlwZXMuCisgICAgICAgICog
ZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC5odG1sOiBkaXR0
by4KKyAgICAgICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9wZXJjZW50LWdyaWQtaXRlbS1pbi1w
ZXJjZW50LWdyaWQtdHJhY2stZXhwZWN0ZWQudHh0OiB3ZSBub3cgcGFzcyB0aGlzIHRlc3QuCisg
ICAgICAgICogZmFzdC9jc3MtZ3JpZC1sYXlvdXQvcGVyY2VudC1ncmlkLWl0ZW0taW4tcGVyY2Vu
dC1ncmlkLXRyYWNrLWluLXBlcmNlbnQtZ3JpZC1leHBlY3RlZC50eHQ6IGRpdHRvLgorICAgICAg
ICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L3Jlc291cmNlcy9ncmlkLWNvbHVtbnMtcm93cy1nZXQt
c2V0LmpzOiB0ZXN0IHRoZSBuZXcgYnJlYXRkdGggbGVuZ3RoIHR5cGVzLgorCiAyMDEyLTExLTMw
ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIExheW91dCBU
ZXN0IGZhc3QvZm9ybXMvbW9udGgtbXVsdGlwbGUtZmllbGRzL21vbnRoLW11bHRpcGxlLWZpZWxk
cy1wcmVzZXJ2ZS12YWx1ZS1hZnRlci1oaXN0b3J5LWJhY2suaHRtbCBpcyBmYWlsaW5nCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9icmVhZHRoLXNpemUtcmVz
b2x1dGlvbi1ncmlkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5
b3V0L2JyZWFkdGgtc2l6ZS1yZXNvbHV0aW9uLWdyaWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjZjVmYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9icmVhZHRoLXNpemUtcmVzb2x1dGlvbi1ncmlk
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1Rlc3QgdGhhdCBzcGVjaWZ5aW5nIHRoZSB0
cmFjayBicmVhZHRoIHNpemVzIHdvcmtzIHByb3Blcmx5IHdpdGggYWxsIHRoZSBhbGxvd2VkIGxl
bmd0aCB0eXBlcyBhbmQgaW4gZGlmZmVyZW50IHdyaXRpbmcgbW9kZXMuCisKK1BBU1MKK1BBU1MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2JyZWFkdGgtc2l6
ZS1yZXNvbHV0aW9uLWdyaWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0
L2JyZWFkdGgtc2l6ZS1yZXNvbHV0aW9uLWdyaWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40ZDllN2M2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtZ3JpZC1sYXlvdXQvYnJlYWR0aC1zaXplLXJlc29sdXRpb24tZ3JpZC5odG1sCkBAIC0w
LDAgKzEsNzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRD
U1NHcmlkTGF5b3V0RW5hYmxlZCIsIDEpOworPC9zY3JpcHQ+Cis8c3R5bGU+CisuZ3JpZCB7Cisg
ICAgZGlzcGxheTogLXdlYmtpdC1ncmlkOworICAgIGJhY2tncm91bmQtY29sb3I6IGdyZXk7Cisg
ICAgLXdlYmtpdC1ncmlkLWNvbHVtbnM6IDEwMHB4IDEwdnc7CisgICAgLXdlYmtpdC1ncmlkLXJv
d3M6IDEwdmggMTAwcHg7Cit9CisKKyNhIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOwor
ICAgIC13ZWJraXQtZ3JpZC1jb2x1bW46IDE7CisgICAgLXdlYmtpdC1ncmlkLXJvdzogMTsKKyAg
ICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7Cit9CisKKyNiIHsKKyAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBsaW1lOworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW46IDI7CisgICAgLXdlYmtp
dC1ncmlkLXJvdzogMTsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7Cit9CisK
KyNjIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwdXJwbGU7CisgICAgLXdlYmtpdC1ncmlkLWNv
bHVtbjogMTsKKyAgICAtd2Via2l0LWdyaWQtcm93OiAyOworICAgIHdpZHRoOiAxMDAlOworICAg
IGhlaWdodDogMTAwJTsKK30KKworI2QgeworICAgIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsK
KyAgICAtd2Via2l0LWdyaWQtY29sdW1uOiAyOworICAgIC13ZWJraXQtZ3JpZC1yb3c6IDI7Cisg
ICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworfQorCisudmVydGljYWxSTCB7Cisg
ICAgLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsOworfQorPC9zdHlsZT4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvY2hlY2stbGF5b3V0LmpzIj48L3NjcmlwdD4KKzxib2R5
IG9ubG9hZD0iY2hlY2tMYXlvdXQoJy5ncmlkJykiPgorCis8cD5UZXN0IHRoYXQgc3BlY2lmeWlu
ZyB0aGUgdHJhY2sgYnJlYWR0aCBzaXplcyB3b3JrcyBwcm9wZXJseSB3aXRoIGFsbCB0aGUgYWxs
b3dlZCBsZW5ndGggdHlwZXMgYW5kIGluIGRpZmZlcmVudCB3cml0aW5nIG1vZGVzLjwvcD4KKwor
PGRpdiBjbGFzcz0iZ3JpZCI+CisgICAgPGRpdiBpZD0iYSIgZGF0YS1leHBlY3RlZC13aWR0aD0i
MTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iNjAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImIiIGRh
dGEtZXhwZWN0ZWQtd2lkdGg9IjgwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iNjAiPjwvZGl2Pgor
ICAgIDxkaXYgaWQ9ImMiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjEwMCIgZGF0YS1leHBlY3RlZC1o
ZWlnaHQ9IjEwMCI+PC9kaXY+CisgICAgPGRpdiBpZD0iZCIgZGF0YS1leHBlY3RlZC13aWR0aD0i
ODAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMDAiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xh
c3M9ImdyaWQgdmVydGljYWxSTCI+CisgICAgPGRpdiBpZD0iYSIgZGF0YS1leHBlY3RlZC13aWR0
aD0iNjAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMDAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImIi
IGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjYwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iODAiPjwvZGl2
PgorICAgIDxkaXYgaWQ9ImMiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjEwMCIgZGF0YS1leHBlY3Rl
ZC1oZWlnaHQ9IjEwMCI+PC9kaXY+CisgICAgPGRpdiBpZD0iZCIgZGF0YS1leHBlY3RlZC13aWR0
aD0iMTAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iODAiPjwvZGl2PgorPC9kaXY+CisKKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0
L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC1leHBlY3RlZC50eHQK
aW5kZXggN2U5YmNiZS4uMDQxYzYzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Z3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNl
dC1leHBlY3RlZC50eHQKQEAgLTQsOCArNCw4IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAK
IAogVGVzdCBnZXR0aW5nIHxkaXNwbGF5fCBzZXQgdGhyb3VnaCBDU1MKLVBBU1MgZ2V0Q29tcHV0
ZWRTdHlsZShncmlkRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1j
b2x1bW5zJykgaXMgJ25vbmUnCi1QQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZEVsZW1lbnQsICcn
KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIGlzICdub25lJworUEFTUyBn
ZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoTm9uZUVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVl
KCctd2Via2l0LWdyaWQtY29sdW1ucycpIGlzICdub25lJworUEFTUyBnZXRDb21wdXRlZFN0eWxl
KGdyaWRXaXRoTm9uZUVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQt
cm93cycpIGlzICdub25lJwogUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoRml4ZWRFbGVt
ZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbnMnKSBpcyAnMTBw
eCcKIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aEZpeGVkRWxlbWVudCwgJycpLmdldFBy
b3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dzJykgaXMgJzE1cHgnCiBQQVNTIGdldENvbXB1
dGVkU3R5bGUoZ3JpZFdpdGhQZXJjZW50RWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13
ZWJraXQtZ3JpZC1jb2x1bW5zJykgaXMgJzUzJScKQEAgLTE0LDYgKzE0LDEyIEBAIFBBU1MgZ2V0
Q29tcHV0ZWRTdHlsZShncmlkV2l0aEF1dG9FbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgn
LXdlYmtpdC1ncmlkLWNvCiBQQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhBdXRvRWxlbWVu
dCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dzJykgaXMgJ2F1dG8nCiBQ
QVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhFTUVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZh
bHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIGlzICcxMDBweCcKIFBBU1MgZ2V0Q29tcHV0ZWRT
dHlsZShncmlkV2l0aEVNRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3Jp
ZC1yb3dzJykgaXMgJzE1MHB4JworUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoVmlld1Bv
cnRQZXJjZW50YWdlRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1j
b2x1bW5zJykgaXMgJzY0cHgnCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhWaWV3UG9y
dFBlcmNlbnRhZ2VFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJv
d3MnKSBpcyAnNjBweCcKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aEZpdENvbnRlbnRF
bGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbnMnKSBpcyAn
bm9uZScKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aEZpdENvbnRlbnRFbGVtZW50LCAn
JykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAnbm9uZScKK1BBU1Mg
Z2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aEZpdEF2YWlsYWJsZUVsZW1lbnQsICcnKS5nZXRQcm9w
ZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIGlzICdub25lJworUEFTUyBnZXRDb21w
dXRlZFN0eWxlKGdyaWRXaXRoRml0QXZhaWxhYmxlRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFs
dWUoJy13ZWJraXQtZ3JpZC1yb3dzJykgaXMgJ25vbmUnCiAKIFRlc3QgdGhlIGluaXRpYWwgdmFs
dWUKIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgn
LXdlYmtpdC1ncmlkLWNvbHVtbnMnKSBpcyAnbm9uZScKQEAgLTI2LDYgKzMyLDggQEAgUEFTUyBn
ZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdy
aWQtY29sdW1ucycpIGlzICcKIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0
UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAnNDAlJwogUEFTUyBnZXRDb21w
dXRlZFN0eWxlKGVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29s
dW1ucycpIGlzICdhdXRvJwogUEFTUyBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsICcnKS5nZXRQ
cm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIGlzICdhdXRvJworUEFTUyBnZXRDb21w
dXRlZFN0eWxlKGVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29s
dW1ucycpIGlzICc4MHB4JworUEFTUyBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsICcnKS5nZXRQ
cm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIGlzICcxNTBweCcKIAogVGVzdCBzZXR0
aW5nIGdyaWQtY29sdW1ucyBhbmQgZ3JpZC1yb3dzIGJhY2sgdG8gJ25vbmUnIHRocm91Z2ggSlMK
IFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdl
YmtpdC1ncmlkLWNvbHVtbnMnKSBpcyAnMThweCcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQuaHRt
bAppbmRleCAyZDQ5MzkzLi5jNzBkOWNjIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1ncmlkLWxheW91dC9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC5odG1s
CkBAIC04LDM5ICs4LDUyIEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKIDxzdHlsZT4KIC5ncmlk
IHsKICAgICBkaXNwbGF5OiAtd2Via2l0LWdyaWQ7Cit9CisuZ3JpZFdpdGhOb25lIHsKICAgICAt
d2Via2l0LWdyaWQtY29sdW1uczogbm9uZTsKICAgICAtd2Via2l0LWdyaWQtcm93czogbm9uZTsK
IH0KIC5ncmlkV2l0aEZpeGVkIHsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWdyaWQ7CiAgICAgLXdl
YmtpdC1ncmlkLWNvbHVtbnM6IDEwcHg7CiAgICAgLXdlYmtpdC1ncmlkLXJvd3M6IDE1cHg7CiB9
CiAuZ3JpZFdpdGhQZXJjZW50IHsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWdyaWQ7CiAgICAgLXdl
YmtpdC1ncmlkLWNvbHVtbnM6IDUzJTsKICAgICAtd2Via2l0LWdyaWQtcm93czogMjclOwogfQog
LmdyaWRXaXRoQXV0byB7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ncmlkOwogICAgIC13ZWJraXQt
Z3JpZC1jb2x1bW5zOiBhdXRvOwogICAgIC13ZWJraXQtZ3JpZC1yb3dzOiBhdXRvOwogfQogLmdy
aWRXaXRoRU0gewotICAgIGRpc3BsYXk6IC13ZWJraXQtZ3JpZDsKICAgICAtd2Via2l0LWdyaWQt
Y29sdW1uczogMTBlbTsKICAgICAtd2Via2l0LWdyaWQtcm93czogMTVlbTsKICAgICBmb250OiAx
MHB4IEFoZW07CiB9CisuZ3JpZFdpdGhWaWV3UG9ydFBlcmNlbnRhZ2UgeworICAgIC13ZWJraXQt
Z3JpZC1jb2x1bW5zOiA4dnc7CisgICAgLXdlYmtpdC1ncmlkLXJvd3M6IDEwdmg7Cit9CisuZ3Jp
ZFdpdGhGaXRDb250ZW50IHsKKyAgICAtd2Via2l0LWdyaWQtY29sdW1uczogLXdlYmtpdC1maXQt
Y29udGVudDsKKyAgICAtd2Via2l0LWdyaWQtcm93czogLXdlYmtpdC1maXQtY29udGVudDsKK30K
Ky5ncmlkV2l0aEZpdEF2YWlsYWJsZSB7CisgICAgLXdlYmtpdC1ncmlkLWNvbHVtbnM6IC13ZWJr
aXQtZml0LWF2YWlsYWJsZTsKKyAgICAtd2Via2l0LWdyaWQtcm93czogLXdlYmtpdC1maXQtYXZh
aWxhYmxlOworfQogPC9zdHlsZT4KIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08ZGl2IGNsYXNzPSJncmlkIiBp
ZD0iZ3JpZEVsZW1lbnQiPjwvZGl2PgotPGRpdiBjbGFzcz0iZ3JpZFdpdGhGaXhlZCIgaWQ9Imdy
aWRXaXRoRml4ZWRFbGVtZW50Ij48L2Rpdj4KLTxkaXYgY2xhc3M9ImdyaWRXaXRoUGVyY2VudCIg
aWQ9ImdyaWRXaXRoUGVyY2VudEVsZW1lbnQiPjwvZGl2PgotPGRpdiBjbGFzcz0iZ3JpZFdpdGhB
dXRvIiBpZD0iZ3JpZFdpdGhBdXRvRWxlbWVudCI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJncmlkV2l0
aEVNIiBpZD0iZ3JpZFdpdGhFTUVsZW1lbnQiPjwvZGl2PgorPGRpdiBjbGFzcz0iZ3JpZCBncmlk
V2l0aE5vbmUiIGlkPSJncmlkV2l0aE5vbmVFbGVtZW50Ij48L2Rpdj4KKzxkaXYgY2xhc3M9Imdy
aWQgZ3JpZFdpdGhGaXhlZCIgaWQ9ImdyaWRXaXRoRml4ZWRFbGVtZW50Ij48L2Rpdj4KKzxkaXYg
Y2xhc3M9ImdyaWQgZ3JpZFdpdGhQZXJjZW50IiBpZD0iZ3JpZFdpdGhQZXJjZW50RWxlbWVudCI+
PC9kaXY+Cis8ZGl2IGNsYXNzPSJncmlkIGdyaWRXaXRoQXV0byIgaWQ9ImdyaWRXaXRoQXV0b0Vs
ZW1lbnQiPjwvZGl2PgorPGRpdiBjbGFzcz0iZ3JpZCBncmlkV2l0aEVNIiBpZD0iZ3JpZFdpdGhF
TUVsZW1lbnQiPjwvZGl2PgorPGRpdiBjbGFzcz0iZ3JpZCBncmlkV2l0aFZpZXdQb3J0UGVyY2Vu
dGFnZSIgaWQ9ImdyaWRXaXRoVmlld1BvcnRQZXJjZW50YWdlRWxlbWVudCI+PC9kaXY+Cis8ZGl2
IGNsYXNzPSJncmlkIGdyaWRXaXRoRml0Q29udGVudCIgaWQ9ImdyaWRXaXRoRml0Q29udGVudEVs
ZW1lbnQiPjwvZGl2PgorPGRpdiBjbGFzcz0iZ3JpZCBncmlkV2l0aEZpdEF2YWlsYWJsZSIgaWQ9
ImdyaWRXaXRoRml0QXZhaWxhYmxlRWxlbWVudCI+PC9kaXY+CiA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvcGVyY2VudC1ncmlkLWl0
ZW0taW4tcGVyY2VudC1ncmlkLXRyYWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWdyaWQtbGF5b3V0L3BlcmNlbnQtZ3JpZC1pdGVtLWluLXBlcmNlbnQtZ3JpZC10cmFjay1l
eHBlY3RlZC50eHQKaW5kZXggOTU1MzcwOC4uYWE0YzIwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvcGVyY2VudC1ncmlkLWl0ZW0taW4tcGVyY2VudC1ncmlk
LXRyYWNrLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91
dC9wZXJjZW50LWdyaWQtaXRlbS1pbi1wZXJjZW50LWdyaWQtdHJhY2stZXhwZWN0ZWQudHh0CkBA
IC0xLDU4ICsxLDYgQEAKIFRlc3QgdGhhdCBwZXJjZW50YWdlIHNpemVkIGdyaWQgaXRlbXMgaW5z
aWRlIHBlcmNlbnRhZ2Ugc2l6ZWQgZ3JpZCB0cmFja3MgZ2V0IHByb3Blcmx5IHNpemVkLgogCi1G
QUlMOgotRXhwZWN0ZWQgMTYwIGZvciB3aWR0aCwgYnV0IGdvdCAwLiAKLUV4cGVjdGVkIDkwIGZv
ciBoZWlnaHQsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCA4MCBmb3Igd2lkdGgsIGJ1dCBnb3QgMC4g
Ci1FeHBlY3RlZCAxMDUgZm9yIGhlaWdodCwgYnV0IGdvdCAwLiAKLUV4cGVjdGVkIDI0MCBmb3Ig
d2lkdGgsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCAyMTAgZm9yIGhlaWdodCwgYnV0IGdvdCAwLiAK
LQotPGRpdiBjbGFzcz0iZ3JpZCIgZGF0YS1leHBlY3RlZC13aWR0aD0iNDAwIiBkYXRhLWV4cGVj
dGVkLWhlaWdodD0iMzAwIj4KLSAgICA8ZGl2IGlkPSJhIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIx
NjAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxNSI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iYiIgZGF0
YS1leHBlY3RlZC13aWR0aD0iMTUiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSI5MCI+PC9kaXY+Ci0g
ICAgPGRpdiBpZD0iYyIgZGF0YS1leHBlY3RlZC13aWR0aD0iODAiIGRhdGEtZXhwZWN0ZWQtaGVp
Z2h0PSIxMDUiPjwvZGl2PgotICAgIDxkaXYgaWQ9ImQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjI0
MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjIxMCI+PC9kaXY+Ci08L2Rpdj4KLUZBSUw6Ci1FeHBl
Y3RlZCAxNjAgZm9yIHdpZHRoLCBidXQgZ290IDAuIAotRXhwZWN0ZWQgOTAgZm9yIGhlaWdodCwg
YnV0IGdvdCAwLiAKLUV4cGVjdGVkIDgwIGZvciB3aWR0aCwgYnV0IGdvdCAwLiAKLUV4cGVjdGVk
IDEwNSBmb3IgaGVpZ2h0LCBidXQgZ290IDAuIAotRXhwZWN0ZWQgMjQwIGZvciB3aWR0aCwgYnV0
IGdvdCAwLiAKLUV4cGVjdGVkIDIxMCBmb3IgaGVpZ2h0LCBidXQgZ290IDAuIAotCi08ZGl2IGNs
YXNzPSJncmlkIiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQiIGRh
dGEtZXhwZWN0ZWQtd2lkdGg9IjQwMCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMwMCI+Ci0gICAg
PGRpdiBpZD0iYSIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTYwIiBkYXRhLWV4cGVjdGVkLWhlaWdo
dD0iMTUiPjwvZGl2PgotICAgIDxkaXYgaWQ9ImIiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjE1IiBk
YXRhLWV4cGVjdGVkLWhlaWdodD0iOTAiPjwvZGl2PgotICAgIDxkaXYgaWQ9ImMiIGRhdGEtZXhw
ZWN0ZWQtd2lkdGg9IjgwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTA1Ij48L2Rpdj4KLSAgICA8
ZGl2IGlkPSJkIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIyNDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0
PSIyMTAiPjwvZGl2PgotPC9kaXY+Ci1GQUlMOgotRXhwZWN0ZWQgMTIwIGZvciB3aWR0aCwgYnV0
IGdvdCAwLiAKLUV4cGVjdGVkIDE4MCBmb3IgaGVpZ2h0LCBidXQgZ290IDAuIAotRXhwZWN0ZWQg
MTQwIGZvciB3aWR0aCwgYnV0IGdvdCAwLiAKLUV4cGVjdGVkIDYwIGZvciBoZWlnaHQsIGJ1dCBn
b3QgMC4gCi1FeHBlY3RlZCAyODAgZm9yIHdpZHRoLCBidXQgZ290IDAuIAotRXhwZWN0ZWQgMTgw
IGZvciBoZWlnaHQsIGJ1dCBnb3QgMC4gCi0KLTxkaXYgY2xhc3M9ImdyaWQiIHN0eWxlPSItd2Vi
a2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7IiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI0MDAi
IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIzMDAiPgotICAgIDxkaXYgaWQ9ImEiIGRhdGEtZXhwZWN0
ZWQtd2lkdGg9IjEyMCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjE1Ij48L2Rpdj4KLSAgICA8ZGl2
IGlkPSJiIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxNSIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjE4
MCI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iYyIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTQwIiBkYXRh
LWV4cGVjdGVkLWhlaWdodD0iNjAiPjwvZGl2PgotICAgIDxkaXYgaWQ9ImQiIGRhdGEtZXhwZWN0
ZWQtd2lkdGg9IjI4MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjE4MCI+PC9kaXY+Ci08L2Rpdj4K
LUZBSUw6Ci1FeHBlY3RlZCAxMjAgZm9yIHdpZHRoLCBidXQgZ290IDAuIAotRXhwZWN0ZWQgMTgw
IGZvciBoZWlnaHQsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCAxNDAgZm9yIHdpZHRoLCBidXQgZ290
IDAuIAotRXhwZWN0ZWQgNjAgZm9yIGhlaWdodCwgYnV0IGdvdCAwLiAKLUV4cGVjdGVkIDI4MCBm
b3Igd2lkdGgsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCAxODAgZm9yIGhlaWdodCwgYnV0IGdvdCAw
LiAKLQotPGRpdiBjbGFzcz0iZ3JpZCIgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0
aWNhbC1scjsiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjQwMCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9
IjMwMCI+Ci0gICAgPGRpdiBpZD0iYSIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTIwIiBkYXRhLWV4
cGVjdGVkLWhlaWdodD0iMTUiPjwvZGl2PgotICAgIDxkaXYgaWQ9ImIiIGRhdGEtZXhwZWN0ZWQt
d2lkdGg9IjE1IiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTgwIj48L2Rpdj4KLSAgICA8ZGl2IGlk
PSJjIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxNDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSI2MCI+
PC9kaXY+Ci0gICAgPGRpdiBpZD0iZCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMjgwIiBkYXRhLWV4
cGVjdGVkLWhlaWdodD0iMTgwIj48L2Rpdj4KLTwvZGl2PgorUEFTUworUEFTUworUEFTUworUEFT
UwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvcGVyY2VudC1n
cmlkLWl0ZW0taW4tcGVyY2VudC1ncmlkLXRyYWNrLWluLXBlcmNlbnQtZ3JpZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9wZXJjZW50LWdyaWQtaXRlbS1p
bi1wZXJjZW50LWdyaWQtdHJhY2staW4tcGVyY2VudC1ncmlkLWV4cGVjdGVkLnR4dAppbmRleCBh
NzI3MWRjLi4yOWY3NGY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxh
eW91dC9wZXJjZW50LWdyaWQtaXRlbS1pbi1wZXJjZW50LWdyaWQtdHJhY2staW4tcGVyY2VudC1n
cmlkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9w
ZXJjZW50LWdyaWQtaXRlbS1pbi1wZXJjZW50LWdyaWQtdHJhY2staW4tcGVyY2VudC1ncmlkLWV4
cGVjdGVkLnR4dApAQCAtMSw2NiArMSw2IEBACiBUZXN0IHRoYXQgcGVyY2VudGFnZSBzaXplZCBn
cmlkIGl0ZW1zIGluc2lkZSBwZXJjZW50YWdlIHNpemVkIGdyaWQgdHJhY2tzIGluc2lkZSBhIHBl
cmNlbnRhZ2Ugc2l6ZSBncmlkIGdldCBwcm9wZXJseSBzaXplZC4KIAotRkFJTDoKLUV4cGVjdGVk
IDE2MCBmb3Igd2lkdGgsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCA5MCBmb3IgaGVpZ2h0LCBidXQg
Z290IDAuIAotRXhwZWN0ZWQgODAgZm9yIHdpZHRoLCBidXQgZ290IDAuIAotRXhwZWN0ZWQgMTA1
IGZvciBoZWlnaHQsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCAyNDAgZm9yIHdpZHRoLCBidXQgZ290
IDAuIAotRXhwZWN0ZWQgMjEwIGZvciBoZWlnaHQsIGJ1dCBnb3QgMC4gCi0KLTxkaXYgY2xhc3M9
ImNvbnRhaW5lciI+Ci08ZGl2IGNsYXNzPSJncmlkIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI0MDAi
IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIzMDAiPgotICAgIDxkaXYgaWQ9ImEiIGRhdGEtZXhwZWN0
ZWQtd2lkdGg9IjE2MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjE1Ij48L2Rpdj4KLSAgICA8ZGl2
IGlkPSJiIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxNSIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9Ijkw
Ij48L2Rpdj4KLSAgICA8ZGl2IGlkPSJjIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI4MCIgZGF0YS1l
eHBlY3RlZC1oZWlnaHQ9IjEwNSI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iZCIgZGF0YS1leHBlY3Rl
ZC13aWR0aD0iMjQwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMjEwIj48L2Rpdj4KLTwvZGl2Pgot
PC9kaXY+Ci1GQUlMOgotRXhwZWN0ZWQgMTYwIGZvciB3aWR0aCwgYnV0IGdvdCAwLiAKLUV4cGVj
dGVkIDkwIGZvciBoZWlnaHQsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCA4MCBmb3Igd2lkdGgsIGJ1
dCBnb3QgMC4gCi1FeHBlY3RlZCAxMDUgZm9yIGhlaWdodCwgYnV0IGdvdCAwLiAKLUV4cGVjdGVk
IDI0MCBmb3Igd2lkdGgsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCAyMTAgZm9yIGhlaWdodCwgYnV0
IGdvdCAwLiAKLQotPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KLTxkaXYgY2xhc3M9ImdyaWQiIHN0
eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC1idCIgZGF0YS1leHBlY3RlZC13
aWR0aD0iNDAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAwIj4KLSAgICA8ZGl2IGlkPSJhIiBk
YXRhLWV4cGVjdGVkLXdpZHRoPSIxNjAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxNSI+PC9kaXY+
Ci0gICAgPGRpdiBpZD0iYiIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTUiIGRhdGEtZXhwZWN0ZWQt
aGVpZ2h0PSI5MCI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iYyIgZGF0YS1leHBlY3RlZC13aWR0aD0i
ODAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxMDUiPjwvZGl2PgotICAgIDxkaXYgaWQ9ImQiIGRh
dGEtZXhwZWN0ZWQtd2lkdGg9IjI0MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjIxMCI+PC9kaXY+
Ci08L2Rpdj4KLTwvZGl2PgotRkFJTDoKLUV4cGVjdGVkIDEyMCBmb3Igd2lkdGgsIGJ1dCBnb3Qg
MC4gCi1FeHBlY3RlZCAxODAgZm9yIGhlaWdodCwgYnV0IGdvdCAwLiAKLUV4cGVjdGVkIDE0MCBm
b3Igd2lkdGgsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCA2MCBmb3IgaGVpZ2h0LCBidXQgZ290IDAu
IAotRXhwZWN0ZWQgMjgwIGZvciB3aWR0aCwgYnV0IGdvdCAwLiAKLUV4cGVjdGVkIDE4MCBmb3Ig
aGVpZ2h0LCBidXQgZ290IDAuIAotCi08ZGl2IGNsYXNzPSJjb250YWluZXIiPgotPGRpdiBjbGFz
cz0iZ3JpZCIgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybDsiIGRhdGEt
ZXhwZWN0ZWQtd2lkdGg9IjQwMCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMwMCI+Ci0gICAgPGRp
diBpZD0iYSIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTIwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0i
MTUiPjwvZGl2PgotICAgIDxkaXYgaWQ9ImIiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjE1IiBkYXRh
LWV4cGVjdGVkLWhlaWdodD0iMTgwIj48L2Rpdj4KLSAgICA8ZGl2IGlkPSJjIiBkYXRhLWV4cGVj
dGVkLXdpZHRoPSIxNDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSI2MCI+PC9kaXY+Ci0gICAgPGRp
diBpZD0iZCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMjgwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0i
MTgwIj48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci1GQUlMOgotRXhwZWN0ZWQgMTIwIGZvciB3aWR0
aCwgYnV0IGdvdCAwLiAKLUV4cGVjdGVkIDE4MCBmb3IgaGVpZ2h0LCBidXQgZ290IDAuIAotRXhw
ZWN0ZWQgMTQwIGZvciB3aWR0aCwgYnV0IGdvdCAwLiAKLUV4cGVjdGVkIDYwIGZvciBoZWlnaHQs
IGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCAyODAgZm9yIHdpZHRoLCBidXQgZ290IDAuIAotRXhwZWN0
ZWQgMTgwIGZvciBoZWlnaHQsIGJ1dCBnb3QgMC4gCi0KLTxkaXYgY2xhc3M9ImNvbnRhaW5lciI+
Ci08ZGl2IGNsYXNzPSJncmlkIiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2Fs
LWxyOyIgZGF0YS1leHBlY3RlZC13aWR0aD0iNDAwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMzAw
Ij4KLSAgICA8ZGl2IGlkPSJhIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMjAiIGRhdGEtZXhwZWN0
ZWQtaGVpZ2h0PSIxNSI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iYiIgZGF0YS1leHBlY3RlZC13aWR0
aD0iMTUiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxODAiPjwvZGl2PgotICAgIDxkaXYgaWQ9ImMi
IGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjE0MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjYwIj48L2Rp
dj4KLSAgICA8ZGl2IGlkPSJkIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIyODAiIGRhdGEtZXhwZWN0
ZWQtaGVpZ2h0PSIxODAiPjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KK1BBU1MKK1BBU1MKK1BBU1MK
K1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L3Jlc291
cmNlcy9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Z3JpZC1sYXlvdXQvcmVzb3VyY2VzL2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQuanMKaW5kZXgg
MWQxYWUzNy4uZTQxOWI0NSAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1s
YXlvdXQvcmVzb3VyY2VzL2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQuanMKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvcmVzb3VyY2VzL2dyaWQtY29sdW1ucy1yb3dzLWdl
dC1zZXQuanMKQEAgLTEsOSArMSw5IEBACiBkZXNjcmlwdGlvbignVGVzdCB0aGF0IHNldHRpbmcg
YW5kIGdldHRpbmcgZ3JpZC1jb2x1bW5zIGFuZCBncmlkLXJvd3Mgd29ya3MgYXMgZXhwZWN0ZWQn
KTsKIAogZGVidWcoIlRlc3QgZ2V0dGluZyB8ZGlzcGxheXwgc2V0IHRocm91Z2ggQ1NTIik7Ci12
YXIgZ3JpZEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JpZEVsZW1lbnQiKTsK
LXNob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKGdyaWRFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlW
YWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbnMnKSIsICInbm9uZSciKTsKLXNob3VsZEJlKCJnZXRD
b21wdXRlZFN0eWxlKGdyaWRFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1n
cmlkLXJvd3MnKSIsICInbm9uZSciKTsKK3ZhciBncmlkV2l0aE5vbmVFbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImdyaWRXaXRoTm9uZUVsZW1lbnQiKTsKK3Nob3VsZEJlKCJnZXRD
b21wdXRlZFN0eWxlKGdyaWRXaXRoTm9uZUVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCct
d2Via2l0LWdyaWQtY29sdW1ucycpIiwgIidub25lJyIpOworc2hvdWxkQmUoImdldENvbXB1dGVk
U3R5bGUoZ3JpZFdpdGhOb25lRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQt
Z3JpZC1yb3dzJykiLCAiJ25vbmUnIik7CiAKIHZhciBncmlkV2l0aEZpeGVkRWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmlkV2l0aEZpeGVkRWxlbWVudCIpOwogc2hvdWxkQmUo
ImdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhGaXhlZEVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZh
bHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIiwgIicxMHB4JyIpOwpAQCAtMjEsNiArMjEsMTgg
QEAgdmFyIGdyaWRXaXRoRU1FbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyaWRX
aXRoRU1FbGVtZW50Iik7CiBzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aEVNRWxl
bWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5zJykiLCAiJzEw
MHB4JyIpOwogc2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhFTUVsZW1lbnQsICcn
KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIiwgIicxNTBweCciKTsKIAor
dmFyIGdyaWRXaXRoVmlld1BvcnRQZXJjZW50YWdlRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJncmlkV2l0aFZpZXdQb3J0UGVyY2VudGFnZUVsZW1lbnQiKTsKK3Nob3VsZEJlKCJn
ZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoVmlld1BvcnRQZXJjZW50YWdlRWxlbWVudCwgJycpLmdl
dFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5zJykiLCAiJzY0cHgnIik7CitzaG91
bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFZpZXdQb3J0UGVyY2VudGFnZUVsZW1lbnQs
ICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIiwgIic2MHB4JyIpOwor
Cit2YXIgZ3JpZFdpdGhGaXRDb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJncmlkV2l0aEZpdENvbnRlbnRFbGVtZW50Iik7CitzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHls
ZShncmlkV2l0aEZpdENvbnRlbnRFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtp
dC1ncmlkLWNvbHVtbnMnKSIsICInbm9uZSciKTsKK3Nob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxl
KGdyaWRXaXRoRml0Q29udGVudEVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0
LWdyaWQtcm93cycpIiwgIidub25lJyIpOworCit2YXIgZ3JpZFdpdGhGaXRBdmFpbGFibGVFbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyaWRXaXRoRml0QXZhaWxhYmxlRWxlbWVu
dCIpOworc2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhGaXRBdmFpbGFibGVFbGVt
ZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbnMnKSIsICInbm9u
ZSciKTsKK3Nob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoRml0QXZhaWxhYmxlRWxl
bWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dzJykiLCAiJ25vbmUn
Iik7CisKIGRlYnVnKCIiKTsKIGRlYnVnKCJUZXN0IHRoZSBpbml0aWFsIHZhbHVlIik7CiB2YXIg
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpAQCAtNDksNiArNjEsMTMg
QEAgZWxlbWVudC5zdHlsZS53ZWJraXRHcmlkUm93cyA9ICJhdXRvIjsKIHNob3VsZEJlKCJnZXRD
b21wdXRlZFN0eWxlKGVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQt
Y29sdW1ucycpIiwgIidhdXRvJyIpOwogc2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUoZWxlbWVu
dCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dzJykiLCAiJ2F1dG8nIik7
CiAKK2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2RvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CitlbGVtZW50LnN0eWxlLndlYmtpdEdyaWRDb2x1bW5z
ID0gIjEwdnciOworZWxlbWVudC5zdHlsZS53ZWJraXRHcmlkUm93cyA9ICIyNXZoIjsKK3Nob3Vs
ZEJlKCJnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Vi
a2l0LWdyaWQtY29sdW1ucycpIiwgIic4MHB4JyIpOworc2hvdWxkQmUoImdldENvbXB1dGVkU3R5
bGUoZWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dzJykiLCAi
JzE1MHB4JyIpOworCiBkZWJ1ZygiIik7CiBkZWJ1ZygiVGVzdCBzZXR0aW5nIGdyaWQtY29sdW1u
cyBhbmQgZ3JpZC1yb3dzIGJhY2sgdG8gJ25vbmUnIHRocm91Z2ggSlMiKTsKIGVsZW1lbnQuc3R5
bGUud2Via2l0R3JpZENvbHVtbnMgPSAiMThweCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTE3NDZiOC4uNTYx
MjBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTExLTMwICBYYW4gTG9wZXog
IDx4YW5AaWdhbGlhLmNvbT4KKworICAgICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBTdXBwb3J0IGFs
bCBzcGVjaWZpZWQgYnJlYWR0aCBzaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDMzMzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcGVyY2VudCBhbmQgdmlld3BvcnQgcGVy
Y2VudCBicmVhZHRoIHNpemUKKyAgICAgICAgdHlwZXMuIGNhbGMoKSBzdXBwb3J0IGlzIHN0aWxs
IG1pc3NpbmcsIHdlJ2xsIGRvIGl0IGluIGEgZm9sbG93LXVwCisgICAgICAgIHBhdGNoLgorCisg
ICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp2YWx1ZUZvckdyaWRUcmFja0JyZWFkdGgpOiBzdXBwb3J0IHRoZSBuZXcgdHlwZXMu
CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckdyaWRUcmFja0xpc3QpOiBtb2RpZnkgdGhlIGNh
bGwgdG8gdGhlIHVwcGVyCisgICAgICAgIG1ldGhvZCwgc2luY2UgaXRzIHNpZ25hdHVyZSBpcyBj
aGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKTogZGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdy
aWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZWRVc2VkQnJlYWR0
aE9mR3JpZFRyYWNrcyk6IHN1cHBvcnQKKyAgICAgICAgcGVyY2VudCBhbmQgdmlld3BvcnQgcGVy
Y2VudGFnZSBsZW5ndGhzLgorCiAyMDEyLTExLTI5ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBbV2ViS2l0Ml0gV2ViS2l0V2ViVmlld0Jh
c2UgY3JlYXRlcyBhIEdMIGNvbnRleHQgZm9yIHRoZSByZWRpcmVjdGVkIFhDb21wb3NpdGUgd2lu
ZG93IGNyYXNoaW5nIFdlYktpdCBpbiBYdmZiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGI0YjE5YzcuLjQ0NmNhYWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCkBAIC05ODMsMTYgKzk4MywxNiBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb246OnZhbHVlRm9yRmlsdGVyKGNvbnN0IFJlbmRlck9iagogfQogI2Vu
ZGlmCiAKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0JyZWFk
dGgoY29uc3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5
bGUpCitzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRo
KGNvbnN0IEdyaWRUcmFja1NpemUmIHRyYWNrU2l6ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
LCBSZW5kZXJWaWV3ICpyZW5kZXJWaWV3KQogewotICAgIGlmICh0cmFja1NpemUubGVuZ3RoKCku
aXNQZXJjZW50KCkpCi0gICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZSh0
cmFja1NpemUubGVuZ3RoKCkpOwogICAgIGlmICh0cmFja1NpemUubGVuZ3RoKCkuaXNBdXRvKCkp
CiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVBdXRvKTsKLSAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh0cmFja1NpemUu
bGVuZ3RoKCkudmFsdWUoKSwgc3R5bGUpOworICAgIGlmICh0cmFja1NpemUubGVuZ3RoKCkuaXNW
aWV3cG9ydFBlcmNlbnRhZ2UoKSkKKyAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFs
dWUodmFsdWVGb3JMZW5ndGgodHJhY2tTaXplLmxlbmd0aCgpLCAwLCByZW5kZXJWaWV3KSwgc3R5
bGUpOworICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHRyYWNrU2l6
ZS5sZW5ndGgoKSwgc3R5bGUpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFs
dWVGb3JHcmlkVHJhY2tMaXN0KGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTaXpl
cywgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIHRyYWNr
U2l6ZXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyVmlldyAqcmVuZGVyVmlldykK
IHsKICAgICAvLyBIYW5kbGUgdGhlICdub25lJyBjYXNlIGhlcmUuCiAgICAgaWYgKCF0cmFja1Np
emVzLnNpemUoKSkKQEAgLTEwMDAsNyArMTAwMCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZUZvckdyaWRUcmFja0xpc3QoY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0
CiAKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVT
cGFjZVNlcGFyYXRlZCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhY2tTaXplcy5z
aXplKCk7ICsraSkKLSAgICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0
aCh0cmFja1NpemVzW2ldLCBzdHlsZSkpOworICAgICAgICBsaXN0LT5hcHBlbmQodmFsdWVGb3JH
cmlkVHJhY2tCcmVhZHRoKHRyYWNrU2l6ZXNbaV0sIHN0eWxlLCByZW5kZXJWaWV3KSk7CiAgICAg
cmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCkBAIC0xODIzLDEwICsxODIzLDEwIEBAIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlD
U1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRDb2x1bW5zOiB7Ci0g
ICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KHN0eWxlLT5ncmlkQ29sdW1u
cygpLCBzdHlsZS5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JHcmlkVHJhY2tM
aXN0KHN0eWxlLT5ncmlkQ29sdW1ucygpLCBzdHlsZS5nZXQoKSwgbV9ub2RlLT5kb2N1bWVudCgp
LT5yZW5kZXJWaWV3KCkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRHcmlkUm93czogewotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yR3JpZFRyYWNrTGlzdChz
dHlsZS0+Z3JpZFJvd3MoKSwgc3R5bGUuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIHZhbHVl
Rm9yR3JpZFRyYWNrTGlzdChzdHlsZS0+Z3JpZFJvd3MoKSwgc3R5bGUuZ2V0KCksIG1fbm9kZS0+
ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRHcmlkQ29sdW1uOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdy
aWQuY3BwCmluZGV4IGU3YTM1MWMuLjMwZTNjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAKQEAgLTE0MSw4ICsxNDEsOSBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1
dGVkVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9u
LAogICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTdHlsZXMgPSAoZGlyZWN0
aW9uID09IEZvckNvbHVtbnMpID8gc3R5bGUoKS0+Z3JpZENvbHVtbnMoKSA6IHN0eWxlKCktPmdy
aWRSb3dzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFja1N0eWxlcy5zaXplKCk7
ICsraSkgewogICAgICAgICBHcmlkVHJhY2sgdHJhY2s7Ci0gICAgICAgIGlmICh0cmFja1N0eWxl
c1tpXS5sZW5ndGgoKS5pc0ZpeGVkKCkpCi0gICAgICAgICAgICB0cmFjay5tX3VzZWRCcmVhZHRo
ID0gdHJhY2tTdHlsZXNbaV0ubGVuZ3RoKCkuZ2V0RmxvYXRWYWx1ZSgpOworICAgICAgICBMZW5n
dGggdHJhY2tMZW5ndGggPSB0cmFja1N0eWxlc1tpXS5sZW5ndGgoKTsKKyAgICAgICAgaWYgKHRy
YWNrTGVuZ3RoLmlzRml4ZWQoKSB8fCB0cmFja0xlbmd0aC5pc1BlcmNlbnQoKSB8fCB0cmFja0xl
bmd0aC5pc1ZpZXdwb3J0UGVyY2VudGFnZSgpKQorICAgICAgICAgICAgdHJhY2subV91c2VkQnJl
YWR0aCA9IHZhbHVlRm9yTGVuZ3RoKHRyYWNrTGVuZ3RoLCBkaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cyA/IGxvZ2ljYWxXaWR0aCgpIDogY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1haW5PclBy
ZWZlcnJlZFNpemUsIHN0eWxlKCktPmxvZ2ljYWxIZWlnaHQoKSksIHZpZXcoKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAKLS0gCjEuNy43LjYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177286</attachid>
            <date>2012-12-03 10:51:08 -0800</date>
            <delta_ts>2012-12-03 13:09:54 -0800</delta_ts>
            <desc>breadth-sizes.diff</desc>
            <filename>breadth-sizes.diff</filename>
            <type>text/plain</type>
            <size>27190</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBiZWE1NTZlNDNhN2ZmODgzYjJhZTRmZjhmZmIwOTg2NWQzNTk3MmU1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhhbkBpZ2FsaWEuY29tPgpEYXRlOiBGcmks
IDMwIE5vdiAyMDEyIDA5OjIxOjI1ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMi0xMS0zMCAg
WGFuIExvcGV6ICA8eGFuQGlnYWxpYS5jb20+CgogICAgW0NTUyBHcmlkIExheW91dF0gU3VwcG9y
dCBhbGwgc3BlY2lmaWVkIGJyZWFkdGggc2l6ZQogICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMzMzNQoKICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoK
ICAgIEFkZCBzdXBwb3J0IGZvciBwZXJjZW50IGFuZCB2aWV3cG9ydCBwZXJjZW50IGJyZWFkdGgg
c2l6ZQogICAgdHlwZXMuIGNhbGMoKSBzdXBwb3J0IGlzIHN0aWxsIG1pc3NpbmcsIHdlJ2xsIGRv
IGl0IGluIGEgZm9sbG93LXVwCiAgICBwYXRjaC4KCiAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwOgogICAgKFdlYkNvcmU6OnZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aCk6
IHN1cHBvcnQgdGhlIG5ldyB0eXBlcy4KICAgIChXZWJDb3JlOjp2YWx1ZUZvckdyaWRUcmFja0xp
c3QpOiBtb2RpZnkgdGhlIGNhbGwgdG8gdGhlIHVwcGVyCiAgICBtZXRob2QsIHNpbmNlIGl0cyBz
aWduYXR1cmUgaXMgY2hhbmdlZC4KICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOiBkaXR0by4KICAgICogcmVuZGVyaW5nL1JlbmRl
ckdyaWQuY3BwOgogICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVkVXNlZEJyZWFkdGhP
ZkdyaWRUcmFja3MpOiBzdXBwb3J0CiAgICBwZXJjZW50IGFuZCB2aWV3cG9ydCBwZXJjZW50YWdl
IGxlbmd0aHMuCgoyMDEyLTExLTMwICBYYW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KCiAgICBb
Q1NTIEdyaWQgTGF5b3V0XSBTdXBwb3J0IGFsbCBzcGVjaWZpZWQgYnJlYWR0aCBzaXplCiAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzM1CgogICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9icmVhZHRo
LXNpemUtcmVzb2x1dGlvbi1ncmlkLWV4cGVjdGVkLnR4dDogQWRkZWQuCiAgICAqIGZhc3QvY3Nz
LWdyaWQtbGF5b3V0L2JyZWFkdGgtc2l6ZS1yZXNvbHV0aW9uLWdyaWQuaHRtbDogQWRkZWQuCiAg
ICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtZXhwZWN0
ZWQudHh0OiB0ZXN0IHRoZSBuZXcgYnJlYWR0aCBsZW5ndGggdHlwZXMuCiAgICAqIGZhc3QvY3Nz
LWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQuaHRtbDogZGl0dG8uCiAgICAq
IGZhc3QvY3NzLWdyaWQtbGF5b3V0L3BlcmNlbnQtZ3JpZC1pdGVtLWluLXBlcmNlbnQtZ3JpZC10
cmFjay1leHBlY3RlZC50eHQ6IHdlIG5vdyBwYXNzIHRoaXMgdGVzdC4KICAgICogZmFzdC9jc3Mt
Z3JpZC1sYXlvdXQvcGVyY2VudC1ncmlkLWl0ZW0taW4tcGVyY2VudC1ncmlkLXRyYWNrLWluLXBl
cmNlbnQtZ3JpZC1leHBlY3RlZC50eHQ6IGRpdHRvLgogICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91
dC9yZXNvdXJjZXMvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC5qczogdGVzdCB0aGUgbmV3IGJy
ZWF0ZHRoIGxlbmd0aCB0eXBlcy4KLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTUgKysrKwogLi4uL2JyZWFkdGgtc2l6ZS1yZXNvbHV0
aW9uLWdyaWQtZXhwZWN0ZWQudHh0ICAgICAgfCAgICA0ICsKIC4uLi9icmVhZHRoLXNpemUtcmVz
b2x1dGlvbi1ncmlkLmh0bWwgICAgICAgICAgICAgIHwgICA3MSArKysrKysrKysrKysrKysrKysr
KwogLi4uL2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtZXhwZWN0ZWQudHh0ICAgICAgICAgfCAg
IDEyICsrKy0KIC4uLi9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC5o
dG1sIHwgICAzMSArKysrKystLS0KIC4uLm50LWdyaWQtaXRlbS1pbi1wZXJjZW50LWdyaWQtdHJh
Y2stZXhwZWN0ZWQudHh0IHwgICA2MCArLS0tLS0tLS0tLS0tLS0tCiAuLi5wZXJjZW50LWdyaWQt
dHJhY2staW4tcGVyY2VudC1ncmlkLWV4cGVjdGVkLnR4dCB8ICAgNjggKy0tLS0tLS0tLS0tLS0t
LS0tLQogLi4uL3Jlc291cmNlcy9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LmpzICAgICAgICAg
fCAgIDI1ICsrKysrKy0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAyMCArKysrKysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwIHwgICAyNCArKystLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcCAgICAgICAgICAgIHwgICAgNSArLQogMTEgZmlsZXMgY2hhbmdlZCwg
MTg3IGluc2VydGlvbnMoKyksIDE0OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9icmVhZHRoLXNpemUtcmVzb2x1dGlvbi1n
cmlkLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvY3Nz
LWdyaWQtbGF5b3V0L2JyZWFkdGgtc2l6ZS1yZXNvbHV0aW9uLWdyaWQuaHRtbAoKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBi
YjQxZjlkLi44OGViNWQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEtMzAgIFhhbiBM
b3BleiAgPHhhbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIFN1cHBv
cnQgYWxsIHNwZWNpZmllZCBicmVhZHRoIHNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzMzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jc3MtZ3JpZC1sYXlvdXQvYnJlYWR0aC1zaXpl
LXJlc29sdXRpb24tZ3JpZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3Nz
LWdyaWQtbGF5b3V0L2JyZWFkdGgtc2l6ZS1yZXNvbHV0aW9uLWdyaWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC1l
eHBlY3RlZC50eHQ6IHRlc3QgdGhlIG5ldyBicmVhZHRoIGxlbmd0aCB0eXBlcy4KKyAgICAgICAg
KiBmYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0Lmh0bWw6IGRp
dHRvLgorICAgICAgICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L3BlcmNlbnQtZ3JpZC1pdGVtLWlu
LXBlcmNlbnQtZ3JpZC10cmFjay1leHBlY3RlZC50eHQ6IHdlIG5vdyBwYXNzIHRoaXMgdGVzdC4K
KyAgICAgICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9wZXJjZW50LWdyaWQtaXRlbS1pbi1wZXJj
ZW50LWdyaWQtdHJhY2staW4tcGVyY2VudC1ncmlkLWV4cGVjdGVkLnR4dDogZGl0dG8uCisgICAg
ICAgICogZmFzdC9jc3MtZ3JpZC1sYXlvdXQvcmVzb3VyY2VzL2dyaWQtY29sdW1ucy1yb3dzLWdl
dC1zZXQuanM6IHRlc3QgdGhlIG5ldyBicmVhdGR0aCBsZW5ndGggdHlwZXMuCisKIDIwMTItMTIt
MDMgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbTWFjXSBF
bmFibGUgQ1NTMyBiYWNrZ3JvdW5kLXBvc2l0aW9uIG9mZnNldCBieSBkZWZhdWx0LgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvYnJlYWR0aC1zaXplLXJlc29s
dXRpb24tZ3JpZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91
dC9icmVhZHRoLXNpemUtcmVzb2x1dGlvbi1ncmlkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2Y1ZmIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvYnJlYWR0aC1zaXplLXJlc29sdXRpb24tZ3JpZC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUZXN0IHRoYXQgc3BlY2lmeWluZyB0aGUgdHJh
Y2sgYnJlYWR0aCBzaXplcyB3b3JrcyBwcm9wZXJseSB3aXRoIGFsbCB0aGUgYWxsb3dlZCBsZW5n
dGggdHlwZXMgYW5kIGluIGRpZmZlcmVudCB3cml0aW5nIG1vZGVzLgorCitQQVNTCitQQVNTCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9icmVhZHRoLXNpemUt
cmVzb2x1dGlvbi1ncmlkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9i
cmVhZHRoLXNpemUtcmVzb2x1dGlvbi1ncmlkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNGQ5ZTdjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWdyaWQtbGF5b3V0L2JyZWFkdGgtc2l6ZS1yZXNvbHV0aW9uLWdyaWQuaHRtbApAQCAtMCww
ICsxLDcxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0Q1NT
R3JpZExheW91dEVuYWJsZWQiLCAxKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorLmdyaWQgeworICAg
IGRpc3BsYXk6IC13ZWJraXQtZ3JpZDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OworICAg
IC13ZWJraXQtZ3JpZC1jb2x1bW5zOiAxMDBweCAxMHZ3OworICAgIC13ZWJraXQtZ3JpZC1yb3dz
OiAxMHZoIDEwMHB4OworfQorCisjYSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAg
ICAtd2Via2l0LWdyaWQtY29sdW1uOiAxOworICAgIC13ZWJraXQtZ3JpZC1yb3c6IDE7CisgICAg
d2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworfQorCisjYiB7CisgICAgYmFja2dyb3Vu
ZC1jb2xvcjogbGltZTsKKyAgICAtd2Via2l0LWdyaWQtY29sdW1uOiAyOworICAgIC13ZWJraXQt
Z3JpZC1yb3c6IDE7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworfQorCisj
YyB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcHVycGxlOworICAgIC13ZWJraXQtZ3JpZC1jb2x1
bW46IDE7CisgICAgLXdlYmtpdC1ncmlkLXJvdzogMjsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBo
ZWlnaHQ6IDEwMCU7Cit9CisKKyNkIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7Cisg
ICAgLXdlYmtpdC1ncmlkLWNvbHVtbjogMjsKKyAgICAtd2Via2l0LWdyaWQtcm93OiAyOworICAg
IHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKK30KKworLnZlcnRpY2FsUkwgeworICAg
IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2NoZWNrLWxheW91dC5qcyI+PC9zY3JpcHQ+Cis8Ym9keSBv
bmxvYWQ9ImNoZWNrTGF5b3V0KCcuZ3JpZCcpIj4KKworPHA+VGVzdCB0aGF0IHNwZWNpZnlpbmcg
dGhlIHRyYWNrIGJyZWFkdGggc2l6ZXMgd29ya3MgcHJvcGVybHkgd2l0aCBhbGwgdGhlIGFsbG93
ZWQgbGVuZ3RoIHR5cGVzIGFuZCBpbiBkaWZmZXJlbnQgd3JpdGluZyBtb2Rlcy48L3A+CisKKzxk
aXYgY2xhc3M9ImdyaWQiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjEw
MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjYwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBkYXRh
LWV4cGVjdGVkLXdpZHRoPSI4MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjYwIj48L2Rpdj4KKyAg
ICA8ZGl2IGlkPSJjIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQtaGVp
Z2h0PSIxMDAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9Ijgw
IiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTAwIj48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNz
PSJncmlkIHZlcnRpY2FsUkwiPgorICAgIDxkaXYgaWQ9ImEiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9
IjYwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTAwIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJiIiBk
YXRhLWV4cGVjdGVkLXdpZHRoPSI2MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjgwIj48L2Rpdj4K
KyAgICA8ZGl2IGlkPSJjIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMDAiIGRhdGEtZXhwZWN0ZWQt
aGVpZ2h0PSIxMDAiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9
IjEwMCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjgwIj48L2Rpdj4KKzwvZGl2PgorCis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9n
cmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDdlOWJjYmUuLjA0MWM2M2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdy
aWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQt
ZXhwZWN0ZWQudHh0CkBAIC00LDggKzQsOCBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAK
IFRlc3QgZ2V0dGluZyB8ZGlzcGxheXwgc2V0IHRocm91Z2ggQ1NTCi1QQVNTIGdldENvbXB1dGVk
U3R5bGUoZ3JpZEVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29s
dW1ucycpIGlzICdub25lJwotUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRFbGVtZW50LCAnJyku
Z2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAnbm9uZScKK1BBU1MgZ2V0
Q29tcHV0ZWRTdHlsZShncmlkV2l0aE5vbmVFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgn
LXdlYmtpdC1ncmlkLWNvbHVtbnMnKSBpcyAnbm9uZScKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShn
cmlkV2l0aE5vbmVFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJv
d3MnKSBpcyAnbm9uZScKIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aEZpeGVkRWxlbWVu
dCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5zJykgaXMgJzEwcHgn
CiBQQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhGaXhlZEVsZW1lbnQsICcnKS5nZXRQcm9w
ZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIGlzICcxNXB4JwogUEFTUyBnZXRDb21wdXRl
ZFN0eWxlKGdyaWRXaXRoUGVyY2VudEVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Vi
a2l0LWdyaWQtY29sdW1ucycpIGlzICc1MyUnCkBAIC0xNCw2ICsxNCwxMiBAQCBQQVNTIGdldENv
bXB1dGVkU3R5bGUoZ3JpZFdpdGhBdXRvRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13
ZWJraXQtZ3JpZC1jbwogUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoQXV0b0VsZW1lbnQs
ICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIGlzICdhdXRvJwogUEFT
UyBnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoRU1FbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1
ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbnMnKSBpcyAnMTAwcHgnCiBQQVNTIGdldENvbXB1dGVkU3R5
bGUoZ3JpZFdpdGhFTUVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQt
cm93cycpIGlzICcxNTBweCcKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aFZpZXdQb3J0
UGVyY2VudGFnZUVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29s
dW1ucycpIGlzICc2NHB4JworUEFTUyBnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoVmlld1BvcnRQ
ZXJjZW50YWdlRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dz
JykgaXMgJzYwcHgnCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhGaXRDb250ZW50RWxl
bWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5zJykgaXMgJ25v
bmUnCitQQVNTIGdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhGaXRDb250ZW50RWxlbWVudCwgJycp
LmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dzJykgaXMgJ25vbmUnCitQQVNTIGdl
dENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhGaXRBdmFpbGFibGVFbGVtZW50LCAnJykuZ2V0UHJvcGVy
dHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbnMnKSBpcyAnbm9uZScKK1BBU1MgZ2V0Q29tcHV0
ZWRTdHlsZShncmlkV2l0aEZpdEF2YWlsYWJsZUVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVl
KCctd2Via2l0LWdyaWQtcm93cycpIGlzICdub25lJwogCiBUZXN0IHRoZSBpbml0aWFsIHZhbHVl
CiBQQVNTIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13
ZWJraXQtZ3JpZC1jb2x1bW5zJykgaXMgJ25vbmUnCkBAIC0yNiw2ICszMiw4IEBAIFBBU1MgZ2V0
Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlk
LWNvbHVtbnMnKSBpcyAnCiBQQVNTIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgJycpLmdldFBy
b3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1yb3dzJykgaXMgJzQwJScKIFBBU1MgZ2V0Q29tcHV0
ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVt
bnMnKSBpcyAnYXV0bycKIFBBU1MgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJv
cGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAnYXV0bycKK1BBU1MgZ2V0Q29tcHV0
ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNvbHVt
bnMnKSBpcyAnODBweCcKK1BBU1MgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJv
cGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSBpcyAnMTUwcHgnCiAKIFRlc3Qgc2V0dGlu
ZyBncmlkLWNvbHVtbnMgYW5kIGdyaWQtcm93cyBiYWNrIHRvICdub25lJyB0aHJvdWdoIEpTCiBQ
QVNTIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJr
aXQtZ3JpZC1jb2x1bW5zJykgaXMgJzE4cHgnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy1ncmlkLWxheW91dC9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0Lmh0bWwK
aW5kZXggMmQ0OTM5My4uYzcwZDljYyAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Z3JpZC1sYXlvdXQvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29sdW1ucy1yb3dzLWdldC1zZXQuaHRtbApA
QCAtOCwzOSArOCw1MiBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpCiA8c3R5bGU+CiAuZ3JpZCB7
CiAgICAgZGlzcGxheTogLXdlYmtpdC1ncmlkOworfQorLmdyaWRXaXRoTm9uZSB7CiAgICAgLXdl
YmtpdC1ncmlkLWNvbHVtbnM6IG5vbmU7CiAgICAgLXdlYmtpdC1ncmlkLXJvd3M6IG5vbmU7CiB9
CiAuZ3JpZFdpdGhGaXhlZCB7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ncmlkOwogICAgIC13ZWJr
aXQtZ3JpZC1jb2x1bW5zOiAxMHB4OwogICAgIC13ZWJraXQtZ3JpZC1yb3dzOiAxNXB4OwogfQog
LmdyaWRXaXRoUGVyY2VudCB7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ncmlkOwogICAgIC13ZWJr
aXQtZ3JpZC1jb2x1bW5zOiA1MyU7CiAgICAgLXdlYmtpdC1ncmlkLXJvd3M6IDI3JTsKIH0KIC5n
cmlkV2l0aEF1dG8gewotICAgIGRpc3BsYXk6IC13ZWJraXQtZ3JpZDsKICAgICAtd2Via2l0LWdy
aWQtY29sdW1uczogYXV0bzsKICAgICAtd2Via2l0LWdyaWQtcm93czogYXV0bzsKIH0KIC5ncmlk
V2l0aEVNIHsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWdyaWQ7CiAgICAgLXdlYmtpdC1ncmlkLWNv
bHVtbnM6IDEwZW07CiAgICAgLXdlYmtpdC1ncmlkLXJvd3M6IDE1ZW07CiAgICAgZm9udDogMTBw
eCBBaGVtOwogfQorLmdyaWRXaXRoVmlld1BvcnRQZXJjZW50YWdlIHsKKyAgICAtd2Via2l0LWdy
aWQtY29sdW1uczogOHZ3OworICAgIC13ZWJraXQtZ3JpZC1yb3dzOiAxMHZoOworfQorLmdyaWRX
aXRoRml0Q29udGVudCB7CisgICAgLXdlYmtpdC1ncmlkLWNvbHVtbnM6IC13ZWJraXQtZml0LWNv
bnRlbnQ7CisgICAgLXdlYmtpdC1ncmlkLXJvd3M6IC13ZWJraXQtZml0LWNvbnRlbnQ7Cit9Cisu
Z3JpZFdpdGhGaXRBdmFpbGFibGUgeworICAgIC13ZWJraXQtZ3JpZC1jb2x1bW5zOiAtd2Via2l0
LWZpdC1hdmFpbGFibGU7CisgICAgLXdlYmtpdC1ncmlkLXJvd3M6IC13ZWJraXQtZml0LWF2YWls
YWJsZTsKK30KIDwvc3R5bGU+CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPGRpdiBjbGFzcz0iZ3JpZCIgaWQ9
ImdyaWRFbGVtZW50Ij48L2Rpdj4KLTxkaXYgY2xhc3M9ImdyaWRXaXRoRml4ZWQiIGlkPSJncmlk
V2l0aEZpeGVkRWxlbWVudCI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJncmlkV2l0aFBlcmNlbnQiIGlk
PSJncmlkV2l0aFBlcmNlbnRFbGVtZW50Ij48L2Rpdj4KLTxkaXYgY2xhc3M9ImdyaWRXaXRoQXV0
byIgaWQ9ImdyaWRXaXRoQXV0b0VsZW1lbnQiPjwvZGl2PgotPGRpdiBjbGFzcz0iZ3JpZFdpdGhF
TSIgaWQ9ImdyaWRXaXRoRU1FbGVtZW50Ij48L2Rpdj4KKzxkaXYgY2xhc3M9ImdyaWQgZ3JpZFdp
dGhOb25lIiBpZD0iZ3JpZFdpdGhOb25lRWxlbWVudCI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJncmlk
IGdyaWRXaXRoRml4ZWQiIGlkPSJncmlkV2l0aEZpeGVkRWxlbWVudCI+PC9kaXY+Cis8ZGl2IGNs
YXNzPSJncmlkIGdyaWRXaXRoUGVyY2VudCIgaWQ9ImdyaWRXaXRoUGVyY2VudEVsZW1lbnQiPjwv
ZGl2PgorPGRpdiBjbGFzcz0iZ3JpZCBncmlkV2l0aEF1dG8iIGlkPSJncmlkV2l0aEF1dG9FbGVt
ZW50Ij48L2Rpdj4KKzxkaXYgY2xhc3M9ImdyaWQgZ3JpZFdpdGhFTSIgaWQ9ImdyaWRXaXRoRU1F
bGVtZW50Ij48L2Rpdj4KKzxkaXYgY2xhc3M9ImdyaWQgZ3JpZFdpdGhWaWV3UG9ydFBlcmNlbnRh
Z2UiIGlkPSJncmlkV2l0aFZpZXdQb3J0UGVyY2VudGFnZUVsZW1lbnQiPjwvZGl2PgorPGRpdiBj
bGFzcz0iZ3JpZCBncmlkV2l0aEZpdENvbnRlbnQiIGlkPSJncmlkV2l0aEZpdENvbnRlbnRFbGVt
ZW50Ij48L2Rpdj4KKzxkaXYgY2xhc3M9ImdyaWQgZ3JpZFdpdGhGaXRBdmFpbGFibGUiIGlkPSJn
cmlkV2l0aEZpdEF2YWlsYWJsZUVsZW1lbnQiPjwvZGl2PgogPHNjcmlwdCBzcmM9InJlc291cmNl
cy9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L3BlcmNlbnQtZ3JpZC1pdGVt
LWluLXBlcmNlbnQtZ3JpZC10cmFjay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1ncmlkLWxheW91dC9wZXJjZW50LWdyaWQtaXRlbS1pbi1wZXJjZW50LWdyaWQtdHJhY2stZXhw
ZWN0ZWQudHh0CmluZGV4IDk1NTM3MDguLmFhNGMyMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWdyaWQtbGF5b3V0L3BlcmNlbnQtZ3JpZC1pdGVtLWluLXBlcmNlbnQtZ3JpZC10
cmFjay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQv
cGVyY2VudC1ncmlkLWl0ZW0taW4tcGVyY2VudC1ncmlkLXRyYWNrLWV4cGVjdGVkLnR4dApAQCAt
MSw1OCArMSw2IEBACiBUZXN0IHRoYXQgcGVyY2VudGFnZSBzaXplZCBncmlkIGl0ZW1zIGluc2lk
ZSBwZXJjZW50YWdlIHNpemVkIGdyaWQgdHJhY2tzIGdldCBwcm9wZXJseSBzaXplZC4KIAotRkFJ
TDoKLUV4cGVjdGVkIDE2MCBmb3Igd2lkdGgsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCA5MCBmb3Ig
aGVpZ2h0LCBidXQgZ290IDAuIAotRXhwZWN0ZWQgODAgZm9yIHdpZHRoLCBidXQgZ290IDAuIAot
RXhwZWN0ZWQgMTA1IGZvciBoZWlnaHQsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCAyNDAgZm9yIHdp
ZHRoLCBidXQgZ290IDAuIAotRXhwZWN0ZWQgMjEwIGZvciBoZWlnaHQsIGJ1dCBnb3QgMC4gCi0K
LTxkaXYgY2xhc3M9ImdyaWQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjQwMCIgZGF0YS1leHBlY3Rl
ZC1oZWlnaHQ9IjMwMCI+Ci0gICAgPGRpdiBpZD0iYSIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTYw
IiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTUiPjwvZGl2PgotICAgIDxkaXYgaWQ9ImIiIGRhdGEt
ZXhwZWN0ZWQtd2lkdGg9IjE1IiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iOTAiPjwvZGl2PgotICAg
IDxkaXYgaWQ9ImMiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjgwIiBkYXRhLWV4cGVjdGVkLWhlaWdo
dD0iMTA1Ij48L2Rpdj4KLSAgICA8ZGl2IGlkPSJkIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIyNDAi
IGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIyMTAiPjwvZGl2PgotPC9kaXY+Ci1GQUlMOgotRXhwZWN0
ZWQgMTYwIGZvciB3aWR0aCwgYnV0IGdvdCAwLiAKLUV4cGVjdGVkIDkwIGZvciBoZWlnaHQsIGJ1
dCBnb3QgMC4gCi1FeHBlY3RlZCA4MCBmb3Igd2lkdGgsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCAx
MDUgZm9yIGhlaWdodCwgYnV0IGdvdCAwLiAKLUV4cGVjdGVkIDI0MCBmb3Igd2lkdGgsIGJ1dCBn
b3QgMC4gCi1FeHBlY3RlZCAyMTAgZm9yIGhlaWdodCwgYnV0IGdvdCAwLiAKLQotPGRpdiBjbGFz
cz0iZ3JpZCIgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFsLWJ0IiBkYXRh
LWV4cGVjdGVkLXdpZHRoPSI0MDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIzMDAiPgotICAgIDxk
aXYgaWQ9ImEiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjE2MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9
IjE1Ij48L2Rpdj4KLSAgICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxNSIgZGF0
YS1leHBlY3RlZC1oZWlnaHQ9IjkwIj48L2Rpdj4KLSAgICA8ZGl2IGlkPSJjIiBkYXRhLWV4cGVj
dGVkLXdpZHRoPSI4MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjEwNSI+PC9kaXY+Ci0gICAgPGRp
diBpZD0iZCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMjQwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0i
MjEwIj48L2Rpdj4KLTwvZGl2PgotRkFJTDoKLUV4cGVjdGVkIDEyMCBmb3Igd2lkdGgsIGJ1dCBn
b3QgMC4gCi1FeHBlY3RlZCAxODAgZm9yIGhlaWdodCwgYnV0IGdvdCAwLiAKLUV4cGVjdGVkIDE0
MCBmb3Igd2lkdGgsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCA2MCBmb3IgaGVpZ2h0LCBidXQgZ290
IDAuIAotRXhwZWN0ZWQgMjgwIGZvciB3aWR0aCwgYnV0IGdvdCAwLiAKLUV4cGVjdGVkIDE4MCBm
b3IgaGVpZ2h0LCBidXQgZ290IDAuIAotCi08ZGl2IGNsYXNzPSJncmlkIiBzdHlsZT0iLXdlYmtp
dC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsOyIgZGF0YS1leHBlY3RlZC13aWR0aD0iNDAwIiBk
YXRhLWV4cGVjdGVkLWhlaWdodD0iMzAwIj4KLSAgICA8ZGl2IGlkPSJhIiBkYXRhLWV4cGVjdGVk
LXdpZHRoPSIxMjAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxNSI+PC9kaXY+Ci0gICAgPGRpdiBp
ZD0iYiIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTUiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxODAi
PjwvZGl2PgotICAgIDxkaXYgaWQ9ImMiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjE0MCIgZGF0YS1l
eHBlY3RlZC1oZWlnaHQ9IjYwIj48L2Rpdj4KLSAgICA8ZGl2IGlkPSJkIiBkYXRhLWV4cGVjdGVk
LXdpZHRoPSIyODAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxODAiPjwvZGl2PgotPC9kaXY+Ci1G
QUlMOgotRXhwZWN0ZWQgMTIwIGZvciB3aWR0aCwgYnV0IGdvdCAwLiAKLUV4cGVjdGVkIDE4MCBm
b3IgaGVpZ2h0LCBidXQgZ290IDAuIAotRXhwZWN0ZWQgMTQwIGZvciB3aWR0aCwgYnV0IGdvdCAw
LiAKLUV4cGVjdGVkIDYwIGZvciBoZWlnaHQsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCAyODAgZm9y
IHdpZHRoLCBidXQgZ290IDAuIAotRXhwZWN0ZWQgMTgwIGZvciBoZWlnaHQsIGJ1dCBnb3QgMC4g
Ci0KLTxkaXYgY2xhc3M9ImdyaWQiIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGlj
YWwtbHI7IiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI0MDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIz
MDAiPgotICAgIDxkaXYgaWQ9ImEiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjEyMCIgZGF0YS1leHBl
Y3RlZC1oZWlnaHQ9IjE1Ij48L2Rpdj4KLSAgICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVkLXdp
ZHRoPSIxNSIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjE4MCI+PC9kaXY+Ci0gICAgPGRpdiBpZD0i
YyIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTQwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iNjAiPjwv
ZGl2PgotICAgIDxkaXYgaWQ9ImQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjI4MCIgZGF0YS1leHBl
Y3RlZC1oZWlnaHQ9IjE4MCI+PC9kaXY+Ci08L2Rpdj4KK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L3BlcmNlbnQtZ3Jp
ZC1pdGVtLWluLXBlcmNlbnQtZ3JpZC10cmFjay1pbi1wZXJjZW50LWdyaWQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvcGVyY2VudC1ncmlkLWl0ZW0taW4t
cGVyY2VudC1ncmlkLXRyYWNrLWluLXBlcmNlbnQtZ3JpZC1leHBlY3RlZC50eHQKaW5kZXggYTcy
NzFkYy4uMjlmNzRmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlv
dXQvcGVyY2VudC1ncmlkLWl0ZW0taW4tcGVyY2VudC1ncmlkLXRyYWNrLWluLXBlcmNlbnQtZ3Jp
ZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvcGVy
Y2VudC1ncmlkLWl0ZW0taW4tcGVyY2VudC1ncmlkLXRyYWNrLWluLXBlcmNlbnQtZ3JpZC1leHBl
Y3RlZC50eHQKQEAgLTEsNjYgKzEsNiBAQAogVGVzdCB0aGF0IHBlcmNlbnRhZ2Ugc2l6ZWQgZ3Jp
ZCBpdGVtcyBpbnNpZGUgcGVyY2VudGFnZSBzaXplZCBncmlkIHRyYWNrcyBpbnNpZGUgYSBwZXJj
ZW50YWdlIHNpemUgZ3JpZCBnZXQgcHJvcGVybHkgc2l6ZWQuCiAKLUZBSUw6Ci1FeHBlY3RlZCAx
NjAgZm9yIHdpZHRoLCBidXQgZ290IDAuIAotRXhwZWN0ZWQgOTAgZm9yIGhlaWdodCwgYnV0IGdv
dCAwLiAKLUV4cGVjdGVkIDgwIGZvciB3aWR0aCwgYnV0IGdvdCAwLiAKLUV4cGVjdGVkIDEwNSBm
b3IgaGVpZ2h0LCBidXQgZ290IDAuIAotRXhwZWN0ZWQgMjQwIGZvciB3aWR0aCwgYnV0IGdvdCAw
LiAKLUV4cGVjdGVkIDIxMCBmb3IgaGVpZ2h0LCBidXQgZ290IDAuIAotCi08ZGl2IGNsYXNzPSJj
b250YWluZXIiPgotPGRpdiBjbGFzcz0iZ3JpZCIgZGF0YS1leHBlY3RlZC13aWR0aD0iNDAwIiBk
YXRhLWV4cGVjdGVkLWhlaWdodD0iMzAwIj4KLSAgICA8ZGl2IGlkPSJhIiBkYXRhLWV4cGVjdGVk
LXdpZHRoPSIxNjAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIxNSI+PC9kaXY+Ci0gICAgPGRpdiBp
ZD0iYiIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTUiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSI5MCI+
PC9kaXY+Ci0gICAgPGRpdiBpZD0iYyIgZGF0YS1leHBlY3RlZC13aWR0aD0iODAiIGRhdGEtZXhw
ZWN0ZWQtaGVpZ2h0PSIxMDUiPjwvZGl2PgotICAgIDxkaXYgaWQ9ImQiIGRhdGEtZXhwZWN0ZWQt
d2lkdGg9IjI0MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjIxMCI+PC9kaXY+Ci08L2Rpdj4KLTwv
ZGl2PgotRkFJTDoKLUV4cGVjdGVkIDE2MCBmb3Igd2lkdGgsIGJ1dCBnb3QgMC4gCi1FeHBlY3Rl
ZCA5MCBmb3IgaGVpZ2h0LCBidXQgZ290IDAuIAotRXhwZWN0ZWQgODAgZm9yIHdpZHRoLCBidXQg
Z290IDAuIAotRXhwZWN0ZWQgMTA1IGZvciBoZWlnaHQsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCAy
NDAgZm9yIHdpZHRoLCBidXQgZ290IDAuIAotRXhwZWN0ZWQgMjEwIGZvciBoZWlnaHQsIGJ1dCBn
b3QgMC4gCi0KLTxkaXYgY2xhc3M9ImNvbnRhaW5lciI+Ci08ZGl2IGNsYXNzPSJncmlkIiBzdHls
ZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQiIGRhdGEtZXhwZWN0ZWQtd2lk
dGg9IjQwMCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMwMCI+Ci0gICAgPGRpdiBpZD0iYSIgZGF0
YS1leHBlY3RlZC13aWR0aD0iMTYwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTUiPjwvZGl2Pgot
ICAgIDxkaXYgaWQ9ImIiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjE1IiBkYXRhLWV4cGVjdGVkLWhl
aWdodD0iOTAiPjwvZGl2PgotICAgIDxkaXYgaWQ9ImMiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9Ijgw
IiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTA1Ij48L2Rpdj4KLSAgICA8ZGl2IGlkPSJkIiBkYXRh
LWV4cGVjdGVkLXdpZHRoPSIyNDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIyMTAiPjwvZGl2Pgot
PC9kaXY+Ci08L2Rpdj4KLUZBSUw6Ci1FeHBlY3RlZCAxMjAgZm9yIHdpZHRoLCBidXQgZ290IDAu
IAotRXhwZWN0ZWQgMTgwIGZvciBoZWlnaHQsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCAxNDAgZm9y
IHdpZHRoLCBidXQgZ290IDAuIAotRXhwZWN0ZWQgNjAgZm9yIGhlaWdodCwgYnV0IGdvdCAwLiAK
LUV4cGVjdGVkIDI4MCBmb3Igd2lkdGgsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCAxODAgZm9yIGhl
aWdodCwgYnV0IGdvdCAwLiAKLQotPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KLTxkaXYgY2xhc3M9
ImdyaWQiIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7IiBkYXRhLWV4
cGVjdGVkLXdpZHRoPSI0MDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSIzMDAiPgotICAgIDxkaXYg
aWQ9ImEiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjEyMCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjE1
Ij48L2Rpdj4KLSAgICA8ZGl2IGlkPSJiIiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxNSIgZGF0YS1l
eHBlY3RlZC1oZWlnaHQ9IjE4MCI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iYyIgZGF0YS1leHBlY3Rl
ZC13aWR0aD0iMTQwIiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iNjAiPjwvZGl2PgotICAgIDxkaXYg
aWQ9ImQiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjI4MCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjE4
MCI+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotRkFJTDoKLUV4cGVjdGVkIDEyMCBmb3Igd2lkdGgs
IGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCAxODAgZm9yIGhlaWdodCwgYnV0IGdvdCAwLiAKLUV4cGVj
dGVkIDE0MCBmb3Igd2lkdGgsIGJ1dCBnb3QgMC4gCi1FeHBlY3RlZCA2MCBmb3IgaGVpZ2h0LCBi
dXQgZ290IDAuIAotRXhwZWN0ZWQgMjgwIGZvciB3aWR0aCwgYnV0IGdvdCAwLiAKLUV4cGVjdGVk
IDE4MCBmb3IgaGVpZ2h0LCBidXQgZ290IDAuIAotCi08ZGl2IGNsYXNzPSJjb250YWluZXIiPgot
PGRpdiBjbGFzcz0iZ3JpZCIgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1s
cjsiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjQwMCIgZGF0YS1leHBlY3RlZC1oZWlnaHQ9IjMwMCI+
Ci0gICAgPGRpdiBpZD0iYSIgZGF0YS1leHBlY3RlZC13aWR0aD0iMTIwIiBkYXRhLWV4cGVjdGVk
LWhlaWdodD0iMTUiPjwvZGl2PgotICAgIDxkaXYgaWQ9ImIiIGRhdGEtZXhwZWN0ZWQtd2lkdGg9
IjE1IiBkYXRhLWV4cGVjdGVkLWhlaWdodD0iMTgwIj48L2Rpdj4KLSAgICA8ZGl2IGlkPSJjIiBk
YXRhLWV4cGVjdGVkLXdpZHRoPSIxNDAiIGRhdGEtZXhwZWN0ZWQtaGVpZ2h0PSI2MCI+PC9kaXY+
Ci0gICAgPGRpdiBpZD0iZCIgZGF0YS1leHBlY3RlZC13aWR0aD0iMjgwIiBkYXRhLWV4cGVjdGVk
LWhlaWdodD0iMTgwIj48L2Rpdj4KLTwvZGl2PgotPC9kaXY+CitQQVNTCitQQVNTCitQQVNTCitQ
QVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9yZXNvdXJj
ZXMvZ3JpZC1jb2x1bW5zLXJvd3MtZ2V0LXNldC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdy
aWQtbGF5b3V0L3Jlc291cmNlcy9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LmpzCmluZGV4IDFk
MWFlMzcuLmU0MTliNDUgMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5
b3V0L3Jlc291cmNlcy9ncmlkLWNvbHVtbnMtcm93cy1nZXQtc2V0LmpzCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L3Jlc291cmNlcy9ncmlkLWNvbHVtbnMtcm93cy1nZXQt
c2V0LmpzCkBAIC0xLDkgKzEsOSBAQAogZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBzZXR0aW5nIGFu
ZCBnZXR0aW5nIGdyaWQtY29sdW1ucyBhbmQgZ3JpZC1yb3dzIHdvcmtzIGFzIGV4cGVjdGVkJyk7
CiAKIGRlYnVnKCJUZXN0IGdldHRpbmcgfGRpc3BsYXl8IHNldCB0aHJvdWdoIENTUyIpOwotdmFy
IGdyaWRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyaWRFbGVtZW50Iik7Ci1z
aG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShncmlkRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFs
dWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5zJykiLCAiJ25vbmUnIik7Ci1zaG91bGRCZSgiZ2V0Q29t
cHV0ZWRTdHlsZShncmlkRWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3Jp
ZC1yb3dzJykiLCAiJ25vbmUnIik7Cit2YXIgZ3JpZFdpdGhOb25lRWxlbWVudCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJncmlkV2l0aE5vbmVFbGVtZW50Iik7CitzaG91bGRCZSgiZ2V0Q29t
cHV0ZWRTdHlsZShncmlkV2l0aE5vbmVFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdl
YmtpdC1ncmlkLWNvbHVtbnMnKSIsICInbm9uZSciKTsKK3Nob3VsZEJlKCJnZXRDb21wdXRlZFN0
eWxlKGdyaWRXaXRoTm9uZUVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdy
aWQtcm93cycpIiwgIidub25lJyIpOwogCiB2YXIgZ3JpZFdpdGhGaXhlZEVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JpZFdpdGhGaXhlZEVsZW1lbnQiKTsKIHNob3VsZEJlKCJn
ZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoRml4ZWRFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1
ZSgnLXdlYmtpdC1ncmlkLWNvbHVtbnMnKSIsICInMTBweCciKTsKQEAgLTIxLDYgKzIxLDE4IEBA
IHZhciBncmlkV2l0aEVNRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmlkV2l0
aEVNRWxlbWVudCIpOwogc2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhFTUVsZW1l
bnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIiwgIicxMDBw
eCciKTsKIHNob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoRU1FbGVtZW50LCAnJyku
Z2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSIsICInMTUwcHgnIik7CiAKK3Zh
ciBncmlkV2l0aFZpZXdQb3J0UGVyY2VudGFnZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZ3JpZFdpdGhWaWV3UG9ydFBlcmNlbnRhZ2VFbGVtZW50Iik7CitzaG91bGRCZSgiZ2V0
Q29tcHV0ZWRTdHlsZShncmlkV2l0aFZpZXdQb3J0UGVyY2VudGFnZUVsZW1lbnQsICcnKS5nZXRQ
cm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtY29sdW1ucycpIiwgIic2NHB4JyIpOworc2hvdWxk
QmUoImdldENvbXB1dGVkU3R5bGUoZ3JpZFdpdGhWaWV3UG9ydFBlcmNlbnRhZ2VFbGVtZW50LCAn
JykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLXJvd3MnKSIsICInNjBweCciKTsKKwor
dmFyIGdyaWRXaXRoRml0Q29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Z3JpZFdpdGhGaXRDb250ZW50RWxlbWVudCIpOworc2hvdWxkQmUoImdldENvbXB1dGVkU3R5bGUo
Z3JpZFdpdGhGaXRDb250ZW50RWxlbWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQt
Z3JpZC1jb2x1bW5zJykiLCAiJ25vbmUnIik7CitzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShn
cmlkV2l0aEZpdENvbnRlbnRFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1n
cmlkLXJvd3MnKSIsICInbm9uZSciKTsKKwordmFyIGdyaWRXaXRoRml0QXZhaWxhYmxlRWxlbWVu
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmlkV2l0aEZpdEF2YWlsYWJsZUVsZW1lbnQi
KTsKK3Nob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKGdyaWRXaXRoRml0QXZhaWxhYmxlRWxlbWVu
dCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC1jb2x1bW5zJykiLCAiJ25vbmUn
Iik7CitzaG91bGRCZSgiZ2V0Q29tcHV0ZWRTdHlsZShncmlkV2l0aEZpdEF2YWlsYWJsZUVsZW1l
bnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIiwgIidub25lJyIp
OworCiBkZWJ1ZygiIik7CiBkZWJ1ZygiVGVzdCB0aGUgaW5pdGlhbCB2YWx1ZSIpOwogdmFyIGVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKQEAgLTQ5LDYgKzYxLDEzIEBA
IGVsZW1lbnQuc3R5bGUud2Via2l0R3JpZFJvd3MgPSAiYXV0byI7CiBzaG91bGRCZSgiZ2V0Q29t
cHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1ncmlkLWNv
bHVtbnMnKSIsICInYXV0byciKTsKIHNob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQs
ICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIiwgIidhdXRvJyIpOwog
CitlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGVsZW1lbnQpOworZWxlbWVudC5zdHlsZS53ZWJraXRHcmlkQ29sdW1ucyA9
ICIxMHZ3IjsKK2VsZW1lbnQuc3R5bGUud2Via2l0R3JpZFJvd3MgPSAiMjV2aCI7CitzaG91bGRC
ZSgiZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtp
dC1ncmlkLWNvbHVtbnMnKSIsICInODBweCciKTsKK3Nob3VsZEJlKCJnZXRDb21wdXRlZFN0eWxl
KGVsZW1lbnQsICcnKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtcm93cycpIiwgIicx
NTBweCciKTsKKwogZGVidWcoIiIpOwogZGVidWcoIlRlc3Qgc2V0dGluZyBncmlkLWNvbHVtbnMg
YW5kIGdyaWQtcm93cyBiYWNrIHRvICdub25lJyB0aHJvdWdoIEpTIik7CiBlbGVtZW50LnN0eWxl
LndlYmtpdEdyaWRDb2x1bW5zID0gIjE4cHgiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1MTk0NDEuLmZlOTEw
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0xMS0zMCAgWGFuIExvcGV6ICA8
eGFuQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0NTUyBHcmlkIExheW91dF0gU3VwcG9ydCBhbGwg
c3BlY2lmaWVkIGJyZWFkdGggc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAzMzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHBlcmNlbnQgYW5kIHZpZXdwb3J0IHBlcmNl
bnQgYnJlYWR0aCBzaXplCisgICAgICAgIHR5cGVzLiBjYWxjKCkgc3VwcG9ydCBpcyBzdGlsbCBt
aXNzaW5nLCB3ZSdsbCBkbyBpdCBpbiBhIGZvbGxvdy11cAorICAgICAgICBwYXRjaC4KKworICAg
ICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKTogc3VwcG9ydCB0aGUgbmV3IHR5cGVzLgor
ICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JHcmlkVHJhY2tMaXN0KTogbW9kaWZ5IHRoZSBjYWxs
IHRvIHRoZSB1cHBlcgorICAgICAgICBtZXRob2QsIHNpbmNlIGl0cyBzaWduYXR1cmUgaXMgY2hh
bmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
UHJvcGVydHlDU1NWYWx1ZSk6IGRpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVkVXNlZEJyZWFkdGhP
ZkdyaWRUcmFja3MpOiBzdXBwb3J0CisgICAgICAgIHBlcmNlbnQgYW5kIHZpZXdwb3J0IHBlcmNl
bnRhZ2UgbGVuZ3Rocy4KKwogMjAxMi0xMi0wMyAgQWxleGlzIE1lbmFyZCAgPGFsZXhpc0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtNYWNdIEVuYWJsZSBDU1MzIGJhY2tncm91bmQtcG9zaXRpb24g
b2Zmc2V0IGJ5IGRlZmF1bHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGRmZmU0OWYuLjdhMDZiMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC05
OTksMzUgKzk5OSwzNSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb246OnZhbHVlRm9yRmlsdGVyKGNvbnN0IFJlbmRlck9iagogfQogI2VuZGlmCiAKLXN0
YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0JyZWFkdGgoY29uc3Qg
R3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0
aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKGNvbnN0IEdy
aWRUcmFja1NpemUmIHRyYWNrU2l6ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJW
aWV3ICpyZW5kZXJWaWV3KQogewotICAgIGlmICh0cmFja1NpemUubGVuZ3RoKCkuaXNQZXJjZW50
KCkpCi0gICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZSh0cmFja1NpemUu
bGVuZ3RoKCkpOwogICAgIGlmICh0cmFja1NpemUubGVuZ3RoKCkuaXNBdXRvKCkpCiAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRv
KTsKLSAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh0cmFja1NpemUubGVuZ3RoKCku
dmFsdWUoKSwgc3R5bGUpOworICAgIGlmICh0cmFja1NpemUubGVuZ3RoKCkuaXNWaWV3cG9ydFBl
cmNlbnRhZ2UoKSkKKyAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWVG
b3JMZW5ndGgodHJhY2tTaXplLmxlbmd0aCgpLCAwLCByZW5kZXJWaWV3KSwgc3R5bGUpOworICAg
IHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHRyYWNrU2l6ZS5sZW5ndGgo
KSwgc3R5bGUpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlk
VHJhY2tNaW5NYXgoY29uc3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplLCBjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUpCitzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJh
Y2tNaW5NYXgoY29uc3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplLCBjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCiB7Ci0gICAgcmV0dXJuIHZhbHVlRm9y
R3JpZFRyYWNrQnJlYWR0aCh0cmFja1NpemUsIHN0eWxlKTsKKyAgICByZXR1cm4gdmFsdWVGb3JH
cmlkVHJhY2tCcmVhZHRoKHRyYWNrU2l6ZSwgc3R5bGUsIHJlbmRlclZpZXcpOwogfQogCi1zdGF0
aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tHcm91cChjb25zdCBWZWN0
b3I8R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6ZXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkK
K3N0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0dyb3VwKGNvbnN0
IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTaXplcywgY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB0cmFja1NpemVzLnNpemUoKTsgKytpKQotICAgICAgICBsaXN0LT5h
cHBlbmQodmFsdWVGb3JHcmlkVHJhY2tNaW5NYXgodHJhY2tTaXplc1tpXSwgc3R5bGUpKTsKKyAg
ICAgICAgbGlzdC0+YXBwZW5kKHZhbHVlRm9yR3JpZFRyYWNrTWluTWF4KHRyYWNrU2l6ZXNbaV0s
IHN0eWxlLCByZW5kZXJWaWV3KSk7CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCi1z
dGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KGNvbnN0IFZl
Y3RvcjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTaXplcywgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
KQorc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChjb25z
dCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6ZXMsIGNvbnN0IFJlbmRlclN0eWxlKiBz
dHlsZSwgUmVuZGVyVmlldyAqcmVuZGVyVmlldykKIHsKICAgICAvLyBIYW5kbGUgdGhlICdub25l
JyBjYXNlIGhlcmUuCiAgICAgaWYgKCF0cmFja1NpemVzLnNpemUoKSkKICAgICAgICAgcmV0dXJu
IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogCi0g
ICAgcmV0dXJuIHZhbHVlRm9yR3JpZFRyYWNrR3JvdXAodHJhY2tTaXplcywgc3R5bGUpOworICAg
IHJldHVybiB2YWx1ZUZvckdyaWRUcmFja0dyb3VwKHRyYWNrU2l6ZXMsIHN0eWxlLCByZW5kZXJW
aWV3KTsKIH0KIAogc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFBvc2l0
aW9uKGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24pCkBAIC0xODQwLDEwICsxODQwLDEwIEBA
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJv
cGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNl
KCk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRDb2x1bW5z
OiB7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KHN0eWxlLT5ncmlk
Q29sdW1ucygpLCBzdHlsZS5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JHcmlk
VHJhY2tMaXN0KHN0eWxlLT5ncmlkQ29sdW1ucygpLCBzdHlsZS5nZXQoKSwgbV9ub2RlLT5kb2N1
bWVudCgpLT5yZW5kZXJWaWV3KCkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRHcmlkUm93czogewotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yR3JpZFRyYWNr
TGlzdChzdHlsZS0+Z3JpZFJvd3MoKSwgc3R5bGUuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJu
IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChzdHlsZS0+Z3JpZFJvd3MoKSwgc3R5bGUuZ2V0KCksIG1f
bm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKTsKICAgICAgICAgfQogCiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQ29sdW1uOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwCmluZGV4IGU3YTM1MWMuLjMwZTNjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTE0MSw4ICsxNDEsOSBAQCB2b2lkIFJlbmRlckdyaWQ6
OmNvbXB1dGVkVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoVHJhY2tTaXppbmdEaXJlY3Rpb24gZGly
ZWN0aW9uLAogICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgdHJhY2tTdHlsZXMgPSAo
ZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gc3R5bGUoKS0+Z3JpZENvbHVtbnMoKSA6IHN0eWxl
KCktPmdyaWRSb3dzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFja1N0eWxlcy5z
aXplKCk7ICsraSkgewogICAgICAgICBHcmlkVHJhY2sgdHJhY2s7Ci0gICAgICAgIGlmICh0cmFj
a1N0eWxlc1tpXS5sZW5ndGgoKS5pc0ZpeGVkKCkpCi0gICAgICAgICAgICB0cmFjay5tX3VzZWRC
cmVhZHRoID0gdHJhY2tTdHlsZXNbaV0ubGVuZ3RoKCkuZ2V0RmxvYXRWYWx1ZSgpOworICAgICAg
ICBMZW5ndGggdHJhY2tMZW5ndGggPSB0cmFja1N0eWxlc1tpXS5sZW5ndGgoKTsKKyAgICAgICAg
aWYgKHRyYWNrTGVuZ3RoLmlzRml4ZWQoKSB8fCB0cmFja0xlbmd0aC5pc1BlcmNlbnQoKSB8fCB0
cmFja0xlbmd0aC5pc1ZpZXdwb3J0UGVyY2VudGFnZSgpKQorICAgICAgICAgICAgdHJhY2subV91
c2VkQnJlYWR0aCA9IHZhbHVlRm9yTGVuZ3RoKHRyYWNrTGVuZ3RoLCBkaXJlY3Rpb24gPT0gRm9y
Q29sdW1ucyA/IGxvZ2ljYWxXaWR0aCgpIDogY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1h
aW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCktPmxvZ2ljYWxIZWlnaHQoKSksIHZpZXcoKSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAKLS0gCjEuNy43LjYK
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>