<?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>214439</bug_id>
          
          <creation_ts>2020-07-16 19:04:17 -0700</creation_ts>
          <short_desc>Remove final vestiges of SimpleColor</short_desc>
          <delta_ts>2020-07-17 20:52:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dbarton</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>noam</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1672361</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-16 19:04:17 -0700</bug_when>
    <thetext>Remove final vestigates of SimpleColor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672367</commentid>
    <comment_count>1</comment_count>
      <attachid>404520</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-16 19:44:33 -0700</bug_when>
    <thetext>Created attachment 404520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672368</commentid>
    <comment_count>2</comment_count>
      <attachid>404521</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-16 19:47:15 -0700</bug_when>
    <thetext>Created attachment 404521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672380</commentid>
    <comment_count>3</comment_count>
      <attachid>404529</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-16 20:39:25 -0700</bug_when>
    <thetext>Created attachment 404529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672517</commentid>
    <comment_count>4</comment_count>
      <attachid>404529</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-07-17 09:51:09 -0700</bug_when>
    <thetext>Comment on attachment 404529
Patch

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

&gt; Source/WebCore/page/cocoa/ResourceUsageOverlayCocoa.mm:170
&gt; +    categories[MemoryCategory::JSJIT] = HistoricMemoryCategoryInfo(MemoryCategory::JSJIT, SRGBA&lt;uint8_t&gt; { 255, 96, 255 }, &quot;JS JIT&quot;);
&gt; +    categories[MemoryCategory::Gigacage] = HistoricMemoryCategoryInfo(MemoryCategory::Gigacage, SRGBA&lt;uint8_t&gt; { 101, 79, 240 }, &quot;Gigacage&quot;);
&gt; +    categories[MemoryCategory::Images] = HistoricMemoryCategoryInfo(MemoryCategory::Images, Color::yellow, &quot;Images&quot;);
&gt; +    categories[MemoryCategory::Layers] = HistoricMemoryCategoryInfo(MemoryCategory::Layers, Color::cyan, &quot;Layers&quot;);
&gt; +    categories[MemoryCategory::LibcMalloc] = HistoricMemoryCategoryInfo(MemoryCategory::LibcMalloc, Color::green, &quot;libc malloc&quot;);
&gt; +    categories[MemoryCategory::bmalloc] = HistoricMemoryCategoryInfo(MemoryCategory::bmalloc, SRGBA&lt;uint8_t&gt; { 255, 96, 96 }, &quot;bmalloc&quot;);
&gt; +    categories[MemoryCategory::IsoHeap] = HistoricMemoryCategoryInfo(MemoryCategory::IsoHeap, SRGBA&lt;uint8_t&gt; { 128, 159, 64 }, &quot;IsoHeap&quot;);
&gt; +    categories[MemoryCategory::Other] = HistoricMemoryCategoryInfo(MemoryCategory::Other, SRGBA&lt;uint8_t&gt; { 192, 255, 0 }, &quot;Other&quot;);

In cases like this I&apos;m not sure it&apos;s better to use named colors in the middle of a bunch of hex values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672522</commentid>
    <comment_count>5</comment_count>
      <attachid>404529</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-17 10:03:33 -0700</bug_when>
    <thetext>Comment on attachment 404529
Patch

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

&gt; Source/WTF/wtf/KeyValuePair.h:45
&gt; +        : key(std::forward&lt;KeyTypeArg&gt;(key))
&gt; +        , value(std::forward&lt;ValueTypeArg&gt;(value))

Is forward here correct rather than WTFMove? While this is a member of a class template, it’s not a function template.

&gt; Source/WebCore/html/ColorInputType.cpp:76
&gt; +    return SRGBA&lt;uint8_t&gt; { toASCIIHexValue(string[1], string[2]), toASCIIHexValue(string[3], string[4]), toASCIIHexValue(string[5], string[6]) };

An alternative here would be to use two sets of braces:

    return { { toASCIIHexValue ... } };

&gt; Source/WebCore/html/HTMLElement.cpp:1027
&gt; +        return SRGBA&lt;uint8_t&gt; { static_cast&lt;uint8_t&gt;(toASCIIHexValue(string[1]) * 0x11), static_cast&lt;uint8_t&gt;(toASCIIHexValue(string[2]) * 0x11), static_cast&lt;uint8_t&gt;(toASCIIHexValue(string[3]) * 0x11) };

Ditto.

&gt; Source/WebCore/html/HTMLElement.cpp:1055
&gt; +        return SRGBA&lt;uint8_t&gt; { toASCIIHexValue(digitBuffer[0]), toASCIIHexValue(digitBuffer[1]), toASCIIHexValue(digitBuffer[2]) };

Ditto.

&gt; Source/WebCore/html/HTMLElement.cpp:1079
&gt; +    return SRGBA&lt;uint8_t&gt; { redValue, greenValue, blueValue };

Ditto.

&gt; Source/WebCore/inspector/InspectorOverlay.cpp:1071
&gt; +    drawText(elementTagName, SRGBA&lt;uint8_t&gt; { 136, 18, 128 }); // Keep this in sync with XMLViewer.css (.tag)

I think instead we should change the local drawText lambda to take SRGBA&lt;uint8_t&gt; and then here we would just have an initializer list and not a type name.

&gt; Source/WebCore/page/cocoa/ResourceUsageOverlayCocoa.mm:163
&gt; +    categories[MemoryCategory::JSJIT] = HistoricMemoryCategoryInfo(MemoryCategory::JSJIT, SRGBA&lt;uint8_t&gt; { 255, 96, 255 }, &quot;JS JIT&quot;);

Same idea as above, can we make the type be SRGBA&lt;uint8_t&gt; and then just use braces here.

&gt; Source/WebCore/platform/graphics/Color.h:149
&gt; +    static constexpr auto black = ColorBuilder&lt;SRGBA&lt;uint8_t&gt;&gt; { 0, 0, 0 };

Maybe we should define a name for ColorBuilder&lt;SRGBA&lt;uint8_t&gt;&gt; with using?

&gt; Source/WebCore/platform/graphics/Color.h:151
&gt; +    static constexpr auto darkGray = ColorBuilder&lt;SRGBA&lt;uint8_t&gt;&gt; { 128, 128, 128 };

Something I did a while back in my attempt at this color work was:

- Use named colors for anything that happens to be the same as a CSS named color. We may have a few more opportunities for the, or maybe you already covered it. When touching all these places with numeric color constants, I was thinking that’s a good time to look up and see if any happen to be CSS named colors.

- Rename any of these that are not consistent with CSS named color values. I seem to remember there were some of those. Maybe you already did that?

&gt; Source/WebCore/platform/graphics/Color.h:154
&gt; +    static constexpr auto transparent = ColorBuilder&lt;SRGBA&lt;uint8_t&gt;&gt; { 0, 0, 0, 0 };

In my patch I had renamed this transparentBlack; I think that’s better than just transparent. Especially for a case like &quot;== transparentBlack&quot;, where &quot;== transparent&quot; is definitely misleading/wrong. And it’s not like this color name is used *so* often. It’s the default-constructed value of SRBA&lt;uint8_t&gt;, so in some cases it’s probably written that way.

In fact, here maybe omit the { 0, 0, 0, 0 }, because it’s not needed?

&gt; Source/WebCore/platform/graphics/ColorTypes.h:63
&gt; +    constexpr SRGBA(T red, T green, T blue, T alpha)
&gt; +        : red { red }
&gt; +        , green { green }
&gt; +        , blue { blue }
&gt; +        , alpha { alpha }
&gt; +    {
&gt; +    }
&gt; +
&gt; +    constexpr SRGBA(T red, T green, T blue)
&gt; +        : SRGBA { red, green, blue, ComponentTraits&lt;T&gt;::maxValue }
&gt; +    {
&gt; +    }
&gt; +
&gt; +    constexpr SRGBA()
&gt; +        : SRGBA { ComponentTraits&lt;T&gt;::minValue, ComponentTraits&lt;T&gt;::minValue, ComponentTraits&lt;T&gt;::minValue, ComponentTraits&lt;T&gt;::minValue }
&gt; +    {
&gt; +    }

Could we achieve the same result with default values rather than constructors? I’m guessing the answer is no.

&gt; Source/WebCore/platform/graphics/ColorUtilities.h:63
&gt; +template&lt;template&lt;typename&gt; typename ColorType&gt; constexpr ColorType&lt;uint8_t&gt; clampToComponentBytes(int r, int g, int b);
&gt;  template&lt;template&lt;typename&gt; typename ColorType&gt; constexpr ColorType&lt;uint8_t&gt; clampToComponentBytes(int r, int g, int b, int a);

Tiny refinement thought: Since these functions take int and have no overloads, then they will silently chop something like a uint64_t or a uint32_t to an int and *then* clamp, giving the wrong result and no compilation error. Is there an idiom for writing this so it won’t do that?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:116
&gt; +        texmapGL.drawSolidColor(targetRect, modelViewMatrix, Color::transparent, false);

This though shows why I dislike &quot;invalid color&quot; in Color so much. We could just pass { } here, and it would be &quot;invalid&quot;, not &quot;transparent black&quot;, but seems like that would be OK. Ugh.

&gt; Source/WebCore/platform/graphics/win/GraphicsContextCGWin.cpp:202
&gt; +    static constexpr auto spellingPatternColor = Color::red;
&gt; +    static constexpr auto grammarPatternColor = Color::darkGreen;

This will yield color builders; guess that ends up being OK/good.

&gt; Source/WebCore/rendering/RenderEmbeddedObject.cpp:80
&gt; +constexpr auto replacementTextRoundedRectPressedColor = SRGBA&lt;uint8_t&gt; { 105, 105, 105, 242 };
&gt; +constexpr auto replacementTextRoundedRectColor = SRGBA&lt;uint8_t&gt; { 125, 125, 125, 242 };
&gt; +constexpr auto replacementTextColor = SRGBA&lt;uint8_t&gt; { 240, 240, 240 };
&gt; +constexpr auto unavailablePluginBorderColor = Color::white.colorWithAlpha(216);

Add static? Not sure when that matters.

&gt; Source/WebCore/rendering/RenderFrameSet.cpp:73
&gt; -constexpr auto borderStartEdgeColor = makeSimpleColor(170, 170, 170);
&gt; +constexpr auto borderStartEdgeColor = SRGBA&lt;uint8_t&gt; { 170, 170, 170 };
&gt;  constexpr auto borderEndEdgeColor = Color::black;
&gt; -constexpr auto borderFillColor = makeSimpleColor(208, 208, 208);
&gt; +constexpr auto borderFillColor = SRGBA&lt;uint8_t&gt; { 208, 208, 208 };

Ditto.

Maybe move this to the top of the file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672766</commentid>
    <comment_count>6</comment_count>
      <attachid>404630</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-17 19:27:30 -0700</bug_when>
    <thetext>Created attachment 404630
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672767</commentid>
    <comment_count>7</comment_count>
      <attachid>404630</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-17 19:32:05 -0700</bug_when>
    <thetext>Comment on attachment 404630
Patch

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

&gt; Source/WebCore/platform/graphics/ColorBuilder.h:32
&gt;  template&lt;typename ColorType&gt; struct ColorBuilder : public ColorType {

should come back here at some point and remove the redundant &quot;public&quot;

&gt; Source/WebCore/platform/graphics/ColorBuilder.h:42
&gt; -        static_assert(std::is_same_v&lt;decltype(ColorType().alpha), uint8_t&gt;, &quot;Only uint8_t based color types are supported.&quot;);
&gt; +        static_assert(std::is_same_v&lt;typename ColorType::ComponentType, uint8_t&gt;, &quot;Only uint8_t based color types are supported.&quot;);

Kind of surprised about this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672770</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-17 20:13:25 -0700</bug_when>
    <thetext>Committed r264565: &lt;https://trac.webkit.org/changeset/264565&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404630.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672771</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-17 20:14:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/65756193&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672774</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-17 20:51:03 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 404529 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=404529&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/KeyValuePair.h:45
&gt; &gt; +        : key(std::forward&lt;KeyTypeArg&gt;(key))
&gt; &gt; +        , value(std::forward&lt;ValueTypeArg&gt;(value))
&gt; 
&gt; Is forward here correct rather than WTFMove? While this is a member of a
&gt; class template, it’s not a function template.

Changed to WTFMove().

&gt; 
&gt; &gt; Source/WebCore/html/ColorInputType.cpp:76
&gt; &gt; +    return SRGBA&lt;uint8_t&gt; { toASCIIHexValue(string[1], string[2]), toASCIIHexValue(string[3], string[4]), toASCIIHexValue(string[5], string[6]) };
&gt; 
&gt; An alternative here would be to use two sets of braces:

Nice. Changed to use that.

&gt; 
&gt;     return { { toASCIIHexValue ... } };
&gt; 
&gt; &gt; Source/WebCore/html/HTMLElement.cpp:1027
&gt; &gt; +        return SRGBA&lt;uint8_t&gt; { static_cast&lt;uint8_t&gt;(toASCIIHexValue(string[1]) * 0x11), static_cast&lt;uint8_t&gt;(toASCIIHexValue(string[2]) * 0x11), static_cast&lt;uint8_t&gt;(toASCIIHexValue(string[3]) * 0x11) };
&gt; 
&gt; Ditto.

Ditto.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLElement.cpp:1055
&gt; &gt; +        return SRGBA&lt;uint8_t&gt; { toASCIIHexValue(digitBuffer[0]), toASCIIHexValue(digitBuffer[1]), toASCIIHexValue(digitBuffer[2]) };
&gt; 
&gt; Ditto.

Ditto.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLElement.cpp:1079
&gt; &gt; +    return SRGBA&lt;uint8_t&gt; { redValue, greenValue, blueValue };
&gt; 
&gt; Ditto.

Ditto.
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorOverlay.cpp:1071
&gt; &gt; +    drawText(elementTagName, SRGBA&lt;uint8_t&gt; { 136, 18, 128 }); // Keep this in sync with XMLViewer.css (.tag)
&gt; 
&gt; I think instead we should change the local drawText lambda to take
&gt; SRGBA&lt;uint8_t&gt; and then here we would just have an initializer list and not
&gt; a type name.

Done.

&gt; 
&gt; &gt; Source/WebCore/page/cocoa/ResourceUsageOverlayCocoa.mm:163
&gt; &gt; +    categories[MemoryCategory::JSJIT] = HistoricMemoryCategoryInfo(MemoryCategory::JSJIT, SRGBA&lt;uint8_t&gt; { 255, 96, 255 }, &quot;JS JIT&quot;);
&gt; 
&gt; Same idea as above, can we make the type be SRGBA&lt;uint8_t&gt; and then just use
&gt; braces here.

Done. (it was already taking a SRGBA&lt;uint8_t&gt;, so the name was redundant already).

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/Color.h:149
&gt; &gt; +    static constexpr auto black = ColorBuilder&lt;SRGBA&lt;uint8_t&gt;&gt; { 0, 0, 0 };
&gt; 
&gt; Maybe we should define a name for ColorBuilder&lt;SRGBA&lt;uint8_t&gt;&gt; with using?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/Color.h:151
&gt; &gt; +    static constexpr auto darkGray = ColorBuilder&lt;SRGBA&lt;uint8_t&gt;&gt; { 128, 128, 128 };
&gt; 
&gt; Something I did a while back in my attempt at this color work was:
&gt; 
&gt; - Use named colors for anything that happens to be the same as a CSS named
&gt; color. We may have a few more opportunities for the, or maybe you already
&gt; covered it. When touching all these places with numeric color constants, I
&gt; was thinking that’s a good time to look up and see if any happen to be CSS
&gt; named colors.
&gt; 
&gt; - Rename any of these that are not consistent with CSS named color values. I
&gt; seem to remember there were some of those. Maybe you already did that?

I like that idea.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/Color.h:154
&gt; &gt; +    static constexpr auto transparent = ColorBuilder&lt;SRGBA&lt;uint8_t&gt;&gt; { 0, 0, 0, 0 };
&gt; 
&gt; In my patch I had renamed this transparentBlack; I think that’s better than
&gt; just transparent. Especially for a case like &quot;== transparentBlack&quot;, where
&gt; &quot;== transparent&quot; is definitely misleading/wrong. And it’s not like this
&gt; color name is used *so* often. It’s the default-constructed value of
&gt; SRBA&lt;uint8_t&gt;, so in some cases it’s probably written that way.
&gt; 
&gt; In fact, here maybe omit the { 0, 0, 0, 0 }, because it’s not needed?

Omitted the 0s. Will rename in another patch.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorTypes.h:63
&gt; &gt; +    constexpr SRGBA(T red, T green, T blue, T alpha)
&gt; &gt; +        : red { red }
&gt; &gt; +        , green { green }
&gt; &gt; +        , blue { blue }
&gt; &gt; +        , alpha { alpha }
&gt; &gt; +    {
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    constexpr SRGBA(T red, T green, T blue)
&gt; &gt; +        : SRGBA { red, green, blue, ComponentTraits&lt;T&gt;::maxValue }
&gt; &gt; +    {
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    constexpr SRGBA()
&gt; &gt; +        : SRGBA { ComponentTraits&lt;T&gt;::minValue, ComponentTraits&lt;T&gt;::minValue, ComponentTraits&lt;T&gt;::minValue, ComponentTraits&lt;T&gt;::minValue }
&gt; &gt; +    {
&gt; &gt; +    }
&gt; 
&gt; Could we achieve the same result with default values rather than
&gt; constructors? I’m guessing the answer is no.

I was able to get rid of of the middle one. But the others are needed due to weird default constructor being deleted for structs behavior. 

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorUtilities.h:63
&gt; &gt; +template&lt;template&lt;typename&gt; typename ColorType&gt; constexpr ColorType&lt;uint8_t&gt; clampToComponentBytes(int r, int g, int b);
&gt; &gt;  template&lt;template&lt;typename&gt; typename ColorType&gt; constexpr ColorType&lt;uint8_t&gt; clampToComponentBytes(int r, int g, int b, int a);
&gt; 
&gt; Tiny refinement thought: Since these functions take int and have no
&gt; overloads, then they will silently chop something like a uint64_t or a
&gt; uint32_t to an int and *then* clamp, giving the wrong result and no
&gt; compilation error. Is there an idiom for writing this so it won’t do that?

Something like this should work (and support a future where some color types have more than four components).

template&lt;typename ComponentType&gt; constexpr uint8_t clampToComponentByte(ComponentType component)
{
    return std::clamp(component, static_cast&lt;ComponentType&gt;(0), static_cast&lt;ComponentType&gt;(255));
}

template&lt;template&lt;typename&gt; typename ColorType, typename... ComponentType&gt; constexpr ColorType&lt;uint8_t&gt; clampToComponentBytes(ComponentType... components)
{
    return { clampToComponentByte(components)... };
}


&gt; 
&gt; &gt; Source/WebCore/platform/graphics/win/GraphicsContextCGWin.cpp:202
&gt; &gt; +    static constexpr auto spellingPatternColor = Color::red;
&gt; &gt; +    static constexpr auto grammarPatternColor = Color::darkGreen;
&gt; 
&gt; This will yield color builders; guess that ends up being OK/good.

Yeah, that&apos;s fine. ColorBuilders are structurally identical to the thing they build. 

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderEmbeddedObject.cpp:80
&gt; &gt; +constexpr auto replacementTextRoundedRectPressedColor = SRGBA&lt;uint8_t&gt; { 105, 105, 105, 242 };
&gt; &gt; +constexpr auto replacementTextRoundedRectColor = SRGBA&lt;uint8_t&gt; { 125, 125, 125, 242 };
&gt; &gt; +constexpr auto replacementTextColor = SRGBA&lt;uint8_t&gt; { 240, 240, 240 };
&gt; &gt; +constexpr auto unavailablePluginBorderColor = Color::white.colorWithAlpha(216);
&gt; 
&gt; Add static? Not sure when that matters.

Done. I would also like to figure out a better rule of thumb of when we should be using static for constexpr things.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderFrameSet.cpp:73
&gt; &gt; -constexpr auto borderStartEdgeColor = makeSimpleColor(170, 170, 170);
&gt; &gt; +constexpr auto borderStartEdgeColor = SRGBA&lt;uint8_t&gt; { 170, 170, 170 };
&gt; &gt;  constexpr auto borderEndEdgeColor = Color::black;
&gt; &gt; -constexpr auto borderFillColor = makeSimpleColor(208, 208, 208);
&gt; &gt; +constexpr auto borderFillColor = SRGBA&lt;uint8_t&gt; { 208, 208, 208 };
&gt; 
&gt; Ditto.
&gt; 
&gt; Maybe move this to the top of the file?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672775</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-17 20:52:36 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; Comment on attachment 404630 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=404630&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorBuilder.h:32
&gt; &gt;  template&lt;typename ColorType&gt; struct ColorBuilder : public ColorType {
&gt; 
&gt; should come back here at some point and remove the redundant &quot;public&quot;

Good point.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ColorBuilder.h:42
&gt; &gt; -        static_assert(std::is_same_v&lt;decltype(ColorType().alpha), uint8_t&gt;, &quot;Only uint8_t based color types are supported.&quot;);
&gt; &gt; +        static_assert(std::is_same_v&lt;typename ColorType::ComponentType, uint8_t&gt;, &quot;Only uint8_t based color types are supported.&quot;);
&gt; 
&gt; Kind of surprised about this change.

Yeah, I wanted to use Color::ComponentType consistently in one pass and this was an accidental holder over I guess. Will revert when fixing the unnecessary public.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404520</attachid>
            <date>2020-07-16 19:44:33 -0700</date>
            <delta_ts>2020-07-16 19:47:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214439-20200716194432.patch</filename>
            <type>text/plain</type>
            <size>130601</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA3LTE2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZmluYWwgdmVzdGlnYXRlcyBvZiBTaW1wbGVD
b2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0
NDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
dGYvS2V5VmFsdWVQYWlyLmg6CisgICAgICAgIChXVEY6OktleVZhbHVlUGFpcjo6S2V5VmFsdWVQ
YWlyKToKKyAgICAgICAgQWRkIG92ZXJsb2FkIG9mIGNvbnN0cnVjdG9yIHRoYXQgaXMgbm90IGEg
dGVtcGxhdGUgZnVuY3Rpb24gdG8gYWlkIGRlZHVjdGlvbgorICAgICAgICB3aGVuIHVzaW5nIHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdHMgdG8gY29udHJ1Y3QgYSBIYXNoTWFwLgorCiAyMDIwLTA3LTE2
ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQmlnIFN1
cl0gQnVpbGQgb24gU2VlZCAxCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9LZXlWYWx1ZVBhaXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9LZXlWYWx1ZVBhaXIuaAkocmV2aXNpb24gMjY0
NDcxKQorKysgU291cmNlL1dURi93dGYvS2V5VmFsdWVQYWlyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDYgKzQwLDEyIEBAIHN0cnVjdCBLZXlWYWx1ZVBhaXIgewogICAgIHsKICAgICB9CiAKKyAg
ICBLZXlWYWx1ZVBhaXIoS2V5VHlwZUFyZyYmIGtleSwgVmFsdWVUeXBlQXJnJiYgdmFsdWUpCisg
ICAgICAgIDoga2V5KHN0ZDo6Zm9yd2FyZDxLZXlUeXBlQXJnPihrZXkpKQorICAgICAgICAsIHZh
bHVlKHN0ZDo6Zm9yd2FyZDxWYWx1ZVR5cGVBcmc+KHZhbHVlKSkKKyAgICB7CisgICAgfQorCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KICAgICBLZXlWYWx1ZVBhaXIoSyYm
IGtleSwgViYmIHZhbHVlKQogICAgICAgICA6IGtleShzdGQ6OmZvcndhcmQ8Sz4oa2V5KSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4OSBAQAorMjAyMC0wNy0xNiAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGZpbmFsIHZlc3RpZ2F0ZXMg
b2YgU2ltcGxlQ29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNDQzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlcGxhY2UgcmVtYWluaW5nIG1ha2VTaW1wbGVDb2xvciB1c2VzOgorICAgICAgICAt
IExpdGVyYWwgLyBjb25zdGFudCBjb2xvcnMgc3dpdGNoZWQgdG8gdXNpbmcgU1JHQkE8dWludDhf
dD4geyAuLi4gfS4KKyAgICAgICAgLSBEaXJlY3QgY29uc3RydWN0aW9uIGZyb20gdWludDhfdCB2
YWx1ZXMgYWxzbyBzd2l0Y2hlZCB0byBTUkdCQTx1aW50OF90PiB7IC4uLiB9CisgICAgICAgIC0g
V2hlcmUgcG9zc2libGUgc3dpdGNoZWQgdG8gdXNpbmcgb2YgbmFtZWQgY29sb3JzIChlLmcuIENv
bG9yOjp5ZWxsb3cpIGJvdGgKKyAgICAgICAgICBkaXJlY3RseSBhbmQgd2hlcmUgYW4gb3ZlcnJp
ZGUgYWxwaGEgd2FzIG5lZWRlZC4gVG8gYWlkIHRoaXMsIG5ldyBuYW1lZAorICAgICAgICAgIGNv
bG9ycyB3ZXJlIGFkZGVkIGZvciByZWQsIG1hZ2VudGEsIGJsdWUsIGdyZWVuLCBkYXJrR3JlZW4g
YW5kIG9yYW5nZS4KKyAgICAgICAgLSBSZW1haW5pbmcgY2FsbGVycyBzd2l0Y2hlZCB0byBkaXJl
Y3RseSBjYWxsaW5nIGNsYW1wVG9Db21wb25lbnRCeXRlcywgd2hpY2gKKyAgICAgICAgICB3YXMg
YWxsIHRoYXQgbWFrZVNpbXBsZUNvbG9yIGRpZC4gQW4gb3ZlcmxvYWQgb2YgY2xhbXBUb0NvbXBv
bmVudEJ5dGVzIHRoYXQKKyAgICAgICAgICBkb2Vzbid0IHJlcXVpcmUgdGhlIGFscGhhIHBhcmFt
ZXRlciB3YXMgYWRkZWQgdG8gc2ltcGxpZnkgY2FsbHMuCisgICAgCisgICAgICAgIFRvIG1ha2Ug
Y29uc3RydWN0aW9uIG9mIFNSR0JBPHVpbnQ4X3Q+IHZhbHVlcyBuaWNlciwgY2FsbGVycyBubyBs
b25nZXIgbmVlZAorICAgICAgICB0byBzcGVjaWZ5IHRoZSBhbHBoYSBleHBsaWNpdGx5IGlmIHRo
ZSBjb2xvciBpcyBvcGFxdWUuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9TaW1wbGVDb2xvci5oOiBSZW1vdmVkLgorICAgICAgICBSZW1vdmUgU2ltcGxlQ29s
b3IuaAorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VOdW1lcmljQ29sb3IpOgorICAgICAgICBTd2l0Y2ggdG8gY2xh
bXBUb0NvbXBvbmVudEJ5dGVzLCBidXQgbGVhdmUgYSBGSVhNRSBpbmRpY2F0aW5nIHRoaXMgc2hv
dWxkIGJlCisgICAgICAgIHN3aXRjaGVkIHRvIGRpcmVjdCBTUkdCQTx1aW50OF90PiB3aGVuIGhl
cGxlciBmdW5jdGlvbnMgYXJlIGZpeGVkIHRvIHJldHVybgorICAgICAgICB1aW50OF90cyByYXRo
ZXIgdGhhbiBpbnRzLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yKToKKyAgICAgICAgU3dpdGNo
ZWQgdG8gY2xhbXBUb0NvbXBvbmVudEJ5dGVzIGFuZCByZW1vdmVkIGV4aXN0aW5nIHVubmVjZXNz
YXJ5IGFkZGl0aW9uYWwgY2xhbXBpbmcKKyAgICAgICAgb2YgdGhlIGFscGhhIGNvbXBvbmVudC4K
KworICAgICAgICAqIHBhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5OjpkcmF3UmVjdCk6CisgICAgICAgIFJl
c3RydWN0dXJlIEhhc2hNYXAgY29uc3RydWN0aW9uIHRvIHVzZSB0aGUgSGFzaE1hcCBzdGQ6Omlu
dGlhbGl6ZXJfbGlzdCBjb25zdHJ1Y3Rvci4KKyAgICAgICAgVGhpcyB0YWtlcyBhZHZhbnRhZ2Ug
b2YgYSBjaGFuZ2UgdG8gV1RGOjpLZXlWYWx1ZVBhaXIgdGhhdCBhbGxvd3MgaXQgZGVkdWNlIGlu
IHRoaXMKKyAgICAgICAgY29udGV4dC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmg6CisgICAgICAgIFJlbW92ZSBTaW1wbGVDb2xvci5oIGluY2x1ZGUsIGJ1dCBhZGQgQ29s
b3JCdWlsZGVyLmggYW5kIENvbG9yVXRpbGl0aWVzLmgKKyAgICAgICAgd2hpY2ggU2ltcGxlQ29s
b3Igd2FzIGluY2x1ZGluZyBvbiBpdHMgYmVoYWxmLiBBZGQgbmV3IG5hbWVkIGNvbG9ycyBmb3Ig
CisgICAgICAgIHJlZCwgbWFnZW50YSwgYmx1ZSwgZ3JlZW4sIGRhcmtHcmVlbiBhbmQgb3Jhbmdl
LiBGb3IgYWxsIG5hbWVkIGNvbG9ycywKKyAgICAgICAgdXNlIENvbG9yQnVpbGRlcjxTUkdCQTx1
aW50OF90Pj4gcmF0aGVyIHRoYW4gU1JHQkE8dWludDhfdD4gYWxvbmUgdG8gYWxsb3cKKyAgICAg
ICAgZm9yIGNhbGxlcnMgdG8gZG8gdGhpbmdzIGxpa2UgQ29sb3I6OnllbGxvdy5jb2xvcldpdGhB
bHBoYSguLi4pLiBJbiB0aGUgZnV0dXJlLAorICAgICAgICBpdCBtaWdodCBtYWtlIG1vcmUgc2Vu
c2UgdG8gbWVyZ2UgQ29sb3JCdWlsZGVyJ3MgZnVuY3Rpb25hbGl0eSBkaXJlY3RseSBpbnRvCisg
ICAgICAgIHRoZSBjb2xvciB0eXBlcywgYnV0IGZvciBub3cgdGhpcyBwcmVzZXJ2ZXMgdGhhdCBm
dW5jdGlvbmFsaXR5LgorCisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRk
aXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9u
Q29sb3JGdW5jdGlvbjo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25D
b2xvckZ1bmN0aW9uOjpyb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKTogRGVsZXRlZC4KKyAgICAg
ICAgUmVwbGFjZSBiZXNwb2tlIHJvdW5kaW5nL2NsYW1waW5nIGZ1bmN0aW9ucyBpbiBmYXZvciBv
ZiBDb2xvclV0aWxpdGllcy5oIGFnZ3JlZ2F0ZSBvbmVzIGFuZAorICAgICAgICBkaXJlY3RseSBj
YWxsaW5nIHN0ZDo6bHJvdW5kLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpwYXJzZVJHQlBhcmFtZXRlcnMpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRpb25I
aWdobGlnaHQuaDoKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlU2ltcGxlQ29sb3JWYWx1ZSk6CisgICAgICAgICogaHRtbC9IVE1MRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUxlZ2FjeUNvbG9yVmFsdWUpOgorICAg
ICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd091dGxpbmVkUXVh
ZFdpdGhDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdTaGFwZUhpZ2hsaWdodCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpwYWludCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3UGFpbnRSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JPdmVybGF5OjpkcmF3Qm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck92ZXJsYXk6OmRyYXdSdWxlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3Zlcmxh
eTo6ZHJhd0VsZW1lbnRUaXRsZSk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6TGluZUxheW91dDo6ZGVidWdUZXh0U2hhZG93KToKKyAgICAgICAgKiBwYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tncm91bmRDU1MgY29uc3QpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXMp
OgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Okhpc3RvcmljUmVzb3VyY2VVc2FnZURhdGE6Okhpc3RvcmljUmVzb3Vy
Y2VVc2FnZURhdGEpOgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlM
aW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZv
cm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1l
QWR3YWl0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYWR3YWl0YS9UaGVtZUFkd2FpdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVBZHdhaXRhOjphY3RpdmVTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVBZHdhaXRhOjphY3RpdmVT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVB
ZHdhaXRhOjppbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQmxlbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRTb3VyY2VPdmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kV2l0aFdoaXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQnVpbGRl
cjo6Y29sb3JXaXRoQWxwaGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JCdWlsZGVy
OjpDb2xvckJ1aWxkZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNSR0JBOjpTUkdCQSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNs
YW1wVG9Db21wb25lbnRCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50
RmxvYXRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OmdldERlYnVnQm9yZGVySW5mbyBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdl
cyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50c0xheWVyRGVidWdCb3JkZXJDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjbG9uZUxheWVyRGVidWdCb3JkZXJDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5
ZnJhbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGlj
YXRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb3ZlcmFnZU1hcDo6VGlsZUNvdmVyYWdlTWFwKToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb3ZlcmFnZU1hcDo6dXBkYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwOgor
ICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmRyYXdSZXBhaW50Q291bnRlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y29sb3JGb3JNYXJrZXJMaW5lU3R5bGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VTaW1w
bGVDb2xvckZyb21OU0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3RG90c0ZvckRvY3VtZW50
TWFya2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNo
ZTo6Y29sb3JGb3JHcmlkVGlsZUJvcmRlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
ZWZhdWx0RGV2aWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
ZHJhd0JveGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tCYWNr
Z3JvdW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9wbGF5c3RhdGlvbi9TY3JvbGxiYXJUaGVtZVBs
YXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUGxheVN0YXRp
b246OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0lt
YWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGF0dGVybkZvclRvdWNoQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdHRl
cm5Gb3JFdmVudExpc3RlbmVyUmVnaW9uVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OnBhaW50RGVidWdPdmVybGF5cyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwbGF0Zm9ybUFj
dGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZTo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9y
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVBZHdhaXRhLmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFp
bnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRQ
cm9ncmVzc0Jhcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6bWVudUJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZU1hYzo6c3lzdGVtQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lV2luOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdp
bjo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OnN5c3RlbUNvbG9yIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MQmxvY2s6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbG9yUmVzb2x2aW5nQ3VycmVu
dENvbG9yIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsU3RvcENvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsRmxvb2RDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbExpZ2h0aW5nQ29sb3IpOgor
ICAgICAgICAqIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZHJhd1JlY3QpOgorICAgICAgICAqIHRlc3Rp
bmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbToKKyAgICAgICAg
KC1bV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheSBpbml0V2l0aFdlYlZpZXc6a2lu
ZDpkZXByZWNhdGVkOl0pOgorICAgICAgICBSZXBsYWNlIG1ha2VTaW1wbGVDb2xvciB1c2VzIHdp
dGggYXBwcm9wcmlhdGUgYWx0ZXJuYXRpdmUuCisKIDIwMjAtMDctMTYgIFBlbmcgTGl1ICA8cGVu
Zy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBEb3VibGUgdGFwcGluZyB0byB6b29tIG91dCBh
IGZ1bGxzY3JlZW4gdmlkZW8gd2lsbCB6b29tIGluIHNsaWdodGx5IGJlZm9yZSB6b29taW5nIG91
dApJbmRleDogU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMTk0LDcgKzExOTQsNiBAQCBz
ZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlVmlkZW9TYW1wbGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01v
ZGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgKLSAgICBwbGF0Zm9ybS9n
cmFwaGljcy9TaW1wbGVDb2xvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNh
dG9yLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9UZXh0UnVuLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjIz
NCw3ICsyMjM0LDYgQEAKIAkJN0MyRkE2MTIxRUE5NUEzQzAwQTAzMTA4IC8qIFJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MyRkE2MTAxRUE5NUEzMjAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdDMzBEOTg0MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzMEQ5ODAxRjgxNUFD
MTAwMjY4MzU2IC8qIEpTQWJvcnRDb250cm9sbGVyLmggKi87IH07CiAJCTdDMzBEOTg2MUY4MTVB
RUMwMDI2ODM1NiAvKiBKU0Fib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMwRDk4MTFGODE1QUMxMDAyNjgzNTYgLyogSlNBYm9ydFNp
Z25hbC5oICovOyB9OwotCQk3QzMxQzg4RTI0N0FENTk1MDA1QkYzMTkgLyogU2ltcGxlQ29sb3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzFDODhD
MjQ3QUQ1OTUwMDVCRjMxOSAvKiBTaW1wbGVDb2xvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMzMwQTAyMURGOEZBQzYwMEQzMzk1QyAvKiBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzMwQTAxMURGOEZBQzYwMEQzMzk1QyAvKiBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QzMzMEEwODFERjlGOTUxMDBEMzM5NUMgLyogSlNQb3NpdGlvbk9wdGlv
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzMw
QTA2MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovOyB9OwogCQk3QzNB
OTFFNjFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNBOTFFNTFDOTYzQjg4MDBE
MUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk5OTYsNyArOTk5NSw2IEBACiAJCTdDMzBEOTgw
MUY4MTVBQzEwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0Fib3J0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzMwRDk4MTFGODE1QUMxMDAyNjgzNTYgLyogSlNBYm9ydFNpZ25hbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Fib3J0U2lnbmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzBEOTgyMUY4MTVBQzIwMDI2ODM1NiAvKiBKU0Fib3J0
U2lnbmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWJvcnRT
aWduYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzMxQzg4QzI0N0FENTk1
MDA1QkYzMTkgLyogU2ltcGxlQ29sb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2ltcGxlQ29sb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzMzBBMDEx
REY4RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzMzBBMDMxREY5RTk1QjAwRDMzOTVDIC8q
IFBvc2l0aW9uT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUG9zaXRpb25PcHRpb25zLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzMzBBMDUxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9zaXRp
b25PcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9z
aXRpb25PcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NzI2LDcg
KzI1NzI0LDYgQEAKIAkJCQlBNzNGOTVGRDEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3Qu
aCAqLywKIAkJCQkwRjNERDQ0RDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5jcHAgKi8s
CiAJCQkJMEYzREQ0NEUxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCAqLywKLQkJCQk3
QzMxQzg4QzI0N0FENTk1MDA1QkYzMTkgLyogU2ltcGxlQ29sb3IuaCAqLywKIAkJCQlDRDY0MUVC
MjE4MThGNUVEMDBFRTRDNDEgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5oICovLAogCQkJCUNEQzhC
NUFDMTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmggKi8sCiAJ
CQkJN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICovLApAQCAtMzMx
OTUsNyArMzMxOTIsNiBAQAogCQkJCTkzMzA5RUEzMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRU
aW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREYxOUUyQUMyNDc3MkJDMTAwN0JEQUNCIC8qIFNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
MzYyRThDMTIwQ0VGOUNCMDAyNDU4ODYgLyogU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk3QzMxQzg4RTI0N0FENTk1MDA1QkYzMTkgLyogU2ltcGxlQ29s
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0ODk0NEEzMTgwQjU3RDgwMEYxNjVEOCAvKiBTaW1w
bGVMaW5lTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMUUwNjdFRTFFNjI0NkU1MDAxNjJE
MTYgLyogU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1ODVE
NkUwNDFBMUE3OTJFMDBGQTRGMTIgLyogU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oIGlu
IEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZh
c3RQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJGYXN0UGF0aHMuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4Nyw3
ICs0ODcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgCiAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICBpZiAoY3VycmVudCAhPSBlbmQp
CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gbWFrZVNp
bXBsZUNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsgLy8gRklYTUU6IEFscmVhZHkgY2xh
bXBlZCwgZG9uJ3QgbmVlZCB0byByZS1jbGFtcCBhcyBtYWtlU2ltcGxlQ29sb3IgZG9lcy4KKyAg
ICAgICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4ocmVkLCBncmVlbiwgYmx1
ZSwgYWxwaGEpOyAvLyBGSVhNRTogQWxyZWFkeSBjbGFtcGVkLCBkb2Vzbid0IG5lZWQgdG8gcmUt
Y2xhbXAuIFVwZGF0ZSBwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlL3BhcnNlQWxwaGFWYWx1ZSB0
byByZXR1cm4gdWludDhfdCBhbmQgcmVwbGFjZSBjYWxsIHRvIGNsYW1wVG9Db21wb25lbnRCeXRl
cyB3aXRoIGRpcmVjdCBjb25zdHJ1Y3Rpb24gb2YgU1JHQkE8dWludDhfdD4uCiAgICAgfQogCiAg
ICAgLy8gVHJ5IHJnYigpIHN5bnRheC4KQEAgLTUwNSw3ICs1MDUsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgICAgICBpZiAoY3VycmVudCAhPSBlbmQpCiAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKHJlZCwgZ3JlZW4sIGJs
dWUpOyAvLyBGSVhNRTogQWxyZWFkeSBjbGFtcGVkLCBkb24ndCBuZWVkIHRvIHJlLWNsYW1wIGFz
IG1ha2VTaW1wbGVDb2xvciBkb2VzLgorICAgICAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5
dGVzPFNSR0JBPihyZWQsIGdyZWVuLCBibHVlKTsgLy8gRklYTUU6IEFscmVhZHkgY2xhbXBlZCwg
ZG9lc24ndCBuZWVkIHRvIHJlLWNsYW1wLiBVcGRhdGUgcGFyc2VDb2xvckludE9yUGVyY2VudGFn
ZS9wYXJzZUFscGhhVmFsdWUgdG8gcmV0dXJuIHVpbnQ4X3QgYW5kIHJlcGxhY2UgY2FsbCB0byBj
bGFtcFRvQ29tcG9uZW50Qnl0ZXMgd2l0aCBkaXJlY3QgY29uc3RydWN0aW9uIG9mIFNSR0JBPHVp
bnQ4X3Q+LgogICAgIH0KIAogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMu
Y3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4OSw3ICs1ODksNyBA
QCBzdGF0aWMgQ29sb3IgcGFyc2VSR0JQYXJhbWV0ZXJzKENTU1BhcnNlCiAgICAgaWYgKCFhcmdz
LmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0gICAgcmV0dXJuIG1ha2VTaW1w
bGVDb2xvcihjb2xvckFycmF5WzBdLCBjb2xvckFycmF5WzFdLCBjb2xvckFycmF5WzJdLCBhbHBo
YUNvbXBvbmVudCk7CisgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgY29sb3JBcnJheVswXSwg
Y29sb3JBcnJheVsxXSwgY29sb3JBcnJheVsyXSwgYWxwaGFDb21wb25lbnQgfTsKIH0KIAogc3Rh
dGljIENvbG9yIHBhcnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRpb25IaWdobGlnaHQuaAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw5ICs0MCw5IEBAIHN0cnVjdCBDb21wb3NpdGlvbkhpZ2hsaWdodCB7CiAgICAgfQogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVs
dENvbXBvc2l0aW9uRmlsbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDE3NSwgMTkyLCAyMjcsIDYw
KTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdENvbXBvc2l0aW9uRmlsbENvbG9y
ID0gU1JHQkE8dWludDhfdD4geyAxNzUsIDE5MiwgMjI3LCA2MCB9OwogI2Vsc2UKLSAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdENvbXBvc2l0aW9uRmlsbENvbG9yID0gbWFrZVNpbXBs
ZUNvbG9yKDIyNSwgMjIxLCA4NSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRlZmF1bHRD
b21wb3NpdGlvbkZpbGxDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjI1LCAyMjEsIDg1IH07CiAj
ZW5kaWYKIAogICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0IHsgMCB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3
Myw3IEBAIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VTaW0KIHsKICAgICBp
ZiAoIWlzVmFsaWRTaW1wbGVDb2xvcihzdHJpbmcpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IodG9BU0NJSUhleFZhbHVlKHN0cmluZ1sx
XSwgc3RyaW5nWzJdKSwgdG9BU0NJSUhleFZhbHVlKHN0cmluZ1szXSwgc3RyaW5nWzRdKSwgdG9B
U0NJSUhleFZhbHVlKHN0cmluZ1s1XSwgc3RyaW5nWzZdKSk7CisgICAgcmV0dXJuIFNSR0JBPHVp
bnQ4X3Q+IHsgdG9BU0NJSUhleFZhbHVlKHN0cmluZ1sxXSwgc3RyaW5nWzJdKSwgdG9BU0NJSUhl
eFZhbHVlKHN0cmluZ1szXSwgc3RyaW5nWzRdKSwgdG9BU0NJSUhleFZhbHVlKHN0cmluZ1s1XSwg
c3RyaW5nWzZdKSB9OwogfQogCiBDb2xvcklucHV0VHlwZTo6fkNvbG9ySW5wdXRUeXBlKCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAy
NCw3ICsxMDI0LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZUxlZwog
ICAgICAgICByZXR1cm4gbmFtZWRDb2xvcjsKIAogICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPT0g
NCAmJiBzdHJpbmdbMF0gPT0gJyMnICYmIGlzQVNDSUlIZXhEaWdpdChzdHJpbmdbMV0pICYmIGlz
QVNDSUlIZXhEaWdpdChzdHJpbmdbMl0pICYmIGlzQVNDSUlIZXhEaWdpdChzdHJpbmdbM10pKQot
ICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKHRvQVNDSUlIZXhWYWx1ZShzdHJpbmdbMV0p
ICogMHgxMSwgdG9BU0NJSUhleFZhbHVlKHN0cmluZ1syXSkgKiAweDExLCB0b0FTQ0lJSGV4VmFs
dWUoc3RyaW5nWzNdKSAqIDB4MTEpOworICAgICAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyBz
dGF0aWNfY2FzdDx1aW50OF90Pih0b0FTQ0lJSGV4VmFsdWUoc3RyaW5nWzFdKSAqIDB4MTEpLCBz
dGF0aWNfY2FzdDx1aW50OF90Pih0b0FTQ0lJSGV4VmFsdWUoc3RyaW5nWzJdKSAqIDB4MTEpLCBz
dGF0aWNfY2FzdDx1aW50OF90Pih0b0FTQ0lJSGV4VmFsdWUoc3RyaW5nWzNdKSAqIDB4MTEpIH07
CiAKICAgICAvLyBQZXIgc3BlYywgb25seSBsb29rIGF0IHRoZSBmaXJzdCAxMjggZGlnaXRzIG9m
IHRoZSBzdHJpbmcuCiAgICAgY29uc3RleHByIHVuc2lnbmVkIG1heENvbG9yTGVuZ3RoID0gMTI4
OwpAQCAtMTA1Miw3ICsxMDUyLDcgQEAgc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBw
YXJzZUxlZwogICAgIGRpZ2l0QnVmZmVyLmFwcGVuZCgnMCcpOwogCiAgICAgaWYgKGRpZ2l0QnVm
ZmVyLnNpemUoKSA8IDYpCi0gICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IodG9BU0NJSUhl
eFZhbHVlKGRpZ2l0QnVmZmVyWzBdKSwgdG9BU0NJSUhleFZhbHVlKGRpZ2l0QnVmZmVyWzFdKSwg
dG9BU0NJSUhleFZhbHVlKGRpZ2l0QnVmZmVyWzJdKSk7CisgICAgICAgIHJldHVybiBTUkdCQTx1
aW50OF90PiB7IHRvQVNDSUlIZXhWYWx1ZShkaWdpdEJ1ZmZlclswXSksIHRvQVNDSUlIZXhWYWx1
ZShkaWdpdEJ1ZmZlclsxXSksIHRvQVNDSUlIZXhWYWx1ZShkaWdpdEJ1ZmZlclsyXSkgfTsKIAog
ICAgIC8vIFNwbGl0IHRoZSBkaWdpdHMgaW50byB0aHJlZSBjb21wb25lbnRzLCB0aGVuIHNlYXJj
aCB0aGUgbGFzdCA4IGRpZ2l0cyBvZiBlYWNoIGNvbXBvbmVudC4KICAgICBBU1NFUlQoZGlnaXRC
dWZmZXIuc2l6ZSgpID49IDYpOwpAQCAtMTA3Niw3ICsxMDc2LDcgQEAgc3RhdGljIE9wdGlvbmFs
PFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZUxlZwogICAgIHVpbnQ4X3QgcmVkVmFsdWUgPSB0b0FTQ0lJ
SGV4VmFsdWUoZGlnaXRCdWZmZXJbcmVkSW5kZXhdLCBkaWdpdEJ1ZmZlcltyZWRJbmRleCArIDFd
KTsKICAgICB1aW50OF90IGdyZWVuVmFsdWUgPSB0b0FTQ0lJSGV4VmFsdWUoZGlnaXRCdWZmZXJb
Z3JlZW5JbmRleF0sIGRpZ2l0QnVmZmVyW2dyZWVuSW5kZXggKyAxXSk7CiAgICAgdWludDhfdCBi
bHVlVmFsdWUgPSB0b0FTQ0lJSGV4VmFsdWUoZGlnaXRCdWZmZXJbYmx1ZUluZGV4XSwgZGlnaXRC
dWZmZXJbYmx1ZUluZGV4ICsgMV0pOwotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IocmVkVmFs
dWUsIGdyZWVuVmFsdWUsIGJsdWVWYWx1ZSk7CisgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsg
cmVkVmFsdWUsIGdyZWVuVmFsdWUsIGJsdWVWYWx1ZSB9OwogfQogCiB2b2lkIEhUTUxFbGVtZW50
OjphZGRIVE1MQ29sb3JUb1N0eWxlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlLCBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDI2NDQ3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwODUsNyArMjA4NSw3IEBAIFJlbmRlclN0eWxlIEhUTUxJbnB1dEVsZW1lbnQ6
OmNyZWF0ZUlubmUKICAgICBpZiAoaGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpICYm
ICFpc0Rpc2FibGVkT3JSZWFkT25seSgpKSB7CiAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldERp
c3BsYXkoRGlzcGxheVR5cGU6OklubGluZUJsb2NrKTsKICAgICAgICAgdGV4dEJsb2NrU3R5bGUu
c2V0TWF4V2lkdGgoTGVuZ3RoIHsgMTAwLCBQZXJjZW50IH0pOwotICAgICAgICB0ZXh0QmxvY2tT
dHlsZS5zZXRDb2xvcihtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMTUzKSk7CisgICAgICAgIHRl
eHRCbG9ja1N0eWxlLnNldENvbG9yKENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgxNTMpKTsK
ICAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0VGV4dE92ZXJmbG93KFRleHRPdmVyZmxvdzo6Q2xp
cCk7CiAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldE1hc2tJbWFnZShTdHlsZUdlbmVyYXRlZElt
YWdlOjpjcmVhdGUoYXV0b0ZpbGxTdHJvbmdQYXNzd29yZE1hc2tJbWFnZSgpKSk7CiAgICAgICAg
IC8vIEEgc3RhY2tpbmcgY29udGV4dCBpcyBuZWVkZWQgZm9yIHRoZSBtYXNrLgpJbmRleDogU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAkocmV2aXNpb24g
MjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNyArMjIyLDcgQEAgc3RhdGljIHZvaWQgZHJhd091dGxp
bmVkUXVhZFdpdGhDbGlwKEdyYQogICAgIGNvbnRleHQuZmlsbFBhdGgocXVhZFRvUGF0aChxdWFk
LCBib3VuZHMpKTsKIAogICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZU9wZXJhdG9yOjpEZXN0aW5hdGlvbk91dCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IobWFr
ZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCkpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9y
OjpyZWQpOwogICAgIGNvbnRleHQuZmlsbFBhdGgocXVhZFRvUGF0aChjbGlwUXVhZCwgYm91bmRz
KSk7CiB9CiAKQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhcGVIaWdobGln
aHQoR3JhcGhpY3NDCiAgICAgRnJhbWVWaWV3KiBjb250YWluaW5nVmlldyA9IGNvbnRhaW5pbmdG
cmFtZS0+dmlldygpOwogICAgIEZyYW1lVmlldyogbWFpblZpZXcgPSBjb250YWluaW5nRnJhbWUt
PnBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwogCi0gICAgY29uc3RleHByIGF1dG8gc2hhcGVI
aWdobGlnaHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig5NiwgODIsIDEyNywgMjA0KTsKKyAgICBj
b25zdGV4cHIgYXV0byBzaGFwZUhpZ2hsaWdodENvbG9yID0gU1JHQkE8dWludDhfdD4geyA5Niwg
ODIsIDEyNywgMjA0IH07CiAKICAgICBTaGFwZTo6RGlzcGxheVBhdGhzIHBhdGhzOwogICAgIHNo
YXBlT3V0c2lkZUluZm8tPmNvbXB1dGVkU2hhcGUoKS5idWlsZERpc3BsYXlQYXRocyhwYXRocyk7
CkBAIC0zNDUsNyArMzQ1LDcgQEAgc3RhdGljIHZvaWQgZHJhd1NoYXBlSGlnaGxpZ2h0KEdyYXBo
aWNzQwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKIAotICAgICAgICBjb25zdGV4cHIgYXV0byBzaGFwZU1hcmdpbkhpZ2hsaWdodENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDk2LCA4MiwgMTI3LCAxNTMpOworICAgICAgICBjb25zdGV4cHIg
YXV0byBzaGFwZU1hcmdpbkhpZ2hsaWdodENvbG9yID0gU1JHQkE8dWludDhfdD4geyA5NiwgODIs
IDEyNywgMTUzIH07CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHNoYXBlTWFyZ2luSGln
aGxpZ2h0Q29sb3IpOwogICAgICAgICBjb250ZXh0LmZpbGxQYXRoKG1hcmdpblBhdGgpOwogICAg
IH0KQEAgLTM4Miw3ICszODIsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnBhaW50KEdyYXBo
aWNzQ29uCiAgICAgaWYgKG1faW5kaWNhdGluZykgewogICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKLSAgICAgICAgY29uc3RleHByIGF1dG8g
aW5kaWNhdGluZ0NvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDExMSwgMTY4LCAyMjAsIDE2OCk7Cisg
ICAgICAgIGNvbnN0ZXhwciBhdXRvIGluZGljYXRpbmdDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsg
MTExLCAxNjgsIDIyMCwgMTY4IH07CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGluZGlj
YXRpbmdDb2xvcik7CiAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoeyBGbG9hdFBvaW50Ojp6ZXJv
KCksIHZpZXdwb3J0U2l6ZSB9KTsKICAgICB9CkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBJbnNw
ZWN0b3JPdmVybGF5OjpkcmF3UGFpbnRSZWN0cyhHcgogewogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIAotICAgIGNvbnN0ZXhwciBhdXRvIHBhaW50
UmVjdHNDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDAsIDEyOCk7CisgICAgY29uc3Rl
eHByIGF1dG8gcGFpbnRSZWN0c0NvbG9yID0gQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYSgxMjgp
OwogICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHBhaW50UmVjdHNDb2xvcik7CiAKICAgICBmb3Ig
KGNvbnN0IFRpbWVSZWN0UGFpciYgcGFpciA6IHBhaW50UmVjdHMpCkBAIC02NjIsNyArNjYyLDcg
QEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3Qm91bmRzKEdyYXBoaQogCiAgICAgY29udGV4
dC5zZXRTdHJva2VUaGlja25lc3MoMSk7CiAKLSAgICBjb25zdGV4cHIgYXV0byBib3VuZHNDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDAsIDE1Myk7CisgICAgY29uc3RleHByIGF1dG8g
Ym91bmRzQ29sb3IgPSBDb2xvcjo6cmVkLmNvbG9yV2l0aEFscGhhKDE1Myk7CiAgICAgY29udGV4
dC5zZXRTdHJva2VDb2xvcihib3VuZHNDb2xvcik7CiAKICAgICBjb250ZXh0LnN0cm9rZVBhdGgo
cGF0aCk7CkBAIC02NzAsOSArNjcwLDkgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3Qm91
bmRzKEdyYXBoaQogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnNwZWN0b3JPdmVybGF5OjpSdWxlckV4Y2x1c2lvbiYg
cnVsZXJFeGNsdXNpb24pCiB7Ci0gICAgY29uc3RleHByIGF1dG8gcnVsZXJCYWNrZ3JvdW5kQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSwgMTUzKTsKLSAgICBjb25zdGV4cHIg
YXV0byBsaWdodFJ1bGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgNTEpOwotICAg
IGNvbnN0ZXhwciBhdXRvIGRhcmtSdWxlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAs
IDEyOCk7CisgICAgY29uc3RleHByIGF1dG8gcnVsZXJCYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6
d2hpdGUuY29sb3JXaXRoQWxwaGEoMTUzKTsKKyAgICBjb25zdGV4cHIgYXV0byBsaWdodFJ1bGVy
Q29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoNTEpOworICAgIGNvbnN0ZXhwciBh
dXRvIGRhcmtSdWxlckNvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhKDEyOCk7CiAK
ICAgICBJbnRQb2ludCBzY3JvbGxPZmZzZXQ7CiAKQEAgLTEwNDYsMTQgKzEwNDYsMTQgQEAgUGF0
aCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3RWxlbWVudFRpdGxlKAogCiAgICAgY29udGV4dC50cmFu
c2xhdGUoZWxlbWVudERhdGFCb3JkZXJTaXplIC8gMi4wZiwgZWxlbWVudERhdGFCb3JkZXJTaXpl
IC8gMi4wZik7CiAKLSAgICBjb25zdGV4cHIgYXV0byBlbGVtZW50VGl0bGVCYWNrZ3JvdW5kQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDE5NCk7CisgICAgY29uc3RleHByIGF1dG8g
ZWxlbWVudFRpdGxlQmFja2dyb3VuZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNTUsIDI1NSwg
MTk0IH07CiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZWxlbWVudFRpdGxlQmFja2dyb3VuZENv
bG9yKTsKIAogICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAKICAgICBjb250ZXh0LnNldFN0
cm9rZVRoaWNrbmVzcyhlbGVtZW50RGF0YUJvcmRlclNpemUpOwogCi0gICAgY29uc3RleHByIGF1
dG8gZWxlbWVudFRpdGxlQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTI4LCAxMjgsIDEy
OCk7CisgICAgY29uc3RleHByIGF1dG8gZWxlbWVudFRpdGxlQm9yZGVyQ29sb3IgPSBDb2xvcjo6
ZGFya0dyYXk7CiAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihlbGVtZW50VGl0bGVCb3JkZXJD
b2xvcik7CiAKICAgICBjb250ZXh0LnN0cm9rZVBhdGgocGF0aCk7CkBAIC0xMDY4LDEwICsxMDY4
LDEwIEBAIFBhdGggSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0VsZW1lbnRUaXRsZSgKICAgICAgICAg
dGV4dFBvc2l0aW9uWCArPSBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFRleHRSdW4odGV4dCksIHsg
dGV4dFBvc2l0aW9uWCwgdGV4dFBvc2l0aW9uWSB9KTsKICAgICB9OwogCi0gICAgZHJhd1RleHQo
ZWxlbWVudFRhZ05hbWUsIG1ha2VTaW1wbGVDb2xvcigxMzYsIDE4LCAxMjgpKTsgLy8gS2VlcCB0
aGlzIGluIHN5bmMgd2l0aCBYTUxWaWV3ZXIuY3NzICgudGFnKQotICAgIGRyYXdUZXh0KGVsZW1l
bnRJRFZhbHVlLCBtYWtlU2ltcGxlQ29sb3IoMjYsIDI2LCAxNjYpKTsgLy8gS2VlcCB0aGlzIGlu
IHN5bmMgd2l0aCBYTUxWaWV3ZXIuY3NzICguYXR0cmlidXRlLXZhbHVlKQotICAgIGRyYXdUZXh0
KGVsZW1lbnRDbGFzc1ZhbHVlLCBtYWtlU2ltcGxlQ29sb3IoMTUzLCA2OSwgMCkpOyAvLyBLZWVw
IHRoaXMgaW4gc3luYyB3aXRoIFhNTFZpZXdlci5jc3MgKC5hdHRyaWJ1dGUtbmFtZSkKLSAgICBk
cmF3VGV4dChlbGVtZW50UHNldWRvVHlwZSwgbWFrZVNpbXBsZUNvbG9yKDEzNiwgMTgsIDEyOCkp
OyAvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFhNTFZpZXdlci5jc3MgKC50YWcpCisgICAgZHJh
d1RleHQoZWxlbWVudFRhZ05hbWUsIFNSR0JBPHVpbnQ4X3Q+IHsgMTM2LCAxOCwgMTI4IH0pOyAv
LyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFhNTFZpZXdlci5jc3MgKC50YWcpCisgICAgZHJhd1Rl
eHQoZWxlbWVudElEVmFsdWUsIFNSR0JBPHVpbnQ4X3Q+IHsgMjYsIDI2LCAxNjYgfSk7IC8vIEtl
ZXAgdGhpcyBpbiBzeW5jIHdpdGggWE1MVmlld2VyLmNzcyAoLmF0dHJpYnV0ZS12YWx1ZSkKKyAg
ICBkcmF3VGV4dChlbGVtZW50Q2xhc3NWYWx1ZSwgU1JHQkE8dWludDhfdD4geyAxNTMsIDY5LCAw
IH0pOyAvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFhNTFZpZXdlci5jc3MgKC5hdHRyaWJ1dGUt
bmFtZSkKKyAgICBkcmF3VGV4dChlbGVtZW50UHNldWRvVHlwZSwgU1JHQkE8dWludDhfdD4geyAx
MzYsIDE4LCAxMjggfSk7IC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggWE1MVmlld2VyLmNzcyAo
LnRhZykKICAgICBkcmF3VGV4dCgiICJfcywgQ29sb3I6OmJsYWNrKTsKICAgICBkcmF3VGV4dChl
bGVtZW50V2lkdGgsIENvbG9yOjpibGFjayk7CiAgICAgZHJhd1RleHQoInB4Il9zLCBDb2xvcjo6
ZGFya0dyYXkpOwpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgUGF0aCBJbnNwZWN0b3JPdmVybGF5Ojpk
cmF3RWxlbWVudFRpdGxlKAogICAgICAgICB0ZXh0UG9zaXRpb25YID0gYm94WCArIGVsZW1lbnRE
YXRhU3BhY2luZzsKICAgICAgICAgdGV4dFBvc2l0aW9uWSArPSBmb250SGVpZ2h0OwogCi0gICAg
ICAgIGRyYXdUZXh0KCJSb2xlIl9zLCBtYWtlU2ltcGxlQ29sb3IoMTcwLCAxMywgMTQ1KSk7Cisg
ICAgICAgIGRyYXdUZXh0KCJSb2xlIl9zLCBTUkdCQTx1aW50OF90PiB7IDE3MCwgMTMsIDE0NSB9
KTsKICAgICAgICAgZHJhd1RleHQoIiAiX3MsIENvbG9yOjpibGFjayk7CiAgICAgICAgIGRyYXdU
ZXh0KGVsZW1lbnRSb2xlLCBDb2xvcjo6YmxhY2spOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCShy
ZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDE1ICsxNDEsOCBAQCBzdGF0
aWMgQ29sb3IgcGFyc2VDb2xvcihjb25zdCBKU09OOjpPYmplCiAKICAgICBkb3VibGUgYSA9IDEu
MDsKICAgICBpZiAoIWNvbG9yT2JqZWN0LT5nZXREb3VibGUoImEiLCBhKSkKLSAgICAgICAgcmV0
dXJuIG1ha2VTaW1wbGVDb2xvcihyLCBnLCBiKTsKLQotICAgIC8vIENsYW1wIGFscGhhIHRvIHRo
ZSBbMC4uMV0gcmFuZ2UuCi0gICAgaWYgKGEgPCAwKQotICAgICAgICBhID0gMDsKLSAgICBlbHNl
IGlmIChhID4gMSkKLSAgICAgICAgYSA9IDE7Ci0KLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9y
KHIsIGcsIGIsIGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUoYSkpOworICAgICAgICByZXR1cm4gY2xh
bXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihyLCBnLCBiKTsKKyAgICByZXR1cm4gY2xhbXBUb0Nv
bXBvbmVudEJ5dGVzPFNSR0JBPihyLCBnLCBiLCBjb252ZXJ0VG9Db21wb25lbnRCeXRlKGEpKTsK
IH0KIAogc3RhdGljIENvbG9yIHBhcnNlQ29uZmlnQ29sb3IoY29uc3QgU3RyaW5nJiBmaWVsZE5h
bWUsIGNvbnN0IEpTT046Ok9iamVjdCogY29uZmlnT2JqZWN0KQpJbmRleDogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjEsNyArMzYxLDcgQEAgU2hhZG93RGF0YSogTGluZUxheW91dDo6ZGVi
dWdUZXh0U2hhZG93KAogICAgIGlmICghbV9mbG93LnNldHRpbmdzKCkuc2ltcGxlTGluZUxheW91
dERlYnVnQm9yZGVyc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVidWdUZXh0U2hhZG93KEludFBvaW50
KDAsIDApLCAxMCwgMjAsIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIG1ha2VTaW1wbGVDb2xv
cigwLCAwLCAxNTAsIDE1MCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRh
PiBkZWJ1Z1RleHRTaGFkb3coSW50UG9pbnQoMCwgMCksIDEwLCAyMCwgU2hhZG93U3R5bGU6Ok5v
cm1hbCwgdHJ1ZSwgU1JHQkE8dWludDhfdD4geyAwLCAwLCAxNTAsIDE1MCB9KTsKICAgICByZXR1
cm4gJmRlYnVnVGV4dFNoYWRvdy5nZXQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAJKHJldmlzaW9u
IDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5LDcgQEAgU3RyaW5nIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYQogewogICAgIC8vIFRoaXMgZGVmYXVsdCB2YWx1
ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgc3BlY2lmaWVkIGluIG1lZGlhQ29udHJvbHMu
Y3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcGFzdC1ub2RlcwogICAgIC8vIGFuZCB3
ZWJraXQtbWVkaWEtdGV4dC10cmFjay1mdXR1cmUtbm9kZXMuCi0gICAgY29uc3RleHByIGF1dG8g
ZGVmYXVsdEJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCAwLjggKiAy
NTUpOworICAgIGNvbnN0ZXhwciBhdXRvIGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6
YmxhY2suY29sb3JXaXRoQWxwaGEoMjA0KTsKIAogICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhh
dmlvciBiZWhhdmlvcjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQ
YWdlT3ZlcmxheXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheShQYWdlJiBw
YWdlKQotICAgICAgICA6IFJlZ2lvbk92ZXJsYXkocGFnZSwgbWFrZVNpbXBsZUNvbG9yKDEyOCwg
MCwgMCwgMTAyKSkKKyAgICAgICAgOiBSZWdpb25PdmVybGF5KHBhZ2UsIFNSR0JBPHVpbnQ4X3Q+
IHsgMTI4LCAwLCAwLCAxMDIgfSkKICAgICB7CiAgICAgfQogCkBAIC0xMTgsNyArMTE4LDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9u
T3ZlcmxheShQYWdlJiBwYWdlKQotICAgICAgICA6IFJlZ2lvbk92ZXJsYXkocGFnZSwgbWFrZVNp
bXBsZUNvbG9yKDI1NSwgMTI4LCAwLCAxMDIpKQorICAgICAgICA6IFJlZ2lvbk92ZXJsYXkocGFn
ZSwgQ29sb3I6Om9yYW5nZS5jb2xvcldpdGhBbHBoYSgxMDIpKQogICAgIHsKICAgICB9CiAKQEAg
LTE0NywyNiArMTQ3LDE2IEBAIGJvb2wgTm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5Ojp1
cGQKIHN0YXRpYyBjb25zdCBIYXNoTWFwPFN0cmluZywgU1JHQkE8dWludDhfdD4+JiB0b3VjaEV2
ZW50UmVnaW9uQ29sb3JzKCkKIHsKICAgICBzdGF0aWMgY29uc3QgYXV0byByZWdpb25Db2xvcnMg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBzdHJ1Y3QgTWFwRW50cnkgewotICAg
ICAgICAgICAgQVNDSUlMaXRlcmFsIG5hbWU7Ci0gICAgICAgICAgICB1aW50OF90IHI7Ci0gICAg
ICAgICAgICB1aW50OF90IGc7Ci0gICAgICAgICAgICB1aW50OF90IGI7Ci0gICAgICAgIH07Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBNYXBFbnRyeSBlbnRyaWVzW10gPSB7Ci0gICAgICAgICAgICB7
ICJ0b3VjaHN0YXJ0Il9zLCAxOTEsIDE5MSwgNjMgfSwKLSAgICAgICAgICAgIHsgInRvdWNobW92
ZSJfcywgODAsIDIwNCwgMjQ1IH0sCi0gICAgICAgICAgICB7ICJ0b3VjaGVuZCJfcywgMTkxLCA2
MywgMTI3IH0sCi0gICAgICAgICAgICB7ICJ0b3VjaGZvcmNlY2hhbmdlIl9zLCA2MywgNjMsIDE5
MSB9LAotICAgICAgICAgICAgeyAid2hlZWwiX3MsIDI1NSwgMTI4LCAwIH0sCi0gICAgICAgICAg
ICB7ICJtb3VzZWRvd24iX3MsIDgwLCAyNDUsIDgwIH0sCi0gICAgICAgICAgICB7ICJtb3VzZW1v
dmUiX3MsIDI0NSwgMjQ1LCA4MCB9LAotICAgICAgICAgICAgeyAibW91c2V1cCJfcywgODAsIDI0
NSwgMTc2IH0sCi0gICAgICAgIH07Ci0gICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTUkdCQTx1aW50
OF90Pj4gbWFwOwotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW50cmllcykKLSAgICAgICAg
ICAgIG1hcC5hZGQoZW50cnkubmFtZSwgbWFrZVNpbXBsZUNvbG9yKGVudHJ5LnIsIGVudHJ5Lmcs
IGVudHJ5LmIsIDUwKSk7Ci0gICAgICAgIHJldHVybiBtYXA7CisgICAgICAgIHJldHVybiBIYXNo
TWFwPFN0cmluZywgU1JHQkE8dWludDhfdD4+IHsgeworICAgICAgICAgICAgeyAidG91Y2hzdGFy
dCJfcywgeyAxOTEsIDE5MSwgNjMsIDUwIH0gfSwKKyAgICAgICAgICAgIHsgInRvdWNobW92ZSJf
cywgeyA4MCwgMjA0LCAyNDUsIDUwIH0gfSwKKyAgICAgICAgICAgIHsgInRvdWNoZW5kIl9zLCB7
IDE5MSwgNjMsIDEyNywgNTAgfSB9LAorICAgICAgICAgICAgeyAidG91Y2hmb3JjZWNoYW5nZSJf
cywgeyA2MywgNjMsIDE5MSwgNTAgfSB9LAorICAgICAgICAgICAgeyAid2hlZWwiX3MsIHsgMjU1
LCAxMjgsIDAsIDUwIH0gfSwKKyAgICAgICAgICAgIHsgIm1vdXNlZG93biJfcywgeyA4MCwgMjQ1
LCA4MCwgNTAgfSB9LAorICAgICAgICAgICAgeyAibW91c2Vtb3ZlIl9zLCB7IDI0NSwgMjQ1LCA4
MCwgNTAgfSB9LAorICAgICAgICAgICAgeyAibW91c2V1cCJfcywgeyA4MCwgMjQ1LCAxNzYsIDUw
IH0gfQorICAgICAgICB9IH07CiAgICAgfSgpKTsKICAgICByZXR1cm4gcmVnaW9uQ29sb3JzOwog
fQpAQCAtMjQ2LDcgKzIzNiw3IEBAIHZvaWQgTm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5
OjpkcmEKICNlbmRpZgogCiAgICAgZm9yIChjb25zdCBhdXRvJiBzeW5jaHJvbm91c0V2ZW50UmVn
aW9uIDogbV9ldmVudFRyYWNraW5nUmVnaW9ucy5ldmVudFNwZWNpZmljU3luY2hyb25vdXNEaXNw
YXRjaFJlZ2lvbnMpIHsKLSAgICAgICAgYXV0byByZWdpb25Db2xvciA9IG1ha2VTaW1wbGVDb2xv
cigwLCAwLCAwLCA2NCk7CisgICAgICAgIGF1dG8gcmVnaW9uQ29sb3IgPSBDb2xvcjo6YmxhY2su
Y29sb3JXaXRoQWxwaGEoNjQpLmNvbG9yKCk7CiAgICAgICAgIGF1dG8gaXQgPSB0b3VjaEV2ZW50
UmVnaW9uQ29sb3JzKCkuZmluZChzeW5jaHJvbm91c0V2ZW50UmVnaW9uLmtleSk7CiAgICAgICAg
IGlmIChpdCAhPSB0b3VjaEV2ZW50UmVnaW9uQ29sb3JzKCkuZW5kKCkpCiAgICAgICAgICAgICBy
ZWdpb25Db2xvciA9IGl0LT52YWx1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJ
KHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDI0NCw3ICs0MjQ0LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50
Q29udGVudHMoR3JhcGhpY3NDbwogICAgIGlmIChmaWxsV2l0aFdhcm5pbmdDb2xvcikgewogICAg
ICAgICBJbnRSZWN0IGRlYnVnUmVjdCA9IGZyYW1lUmVjdCgpOwogICAgICAgICBkZWJ1Z1JlY3Qu
aW50ZXJzZWN0KGRpcnR5UmVjdCk7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJlY3QoZGVidWdSZWN0
LCBtYWtlU2ltcGxlQ29sb3IoMjU1LCA2NCwgMjU1KSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJl
Y3QoZGVidWdSZWN0LCBTUkdCQTx1aW50OF90PiB7IDI1NSwgNjQsIDI1NSB9KTsKICAgICB9CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAkocmV2aXNpb24g
MjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBQcmludENvbnRleHQ6OnNwb29sQWxsUGFn
ZXNXaXRoQm91bgogICAgIGludCB0b3RhbEhlaWdodCA9IHBhZ2VSZWN0cy5zaXplKCkgKiAocGFn
ZVNpemVJblBpeGVscy5oZWlnaHQoKSArIDEpIC0gMTsKIAogICAgIC8vIEZpbGwgdGhlIHdob2xl
IGJhY2tncm91bmQgYnkgd2hpdGUuCi0gICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvciht
YWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRG
aWxsQ29sb3IoQ29sb3I6OndoaXRlKTsKICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3QoRmxv
YXRSZWN0KDAsIDAsIHBhZ2VXaWR0aCwgdG90YWxIZWlnaHQpKTsKIAogICAgIGdyYXBoaWNzQ29u
dGV4dC5zYXZlKCk7CkBAIC00NDUsOCArNDQ1LDggQEAgdm9pZCBQcmludENvbnRleHQ6OnNwb29s
QWxsUGFnZXNXaXRoQm91bgogICAgICAgICAgICAgaW50IGJvdW5kYXJ5TGluZVkgPSBjdXJyZW50
SGVpZ2h0IC0gMTsKICNlbmRpZgogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsK
LSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihtYWtlU2ltcGxlQ29s
b3IoMCwgMCwgMjU1KSk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9y
KG1ha2VTaW1wbGVDb2xvcigwLCAwLCAyNTUpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6Ymx1ZSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0RmlsbENvbG9yKENvbG9yOjpibHVlKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5kcmF3TGluZShJbnRQb2ludCgwLCBib3VuZGFyeUxpbmVZKSwgSW50UG9pbnQocGFnZVdpZHRo
LCBib3VuZGFyeUxpbmVZKSk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQucmVzdG9yZSgp
OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNh
Z2VPdmVybGF5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jb2Nv
YS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTE2MCwxOCArMTYwLDE4IEBAIHN0cnVjdCBIaXN0b3JpY1Jlc291cmNlVXNh
Z2VEYXRhIHsKIEhpc3RvcmljUmVzb3VyY2VVc2FnZURhdGE6Okhpc3RvcmljUmVzb3VyY2VVc2Fn
ZURhdGEoKQogewogICAgIC8vIFZNIHRhZyBjYXRlZ29yaWVzLgotICAgIGNhdGVnb3JpZXNbTWVt
b3J5Q2F0ZWdvcnk6OkpTSklUXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNh
dGVnb3J5OjpKU0pJVCwgbWFrZVNpbXBsZUNvbG9yKDI1NSwgOTYsIDI1NSksICJKUyBKSVQiKTsK
LSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZV0gPSBIaXN0b3JpY01lbW9y
eUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6R2lnYWNhZ2UsIG1ha2VTaW1wbGVDb2xvcigx
MDEsIDc5LCAyNDApLCAiR2lnYWNhZ2UiKTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5
OjpJbWFnZXNdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6Oklt
YWdlcywgbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAwKSwgIkltYWdlcyIpOwotICAgIGNhdGVn
b3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkxheWVyc10gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5m
byhNZW1vcnlDYXRlZ29yeTo6TGF5ZXJzLCBtYWtlU2ltcGxlQ29sb3IoMCwgMjU1LCAyNTUpLCAi
TGF5ZXJzIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6TGliY01hbGxvY10gPSBI
aXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6TGliY01hbGxvYywgbWFr
ZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCksICJsaWJjIG1hbGxvYyIpOwotICAgIGNhdGVnb3JpZXNb
TWVtb3J5Q2F0ZWdvcnk6OmJtYWxsb2NdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVt
b3J5Q2F0ZWdvcnk6OmJtYWxsb2MsIG1ha2VTaW1wbGVDb2xvcigyNTUsIDk2LCA5NiksICJibWFs
bG9jIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6SXNvSGVhcF0gPSBIaXN0b3Jp
Y01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SXNvSGVhcCwgbWFrZVNpbXBsZUNv
bG9yKDEyOCwgMTU5LCA2NCksICJJc29IZWFwIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRl
Z29yeTo6T3RoZXJdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6
Ok90aGVyLCBtYWtlU2ltcGxlQ29sb3IoMTkyLCAyNTUsIDApLCAiT3RoZXIiKTsKKyAgICBjYXRl
Z29yaWVzW01lbW9yeUNhdGVnb3J5OjpKU0pJVF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5m
byhNZW1vcnlDYXRlZ29yeTo6SlNKSVQsIFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCA5NiwgMjU1IH0s
ICJKUyBKSVQiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZV0gPSBI
aXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6R2lnYWNhZ2UsIFNSR0JB
PHVpbnQ4X3Q+IHsgMTAxLCA3OSwgMjQwIH0sICJHaWdhY2FnZSIpOworICAgIGNhdGVnb3JpZXNb
TWVtb3J5Q2F0ZWdvcnk6OkltYWdlc10gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1v
cnlDYXRlZ29yeTo6SW1hZ2VzLCBDb2xvcjo6eWVsbG93LCAiSW1hZ2VzIik7CisgICAgY2F0ZWdv
cmllc1tNZW1vcnlDYXRlZ29yeTo6TGF5ZXJzXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZv
KE1lbW9yeUNhdGVnb3J5OjpMYXllcnMsIENvbG9yOjpjeWFuLCAiTGF5ZXJzIik7CisgICAgY2F0
ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6TGliY01hbGxvY10gPSBIaXN0b3JpY01lbW9yeUNhdGVn
b3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6TGliY01hbGxvYywgQ29sb3I6OmdyZWVuLCAibGliYyBt
YWxsb2MiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpibWFsbG9jXSA9IEhpc3Rv
cmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpibWFsbG9jLCBTUkdCQTx1aW50
OF90PiB7IDI1NSwgOTYsIDk2IH0sICJibWFsbG9jIik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlD
YXRlZ29yeTo6SXNvSGVhcF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRl
Z29yeTo6SXNvSGVhcCwgU1JHQkE8dWludDhfdD4geyAxMjgsIDE1OSwgNjQgfSwgIklzb0hlYXAi
KTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpPdGhlcl0gPSBIaXN0b3JpY01lbW9y
eUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6T3RoZXIsIFNSR0JBPHVpbnQ4X3Q+IHsgMTky
LCAyNTUsIDAgfSwgIk90aGVyIik7CiAKICAgICAvLyBTdWIgY2F0ZWdvcmllcyAoZS5nIGJyZWFr
ZG93biBvZiBibWFsbG9jIHRhZy4pCi0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6R0NI
ZWFwXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ0hlYXAs
IG1ha2VTaW1wbGVDb2xvcigxNjAsIDE2MCwgMjU1KSwgIkdDIGhlYXAiLCB0cnVlKTsKLSAgICBj
YXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHQ093bmVkXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdv
cnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ093bmVkLCBtYWtlU2ltcGxlQ29sb3IoMjU1LCAxOTIs
IDk2KSwgIkdDIG93bmVkIiwgdHJ1ZSk7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6
R0NIZWFwXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ0hl
YXAsIFNSR0JBPHVpbnQ4X3Q+IHsgMTYwLCAxNjAsIDI1NSB9LCAiR0MgaGVhcCIsIHRydWUpOwor
ICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkdDT3duZWRdID0gSGlzdG9yaWNNZW1vcnlD
YXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkdDT3duZWQsIFNSR0JBPHVpbnQ4X3Q+IHsgMjU1
LCAxOTIsIDk2IH0sICJHQyBvd25lZCIsIHRydWUpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIC8v
IEVuc3VyZSB0aGlzIGFsaWducyB3aXRoIFJlc291cmNlVXNhZ2VEYXRhJ3MgY2F0ZWdvcnkgb3Jk
ZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5
TGludXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3Vy
Y2VVc2FnZU92ZXJsYXlMaW51eC5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg4LDggKzg4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50Q29udGVudHMoY29u
c3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBjbGlwLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAg
ICAgICAgY29udGV4dC5maWxsUmVjdChjbGlwLCBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMjA0
KSk7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1ha2VTaW1wbGVDb2xvcigyMzAsIDIz
MCwgMjMwKSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoY2xpcCwgQ29sb3I6OmJsYWNrLmNv
bG9yV2l0aEFscGhhKDIwNCkpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihTUkdCQTx1
aW50OF90PiB7IDIzMCwgMjMwLCAyMzAgfSk7CiAKICAgICAgICAgRmxvYXRQb2ludCBwb3NpdGlv
biA9IHsgMTAsIDIwIH07CiAgICAgICAgIFN0cmluZyBzdHJpbmcgPSAgIkNQVTogIiArIGNwdVVz
YWdlU3RyaW5nKGdEYXRhLmNwdSk7CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBSZXNvdXJjZVVz
YWdlT3ZlcmxheTo6cGxhdGZvcm1Jbml0aQogICAgIG1fcGFpbnRMYXllciA9IEdyYXBoaWNzTGF5
ZXI6OmNyZWF0ZShvdmVybGF5KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5ncmFwaGljc0xh
eWVyRmFjdG9yeSgpLCAqbV9vdmVybGF5UGFpbnRlcik7CiAgICAgbV9wYWludExheWVyLT5zZXRB
bmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CiAgICAgbV9wYWludExheWVyLT5zZXRTaXplKHsg
bm9ybWFsV2lkdGgsIG5vcm1hbEhlaWdodCB9KTsKLSAgICBtX3BhaW50TGF5ZXItPnNldEJhY2tn
cm91bmRDb2xvcihtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMjA0KSk7CisgICAgbV9wYWludExh
eWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhKDIwNCkp
OwogICAgIG1fcGFpbnRMYXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOwogICAgIG92ZXJsYXko
KS5sYXllcigpLmFkZENoaWxkKCptX3BhaW50TGF5ZXIpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEu
Y3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hZHdhaXRh
L1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEzICs0Mywx
MyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgb3ZlcmxheVRodW1iU2l6ZSA9CiBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWluaW11bVRodW1iU2l6ZSA9IDQwOwogc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHRodW1iU2l6ZSA9IDY7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNjcm9sbGJhck9wYWNpdHkgPSAw
Ljg7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gc2Nyb2xsYmFyQmFja2dyb3VuZENvbG9yID0gbWFr
ZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcm9s
bGJhckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyMCwgMjIzLCAyMjcpOwotc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIG92ZXJsYXlUaHVtYkJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDI1NSwgMjU1LCAyNTUsIDEwMCk7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gb3ZlcmxheVRodW1i
Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoNDYsIDUyLCA1NCwgMTAwKTsKLXN0YXRpYyBjb25zdGV4
cHIgYXV0byB0aHVtYkhvdmVyZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig4NiwgOTEsIDkyKTsK
LXN0YXRpYyBjb25zdGV4cHIgYXV0byB0aHVtYlByZXNzZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigyNywgMTA2LCAyMDMpOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRodW1iQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMTI2LCAxMjksIDEzMCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2Nyb2xs
YmFyQmFja2dyb3VuZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNTIsIDI1MiwgMjUyIH07Citz
dGF0aWMgY29uc3RleHByIGF1dG8gc2Nyb2xsYmFyQm9yZGVyQ29sb3IgPSBTUkdCQTx1aW50OF90
PiB7IDIyMCwgMjIzLCAyMjcgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBvdmVybGF5VGh1bWJC
b3JkZXJDb2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYSgxMDApOworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG92ZXJsYXlUaHVtYkNvbG9yID0gU1JHQkE8dWludDhfdD4geyA0NiwgNTIs
IDU0LCAxMDAgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB0aHVtYkhvdmVyZWRDb2xvciA9IFNS
R0JBPHVpbnQ4X3Q+IHsgODYsIDkxLCA5MiB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRodW1i
UHJlc3NlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNywgMTA2LCAyMDMgfTsKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byB0aHVtYkNvbG9yID0gU1JHQkE8dWludDhfdD4geyAxMjYsIDEyOSwgMTMw
IH07CiAKIGJvb2wgU2Nyb2xsYmFyVGhlbWVBZHdhaXRhOjp1c2VzT3ZlcmxheVNjcm9sbGJhcnMo
KSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3YWl0YS9UaGVtZUFk
d2FpdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Fkd2FpdGEv
VGhlbWVBZHdhaXRhLmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYWR3YWl0YS9UaGVtZUFkd2FpdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwyOCAr
MzYsMjggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZv
Y3VzTGluZVdpZHRoID0gMTsKLXN0YXRpYyBjb25zdCBDb2xvciBmb2N1c1JpbmdDb2xvciA9IG1h
a2VTaW1wbGVDb2xvcig0NiwgNTIsIDU0LCAxNTApOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZv
Y3VzUmluZ0NvbG9yID0gU1JHQkE8dWludDhfdD4geyA0NiwgNTIsIDU0LCAxNTAgfTsKIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBhcnJvd1NpemUgPSAxNjsKLXN0YXRpYyBjb25zdCBDb2xvciBhcnJv
d0NvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDQ2LCA1MiwgNTQpOworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGFycm93Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDQ2LCA1MiwgNTQgfTsKIHN0YXRpYyBj
b25zdCBpbnQgYnV0dG9uRm9jdXNPZmZzZXQgPSAtMzsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBi
dXR0b25QYWRkaW5nID0gNTsKIHN0YXRpYyBjb25zdCBpbnQgYnV0dG9uQm9yZGVyU2l6ZSA9IDE7
IC8vIEtlZXAgaW4gc3luYyB3aXRoIG1lbnVMaXN0QnV0dG9uQm9yZGVyU2l6ZSBpbiBSZW5kZXJU
aGVtZUFkd2FpdGEuCi1zdGF0aWMgY29uc3QgQ29sb3IgYnV0dG9uQm9yZGVyQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgYnV0dG9uQmFj
a2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0NCwgMjQyLCAyNDEpOwotc3RhdGljIGNv
bnN0IENvbG9yIGJ1dHRvbkJhY2tncm91bmRQcmVzc2VkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
MjE0LCAyMDksIDIwNSk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgYnV0dG9uQmFja2dyb3VuZEhvdmVy
ZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDgsIDI0OCwgMjQ3KTsKLXN0YXRpYyBjb25zdCBD
b2xvciBidXR0b25CYWNrZ3JvdW5kRGlzYWJsZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDYs
IDI0NiwgMjQ0KTsKLXN0YXRpYyBjb25zdCBDb2xvciB0b2dnbGVCYWNrZ3JvdW5kQ29sb3IgPSBt
YWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgdG9nZ2xl
QmFja2dyb3VuZEhvdmVyZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDIsIDI0MiwgMjQyKTsK
LXN0YXRpYyBjb25zdCBDb2xvciB0b2dnbGVCYWNrZ3JvdW5kRGlzYWJsZWRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigyNTIsIDI1MiwgMjUyKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBidXR0b25C
b3JkZXJDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjA1LCAxOTksIDE5NCB9Oworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGJ1dHRvbkJhY2tncm91bmRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjQ0
LCAyNDIsIDI0MSB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJ1dHRvbkJhY2tncm91bmRQcmVz
c2VkQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDIxNCwgMjA5LCAyMDUgfTsKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBidXR0b25CYWNrZ3JvdW5kSG92ZXJlZENvbG9yID0gU1JHQkE8dWludDhfdD4g
eyAyNDgsIDI0OCwgMjQ3IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gYnV0dG9uQmFja2dyb3Vu
ZERpc2FibGVkQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDI0NiwgMjQ2LCAyNDQgfTsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byB0b2dnbGVCYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6d2hpdGU7Citz
dGF0aWMgY29uc3RleHByIGF1dG8gdG9nZ2xlQmFja2dyb3VuZEhvdmVyZWRDb2xvciA9IFNSR0JB
PHVpbnQ4X3Q+IHsgMjQyLCAyNDIsIDI0MiB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRvZ2ds
ZUJhY2tncm91bmREaXNhYmxlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNTIsIDI1MiwgMjUy
IH07CiBzdGF0aWMgY29uc3QgZG91YmxlIHRvZ2dsZVNpemUgPSAxNC47CiBzdGF0aWMgY29uc3Qg
aW50IHRvZ2dsZUZvY3VzT2Zmc2V0ID0gMjsKLXN0YXRpYyBjb25zdCBDb2xvciB0b2dnbGVDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcig0NiwgNTIsIDU0KTsKLXN0YXRpYyBjb25zdCBDb2xvciB0b2dn
bGVEaXNhYmxlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDE2MCwgMTYwLCAxNjApOwotc3RhdGlj
IGNvbnN0IENvbG9yIHNwaW5CdXR0b25Cb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMjAs
IDIyMywgMjI3KTsKLXN0YXRpYyBjb25zdCBDb2xvciBzcGluQnV0dG9uQmFja2dyb3VuZENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOwotc3RhdGljIGNvbnN0IENvbG9yIHNw
aW5CdXR0b25CYWNrZ3JvdW5kSG92ZXJlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDQ2LCA1Miwg
NTQsIDUwKTsKLXN0YXRpYyBjb25zdCBDb2xvciBzcGluQnV0dG9uQmFja2dyb3VuZFByZXNzZWRD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcig0NiwgNTIsIDU0LCA3MCk7CitzdGF0aWMgY29uc3RleHBy
IGF1dG8gdG9nZ2xlQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDQ2LCA1MiwgNTQgfTsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byB0b2dnbGVEaXNhYmxlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAx
NjAsIDE2MCwgMTYwIH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gc3BpbkJ1dHRvbkJvcmRlckNv
bG9yID0gU1JHQkE8dWludDhfdD4geyAyMjAsIDIyMywgMjI3IH07CitzdGF0aWMgY29uc3RleHBy
IGF1dG8gc3BpbkJ1dHRvbkJhY2tncm91bmRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjUyLCAy
NTIsIDI1MiB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNwaW5CdXR0b25CYWNrZ3JvdW5kSG92
ZXJlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyA0NiwgNTIsIDU0LCA1MCB9Oworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIHNwaW5CdXR0b25CYWNrZ3JvdW5kUHJlc3NlZENvbG9yID0gU1JHQkE8dWlu
dDhfdD4geyA0NiwgNTIsIDU0LCA3MCB9OwogCiAjaWYgIVBMQVRGT1JNKEdUSykgfHwgVVNFKEdU
SzQpCiBUaGVtZSYgVGhlbWU6OnNpbmdsZXRvbigpCkBAIC02OSwxNyArNjksMTcgQEAgVGhlbWUm
IFRoZW1lOjpzaW5nbGV0b24oKQogCiBDb2xvciBUaGVtZUFkd2FpdGE6OmFjdGl2ZVNlbGVjdGlv
bkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigy
NTUsIDI1NSwgMjU1KTsKKyAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogfQogCiBDb2xvciBUaGVt
ZUFkd2FpdGE6OmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1ha2VTaW1wbGVDb2xvcig1MiwgMTMyLCAyMjgpOworICAgIHJldHVybiBTUkdCQTx1
aW50OF90PiB7IDUyLCAxMzIsIDIyOCB9OwogfQogCiBDb2xvciBUaGVtZUFkd2FpdGE6OmluYWN0
aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFrZVNp
bXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOworICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDI1
MiwgMjUyLCAyNTIgfTsKIH0KIAogQ29sb3IgVGhlbWVBZHdhaXRhOjppbmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3RleHByIGF1dG8gbGlnaHRl
bmVkQmxhY2sgPSBtYWtlU2ltcGxlQ29sb3IoODQsIDg0LCA4NCk7Ci1zdGF0aWMgY29uc3RleHBy
IGF1dG8gZGFya2VuZWRXaGl0ZSA9IG1ha2VTaW1wbGVDb2xvcigxNzEsIDE3MSwgMTcxKTsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBsaWdodGVuZWRCbGFjayA9IENvbG9yQnVpbGRlcjxTUkdCQTx1
aW50OF90Pj4geyA4NCwgODQsIDg0IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gZGFya2VuZWRX
aGl0ZSA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAxNzEsIDE3MSwgMTcxIH07CiAK
IENvbG9yOjpDb2xvcihjb25zdCBDb2xvciYgb3RoZXIpCiAgICAgOiBtX2NvbG9yRGF0YShvdGhl
ci5tX2NvbG9yRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuaAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOSArMjUsMTAgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJDb2xvckJ1aWxkZXIuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgi
CisjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJFeHRlbmRlZENvbG9yLmgi
Ci0jaW5jbHVkZSAiU2ltcGxlQ29sb3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgpAQCAt
MTQ1LDE0ICsxNDYsMjAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIEQy
RDFfVkVDVE9SXzRGKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0
byBibGFjayA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwKTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8gd2hpdGUgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSk7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIGRhcmtHcmF5ID0gbWFrZVNpbXBsZUNvbG9yKDEyOCwgMTI4LCAxMjgp
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBncmF5ID0gbWFrZVNpbXBsZUNvbG9yKDE2MCwg
MTYwLCAxNjApOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBsaWdodEdyYXkgPSBtYWtlU2lt
cGxlQ29sb3IoMTkyLCAxOTIsIDE5Mik7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRyYW5z
cGFyZW50ID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDApOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBjeWFuID0gbWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMjU1KTsKLSAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8geWVsbG93ID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAwKTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gYmxhY2sgPSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhf
dD4+IHsgMCwgMCwgMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byB3aGl0ZSA9IENvbG9y
QnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAyNTUsIDI1NSwgMjU1IH07CisgICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGRhcmtHcmF5ID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDEy
OCwgMTI4LCAxMjggfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZ3JheSA9IENvbG9yQnVp
bGRlcjxTUkdCQTx1aW50OF90Pj4geyAxNjAsIDE2MCwgMTYwIH07CisgICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGxpZ2h0R3JheSA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAxOTIs
IDE5MiwgMTkyIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRyYW5zcGFyZW50ID0gQ29s
b3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDAsIDAsIDAsIDAgfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gY3lhbiA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAwLCAyNTUs
IDI1NSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byB5ZWxsb3cgPSBDb2xvckJ1aWxkZXI8
U1JHQkE8dWludDhfdD4+IHsgMjU1LCAyNTUsIDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1
dG8gcmVkID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDI1NSwgMCwgMCB9OworICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byBtYWdlbnRhID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4
X3Q+PiB7IDI1NSwgMCwgMjU1IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJsdWUgPSBD
b2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgMCwgMCwgMjU1IH07CisgICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGdyZWVuID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDAsIDI1
NSwgMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBkYXJrR3JlZW4gPSBDb2xvckJ1aWxk
ZXI8U1JHQkE8dWludDhfdD4+IHsgMCwgMTI4LCAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIG9yYW5nZSA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAyNTUsIDEyOCwgMCB9
OwogCiAgICAgYm9vbCBpc0V4dGVuZGVkKCkgY29uc3QgeyByZXR1cm4gIShtX2NvbG9yRGF0YS5p
bmxpbmVDb2xvckFuZEZsYWdzICYgaW52YWxpZElubGluZUNvbG9yKTsgfQogICAgIGJvb2wgaXNJ
bmxpbmUoKSBjb25zdCB7IHJldHVybiAhaXNFeHRlbmRlZCgpOyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJsZW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJsZW5kaW5nLmNwcAkocmV2aXNp
b24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCbGVu
ZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgQ29sb3IgYmxlbmRTb3Vy
Y2VPdmVyKGNvbnN0IENvbG9yJiBiYWNrZAogICAgIGludCBnID0gKGJhY2tkcm9wRyAqIGJhY2tk
cm9wQSAqICgweEZGIC0gc291cmNlQSkgKyAweEZGICogc291cmNlQSAqIHNvdXJjZUcpIC8gZDsK
ICAgICBpbnQgYiA9IChiYWNrZHJvcEIgKiBiYWNrZHJvcEEgKiAoMHhGRiAtIHNvdXJjZUEpICsg
MHhGRiAqIHNvdXJjZUEgKiBzb3VyY2VCKSAvIGQ7CiAKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNv
bG9yKHIsIGcsIGIsIGEpOworICAgIHJldHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+
KHIsIGcsIGIsIGEpOwogfQogCiBDb2xvciBibGVuZFdpdGhXaGl0ZShjb25zdCBDb2xvciYgY29s
b3IpCkBAIC03OCw3ICs3OCw3IEBAIENvbG9yIGJsZW5kV2l0aFdoaXRlKGNvbnN0IENvbG9yJiBj
b2xvcikKICAgICAgICAgaW50IGcgPSBibGVuZENvbXBvbmVudChleGlzdGluZ0csIGFscGhhKTsK
ICAgICAgICAgaW50IGIgPSBibGVuZENvbXBvbmVudChleGlzdGluZ0IsIGFscGhhKTsKIAotICAg
ICAgICByZXN1bHQgPSBtYWtlU2ltcGxlQ29sb3IociwgZywgYiwgYWxwaGEpOworICAgICAgICBy
ZXN1bHQgPSBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHIsIGcsIGIsIGFscGhhKTsKIAog
ICAgICAgICBpZiAociA+PSAwICYmIGcgPj0gMCAmJiBiID49IDApCiAgICAgICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQnVpbGRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQnVp
bGRlci5oCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogLy8gSGVscGVyIHRvIGFsbG93IGNvbnZlbmllbnQgc3ludGF4IGZv
ciB3b3JraW5nIHdpdGggY29sb3IgdHlwZXMuCiAvLyBlLmcuIGF1dG8geWVsbG93V2l0aDUwUGVy
Y2VudEFscGhhID0gQ29sb3I6OnllbGxvdy5jb2xvcldpdGhBbHBoYSgxMjgpOwogdGVtcGxhdGU8
dHlwZW5hbWUgQ29sb3JUeXBlPiBzdHJ1Y3QgQ29sb3JCdWlsZGVyIDogcHVibGljIENvbG9yVHlw
ZSB7Ci0gICAgY29uc3RleHByIENvbG9yQnVpbGRlcihjb25zdCBDb2xvclR5cGUmIGNvbG9yKQot
ICAgICAgICA6IENvbG9yVHlwZSB7IGNvbG9yIH0KLSAgICB7Ci0gICAgfQorICAgIHVzaW5nIENv
bG9yVHlwZTo6Q29sb3JUeXBlOwogCiAgICAgY29uc3RleHByIENvbG9yVHlwZSBjb2xvcigpIGNv
bnN0CiAgICAgewpAQCAtNDIsOSArMzksOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+
IHN0cnVjdCBDb2xvCiAKICAgICBjb25zdGV4cHIgQ29sb3JCdWlsZGVyIGNvbG9yV2l0aEFscGhh
KHVpbnQ4X3Qgb3ZlcnJpZGVBbHBoYSkgY29uc3QKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8ZGVjbHR5cGUoQ29sb3JUeXBlKCkuYWxwaGEpLCB1aW50OF90Piwg
Ik9ubHkgdWludDhfdCBiYXNlZCBjb2xvciB0eXBlcyBhcmUgc3VwcG9ydGVkLiIpOworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIENvbG9yVHlwZTo6Q29tcG9u
ZW50VHlwZSwgdWludDhfdD4sICJPbmx5IHVpbnQ4X3QgYmFzZWQgY29sb3IgdHlwZXMgYXJlIHN1
cHBvcnRlZC4iKTsKIAotICAgICAgICBDb2xvckJ1aWxkZXIgY29weSA9ICp0aGlzOworICAgICAg
ICBhdXRvIGNvcHkgPSAqdGhpczsKICAgICAgICAgY29weS5hbHBoYSA9IG92ZXJyaWRlQWxwaGE7
CiAgICAgICAgIHJldHVybiBjb3B5OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsNiArNDQsMjUgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29tcG9uZW50VHJhaXRzPGZsb2F0
PgogCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTUkdCQSB7CisgICAgY29uc3RleHBy
IFNSR0JBKFQgcmVkLCBUIGdyZWVuLCBUIGJsdWUsIFQgYWxwaGEpCisgICAgICAgIDogcmVkIHsg
cmVkIH0KKyAgICAgICAgLCBncmVlbiB7IGdyZWVuIH0KKyAgICAgICAgLCBibHVlIHsgYmx1ZSB9
CisgICAgICAgICwgYWxwaGEgeyBhbHBoYSB9CisgICAgeworICAgIH0KKworICAgIGNvbnN0ZXhw
ciBTUkdCQShUIHJlZCwgVCBncmVlbiwgVCBibHVlKQorICAgICAgICA6IFNSR0JBIHsgcmVkLCBn
cmVlbiwgYmx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+OjptYXhWYWx1ZSB9CisgICAgeworICAgIH0K
KworICAgIGNvbnN0ZXhwciBTUkdCQSgpCisgICAgICAgIDogU1JHQkEgeyBDb21wb25lbnRUcmFp
dHM8VD46Om1pblZhbHVlLCBDb21wb25lbnRUcmFpdHM8VD46Om1pblZhbHVlLCBDb21wb25lbnRU
cmFpdHM8VD46Om1pblZhbHVlLCBDb21wb25lbnRUcmFpdHM8VD46Om1pblZhbHVlIH0KKyAgICB7
CisgICAgfQorCisKICAgICBUIHJlZDsKICAgICBUIGdyZWVuOwogICAgIFQgYmx1ZTsKQEAgLTUz
LDggKzcyLDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNSR0JBIHsKICAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0I7CiB9OwogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQShULCBULCBULCBUKSAtPiBTUkdCQTxUPjsKLQogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBhc0NvbG9yQ29t
cG9uZW50cyhjb25zdCBTUkdCQTxUPiYgYykKIHsKICAgICByZXR1cm4geyBjLnJlZCwgYy5ncmVl
biwgYy5ibHVlLCBjLmFscGhhIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclV0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDcgKzU5LDkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252ZXJ0Q29tcG9u
ZW50RgogdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gQ29s
b3JUeXBlPHVpbnQ4X3Q+IGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVzKGNvbnN0IENvbG9yVHlwZTxm
bG9hdD4mKTsKIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+
IGNvbnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0cyhjb25z
dCBDb2xvclR5cGU8dWludDhfdD4mKTsKIAordGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5
cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZTx1aW50OF90PiBjbGFtcFRvQ29t
cG9uZW50Qnl0ZXMoaW50IHIsIGludCBnLCBpbnQgYik7CiB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBl
bmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPHVpbnQ4X3Q+IGNs
YW1wVG9Db21wb25lbnRCeXRlcyhpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7Cit0ZW1wbGF0
ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JU
eXBlPGZsb2F0PiBjbGFtcFRvQ29tcG9uZW50RmxvYXRzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0
IGIpOwogdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gY29u
c3RleHByIENvbG9yVHlwZTxmbG9hdD4gY2xhbXBUb0NvbXBvbmVudEZsb2F0cyhmbG9hdCByLCBm
bG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBl
LCB0eXBlbmFtZSBGdW5jdG9yPiBDb2xvclR5cGUgY29sb3JCeU1vZGlmaW5nRWFjaE5vbkFscGhh
Q29tcG9uZW50KGNvbnN0IENvbG9yVHlwZSYsIEZ1bmN0b3ImJik7CkBAIC0xMzQsMTEgKzEzNiwy
MSBAQCB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sCiAgICAgcmV0dXJu
IHsgY29udmVydFRvQ29tcG9uZW50RmxvYXQoY29tcG9uZW50c1swXSksIGNvbnZlcnRUb0NvbXBv
bmVudEZsb2F0KGNvbXBvbmVudHNbMV0pLCBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChjb21wb25l
bnRzWzJdKSwgY29udmVydFRvQ29tcG9uZW50RmxvYXQoY29tcG9uZW50c1szXSkgfTsKIH0KIAor
dGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHBy
IENvbG9yVHlwZTx1aW50OF90PiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXMoaW50IHIsIGludCBnLCBp
bnQgYikKK3sKKyAgICByZXR1cm4geyBjbGFtcFRvQ29tcG9uZW50Qnl0ZShyKSwgY2xhbXBUb0Nv
bXBvbmVudEJ5dGUoZyksIGNsYW1wVG9Db21wb25lbnRCeXRlKGIpIH07Cit9CisKIHRlbXBsYXRl
PHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5
cGU8dWludDhfdD4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzKGludCByLCBpbnQgZywgaW50IGIsIGlu
dCBhKQogewogICAgIHJldHVybiB7IGNsYW1wVG9Db21wb25lbnRCeXRlKHIpLCBjbGFtcFRvQ29t
cG9uZW50Qnl0ZShnKSwgY2xhbXBUb0NvbXBvbmVudEJ5dGUoYiksIGNsYW1wVG9Db21wb25lbnRC
eXRlKGEpIH07CiB9CiAKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xv
clR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNsYW1wVG9Db21wb25lbnRGbG9hdHMo
ZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYikKK3sKKyAgICByZXR1cm4geyBjbGFtcFRvQ29tcG9u
ZW50RmxvYXQociksIGNsYW1wVG9Db21wb25lbnRGbG9hdChnKSwgY2xhbXBUb0NvbXBvbmVudEZs
b2F0KGIpIH07Cit9CisKIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xv
clR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNsYW1wVG9Db21wb25lbnRGbG9hdHMo
ZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsKICAgICByZXR1cm4geyBjbGFt
cFRvQ29tcG9uZW50RmxvYXQociksIGNsYW1wVG9Db21wb25lbnRGbG9hdChnKSwgY2xhbXBUb0Nv
bXBvbmVudEZsb2F0KGIpLCBjbGFtcFRvQ29tcG9uZW50RmxvYXQoYSkgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCShy
ZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk4LDM0ICs1OTgsMzQgQEAgdm9pZCBH
cmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRlckluZm8oQwogICAgIHdpZHRoID0gMjsKIAogICAg
IGlmIChuZWVkc0JhY2tkcm9wKCkpIHsKLSAgICAgICAgY29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
MjU1LCAwLCAyNTUsIDEyOCk7IC8vIGhhcyBiYWNrZHJvcDogbWFnZW50YQorICAgICAgICBjb2xv
ciA9IENvbG9yOjptYWdlbnRhLmNvbG9yV2l0aEFscGhhKDEyOCk7IC8vIGhhcyBiYWNrZHJvcDog
bWFnZW50YQogICAgICAgICB3aWR0aCA9IDEyOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAogICAgIGlmIChkcmF3c0NvbnRlbnQoKSkgewogICAgICAgICBpZiAodGlsZWRCYWNraW5nKCkp
IHsKLSAgICAgICAgICAgIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMTI4LCAwLCAxMjgp
OyAvLyB0aWxlZCBsYXllcjogb3JhbmdlCisgICAgICAgICAgICBjb2xvciA9IENvbG9yOjpvcmFu
Z2UuY29sb3JXaXRoQWxwaGEoMTI4KTsgLy8gdGlsZWQgbGF5ZXI6IG9yYW5nZQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
MCwgMTI4LCAzMiwgMTI4KTsgLy8gbm9ybWFsIGxheWVyOiBncmVlbgorICAgICAgICBjb2xvciA9
IFNSR0JBPHVpbnQ4X3Q+IHsgMCwgMTI4LCAzMiwgMTI4IH07IC8vIG5vcm1hbCBsYXllcjogZ3Jl
ZW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh1c2VzQ29udGVudHNMYXllcigp
KSB7Ci0gICAgICAgIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDY0LCAxMjgsIDE1MCk7IC8v
IG5vbi1wYWludGluZyBsYXllciB3aXRoIGNvbnRlbnRzOiBibHVlCisgICAgICAgIGNvbG9yID0g
U1JHQkE8dWludDhfdD4geyAwLCA2NCwgMTI4LCAxNTAgfTsgLy8gbm9uLXBhaW50aW5nIGxheWVy
IHdpdGggY29udGVudHM6IGJsdWUKICAgICAgICAgd2lkdGggPSA4OwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAogICAgIGlmIChtYXNrc1RvQm91bmRzKCkpIHsKLSAgICAgICAgY29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMTI4LCAyNTUsIDI1NSwgNDgpOyAvLyBtYXNraW5nIGxheWVyOiBw
YWxlIGJsdWUKKyAgICAgICAgY29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDEyOCwgMjU1LCAyNTUs
IDQ4IH07IC8vIG1hc2tpbmcgbGF5ZXI6IHBhbGUgYmx1ZQogICAgICAgICB3aWR0aCA9IDE2Owog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1
LCAyNTUsIDAsIDE5Mik7IC8vIGNvbnRhaW5lcjogeWVsbG93CisgICAgY29sb3IgPSBDb2xvcjo6
eWVsbG93LmNvbG9yV2l0aEFscGhhKDE5Mik7IC8vIGNvbnRhaW5lcjogeWVsbG93CiB9CiAKIHZv
aWQgR3JhcGhpY3NMYXllcjo6dXBkYXRlRGVidWdJbmRpY2F0b3JzKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaAkocmV2aXNpb24gMjY0
NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaAko
bm9uZXhpc3RlbnQpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNvbG9y
QnVpbGRlci5oIgotI2luY2x1ZGUgIkNvbG9yVHlwZXMuaCIKLSNpbmNsdWRlICJDb2xvclV0aWxp
dGllcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0ZXhwciBDb2xvckJ1aWxkZXI8
U1JHQkE8dWludDhfdD4+IG1ha2VTaW1wbGVDb2xvcihpbnQgciwgaW50IGcsIGludCBiKQotewot
ICAgIHJldHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHIsIGcsIGIsIDB4RkYpOwot
fQotCi1jb25zdGV4cHIgQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiBtYWtlU2ltcGxlQ29s
b3IoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCi17Ci0gICAgcmV0dXJuIGNsYW1wVG9Db21w
b25lbnRCeXRlczxTUkdCQT4ociwgZywgYiwgYSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU5MCw4ICsxNTkwLDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNv
bW1pdENoYQogICAgIC8vIFVzZSBoYXZpbmcgYSB0cmFuc2Zvcm0gYXMgYSBrZXkgdG8gbWFraW5n
IHRoZSB0aWxlIHdhc2ggbGF5ZXIuIElmIGV2ZXJ5IGxheWVyIGdldHMgYSB3YXNoLAogICAgIC8v
IHRoZXkgc3RhcnQgdG8gb2JzY3VyZSB1c2VmdWwgaW5mb3JtYXRpb24uCiAgICAgaWYgKCghbV90
cmFuc2Zvcm0uaXNJZGVudGl0eSgpIHx8IHRpbGVkQmFja2luZygpKSAmJiAhbV92aXNpYmxlVGls
ZVdhc2hMYXllcikgewotICAgICAgICBjb25zdGV4cHIgYXV0byB3YXNoRmlsbENvbG9yID0gbWFr
ZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCwgNTApOwotICAgICAgICBjb25zdGV4cHIgYXV0byB3YXNo
Qm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAwLCAxMDApOworICAgICAgICBj
b25zdGV4cHIgYXV0byB3YXNoRmlsbENvbG9yID0gQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYSg1
MCk7CisgICAgICAgIGNvbnN0ZXhwciBhdXRvIHdhc2hCb3JkZXJDb2xvciA9IENvbG9yOjpyZWQu
Y29sb3JXaXRoQWxwaGEoMTAwKTsKICAgICAgICAgCiAgICAgICAgIG1fdmlzaWJsZVRpbGVXYXNo
TGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVM
YXllciwgdGhpcyk7CiAgICAgICAgIFN0cmluZyBuYW1lID0gbWFrZVN0cmluZygiVmlzaWJsZSBU
aWxlIFdhc2ggTGF5ZXIgMHgiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fdmlz
aWJsZVRpbGVXYXNoTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSksIExvd2VyY2FzZSkpOwpAQCAtMjU0
OCwxMyArMjU0OCwxMyBAQCBzdGF0aWMgdm9pZCBzZXRMYXllckRlYnVnQm9yZGVyKFBsYXRmb3Jt
CiBzdGF0aWMgY29uc3QgZmxvYXQgY29udGVudHNMYXllckJvcmRlcldpZHRoID0gNDsKIHN0YXRp
YyBDb2xvciBjb250ZW50c0xheWVyRGVidWdCb3JkZXJDb2xvcihib29sIHNob3dpbmdCb3JkZXJz
KQogewotICAgIHJldHVybiBzaG93aW5nQm9yZGVycyA/IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAx
MjgsIDE4MCkgOiBDb2xvciB7IH07CisgICAgcmV0dXJuIHNob3dpbmdCb3JkZXJzID8gU1JHQkE8
dWludDhfdD4geyAwLCAwLCAxMjgsIDE4MCB9IDogQ29sb3IgeyB9OwogfQogCiBzdGF0aWMgY29u
c3QgZmxvYXQgY2xvbmVMYXllckJvcmRlcldpZHRoID0gMjsKIHN0YXRpYyBDb2xvciBjbG9uZUxh
eWVyRGVidWdCb3JkZXJDb2xvcihib29sIHNob3dpbmdCb3JkZXJzKQogewotICAgIHJldHVybiBz
aG93aW5nQm9yZGVycyA/IG1ha2VTaW1wbGVDb2xvcigyNTUsIDEyMiwgMjUxKSA6IENvbG9yIHsg
fTsKKyAgICByZXR1cm4gc2hvd2luZ0JvcmRlcnMgPyBTUkdCQTx1aW50OF90PiB7IDI1NSwgMTIy
LCAyNTEgfSA6IENvbG9yIHsgfTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZURl
YnVnSW5kaWNhdG9ycygpCkBAIC0zNzkxLDcgKzM3OTEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0RGVidWdCYWNrZ3JvdW5kCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Z2V0RGVidWdCb3Jk
ZXJJbmZvKENvbG9yJiBjb2xvciwgZmxvYXQmIHdpZHRoKSBjb25zdAogewogICAgIGlmIChpc1Bh
Z2VUaWxlZEJhY2tpbmdMYXllcigpKSB7Ci0gICAgICAgIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDAsIDAsIDEyOCwgMTI4KTsgLy8gdGlsZSBjYWNoZSBsYXllcjogZGFyayBibHVlCisgICAgICAg
IGNvbG9yID0gU1JHQkE8dWludDhfdD4geyAwLCAwLCAxMjgsIDEyOCB9OyAvLyB0aWxlIGNhY2hl
IGxheWVyOiBkYXJrIGJsdWUKICNpZiBPUyhXSU5ET1dTKQogICAgICAgICB3aWR0aCA9IDEuMDsK
ICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9y
bUNBTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg0LDExICs4NCwxMSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFp
bnRJbmRpY2F0CiAgICAgY29uc3QgZmxvYXQgdmVydGljYWxNYXJnaW4gPSAyLjU7CiAgICAgY29u
c3QgZmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDU7CiAgICAgY29uc3QgdW5zaWduZWQgZm9udFNp
emUgPSAyMjsKLSAgICBjb25zdGV4cHIgYXV0byBiYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoMTI4LCA2NCwgMjU1KTsKLSAgICBjb25zdGV4cHIgYXV0byBhY2NlbGVyYXRlZENvbnRl
eHRMYWJlbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCk7Ci0gICAgY29uc3RleHBy
IGF1dG8gdW5hY2NlbGVyYXRlZENvbnRleHRMYWJlbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1
NSwgMjU1LCAyNTUpOwotICAgIGNvbnN0ZXhwciBhdXRvIGxpbmVhckdseXBoTWFza091dGxpbmVD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCAxOTIpOwotICAgIGNvbnN0ZXhwciBhdXRv
IGRpc3BsYXlMaXN0Qm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMTY2KTsK
KyAgICBjb25zdGV4cHIgYXV0byBiYWNrZ3JvdW5kQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDEy
OCwgNjQsIDI1NSB9OworICAgIGNvbnN0ZXhwciBhdXRvIGFjY2VsZXJhdGVkQ29udGV4dExhYmVs
Q29sb3IgPSBDb2xvcjo6cmVkOworICAgIGNvbnN0ZXhwciBhdXRvIHVuYWNjZWxlcmF0ZWRDb250
ZXh0TGFiZWxDb2xvciA9IENvbG9yOjp3aGl0ZTsKKyAgICBjb25zdGV4cHIgYXV0byBsaW5lYXJH
bHlwaE1hc2tPdXRsaW5lQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMTkyKTsK
KyAgICBjb25zdGV4cHIgYXV0byBkaXNwbGF5TGlzdEJvcmRlckNvbG9yID0gQ29sb3I6OmJsYWNr
LmNvbG9yV2l0aEFscGhhKDE2Nik7CiAKICAgICBUZXh0UnVuIHRleHRSdW4oU3RyaW5nOjpudW1i
ZXIocmVwYWludENvdW50KSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcAkocmV2aXNpb24gMjY0NDcx
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTYgKzUxLDE2IEBAIFRpbGVDb3ZlcmFnZU1hcDo6
VGlsZUNvdmVyYWdlTWFwKGNvbnN0IFQKICAgICBtX3Zpc2libGVWaWV3cG9ydEluZGljYXRvckxh
eWVyLmdldCgpLnNldE5hbWUoInZpc2libGUgdmlld3BvcnQgaW5kaWNhdG9yIik7CiAgICAgbV92
aXNpYmxlVmlld3BvcnRJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRCb3JkZXJXaWR0aCgyKTsKICAg
ICBtX3Zpc2libGVWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgpLnNldEFuY2hvclBvaW50KEZs
b2F0UG9pbnQzRCgpKTsKLSAgICBtX3Zpc2libGVWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgp
LnNldEJvcmRlckNvbG9yKG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDAsIDIwMCkpOworICAgIG1f
dmlzaWJsZVZpZXdwb3J0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0Qm9yZGVyQ29sb3IoQ29sb3I6
OnJlZC5jb2xvcldpdGhBbHBoYSgyMDApKTsKIAogICAgIG1fbGF5b3V0Vmlld3BvcnRJbmRpY2F0
b3JMYXllci5nZXQoKS5zZXROYW1lKCJsYXlvdXQgdmlld3BvcnQgaW5kaWNhdG9yIik7CiAgICAg
bV9sYXlvdXRWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlcldpZHRoKDIpOwog
ICAgIG1fbGF5b3V0Vmlld3BvcnRJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRBbmNob3JQb2ludChG
bG9hdFBvaW50M0QoKSk7Ci0gICAgbV9sYXlvdXRWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgp
LnNldEJvcmRlckNvbG9yKG1ha2VTaW1wbGVDb2xvcigwLCAxMjgsIDEyOCwgMjAwKSk7CisgICAg
bV9sYXlvdXRWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlckNvbG9yKFNSR0JB
PHVpbnQ4X3Q+IHsgMCwgMTI4LCAxMjgsIDIwMCB9KTsKICAgICAKICAgICBtX2NvdmVyYWdlUmVj
dEluZGljYXRvckxheWVyLmdldCgpLnNldE5hbWUoImNvdmVyYWdlIGluZGljYXRvciIpOwogICAg
IG1fY292ZXJhZ2VSZWN0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0QW5jaG9yUG9pbnQoRmxvYXRQ
b2ludDNEKCkpOwotICAgIG1fY292ZXJhZ2VSZWN0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0QmFj
a2dyb3VuZENvbG9yKG1ha2VTaW1wbGVDb2xvcig2NCwgNjQsIDY0LCA1MCkpOworICAgIG1fY292
ZXJhZ2VSZWN0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0QmFja2dyb3VuZENvbG9yKFNSR0JBPHVp
bnQ4X3Q+IHsgNjQsIDY0LCA2NCwgNTAgfSk7CiAKICAgICBtX2xheWVyLmdldCgpLmFwcGVuZFN1
YmxheWVyKG1fY292ZXJhZ2VSZWN0SW5kaWNhdG9yTGF5ZXIpOwogICAgIG1fbGF5ZXIuZ2V0KCku
YXBwZW5kU3VibGF5ZXIobV92aXNpYmxlVmlld3BvcnRJbmRpY2F0b3JMYXllcik7CkBAIC0xMzYs
MTYgKzEzNiwxNiBAQCB2b2lkIFRpbGVDb3ZlcmFnZU1hcDo6dXBkYXRlKCkKICAgICBDb2xvciB2
aXNpYmxlUmVjdEluZGljYXRvckNvbG9yOwogICAgIHN3aXRjaCAobV9jb250cm9sbGVyLmluZGlj
YXRvck1vZGUoKSkgewogICAgIGNhc2UgU3luY2hyb25vdXNTY3JvbGxpbmdCZWNhdXNlT2ZMYWNr
T2ZTY3JvbGxpbmdDb29yZGluYXRvckluZGljYXRpb246Ci0gICAgICAgIHZpc2libGVSZWN0SW5k
aWNhdG9yQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjAwLCA4MCwgMjU1KTsKKyAgICAgICAgdmlz
aWJsZVJlY3RJbmRpY2F0b3JDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjAwLCA4MCwgMjU1IH07
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3luY2hyb25vdXNTY3JvbGxpbmdCZWNhdXNlT2ZT
dHlsZUluZGljYXRpb246Ci0gICAgICAgIHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMjU1LCAwLCAwKTsKKyAgICAgICAgdmlzaWJsZVJlY3RJbmRpY2F0b3JDb2xv
ciA9IENvbG9yOjpyZWQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3luY2hyb25vdXNTY3Jv
bGxpbmdCZWNhdXNlT2ZFdmVudEhhbmRsZXJzSW5kaWNhdGlvbjoKLSAgICAgICAgdmlzaWJsZVJl
Y3RJbmRpY2F0b3JDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMCk7CisgICAgICAg
IHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3IgPSBDb2xvcjo6eWVsbG93OwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFzeW5jU2Nyb2xsaW5nSW5kaWNhdGlvbjoKLSAgICAgICAgdmlzaWJsZVJl
Y3RJbmRpY2F0b3JDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAyMDAsIDApOworICAgICAgICB2
aXNpYmxlUmVjdEluZGljYXRvckNvbG9yID0gU1JHQkE8dWludDhfdD4geyAwLCAyMDAsIDAgfTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5
ZXJXaW5JbnRlcm5hbC5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbklu
dGVybmFsOjpkcmF3UmVwCiAgICAgaWYgKGJvcmRlcldpZHRoID4gMCkKICAgICAgICAgYmFja2dy
b3VuZENvbG9yID0gQ0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IoY2FMYXllcik7CiAgICAgZWxzZQot
ICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKG1ha2VTaW1wbGVDb2xvcigy
NTUsIDAsIDApKTsKKyAgICAgICAgYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xv
cjo6cmVkKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoY29udGV4dCk7
CiAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihncmFwaGljc0NvbnRl
eHQsIG93bmVyKCksIGRyYXdDb3VudCwgYmFja2dyb3VuZENvbG9yKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3Bw
CShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBDb2xv
ciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjCiAgICAgaWYgKCFwaXhlbFszXSkK
ICAgICAgICAgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVudDsKIAotICAgIHJldHVybiBtYWtlU2lt
cGxlQ29sb3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhl
bFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOworICAgIHJldHVybiBj
bGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBp
eGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVs
WzNdKTsKIH0KIAogdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRD
b2NvYS5tbQkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIw
NSwxNSArMjA1LDE1IEBAIHN0YXRpYyBDR0NvbG9yUmVmIGNvbG9yRm9yTWFya2VyTGluZVN0eWwK
ICAgICBzd2l0Y2ggKHN0eWxlKSB7CiAgICAgLy8gUmVkCiAgICAgY2FzZSBEb2N1bWVudE1hcmtl
ckxpbmVTdHlsZTo6TW9kZTo6U3BlbGxpbmc6Ci0gICAgICAgIHJldHVybiBjYWNoZWRDR0NvbG9y
KHVzZURhcmtNb2RlID8gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMTQwLCAxNDAsIDIxNykgOiBtYWtl
U2ltcGxlQ29sb3IoMjU1LCA1OSwgNDgsIDE5MSkpOworICAgICAgICByZXR1cm4gY2FjaGVkQ0dD
b2xvcih1c2VEYXJrTW9kZSA/IFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAxNDAsIDE0MCwgMjE3IH0g
OiBTUkdCQTx1aW50OF90PiB7IDI1NSwgNTksIDQ4LCAxOTEgfSk7CiAgICAgLy8gQmx1ZQogICAg
IGNhc2UgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU6OkRpY3RhdGlvbkFsdGVybmF0aXZl
czoKICAgICBjYXNlIERvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpUZXh0Q2hlY2tpbmdE
aWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzOgogICAgIGNhc2UgRG9jdW1lbnRNYXJrZXJM
aW5lU3R5bGU6Ok1vZGU6OkF1dG9jb3JyZWN0aW9uUmVwbGFjZW1lbnQ6Ci0gICAgICAgIHJldHVy
biBjYWNoZWRDR0NvbG9yKHVzZURhcmtNb2RlID8gbWFrZVNpbXBsZUNvbG9yKDQwLCAxNDUsIDI1
NSwgMjE3KSA6IG1ha2VTaW1wbGVDb2xvcigwLCAxMjIsIDI1NSwgMTkxKSk7CisgICAgICAgIHJl
dHVybiBjYWNoZWRDR0NvbG9yKHVzZURhcmtNb2RlID8gU1JHQkE8dWludDhfdD4geyA0MCwgMTQ1
LCAyNTUsIDIxNyB9IDogU1JHQkE8dWludDhfdD4geyAwLCAxMjIsIDI1NSwgMTkxIH0pOwogICAg
IC8vIEdyZWVuCiAgICAgY2FzZSBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6R3JhbW1h
cjoKLSAgICAgICAgcmV0dXJuIGNhY2hlZENHQ29sb3IodXNlRGFya01vZGUgPyBtYWtlU2ltcGxl
Q29sb3IoNTAsIDIxNSwgNzUsIDIxNykgOiBtYWtlU2ltcGxlQ29sb3IoMjUsIDE3NSwgNTAsIDE5
MSkpOworICAgICAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcih1c2VEYXJrTW9kZSA/IFNSR0JBPHVp
bnQ4X3Q+IHsgNTAsIDIxNSwgNzUsIDIxNyB9IDogU1JHQkE8dWludDhfdD4geyAyNSwgMTc1LCA1
MCwgMTkxIH0pOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHVzZU9sZEFxdWFGb2N1c1JpbmdDb2xvcjsK
IAogQ29sb3Igb2xkQXF1YUZvY3VzUmluZ0NvbG9yKCkKIHsKLSAgICByZXR1cm4gbWFrZVNpbXBs
ZUNvbG9yKDEyNSwgMTczLCAyMTcpOworICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDEyNSwg
MTczLCAyMTcgfTsKIH0KIAogdm9pZCBzZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcihib29s
IG5ld1ZhbHVlKQpAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhf
dD4+IG1ha2VTaW1wCiAgICAgICAgIE5TVUludGVnZXIgcGl4ZWxbNF07CiAgICAgICAgIFtvZmZz
Y3JlZW5SZXAgZ2V0UGl4ZWw6cGl4ZWwgYXRYOjAgeTowXTsKIAotICAgICAgICByZXR1cm4gbWFr
ZVNpbXBsZUNvbG9yKHBpeGVsWzBdLCBwaXhlbFsxXSwgcGl4ZWxbMl0sIHBpeGVsWzNdKTsKKyAg
ICAgICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4ocGl4ZWxbMF0sIHBpeGVs
WzFdLCBwaXhlbFsyXSwgcGl4ZWxbM10pOwogICAgIH0KIAogICAgIFtyZ2JDb2xvciBnZXRSZWQ6
JnJlZENvbXBvbmVudCBncmVlbjomZ3JlZW5Db21wb25lbnQgYmx1ZTomYmx1ZUNvbXBvbmVudCBh
bHBoYTomYWxwaGFdOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXIuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcjo6cAogICAgICAgICBBU1NFUlQoIW1fdGV4dHVyZSk7CiAgICAg
ICAgIGlmIChtX2hvbGVQdW5jaENsaWVudCkKICAgICAgICAgICAgIG1faG9sZVB1bmNoQ2xpZW50
LT5zZXRWaWRlb1JlY3RhbmdsZShlbmNsb3NpbmdJbnRSZWN0KG1vZGVsVmlld01hdHJpeC5tYXBS
ZWN0KHRhcmdldFJlY3QpKSk7Ci0gICAgICAgIHRleG1hcEdMLmRyYXdTb2xpZENvbG9yKHRhcmdl
dFJlY3QsIG1vZGVsVmlld01hdHJpeCwgbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDApLCBmYWxz
ZSk7CisgICAgICAgIHRleG1hcEdMLmRyYXdTb2xpZENvbG9yKHRhcmdldFJlY3QsIG1vZGVsVmll
d01hdHJpeCwgQ29sb3I6OnRyYW5zcGFyZW50LCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRDR1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAkocmV2aXNpb24gMjY0NDcxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENH
V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDggKzE5OCw4IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3RG90c0ZvckRvY3VtZW4KICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBs
YXRmb3JtQ29udGV4dCgpOwogICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAKLSAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gc3BlbGxpbmdQYXR0ZXJuQ29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoMjU1LCAwLCAwKTsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZ3JhbW1hclBhdHRl
cm5Db2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAxMjgsIDApOworICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBzcGVsbGluZ1BhdHRlcm5Db2xvciA9IENvbG9yOjpyZWQ7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGdyYW1tYXJQYXR0ZXJuQ29sb3IgPSBDb2xvcjo6ZGFya0dyZWVuOwogCiAg
ICAgYXV0byBbciwgZywgYiwgYV0gPSBzdHlsZS5tb2RlID09IERvY3VtZW50TWFya2VyTGluZVN0
eWxlOjpNb2RlOjpHcmFtbWFyID8gZ3JhbW1hclBhdHRlcm5Db2xvciA6IHNwZWxsaW5nUGF0dGVy
bkNvbG9yOwogICAgIENHQ29udGV4dFNldFJHQlN0cm9rZUNvbG9yKGNvbnRleHQsIHIsIGcsIGIs
IGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1t
CShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0lt
YWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgRHJhZ0ltYWdlUmVm
IGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbQogICAgICAgICBHcmFwaGljc0NvbnRleHQgY29u
dGV4dChyZW5kZXJlckNvbnRleHQuQ0dDb250ZXh0KTsKICAgICAgICAgY29udGV4dC50cmFuc2xh
dGUoMCwgQ0dSZWN0R2V0SGVpZ2h0KGltYWdlUmVjdCkpOwogICAgICAgICBjb250ZXh0LnNjYWxl
KHsgMSwgLTEgfSk7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRl
ZFJlY3QoaW1hZ2VSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSg0KSksIG1ha2VTaW1wbGVD
b2xvcigyNTUsIDI1NSwgMjU1KSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZs
b2F0Um91bmRlZFJlY3QoaW1hZ2VSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSg0KSksIENv
bG9yOjp3aGl0ZSk7CiAgICAgICAgIHRpdGxlRm9udENhc2NhZGUuZ2V0KCkuZHJhd1RleHQoY29u
dGV4dCwgVGV4dFJ1bih0cnVuY2F0ZWRUb3BTdHJpbmcpLCBGbG9hdFBvaW50KGRyYWdJbWFnZVBh
ZGRpbmcsIDE4ICsgZHJhZ0ltYWdlUGFkZGluZykpOwogICAgICAgICBpZiAoIXRydW5jYXRlZEJv
dHRvbVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgICAgICB1cmxGb250Q2FzY2FkZS5nZXQoKS5k
cmF3VGV4dChjb250ZXh0LCBUZXh0UnVuKHRydW5jYXRlZEJvdHRvbVN0cmluZyksIEZsb2F0UG9p
bnQoZHJhZ0ltYWdlUGFkZGluZywgNDAgKyBkcmFnSW1hZ2VQYWRkaW5nKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0JKHJldmlzaW9u
IDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQ2Miw4ICs0NjIsOCBAQCB1bnNpZ25lZCBMZWdhY3lUaWxl
Q2FjaGU6OnRpbGVDYXBhY2l0eUZvCiBDb2xvciBMZWdhY3lUaWxlQ2FjaGU6OmNvbG9yRm9yR3Jp
ZFRpbGVCb3JkZXIoTGVnYWN5VGlsZUdyaWQqIGdyaWQpIGNvbnN0CiB7CiAgICAgaWYgKGdyaWQg
PT0gbV96b29tZWRPdXRUaWxlR3JpZC5nZXQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVD
b2xvcig1MSwgMjU1LCAwLCAxMjgpOwotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoNTEsIDIz
MCwgMCwgMTI4KTsKKyAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgNTEsIDI1NSwgMCwg
MTI4IH07CisgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgNTEsIDIzMCwgMCwgMTI4IH07CiB9
CiAKIHN0YXRpYyBib29sIHNob3VsZFJlcGFpbnRJblBpZWNlcyhjb25zdCBDR1JlY3QmIGRpcnR5
UmVjdCwgQ0dTUmVnaW9uT2JqIGRpcnR5UmVnaW9uLCBDR0Zsb2F0IGNvbnRlbnRzU2NhbGUpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2LDggQEAgc3RhdGljIGlubGluZSBWZWN0b3I8
TW9ja01lZGlhRGV2aWNlPiBkZQogICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiU0NSRUVOLTEi
X3MsICJNb2NrIHNjcmVlbiBkZXZpY2UgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBDb2xvcjo6bGlnaHRHcmF5LCB7IDM4NDAs
IDIxNjAgfSB9IH0sCiAgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJTQ1JFRU4tMiJfcywgIk1v
Y2sgc2NyZWVuIGRldmljZSAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIENvbG9yOjp5ZWxsb3csIHsgMTkyMCwgMTA4MCB9IH0g
fSwKIAotICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRv
dyAxIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpTY3JlZW4sIG1ha2VTaW1wbGVDb2xvcigyNTUsIDI0MSwgMTgxKSwgeyA2NDAsIDQ4MCB9IH0g
fSwKLSAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIldJTkRPVy0yIl9zLCAiTW9jayB3aW5kb3cg
MiJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
U2NyZWVuLCBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyMDgsIDE4MSksIHsgMTI4MCwgNjAwIH0gfSB9
LAorICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAx
Il9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpT
Y3JlZW4sIFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAyNDEsIDE4MSB9LCB7IDY0MCwgNDgwIH0gfSB9
LAorICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAy
Il9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpT
Y3JlZW4sIFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAyMDgsIDE4MSB9LCB7IDEyODAsIDYwMCB9IH0g
fSwKICAgICB9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNpb24gMjY0NDcxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NSwxMSArMjY1LDYgQEAgdm9pZCBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZTo6ZHJhd0FuaW1hdAogCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpk
cmF3Qm94ZXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBtYWdlbnRhID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMjU1KTsKLSAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gYmx1ZSA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAyNTUpOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byByZWQgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAwKTsK
LSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGFya0dyZWVuID0gbWFrZVNpbXBsZUNvbG9yKDAs
IDEyOCwgMCk7Ci0KICAgICBJbnRTaXplIHNpemUgPSBjYXB0dXJlU2l6ZSgpOwogICAgIGZsb2F0
IGJveFNpemUgPSBzaXplLndpZHRoKCkgKiAuMDM1OwogICAgIGZsb2F0IGJveFRvcCA9IHNpemUu
aGVpZ2h0KCkgKiAuNjsKQEAgLTMxOCw3ICszMTMsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpkcmF3Qm94ZXMoCiAKICAgICBib3hUb3AgKz0gYm94U2l6ZSArIDI7CiAgICAgYm94
TGVmdCA9IGJveFNpemU7Ci0gICAgY29uc3RleHByIFNSR0JBPHVpbnQ4X3Q+IGJveENvbG9yc1td
ID0geyBDb2xvcjo6d2hpdGUsIENvbG9yOjp5ZWxsb3csIENvbG9yOjpjeWFuLCBkYXJrR3JlZW4s
IG1hZ2VudGEsIHJlZCwgYmx1ZSB9OworICAgIGNvbnN0ZXhwciBTUkdCQTx1aW50OF90PiBib3hD
b2xvcnNbXSA9IHsgQ29sb3I6OndoaXRlLCBDb2xvcjo6eWVsbG93LCBDb2xvcjo6Y3lhbiwgQ29s
b3I6OmRhcmtHcmVlbiwgQ29sb3I6Om1hZ2VudGEsIENvbG9yOjpyZWQsIENvbG9yOjpibHVlIH07
CiAgICAgZm9yIChhdXRvJiBib3hDb2xvciA6IGJveENvbG9ycykgewogICAgICAgICBjb250ZXh0
LmZpbGxSZWN0KEZsb2F0UmVjdChib3hMZWZ0LCBib3hUb3AsIGJveFNpemUgKyAxLCBib3hTaXpl
ICsgMSksIGJveENvbG9yKTsKICAgICAgICAgYm94TGVmdCArPSBib3hTaXplICsgMTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9j
ay5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
U2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBp
bnQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpzY3JvbGxiYXJUaGlja25lCiAKIHZvaWQgU2Nyb2xsYmFy
VGhlbWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7Ci0gICAg
Y29udGV4dC5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6
bGlnaHRHcmF5IDogbWFrZVNpbXBsZUNvbG9yKDIyNCwgMjI0LCAyMjQpKTsKKyAgICBjb250ZXh0
LmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xsYmFyLmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdy
YXkuY29sb3IoKSA6IFNSR0JBPHVpbnQ4X3Q+IHsgMjI0LCAyMjQsIDIyNCB9KTsKIH0KIAogdm9p
ZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24vU2Nyb2xsYmFyVGhlbWVQbGF5U3Rh
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRp
b24vU2Nyb2xsYmFyVGhlbWVQbGF5U3RhdGlvbi5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9uL1Njcm9sbGJhclRoZW1lUGxheVN0YXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIEludFJlY3QgU2Nyb2xsYmFy
VGhlbWVQbGF5U3RhdGlvbjo6dHJhY2sKIAogdm9pZCBTY3JvbGxiYXJUaGVtZVBsYXlTdGF0aW9u
OjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJh
ciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7Ci0gICAgY29udGV4dC5m
aWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5
IDogQ29sb3IobWFrZVNpbXBsZUNvbG9yKDB4RTAsIDB4RTAsIDB4RTApKSk7CisgICAgY29udGV4
dC5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRH
cmF5IDogU1JHQkE8dWludDhfdD4geyAyMjQsIDIyNCwgMjI0IH0pOwogfQogCiB2b2lkIFNjcm9s
bGJhclRoZW1lUGxheVN0YXRpb246OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAJKHJldmlzaW9u
IDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODksMTQgKzE4OSwxNCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlRm9yTGluayhFbGVtCiAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoY29udGV4
dFJlZik7CiAgICAgLy8gT24gTWFjIGFscGhhIGlzIHswLjcsIDAuNywgMC43LCAwLjh9LCBob3dl
dmVyIHdlIGNhbid0IGNvbnRyb2wgYWxwaGEKICAgICAvLyBmb3IgZHJhZyBpbWFnZXMgb24gd2lu
LCBzbyB3ZSB1c2UgMQotICAgIGNvbnN0ZXhwciBhdXRvIGJhY2tncm91bmRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigxNDAsIDE0MCwgMTQwKTsKKyAgICBjb25zdGV4cHIgYXV0byBiYWNrZ3JvdW5k
Q29sb3IgPSBTUkdCQTx1aW50X3Q+IHsgMTQwLCAxNDAsIDE0MCB9OwogICAgIHN0YXRpYyBjb25z
dCBJbnRTaXplIHJhZGlpKERyYWdMYWJlbFJhZGl1cywgRHJhZ0xhYmVsUmFkaXVzKTsKICAgICBJ
bnRSZWN0IHJlY3QoMCwgMCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSk7
CiAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChyZWN0LCByYWRp
aSwgcmFkaWksIHJhZGlpLCByYWRpaSksIGJhY2tncm91bmRDb2xvcik7CiAgCiAgICAgLy8gRHJh
dyB0aGUgdGV4dAotICAgIGNvbnN0ZXhwciBhdXRvIHRvcENvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDAsIDAsIDApOyAvLyBvcmlnaW5hbCBhbHBoYSA9IDAuNzUKLSAgICBjb25zdGV4cHIgYXV0byBi
b3R0b21Db2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1LCAxMjcpOyAvLyBvcmln
aW5hbCBhbHBoYSA9IDAuNQorICAgIGNvbnN0ZXhwciBhdXRvIHRvcENvbG9yID0gQ29sb3I6OmJs
YWNrOyAvLyBvcmlnaW5hbCBhbHBoYSA9IDAuNzUKKyAgICBjb25zdGV4cHIgYXV0byBib3R0b21D
b2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYSgxMjcpOyAvLyBvcmlnaW5hbCBhbHBo
YSA9IDAuNQogICAgIGlmIChkcmF3VVJMU3RyaW5nKSB7CiAgICAgICAgIGlmIChjbGlwVVJMU3Ry
aW5nKQogICAgICAgICAgICAgdXJsU3RyaW5nID0gU3RyaW5nVHJ1bmNhdG9yOjpyaWdodFRydW5j
YXRlKHVybFN0cmluZywgaW1hZ2VTaXplLndpZHRoKCkgLSAoRHJhZ0xhYmVsQm9yZGVyWCAqIDIu
MGYpLCAqdXJsRm9udCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc0LDEwICs3NCwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgcmVwbGFjZW1lbnRBcnJvd0xlZnRN
CiBzdGF0aWMgY29uc3QgZmxvYXQgcmVwbGFjZW1lbnRBcnJvd1BhZGRpbmcgPSA0Owogc3RhdGlj
IGNvbnN0IGZsb2F0IHJlcGxhY2VtZW50QXJyb3dDaXJjbGVQYWRkaW5nID0gMzsKIAotY29uc3Rl
eHByIGF1dG8gcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RQcmVzc2VkQ29sb3IgPSBtYWtlU2lt
cGxlQ29sb3IoMTA1LCAxMDUsIDEwNSwgMjQyKTsKLWNvbnN0ZXhwciBhdXRvIHJlcGxhY2VtZW50
VGV4dFJvdW5kZWRSZWN0Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTI1LCAxMjUsIDEyNSwgMjQy
KTsKLWNvbnN0ZXhwciBhdXRvIHJlcGxhY2VtZW50VGV4dENvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDI0MCwgMjQwLCAyNDApOwotY29uc3RleHByIGF1dG8gdW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1LCAyMTYpOworY29uc3RleHByIGF1
dG8gcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RQcmVzc2VkQ29sb3IgPSBTUkdCQTx1aW50OF90
PiB7IDEwNSwgMTA1LCAxMDUsIDI0MiB9OworY29uc3RleHByIGF1dG8gcmVwbGFjZW1lbnRUZXh0
Um91bmRlZFJlY3RDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTI1LCAxMjUsIDEyNSwgMjQyIH07
Citjb25zdGV4cHIgYXV0byByZXBsYWNlbWVudFRleHRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsg
MjQwLCAyNDAsIDI0MCB9OworY29uc3RleHByIGF1dG8gdW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJD
b2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYSgyMTYpOwogCiBSZW5kZXJFbWJlZGRl
ZE9iamVjdDo6UmVuZGVyRW1iZWRkZWRPYmplY3QoSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyV2lkZ2V0KGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1l
U2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJh
bWVTZXQuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw5ICs2OCw5IEBAIFJlbmRl
ckZyYW1lU2V0OjpHcmlkQXhpczo6R3JpZEF4aXMoKQogewogfQogCi1jb25zdGV4cHIgYXV0byBi
b3JkZXJTdGFydEVkZ2VDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigxNzAsIDE3MCwgMTcwKTsKK2Nv
bnN0ZXhwciBhdXRvIGJvcmRlclN0YXJ0RWRnZUNvbG9yID0gU1JHQkE8dWludDhfdD4geyAxNzAs
IDE3MCwgMTcwIH07CiBjb25zdGV4cHIgYXV0byBib3JkZXJFbmRFZGdlQ29sb3IgPSBDb2xvcjo6
YmxhY2s7Ci1jb25zdGV4cHIgYXV0byBib3JkZXJGaWxsQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
MjA4LCAyMDgsIDIwOCk7Citjb25zdGV4cHIgYXV0byBib3JkZXJGaWxsQ29sb3IgPSBTUkdCQTx1
aW50OF90PiB7IDIwOCwgMjA4LCAyMDggfTsKIAogdm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnRD
b2x1bW5Cb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIGJv
cmRlclJlY3QpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNDgsNyArMjI0OCw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIKICNlbmRpZgogCiAjaWZkZWYgUkVWRUFMX1RS
QU5TUEFSRU5DWV9MQVlFUlMKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IobWFrZVNpbXBs
ZUNvbG9yKDAsIDAsIDEyOCwgNTEpKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoU1JH
QkE8dWludDhfdD4geyAwLCAwLCAxMjgsIDUxIH0pOwogICAgICAgICBjb250ZXh0LmZpbGxSZWN0
KHBpeGVsU25hcHBlZENsaXBSZWN0KTsKICNlbmRpZgogICAgIH0KQEAgLTQxMjMsNyArNDEyMyw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0MKICAgICAgICAgY29u
dGV4dC5jbGlwKHJlc2l6ZXJBYnNSZWN0KTsKICAgICAgICAgTGF5b3V0UmVjdCBsYXJnZXJDb3Ju
ZXIgPSByZXNpemVyQWJzUmVjdDsKICAgICAgICAgbGFyZ2VyQ29ybmVyLnNldFNpemUoTGF5b3V0
U2l6ZShsYXJnZXJDb3JuZXIud2lkdGgoKSArIDFfbHUsIGxhcmdlckNvcm5lci5oZWlnaHQoKSAr
IDFfbHUpKTsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihtYWtlU2ltcGxlQ29sb3Io
MjE3LCAyMTcsIDIxNykpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKFNSR0JBPHVp
bnQ4X3Q+IHsgMjE3LCAyMTcsIDIxNyB9KTsKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlj
a25lc3MoMS4wZik7CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3Bh
cmVudCk7CiAgICAgICAgIGNvbnRleHQuZHJhd1JlY3Qoc25hcHBlZEludFJlY3QobGFyZ2VyQ29y
bmVyKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNjEsNyArMzE2MSw3
IEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4gcGF0dGVybkZvclRvdWNoQWMKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfTsKIAotICAgIGNvbnN0ZXhwciBhdXRvIGZpbGxDb2xvciA9IG1ha2VTaW1w
bGVDb2xvcigwLCAwLCAwLCAxMjgpOworICAgIGNvbnN0ZXhwciBhdXRvIGZpbGxDb2xvciA9IENv
bG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgxMjgpOwogCiAgICAgc3RhdGljIGNvbnN0IFBhdHRl
cm5EZXNjcmlwdGlvbiBwYXR0ZXJuRGVzY3JpcHRpb25zW10gPSB7CiAgICAgICAgIHsgImF1dG8i
X3MsIHsgfSwgZmlsbENvbG9yIH0sCkBAIC0zMTgzLDcgKzMxODMsNyBAQCBzdGF0aWMgUmVmUHRy
PFBhdHRlcm4+IHBhdHRlcm5Gb3JUb3VjaEFjCiAjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX1JFR0lP
TlMpCiBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JFdmVudExpc3RlbmVyUmVnaW9u
VHlwZShFdmVudExpc3RlbmVyUmVnaW9uVHlwZSB0eXBlLCBGbG9hdFNpemUgY29udGVudE9mZnNl
dCwgR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCkKIHsKLSAgICBjb25zdGV4cHIgYXV0byBm
aWxsQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMTI4LCAwLCAxMjgpOworICAgIGNvbnN0ZXhw
ciBhdXRvIGZpbGxDb2xvciA9IENvbG9yOjpkYXJrR3JlZW4uY29sb3JXaXRoQWxwaGEoMTI4KTsK
IAogICAgIGF1dG8gcGF0dGVybkFuZFBoYXNlID0gWyZdKCkgLT4gUGF0dGVybkRlc2NyaXB0aW9u
IHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0zMjIwLDcgKzMyMjAsNyBAQCB2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6cGFpbnREZWJ1Z092ZXJsCiAjaWYgRU5BQkxFKFRPVUNIX0FDVElP
Tl9SRUdJT05TKQogICAgIC8vIFBhaW50IHJlY3RzIGZvciB0b3VjaCBhY3Rpb24uCiAgICAgaWYg
KHZpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25zICYgVG91Y2hBY3Rpb25SZWdpb24pIHsKLSAgICAg
ICAgY29uc3RleHByIGF1dG8gcmVnaW9uQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMjU1
LCA1MCk7CisgICAgICAgIGNvbnN0ZXhwciBhdXRvIHJlZ2lvbkNvbG9yID0gQ29sb3I6OmJsdWUu
Y29sb3JXaXRoQWxwaGEoNTApOwogICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihyZWdpb25D
b2xvcik7CiAgICAgICAgIGZvciAoYXV0byByZWN0IDogZXZlbnRSZWdpb24ucmVnaW9uKCkucmVj
dHMoKSkKICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocmVjdCk7CkBAIC0zMjY1LDcgKzMy
NjUsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnREZWJ1Z092ZXJsCiAjaWYgRU5B
QkxFKEVESVRBQkxFX1JFR0lPTikKICAgICAvLyBQYWludCByZWN0cyBmb3IgZWRpdGFibGUgZWxl
bWVudHMuCiAgICAgaWYgKHZpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25zICYgRWRpdGFibGVFbGVt
ZW50UmVnaW9uKSB7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1ha2VTaW1wbGVDb2xv
cigxMjgsIDAsIDEyOCwgNTApKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoU1JHQkE8
dWludDhfdD4geyAxMjgsIDAsIDEyOCwgNTAgfSk7CiAgICAgICAgIGZvciAoYXV0byByZWN0IDog
ZXZlbnRSZWdpb24ucmVjdHNGb3JFZGl0YWJsZUVsZW1lbnRzKCkpCiAgICAgICAgICAgICBjb250
ZXh0LmZpbGxSZWN0KHJlY3QpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcxLDcgKzY3MSw3IEBA
IENvbG9yIFJlbmRlclRoZW1lOjppbmFjdGl2ZUxpc3RCb3hTZWxlY3QKIENvbG9yIFJlbmRlclRo
ZW1lOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihPcHRpb25TZXQ8U3R5
bGVDb2xvcjo6T3B0aW9ucz4pIGNvbnN0CiB7CiAgICAgLy8gVXNlIGEgYmx1ZSBjb2xvciBieSBk
ZWZhdWx0IGlmIHRoZSBwbGF0Zm9ybSB0aGVtZSBkb2Vzbid0IGRlZmluZSBhbnl0aGluZy4KLSAg
ICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDI1NSk7CisgICAgcmV0dXJuIENvbG9yOjpi
bHVlOwogfQogCiBDb2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IoT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+KSBjb25zdApAQCAtNjg0
LDcgKzY4NCw3IEBAIENvbG9yIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWMKIHsK
ICAgICAvLyBVc2UgYSBncmV5IGNvbG9yIGJ5IGRlZmF1bHQgaWYgdGhlIHBsYXRmb3JtIHRoZW1l
IGRvZXNuJ3QgZGVmaW5lIGFueXRoaW5nLgogICAgIC8vIFRoaXMgY29sb3IgbWF0Y2hlcyBGaXJl
Zm94J3MgaW5hY3RpdmUgY29sb3IuCi0gICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigxNzYsIDE3
NiwgMTc2KTsKKyAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAxNzYsIDE3NiwgMTc2IH07CiB9
CiAKIENvbG9yIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9yKE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPikgY29uc3QKQEAgLTEzMzQsMzAg
KzEzMzQsMzAgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSQogewog
ICAgIHN3aXRjaCAoY3NzVmFsdWVJZCkgewogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMaW5rOgot
ICAgICAgICByZXR1cm4gb3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9yOjpPcHRpb25zOjpGb3JW
aXNpdGVkTGluaykgPyBtYWtlU2ltcGxlQ29sb3IoODUsIDI2LCAxMzkpIDogbWFrZVNpbXBsZUNv
bG9yKDAsIDAsIDIzOCk7CisgICAgICAgIHJldHVybiBvcHRpb25zLmNvbnRhaW5zKFN0eWxlQ29s
b3I6Ok9wdGlvbnM6OkZvclZpc2l0ZWRMaW5rKSA/IFNSR0JBPHVpbnQ4X3Q+IHsgODUsIDI2LCAx
MzkgfSA6IFNSR0JBPHVpbnQ4X3Q+IHsgMCwgMCwgMjM4IH07CiAgICAgY2FzZSBDU1NWYWx1ZVdl
YmtpdEFjdGl2ZWxpbms6CiAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZXRleHQ6Ci0gICAgICAgIHJl
dHVybiBtYWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAwKTsKKyAgICAgICAgcmV0dXJuIENvbG9yOjpy
ZWQ7CiAgICAgY2FzZSBDU1NWYWx1ZUxpbmt0ZXh0OgotICAgICAgICByZXR1cm4gbWFrZVNpbXBs
ZUNvbG9yKDAsIDAsIDIzOCk7CisgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDAsIDAs
IDIzOCB9OwogICAgIGNhc2UgQ1NTVmFsdWVWaXNpdGVkdGV4dDoKLSAgICAgICAgcmV0dXJuIG1h
a2VTaW1wbGVDb2xvcig4NSwgMjYsIDEzOSk7CisgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90
PiB7IDg1LCAyNiwgMTM5IH07CiAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWJvcmRlcjoKICAgICAg
ICAgcmV0dXJuIENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVlQWN0aXZlYnV0dG9udGV4
dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNlIENTU1ZhbHVlQWN0aXZl
Y2FwdGlvbjoKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigyMDQsIDIwNCwgMjA0KTsK
KyAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgMjA0LCAyMDQsIDIwNCB9OwogICAgIGNh
c2UgQ1NTVmFsdWVBcHB3b3Jrc3BhY2U6CiAgICAgICAgIHJldHVybiBDb2xvcjo6d2hpdGU7CiAg
ICAgY2FzZSBDU1NWYWx1ZUJhY2tncm91bmQ6Ci0gICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29s
b3IoOTksIDk5LCAyMDYpOworICAgICAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyA5OSwgOTks
IDIwNiB9OwogICAgIGNhc2UgQ1NTVmFsdWVCdXR0b25mYWNlOgogICAgICAgICByZXR1cm4gQ29s
b3I6OmxpZ2h0R3JheTsKICAgICBjYXNlIENTU1ZhbHVlQnV0dG9uaGlnaGxpZ2h0OgotICAgICAg
ICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDIyMSwgMjIxLCAyMjEpOworICAgICAgICByZXR1cm4g
U1JHQkE8dWludDhfdD4geyAyMjEsIDIyMSwgMjIxIH07CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRv
bnNoYWRvdzoKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigxMzYsIDEzNiwgMTM2KTsK
KyAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgMTM2LCAxMzYsIDEzNiB9OwogICAgIGNh
c2UgQ1NTVmFsdWVCdXR0b250ZXh0OgogICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAg
IGNhc2UgQ1NTVmFsdWVDYXB0aW9udGV4dDoKQEAgLTEzNzEsOSArMTM3MSw5IEBAIENvbG9yIFJl
bmRlclRoZW1lOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUkKICAgICBjYXNlIENTU1ZhbHVlRmllbGR0
ZXh0OgogICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVHcmF5
dGV4dDoKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigxMjgsIDEyOCwgMTI4KTsKKyAg
ICAgICAgcmV0dXJuIENvbG9yOjpkYXJrR3JheTsKICAgICBjYXNlIENTU1ZhbHVlSGlnaGxpZ2h0
OgotICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDE4MSwgMjEzLCAyNTUpOworICAgICAg
ICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAxODEsIDIxMywgMjU1IH07CiAgICAgY2FzZSBDU1NW
YWx1ZUhpZ2hsaWdodHRleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2Fz
ZSBDU1NWYWx1ZUluYWN0aXZlYm9yZGVyOgpAQCAtMTM4MSw5ICsxMzgxLDkgQEAgQ29sb3IgUmVu
ZGVyVGhlbWU6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSQogICAgIGNhc2UgQ1NTVmFsdWVJbmFjdGl2
ZWNhcHRpb246CiAgICAgICAgIHJldHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1
ZUluYWN0aXZlY2FwdGlvbnRleHQ6Ci0gICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMTI3
LCAxMjcsIDEyNyk7CisgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDEyNywgMTI3LCAx
MjcgfTsKICAgICBjYXNlIENTU1ZhbHVlSW5mb2JhY2tncm91bmQ6Ci0gICAgICAgIHJldHVybiBt
YWtlU2ltcGxlQ29sb3IoMjUxLCAyNTIsIDE5Nyk7CisgICAgICAgIHJldHVybiBTUkdCQTx1aW50
OF90PiB7IDI1MSwgMjUyLCAxOTcgfTsKICAgICBjYXNlIENTU1ZhbHVlSW5mb3RleHQ6CiAgICAg
ICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZU1lbnU6CkBAIC0xMzk1
LDE5ICsxMzk1LDE5IEBAIENvbG9yIFJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUkK
ICAgICBjYXNlIENTU1ZhbHVlVGV4dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAg
ICBjYXNlIENTU1ZhbHVlVGhyZWVkZGFya3NoYWRvdzoKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1w
bGVDb2xvcigxMDIsIDEwMiwgMTAyKTsKKyAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsg
MTAyLCAxMDIsIDEwMiB9OwogICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRmYWNlOgogICAgICAgICBy
ZXR1cm4gQ29sb3I6OmxpZ2h0R3JheTsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkaGlnaGxpZ2h0
OgotICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDIyMSwgMjIxLCAyMjEpOworICAgICAg
ICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAyMjEsIDIyMSwgMjIxIH07CiAgICAgY2FzZSBDU1NW
YWx1ZVRocmVlZGxpZ2h0c2hhZG93OgogICAgICAgICByZXR1cm4gQ29sb3I6OmxpZ2h0R3JheTsK
ICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkc2hhZG93OgotICAgICAgICByZXR1cm4gbWFrZVNpbXBs
ZUNvbG9yKDEzNiwgMTM2LCAxMzYpOworICAgICAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAx
MzYsIDEzNiwgMTM2IH07CiAgICAgY2FzZSBDU1NWYWx1ZVdpbmRvdzoKICAgICAgICAgcmV0dXJu
IENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVlV2luZG93ZnJhbWU6Ci0gICAgICAgIHJl
dHVybiBtYWtlU2ltcGxlQ29sb3IoMjA0LCAyMDQsIDIwNCk7CisgICAgICAgIHJldHVybiBTUkdC
QTx1aW50OF90PiB7IDIwNCwgMjA0LCAyMDQgfTsKICAgICBjYXNlIENTU1ZhbHVlV2luZG93dGV4
dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBkZWZhdWx0OgpAQCAtMTUxNyw4
ICsxNTE3LDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6cGFpbnRTeXN0ZW1QcmV2aWV3QmFkZwogCiAg
ICAgYXV0byBtYXJrZXJSZWN0ID0gRmxvYXRSZWN0IHtyZWN0LngoKSArIHJlY3Qud2lkdGgoKSAt
IDI0LCByZWN0LnkoKSArIDgsIDE2LCAxNiB9OwogICAgIGF1dG8gcm91bmRlZE1hcmtlclJlY3Qg
PSBGbG9hdFJvdW5kZWRSZWN0IHsgbWFya2VyUmVjdCwgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkg
eyA4IH0gfTsKLSAgICBhdXRvIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCk7Ci0g
ICAgY29udGV4dC5maWxsUm91bmRlZFJlY3Qocm91bmRlZE1hcmtlclJlY3QsIGNvbG9yKTsKKyAg
ICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChyb3VuZGVkTWFya2VyUmVjdCwgQ29sb3I6OnJlZCk7
CiB9CiAjZW5kaWYKIApAQCAtMTUyOCw3ICsxNTI3LDcgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnBs
YXRmb3JtVGFwSGlnaGxpZ2h0QwogewogICAgIC8vIFRoaXMgY29sb3IgaXMgZXhwZWN0ZWQgdG8g
YmUgZHJhd24gb24gYSBzZW1pLXRyYW5zcGFyZW50IG92ZXJsYXksCiAgICAgLy8gbWFraW5nIGl0
IG1vcmUgdHJhbnNwYXJlbnQgdGhhbiBpdHMgYWxwaGEgdmFsdWUgaW5kaWNhdGVzLgotICAgIHJl
dHVybiBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMTAyKTsKKyAgICByZXR1cm4gQ29sb3I6OmJs
YWNrLmNvbG9yV2l0aEFscGhhKDEwMik7CiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQWR3YWl0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQWR3YWl0YS5jcHAJKHJldmlzaW9uIDI2NDQ3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIGNvbnN0IGludCB0ZXh0RmllbGRCb3JkZXJTaXplID0gMTsKLXN0YXRpYyBjb25zdGV4
cHIgYXV0byB0ZXh0RmllbGRCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwg
MTk0KTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byB0ZXh0RmllbGRCb3JkZXJEaXNhYmxlZENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDIxMywgMjA4LCAyMDQpOwotc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHRleHRGaWVsZEJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1
KTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byB0ZXh0RmllbGRCYWNrZ3JvdW5kRGlzYWJsZWRDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcigyNTIsIDI1MiwgMjUyKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byB0ZXh0RmllbGRCb3JkZXJDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjA1LCAxOTksIDE5NCB9
Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRleHRGaWVsZEJvcmRlckRpc2FibGVkQ29sb3IgPSBT
UkdCQTx1aW50OF90PiB7IDIxMywgMjA4LCAyMDQgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB0
ZXh0RmllbGRCYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6d2hpdGU7CitzdGF0aWMgY29uc3RleHBy
IGF1dG8gdGV4dEZpZWxkQmFja2dyb3VuZERpc2FibGVkQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7
IDI1MiwgMjUyLCAyNTIgfTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtZW51TGlzdEJ1dHRvbkFy
cm93U2l6ZSA9IDE2Owogc3RhdGljIGNvbnN0IGludCBtZW51TGlzdEJ1dHRvbkZvY3VzT2Zmc2V0
ID0gLTM7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWVudUxpc3RCdXR0b25QYWRkaW5nID0gNTsK
QEAgLTU3LDIzICs1NywyMyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHJvZ3Jlc3NBY3Rpdml0
eUJsCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHJvZ3Jlc3NBbmltYXRpb25GcmFtZUNvdW50ID0g
NzU7CiBzdGF0aWMgY29uc3QgU2Vjb25kcyBwcm9ncmVzc0FuaW1hdGlvbkZyYW1lUmF0ZSA9IDMz
X21zOyAvLyAzMGZwcy4KIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwcm9ncmVzc0JhclNpemUgPSA2
Owotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHByb2dyZXNzQmFyQm9yZGVyQ29sb3IgPSBtYWtlU2lt
cGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gcHJvZ3Jlc3NC
YXJCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjI1LCAyMjIsIDIxOSk7CitzdGF0
aWMgY29uc3RleHByIGF1dG8gcHJvZ3Jlc3NCYXJCb3JkZXJDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+
IHsgMjA1LCAxOTksIDE5NCB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHByb2dyZXNzQmFyQmFj
a2dyb3VuZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyMjUsIDIyMiwgMjE5IH07CiBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc2xpZGVyVHJhY2tTaXplID0gNjsKIHN0YXRpYyBjb25zdCBpbnQgc2xp
ZGVyVHJhY2tCb3JkZXJTaXplID0gMTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJUcmFj
a0JvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOwotc3RhdGljIGNv
bnN0ZXhwciBhdXRvIHNsaWRlclRyYWNrQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDIyNSwgMjIyLCAyMTkpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlclRyYWNrQm9yZGVy
Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDIwNSwgMTk5LCAxOTQgfTsKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBzbGlkZXJUcmFja0JhY2tncm91bmRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjI1
LCAyMjIsIDIxOSB9Owogc3RhdGljIGNvbnN0IGludCBzbGlkZXJUcmFja0ZvY3VzT2Zmc2V0ID0g
MjsKIHN0YXRpYyBjb25zdCBpbnQgc2xpZGVyVGh1bWJTaXplID0gMjA7CiBzdGF0aWMgY29uc3Qg
aW50IHNsaWRlclRodW1iQm9yZGVyU2l6ZSA9IDE7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gc2xp
ZGVyVGh1bWJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwgMTk0KTsKLXN0
YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJUaHVtYkJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1w
bGVDb2xvcigyNDQsIDI0MiwgMjQxKTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJUaHVt
YkJhY2tncm91bmRIb3ZlcmVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjQ4LCAyNDgsIDI0Nyk7
Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyVGh1bWJCYWNrZ3JvdW5kRGlzYWJsZWRDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcigyNDQsIDI0MiwgMjQxKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBzbGlkZXJUaHVtYkJvcmRlckNvbG9yID0gU1JHQkE8dWludDhfdD4geyAyMDUsIDE5OSwgMTk0
IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyVGh1bWJCYWNrZ3JvdW5kQ29sb3IgPSBT
UkdCQTx1aW50OF90PiB7IDI0NCwgMjQyLCAyNDEgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBz
bGlkZXJUaHVtYkJhY2tncm91bmRIb3ZlcmVkQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDI0OCwg
MjQ4LCAyNDcgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJUaHVtYkJhY2tncm91bmRE
aXNhYmxlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNDQsIDI0MiwgMjQxIH07CiAjaWYgRU5B
QkxFKFZJREVPKQotc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1lZGlhU2xpZGVyVHJhY2tCYWNrZ3Jv
dW5kY29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoNzcsIDc3LCA3Nyk7Ci1zdGF0aWMgY29uc3RleHBy
IGF1dG8gbWVkaWFTbGlkZXJUcmFja0J1ZmZlcmVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTcz
LCAxNzMsIDE3Myk7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gbWVkaWFTbGlkZXJUcmFja0FjdGl2
ZUNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIG1lZGlhU2xpZGVyVHJhY2tCYWNrZ3JvdW5kY29sb3IgPSBTUkdCQTx1aW50OF90PiB7
IDc3LCA3NywgNzcgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtZWRpYVNsaWRlclRyYWNrQnVm
ZmVyZWRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTczLCAxNzMsIDE3MyB9Oworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG1lZGlhU2xpZGVyVHJhY2tBY3RpdmVDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+
IHsgMjUyLCAyNTIsIDI1MiB9OwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oR1RLKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJKHJldmlzaW9uIDI2NDQ3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKLSAgICBDb2xvciBwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDI2LCAyNiwgMjYsIDB4NEQpOyB9
CisgICAgQ29sb3IgcGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgMjYsIDI2LCAyNiwgNzcgfSA7IH0KICNlbmRpZgogCiAg
ICAgYm9vbCBzaG91bGRIYXZlU3BpbkJ1dHRvbihjb25zdCBIVE1MSW5wdXRFbGVtZW50JikgY29u
c3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTg0OCw5ICs4NDgsOSBAQCBib29sIFJl
bmRlclRoZW1lSU9TOjpwYWludFNsaWRlclRyYWNrKGNvCiAKICAgICAgICAgQ0dDb250ZXh0UmVm
IGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAg
ICAgIGlmIChyZWFkb25seSkKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlQ29sb3IobWFrZVNpbXBsZUNvbG9yKDE3OCwgMTc4LCAxNzgpKTsKKyAgICAgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoU1JHQkE8dWludDhfdD4geyAxNzgsIDE3
OCwgMTc4IH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LnNldFN0cm9rZUNvbG9yKG1ha2VTaW1wbGVDb2xvcig3NiwgNzYsIDc2KSk7CisgICAgICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKFNSR0JBPHVpbnQ4X3Q+IHsgNzYs
IDc2LCA3NiB9KTsKIAogICAgICAgICBSZXRhaW5QdHI8Q0dNdXRhYmxlUGF0aFJlZj4gcm91bmRl
ZFJlY3RQYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOwogICAgICAgICBDR1Bh
dGhBZGRSb3VuZGVkUmVjdChyb3VuZGVkUmVjdFBhdGguZ2V0KCksIDAsIHRyYWNrQ2xpcCwgY29y
bmVyV2lkdGgsIGNvcm5lckhlaWdodCk7CkBAIC05MTcsMTAgKzkxNywxMCBAQCBib29sIFJlbmRl
clRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvCiAKICAgICBjb25zdCBmbG9hdCB2ZXJ0aWNh
bFJlbmRlcmluZ1Bvc2l0aW9uID0gcmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldDsKICAgICBhdXRv
IHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7
IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBv
aW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWln
aHQgLSAxKSB9KTsKLSAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4wZiwgbWFr
ZVNpbXBsZUNvbG9yKDE0MSwgMTQxLCAxNDEpIH0pOwotICAgIHN0cm9rZUdyYWRpZW50LT5hZGRD
b2xvclN0b3AoeyAwLjQ1ZiwgbWFrZVNpbXBsZUNvbG9yKDIzOCwgMjM4LCAyMzgpIH0pOwotICAg
IHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjU1ZiwgbWFrZVNpbXBsZUNvbG9yKDIz
OCwgMjM4LCAyMzgpIH0pOwotICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLjBm
LCBtYWtlU2ltcGxlQ29sb3IoMTQxLCAxNDEsIDE0MSkgfSk7CisgICAgc3Ryb2tlR3JhZGllbnQt
PmFkZENvbG9yU3RvcCh7IDAuMGYsIFNSR0JBPHVpbnQ4X3Q+IHsgMTQxLCAxNDEsIDE0MSB9IH0p
OworICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjQ1ZiwgU1JHQkE8dWludDhf
dD4geyAyMzgsIDIzOCwgMjM4IH0gfSk7CisgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3Rv
cCh7IDAuNTVmLCBTUkdCQTx1aW50OF90PiB7IDIzOCwgMjM4LCAyMzggfSB9KTsKKyAgICBzdHJv
a2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMS4wZiwgU1JHQkE8dWludDhfdD4geyAxNDEsIDE0
MSwgMTQxIH0gfSk7CiAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKHN0cm9r
ZUdyYWRpZW50KSk7CiAKICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwpA
QCAtOTM3LDggKzkzNyw4IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIo
Y28KIAogICAgIGZsb2F0IHVwcGVyR3JhZGllbnRIZWlnaHQgPSBwcm9ncmVzc0JhckhlaWdodCAv
IDIuOwogICAgIGF1dG8gdXBwZXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6
OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uICsgMC41ZiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRp
b24gKyB1cHBlckdyYWRpZW50SGVpZ2h0IC0gMS41KSB9KTsKLSAgICB1cHBlckdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoeyAwLjBmLCBtYWtlU2ltcGxlQ29sb3IoMTMzLCAxMzMsIDEzMywgMTg4KSB9
KTsKLSAgICB1cHBlckdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLjBmLCBtYWtlU2ltcGxlQ29s
b3IoMTgsIDE4LCAxOCwgNTEpIH0pOworICAgIHVwcGVyR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7
IDAuMGYsIFNSR0JBPHVpbnQ4X3Q+IHsgMTMzLCAxMzMsIDEzMywgMTg4IH0gfSk7CisgICAgdXBw
ZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMS4wZiwgU1JHQkE8dWludDhfdD4geyAxOCwgMTgs
IDE4LCA1MSB9IH0pOwogICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUodXBwZXJH
cmFkaWVudCkpOwogCiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QocmVjdC54KCksIHZl
cnRpY2FsUmVuZGVyaW5nUG9zaXRpb24sIHJlY3Qud2lkdGgoKSwgdXBwZXJHcmFkaWVudEhlaWdo
dCkpOwpAQCAtOTQ5LDE4ICs5NDksMTggQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9n
cmVzc0JhcihjbwogICAgICAgICBkb3VibGUgcG9zaXRpb24gPSBjbGFtcFRvKHJlbmRlclByb2dy
ZXNzLnBvc2l0aW9uKCksIDAuMCwgMS4wKTsKICAgICAgICAgZmxvYXQgYmFyV2lkdGggPSBwb3Np
dGlvbiAqIHJlY3Qud2lkdGgoKTsKICAgICAgICAgYXV0byBiYXJHcmFkaWVudCA9IEdyYWRpZW50
OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41ZiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRp
Y2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOwotICAgICAg
ICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4wZiwgbWFrZVNpbXBsZUNvbG9yKDE5NSwg
MjE3LCAyNDcpIH0pOwotICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC40NWYs
IG1ha2VTaW1wbGVDb2xvcigxMTgsIDE2NCwgMjI4KSB9KTsKLSAgICAgICAgYmFyR3JhZGllbnQt
PmFkZENvbG9yU3RvcCh7IDAuNDlmLCBtYWtlU2ltcGxlQ29sb3IoMTE4LCAxNjQsIDIyOCkgfSk7
Ci0gICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjUxZiwgbWFrZVNpbXBsZUNv
bG9yKDM2LCAxMTQsIDIxMCkgfSk7Ci0gICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
eyAwLjU1ZiwgbWFrZVNpbXBsZUNvbG9yKDM2LCAxMTQsIDIxMCkgfSk7Ci0gICAgICAgIGJhckdy
YWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLjBmLCBtYWtlU2ltcGxlQ29sb3IoNTcsIDE0MiwgMjQ0
KSB9KTsKKyAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMGYsIFNSR0JBPHVp
bnQ4X3Q+IHsgMTk1LCAyMTcsIDI0NyB9IH0pOworICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29s
b3JTdG9wKHsgMC40NWYsIFNSR0JBPHVpbnQ4X3Q+IHsgMTE4LCAxNjQsIDIyOCB9IH0pOworICAg
ICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC40OWYsIFNSR0JBPHVpbnQ4X3Q+IHsg
MTE4LCAxNjQsIDIyOCB9IH0pOworICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsg
MC41MWYsIFNSR0JBPHVpbnQ4X3Q+IHsgMzYsIDExNCwgMjEwIH0gfSk7CisgICAgICAgIGJhckdy
YWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjU1ZiwgU1JHQkE8dWludDhfdD4geyAzNiwgMTE0LCAy
MTAgfSB9KTsKKyAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEuMGYsIFNSR0JB
PHVpbnQ4X3Q+IHsgNTcsIDE0MiwgMjQ0IH0gfSk7CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdy
YWRpZW50KFdURk1vdmUoYmFyR3JhZGllbnQpKTsKIAogICAgICAgICBhdXRvIGJhclN0cm9rZUdy
YWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9p
bnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3Qu
eCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9
KTsKLSAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMGYsIG1ha2VT
aW1wbGVDb2xvcig5NSwgMTA3LCAxODMpIH0pOwotICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+
YWRkQ29sb3JTdG9wKHsgMC41ZiwgbWFrZVNpbXBsZUNvbG9yKDY2LCAxMDYsIDE3NCwgMjQwKSB9
KTsKLSAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEuMGYsIG1ha2VT
aW1wbGVDb2xvcigzOCwgMTA0LCAxNjYpIH0pOworICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+
YWRkQ29sb3JTdG9wKHsgMC4wZiwgU1JHQkE8dWludDhfdD4geyA5NSwgMTA3LCAxODMgfSB9KTsK
KyAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuNWYsIFNSR0JBPHVp
bnQ4X3Q+IHsgNjYsIDEwNiwgMTc0LCAyNDAgfSB9KTsKKyAgICAgICAgYmFyU3Ryb2tlR3JhZGll
bnQtPmFkZENvbG9yU3RvcCh7IDEuMGYsIFNSR0JBPHVpbnQ4X3Q+IHsgMzgsIDEwNCwgMTY2IH0g
fSk7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlR3JhZGllbnQoV1RGTW92ZShiYXJTdHJva2VH
cmFkaWVudCkpOwogCiAgICAgICAgIFBhdGggYmFyUGF0aDsKQEAgLTEzODMsMTAgKzEzODMsMTAg
QEAgQ29sb3IgUmVuZGVyVGhlbWVJT1M6OnN5c3RlbUNvbG9yKENTU1ZhbAogY29uc3QgQ0dTaXpl
IGF0dGFjaG1lbnRTaXplID0geyAxNjAsIDExOSB9OwogCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1l
bnRCb3JkZXJSYWRpdXMgPSAxNjsKLWNvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRCb3JkZXJDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcigyMDQsIDIwNCwgMjA0KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFj
aG1lbnRCb3JkZXJDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjA0LCAyMDQsIDIwNCB9Owogc3Rh
dGljIENHRmxvYXQgYXR0YWNobWVudEJvcmRlclRoaWNrbmVzcyA9IDE7CiAKLWNvbnN0ZXhwciBh
dXRvIGF0dGFjaG1lbnRQcm9ncmVzc0NvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyMiwgMjIyLCAy
MjIpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVudFByb2dyZXNzQ29sb3IgPSBTUkdCQTx1aW50
OF90PiB7IDIyMiwgMjIyLCAyMjIgfTsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFByb2dyZXNz
Qm9yZGVyVGhpY2tuZXNzID0gMzsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NT
aXplID0gMzY7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwMSw3ICs1MDEsNyBAQCBzdGF0aWMgU1JH
QkE8dWludDhfdD4gbWVudUJhY2tncm91bmRDb2xvCiAgICAgTlNVSW50ZWdlciBwaXhlbFs0XTsK
ICAgICBbb2Zmc2NyZWVuUmVwIGdldFBpeGVsOnBpeGVsIGF0WDowIHk6MF07CiAKLSAgICByZXR1
cm4gbWFrZVNpbXBsZUNvbG9yKHBpeGVsWzBdLCBwaXhlbFsxXSwgcGl4ZWxbMl0sIHBpeGVsWzNd
KTsKKyAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihwaXhlbFswXSwgcGl4
ZWxbMV0sIHBpeGVsWzJdLCBwaXhlbFszXSk7CiB9CiAKIENvbG9yIFJlbmRlclRoZW1lTWFjOjpz
eXN0ZW1Db2xvcihDU1NWYWx1ZUlEIGNzc1ZhbHVlSUQsIE9wdGlvblNldDxTdHlsZUNvbG9yOjpP
cHRpb25zPiBvcHRpb25zKSBjb25zdApAQCAtNzM3LDExICs3MzcsMTEgQEAgQ29sb3IgUmVuZGVy
VGhlbWVNYWM6OnN5c3RlbUNvbG9yKENTU1ZhbAogICAgICAgICBjYXNlIENTU1ZhbHVlVGhyZWVk
ZmFjZToKICAgICAgICAgICAgIC8vIFdlIHNlbGVjdGVkIHRoaXMgdmFsdWUgaW5zdGVhZCBvZiBb
TlNDb2xvciBjb250cm9sQ29sb3JdIHRvIGF2b2lkIHdlYnNpdGUgaW5jb21wYXRpYmlsaXRpZXMu
CiAgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0byBjb25zaWRlciBjaGFuZ2luZyB0byBbTlND
b2xvciBjb250cm9sQ29sb3JdIHNvbWUgZGF5LgotICAgICAgICAgICAgcmV0dXJuIG1ha2VTaW1w
bGVDb2xvcigxOTIsIDE5MiwgMTkyKTsKKyAgICAgICAgICAgIHJldHVybiBDb2xvcjo6bGlnaHRH
cmF5OwogCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVJbmZvYmFja2dyb3VuZDoKICAgICAgICAgICAg
IC8vIE5vIGNvcnJlc3BvbmRpbmcgTlNDb2xvciBmb3IgdGhpcyBzbyB3ZSB1c2UgYSBoYXJkIGNv
ZGVkIHZhbHVlLgotICAgICAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigyNTEsIDI1Miwg
MTk3KTsKKyAgICAgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDI1MSwgMjUyLCAxOTcg
fTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlTWVudToKICAgICAgICAgICAgIHJldHVybiBtZW51
QmFja2dyb3VuZENvbG9yKCk7CkBAIC03NTAsMzAgKzc1MCwzMCBAQCBDb2xvciBSZW5kZXJUaGVt
ZU1hYzo6c3lzdGVtQ29sb3IoQ1NTVmFsCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBY3RpdmVib3Jk
ZXI6CiAgICAgICAgICAgICAvLyBIYXJkY29kZWQgdG8gYXZvaWQgZXhwb3NpbmcgYSB1c2VyIGFw
cGVhcmFuY2UgcHJlZmVyZW5jZSB0byB0aGUgd2ViIGZvciBmaW5nZXJwcmludGluZy4KICAgICAg
ICAgICAgIGlmIChsb2NhbEFwcGVhcmFuY2UudXNpbmdEYXJrQXBwZWFyYW5jZSgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVDb2xvcigyNiwgMTY5LCAyNTUpLCBDb2xvcjo6
U2VtYW50aWMgfTsKLSAgICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVDb2xvcigwLCAxMDMs
IDI0NCksIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAgICAgIHJldHVybiB7IFNSR0JB
PHVpbnQ4X3Q+IHsgMjYsIDE2OSwgMjU1IH0sIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAg
ICAgcmV0dXJuIHsgU1JHQkE8dWludDhfdD4geyAwLCAxMDMsIDI0NCB9LCBDb2xvcjo6U2VtYW50
aWMgfTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1Db250cm9sQWNjZW50Ogog
ICAgICAgICAgICAgLy8gSGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNlciBhcHBlYXJh
bmNlIHByZWZlcmVuY2UgdG8gdGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAgICAgICAgICAg
ICAvLyBTYW1lIGNvbG9yIGluIGxpZ2h0IGFuZCBkYXJrIGFwcGVhcmFuY2VzLgotICAgICAgICAg
ICAgcmV0dXJuIHsgbWFrZVNpbXBsZUNvbG9yKDAsIDEyMiwgMjU1KSwgQ29sb3I6OlNlbWFudGlj
IH07CisgICAgICAgICAgICByZXR1cm4geyBTUkdCQTx1aW50OF90PiB7IDAsIDEyMiwgMjU1IH0s
IENvbG9yOjpTZW1hbnRpYyB9OwogCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNl
bGVjdGVkQ29udGVudEJhY2tncm91bmQ6CiAgICAgICAgICAgICAvLyBIYXJkY29kZWQgdG8gYXZv
aWQgZXhwb3NpbmcgYSB1c2VyIGFwcGVhcmFuY2UgcHJlZmVyZW5jZSB0byB0aGUgd2ViIGZvciBm
aW5nZXJwcmludGluZy4KICAgICAgICAgICAgIGlmIChsb2NhbEFwcGVhcmFuY2UudXNpbmdEYXJr
QXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVDb2xvcigw
LCA4OCwgMjA4KSwgQ29sb3I6OlNlbWFudGljIH07Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtl
U2ltcGxlQ29sb3IoMCwgOTksIDIyNSksIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAg
ICAgIHJldHVybiB7IFNSR0JBPHVpbnQ4X3Q+IHsgMCwgODgsIDIwOCB9LCBDb2xvcjo6U2VtYW50
aWMgfTsKKyAgICAgICAgICAgIHJldHVybiB7IFNSR0JBPHVpbnQ4X3Q+IHsgMCwgOTksIDIyNSB9
LCBDb2xvcjo6U2VtYW50aWMgfTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlSGlnaGxpZ2h0Ogog
ICAgICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1TZWxlY3RlZFRleHRCYWNrZ3JvdW5kOgog
ICAgICAgICAgICAgLy8gSGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNlciBhcHBlYXJh
bmNlIHByZWZlcmVuY2UgdG8gdGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAgICAgICAgICAg
ICBpZiAobG9jYWxBcHBlYXJhbmNlLnVzaW5nRGFya0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4geyBtYWtlU2ltcGxlQ29sb3IoNjMsIDk5LCAxMzksIDIwNCksIENvbG9yOjpT
ZW1hbnRpYyB9OwotICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVNpbXBsZUNvbG9yKDEyOCwgMTg4
LCAyNTQsIDE1MyksIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAgICAgIHJldHVybiB7
IFNSR0JBPHVpbnQ4X3Q+IHsgNjMsIDk5LCAxMzksIDIwNCB9LCBDb2xvcjo6U2VtYW50aWMgfTsK
KyAgICAgICAgICAgIHJldHVybiB7IFNSR0JBPHVpbnQ4X3Q+IHsgMTI4LCAxODgsIDI1NCwgMTUz
IH0sIENvbG9yOjpTZW1hbnRpYyB9OwogCiAjaWYgIUhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQp
CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUNvbnRhaW5lckJvcmRlcjoKLSAgICAg
ICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMTk3LCAxOTcsIDE5Nyk7CisgICAgICAgICAg
ICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAxOTcsIDE5NywgMTk3IH07CiAjZW5kaWYKIAogICAg
ICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1FdmVuQWx0ZXJuYXRpbmdDb250ZW50QmFja2dy
b3VuZDogewpAQCAtMTU5Miw4ICsxNTkyLDggQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRN
ZW51TGlzdEJ1dHRvbgogICAgIH07CiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUGF0aChQ
YXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMoYXJyb3cyKSk7CiAKLSAgICBjb25zdGV4cHIgYXV0
byBsZWZ0U2VwYXJhdG9yQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgNDApOwotICAg
IGNvbnN0ZXhwciBhdXRvIHJpZ2h0U2VwYXJhdG9yQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1
LCAyNTUsIDI1NSwgNDApOworICAgIGNvbnN0ZXhwciBhdXRvIGxlZnRTZXBhcmF0b3JDb2xvciA9
IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSg0MCk7CisgICAgY29uc3RleHByIGF1dG8gcmln
aHRTZXBhcmF0b3JDb2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYSg0MCk7CiAKICAg
ICAvLyBGSVhNRTogU2hvdWxkIHRoZSBzZXBhcmF0b3IgdGhpY2tuZXNzIGFuZCBzcGFjZSBiZSBz
Y2FsZWQgdXAgYnkgZm9udFNjYWxlPwogICAgIGludCBzZXBhcmF0b3JTcGFjZSA9IDI7IC8vIERl
bGliZXJhdGVseSBpZ25vcmVzIHpvb20gc2luY2UgaXQgbG9va3MgbmljZXIgaWYgaXQgc3RheXMg
dGhpbi4KQEAgLTI0MTMsOCArMjQxMyw4IEBAIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudEljb25T
ZWxlY3Rpb25Cb3IKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudEljb25CYWNrZ3JvdW5kUmFkaXVz
ID0gMzsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudEljb25Ub1RpdGxlTWFyZ2luID0gMjsKIAot
Y29uc3RleHByIGF1dG8gYXR0YWNobWVudEljb25CYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoMCwgMCwgMCwgMzApOwotY29uc3RleHByIGF1dG8gYXR0YWNobWVudEljb25Cb3JkZXJD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1LCAxMjUpOworY29uc3RleHByIGF1
dG8gYXR0YWNobWVudEljb25CYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRo
QWxwaGEoMzApOworY29uc3RleHByIGF1dG8gYXR0YWNobWVudEljb25Cb3JkZXJDb2xvciA9IENv
bG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYSgxMjUpOwogCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1l
bnRUaXRsZUZvbnRTaXplID0gMTI7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRUaXRsZUJhY2tn
cm91bmRSYWRpdXMgPSAzOwpAQCAtMjQyMiwyMyArMjQyMiwyMyBAQCBjb25zdCBDR0Zsb2F0IGF0
dGFjaG1lbnRUaXRsZUJhY2tncm91bmRQCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRUaXRsZU1h
eGltdW1XaWR0aCA9IDEwMCAtIChhdHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kUGFkZGluZyAqIDIp
OwogY29uc3QgQ0ZJbmRleCBhdHRhY2htZW50VGl0bGVNYXhpbXVtTGluZUNvdW50ID0gMjsKIAot
Y29uc3RleHByIGF1dG8gYXR0YWNobWVudFRpdGxlSW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IgPSBt
YWtlU2ltcGxlQ29sb3IoMjA0LCAyMDQsIDIwNCk7Ci1jb25zdGV4cHIgYXV0byBhdHRhY2htZW50
VGl0bGVJbmFjdGl2ZVRleHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigxMDAsIDEwMCwgMTAwKTsK
K2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlQmFja2dyb3VuZENvbG9yID0g
U1JHQkE8dWludDhfdD4geyAyMDQsIDIwNCwgMjA0IH07Citjb25zdGV4cHIgYXV0byBhdHRhY2ht
ZW50VGl0bGVJbmFjdGl2ZVRleHRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTAwLCAxMDAsIDEw
MCB9OwogCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRTdWJ0aXRsZUZvbnRTaXplID0gMTA7CiBj
b25zdCBpbnQgYXR0YWNobWVudFN1YnRpdGxlV2lkdGhJbmNyZW1lbnQgPSAxMDsKLWNvbnN0ZXhw
ciBhdXRvIGF0dGFjaG1lbnRTdWJ0aXRsZVRleHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig4Miwg
MTQ1LCAyMTQpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVudFN1YnRpdGxlVGV4dENvbG9yID0g
U1JHQkE8dWludDhfdD4geyA4MiwgMTQ1LCAyMTQgfTsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2ht
ZW50UHJvZ3Jlc3NCYXJXaWR0aCA9IDMwOwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jl
c3NCYXJIZWlnaHQgPSA1OwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJPZmZz
ZXQgPSAtOTsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFByb2dyZXNzQmFyQm9yZGVyV2lkdGgg
PSAxOwotY29uc3RleHByIGF1dG8gYXR0YWNobWVudFByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDg5KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1l
bnRQcm9ncmVzc0JhckJhY2tncm91bmRDb2xvciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBo
YSg4OSk7CiBjb25zdGV4cHIgYXV0byBhdHRhY2htZW50UHJvZ3Jlc3NCYXJGaWxsQ29sb3IgPSBD
b2xvcjo6d2hpdGU7Ci1jb25zdGV4cHIgYXV0byBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCb3JkZXJD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCAxMjgpOworY29uc3RleHByIGF1dG8gYXR0
YWNobWVudFByb2dyZXNzQmFyQm9yZGVyQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxw
aGEoMTI4KTsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJSYWRp
dXMgPSA1OwotY29uc3RleHByIGF1dG8gYXR0YWNobWVudFBsYWNlaG9sZGVyQm9yZGVyQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgNTYpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVu
dFBsYWNlaG9sZGVyQm9yZGVyQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoNTYp
OwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJXaWR0aCA9IDI7CiBj
b25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQbGFjZWhvbGRlckJvcmRlckRhc2hMZW5ndGggPSA2Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAJKHJl
dmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCwxOSArMjg4LDE5IEBAIGJvb2wgUmVuZGVyVGhl
bWVXaW46OnN1cHBvcnRzSG92ZXIoY29uc3QKIENvbG9yIFJlbmRlclRoZW1lV2luOjpwbGF0Zm9y
bUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0
aW9ucz4pIGNvbnN0CiB7CiAgICAgQ09MT1JSRUYgY29sb3IgPSBHZXRTeXNDb2xvcihDT0xPUl9I
SUdITElHSFQpOwotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoR2V0UlZhbHVlKGNvbG9yKSwg
R2V0R1ZhbHVlKGNvbG9yKSwgR2V0QlZhbHVlKGNvbG9yKSk7CisgICAgcmV0dXJuIFNSR0JBPHVp
bnQ4X3Q+IHsgR2V0UlZhbHVlKGNvbG9yKSwgR2V0R1ZhbHVlKGNvbG9yKSwgR2V0QlZhbHVlKGNv
bG9yKSB9OwogfQogCiBDb2xvciBSZW5kZXJUaGVtZVdpbjo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcihPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4pIGNvbnN0
CiB7CiAgICAgLy8gVGhpcyBjb2xvciBtYXRjaGVzIEZpcmVmb3guCi0gICAgcmV0dXJuIG1ha2VT
aW1wbGVDb2xvcigxNzYsIDE3NiwgMTc2KTsKKyAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAx
NzYsIDE3NiwgMTc2IH07CiB9CiAKIENvbG9yIFJlbmRlclRoZW1lV2luOjpwbGF0Zm9ybUFjdGl2
ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4p
IGNvbnN0CiB7CiAgICAgQ09MT1JSRUYgY29sb3IgPSBHZXRTeXNDb2xvcihDT0xPUl9ISUdITElH
SFRURVhUKTsKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKEdldFJWYWx1ZShjb2xvciksIEdl
dEdWYWx1ZShjb2xvciksIEdldEJWYWx1ZShjb2xvcikpOworICAgIHJldHVybiBTUkdCQTx1aW50
OF90PiB7IEdldFJWYWx1ZShjb2xvciksIEdldEdWYWx1ZShjb2xvciksIEdldEJWYWx1ZShjb2xv
cikgfTsKIH0KIAogQ29sb3IgUmVuZGVyVGhlbWVXaW46OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IoT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IG9wdGlvbnMp
IGNvbnN0CkBAIC0xMDA5LDcgKzEwMDksNyBAQCBDb2xvciBSZW5kZXJUaGVtZVdpbjo6c3lzdGVt
Q29sb3IoQ1NTVmFsCiAgICAgICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoY3Nz
VmFsdWVJZCwgb3B0aW9ucyk7CiAKICAgICBDT0xPUlJFRiBjb2xvciA9IEdldFN5c0NvbG9yKHN5
c0NvbG9ySW5kZXgpOwotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoR2V0UlZhbHVlKGNvbG9y
KSwgR2V0R1ZhbHVlKGNvbG9yKSwgR2V0QlZhbHVlKGNvbG9yKSk7CisgICAgcmV0dXJuIFNSR0JB
PHVpbnQ4X3Q+IHsgR2V0UlZhbHVlKGNvbG9yKSwgR2V0R1ZhbHVlKGNvbG9yKSwgR2V0QlZhbHVl
KGNvbG9yKSB9OwogfQogCiAjaWYgRU5BQkxFKFZJREVPKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAkocmV2
aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBw
YWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbAogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFNoYWRvd0RhdGE+IGRlYnVnU2hhZG93ID0gbnVsbHB0cjsKICAgICBpZiAoZmxvdy5zZXR0aW5n
cygpLnNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKCkpIHsKLSAgICAgICAgZGVi
dWdTaGFkb3cgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KDAsIDApLCAxMCwgMjAs
IFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIG1ha2VTaW1wbGVDb2xvcigwLCAyNTUsIDAsIDIw
MCkpOworICAgICAgICBkZWJ1Z1NoYWRvdyA9IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oSW50UG9p
bnQoMCwgMCksIDEwLCAyMCwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3I6OmdyZWVu
LmNvbG9yV2l0aEFscGhhKDIwMCkpOwogICAgICAgICB0ZXh0UGFpbnRlci5zZXRTaGFkb3coZGVi
dWdTaGFkb3cuZ2V0KCkpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAJKHJldmlzaW9uIDI2NDQ3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxC
bG9jazo6cGFpbnQoUGFpbnRJbmZvJgogCiAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhp
Y2tuZXNzKDEuMGYpOwogICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ry
b2tlKTsKLSAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihtYWtlU2ltcGxlQ29sb3Io
MCwgMCwgMjU1KSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJs
dWUpOwogCiAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwg
SW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0
aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpOwogICAgIGluZm8uY29udGV4dCgpLmRyYXdM
aW5lKEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0
V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50
T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZz
ZXQueSgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkpKTsKQEAgLTEyOCwxMyArMTI4LDEz
IEBAIHZvaWQgUmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KFBhaW50SW5mbyYKIAogICAgIGludCB0
b3BTdGFydCA9IHBhZGRpbmdUb3AoKTsKIAotICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNv
bG9yKG1ha2VTaW1wbGVDb2xvcigwLCAyNTUsIDApKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRT
dHJva2VDb2xvcihDb2xvcjo6Z3JlZW4pOwogCiAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUo
SW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgp
ICsgdG9wU3RhcnQpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25h
cHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgdG9wU3RhcnQpKTsK
IAogICAgIGludCBiYXNlbGluZSA9IHJvdW5kVG9JbnQoYmFzZWxpbmVQb3NpdGlvbihBbHBoYWJl
dGljQmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lKSk7CiAKLSAgICBpbmZvLmNvbnRleHQo
KS5zZXRTdHJva2VDb2xvcihtYWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAwKSk7CisgICAgaW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OnJlZCk7CiAKICAgICBpbmZvLmNvbnRleHQo
KS5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWlu
dE9mZnNldC55KCkgKyBiYXNlbGluZSksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgp
ICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBi
YXNlbGluZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDI2LDcgKzIw
MjYsNyBAQCBDb2xvciBSZW5kZXJTdHlsZTo6Y29sb3JSZXNvbHZpbmdDdXJyZW50CiAgICAgaWYg
KGlzQ3VycmVudENvbG9yKHJlc3VsdCkpIHsKICAgICAgICAgYXV0byBib3JkZXJTdHlsZSA9IGNv
bXB1dGVCb3JkZXJTdHlsZSgpOwogICAgICAgICBpZiAoIXZpc2l0ZWRMaW5rICYmIChib3JkZXJT
dHlsZSA9PSBCb3JkZXJTdHlsZTo6SW5zZXQgfHwgYm9yZGVyU3R5bGUgPT0gQm9yZGVyU3R5bGU6
Ok91dHNldCB8fCBib3JkZXJTdHlsZSA9PSBCb3JkZXJTdHlsZTo6UmlkZ2UgfHwgYm9yZGVyU3R5
bGUgPT0gQm9yZGVyU3R5bGU6Okdyb292ZSkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVNpbXBs
ZUNvbG9yKDIzOCwgMjM4LCAyMzgpOworICAgICAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+
IHsgMjM4LCAyMzgsIDIzOCB9OwogCiAgICAgICAgIHJldHVybiB2aXNpdGVkTGluayA/IHZpc2l0
ZWRMaW5rQ29sb3IoKSA6IGNvbG9yKCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDI2NDQ3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC03MywxMCArNzMsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgaW5p
dGlhbFN0cm9rZVBhaW50VXJpKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBzdGF0aWMgVmVj
dG9yPFNWR0xlbmd0aFZhbHVlPiBpbml0aWFsU3Ryb2tlRGFzaEFycmF5KCkgeyByZXR1cm4geyB9
OyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxTdG9wT3BhY2l0eSgpIHsgcmV0dXJuIDE7IH0K
LSAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbFN0b3BDb2xvcigpIHsgcmV0dXJuIG1ha2VTaW1wbGVD
b2xvcigwLCAwLCAwKTsgfQorICAgIHN0YXRpYyBDb2xvciBpbml0aWFsU3RvcENvbG9yKCkgeyBy
ZXR1cm4gQ29sb3I6OmJsYWNrOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxGbG9vZE9wYWNp
dHkoKSB7IHJldHVybiAxOyB9Ci0gICAgc3RhdGljIENvbG9yIGluaXRpYWxGbG9vZENvbG9yKCkg
eyByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDApOyB9Ci0gICAgc3RhdGljIENvbG9yIGlu
aXRpYWxMaWdodGluZ0NvbG9yKCkgeyByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAy
NTUpOyB9CisgICAgc3RhdGljIENvbG9yIGluaXRpYWxGbG9vZENvbG9yKCkgeyByZXR1cm4gQ29s
b3I6OmJsYWNrOyB9CisgICAgc3RhdGljIENvbG9yIGluaXRpYWxMaWdodGluZ0NvbG9yKCkgeyBy
ZXR1cm4gQ29sb3I6OndoaXRlOyB9CiAgICAgc3RhdGljIFNoYWRvd0RhdGEqIGluaXRpYWxTaGFk
b3coKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgc3RhdGljIFN0cmluZyBpbml0aWFsTWFza2Vy
UmVzb3VyY2UoKSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlh
bE1hcmtlclN0YXJ0UmVzb3VyY2UoKSB7IHJldHVybiBTdHJpbmcoKTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9u
SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaAkocmV2aXNpb24gMjY0NDcxKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1
bmN0aW9uSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgZmxvYXQgYmx1ZSA9IEJhc2U6OmFuaW1hdGUocHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBz
aW1wbGVGcm9tLmJsdWUsIHNpbXBsZVRvLmJsdWUsIHNpbXBsZVRvQXRFbmRPZkR1cmF0aW9uLmJs
dWUsIHNpbXBsZUFuaW1hdGVkLmJsdWUpOwogICAgICAgICBmbG9hdCBhbHBoYSA9IEJhc2U6OmFu
aW1hdGUocHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBzaW1wbGVGcm9tLmFscGhhLCBzaW1wbGVUby5h
bHBoYSwgc2ltcGxlVG9BdEVuZE9mRHVyYXRpb24uYWxwaGEsIHNpbXBsZUFuaW1hdGVkLmFscGhh
KTsKICAgICAgICAgCi0gICAgICAgIGFuaW1hdGVkID0gbWFrZVNpbXBsZUNvbG9yKHJvdW5kQW5k
Q2xhbXBDb2xvckNoYW5uZWwocmVkKSwgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChncmVlbiks
IHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoYmx1ZSksIHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5u
ZWwoYWxwaGEpKTsKKyAgICAgICAgYW5pbWF0ZWQgPSBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JH
QkE+KHN0ZDo6bHJvdW5kKHJlZCksIHN0ZDo6bHJvdW5kKGdyZWVuKSwgc3RkOjpscm91bmQoYmx1
ZSksIHN0ZDo6bHJvdW5kKGFscGhhKSk7CiAgICAgfQogCiAgICAgT3B0aW9uYWw8ZmxvYXQ+IGNh
bGN1bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0
cmluZyYgdG8pIGNvbnN0IG92ZXJyaWRlCkBAIC0xMTQsMjcgKzExNCwxMyBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIGlubGluZSB1aW50OF90IHJvdW5kQW5kQ2xhbXBDb2xvckNo
YW5uZWwoaW50IHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6Y2xhbXAodmFsdWUs
IDAsIDI1NSk7Ci0gICAgfQotCi0gICAgaW5saW5lIHVpbnQ4X3Qgcm91bmRBbmRDbGFtcENvbG9y
Q2hhbm5lbChmbG9hdCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmNsYW1wKHN0
ZDo6cm91bmRmKHZhbHVlKSwgMC4wZiwgMjU1LjBmKTsKLSAgICB9Ci0KICAgICB2b2lkIGFkZEZy
b21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50Kikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGF1dG8g
c2ltcGxlRnJvbSA9IG1fZnJvbS50b1NSR0JBTG9zc3k8dWludDhfdD4oKTsKICAgICAgICAgYXV0
byBzaW1wbGVUbyA9IG1fdG8udG9TUkdCQUxvc3N5PHVpbnQ4X3Q+KCk7CiAKICAgICAgICAgLy8g
SWdub3JlcyBhbnkgYWxwaGEgYW5kIHNldHMgYWxwaGEgb24gcmVzdWx0IHRvIDEwMCUgb3BhcXVl
LgotICAgICAgICBtX3RvID0gbWFrZVNpbXBsZUNvbG9yKAotICAgICAgICAgICAgcm91bmRBbmRD
bGFtcENvbG9yQ2hhbm5lbChzaW1wbGVUby5yZWQgKyBzaW1wbGVGcm9tLnJlZCksCi0gICAgICAg
ICAgICByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKHNpbXBsZVRvLmdyZWVuICsgc2ltcGxlRnJv
bS5ncmVlbiksCi0gICAgICAgICAgICByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKHNpbXBsZVRv
LmJsdWUgKyBzaW1wbGVGcm9tLmJsdWUpCi0gICAgICAgICk7CisgICAgICAgIG1fdG8gPSBjbGFt
cFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHNpbXBsZVRvLnJlZCArIHNpbXBsZUZyb20ucmVkLCBz
aW1wbGVUby5ncmVlbiArIHNpbXBsZUZyb20uZ3JlZW4sIHNpbXBsZVRvLmJsdWUgKyBzaW1wbGVG
cm9tLmJsdWUpOwogICAgIH0KIAogICAgIHN0YXRpYyBDb2xvciBjb2xvckZyb21TdHJpbmcoU1ZH
RWxlbWVudCosIGNvbnN0IFN0cmluZyYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDUsMTAgKzEwNSwxMCBAQCB2b2lkIE1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZHJh
d1JlY3QoUGFnCiAgICAgRmxvYXRSZWN0IGluc2V0UmVjdCA9IG92ZXJsYXkuYm91bmRzKCk7CiAK
ICAgICBpZiAob3ZlcmxheS5vdmVybGF5VHlwZSgpID09IFBhZ2VPdmVybGF5OjpPdmVybGF5VHlw
ZTo6RG9jdW1lbnQpIHsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihtYWtlU2ltcGxl
Q29sb3IoMCwgMjU1LCAwKSk7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6
OmdyZWVuKTsKICAgICAgICAgaW5zZXRSZWN0LmluZmxhdGUoLTUwKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKG1ha2VTaW1wbGVDb2xvcigwLCAwLCAyNTUp
KTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6Ymx1ZSk7CiAgICAgICAg
IGluc2V0UmVjdC5pbmZsYXRlKC0yMCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRp
ZmljYXRpb25PdmVybGF5Lm1tCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0JKHdvcmtp
bmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmll
dzooUGxhdGZvcgogICAgIF9sYXllciA9IGFkb3B0TlMoW1tDQVRpbGVkTGF5ZXIgYWxsb2NdIGlu
aXRdKTsKICAgICBbX2xheWVyIHNldE5hbWU6QCJXZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25P
dmVybGF5Il07CiAgICAgW19sYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIFtfdmlldyBi
b3VuZHNdLnNpemUud2lkdGgsIFtfdmlldyBib3VuZHNdLnNpemUuaGVpZ2h0KV07Ci0gICAgV2Vi
Q29yZTo6Q29sb3Igdmlld0NvbG9yID0gaXNEZXByZWNhdGVkID8gV2ViQ29yZTo6bWFrZVNpbXBs
ZUNvbG9yKDI1NSwgMCwgMCwgMzIpIDogV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDAsIDAsIDI1
NSwgMzIpOworICAgIGF1dG8gdmlld0NvbG9yID0gaXNEZXByZWNhdGVkID8gV2ViQ29yZTo6Q29s
b3I6OnJlZC5jb2xvcldpdGhBbHBoYSg1MCkgOiBXZWJDb3JlOjpDb2xvcjo6Ymx1ZS5jb2xvcldp
dGhBbHBoYSgzMik7CiAgICAgW19sYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xv
cih2aWV3Q29sb3IpXTsKICAgICBbX2xheWVyIHNldFpQb3NpdGlvbjo5OTldOwogICAgIFtfbGF5
ZXIgc2V0RGVsZWdhdGU6c2VsZl07CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NDcxKQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAor
MjAyMC0wNy0xNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIGZpbmFsIHZlc3RpZ2F0ZXMgb2YgU2ltcGxlQ29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDQzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmRyYXdJbkNvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF90YXBIaWdo
bGlnaHRDb2xvckZvckZhc3RDbGljazpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JD
bGllbnQ6OnNob3dQYWludFJlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5k
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpkcmF3UmVj
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpwYWludFNuYXBzaG90QXRTaXplKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICBSZXBsYWNlIHJl
bWFpbmluZyBtYWtlU2ltcGxlQ29sb3IoKSB1c2VzLgorCiAyMDIwLTA3LTE2ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFkZCBzeXNjYWxs
IHRvIFdlYkNvbnRlbnQgc2FuZGJveApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bQkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksNyAr
MzE5LDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udAogCiAjaWZu
ZGVmIE5ERUJVRwogICAgIGlmIChtX2lzT3BhcXVlKQotICAgICAgICBjb250ZXh0LmZpbGxSZWN0
KHNjYWxlZExheWVyQm91bmRzLCBXZWJDb3JlOjptYWtlU2ltcGxlQ29sb3IoMjU1LCA0NywgMTQ2
KSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc2NhbGVkTGF5ZXJCb3VuZHMsIFdlYkNvcmU6
OlNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCA0NywgMTQ2IH0pOwogI2VuZGlmCiAKICAgICBjb250ZXh0
LnNjYWxlKG1fc2NhbGUpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCShyZXZpc2lvbiAyNjQ0NzEpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC00MzU3LDcgKzQzNTcsNyBAQCAtICh2b2lkKV9iZWNvbWVGaXJz
dFJlc3BvbmRlcldpdGhTZWxlY3RpCiAtIChXZWJDb3JlOjpDb2xvcilfdGFwSGlnaGxpZ2h0Q29s
b3JGb3JGYXN0Q2xpY2s6KEJPT0wpZm9yRmFzdENsaWNrCiB7CiAgICAgQVNTRVJUKF9zaG93RGVi
dWdUYXBIaWdobGlnaHRzRm9yRmFzdENsaWNraW5nKTsKLSAgICByZXR1cm4gZm9yRmFzdENsaWNr
ID8gV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDAsIDIyNSwgMCwgMTI3KSA6IFdlYkNvcmU6Om1h
a2VTaW1wbGVDb2xvcigyMjUsIDAsIDAsIDEyNyk7CisgICAgcmV0dXJuIGZvckZhc3RDbGljayA/
IFdlYkNvcmU6OlNSR0JBPHVpbnQ4X3Q+IHsgMCwgMjI1LCAwLCAxMjcgfSA6IFdlYkNvcmU6OlNS
R0JBPHVpbnQ4X3Q+IHsgMjI1LCAwLCAwLCAxMjcgfTsKIH0KIAogLSAodm9pZClfc2V0RG91Ymxl
VGFwR2VzdHVyZXNFbmFibGVkOihCT09MKWVuYWJsZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckNsaWVudC5jcHAJ
KHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDcgKzE3Nyw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzaG93UGFpbnRSZWN0KGMKICAgICBwYWludExheWVy
LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CiAgICAgcGFpbnRMYXllci0+c2V0UG9z
aXRpb24ocmVjdC5sb2NhdGlvbigpKTsKICAgICBwYWludExheWVyLT5zZXRTaXplKHJlY3Quc2l6
ZSgpKTsKLSAgICBwYWludExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IobWFrZVNpbXBsZUNvbG9y
KDI1NSwgMCwgMCwgNTEpKTsKKyAgICBwYWludExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29s
b3I6OnJlZC5jb2xvcldpdGhBbHBoYSg1MSkpOwogCiAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgZmFk
ZUtleWZyYW1lcyhBbmltYXRlZFByb3BlcnR5T3BhY2l0eSk7CiAgICAgZmFkZUtleWZyYW1lcy5p
bnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLCAxKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwOCw4ICs1MDgsOCBAQCB2b2lk
IEZpbmRDb250cm9sbGVyOjpkcmF3UmVjdChQYWdlT3ZlcmxhCiB7CiAgICAgY29uc3QgaW50IGJv
cmRlcldpZHRoID0gMTsKIAotICAgIGNvbnN0ZXhwciBhdXRvIG92ZXJsYXlCYWNrZ3JvdW5kQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMjYsIDI2LCAyNiwgNjQpOwotICAgIGNvbnN0ZXhwciBhdXRv
IHNoYWRvd0NvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDEyOCk7CisgICAgY29uc3Rl
eHByIGF1dG8gb3ZlcmxheUJhY2tncm91bmRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjYsIDI2
LCAyNiwgNjQgfTsKKyAgICBjb25zdGV4cHIgYXV0byBzaGFkb3dDb2xvciA9IENvbG9yOjpibGFj
ay5jb2xvcldpdGhBbHBoYSgxMjgpOwogCiAgICAgSW50UmVjdCBib3JkZXJJbmZsYXRlZERpcnR5
UmVjdCA9IGRpcnR5UmVjdDsKICAgICBib3JkZXJJbmZsYXRlZERpcnR5UmVjdC5pbmZsYXRlKGJv
cmRlcldpZHRoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQxMiw3ICsyNDEyLDcgQEAg
dm9pZCBXZWJQYWdlOjpwYWludFNuYXBzaG90QXRTaXplKGNvbnN0IAogCiAgICAgaWYgKG9wdGlv
bnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvblJlY3RhbmdsZSkgewogICAgICAgICBG
bG9hdFJlY3Qgc2VsZWN0aW9uUmVjdGFuZ2xlID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
Qm91bmRzKCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihtYWtlU2lt
cGxlQ29sb3IoMjU1LCAwLCAwKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VD
b2xvcihDb2xvcjo6cmVkKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnN0cm9rZVJlY3Qoc2Vs
ZWN0aW9uUmVjdGFuZ2xlLCAxKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCShy
ZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
RmluZENvbnRyb2xsZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgY29u
c3QgaW50IHRvdGFsVmVydGljYWxNYXJnaW4gPSAxOwogCiBjb25zdGV4cHIgT3B0aW9uU2V0PFRl
eHRJbmRpY2F0b3JPcHRpb24+IGZpbmRUZXh0SW5kaWNhdG9yT3B0aW9ucyB7IFRleHRJbmRpY2F0
b3JPcHRpb246OkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgVGV4dEluZGlj
YXRvck9wdGlvbjo6RG9Ob3RDbGlwVG9WaXNpYmxlUmVjdCB9OwogCi1jb25zdGV4cHIgYXV0byBo
aWdobGlnaHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDIyOCwgNTYpOworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGhpZ2hsaWdodENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNTUsIDIyOCwg
NTYgfTsKIAogdm9pZCBGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUzo6ZHJhd1JlY3QoUGFn
ZU92ZXJsYXkmIG92ZXJsYXksIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0KQogewpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gMjY0NDcxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDctMTYgIFNhbSBXZWluaWcgIDx3ZWluaWdA
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBmaW5hbCB2ZXN0aWdhdGVzIG9mIFNpbXBsZUNv
bG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0
MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbToKKyAgICAgICAgUmVwbGFjZSByZW1haW5pbmcgbWFr
ZVNpbXBsZUNvbG9yKCkgdXNlcy4KKwogMjAyMC0wNy0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGEgZmV3IG1vcmUgdXNlcyBvZiB0aGUgdGVybXMg
YmxhY2svd2hpdGUgbGlzdApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJJbmRpY2F0ZUxheWVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbQkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbmRpY2F0ZUxheWVyLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01MCw3ICs1MCw3IEBAIC0gKGlkKWluaXRXaXRoV2ViVmlldzooV2ViVmlldyAqKXdl
YlZpZXcKICAgICBzZWxmLmNvbnRlbnRzU2NhbGUgPSBbW193ZWJWaWV3IHdpbmRvd10gc2NyZWVu
U2NhbGVdOwogCiAgICAgLy8gQmx1ZSBoaWdobGlnaHQgY29sb3IuCi0gICAgY29uc3RleHByIGF1
dG8gaGlnaGxpZ2h0Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTExLCAxNjgsIDIyMCwgMTY4KTsK
KyAgICBjb25zdGV4cHIgYXV0byBoaWdobGlnaHRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTEx
LCAxNjgsIDIyMCwgMTY4IH07CiAgICAgc2VsZi5iYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0Nv
bG9yKGhpZ2hsaWdodENvbG9yKTsKIAogICAgIHJldHVybiBzZWxmOwpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDct
MTYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBmaW5h
bCB2ZXN0aWdhdGVzIG9mIFNpbXBsZUNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoY29tcG9zaXRpb25Ub1VuZGVybGluZXMpOgor
ICAgICAgICBSZXBsYWNlIHJlbWFpbmluZyBtYWtlU2ltcGxlQ29sb3IoKSB1c2VzLgorCiAyMDIw
LTA3LTA3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBQYXJ0IDIg
b2YgU2ltcGxlQ29sb3IgYW5kIFNSR0JBPHVpbnQ4X3Q+IGFyZSBlc3NlbnRpYWxseSB0aGUgc2Ft
ZSAtIGxldCdzIGNvbnZlcmdlIHRoZW0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjQ0NzEp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTEgKzc0LDExIEBAIHN0YXRpYyBjb25zdCBpbnQgYm9y
ZGVyUmFkaXVzID0gMTI7CiBzdGF0aWMgY29uc3QgaW50IGJvcmRlclRoaWNrbmVzcyA9IDI7CiAK
IC8vIENvbG9ycwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJhY2tncm91bmRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigzMiwgMzIsIDMyLCAxNjApOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJvcmRl
ckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDE2MCwgMTYwLCAxNjApOwotc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIHNsaWRlckd1dHRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwLCAyMCwgMjApOwot
c3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlckJ1dHRvbkNvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDEyOCwgMTI4LCAxMjgpOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRleHRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBiYWNrZ3Jv
dW5kQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDMyLCAzMiwgMzIsIDE2MCB9Oworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGJvcmRlckNvbG9yID0gU1JHQkE8dWludDhfdD4geyAxNjAsIDE2MCwgMTYw
IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyR3V0dGVyQ29sb3IgPSBTUkdCQTx1aW50
OF90PiB7IDIwLCAyMCwgMjAgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJCdXR0b25D
b2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTI4LCAxMjgsIDEyOCB9Oworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIHRleHRDb2xvciA9IENvbG9yOjp3aGl0ZTsKIAogSFVEQnV0dG9uOjpIVURCdXR0b24o
SFVEQnV0dG9uVHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiAgICAgOiBIVURX
aWRnZXQoSW50UmVjdChwb3NpdGlvbiwgSW50U2l6ZSgpKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjI4Myw3ICs2MjgzLDcgQEAgc3Rh
dGljIHZvaWQgY29tcG9zaXRpb25Ub1VuZGVybGluZXMoY29ucwogICAgICAgICB1bmRlcmxpbmVz
W2ldLmVuZE9mZnNldCA9IGNsYXVzZXNbaSArIDFdOwogICAgICAgICBCWVRFIGF0dHJpYnV0ZSA9
IGF0dHJpYnV0ZXNbY2xhdXNlc1tpXV07CiAgICAgICAgIHVuZGVybGluZXNbaV0udGhpY2sgPSBh
dHRyaWJ1dGUgPT0gQVRUUl9UQVJHRVRfQ09OVkVSVEVEIHx8IGF0dHJpYnV0ZSA9PSBBVFRSX1RB
UkdFVF9OT1RDT05WRVJURUQ7Ci0gICAgICAgIHVuZGVybGluZXNbaV0uY29sb3IgPSBtYWtlU2lt
cGxlQ29sb3IoMCwgMCwgMCk7CisgICAgICAgIHVuZGVybGluZXNbaV0uY29sb3IgPSBDb2xvcjo6
YmxhY2s7CiAgICAgfQogfQogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQ0OTMpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNy0xNiAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGZpbmFsIHZlc3RpZ2F0ZXMgb2YgU2lt
cGxlQ29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNDQzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbG9yVGVzdHMuY3BwOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yVGVzdHMuY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3QubW06Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQubW06CisgICAgICAg
IFJlcGxhY2UgcmVtYWluaW5nIG1ha2VTaW1wbGVDb2xvcigpIHVzZXMuCisKIDIwMjAtMDctMTYg
IEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtjb25maWd1
cmUteGNvZGUtZm9yLWVtYmVkZGVkLWRldmVsb3BtZW50XSBTdXBwb3J0IFRCRCB2ZXJzaW9uIDQK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db2xvclRlc3RzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29sb3JUZXN0
cy5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9Db2xvclRlc3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBURVNU
KENvbG9yLCBSR0JUb0hTTF9CbGFjaykKIAogVEVTVChDb2xvciwgUkdCVG9IU0xfUmVkKQogewot
ICAgIENvbG9yIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCk7CisgICAgQ29sb3Ig
Y29sb3IgPSBDb2xvcjo6cmVkOwogCiAgICAgYXV0byBoc2xhQ29sb3IgPSB0b0hTTEEoY29sb3Iu
dG9TUkdCQUxvc3N5PGZsb2F0PigpKTsKIApAQCAtODQsNyArODQsNyBAQCBURVNUKENvbG9yLCBS
R0JUb0hTTF9SZWQpCiAKIFRFU1QoQ29sb3IsIFJHQlRvSFNMX0dyZWVuKQogewotICAgIENvbG9y
IGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCk7CisgICAgQ29sb3IgY29sb3IgPSBD
b2xvcjo6Z3JlZW47CiAKICAgICBhdXRvIGhzbGFDb2xvciA9IHRvSFNMQShjb2xvci50b1NSR0JB
TG9zc3k8ZmxvYXQ+KCkpOwogCkBAIC0xMDAsNyArMTAwLDcgQEAgVEVTVChDb2xvciwgUkdCVG9I
U0xfR3JlZW4pCiAKIFRFU1QoQ29sb3IsIFJHQlRvSFNMX0JsdWUpCiB7Ci0gICAgQ29sb3IgY29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMjU1KTsKKyAgICBDb2xvciBjb2xvciA9IENvbG9y
OjpibHVlOwogCiAgICAgYXV0byBoc2xhQ29sb3IgPSB0b0hTTEEoY29sb3IudG9TUkdCQUxvc3N5
PGZsb2F0PigpKTsKIApAQCAtMTcyLDcgKzE3Miw3IEBAIFRFU1QoQ29sb3IsIFZhbGlkaXR5KQog
ICAgIEVYUEVDVF9GQUxTRShvdGhlckludmFsaWRDb2xvci5pc1ZhbGlkKCkpOwogICAgIEVYUEVD
VF9GQUxTRShvdGhlckludmFsaWRDb2xvci5pc0V4dGVuZGVkKCkpOwogCi0gICAgQ29sb3IgdmFs
aWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDApOworICAgIENvbG9yIHZhbGlkQ29s
b3IgPSBDb2xvcjo6cmVkOwogICAgIEVYUEVDVF9UUlVFKHZhbGlkQ29sb3IuaXNWYWxpZCgpKTsK
ICAgICBFWFBFQ1RfRkFMU0UodmFsaWRDb2xvci5pc0V4dGVuZGVkKCkpOwogCkBAIC0xODAsNyAr
MTgwLDcgQEAgVEVTVChDb2xvciwgVmFsaWRpdHkpCiAgICAgRVhQRUNUX1RSVUUob3RoZXJWYWxp
ZENvbG9yLmlzVmFsaWQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKG90aGVyVmFsaWRDb2xvci5pc0V4
dGVuZGVkKCkpOwogCi0gICAgdmFsaWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigxLCAyLCAzLCA0
KTsKKyAgICB2YWxpZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAxLCAyLCAzLCA0IH07CiAgICAg
RVhQRUNUX1RSVUUodmFsaWRDb2xvci5pc1ZhbGlkKCkpOwogICAgIEVYUEVDVF9GQUxTRSh2YWxp
ZENvbG9yLmlzRXh0ZW5kZWQoKSk7CiAgICAgYXV0byB2YWxpZENvbG9yQ29tcG9uZW50cyA9IHZh
bGlkQ29sb3IudG9TUkdCQUxvc3N5PHVpbnQ4X3Q+KCk7CkBAIC0yMTMsNyArMjEzLDcgQEAgVEVT
VChDb2xvciwgTHVtaW5hbmNlKQogICAgIEVYUEVDVF9GTE9BVF9FUShDb2xvcihDb2xvcjo6Ymxh
Y2spLmx1bWluYW5jZSgpLCAwKTsKICAgICBFWFBFQ1RfRkxPQVRfRVEoQ29sb3IoQ29sb3I6Ondo
aXRlKS5sdW1pbmFuY2UoKSwgMSk7CiAKLSAgICBhdXRvIGNDb21wb25lbnRzID0gbWFrZVNpbXBs
ZUNvbG9yKDg1LCA5MCwgMTYwKTsKKyAgICBhdXRvIGNDb21wb25lbnRzID0gU1JHQkE8dWludDhf
dD4geyA4NSwgOTAsIDE2MCB9OwogICAgIEVYUEVDVF9GTE9BVF9FUShDb2xvcihjQ29tcG9uZW50
cykubHVtaW5hbmNlKCksIDAuMTE3ODE2OTIpOwogCiAgICAgRVhQRUNUX0VRKGNDb21wb25lbnRz
LnJlZCwgODUpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVu
ZGVkQ29sb3JUZXN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yVGVzdHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDgsMTIgKzEwOCw5IEBAIFRFU1QoRXh0ZW5kZWRDb2xvciwgRXF1
YWxpdHkpCiAgICAgICAgIEVYUEVDVF9ORShjMSwgYzIpOwogICAgIH0KIAotICAgIGludCByID0g
MjU1OwotICAgIGludCBnID0gMTI4OwotICAgIGludCBiID0gNjM7Ci0gICAgaW50IGEgPSAxMjc7
Ci0gICAgQ29sb3IgcmdiMSB7IFNSR0JBPGZsb2F0PiB7IHIgLyAyNTUuMGYsIGcgLyAyNTUuMGYs
IGIgLyAyNTUuMGYsIGEgLyAyNTUuMGYgfSB9OwotICAgIENvbG9yIHJnYjIgPSBtYWtlU2ltcGxl
Q29sb3IociwgZywgYiwgYSk7CisgICAgYXV0byBjb21wb25lbnRCeXRlcyA9IFNSR0JBPHVpbnQ4
X3Q+IHsgMjU1LCAxMjgsIDYzLCAxMjcgfTsKKyAgICBDb2xvciByZ2IxIHsgY29udmVydFRvQ29t
cG9uZW50RmxvYXRzKGNvbXBvbmVudEJ5dGVzKSB9OworICAgIENvbG9yIHJnYjIgeyBjb21wb25l
bnRCeXRlcyB9OwogICAgIEVYUEVDVF9ORShyZ2IxLCByZ2IyKTsKICAgICBFWFBFQ1RfTkUocmdi
MiwgcmdiMSk7CiB9CkBAIC0xNDAsMTIgKzEzNyw5IEBAIFRFU1QoRXh0ZW5kZWRDb2xvciwgSGFz
aCkKICAgICAgICAgRVhQRUNUX05FKGMxLmhhc2goKSwgYzIuaGFzaCgpKTsKICAgICB9CiAKLSAg
ICBpbnQgciA9IDI1NTsKLSAgICBpbnQgZyA9IDEyODsKLSAgICBpbnQgYiA9IDYzOwotICAgIGlu
dCBhID0gMTI3OwotICAgIENvbG9yIHJnYjEgeyBTUkdCQTxmbG9hdD4geyByIC8gMjU1LjBmLCBn
IC8gMjU1LjBmLCBiIC8gMjU1LjBmLCBhIC8gMjU1LjBmIH0gfTsKLSAgICBDb2xvciByZ2IyID0g
bWFrZVNpbXBsZUNvbG9yKHIsIGcsIGIsIGEpOworICAgIGF1dG8gY29tcG9uZW50Qnl0ZXMgPSBT
UkdCQTx1aW50OF90PiB7IDI1NSwgMTI4LCA2MywgMTI3IH07CisgICAgQ29sb3IgcmdiMSB7IGNv
bnZlcnRUb0NvbXBvbmVudEZsb2F0cyhjb21wb25lbnRCeXRlcykgfTsKKyAgICBDb2xvciByZ2Iy
IHsgY29tcG9uZW50Qnl0ZXMgfTsKICAgICBFWFBFQ1RfTkUocmdiMS5oYXNoKCksIHJnYjIuaGFz
aCgpKTsKIH0KIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
REZTbmFwc2hvdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1BERlNuYXBzaG90Lm1tCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC01OCw3ICs1OCw3IEBAIFRFU1QoUERGU25hcHNob3QsIEZ1bGxDb250ZW50KQogICAgICAg
ICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzRdLCAnbycpOwogCiAgICAgICAgIC8vIFRoZSBlbnRp
cmUgcGFnZSBzaG91bGQgYmUgZ3JlZW4uIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNo
ZWNrLgotICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09
IFdlYkNvcmU6Om1ha2VTaW1wbGVDb2xvcigwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBXZWJDb3JlOjpDb2xvcjo6Z3JlZW4p
OwogCiAgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CiAgICAgfV07CkBAIC04OSw3ICs4
OSw3IEBAIFRFU1QoUERGU25hcHNob3QsIFN1YnJlZ2lvbnMpCiAgICAgICAgIEVYUEVDVF9FUShw
YWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAwdSk7CiAKICAgICAgICAgLy8gVGhlIGVudGlyZSBwYWdl
IHNob3VsZCBiZSBncmVlbi4gUGljayBhIHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCi0g
ICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCgyMDAsIDE1MCkgPT0gV2ViQ29y
ZTo6bWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdl
LT5jb2xvckF0UG9pbnQoMjAwLCAxNTApID09IFdlYkNvcmU6OkNvbG9yOjpncmVlbik7CiAKICAg
ICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKICAgICB9XTsKQEAgLTEwOSwxMCArMTA5LDEw
IEBAIFRFU1QoUERGU25hcHNob3QsIFN1YnJlZ2lvbnMpCiAgICAgICAgIEVYUEVDVF9UUlVFKENH
UmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDEyMDAsIDEy
MDApKSk7CiAKICAgICAgICAgLy8gQSBwaXhlbCB0aGF0IHdhcyBpbiB0aGUgdmlldyBzaG91bGQg
YmUgZ3JlZW4uIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgotICAgICAgICBF
WFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoMjAwLCAxNTApID09IFdlYkNvcmU6Om1ha2VT
aW1wbGVDb2xvcigwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JB
dFBvaW50KDIwMCwgMTUwKSA9PSBXZWJDb3JlOjpDb2xvcjo6Z3JlZW4pOwogCiAgICAgICAgIC8v
IEEgcGl4ZWwgdGhhdCB3YXMgb3V0c2lkZSB0aGUgdmlldyBzaG91bGQgYWxzbyBiZSBncmVlbiAo
d2UgZXh0ZW5kIGJhY2tncm91bmQgY29sb3Igb3V0KS4gUGljayBhIHBvaW50IGluIHRoZSBtaWRk
bGUgdG8gY2hlY2suCi0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg5MDAs
IDcwMCkgPT0gV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCkpOworICAgICAgICBF
WFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoOTAwLCA3MDApID09IFdlYkNvcmU6OkNvbG9y
OjpncmVlbik7CiAKICAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKICAgICB9XTsKQEAg
LTEzOCwyMCArMTM4LDIwIEBAIFRFU1QoUERGU25hcHNob3QsIE92ZXIyMDBJbmNoZXMpCiAgICAg
ICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOwogICAgICAgICBFWFBFQ1RfTkUocGFn
ZSwgbnVsbHB0cik7CiAgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2Ut
PmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgMTQ0MDApKSk7Ci0gICAgICAgIEVYUEVD
VF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gV2ViQ29yZTo6bWFrZVNpbXBs
ZUNvbG9yKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9p
bnQoNDAwLCAzMDApID09IFdlYkNvcmU6OkNvbG9yOjpncmVlbik7CiAgICAgICAgIEVYUEVDVF9F
UShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCA1dSk7CiAKICAgICAgICAgcGFnZSA9IGRvY3VtZW50
LT5wYWdlKDEpOwogICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CiAgICAgICAgIEVY
UEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAs
IDAsIDgwMCwgMTQ0MDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2lu
dCg0MDAsIDMwMCkgPT0gV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IFdlYkNvcmU6
OkNvbG9yOjpncmVlbik7CiAKICAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50
KCksIDB1KTsKIAogICAgICAgICBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMik7CiAgICAgICAgIEVY
UEVDVF9ORShwYWdlLCBudWxscHRyKTsKICAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxU
b1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApKSk7Ci0gICAg
ICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gV2ViQ29yZTo6
bWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5j
b2xvckF0UG9pbnQoNDAwLCAzMDApID09IFdlYkNvcmU6OkNvbG9yOjpncmVlbik7CiAgICAgICAg
IEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAwdSk7CiAKICAgICAgICAgZGlkVGFr
ZVNuYXBzaG90ID0gdHJ1ZTsKQEAgLTE3Niw3ICsxNzYsNyBAQCBURVNUKFBERlNuYXBzaG90LCBM
aW5rcykKICAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOwogCiAgICAgICAgIEVYUEVD
VF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAs
IDgwMCwgMTQ0MDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0
MDAsIDMwMCkgPT0gV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAyNTUpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBXZWJDb3Jl
OjpDb2xvcjo6d2hpdGUpOwogCiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3Vu
dCgpLCA4dSk7CiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT50ZXh0KClbMF0sICdDJyk7CkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbQkocmV2aXNp
b24gMjY0NDcxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE0NCw4ICsxNDQsOCBAQCBXZWJDb3JlOjpDb2xvciBUZXN0
UERGUGFnZTo6Y29sb3JBdFBvaW50CiAgICAgYXV0byBhID0gcGl4ZWxbaSArIDNdOwogCiAgICAg
aWYgKCFhKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAs
IDApOwotICAgIHJldHVybiBXZWJDb3JlOjptYWtlU2ltcGxlQ29sb3IociAqIDI1NSAvIGEsIGcg
KiAyNTUgLyBhLCBiICogMjU1IC8gYSwgYSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb2xv
cjo6dHJhbnNwYXJlbnQ7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNsYW1wVG9Db21wb25lbnRCeXRl
czxTUkdCQT4ociAqIDI1NSAvIGEsIGcgKiAyNTUgLyBhLCBiICogMjU1IC8gYSwgYSk7CiB9CiAK
IC8vIERvY3VtZW50cwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404521</attachid>
            <date>2020-07-16 19:47:15 -0700</date>
            <delta_ts>2020-07-16 20:39:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214439-20200716194714.patch</filename>
            <type>text/plain</type>
            <size>130610</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA3LTE2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZmluYWwgdmVzdGlnYXRlcyBvZiBTaW1wbGVD
b2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0
NDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
dGYvS2V5VmFsdWVQYWlyLmg6CisgICAgICAgIChXVEY6OktleVZhbHVlUGFpcjo6S2V5VmFsdWVQ
YWlyKToKKyAgICAgICAgQWRkIG92ZXJsb2FkIG9mIGNvbnN0cnVjdG9yIHRoYXQgaXMgbm90IGEg
dGVtcGxhdGUgZnVuY3Rpb24gdG8gYWlkIGRlZHVjdGlvbgorICAgICAgICB3aGVuIHVzaW5nIHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdHMgdG8gY29udHJ1Y3QgYSBIYXNoTWFwLgorCiAyMDIwLTA3LTE2
ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQmlnIFN1
cl0gQnVpbGQgb24gU2VlZCAxCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9LZXlWYWx1ZVBhaXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9LZXlWYWx1ZVBhaXIuaAkocmV2aXNpb24gMjY0
NDcxKQorKysgU291cmNlL1dURi93dGYvS2V5VmFsdWVQYWlyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDYgKzQwLDEyIEBAIHN0cnVjdCBLZXlWYWx1ZVBhaXIgewogICAgIHsKICAgICB9CiAKKyAg
ICBLZXlWYWx1ZVBhaXIoS2V5VHlwZUFyZyYmIGtleSwgVmFsdWVUeXBlQXJnJiYgdmFsdWUpCisg
ICAgICAgIDoga2V5KHN0ZDo6Zm9yd2FyZDxLZXlUeXBlQXJnPihrZXkpKQorICAgICAgICAsIHZh
bHVlKHN0ZDo6Zm9yd2FyZDxWYWx1ZVR5cGVBcmc+KHZhbHVlKSkKKyAgICB7CisgICAgfQorCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KICAgICBLZXlWYWx1ZVBhaXIoSyYm
IGtleSwgViYmIHZhbHVlKQogICAgICAgICA6IGtleShzdGQ6OmZvcndhcmQ8Sz4oa2V5KSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4OSBAQAorMjAyMC0wNy0xNiAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGZpbmFsIHZlc3RpZ2F0ZXMg
b2YgU2ltcGxlQ29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNDQzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlcGxhY2UgcmVtYWluaW5nIG1ha2VTaW1wbGVDb2xvciB1c2VzOgorICAgICAgICAt
IExpdGVyYWwgLyBjb25zdGFudCBjb2xvcnMgc3dpdGNoZWQgdG8gdXNpbmcgU1JHQkE8dWludDhf
dD4geyAuLi4gfS4KKyAgICAgICAgLSBEaXJlY3QgY29uc3RydWN0aW9uIGZyb20gdWludDhfdCB2
YWx1ZXMgYWxzbyBzd2l0Y2hlZCB0byBTUkdCQTx1aW50OF90PiB7IC4uLiB9CisgICAgICAgIC0g
V2hlcmUgcG9zc2libGUgc3dpdGNoZWQgdG8gdXNpbmcgb2YgbmFtZWQgY29sb3JzIChlLmcuIENv
bG9yOjp5ZWxsb3cpIGJvdGgKKyAgICAgICAgICBkaXJlY3RseSBhbmQgd2hlcmUgYW4gb3ZlcnJp
ZGUgYWxwaGEgd2FzIG5lZWRlZC4gVG8gYWlkIHRoaXMsIG5ldyBuYW1lZAorICAgICAgICAgIGNv
bG9ycyB3ZXJlIGFkZGVkIGZvciByZWQsIG1hZ2VudGEsIGJsdWUsIGdyZWVuLCBkYXJrR3JlZW4g
YW5kIG9yYW5nZS4KKyAgICAgICAgLSBSZW1haW5pbmcgY2FsbGVycyBzd2l0Y2hlZCB0byBkaXJl
Y3RseSBjYWxsaW5nIGNsYW1wVG9Db21wb25lbnRCeXRlcywgd2hpY2gKKyAgICAgICAgICB3YXMg
YWxsIHRoYXQgbWFrZVNpbXBsZUNvbG9yIGRpZC4gQW4gb3ZlcmxvYWQgb2YgY2xhbXBUb0NvbXBv
bmVudEJ5dGVzIHRoYXQKKyAgICAgICAgICBkb2Vzbid0IHJlcXVpcmUgdGhlIGFscGhhIHBhcmFt
ZXRlciB3YXMgYWRkZWQgdG8gc2ltcGxpZnkgY2FsbHMuCisgICAgCisgICAgICAgIFRvIG1ha2Ug
Y29uc3RydWN0aW9uIG9mIFNSR0JBPHVpbnQ4X3Q+IHZhbHVlcyBuaWNlciwgY2FsbGVycyBubyBs
b25nZXIgbmVlZAorICAgICAgICB0byBzcGVjaWZ5IHRoZSBhbHBoYSBleHBsaWNpdGx5IGlmIHRo
ZSBjb2xvciBpcyBvcGFxdWUuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9TaW1wbGVDb2xvci5oOiBSZW1vdmVkLgorICAgICAgICBSZW1vdmUgU2ltcGxlQ29s
b3IuaAorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VOdW1lcmljQ29sb3IpOgorICAgICAgICBTd2l0Y2ggdG8gY2xh
bXBUb0NvbXBvbmVudEJ5dGVzLCBidXQgbGVhdmUgYSBGSVhNRSBpbmRpY2F0aW5nIHRoaXMgc2hv
dWxkIGJlCisgICAgICAgIHN3aXRjaGVkIHRvIGRpcmVjdCBTUkdCQTx1aW50OF90PiB3aGVuIGhl
cGxlciBmdW5jdGlvbnMgYXJlIGZpeGVkIHRvIHJldHVybgorICAgICAgICB1aW50OF90cyByYXRo
ZXIgdGhhbiBpbnRzLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yKToKKyAgICAgICAgU3dpdGNo
ZWQgdG8gY2xhbXBUb0NvbXBvbmVudEJ5dGVzIGFuZCByZW1vdmVkIGV4aXN0aW5nIHVubmVjZXNz
YXJ5IGFkZGl0aW9uYWwgY2xhbXBpbmcKKyAgICAgICAgb2YgdGhlIGFscGhhIGNvbXBvbmVudC4K
KworICAgICAgICAqIHBhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5OjpkcmF3UmVjdCk6CisgICAgICAgIFJl
c3RydWN0dXJlIEhhc2hNYXAgY29uc3RydWN0aW9uIHRvIHVzZSB0aGUgSGFzaE1hcCBzdGQ6Omlu
dGlhbGl6ZXJfbGlzdCBjb25zdHJ1Y3Rvci4KKyAgICAgICAgVGhpcyB0YWtlcyBhZHZhbnRhZ2Ug
b2YgYSBjaGFuZ2UgdG8gV1RGOjpLZXlWYWx1ZVBhaXIgdGhhdCBhbGxvd3MgaXQgZGVkdWNlIGlu
IHRoaXMKKyAgICAgICAgY29udGV4dC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmg6CisgICAgICAgIFJlbW92ZSBTaW1wbGVDb2xvci5oIGluY2x1ZGUsIGJ1dCBhZGQgQ29s
b3JCdWlsZGVyLmggYW5kIENvbG9yVXRpbGl0aWVzLmgKKyAgICAgICAgd2hpY2ggU2ltcGxlQ29s
b3Igd2FzIGluY2x1ZGluZyBvbiBpdHMgYmVoYWxmLiBBZGQgbmV3IG5hbWVkIGNvbG9ycyBmb3Ig
CisgICAgICAgIHJlZCwgbWFnZW50YSwgYmx1ZSwgZ3JlZW4sIGRhcmtHcmVlbiBhbmQgb3Jhbmdl
LiBGb3IgYWxsIG5hbWVkIGNvbG9ycywKKyAgICAgICAgdXNlIENvbG9yQnVpbGRlcjxTUkdCQTx1
aW50OF90Pj4gcmF0aGVyIHRoYW4gU1JHQkE8dWludDhfdD4gYWxvbmUgdG8gYWxsb3cKKyAgICAg
ICAgZm9yIGNhbGxlcnMgdG8gZG8gdGhpbmdzIGxpa2UgQ29sb3I6OnllbGxvdy5jb2xvcldpdGhB
bHBoYSguLi4pLiBJbiB0aGUgZnV0dXJlLAorICAgICAgICBpdCBtaWdodCBtYWtlIG1vcmUgc2Vu
c2UgdG8gbWVyZ2UgQ29sb3JCdWlsZGVyJ3MgZnVuY3Rpb25hbGl0eSBkaXJlY3RseSBpbnRvCisg
ICAgICAgIHRoZSBjb2xvciB0eXBlcywgYnV0IGZvciBub3cgdGhpcyBwcmVzZXJ2ZXMgdGhhdCBm
dW5jdGlvbmFsaXR5LgorCisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRk
aXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9u
Q29sb3JGdW5jdGlvbjo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25D
b2xvckZ1bmN0aW9uOjpyb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKTogRGVsZXRlZC4KKyAgICAg
ICAgUmVwbGFjZSBiZXNwb2tlIHJvdW5kaW5nL2NsYW1waW5nIGZ1bmN0aW9ucyBpbiBmYXZvciBv
ZiBDb2xvclV0aWxpdGllcy5oIGFnZ3JlZ2F0ZSBvbmVzIGFuZAorICAgICAgICBkaXJlY3RseSBj
YWxsaW5nIHN0ZDo6bHJvdW5kLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpwYXJzZVJHQlBhcmFtZXRlcnMpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRpb25I
aWdobGlnaHQuaDoKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlU2ltcGxlQ29sb3JWYWx1ZSk6CisgICAgICAgICogaHRtbC9IVE1MRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUxlZ2FjeUNvbG9yVmFsdWUpOgorICAg
ICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd091dGxpbmVkUXVh
ZFdpdGhDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdTaGFwZUhpZ2hsaWdodCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpwYWludCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3UGFpbnRSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JPdmVybGF5OjpkcmF3Qm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck92ZXJsYXk6OmRyYXdSdWxlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3Zlcmxh
eTo6ZHJhd0VsZW1lbnRUaXRsZSk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6TGluZUxheW91dDo6ZGVidWdUZXh0U2hhZG93KToKKyAgICAgICAgKiBwYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tncm91bmRDU1MgY29uc3QpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXMp
OgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Okhpc3RvcmljUmVzb3VyY2VVc2FnZURhdGE6Okhpc3RvcmljUmVzb3Vy
Y2VVc2FnZURhdGEpOgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlM
aW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZv
cm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1l
QWR3YWl0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYWR3YWl0YS9UaGVtZUFkd2FpdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVBZHdhaXRhOjphY3RpdmVTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVBZHdhaXRhOjphY3RpdmVT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVB
ZHdhaXRhOjppbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQmxlbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRTb3VyY2VPdmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kV2l0aFdoaXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQnVpbGRl
cjo6Y29sb3JXaXRoQWxwaGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JCdWlsZGVy
OjpDb2xvckJ1aWxkZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNSR0JBOjpTUkdCQSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNs
YW1wVG9Db21wb25lbnRCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50
RmxvYXRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OmdldERlYnVnQm9yZGVySW5mbyBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdl
cyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50c0xheWVyRGVidWdCb3JkZXJDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjbG9uZUxheWVyRGVidWdCb3JkZXJDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5
ZnJhbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGlj
YXRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb3ZlcmFnZU1hcDo6VGlsZUNvdmVyYWdlTWFwKToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb3ZlcmFnZU1hcDo6dXBkYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwOgor
ICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmRyYXdSZXBhaW50Q291bnRlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y29sb3JGb3JNYXJrZXJMaW5lU3R5bGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VTaW1w
bGVDb2xvckZyb21OU0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3RG90c0ZvckRvY3VtZW50
TWFya2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNo
ZTo6Y29sb3JGb3JHcmlkVGlsZUJvcmRlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
ZWZhdWx0RGV2aWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
ZHJhd0JveGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tCYWNr
Z3JvdW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9wbGF5c3RhdGlvbi9TY3JvbGxiYXJUaGVtZVBs
YXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUGxheVN0YXRp
b246OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0lt
YWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGF0dGVybkZvclRvdWNoQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdHRl
cm5Gb3JFdmVudExpc3RlbmVyUmVnaW9uVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OnBhaW50RGVidWdPdmVybGF5cyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwbGF0Zm9ybUFj
dGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZTo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9y
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVBZHdhaXRhLmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFp
bnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRQ
cm9ncmVzc0Jhcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6bWVudUJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZU1hYzo6c3lzdGVtQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lV2luOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdp
bjo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OnN5c3RlbUNvbG9yIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MQmxvY2s6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbG9yUmVzb2x2aW5nQ3VycmVu
dENvbG9yIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsU3RvcENvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsRmxvb2RDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbExpZ2h0aW5nQ29sb3IpOgor
ICAgICAgICAqIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZHJhd1JlY3QpOgorICAgICAgICAqIHRlc3Rp
bmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbToKKyAgICAgICAg
KC1bV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheSBpbml0V2l0aFdlYlZpZXc6a2lu
ZDpkZXByZWNhdGVkOl0pOgorICAgICAgICBSZXBsYWNlIG1ha2VTaW1wbGVDb2xvciB1c2VzIHdp
dGggYXBwcm9wcmlhdGUgYWx0ZXJuYXRpdmUuCisKIDIwMjAtMDctMTYgIFBlbmcgTGl1ICA8cGVu
Zy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBEb3VibGUgdGFwcGluZyB0byB6b29tIG91dCBh
IGZ1bGxzY3JlZW4gdmlkZW8gd2lsbCB6b29tIGluIHNsaWdodGx5IGJlZm9yZSB6b29taW5nIG91
dApJbmRleDogU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMTk0LDcgKzExOTQsNiBAQCBz
ZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlVmlkZW9TYW1wbGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01v
ZGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgKLSAgICBwbGF0Zm9ybS9n
cmFwaGljcy9TaW1wbGVDb2xvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNh
dG9yLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9UZXh0UnVuLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjIz
NCw3ICsyMjM0LDYgQEAKIAkJN0MyRkE2MTIxRUE5NUEzQzAwQTAzMTA4IC8qIFJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MyRkE2MTAxRUE5NUEzMjAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdDMzBEOTg0MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzMEQ5ODAxRjgxNUFD
MTAwMjY4MzU2IC8qIEpTQWJvcnRDb250cm9sbGVyLmggKi87IH07CiAJCTdDMzBEOTg2MUY4MTVB
RUMwMDI2ODM1NiAvKiBKU0Fib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMwRDk4MTFGODE1QUMxMDAyNjgzNTYgLyogSlNBYm9ydFNp
Z25hbC5oICovOyB9OwotCQk3QzMxQzg4RTI0N0FENTk1MDA1QkYzMTkgLyogU2ltcGxlQ29sb3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzFDODhD
MjQ3QUQ1OTUwMDVCRjMxOSAvKiBTaW1wbGVDb2xvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMzMwQTAyMURGOEZBQzYwMEQzMzk1QyAvKiBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzMwQTAxMURGOEZBQzYwMEQzMzk1QyAvKiBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QzMzMEEwODFERjlGOTUxMDBEMzM5NUMgLyogSlNQb3NpdGlvbk9wdGlv
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzMw
QTA2MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovOyB9OwogCQk3QzNB
OTFFNjFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNBOTFFNTFDOTYzQjg4MDBE
MUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk5OTYsNyArOTk5NSw2IEBACiAJCTdDMzBEOTgw
MUY4MTVBQzEwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0Fib3J0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzMwRDk4MTFGODE1QUMxMDAyNjgzNTYgLyogSlNBYm9ydFNpZ25hbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Fib3J0U2lnbmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzBEOTgyMUY4MTVBQzIwMDI2ODM1NiAvKiBKU0Fib3J0
U2lnbmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWJvcnRT
aWduYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzMxQzg4QzI0N0FENTk1
MDA1QkYzMTkgLyogU2ltcGxlQ29sb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2ltcGxlQ29sb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzMzBBMDEx
REY4RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzMzBBMDMxREY5RTk1QjAwRDMzOTVDIC8q
IFBvc2l0aW9uT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUG9zaXRpb25PcHRpb25zLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzMzBBMDUxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9zaXRp
b25PcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9z
aXRpb25PcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NzI2LDcg
KzI1NzI0LDYgQEAKIAkJCQlBNzNGOTVGRDEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3Qu
aCAqLywKIAkJCQkwRjNERDQ0RDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5jcHAgKi8s
CiAJCQkJMEYzREQ0NEUxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCAqLywKLQkJCQk3
QzMxQzg4QzI0N0FENTk1MDA1QkYzMTkgLyogU2ltcGxlQ29sb3IuaCAqLywKIAkJCQlDRDY0MUVC
MjE4MThGNUVEMDBFRTRDNDEgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5oICovLAogCQkJCUNEQzhC
NUFDMTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmggKi8sCiAJ
CQkJN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICovLApAQCAtMzMx
OTUsNyArMzMxOTIsNiBAQAogCQkJCTkzMzA5RUEzMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRU
aW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREYxOUUyQUMyNDc3MkJDMTAwN0JEQUNCIC8qIFNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
MzYyRThDMTIwQ0VGOUNCMDAyNDU4ODYgLyogU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk3QzMxQzg4RTI0N0FENTk1MDA1QkYzMTkgLyogU2ltcGxlQ29s
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0ODk0NEEzMTgwQjU3RDgwMEYxNjVEOCAvKiBTaW1w
bGVMaW5lTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMUUwNjdFRTFFNjI0NkU1MDAxNjJE
MTYgLyogU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1ODVE
NkUwNDFBMUE3OTJFMDBGQTRGMTIgLyogU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oIGlu
IEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZh
c3RQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJGYXN0UGF0aHMuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4Nyw3
ICs0ODcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgCiAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICBpZiAoY3VycmVudCAhPSBlbmQp
CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gbWFrZVNp
bXBsZUNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsgLy8gRklYTUU6IEFscmVhZHkgY2xh
bXBlZCwgZG9uJ3QgbmVlZCB0byByZS1jbGFtcCBhcyBtYWtlU2ltcGxlQ29sb3IgZG9lcy4KKyAg
ICAgICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4ocmVkLCBncmVlbiwgYmx1
ZSwgYWxwaGEpOyAvLyBGSVhNRTogQWxyZWFkeSBjbGFtcGVkLCBkb2Vzbid0IG5lZWQgdG8gcmUt
Y2xhbXAuIFVwZGF0ZSBwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlL3BhcnNlQWxwaGFWYWx1ZSB0
byByZXR1cm4gdWludDhfdCBhbmQgcmVwbGFjZSBjYWxsIHRvIGNsYW1wVG9Db21wb25lbnRCeXRl
cyB3aXRoIGRpcmVjdCBjb25zdHJ1Y3Rpb24gb2YgU1JHQkE8dWludDhfdD4uCiAgICAgfQogCiAg
ICAgLy8gVHJ5IHJnYigpIHN5bnRheC4KQEAgLTUwNSw3ICs1MDUsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgICAgICBpZiAoY3VycmVudCAhPSBlbmQpCiAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKHJlZCwgZ3JlZW4sIGJs
dWUpOyAvLyBGSVhNRTogQWxyZWFkeSBjbGFtcGVkLCBkb24ndCBuZWVkIHRvIHJlLWNsYW1wIGFz
IG1ha2VTaW1wbGVDb2xvciBkb2VzLgorICAgICAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5
dGVzPFNSR0JBPihyZWQsIGdyZWVuLCBibHVlKTsgLy8gRklYTUU6IEFscmVhZHkgY2xhbXBlZCwg
ZG9lc24ndCBuZWVkIHRvIHJlLWNsYW1wLiBVcGRhdGUgcGFyc2VDb2xvckludE9yUGVyY2VudGFn
ZS9wYXJzZUFscGhhVmFsdWUgdG8gcmV0dXJuIHVpbnQ4X3QgYW5kIHJlcGxhY2UgY2FsbCB0byBj
bGFtcFRvQ29tcG9uZW50Qnl0ZXMgd2l0aCBkaXJlY3QgY29uc3RydWN0aW9uIG9mIFNSR0JBPHVp
bnQ4X3Q+LgogICAgIH0KIAogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMu
Y3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4OSw3ICs1ODksNyBA
QCBzdGF0aWMgQ29sb3IgcGFyc2VSR0JQYXJhbWV0ZXJzKENTU1BhcnNlCiAgICAgaWYgKCFhcmdz
LmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0gICAgcmV0dXJuIG1ha2VTaW1w
bGVDb2xvcihjb2xvckFycmF5WzBdLCBjb2xvckFycmF5WzFdLCBjb2xvckFycmF5WzJdLCBhbHBo
YUNvbXBvbmVudCk7CisgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgY29sb3JBcnJheVswXSwg
Y29sb3JBcnJheVsxXSwgY29sb3JBcnJheVsyXSwgYWxwaGFDb21wb25lbnQgfTsKIH0KIAogc3Rh
dGljIENvbG9yIHBhcnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRpb25IaWdobGlnaHQuaAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw5ICs0MCw5IEBAIHN0cnVjdCBDb21wb3NpdGlvbkhpZ2hsaWdodCB7CiAgICAgfQogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVs
dENvbXBvc2l0aW9uRmlsbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDE3NSwgMTkyLCAyMjcsIDYw
KTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdENvbXBvc2l0aW9uRmlsbENvbG9y
ID0gU1JHQkE8dWludDhfdD4geyAxNzUsIDE5MiwgMjI3LCA2MCB9OwogI2Vsc2UKLSAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdENvbXBvc2l0aW9uRmlsbENvbG9yID0gbWFrZVNpbXBs
ZUNvbG9yKDIyNSwgMjIxLCA4NSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRlZmF1bHRD
b21wb3NpdGlvbkZpbGxDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjI1LCAyMjEsIDg1IH07CiAj
ZW5kaWYKIAogICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0IHsgMCB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3
Myw3IEBAIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VTaW0KIHsKICAgICBp
ZiAoIWlzVmFsaWRTaW1wbGVDb2xvcihzdHJpbmcpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IodG9BU0NJSUhleFZhbHVlKHN0cmluZ1sx
XSwgc3RyaW5nWzJdKSwgdG9BU0NJSUhleFZhbHVlKHN0cmluZ1szXSwgc3RyaW5nWzRdKSwgdG9B
U0NJSUhleFZhbHVlKHN0cmluZ1s1XSwgc3RyaW5nWzZdKSk7CisgICAgcmV0dXJuIFNSR0JBPHVp
bnQ4X3Q+IHsgdG9BU0NJSUhleFZhbHVlKHN0cmluZ1sxXSwgc3RyaW5nWzJdKSwgdG9BU0NJSUhl
eFZhbHVlKHN0cmluZ1szXSwgc3RyaW5nWzRdKSwgdG9BU0NJSUhleFZhbHVlKHN0cmluZ1s1XSwg
c3RyaW5nWzZdKSB9OwogfQogCiBDb2xvcklucHV0VHlwZTo6fkNvbG9ySW5wdXRUeXBlKCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAy
NCw3ICsxMDI0LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZUxlZwog
ICAgICAgICByZXR1cm4gbmFtZWRDb2xvcjsKIAogICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPT0g
NCAmJiBzdHJpbmdbMF0gPT0gJyMnICYmIGlzQVNDSUlIZXhEaWdpdChzdHJpbmdbMV0pICYmIGlz
QVNDSUlIZXhEaWdpdChzdHJpbmdbMl0pICYmIGlzQVNDSUlIZXhEaWdpdChzdHJpbmdbM10pKQot
ICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKHRvQVNDSUlIZXhWYWx1ZShzdHJpbmdbMV0p
ICogMHgxMSwgdG9BU0NJSUhleFZhbHVlKHN0cmluZ1syXSkgKiAweDExLCB0b0FTQ0lJSGV4VmFs
dWUoc3RyaW5nWzNdKSAqIDB4MTEpOworICAgICAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyBz
dGF0aWNfY2FzdDx1aW50OF90Pih0b0FTQ0lJSGV4VmFsdWUoc3RyaW5nWzFdKSAqIDB4MTEpLCBz
dGF0aWNfY2FzdDx1aW50OF90Pih0b0FTQ0lJSGV4VmFsdWUoc3RyaW5nWzJdKSAqIDB4MTEpLCBz
dGF0aWNfY2FzdDx1aW50OF90Pih0b0FTQ0lJSGV4VmFsdWUoc3RyaW5nWzNdKSAqIDB4MTEpIH07
CiAKICAgICAvLyBQZXIgc3BlYywgb25seSBsb29rIGF0IHRoZSBmaXJzdCAxMjggZGlnaXRzIG9m
IHRoZSBzdHJpbmcuCiAgICAgY29uc3RleHByIHVuc2lnbmVkIG1heENvbG9yTGVuZ3RoID0gMTI4
OwpAQCAtMTA1Miw3ICsxMDUyLDcgQEAgc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBw
YXJzZUxlZwogICAgIGRpZ2l0QnVmZmVyLmFwcGVuZCgnMCcpOwogCiAgICAgaWYgKGRpZ2l0QnVm
ZmVyLnNpemUoKSA8IDYpCi0gICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IodG9BU0NJSUhl
eFZhbHVlKGRpZ2l0QnVmZmVyWzBdKSwgdG9BU0NJSUhleFZhbHVlKGRpZ2l0QnVmZmVyWzFdKSwg
dG9BU0NJSUhleFZhbHVlKGRpZ2l0QnVmZmVyWzJdKSk7CisgICAgICAgIHJldHVybiBTUkdCQTx1
aW50OF90PiB7IHRvQVNDSUlIZXhWYWx1ZShkaWdpdEJ1ZmZlclswXSksIHRvQVNDSUlIZXhWYWx1
ZShkaWdpdEJ1ZmZlclsxXSksIHRvQVNDSUlIZXhWYWx1ZShkaWdpdEJ1ZmZlclsyXSkgfTsKIAog
ICAgIC8vIFNwbGl0IHRoZSBkaWdpdHMgaW50byB0aHJlZSBjb21wb25lbnRzLCB0aGVuIHNlYXJj
aCB0aGUgbGFzdCA4IGRpZ2l0cyBvZiBlYWNoIGNvbXBvbmVudC4KICAgICBBU1NFUlQoZGlnaXRC
dWZmZXIuc2l6ZSgpID49IDYpOwpAQCAtMTA3Niw3ICsxMDc2LDcgQEAgc3RhdGljIE9wdGlvbmFs
PFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZUxlZwogICAgIHVpbnQ4X3QgcmVkVmFsdWUgPSB0b0FTQ0lJ
SGV4VmFsdWUoZGlnaXRCdWZmZXJbcmVkSW5kZXhdLCBkaWdpdEJ1ZmZlcltyZWRJbmRleCArIDFd
KTsKICAgICB1aW50OF90IGdyZWVuVmFsdWUgPSB0b0FTQ0lJSGV4VmFsdWUoZGlnaXRCdWZmZXJb
Z3JlZW5JbmRleF0sIGRpZ2l0QnVmZmVyW2dyZWVuSW5kZXggKyAxXSk7CiAgICAgdWludDhfdCBi
bHVlVmFsdWUgPSB0b0FTQ0lJSGV4VmFsdWUoZGlnaXRCdWZmZXJbYmx1ZUluZGV4XSwgZGlnaXRC
dWZmZXJbYmx1ZUluZGV4ICsgMV0pOwotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IocmVkVmFs
dWUsIGdyZWVuVmFsdWUsIGJsdWVWYWx1ZSk7CisgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsg
cmVkVmFsdWUsIGdyZWVuVmFsdWUsIGJsdWVWYWx1ZSB9OwogfQogCiB2b2lkIEhUTUxFbGVtZW50
OjphZGRIVE1MQ29sb3JUb1N0eWxlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlLCBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDI2NDQ3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwODUsNyArMjA4NSw3IEBAIFJlbmRlclN0eWxlIEhUTUxJbnB1dEVsZW1lbnQ6
OmNyZWF0ZUlubmUKICAgICBpZiAoaGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpICYm
ICFpc0Rpc2FibGVkT3JSZWFkT25seSgpKSB7CiAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldERp
c3BsYXkoRGlzcGxheVR5cGU6OklubGluZUJsb2NrKTsKICAgICAgICAgdGV4dEJsb2NrU3R5bGUu
c2V0TWF4V2lkdGgoTGVuZ3RoIHsgMTAwLCBQZXJjZW50IH0pOwotICAgICAgICB0ZXh0QmxvY2tT
dHlsZS5zZXRDb2xvcihtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMTUzKSk7CisgICAgICAgIHRl
eHRCbG9ja1N0eWxlLnNldENvbG9yKENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgxNTMpKTsK
ICAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0VGV4dE92ZXJmbG93KFRleHRPdmVyZmxvdzo6Q2xp
cCk7CiAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldE1hc2tJbWFnZShTdHlsZUdlbmVyYXRlZElt
YWdlOjpjcmVhdGUoYXV0b0ZpbGxTdHJvbmdQYXNzd29yZE1hc2tJbWFnZSgpKSk7CiAgICAgICAg
IC8vIEEgc3RhY2tpbmcgY29udGV4dCBpcyBuZWVkZWQgZm9yIHRoZSBtYXNrLgpJbmRleDogU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAkocmV2aXNpb24g
MjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNyArMjIyLDcgQEAgc3RhdGljIHZvaWQgZHJhd091dGxp
bmVkUXVhZFdpdGhDbGlwKEdyYQogICAgIGNvbnRleHQuZmlsbFBhdGgocXVhZFRvUGF0aChxdWFk
LCBib3VuZHMpKTsKIAogICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZU9wZXJhdG9yOjpEZXN0aW5hdGlvbk91dCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IobWFr
ZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCkpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9y
OjpyZWQpOwogICAgIGNvbnRleHQuZmlsbFBhdGgocXVhZFRvUGF0aChjbGlwUXVhZCwgYm91bmRz
KSk7CiB9CiAKQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhcGVIaWdobGln
aHQoR3JhcGhpY3NDCiAgICAgRnJhbWVWaWV3KiBjb250YWluaW5nVmlldyA9IGNvbnRhaW5pbmdG
cmFtZS0+dmlldygpOwogICAgIEZyYW1lVmlldyogbWFpblZpZXcgPSBjb250YWluaW5nRnJhbWUt
PnBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwogCi0gICAgY29uc3RleHByIGF1dG8gc2hhcGVI
aWdobGlnaHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig5NiwgODIsIDEyNywgMjA0KTsKKyAgICBj
b25zdGV4cHIgYXV0byBzaGFwZUhpZ2hsaWdodENvbG9yID0gU1JHQkE8dWludDhfdD4geyA5Niwg
ODIsIDEyNywgMjA0IH07CiAKICAgICBTaGFwZTo6RGlzcGxheVBhdGhzIHBhdGhzOwogICAgIHNo
YXBlT3V0c2lkZUluZm8tPmNvbXB1dGVkU2hhcGUoKS5idWlsZERpc3BsYXlQYXRocyhwYXRocyk7
CkBAIC0zNDUsNyArMzQ1LDcgQEAgc3RhdGljIHZvaWQgZHJhd1NoYXBlSGlnaGxpZ2h0KEdyYXBo
aWNzQwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKIAotICAgICAgICBjb25zdGV4cHIgYXV0byBzaGFwZU1hcmdpbkhpZ2hsaWdodENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDk2LCA4MiwgMTI3LCAxNTMpOworICAgICAgICBjb25zdGV4cHIg
YXV0byBzaGFwZU1hcmdpbkhpZ2hsaWdodENvbG9yID0gU1JHQkE8dWludDhfdD4geyA5NiwgODIs
IDEyNywgMTUzIH07CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHNoYXBlTWFyZ2luSGln
aGxpZ2h0Q29sb3IpOwogICAgICAgICBjb250ZXh0LmZpbGxQYXRoKG1hcmdpblBhdGgpOwogICAg
IH0KQEAgLTM4Miw3ICszODIsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnBhaW50KEdyYXBo
aWNzQ29uCiAgICAgaWYgKG1faW5kaWNhdGluZykgewogICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKLSAgICAgICAgY29uc3RleHByIGF1dG8g
aW5kaWNhdGluZ0NvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDExMSwgMTY4LCAyMjAsIDE2OCk7Cisg
ICAgICAgIGNvbnN0ZXhwciBhdXRvIGluZGljYXRpbmdDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsg
MTExLCAxNjgsIDIyMCwgMTY4IH07CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGluZGlj
YXRpbmdDb2xvcik7CiAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoeyBGbG9hdFBvaW50Ojp6ZXJv
KCksIHZpZXdwb3J0U2l6ZSB9KTsKICAgICB9CkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBJbnNw
ZWN0b3JPdmVybGF5OjpkcmF3UGFpbnRSZWN0cyhHcgogewogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIAotICAgIGNvbnN0ZXhwciBhdXRvIHBhaW50
UmVjdHNDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDAsIDEyOCk7CisgICAgY29uc3Rl
eHByIGF1dG8gcGFpbnRSZWN0c0NvbG9yID0gQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYSgxMjgp
OwogICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHBhaW50UmVjdHNDb2xvcik7CiAKICAgICBmb3Ig
KGNvbnN0IFRpbWVSZWN0UGFpciYgcGFpciA6IHBhaW50UmVjdHMpCkBAIC02NjIsNyArNjYyLDcg
QEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3Qm91bmRzKEdyYXBoaQogCiAgICAgY29udGV4
dC5zZXRTdHJva2VUaGlja25lc3MoMSk7CiAKLSAgICBjb25zdGV4cHIgYXV0byBib3VuZHNDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDAsIDE1Myk7CisgICAgY29uc3RleHByIGF1dG8g
Ym91bmRzQ29sb3IgPSBDb2xvcjo6cmVkLmNvbG9yV2l0aEFscGhhKDE1Myk7CiAgICAgY29udGV4
dC5zZXRTdHJva2VDb2xvcihib3VuZHNDb2xvcik7CiAKICAgICBjb250ZXh0LnN0cm9rZVBhdGgo
cGF0aCk7CkBAIC02NzAsOSArNjcwLDkgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3Qm91
bmRzKEdyYXBoaQogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnNwZWN0b3JPdmVybGF5OjpSdWxlckV4Y2x1c2lvbiYg
cnVsZXJFeGNsdXNpb24pCiB7Ci0gICAgY29uc3RleHByIGF1dG8gcnVsZXJCYWNrZ3JvdW5kQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSwgMTUzKTsKLSAgICBjb25zdGV4cHIg
YXV0byBsaWdodFJ1bGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgNTEpOwotICAg
IGNvbnN0ZXhwciBhdXRvIGRhcmtSdWxlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAs
IDEyOCk7CisgICAgY29uc3RleHByIGF1dG8gcnVsZXJCYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6
d2hpdGUuY29sb3JXaXRoQWxwaGEoMTUzKTsKKyAgICBjb25zdGV4cHIgYXV0byBsaWdodFJ1bGVy
Q29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoNTEpOworICAgIGNvbnN0ZXhwciBh
dXRvIGRhcmtSdWxlckNvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhKDEyOCk7CiAK
ICAgICBJbnRQb2ludCBzY3JvbGxPZmZzZXQ7CiAKQEAgLTEwNDYsMTQgKzEwNDYsMTQgQEAgUGF0
aCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3RWxlbWVudFRpdGxlKAogCiAgICAgY29udGV4dC50cmFu
c2xhdGUoZWxlbWVudERhdGFCb3JkZXJTaXplIC8gMi4wZiwgZWxlbWVudERhdGFCb3JkZXJTaXpl
IC8gMi4wZik7CiAKLSAgICBjb25zdGV4cHIgYXV0byBlbGVtZW50VGl0bGVCYWNrZ3JvdW5kQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDE5NCk7CisgICAgY29uc3RleHByIGF1dG8g
ZWxlbWVudFRpdGxlQmFja2dyb3VuZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNTUsIDI1NSwg
MTk0IH07CiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZWxlbWVudFRpdGxlQmFja2dyb3VuZENv
bG9yKTsKIAogICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAKICAgICBjb250ZXh0LnNldFN0
cm9rZVRoaWNrbmVzcyhlbGVtZW50RGF0YUJvcmRlclNpemUpOwogCi0gICAgY29uc3RleHByIGF1
dG8gZWxlbWVudFRpdGxlQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTI4LCAxMjgsIDEy
OCk7CisgICAgY29uc3RleHByIGF1dG8gZWxlbWVudFRpdGxlQm9yZGVyQ29sb3IgPSBDb2xvcjo6
ZGFya0dyYXk7CiAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihlbGVtZW50VGl0bGVCb3JkZXJD
b2xvcik7CiAKICAgICBjb250ZXh0LnN0cm9rZVBhdGgocGF0aCk7CkBAIC0xMDY4LDEwICsxMDY4
LDEwIEBAIFBhdGggSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0VsZW1lbnRUaXRsZSgKICAgICAgICAg
dGV4dFBvc2l0aW9uWCArPSBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFRleHRSdW4odGV4dCksIHsg
dGV4dFBvc2l0aW9uWCwgdGV4dFBvc2l0aW9uWSB9KTsKICAgICB9OwogCi0gICAgZHJhd1RleHQo
ZWxlbWVudFRhZ05hbWUsIG1ha2VTaW1wbGVDb2xvcigxMzYsIDE4LCAxMjgpKTsgLy8gS2VlcCB0
aGlzIGluIHN5bmMgd2l0aCBYTUxWaWV3ZXIuY3NzICgudGFnKQotICAgIGRyYXdUZXh0KGVsZW1l
bnRJRFZhbHVlLCBtYWtlU2ltcGxlQ29sb3IoMjYsIDI2LCAxNjYpKTsgLy8gS2VlcCB0aGlzIGlu
IHN5bmMgd2l0aCBYTUxWaWV3ZXIuY3NzICguYXR0cmlidXRlLXZhbHVlKQotICAgIGRyYXdUZXh0
KGVsZW1lbnRDbGFzc1ZhbHVlLCBtYWtlU2ltcGxlQ29sb3IoMTUzLCA2OSwgMCkpOyAvLyBLZWVw
IHRoaXMgaW4gc3luYyB3aXRoIFhNTFZpZXdlci5jc3MgKC5hdHRyaWJ1dGUtbmFtZSkKLSAgICBk
cmF3VGV4dChlbGVtZW50UHNldWRvVHlwZSwgbWFrZVNpbXBsZUNvbG9yKDEzNiwgMTgsIDEyOCkp
OyAvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFhNTFZpZXdlci5jc3MgKC50YWcpCisgICAgZHJh
d1RleHQoZWxlbWVudFRhZ05hbWUsIFNSR0JBPHVpbnQ4X3Q+IHsgMTM2LCAxOCwgMTI4IH0pOyAv
LyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFhNTFZpZXdlci5jc3MgKC50YWcpCisgICAgZHJhd1Rl
eHQoZWxlbWVudElEVmFsdWUsIFNSR0JBPHVpbnQ4X3Q+IHsgMjYsIDI2LCAxNjYgfSk7IC8vIEtl
ZXAgdGhpcyBpbiBzeW5jIHdpdGggWE1MVmlld2VyLmNzcyAoLmF0dHJpYnV0ZS12YWx1ZSkKKyAg
ICBkcmF3VGV4dChlbGVtZW50Q2xhc3NWYWx1ZSwgU1JHQkE8dWludDhfdD4geyAxNTMsIDY5LCAw
IH0pOyAvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFhNTFZpZXdlci5jc3MgKC5hdHRyaWJ1dGUt
bmFtZSkKKyAgICBkcmF3VGV4dChlbGVtZW50UHNldWRvVHlwZSwgU1JHQkE8dWludDhfdD4geyAx
MzYsIDE4LCAxMjggfSk7IC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggWE1MVmlld2VyLmNzcyAo
LnRhZykKICAgICBkcmF3VGV4dCgiICJfcywgQ29sb3I6OmJsYWNrKTsKICAgICBkcmF3VGV4dChl
bGVtZW50V2lkdGgsIENvbG9yOjpibGFjayk7CiAgICAgZHJhd1RleHQoInB4Il9zLCBDb2xvcjo6
ZGFya0dyYXkpOwpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgUGF0aCBJbnNwZWN0b3JPdmVybGF5Ojpk
cmF3RWxlbWVudFRpdGxlKAogICAgICAgICB0ZXh0UG9zaXRpb25YID0gYm94WCArIGVsZW1lbnRE
YXRhU3BhY2luZzsKICAgICAgICAgdGV4dFBvc2l0aW9uWSArPSBmb250SGVpZ2h0OwogCi0gICAg
ICAgIGRyYXdUZXh0KCJSb2xlIl9zLCBtYWtlU2ltcGxlQ29sb3IoMTcwLCAxMywgMTQ1KSk7Cisg
ICAgICAgIGRyYXdUZXh0KCJSb2xlIl9zLCBTUkdCQTx1aW50OF90PiB7IDE3MCwgMTMsIDE0NSB9
KTsKICAgICAgICAgZHJhd1RleHQoIiAiX3MsIENvbG9yOjpibGFjayk7CiAgICAgICAgIGRyYXdU
ZXh0KGVsZW1lbnRSb2xlLCBDb2xvcjo6YmxhY2spOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCShy
ZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDE1ICsxNDEsOCBAQCBzdGF0
aWMgQ29sb3IgcGFyc2VDb2xvcihjb25zdCBKU09OOjpPYmplCiAKICAgICBkb3VibGUgYSA9IDEu
MDsKICAgICBpZiAoIWNvbG9yT2JqZWN0LT5nZXREb3VibGUoImEiLCBhKSkKLSAgICAgICAgcmV0
dXJuIG1ha2VTaW1wbGVDb2xvcihyLCBnLCBiKTsKLQotICAgIC8vIENsYW1wIGFscGhhIHRvIHRo
ZSBbMC4uMV0gcmFuZ2UuCi0gICAgaWYgKGEgPCAwKQotICAgICAgICBhID0gMDsKLSAgICBlbHNl
IGlmIChhID4gMSkKLSAgICAgICAgYSA9IDE7Ci0KLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9y
KHIsIGcsIGIsIGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUoYSkpOworICAgICAgICByZXR1cm4gY2xh
bXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihyLCBnLCBiKTsKKyAgICByZXR1cm4gY2xhbXBUb0Nv
bXBvbmVudEJ5dGVzPFNSR0JBPihyLCBnLCBiLCBjb252ZXJ0VG9Db21wb25lbnRCeXRlKGEpKTsK
IH0KIAogc3RhdGljIENvbG9yIHBhcnNlQ29uZmlnQ29sb3IoY29uc3QgU3RyaW5nJiBmaWVsZE5h
bWUsIGNvbnN0IEpTT046Ok9iamVjdCogY29uZmlnT2JqZWN0KQpJbmRleDogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjEsNyArMzYxLDcgQEAgU2hhZG93RGF0YSogTGluZUxheW91dDo6ZGVi
dWdUZXh0U2hhZG93KAogICAgIGlmICghbV9mbG93LnNldHRpbmdzKCkuc2ltcGxlTGluZUxheW91
dERlYnVnQm9yZGVyc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVidWdUZXh0U2hhZG93KEludFBvaW50
KDAsIDApLCAxMCwgMjAsIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIG1ha2VTaW1wbGVDb2xv
cigwLCAwLCAxNTAsIDE1MCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRh
PiBkZWJ1Z1RleHRTaGFkb3coSW50UG9pbnQoMCwgMCksIDEwLCAyMCwgU2hhZG93U3R5bGU6Ok5v
cm1hbCwgdHJ1ZSwgU1JHQkE8dWludDhfdD4geyAwLCAwLCAxNTAsIDE1MCB9KTsKICAgICByZXR1
cm4gJmRlYnVnVGV4dFNoYWRvdy5nZXQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAJKHJldmlzaW9u
IDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5LDcgQEAgU3RyaW5nIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYQogewogICAgIC8vIFRoaXMgZGVmYXVsdCB2YWx1
ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgc3BlY2lmaWVkIGluIG1lZGlhQ29udHJvbHMu
Y3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcGFzdC1ub2RlcwogICAgIC8vIGFuZCB3
ZWJraXQtbWVkaWEtdGV4dC10cmFjay1mdXR1cmUtbm9kZXMuCi0gICAgY29uc3RleHByIGF1dG8g
ZGVmYXVsdEJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCAwLjggKiAy
NTUpOworICAgIGNvbnN0ZXhwciBhdXRvIGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6
YmxhY2suY29sb3JXaXRoQWxwaGEoMjA0KTsKIAogICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhh
dmlvciBiZWhhdmlvcjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQ
YWdlT3ZlcmxheXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheShQYWdlJiBw
YWdlKQotICAgICAgICA6IFJlZ2lvbk92ZXJsYXkocGFnZSwgbWFrZVNpbXBsZUNvbG9yKDEyOCwg
MCwgMCwgMTAyKSkKKyAgICAgICAgOiBSZWdpb25PdmVybGF5KHBhZ2UsIFNSR0JBPHVpbnQ4X3Q+
IHsgMTI4LCAwLCAwLCAxMDIgfSkKICAgICB7CiAgICAgfQogCkBAIC0xMTgsNyArMTE4LDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9u
T3ZlcmxheShQYWdlJiBwYWdlKQotICAgICAgICA6IFJlZ2lvbk92ZXJsYXkocGFnZSwgbWFrZVNp
bXBsZUNvbG9yKDI1NSwgMTI4LCAwLCAxMDIpKQorICAgICAgICA6IFJlZ2lvbk92ZXJsYXkocGFn
ZSwgQ29sb3I6Om9yYW5nZS5jb2xvcldpdGhBbHBoYSgxMDIpKQogICAgIHsKICAgICB9CiAKQEAg
LTE0NywyNiArMTQ3LDE2IEBAIGJvb2wgTm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5Ojp1
cGQKIHN0YXRpYyBjb25zdCBIYXNoTWFwPFN0cmluZywgU1JHQkE8dWludDhfdD4+JiB0b3VjaEV2
ZW50UmVnaW9uQ29sb3JzKCkKIHsKICAgICBzdGF0aWMgY29uc3QgYXV0byByZWdpb25Db2xvcnMg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBzdHJ1Y3QgTWFwRW50cnkgewotICAg
ICAgICAgICAgQVNDSUlMaXRlcmFsIG5hbWU7Ci0gICAgICAgICAgICB1aW50OF90IHI7Ci0gICAg
ICAgICAgICB1aW50OF90IGc7Ci0gICAgICAgICAgICB1aW50OF90IGI7Ci0gICAgICAgIH07Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBNYXBFbnRyeSBlbnRyaWVzW10gPSB7Ci0gICAgICAgICAgICB7
ICJ0b3VjaHN0YXJ0Il9zLCAxOTEsIDE5MSwgNjMgfSwKLSAgICAgICAgICAgIHsgInRvdWNobW92
ZSJfcywgODAsIDIwNCwgMjQ1IH0sCi0gICAgICAgICAgICB7ICJ0b3VjaGVuZCJfcywgMTkxLCA2
MywgMTI3IH0sCi0gICAgICAgICAgICB7ICJ0b3VjaGZvcmNlY2hhbmdlIl9zLCA2MywgNjMsIDE5
MSB9LAotICAgICAgICAgICAgeyAid2hlZWwiX3MsIDI1NSwgMTI4LCAwIH0sCi0gICAgICAgICAg
ICB7ICJtb3VzZWRvd24iX3MsIDgwLCAyNDUsIDgwIH0sCi0gICAgICAgICAgICB7ICJtb3VzZW1v
dmUiX3MsIDI0NSwgMjQ1LCA4MCB9LAotICAgICAgICAgICAgeyAibW91c2V1cCJfcywgODAsIDI0
NSwgMTc2IH0sCi0gICAgICAgIH07Ci0gICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTUkdCQTx1aW50
OF90Pj4gbWFwOwotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW50cmllcykKLSAgICAgICAg
ICAgIG1hcC5hZGQoZW50cnkubmFtZSwgbWFrZVNpbXBsZUNvbG9yKGVudHJ5LnIsIGVudHJ5Lmcs
IGVudHJ5LmIsIDUwKSk7Ci0gICAgICAgIHJldHVybiBtYXA7CisgICAgICAgIHJldHVybiBIYXNo
TWFwPFN0cmluZywgU1JHQkE8dWludDhfdD4+IHsgeworICAgICAgICAgICAgeyAidG91Y2hzdGFy
dCJfcywgeyAxOTEsIDE5MSwgNjMsIDUwIH0gfSwKKyAgICAgICAgICAgIHsgInRvdWNobW92ZSJf
cywgeyA4MCwgMjA0LCAyNDUsIDUwIH0gfSwKKyAgICAgICAgICAgIHsgInRvdWNoZW5kIl9zLCB7
IDE5MSwgNjMsIDEyNywgNTAgfSB9LAorICAgICAgICAgICAgeyAidG91Y2hmb3JjZWNoYW5nZSJf
cywgeyA2MywgNjMsIDE5MSwgNTAgfSB9LAorICAgICAgICAgICAgeyAid2hlZWwiX3MsIHsgMjU1
LCAxMjgsIDAsIDUwIH0gfSwKKyAgICAgICAgICAgIHsgIm1vdXNlZG93biJfcywgeyA4MCwgMjQ1
LCA4MCwgNTAgfSB9LAorICAgICAgICAgICAgeyAibW91c2Vtb3ZlIl9zLCB7IDI0NSwgMjQ1LCA4
MCwgNTAgfSB9LAorICAgICAgICAgICAgeyAibW91c2V1cCJfcywgeyA4MCwgMjQ1LCAxNzYsIDUw
IH0gfQorICAgICAgICB9IH07CiAgICAgfSgpKTsKICAgICByZXR1cm4gcmVnaW9uQ29sb3JzOwog
fQpAQCAtMjQ2LDcgKzIzNiw3IEBAIHZvaWQgTm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5
OjpkcmEKICNlbmRpZgogCiAgICAgZm9yIChjb25zdCBhdXRvJiBzeW5jaHJvbm91c0V2ZW50UmVn
aW9uIDogbV9ldmVudFRyYWNraW5nUmVnaW9ucy5ldmVudFNwZWNpZmljU3luY2hyb25vdXNEaXNw
YXRjaFJlZ2lvbnMpIHsKLSAgICAgICAgYXV0byByZWdpb25Db2xvciA9IG1ha2VTaW1wbGVDb2xv
cigwLCAwLCAwLCA2NCk7CisgICAgICAgIGF1dG8gcmVnaW9uQ29sb3IgPSBDb2xvcjo6YmxhY2su
Y29sb3JXaXRoQWxwaGEoNjQpLmNvbG9yKCk7CiAgICAgICAgIGF1dG8gaXQgPSB0b3VjaEV2ZW50
UmVnaW9uQ29sb3JzKCkuZmluZChzeW5jaHJvbm91c0V2ZW50UmVnaW9uLmtleSk7CiAgICAgICAg
IGlmIChpdCAhPSB0b3VjaEV2ZW50UmVnaW9uQ29sb3JzKCkuZW5kKCkpCiAgICAgICAgICAgICBy
ZWdpb25Db2xvciA9IGl0LT52YWx1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJ
KHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDI0NCw3ICs0MjQ0LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50
Q29udGVudHMoR3JhcGhpY3NDbwogICAgIGlmIChmaWxsV2l0aFdhcm5pbmdDb2xvcikgewogICAg
ICAgICBJbnRSZWN0IGRlYnVnUmVjdCA9IGZyYW1lUmVjdCgpOwogICAgICAgICBkZWJ1Z1JlY3Qu
aW50ZXJzZWN0KGRpcnR5UmVjdCk7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJlY3QoZGVidWdSZWN0
LCBtYWtlU2ltcGxlQ29sb3IoMjU1LCA2NCwgMjU1KSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJl
Y3QoZGVidWdSZWN0LCBTUkdCQTx1aW50OF90PiB7IDI1NSwgNjQsIDI1NSB9KTsKICAgICB9CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAkocmV2aXNpb24g
MjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBQcmludENvbnRleHQ6OnNwb29sQWxsUGFn
ZXNXaXRoQm91bgogICAgIGludCB0b3RhbEhlaWdodCA9IHBhZ2VSZWN0cy5zaXplKCkgKiAocGFn
ZVNpemVJblBpeGVscy5oZWlnaHQoKSArIDEpIC0gMTsKIAogICAgIC8vIEZpbGwgdGhlIHdob2xl
IGJhY2tncm91bmQgYnkgd2hpdGUuCi0gICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvciht
YWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRG
aWxsQ29sb3IoQ29sb3I6OndoaXRlKTsKICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3QoRmxv
YXRSZWN0KDAsIDAsIHBhZ2VXaWR0aCwgdG90YWxIZWlnaHQpKTsKIAogICAgIGdyYXBoaWNzQ29u
dGV4dC5zYXZlKCk7CkBAIC00NDUsOCArNDQ1LDggQEAgdm9pZCBQcmludENvbnRleHQ6OnNwb29s
QWxsUGFnZXNXaXRoQm91bgogICAgICAgICAgICAgaW50IGJvdW5kYXJ5TGluZVkgPSBjdXJyZW50
SGVpZ2h0IC0gMTsKICNlbmRpZgogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsK
LSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihtYWtlU2ltcGxlQ29s
b3IoMCwgMCwgMjU1KSk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9y
KG1ha2VTaW1wbGVDb2xvcigwLCAwLCAyNTUpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6Ymx1ZSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0RmlsbENvbG9yKENvbG9yOjpibHVlKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5kcmF3TGluZShJbnRQb2ludCgwLCBib3VuZGFyeUxpbmVZKSwgSW50UG9pbnQocGFnZVdpZHRo
LCBib3VuZGFyeUxpbmVZKSk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQucmVzdG9yZSgp
OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNh
Z2VPdmVybGF5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jb2Nv
YS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTE2MCwxOCArMTYwLDE4IEBAIHN0cnVjdCBIaXN0b3JpY1Jlc291cmNlVXNh
Z2VEYXRhIHsKIEhpc3RvcmljUmVzb3VyY2VVc2FnZURhdGE6Okhpc3RvcmljUmVzb3VyY2VVc2Fn
ZURhdGEoKQogewogICAgIC8vIFZNIHRhZyBjYXRlZ29yaWVzLgotICAgIGNhdGVnb3JpZXNbTWVt
b3J5Q2F0ZWdvcnk6OkpTSklUXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNh
dGVnb3J5OjpKU0pJVCwgbWFrZVNpbXBsZUNvbG9yKDI1NSwgOTYsIDI1NSksICJKUyBKSVQiKTsK
LSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZV0gPSBIaXN0b3JpY01lbW9y
eUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6R2lnYWNhZ2UsIG1ha2VTaW1wbGVDb2xvcigx
MDEsIDc5LCAyNDApLCAiR2lnYWNhZ2UiKTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5
OjpJbWFnZXNdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6Oklt
YWdlcywgbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAwKSwgIkltYWdlcyIpOwotICAgIGNhdGVn
b3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkxheWVyc10gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5m
byhNZW1vcnlDYXRlZ29yeTo6TGF5ZXJzLCBtYWtlU2ltcGxlQ29sb3IoMCwgMjU1LCAyNTUpLCAi
TGF5ZXJzIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6TGliY01hbGxvY10gPSBI
aXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6TGliY01hbGxvYywgbWFr
ZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCksICJsaWJjIG1hbGxvYyIpOwotICAgIGNhdGVnb3JpZXNb
TWVtb3J5Q2F0ZWdvcnk6OmJtYWxsb2NdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVt
b3J5Q2F0ZWdvcnk6OmJtYWxsb2MsIG1ha2VTaW1wbGVDb2xvcigyNTUsIDk2LCA5NiksICJibWFs
bG9jIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6SXNvSGVhcF0gPSBIaXN0b3Jp
Y01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SXNvSGVhcCwgbWFrZVNpbXBsZUNv
bG9yKDEyOCwgMTU5LCA2NCksICJJc29IZWFwIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRl
Z29yeTo6T3RoZXJdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6
Ok90aGVyLCBtYWtlU2ltcGxlQ29sb3IoMTkyLCAyNTUsIDApLCAiT3RoZXIiKTsKKyAgICBjYXRl
Z29yaWVzW01lbW9yeUNhdGVnb3J5OjpKU0pJVF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5m
byhNZW1vcnlDYXRlZ29yeTo6SlNKSVQsIFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCA5NiwgMjU1IH0s
ICJKUyBKSVQiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZV0gPSBI
aXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6R2lnYWNhZ2UsIFNSR0JB
PHVpbnQ4X3Q+IHsgMTAxLCA3OSwgMjQwIH0sICJHaWdhY2FnZSIpOworICAgIGNhdGVnb3JpZXNb
TWVtb3J5Q2F0ZWdvcnk6OkltYWdlc10gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1v
cnlDYXRlZ29yeTo6SW1hZ2VzLCBDb2xvcjo6eWVsbG93LCAiSW1hZ2VzIik7CisgICAgY2F0ZWdv
cmllc1tNZW1vcnlDYXRlZ29yeTo6TGF5ZXJzXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZv
KE1lbW9yeUNhdGVnb3J5OjpMYXllcnMsIENvbG9yOjpjeWFuLCAiTGF5ZXJzIik7CisgICAgY2F0
ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6TGliY01hbGxvY10gPSBIaXN0b3JpY01lbW9yeUNhdGVn
b3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6TGliY01hbGxvYywgQ29sb3I6OmdyZWVuLCAibGliYyBt
YWxsb2MiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpibWFsbG9jXSA9IEhpc3Rv
cmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpibWFsbG9jLCBTUkdCQTx1aW50
OF90PiB7IDI1NSwgOTYsIDk2IH0sICJibWFsbG9jIik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlD
YXRlZ29yeTo6SXNvSGVhcF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRl
Z29yeTo6SXNvSGVhcCwgU1JHQkE8dWludDhfdD4geyAxMjgsIDE1OSwgNjQgfSwgIklzb0hlYXAi
KTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpPdGhlcl0gPSBIaXN0b3JpY01lbW9y
eUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6T3RoZXIsIFNSR0JBPHVpbnQ4X3Q+IHsgMTky
LCAyNTUsIDAgfSwgIk90aGVyIik7CiAKICAgICAvLyBTdWIgY2F0ZWdvcmllcyAoZS5nIGJyZWFr
ZG93biBvZiBibWFsbG9jIHRhZy4pCi0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6R0NI
ZWFwXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ0hlYXAs
IG1ha2VTaW1wbGVDb2xvcigxNjAsIDE2MCwgMjU1KSwgIkdDIGhlYXAiLCB0cnVlKTsKLSAgICBj
YXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHQ093bmVkXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdv
cnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ093bmVkLCBtYWtlU2ltcGxlQ29sb3IoMjU1LCAxOTIs
IDk2KSwgIkdDIG93bmVkIiwgdHJ1ZSk7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6
R0NIZWFwXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ0hl
YXAsIFNSR0JBPHVpbnQ4X3Q+IHsgMTYwLCAxNjAsIDI1NSB9LCAiR0MgaGVhcCIsIHRydWUpOwor
ICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkdDT3duZWRdID0gSGlzdG9yaWNNZW1vcnlD
YXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkdDT3duZWQsIFNSR0JBPHVpbnQ4X3Q+IHsgMjU1
LCAxOTIsIDk2IH0sICJHQyBvd25lZCIsIHRydWUpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIC8v
IEVuc3VyZSB0aGlzIGFsaWducyB3aXRoIFJlc291cmNlVXNhZ2VEYXRhJ3MgY2F0ZWdvcnkgb3Jk
ZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5
TGludXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3Vy
Y2VVc2FnZU92ZXJsYXlMaW51eC5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg4LDggKzg4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50Q29udGVudHMoY29u
c3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBjbGlwLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAg
ICAgICAgY29udGV4dC5maWxsUmVjdChjbGlwLCBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMjA0
KSk7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1ha2VTaW1wbGVDb2xvcigyMzAsIDIz
MCwgMjMwKSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoY2xpcCwgQ29sb3I6OmJsYWNrLmNv
bG9yV2l0aEFscGhhKDIwNCkpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihTUkdCQTx1
aW50OF90PiB7IDIzMCwgMjMwLCAyMzAgfSk7CiAKICAgICAgICAgRmxvYXRQb2ludCBwb3NpdGlv
biA9IHsgMTAsIDIwIH07CiAgICAgICAgIFN0cmluZyBzdHJpbmcgPSAgIkNQVTogIiArIGNwdVVz
YWdlU3RyaW5nKGdEYXRhLmNwdSk7CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBSZXNvdXJjZVVz
YWdlT3ZlcmxheTo6cGxhdGZvcm1Jbml0aQogICAgIG1fcGFpbnRMYXllciA9IEdyYXBoaWNzTGF5
ZXI6OmNyZWF0ZShvdmVybGF5KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5ncmFwaGljc0xh
eWVyRmFjdG9yeSgpLCAqbV9vdmVybGF5UGFpbnRlcik7CiAgICAgbV9wYWludExheWVyLT5zZXRB
bmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CiAgICAgbV9wYWludExheWVyLT5zZXRTaXplKHsg
bm9ybWFsV2lkdGgsIG5vcm1hbEhlaWdodCB9KTsKLSAgICBtX3BhaW50TGF5ZXItPnNldEJhY2tn
cm91bmRDb2xvcihtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMjA0KSk7CisgICAgbV9wYWludExh
eWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhKDIwNCkp
OwogICAgIG1fcGFpbnRMYXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOwogICAgIG92ZXJsYXko
KS5sYXllcigpLmFkZENoaWxkKCptX3BhaW50TGF5ZXIpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEu
Y3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hZHdhaXRh
L1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEzICs0Mywx
MyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgb3ZlcmxheVRodW1iU2l6ZSA9CiBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWluaW11bVRodW1iU2l6ZSA9IDQwOwogc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHRodW1iU2l6ZSA9IDY7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNjcm9sbGJhck9wYWNpdHkgPSAw
Ljg7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gc2Nyb2xsYmFyQmFja2dyb3VuZENvbG9yID0gbWFr
ZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcm9s
bGJhckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyMCwgMjIzLCAyMjcpOwotc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIG92ZXJsYXlUaHVtYkJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDI1NSwgMjU1LCAyNTUsIDEwMCk7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gb3ZlcmxheVRodW1i
Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoNDYsIDUyLCA1NCwgMTAwKTsKLXN0YXRpYyBjb25zdGV4
cHIgYXV0byB0aHVtYkhvdmVyZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig4NiwgOTEsIDkyKTsK
LXN0YXRpYyBjb25zdGV4cHIgYXV0byB0aHVtYlByZXNzZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigyNywgMTA2LCAyMDMpOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRodW1iQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMTI2LCAxMjksIDEzMCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2Nyb2xs
YmFyQmFja2dyb3VuZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNTIsIDI1MiwgMjUyIH07Citz
dGF0aWMgY29uc3RleHByIGF1dG8gc2Nyb2xsYmFyQm9yZGVyQ29sb3IgPSBTUkdCQTx1aW50OF90
PiB7IDIyMCwgMjIzLCAyMjcgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBvdmVybGF5VGh1bWJC
b3JkZXJDb2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYSgxMDApOworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG92ZXJsYXlUaHVtYkNvbG9yID0gU1JHQkE8dWludDhfdD4geyA0NiwgNTIs
IDU0LCAxMDAgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB0aHVtYkhvdmVyZWRDb2xvciA9IFNS
R0JBPHVpbnQ4X3Q+IHsgODYsIDkxLCA5MiB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRodW1i
UHJlc3NlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNywgMTA2LCAyMDMgfTsKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byB0aHVtYkNvbG9yID0gU1JHQkE8dWludDhfdD4geyAxMjYsIDEyOSwgMTMw
IH07CiAKIGJvb2wgU2Nyb2xsYmFyVGhlbWVBZHdhaXRhOjp1c2VzT3ZlcmxheVNjcm9sbGJhcnMo
KSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3YWl0YS9UaGVtZUFk
d2FpdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Fkd2FpdGEv
VGhlbWVBZHdhaXRhLmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYWR3YWl0YS9UaGVtZUFkd2FpdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwyOCAr
MzYsMjggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZv
Y3VzTGluZVdpZHRoID0gMTsKLXN0YXRpYyBjb25zdCBDb2xvciBmb2N1c1JpbmdDb2xvciA9IG1h
a2VTaW1wbGVDb2xvcig0NiwgNTIsIDU0LCAxNTApOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZv
Y3VzUmluZ0NvbG9yID0gU1JHQkE8dWludDhfdD4geyA0NiwgNTIsIDU0LCAxNTAgfTsKIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBhcnJvd1NpemUgPSAxNjsKLXN0YXRpYyBjb25zdCBDb2xvciBhcnJv
d0NvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDQ2LCA1MiwgNTQpOworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGFycm93Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDQ2LCA1MiwgNTQgfTsKIHN0YXRpYyBj
b25zdCBpbnQgYnV0dG9uRm9jdXNPZmZzZXQgPSAtMzsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBi
dXR0b25QYWRkaW5nID0gNTsKIHN0YXRpYyBjb25zdCBpbnQgYnV0dG9uQm9yZGVyU2l6ZSA9IDE7
IC8vIEtlZXAgaW4gc3luYyB3aXRoIG1lbnVMaXN0QnV0dG9uQm9yZGVyU2l6ZSBpbiBSZW5kZXJU
aGVtZUFkd2FpdGEuCi1zdGF0aWMgY29uc3QgQ29sb3IgYnV0dG9uQm9yZGVyQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgYnV0dG9uQmFj
a2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0NCwgMjQyLCAyNDEpOwotc3RhdGljIGNv
bnN0IENvbG9yIGJ1dHRvbkJhY2tncm91bmRQcmVzc2VkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
MjE0LCAyMDksIDIwNSk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgYnV0dG9uQmFja2dyb3VuZEhvdmVy
ZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDgsIDI0OCwgMjQ3KTsKLXN0YXRpYyBjb25zdCBD
b2xvciBidXR0b25CYWNrZ3JvdW5kRGlzYWJsZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDYs
IDI0NiwgMjQ0KTsKLXN0YXRpYyBjb25zdCBDb2xvciB0b2dnbGVCYWNrZ3JvdW5kQ29sb3IgPSBt
YWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgdG9nZ2xl
QmFja2dyb3VuZEhvdmVyZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDIsIDI0MiwgMjQyKTsK
LXN0YXRpYyBjb25zdCBDb2xvciB0b2dnbGVCYWNrZ3JvdW5kRGlzYWJsZWRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigyNTIsIDI1MiwgMjUyKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBidXR0b25C
b3JkZXJDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjA1LCAxOTksIDE5NCB9Oworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGJ1dHRvbkJhY2tncm91bmRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjQ0
LCAyNDIsIDI0MSB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJ1dHRvbkJhY2tncm91bmRQcmVz
c2VkQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDIxNCwgMjA5LCAyMDUgfTsKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBidXR0b25CYWNrZ3JvdW5kSG92ZXJlZENvbG9yID0gU1JHQkE8dWludDhfdD4g
eyAyNDgsIDI0OCwgMjQ3IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gYnV0dG9uQmFja2dyb3Vu
ZERpc2FibGVkQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDI0NiwgMjQ2LCAyNDQgfTsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byB0b2dnbGVCYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6d2hpdGU7Citz
dGF0aWMgY29uc3RleHByIGF1dG8gdG9nZ2xlQmFja2dyb3VuZEhvdmVyZWRDb2xvciA9IFNSR0JB
PHVpbnQ4X3Q+IHsgMjQyLCAyNDIsIDI0MiB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRvZ2ds
ZUJhY2tncm91bmREaXNhYmxlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNTIsIDI1MiwgMjUy
IH07CiBzdGF0aWMgY29uc3QgZG91YmxlIHRvZ2dsZVNpemUgPSAxNC47CiBzdGF0aWMgY29uc3Qg
aW50IHRvZ2dsZUZvY3VzT2Zmc2V0ID0gMjsKLXN0YXRpYyBjb25zdCBDb2xvciB0b2dnbGVDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcig0NiwgNTIsIDU0KTsKLXN0YXRpYyBjb25zdCBDb2xvciB0b2dn
bGVEaXNhYmxlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDE2MCwgMTYwLCAxNjApOwotc3RhdGlj
IGNvbnN0IENvbG9yIHNwaW5CdXR0b25Cb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMjAs
IDIyMywgMjI3KTsKLXN0YXRpYyBjb25zdCBDb2xvciBzcGluQnV0dG9uQmFja2dyb3VuZENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOwotc3RhdGljIGNvbnN0IENvbG9yIHNw
aW5CdXR0b25CYWNrZ3JvdW5kSG92ZXJlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDQ2LCA1Miwg
NTQsIDUwKTsKLXN0YXRpYyBjb25zdCBDb2xvciBzcGluQnV0dG9uQmFja2dyb3VuZFByZXNzZWRD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcig0NiwgNTIsIDU0LCA3MCk7CitzdGF0aWMgY29uc3RleHBy
IGF1dG8gdG9nZ2xlQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDQ2LCA1MiwgNTQgfTsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byB0b2dnbGVEaXNhYmxlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAx
NjAsIDE2MCwgMTYwIH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gc3BpbkJ1dHRvbkJvcmRlckNv
bG9yID0gU1JHQkE8dWludDhfdD4geyAyMjAsIDIyMywgMjI3IH07CitzdGF0aWMgY29uc3RleHBy
IGF1dG8gc3BpbkJ1dHRvbkJhY2tncm91bmRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjUyLCAy
NTIsIDI1MiB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNwaW5CdXR0b25CYWNrZ3JvdW5kSG92
ZXJlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyA0NiwgNTIsIDU0LCA1MCB9Oworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIHNwaW5CdXR0b25CYWNrZ3JvdW5kUHJlc3NlZENvbG9yID0gU1JHQkE8dWlu
dDhfdD4geyA0NiwgNTIsIDU0LCA3MCB9OwogCiAjaWYgIVBMQVRGT1JNKEdUSykgfHwgVVNFKEdU
SzQpCiBUaGVtZSYgVGhlbWU6OnNpbmdsZXRvbigpCkBAIC02OSwxNyArNjksMTcgQEAgVGhlbWUm
IFRoZW1lOjpzaW5nbGV0b24oKQogCiBDb2xvciBUaGVtZUFkd2FpdGE6OmFjdGl2ZVNlbGVjdGlv
bkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigy
NTUsIDI1NSwgMjU1KTsKKyAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogfQogCiBDb2xvciBUaGVt
ZUFkd2FpdGE6OmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1ha2VTaW1wbGVDb2xvcig1MiwgMTMyLCAyMjgpOworICAgIHJldHVybiBTUkdCQTx1
aW50OF90PiB7IDUyLCAxMzIsIDIyOCB9OwogfQogCiBDb2xvciBUaGVtZUFkd2FpdGE6OmluYWN0
aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFrZVNp
bXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOworICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDI1
MiwgMjUyLCAyNTIgfTsKIH0KIAogQ29sb3IgVGhlbWVBZHdhaXRhOjppbmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3RleHByIGF1dG8gbGlnaHRl
bmVkQmxhY2sgPSBtYWtlU2ltcGxlQ29sb3IoODQsIDg0LCA4NCk7Ci1zdGF0aWMgY29uc3RleHBy
IGF1dG8gZGFya2VuZWRXaGl0ZSA9IG1ha2VTaW1wbGVDb2xvcigxNzEsIDE3MSwgMTcxKTsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBsaWdodGVuZWRCbGFjayA9IENvbG9yQnVpbGRlcjxTUkdCQTx1
aW50OF90Pj4geyA4NCwgODQsIDg0IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gZGFya2VuZWRX
aGl0ZSA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAxNzEsIDE3MSwgMTcxIH07CiAK
IENvbG9yOjpDb2xvcihjb25zdCBDb2xvciYgb3RoZXIpCiAgICAgOiBtX2NvbG9yRGF0YShvdGhl
ci5tX2NvbG9yRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuaAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOSArMjUsMTAgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJDb2xvckJ1aWxkZXIuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgi
CisjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJFeHRlbmRlZENvbG9yLmgi
Ci0jaW5jbHVkZSAiU2ltcGxlQ29sb3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgpAQCAt
MTQ1LDE0ICsxNDYsMjAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIEQy
RDFfVkVDVE9SXzRGKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0
byBibGFjayA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwKTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8gd2hpdGUgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSk7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIGRhcmtHcmF5ID0gbWFrZVNpbXBsZUNvbG9yKDEyOCwgMTI4LCAxMjgp
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBncmF5ID0gbWFrZVNpbXBsZUNvbG9yKDE2MCwg
MTYwLCAxNjApOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBsaWdodEdyYXkgPSBtYWtlU2lt
cGxlQ29sb3IoMTkyLCAxOTIsIDE5Mik7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRyYW5z
cGFyZW50ID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDApOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBjeWFuID0gbWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMjU1KTsKLSAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8geWVsbG93ID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAwKTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gYmxhY2sgPSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhf
dD4+IHsgMCwgMCwgMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byB3aGl0ZSA9IENvbG9y
QnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAyNTUsIDI1NSwgMjU1IH07CisgICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGRhcmtHcmF5ID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDEy
OCwgMTI4LCAxMjggfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZ3JheSA9IENvbG9yQnVp
bGRlcjxTUkdCQTx1aW50OF90Pj4geyAxNjAsIDE2MCwgMTYwIH07CisgICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGxpZ2h0R3JheSA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAxOTIs
IDE5MiwgMTkyIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRyYW5zcGFyZW50ID0gQ29s
b3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDAsIDAsIDAsIDAgfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gY3lhbiA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAwLCAyNTUs
IDI1NSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byB5ZWxsb3cgPSBDb2xvckJ1aWxkZXI8
U1JHQkE8dWludDhfdD4+IHsgMjU1LCAyNTUsIDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1
dG8gcmVkID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDI1NSwgMCwgMCB9OworICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byBtYWdlbnRhID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4
X3Q+PiB7IDI1NSwgMCwgMjU1IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJsdWUgPSBD
b2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgMCwgMCwgMjU1IH07CisgICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGdyZWVuID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDAsIDI1
NSwgMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBkYXJrR3JlZW4gPSBDb2xvckJ1aWxk
ZXI8U1JHQkE8dWludDhfdD4+IHsgMCwgMTI4LCAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIG9yYW5nZSA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAyNTUsIDEyOCwgMCB9
OwogCiAgICAgYm9vbCBpc0V4dGVuZGVkKCkgY29uc3QgeyByZXR1cm4gIShtX2NvbG9yRGF0YS5p
bmxpbmVDb2xvckFuZEZsYWdzICYgaW52YWxpZElubGluZUNvbG9yKTsgfQogICAgIGJvb2wgaXNJ
bmxpbmUoKSBjb25zdCB7IHJldHVybiAhaXNFeHRlbmRlZCgpOyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJsZW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJsZW5kaW5nLmNwcAkocmV2aXNp
b24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCbGVu
ZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgQ29sb3IgYmxlbmRTb3Vy
Y2VPdmVyKGNvbnN0IENvbG9yJiBiYWNrZAogICAgIGludCBnID0gKGJhY2tkcm9wRyAqIGJhY2tk
cm9wQSAqICgweEZGIC0gc291cmNlQSkgKyAweEZGICogc291cmNlQSAqIHNvdXJjZUcpIC8gZDsK
ICAgICBpbnQgYiA9IChiYWNrZHJvcEIgKiBiYWNrZHJvcEEgKiAoMHhGRiAtIHNvdXJjZUEpICsg
MHhGRiAqIHNvdXJjZUEgKiBzb3VyY2VCKSAvIGQ7CiAKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNv
bG9yKHIsIGcsIGIsIGEpOworICAgIHJldHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+
KHIsIGcsIGIsIGEpOwogfQogCiBDb2xvciBibGVuZFdpdGhXaGl0ZShjb25zdCBDb2xvciYgY29s
b3IpCkBAIC03OCw3ICs3OCw3IEBAIENvbG9yIGJsZW5kV2l0aFdoaXRlKGNvbnN0IENvbG9yJiBj
b2xvcikKICAgICAgICAgaW50IGcgPSBibGVuZENvbXBvbmVudChleGlzdGluZ0csIGFscGhhKTsK
ICAgICAgICAgaW50IGIgPSBibGVuZENvbXBvbmVudChleGlzdGluZ0IsIGFscGhhKTsKIAotICAg
ICAgICByZXN1bHQgPSBtYWtlU2ltcGxlQ29sb3IociwgZywgYiwgYWxwaGEpOworICAgICAgICBy
ZXN1bHQgPSBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHIsIGcsIGIsIGFscGhhKTsKIAog
ICAgICAgICBpZiAociA+PSAwICYmIGcgPj0gMCAmJiBiID49IDApCiAgICAgICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQnVpbGRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQnVp
bGRlci5oCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogLy8gSGVscGVyIHRvIGFsbG93IGNvbnZlbmllbnQgc3ludGF4IGZv
ciB3b3JraW5nIHdpdGggY29sb3IgdHlwZXMuCiAvLyBlLmcuIGF1dG8geWVsbG93V2l0aDUwUGVy
Y2VudEFscGhhID0gQ29sb3I6OnllbGxvdy5jb2xvcldpdGhBbHBoYSgxMjgpOwogdGVtcGxhdGU8
dHlwZW5hbWUgQ29sb3JUeXBlPiBzdHJ1Y3QgQ29sb3JCdWlsZGVyIDogcHVibGljIENvbG9yVHlw
ZSB7Ci0gICAgY29uc3RleHByIENvbG9yQnVpbGRlcihjb25zdCBDb2xvclR5cGUmIGNvbG9yKQot
ICAgICAgICA6IENvbG9yVHlwZSB7IGNvbG9yIH0KLSAgICB7Ci0gICAgfQorICAgIHVzaW5nIENv
bG9yVHlwZTo6Q29sb3JUeXBlOwogCiAgICAgY29uc3RleHByIENvbG9yVHlwZSBjb2xvcigpIGNv
bnN0CiAgICAgewpAQCAtNDIsOSArMzksOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+
IHN0cnVjdCBDb2xvCiAKICAgICBjb25zdGV4cHIgQ29sb3JCdWlsZGVyIGNvbG9yV2l0aEFscGhh
KHVpbnQ4X3Qgb3ZlcnJpZGVBbHBoYSkgY29uc3QKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8ZGVjbHR5cGUoQ29sb3JUeXBlKCkuYWxwaGEpLCB1aW50OF90Piwg
Ik9ubHkgdWludDhfdCBiYXNlZCBjb2xvciB0eXBlcyBhcmUgc3VwcG9ydGVkLiIpOworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIENvbG9yVHlwZTo6Q29tcG9u
ZW50VHlwZSwgdWludDhfdD4sICJPbmx5IHVpbnQ4X3QgYmFzZWQgY29sb3IgdHlwZXMgYXJlIHN1
cHBvcnRlZC4iKTsKIAotICAgICAgICBDb2xvckJ1aWxkZXIgY29weSA9ICp0aGlzOworICAgICAg
ICBhdXRvIGNvcHkgPSAqdGhpczsKICAgICAgICAgY29weS5hbHBoYSA9IG92ZXJyaWRlQWxwaGE7
CiAgICAgICAgIHJldHVybiBjb3B5OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsNiArNDQsMjUgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29tcG9uZW50VHJhaXRzPGZsb2F0
PgogCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTUkdCQSB7CisgICAgY29uc3RleHBy
IFNSR0JBKFQgcmVkLCBUIGdyZWVuLCBUIGJsdWUsIFQgYWxwaGEpCisgICAgICAgIDogcmVkIHsg
cmVkIH0KKyAgICAgICAgLCBncmVlbiB7IGdyZWVuIH0KKyAgICAgICAgLCBibHVlIHsgYmx1ZSB9
CisgICAgICAgICwgYWxwaGEgeyBhbHBoYSB9CisgICAgeworICAgIH0KKworICAgIGNvbnN0ZXhw
ciBTUkdCQShUIHJlZCwgVCBncmVlbiwgVCBibHVlKQorICAgICAgICA6IFNSR0JBIHsgcmVkLCBn
cmVlbiwgYmx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+OjptYXhWYWx1ZSB9CisgICAgeworICAgIH0K
KworICAgIGNvbnN0ZXhwciBTUkdCQSgpCisgICAgICAgIDogU1JHQkEgeyBDb21wb25lbnRUcmFp
dHM8VD46Om1pblZhbHVlLCBDb21wb25lbnRUcmFpdHM8VD46Om1pblZhbHVlLCBDb21wb25lbnRU
cmFpdHM8VD46Om1pblZhbHVlLCBDb21wb25lbnRUcmFpdHM8VD46Om1pblZhbHVlIH0KKyAgICB7
CisgICAgfQorCisKICAgICBUIHJlZDsKICAgICBUIGdyZWVuOwogICAgIFQgYmx1ZTsKQEAgLTUz
LDggKzcyLDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNSR0JBIHsKICAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0I7CiB9OwogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQShULCBULCBULCBUKSAtPiBTUkdCQTxUPjsKLQogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBhc0NvbG9yQ29t
cG9uZW50cyhjb25zdCBTUkdCQTxUPiYgYykKIHsKICAgICByZXR1cm4geyBjLnJlZCwgYy5ncmVl
biwgYy5ibHVlLCBjLmFscGhhIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclV0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDcgKzU5LDkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252ZXJ0Q29tcG9u
ZW50RgogdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gQ29s
b3JUeXBlPHVpbnQ4X3Q+IGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVzKGNvbnN0IENvbG9yVHlwZTxm
bG9hdD4mKTsKIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+
IGNvbnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0cyhjb25z
dCBDb2xvclR5cGU8dWludDhfdD4mKTsKIAordGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5
cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZTx1aW50OF90PiBjbGFtcFRvQ29t
cG9uZW50Qnl0ZXMoaW50IHIsIGludCBnLCBpbnQgYik7CiB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBl
bmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPHVpbnQ4X3Q+IGNs
YW1wVG9Db21wb25lbnRCeXRlcyhpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7Cit0ZW1wbGF0
ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JU
eXBlPGZsb2F0PiBjbGFtcFRvQ29tcG9uZW50RmxvYXRzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0
IGIpOwogdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gY29u
c3RleHByIENvbG9yVHlwZTxmbG9hdD4gY2xhbXBUb0NvbXBvbmVudEZsb2F0cyhmbG9hdCByLCBm
bG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBl
LCB0eXBlbmFtZSBGdW5jdG9yPiBDb2xvclR5cGUgY29sb3JCeU1vZGlmaW5nRWFjaE5vbkFscGhh
Q29tcG9uZW50KGNvbnN0IENvbG9yVHlwZSYsIEZ1bmN0b3ImJik7CkBAIC0xMzQsMTEgKzEzNiwy
MSBAQCB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sCiAgICAgcmV0dXJu
IHsgY29udmVydFRvQ29tcG9uZW50RmxvYXQoY29tcG9uZW50c1swXSksIGNvbnZlcnRUb0NvbXBv
bmVudEZsb2F0KGNvbXBvbmVudHNbMV0pLCBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChjb21wb25l
bnRzWzJdKSwgY29udmVydFRvQ29tcG9uZW50RmxvYXQoY29tcG9uZW50c1szXSkgfTsKIH0KIAor
dGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHBy
IENvbG9yVHlwZTx1aW50OF90PiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXMoaW50IHIsIGludCBnLCBp
bnQgYikKK3sKKyAgICByZXR1cm4geyBjbGFtcFRvQ29tcG9uZW50Qnl0ZShyKSwgY2xhbXBUb0Nv
bXBvbmVudEJ5dGUoZyksIGNsYW1wVG9Db21wb25lbnRCeXRlKGIpIH07Cit9CisKIHRlbXBsYXRl
PHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5
cGU8dWludDhfdD4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzKGludCByLCBpbnQgZywgaW50IGIsIGlu
dCBhKQogewogICAgIHJldHVybiB7IGNsYW1wVG9Db21wb25lbnRCeXRlKHIpLCBjbGFtcFRvQ29t
cG9uZW50Qnl0ZShnKSwgY2xhbXBUb0NvbXBvbmVudEJ5dGUoYiksIGNsYW1wVG9Db21wb25lbnRC
eXRlKGEpIH07CiB9CiAKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xv
clR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNsYW1wVG9Db21wb25lbnRGbG9hdHMo
ZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYikKK3sKKyAgICByZXR1cm4geyBjbGFtcFRvQ29tcG9u
ZW50RmxvYXQociksIGNsYW1wVG9Db21wb25lbnRGbG9hdChnKSwgY2xhbXBUb0NvbXBvbmVudEZs
b2F0KGIpIH07Cit9CisKIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xv
clR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNsYW1wVG9Db21wb25lbnRGbG9hdHMo
ZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsKICAgICByZXR1cm4geyBjbGFt
cFRvQ29tcG9uZW50RmxvYXQociksIGNsYW1wVG9Db21wb25lbnRGbG9hdChnKSwgY2xhbXBUb0Nv
bXBvbmVudEZsb2F0KGIpLCBjbGFtcFRvQ29tcG9uZW50RmxvYXQoYSkgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCShy
ZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk4LDM0ICs1OTgsMzQgQEAgdm9pZCBH
cmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRlckluZm8oQwogICAgIHdpZHRoID0gMjsKIAogICAg
IGlmIChuZWVkc0JhY2tkcm9wKCkpIHsKLSAgICAgICAgY29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
MjU1LCAwLCAyNTUsIDEyOCk7IC8vIGhhcyBiYWNrZHJvcDogbWFnZW50YQorICAgICAgICBjb2xv
ciA9IENvbG9yOjptYWdlbnRhLmNvbG9yV2l0aEFscGhhKDEyOCk7IC8vIGhhcyBiYWNrZHJvcDog
bWFnZW50YQogICAgICAgICB3aWR0aCA9IDEyOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAogICAgIGlmIChkcmF3c0NvbnRlbnQoKSkgewogICAgICAgICBpZiAodGlsZWRCYWNraW5nKCkp
IHsKLSAgICAgICAgICAgIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMTI4LCAwLCAxMjgp
OyAvLyB0aWxlZCBsYXllcjogb3JhbmdlCisgICAgICAgICAgICBjb2xvciA9IENvbG9yOjpvcmFu
Z2UuY29sb3JXaXRoQWxwaGEoMTI4KTsgLy8gdGlsZWQgbGF5ZXI6IG9yYW5nZQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
MCwgMTI4LCAzMiwgMTI4KTsgLy8gbm9ybWFsIGxheWVyOiBncmVlbgorICAgICAgICBjb2xvciA9
IFNSR0JBPHVpbnQ4X3Q+IHsgMCwgMTI4LCAzMiwgMTI4IH07IC8vIG5vcm1hbCBsYXllcjogZ3Jl
ZW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh1c2VzQ29udGVudHNMYXllcigp
KSB7Ci0gICAgICAgIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDY0LCAxMjgsIDE1MCk7IC8v
IG5vbi1wYWludGluZyBsYXllciB3aXRoIGNvbnRlbnRzOiBibHVlCisgICAgICAgIGNvbG9yID0g
U1JHQkE8dWludDhfdD4geyAwLCA2NCwgMTI4LCAxNTAgfTsgLy8gbm9uLXBhaW50aW5nIGxheWVy
IHdpdGggY29udGVudHM6IGJsdWUKICAgICAgICAgd2lkdGggPSA4OwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAogICAgIGlmIChtYXNrc1RvQm91bmRzKCkpIHsKLSAgICAgICAgY29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMTI4LCAyNTUsIDI1NSwgNDgpOyAvLyBtYXNraW5nIGxheWVyOiBw
YWxlIGJsdWUKKyAgICAgICAgY29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDEyOCwgMjU1LCAyNTUs
IDQ4IH07IC8vIG1hc2tpbmcgbGF5ZXI6IHBhbGUgYmx1ZQogICAgICAgICB3aWR0aCA9IDE2Owog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1
LCAyNTUsIDAsIDE5Mik7IC8vIGNvbnRhaW5lcjogeWVsbG93CisgICAgY29sb3IgPSBDb2xvcjo6
eWVsbG93LmNvbG9yV2l0aEFscGhhKDE5Mik7IC8vIGNvbnRhaW5lcjogeWVsbG93CiB9CiAKIHZv
aWQgR3JhcGhpY3NMYXllcjo6dXBkYXRlRGVidWdJbmRpY2F0b3JzKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaAkocmV2aXNpb24gMjY0
NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaAko
bm9uZXhpc3RlbnQpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNvbG9y
QnVpbGRlci5oIgotI2luY2x1ZGUgIkNvbG9yVHlwZXMuaCIKLSNpbmNsdWRlICJDb2xvclV0aWxp
dGllcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0ZXhwciBDb2xvckJ1aWxkZXI8
U1JHQkE8dWludDhfdD4+IG1ha2VTaW1wbGVDb2xvcihpbnQgciwgaW50IGcsIGludCBiKQotewot
ICAgIHJldHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHIsIGcsIGIsIDB4RkYpOwot
fQotCi1jb25zdGV4cHIgQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiBtYWtlU2ltcGxlQ29s
b3IoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCi17Ci0gICAgcmV0dXJuIGNsYW1wVG9Db21w
b25lbnRCeXRlczxTUkdCQT4ociwgZywgYiwgYSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU5MCw4ICsxNTkwLDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNv
bW1pdENoYQogICAgIC8vIFVzZSBoYXZpbmcgYSB0cmFuc2Zvcm0gYXMgYSBrZXkgdG8gbWFraW5n
IHRoZSB0aWxlIHdhc2ggbGF5ZXIuIElmIGV2ZXJ5IGxheWVyIGdldHMgYSB3YXNoLAogICAgIC8v
IHRoZXkgc3RhcnQgdG8gb2JzY3VyZSB1c2VmdWwgaW5mb3JtYXRpb24uCiAgICAgaWYgKCghbV90
cmFuc2Zvcm0uaXNJZGVudGl0eSgpIHx8IHRpbGVkQmFja2luZygpKSAmJiAhbV92aXNpYmxlVGls
ZVdhc2hMYXllcikgewotICAgICAgICBjb25zdGV4cHIgYXV0byB3YXNoRmlsbENvbG9yID0gbWFr
ZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCwgNTApOwotICAgICAgICBjb25zdGV4cHIgYXV0byB3YXNo
Qm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAwLCAxMDApOworICAgICAgICBj
b25zdGV4cHIgYXV0byB3YXNoRmlsbENvbG9yID0gQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYSg1
MCk7CisgICAgICAgIGNvbnN0ZXhwciBhdXRvIHdhc2hCb3JkZXJDb2xvciA9IENvbG9yOjpyZWQu
Y29sb3JXaXRoQWxwaGEoMTAwKTsKICAgICAgICAgCiAgICAgICAgIG1fdmlzaWJsZVRpbGVXYXNo
TGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVM
YXllciwgdGhpcyk7CiAgICAgICAgIFN0cmluZyBuYW1lID0gbWFrZVN0cmluZygiVmlzaWJsZSBU
aWxlIFdhc2ggTGF5ZXIgMHgiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fdmlz
aWJsZVRpbGVXYXNoTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSksIExvd2VyY2FzZSkpOwpAQCAtMjU0
OCwxMyArMjU0OCwxMyBAQCBzdGF0aWMgdm9pZCBzZXRMYXllckRlYnVnQm9yZGVyKFBsYXRmb3Jt
CiBzdGF0aWMgY29uc3QgZmxvYXQgY29udGVudHNMYXllckJvcmRlcldpZHRoID0gNDsKIHN0YXRp
YyBDb2xvciBjb250ZW50c0xheWVyRGVidWdCb3JkZXJDb2xvcihib29sIHNob3dpbmdCb3JkZXJz
KQogewotICAgIHJldHVybiBzaG93aW5nQm9yZGVycyA/IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAx
MjgsIDE4MCkgOiBDb2xvciB7IH07CisgICAgcmV0dXJuIHNob3dpbmdCb3JkZXJzID8gU1JHQkE8
dWludDhfdD4geyAwLCAwLCAxMjgsIDE4MCB9IDogQ29sb3IgeyB9OwogfQogCiBzdGF0aWMgY29u
c3QgZmxvYXQgY2xvbmVMYXllckJvcmRlcldpZHRoID0gMjsKIHN0YXRpYyBDb2xvciBjbG9uZUxh
eWVyRGVidWdCb3JkZXJDb2xvcihib29sIHNob3dpbmdCb3JkZXJzKQogewotICAgIHJldHVybiBz
aG93aW5nQm9yZGVycyA/IG1ha2VTaW1wbGVDb2xvcigyNTUsIDEyMiwgMjUxKSA6IENvbG9yIHsg
fTsKKyAgICByZXR1cm4gc2hvd2luZ0JvcmRlcnMgPyBTUkdCQTx1aW50OF90PiB7IDI1NSwgMTIy
LCAyNTEgfSA6IENvbG9yIHsgfTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZURl
YnVnSW5kaWNhdG9ycygpCkBAIC0zNzkxLDcgKzM3OTEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0RGVidWdCYWNrZ3JvdW5kCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Z2V0RGVidWdCb3Jk
ZXJJbmZvKENvbG9yJiBjb2xvciwgZmxvYXQmIHdpZHRoKSBjb25zdAogewogICAgIGlmIChpc1Bh
Z2VUaWxlZEJhY2tpbmdMYXllcigpKSB7Ci0gICAgICAgIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDAsIDAsIDEyOCwgMTI4KTsgLy8gdGlsZSBjYWNoZSBsYXllcjogZGFyayBibHVlCisgICAgICAg
IGNvbG9yID0gU1JHQkE8dWludDhfdD4geyAwLCAwLCAxMjgsIDEyOCB9OyAvLyB0aWxlIGNhY2hl
IGxheWVyOiBkYXJrIGJsdWUKICNpZiBPUyhXSU5ET1dTKQogICAgICAgICB3aWR0aCA9IDEuMDsK
ICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9y
bUNBTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg0LDExICs4NCwxMSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFp
bnRJbmRpY2F0CiAgICAgY29uc3QgZmxvYXQgdmVydGljYWxNYXJnaW4gPSAyLjU7CiAgICAgY29u
c3QgZmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDU7CiAgICAgY29uc3QgdW5zaWduZWQgZm9udFNp
emUgPSAyMjsKLSAgICBjb25zdGV4cHIgYXV0byBiYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoMTI4LCA2NCwgMjU1KTsKLSAgICBjb25zdGV4cHIgYXV0byBhY2NlbGVyYXRlZENvbnRl
eHRMYWJlbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCk7Ci0gICAgY29uc3RleHBy
IGF1dG8gdW5hY2NlbGVyYXRlZENvbnRleHRMYWJlbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1
NSwgMjU1LCAyNTUpOwotICAgIGNvbnN0ZXhwciBhdXRvIGxpbmVhckdseXBoTWFza091dGxpbmVD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCAxOTIpOwotICAgIGNvbnN0ZXhwciBhdXRv
IGRpc3BsYXlMaXN0Qm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMTY2KTsK
KyAgICBjb25zdGV4cHIgYXV0byBiYWNrZ3JvdW5kQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDEy
OCwgNjQsIDI1NSB9OworICAgIGNvbnN0ZXhwciBhdXRvIGFjY2VsZXJhdGVkQ29udGV4dExhYmVs
Q29sb3IgPSBDb2xvcjo6cmVkOworICAgIGNvbnN0ZXhwciBhdXRvIHVuYWNjZWxlcmF0ZWRDb250
ZXh0TGFiZWxDb2xvciA9IENvbG9yOjp3aGl0ZTsKKyAgICBjb25zdGV4cHIgYXV0byBsaW5lYXJH
bHlwaE1hc2tPdXRsaW5lQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMTkyKTsK
KyAgICBjb25zdGV4cHIgYXV0byBkaXNwbGF5TGlzdEJvcmRlckNvbG9yID0gQ29sb3I6OmJsYWNr
LmNvbG9yV2l0aEFscGhhKDE2Nik7CiAKICAgICBUZXh0UnVuIHRleHRSdW4oU3RyaW5nOjpudW1i
ZXIocmVwYWludENvdW50KSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcAkocmV2aXNpb24gMjY0NDcx
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTYgKzUxLDE2IEBAIFRpbGVDb3ZlcmFnZU1hcDo6
VGlsZUNvdmVyYWdlTWFwKGNvbnN0IFQKICAgICBtX3Zpc2libGVWaWV3cG9ydEluZGljYXRvckxh
eWVyLmdldCgpLnNldE5hbWUoInZpc2libGUgdmlld3BvcnQgaW5kaWNhdG9yIik7CiAgICAgbV92
aXNpYmxlVmlld3BvcnRJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRCb3JkZXJXaWR0aCgyKTsKICAg
ICBtX3Zpc2libGVWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgpLnNldEFuY2hvclBvaW50KEZs
b2F0UG9pbnQzRCgpKTsKLSAgICBtX3Zpc2libGVWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgp
LnNldEJvcmRlckNvbG9yKG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDAsIDIwMCkpOworICAgIG1f
dmlzaWJsZVZpZXdwb3J0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0Qm9yZGVyQ29sb3IoQ29sb3I6
OnJlZC5jb2xvcldpdGhBbHBoYSgyMDApKTsKIAogICAgIG1fbGF5b3V0Vmlld3BvcnRJbmRpY2F0
b3JMYXllci5nZXQoKS5zZXROYW1lKCJsYXlvdXQgdmlld3BvcnQgaW5kaWNhdG9yIik7CiAgICAg
bV9sYXlvdXRWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlcldpZHRoKDIpOwog
ICAgIG1fbGF5b3V0Vmlld3BvcnRJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRBbmNob3JQb2ludChG
bG9hdFBvaW50M0QoKSk7Ci0gICAgbV9sYXlvdXRWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgp
LnNldEJvcmRlckNvbG9yKG1ha2VTaW1wbGVDb2xvcigwLCAxMjgsIDEyOCwgMjAwKSk7CisgICAg
bV9sYXlvdXRWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlckNvbG9yKFNSR0JB
PHVpbnQ4X3Q+IHsgMCwgMTI4LCAxMjgsIDIwMCB9KTsKICAgICAKICAgICBtX2NvdmVyYWdlUmVj
dEluZGljYXRvckxheWVyLmdldCgpLnNldE5hbWUoImNvdmVyYWdlIGluZGljYXRvciIpOwogICAg
IG1fY292ZXJhZ2VSZWN0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0QW5jaG9yUG9pbnQoRmxvYXRQ
b2ludDNEKCkpOwotICAgIG1fY292ZXJhZ2VSZWN0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0QmFj
a2dyb3VuZENvbG9yKG1ha2VTaW1wbGVDb2xvcig2NCwgNjQsIDY0LCA1MCkpOworICAgIG1fY292
ZXJhZ2VSZWN0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0QmFja2dyb3VuZENvbG9yKFNSR0JBPHVp
bnQ4X3Q+IHsgNjQsIDY0LCA2NCwgNTAgfSk7CiAKICAgICBtX2xheWVyLmdldCgpLmFwcGVuZFN1
YmxheWVyKG1fY292ZXJhZ2VSZWN0SW5kaWNhdG9yTGF5ZXIpOwogICAgIG1fbGF5ZXIuZ2V0KCku
YXBwZW5kU3VibGF5ZXIobV92aXNpYmxlVmlld3BvcnRJbmRpY2F0b3JMYXllcik7CkBAIC0xMzYs
MTYgKzEzNiwxNiBAQCB2b2lkIFRpbGVDb3ZlcmFnZU1hcDo6dXBkYXRlKCkKICAgICBDb2xvciB2
aXNpYmxlUmVjdEluZGljYXRvckNvbG9yOwogICAgIHN3aXRjaCAobV9jb250cm9sbGVyLmluZGlj
YXRvck1vZGUoKSkgewogICAgIGNhc2UgU3luY2hyb25vdXNTY3JvbGxpbmdCZWNhdXNlT2ZMYWNr
T2ZTY3JvbGxpbmdDb29yZGluYXRvckluZGljYXRpb246Ci0gICAgICAgIHZpc2libGVSZWN0SW5k
aWNhdG9yQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjAwLCA4MCwgMjU1KTsKKyAgICAgICAgdmlz
aWJsZVJlY3RJbmRpY2F0b3JDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjAwLCA4MCwgMjU1IH07
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3luY2hyb25vdXNTY3JvbGxpbmdCZWNhdXNlT2ZT
dHlsZUluZGljYXRpb246Ci0gICAgICAgIHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMjU1LCAwLCAwKTsKKyAgICAgICAgdmlzaWJsZVJlY3RJbmRpY2F0b3JDb2xv
ciA9IENvbG9yOjpyZWQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3luY2hyb25vdXNTY3Jv
bGxpbmdCZWNhdXNlT2ZFdmVudEhhbmRsZXJzSW5kaWNhdGlvbjoKLSAgICAgICAgdmlzaWJsZVJl
Y3RJbmRpY2F0b3JDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMCk7CisgICAgICAg
IHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3IgPSBDb2xvcjo6eWVsbG93OwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFzeW5jU2Nyb2xsaW5nSW5kaWNhdGlvbjoKLSAgICAgICAgdmlzaWJsZVJl
Y3RJbmRpY2F0b3JDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAyMDAsIDApOworICAgICAgICB2
aXNpYmxlUmVjdEluZGljYXRvckNvbG9yID0gU1JHQkE8dWludDhfdD4geyAwLCAyMDAsIDAgfTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5
ZXJXaW5JbnRlcm5hbC5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbklu
dGVybmFsOjpkcmF3UmVwCiAgICAgaWYgKGJvcmRlcldpZHRoID4gMCkKICAgICAgICAgYmFja2dy
b3VuZENvbG9yID0gQ0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IoY2FMYXllcik7CiAgICAgZWxzZQot
ICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKG1ha2VTaW1wbGVDb2xvcigy
NTUsIDAsIDApKTsKKyAgICAgICAgYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xv
cjo6cmVkKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoY29udGV4dCk7
CiAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihncmFwaGljc0NvbnRl
eHQsIG93bmVyKCksIGRyYXdDb3VudCwgYmFja2dyb3VuZENvbG9yKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3Bw
CShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBDb2xv
ciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjCiAgICAgaWYgKCFwaXhlbFszXSkK
ICAgICAgICAgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVudDsKIAotICAgIHJldHVybiBtYWtlU2lt
cGxlQ29sb3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhl
bFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOworICAgIHJldHVybiBj
bGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBp
eGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVs
WzNdKTsKIH0KIAogdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRD
b2NvYS5tbQkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIw
NSwxNSArMjA1LDE1IEBAIHN0YXRpYyBDR0NvbG9yUmVmIGNvbG9yRm9yTWFya2VyTGluZVN0eWwK
ICAgICBzd2l0Y2ggKHN0eWxlKSB7CiAgICAgLy8gUmVkCiAgICAgY2FzZSBEb2N1bWVudE1hcmtl
ckxpbmVTdHlsZTo6TW9kZTo6U3BlbGxpbmc6Ci0gICAgICAgIHJldHVybiBjYWNoZWRDR0NvbG9y
KHVzZURhcmtNb2RlID8gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMTQwLCAxNDAsIDIxNykgOiBtYWtl
U2ltcGxlQ29sb3IoMjU1LCA1OSwgNDgsIDE5MSkpOworICAgICAgICByZXR1cm4gY2FjaGVkQ0dD
b2xvcih1c2VEYXJrTW9kZSA/IFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAxNDAsIDE0MCwgMjE3IH0g
OiBTUkdCQTx1aW50OF90PiB7IDI1NSwgNTksIDQ4LCAxOTEgfSk7CiAgICAgLy8gQmx1ZQogICAg
IGNhc2UgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU6OkRpY3RhdGlvbkFsdGVybmF0aXZl
czoKICAgICBjYXNlIERvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpUZXh0Q2hlY2tpbmdE
aWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzOgogICAgIGNhc2UgRG9jdW1lbnRNYXJrZXJM
aW5lU3R5bGU6Ok1vZGU6OkF1dG9jb3JyZWN0aW9uUmVwbGFjZW1lbnQ6Ci0gICAgICAgIHJldHVy
biBjYWNoZWRDR0NvbG9yKHVzZURhcmtNb2RlID8gbWFrZVNpbXBsZUNvbG9yKDQwLCAxNDUsIDI1
NSwgMjE3KSA6IG1ha2VTaW1wbGVDb2xvcigwLCAxMjIsIDI1NSwgMTkxKSk7CisgICAgICAgIHJl
dHVybiBjYWNoZWRDR0NvbG9yKHVzZURhcmtNb2RlID8gU1JHQkE8dWludDhfdD4geyA0MCwgMTQ1
LCAyNTUsIDIxNyB9IDogU1JHQkE8dWludDhfdD4geyAwLCAxMjIsIDI1NSwgMTkxIH0pOwogICAg
IC8vIEdyZWVuCiAgICAgY2FzZSBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6R3JhbW1h
cjoKLSAgICAgICAgcmV0dXJuIGNhY2hlZENHQ29sb3IodXNlRGFya01vZGUgPyBtYWtlU2ltcGxl
Q29sb3IoNTAsIDIxNSwgNzUsIDIxNykgOiBtYWtlU2ltcGxlQ29sb3IoMjUsIDE3NSwgNTAsIDE5
MSkpOworICAgICAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcih1c2VEYXJrTW9kZSA/IFNSR0JBPHVp
bnQ4X3Q+IHsgNTAsIDIxNSwgNzUsIDIxNyB9IDogU1JHQkE8dWludDhfdD4geyAyNSwgMTc1LCA1
MCwgMTkxIH0pOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHVzZU9sZEFxdWFGb2N1c1JpbmdDb2xvcjsK
IAogQ29sb3Igb2xkQXF1YUZvY3VzUmluZ0NvbG9yKCkKIHsKLSAgICByZXR1cm4gbWFrZVNpbXBs
ZUNvbG9yKDEyNSwgMTczLCAyMTcpOworICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDEyNSwg
MTczLCAyMTcgfTsKIH0KIAogdm9pZCBzZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcihib29s
IG5ld1ZhbHVlKQpAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhf
dD4+IG1ha2VTaW1wCiAgICAgICAgIE5TVUludGVnZXIgcGl4ZWxbNF07CiAgICAgICAgIFtvZmZz
Y3JlZW5SZXAgZ2V0UGl4ZWw6cGl4ZWwgYXRYOjAgeTowXTsKIAotICAgICAgICByZXR1cm4gbWFr
ZVNpbXBsZUNvbG9yKHBpeGVsWzBdLCBwaXhlbFsxXSwgcGl4ZWxbMl0sIHBpeGVsWzNdKTsKKyAg
ICAgICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4ocGl4ZWxbMF0sIHBpeGVs
WzFdLCBwaXhlbFsyXSwgcGl4ZWxbM10pOwogICAgIH0KIAogICAgIFtyZ2JDb2xvciBnZXRSZWQ6
JnJlZENvbXBvbmVudCBncmVlbjomZ3JlZW5Db21wb25lbnQgYmx1ZTomYmx1ZUNvbXBvbmVudCBh
bHBoYTomYWxwaGFdOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXIuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcjo6cAogICAgICAgICBBU1NFUlQoIW1fdGV4dHVyZSk7CiAgICAg
ICAgIGlmIChtX2hvbGVQdW5jaENsaWVudCkKICAgICAgICAgICAgIG1faG9sZVB1bmNoQ2xpZW50
LT5zZXRWaWRlb1JlY3RhbmdsZShlbmNsb3NpbmdJbnRSZWN0KG1vZGVsVmlld01hdHJpeC5tYXBS
ZWN0KHRhcmdldFJlY3QpKSk7Ci0gICAgICAgIHRleG1hcEdMLmRyYXdTb2xpZENvbG9yKHRhcmdl
dFJlY3QsIG1vZGVsVmlld01hdHJpeCwgbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDApLCBmYWxz
ZSk7CisgICAgICAgIHRleG1hcEdMLmRyYXdTb2xpZENvbG9yKHRhcmdldFJlY3QsIG1vZGVsVmll
d01hdHJpeCwgQ29sb3I6OnRyYW5zcGFyZW50LCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRDR1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAkocmV2aXNpb24gMjY0NDcxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENH
V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDggKzE5OCw4IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3RG90c0ZvckRvY3VtZW4KICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBs
YXRmb3JtQ29udGV4dCgpOwogICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAKLSAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gc3BlbGxpbmdQYXR0ZXJuQ29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoMjU1LCAwLCAwKTsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZ3JhbW1hclBhdHRl
cm5Db2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAxMjgsIDApOworICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBzcGVsbGluZ1BhdHRlcm5Db2xvciA9IENvbG9yOjpyZWQ7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGdyYW1tYXJQYXR0ZXJuQ29sb3IgPSBDb2xvcjo6ZGFya0dyZWVuOwogCiAg
ICAgYXV0byBbciwgZywgYiwgYV0gPSBzdHlsZS5tb2RlID09IERvY3VtZW50TWFya2VyTGluZVN0
eWxlOjpNb2RlOjpHcmFtbWFyID8gZ3JhbW1hclBhdHRlcm5Db2xvciA6IHNwZWxsaW5nUGF0dGVy
bkNvbG9yOwogICAgIENHQ29udGV4dFNldFJHQlN0cm9rZUNvbG9yKGNvbnRleHQsIHIsIGcsIGIs
IGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1t
CShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0lt
YWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgRHJhZ0ltYWdlUmVm
IGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbQogICAgICAgICBHcmFwaGljc0NvbnRleHQgY29u
dGV4dChyZW5kZXJlckNvbnRleHQuQ0dDb250ZXh0KTsKICAgICAgICAgY29udGV4dC50cmFuc2xh
dGUoMCwgQ0dSZWN0R2V0SGVpZ2h0KGltYWdlUmVjdCkpOwogICAgICAgICBjb250ZXh0LnNjYWxl
KHsgMSwgLTEgfSk7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRl
ZFJlY3QoaW1hZ2VSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSg0KSksIG1ha2VTaW1wbGVD
b2xvcigyNTUsIDI1NSwgMjU1KSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZs
b2F0Um91bmRlZFJlY3QoaW1hZ2VSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSg0KSksIENv
bG9yOjp3aGl0ZSk7CiAgICAgICAgIHRpdGxlRm9udENhc2NhZGUuZ2V0KCkuZHJhd1RleHQoY29u
dGV4dCwgVGV4dFJ1bih0cnVuY2F0ZWRUb3BTdHJpbmcpLCBGbG9hdFBvaW50KGRyYWdJbWFnZVBh
ZGRpbmcsIDE4ICsgZHJhZ0ltYWdlUGFkZGluZykpOwogICAgICAgICBpZiAoIXRydW5jYXRlZEJv
dHRvbVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgICAgICB1cmxGb250Q2FzY2FkZS5nZXQoKS5k
cmF3VGV4dChjb250ZXh0LCBUZXh0UnVuKHRydW5jYXRlZEJvdHRvbVN0cmluZyksIEZsb2F0UG9p
bnQoZHJhZ0ltYWdlUGFkZGluZywgNDAgKyBkcmFnSW1hZ2VQYWRkaW5nKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0JKHJldmlzaW9u
IDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQ2Miw4ICs0NjIsOCBAQCB1bnNpZ25lZCBMZWdhY3lUaWxl
Q2FjaGU6OnRpbGVDYXBhY2l0eUZvCiBDb2xvciBMZWdhY3lUaWxlQ2FjaGU6OmNvbG9yRm9yR3Jp
ZFRpbGVCb3JkZXIoTGVnYWN5VGlsZUdyaWQqIGdyaWQpIGNvbnN0CiB7CiAgICAgaWYgKGdyaWQg
PT0gbV96b29tZWRPdXRUaWxlR3JpZC5nZXQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVD
b2xvcig1MSwgMjU1LCAwLCAxMjgpOwotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoNTEsIDIz
MCwgMCwgMTI4KTsKKyAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgNTEsIDI1NSwgMCwg
MTI4IH07CisgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgNTEsIDIzMCwgMCwgMTI4IH07CiB9
CiAKIHN0YXRpYyBib29sIHNob3VsZFJlcGFpbnRJblBpZWNlcyhjb25zdCBDR1JlY3QmIGRpcnR5
UmVjdCwgQ0dTUmVnaW9uT2JqIGRpcnR5UmVnaW9uLCBDR0Zsb2F0IGNvbnRlbnRzU2NhbGUpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2LDggQEAgc3RhdGljIGlubGluZSBWZWN0b3I8
TW9ja01lZGlhRGV2aWNlPiBkZQogICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiU0NSRUVOLTEi
X3MsICJNb2NrIHNjcmVlbiBkZXZpY2UgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBDb2xvcjo6bGlnaHRHcmF5LCB7IDM4NDAs
IDIxNjAgfSB9IH0sCiAgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJTQ1JFRU4tMiJfcywgIk1v
Y2sgc2NyZWVuIGRldmljZSAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIENvbG9yOjp5ZWxsb3csIHsgMTkyMCwgMTA4MCB9IH0g
fSwKIAotICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRv
dyAxIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpTY3JlZW4sIG1ha2VTaW1wbGVDb2xvcigyNTUsIDI0MSwgMTgxKSwgeyA2NDAsIDQ4MCB9IH0g
fSwKLSAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIldJTkRPVy0yIl9zLCAiTW9jayB3aW5kb3cg
MiJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
U2NyZWVuLCBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyMDgsIDE4MSksIHsgMTI4MCwgNjAwIH0gfSB9
LAorICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAx
Il9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpT
Y3JlZW4sIFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAyNDEsIDE4MSB9LCB7IDY0MCwgNDgwIH0gfSB9
LAorICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAy
Il9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpT
Y3JlZW4sIFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAyMDgsIDE4MSB9LCB7IDEyODAsIDYwMCB9IH0g
fSwKICAgICB9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNpb24gMjY0NDcxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NSwxMSArMjY1LDYgQEAgdm9pZCBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZTo6ZHJhd0FuaW1hdAogCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpk
cmF3Qm94ZXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBtYWdlbnRhID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMjU1KTsKLSAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gYmx1ZSA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAyNTUpOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byByZWQgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAwKTsK
LSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGFya0dyZWVuID0gbWFrZVNpbXBsZUNvbG9yKDAs
IDEyOCwgMCk7Ci0KICAgICBJbnRTaXplIHNpemUgPSBjYXB0dXJlU2l6ZSgpOwogICAgIGZsb2F0
IGJveFNpemUgPSBzaXplLndpZHRoKCkgKiAuMDM1OwogICAgIGZsb2F0IGJveFRvcCA9IHNpemUu
aGVpZ2h0KCkgKiAuNjsKQEAgLTMxOCw3ICszMTMsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpkcmF3Qm94ZXMoCiAKICAgICBib3hUb3AgKz0gYm94U2l6ZSArIDI7CiAgICAgYm94
TGVmdCA9IGJveFNpemU7Ci0gICAgY29uc3RleHByIFNSR0JBPHVpbnQ4X3Q+IGJveENvbG9yc1td
ID0geyBDb2xvcjo6d2hpdGUsIENvbG9yOjp5ZWxsb3csIENvbG9yOjpjeWFuLCBkYXJrR3JlZW4s
IG1hZ2VudGEsIHJlZCwgYmx1ZSB9OworICAgIGNvbnN0ZXhwciBTUkdCQTx1aW50OF90PiBib3hD
b2xvcnNbXSA9IHsgQ29sb3I6OndoaXRlLCBDb2xvcjo6eWVsbG93LCBDb2xvcjo6Y3lhbiwgQ29s
b3I6OmRhcmtHcmVlbiwgQ29sb3I6Om1hZ2VudGEsIENvbG9yOjpyZWQsIENvbG9yOjpibHVlIH07
CiAgICAgZm9yIChhdXRvJiBib3hDb2xvciA6IGJveENvbG9ycykgewogICAgICAgICBjb250ZXh0
LmZpbGxSZWN0KEZsb2F0UmVjdChib3hMZWZ0LCBib3hUb3AsIGJveFNpemUgKyAxLCBib3hTaXpl
ICsgMSksIGJveENvbG9yKTsKICAgICAgICAgYm94TGVmdCArPSBib3hTaXplICsgMTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9j
ay5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
U2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBp
bnQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpzY3JvbGxiYXJUaGlja25lCiAKIHZvaWQgU2Nyb2xsYmFy
VGhlbWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7Ci0gICAg
Y29udGV4dC5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6
bGlnaHRHcmF5IDogbWFrZVNpbXBsZUNvbG9yKDIyNCwgMjI0LCAyMjQpKTsKKyAgICBjb250ZXh0
LmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xsYmFyLmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdy
YXkuY29sb3IoKSA6IFNSR0JBPHVpbnQ4X3Q+IHsgMjI0LCAyMjQsIDIyNCB9KTsKIH0KIAogdm9p
ZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24vU2Nyb2xsYmFyVGhlbWVQbGF5U3Rh
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRp
b24vU2Nyb2xsYmFyVGhlbWVQbGF5U3RhdGlvbi5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9uL1Njcm9sbGJhclRoZW1lUGxheVN0YXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIEludFJlY3QgU2Nyb2xsYmFy
VGhlbWVQbGF5U3RhdGlvbjo6dHJhY2sKIAogdm9pZCBTY3JvbGxiYXJUaGVtZVBsYXlTdGF0aW9u
OjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJh
ciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7Ci0gICAgY29udGV4dC5m
aWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5
IDogQ29sb3IobWFrZVNpbXBsZUNvbG9yKDB4RTAsIDB4RTAsIDB4RTApKSk7CisgICAgY29udGV4
dC5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRH
cmF5IDogU1JHQkE8dWludDhfdD4geyAyMjQsIDIyNCwgMjI0IH0pOwogfQogCiB2b2lkIFNjcm9s
bGJhclRoZW1lUGxheVN0YXRpb246OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAJKHJldmlzaW9u
IDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODksMTQgKzE4OSwxNCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlRm9yTGluayhFbGVtCiAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoY29udGV4
dFJlZik7CiAgICAgLy8gT24gTWFjIGFscGhhIGlzIHswLjcsIDAuNywgMC43LCAwLjh9LCBob3dl
dmVyIHdlIGNhbid0IGNvbnRyb2wgYWxwaGEKICAgICAvLyBmb3IgZHJhZyBpbWFnZXMgb24gd2lu
LCBzbyB3ZSB1c2UgMQotICAgIGNvbnN0ZXhwciBhdXRvIGJhY2tncm91bmRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigxNDAsIDE0MCwgMTQwKTsKKyAgICBjb25zdGV4cHIgYXV0byBiYWNrZ3JvdW5k
Q29sb3IgPSBTUkdCQTx1aW50X3Q+IHsgMTQwLCAxNDAsIDE0MCB9OwogICAgIHN0YXRpYyBjb25z
dCBJbnRTaXplIHJhZGlpKERyYWdMYWJlbFJhZGl1cywgRHJhZ0xhYmVsUmFkaXVzKTsKICAgICBJ
bnRSZWN0IHJlY3QoMCwgMCwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSk7
CiAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChyZWN0LCByYWRp
aSwgcmFkaWksIHJhZGlpLCByYWRpaSksIGJhY2tncm91bmRDb2xvcik7CiAgCiAgICAgLy8gRHJh
dyB0aGUgdGV4dAotICAgIGNvbnN0ZXhwciBhdXRvIHRvcENvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDAsIDAsIDApOyAvLyBvcmlnaW5hbCBhbHBoYSA9IDAuNzUKLSAgICBjb25zdGV4cHIgYXV0byBi
b3R0b21Db2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1LCAxMjcpOyAvLyBvcmln
aW5hbCBhbHBoYSA9IDAuNQorICAgIGNvbnN0ZXhwciBhdXRvIHRvcENvbG9yID0gQ29sb3I6OmJs
YWNrOyAvLyBvcmlnaW5hbCBhbHBoYSA9IDAuNzUKKyAgICBjb25zdGV4cHIgYXV0byBib3R0b21D
b2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYSgxMjcpOyAvLyBvcmlnaW5hbCBhbHBo
YSA9IDAuNQogICAgIGlmIChkcmF3VVJMU3RyaW5nKSB7CiAgICAgICAgIGlmIChjbGlwVVJMU3Ry
aW5nKQogICAgICAgICAgICAgdXJsU3RyaW5nID0gU3RyaW5nVHJ1bmNhdG9yOjpyaWdodFRydW5j
YXRlKHVybFN0cmluZywgaW1hZ2VTaXplLndpZHRoKCkgLSAoRHJhZ0xhYmVsQm9yZGVyWCAqIDIu
MGYpLCAqdXJsRm9udCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc0LDEwICs3NCwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgcmVwbGFjZW1lbnRBcnJvd0xlZnRN
CiBzdGF0aWMgY29uc3QgZmxvYXQgcmVwbGFjZW1lbnRBcnJvd1BhZGRpbmcgPSA0Owogc3RhdGlj
IGNvbnN0IGZsb2F0IHJlcGxhY2VtZW50QXJyb3dDaXJjbGVQYWRkaW5nID0gMzsKIAotY29uc3Rl
eHByIGF1dG8gcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RQcmVzc2VkQ29sb3IgPSBtYWtlU2lt
cGxlQ29sb3IoMTA1LCAxMDUsIDEwNSwgMjQyKTsKLWNvbnN0ZXhwciBhdXRvIHJlcGxhY2VtZW50
VGV4dFJvdW5kZWRSZWN0Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTI1LCAxMjUsIDEyNSwgMjQy
KTsKLWNvbnN0ZXhwciBhdXRvIHJlcGxhY2VtZW50VGV4dENvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDI0MCwgMjQwLCAyNDApOwotY29uc3RleHByIGF1dG8gdW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1LCAyMTYpOworY29uc3RleHByIGF1
dG8gcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RQcmVzc2VkQ29sb3IgPSBTUkdCQTx1aW50OF90
PiB7IDEwNSwgMTA1LCAxMDUsIDI0MiB9OworY29uc3RleHByIGF1dG8gcmVwbGFjZW1lbnRUZXh0
Um91bmRlZFJlY3RDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTI1LCAxMjUsIDEyNSwgMjQyIH07
Citjb25zdGV4cHIgYXV0byByZXBsYWNlbWVudFRleHRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsg
MjQwLCAyNDAsIDI0MCB9OworY29uc3RleHByIGF1dG8gdW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJD
b2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYSgyMTYpOwogCiBSZW5kZXJFbWJlZGRl
ZE9iamVjdDo6UmVuZGVyRW1iZWRkZWRPYmplY3QoSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyV2lkZ2V0KGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1l
U2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJh
bWVTZXQuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw5ICs2OCw5IEBAIFJlbmRl
ckZyYW1lU2V0OjpHcmlkQXhpczo6R3JpZEF4aXMoKQogewogfQogCi1jb25zdGV4cHIgYXV0byBi
b3JkZXJTdGFydEVkZ2VDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigxNzAsIDE3MCwgMTcwKTsKK2Nv
bnN0ZXhwciBhdXRvIGJvcmRlclN0YXJ0RWRnZUNvbG9yID0gU1JHQkE8dWludDhfdD4geyAxNzAs
IDE3MCwgMTcwIH07CiBjb25zdGV4cHIgYXV0byBib3JkZXJFbmRFZGdlQ29sb3IgPSBDb2xvcjo6
YmxhY2s7Ci1jb25zdGV4cHIgYXV0byBib3JkZXJGaWxsQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
MjA4LCAyMDgsIDIwOCk7Citjb25zdGV4cHIgYXV0byBib3JkZXJGaWxsQ29sb3IgPSBTUkdCQTx1
aW50OF90PiB7IDIwOCwgMjA4LCAyMDggfTsKIAogdm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnRD
b2x1bW5Cb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIGJv
cmRlclJlY3QpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNDgsNyArMjI0OCw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIKICNlbmRpZgogCiAjaWZkZWYgUkVWRUFMX1RS
QU5TUEFSRU5DWV9MQVlFUlMKLSAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IobWFrZVNpbXBs
ZUNvbG9yKDAsIDAsIDEyOCwgNTEpKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoU1JH
QkE8dWludDhfdD4geyAwLCAwLCAxMjgsIDUxIH0pOwogICAgICAgICBjb250ZXh0LmZpbGxSZWN0
KHBpeGVsU25hcHBlZENsaXBSZWN0KTsKICNlbmRpZgogICAgIH0KQEAgLTQxMjMsNyArNDEyMyw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0MKICAgICAgICAgY29u
dGV4dC5jbGlwKHJlc2l6ZXJBYnNSZWN0KTsKICAgICAgICAgTGF5b3V0UmVjdCBsYXJnZXJDb3Ju
ZXIgPSByZXNpemVyQWJzUmVjdDsKICAgICAgICAgbGFyZ2VyQ29ybmVyLnNldFNpemUoTGF5b3V0
U2l6ZShsYXJnZXJDb3JuZXIud2lkdGgoKSArIDFfbHUsIGxhcmdlckNvcm5lci5oZWlnaHQoKSAr
IDFfbHUpKTsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihtYWtlU2ltcGxlQ29sb3Io
MjE3LCAyMTcsIDIxNykpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKFNSR0JBPHVp
bnQ4X3Q+IHsgMjE3LCAyMTcsIDIxNyB9KTsKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlj
a25lc3MoMS4wZik7CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3Bh
cmVudCk7CiAgICAgICAgIGNvbnRleHQuZHJhd1JlY3Qoc25hcHBlZEludFJlY3QobGFyZ2VyQ29y
bmVyKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNjEsNyArMzE2MSw3
IEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4gcGF0dGVybkZvclRvdWNoQWMKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfTsKIAotICAgIGNvbnN0ZXhwciBhdXRvIGZpbGxDb2xvciA9IG1ha2VTaW1w
bGVDb2xvcigwLCAwLCAwLCAxMjgpOworICAgIGNvbnN0ZXhwciBhdXRvIGZpbGxDb2xvciA9IENv
bG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgxMjgpOwogCiAgICAgc3RhdGljIGNvbnN0IFBhdHRl
cm5EZXNjcmlwdGlvbiBwYXR0ZXJuRGVzY3JpcHRpb25zW10gPSB7CiAgICAgICAgIHsgImF1dG8i
X3MsIHsgfSwgZmlsbENvbG9yIH0sCkBAIC0zMTgzLDcgKzMxODMsNyBAQCBzdGF0aWMgUmVmUHRy
PFBhdHRlcm4+IHBhdHRlcm5Gb3JUb3VjaEFjCiAjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX1JFR0lP
TlMpCiBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JFdmVudExpc3RlbmVyUmVnaW9u
VHlwZShFdmVudExpc3RlbmVyUmVnaW9uVHlwZSB0eXBlLCBGbG9hdFNpemUgY29udGVudE9mZnNl
dCwgR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCkKIHsKLSAgICBjb25zdGV4cHIgYXV0byBm
aWxsQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMTI4LCAwLCAxMjgpOworICAgIGNvbnN0ZXhw
ciBhdXRvIGZpbGxDb2xvciA9IENvbG9yOjpkYXJrR3JlZW4uY29sb3JXaXRoQWxwaGEoMTI4KTsK
IAogICAgIGF1dG8gcGF0dGVybkFuZFBoYXNlID0gWyZdKCkgLT4gUGF0dGVybkRlc2NyaXB0aW9u
IHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0zMjIwLDcgKzMyMjAsNyBAQCB2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6cGFpbnREZWJ1Z092ZXJsCiAjaWYgRU5BQkxFKFRPVUNIX0FDVElP
Tl9SRUdJT05TKQogICAgIC8vIFBhaW50IHJlY3RzIGZvciB0b3VjaCBhY3Rpb24uCiAgICAgaWYg
KHZpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25zICYgVG91Y2hBY3Rpb25SZWdpb24pIHsKLSAgICAg
ICAgY29uc3RleHByIGF1dG8gcmVnaW9uQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMjU1
LCA1MCk7CisgICAgICAgIGNvbnN0ZXhwciBhdXRvIHJlZ2lvbkNvbG9yID0gQ29sb3I6OmJsdWUu
Y29sb3JXaXRoQWxwaGEoNTApOwogICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihyZWdpb25D
b2xvcik7CiAgICAgICAgIGZvciAoYXV0byByZWN0IDogZXZlbnRSZWdpb24ucmVnaW9uKCkucmVj
dHMoKSkKICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocmVjdCk7CkBAIC0zMjY1LDcgKzMy
NjUsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnREZWJ1Z092ZXJsCiAjaWYgRU5B
QkxFKEVESVRBQkxFX1JFR0lPTikKICAgICAvLyBQYWludCByZWN0cyBmb3IgZWRpdGFibGUgZWxl
bWVudHMuCiAgICAgaWYgKHZpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25zICYgRWRpdGFibGVFbGVt
ZW50UmVnaW9uKSB7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1ha2VTaW1wbGVDb2xv
cigxMjgsIDAsIDEyOCwgNTApKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoU1JHQkE8
dWludDhfdD4geyAxMjgsIDAsIDEyOCwgNTAgfSk7CiAgICAgICAgIGZvciAoYXV0byByZWN0IDog
ZXZlbnRSZWdpb24ucmVjdHNGb3JFZGl0YWJsZUVsZW1lbnRzKCkpCiAgICAgICAgICAgICBjb250
ZXh0LmZpbGxSZWN0KHJlY3QpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcxLDcgKzY3MSw3IEBA
IENvbG9yIFJlbmRlclRoZW1lOjppbmFjdGl2ZUxpc3RCb3hTZWxlY3QKIENvbG9yIFJlbmRlclRo
ZW1lOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihPcHRpb25TZXQ8U3R5
bGVDb2xvcjo6T3B0aW9ucz4pIGNvbnN0CiB7CiAgICAgLy8gVXNlIGEgYmx1ZSBjb2xvciBieSBk
ZWZhdWx0IGlmIHRoZSBwbGF0Zm9ybSB0aGVtZSBkb2Vzbid0IGRlZmluZSBhbnl0aGluZy4KLSAg
ICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDI1NSk7CisgICAgcmV0dXJuIENvbG9yOjpi
bHVlOwogfQogCiBDb2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IoT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+KSBjb25zdApAQCAtNjg0
LDcgKzY4NCw3IEBAIENvbG9yIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWMKIHsK
ICAgICAvLyBVc2UgYSBncmV5IGNvbG9yIGJ5IGRlZmF1bHQgaWYgdGhlIHBsYXRmb3JtIHRoZW1l
IGRvZXNuJ3QgZGVmaW5lIGFueXRoaW5nLgogICAgIC8vIFRoaXMgY29sb3IgbWF0Y2hlcyBGaXJl
Zm94J3MgaW5hY3RpdmUgY29sb3IuCi0gICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigxNzYsIDE3
NiwgMTc2KTsKKyAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAxNzYsIDE3NiwgMTc2IH07CiB9
CiAKIENvbG9yIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9yKE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPikgY29uc3QKQEAgLTEzMzQsMzAg
KzEzMzQsMzAgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSQogewog
ICAgIHN3aXRjaCAoY3NzVmFsdWVJZCkgewogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMaW5rOgot
ICAgICAgICByZXR1cm4gb3B0aW9ucy5jb250YWlucyhTdHlsZUNvbG9yOjpPcHRpb25zOjpGb3JW
aXNpdGVkTGluaykgPyBtYWtlU2ltcGxlQ29sb3IoODUsIDI2LCAxMzkpIDogbWFrZVNpbXBsZUNv
bG9yKDAsIDAsIDIzOCk7CisgICAgICAgIHJldHVybiBvcHRpb25zLmNvbnRhaW5zKFN0eWxlQ29s
b3I6Ok9wdGlvbnM6OkZvclZpc2l0ZWRMaW5rKSA/IFNSR0JBPHVpbnQ4X3Q+IHsgODUsIDI2LCAx
MzkgfSA6IFNSR0JBPHVpbnQ4X3Q+IHsgMCwgMCwgMjM4IH07CiAgICAgY2FzZSBDU1NWYWx1ZVdl
YmtpdEFjdGl2ZWxpbms6CiAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZXRleHQ6Ci0gICAgICAgIHJl
dHVybiBtYWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAwKTsKKyAgICAgICAgcmV0dXJuIENvbG9yOjpy
ZWQ7CiAgICAgY2FzZSBDU1NWYWx1ZUxpbmt0ZXh0OgotICAgICAgICByZXR1cm4gbWFrZVNpbXBs
ZUNvbG9yKDAsIDAsIDIzOCk7CisgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDAsIDAs
IDIzOCB9OwogICAgIGNhc2UgQ1NTVmFsdWVWaXNpdGVkdGV4dDoKLSAgICAgICAgcmV0dXJuIG1h
a2VTaW1wbGVDb2xvcig4NSwgMjYsIDEzOSk7CisgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90
PiB7IDg1LCAyNiwgMTM5IH07CiAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWJvcmRlcjoKICAgICAg
ICAgcmV0dXJuIENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVlQWN0aXZlYnV0dG9udGV4
dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNlIENTU1ZhbHVlQWN0aXZl
Y2FwdGlvbjoKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigyMDQsIDIwNCwgMjA0KTsK
KyAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgMjA0LCAyMDQsIDIwNCB9OwogICAgIGNh
c2UgQ1NTVmFsdWVBcHB3b3Jrc3BhY2U6CiAgICAgICAgIHJldHVybiBDb2xvcjo6d2hpdGU7CiAg
ICAgY2FzZSBDU1NWYWx1ZUJhY2tncm91bmQ6Ci0gICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29s
b3IoOTksIDk5LCAyMDYpOworICAgICAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyA5OSwgOTks
IDIwNiB9OwogICAgIGNhc2UgQ1NTVmFsdWVCdXR0b25mYWNlOgogICAgICAgICByZXR1cm4gQ29s
b3I6OmxpZ2h0R3JheTsKICAgICBjYXNlIENTU1ZhbHVlQnV0dG9uaGlnaGxpZ2h0OgotICAgICAg
ICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDIyMSwgMjIxLCAyMjEpOworICAgICAgICByZXR1cm4g
U1JHQkE8dWludDhfdD4geyAyMjEsIDIyMSwgMjIxIH07CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRv
bnNoYWRvdzoKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigxMzYsIDEzNiwgMTM2KTsK
KyAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgMTM2LCAxMzYsIDEzNiB9OwogICAgIGNh
c2UgQ1NTVmFsdWVCdXR0b250ZXh0OgogICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAg
IGNhc2UgQ1NTVmFsdWVDYXB0aW9udGV4dDoKQEAgLTEzNzEsOSArMTM3MSw5IEBAIENvbG9yIFJl
bmRlclRoZW1lOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUkKICAgICBjYXNlIENTU1ZhbHVlRmllbGR0
ZXh0OgogICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVHcmF5
dGV4dDoKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigxMjgsIDEyOCwgMTI4KTsKKyAg
ICAgICAgcmV0dXJuIENvbG9yOjpkYXJrR3JheTsKICAgICBjYXNlIENTU1ZhbHVlSGlnaGxpZ2h0
OgotICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDE4MSwgMjEzLCAyNTUpOworICAgICAg
ICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAxODEsIDIxMywgMjU1IH07CiAgICAgY2FzZSBDU1NW
YWx1ZUhpZ2hsaWdodHRleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2Fz
ZSBDU1NWYWx1ZUluYWN0aXZlYm9yZGVyOgpAQCAtMTM4MSw5ICsxMzgxLDkgQEAgQ29sb3IgUmVu
ZGVyVGhlbWU6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSQogICAgIGNhc2UgQ1NTVmFsdWVJbmFjdGl2
ZWNhcHRpb246CiAgICAgICAgIHJldHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1
ZUluYWN0aXZlY2FwdGlvbnRleHQ6Ci0gICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMTI3
LCAxMjcsIDEyNyk7CisgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDEyNywgMTI3LCAx
MjcgfTsKICAgICBjYXNlIENTU1ZhbHVlSW5mb2JhY2tncm91bmQ6Ci0gICAgICAgIHJldHVybiBt
YWtlU2ltcGxlQ29sb3IoMjUxLCAyNTIsIDE5Nyk7CisgICAgICAgIHJldHVybiBTUkdCQTx1aW50
OF90PiB7IDI1MSwgMjUyLCAxOTcgfTsKICAgICBjYXNlIENTU1ZhbHVlSW5mb3RleHQ6CiAgICAg
ICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZU1lbnU6CkBAIC0xMzk1
LDE5ICsxMzk1LDE5IEBAIENvbG9yIFJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUkK
ICAgICBjYXNlIENTU1ZhbHVlVGV4dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAg
ICBjYXNlIENTU1ZhbHVlVGhyZWVkZGFya3NoYWRvdzoKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1w
bGVDb2xvcigxMDIsIDEwMiwgMTAyKTsKKyAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsg
MTAyLCAxMDIsIDEwMiB9OwogICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRmYWNlOgogICAgICAgICBy
ZXR1cm4gQ29sb3I6OmxpZ2h0R3JheTsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkaGlnaGxpZ2h0
OgotICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDIyMSwgMjIxLCAyMjEpOworICAgICAg
ICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAyMjEsIDIyMSwgMjIxIH07CiAgICAgY2FzZSBDU1NW
YWx1ZVRocmVlZGxpZ2h0c2hhZG93OgogICAgICAgICByZXR1cm4gQ29sb3I6OmxpZ2h0R3JheTsK
ICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkc2hhZG93OgotICAgICAgICByZXR1cm4gbWFrZVNpbXBs
ZUNvbG9yKDEzNiwgMTM2LCAxMzYpOworICAgICAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAx
MzYsIDEzNiwgMTM2IH07CiAgICAgY2FzZSBDU1NWYWx1ZVdpbmRvdzoKICAgICAgICAgcmV0dXJu
IENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVlV2luZG93ZnJhbWU6Ci0gICAgICAgIHJl
dHVybiBtYWtlU2ltcGxlQ29sb3IoMjA0LCAyMDQsIDIwNCk7CisgICAgICAgIHJldHVybiBTUkdC
QTx1aW50OF90PiB7IDIwNCwgMjA0LCAyMDQgfTsKICAgICBjYXNlIENTU1ZhbHVlV2luZG93dGV4
dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBkZWZhdWx0OgpAQCAtMTUxNyw4
ICsxNTE3LDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6cGFpbnRTeXN0ZW1QcmV2aWV3QmFkZwogCiAg
ICAgYXV0byBtYXJrZXJSZWN0ID0gRmxvYXRSZWN0IHtyZWN0LngoKSArIHJlY3Qud2lkdGgoKSAt
IDI0LCByZWN0LnkoKSArIDgsIDE2LCAxNiB9OwogICAgIGF1dG8gcm91bmRlZE1hcmtlclJlY3Qg
PSBGbG9hdFJvdW5kZWRSZWN0IHsgbWFya2VyUmVjdCwgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkg
eyA4IH0gfTsKLSAgICBhdXRvIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCk7Ci0g
ICAgY29udGV4dC5maWxsUm91bmRlZFJlY3Qocm91bmRlZE1hcmtlclJlY3QsIGNvbG9yKTsKKyAg
ICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChyb3VuZGVkTWFya2VyUmVjdCwgQ29sb3I6OnJlZCk7
CiB9CiAjZW5kaWYKIApAQCAtMTUyOCw3ICsxNTI3LDcgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnBs
YXRmb3JtVGFwSGlnaGxpZ2h0QwogewogICAgIC8vIFRoaXMgY29sb3IgaXMgZXhwZWN0ZWQgdG8g
YmUgZHJhd24gb24gYSBzZW1pLXRyYW5zcGFyZW50IG92ZXJsYXksCiAgICAgLy8gbWFraW5nIGl0
IG1vcmUgdHJhbnNwYXJlbnQgdGhhbiBpdHMgYWxwaGEgdmFsdWUgaW5kaWNhdGVzLgotICAgIHJl
dHVybiBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMTAyKTsKKyAgICByZXR1cm4gQ29sb3I6OmJs
YWNrLmNvbG9yV2l0aEFscGhhKDEwMik7CiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQWR3YWl0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQWR3YWl0YS5jcHAJKHJldmlzaW9uIDI2NDQ3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIGNvbnN0IGludCB0ZXh0RmllbGRCb3JkZXJTaXplID0gMTsKLXN0YXRpYyBjb25zdGV4
cHIgYXV0byB0ZXh0RmllbGRCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwg
MTk0KTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byB0ZXh0RmllbGRCb3JkZXJEaXNhYmxlZENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDIxMywgMjA4LCAyMDQpOwotc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHRleHRGaWVsZEJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1
KTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byB0ZXh0RmllbGRCYWNrZ3JvdW5kRGlzYWJsZWRDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcigyNTIsIDI1MiwgMjUyKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byB0ZXh0RmllbGRCb3JkZXJDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjA1LCAxOTksIDE5NCB9
Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRleHRGaWVsZEJvcmRlckRpc2FibGVkQ29sb3IgPSBT
UkdCQTx1aW50OF90PiB7IDIxMywgMjA4LCAyMDQgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB0
ZXh0RmllbGRCYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6d2hpdGU7CitzdGF0aWMgY29uc3RleHBy
IGF1dG8gdGV4dEZpZWxkQmFja2dyb3VuZERpc2FibGVkQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7
IDI1MiwgMjUyLCAyNTIgfTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtZW51TGlzdEJ1dHRvbkFy
cm93U2l6ZSA9IDE2Owogc3RhdGljIGNvbnN0IGludCBtZW51TGlzdEJ1dHRvbkZvY3VzT2Zmc2V0
ID0gLTM7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWVudUxpc3RCdXR0b25QYWRkaW5nID0gNTsK
QEAgLTU3LDIzICs1NywyMyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHJvZ3Jlc3NBY3Rpdml0
eUJsCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHJvZ3Jlc3NBbmltYXRpb25GcmFtZUNvdW50ID0g
NzU7CiBzdGF0aWMgY29uc3QgU2Vjb25kcyBwcm9ncmVzc0FuaW1hdGlvbkZyYW1lUmF0ZSA9IDMz
X21zOyAvLyAzMGZwcy4KIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwcm9ncmVzc0JhclNpemUgPSA2
Owotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHByb2dyZXNzQmFyQm9yZGVyQ29sb3IgPSBtYWtlU2lt
cGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gcHJvZ3Jlc3NC
YXJCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjI1LCAyMjIsIDIxOSk7CitzdGF0
aWMgY29uc3RleHByIGF1dG8gcHJvZ3Jlc3NCYXJCb3JkZXJDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+
IHsgMjA1LCAxOTksIDE5NCB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHByb2dyZXNzQmFyQmFj
a2dyb3VuZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyMjUsIDIyMiwgMjE5IH07CiBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc2xpZGVyVHJhY2tTaXplID0gNjsKIHN0YXRpYyBjb25zdCBpbnQgc2xp
ZGVyVHJhY2tCb3JkZXJTaXplID0gMTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJUcmFj
a0JvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOwotc3RhdGljIGNv
bnN0ZXhwciBhdXRvIHNsaWRlclRyYWNrQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDIyNSwgMjIyLCAyMTkpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlclRyYWNrQm9yZGVy
Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDIwNSwgMTk5LCAxOTQgfTsKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBzbGlkZXJUcmFja0JhY2tncm91bmRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjI1
LCAyMjIsIDIxOSB9Owogc3RhdGljIGNvbnN0IGludCBzbGlkZXJUcmFja0ZvY3VzT2Zmc2V0ID0g
MjsKIHN0YXRpYyBjb25zdCBpbnQgc2xpZGVyVGh1bWJTaXplID0gMjA7CiBzdGF0aWMgY29uc3Qg
aW50IHNsaWRlclRodW1iQm9yZGVyU2l6ZSA9IDE7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gc2xp
ZGVyVGh1bWJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwgMTk0KTsKLXN0
YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJUaHVtYkJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1w
bGVDb2xvcigyNDQsIDI0MiwgMjQxKTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJUaHVt
YkJhY2tncm91bmRIb3ZlcmVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjQ4LCAyNDgsIDI0Nyk7
Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyVGh1bWJCYWNrZ3JvdW5kRGlzYWJsZWRDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcigyNDQsIDI0MiwgMjQxKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBzbGlkZXJUaHVtYkJvcmRlckNvbG9yID0gU1JHQkE8dWludDhfdD4geyAyMDUsIDE5OSwgMTk0
IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyVGh1bWJCYWNrZ3JvdW5kQ29sb3IgPSBT
UkdCQTx1aW50OF90PiB7IDI0NCwgMjQyLCAyNDEgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBz
bGlkZXJUaHVtYkJhY2tncm91bmRIb3ZlcmVkQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDI0OCwg
MjQ4LCAyNDcgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJUaHVtYkJhY2tncm91bmRE
aXNhYmxlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNDQsIDI0MiwgMjQxIH07CiAjaWYgRU5B
QkxFKFZJREVPKQotc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1lZGlhU2xpZGVyVHJhY2tCYWNrZ3Jv
dW5kY29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoNzcsIDc3LCA3Nyk7Ci1zdGF0aWMgY29uc3RleHBy
IGF1dG8gbWVkaWFTbGlkZXJUcmFja0J1ZmZlcmVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTcz
LCAxNzMsIDE3Myk7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gbWVkaWFTbGlkZXJUcmFja0FjdGl2
ZUNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIG1lZGlhU2xpZGVyVHJhY2tCYWNrZ3JvdW5kY29sb3IgPSBTUkdCQTx1aW50OF90PiB7
IDc3LCA3NywgNzcgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtZWRpYVNsaWRlclRyYWNrQnVm
ZmVyZWRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTczLCAxNzMsIDE3MyB9Oworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG1lZGlhU2xpZGVyVHJhY2tBY3RpdmVDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+
IHsgMjUyLCAyNTIsIDI1MiB9OwogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oR1RLKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJKHJldmlzaW9uIDI2NDQ3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKLSAgICBDb2xvciBwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDI2LCAyNiwgMjYsIDB4NEQpOyB9
CisgICAgQ29sb3IgcGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgMjYsIDI2LCAyNiwgNzcgfSA7IH0KICNlbmRpZgogCiAg
ICAgYm9vbCBzaG91bGRIYXZlU3BpbkJ1dHRvbihjb25zdCBIVE1MSW5wdXRFbGVtZW50JikgY29u
c3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTg0OCw5ICs4NDgsOSBAQCBib29sIFJl
bmRlclRoZW1lSU9TOjpwYWludFNsaWRlclRyYWNrKGNvCiAKICAgICAgICAgQ0dDb250ZXh0UmVm
IGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAg
ICAgIGlmIChyZWFkb25seSkKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlQ29sb3IobWFrZVNpbXBsZUNvbG9yKDE3OCwgMTc4LCAxNzgpKTsKKyAgICAgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoU1JHQkE8dWludDhfdD4geyAxNzgsIDE3
OCwgMTc4IH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LnNldFN0cm9rZUNvbG9yKG1ha2VTaW1wbGVDb2xvcig3NiwgNzYsIDc2KSk7CisgICAgICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKFNSR0JBPHVpbnQ4X3Q+IHsgNzYs
IDc2LCA3NiB9KTsKIAogICAgICAgICBSZXRhaW5QdHI8Q0dNdXRhYmxlUGF0aFJlZj4gcm91bmRl
ZFJlY3RQYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOwogICAgICAgICBDR1Bh
dGhBZGRSb3VuZGVkUmVjdChyb3VuZGVkUmVjdFBhdGguZ2V0KCksIDAsIHRyYWNrQ2xpcCwgY29y
bmVyV2lkdGgsIGNvcm5lckhlaWdodCk7CkBAIC05MTcsMTAgKzkxNywxMCBAQCBib29sIFJlbmRl
clRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvCiAKICAgICBjb25zdCBmbG9hdCB2ZXJ0aWNh
bFJlbmRlcmluZ1Bvc2l0aW9uID0gcmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldDsKICAgICBhdXRv
IHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7
IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBv
aW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWln
aHQgLSAxKSB9KTsKLSAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4wZiwgbWFr
ZVNpbXBsZUNvbG9yKDE0MSwgMTQxLCAxNDEpIH0pOwotICAgIHN0cm9rZUdyYWRpZW50LT5hZGRD
b2xvclN0b3AoeyAwLjQ1ZiwgbWFrZVNpbXBsZUNvbG9yKDIzOCwgMjM4LCAyMzgpIH0pOwotICAg
IHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjU1ZiwgbWFrZVNpbXBsZUNvbG9yKDIz
OCwgMjM4LCAyMzgpIH0pOwotICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLjBm
LCBtYWtlU2ltcGxlQ29sb3IoMTQxLCAxNDEsIDE0MSkgfSk7CisgICAgc3Ryb2tlR3JhZGllbnQt
PmFkZENvbG9yU3RvcCh7IDAuMGYsIFNSR0JBPHVpbnQ4X3Q+IHsgMTQxLCAxNDEsIDE0MSB9IH0p
OworICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjQ1ZiwgU1JHQkE8dWludDhf
dD4geyAyMzgsIDIzOCwgMjM4IH0gfSk7CisgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3Rv
cCh7IDAuNTVmLCBTUkdCQTx1aW50OF90PiB7IDIzOCwgMjM4LCAyMzggfSB9KTsKKyAgICBzdHJv
a2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMS4wZiwgU1JHQkE8dWludDhfdD4geyAxNDEsIDE0
MSwgMTQxIH0gfSk7CiAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKHN0cm9r
ZUdyYWRpZW50KSk7CiAKICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwpA
QCAtOTM3LDggKzkzNyw4IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIo
Y28KIAogICAgIGZsb2F0IHVwcGVyR3JhZGllbnRIZWlnaHQgPSBwcm9ncmVzc0JhckhlaWdodCAv
IDIuOwogICAgIGF1dG8gdXBwZXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6
OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uICsgMC41ZiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRp
b24gKyB1cHBlckdyYWRpZW50SGVpZ2h0IC0gMS41KSB9KTsKLSAgICB1cHBlckdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoeyAwLjBmLCBtYWtlU2ltcGxlQ29sb3IoMTMzLCAxMzMsIDEzMywgMTg4KSB9
KTsKLSAgICB1cHBlckdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLjBmLCBtYWtlU2ltcGxlQ29s
b3IoMTgsIDE4LCAxOCwgNTEpIH0pOworICAgIHVwcGVyR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7
IDAuMGYsIFNSR0JBPHVpbnQ4X3Q+IHsgMTMzLCAxMzMsIDEzMywgMTg4IH0gfSk7CisgICAgdXBw
ZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMS4wZiwgU1JHQkE8dWludDhfdD4geyAxOCwgMTgs
IDE4LCA1MSB9IH0pOwogICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUodXBwZXJH
cmFkaWVudCkpOwogCiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QocmVjdC54KCksIHZl
cnRpY2FsUmVuZGVyaW5nUG9zaXRpb24sIHJlY3Qud2lkdGgoKSwgdXBwZXJHcmFkaWVudEhlaWdo
dCkpOwpAQCAtOTQ5LDE4ICs5NDksMTggQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9n
cmVzc0JhcihjbwogICAgICAgICBkb3VibGUgcG9zaXRpb24gPSBjbGFtcFRvKHJlbmRlclByb2dy
ZXNzLnBvc2l0aW9uKCksIDAuMCwgMS4wKTsKICAgICAgICAgZmxvYXQgYmFyV2lkdGggPSBwb3Np
dGlvbiAqIHJlY3Qud2lkdGgoKTsKICAgICAgICAgYXV0byBiYXJHcmFkaWVudCA9IEdyYWRpZW50
OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41ZiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRp
Y2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOwotICAgICAg
ICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4wZiwgbWFrZVNpbXBsZUNvbG9yKDE5NSwg
MjE3LCAyNDcpIH0pOwotICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC40NWYs
IG1ha2VTaW1wbGVDb2xvcigxMTgsIDE2NCwgMjI4KSB9KTsKLSAgICAgICAgYmFyR3JhZGllbnQt
PmFkZENvbG9yU3RvcCh7IDAuNDlmLCBtYWtlU2ltcGxlQ29sb3IoMTE4LCAxNjQsIDIyOCkgfSk7
Ci0gICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjUxZiwgbWFrZVNpbXBsZUNv
bG9yKDM2LCAxMTQsIDIxMCkgfSk7Ci0gICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
eyAwLjU1ZiwgbWFrZVNpbXBsZUNvbG9yKDM2LCAxMTQsIDIxMCkgfSk7Ci0gICAgICAgIGJhckdy
YWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLjBmLCBtYWtlU2ltcGxlQ29sb3IoNTcsIDE0MiwgMjQ0
KSB9KTsKKyAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMGYsIFNSR0JBPHVp
bnQ4X3Q+IHsgMTk1LCAyMTcsIDI0NyB9IH0pOworICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29s
b3JTdG9wKHsgMC40NWYsIFNSR0JBPHVpbnQ4X3Q+IHsgMTE4LCAxNjQsIDIyOCB9IH0pOworICAg
ICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC40OWYsIFNSR0JBPHVpbnQ4X3Q+IHsg
MTE4LCAxNjQsIDIyOCB9IH0pOworICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsg
MC41MWYsIFNSR0JBPHVpbnQ4X3Q+IHsgMzYsIDExNCwgMjEwIH0gfSk7CisgICAgICAgIGJhckdy
YWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjU1ZiwgU1JHQkE8dWludDhfdD4geyAzNiwgMTE0LCAy
MTAgfSB9KTsKKyAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEuMGYsIFNSR0JB
PHVpbnQ4X3Q+IHsgNTcsIDE0MiwgMjQ0IH0gfSk7CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdy
YWRpZW50KFdURk1vdmUoYmFyR3JhZGllbnQpKTsKIAogICAgICAgICBhdXRvIGJhclN0cm9rZUdy
YWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9p
bnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3Qu
eCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9
KTsKLSAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMGYsIG1ha2VT
aW1wbGVDb2xvcig5NSwgMTA3LCAxODMpIH0pOwotICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+
YWRkQ29sb3JTdG9wKHsgMC41ZiwgbWFrZVNpbXBsZUNvbG9yKDY2LCAxMDYsIDE3NCwgMjQwKSB9
KTsKLSAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEuMGYsIG1ha2VT
aW1wbGVDb2xvcigzOCwgMTA0LCAxNjYpIH0pOworICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+
YWRkQ29sb3JTdG9wKHsgMC4wZiwgU1JHQkE8dWludDhfdD4geyA5NSwgMTA3LCAxODMgfSB9KTsK
KyAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuNWYsIFNSR0JBPHVp
bnQ4X3Q+IHsgNjYsIDEwNiwgMTc0LCAyNDAgfSB9KTsKKyAgICAgICAgYmFyU3Ryb2tlR3JhZGll
bnQtPmFkZENvbG9yU3RvcCh7IDEuMGYsIFNSR0JBPHVpbnQ4X3Q+IHsgMzgsIDEwNCwgMTY2IH0g
fSk7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlR3JhZGllbnQoV1RGTW92ZShiYXJTdHJva2VH
cmFkaWVudCkpOwogCiAgICAgICAgIFBhdGggYmFyUGF0aDsKQEAgLTEzODMsMTAgKzEzODMsMTAg
QEAgQ29sb3IgUmVuZGVyVGhlbWVJT1M6OnN5c3RlbUNvbG9yKENTU1ZhbAogY29uc3QgQ0dTaXpl
IGF0dGFjaG1lbnRTaXplID0geyAxNjAsIDExOSB9OwogCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1l
bnRCb3JkZXJSYWRpdXMgPSAxNjsKLWNvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRCb3JkZXJDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcigyMDQsIDIwNCwgMjA0KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFj
aG1lbnRCb3JkZXJDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjA0LCAyMDQsIDIwNCB9Owogc3Rh
dGljIENHRmxvYXQgYXR0YWNobWVudEJvcmRlclRoaWNrbmVzcyA9IDE7CiAKLWNvbnN0ZXhwciBh
dXRvIGF0dGFjaG1lbnRQcm9ncmVzc0NvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyMiwgMjIyLCAy
MjIpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVudFByb2dyZXNzQ29sb3IgPSBTUkdCQTx1aW50
OF90PiB7IDIyMiwgMjIyLCAyMjIgfTsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFByb2dyZXNz
Qm9yZGVyVGhpY2tuZXNzID0gMzsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NT
aXplID0gMzY7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwMSw3ICs1MDEsNyBAQCBzdGF0aWMgU1JH
QkE8dWludDhfdD4gbWVudUJhY2tncm91bmRDb2xvCiAgICAgTlNVSW50ZWdlciBwaXhlbFs0XTsK
ICAgICBbb2Zmc2NyZWVuUmVwIGdldFBpeGVsOnBpeGVsIGF0WDowIHk6MF07CiAKLSAgICByZXR1
cm4gbWFrZVNpbXBsZUNvbG9yKHBpeGVsWzBdLCBwaXhlbFsxXSwgcGl4ZWxbMl0sIHBpeGVsWzNd
KTsKKyAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihwaXhlbFswXSwgcGl4
ZWxbMV0sIHBpeGVsWzJdLCBwaXhlbFszXSk7CiB9CiAKIENvbG9yIFJlbmRlclRoZW1lTWFjOjpz
eXN0ZW1Db2xvcihDU1NWYWx1ZUlEIGNzc1ZhbHVlSUQsIE9wdGlvblNldDxTdHlsZUNvbG9yOjpP
cHRpb25zPiBvcHRpb25zKSBjb25zdApAQCAtNzM3LDExICs3MzcsMTEgQEAgQ29sb3IgUmVuZGVy
VGhlbWVNYWM6OnN5c3RlbUNvbG9yKENTU1ZhbAogICAgICAgICBjYXNlIENTU1ZhbHVlVGhyZWVk
ZmFjZToKICAgICAgICAgICAgIC8vIFdlIHNlbGVjdGVkIHRoaXMgdmFsdWUgaW5zdGVhZCBvZiBb
TlNDb2xvciBjb250cm9sQ29sb3JdIHRvIGF2b2lkIHdlYnNpdGUgaW5jb21wYXRpYmlsaXRpZXMu
CiAgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0byBjb25zaWRlciBjaGFuZ2luZyB0byBbTlND
b2xvciBjb250cm9sQ29sb3JdIHNvbWUgZGF5LgotICAgICAgICAgICAgcmV0dXJuIG1ha2VTaW1w
bGVDb2xvcigxOTIsIDE5MiwgMTkyKTsKKyAgICAgICAgICAgIHJldHVybiBDb2xvcjo6bGlnaHRH
cmF5OwogCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVJbmZvYmFja2dyb3VuZDoKICAgICAgICAgICAg
IC8vIE5vIGNvcnJlc3BvbmRpbmcgTlNDb2xvciBmb3IgdGhpcyBzbyB3ZSB1c2UgYSBoYXJkIGNv
ZGVkIHZhbHVlLgotICAgICAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigyNTEsIDI1Miwg
MTk3KTsKKyAgICAgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDI1MSwgMjUyLCAxOTcg
fTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlTWVudToKICAgICAgICAgICAgIHJldHVybiBtZW51
QmFja2dyb3VuZENvbG9yKCk7CkBAIC03NTAsMzAgKzc1MCwzMCBAQCBDb2xvciBSZW5kZXJUaGVt
ZU1hYzo6c3lzdGVtQ29sb3IoQ1NTVmFsCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBY3RpdmVib3Jk
ZXI6CiAgICAgICAgICAgICAvLyBIYXJkY29kZWQgdG8gYXZvaWQgZXhwb3NpbmcgYSB1c2VyIGFw
cGVhcmFuY2UgcHJlZmVyZW5jZSB0byB0aGUgd2ViIGZvciBmaW5nZXJwcmludGluZy4KICAgICAg
ICAgICAgIGlmIChsb2NhbEFwcGVhcmFuY2UudXNpbmdEYXJrQXBwZWFyYW5jZSgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVDb2xvcigyNiwgMTY5LCAyNTUpLCBDb2xvcjo6
U2VtYW50aWMgfTsKLSAgICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVDb2xvcigwLCAxMDMs
IDI0NCksIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAgICAgIHJldHVybiB7IFNSR0JB
PHVpbnQ4X3Q+IHsgMjYsIDE2OSwgMjU1IH0sIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAg
ICAgcmV0dXJuIHsgU1JHQkE8dWludDhfdD4geyAwLCAxMDMsIDI0NCB9LCBDb2xvcjo6U2VtYW50
aWMgfTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1Db250cm9sQWNjZW50Ogog
ICAgICAgICAgICAgLy8gSGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNlciBhcHBlYXJh
bmNlIHByZWZlcmVuY2UgdG8gdGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAgICAgICAgICAg
ICAvLyBTYW1lIGNvbG9yIGluIGxpZ2h0IGFuZCBkYXJrIGFwcGVhcmFuY2VzLgotICAgICAgICAg
ICAgcmV0dXJuIHsgbWFrZVNpbXBsZUNvbG9yKDAsIDEyMiwgMjU1KSwgQ29sb3I6OlNlbWFudGlj
IH07CisgICAgICAgICAgICByZXR1cm4geyBTUkdCQTx1aW50OF90PiB7IDAsIDEyMiwgMjU1IH0s
IENvbG9yOjpTZW1hbnRpYyB9OwogCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNl
bGVjdGVkQ29udGVudEJhY2tncm91bmQ6CiAgICAgICAgICAgICAvLyBIYXJkY29kZWQgdG8gYXZv
aWQgZXhwb3NpbmcgYSB1c2VyIGFwcGVhcmFuY2UgcHJlZmVyZW5jZSB0byB0aGUgd2ViIGZvciBm
aW5nZXJwcmludGluZy4KICAgICAgICAgICAgIGlmIChsb2NhbEFwcGVhcmFuY2UudXNpbmdEYXJr
QXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVDb2xvcigw
LCA4OCwgMjA4KSwgQ29sb3I6OlNlbWFudGljIH07Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtl
U2ltcGxlQ29sb3IoMCwgOTksIDIyNSksIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAg
ICAgIHJldHVybiB7IFNSR0JBPHVpbnQ4X3Q+IHsgMCwgODgsIDIwOCB9LCBDb2xvcjo6U2VtYW50
aWMgfTsKKyAgICAgICAgICAgIHJldHVybiB7IFNSR0JBPHVpbnQ4X3Q+IHsgMCwgOTksIDIyNSB9
LCBDb2xvcjo6U2VtYW50aWMgfTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlSGlnaGxpZ2h0Ogog
ICAgICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1TZWxlY3RlZFRleHRCYWNrZ3JvdW5kOgog
ICAgICAgICAgICAgLy8gSGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNlciBhcHBlYXJh
bmNlIHByZWZlcmVuY2UgdG8gdGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAgICAgICAgICAg
ICBpZiAobG9jYWxBcHBlYXJhbmNlLnVzaW5nRGFya0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4geyBtYWtlU2ltcGxlQ29sb3IoNjMsIDk5LCAxMzksIDIwNCksIENvbG9yOjpT
ZW1hbnRpYyB9OwotICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVNpbXBsZUNvbG9yKDEyOCwgMTg4
LCAyNTQsIDE1MyksIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAgICAgIHJldHVybiB7
IFNSR0JBPHVpbnQ4X3Q+IHsgNjMsIDk5LCAxMzksIDIwNCB9LCBDb2xvcjo6U2VtYW50aWMgfTsK
KyAgICAgICAgICAgIHJldHVybiB7IFNSR0JBPHVpbnQ4X3Q+IHsgMTI4LCAxODgsIDI1NCwgMTUz
IH0sIENvbG9yOjpTZW1hbnRpYyB9OwogCiAjaWYgIUhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQp
CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUNvbnRhaW5lckJvcmRlcjoKLSAgICAg
ICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMTk3LCAxOTcsIDE5Nyk7CisgICAgICAgICAg
ICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAxOTcsIDE5NywgMTk3IH07CiAjZW5kaWYKIAogICAg
ICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1FdmVuQWx0ZXJuYXRpbmdDb250ZW50QmFja2dy
b3VuZDogewpAQCAtMTU5Miw4ICsxNTkyLDggQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRN
ZW51TGlzdEJ1dHRvbgogICAgIH07CiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUGF0aChQ
YXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMoYXJyb3cyKSk7CiAKLSAgICBjb25zdGV4cHIgYXV0
byBsZWZ0U2VwYXJhdG9yQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgNDApOwotICAg
IGNvbnN0ZXhwciBhdXRvIHJpZ2h0U2VwYXJhdG9yQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1
LCAyNTUsIDI1NSwgNDApOworICAgIGNvbnN0ZXhwciBhdXRvIGxlZnRTZXBhcmF0b3JDb2xvciA9
IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSg0MCk7CisgICAgY29uc3RleHByIGF1dG8gcmln
aHRTZXBhcmF0b3JDb2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYSg0MCk7CiAKICAg
ICAvLyBGSVhNRTogU2hvdWxkIHRoZSBzZXBhcmF0b3IgdGhpY2tuZXNzIGFuZCBzcGFjZSBiZSBz
Y2FsZWQgdXAgYnkgZm9udFNjYWxlPwogICAgIGludCBzZXBhcmF0b3JTcGFjZSA9IDI7IC8vIERl
bGliZXJhdGVseSBpZ25vcmVzIHpvb20gc2luY2UgaXQgbG9va3MgbmljZXIgaWYgaXQgc3RheXMg
dGhpbi4KQEAgLTI0MTMsOCArMjQxMyw4IEBAIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudEljb25T
ZWxlY3Rpb25Cb3IKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudEljb25CYWNrZ3JvdW5kUmFkaXVz
ID0gMzsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudEljb25Ub1RpdGxlTWFyZ2luID0gMjsKIAot
Y29uc3RleHByIGF1dG8gYXR0YWNobWVudEljb25CYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoMCwgMCwgMCwgMzApOwotY29uc3RleHByIGF1dG8gYXR0YWNobWVudEljb25Cb3JkZXJD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1LCAxMjUpOworY29uc3RleHByIGF1
dG8gYXR0YWNobWVudEljb25CYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRo
QWxwaGEoMzApOworY29uc3RleHByIGF1dG8gYXR0YWNobWVudEljb25Cb3JkZXJDb2xvciA9IENv
bG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYSgxMjUpOwogCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1l
bnRUaXRsZUZvbnRTaXplID0gMTI7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRUaXRsZUJhY2tn
cm91bmRSYWRpdXMgPSAzOwpAQCAtMjQyMiwyMyArMjQyMiwyMyBAQCBjb25zdCBDR0Zsb2F0IGF0
dGFjaG1lbnRUaXRsZUJhY2tncm91bmRQCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRUaXRsZU1h
eGltdW1XaWR0aCA9IDEwMCAtIChhdHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kUGFkZGluZyAqIDIp
OwogY29uc3QgQ0ZJbmRleCBhdHRhY2htZW50VGl0bGVNYXhpbXVtTGluZUNvdW50ID0gMjsKIAot
Y29uc3RleHByIGF1dG8gYXR0YWNobWVudFRpdGxlSW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IgPSBt
YWtlU2ltcGxlQ29sb3IoMjA0LCAyMDQsIDIwNCk7Ci1jb25zdGV4cHIgYXV0byBhdHRhY2htZW50
VGl0bGVJbmFjdGl2ZVRleHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigxMDAsIDEwMCwgMTAwKTsK
K2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlQmFja2dyb3VuZENvbG9yID0g
U1JHQkE8dWludDhfdD4geyAyMDQsIDIwNCwgMjA0IH07Citjb25zdGV4cHIgYXV0byBhdHRhY2ht
ZW50VGl0bGVJbmFjdGl2ZVRleHRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTAwLCAxMDAsIDEw
MCB9OwogCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRTdWJ0aXRsZUZvbnRTaXplID0gMTA7CiBj
b25zdCBpbnQgYXR0YWNobWVudFN1YnRpdGxlV2lkdGhJbmNyZW1lbnQgPSAxMDsKLWNvbnN0ZXhw
ciBhdXRvIGF0dGFjaG1lbnRTdWJ0aXRsZVRleHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig4Miwg
MTQ1LCAyMTQpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVudFN1YnRpdGxlVGV4dENvbG9yID0g
U1JHQkE8dWludDhfdD4geyA4MiwgMTQ1LCAyMTQgfTsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2ht
ZW50UHJvZ3Jlc3NCYXJXaWR0aCA9IDMwOwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jl
c3NCYXJIZWlnaHQgPSA1OwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NCYXJPZmZz
ZXQgPSAtOTsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFByb2dyZXNzQmFyQm9yZGVyV2lkdGgg
PSAxOwotY29uc3RleHByIGF1dG8gYXR0YWNobWVudFByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDg5KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1l
bnRQcm9ncmVzc0JhckJhY2tncm91bmRDb2xvciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBo
YSg4OSk7CiBjb25zdGV4cHIgYXV0byBhdHRhY2htZW50UHJvZ3Jlc3NCYXJGaWxsQ29sb3IgPSBD
b2xvcjo6d2hpdGU7Ci1jb25zdGV4cHIgYXV0byBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCb3JkZXJD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCAxMjgpOworY29uc3RleHByIGF1dG8gYXR0
YWNobWVudFByb2dyZXNzQmFyQm9yZGVyQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxw
aGEoMTI4KTsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJSYWRp
dXMgPSA1OwotY29uc3RleHByIGF1dG8gYXR0YWNobWVudFBsYWNlaG9sZGVyQm9yZGVyQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgNTYpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVu
dFBsYWNlaG9sZGVyQm9yZGVyQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoNTYp
OwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJXaWR0aCA9IDI7CiBj
b25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQbGFjZWhvbGRlckJvcmRlckRhc2hMZW5ndGggPSA2Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAJKHJl
dmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCwxOSArMjg4LDE5IEBAIGJvb2wgUmVuZGVyVGhl
bWVXaW46OnN1cHBvcnRzSG92ZXIoY29uc3QKIENvbG9yIFJlbmRlclRoZW1lV2luOjpwbGF0Zm9y
bUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcihPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0
aW9ucz4pIGNvbnN0CiB7CiAgICAgQ09MT1JSRUYgY29sb3IgPSBHZXRTeXNDb2xvcihDT0xPUl9I
SUdITElHSFQpOwotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoR2V0UlZhbHVlKGNvbG9yKSwg
R2V0R1ZhbHVlKGNvbG9yKSwgR2V0QlZhbHVlKGNvbG9yKSk7CisgICAgcmV0dXJuIFNSR0JBPHVp
bnQ4X3Q+IHsgR2V0UlZhbHVlKGNvbG9yKSwgR2V0R1ZhbHVlKGNvbG9yKSwgR2V0QlZhbHVlKGNv
bG9yKSB9OwogfQogCiBDb2xvciBSZW5kZXJUaGVtZVdpbjo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcihPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4pIGNvbnN0
CiB7CiAgICAgLy8gVGhpcyBjb2xvciBtYXRjaGVzIEZpcmVmb3guCi0gICAgcmV0dXJuIG1ha2VT
aW1wbGVDb2xvcigxNzYsIDE3NiwgMTc2KTsKKyAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAx
NzYsIDE3NiwgMTc2IH07CiB9CiAKIENvbG9yIFJlbmRlclRoZW1lV2luOjpwbGF0Zm9ybUFjdGl2
ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4p
IGNvbnN0CiB7CiAgICAgQ09MT1JSRUYgY29sb3IgPSBHZXRTeXNDb2xvcihDT0xPUl9ISUdITElH
SFRURVhUKTsKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKEdldFJWYWx1ZShjb2xvciksIEdl
dEdWYWx1ZShjb2xvciksIEdldEJWYWx1ZShjb2xvcikpOworICAgIHJldHVybiBTUkdCQTx1aW50
OF90PiB7IEdldFJWYWx1ZShjb2xvciksIEdldEdWYWx1ZShjb2xvciksIEdldEJWYWx1ZShjb2xv
cikgfTsKIH0KIAogQ29sb3IgUmVuZGVyVGhlbWVXaW46OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IoT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IG9wdGlvbnMp
IGNvbnN0CkBAIC0xMDA5LDcgKzEwMDksNyBAQCBDb2xvciBSZW5kZXJUaGVtZVdpbjo6c3lzdGVt
Q29sb3IoQ1NTVmFsCiAgICAgICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoY3Nz
VmFsdWVJZCwgb3B0aW9ucyk7CiAKICAgICBDT0xPUlJFRiBjb2xvciA9IEdldFN5c0NvbG9yKHN5
c0NvbG9ySW5kZXgpOwotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoR2V0UlZhbHVlKGNvbG9y
KSwgR2V0R1ZhbHVlKGNvbG9yKSwgR2V0QlZhbHVlKGNvbG9yKSk7CisgICAgcmV0dXJuIFNSR0JB
PHVpbnQ4X3Q+IHsgR2V0UlZhbHVlKGNvbG9yKSwgR2V0R1ZhbHVlKGNvbG9yKSwgR2V0QlZhbHVl
KGNvbG9yKSB9OwogfQogCiAjaWYgRU5BQkxFKFZJREVPKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAkocmV2
aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBw
YWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbAogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFNoYWRvd0RhdGE+IGRlYnVnU2hhZG93ID0gbnVsbHB0cjsKICAgICBpZiAoZmxvdy5zZXR0aW5n
cygpLnNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKCkpIHsKLSAgICAgICAgZGVi
dWdTaGFkb3cgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KDAsIDApLCAxMCwgMjAs
IFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIG1ha2VTaW1wbGVDb2xvcigwLCAyNTUsIDAsIDIw
MCkpOworICAgICAgICBkZWJ1Z1NoYWRvdyA9IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oSW50UG9p
bnQoMCwgMCksIDEwLCAyMCwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3I6OmdyZWVu
LmNvbG9yV2l0aEFscGhhKDIwMCkpOwogICAgICAgICB0ZXh0UGFpbnRlci5zZXRTaGFkb3coZGVi
dWdTaGFkb3cuZ2V0KCkpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAJKHJldmlzaW9uIDI2NDQ3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxC
bG9jazo6cGFpbnQoUGFpbnRJbmZvJgogCiAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhp
Y2tuZXNzKDEuMGYpOwogICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ry
b2tlKTsKLSAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihtYWtlU2ltcGxlQ29sb3Io
MCwgMCwgMjU1KSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJs
dWUpOwogCiAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwg
SW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0
aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpOwogICAgIGluZm8uY29udGV4dCgpLmRyYXdM
aW5lKEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0
V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50
T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZz
ZXQueSgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkpKTsKQEAgLTEyOCwxMyArMTI4LDEz
IEBAIHZvaWQgUmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KFBhaW50SW5mbyYKIAogICAgIGludCB0
b3BTdGFydCA9IHBhZGRpbmdUb3AoKTsKIAotICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNv
bG9yKG1ha2VTaW1wbGVDb2xvcigwLCAyNTUsIDApKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRT
dHJva2VDb2xvcihDb2xvcjo6Z3JlZW4pOwogCiAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUo
SW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgp
ICsgdG9wU3RhcnQpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25h
cHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgdG9wU3RhcnQpKTsK
IAogICAgIGludCBiYXNlbGluZSA9IHJvdW5kVG9JbnQoYmFzZWxpbmVQb3NpdGlvbihBbHBoYWJl
dGljQmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lKSk7CiAKLSAgICBpbmZvLmNvbnRleHQo
KS5zZXRTdHJva2VDb2xvcihtYWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAwKSk7CisgICAgaW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OnJlZCk7CiAKICAgICBpbmZvLmNvbnRleHQo
KS5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWlu
dE9mZnNldC55KCkgKyBiYXNlbGluZSksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgp
ICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBi
YXNlbGluZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDI2LDcgKzIw
MjYsNyBAQCBDb2xvciBSZW5kZXJTdHlsZTo6Y29sb3JSZXNvbHZpbmdDdXJyZW50CiAgICAgaWYg
KGlzQ3VycmVudENvbG9yKHJlc3VsdCkpIHsKICAgICAgICAgYXV0byBib3JkZXJTdHlsZSA9IGNv
bXB1dGVCb3JkZXJTdHlsZSgpOwogICAgICAgICBpZiAoIXZpc2l0ZWRMaW5rICYmIChib3JkZXJT
dHlsZSA9PSBCb3JkZXJTdHlsZTo6SW5zZXQgfHwgYm9yZGVyU3R5bGUgPT0gQm9yZGVyU3R5bGU6
Ok91dHNldCB8fCBib3JkZXJTdHlsZSA9PSBCb3JkZXJTdHlsZTo6UmlkZ2UgfHwgYm9yZGVyU3R5
bGUgPT0gQm9yZGVyU3R5bGU6Okdyb292ZSkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVNpbXBs
ZUNvbG9yKDIzOCwgMjM4LCAyMzgpOworICAgICAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+
IHsgMjM4LCAyMzgsIDIzOCB9OwogCiAgICAgICAgIHJldHVybiB2aXNpdGVkTGluayA/IHZpc2l0
ZWRMaW5rQ29sb3IoKSA6IGNvbG9yKCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDI2NDQ3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC03MywxMCArNzMsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgaW5p
dGlhbFN0cm9rZVBhaW50VXJpKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBzdGF0aWMgVmVj
dG9yPFNWR0xlbmd0aFZhbHVlPiBpbml0aWFsU3Ryb2tlRGFzaEFycmF5KCkgeyByZXR1cm4geyB9
OyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxTdG9wT3BhY2l0eSgpIHsgcmV0dXJuIDE7IH0K
LSAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbFN0b3BDb2xvcigpIHsgcmV0dXJuIG1ha2VTaW1wbGVD
b2xvcigwLCAwLCAwKTsgfQorICAgIHN0YXRpYyBDb2xvciBpbml0aWFsU3RvcENvbG9yKCkgeyBy
ZXR1cm4gQ29sb3I6OmJsYWNrOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxGbG9vZE9wYWNp
dHkoKSB7IHJldHVybiAxOyB9Ci0gICAgc3RhdGljIENvbG9yIGluaXRpYWxGbG9vZENvbG9yKCkg
eyByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDApOyB9Ci0gICAgc3RhdGljIENvbG9yIGlu
aXRpYWxMaWdodGluZ0NvbG9yKCkgeyByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAy
NTUpOyB9CisgICAgc3RhdGljIENvbG9yIGluaXRpYWxGbG9vZENvbG9yKCkgeyByZXR1cm4gQ29s
b3I6OmJsYWNrOyB9CisgICAgc3RhdGljIENvbG9yIGluaXRpYWxMaWdodGluZ0NvbG9yKCkgeyBy
ZXR1cm4gQ29sb3I6OndoaXRlOyB9CiAgICAgc3RhdGljIFNoYWRvd0RhdGEqIGluaXRpYWxTaGFk
b3coKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgc3RhdGljIFN0cmluZyBpbml0aWFsTWFza2Vy
UmVzb3VyY2UoKSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlh
bE1hcmtlclN0YXJ0UmVzb3VyY2UoKSB7IHJldHVybiBTdHJpbmcoKTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9u
SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaAkocmV2aXNpb24gMjY0NDcxKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1
bmN0aW9uSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgZmxvYXQgYmx1ZSA9IEJhc2U6OmFuaW1hdGUocHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBz
aW1wbGVGcm9tLmJsdWUsIHNpbXBsZVRvLmJsdWUsIHNpbXBsZVRvQXRFbmRPZkR1cmF0aW9uLmJs
dWUsIHNpbXBsZUFuaW1hdGVkLmJsdWUpOwogICAgICAgICBmbG9hdCBhbHBoYSA9IEJhc2U6OmFu
aW1hdGUocHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBzaW1wbGVGcm9tLmFscGhhLCBzaW1wbGVUby5h
bHBoYSwgc2ltcGxlVG9BdEVuZE9mRHVyYXRpb24uYWxwaGEsIHNpbXBsZUFuaW1hdGVkLmFscGhh
KTsKICAgICAgICAgCi0gICAgICAgIGFuaW1hdGVkID0gbWFrZVNpbXBsZUNvbG9yKHJvdW5kQW5k
Q2xhbXBDb2xvckNoYW5uZWwocmVkKSwgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChncmVlbiks
IHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoYmx1ZSksIHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5u
ZWwoYWxwaGEpKTsKKyAgICAgICAgYW5pbWF0ZWQgPSBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JH
QkE+KHN0ZDo6bHJvdW5kKHJlZCksIHN0ZDo6bHJvdW5kKGdyZWVuKSwgc3RkOjpscm91bmQoYmx1
ZSksIHN0ZDo6bHJvdW5kKGFscGhhKSk7CiAgICAgfQogCiAgICAgT3B0aW9uYWw8ZmxvYXQ+IGNh
bGN1bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0
cmluZyYgdG8pIGNvbnN0IG92ZXJyaWRlCkBAIC0xMTQsMjcgKzExNCwxMyBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIGlubGluZSB1aW50OF90IHJvdW5kQW5kQ2xhbXBDb2xvckNo
YW5uZWwoaW50IHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6Y2xhbXAodmFsdWUs
IDAsIDI1NSk7Ci0gICAgfQotCi0gICAgaW5saW5lIHVpbnQ4X3Qgcm91bmRBbmRDbGFtcENvbG9y
Q2hhbm5lbChmbG9hdCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmNsYW1wKHN0
ZDo6cm91bmRmKHZhbHVlKSwgMC4wZiwgMjU1LjBmKTsKLSAgICB9Ci0KICAgICB2b2lkIGFkZEZy
b21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50Kikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGF1dG8g
c2ltcGxlRnJvbSA9IG1fZnJvbS50b1NSR0JBTG9zc3k8dWludDhfdD4oKTsKICAgICAgICAgYXV0
byBzaW1wbGVUbyA9IG1fdG8udG9TUkdCQUxvc3N5PHVpbnQ4X3Q+KCk7CiAKICAgICAgICAgLy8g
SWdub3JlcyBhbnkgYWxwaGEgYW5kIHNldHMgYWxwaGEgb24gcmVzdWx0IHRvIDEwMCUgb3BhcXVl
LgotICAgICAgICBtX3RvID0gbWFrZVNpbXBsZUNvbG9yKAotICAgICAgICAgICAgcm91bmRBbmRD
bGFtcENvbG9yQ2hhbm5lbChzaW1wbGVUby5yZWQgKyBzaW1wbGVGcm9tLnJlZCksCi0gICAgICAg
ICAgICByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKHNpbXBsZVRvLmdyZWVuICsgc2ltcGxlRnJv
bS5ncmVlbiksCi0gICAgICAgICAgICByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKHNpbXBsZVRv
LmJsdWUgKyBzaW1wbGVGcm9tLmJsdWUpCi0gICAgICAgICk7CisgICAgICAgIG1fdG8gPSBjbGFt
cFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHNpbXBsZVRvLnJlZCArIHNpbXBsZUZyb20ucmVkLCBz
aW1wbGVUby5ncmVlbiArIHNpbXBsZUZyb20uZ3JlZW4sIHNpbXBsZVRvLmJsdWUgKyBzaW1wbGVG
cm9tLmJsdWUpOwogICAgIH0KIAogICAgIHN0YXRpYyBDb2xvciBjb2xvckZyb21TdHJpbmcoU1ZH
RWxlbWVudCosIGNvbnN0IFN0cmluZyYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDUsMTAgKzEwNSwxMCBAQCB2b2lkIE1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZHJh
d1JlY3QoUGFnCiAgICAgRmxvYXRSZWN0IGluc2V0UmVjdCA9IG92ZXJsYXkuYm91bmRzKCk7CiAK
ICAgICBpZiAob3ZlcmxheS5vdmVybGF5VHlwZSgpID09IFBhZ2VPdmVybGF5OjpPdmVybGF5VHlw
ZTo6RG9jdW1lbnQpIHsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihtYWtlU2ltcGxl
Q29sb3IoMCwgMjU1LCAwKSk7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6
OmdyZWVuKTsKICAgICAgICAgaW5zZXRSZWN0LmluZmxhdGUoLTUwKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKG1ha2VTaW1wbGVDb2xvcigwLCAwLCAyNTUp
KTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6Ymx1ZSk7CiAgICAgICAg
IGluc2V0UmVjdC5pbmZsYXRlKC0yMCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRp
ZmljYXRpb25PdmVybGF5Lm1tCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0JKHdvcmtp
bmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV2ViVmll
dzooUGxhdGZvcgogICAgIF9sYXllciA9IGFkb3B0TlMoW1tDQVRpbGVkTGF5ZXIgYWxsb2NdIGlu
aXRdKTsKICAgICBbX2xheWVyIHNldE5hbWU6QCJXZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25P
dmVybGF5Il07CiAgICAgW19sYXllciBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIFtfdmlldyBi
b3VuZHNdLnNpemUud2lkdGgsIFtfdmlldyBib3VuZHNdLnNpemUuaGVpZ2h0KV07Ci0gICAgV2Vi
Q29yZTo6Q29sb3Igdmlld0NvbG9yID0gaXNEZXByZWNhdGVkID8gV2ViQ29yZTo6bWFrZVNpbXBs
ZUNvbG9yKDI1NSwgMCwgMCwgMzIpIDogV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDAsIDAsIDI1
NSwgMzIpOworICAgIGF1dG8gdmlld0NvbG9yID0gaXNEZXByZWNhdGVkID8gV2ViQ29yZTo6Q29s
b3I6OnJlZC5jb2xvcldpdGhBbHBoYSg1MCkgOiBXZWJDb3JlOjpDb2xvcjo6Ymx1ZS5jb2xvcldp
dGhBbHBoYSgzMik7CiAgICAgW19sYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xv
cih2aWV3Q29sb3IpXTsKICAgICBbX2xheWVyIHNldFpQb3NpdGlvbjo5OTldOwogICAgIFtfbGF5
ZXIgc2V0RGVsZWdhdGU6c2VsZl07CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NDcxKQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAor
MjAyMC0wNy0xNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIGZpbmFsIHZlc3RpZ2F0ZXMgb2YgU2ltcGxlQ29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDQzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmRyYXdJbkNvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF90YXBIaWdo
bGlnaHRDb2xvckZvckZhc3RDbGljazpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JD
bGllbnQ6OnNob3dQYWludFJlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5k
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpkcmF3UmVj
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpwYWludFNuYXBzaG90QXRTaXplKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICBSZXBsYWNlIHJl
bWFpbmluZyBtYWtlU2ltcGxlQ29sb3IoKSB1c2VzLgorCiAyMDIwLTA3LTE2ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFkZCBzeXNjYWxs
IHRvIFdlYkNvbnRlbnQgc2FuZGJveApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bQkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksNyAr
MzE5LDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udAogCiAjaWZu
ZGVmIE5ERUJVRwogICAgIGlmIChtX2lzT3BhcXVlKQotICAgICAgICBjb250ZXh0LmZpbGxSZWN0
KHNjYWxlZExheWVyQm91bmRzLCBXZWJDb3JlOjptYWtlU2ltcGxlQ29sb3IoMjU1LCA0NywgMTQ2
KSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc2NhbGVkTGF5ZXJCb3VuZHMsIFdlYkNvcmU6
OlNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCA0NywgMTQ2IH0pOwogI2VuZGlmCiAKICAgICBjb250ZXh0
LnNjYWxlKG1fc2NhbGUpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCShyZXZpc2lvbiAyNjQ0NzEpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC00MzU3LDcgKzQzNTcsNyBAQCAtICh2b2lkKV9iZWNvbWVGaXJz
dFJlc3BvbmRlcldpdGhTZWxlY3RpCiAtIChXZWJDb3JlOjpDb2xvcilfdGFwSGlnaGxpZ2h0Q29s
b3JGb3JGYXN0Q2xpY2s6KEJPT0wpZm9yRmFzdENsaWNrCiB7CiAgICAgQVNTRVJUKF9zaG93RGVi
dWdUYXBIaWdobGlnaHRzRm9yRmFzdENsaWNraW5nKTsKLSAgICByZXR1cm4gZm9yRmFzdENsaWNr
ID8gV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDAsIDIyNSwgMCwgMTI3KSA6IFdlYkNvcmU6Om1h
a2VTaW1wbGVDb2xvcigyMjUsIDAsIDAsIDEyNyk7CisgICAgcmV0dXJuIGZvckZhc3RDbGljayA/
IFdlYkNvcmU6OlNSR0JBPHVpbnQ4X3Q+IHsgMCwgMjI1LCAwLCAxMjcgfSA6IFdlYkNvcmU6OlNS
R0JBPHVpbnQ4X3Q+IHsgMjI1LCAwLCAwLCAxMjcgfTsKIH0KIAogLSAodm9pZClfc2V0RG91Ymxl
VGFwR2VzdHVyZXNFbmFibGVkOihCT09MKWVuYWJsZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckNsaWVudC5jcHAJ
KHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDcgKzE3Nyw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzaG93UGFpbnRSZWN0KGMKICAgICBwYWludExheWVy
LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CiAgICAgcGFpbnRMYXllci0+c2V0UG9z
aXRpb24ocmVjdC5sb2NhdGlvbigpKTsKICAgICBwYWludExheWVyLT5zZXRTaXplKHJlY3Quc2l6
ZSgpKTsKLSAgICBwYWludExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IobWFrZVNpbXBsZUNvbG9y
KDI1NSwgMCwgMCwgNTEpKTsKKyAgICBwYWludExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29s
b3I6OnJlZC5jb2xvcldpdGhBbHBoYSg1MSkpOwogCiAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgZmFk
ZUtleWZyYW1lcyhBbmltYXRlZFByb3BlcnR5T3BhY2l0eSk7CiAgICAgZmFkZUtleWZyYW1lcy5p
bnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLCAxKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwOCw4ICs1MDgsOCBAQCB2b2lk
IEZpbmRDb250cm9sbGVyOjpkcmF3UmVjdChQYWdlT3ZlcmxhCiB7CiAgICAgY29uc3QgaW50IGJv
cmRlcldpZHRoID0gMTsKIAotICAgIGNvbnN0ZXhwciBhdXRvIG92ZXJsYXlCYWNrZ3JvdW5kQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMjYsIDI2LCAyNiwgNjQpOwotICAgIGNvbnN0ZXhwciBhdXRv
IHNoYWRvd0NvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDEyOCk7CisgICAgY29uc3Rl
eHByIGF1dG8gb3ZlcmxheUJhY2tncm91bmRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjYsIDI2
LCAyNiwgNjQgfTsKKyAgICBjb25zdGV4cHIgYXV0byBzaGFkb3dDb2xvciA9IENvbG9yOjpibGFj
ay5jb2xvcldpdGhBbHBoYSgxMjgpOwogCiAgICAgSW50UmVjdCBib3JkZXJJbmZsYXRlZERpcnR5
UmVjdCA9IGRpcnR5UmVjdDsKICAgICBib3JkZXJJbmZsYXRlZERpcnR5UmVjdC5pbmZsYXRlKGJv
cmRlcldpZHRoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQxMiw3ICsyNDEyLDcgQEAg
dm9pZCBXZWJQYWdlOjpwYWludFNuYXBzaG90QXRTaXplKGNvbnN0IAogCiAgICAgaWYgKG9wdGlv
bnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvblJlY3RhbmdsZSkgewogICAgICAgICBG
bG9hdFJlY3Qgc2VsZWN0aW9uUmVjdGFuZ2xlID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
Qm91bmRzKCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihtYWtlU2lt
cGxlQ29sb3IoMjU1LCAwLCAwKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VD
b2xvcihDb2xvcjo6cmVkKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnN0cm9rZVJlY3Qoc2Vs
ZWN0aW9uUmVjdGFuZ2xlLCAxKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCShy
ZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
RmluZENvbnRyb2xsZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgY29u
c3QgaW50IHRvdGFsVmVydGljYWxNYXJnaW4gPSAxOwogCiBjb25zdGV4cHIgT3B0aW9uU2V0PFRl
eHRJbmRpY2F0b3JPcHRpb24+IGZpbmRUZXh0SW5kaWNhdG9yT3B0aW9ucyB7IFRleHRJbmRpY2F0
b3JPcHRpb246OkluY2x1ZGVNYXJnaW5JZlJhbmdlTWF0Y2hlc1NlbGVjdGlvbiwgVGV4dEluZGlj
YXRvck9wdGlvbjo6RG9Ob3RDbGlwVG9WaXNpYmxlUmVjdCB9OwogCi1jb25zdGV4cHIgYXV0byBo
aWdobGlnaHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDIyOCwgNTYpOworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGhpZ2hsaWdodENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNTUsIDIyOCwg
NTYgfTsKIAogdm9pZCBGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUzo6ZHJhd1JlY3QoUGFn
ZU92ZXJsYXkmIG92ZXJsYXksIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0KQogewpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gMjY0NDcxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDctMTYgIFNhbSBXZWluaWcgIDx3ZWluaWdA
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBmaW5hbCB2ZXN0aWdhdGVzIG9mIFNpbXBsZUNv
bG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0
MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbToKKyAgICAgICAgUmVwbGFjZSByZW1haW5pbmcgbWFr
ZVNpbXBsZUNvbG9yKCkgdXNlcy4KKwogMjAyMC0wNy0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGEgZmV3IG1vcmUgdXNlcyBvZiB0aGUgdGVybXMg
YmxhY2svd2hpdGUgbGlzdApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJJbmRpY2F0ZUxheWVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbQkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbmRpY2F0ZUxheWVyLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01MCw3ICs1MCw3IEBAIC0gKGlkKWluaXRXaXRoV2ViVmlldzooV2ViVmlldyAqKXdl
YlZpZXcKICAgICBzZWxmLmNvbnRlbnRzU2NhbGUgPSBbW193ZWJWaWV3IHdpbmRvd10gc2NyZWVu
U2NhbGVdOwogCiAgICAgLy8gQmx1ZSBoaWdobGlnaHQgY29sb3IuCi0gICAgY29uc3RleHByIGF1
dG8gaGlnaGxpZ2h0Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTExLCAxNjgsIDIyMCwgMTY4KTsK
KyAgICBjb25zdGV4cHIgYXV0byBoaWdobGlnaHRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTEx
LCAxNjgsIDIyMCwgMTY4IH07CiAgICAgc2VsZi5iYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0Nv
bG9yKGhpZ2hsaWdodENvbG9yKTsKIAogICAgIHJldHVybiBzZWxmOwpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDct
MTYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBmaW5h
bCB2ZXN0aWdhdGVzIG9mIFNpbXBsZUNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoY29tcG9zaXRpb25Ub1VuZGVybGluZXMpOgor
ICAgICAgICBSZXBsYWNlIHJlbWFpbmluZyBtYWtlU2ltcGxlQ29sb3IoKSB1c2VzLgorCiAyMDIw
LTA3LTA3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBQYXJ0IDIg
b2YgU2ltcGxlQ29sb3IgYW5kIFNSR0JBPHVpbnQ4X3Q+IGFyZSBlc3NlbnRpYWxseSB0aGUgc2Ft
ZSAtIGxldCdzIGNvbnZlcmdlIHRoZW0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjQ0NzEp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTEgKzc0LDExIEBAIHN0YXRpYyBjb25zdCBpbnQgYm9y
ZGVyUmFkaXVzID0gMTI7CiBzdGF0aWMgY29uc3QgaW50IGJvcmRlclRoaWNrbmVzcyA9IDI7CiAK
IC8vIENvbG9ycwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJhY2tncm91bmRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigzMiwgMzIsIDMyLCAxNjApOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJvcmRl
ckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDE2MCwgMTYwLCAxNjApOwotc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIHNsaWRlckd1dHRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwLCAyMCwgMjApOwot
c3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlckJ1dHRvbkNvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDEyOCwgMTI4LCAxMjgpOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRleHRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBiYWNrZ3Jv
dW5kQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDMyLCAzMiwgMzIsIDE2MCB9Oworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGJvcmRlckNvbG9yID0gU1JHQkE8dWludDhfdD4geyAxNjAsIDE2MCwgMTYw
IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyR3V0dGVyQ29sb3IgPSBTUkdCQTx1aW50
OF90PiB7IDIwLCAyMCwgMjAgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJCdXR0b25D
b2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTI4LCAxMjgsIDEyOCB9Oworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIHRleHRDb2xvciA9IENvbG9yOjp3aGl0ZTsKIAogSFVEQnV0dG9uOjpIVURCdXR0b24o
SFVEQnV0dG9uVHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiAgICAgOiBIVURX
aWRnZXQoSW50UmVjdChwb3NpdGlvbiwgSW50U2l6ZSgpKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjI4Myw3ICs2MjgzLDcgQEAgc3Rh
dGljIHZvaWQgY29tcG9zaXRpb25Ub1VuZGVybGluZXMoY29ucwogICAgICAgICB1bmRlcmxpbmVz
W2ldLmVuZE9mZnNldCA9IGNsYXVzZXNbaSArIDFdOwogICAgICAgICBCWVRFIGF0dHJpYnV0ZSA9
IGF0dHJpYnV0ZXNbY2xhdXNlc1tpXV07CiAgICAgICAgIHVuZGVybGluZXNbaV0udGhpY2sgPSBh
dHRyaWJ1dGUgPT0gQVRUUl9UQVJHRVRfQ09OVkVSVEVEIHx8IGF0dHJpYnV0ZSA9PSBBVFRSX1RB
UkdFVF9OT1RDT05WRVJURUQ7Ci0gICAgICAgIHVuZGVybGluZXNbaV0uY29sb3IgPSBtYWtlU2lt
cGxlQ29sb3IoMCwgMCwgMCk7CisgICAgICAgIHVuZGVybGluZXNbaV0uY29sb3IgPSBDb2xvcjo6
YmxhY2s7CiAgICAgfQogfQogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQ0OTMpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNy0xNiAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGZpbmFsIHZlc3RpZ2F0ZXMgb2YgU2lt
cGxlQ29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNDQzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbG9yVGVzdHMuY3BwOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yVGVzdHMuY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGU25hcHNob3QubW06Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQubW06CisgICAgICAg
IFJlcGxhY2UgcmVtYWluaW5nIG1ha2VTaW1wbGVDb2xvcigpIHVzZXMuCisKIDIwMjAtMDctMTYg
IEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtjb25maWd1
cmUteGNvZGUtZm9yLWVtYmVkZGVkLWRldmVsb3BtZW50XSBTdXBwb3J0IFRCRCB2ZXJzaW9uIDQK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db2xvclRlc3RzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29sb3JUZXN0
cy5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9Db2xvclRlc3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBURVNU
KENvbG9yLCBSR0JUb0hTTF9CbGFjaykKIAogVEVTVChDb2xvciwgUkdCVG9IU0xfUmVkKQogewot
ICAgIENvbG9yIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCk7CisgICAgQ29sb3Ig
Y29sb3IgPSBDb2xvcjo6cmVkOwogCiAgICAgYXV0byBoc2xhQ29sb3IgPSB0b0hTTEEoY29sb3Iu
dG9TUkdCQUxvc3N5PGZsb2F0PigpKTsKIApAQCAtODQsNyArODQsNyBAQCBURVNUKENvbG9yLCBS
R0JUb0hTTF9SZWQpCiAKIFRFU1QoQ29sb3IsIFJHQlRvSFNMX0dyZWVuKQogewotICAgIENvbG9y
IGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCk7CisgICAgQ29sb3IgY29sb3IgPSBD
b2xvcjo6Z3JlZW47CiAKICAgICBhdXRvIGhzbGFDb2xvciA9IHRvSFNMQShjb2xvci50b1NSR0JB
TG9zc3k8ZmxvYXQ+KCkpOwogCkBAIC0xMDAsNyArMTAwLDcgQEAgVEVTVChDb2xvciwgUkdCVG9I
U0xfR3JlZW4pCiAKIFRFU1QoQ29sb3IsIFJHQlRvSFNMX0JsdWUpCiB7Ci0gICAgQ29sb3IgY29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMjU1KTsKKyAgICBDb2xvciBjb2xvciA9IENvbG9y
OjpibHVlOwogCiAgICAgYXV0byBoc2xhQ29sb3IgPSB0b0hTTEEoY29sb3IudG9TUkdCQUxvc3N5
PGZsb2F0PigpKTsKIApAQCAtMTcyLDcgKzE3Miw3IEBAIFRFU1QoQ29sb3IsIFZhbGlkaXR5KQog
ICAgIEVYUEVDVF9GQUxTRShvdGhlckludmFsaWRDb2xvci5pc1ZhbGlkKCkpOwogICAgIEVYUEVD
VF9GQUxTRShvdGhlckludmFsaWRDb2xvci5pc0V4dGVuZGVkKCkpOwogCi0gICAgQ29sb3IgdmFs
aWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDApOworICAgIENvbG9yIHZhbGlkQ29s
b3IgPSBDb2xvcjo6cmVkOwogICAgIEVYUEVDVF9UUlVFKHZhbGlkQ29sb3IuaXNWYWxpZCgpKTsK
ICAgICBFWFBFQ1RfRkFMU0UodmFsaWRDb2xvci5pc0V4dGVuZGVkKCkpOwogCkBAIC0xODAsNyAr
MTgwLDcgQEAgVEVTVChDb2xvciwgVmFsaWRpdHkpCiAgICAgRVhQRUNUX1RSVUUob3RoZXJWYWxp
ZENvbG9yLmlzVmFsaWQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKG90aGVyVmFsaWRDb2xvci5pc0V4
dGVuZGVkKCkpOwogCi0gICAgdmFsaWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigxLCAyLCAzLCA0
KTsKKyAgICB2YWxpZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAxLCAyLCAzLCA0IH07CiAgICAg
RVhQRUNUX1RSVUUodmFsaWRDb2xvci5pc1ZhbGlkKCkpOwogICAgIEVYUEVDVF9GQUxTRSh2YWxp
ZENvbG9yLmlzRXh0ZW5kZWQoKSk7CiAgICAgYXV0byB2YWxpZENvbG9yQ29tcG9uZW50cyA9IHZh
bGlkQ29sb3IudG9TUkdCQUxvc3N5PHVpbnQ4X3Q+KCk7CkBAIC0yMTMsNyArMjEzLDcgQEAgVEVT
VChDb2xvciwgTHVtaW5hbmNlKQogICAgIEVYUEVDVF9GTE9BVF9FUShDb2xvcihDb2xvcjo6Ymxh
Y2spLmx1bWluYW5jZSgpLCAwKTsKICAgICBFWFBFQ1RfRkxPQVRfRVEoQ29sb3IoQ29sb3I6Ondo
aXRlKS5sdW1pbmFuY2UoKSwgMSk7CiAKLSAgICBhdXRvIGNDb21wb25lbnRzID0gbWFrZVNpbXBs
ZUNvbG9yKDg1LCA5MCwgMTYwKTsKKyAgICBhdXRvIGNDb21wb25lbnRzID0gU1JHQkE8dWludDhf
dD4geyA4NSwgOTAsIDE2MCB9OwogICAgIEVYUEVDVF9GTE9BVF9FUShDb2xvcihjQ29tcG9uZW50
cykubHVtaW5hbmNlKCksIDAuMTE3ODE2OTIpOwogCiAgICAgRVhQRUNUX0VRKGNDb21wb25lbnRz
LnJlZCwgODUpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVu
ZGVkQ29sb3JUZXN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yVGVzdHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDgsMTIgKzEwOCw5IEBAIFRFU1QoRXh0ZW5kZWRDb2xvciwgRXF1
YWxpdHkpCiAgICAgICAgIEVYUEVDVF9ORShjMSwgYzIpOwogICAgIH0KIAotICAgIGludCByID0g
MjU1OwotICAgIGludCBnID0gMTI4OwotICAgIGludCBiID0gNjM7Ci0gICAgaW50IGEgPSAxMjc7
Ci0gICAgQ29sb3IgcmdiMSB7IFNSR0JBPGZsb2F0PiB7IHIgLyAyNTUuMGYsIGcgLyAyNTUuMGYs
IGIgLyAyNTUuMGYsIGEgLyAyNTUuMGYgfSB9OwotICAgIENvbG9yIHJnYjIgPSBtYWtlU2ltcGxl
Q29sb3IociwgZywgYiwgYSk7CisgICAgYXV0byBjb21wb25lbnRCeXRlcyA9IFNSR0JBPHVpbnQ4
X3Q+IHsgMjU1LCAxMjgsIDYzLCAxMjcgfTsKKyAgICBDb2xvciByZ2IxIHsgY29udmVydFRvQ29t
cG9uZW50RmxvYXRzKGNvbXBvbmVudEJ5dGVzKSB9OworICAgIENvbG9yIHJnYjIgeyBjb21wb25l
bnRCeXRlcyB9OwogICAgIEVYUEVDVF9ORShyZ2IxLCByZ2IyKTsKICAgICBFWFBFQ1RfTkUocmdi
MiwgcmdiMSk7CiB9CkBAIC0xNDAsMTIgKzEzNyw5IEBAIFRFU1QoRXh0ZW5kZWRDb2xvciwgSGFz
aCkKICAgICAgICAgRVhQRUNUX05FKGMxLmhhc2goKSwgYzIuaGFzaCgpKTsKICAgICB9CiAKLSAg
ICBpbnQgciA9IDI1NTsKLSAgICBpbnQgZyA9IDEyODsKLSAgICBpbnQgYiA9IDYzOwotICAgIGlu
dCBhID0gMTI3OwotICAgIENvbG9yIHJnYjEgeyBTUkdCQTxmbG9hdD4geyByIC8gMjU1LjBmLCBn
IC8gMjU1LjBmLCBiIC8gMjU1LjBmLCBhIC8gMjU1LjBmIH0gfTsKLSAgICBDb2xvciByZ2IyID0g
bWFrZVNpbXBsZUNvbG9yKHIsIGcsIGIsIGEpOworICAgIGF1dG8gY29tcG9uZW50Qnl0ZXMgPSBT
UkdCQTx1aW50OF90PiB7IDI1NSwgMTI4LCA2MywgMTI3IH07CisgICAgQ29sb3IgcmdiMSB7IGNv
bnZlcnRUb0NvbXBvbmVudEZsb2F0cyhjb21wb25lbnRCeXRlcykgfTsKKyAgICBDb2xvciByZ2Iy
IHsgY29tcG9uZW50Qnl0ZXMgfTsKICAgICBFWFBFQ1RfTkUocmdiMS5oYXNoKCksIHJnYjIuaGFz
aCgpKTsKIH0KIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
REZTbmFwc2hvdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1BERlNuYXBzaG90Lm1tCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC01OCw3ICs1OCw3IEBAIFRFU1QoUERGU25hcHNob3QsIEZ1bGxDb250ZW50KQogICAgICAg
ICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzRdLCAnbycpOwogCiAgICAgICAgIC8vIFRoZSBlbnRp
cmUgcGFnZSBzaG91bGQgYmUgZ3JlZW4uIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNo
ZWNrLgotICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09
IFdlYkNvcmU6Om1ha2VTaW1wbGVDb2xvcigwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBXZWJDb3JlOjpDb2xvcjo6Z3JlZW4p
OwogCiAgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CiAgICAgfV07CkBAIC04OSw3ICs4
OSw3IEBAIFRFU1QoUERGU25hcHNob3QsIFN1YnJlZ2lvbnMpCiAgICAgICAgIEVYUEVDVF9FUShw
YWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAwdSk7CiAKICAgICAgICAgLy8gVGhlIGVudGlyZSBwYWdl
IHNob3VsZCBiZSBncmVlbi4gUGljayBhIHBvaW50IGluIHRoZSBtaWRkbGUgdG8gY2hlY2suCi0g
ICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCgyMDAsIDE1MCkgPT0gV2ViQ29y
ZTo6bWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdl
LT5jb2xvckF0UG9pbnQoMjAwLCAxNTApID09IFdlYkNvcmU6OkNvbG9yOjpncmVlbik7CiAKICAg
ICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKICAgICB9XTsKQEAgLTEwOSwxMCArMTA5LDEw
IEBAIFRFU1QoUERGU25hcHNob3QsIFN1YnJlZ2lvbnMpCiAgICAgICAgIEVYUEVDVF9UUlVFKENH
UmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDEyMDAsIDEy
MDApKSk7CiAKICAgICAgICAgLy8gQSBwaXhlbCB0aGF0IHdhcyBpbiB0aGUgdmlldyBzaG91bGQg
YmUgZ3JlZW4uIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgotICAgICAgICBF
WFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoMjAwLCAxNTApID09IFdlYkNvcmU6Om1ha2VT
aW1wbGVDb2xvcigwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JB
dFBvaW50KDIwMCwgMTUwKSA9PSBXZWJDb3JlOjpDb2xvcjo6Z3JlZW4pOwogCiAgICAgICAgIC8v
IEEgcGl4ZWwgdGhhdCB3YXMgb3V0c2lkZSB0aGUgdmlldyBzaG91bGQgYWxzbyBiZSBncmVlbiAo
d2UgZXh0ZW5kIGJhY2tncm91bmQgY29sb3Igb3V0KS4gUGljayBhIHBvaW50IGluIHRoZSBtaWRk
bGUgdG8gY2hlY2suCi0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg5MDAs
IDcwMCkgPT0gV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCkpOworICAgICAgICBF
WFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoOTAwLCA3MDApID09IFdlYkNvcmU6OkNvbG9y
OjpncmVlbik7CiAKICAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKICAgICB9XTsKQEAg
LTEzOCwyMCArMTM4LDIwIEBAIFRFU1QoUERGU25hcHNob3QsIE92ZXIyMDBJbmNoZXMpCiAgICAg
ICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOwogICAgICAgICBFWFBFQ1RfTkUocGFn
ZSwgbnVsbHB0cik7CiAgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2Ut
PmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgMTQ0MDApKSk7Ci0gICAgICAgIEVYUEVD
VF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gV2ViQ29yZTo6bWFrZVNpbXBs
ZUNvbG9yKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9p
bnQoNDAwLCAzMDApID09IFdlYkNvcmU6OkNvbG9yOjpncmVlbik7CiAgICAgICAgIEVYUEVDVF9F
UShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCA1dSk7CiAKICAgICAgICAgcGFnZSA9IGRvY3VtZW50
LT5wYWdlKDEpOwogICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CiAgICAgICAgIEVY
UEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAs
IDAsIDgwMCwgMTQ0MDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2lu
dCg0MDAsIDMwMCkgPT0gV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IFdlYkNvcmU6
OkNvbG9yOjpncmVlbik7CiAKICAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJhY3RlckNvdW50
KCksIDB1KTsKIAogICAgICAgICBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMik7CiAgICAgICAgIEVY
UEVDVF9ORShwYWdlLCBudWxscHRyKTsKICAgICAgICAgRVhQRUNUX1RSVUUoQ0dSZWN0RXF1YWxU
b1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApKSk7Ci0gICAg
ICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gV2ViQ29yZTo6
bWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5j
b2xvckF0UG9pbnQoNDAwLCAzMDApID09IFdlYkNvcmU6OkNvbG9yOjpncmVlbik7CiAgICAgICAg
IEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAwdSk7CiAKICAgICAgICAgZGlkVGFr
ZVNuYXBzaG90ID0gdHJ1ZTsKQEAgLTE3Niw3ICsxNzYsNyBAQCBURVNUKFBERlNuYXBzaG90LCBM
aW5rcykKICAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOwogCiAgICAgICAgIEVYUEVD
VF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAs
IDgwMCwgMTQ0MDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0
MDAsIDMwMCkgPT0gV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAyNTUpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBXZWJDb3Jl
OjpDb2xvcjo6d2hpdGUpOwogCiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3Vu
dCgpLCA4dSk7CiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT50ZXh0KClbMF0sICdDJyk7CkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbQkocmV2aXNp
b24gMjY0NDcxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE0NCw4ICsxNDQsOCBAQCBXZWJDb3JlOjpDb2xvciBUZXN0
UERGUGFnZTo6Y29sb3JBdFBvaW50CiAgICAgYXV0byBhID0gcGl4ZWxbaSArIDNdOwogCiAgICAg
aWYgKCFhKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAs
IDApOwotICAgIHJldHVybiBXZWJDb3JlOjptYWtlU2ltcGxlQ29sb3IociAqIDI1NSAvIGEsIGcg
KiAyNTUgLyBhLCBiICogMjU1IC8gYSwgYSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb2xv
cjo6dHJhbnNwYXJlbnQ7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNsYW1wVG9Db21wb25lbnRCeXRl
czxXZWJDb3JlOjpTUkdCQT4ociAqIDI1NSAvIGEsIGcgKiAyNTUgLyBhLCBiICogMjU1IC8gYSwg
YSk7CiB9CiAKIC8vIERvY3VtZW50cwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404529</attachid>
            <date>2020-07-16 20:39:25 -0700</date>
            <delta_ts>2020-07-17 19:27:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214439-20200716203924.patch</filename>
            <type>text/plain</type>
            <size>130611</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA3LTE2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZmluYWwgdmVzdGlnYXRlcyBvZiBTaW1wbGVD
b2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0
NDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
dGYvS2V5VmFsdWVQYWlyLmg6CisgICAgICAgIChXVEY6OktleVZhbHVlUGFpcjo6S2V5VmFsdWVQ
YWlyKToKKyAgICAgICAgQWRkIG92ZXJsb2FkIG9mIGNvbnN0cnVjdG9yIHRoYXQgaXMgbm90IGEg
dGVtcGxhdGUgZnVuY3Rpb24gdG8gYWlkIGRlZHVjdGlvbgorICAgICAgICB3aGVuIHVzaW5nIHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdHMgdG8gY29udHJ1Y3QgYSBIYXNoTWFwLgorCiAyMDIwLTA3LTE2
ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQmlnIFN1
cl0gQnVpbGQgb24gU2VlZCAxCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9LZXlWYWx1ZVBhaXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9LZXlWYWx1ZVBhaXIuaAkocmV2aXNpb24gMjY0
NDcxKQorKysgU291cmNlL1dURi93dGYvS2V5VmFsdWVQYWlyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDYgKzQwLDEyIEBAIHN0cnVjdCBLZXlWYWx1ZVBhaXIgewogICAgIHsKICAgICB9CiAKKyAg
ICBLZXlWYWx1ZVBhaXIoS2V5VHlwZUFyZyYmIGtleSwgVmFsdWVUeXBlQXJnJiYgdmFsdWUpCisg
ICAgICAgIDoga2V5KHN0ZDo6Zm9yd2FyZDxLZXlUeXBlQXJnPihrZXkpKQorICAgICAgICAsIHZh
bHVlKHN0ZDo6Zm9yd2FyZDxWYWx1ZVR5cGVBcmc+KHZhbHVlKSkKKyAgICB7CisgICAgfQorCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KICAgICBLZXlWYWx1ZVBhaXIoSyYm
IGtleSwgViYmIHZhbHVlKQogICAgICAgICA6IGtleShzdGQ6OmZvcndhcmQ8Sz4oa2V5KSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4OSBAQAorMjAyMC0wNy0xNiAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGZpbmFsIHZlc3RpZ2F0ZXMg
b2YgU2ltcGxlQ29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNDQzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlcGxhY2UgcmVtYWluaW5nIG1ha2VTaW1wbGVDb2xvciB1c2VzOgorICAgICAgICAt
IExpdGVyYWwgLyBjb25zdGFudCBjb2xvcnMgc3dpdGNoZWQgdG8gdXNpbmcgU1JHQkE8dWludDhf
dD4geyAuLi4gfS4KKyAgICAgICAgLSBEaXJlY3QgY29uc3RydWN0aW9uIGZyb20gdWludDhfdCB2
YWx1ZXMgYWxzbyBzd2l0Y2hlZCB0byBTUkdCQTx1aW50OF90PiB7IC4uLiB9CisgICAgICAgIC0g
V2hlcmUgcG9zc2libGUgc3dpdGNoZWQgdG8gdXNpbmcgb2YgbmFtZWQgY29sb3JzIChlLmcuIENv
bG9yOjp5ZWxsb3cpIGJvdGgKKyAgICAgICAgICBkaXJlY3RseSBhbmQgd2hlcmUgYW4gb3ZlcnJp
ZGUgYWxwaGEgd2FzIG5lZWRlZC4gVG8gYWlkIHRoaXMsIG5ldyBuYW1lZAorICAgICAgICAgIGNv
bG9ycyB3ZXJlIGFkZGVkIGZvciByZWQsIG1hZ2VudGEsIGJsdWUsIGdyZWVuLCBkYXJrR3JlZW4g
YW5kIG9yYW5nZS4KKyAgICAgICAgLSBSZW1haW5pbmcgY2FsbGVycyBzd2l0Y2hlZCB0byBkaXJl
Y3RseSBjYWxsaW5nIGNsYW1wVG9Db21wb25lbnRCeXRlcywgd2hpY2gKKyAgICAgICAgICB3YXMg
YWxsIHRoYXQgbWFrZVNpbXBsZUNvbG9yIGRpZC4gQW4gb3ZlcmxvYWQgb2YgY2xhbXBUb0NvbXBv
bmVudEJ5dGVzIHRoYXQKKyAgICAgICAgICBkb2Vzbid0IHJlcXVpcmUgdGhlIGFscGhhIHBhcmFt
ZXRlciB3YXMgYWRkZWQgdG8gc2ltcGxpZnkgY2FsbHMuCisgICAgCisgICAgICAgIFRvIG1ha2Ug
Y29uc3RydWN0aW9uIG9mIFNSR0JBPHVpbnQ4X3Q+IHZhbHVlcyBuaWNlciwgY2FsbGVycyBubyBs
b25nZXIgbmVlZAorICAgICAgICB0byBzcGVjaWZ5IHRoZSBhbHBoYSBleHBsaWNpdGx5IGlmIHRo
ZSBjb2xvciBpcyBvcGFxdWUuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9TaW1wbGVDb2xvci5oOiBSZW1vdmVkLgorICAgICAgICBSZW1vdmUgU2ltcGxlQ29s
b3IuaAorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VOdW1lcmljQ29sb3IpOgorICAgICAgICBTd2l0Y2ggdG8gY2xh
bXBUb0NvbXBvbmVudEJ5dGVzLCBidXQgbGVhdmUgYSBGSVhNRSBpbmRpY2F0aW5nIHRoaXMgc2hv
dWxkIGJlCisgICAgICAgIHN3aXRjaGVkIHRvIGRpcmVjdCBTUkdCQTx1aW50OF90PiB3aGVuIGhl
cGxlciBmdW5jdGlvbnMgYXJlIGZpeGVkIHRvIHJldHVybgorICAgICAgICB1aW50OF90cyByYXRo
ZXIgdGhhbiBpbnRzLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yKToKKyAgICAgICAgU3dpdGNo
ZWQgdG8gY2xhbXBUb0NvbXBvbmVudEJ5dGVzIGFuZCByZW1vdmVkIGV4aXN0aW5nIHVubmVjZXNz
YXJ5IGFkZGl0aW9uYWwgY2xhbXBpbmcKKyAgICAgICAgb2YgdGhlIGFscGhhIGNvbXBvbmVudC4K
KworICAgICAgICAqIHBhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5OjpkcmF3UmVjdCk6CisgICAgICAgIFJl
c3RydWN0dXJlIEhhc2hNYXAgY29uc3RydWN0aW9uIHRvIHVzZSB0aGUgSGFzaE1hcCBzdGQ6Omlu
dGlhbGl6ZXJfbGlzdCBjb25zdHJ1Y3Rvci4KKyAgICAgICAgVGhpcyB0YWtlcyBhZHZhbnRhZ2Ug
b2YgYSBjaGFuZ2UgdG8gV1RGOjpLZXlWYWx1ZVBhaXIgdGhhdCBhbGxvd3MgaXQgZGVkdWNlIGlu
IHRoaXMKKyAgICAgICAgY29udGV4dC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmg6CisgICAgICAgIFJlbW92ZSBTaW1wbGVDb2xvci5oIGluY2x1ZGUsIGJ1dCBhZGQgQ29s
b3JCdWlsZGVyLmggYW5kIENvbG9yVXRpbGl0aWVzLmgKKyAgICAgICAgd2hpY2ggU2ltcGxlQ29s
b3Igd2FzIGluY2x1ZGluZyBvbiBpdHMgYmVoYWxmLiBBZGQgbmV3IG5hbWVkIGNvbG9ycyBmb3Ig
CisgICAgICAgIHJlZCwgbWFnZW50YSwgYmx1ZSwgZ3JlZW4sIGRhcmtHcmVlbiBhbmQgb3Jhbmdl
LiBGb3IgYWxsIG5hbWVkIGNvbG9ycywKKyAgICAgICAgdXNlIENvbG9yQnVpbGRlcjxTUkdCQTx1
aW50OF90Pj4gcmF0aGVyIHRoYW4gU1JHQkE8dWludDhfdD4gYWxvbmUgdG8gYWxsb3cKKyAgICAg
ICAgZm9yIGNhbGxlcnMgdG8gZG8gdGhpbmdzIGxpa2UgQ29sb3I6OnllbGxvdy5jb2xvcldpdGhB
bHBoYSguLi4pLiBJbiB0aGUgZnV0dXJlLAorICAgICAgICBpdCBtaWdodCBtYWtlIG1vcmUgc2Vu
c2UgdG8gbWVyZ2UgQ29sb3JCdWlsZGVyJ3MgZnVuY3Rpb25hbGl0eSBkaXJlY3RseSBpbnRvCisg
ICAgICAgIHRoZSBjb2xvciB0eXBlcywgYnV0IGZvciBub3cgdGhpcyBwcmVzZXJ2ZXMgdGhhdCBm
dW5jdGlvbmFsaXR5LgorCisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRk
aXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9u
Q29sb3JGdW5jdGlvbjo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25D
b2xvckZ1bmN0aW9uOjpyb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKTogRGVsZXRlZC4KKyAgICAg
ICAgUmVwbGFjZSBiZXNwb2tlIHJvdW5kaW5nL2NsYW1waW5nIGZ1bmN0aW9ucyBpbiBmYXZvciBv
ZiBDb2xvclV0aWxpdGllcy5oIGFnZ3JlZ2F0ZSBvbmVzIGFuZAorICAgICAgICBkaXJlY3RseSBj
YWxsaW5nIHN0ZDo6bHJvdW5kLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpwYXJzZVJHQlBhcmFtZXRlcnMpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRpb25I
aWdobGlnaHQuaDoKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlU2ltcGxlQ29sb3JWYWx1ZSk6CisgICAgICAgICogaHRtbC9IVE1MRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUxlZ2FjeUNvbG9yVmFsdWUpOgorICAg
ICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd091dGxpbmVkUXVh
ZFdpdGhDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdTaGFwZUhpZ2hsaWdodCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpwYWludCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3UGFpbnRSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JPdmVybGF5OjpkcmF3Qm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck92ZXJsYXk6OmRyYXdSdWxlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3Zlcmxh
eTo6ZHJhd0VsZW1lbnRUaXRsZSk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6TGluZUxheW91dDo6ZGVidWdUZXh0U2hhZG93KToKKyAgICAgICAgKiBwYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tncm91bmRDU1MgY29uc3QpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXMp
OgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Okhpc3RvcmljUmVzb3VyY2VVc2FnZURhdGE6Okhpc3RvcmljUmVzb3Vy
Y2VVc2FnZURhdGEpOgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlM
aW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZv
cm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1l
QWR3YWl0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYWR3YWl0YS9UaGVtZUFkd2FpdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVBZHdhaXRhOjphY3RpdmVTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVBZHdhaXRhOjphY3RpdmVT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVB
ZHdhaXRhOjppbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQmxlbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRTb3VyY2VPdmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kV2l0aFdoaXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQnVpbGRl
cjo6Y29sb3JXaXRoQWxwaGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JCdWlsZGVy
OjpDb2xvckJ1aWxkZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNSR0JBOjpTUkdCQSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNs
YW1wVG9Db21wb25lbnRCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50
RmxvYXRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OmdldERlYnVnQm9yZGVySW5mbyBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdl
cyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50c0xheWVyRGVidWdCb3JkZXJDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjbG9uZUxheWVyRGVidWdCb3JkZXJDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5
ZnJhbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGlj
YXRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb3ZlcmFnZU1hcDo6VGlsZUNvdmVyYWdlTWFwKToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb3ZlcmFnZU1hcDo6dXBkYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwOgor
ICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmRyYXdSZXBhaW50Q291bnRlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y29sb3JGb3JNYXJrZXJMaW5lU3R5bGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VTaW1w
bGVDb2xvckZyb21OU0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3RG90c0ZvckRvY3VtZW50
TWFya2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNo
ZTo6Y29sb3JGb3JHcmlkVGlsZUJvcmRlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
ZWZhdWx0RGV2aWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
ZHJhd0JveGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tCYWNr
Z3JvdW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9wbGF5c3RhdGlvbi9TY3JvbGxiYXJUaGVtZVBs
YXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUGxheVN0YXRp
b246OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0lt
YWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGF0dGVybkZvclRvdWNoQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdHRl
cm5Gb3JFdmVudExpc3RlbmVyUmVnaW9uVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OnBhaW50RGVidWdPdmVybGF5cyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwbGF0Zm9ybUFj
dGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZTo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9y
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVBZHdhaXRhLmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFp
bnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRQ
cm9ncmVzc0Jhcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6bWVudUJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZU1hYzo6c3lzdGVtQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lV2luOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdp
bjo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OnN5c3RlbUNvbG9yIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MQmxvY2s6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbG9yUmVzb2x2aW5nQ3VycmVu
dENvbG9yIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsU3RvcENvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsRmxvb2RDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbExpZ2h0aW5nQ29sb3IpOgor
ICAgICAgICAqIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZHJhd1JlY3QpOgorICAgICAgICAqIHRlc3Rp
bmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbToKKyAgICAgICAg
KC1bV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheSBpbml0V2l0aFdlYlZpZXc6a2lu
ZDpkZXByZWNhdGVkOl0pOgorICAgICAgICBSZXBsYWNlIG1ha2VTaW1wbGVDb2xvciB1c2VzIHdp
dGggYXBwcm9wcmlhdGUgYWx0ZXJuYXRpdmUuCisKIDIwMjAtMDctMTYgIFBlbmcgTGl1ICA8cGVu
Zy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBEb3VibGUgdGFwcGluZyB0byB6b29tIG91dCBh
IGZ1bGxzY3JlZW4gdmlkZW8gd2lsbCB6b29tIGluIHNsaWdodGx5IGJlZm9yZSB6b29taW5nIG91
dApJbmRleDogU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMTk0LDcgKzExOTQsNiBAQCBz
ZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlVmlkZW9TYW1wbGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01v
ZGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgKLSAgICBwbGF0Zm9ybS9n
cmFwaGljcy9TaW1wbGVDb2xvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNh
dG9yLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9UZXh0UnVuLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjIz
NCw3ICsyMjM0LDYgQEAKIAkJN0MyRkE2MTIxRUE5NUEzQzAwQTAzMTA4IC8qIFJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MyRkE2MTAxRUE5NUEzMjAwQTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdDMzBEOTg0MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzMEQ5ODAxRjgxNUFD
MTAwMjY4MzU2IC8qIEpTQWJvcnRDb250cm9sbGVyLmggKi87IH07CiAJCTdDMzBEOTg2MUY4MTVB
RUMwMDI2ODM1NiAvKiBKU0Fib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMwRDk4MTFGODE1QUMxMDAyNjgzNTYgLyogSlNBYm9ydFNp
Z25hbC5oICovOyB9OwotCQk3QzMxQzg4RTI0N0FENTk1MDA1QkYzMTkgLyogU2ltcGxlQ29sb3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzFDODhD
MjQ3QUQ1OTUwMDVCRjMxOSAvKiBTaW1wbGVDb2xvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMzMwQTAyMURGOEZBQzYwMEQzMzk1QyAvKiBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzMwQTAxMURGOEZBQzYwMEQzMzk1QyAvKiBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QzMzMEEwODFERjlGOTUxMDBEMzM5NUMgLyogSlNQb3NpdGlvbk9wdGlv
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzMw
QTA2MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovOyB9OwogCQk3QzNB
OTFFNjFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNBOTFFNTFDOTYzQjg4MDBE
MUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk5OTYsNyArOTk5NSw2IEBACiAJCTdDMzBEOTgw
MUY4MTVBQzEwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0Fib3J0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzMwRDk4MTFGODE1QUMxMDAyNjgzNTYgLyogSlNBYm9ydFNpZ25hbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Fib3J0U2lnbmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzBEOTgyMUY4MTVBQzIwMDI2ODM1NiAvKiBKU0Fib3J0
U2lnbmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQWJvcnRT
aWduYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzMxQzg4QzI0N0FENTk1
MDA1QkYzMTkgLyogU2ltcGxlQ29sb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2ltcGxlQ29sb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzMzBBMDEx
REY4RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzMzBBMDMxREY5RTk1QjAwRDMzOTVDIC8q
IFBvc2l0aW9uT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUG9zaXRpb25PcHRpb25zLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzMzBBMDUxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9zaXRp
b25PcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9z
aXRpb25PcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NzI2LDcg
KzI1NzI0LDYgQEAKIAkJCQlBNzNGOTVGRDEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3Qu
aCAqLywKIAkJCQkwRjNERDQ0RDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5jcHAgKi8s
CiAJCQkJMEYzREQ0NEUxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCAqLywKLQkJCQk3
QzMxQzg4QzI0N0FENTk1MDA1QkYzMTkgLyogU2ltcGxlQ29sb3IuaCAqLywKIAkJCQlDRDY0MUVC
MjE4MThGNUVEMDBFRTRDNDEgLyogU291cmNlQnVmZmVyUHJpdmF0ZS5oICovLAogCQkJCUNEQzhC
NUFDMTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmggKi8sCiAJ
CQkJN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICovLApAQCAtMzMx
OTUsNyArMzMxOTIsNiBAQAogCQkJCTkzMzA5RUEzMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRU
aW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREYxOUUyQUMyNDc3MkJDMTAwN0JEQUNCIC8qIFNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
MzYyRThDMTIwQ0VGOUNCMDAyNDU4ODYgLyogU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk3QzMxQzg4RTI0N0FENTk1MDA1QkYzMTkgLyogU2ltcGxlQ29s
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0ODk0NEEzMTgwQjU3RDgwMEYxNjVEOCAvKiBTaW1w
bGVMaW5lTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMUUwNjdFRTFFNjI0NkU1MDAxNjJE
MTYgLyogU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1ODVE
NkUwNDFBMUE3OTJFMDBGQTRGMTIgLyogU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oIGlu
IEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZh
c3RQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJGYXN0UGF0aHMuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4Nyw3
ICs0ODcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgCiAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICBpZiAoY3VycmVudCAhPSBlbmQp
CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gbWFrZVNp
bXBsZUNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsgLy8gRklYTUU6IEFscmVhZHkgY2xh
bXBlZCwgZG9uJ3QgbmVlZCB0byByZS1jbGFtcCBhcyBtYWtlU2ltcGxlQ29sb3IgZG9lcy4KKyAg
ICAgICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4ocmVkLCBncmVlbiwgYmx1
ZSwgYWxwaGEpOyAvLyBGSVhNRTogQWxyZWFkeSBjbGFtcGVkLCBkb2Vzbid0IG5lZWQgdG8gcmUt
Y2xhbXAuIFVwZGF0ZSBwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlL3BhcnNlQWxwaGFWYWx1ZSB0
byByZXR1cm4gdWludDhfdCBhbmQgcmVwbGFjZSBjYWxsIHRvIGNsYW1wVG9Db21wb25lbnRCeXRl
cyB3aXRoIGRpcmVjdCBjb25zdHJ1Y3Rpb24gb2YgU1JHQkE8dWludDhfdD4uCiAgICAgfQogCiAg
ICAgLy8gVHJ5IHJnYigpIHN5bnRheC4KQEAgLTUwNSw3ICs1MDUsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgICAgICBpZiAoY3VycmVudCAhPSBlbmQpCiAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKHJlZCwgZ3JlZW4sIGJs
dWUpOyAvLyBGSVhNRTogQWxyZWFkeSBjbGFtcGVkLCBkb24ndCBuZWVkIHRvIHJlLWNsYW1wIGFz
IG1ha2VTaW1wbGVDb2xvciBkb2VzLgorICAgICAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5
dGVzPFNSR0JBPihyZWQsIGdyZWVuLCBibHVlKTsgLy8gRklYTUU6IEFscmVhZHkgY2xhbXBlZCwg
ZG9lc24ndCBuZWVkIHRvIHJlLWNsYW1wLiBVcGRhdGUgcGFyc2VDb2xvckludE9yUGVyY2VudGFn
ZS9wYXJzZUFscGhhVmFsdWUgdG8gcmV0dXJuIHVpbnQ4X3QgYW5kIHJlcGxhY2UgY2FsbCB0byBj
bGFtcFRvQ29tcG9uZW50Qnl0ZXMgd2l0aCBkaXJlY3QgY29uc3RydWN0aW9uIG9mIFNSR0JBPHVp
bnQ4X3Q+LgogICAgIH0KIAogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMu
Y3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4OSw3ICs1ODksNyBA
QCBzdGF0aWMgQ29sb3IgcGFyc2VSR0JQYXJhbWV0ZXJzKENTU1BhcnNlCiAgICAgaWYgKCFhcmdz
LmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0gICAgcmV0dXJuIG1ha2VTaW1w
bGVDb2xvcihjb2xvckFycmF5WzBdLCBjb2xvckFycmF5WzFdLCBjb2xvckFycmF5WzJdLCBhbHBo
YUNvbXBvbmVudCk7CisgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgY29sb3JBcnJheVswXSwg
Y29sb3JBcnJheVsxXSwgY29sb3JBcnJheVsyXSwgYWxwaGFDb21wb25lbnQgfTsKIH0KIAogc3Rh
dGljIENvbG9yIHBhcnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRpb25IaWdobGlnaHQuaAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw5ICs0MCw5IEBAIHN0cnVjdCBDb21wb3NpdGlvbkhpZ2hsaWdodCB7CiAgICAgfQogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVs
dENvbXBvc2l0aW9uRmlsbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDE3NSwgMTkyLCAyMjcsIDYw
KTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdENvbXBvc2l0aW9uRmlsbENvbG9y
ID0gU1JHQkE8dWludDhfdD4geyAxNzUsIDE5MiwgMjI3LCA2MCB9OwogI2Vsc2UKLSAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdENvbXBvc2l0aW9uRmlsbENvbG9yID0gbWFrZVNpbXBs
ZUNvbG9yKDIyNSwgMjIxLCA4NSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRlZmF1bHRD
b21wb3NpdGlvbkZpbGxDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjI1LCAyMjEsIDg1IH07CiAj
ZW5kaWYKIAogICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0IHsgMCB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3
Myw3IEBAIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VTaW0KIHsKICAgICBp
ZiAoIWlzVmFsaWRTaW1wbGVDb2xvcihzdHJpbmcpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IodG9BU0NJSUhleFZhbHVlKHN0cmluZ1sx
XSwgc3RyaW5nWzJdKSwgdG9BU0NJSUhleFZhbHVlKHN0cmluZ1szXSwgc3RyaW5nWzRdKSwgdG9B
U0NJSUhleFZhbHVlKHN0cmluZ1s1XSwgc3RyaW5nWzZdKSk7CisgICAgcmV0dXJuIFNSR0JBPHVp
bnQ4X3Q+IHsgdG9BU0NJSUhleFZhbHVlKHN0cmluZ1sxXSwgc3RyaW5nWzJdKSwgdG9BU0NJSUhl
eFZhbHVlKHN0cmluZ1szXSwgc3RyaW5nWzRdKSwgdG9BU0NJSUhleFZhbHVlKHN0cmluZ1s1XSwg
c3RyaW5nWzZdKSB9OwogfQogCiBDb2xvcklucHV0VHlwZTo6fkNvbG9ySW5wdXRUeXBlKCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAy
NCw3ICsxMDI0LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZUxlZwog
ICAgICAgICByZXR1cm4gbmFtZWRDb2xvcjsKIAogICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPT0g
NCAmJiBzdHJpbmdbMF0gPT0gJyMnICYmIGlzQVNDSUlIZXhEaWdpdChzdHJpbmdbMV0pICYmIGlz
QVNDSUlIZXhEaWdpdChzdHJpbmdbMl0pICYmIGlzQVNDSUlIZXhEaWdpdChzdHJpbmdbM10pKQot
ICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKHRvQVNDSUlIZXhWYWx1ZShzdHJpbmdbMV0p
ICogMHgxMSwgdG9BU0NJSUhleFZhbHVlKHN0cmluZ1syXSkgKiAweDExLCB0b0FTQ0lJSGV4VmFs
dWUoc3RyaW5nWzNdKSAqIDB4MTEpOworICAgICAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyBz
dGF0aWNfY2FzdDx1aW50OF90Pih0b0FTQ0lJSGV4VmFsdWUoc3RyaW5nWzFdKSAqIDB4MTEpLCBz
dGF0aWNfY2FzdDx1aW50OF90Pih0b0FTQ0lJSGV4VmFsdWUoc3RyaW5nWzJdKSAqIDB4MTEpLCBz
dGF0aWNfY2FzdDx1aW50OF90Pih0b0FTQ0lJSGV4VmFsdWUoc3RyaW5nWzNdKSAqIDB4MTEpIH07
CiAKICAgICAvLyBQZXIgc3BlYywgb25seSBsb29rIGF0IHRoZSBmaXJzdCAxMjggZGlnaXRzIG9m
IHRoZSBzdHJpbmcuCiAgICAgY29uc3RleHByIHVuc2lnbmVkIG1heENvbG9yTGVuZ3RoID0gMTI4
OwpAQCAtMTA1Miw3ICsxMDUyLDcgQEAgc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBw
YXJzZUxlZwogICAgIGRpZ2l0QnVmZmVyLmFwcGVuZCgnMCcpOwogCiAgICAgaWYgKGRpZ2l0QnVm
ZmVyLnNpemUoKSA8IDYpCi0gICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IodG9BU0NJSUhl
eFZhbHVlKGRpZ2l0QnVmZmVyWzBdKSwgdG9BU0NJSUhleFZhbHVlKGRpZ2l0QnVmZmVyWzFdKSwg
dG9BU0NJSUhleFZhbHVlKGRpZ2l0QnVmZmVyWzJdKSk7CisgICAgICAgIHJldHVybiBTUkdCQTx1
aW50OF90PiB7IHRvQVNDSUlIZXhWYWx1ZShkaWdpdEJ1ZmZlclswXSksIHRvQVNDSUlIZXhWYWx1
ZShkaWdpdEJ1ZmZlclsxXSksIHRvQVNDSUlIZXhWYWx1ZShkaWdpdEJ1ZmZlclsyXSkgfTsKIAog
ICAgIC8vIFNwbGl0IHRoZSBkaWdpdHMgaW50byB0aHJlZSBjb21wb25lbnRzLCB0aGVuIHNlYXJj
aCB0aGUgbGFzdCA4IGRpZ2l0cyBvZiBlYWNoIGNvbXBvbmVudC4KICAgICBBU1NFUlQoZGlnaXRC
dWZmZXIuc2l6ZSgpID49IDYpOwpAQCAtMTA3Niw3ICsxMDc2LDcgQEAgc3RhdGljIE9wdGlvbmFs
PFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZUxlZwogICAgIHVpbnQ4X3QgcmVkVmFsdWUgPSB0b0FTQ0lJ
SGV4VmFsdWUoZGlnaXRCdWZmZXJbcmVkSW5kZXhdLCBkaWdpdEJ1ZmZlcltyZWRJbmRleCArIDFd
KTsKICAgICB1aW50OF90IGdyZWVuVmFsdWUgPSB0b0FTQ0lJSGV4VmFsdWUoZGlnaXRCdWZmZXJb
Z3JlZW5JbmRleF0sIGRpZ2l0QnVmZmVyW2dyZWVuSW5kZXggKyAxXSk7CiAgICAgdWludDhfdCBi
bHVlVmFsdWUgPSB0b0FTQ0lJSGV4VmFsdWUoZGlnaXRCdWZmZXJbYmx1ZUluZGV4XSwgZGlnaXRC
dWZmZXJbYmx1ZUluZGV4ICsgMV0pOwotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IocmVkVmFs
dWUsIGdyZWVuVmFsdWUsIGJsdWVWYWx1ZSk7CisgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsg
cmVkVmFsdWUsIGdyZWVuVmFsdWUsIGJsdWVWYWx1ZSB9OwogfQogCiB2b2lkIEhUTUxFbGVtZW50
OjphZGRIVE1MQ29sb3JUb1N0eWxlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlLCBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDI2NDQ3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwODUsNyArMjA4NSw3IEBAIFJlbmRlclN0eWxlIEhUTUxJbnB1dEVsZW1lbnQ6
OmNyZWF0ZUlubmUKICAgICBpZiAoaGFzQXV0b0ZpbGxTdHJvbmdQYXNzd29yZEJ1dHRvbigpICYm
ICFpc0Rpc2FibGVkT3JSZWFkT25seSgpKSB7CiAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldERp
c3BsYXkoRGlzcGxheVR5cGU6OklubGluZUJsb2NrKTsKICAgICAgICAgdGV4dEJsb2NrU3R5bGUu
c2V0TWF4V2lkdGgoTGVuZ3RoIHsgMTAwLCBQZXJjZW50IH0pOwotICAgICAgICB0ZXh0QmxvY2tT
dHlsZS5zZXRDb2xvcihtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMTUzKSk7CisgICAgICAgIHRl
eHRCbG9ja1N0eWxlLnNldENvbG9yKENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgxNTMpKTsK
ICAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0VGV4dE92ZXJmbG93KFRleHRPdmVyZmxvdzo6Q2xp
cCk7CiAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldE1hc2tJbWFnZShTdHlsZUdlbmVyYXRlZElt
YWdlOjpjcmVhdGUoYXV0b0ZpbGxTdHJvbmdQYXNzd29yZE1hc2tJbWFnZSgpKSk7CiAgICAgICAg
IC8vIEEgc3RhY2tpbmcgY29udGV4dCBpcyBuZWVkZWQgZm9yIHRoZSBtYXNrLgpJbmRleDogU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAkocmV2aXNpb24g
MjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNyArMjIyLDcgQEAgc3RhdGljIHZvaWQgZHJhd091dGxp
bmVkUXVhZFdpdGhDbGlwKEdyYQogICAgIGNvbnRleHQuZmlsbFBhdGgocXVhZFRvUGF0aChxdWFk
LCBib3VuZHMpKTsKIAogICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZU9wZXJhdG9yOjpEZXN0aW5hdGlvbk91dCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IobWFr
ZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCkpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9y
OjpyZWQpOwogICAgIGNvbnRleHQuZmlsbFBhdGgocXVhZFRvUGF0aChjbGlwUXVhZCwgYm91bmRz
KSk7CiB9CiAKQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhcGVIaWdobGln
aHQoR3JhcGhpY3NDCiAgICAgRnJhbWVWaWV3KiBjb250YWluaW5nVmlldyA9IGNvbnRhaW5pbmdG
cmFtZS0+dmlldygpOwogICAgIEZyYW1lVmlldyogbWFpblZpZXcgPSBjb250YWluaW5nRnJhbWUt
PnBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwogCi0gICAgY29uc3RleHByIGF1dG8gc2hhcGVI
aWdobGlnaHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig5NiwgODIsIDEyNywgMjA0KTsKKyAgICBj
b25zdGV4cHIgYXV0byBzaGFwZUhpZ2hsaWdodENvbG9yID0gU1JHQkE8dWludDhfdD4geyA5Niwg
ODIsIDEyNywgMjA0IH07CiAKICAgICBTaGFwZTo6RGlzcGxheVBhdGhzIHBhdGhzOwogICAgIHNo
YXBlT3V0c2lkZUluZm8tPmNvbXB1dGVkU2hhcGUoKS5idWlsZERpc3BsYXlQYXRocyhwYXRocyk7
CkBAIC0zNDUsNyArMzQ1LDcgQEAgc3RhdGljIHZvaWQgZHJhd1NoYXBlSGlnaGxpZ2h0KEdyYXBo
aWNzQwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKIAotICAgICAgICBjb25zdGV4cHIgYXV0byBzaGFwZU1hcmdpbkhpZ2hsaWdodENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDk2LCA4MiwgMTI3LCAxNTMpOworICAgICAgICBjb25zdGV4cHIg
YXV0byBzaGFwZU1hcmdpbkhpZ2hsaWdodENvbG9yID0gU1JHQkE8dWludDhfdD4geyA5NiwgODIs
IDEyNywgMTUzIH07CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHNoYXBlTWFyZ2luSGln
aGxpZ2h0Q29sb3IpOwogICAgICAgICBjb250ZXh0LmZpbGxQYXRoKG1hcmdpblBhdGgpOwogICAg
IH0KQEAgLTM4Miw3ICszODIsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnBhaW50KEdyYXBo
aWNzQ29uCiAgICAgaWYgKG1faW5kaWNhdGluZykgewogICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKLSAgICAgICAgY29uc3RleHByIGF1dG8g
aW5kaWNhdGluZ0NvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDExMSwgMTY4LCAyMjAsIDE2OCk7Cisg
ICAgICAgIGNvbnN0ZXhwciBhdXRvIGluZGljYXRpbmdDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsg
MTExLCAxNjgsIDIyMCwgMTY4IH07CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGluZGlj
YXRpbmdDb2xvcik7CiAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoeyBGbG9hdFBvaW50Ojp6ZXJv
KCksIHZpZXdwb3J0U2l6ZSB9KTsKICAgICB9CkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBJbnNw
ZWN0b3JPdmVybGF5OjpkcmF3UGFpbnRSZWN0cyhHcgogewogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIAotICAgIGNvbnN0ZXhwciBhdXRvIHBhaW50
UmVjdHNDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDAsIDEyOCk7CisgICAgY29uc3Rl
eHByIGF1dG8gcGFpbnRSZWN0c0NvbG9yID0gQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYSgxMjgp
OwogICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHBhaW50UmVjdHNDb2xvcik7CiAKICAgICBmb3Ig
KGNvbnN0IFRpbWVSZWN0UGFpciYgcGFpciA6IHBhaW50UmVjdHMpCkBAIC02NjIsNyArNjYyLDcg
QEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3Qm91bmRzKEdyYXBoaQogCiAgICAgY29udGV4
dC5zZXRTdHJva2VUaGlja25lc3MoMSk7CiAKLSAgICBjb25zdGV4cHIgYXV0byBib3VuZHNDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDAsIDE1Myk7CisgICAgY29uc3RleHByIGF1dG8g
Ym91bmRzQ29sb3IgPSBDb2xvcjo6cmVkLmNvbG9yV2l0aEFscGhhKDE1Myk7CiAgICAgY29udGV4
dC5zZXRTdHJva2VDb2xvcihib3VuZHNDb2xvcik7CiAKICAgICBjb250ZXh0LnN0cm9rZVBhdGgo
cGF0aCk7CkBAIC02NzAsOSArNjcwLDkgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3Qm91
bmRzKEdyYXBoaQogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdSdWxlcnMoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnNwZWN0b3JPdmVybGF5OjpSdWxlckV4Y2x1c2lvbiYg
cnVsZXJFeGNsdXNpb24pCiB7Ci0gICAgY29uc3RleHByIGF1dG8gcnVsZXJCYWNrZ3JvdW5kQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSwgMTUzKTsKLSAgICBjb25zdGV4cHIg
YXV0byBsaWdodFJ1bGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgNTEpOwotICAg
IGNvbnN0ZXhwciBhdXRvIGRhcmtSdWxlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAs
IDEyOCk7CisgICAgY29uc3RleHByIGF1dG8gcnVsZXJCYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6
d2hpdGUuY29sb3JXaXRoQWxwaGEoMTUzKTsKKyAgICBjb25zdGV4cHIgYXV0byBsaWdodFJ1bGVy
Q29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoNTEpOworICAgIGNvbnN0ZXhwciBh
dXRvIGRhcmtSdWxlckNvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhKDEyOCk7CiAK
ICAgICBJbnRQb2ludCBzY3JvbGxPZmZzZXQ7CiAKQEAgLTEwNDYsMTQgKzEwNDYsMTQgQEAgUGF0
aCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3RWxlbWVudFRpdGxlKAogCiAgICAgY29udGV4dC50cmFu
c2xhdGUoZWxlbWVudERhdGFCb3JkZXJTaXplIC8gMi4wZiwgZWxlbWVudERhdGFCb3JkZXJTaXpl
IC8gMi4wZik7CiAKLSAgICBjb25zdGV4cHIgYXV0byBlbGVtZW50VGl0bGVCYWNrZ3JvdW5kQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDE5NCk7CisgICAgY29uc3RleHByIGF1dG8g
ZWxlbWVudFRpdGxlQmFja2dyb3VuZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNTUsIDI1NSwg
MTk0IH07CiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZWxlbWVudFRpdGxlQmFja2dyb3VuZENv
bG9yKTsKIAogICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAKICAgICBjb250ZXh0LnNldFN0
cm9rZVRoaWNrbmVzcyhlbGVtZW50RGF0YUJvcmRlclNpemUpOwogCi0gICAgY29uc3RleHByIGF1
dG8gZWxlbWVudFRpdGxlQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTI4LCAxMjgsIDEy
OCk7CisgICAgY29uc3RleHByIGF1dG8gZWxlbWVudFRpdGxlQm9yZGVyQ29sb3IgPSBDb2xvcjo6
ZGFya0dyYXk7CiAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihlbGVtZW50VGl0bGVCb3JkZXJD
b2xvcik7CiAKICAgICBjb250ZXh0LnN0cm9rZVBhdGgocGF0aCk7CkBAIC0xMDY4LDEwICsxMDY4
LDEwIEBAIFBhdGggSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0VsZW1lbnRUaXRsZSgKICAgICAgICAg
dGV4dFBvc2l0aW9uWCArPSBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFRleHRSdW4odGV4dCksIHsg
dGV4dFBvc2l0aW9uWCwgdGV4dFBvc2l0aW9uWSB9KTsKICAgICB9OwogCi0gICAgZHJhd1RleHQo
ZWxlbWVudFRhZ05hbWUsIG1ha2VTaW1wbGVDb2xvcigxMzYsIDE4LCAxMjgpKTsgLy8gS2VlcCB0
aGlzIGluIHN5bmMgd2l0aCBYTUxWaWV3ZXIuY3NzICgudGFnKQotICAgIGRyYXdUZXh0KGVsZW1l
bnRJRFZhbHVlLCBtYWtlU2ltcGxlQ29sb3IoMjYsIDI2LCAxNjYpKTsgLy8gS2VlcCB0aGlzIGlu
IHN5bmMgd2l0aCBYTUxWaWV3ZXIuY3NzICguYXR0cmlidXRlLXZhbHVlKQotICAgIGRyYXdUZXh0
KGVsZW1lbnRDbGFzc1ZhbHVlLCBtYWtlU2ltcGxlQ29sb3IoMTUzLCA2OSwgMCkpOyAvLyBLZWVw
IHRoaXMgaW4gc3luYyB3aXRoIFhNTFZpZXdlci5jc3MgKC5hdHRyaWJ1dGUtbmFtZSkKLSAgICBk
cmF3VGV4dChlbGVtZW50UHNldWRvVHlwZSwgbWFrZVNpbXBsZUNvbG9yKDEzNiwgMTgsIDEyOCkp
OyAvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFhNTFZpZXdlci5jc3MgKC50YWcpCisgICAgZHJh
d1RleHQoZWxlbWVudFRhZ05hbWUsIFNSR0JBPHVpbnQ4X3Q+IHsgMTM2LCAxOCwgMTI4IH0pOyAv
LyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFhNTFZpZXdlci5jc3MgKC50YWcpCisgICAgZHJhd1Rl
eHQoZWxlbWVudElEVmFsdWUsIFNSR0JBPHVpbnQ4X3Q+IHsgMjYsIDI2LCAxNjYgfSk7IC8vIEtl
ZXAgdGhpcyBpbiBzeW5jIHdpdGggWE1MVmlld2VyLmNzcyAoLmF0dHJpYnV0ZS12YWx1ZSkKKyAg
ICBkcmF3VGV4dChlbGVtZW50Q2xhc3NWYWx1ZSwgU1JHQkE8dWludDhfdD4geyAxNTMsIDY5LCAw
IH0pOyAvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFhNTFZpZXdlci5jc3MgKC5hdHRyaWJ1dGUt
bmFtZSkKKyAgICBkcmF3VGV4dChlbGVtZW50UHNldWRvVHlwZSwgU1JHQkE8dWludDhfdD4geyAx
MzYsIDE4LCAxMjggfSk7IC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggWE1MVmlld2VyLmNzcyAo
LnRhZykKICAgICBkcmF3VGV4dCgiICJfcywgQ29sb3I6OmJsYWNrKTsKICAgICBkcmF3VGV4dChl
bGVtZW50V2lkdGgsIENvbG9yOjpibGFjayk7CiAgICAgZHJhd1RleHQoInB4Il9zLCBDb2xvcjo6
ZGFya0dyYXkpOwpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgUGF0aCBJbnNwZWN0b3JPdmVybGF5Ojpk
cmF3RWxlbWVudFRpdGxlKAogICAgICAgICB0ZXh0UG9zaXRpb25YID0gYm94WCArIGVsZW1lbnRE
YXRhU3BhY2luZzsKICAgICAgICAgdGV4dFBvc2l0aW9uWSArPSBmb250SGVpZ2h0OwogCi0gICAg
ICAgIGRyYXdUZXh0KCJSb2xlIl9zLCBtYWtlU2ltcGxlQ29sb3IoMTcwLCAxMywgMTQ1KSk7Cisg
ICAgICAgIGRyYXdUZXh0KCJSb2xlIl9zLCBTUkdCQTx1aW50OF90PiB7IDE3MCwgMTMsIDE0NSB9
KTsKICAgICAgICAgZHJhd1RleHQoIiAiX3MsIENvbG9yOjpibGFjayk7CiAgICAgICAgIGRyYXdU
ZXh0KGVsZW1lbnRSb2xlLCBDb2xvcjo6YmxhY2spOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCShy
ZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDE1ICsxNDEsOCBAQCBzdGF0
aWMgQ29sb3IgcGFyc2VDb2xvcihjb25zdCBKU09OOjpPYmplCiAKICAgICBkb3VibGUgYSA9IDEu
MDsKICAgICBpZiAoIWNvbG9yT2JqZWN0LT5nZXREb3VibGUoImEiLCBhKSkKLSAgICAgICAgcmV0
dXJuIG1ha2VTaW1wbGVDb2xvcihyLCBnLCBiKTsKLQotICAgIC8vIENsYW1wIGFscGhhIHRvIHRo
ZSBbMC4uMV0gcmFuZ2UuCi0gICAgaWYgKGEgPCAwKQotICAgICAgICBhID0gMDsKLSAgICBlbHNl
IGlmIChhID4gMSkKLSAgICAgICAgYSA9IDE7Ci0KLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9y
KHIsIGcsIGIsIGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUoYSkpOworICAgICAgICByZXR1cm4gY2xh
bXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihyLCBnLCBiKTsKKyAgICByZXR1cm4gY2xhbXBUb0Nv
bXBvbmVudEJ5dGVzPFNSR0JBPihyLCBnLCBiLCBjb252ZXJ0VG9Db21wb25lbnRCeXRlKGEpKTsK
IH0KIAogc3RhdGljIENvbG9yIHBhcnNlQ29uZmlnQ29sb3IoY29uc3QgU3RyaW5nJiBmaWVsZE5h
bWUsIGNvbnN0IEpTT046Ok9iamVjdCogY29uZmlnT2JqZWN0KQpJbmRleDogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjEsNyArMzYxLDcgQEAgU2hhZG93RGF0YSogTGluZUxheW91dDo6ZGVi
dWdUZXh0U2hhZG93KAogICAgIGlmICghbV9mbG93LnNldHRpbmdzKCkuc2ltcGxlTGluZUxheW91
dERlYnVnQm9yZGVyc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVidWdUZXh0U2hhZG93KEludFBvaW50
KDAsIDApLCAxMCwgMjAsIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIG1ha2VTaW1wbGVDb2xv
cigwLCAwLCAxNTAsIDE1MCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRh
PiBkZWJ1Z1RleHRTaGFkb3coSW50UG9pbnQoMCwgMCksIDEwLCAyMCwgU2hhZG93U3R5bGU6Ok5v
cm1hbCwgdHJ1ZSwgU1JHQkE8dWludDhfdD4geyAwLCAwLCAxNTAsIDE1MCB9KTsKICAgICByZXR1
cm4gJmRlYnVnVGV4dFNoYWRvdy5nZXQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAJKHJldmlzaW9u
IDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5LDcgQEAgU3RyaW5nIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYQogewogICAgIC8vIFRoaXMgZGVmYXVsdCB2YWx1
ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgc3BlY2lmaWVkIGluIG1lZGlhQ29udHJvbHMu
Y3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcGFzdC1ub2RlcwogICAgIC8vIGFuZCB3
ZWJraXQtbWVkaWEtdGV4dC10cmFjay1mdXR1cmUtbm9kZXMuCi0gICAgY29uc3RleHByIGF1dG8g
ZGVmYXVsdEJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCAwLjggKiAy
NTUpOworICAgIGNvbnN0ZXhwciBhdXRvIGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6
YmxhY2suY29sb3JXaXRoQWxwaGEoMjA0KTsKIAogICAgIE1BQ2FwdGlvbkFwcGVhcmFuY2VCZWhh
dmlvciBiZWhhdmlvcjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQ
YWdlT3ZlcmxheXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheShQYWdlJiBw
YWdlKQotICAgICAgICA6IFJlZ2lvbk92ZXJsYXkocGFnZSwgbWFrZVNpbXBsZUNvbG9yKDEyOCwg
MCwgMCwgMTAyKSkKKyAgICAgICAgOiBSZWdpb25PdmVybGF5KHBhZ2UsIFNSR0JBPHVpbnQ4X3Q+
IHsgMTI4LCAwLCAwLCAxMDIgfSkKICAgICB7CiAgICAgfQogCkBAIC0xMTgsNyArMTE4LDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9u
T3ZlcmxheShQYWdlJiBwYWdlKQotICAgICAgICA6IFJlZ2lvbk92ZXJsYXkocGFnZSwgbWFrZVNp
bXBsZUNvbG9yKDI1NSwgMTI4LCAwLCAxMDIpKQorICAgICAgICA6IFJlZ2lvbk92ZXJsYXkocGFn
ZSwgQ29sb3I6Om9yYW5nZS5jb2xvcldpdGhBbHBoYSgxMDIpKQogICAgIHsKICAgICB9CiAKQEAg
LTE0NywyNiArMTQ3LDE2IEBAIGJvb2wgTm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5Ojp1
cGQKIHN0YXRpYyBjb25zdCBIYXNoTWFwPFN0cmluZywgU1JHQkE8dWludDhfdD4+JiB0b3VjaEV2
ZW50UmVnaW9uQ29sb3JzKCkKIHsKICAgICBzdGF0aWMgY29uc3QgYXV0byByZWdpb25Db2xvcnMg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBzdHJ1Y3QgTWFwRW50cnkgewotICAg
ICAgICAgICAgQVNDSUlMaXRlcmFsIG5hbWU7Ci0gICAgICAgICAgICB1aW50OF90IHI7Ci0gICAg
ICAgICAgICB1aW50OF90IGc7Ci0gICAgICAgICAgICB1aW50OF90IGI7Ci0gICAgICAgIH07Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBNYXBFbnRyeSBlbnRyaWVzW10gPSB7Ci0gICAgICAgICAgICB7
ICJ0b3VjaHN0YXJ0Il9zLCAxOTEsIDE5MSwgNjMgfSwKLSAgICAgICAgICAgIHsgInRvdWNobW92
ZSJfcywgODAsIDIwNCwgMjQ1IH0sCi0gICAgICAgICAgICB7ICJ0b3VjaGVuZCJfcywgMTkxLCA2
MywgMTI3IH0sCi0gICAgICAgICAgICB7ICJ0b3VjaGZvcmNlY2hhbmdlIl9zLCA2MywgNjMsIDE5
MSB9LAotICAgICAgICAgICAgeyAid2hlZWwiX3MsIDI1NSwgMTI4LCAwIH0sCi0gICAgICAgICAg
ICB7ICJtb3VzZWRvd24iX3MsIDgwLCAyNDUsIDgwIH0sCi0gICAgICAgICAgICB7ICJtb3VzZW1v
dmUiX3MsIDI0NSwgMjQ1LCA4MCB9LAotICAgICAgICAgICAgeyAibW91c2V1cCJfcywgODAsIDI0
NSwgMTc2IH0sCi0gICAgICAgIH07Ci0gICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTUkdCQTx1aW50
OF90Pj4gbWFwOwotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW50cmllcykKLSAgICAgICAg
ICAgIG1hcC5hZGQoZW50cnkubmFtZSwgbWFrZVNpbXBsZUNvbG9yKGVudHJ5LnIsIGVudHJ5Lmcs
IGVudHJ5LmIsIDUwKSk7Ci0gICAgICAgIHJldHVybiBtYXA7CisgICAgICAgIHJldHVybiBIYXNo
TWFwPFN0cmluZywgU1JHQkE8dWludDhfdD4+IHsgeworICAgICAgICAgICAgeyAidG91Y2hzdGFy
dCJfcywgeyAxOTEsIDE5MSwgNjMsIDUwIH0gfSwKKyAgICAgICAgICAgIHsgInRvdWNobW92ZSJf
cywgeyA4MCwgMjA0LCAyNDUsIDUwIH0gfSwKKyAgICAgICAgICAgIHsgInRvdWNoZW5kIl9zLCB7
IDE5MSwgNjMsIDEyNywgNTAgfSB9LAorICAgICAgICAgICAgeyAidG91Y2hmb3JjZWNoYW5nZSJf
cywgeyA2MywgNjMsIDE5MSwgNTAgfSB9LAorICAgICAgICAgICAgeyAid2hlZWwiX3MsIHsgMjU1
LCAxMjgsIDAsIDUwIH0gfSwKKyAgICAgICAgICAgIHsgIm1vdXNlZG93biJfcywgeyA4MCwgMjQ1
LCA4MCwgNTAgfSB9LAorICAgICAgICAgICAgeyAibW91c2Vtb3ZlIl9zLCB7IDI0NSwgMjQ1LCA4
MCwgNTAgfSB9LAorICAgICAgICAgICAgeyAibW91c2V1cCJfcywgeyA4MCwgMjQ1LCAxNzYsIDUw
IH0gfQorICAgICAgICB9IH07CiAgICAgfSgpKTsKICAgICByZXR1cm4gcmVnaW9uQ29sb3JzOwog
fQpAQCAtMjQ2LDcgKzIzNiw3IEBAIHZvaWQgTm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5
OjpkcmEKICNlbmRpZgogCiAgICAgZm9yIChjb25zdCBhdXRvJiBzeW5jaHJvbm91c0V2ZW50UmVn
aW9uIDogbV9ldmVudFRyYWNraW5nUmVnaW9ucy5ldmVudFNwZWNpZmljU3luY2hyb25vdXNEaXNw
YXRjaFJlZ2lvbnMpIHsKLSAgICAgICAgYXV0byByZWdpb25Db2xvciA9IG1ha2VTaW1wbGVDb2xv
cigwLCAwLCAwLCA2NCk7CisgICAgICAgIGF1dG8gcmVnaW9uQ29sb3IgPSBDb2xvcjo6YmxhY2su
Y29sb3JXaXRoQWxwaGEoNjQpLmNvbG9yKCk7CiAgICAgICAgIGF1dG8gaXQgPSB0b3VjaEV2ZW50
UmVnaW9uQ29sb3JzKCkuZmluZChzeW5jaHJvbm91c0V2ZW50UmVnaW9uLmtleSk7CiAgICAgICAg
IGlmIChpdCAhPSB0b3VjaEV2ZW50UmVnaW9uQ29sb3JzKCkuZW5kKCkpCiAgICAgICAgICAgICBy
ZWdpb25Db2xvciA9IGl0LT52YWx1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJ
KHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDI0NCw3ICs0MjQ0LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50
Q29udGVudHMoR3JhcGhpY3NDbwogICAgIGlmIChmaWxsV2l0aFdhcm5pbmdDb2xvcikgewogICAg
ICAgICBJbnRSZWN0IGRlYnVnUmVjdCA9IGZyYW1lUmVjdCgpOwogICAgICAgICBkZWJ1Z1JlY3Qu
aW50ZXJzZWN0KGRpcnR5UmVjdCk7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJlY3QoZGVidWdSZWN0
LCBtYWtlU2ltcGxlQ29sb3IoMjU1LCA2NCwgMjU1KSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJl
Y3QoZGVidWdSZWN0LCBTUkdCQTx1aW50OF90PiB7IDI1NSwgNjQsIDI1NSB9KTsKICAgICB9CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAkocmV2aXNpb24g
MjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBQcmludENvbnRleHQ6OnNwb29sQWxsUGFn
ZXNXaXRoQm91bgogICAgIGludCB0b3RhbEhlaWdodCA9IHBhZ2VSZWN0cy5zaXplKCkgKiAocGFn
ZVNpemVJblBpeGVscy5oZWlnaHQoKSArIDEpIC0gMTsKIAogICAgIC8vIEZpbGwgdGhlIHdob2xl
IGJhY2tncm91bmQgYnkgd2hpdGUuCi0gICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvciht
YWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRG
aWxsQ29sb3IoQ29sb3I6OndoaXRlKTsKICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3QoRmxv
YXRSZWN0KDAsIDAsIHBhZ2VXaWR0aCwgdG90YWxIZWlnaHQpKTsKIAogICAgIGdyYXBoaWNzQ29u
dGV4dC5zYXZlKCk7CkBAIC00NDUsOCArNDQ1LDggQEAgdm9pZCBQcmludENvbnRleHQ6OnNwb29s
QWxsUGFnZXNXaXRoQm91bgogICAgICAgICAgICAgaW50IGJvdW5kYXJ5TGluZVkgPSBjdXJyZW50
SGVpZ2h0IC0gMTsKICNlbmRpZgogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsK
LSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihtYWtlU2ltcGxlQ29s
b3IoMCwgMCwgMjU1KSk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9y
KG1ha2VTaW1wbGVDb2xvcigwLCAwLCAyNTUpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6Ymx1ZSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0RmlsbENvbG9yKENvbG9yOjpibHVlKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5kcmF3TGluZShJbnRQb2ludCgwLCBib3VuZGFyeUxpbmVZKSwgSW50UG9pbnQocGFnZVdpZHRo
LCBib3VuZGFyeUxpbmVZKSk7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQucmVzdG9yZSgp
OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNh
Z2VPdmVybGF5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9jb2Nv
YS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTE2MCwxOCArMTYwLDE4IEBAIHN0cnVjdCBIaXN0b3JpY1Jlc291cmNlVXNh
Z2VEYXRhIHsKIEhpc3RvcmljUmVzb3VyY2VVc2FnZURhdGE6Okhpc3RvcmljUmVzb3VyY2VVc2Fn
ZURhdGEoKQogewogICAgIC8vIFZNIHRhZyBjYXRlZ29yaWVzLgotICAgIGNhdGVnb3JpZXNbTWVt
b3J5Q2F0ZWdvcnk6OkpTSklUXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNh
dGVnb3J5OjpKU0pJVCwgbWFrZVNpbXBsZUNvbG9yKDI1NSwgOTYsIDI1NSksICJKUyBKSVQiKTsK
LSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZV0gPSBIaXN0b3JpY01lbW9y
eUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6R2lnYWNhZ2UsIG1ha2VTaW1wbGVDb2xvcigx
MDEsIDc5LCAyNDApLCAiR2lnYWNhZ2UiKTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5
OjpJbWFnZXNdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6Oklt
YWdlcywgbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAwKSwgIkltYWdlcyIpOwotICAgIGNhdGVn
b3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkxheWVyc10gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5m
byhNZW1vcnlDYXRlZ29yeTo6TGF5ZXJzLCBtYWtlU2ltcGxlQ29sb3IoMCwgMjU1LCAyNTUpLCAi
TGF5ZXJzIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6TGliY01hbGxvY10gPSBI
aXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6TGliY01hbGxvYywgbWFr
ZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCksICJsaWJjIG1hbGxvYyIpOwotICAgIGNhdGVnb3JpZXNb
TWVtb3J5Q2F0ZWdvcnk6OmJtYWxsb2NdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVt
b3J5Q2F0ZWdvcnk6OmJtYWxsb2MsIG1ha2VTaW1wbGVDb2xvcigyNTUsIDk2LCA5NiksICJibWFs
bG9jIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6SXNvSGVhcF0gPSBIaXN0b3Jp
Y01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SXNvSGVhcCwgbWFrZVNpbXBsZUNv
bG9yKDEyOCwgMTU5LCA2NCksICJJc29IZWFwIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRl
Z29yeTo6T3RoZXJdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6
Ok90aGVyLCBtYWtlU2ltcGxlQ29sb3IoMTkyLCAyNTUsIDApLCAiT3RoZXIiKTsKKyAgICBjYXRl
Z29yaWVzW01lbW9yeUNhdGVnb3J5OjpKU0pJVF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5m
byhNZW1vcnlDYXRlZ29yeTo6SlNKSVQsIFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCA5NiwgMjU1IH0s
ICJKUyBKSVQiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZV0gPSBI
aXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6R2lnYWNhZ2UsIFNSR0JB
PHVpbnQ4X3Q+IHsgMTAxLCA3OSwgMjQwIH0sICJHaWdhY2FnZSIpOworICAgIGNhdGVnb3JpZXNb
TWVtb3J5Q2F0ZWdvcnk6OkltYWdlc10gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1v
cnlDYXRlZ29yeTo6SW1hZ2VzLCBDb2xvcjo6eWVsbG93LCAiSW1hZ2VzIik7CisgICAgY2F0ZWdv
cmllc1tNZW1vcnlDYXRlZ29yeTo6TGF5ZXJzXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZv
KE1lbW9yeUNhdGVnb3J5OjpMYXllcnMsIENvbG9yOjpjeWFuLCAiTGF5ZXJzIik7CisgICAgY2F0
ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6TGliY01hbGxvY10gPSBIaXN0b3JpY01lbW9yeUNhdGVn
b3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6TGliY01hbGxvYywgQ29sb3I6OmdyZWVuLCAibGliYyBt
YWxsb2MiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpibWFsbG9jXSA9IEhpc3Rv
cmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpibWFsbG9jLCBTUkdCQTx1aW50
OF90PiB7IDI1NSwgOTYsIDk2IH0sICJibWFsbG9jIik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlD
YXRlZ29yeTo6SXNvSGVhcF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRl
Z29yeTo6SXNvSGVhcCwgU1JHQkE8dWludDhfdD4geyAxMjgsIDE1OSwgNjQgfSwgIklzb0hlYXAi
KTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpPdGhlcl0gPSBIaXN0b3JpY01lbW9y
eUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6T3RoZXIsIFNSR0JBPHVpbnQ4X3Q+IHsgMTky
LCAyNTUsIDAgfSwgIk90aGVyIik7CiAKICAgICAvLyBTdWIgY2F0ZWdvcmllcyAoZS5nIGJyZWFr
ZG93biBvZiBibWFsbG9jIHRhZy4pCi0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6R0NI
ZWFwXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ0hlYXAs
IG1ha2VTaW1wbGVDb2xvcigxNjAsIDE2MCwgMjU1KSwgIkdDIGhlYXAiLCB0cnVlKTsKLSAgICBj
YXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHQ093bmVkXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdv
cnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ093bmVkLCBtYWtlU2ltcGxlQ29sb3IoMjU1LCAxOTIs
IDk2KSwgIkdDIG93bmVkIiwgdHJ1ZSk7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6
R0NIZWFwXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ0hl
YXAsIFNSR0JBPHVpbnQ4X3Q+IHsgMTYwLCAxNjAsIDI1NSB9LCAiR0MgaGVhcCIsIHRydWUpOwor
ICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkdDT3duZWRdID0gSGlzdG9yaWNNZW1vcnlD
YXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OkdDT3duZWQsIFNSR0JBPHVpbnQ4X3Q+IHsgMjU1
LCAxOTIsIDk2IH0sICJHQyBvd25lZCIsIHRydWUpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIC8v
IEVuc3VyZSB0aGlzIGFsaWducyB3aXRoIFJlc291cmNlVXNhZ2VEYXRhJ3MgY2F0ZWdvcnkgb3Jk
ZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5
TGludXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3Vy
Y2VVc2FnZU92ZXJsYXlMaW51eC5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg4LDggKzg4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50Q29udGVudHMoY29u
c3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBjbGlwLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAg
ICAgICAgY29udGV4dC5maWxsUmVjdChjbGlwLCBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMjA0
KSk7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1ha2VTaW1wbGVDb2xvcigyMzAsIDIz
MCwgMjMwKSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoY2xpcCwgQ29sb3I6OmJsYWNrLmNv
bG9yV2l0aEFscGhhKDIwNCkpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihTUkdCQTx1
aW50OF90PiB7IDIzMCwgMjMwLCAyMzAgfSk7CiAKICAgICAgICAgRmxvYXRQb2ludCBwb3NpdGlv
biA9IHsgMTAsIDIwIH07CiAgICAgICAgIFN0cmluZyBzdHJpbmcgPSAgIkNQVTogIiArIGNwdVVz
YWdlU3RyaW5nKGdEYXRhLmNwdSk7CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBSZXNvdXJjZVVz
YWdlT3ZlcmxheTo6cGxhdGZvcm1Jbml0aQogICAgIG1fcGFpbnRMYXllciA9IEdyYXBoaWNzTGF5
ZXI6OmNyZWF0ZShvdmVybGF5KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5ncmFwaGljc0xh
eWVyRmFjdG9yeSgpLCAqbV9vdmVybGF5UGFpbnRlcik7CiAgICAgbV9wYWludExheWVyLT5zZXRB
bmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CiAgICAgbV9wYWludExheWVyLT5zZXRTaXplKHsg
bm9ybWFsV2lkdGgsIG5vcm1hbEhlaWdodCB9KTsKLSAgICBtX3BhaW50TGF5ZXItPnNldEJhY2tn
cm91bmRDb2xvcihtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMjA0KSk7CisgICAgbV9wYWludExh
eWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhKDIwNCkp
OwogICAgIG1fcGFpbnRMYXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOwogICAgIG92ZXJsYXko
KS5sYXllcigpLmFkZENoaWxkKCptX3BhaW50TGF5ZXIpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEu
Y3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hZHdhaXRh
L1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEzICs0Mywx
MyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgb3ZlcmxheVRodW1iU2l6ZSA9CiBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWluaW11bVRodW1iU2l6ZSA9IDQwOwogc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHRodW1iU2l6ZSA9IDY7CiBzdGF0aWMgY29uc3QgZG91YmxlIHNjcm9sbGJhck9wYWNpdHkgPSAw
Ljg7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gc2Nyb2xsYmFyQmFja2dyb3VuZENvbG9yID0gbWFr
ZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcm9s
bGJhckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyMCwgMjIzLCAyMjcpOwotc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIG92ZXJsYXlUaHVtYkJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDI1NSwgMjU1LCAyNTUsIDEwMCk7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gb3ZlcmxheVRodW1i
Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoNDYsIDUyLCA1NCwgMTAwKTsKLXN0YXRpYyBjb25zdGV4
cHIgYXV0byB0aHVtYkhvdmVyZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig4NiwgOTEsIDkyKTsK
LXN0YXRpYyBjb25zdGV4cHIgYXV0byB0aHVtYlByZXNzZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigyNywgMTA2LCAyMDMpOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRodW1iQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMTI2LCAxMjksIDEzMCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2Nyb2xs
YmFyQmFja2dyb3VuZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNTIsIDI1MiwgMjUyIH07Citz
dGF0aWMgY29uc3RleHByIGF1dG8gc2Nyb2xsYmFyQm9yZGVyQ29sb3IgPSBTUkdCQTx1aW50OF90
PiB7IDIyMCwgMjIzLCAyMjcgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBvdmVybGF5VGh1bWJC
b3JkZXJDb2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhBbHBoYSgxMDApOworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG92ZXJsYXlUaHVtYkNvbG9yID0gU1JHQkE8dWludDhfdD4geyA0NiwgNTIs
IDU0LCAxMDAgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB0aHVtYkhvdmVyZWRDb2xvciA9IFNS
R0JBPHVpbnQ4X3Q+IHsgODYsIDkxLCA5MiB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRodW1i
UHJlc3NlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNywgMTA2LCAyMDMgfTsKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byB0aHVtYkNvbG9yID0gU1JHQkE8dWludDhfdD4geyAxMjYsIDEyOSwgMTMw
IH07CiAKIGJvb2wgU2Nyb2xsYmFyVGhlbWVBZHdhaXRhOjp1c2VzT3ZlcmxheVNjcm9sbGJhcnMo
KSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3YWl0YS9UaGVtZUFk
d2FpdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Fkd2FpdGEv
VGhlbWVBZHdhaXRhLmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYWR3YWl0YS9UaGVtZUFkd2FpdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwyOCAr
MzYsMjggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGZv
Y3VzTGluZVdpZHRoID0gMTsKLXN0YXRpYyBjb25zdCBDb2xvciBmb2N1c1JpbmdDb2xvciA9IG1h
a2VTaW1wbGVDb2xvcig0NiwgNTIsIDU0LCAxNTApOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZv
Y3VzUmluZ0NvbG9yID0gU1JHQkE8dWludDhfdD4geyA0NiwgNTIsIDU0LCAxNTAgfTsKIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBhcnJvd1NpemUgPSAxNjsKLXN0YXRpYyBjb25zdCBDb2xvciBhcnJv
d0NvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDQ2LCA1MiwgNTQpOworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGFycm93Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDQ2LCA1MiwgNTQgfTsKIHN0YXRpYyBj
b25zdCBpbnQgYnV0dG9uRm9jdXNPZmZzZXQgPSAtMzsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBi
dXR0b25QYWRkaW5nID0gNTsKIHN0YXRpYyBjb25zdCBpbnQgYnV0dG9uQm9yZGVyU2l6ZSA9IDE7
IC8vIEtlZXAgaW4gc3luYyB3aXRoIG1lbnVMaXN0QnV0dG9uQm9yZGVyU2l6ZSBpbiBSZW5kZXJU
aGVtZUFkd2FpdGEuCi1zdGF0aWMgY29uc3QgQ29sb3IgYnV0dG9uQm9yZGVyQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgYnV0dG9uQmFj
a2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0NCwgMjQyLCAyNDEpOwotc3RhdGljIGNv
bnN0IENvbG9yIGJ1dHRvbkJhY2tncm91bmRQcmVzc2VkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
MjE0LCAyMDksIDIwNSk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgYnV0dG9uQmFja2dyb3VuZEhvdmVy
ZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDgsIDI0OCwgMjQ3KTsKLXN0YXRpYyBjb25zdCBD
b2xvciBidXR0b25CYWNrZ3JvdW5kRGlzYWJsZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDYs
IDI0NiwgMjQ0KTsKLXN0YXRpYyBjb25zdCBDb2xvciB0b2dnbGVCYWNrZ3JvdW5kQ29sb3IgPSBt
YWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSk7Ci1zdGF0aWMgY29uc3QgQ29sb3IgdG9nZ2xl
QmFja2dyb3VuZEhvdmVyZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDIsIDI0MiwgMjQyKTsK
LXN0YXRpYyBjb25zdCBDb2xvciB0b2dnbGVCYWNrZ3JvdW5kRGlzYWJsZWRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigyNTIsIDI1MiwgMjUyKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBidXR0b25C
b3JkZXJDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjA1LCAxOTksIDE5NCB9Oworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGJ1dHRvbkJhY2tncm91bmRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjQ0
LCAyNDIsIDI0MSB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJ1dHRvbkJhY2tncm91bmRQcmVz
c2VkQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDIxNCwgMjA5LCAyMDUgfTsKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBidXR0b25CYWNrZ3JvdW5kSG92ZXJlZENvbG9yID0gU1JHQkE8dWludDhfdD4g
eyAyNDgsIDI0OCwgMjQ3IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gYnV0dG9uQmFja2dyb3Vu
ZERpc2FibGVkQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDI0NiwgMjQ2LCAyNDQgfTsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byB0b2dnbGVCYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6d2hpdGU7Citz
dGF0aWMgY29uc3RleHByIGF1dG8gdG9nZ2xlQmFja2dyb3VuZEhvdmVyZWRDb2xvciA9IFNSR0JB
PHVpbnQ4X3Q+IHsgMjQyLCAyNDIsIDI0MiB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRvZ2ds
ZUJhY2tncm91bmREaXNhYmxlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNTIsIDI1MiwgMjUy
IH07CiBzdGF0aWMgY29uc3QgZG91YmxlIHRvZ2dsZVNpemUgPSAxNC47CiBzdGF0aWMgY29uc3Qg
aW50IHRvZ2dsZUZvY3VzT2Zmc2V0ID0gMjsKLXN0YXRpYyBjb25zdCBDb2xvciB0b2dnbGVDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcig0NiwgNTIsIDU0KTsKLXN0YXRpYyBjb25zdCBDb2xvciB0b2dn
bGVEaXNhYmxlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDE2MCwgMTYwLCAxNjApOwotc3RhdGlj
IGNvbnN0IENvbG9yIHNwaW5CdXR0b25Cb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMjAs
IDIyMywgMjI3KTsKLXN0YXRpYyBjb25zdCBDb2xvciBzcGluQnV0dG9uQmFja2dyb3VuZENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOwotc3RhdGljIGNvbnN0IENvbG9yIHNw
aW5CdXR0b25CYWNrZ3JvdW5kSG92ZXJlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDQ2LCA1Miwg
NTQsIDUwKTsKLXN0YXRpYyBjb25zdCBDb2xvciBzcGluQnV0dG9uQmFja2dyb3VuZFByZXNzZWRD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcig0NiwgNTIsIDU0LCA3MCk7CitzdGF0aWMgY29uc3RleHBy
IGF1dG8gdG9nZ2xlQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDQ2LCA1MiwgNTQgfTsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byB0b2dnbGVEaXNhYmxlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAx
NjAsIDE2MCwgMTYwIH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gc3BpbkJ1dHRvbkJvcmRlckNv
bG9yID0gU1JHQkE8dWludDhfdD4geyAyMjAsIDIyMywgMjI3IH07CitzdGF0aWMgY29uc3RleHBy
IGF1dG8gc3BpbkJ1dHRvbkJhY2tncm91bmRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjUyLCAy
NTIsIDI1MiB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNwaW5CdXR0b25CYWNrZ3JvdW5kSG92
ZXJlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyA0NiwgNTIsIDU0LCA1MCB9Oworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIHNwaW5CdXR0b25CYWNrZ3JvdW5kUHJlc3NlZENvbG9yID0gU1JHQkE8dWlu
dDhfdD4geyA0NiwgNTIsIDU0LCA3MCB9OwogCiAjaWYgIVBMQVRGT1JNKEdUSykgfHwgVVNFKEdU
SzQpCiBUaGVtZSYgVGhlbWU6OnNpbmdsZXRvbigpCkBAIC02OSwxNyArNjksMTcgQEAgVGhlbWUm
IFRoZW1lOjpzaW5nbGV0b24oKQogCiBDb2xvciBUaGVtZUFkd2FpdGE6OmFjdGl2ZVNlbGVjdGlv
bkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigy
NTUsIDI1NSwgMjU1KTsKKyAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogfQogCiBDb2xvciBUaGVt
ZUFkd2FpdGE6OmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1ha2VTaW1wbGVDb2xvcig1MiwgMTMyLCAyMjgpOworICAgIHJldHVybiBTUkdCQTx1
aW50OF90PiB7IDUyLCAxMzIsIDIyOCB9OwogfQogCiBDb2xvciBUaGVtZUFkd2FpdGE6OmluYWN0
aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFrZVNp
bXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOworICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDI1
MiwgMjUyLCAyNTIgfTsKIH0KIAogQ29sb3IgVGhlbWVBZHdhaXRhOjppbmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3RleHByIGF1dG8gbGlnaHRl
bmVkQmxhY2sgPSBtYWtlU2ltcGxlQ29sb3IoODQsIDg0LCA4NCk7Ci1zdGF0aWMgY29uc3RleHBy
IGF1dG8gZGFya2VuZWRXaGl0ZSA9IG1ha2VTaW1wbGVDb2xvcigxNzEsIDE3MSwgMTcxKTsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBsaWdodGVuZWRCbGFjayA9IENvbG9yQnVpbGRlcjxTUkdCQTx1
aW50OF90Pj4geyA4NCwgODQsIDg0IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gZGFya2VuZWRX
aGl0ZSA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAxNzEsIDE3MSwgMTcxIH07CiAK
IENvbG9yOjpDb2xvcihjb25zdCBDb2xvciYgb3RoZXIpCiAgICAgOiBtX2NvbG9yRGF0YShvdGhl
ci5tX2NvbG9yRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuaAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOSArMjUsMTAgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJDb2xvckJ1aWxkZXIuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgi
CisjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJFeHRlbmRlZENvbG9yLmgi
Ci0jaW5jbHVkZSAiU2ltcGxlQ29sb3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgpAQCAt
MTQ1LDE0ICsxNDYsMjAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIEQy
RDFfVkVDVE9SXzRGKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0
byBibGFjayA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwKTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8gd2hpdGUgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSk7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIGRhcmtHcmF5ID0gbWFrZVNpbXBsZUNvbG9yKDEyOCwgMTI4LCAxMjgp
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBncmF5ID0gbWFrZVNpbXBsZUNvbG9yKDE2MCwg
MTYwLCAxNjApOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBsaWdodEdyYXkgPSBtYWtlU2lt
cGxlQ29sb3IoMTkyLCAxOTIsIDE5Mik7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRyYW5z
cGFyZW50ID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDApOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBjeWFuID0gbWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMjU1KTsKLSAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8geWVsbG93ID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAwKTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gYmxhY2sgPSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhf
dD4+IHsgMCwgMCwgMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byB3aGl0ZSA9IENvbG9y
QnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAyNTUsIDI1NSwgMjU1IH07CisgICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGRhcmtHcmF5ID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDEy
OCwgMTI4LCAxMjggfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZ3JheSA9IENvbG9yQnVp
bGRlcjxTUkdCQTx1aW50OF90Pj4geyAxNjAsIDE2MCwgMTYwIH07CisgICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGxpZ2h0R3JheSA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAxOTIs
IDE5MiwgMTkyIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRyYW5zcGFyZW50ID0gQ29s
b3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDAsIDAsIDAsIDAgfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gY3lhbiA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAwLCAyNTUs
IDI1NSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byB5ZWxsb3cgPSBDb2xvckJ1aWxkZXI8
U1JHQkE8dWludDhfdD4+IHsgMjU1LCAyNTUsIDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1
dG8gcmVkID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDI1NSwgMCwgMCB9OworICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byBtYWdlbnRhID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4
X3Q+PiB7IDI1NSwgMCwgMjU1IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJsdWUgPSBD
b2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgMCwgMCwgMjU1IH07CisgICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGdyZWVuID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDAsIDI1
NSwgMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBkYXJrR3JlZW4gPSBDb2xvckJ1aWxk
ZXI8U1JHQkE8dWludDhfdD4+IHsgMCwgMTI4LCAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIG9yYW5nZSA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAyNTUsIDEyOCwgMCB9
OwogCiAgICAgYm9vbCBpc0V4dGVuZGVkKCkgY29uc3QgeyByZXR1cm4gIShtX2NvbG9yRGF0YS5p
bmxpbmVDb2xvckFuZEZsYWdzICYgaW52YWxpZElubGluZUNvbG9yKTsgfQogICAgIGJvb2wgaXNJ
bmxpbmUoKSBjb25zdCB7IHJldHVybiAhaXNFeHRlbmRlZCgpOyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJsZW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckJsZW5kaW5nLmNwcAkocmV2aXNp
b24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCbGVu
ZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgQ29sb3IgYmxlbmRTb3Vy
Y2VPdmVyKGNvbnN0IENvbG9yJiBiYWNrZAogICAgIGludCBnID0gKGJhY2tkcm9wRyAqIGJhY2tk
cm9wQSAqICgweEZGIC0gc291cmNlQSkgKyAweEZGICogc291cmNlQSAqIHNvdXJjZUcpIC8gZDsK
ICAgICBpbnQgYiA9IChiYWNrZHJvcEIgKiBiYWNrZHJvcEEgKiAoMHhGRiAtIHNvdXJjZUEpICsg
MHhGRiAqIHNvdXJjZUEgKiBzb3VyY2VCKSAvIGQ7CiAKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNv
bG9yKHIsIGcsIGIsIGEpOworICAgIHJldHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+
KHIsIGcsIGIsIGEpOwogfQogCiBDb2xvciBibGVuZFdpdGhXaGl0ZShjb25zdCBDb2xvciYgY29s
b3IpCkBAIC03OCw3ICs3OCw3IEBAIENvbG9yIGJsZW5kV2l0aFdoaXRlKGNvbnN0IENvbG9yJiBj
b2xvcikKICAgICAgICAgaW50IGcgPSBibGVuZENvbXBvbmVudChleGlzdGluZ0csIGFscGhhKTsK
ICAgICAgICAgaW50IGIgPSBibGVuZENvbXBvbmVudChleGlzdGluZ0IsIGFscGhhKTsKIAotICAg
ICAgICByZXN1bHQgPSBtYWtlU2ltcGxlQ29sb3IociwgZywgYiwgYWxwaGEpOworICAgICAgICBy
ZXN1bHQgPSBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHIsIGcsIGIsIGFscGhhKTsKIAog
ICAgICAgICBpZiAociA+PSAwICYmIGcgPj0gMCAmJiBiID49IDApCiAgICAgICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQnVpbGRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQnVp
bGRlci5oCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogLy8gSGVscGVyIHRvIGFsbG93IGNvbnZlbmllbnQgc3ludGF4IGZv
ciB3b3JraW5nIHdpdGggY29sb3IgdHlwZXMuCiAvLyBlLmcuIGF1dG8geWVsbG93V2l0aDUwUGVy
Y2VudEFscGhhID0gQ29sb3I6OnllbGxvdy5jb2xvcldpdGhBbHBoYSgxMjgpOwogdGVtcGxhdGU8
dHlwZW5hbWUgQ29sb3JUeXBlPiBzdHJ1Y3QgQ29sb3JCdWlsZGVyIDogcHVibGljIENvbG9yVHlw
ZSB7Ci0gICAgY29uc3RleHByIENvbG9yQnVpbGRlcihjb25zdCBDb2xvclR5cGUmIGNvbG9yKQot
ICAgICAgICA6IENvbG9yVHlwZSB7IGNvbG9yIH0KLSAgICB7Ci0gICAgfQorICAgIHVzaW5nIENv
bG9yVHlwZTo6Q29sb3JUeXBlOwogCiAgICAgY29uc3RleHByIENvbG9yVHlwZSBjb2xvcigpIGNv
bnN0CiAgICAgewpAQCAtNDIsOSArMzksOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+
IHN0cnVjdCBDb2xvCiAKICAgICBjb25zdGV4cHIgQ29sb3JCdWlsZGVyIGNvbG9yV2l0aEFscGhh
KHVpbnQ4X3Qgb3ZlcnJpZGVBbHBoYSkgY29uc3QKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19zYW1lX3Y8ZGVjbHR5cGUoQ29sb3JUeXBlKCkuYWxwaGEpLCB1aW50OF90Piwg
Ik9ubHkgdWludDhfdCBiYXNlZCBjb2xvciB0eXBlcyBhcmUgc3VwcG9ydGVkLiIpOworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PHR5cGVuYW1lIENvbG9yVHlwZTo6Q29tcG9u
ZW50VHlwZSwgdWludDhfdD4sICJPbmx5IHVpbnQ4X3QgYmFzZWQgY29sb3IgdHlwZXMgYXJlIHN1
cHBvcnRlZC4iKTsKIAotICAgICAgICBDb2xvckJ1aWxkZXIgY29weSA9ICp0aGlzOworICAgICAg
ICBhdXRvIGNvcHkgPSAqdGhpczsKICAgICAgICAgY29weS5hbHBoYSA9IG92ZXJyaWRlQWxwaGE7
CiAgICAgICAgIHJldHVybiBjb3B5OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsNiArNDQsMjUgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29tcG9uZW50VHJhaXRzPGZsb2F0
PgogCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTUkdCQSB7CisgICAgY29uc3RleHBy
IFNSR0JBKFQgcmVkLCBUIGdyZWVuLCBUIGJsdWUsIFQgYWxwaGEpCisgICAgICAgIDogcmVkIHsg
cmVkIH0KKyAgICAgICAgLCBncmVlbiB7IGdyZWVuIH0KKyAgICAgICAgLCBibHVlIHsgYmx1ZSB9
CisgICAgICAgICwgYWxwaGEgeyBhbHBoYSB9CisgICAgeworICAgIH0KKworICAgIGNvbnN0ZXhw
ciBTUkdCQShUIHJlZCwgVCBncmVlbiwgVCBibHVlKQorICAgICAgICA6IFNSR0JBIHsgcmVkLCBn
cmVlbiwgYmx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+OjptYXhWYWx1ZSB9CisgICAgeworICAgIH0K
KworICAgIGNvbnN0ZXhwciBTUkdCQSgpCisgICAgICAgIDogU1JHQkEgeyBDb21wb25lbnRUcmFp
dHM8VD46Om1pblZhbHVlLCBDb21wb25lbnRUcmFpdHM8VD46Om1pblZhbHVlLCBDb21wb25lbnRU
cmFpdHM8VD46Om1pblZhbHVlLCBDb21wb25lbnRUcmFpdHM8VD46Om1pblZhbHVlIH0KKyAgICB7
CisgICAgfQorCisKICAgICBUIHJlZDsKICAgICBUIGdyZWVuOwogICAgIFQgYmx1ZTsKQEAgLTUz
LDggKzcyLDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNSR0JBIHsKICAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0I7CiB9OwogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQShULCBULCBULCBUKSAtPiBTUkdCQTxUPjsKLQogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBhc0NvbG9yQ29t
cG9uZW50cyhjb25zdCBTUkdCQTxUPiYgYykKIHsKICAgICByZXR1cm4geyBjLnJlZCwgYy5ncmVl
biwgYy5ibHVlLCBjLmFscGhhIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclV0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDcgKzU5LDkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252ZXJ0Q29tcG9u
ZW50RgogdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gQ29s
b3JUeXBlPHVpbnQ4X3Q+IGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVzKGNvbnN0IENvbG9yVHlwZTxm
bG9hdD4mKTsKIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+
IGNvbnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0cyhjb25z
dCBDb2xvclR5cGU8dWludDhfdD4mKTsKIAordGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5
cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZTx1aW50OF90PiBjbGFtcFRvQ29t
cG9uZW50Qnl0ZXMoaW50IHIsIGludCBnLCBpbnQgYik7CiB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBl
bmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPHVpbnQ4X3Q+IGNs
YW1wVG9Db21wb25lbnRCeXRlcyhpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7Cit0ZW1wbGF0
ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JU
eXBlPGZsb2F0PiBjbGFtcFRvQ29tcG9uZW50RmxvYXRzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0
IGIpOwogdGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gY29u
c3RleHByIENvbG9yVHlwZTxmbG9hdD4gY2xhbXBUb0NvbXBvbmVudEZsb2F0cyhmbG9hdCByLCBm
bG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBl
LCB0eXBlbmFtZSBGdW5jdG9yPiBDb2xvclR5cGUgY29sb3JCeU1vZGlmaW5nRWFjaE5vbkFscGhh
Q29tcG9uZW50KGNvbnN0IENvbG9yVHlwZSYsIEZ1bmN0b3ImJik7CkBAIC0xMzQsMTEgKzEzNiwy
MSBAQCB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sCiAgICAgcmV0dXJu
IHsgY29udmVydFRvQ29tcG9uZW50RmxvYXQoY29tcG9uZW50c1swXSksIGNvbnZlcnRUb0NvbXBv
bmVudEZsb2F0KGNvbXBvbmVudHNbMV0pLCBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChjb21wb25l
bnRzWzJdKSwgY29udmVydFRvQ29tcG9uZW50RmxvYXQoY29tcG9uZW50c1szXSkgfTsKIH0KIAor
dGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHBy
IENvbG9yVHlwZTx1aW50OF90PiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXMoaW50IHIsIGludCBnLCBp
bnQgYikKK3sKKyAgICByZXR1cm4geyBjbGFtcFRvQ29tcG9uZW50Qnl0ZShyKSwgY2xhbXBUb0Nv
bXBvbmVudEJ5dGUoZyksIGNsYW1wVG9Db21wb25lbnRCeXRlKGIpIH07Cit9CisKIHRlbXBsYXRl
PHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5
cGU8dWludDhfdD4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzKGludCByLCBpbnQgZywgaW50IGIsIGlu
dCBhKQogewogICAgIHJldHVybiB7IGNsYW1wVG9Db21wb25lbnRCeXRlKHIpLCBjbGFtcFRvQ29t
cG9uZW50Qnl0ZShnKSwgY2xhbXBUb0NvbXBvbmVudEJ5dGUoYiksIGNsYW1wVG9Db21wb25lbnRC
eXRlKGEpIH07CiB9CiAKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xv
clR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNsYW1wVG9Db21wb25lbnRGbG9hdHMo
ZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYikKK3sKKyAgICByZXR1cm4geyBjbGFtcFRvQ29tcG9u
ZW50RmxvYXQociksIGNsYW1wVG9Db21wb25lbnRGbG9hdChnKSwgY2xhbXBUb0NvbXBvbmVudEZs
b2F0KGIpIH07Cit9CisKIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xv
clR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNsYW1wVG9Db21wb25lbnRGbG9hdHMo
ZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsKICAgICByZXR1cm4geyBjbGFt
cFRvQ29tcG9uZW50RmxvYXQociksIGNsYW1wVG9Db21wb25lbnRGbG9hdChnKSwgY2xhbXBUb0Nv
bXBvbmVudEZsb2F0KGIpLCBjbGFtcFRvQ29tcG9uZW50RmxvYXQoYSkgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCShy
ZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk4LDM0ICs1OTgsMzQgQEAgdm9pZCBH
cmFwaGljc0xheWVyOjpnZXREZWJ1Z0JvcmRlckluZm8oQwogICAgIHdpZHRoID0gMjsKIAogICAg
IGlmIChuZWVkc0JhY2tkcm9wKCkpIHsKLSAgICAgICAgY29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
MjU1LCAwLCAyNTUsIDEyOCk7IC8vIGhhcyBiYWNrZHJvcDogbWFnZW50YQorICAgICAgICBjb2xv
ciA9IENvbG9yOjptYWdlbnRhLmNvbG9yV2l0aEFscGhhKDEyOCk7IC8vIGhhcyBiYWNrZHJvcDog
bWFnZW50YQogICAgICAgICB3aWR0aCA9IDEyOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAogICAgIGlmIChkcmF3c0NvbnRlbnQoKSkgewogICAgICAgICBpZiAodGlsZWRCYWNraW5nKCkp
IHsKLSAgICAgICAgICAgIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMTI4LCAwLCAxMjgp
OyAvLyB0aWxlZCBsYXllcjogb3JhbmdlCisgICAgICAgICAgICBjb2xvciA9IENvbG9yOjpvcmFu
Z2UuY29sb3JXaXRoQWxwaGEoMTI4KTsgLy8gdGlsZWQgbGF5ZXI6IG9yYW5nZQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
MCwgMTI4LCAzMiwgMTI4KTsgLy8gbm9ybWFsIGxheWVyOiBncmVlbgorICAgICAgICBjb2xvciA9
IFNSR0JBPHVpbnQ4X3Q+IHsgMCwgMTI4LCAzMiwgMTI4IH07IC8vIG5vcm1hbCBsYXllcjogZ3Jl
ZW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh1c2VzQ29udGVudHNMYXllcigp
KSB7Ci0gICAgICAgIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDY0LCAxMjgsIDE1MCk7IC8v
IG5vbi1wYWludGluZyBsYXllciB3aXRoIGNvbnRlbnRzOiBibHVlCisgICAgICAgIGNvbG9yID0g
U1JHQkE8dWludDhfdD4geyAwLCA2NCwgMTI4LCAxNTAgfTsgLy8gbm9uLXBhaW50aW5nIGxheWVy
IHdpdGggY29udGVudHM6IGJsdWUKICAgICAgICAgd2lkdGggPSA4OwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAogICAgIGlmIChtYXNrc1RvQm91bmRzKCkpIHsKLSAgICAgICAgY29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMTI4LCAyNTUsIDI1NSwgNDgpOyAvLyBtYXNraW5nIGxheWVyOiBw
YWxlIGJsdWUKKyAgICAgICAgY29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDEyOCwgMjU1LCAyNTUs
IDQ4IH07IC8vIG1hc2tpbmcgbGF5ZXI6IHBhbGUgYmx1ZQogICAgICAgICB3aWR0aCA9IDE2Owog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1
LCAyNTUsIDAsIDE5Mik7IC8vIGNvbnRhaW5lcjogeWVsbG93CisgICAgY29sb3IgPSBDb2xvcjo6
eWVsbG93LmNvbG9yV2l0aEFscGhhKDE5Mik7IC8vIGNvbnRhaW5lcjogeWVsbG93CiB9CiAKIHZv
aWQgR3JhcGhpY3NMYXllcjo6dXBkYXRlRGVidWdJbmRpY2F0b3JzKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaAkocmV2aXNpb24gMjY0
NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaAko
bm9uZXhpc3RlbnQpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNvbG9y
QnVpbGRlci5oIgotI2luY2x1ZGUgIkNvbG9yVHlwZXMuaCIKLSNpbmNsdWRlICJDb2xvclV0aWxp
dGllcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0ZXhwciBDb2xvckJ1aWxkZXI8
U1JHQkE8dWludDhfdD4+IG1ha2VTaW1wbGVDb2xvcihpbnQgciwgaW50IGcsIGludCBiKQotewot
ICAgIHJldHVybiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHIsIGcsIGIsIDB4RkYpOwot
fQotCi1jb25zdGV4cHIgQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiBtYWtlU2ltcGxlQ29s
b3IoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCi17Ci0gICAgcmV0dXJuIGNsYW1wVG9Db21w
b25lbnRCeXRlczxTUkdCQT4ociwgZywgYiwgYSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU5MCw4ICsxNTkwLDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNv
bW1pdENoYQogICAgIC8vIFVzZSBoYXZpbmcgYSB0cmFuc2Zvcm0gYXMgYSBrZXkgdG8gbWFraW5n
IHRoZSB0aWxlIHdhc2ggbGF5ZXIuIElmIGV2ZXJ5IGxheWVyIGdldHMgYSB3YXNoLAogICAgIC8v
IHRoZXkgc3RhcnQgdG8gb2JzY3VyZSB1c2VmdWwgaW5mb3JtYXRpb24uCiAgICAgaWYgKCghbV90
cmFuc2Zvcm0uaXNJZGVudGl0eSgpIHx8IHRpbGVkQmFja2luZygpKSAmJiAhbV92aXNpYmxlVGls
ZVdhc2hMYXllcikgewotICAgICAgICBjb25zdGV4cHIgYXV0byB3YXNoRmlsbENvbG9yID0gbWFr
ZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCwgNTApOwotICAgICAgICBjb25zdGV4cHIgYXV0byB3YXNo
Qm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAwLCAxMDApOworICAgICAgICBj
b25zdGV4cHIgYXV0byB3YXNoRmlsbENvbG9yID0gQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYSg1
MCk7CisgICAgICAgIGNvbnN0ZXhwciBhdXRvIHdhc2hCb3JkZXJDb2xvciA9IENvbG9yOjpyZWQu
Y29sb3JXaXRoQWxwaGEoMTAwKTsKICAgICAgICAgCiAgICAgICAgIG1fdmlzaWJsZVRpbGVXYXNo
TGF5ZXIgPSBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVM
YXllciwgdGhpcyk7CiAgICAgICAgIFN0cmluZyBuYW1lID0gbWFrZVN0cmluZygiVmlzaWJsZSBU
aWxlIFdhc2ggTGF5ZXIgMHgiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fdmlz
aWJsZVRpbGVXYXNoTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSksIExvd2VyY2FzZSkpOwpAQCAtMjU0
OCwxMyArMjU0OCwxMyBAQCBzdGF0aWMgdm9pZCBzZXRMYXllckRlYnVnQm9yZGVyKFBsYXRmb3Jt
CiBzdGF0aWMgY29uc3QgZmxvYXQgY29udGVudHNMYXllckJvcmRlcldpZHRoID0gNDsKIHN0YXRp
YyBDb2xvciBjb250ZW50c0xheWVyRGVidWdCb3JkZXJDb2xvcihib29sIHNob3dpbmdCb3JkZXJz
KQogewotICAgIHJldHVybiBzaG93aW5nQm9yZGVycyA/IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAx
MjgsIDE4MCkgOiBDb2xvciB7IH07CisgICAgcmV0dXJuIHNob3dpbmdCb3JkZXJzID8gU1JHQkE8
dWludDhfdD4geyAwLCAwLCAxMjgsIDE4MCB9IDogQ29sb3IgeyB9OwogfQogCiBzdGF0aWMgY29u
c3QgZmxvYXQgY2xvbmVMYXllckJvcmRlcldpZHRoID0gMjsKIHN0YXRpYyBDb2xvciBjbG9uZUxh
eWVyRGVidWdCb3JkZXJDb2xvcihib29sIHNob3dpbmdCb3JkZXJzKQogewotICAgIHJldHVybiBz
aG93aW5nQm9yZGVycyA/IG1ha2VTaW1wbGVDb2xvcigyNTUsIDEyMiwgMjUxKSA6IENvbG9yIHsg
fTsKKyAgICByZXR1cm4gc2hvd2luZ0JvcmRlcnMgPyBTUkdCQTx1aW50OF90PiB7IDI1NSwgMTIy
LCAyNTEgfSA6IENvbG9yIHsgfTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZURl
YnVnSW5kaWNhdG9ycygpCkBAIC0zNzkxLDcgKzM3OTEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0RGVidWdCYWNrZ3JvdW5kCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Z2V0RGVidWdCb3Jk
ZXJJbmZvKENvbG9yJiBjb2xvciwgZmxvYXQmIHdpZHRoKSBjb25zdAogewogICAgIGlmIChpc1Bh
Z2VUaWxlZEJhY2tpbmdMYXllcigpKSB7Ci0gICAgICAgIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDAsIDAsIDEyOCwgMTI4KTsgLy8gdGlsZSBjYWNoZSBsYXllcjogZGFyayBibHVlCisgICAgICAg
IGNvbG9yID0gU1JHQkE8dWludDhfdD4geyAwLCAwLCAxMjgsIDEyOCB9OyAvLyB0aWxlIGNhY2hl
IGxheWVyOiBkYXJrIGJsdWUKICNpZiBPUyhXSU5ET1dTKQogICAgICAgICB3aWR0aCA9IDEuMDsK
ICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9y
bUNBTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg0LDExICs4NCwxMSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFp
bnRJbmRpY2F0CiAgICAgY29uc3QgZmxvYXQgdmVydGljYWxNYXJnaW4gPSAyLjU7CiAgICAgY29u
c3QgZmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDU7CiAgICAgY29uc3QgdW5zaWduZWQgZm9udFNp
emUgPSAyMjsKLSAgICBjb25zdGV4cHIgYXV0byBiYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoMTI4LCA2NCwgMjU1KTsKLSAgICBjb25zdGV4cHIgYXV0byBhY2NlbGVyYXRlZENvbnRl
eHRMYWJlbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCk7Ci0gICAgY29uc3RleHBy
IGF1dG8gdW5hY2NlbGVyYXRlZENvbnRleHRMYWJlbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1
NSwgMjU1LCAyNTUpOwotICAgIGNvbnN0ZXhwciBhdXRvIGxpbmVhckdseXBoTWFza091dGxpbmVD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCAxOTIpOwotICAgIGNvbnN0ZXhwciBhdXRv
IGRpc3BsYXlMaXN0Qm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMTY2KTsK
KyAgICBjb25zdGV4cHIgYXV0byBiYWNrZ3JvdW5kQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDEy
OCwgNjQsIDI1NSB9OworICAgIGNvbnN0ZXhwciBhdXRvIGFjY2VsZXJhdGVkQ29udGV4dExhYmVs
Q29sb3IgPSBDb2xvcjo6cmVkOworICAgIGNvbnN0ZXhwciBhdXRvIHVuYWNjZWxlcmF0ZWRDb250
ZXh0TGFiZWxDb2xvciA9IENvbG9yOjp3aGl0ZTsKKyAgICBjb25zdGV4cHIgYXV0byBsaW5lYXJH
bHlwaE1hc2tPdXRsaW5lQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMTkyKTsK
KyAgICBjb25zdGV4cHIgYXV0byBkaXNwbGF5TGlzdEJvcmRlckNvbG9yID0gQ29sb3I6OmJsYWNr
LmNvbG9yV2l0aEFscGhhKDE2Nik7CiAKICAgICBUZXh0UnVuIHRleHRSdW4oU3RyaW5nOjpudW1i
ZXIocmVwYWludENvdW50KSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcAkocmV2aXNpb24gMjY0NDcx
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTYgKzUxLDE2IEBAIFRpbGVDb3ZlcmFnZU1hcDo6
VGlsZUNvdmVyYWdlTWFwKGNvbnN0IFQKICAgICBtX3Zpc2libGVWaWV3cG9ydEluZGljYXRvckxh
eWVyLmdldCgpLnNldE5hbWUoInZpc2libGUgdmlld3BvcnQgaW5kaWNhdG9yIik7CiAgICAgbV92
aXNpYmxlVmlld3BvcnRJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRCb3JkZXJXaWR0aCgyKTsKICAg
ICBtX3Zpc2libGVWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgpLnNldEFuY2hvclBvaW50KEZs
b2F0UG9pbnQzRCgpKTsKLSAgICBtX3Zpc2libGVWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgp
LnNldEJvcmRlckNvbG9yKG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDAsIDIwMCkpOworICAgIG1f
dmlzaWJsZVZpZXdwb3J0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0Qm9yZGVyQ29sb3IoQ29sb3I6
OnJlZC5jb2xvcldpdGhBbHBoYSgyMDApKTsKIAogICAgIG1fbGF5b3V0Vmlld3BvcnRJbmRpY2F0
b3JMYXllci5nZXQoKS5zZXROYW1lKCJsYXlvdXQgdmlld3BvcnQgaW5kaWNhdG9yIik7CiAgICAg
bV9sYXlvdXRWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlcldpZHRoKDIpOwog
ICAgIG1fbGF5b3V0Vmlld3BvcnRJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRBbmNob3JQb2ludChG
bG9hdFBvaW50M0QoKSk7Ci0gICAgbV9sYXlvdXRWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgp
LnNldEJvcmRlckNvbG9yKG1ha2VTaW1wbGVDb2xvcigwLCAxMjgsIDEyOCwgMjAwKSk7CisgICAg
bV9sYXlvdXRWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlckNvbG9yKFNSR0JB
PHVpbnQ4X3Q+IHsgMCwgMTI4LCAxMjgsIDIwMCB9KTsKICAgICAKICAgICBtX2NvdmVyYWdlUmVj
dEluZGljYXRvckxheWVyLmdldCgpLnNldE5hbWUoImNvdmVyYWdlIGluZGljYXRvciIpOwogICAg
IG1fY292ZXJhZ2VSZWN0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0QW5jaG9yUG9pbnQoRmxvYXRQ
b2ludDNEKCkpOwotICAgIG1fY292ZXJhZ2VSZWN0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0QmFj
a2dyb3VuZENvbG9yKG1ha2VTaW1wbGVDb2xvcig2NCwgNjQsIDY0LCA1MCkpOworICAgIG1fY292
ZXJhZ2VSZWN0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0QmFja2dyb3VuZENvbG9yKFNSR0JBPHVp
bnQ4X3Q+IHsgNjQsIDY0LCA2NCwgNTAgfSk7CiAKICAgICBtX2xheWVyLmdldCgpLmFwcGVuZFN1
YmxheWVyKG1fY292ZXJhZ2VSZWN0SW5kaWNhdG9yTGF5ZXIpOwogICAgIG1fbGF5ZXIuZ2V0KCku
YXBwZW5kU3VibGF5ZXIobV92aXNpYmxlVmlld3BvcnRJbmRpY2F0b3JMYXllcik7CkBAIC0xMzYs
MTYgKzEzNiwxNiBAQCB2b2lkIFRpbGVDb3ZlcmFnZU1hcDo6dXBkYXRlKCkKICAgICBDb2xvciB2
aXNpYmxlUmVjdEluZGljYXRvckNvbG9yOwogICAgIHN3aXRjaCAobV9jb250cm9sbGVyLmluZGlj
YXRvck1vZGUoKSkgewogICAgIGNhc2UgU3luY2hyb25vdXNTY3JvbGxpbmdCZWNhdXNlT2ZMYWNr
T2ZTY3JvbGxpbmdDb29yZGluYXRvckluZGljYXRpb246Ci0gICAgICAgIHZpc2libGVSZWN0SW5k
aWNhdG9yQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjAwLCA4MCwgMjU1KTsKKyAgICAgICAgdmlz
aWJsZVJlY3RJbmRpY2F0b3JDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjAwLCA4MCwgMjU1IH07
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3luY2hyb25vdXNTY3JvbGxpbmdCZWNhdXNlT2ZT
dHlsZUluZGljYXRpb246Ci0gICAgICAgIHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMjU1LCAwLCAwKTsKKyAgICAgICAgdmlzaWJsZVJlY3RJbmRpY2F0b3JDb2xv
ciA9IENvbG9yOjpyZWQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3luY2hyb25vdXNTY3Jv
bGxpbmdCZWNhdXNlT2ZFdmVudEhhbmRsZXJzSW5kaWNhdGlvbjoKLSAgICAgICAgdmlzaWJsZVJl
Y3RJbmRpY2F0b3JDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMCk7CisgICAgICAg
IHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3IgPSBDb2xvcjo6eWVsbG93OwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFzeW5jU2Nyb2xsaW5nSW5kaWNhdGlvbjoKLSAgICAgICAgdmlzaWJsZVJl
Y3RJbmRpY2F0b3JDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAyMDAsIDApOworICAgICAgICB2
aXNpYmxlUmVjdEluZGljYXRvckNvbG9yID0gU1JHQkE8dWludDhfdD4geyAwLCAyMDAsIDAgfTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5
ZXJXaW5JbnRlcm5hbC5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbklu
dGVybmFsOjpkcmF3UmVwCiAgICAgaWYgKGJvcmRlcldpZHRoID4gMCkKICAgICAgICAgYmFja2dy
b3VuZENvbG9yID0gQ0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IoY2FMYXllcik7CiAgICAgZWxzZQot
ICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKG1ha2VTaW1wbGVDb2xvcigy
NTUsIDAsIDApKTsKKyAgICAgICAgYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xv
cjo6cmVkKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoY29udGV4dCk7
CiAgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihncmFwaGljc0NvbnRl
eHQsIG93bmVyKCksIGRyYXdDb3VudCwgYmFja2dyb3VuZENvbG9yKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3Bw
CShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBDb2xv
ciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjCiAgICAgaWYgKCFwaXhlbFszXSkK
ICAgICAgICAgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVudDsKIAotICAgIHJldHVybiBtYWtlU2lt
cGxlQ29sb3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhl
bFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOworICAgIHJldHVybiBj
bGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBp
eGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVs
WzNdKTsKIH0KIAogdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRD
b2NvYS5tbQkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIw
NSwxNSArMjA1LDE1IEBAIHN0YXRpYyBDR0NvbG9yUmVmIGNvbG9yRm9yTWFya2VyTGluZVN0eWwK
ICAgICBzd2l0Y2ggKHN0eWxlKSB7CiAgICAgLy8gUmVkCiAgICAgY2FzZSBEb2N1bWVudE1hcmtl
ckxpbmVTdHlsZTo6TW9kZTo6U3BlbGxpbmc6Ci0gICAgICAgIHJldHVybiBjYWNoZWRDR0NvbG9y
KHVzZURhcmtNb2RlID8gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMTQwLCAxNDAsIDIxNykgOiBtYWtl
U2ltcGxlQ29sb3IoMjU1LCA1OSwgNDgsIDE5MSkpOworICAgICAgICByZXR1cm4gY2FjaGVkQ0dD
b2xvcih1c2VEYXJrTW9kZSA/IFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAxNDAsIDE0MCwgMjE3IH0g
OiBTUkdCQTx1aW50OF90PiB7IDI1NSwgNTksIDQ4LCAxOTEgfSk7CiAgICAgLy8gQmx1ZQogICAg
IGNhc2UgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU6OkRpY3RhdGlvbkFsdGVybmF0aXZl
czoKICAgICBjYXNlIERvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpUZXh0Q2hlY2tpbmdE
aWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzOgogICAgIGNhc2UgRG9jdW1lbnRNYXJrZXJM
aW5lU3R5bGU6Ok1vZGU6OkF1dG9jb3JyZWN0aW9uUmVwbGFjZW1lbnQ6Ci0gICAgICAgIHJldHVy
biBjYWNoZWRDR0NvbG9yKHVzZURhcmtNb2RlID8gbWFrZVNpbXBsZUNvbG9yKDQwLCAxNDUsIDI1
NSwgMjE3KSA6IG1ha2VTaW1wbGVDb2xvcigwLCAxMjIsIDI1NSwgMTkxKSk7CisgICAgICAgIHJl
dHVybiBjYWNoZWRDR0NvbG9yKHVzZURhcmtNb2RlID8gU1JHQkE8dWludDhfdD4geyA0MCwgMTQ1
LCAyNTUsIDIxNyB9IDogU1JHQkE8dWludDhfdD4geyAwLCAxMjIsIDI1NSwgMTkxIH0pOwogICAg
IC8vIEdyZWVuCiAgICAgY2FzZSBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6R3JhbW1h
cjoKLSAgICAgICAgcmV0dXJuIGNhY2hlZENHQ29sb3IodXNlRGFya01vZGUgPyBtYWtlU2ltcGxl
Q29sb3IoNTAsIDIxNSwgNzUsIDIxNykgOiBtYWtlU2ltcGxlQ29sb3IoMjUsIDE3NSwgNTAsIDE5
MSkpOworICAgICAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcih1c2VEYXJrTW9kZSA/IFNSR0JBPHVp
bnQ4X3Q+IHsgNTAsIDIxNSwgNzUsIDIxNyB9IDogU1JHQkE8dWludDhfdD4geyAyNSwgMTc1LCA1
MCwgMTkxIH0pOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHVzZU9sZEFxdWFGb2N1c1JpbmdDb2xvcjsK
IAogQ29sb3Igb2xkQXF1YUZvY3VzUmluZ0NvbG9yKCkKIHsKLSAgICByZXR1cm4gbWFrZVNpbXBs
ZUNvbG9yKDEyNSwgMTczLCAyMTcpOworICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDEyNSwg
MTczLCAyMTcgfTsKIH0KIAogdm9pZCBzZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcihib29s
IG5ld1ZhbHVlKQpAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhf
dD4+IG1ha2VTaW1wCiAgICAgICAgIE5TVUludGVnZXIgcGl4ZWxbNF07CiAgICAgICAgIFtvZmZz
Y3JlZW5SZXAgZ2V0UGl4ZWw6cGl4ZWwgYXRYOjAgeTowXTsKIAotICAgICAgICByZXR1cm4gbWFr
ZVNpbXBsZUNvbG9yKHBpeGVsWzBdLCBwaXhlbFsxXSwgcGl4ZWxbMl0sIHBpeGVsWzNdKTsKKyAg
ICAgICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4ocGl4ZWxbMF0sIHBpeGVs
WzFdLCBwaXhlbFsyXSwgcGl4ZWxbM10pOwogICAgIH0KIAogICAgIFtyZ2JDb2xvciBnZXRSZWQ6
JnJlZENvbXBvbmVudCBncmVlbjomZ3JlZW5Db21wb25lbnQgYmx1ZTomYmx1ZUNvbXBvbmVudCBh
bHBoYTomYWxwaGFdOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXIuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcjo6cAogICAgICAgICBBU1NFUlQoIW1fdGV4dHVyZSk7CiAgICAg
ICAgIGlmIChtX2hvbGVQdW5jaENsaWVudCkKICAgICAgICAgICAgIG1faG9sZVB1bmNoQ2xpZW50
LT5zZXRWaWRlb1JlY3RhbmdsZShlbmNsb3NpbmdJbnRSZWN0KG1vZGVsVmlld01hdHJpeC5tYXBS
ZWN0KHRhcmdldFJlY3QpKSk7Ci0gICAgICAgIHRleG1hcEdMLmRyYXdTb2xpZENvbG9yKHRhcmdl
dFJlY3QsIG1vZGVsVmlld01hdHJpeCwgbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDApLCBmYWxz
ZSk7CisgICAgICAgIHRleG1hcEdMLmRyYXdTb2xpZENvbG9yKHRhcmdldFJlY3QsIG1vZGVsVmll
d01hdHJpeCwgQ29sb3I6OnRyYW5zcGFyZW50LCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRDR1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAkocmV2aXNpb24gMjY0NDcxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENH
V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDggKzE5OCw4IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3RG90c0ZvckRvY3VtZW4KICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBs
YXRmb3JtQ29udGV4dCgpOwogICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAKLSAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gc3BlbGxpbmdQYXR0ZXJuQ29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoMjU1LCAwLCAwKTsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZ3JhbW1hclBhdHRl
cm5Db2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAxMjgsIDApOworICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBzcGVsbGluZ1BhdHRlcm5Db2xvciA9IENvbG9yOjpyZWQ7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGdyYW1tYXJQYXR0ZXJuQ29sb3IgPSBDb2xvcjo6ZGFya0dyZWVuOwogCiAg
ICAgYXV0byBbciwgZywgYiwgYV0gPSBzdHlsZS5tb2RlID09IERvY3VtZW50TWFya2VyTGluZVN0
eWxlOjpNb2RlOjpHcmFtbWFyID8gZ3JhbW1hclBhdHRlcm5Db2xvciA6IHNwZWxsaW5nUGF0dGVy
bkNvbG9yOwogICAgIENHQ29udGV4dFNldFJHQlN0cm9rZUNvbG9yKGNvbnRleHQsIHIsIGcsIGIs
IGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1t
CShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0lt
YWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgRHJhZ0ltYWdlUmVm
IGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbQogICAgICAgICBHcmFwaGljc0NvbnRleHQgY29u
dGV4dChyZW5kZXJlckNvbnRleHQuQ0dDb250ZXh0KTsKICAgICAgICAgY29udGV4dC50cmFuc2xh
dGUoMCwgQ0dSZWN0R2V0SGVpZ2h0KGltYWdlUmVjdCkpOwogICAgICAgICBjb250ZXh0LnNjYWxl
KHsgMSwgLTEgfSk7Ci0gICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRl
ZFJlY3QoaW1hZ2VSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSg0KSksIG1ha2VTaW1wbGVD
b2xvcigyNTUsIDI1NSwgMjU1KSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZs
b2F0Um91bmRlZFJlY3QoaW1hZ2VSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSg0KSksIENv
bG9yOjp3aGl0ZSk7CiAgICAgICAgIHRpdGxlRm9udENhc2NhZGUuZ2V0KCkuZHJhd1RleHQoY29u
dGV4dCwgVGV4dFJ1bih0cnVuY2F0ZWRUb3BTdHJpbmcpLCBGbG9hdFBvaW50KGRyYWdJbWFnZVBh
ZGRpbmcsIDE4ICsgZHJhZ0ltYWdlUGFkZGluZykpOwogICAgICAgICBpZiAoIXRydW5jYXRlZEJv
dHRvbVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgICAgICB1cmxGb250Q2FzY2FkZS5nZXQoKS5k
cmF3VGV4dChjb250ZXh0LCBUZXh0UnVuKHRydW5jYXRlZEJvdHRvbVN0cmluZyksIEZsb2F0UG9p
bnQoZHJhZ0ltYWdlUGFkZGluZywgNDAgKyBkcmFnSW1hZ2VQYWRkaW5nKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0JKHJldmlzaW9u
IDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQ2Miw4ICs0NjIsOCBAQCB1bnNpZ25lZCBMZWdhY3lUaWxl
Q2FjaGU6OnRpbGVDYXBhY2l0eUZvCiBDb2xvciBMZWdhY3lUaWxlQ2FjaGU6OmNvbG9yRm9yR3Jp
ZFRpbGVCb3JkZXIoTGVnYWN5VGlsZUdyaWQqIGdyaWQpIGNvbnN0CiB7CiAgICAgaWYgKGdyaWQg
PT0gbV96b29tZWRPdXRUaWxlR3JpZC5nZXQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVD
b2xvcig1MSwgMjU1LCAwLCAxMjgpOwotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoNTEsIDIz
MCwgMCwgMTI4KTsKKyAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgNTEsIDI1NSwgMCwg
MTI4IH07CisgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgNTEsIDIzMCwgMCwgMTI4IH07CiB9
CiAKIHN0YXRpYyBib29sIHNob3VsZFJlcGFpbnRJblBpZWNlcyhjb25zdCBDR1JlY3QmIGRpcnR5
UmVjdCwgQ0dTUmVnaW9uT2JqIGRpcnR5UmVnaW9uLCBDR0Zsb2F0IGNvbnRlbnRzU2NhbGUpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2LDggQEAgc3RhdGljIGlubGluZSBWZWN0b3I8
TW9ja01lZGlhRGV2aWNlPiBkZQogICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiU0NSRUVOLTEi
X3MsICJNb2NrIHNjcmVlbiBkZXZpY2UgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBDb2xvcjo6bGlnaHRHcmF5LCB7IDM4NDAs
IDIxNjAgfSB9IH0sCiAgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJTQ1JFRU4tMiJfcywgIk1v
Y2sgc2NyZWVuIGRldmljZSAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIENvbG9yOjp5ZWxsb3csIHsgMTkyMCwgMTA4MCB9IH0g
fSwKIAotICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRv
dyAxIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpTY3JlZW4sIG1ha2VTaW1wbGVDb2xvcigyNTUsIDI0MSwgMTgxKSwgeyA2NDAsIDQ4MCB9IH0g
fSwKLSAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIldJTkRPVy0yIl9zLCAiTW9jayB3aW5kb3cg
MiJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
U2NyZWVuLCBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyMDgsIDE4MSksIHsgMTI4MCwgNjAwIH0gfSB9
LAorICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAx
Il9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpT
Y3JlZW4sIFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAyNDEsIDE4MSB9LCB7IDY0MCwgNDgwIH0gfSB9
LAorICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAy
Il9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpT
Y3JlZW4sIFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAyMDgsIDE4MSB9LCB7IDEyODAsIDYwMCB9IH0g
fSwKICAgICB9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNpb24gMjY0NDcxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NSwxMSArMjY1LDYgQEAgdm9pZCBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZTo6ZHJhd0FuaW1hdAogCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpk
cmF3Qm94ZXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBtYWdlbnRhID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMjU1KTsKLSAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gYmx1ZSA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAyNTUpOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byByZWQgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAwKTsK
LSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGFya0dyZWVuID0gbWFrZVNpbXBsZUNvbG9yKDAs
IDEyOCwgMCk7Ci0KICAgICBJbnRTaXplIHNpemUgPSBjYXB0dXJlU2l6ZSgpOwogICAgIGZsb2F0
IGJveFNpemUgPSBzaXplLndpZHRoKCkgKiAuMDM1OwogICAgIGZsb2F0IGJveFRvcCA9IHNpemUu
aGVpZ2h0KCkgKiAuNjsKQEAgLTMxOCw3ICszMTMsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpkcmF3Qm94ZXMoCiAKICAgICBib3hUb3AgKz0gYm94U2l6ZSArIDI7CiAgICAgYm94
TGVmdCA9IGJveFNpemU7Ci0gICAgY29uc3RleHByIFNSR0JBPHVpbnQ4X3Q+IGJveENvbG9yc1td
ID0geyBDb2xvcjo6d2hpdGUsIENvbG9yOjp5ZWxsb3csIENvbG9yOjpjeWFuLCBkYXJrR3JlZW4s
IG1hZ2VudGEsIHJlZCwgYmx1ZSB9OworICAgIGNvbnN0ZXhwciBTUkdCQTx1aW50OF90PiBib3hD
b2xvcnNbXSA9IHsgQ29sb3I6OndoaXRlLCBDb2xvcjo6eWVsbG93LCBDb2xvcjo6Y3lhbiwgQ29s
b3I6OmRhcmtHcmVlbiwgQ29sb3I6Om1hZ2VudGEsIENvbG9yOjpyZWQsIENvbG9yOjpibHVlIH07
CiAgICAgZm9yIChhdXRvJiBib3hDb2xvciA6IGJveENvbG9ycykgewogICAgICAgICBjb250ZXh0
LmZpbGxSZWN0KEZsb2F0UmVjdChib3hMZWZ0LCBib3hUb3AsIGJveFNpemUgKyAxLCBib3hTaXpl
ICsgMSksIGJveENvbG9yKTsKICAgICAgICAgYm94TGVmdCArPSBib3hTaXplICsgMTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9j
ay5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
U2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBp
bnQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpzY3JvbGxiYXJUaGlja25lCiAKIHZvaWQgU2Nyb2xsYmFy
VGhlbWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7Ci0gICAg
Y29udGV4dC5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6
bGlnaHRHcmF5IDogbWFrZVNpbXBsZUNvbG9yKDIyNCwgMjI0LCAyMjQpKTsKKyAgICBjb250ZXh0
LmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xsYmFyLmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdy
YXkuY29sb3IoKSA6IFNSR0JBPHVpbnQ4X3Q+IHsgMjI0LCAyMjQsIDIyNCB9KTsKIH0KIAogdm9p
ZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24vU2Nyb2xsYmFyVGhlbWVQbGF5U3Rh
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRp
b24vU2Nyb2xsYmFyVGhlbWVQbGF5U3RhdGlvbi5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9uL1Njcm9sbGJhclRoZW1lUGxheVN0YXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIEludFJlY3QgU2Nyb2xsYmFy
VGhlbWVQbGF5U3RhdGlvbjo6dHJhY2sKIAogdm9pZCBTY3JvbGxiYXJUaGVtZVBsYXlTdGF0aW9u
OjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJh
ciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7Ci0gICAgY29udGV4dC5m
aWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5
IDogQ29sb3IobWFrZVNpbXBsZUNvbG9yKDB4RTAsIDB4RTAsIDB4RTApKSk7CisgICAgY29udGV4
dC5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRH
cmF5IDogU1JHQkE8dWludDhfdD4geyAyMjQsIDIyNCwgMjI0IH0pOwogfQogCiB2b2lkIFNjcm9s
bGJhclRoZW1lUGxheVN0YXRpb246OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAJKHJldmlzaW9u
IDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODksMTQgKzE4OSwxNCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlRm9yTGluayhFbGVtCiAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoY29udGV4
dFJlZik7CiAgICAgLy8gT24gTWFjIGFscGhhIGlzIHswLjcsIDAuNywgMC43LCAwLjh9LCBob3dl
dmVyIHdlIGNhbid0IGNvbnRyb2wgYWxwaGEKICAgICAvLyBmb3IgZHJhZyBpbWFnZXMgb24gd2lu
LCBzbyB3ZSB1c2UgMQotICAgIGNvbnN0ZXhwciBhdXRvIGJhY2tncm91bmRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigxNDAsIDE0MCwgMTQwKTsKKyAgICBjb25zdGV4cHIgYXV0byBiYWNrZ3JvdW5k
Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDE0MCwgMTQwLCAxNDAgfTsKICAgICBzdGF0aWMgY29u
c3QgSW50U2l6ZSByYWRpaShEcmFnTGFiZWxSYWRpdXMsIERyYWdMYWJlbFJhZGl1cyk7CiAgICAg
SW50UmVjdCByZWN0KDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkp
OwogICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocmVjdCwgcmFk
aWksIHJhZGlpLCByYWRpaSwgcmFkaWkpLCBiYWNrZ3JvdW5kQ29sb3IpOwogIAogICAgIC8vIERy
YXcgdGhlIHRleHQKLSAgICBjb25zdGV4cHIgYXV0byB0b3BDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigwLCAwLCAwKTsgLy8gb3JpZ2luYWwgYWxwaGEgPSAwLjc1Ci0gICAgY29uc3RleHByIGF1dG8g
Ym90dG9tQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSwgMTI3KTsgLy8gb3Jp
Z2luYWwgYWxwaGEgPSAwLjUKKyAgICBjb25zdGV4cHIgYXV0byB0b3BDb2xvciA9IENvbG9yOjpi
bGFjazsgLy8gb3JpZ2luYWwgYWxwaGEgPSAwLjc1CisgICAgY29uc3RleHByIGF1dG8gYm90dG9t
Q29sb3IgPSBDb2xvcjo6d2hpdGUuY29sb3JXaXRoQWxwaGEoMTI3KTsgLy8gb3JpZ2luYWwgYWxw
aGEgPSAwLjUKICAgICBpZiAoZHJhd1VSTFN0cmluZykgewogICAgICAgICBpZiAoY2xpcFVSTFN0
cmluZykKICAgICAgICAgICAgIHVybFN0cmluZyA9IFN0cmluZ1RydW5jYXRvcjo6cmlnaHRUcnVu
Y2F0ZSh1cmxTdHJpbmcsIGltYWdlU2l6ZS53aWR0aCgpIC0gKERyYWdMYWJlbEJvcmRlclggKiAy
LjBmKSwgKnVybEZvbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVt
YmVkZGVkT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NCwxMCArNzQsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHJlcGxhY2VtZW50QXJyb3dMZWZ0
TQogc3RhdGljIGNvbnN0IGZsb2F0IHJlcGxhY2VtZW50QXJyb3dQYWRkaW5nID0gNDsKIHN0YXRp
YyBjb25zdCBmbG9hdCByZXBsYWNlbWVudEFycm93Q2lyY2xlUGFkZGluZyA9IDM7CiAKLWNvbnN0
ZXhwciBhdXRvIHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UHJlc3NlZENvbG9yID0gbWFrZVNp
bXBsZUNvbG9yKDEwNSwgMTA1LCAxMDUsIDI0Mik7Ci1jb25zdGV4cHIgYXV0byByZXBsYWNlbWVu
dFRleHRSb3VuZGVkUmVjdENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDEyNSwgMTI1LCAxMjUsIDI0
Mik7Ci1jb25zdGV4cHIgYXV0byByZXBsYWNlbWVudFRleHRDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigyNDAsIDI0MCwgMjQwKTsKLWNvbnN0ZXhwciBhdXRvIHVuYXZhaWxhYmxlUGx1Z2luQm9yZGVy
Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSwgMjE2KTsKK2NvbnN0ZXhwciBh
dXRvIHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UHJlc3NlZENvbG9yID0gU1JHQkE8dWludDhf
dD4geyAxMDUsIDEwNSwgMTA1LCAyNDIgfTsKK2NvbnN0ZXhwciBhdXRvIHJlcGxhY2VtZW50VGV4
dFJvdW5kZWRSZWN0Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDEyNSwgMTI1LCAxMjUsIDI0MiB9
OworY29uc3RleHByIGF1dG8gcmVwbGFjZW1lbnRUZXh0Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7
IDI0MCwgMjQwLCAyNDAgfTsKK2NvbnN0ZXhwciBhdXRvIHVuYXZhaWxhYmxlUGx1Z2luQm9yZGVy
Q29sb3IgPSBDb2xvcjo6d2hpdGUuY29sb3JXaXRoQWxwaGEoMjE2KTsKIAogUmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OlJlbmRlckVtYmVkZGVkT2JqZWN0KEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZWxl
bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlcldpZGdldChlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFt
ZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZy
YW1lU2V0LmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYW1lU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsOSArNjgsOSBAQCBSZW5k
ZXJGcmFtZVNldDo6R3JpZEF4aXM6OkdyaWRBeGlzKCkKIHsKIH0KIAotY29uc3RleHByIGF1dG8g
Ym9yZGVyU3RhcnRFZGdlQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTcwLCAxNzAsIDE3MCk7Citj
b25zdGV4cHIgYXV0byBib3JkZXJTdGFydEVkZ2VDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTcw
LCAxNzAsIDE3MCB9OwogY29uc3RleHByIGF1dG8gYm9yZGVyRW5kRWRnZUNvbG9yID0gQ29sb3I6
OmJsYWNrOwotY29uc3RleHByIGF1dG8gYm9yZGVyRmlsbENvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDIwOCwgMjA4LCAyMDgpOworY29uc3RleHByIGF1dG8gYm9yZGVyRmlsbENvbG9yID0gU1JHQkE8
dWludDhfdD4geyAyMDgsIDIwOCwgMjA4IH07CiAKIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBhaW50
Q29sdW1uQm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBi
b3JkZXJSZWN0KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQ4LDcgKzIyNDgsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyCiAjZW5kaWYKIAogI2lmZGVmIFJFVkVBTF9U
UkFOU1BBUkVOQ1lfTEFZRVJTCi0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1ha2VTaW1w
bGVDb2xvcigwLCAwLCAxMjgsIDUxKSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKFNS
R0JBPHVpbnQ4X3Q+IHsgMCwgMCwgMTI4LCA1MSB9KTsKICAgICAgICAgY29udGV4dC5maWxsUmVj
dChwaXhlbFNuYXBwZWRDbGlwUmVjdCk7CiAjZW5kaWYKICAgICB9CkBAIC00MTIzLDcgKzQxMjMs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3JhcGhpY3NDCiAgICAgICAgIGNv
bnRleHQuY2xpcChyZXNpemVyQWJzUmVjdCk7CiAgICAgICAgIExheW91dFJlY3QgbGFyZ2VyQ29y
bmVyID0gcmVzaXplckFic1JlY3Q7CiAgICAgICAgIGxhcmdlckNvcm5lci5zZXRTaXplKExheW91
dFNpemUobGFyZ2VyQ29ybmVyLndpZHRoKCkgKyAxX2x1LCBsYXJnZXJDb3JuZXIuaGVpZ2h0KCkg
KyAxX2x1KSk7Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IobWFrZVNpbXBsZUNvbG9y
KDIxNywgMjE3LCAyMTcpKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihTUkdCQTx1
aW50OF90PiB7IDIxNywgMjE3LCAyMTcgfSk7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhp
Y2tuZXNzKDEuMGYpOwogICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNw
YXJlbnQpOwogICAgICAgICBjb250ZXh0LmRyYXdSZWN0KHNuYXBwZWRJbnRSZWN0KGxhcmdlckNv
cm5lcikpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYxLDcgKzMxNjEs
NyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JUb3VjaEFjCiAgICAgICAgIHJl
dHVybiAwOwogICAgIH07CiAKLSAgICBjb25zdGV4cHIgYXV0byBmaWxsQ29sb3IgPSBtYWtlU2lt
cGxlQ29sb3IoMCwgMCwgMCwgMTI4KTsKKyAgICBjb25zdGV4cHIgYXV0byBmaWxsQ29sb3IgPSBD
b2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMTI4KTsKIAogICAgIHN0YXRpYyBjb25zdCBQYXR0
ZXJuRGVzY3JpcHRpb24gcGF0dGVybkRlc2NyaXB0aW9uc1tdID0gewogICAgICAgICB7ICJhdXRv
Il9zLCB7IH0sIGZpbGxDb2xvciB9LApAQCAtMzE4Myw3ICszMTgzLDcgQEAgc3RhdGljIFJlZlB0
cjxQYXR0ZXJuPiBwYXR0ZXJuRm9yVG91Y2hBYwogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9SRUdJ
T05TKQogc3RhdGljIFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuRm9yRXZlbnRMaXN0ZW5lclJlZ2lv
blR5cGUoRXZlbnRMaXN0ZW5lclJlZ2lvblR5cGUgdHlwZSwgRmxvYXRTaXplIGNvbnRlbnRPZmZz
ZXQsIEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQpCiB7Ci0gICAgY29uc3RleHByIGF1dG8g
ZmlsbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDEyOCwgMCwgMTI4KTsKKyAgICBjb25zdGV4
cHIgYXV0byBmaWxsQ29sb3IgPSBDb2xvcjo6ZGFya0dyZWVuLmNvbG9yV2l0aEFscGhhKDEyOCk7
CiAKICAgICBhdXRvIHBhdHRlcm5BbmRQaGFzZSA9IFsmXSgpIC0+IFBhdHRlcm5EZXNjcmlwdGlv
biB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMzIyMCw3ICszMjIwLDcgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnBhaW50RGVidWdPdmVybAogI2lmIEVOQUJMRShUT1VDSF9BQ1RJ
T05fUkVHSU9OUykKICAgICAvLyBQYWludCByZWN0cyBmb3IgdG91Y2ggYWN0aW9uLgogICAgIGlm
ICh2aXNpYmxlRGVidWdPdmVybGF5UmVnaW9ucyAmIFRvdWNoQWN0aW9uUmVnaW9uKSB7Ci0gICAg
ICAgIGNvbnN0ZXhwciBhdXRvIHJlZ2lvbkNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDI1
NSwgNTApOworICAgICAgICBjb25zdGV4cHIgYXV0byByZWdpb25Db2xvciA9IENvbG9yOjpibHVl
LmNvbG9yV2l0aEFscGhhKDUwKTsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IocmVnaW9u
Q29sb3IpOwogICAgICAgICBmb3IgKGF1dG8gcmVjdCA6IGV2ZW50UmVnaW9uLnJlZ2lvbigpLnJl
Y3RzKCkpCiAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHJlY3QpOwpAQCAtMzI2NSw3ICsz
MjY1LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50RGVidWdPdmVybAogI2lmIEVO
QUJMRShFRElUQUJMRV9SRUdJT04pCiAgICAgLy8gUGFpbnQgcmVjdHMgZm9yIGVkaXRhYmxlIGVs
ZW1lbnRzLgogICAgIGlmICh2aXNpYmxlRGVidWdPdmVybGF5UmVnaW9ucyAmIEVkaXRhYmxlRWxl
bWVudFJlZ2lvbikgewotICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihtYWtlU2ltcGxlQ29s
b3IoMTI4LCAwLCAxMjgsIDUwKSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKFNSR0JB
PHVpbnQ4X3Q+IHsgMTI4LCAwLCAxMjgsIDUwIH0pOwogICAgICAgICBmb3IgKGF1dG8gcmVjdCA6
IGV2ZW50UmVnaW9uLnJlY3RzRm9yRWRpdGFibGVFbGVtZW50cygpKQogICAgICAgICAgICAgY29u
dGV4dC5maWxsUmVjdChyZWN0KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3MSw3ICs2NzEsNyBA
QCBDb2xvciBSZW5kZXJUaGVtZTo6aW5hY3RpdmVMaXN0Qm94U2VsZWN0CiBDb2xvciBSZW5kZXJU
aGVtZTo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoT3B0aW9uU2V0PFN0
eWxlQ29sb3I6Ok9wdGlvbnM+KSBjb25zdAogewogICAgIC8vIFVzZSBhIGJsdWUgY29sb3IgYnkg
ZGVmYXVsdCBpZiB0aGUgcGxhdGZvcm0gdGhlbWUgZG9lc24ndCBkZWZpbmUgYW55dGhpbmcuCi0g
ICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigwLCAwLCAyNTUpOworICAgIHJldHVybiBDb2xvcjo6
Ymx1ZTsKIH0KIAogQ29sb3IgUmVuZGVyVGhlbWU6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9y
ZWdyb3VuZENvbG9yKE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPikgY29uc3QKQEAgLTY4
NCw3ICs2ODQsNyBAQCBDb2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjCiB7
CiAgICAgLy8gVXNlIGEgZ3JleSBjb2xvciBieSBkZWZhdWx0IGlmIHRoZSBwbGF0Zm9ybSB0aGVt
ZSBkb2Vzbid0IGRlZmluZSBhbnl0aGluZy4KICAgICAvLyBUaGlzIGNvbG9yIG1hdGNoZXMgRmly
ZWZveCdzIGluYWN0aXZlIGNvbG9yLgotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMTc2LCAx
NzYsIDE3Nik7CisgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgMTc2LCAxNzYsIDE3NiB9Owog
fQogCiBDb2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91
bmRDb2xvcihPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4pIGNvbnN0CkBAIC0xMzM0LDMw
ICsxMzM0LDMwIEBAIENvbG9yIFJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUkKIHsK
ICAgICBzd2l0Y2ggKGNzc1ZhbHVlSWQpIHsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0TGluazoK
LSAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29udGFpbnMoU3R5bGVDb2xvcjo6T3B0aW9uczo6Rm9y
VmlzaXRlZExpbmspID8gbWFrZVNpbXBsZUNvbG9yKDg1LCAyNiwgMTM5KSA6IG1ha2VTaW1wbGVD
b2xvcigwLCAwLCAyMzgpOworICAgICAgICByZXR1cm4gb3B0aW9ucy5jb250YWlucyhTdHlsZUNv
bG9yOjpPcHRpb25zOjpGb3JWaXNpdGVkTGluaykgPyBTUkdCQTx1aW50OF90PiB7IDg1LCAyNiwg
MTM5IH0gOiBTUkdCQTx1aW50OF90PiB7IDAsIDAsIDIzOCB9OwogICAgIGNhc2UgQ1NTVmFsdWVX
ZWJraXRBY3RpdmVsaW5rOgogICAgIGNhc2UgQ1NTVmFsdWVBY3RpdmV0ZXh0OgotICAgICAgICBy
ZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCk7CisgICAgICAgIHJldHVybiBDb2xvcjo6
cmVkOwogICAgIGNhc2UgQ1NTVmFsdWVMaW5rdGV4dDoKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1w
bGVDb2xvcigwLCAwLCAyMzgpOworICAgICAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAwLCAw
LCAyMzggfTsKICAgICBjYXNlIENTU1ZhbHVlVmlzaXRlZHRleHQ6Ci0gICAgICAgIHJldHVybiBt
YWtlU2ltcGxlQ29sb3IoODUsIDI2LCAxMzkpOworICAgICAgICByZXR1cm4gU1JHQkE8dWludDhf
dD4geyA4NSwgMjYsIDEzOSB9OwogICAgIGNhc2UgQ1NTVmFsdWVBY3RpdmVib3JkZXI6CiAgICAg
ICAgIHJldHVybiBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWJ1dHRvbnRl
eHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2
ZWNhcHRpb246Ci0gICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMjA0LCAyMDQsIDIwNCk7
CisgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDIwNCwgMjA0LCAyMDQgfTsKICAgICBj
YXNlIENTU1ZhbHVlQXBwd29ya3NwYWNlOgogICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwog
ICAgIGNhc2UgQ1NTVmFsdWVCYWNrZ3JvdW5kOgotICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNv
bG9yKDk5LCA5OSwgMjA2KTsKKyAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgOTksIDk5
LCAyMDYgfTsKICAgICBjYXNlIENTU1ZhbHVlQnV0dG9uZmFjZToKICAgICAgICAgcmV0dXJuIENv
bG9yOjpsaWdodEdyYXk7CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbmhpZ2hsaWdodDoKLSAgICAg
ICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigyMjEsIDIyMSwgMjIxKTsKKyAgICAgICAgcmV0dXJu
IFNSR0JBPHVpbnQ4X3Q+IHsgMjIxLCAyMjEsIDIyMSB9OwogICAgIGNhc2UgQ1NTVmFsdWVCdXR0
b25zaGFkb3c6Ci0gICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMTM2LCAxMzYsIDEzNik7
CisgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDEzNiwgMTM2LCAxMzYgfTsKICAgICBj
YXNlIENTU1ZhbHVlQnV0dG9udGV4dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAg
ICBjYXNlIENTU1ZhbHVlQ2FwdGlvbnRleHQ6CkBAIC0xMzcxLDkgKzEzNzEsOSBAQCBDb2xvciBS
ZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJCiAgICAgY2FzZSBDU1NWYWx1ZUZpZWxk
dGV4dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNlIENTU1ZhbHVlR3Jh
eXRleHQ6Ci0gICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMTI4LCAxMjgsIDEyOCk7Cisg
ICAgICAgIHJldHVybiBDb2xvcjo6ZGFya0dyYXk7CiAgICAgY2FzZSBDU1NWYWx1ZUhpZ2hsaWdo
dDoKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigxODEsIDIxMywgMjU1KTsKKyAgICAg
ICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgMTgxLCAyMTMsIDI1NSB9OwogICAgIGNhc2UgQ1NT
VmFsdWVIaWdobGlnaHR0ZXh0OgogICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNh
c2UgQ1NTVmFsdWVJbmFjdGl2ZWJvcmRlcjoKQEAgLTEzODEsOSArMTM4MSw5IEBAIENvbG9yIFJl
bmRlclRoZW1lOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUkKICAgICBjYXNlIENTU1ZhbHVlSW5hY3Rp
dmVjYXB0aW9uOgogICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogICAgIGNhc2UgQ1NTVmFs
dWVJbmFjdGl2ZWNhcHRpb250ZXh0OgotICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDEy
NywgMTI3LCAxMjcpOworICAgICAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAxMjcsIDEyNywg
MTI3IH07CiAgICAgY2FzZSBDU1NWYWx1ZUluZm9iYWNrZ3JvdW5kOgotICAgICAgICByZXR1cm4g
bWFrZVNpbXBsZUNvbG9yKDI1MSwgMjUyLCAxOTcpOworICAgICAgICByZXR1cm4gU1JHQkE8dWlu
dDhfdD4geyAyNTEsIDI1MiwgMTk3IH07CiAgICAgY2FzZSBDU1NWYWx1ZUluZm90ZXh0OgogICAg
ICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVNZW51OgpAQCAtMTM5
NSwxOSArMTM5NSwxOSBAQCBDb2xvciBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJ
CiAgICAgY2FzZSBDU1NWYWx1ZVRleHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAg
ICAgY2FzZSBDU1NWYWx1ZVRocmVlZGRhcmtzaGFkb3c6Ci0gICAgICAgIHJldHVybiBtYWtlU2lt
cGxlQ29sb3IoMTAyLCAxMDIsIDEwMik7CisgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7
IDEwMiwgMTAyLCAxMDIgfTsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkZmFjZToKICAgICAgICAg
cmV0dXJuIENvbG9yOjpsaWdodEdyYXk7CiAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZGhpZ2hsaWdo
dDoKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigyMjEsIDIyMSwgMjIxKTsKKyAgICAg
ICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgMjIxLCAyMjEsIDIyMSB9OwogICAgIGNhc2UgQ1NT
VmFsdWVUaHJlZWRsaWdodHNoYWRvdzoKICAgICAgICAgcmV0dXJuIENvbG9yOjpsaWdodEdyYXk7
CiAgICAgY2FzZSBDU1NWYWx1ZVRocmVlZHNoYWRvdzoKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1w
bGVDb2xvcigxMzYsIDEzNiwgMTM2KTsKKyAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsg
MTM2LCAxMzYsIDEzNiB9OwogICAgIGNhc2UgQ1NTVmFsdWVXaW5kb3c6CiAgICAgICAgIHJldHVy
biBDb2xvcjo6d2hpdGU7CiAgICAgY2FzZSBDU1NWYWx1ZVdpbmRvd2ZyYW1lOgotICAgICAgICBy
ZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDIwNCwgMjA0LCAyMDQpOworICAgICAgICByZXR1cm4gU1JH
QkE8dWludDhfdD4geyAyMDQsIDIwNCwgMjA0IH07CiAgICAgY2FzZSBDU1NWYWx1ZVdpbmRvd3Rl
eHQ6CiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgZGVmYXVsdDoKQEAgLTE1MTcs
OCArMTUxNyw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6OnBhaW50U3lzdGVtUHJldmlld0JhZGcKIAog
ICAgIGF1dG8gbWFya2VyUmVjdCA9IEZsb2F0UmVjdCB7cmVjdC54KCkgKyByZWN0LndpZHRoKCkg
LSAyNCwgcmVjdC55KCkgKyA4LCAxNiwgMTYgfTsKICAgICBhdXRvIHJvdW5kZWRNYXJrZXJSZWN0
ID0gRmxvYXRSb3VuZGVkUmVjdCB7IG1hcmtlclJlY3QsIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlp
IHsgOCB9IH07Ci0gICAgYXV0byBjb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDApOwot
ICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KHJvdW5kZWRNYXJrZXJSZWN0LCBjb2xvcik7Cisg
ICAgY29udGV4dC5maWxsUm91bmRlZFJlY3Qocm91bmRlZE1hcmtlclJlY3QsIENvbG9yOjpyZWQp
OwogfQogI2VuZGlmCiAKQEAgLTE1MjgsNyArMTUyNyw3IEBAIENvbG9yIFJlbmRlclRoZW1lOjpw
bGF0Zm9ybVRhcEhpZ2hsaWdodEMKIHsKICAgICAvLyBUaGlzIGNvbG9yIGlzIGV4cGVjdGVkIHRv
IGJlIGRyYXduIG9uIGEgc2VtaS10cmFuc3BhcmVudCBvdmVybGF5LAogICAgIC8vIG1ha2luZyBp
dCBtb3JlIHRyYW5zcGFyZW50IHRoYW4gaXRzIGFscGhhIHZhbHVlIGluZGljYXRlcy4KLSAgICBy
ZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDEwMik7CisgICAgcmV0dXJuIENvbG9yOjpi
bGFjay5jb2xvcldpdGhBbHBoYSgxMDIpOwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwCShyZXZpc2lvbiAyNjQ0
NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVBZHdhaXRhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBjb25zdCBpbnQgdGV4dEZpZWxkQm9yZGVyU2l6ZSA9IDE7Ci1zdGF0aWMgY29uc3Rl
eHByIGF1dG8gdGV4dEZpZWxkQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA1LCAxOTks
IDE5NCk7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gdGV4dEZpZWxkQm9yZGVyRGlzYWJsZWRDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcigyMTMsIDIwOCwgMjA0KTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0
byB0ZXh0RmllbGRCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1
NSk7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gdGV4dEZpZWxkQmFja2dyb3VuZERpc2FibGVkQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMjUyLCAyNTIsIDI1Mik7CitzdGF0aWMgY29uc3RleHByIGF1
dG8gdGV4dEZpZWxkQm9yZGVyQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDIwNSwgMTk5LCAxOTQg
fTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB0ZXh0RmllbGRCb3JkZXJEaXNhYmxlZENvbG9yID0g
U1JHQkE8dWludDhfdD4geyAyMTMsIDIwOCwgMjA0IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8g
dGV4dEZpZWxkQmFja2dyb3VuZENvbG9yID0gQ29sb3I6OndoaXRlOworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIHRleHRGaWVsZEJhY2tncm91bmREaXNhYmxlZENvbG9yID0gU1JHQkE8dWludDhfdD4g
eyAyNTIsIDI1MiwgMjUyIH07CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWVudUxpc3RCdXR0b25B
cnJvd1NpemUgPSAxNjsKIHN0YXRpYyBjb25zdCBpbnQgbWVudUxpc3RCdXR0b25Gb2N1c09mZnNl
dCA9IC0zOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1lbnVMaXN0QnV0dG9uUGFkZGluZyA9IDU7
CkBAIC01NywyMyArNTcsMjMgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHByb2dyZXNzQWN0aXZp
dHlCbAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHByb2dyZXNzQW5pbWF0aW9uRnJhbWVDb3VudCA9
IDc1Owogc3RhdGljIGNvbnN0IFNlY29uZHMgcHJvZ3Jlc3NBbmltYXRpb25GcmFtZVJhdGUgPSAz
M19tczsgLy8gMzBmcHMuCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHJvZ3Jlc3NCYXJTaXplID0g
NjsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBwcm9ncmVzc0JhckJvcmRlckNvbG9yID0gbWFrZVNp
bXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHByb2dyZXNz
QmFyQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyNSwgMjIyLCAyMTkpOworc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHByb2dyZXNzQmFyQm9yZGVyQ29sb3IgPSBTUkdCQTx1aW50OF90
PiB7IDIwNSwgMTk5LCAxOTQgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBwcm9ncmVzc0JhckJh
Y2tncm91bmRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjI1LCAyMjIsIDIxOSB9Owogc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHNsaWRlclRyYWNrU2l6ZSA9IDY7CiBzdGF0aWMgY29uc3QgaW50IHNs
aWRlclRyYWNrQm9yZGVyU2l6ZSA9IDE7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyVHJh
Y2tCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwgMTk0KTsKLXN0YXRpYyBj
b25zdGV4cHIgYXV0byBzbGlkZXJUcmFja0JhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigyMjUsIDIyMiwgMjE5KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJUcmFja0JvcmRl
ckNvbG9yID0gU1JHQkE8dWludDhfdD4geyAyMDUsIDE5OSwgMTk0IH07CitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gc2xpZGVyVHJhY2tCYWNrZ3JvdW5kQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDIy
NSwgMjIyLCAyMTkgfTsKIHN0YXRpYyBjb25zdCBpbnQgc2xpZGVyVHJhY2tGb2N1c09mZnNldCA9
IDI7CiBzdGF0aWMgY29uc3QgaW50IHNsaWRlclRodW1iU2l6ZSA9IDIwOwogc3RhdGljIGNvbnN0
IGludCBzbGlkZXJUaHVtYkJvcmRlclNpemUgPSAxOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNs
aWRlclRodW1iQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7Ci1z
dGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyVGh1bWJCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2lt
cGxlQ29sb3IoMjQ0LCAyNDIsIDI0MSk7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyVGh1
bWJCYWNrZ3JvdW5kSG92ZXJlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0OCwgMjQ4LCAyNDcp
Owotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlclRodW1iQmFja2dyb3VuZERpc2FibGVkQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMjQ0LCAyNDIsIDI0MSk7CitzdGF0aWMgY29uc3RleHByIGF1
dG8gc2xpZGVyVGh1bWJCb3JkZXJDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjA1LCAxOTksIDE5
NCB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlclRodW1iQmFja2dyb3VuZENvbG9yID0g
U1JHQkE8dWludDhfdD4geyAyNDQsIDI0MiwgMjQxIH07CitzdGF0aWMgY29uc3RleHByIGF1dG8g
c2xpZGVyVGh1bWJCYWNrZ3JvdW5kSG92ZXJlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNDgs
IDI0OCwgMjQ3IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyVGh1bWJCYWNrZ3JvdW5k
RGlzYWJsZWRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjQ0LCAyNDIsIDI0MSB9OwogI2lmIEVO
QUJMRShWSURFTykKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBtZWRpYVNsaWRlclRyYWNrQmFja2dy
b3VuZGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDc3LCA3NywgNzcpOwotc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIG1lZGlhU2xpZGVyVHJhY2tCdWZmZXJlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDE3
MywgMTczLCAxNzMpOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1lZGlhU2xpZGVyVHJhY2tBY3Rp
dmVDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTIsIDI1MiwgMjUyKTsKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBtZWRpYVNsaWRlclRyYWNrQmFja2dyb3VuZGNvbG9yID0gU1JHQkE8dWludDhfdD4g
eyA3NywgNzcsIDc3IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWVkaWFTbGlkZXJUcmFja0J1
ZmZlcmVkQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDE3MywgMTczLCAxNzMgfTsKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBtZWRpYVNsaWRlclRyYWNrQWN0aXZlQ29sb3IgPSBTUkdCQTx1aW50OF90
PiB7IDI1MiwgMjUyLCAyNTIgfTsKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKEdUSykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCShyZXZpc2lvbiAyNjQ0
NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIxLDcgKzEyMSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCi0gICAgQ29sb3IgcGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigyNiwgMjYsIDI2LCAweDREKTsg
fQorICAgIENvbG9yIHBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBTUkdCQTx1aW50OF90PiB7IDI2LCAyNiwgMjYsIDc3IH0gOyB9CiAjZW5kaWYKIAog
ICAgIGJvb2wgc2hvdWxkSGF2ZVNwaW5CdXR0b24oY29uc3QgSFRNTElucHV0RWxlbWVudCYpIGNv
bnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbQkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NDgsOSArODQ4LDkgQEAgYm9vbCBS
ZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUcmFjayhjbwogCiAgICAgICAgIENHQ29udGV4dFJl
ZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwogICAg
ICAgICBpZiAocmVhZG9ubHkpCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0
cm9rZUNvbG9yKG1ha2VTaW1wbGVDb2xvcigxNzgsIDE3OCwgMTc4KSk7CisgICAgICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKFNSR0JBPHVpbnQ4X3Q+IHsgMTc4LCAx
NzgsIDE3OCB9KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5zZXRTdHJva2VDb2xvcihtYWtlU2ltcGxlQ29sb3IoNzYsIDc2LCA3NikpOworICAgICAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihTUkdCQTx1aW50OF90PiB7IDc2
LCA3NiwgNzYgfSk7CiAKICAgICAgICAgUmV0YWluUHRyPENHTXV0YWJsZVBhdGhSZWY+IHJvdW5k
ZWRSZWN0UGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKICAgICAgICAgQ0dQ
YXRoQWRkUm91bmRlZFJlY3Qocm91bmRlZFJlY3RQYXRoLmdldCgpLCAwLCB0cmFja0NsaXAsIGNv
cm5lcldpZHRoLCBjb3JuZXJIZWlnaHQpOwpAQCAtOTE3LDEwICs5MTcsMTAgQEAgYm9vbCBSZW5k
ZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0JhcihjbwogCiAgICAgY29uc3QgZmxvYXQgdmVydGlj
YWxSZW5kZXJpbmdQb3NpdGlvbiA9IHJlY3QueSgpICsgdmVydGljYWxPZmZzZXQ7CiAgICAgYXV0
byBzdHJva2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEg
eyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQ
b2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVp
Z2h0IC0gMSkgfSk7Ci0gICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMGYsIG1h
a2VTaW1wbGVDb2xvcigxNDEsIDE0MSwgMTQxKSB9KTsKLSAgICBzdHJva2VHcmFkaWVudC0+YWRk
Q29sb3JTdG9wKHsgMC40NWYsIG1ha2VTaW1wbGVDb2xvcigyMzgsIDIzOCwgMjM4KSB9KTsKLSAg
ICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC41NWYsIG1ha2VTaW1wbGVDb2xvcigy
MzgsIDIzOCwgMjM4KSB9KTsKLSAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMS4w
ZiwgbWFrZVNpbXBsZUNvbG9yKDE0MSwgMTQxLCAxNDEpIH0pOworICAgIHN0cm9rZUdyYWRpZW50
LT5hZGRDb2xvclN0b3AoeyAwLjBmLCBTUkdCQTx1aW50OF90PiB7IDE0MSwgMTQxLCAxNDEgfSB9
KTsKKyAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC40NWYsIFNSR0JBPHVpbnQ4
X3Q+IHsgMjM4LCAyMzgsIDIzOCB9IH0pOworICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0
b3AoeyAwLjU1ZiwgU1JHQkE8dWludDhfdD4geyAyMzgsIDIzOCwgMjM4IH0gfSk7CisgICAgc3Ry
b2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEuMGYsIFNSR0JBPHVpbnQ4X3Q+IHsgMTQxLCAx
NDEsIDE0MSB9IH0pOwogICAgIGNvbnRleHQuc2V0U3Ryb2tlR3JhZGllbnQoV1RGTW92ZShzdHJv
a2VHcmFkaWVudCkpOwogCiAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsK
QEAgLTkzNyw4ICs5MzcsOCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFy
KGNvCiAKICAgICBmbG9hdCB1cHBlckdyYWRpZW50SGVpZ2h0ID0gcHJvZ3Jlc3NCYXJIZWlnaHQg
LyAyLjsKICAgICBhdXRvIHVwcGVyR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50
OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3Np
dGlvbiArIDAuNWYpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uICsgdXBwZXJHcmFkaWVudEhlaWdodCAtIDEuNSkgfSk7Ci0gICAgdXBwZXJHcmFkaWVudC0+
YWRkQ29sb3JTdG9wKHsgMC4wZiwgbWFrZVNpbXBsZUNvbG9yKDEzMywgMTMzLCAxMzMsIDE4OCkg
fSk7Ci0gICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMS4wZiwgbWFrZVNpbXBsZUNv
bG9yKDE4LCAxOCwgMTgsIDUxKSB9KTsKKyAgICB1cHBlckdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
eyAwLjBmLCBTUkdCQTx1aW50OF90PiB7IDEzMywgMTMzLCAxMzMsIDE4OCB9IH0pOworICAgIHVw
cGVyR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEuMGYsIFNSR0JBPHVpbnQ4X3Q+IHsgMTgsIDE4
LCAxOCwgNTEgfSB9KTsKICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChXVEZNb3ZlKHVwcGVy
R3JhZGllbnQpKTsKIAogICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KHJlY3QueCgpLCB2
ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uLCByZWN0LndpZHRoKCksIHVwcGVyR3JhZGllbnRIZWln
aHQpKTsKQEAgLTk0OSwxOCArOTQ5LDE4IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJv
Z3Jlc3NCYXIoY28KICAgICAgICAgZG91YmxlIHBvc2l0aW9uID0gY2xhbXBUbyhyZW5kZXJQcm9n
cmVzcy5wb3NpdGlvbigpLCAwLjAsIDEuMCk7CiAgICAgICAgIGZsb2F0IGJhcldpZHRoID0gcG9z
aXRpb24gKiByZWN0LndpZHRoKCk7CiAgICAgICAgIGF1dG8gYmFyR3JhZGllbnQgPSBHcmFkaWVu
dDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVy
dGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNWYpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKLSAgICAg
ICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMGYsIG1ha2VTaW1wbGVDb2xvcigxOTUs
IDIxNywgMjQ3KSB9KTsKLSAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuNDVm
LCBtYWtlU2ltcGxlQ29sb3IoMTE4LCAxNjQsIDIyOCkgfSk7Ci0gICAgICAgIGJhckdyYWRpZW50
LT5hZGRDb2xvclN0b3AoeyAwLjQ5ZiwgbWFrZVNpbXBsZUNvbG9yKDExOCwgMTY0LCAyMjgpIH0p
OwotICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC41MWYsIG1ha2VTaW1wbGVD
b2xvcigzNiwgMTE0LCAyMTApIH0pOwotICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9w
KHsgMC41NWYsIG1ha2VTaW1wbGVDb2xvcigzNiwgMTE0LCAyMTApIH0pOwotICAgICAgICBiYXJH
cmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMS4wZiwgbWFrZVNpbXBsZUNvbG9yKDU3LCAxNDIsIDI0
NCkgfSk7CisgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjBmLCBTUkdCQTx1
aW50OF90PiB7IDE5NSwgMjE3LCAyNDcgfSB9KTsKKyAgICAgICAgYmFyR3JhZGllbnQtPmFkZENv
bG9yU3RvcCh7IDAuNDVmLCBTUkdCQTx1aW50OF90PiB7IDExOCwgMTY0LCAyMjggfSB9KTsKKyAg
ICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuNDlmLCBTUkdCQTx1aW50OF90PiB7
IDExOCwgMTY0LCAyMjggfSB9KTsKKyAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7
IDAuNTFmLCBTUkdCQTx1aW50OF90PiB7IDM2LCAxMTQsIDIxMCB9IH0pOworICAgICAgICBiYXJH
cmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC41NWYsIFNSR0JBPHVpbnQ4X3Q+IHsgMzYsIDExNCwg
MjEwIH0gfSk7CisgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLjBmLCBTUkdC
QTx1aW50OF90PiB7IDU3LCAxNDIsIDI0NCB9IH0pOwogICAgICAgICBjb250ZXh0LnNldEZpbGxH
cmFkaWVudChXVEZNb3ZlKGJhckdyYWRpZW50KSk7CiAKICAgICAgICAgYXV0byBiYXJTdHJva2VH
cmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBv
aW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0
LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkg
fSk7Ci0gICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjBmLCBtYWtl
U2ltcGxlQ29sb3IoOTUsIDEwNywgMTgzKSB9KTsKLSAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQt
PmFkZENvbG9yU3RvcCh7IDAuNWYsIG1ha2VTaW1wbGVDb2xvcig2NiwgMTA2LCAxNzQsIDI0MCkg
fSk7Ci0gICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLjBmLCBtYWtl
U2ltcGxlQ29sb3IoMzgsIDEwNCwgMTY2KSB9KTsKKyAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQt
PmFkZENvbG9yU3RvcCh7IDAuMGYsIFNSR0JBPHVpbnQ4X3Q+IHsgOTUsIDEwNywgMTgzIH0gfSk7
CisgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjVmLCBTUkdCQTx1
aW50OF90PiB7IDY2LCAxMDYsIDE3NCwgMjQwIH0gfSk7CisgICAgICAgIGJhclN0cm9rZUdyYWRp
ZW50LT5hZGRDb2xvclN0b3AoeyAxLjBmLCBTUkdCQTx1aW50OF90PiB7IDM4LCAxMDQsIDE2NiB9
IH0pOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KFdURk1vdmUoYmFyU3Ryb2tl
R3JhZGllbnQpKTsKIAogICAgICAgICBQYXRoIGJhclBhdGg7CkBAIC0xMzgzLDEwICsxMzgzLDEw
IEBAIENvbG9yIFJlbmRlclRoZW1lSU9TOjpzeXN0ZW1Db2xvcihDU1NWYWwKIGNvbnN0IENHU2l6
ZSBhdHRhY2htZW50U2l6ZSA9IHsgMTYwLCAxMTkgfTsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2ht
ZW50Qm9yZGVyUmFkaXVzID0gMTY7Ci1jb25zdGV4cHIgYXV0byBhdHRhY2htZW50Qm9yZGVyQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA0LCAyMDQsIDIwNCk7Citjb25zdGV4cHIgYXV0byBhdHRh
Y2htZW50Qm9yZGVyQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDIwNCwgMjA0LCAyMDQgfTsKIHN0
YXRpYyBDR0Zsb2F0IGF0dGFjaG1lbnRCb3JkZXJUaGlja25lc3MgPSAxOwogCi1jb25zdGV4cHIg
YXV0byBhdHRhY2htZW50UHJvZ3Jlc3NDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMjIsIDIyMiwg
MjIyKTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRQcm9ncmVzc0NvbG9yID0gU1JHQkE8dWlu
dDhfdD4geyAyMjIsIDIyMiwgMjIyIH07CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQcm9ncmVz
c0JvcmRlclRoaWNrbmVzcyA9IDM7CiAKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFByb2dyZXNz
U2l6ZSA9IDM2OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MDEsNyArNTAxLDcgQEAgc3RhdGljIFNS
R0JBPHVpbnQ4X3Q+IG1lbnVCYWNrZ3JvdW5kQ29sbwogICAgIE5TVUludGVnZXIgcGl4ZWxbNF07
CiAgICAgW29mZnNjcmVlblJlcCBnZXRQaXhlbDpwaXhlbCBhdFg6MCB5OjBdOwogCi0gICAgcmV0
dXJuIG1ha2VTaW1wbGVDb2xvcihwaXhlbFswXSwgcGl4ZWxbMV0sIHBpeGVsWzJdLCBwaXhlbFsz
XSk7CisgICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4ocGl4ZWxbMF0sIHBp
eGVsWzFdLCBwaXhlbFsyXSwgcGl4ZWxbM10pOwogfQogCiBDb2xvciBSZW5kZXJUaGVtZU1hYzo6
c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlELCBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6
T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKQEAgLTczNywxMSArNzM3LDExIEBAIENvbG9yIFJlbmRl
clRoZW1lTWFjOjpzeXN0ZW1Db2xvcihDU1NWYWwKICAgICAgICAgY2FzZSBDU1NWYWx1ZVRocmVl
ZGZhY2U6CiAgICAgICAgICAgICAvLyBXZSBzZWxlY3RlZCB0aGlzIHZhbHVlIGluc3RlYWQgb2Yg
W05TQ29sb3IgY29udHJvbENvbG9yXSB0byBhdm9pZCB3ZWJzaXRlIGluY29tcGF0aWJpbGl0aWVz
LgogICAgICAgICAgICAgLy8gV2UgbWF5IHdhbnQgdG8gY29uc2lkZXIgY2hhbmdpbmcgdG8gW05T
Q29sb3IgY29udHJvbENvbG9yXSBzb21lIGRheS4KLSAgICAgICAgICAgIHJldHVybiBtYWtlU2lt
cGxlQ29sb3IoMTkyLCAxOTIsIDE5Mik7CisgICAgICAgICAgICByZXR1cm4gQ29sb3I6OmxpZ2h0
R3JheTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlSW5mb2JhY2tncm91bmQ6CiAgICAgICAgICAg
ICAvLyBObyBjb3JyZXNwb25kaW5nIE5TQ29sb3IgZm9yIHRoaXMgc28gd2UgdXNlIGEgaGFyZCBj
b2RlZCB2YWx1ZS4KLSAgICAgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMjUxLCAyNTIs
IDE5Nyk7CisgICAgICAgICAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAyNTEsIDI1MiwgMTk3
IH07CiAKICAgICAgICAgY2FzZSBDU1NWYWx1ZU1lbnU6CiAgICAgICAgICAgICByZXR1cm4gbWVu
dUJhY2tncm91bmRDb2xvcigpOwpAQCAtNzUwLDMwICs3NTAsMzAgQEAgQ29sb3IgUmVuZGVyVGhl
bWVNYWM6OnN5c3RlbUNvbG9yKENTU1ZhbAogICAgICAgICBjYXNlIENTU1ZhbHVlQWN0aXZlYm9y
ZGVyOgogICAgICAgICAgICAgLy8gSGFyZGNvZGVkIHRvIGF2b2lkIGV4cG9zaW5nIGEgdXNlciBh
cHBlYXJhbmNlIHByZWZlcmVuY2UgdG8gdGhlIHdlYiBmb3IgZmluZ2VycHJpbnRpbmcuCiAgICAg
ICAgICAgICBpZiAobG9jYWxBcHBlYXJhbmNlLnVzaW5nRGFya0FwcGVhcmFuY2UoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4geyBtYWtlU2ltcGxlQ29sb3IoMjYsIDE2OSwgMjU1KSwgQ29sb3I6
OlNlbWFudGljIH07Ci0gICAgICAgICAgICByZXR1cm4geyBtYWtlU2ltcGxlQ29sb3IoMCwgMTAz
LCAyNDQpLCBDb2xvcjo6U2VtYW50aWMgfTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyBTUkdC
QTx1aW50OF90PiB7IDI2LCAxNjksIDI1NSB9LCBDb2xvcjo6U2VtYW50aWMgfTsKKyAgICAgICAg
ICAgIHJldHVybiB7IFNSR0JBPHVpbnQ4X3Q+IHsgMCwgMTAzLCAyNDQgfSwgQ29sb3I6OlNlbWFu
dGljIH07CiAKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtQ29udHJvbEFjY2VudDoK
ICAgICAgICAgICAgIC8vIEhhcmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVzZXIgYXBwZWFy
YW5jZSBwcmVmZXJlbmNlIHRvIHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgogICAgICAgICAg
ICAgLy8gU2FtZSBjb2xvciBpbiBsaWdodCBhbmQgZGFyayBhcHBlYXJhbmNlcy4KLSAgICAgICAg
ICAgIHJldHVybiB7IG1ha2VTaW1wbGVDb2xvcigwLCAxMjIsIDI1NSksIENvbG9yOjpTZW1hbnRp
YyB9OworICAgICAgICAgICAgcmV0dXJuIHsgU1JHQkE8dWludDhfdD4geyAwLCAxMjIsIDI1NSB9
LCBDb2xvcjo6U2VtYW50aWMgfTsKIAogICAgICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1T
ZWxlY3RlZENvbnRlbnRCYWNrZ3JvdW5kOgogICAgICAgICAgICAgLy8gSGFyZGNvZGVkIHRvIGF2
b2lkIGV4cG9zaW5nIGEgdXNlciBhcHBlYXJhbmNlIHByZWZlcmVuY2UgdG8gdGhlIHdlYiBmb3Ig
ZmluZ2VycHJpbnRpbmcuCiAgICAgICAgICAgICBpZiAobG9jYWxBcHBlYXJhbmNlLnVzaW5nRGFy
a0FwcGVhcmFuY2UoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4geyBtYWtlU2ltcGxlQ29sb3Io
MCwgODgsIDIwOCksIENvbG9yOjpTZW1hbnRpYyB9OwotICAgICAgICAgICAgcmV0dXJuIHsgbWFr
ZVNpbXBsZUNvbG9yKDAsIDk5LCAyMjUpLCBDb2xvcjo6U2VtYW50aWMgfTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4geyBTUkdCQTx1aW50OF90PiB7IDAsIDg4LCAyMDggfSwgQ29sb3I6OlNlbWFu
dGljIH07CisgICAgICAgICAgICByZXR1cm4geyBTUkdCQTx1aW50OF90PiB7IDAsIDk5LCAyMjUg
fSwgQ29sb3I6OlNlbWFudGljIH07CiAKICAgICAgICAgY2FzZSBDU1NWYWx1ZUhpZ2hsaWdodDoK
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2VsZWN0ZWRUZXh0QmFja2dyb3VuZDoK
ICAgICAgICAgICAgIC8vIEhhcmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVzZXIgYXBwZWFy
YW5jZSBwcmVmZXJlbmNlIHRvIHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgogICAgICAgICAg
ICAgaWYgKGxvY2FsQXBwZWFyYW5jZS51c2luZ0RhcmtBcHBlYXJhbmNlKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHsgbWFrZVNpbXBsZUNvbG9yKDYzLCA5OSwgMTM5LCAyMDQpLCBDb2xvcjo6
U2VtYW50aWMgfTsKLSAgICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVDb2xvcigxMjgsIDE4
OCwgMjU0LCAxNTMpLCBDb2xvcjo6U2VtYW50aWMgfTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
eyBTUkdCQTx1aW50OF90PiB7IDYzLCA5OSwgMTM5LCAyMDQgfSwgQ29sb3I6OlNlbWFudGljIH07
CisgICAgICAgICAgICByZXR1cm4geyBTUkdCQTx1aW50OF90PiB7IDEyOCwgMTg4LCAyNTQsIDE1
MyB9LCBDb2xvcjo6U2VtYW50aWMgfTsKIAogI2lmICFIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JU
KQogICAgICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1Db250YWluZXJCb3JkZXI6Ci0gICAg
ICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDE5NywgMTk3LCAxOTcpOworICAgICAgICAg
ICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgMTk3LCAxOTcsIDE5NyB9OwogI2VuZGlmCiAKICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtRXZlbkFsdGVybmF0aW5nQ29udGVudEJhY2tn
cm91bmQ6IHsKQEAgLTE1OTIsOCArMTU5Miw4IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50
TWVudUxpc3RCdXR0b24KICAgICB9OwogICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFBhdGgo
UGF0aDo6cG9seWdvblBhdGhGcm9tUG9pbnRzKGFycm93MikpOwogCi0gICAgY29uc3RleHByIGF1
dG8gbGVmdFNlcGFyYXRvckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDQwKTsKLSAg
ICBjb25zdGV4cHIgYXV0byByaWdodFNlcGFyYXRvckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1
NSwgMjU1LCAyNTUsIDQwKTsKKyAgICBjb25zdGV4cHIgYXV0byBsZWZ0U2VwYXJhdG9yQ29sb3Ig
PSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoNDApOworICAgIGNvbnN0ZXhwciBhdXRvIHJp
Z2h0U2VwYXJhdG9yQ29sb3IgPSBDb2xvcjo6d2hpdGUuY29sb3JXaXRoQWxwaGEoNDApOwogCiAg
ICAgLy8gRklYTUU6IFNob3VsZCB0aGUgc2VwYXJhdG9yIHRoaWNrbmVzcyBhbmQgc3BhY2UgYmUg
c2NhbGVkIHVwIGJ5IGZvbnRTY2FsZT8KICAgICBpbnQgc2VwYXJhdG9yU3BhY2UgPSAyOyAvLyBE
ZWxpYmVyYXRlbHkgaWdub3JlcyB6b29tIHNpbmNlIGl0IGxvb2tzIG5pY2VyIGlmIGl0IHN0YXlz
IHRoaW4uCkBAIC0yNDEzLDggKzI0MTMsOCBAQCBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRJY29u
U2VsZWN0aW9uQm9yCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZFJhZGl1
cyA9IDM7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRJY29uVG9UaXRsZU1hcmdpbiA9IDI7CiAK
LWNvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBs
ZUNvbG9yKDAsIDAsIDAsIDMwKTsKLWNvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRJY29uQm9yZGVy
Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSwgMTI1KTsKK2NvbnN0ZXhwciBh
dXRvIGF0dGFjaG1lbnRJY29uQmFja2dyb3VuZENvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0
aEFscGhhKDMwKTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRJY29uQm9yZGVyQ29sb3IgPSBD
b2xvcjo6d2hpdGUuY29sb3JXaXRoQWxwaGEoMTI1KTsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2ht
ZW50VGl0bGVGb250U2l6ZSA9IDEyOwogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50VGl0bGVCYWNr
Z3JvdW5kUmFkaXVzID0gMzsKQEAgLTI0MjIsMjMgKzI0MjIsMjMgQEAgY29uc3QgQ0dGbG9hdCBh
dHRhY2htZW50VGl0bGVCYWNrZ3JvdW5kUAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50VGl0bGVN
YXhpbXVtV2lkdGggPSAxMDAgLSAoYXR0YWNobWVudFRpdGxlQmFja2dyb3VuZFBhZGRpbmcgKiAy
KTsKIGNvbnN0IENGSW5kZXggYXR0YWNobWVudFRpdGxlTWF4aW11bUxpbmVDb3VudCA9IDI7CiAK
LWNvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlQmFja2dyb3VuZENvbG9yID0g
bWFrZVNpbXBsZUNvbG9yKDIwNCwgMjA0LCAyMDQpOwotY29uc3RleHByIGF1dG8gYXR0YWNobWVu
dFRpdGxlSW5hY3RpdmVUZXh0Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTAwLCAxMDAsIDEwMCk7
Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50VGl0bGVJbmFjdGl2ZUJhY2tncm91bmRDb2xvciA9
IFNSR0JBPHVpbnQ4X3Q+IHsgMjA0LCAyMDQsIDIwNCB9OworY29uc3RleHByIGF1dG8gYXR0YWNo
bWVudFRpdGxlSW5hY3RpdmVUZXh0Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDEwMCwgMTAwLCAx
MDAgfTsKIAogY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50U3VidGl0bGVGb250U2l6ZSA9IDEwOwog
Y29uc3QgaW50IGF0dGFjaG1lbnRTdWJ0aXRsZVdpZHRoSW5jcmVtZW50ID0gMTA7Ci1jb25zdGV4
cHIgYXV0byBhdHRhY2htZW50U3VidGl0bGVUZXh0Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoODIs
IDE0NSwgMjE0KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRTdWJ0aXRsZVRleHRDb2xvciA9
IFNSR0JBPHVpbnQ4X3Q+IHsgODIsIDE0NSwgMjE0IH07CiAKIGNvbnN0IENHRmxvYXQgYXR0YWNo
bWVudFByb2dyZXNzQmFyV2lkdGggPSAzMDsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFByb2dy
ZXNzQmFySGVpZ2h0ID0gNTsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFByb2dyZXNzQmFyT2Zm
c2V0ID0gLTk7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQcm9ncmVzc0JhckJvcmRlcldpZHRo
ID0gMTsKLWNvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJhY2tncm91bmRDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCA4OSk7Citjb25zdGV4cHIgYXV0byBhdHRhY2ht
ZW50UHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxw
aGEoODkpOwogY29uc3RleHByIGF1dG8gYXR0YWNobWVudFByb2dyZXNzQmFyRmlsbENvbG9yID0g
Q29sb3I6OndoaXRlOwotY29uc3RleHByIGF1dG8gYXR0YWNobWVudFByb2dyZXNzQmFyQm9yZGVy
Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMTI4KTsKK2NvbnN0ZXhwciBhdXRvIGF0
dGFjaG1lbnRQcm9ncmVzc0JhckJvcmRlckNvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFs
cGhhKDEyOCk7CiAKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFBsYWNlaG9sZGVyQm9yZGVyUmFk
aXVzID0gNTsKLWNvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRQbGFjZWhvbGRlckJvcmRlckNvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDU2KTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1l
bnRQbGFjZWhvbGRlckJvcmRlckNvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhKDU2
KTsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFBsYWNlaG9sZGVyQm9yZGVyV2lkdGggPSAyOwog
Y29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJEYXNoTGVuZ3RoID0gNjsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCShy
ZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVX
aW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODgsMTkgKzI4OCwxOSBAQCBib29sIFJlbmRlclRo
ZW1lV2luOjpzdXBwb3J0c0hvdmVyKGNvbnN0CiBDb2xvciBSZW5kZXJUaGVtZVdpbjo6cGxhdGZv
cm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9w
dGlvbnM+KSBjb25zdAogewogICAgIENPTE9SUkVGIGNvbG9yID0gR2V0U3lzQ29sb3IoQ09MT1Jf
SElHSExJR0hUKTsKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKEdldFJWYWx1ZShjb2xvciks
IEdldEdWYWx1ZShjb2xvciksIEdldEJWYWx1ZShjb2xvcikpOworICAgIHJldHVybiBTUkdCQTx1
aW50OF90PiB7IEdldFJWYWx1ZShjb2xvciksIEdldEdWYWx1ZShjb2xvciksIEdldEJWYWx1ZShj
b2xvcikgfTsKIH0KIAogQ29sb3IgUmVuZGVyVGhlbWVXaW46OnBsYXRmb3JtSW5hY3RpdmVTZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IoT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+KSBjb25z
dAogewogICAgIC8vIFRoaXMgY29sb3IgbWF0Y2hlcyBGaXJlZm94LgotICAgIHJldHVybiBtYWtl
U2ltcGxlQ29sb3IoMTc2LCAxNzYsIDE3Nik7CisgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsg
MTc2LCAxNzYsIDE3NiB9OwogfQogCiBDb2xvciBSZW5kZXJUaGVtZVdpbjo6cGxhdGZvcm1BY3Rp
dmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+
KSBjb25zdAogewogICAgIENPTE9SUkVGIGNvbG9yID0gR2V0U3lzQ29sb3IoQ09MT1JfSElHSExJ
R0hUVEVYVCk7Ci0gICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihHZXRSVmFsdWUoY29sb3IpLCBH
ZXRHVmFsdWUoY29sb3IpLCBHZXRCVmFsdWUoY29sb3IpKTsKKyAgICByZXR1cm4gU1JHQkE8dWlu
dDhfdD4geyBHZXRSVmFsdWUoY29sb3IpLCBHZXRHVmFsdWUoY29sb3IpLCBHZXRCVmFsdWUoY29s
b3IpIH07CiB9CiAKIENvbG9yIFJlbmRlclRoZW1lV2luOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPiBvcHRpb25z
KSBjb25zdApAQCAtMTAwOSw3ICsxMDA5LDcgQEAgQ29sb3IgUmVuZGVyVGhlbWVXaW46OnN5c3Rl
bUNvbG9yKENTU1ZhbAogICAgICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKGNz
c1ZhbHVlSWQsIG9wdGlvbnMpOwogCiAgICAgQ09MT1JSRUYgY29sb3IgPSBHZXRTeXNDb2xvcihz
eXNDb2xvckluZGV4KTsKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKEdldFJWYWx1ZShjb2xv
ciksIEdldEdWYWx1ZShjb2xvciksIEdldEJWYWx1ZShjb2xvcikpOworICAgIHJldHVybiBTUkdC
QTx1aW50OF90PiB7IEdldFJWYWx1ZShjb2xvciksIEdldEdWYWx1ZShjb2xvciksIEdldEJWYWx1
ZShjb2xvcikgfTsKIH0KIAogI2lmIEVOQUJMRShWSURFTykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAJKHJl
dmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQg
cGFpbnRGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmwKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTaGFkb3dEYXRhPiBkZWJ1Z1NoYWRvdyA9IG51bGxwdHI7CiAgICAgaWYgKGZsb3cuc2V0dGlu
Z3MoKS5zaW1wbGVMaW5lTGF5b3V0RGVidWdCb3JkZXJzRW5hYmxlZCgpKSB7Ci0gICAgICAgIGRl
YnVnU2hhZG93ID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCgwLCAwKSwgMTAsIDIw
LCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBtYWtlU2ltcGxlQ29sb3IoMCwgMjU1LCAwLCAy
MDApKTsKKyAgICAgICAgZGVidWdTaGFkb3cgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KEludFBv
aW50KDAsIDApLCAxMCwgMjAsIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9yOjpncmVl
bi5jb2xvcldpdGhBbHBoYSgyMDApKTsKICAgICAgICAgdGV4dFBhaW50ZXIuc2V0U2hhZG93KGRl
YnVnU2hhZG93LmdldCgpKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCShyZXZpc2lvbiAyNjQ0
NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgUmVuZGVyTWF0aE1M
QmxvY2s6OnBhaW50KFBhaW50SW5mbyYKIAogICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVRo
aWNrbmVzcygxLjBmKTsKICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0
cm9rZSk7Ci0gICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IobWFrZVNpbXBsZUNvbG9y
KDAsIDAsIDI1NSkpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yOjpi
bHVlKTsKIAogICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQs
IEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lk
dGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpKTsKICAgICBpbmZvLmNvbnRleHQoKS5kcmF3
TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNl
dFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSwgSW50UG9pbnQoYWRqdXN0ZWRQYWlu
dE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zm
c2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpKSk7CkBAIC0xMjgsMTMgKzEyOCwx
MyBAQCB2b2lkIFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChQYWludEluZm8mCiAKICAgICBpbnQg
dG9wU3RhcnQgPSBwYWRkaW5nVG9wKCk7CiAKLSAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VD
b2xvcihtYWtlU2ltcGxlQ29sb3IoMCwgMjU1LCAwKSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0
U3Ryb2tlQ29sb3IoQ29sb3I6OmdyZWVuKTsKIAogICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5l
KEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0Lnko
KSArIHRvcFN0YXJ0KSwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNu
YXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHRvcFN0YXJ0KSk7
CiAKICAgICBpbnQgYmFzZWxpbmUgPSByb3VuZFRvSW50KGJhc2VsaW5lUG9zaXRpb24oQWxwaGFi
ZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFsTGluZSkpOwogCi0gICAgaW5mby5jb250ZXh0
KCkuc2V0U3Ryb2tlQ29sb3IobWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCkpOworICAgIGluZm8u
Y29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yOjpyZWQpOwogCiAgICAgaW5mby5jb250ZXh0
KCkuZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFp
bnRPZmZzZXQueSgpICsgYmFzZWxpbmUpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0Lngo
KSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsg
YmFzZWxpbmUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyNiw3ICsy
MDI2LDcgQEAgQ29sb3IgUmVuZGVyU3R5bGU6OmNvbG9yUmVzb2x2aW5nQ3VycmVudAogICAgIGlm
IChpc0N1cnJlbnRDb2xvcihyZXN1bHQpKSB7CiAgICAgICAgIGF1dG8gYm9yZGVyU3R5bGUgPSBj
b21wdXRlQm9yZGVyU3R5bGUoKTsKICAgICAgICAgaWYgKCF2aXNpdGVkTGluayAmJiAoYm9yZGVy
U3R5bGUgPT0gQm9yZGVyU3R5bGU6Okluc2V0IHx8IGJvcmRlclN0eWxlID09IEJvcmRlclN0eWxl
OjpPdXRzZXQgfHwgYm9yZGVyU3R5bGUgPT0gQm9yZGVyU3R5bGU6OlJpZGdlIHx8IGJvcmRlclN0
eWxlID09IEJvcmRlclN0eWxlOjpHcm9vdmUpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VTaW1w
bGVDb2xvcigyMzgsIDIzOCwgMjM4KTsKKyAgICAgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90
PiB7IDIzOCwgMjM4LCAyMzggfTsKIAogICAgICAgICByZXR1cm4gdmlzaXRlZExpbmsgPyB2aXNp
dGVkTGlua0NvbG9yKCkgOiBjb2xvcigpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAyNjQ0NzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzMsMTAgKzczLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGlu
aXRpYWxTdHJva2VQYWludFVyaSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgc3RhdGljIFZl
Y3RvcjxTVkdMZW5ndGhWYWx1ZT4gaW5pdGlhbFN0cm9rZURhc2hBcnJheSgpIHsgcmV0dXJuIHsg
fTsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsU3RvcE9wYWNpdHkoKSB7IHJldHVybiAxOyB9
Ci0gICAgc3RhdGljIENvbG9yIGluaXRpYWxTdG9wQ29sb3IoKSB7IHJldHVybiBtYWtlU2ltcGxl
Q29sb3IoMCwgMCwgMCk7IH0KKyAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbFN0b3BDb2xvcigpIHsg
cmV0dXJuIENvbG9yOjpibGFjazsgfQogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsRmxvb2RPcGFj
aXR5KCkgeyByZXR1cm4gMTsgfQotICAgIHN0YXRpYyBDb2xvciBpbml0aWFsRmxvb2RDb2xvcigp
IHsgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwKTsgfQotICAgIHN0YXRpYyBDb2xvciBp
bml0aWFsTGlnaHRpbmdDb2xvcigpIHsgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwg
MjU1KTsgfQorICAgIHN0YXRpYyBDb2xvciBpbml0aWFsRmxvb2RDb2xvcigpIHsgcmV0dXJuIENv
bG9yOjpibGFjazsgfQorICAgIHN0YXRpYyBDb2xvciBpbml0aWFsTGlnaHRpbmdDb2xvcigpIHsg
cmV0dXJuIENvbG9yOjp3aGl0ZTsgfQogICAgIHN0YXRpYyBTaGFkb3dEYXRhKiBpbml0aWFsU2hh
ZG93KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhbE1hc2tl
clJlc291cmNlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIGluaXRp
YWxNYXJrZXJTdGFydFJlc291cmNlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlv
bkltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgJKHJldmlzaW9uIDI2NDQ3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVG
dW5jdGlvbkltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGZsb2F0IGJsdWUgPSBCYXNlOjphbmltYXRlKHByb2dyZXNzLCByZXBlYXRDb3VudCwg
c2ltcGxlRnJvbS5ibHVlLCBzaW1wbGVUby5ibHVlLCBzaW1wbGVUb0F0RW5kT2ZEdXJhdGlvbi5i
bHVlLCBzaW1wbGVBbmltYXRlZC5ibHVlKTsKICAgICAgICAgZmxvYXQgYWxwaGEgPSBCYXNlOjph
bmltYXRlKHByb2dyZXNzLCByZXBlYXRDb3VudCwgc2ltcGxlRnJvbS5hbHBoYSwgc2ltcGxlVG8u
YWxwaGEsIHNpbXBsZVRvQXRFbmRPZkR1cmF0aW9uLmFscGhhLCBzaW1wbGVBbmltYXRlZC5hbHBo
YSk7CiAgICAgICAgIAotICAgICAgICBhbmltYXRlZCA9IG1ha2VTaW1wbGVDb2xvcihyb3VuZEFu
ZENsYW1wQ29sb3JDaGFubmVsKHJlZCksIHJvdW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoZ3JlZW4p
LCByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGJsdWUpLCByb3VuZEFuZENsYW1wQ29sb3JDaGFu
bmVsKGFscGhhKSk7CisgICAgICAgIGFuaW1hdGVkID0gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNS
R0JBPihzdGQ6Omxyb3VuZChyZWQpLCBzdGQ6Omxyb3VuZChncmVlbiksIHN0ZDo6bHJvdW5kKGJs
dWUpLCBzdGQ6Omxyb3VuZChhbHBoYSkpOwogICAgIH0KIAogICAgIE9wdGlvbmFsPGZsb2F0PiBj
YWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBT
dHJpbmcmIHRvKSBjb25zdCBvdmVycmlkZQpAQCAtMTE0LDI3ICsxMTQsMTMgQEAgcHVibGljOgog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBpbmxpbmUgdWludDhfdCByb3VuZEFuZENsYW1wQ29sb3JD
aGFubmVsKGludCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmNsYW1wKHZhbHVl
LCAwLCAyNTUpOwotICAgIH0KLQotICAgIGlubGluZSB1aW50OF90IHJvdW5kQW5kQ2xhbXBDb2xv
ckNoYW5uZWwoZmxvYXQgdmFsdWUpCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpjbGFtcChz
dGQ6OnJvdW5kZih2YWx1ZSksIDAuMGYsIDI1NS4wZik7Ci0gICAgfQotCiAgICAgdm9pZCBhZGRG
cm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCopIG92ZXJyaWRlCiAgICAgewogICAgICAgICBhdXRv
IHNpbXBsZUZyb20gPSBtX2Zyb20udG9TUkdCQUxvc3N5PHVpbnQ4X3Q+KCk7CiAgICAgICAgIGF1
dG8gc2ltcGxlVG8gPSBtX3RvLnRvU1JHQkFMb3NzeTx1aW50OF90PigpOwogCiAgICAgICAgIC8v
IElnbm9yZXMgYW55IGFscGhhIGFuZCBzZXRzIGFscGhhIG9uIHJlc3VsdCB0byAxMDAlIG9wYXF1
ZS4KLSAgICAgICAgbV90byA9IG1ha2VTaW1wbGVDb2xvcigKLSAgICAgICAgICAgIHJvdW5kQW5k
Q2xhbXBDb2xvckNoYW5uZWwoc2ltcGxlVG8ucmVkICsgc2ltcGxlRnJvbS5yZWQpLAotICAgICAg
ICAgICAgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChzaW1wbGVUby5ncmVlbiArIHNpbXBsZUZy
b20uZ3JlZW4pLAotICAgICAgICAgICAgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChzaW1wbGVU
by5ibHVlICsgc2ltcGxlRnJvbS5ibHVlKQotICAgICAgICApOworICAgICAgICBtX3RvID0gY2xh
bXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihzaW1wbGVUby5yZWQgKyBzaW1wbGVGcm9tLnJlZCwg
c2ltcGxlVG8uZ3JlZW4gKyBzaW1wbGVGcm9tLmdyZWVuLCBzaW1wbGVUby5ibHVlICsgc2ltcGxl
RnJvbS5ibHVlKTsKICAgICB9CiAKICAgICBzdGF0aWMgQ29sb3IgY29sb3JGcm9tU3RyaW5nKFNW
R0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA1LDEwICsxMDUsMTAgQEAgdm9pZCBNb2NrUGFnZU92ZXJsYXlDbGllbnQ6OmRy
YXdSZWN0KFBhZwogICAgIEZsb2F0UmVjdCBpbnNldFJlY3QgPSBvdmVybGF5LmJvdW5kcygpOwog
CiAgICAgaWYgKG92ZXJsYXkub3ZlcmxheVR5cGUoKSA9PSBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5
cGU6OkRvY3VtZW50KSB7Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IobWFrZVNpbXBs
ZUNvbG9yKDAsIDI1NSwgMCkpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9y
OjpncmVlbik7CiAgICAgICAgIGluc2V0UmVjdC5pbmZsYXRlKC01MCk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMjU1
KSk7CisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsdWUpOwogICAgICAg
ICBpbnNldFJlY3QuaW5mbGF0ZSgtMjApOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
dGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50
aWZpY2F0aW9uT3ZlcmxheS5tbQkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYkNvcmUv
dGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZp
ZXc6KFBsYXRmb3IKICAgICBfbGF5ZXIgPSBhZG9wdE5TKFtbQ0FUaWxlZExheWVyIGFsbG9jXSBp
bml0XSk7CiAgICAgW19sYXllciBzZXROYW1lOkAiV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9u
T3ZlcmxheSJdOwogICAgIFtfbGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBbX3ZpZXcg
Ym91bmRzXS5zaXplLndpZHRoLCBbX3ZpZXcgYm91bmRzXS5zaXplLmhlaWdodCldOwotICAgIFdl
YkNvcmU6OkNvbG9yIHZpZXdDb2xvciA9IGlzRGVwcmVjYXRlZCA/IFdlYkNvcmU6Om1ha2VTaW1w
bGVDb2xvcigyNTUsIDAsIDAsIDMyKSA6IFdlYkNvcmU6Om1ha2VTaW1wbGVDb2xvcigwLCAwLCAy
NTUsIDMyKTsKKyAgICBhdXRvIHZpZXdDb2xvciA9IGlzRGVwcmVjYXRlZCA/IFdlYkNvcmU6OkNv
bG9yOjpyZWQuY29sb3JXaXRoQWxwaGEoNTApIDogV2ViQ29yZTo6Q29sb3I6OmJsdWUuY29sb3JX
aXRoQWxwaGEoMzIpOwogICAgIFtfbGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29s
b3Iodmlld0NvbG9yKV07CiAgICAgW19sYXllciBzZXRaUG9zaXRpb246OTk5XTsKICAgICBbX2xh
eWVyIHNldERlbGVnYXRlOnNlbGZdOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDQ3MSkKKysr
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMjAtMDctMTYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJl
bW92ZSBmaW5hbCB2ZXN0aWdhdGVzIG9mIFNpbXBsZUNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0MzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfdGFwSGln
aGxpZ2h0Q29sb3JGb3JGYXN0Q2xpY2s6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
Q2xpZW50OjpzaG93UGFpbnRSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmlu
ZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6ZHJhd1Jl
Y3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6cGFpbnRTbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbToKKyAgICAgICAgUmVwbGFjZSBy
ZW1haW5pbmcgbWFrZVNpbXBsZUNvbG9yKCkgdXNlcy4KKwogMjAyMC0wNy0xNiAgUGVyIEFybmUg
Vm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQgc3lzY2Fs
bCB0byBXZWJDb250ZW50IHNhbmRib3gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
bW0JKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzE5LDcg
KzMxOSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnQKIAogI2lm
bmRlZiBOREVCVUcKICAgICBpZiAobV9pc09wYXF1ZSkKLSAgICAgICAgY29udGV4dC5maWxsUmVj
dChzY2FsZWRMYXllckJvdW5kcywgV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDI1NSwgNDcsIDE0
NikpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNjYWxlZExheWVyQm91bmRzLCBXZWJDb3Jl
OjpTUkdCQTx1aW50OF90PiB7IDI1NSwgNDcsIDE0NiB9KTsKICNlbmRpZgogCiAgICAgY29udGV4
dC5zY2FsZShtX3NjYWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMjY0NDcxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDM1Nyw3ICs0MzU3LDcgQEAgLSAodm9pZClfYmVjb21lRmly
c3RSZXNwb25kZXJXaXRoU2VsZWN0aQogLSAoV2ViQ29yZTo6Q29sb3IpX3RhcEhpZ2hsaWdodENv
bG9yRm9yRmFzdENsaWNrOihCT09MKWZvckZhc3RDbGljawogewogICAgIEFTU0VSVChfc2hvd0Rl
YnVnVGFwSGlnaGxpZ2h0c0ZvckZhc3RDbGlja2luZyk7Ci0gICAgcmV0dXJuIGZvckZhc3RDbGlj
ayA/IFdlYkNvcmU6Om1ha2VTaW1wbGVDb2xvcigwLCAyMjUsIDAsIDEyNykgOiBXZWJDb3JlOjpt
YWtlU2ltcGxlQ29sb3IoMjI1LCAwLCAwLCAxMjcpOworICAgIHJldHVybiBmb3JGYXN0Q2xpY2sg
PyBXZWJDb3JlOjpTUkdCQTx1aW50OF90PiB7IDAsIDIyNSwgMCwgMTI3IH0gOiBXZWJDb3JlOjpT
UkdCQTx1aW50OF90PiB7IDIyNSwgMCwgMCwgMTI3IH07CiB9CiAKIC0gKHZvaWQpX3NldERvdWJs
ZVRhcEdlc3R1cmVzRW5hYmxlZDooQk9PTCllbmFibGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckNsaWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
CShyZXZpc2lvbiAyNjQ0NzEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcsNyBA
QCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2hvd1BhaW50UmVjdChjCiAgICAgcGFpbnRMYXll
ci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwogICAgIHBhaW50TGF5ZXItPnNldFBv
c2l0aW9uKHJlY3QubG9jYXRpb24oKSk7CiAgICAgcGFpbnRMYXllci0+c2V0U2l6ZShyZWN0LnNp
emUoKSk7Ci0gICAgcGFpbnRMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKG1ha2VTaW1wbGVDb2xv
cigyNTUsIDAsIDAsIDUxKSk7CisgICAgcGFpbnRMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKENv
bG9yOjpyZWQuY29sb3JXaXRoQWxwaGEoNTEpKTsKIAogICAgIEtleWZyYW1lVmFsdWVMaXN0IGZh
ZGVLZXlmcmFtZXMoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOwogICAgIGZhZGVLZXlmcmFtZXMu
aW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwgMSkpOwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RmluZENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDgsOCArNTA4LDggQEAgdm9p
ZCBGaW5kQ29udHJvbGxlcjo6ZHJhd1JlY3QoUGFnZU92ZXJsYQogewogICAgIGNvbnN0IGludCBi
b3JkZXJXaWR0aCA9IDE7CiAKLSAgICBjb25zdGV4cHIgYXV0byBvdmVybGF5QmFja2dyb3VuZENv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKDI2LCAyNiwgMjYsIDY0KTsKLSAgICBjb25zdGV4cHIgYXV0
byBzaGFkb3dDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCAxMjgpOworICAgIGNvbnN0
ZXhwciBhdXRvIG92ZXJsYXlCYWNrZ3JvdW5kQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDI2LCAy
NiwgMjYsIDY0IH07CisgICAgY29uc3RleHByIGF1dG8gc2hhZG93Q29sb3IgPSBDb2xvcjo6Ymxh
Y2suY29sb3JXaXRoQWxwaGEoMTI4KTsKIAogICAgIEludFJlY3QgYm9yZGVySW5mbGF0ZWREaXJ0
eVJlY3QgPSBkaXJ0eVJlY3Q7CiAgICAgYm9yZGVySW5mbGF0ZWREaXJ0eVJlY3QuaW5mbGF0ZShi
b3JkZXJXaWR0aCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MTIsNyArMjQxMiw3IEBA
IHZvaWQgV2ViUGFnZTo6cGFpbnRTbmFwc2hvdEF0U2l6ZShjb25zdCAKIAogICAgIGlmIChvcHRp
b25zICYgU25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rpb25SZWN0YW5nbGUpIHsKICAgICAgICAg
RmxvYXRSZWN0IHNlbGVjdGlvblJlY3RhbmdsZSA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlv
bkJvdW5kcygpOwotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3IobWFrZVNp
bXBsZUNvbG9yKDI1NSwgMCwgMCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tl
Q29sb3IoQ29sb3I6OnJlZCk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zdHJva2VSZWN0KHNl
bGVjdGlvblJlY3RhbmdsZSwgMSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQko
cmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L0ZpbmRDb250cm9sbGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIGNv
bnN0IGludCB0b3RhbFZlcnRpY2FsTWFyZ2luID0gMTsKIAogY29uc3RleHByIE9wdGlvblNldDxU
ZXh0SW5kaWNhdG9yT3B0aW9uPiBmaW5kVGV4dEluZGljYXRvck9wdGlvbnMgeyBUZXh0SW5kaWNh
dG9yT3B0aW9uOjpJbmNsdWRlTWFyZ2luSWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIFRleHRJbmRp
Y2F0b3JPcHRpb246OkRvTm90Q2xpcFRvVmlzaWJsZVJlY3QgfTsKIAotY29uc3RleHByIGF1dG8g
aGlnaGxpZ2h0Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyMjgsIDU2KTsKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBoaWdobGlnaHRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAyMjgs
IDU2IH07CiAKIHZvaWQgRmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1M6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiBvdmVybGF5LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA3LTE2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZmluYWwgdmVzdGlnYXRlcyBvZiBTaW1wbGVD
b2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0
NDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkluZGljYXRlTGF5ZXIubW06CisgICAgICAgIFJlcGxhY2UgcmVtYWluaW5nIG1h
a2VTaW1wbGVDb2xvcigpIHVzZXMuCisKIDIwMjAtMDctMTUgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhIGZldyBtb3JlIHVzZXMgb2YgdGhlIHRlcm1z
IGJsYWNrL3doaXRlIGxpc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSW5kaWNhdGVMYXllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkluZGljYXRlTGF5ZXIubW0JKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSW5kaWNhdGVMYXllci5tbQkod29ya2luZyBj
b3B5KQpAQCAtNTAsNyArNTAsNyBAQCAtIChpZClpbml0V2l0aFdlYlZpZXc6KFdlYlZpZXcgKil3
ZWJWaWV3CiAgICAgc2VsZi5jb250ZW50c1NjYWxlID0gW1tfd2ViVmlldyB3aW5kb3ddIHNjcmVl
blNjYWxlXTsKIAogICAgIC8vIEJsdWUgaGlnaGxpZ2h0IGNvbG9yLgotICAgIGNvbnN0ZXhwciBh
dXRvIGhpZ2hsaWdodENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDExMSwgMTY4LCAyMjAsIDE2OCk7
CisgICAgY29uc3RleHByIGF1dG8gaGlnaGxpZ2h0Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDEx
MSwgMTY4LCAyMjAsIDE2OCB9OwogICAgIHNlbGYuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dD
b2xvcihoaWdobGlnaHRDb2xvcik7CiAKICAgICByZXR1cm4gc2VsZjsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDQ3MSkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA3
LTE2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZmlu
YWwgdmVzdGlnYXRlcyBvZiBTaW1wbGVDb2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKGNvbXBvc2l0aW9uVG9VbmRlcmxpbmVzKToK
KyAgICAgICAgUmVwbGFjZSByZW1haW5pbmcgbWFrZVNpbXBsZUNvbG9yKCkgdXNlcy4KKwogMjAy
MC0wNy0wNyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUGFydCAy
IG9mIFNpbXBsZUNvbG9yIGFuZCBTUkdCQTx1aW50OF90PiBhcmUgZXNzZW50aWFsbHkgdGhlIHNh
bWUgLSBsZXQncyBjb252ZXJnZSB0aGVtCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAkocmV2aXNpb24gMjY0NDcx
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDExICs3NCwxMSBAQCBzdGF0aWMgY29uc3QgaW50IGJv
cmRlclJhZGl1cyA9IDEyOwogc3RhdGljIGNvbnN0IGludCBib3JkZXJUaGlja25lc3MgPSAyOwog
CiAvLyBDb2xvcnMKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBiYWNrZ3JvdW5kQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMzIsIDMyLCAzMiwgMTYwKTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBib3Jk
ZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigxNjAsIDE2MCwgMTYwKTsKLXN0YXRpYyBjb25zdGV4
cHIgYXV0byBzbGlkZXJHdXR0ZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMCwgMjAsIDIwKTsK
LXN0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJCdXR0b25Db2xvciA9IG1ha2VTaW1wbGVDb2xv
cigxMjgsIDEyOCwgMTI4KTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byB0ZXh0Q29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gYmFja2dy
b3VuZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAzMiwgMzIsIDMyLCAxNjAgfTsKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBib3JkZXJDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTYwLCAxNjAsIDE2
MCB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlckd1dHRlckNvbG9yID0gU1JHQkE8dWlu
dDhfdD4geyAyMCwgMjAsIDIwIH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyQnV0dG9u
Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDEyOCwgMTI4LCAxMjggfTsKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byB0ZXh0Q29sb3IgPSBDb2xvcjo6d2hpdGU7CiAKIEhVREJ1dHRvbjo6SFVEQnV0dG9u
KEhVREJ1dHRvblR5cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQogICAgIDogSFVE
V2lkZ2V0KEludFJlY3QocG9zaXRpb24sIEludFNpemUoKSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMjY0NDcxKQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyODMsNyArNjI4Myw3IEBAIHN0
YXRpYyB2b2lkIGNvbXBvc2l0aW9uVG9VbmRlcmxpbmVzKGNvbnMKICAgICAgICAgdW5kZXJsaW5l
c1tpXS5lbmRPZmZzZXQgPSBjbGF1c2VzW2kgKyAxXTsKICAgICAgICAgQllURSBhdHRyaWJ1dGUg
PSBhdHRyaWJ1dGVzW2NsYXVzZXNbaV1dOwogICAgICAgICB1bmRlcmxpbmVzW2ldLnRoaWNrID0g
YXR0cmlidXRlID09IEFUVFJfVEFSR0VUX0NPTlZFUlRFRCB8fCBhdHRyaWJ1dGUgPT0gQVRUUl9U
QVJHRVRfTk9UQ09OVkVSVEVEOwotICAgICAgICB1bmRlcmxpbmVzW2ldLmNvbG9yID0gbWFrZVNp
bXBsZUNvbG9yKDAsIDAsIDApOworICAgICAgICB1bmRlcmxpbmVzW2ldLmNvbG9yID0gQ29sb3I6
OmJsYWNrOwogICAgIH0KIH0KIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NDkzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDctMTYgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBmaW5hbCB2ZXN0aWdhdGVzIG9mIFNp
bXBsZUNvbG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTQ0MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db2xvclRlc3RzLmNwcDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xvclRlc3RzLmNwcDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tOgorICAgICAg
ICBSZXBsYWNlIHJlbWFpbmluZyBtYWtlU2ltcGxlQ29sb3IoKSB1c2VzLgorCiAyMDIwLTA3LTE2
ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbY29uZmln
dXJlLXhjb2RlLWZvci1lbWJlZGRlZC1kZXZlbG9wbWVudF0gU3VwcG9ydCBUQkQgdmVyc2lvbiA0
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29sb3JUZXN0cy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbG9yVGVz
dHMuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvQ29sb3JUZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgVEVT
VChDb2xvciwgUkdCVG9IU0xfQmxhY2spCiAKIFRFU1QoQ29sb3IsIFJHQlRvSFNMX1JlZCkKIHsK
LSAgICBDb2xvciBjb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDApOworICAgIENvbG9y
IGNvbG9yID0gQ29sb3I6OnJlZDsKIAogICAgIGF1dG8gaHNsYUNvbG9yID0gdG9IU0xBKGNvbG9y
LnRvU1JHQkFMb3NzeTxmbG9hdD4oKSk7CiAKQEAgLTg0LDcgKzg0LDcgQEAgVEVTVChDb2xvciwg
UkdCVG9IU0xfUmVkKQogCiBURVNUKENvbG9yLCBSR0JUb0hTTF9HcmVlbikKIHsKLSAgICBDb2xv
ciBjb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAyNTUsIDApOworICAgIENvbG9yIGNvbG9yID0g
Q29sb3I6OmdyZWVuOwogCiAgICAgYXV0byBoc2xhQ29sb3IgPSB0b0hTTEEoY29sb3IudG9TUkdC
QUxvc3N5PGZsb2F0PigpKTsKIApAQCAtMTAwLDcgKzEwMCw3IEBAIFRFU1QoQ29sb3IsIFJHQlRv
SFNMX0dyZWVuKQogCiBURVNUKENvbG9yLCBSR0JUb0hTTF9CbHVlKQogewotICAgIENvbG9yIGNv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDI1NSk7CisgICAgQ29sb3IgY29sb3IgPSBDb2xv
cjo6Ymx1ZTsKIAogICAgIGF1dG8gaHNsYUNvbG9yID0gdG9IU0xBKGNvbG9yLnRvU1JHQkFMb3Nz
eTxmbG9hdD4oKSk7CiAKQEAgLTE3Miw3ICsxNzIsNyBAQCBURVNUKENvbG9yLCBWYWxpZGl0eSkK
ICAgICBFWFBFQ1RfRkFMU0Uob3RoZXJJbnZhbGlkQ29sb3IuaXNWYWxpZCgpKTsKICAgICBFWFBF
Q1RfRkFMU0Uob3RoZXJJbnZhbGlkQ29sb3IuaXNFeHRlbmRlZCgpKTsKIAotICAgIENvbG9yIHZh
bGlkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAwKTsKKyAgICBDb2xvciB2YWxpZENv
bG9yID0gQ29sb3I6OnJlZDsKICAgICBFWFBFQ1RfVFJVRSh2YWxpZENvbG9yLmlzVmFsaWQoKSk7
CiAgICAgRVhQRUNUX0ZBTFNFKHZhbGlkQ29sb3IuaXNFeHRlbmRlZCgpKTsKIApAQCAtMTgwLDcg
KzE4MCw3IEBAIFRFU1QoQ29sb3IsIFZhbGlkaXR5KQogICAgIEVYUEVDVF9UUlVFKG90aGVyVmFs
aWRDb2xvci5pc1ZhbGlkKCkpOwogICAgIEVYUEVDVF9GQUxTRShvdGhlclZhbGlkQ29sb3IuaXNF
eHRlbmRlZCgpKTsKIAotICAgIHZhbGlkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMSwgMiwgMywg
NCk7CisgICAgdmFsaWRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMSwgMiwgMywgNCB9OwogICAg
IEVYUEVDVF9UUlVFKHZhbGlkQ29sb3IuaXNWYWxpZCgpKTsKICAgICBFWFBFQ1RfRkFMU0UodmFs
aWRDb2xvci5pc0V4dGVuZGVkKCkpOwogICAgIGF1dG8gdmFsaWRDb2xvckNvbXBvbmVudHMgPSB2
YWxpZENvbG9yLnRvU1JHQkFMb3NzeTx1aW50OF90PigpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIFRF
U1QoQ29sb3IsIEx1bWluYW5jZSkKICAgICBFWFBFQ1RfRkxPQVRfRVEoQ29sb3IoQ29sb3I6OmJs
YWNrKS5sdW1pbmFuY2UoKSwgMCk7CiAgICAgRVhQRUNUX0ZMT0FUX0VRKENvbG9yKENvbG9yOjp3
aGl0ZSkubHVtaW5hbmNlKCksIDEpOwogCi0gICAgYXV0byBjQ29tcG9uZW50cyA9IG1ha2VTaW1w
bGVDb2xvcig4NSwgOTAsIDE2MCk7CisgICAgYXV0byBjQ29tcG9uZW50cyA9IFNSR0JBPHVpbnQ4
X3Q+IHsgODUsIDkwLCAxNjAgfTsKICAgICBFWFBFQ1RfRkxPQVRfRVEoQ29sb3IoY0NvbXBvbmVu
dHMpLmx1bWluYW5jZSgpLCAwLjExNzgxNjkyKTsKIAogICAgIEVYUEVDVF9FUShjQ29tcG9uZW50
cy5yZWQsIDg1KTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRl
bmRlZENvbG9yVGVzdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yVGVzdHMuY3BwCShyZXZpc2lvbiAyNjQ0NzEpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xvclRlc3RzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA4LDEyICsxMDgsOSBAQCBURVNUKEV4dGVuZGVkQ29sb3IsIEVx
dWFsaXR5KQogICAgICAgICBFWFBFQ1RfTkUoYzEsIGMyKTsKICAgICB9CiAKLSAgICBpbnQgciA9
IDI1NTsKLSAgICBpbnQgZyA9IDEyODsKLSAgICBpbnQgYiA9IDYzOwotICAgIGludCBhID0gMTI3
OwotICAgIENvbG9yIHJnYjEgeyBTUkdCQTxmbG9hdD4geyByIC8gMjU1LjBmLCBnIC8gMjU1LjBm
LCBiIC8gMjU1LjBmLCBhIC8gMjU1LjBmIH0gfTsKLSAgICBDb2xvciByZ2IyID0gbWFrZVNpbXBs
ZUNvbG9yKHIsIGcsIGIsIGEpOworICAgIGF1dG8gY29tcG9uZW50Qnl0ZXMgPSBTUkdCQTx1aW50
OF90PiB7IDI1NSwgMTI4LCA2MywgMTI3IH07CisgICAgQ29sb3IgcmdiMSB7IGNvbnZlcnRUb0Nv
bXBvbmVudEZsb2F0cyhjb21wb25lbnRCeXRlcykgfTsKKyAgICBDb2xvciByZ2IyIHsgY29tcG9u
ZW50Qnl0ZXMgfTsKICAgICBFWFBFQ1RfTkUocmdiMSwgcmdiMik7CiAgICAgRVhQRUNUX05FKHJn
YjIsIHJnYjEpOwogfQpAQCAtMTQwLDEyICsxMzcsOSBAQCBURVNUKEV4dGVuZGVkQ29sb3IsIEhh
c2gpCiAgICAgICAgIEVYUEVDVF9ORShjMS5oYXNoKCksIGMyLmhhc2goKSk7CiAgICAgfQogCi0g
ICAgaW50IHIgPSAyNTU7Ci0gICAgaW50IGcgPSAxMjg7Ci0gICAgaW50IGIgPSA2MzsKLSAgICBp
bnQgYSA9IDEyNzsKLSAgICBDb2xvciByZ2IxIHsgU1JHQkE8ZmxvYXQ+IHsgciAvIDI1NS4wZiwg
ZyAvIDI1NS4wZiwgYiAvIDI1NS4wZiwgYSAvIDI1NS4wZiB9IH07Ci0gICAgQ29sb3IgcmdiMiA9
IG1ha2VTaW1wbGVDb2xvcihyLCBnLCBiLCBhKTsKKyAgICBhdXRvIGNvbXBvbmVudEJ5dGVzID0g
U1JHQkE8dWludDhfdD4geyAyNTUsIDEyOCwgNjMsIDEyNyB9OworICAgIENvbG9yIHJnYjEgeyBj
b252ZXJ0VG9Db21wb25lbnRGbG9hdHMoY29tcG9uZW50Qnl0ZXMpIH07CisgICAgQ29sb3Igcmdi
MiB7IGNvbXBvbmVudEJ5dGVzIH07CiAgICAgRVhQRUNUX05FKHJnYjEuaGFzaCgpLCByZ2IyLmhh
c2goKSk7CiB9CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UERGU25hcHNob3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9QREZTbmFwc2hvdC5tbQkocmV2aXNpb24gMjY0NDcxKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QREZTbmFwc2hvdC5tbQkod29ya2luZyBjb3B5
KQpAQCAtNTgsNyArNTgsNyBAQCBURVNUKFBERlNuYXBzaG90LCBGdWxsQ29udGVudCkKICAgICAg
ICAgRVhQRUNUX0VRKHBhZ2UtPnRleHQoKVs0XSwgJ28nKTsKIAogICAgICAgICAvLyBUaGUgZW50
aXJlIHBhZ2Ugc2hvdWxkIGJlIGdyZWVuLiBQaWNrIGEgcG9pbnQgaW4gdGhlIG1pZGRsZSB0byBj
aGVjay4KLSAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9
PSBXZWJDb3JlOjptYWtlU2ltcGxlQ29sb3IoMCwgMjU1LCAwKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gV2ViQ29yZTo6Q29sb3I6OmdyZWVu
KTsKIAogICAgICAgICBkaWRUYWtlU25hcHNob3QgPSB0cnVlOwogICAgIH1dOwpAQCAtODksNyAr
ODksNyBAQCBURVNUKFBERlNuYXBzaG90LCBTdWJyZWdpb25zKQogICAgICAgICBFWFBFQ1RfRVEo
cGFnZS0+Y2hhcmFjdGVyQ291bnQoKSwgMHUpOwogCiAgICAgICAgIC8vIFRoZSBlbnRpcmUgcGFn
ZSBzaG91bGQgYmUgZ3JlZW4uIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgot
ICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoMjAwLCAxNTApID09IFdlYkNv
cmU6Om1ha2VTaW1wbGVDb2xvcigwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFn
ZS0+Y29sb3JBdFBvaW50KDIwMCwgMTUwKSA9PSBXZWJDb3JlOjpDb2xvcjo6Z3JlZW4pOwogCiAg
ICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CiAgICAgfV07CkBAIC0xMDksMTAgKzEwOSwx
MCBAQCBURVNUKFBERlNuYXBzaG90LCBTdWJyZWdpb25zKQogICAgICAgICBFWFBFQ1RfVFJVRShD
R1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCAxMjAwLCAx
MjAwKSkpOwogCiAgICAgICAgIC8vIEEgcGl4ZWwgdGhhdCB3YXMgaW4gdGhlIHZpZXcgc2hvdWxk
IGJlIGdyZWVuLiBQaWNrIGEgcG9pbnQgaW4gdGhlIG1pZGRsZSB0byBjaGVjay4KLSAgICAgICAg
RVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDIwMCwgMTUwKSA9PSBXZWJDb3JlOjptYWtl
U2ltcGxlQ29sb3IoMCwgMjU1LCAwKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9y
QXRQb2ludCgyMDAsIDE1MCkgPT0gV2ViQ29yZTo6Q29sb3I6OmdyZWVuKTsKIAogICAgICAgICAv
LyBBIHBpeGVsIHRoYXQgd2FzIG91dHNpZGUgdGhlIHZpZXcgc2hvdWxkIGFsc28gYmUgZ3JlZW4g
KHdlIGV4dGVuZCBiYWNrZ3JvdW5kIGNvbG9yIG91dCkuIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlk
ZGxlIHRvIGNoZWNrLgotICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoOTAw
LCA3MDApID09IFdlYkNvcmU6Om1ha2VTaW1wbGVDb2xvcigwLCAyNTUsIDApKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDkwMCwgNzAwKSA9PSBXZWJDb3JlOjpDb2xv
cjo6Z3JlZW4pOwogCiAgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CiAgICAgfV07CkBA
IC0xMzgsMjAgKzEzOCwyMCBAQCBURVNUKFBERlNuYXBzaG90LCBPdmVyMjAwSW5jaGVzKQogICAg
ICAgICBhdXRvIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgwKTsKICAgICAgICAgRVhQRUNUX05FKHBh
Z2UsIG51bGxwdHIpOwogICAgICAgICBFWFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdl
LT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAwLCA4MDAsIDE0NDAwKSkpOwotICAgICAgICBFWFBF
Q1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IFdlYkNvcmU6Om1ha2VTaW1w
bGVDb2xvcigwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBv
aW50KDQwMCwgMzAwKSA9PSBXZWJDb3JlOjpDb2xvcjo6Z3JlZW4pOwogICAgICAgICBFWFBFQ1Rf
RVEocGFnZS0+Y2hhcmFjdGVyQ291bnQoKSwgNXUpOwogCiAgICAgICAgIHBhZ2UgPSBkb2N1bWVu
dC0+cGFnZSgxKTsKICAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOwogICAgICAgICBF
WFBFQ1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgw
LCAwLCA4MDAsIDE0NDAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9p
bnQoNDAwLCAzMDApID09IFdlYkNvcmU6Om1ha2VTaW1wbGVDb2xvcigwLCAyNTUsIDApKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBXZWJDb3Jl
OjpDb2xvcjo6Z3JlZW4pOwogCiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3Vu
dCgpLCAwdSk7CiAKICAgICAgICAgcGFnZSA9IGRvY3VtZW50LT5wYWdlKDIpOwogICAgICAgICBF
WFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CiAgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFs
VG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSkpOwotICAg
ICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IFdlYkNvcmU6
Om1ha2VTaW1wbGVDb2xvcigwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+
Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBXZWJDb3JlOjpDb2xvcjo6Z3JlZW4pOwogICAgICAg
ICBFWFBFQ1RfRVEocGFnZS0+Y2hhcmFjdGVyQ291bnQoKSwgMHUpOwogCiAgICAgICAgIGRpZFRh
a2VTbmFwc2hvdCA9IHRydWU7CkBAIC0xNzYsNyArMTc2LDcgQEAgVEVTVChQREZTbmFwc2hvdCwg
TGlua3MpCiAgICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKIAogICAgICAgICBFWFBF
Q1RfVFJVRShDR1JlY3RFcXVhbFRvUmVjdChwYWdlLT5ib3VuZHMoKSwgQ0dSZWN0TWFrZSgwLCAw
LCA4MDAsIDE0NDAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQo
NDAwLCAzMDApID09IFdlYkNvcmU6Om1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1KSk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gV2ViQ29y
ZTo6Q29sb3I6OndoaXRlKTsKIAogICAgICAgICBFWFBFQ1RfRVEocGFnZS0+Y2hhcmFjdGVyQ291
bnQoKSwgOHUpOwogICAgICAgICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzBdLCAnQycpOwpJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERGRG9jdW1lbnQubW0JKHJldmlz
aW9uIDI2NDQ3MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsOCArMTQ0LDggQEAgV2ViQ29yZTo6Q29sb3IgVGVz
dFBERlBhZ2U6OmNvbG9yQXRQb2ludAogICAgIGF1dG8gYSA9IHBpeGVsW2kgKyAzXTsKIAogICAg
IGlmICghYSkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Om1ha2VTaW1wbGVDb2xvcigwLCAwLCAw
LCAwKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKHIgKiAyNTUgLyBhLCBn
ICogMjU1IC8gYSwgYiAqIDI1NSAvIGEsIGEpOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29s
b3I6OnRyYW5zcGFyZW50OworICAgIHJldHVybiBXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50Qnl0
ZXM8V2ViQ29yZTo6U1JHQkE+KHIgKiAyNTUgLyBhLCBnICogMjU1IC8gYSwgYiAqIDI1NSAvIGEs
IGEpOwogfQogCiAvLyBEb2N1bWVudHMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404630</attachid>
            <date>2020-07-17 19:27:30 -0700</date>
            <delta_ts>2020-07-17 20:13:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214439-20200717192729.patch</filename>
            <type>text/plain</type>
            <size>130961</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQ1NjQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA3LTE2ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZmluYWwgdmVzdGlnYXRlcyBvZiBTaW1wbGVD
b2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0
NDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgICogd3Rm
L0tleVZhbHVlUGFpci5oOgorICAgICAgICAoV1RGOjpLZXlWYWx1ZVBhaXI6OktleVZhbHVlUGFp
cik6CisgICAgICAgIEFkZCBvdmVybG9hZCBvZiBjb25zdHJ1Y3RvciB0aGF0IGlzIG5vdCBhIHRl
bXBsYXRlIGZ1bmN0aW9uIHRvIGFpZCBkZWR1Y3Rpb24KKyAgICAgICAgd2hlbiB1c2luZyBzdGQ6
OmluaXRpYWxpemVyX2xpc3RzIHRvIGNvbnRydWN0IGEgSGFzaE1hcC4KKwogMjAyMC0wNy0xNyAg
RnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBEb24n
dCBpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4gaW4gU1ZHUGFyc2VyVXRpbGl0aWVzLmgK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL0tleVZhbHVlUGFpci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL0tleVZhbHVlUGFpci5oCShyZXZpc2lvbiAyNjQ1NjQpCisrKyBTb3VyY2UvV1RG
L3d0Zi9LZXlWYWx1ZVBhaXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsMTIgQEAgc3Ry
dWN0IEtleVZhbHVlUGFpciB7CiAgICAgewogICAgIH0KIAorICAgIEtleVZhbHVlUGFpcihLZXlU
eXBlQXJnJiYga2V5LCBWYWx1ZVR5cGVBcmcmJiB2YWx1ZSkKKyAgICAgICAgOiBrZXkoV1RGTW92
ZShrZXkpKQorICAgICAgICAsIHZhbHVlKFdURk1vdmUodmFsdWUpKQorICAgIHsKKyAgICB9CisK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgogICAgIEtleVZhbHVlUGFpcihL
JiYga2V5LCBWJiYgdmFsdWUpCiAgICAgICAgIDoga2V5KHN0ZDo6Zm9yd2FyZDxLPihrZXkpKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0NTY0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTg5IEBACisyMDIwLTA3LTE2ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZmluYWwgdmVzdGlnYXRl
cyBvZiBTaW1wbGVDb2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE0NDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisg
ICAgICAgIFJlcGxhY2UgcmVtYWluaW5nIG1ha2VTaW1wbGVDb2xvciB1c2VzOgorICAgICAgICAt
IExpdGVyYWwgLyBjb25zdGFudCBjb2xvcnMgc3dpdGNoZWQgdG8gdXNpbmcgU1JHQkE8dWludDhf
dD4geyAuLi4gfS4KKyAgICAgICAgLSBEaXJlY3QgY29uc3RydWN0aW9uIGZyb20gdWludDhfdCB2
YWx1ZXMgYWxzbyBzd2l0Y2hlZCB0byBTUkdCQTx1aW50OF90PiB7IC4uLiB9CisgICAgICAgIC0g
V2hlcmUgcG9zc2libGUgc3dpdGNoZWQgdG8gdXNpbmcgb2YgbmFtZWQgY29sb3JzIChlLmcuIENv
bG9yOjp5ZWxsb3cpIGJvdGgKKyAgICAgICAgICBkaXJlY3RseSBhbmQgd2hlcmUgYW4gb3ZlcnJp
ZGUgYWxwaGEgd2FzIG5lZWRlZC4gVG8gYWlkIHRoaXMsIG5ldyBuYW1lZAorICAgICAgICAgIGNv
bG9ycyB3ZXJlIGFkZGVkIGZvciByZWQsIG1hZ2VudGEsIGJsdWUsIGdyZWVuLCBkYXJrR3JlZW4g
YW5kIG9yYW5nZS4KKyAgICAgICAgLSBSZW1haW5pbmcgY2FsbGVycyBzd2l0Y2hlZCB0byBkaXJl
Y3RseSBjYWxsaW5nIGNsYW1wVG9Db21wb25lbnRCeXRlcywgd2hpY2gKKyAgICAgICAgICB3YXMg
YWxsIHRoYXQgbWFrZVNpbXBsZUNvbG9yIGRpZC4gQW4gb3ZlcmxvYWQgb2YgY2xhbXBUb0NvbXBv
bmVudEJ5dGVzIHRoYXQKKyAgICAgICAgICBkb2Vzbid0IHJlcXVpcmUgdGhlIGFscGhhIHBhcmFt
ZXRlciB3YXMgYWRkZWQgdG8gc2ltcGxpZnkgY2FsbHMuCisgICAgCisgICAgICAgIFRvIG1ha2Ug
Y29uc3RydWN0aW9uIG9mIFNSR0JBPHVpbnQ4X3Q+IHZhbHVlcyBuaWNlciwgY2FsbGVycyBubyBs
b25nZXIgbmVlZAorICAgICAgICB0byBzcGVjaWZ5IHRoZSBhbHBoYSBleHBsaWNpdGx5IGlmIHRo
ZSBjb2xvciBpcyBvcGFxdWUuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9TaW1wbGVDb2xvci5oOiBSZW1vdmVkLgorICAgICAgICBSZW1vdmUgU2ltcGxlQ29s
b3IuaAorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VOdW1lcmljQ29sb3IpOgorICAgICAgICBTd2l0Y2ggdG8gY2xh
bXBUb0NvbXBvbmVudEJ5dGVzLCBidXQgbGVhdmUgYSBGSVhNRSBpbmRpY2F0aW5nIHRoaXMgc2hv
dWxkIGJlCisgICAgICAgIHN3aXRjaGVkIHRvIGRpcmVjdCBTUkdCQTx1aW50OF90PiB3aGVuIGhl
cGxlciBmdW5jdGlvbnMgYXJlIGZpeGVkIHRvIHJldHVybgorICAgICAgICB1aW50OF90cyByYXRo
ZXIgdGhhbiBpbnRzLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yKToKKyAgICAgICAgU3dpdGNo
ZWQgdG8gY2xhbXBUb0NvbXBvbmVudEJ5dGVzIGFuZCByZW1vdmVkIGV4aXN0aW5nIHVubmVjZXNz
YXJ5IGFkZGl0aW9uYWwgY2xhbXBpbmcKKyAgICAgICAgb2YgdGhlIGFscGhhIGNvbXBvbmVudC4K
KworICAgICAgICAqIHBhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5OjpkcmF3UmVjdCk6CisgICAgICAgIFJl
c3RydWN0dXJlIEhhc2hNYXAgY29uc3RydWN0aW9uIHRvIHVzZSB0aGUgSGFzaE1hcCBzdGQ6Omlu
dGlhbGl6ZXJfbGlzdCBjb25zdHJ1Y3Rvci4KKyAgICAgICAgVGhpcyB0YWtlcyBhZHZhbnRhZ2Ug
b2YgYSBjaGFuZ2UgdG8gV1RGOjpLZXlWYWx1ZVBhaXIgdGhhdCBhbGxvd3MgaXQgZGVkdWNlIGlu
IHRoaXMKKyAgICAgICAgY29udGV4dC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yLmg6CisgICAgICAgIFJlbW92ZSBTaW1wbGVDb2xvci5oIGluY2x1ZGUsIGJ1dCBhZGQgQ29s
b3JCdWlsZGVyLmggYW5kIENvbG9yVXRpbGl0aWVzLmgKKyAgICAgICAgd2hpY2ggU2ltcGxlQ29s
b3Igd2FzIGluY2x1ZGluZyBvbiBpdHMgYmVoYWxmLiBBZGQgbmV3IG5hbWVkIGNvbG9ycyBmb3Ig
CisgICAgICAgIHJlZCwgbWFnZW50YSwgYmx1ZSwgZ3JlZW4sIGRhcmtHcmVlbiBhbmQgb3Jhbmdl
LiBGb3IgYWxsIG5hbWVkIGNvbG9ycywKKyAgICAgICAgdXNlIENvbG9yQnVpbGRlcjxTUkdCQTx1
aW50OF90Pj4gcmF0aGVyIHRoYW4gU1JHQkE8dWludDhfdD4gYWxvbmUgdG8gYWxsb3cKKyAgICAg
ICAgZm9yIGNhbGxlcnMgdG8gZG8gdGhpbmdzIGxpa2UgQ29sb3I6OnllbGxvdy5jb2xvcldpdGhB
bHBoYSguLi4pLiBJbiB0aGUgZnV0dXJlLAorICAgICAgICBpdCBtaWdodCBtYWtlIG1vcmUgc2Vu
c2UgdG8gbWVyZ2UgQ29sb3JCdWlsZGVyJ3MgZnVuY3Rpb25hbGl0eSBkaXJlY3RseSBpbnRvCisg
ICAgICAgIHRoZSBjb2xvciB0eXBlcywgYnV0IGZvciBub3cgdGhpcyBwcmVzZXJ2ZXMgdGhhdCBm
dW5jdGlvbmFsaXR5LgorCisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRk
aXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9u
Q29sb3JGdW5jdGlvbjo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25D
b2xvckZ1bmN0aW9uOjpyb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKTogRGVsZXRlZC4KKyAgICAg
ICAgUmVwbGFjZSBiZXNwb2tlIHJvdW5kaW5nL2NsYW1waW5nIGZ1bmN0aW9ucyBpbiBmYXZvciBv
ZiBDb2xvclV0aWxpdGllcy5oIGFnZ3JlZ2F0ZSBvbmVzIGFuZAorICAgICAgICBkaXJlY3RseSBj
YWxsaW5nIHN0ZDo6bHJvdW5kLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpwYXJzZVJHQlBhcmFtZXRlcnMpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRpb25I
aWdobGlnaHQuaDoKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlU2ltcGxlQ29sb3JWYWx1ZSk6CisgICAgICAgICogaHRtbC9IVE1MRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUxlZ2FjeUNvbG9yVmFsdWUpOgorICAg
ICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd091dGxpbmVkUXVh
ZFdpdGhDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdTaGFwZUhpZ2hsaWdodCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpwYWludCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JPdmVybGF5OjpkcmF3UGFpbnRSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JPdmVybGF5OjpkcmF3Qm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck92ZXJsYXk6OmRyYXdSdWxlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3Zlcmxh
eTo6ZHJhd0VsZW1lbnRUaXRsZSk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6TGluZUxheW91dDo6ZGVidWdUZXh0U2hhZG93KToKKyAgICAgICAgKiBwYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYXB0aW9uc0JhY2tncm91bmRDU1MgY29uc3QpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXMp
OgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Okhpc3RvcmljUmVzb3VyY2VVc2FnZURhdGE6Okhpc3RvcmljUmVzb3Vy
Y2VVc2FnZURhdGEpOgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlM
aW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZv
cm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1l
QWR3YWl0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYWR3YWl0YS9UaGVtZUFkd2FpdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVBZHdhaXRhOjphY3RpdmVTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVBZHdhaXRhOjphY3RpdmVT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVB
ZHdhaXRhOjppbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQmxlbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRTb3VyY2VPdmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kV2l0aFdoaXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQnVpbGRl
cjo6Y29sb3JXaXRoQWxwaGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JCdWlsZGVy
OjpDb2xvckJ1aWxkZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNSR0JBOjpTUkdCQSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNs
YW1wVG9Db21wb25lbnRCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvQ29tcG9uZW50
RmxvYXRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OmdldERlYnVnQm9yZGVySW5mbyBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdl
cyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50c0xheWVyRGVidWdCb3JkZXJDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjbG9uZUxheWVyRGVidWdCb3JkZXJDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5
ZnJhbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpkcmF3UmVwYWludEluZGlj
YXRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb3ZlcmFnZU1hcDo6VGlsZUNvdmVyYWdlTWFwKToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb3ZlcmFnZU1hcDo6dXBkYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwOgor
ICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmRyYXdSZXBhaW50Q291bnRlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y29sb3JGb3JNYXJrZXJMaW5lU3R5bGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VTaW1w
bGVDb2xvckZyb21OU0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3RG90c0ZvckRvY3VtZW50
TWFya2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRpbGVDYWNo
ZTo6Y29sb3JGb3JHcmlkVGlsZUJvcmRlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
ZWZhdWx0RGV2aWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
ZHJhd0JveGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tCYWNr
Z3JvdW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9wbGF5c3RhdGlvbi9TY3JvbGxiYXJUaGVtZVBs
YXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUGxheVN0YXRp
b246OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0lt
YWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGF0dGVybkZvclRvdWNoQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdHRl
cm5Gb3JFdmVudExpc3RlbmVyUmVnaW9uVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OnBhaW50RGVidWdPdmVybGF5cyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwbGF0Zm9ybUFj
dGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZTo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9y
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVBZHdhaXRhLmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFp
bnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRQ
cm9ncmVzc0Jhcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6bWVudUJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZU1hYzo6c3lzdGVtQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lV2luOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdp
bjo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OnN5c3RlbUNvbG9yIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MQmxvY2s6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbG9yUmVzb2x2aW5nQ3VycmVu
dENvbG9yIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsU3RvcENvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsRmxvb2RDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbExpZ2h0aW5nQ29sb3IpOgor
ICAgICAgICAqIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tQYWdlT3ZlcmxheUNsaWVudDo6ZHJhd1JlY3QpOgorICAgICAgICAqIHRlc3Rp
bmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbToKKyAgICAgICAg
KC1bV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheSBpbml0V2l0aFdlYlZpZXc6a2lu
ZDpkZXByZWNhdGVkOl0pOgorICAgICAgICBSZXBsYWNlIG1ha2VTaW1wbGVDb2xvciB1c2VzIHdp
dGggYXBwcm9wcmlhdGUgYWx0ZXJuYXRpdmUuCisKIDIwMjAtMDctMTcgIE1lZ2FuIEdhcmRuZXIg
IDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgT0sgYnV0dG9uIHRvIERh
dGUvVGltZSBmb3JtIGNvbnRyb2xzLgpJbmRleDogU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCShyZXZpc2lvbiAy
NjQ1NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTk0LDcgKzExOTQsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRS
ZWN0LmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVDb2xvci5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXpl
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2NDU2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjIzNCw3ICsyMjM0LDYgQEAKIAkJN0MyRkE2MTIxRUE5NUEzQzAw
QTAzMTA4IC8qIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MyRkE2MTAxRUE5NUEzMjAwQTAzMTA4IC8q
IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMzBEOTg0MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fi
b3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MzMEQ5ODAxRjgxNUFDMTAwMjY4MzU2IC8qIEpTQWJvcnRDb250cm9sbGVyLmggKi87
IH07CiAJCTdDMzBEOTg2MUY4MTVBRUMwMDI2ODM1NiAvKiBKU0Fib3J0U2lnbmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMwRDk4MTFGODE1QUMx
MDAyNjgzNTYgLyogSlNBYm9ydFNpZ25hbC5oICovOyB9OwotCQk3QzMxQzg4RTI0N0FENTk1MDA1
QkYzMTkgLyogU2ltcGxlQ29sb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDMzFDODhDMjQ3QUQ1OTUwMDVCRjMxOSAvKiBTaW1wbGVDb2xvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMzMwQTAy
MURGOEZBQzYwMEQzMzk1QyAvKiBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzMwQTAxMURGOEZBQzYw
MEQzMzk1QyAvKiBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzMzMEEwODFERjlGOTUxMDBEMzM5
NUMgLyogSlNQb3NpdGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDMzMwQTA2MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0
aW9ucy5oICovOyB9OwogCQk3QzNBOTFFNjFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNj
ZXNzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzNBOTFFNTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk5OTksNyAr
OTk5OCw2IEBACiAJCTdDMzBEOTgwMUY4MTVBQzEwMDI2ODM1NiAvKiBKU0Fib3J0Q29udHJvbGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Fib3J0Q29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzMwRDk4MTFGODE1QUMxMDAyNjgzNTYg
LyogSlNBYm9ydFNpZ25hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Fi
b3J0U2lnbmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzBEOTgyMUY4MTVB
QzIwMDI2ODM1NiAvKiBKU0Fib3J0U2lnbmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQWJvcnRTaWduYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk3QzMxQzg4QzI0N0FENTk1MDA1QkYzMTkgLyogU2ltcGxlQ29sb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2ltcGxlQ29sb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0MzMzBBMDExREY4RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzMzBB
MDMxREY5RTk1QjAwRDMzOTVDIC8qIFBvc2l0aW9uT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUG9zaXRpb25P
cHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzMzBBMDUxREY5Rjk1
MTAwRDMzOTVDIC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTUG9zaXRpb25PcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI1NzM5LDcgKzI1NzM3LDYgQEAKIAkJCQlBNzNGOTVGRDEyQzk3QkZFMDAz
MUFBRjkgLyogUm91bmRlZFJlY3QuaCAqLywKIAkJCQkwRjNERDQ0RDEyRjVFQTFCMDAwRDkxOTAg
LyogU2hhZG93Qmx1ci5jcHAgKi8sCiAJCQkJMEYzREQ0NEUxMkY1RUExQjAwMEQ5MTkwIC8qIFNo
YWRvd0JsdXIuaCAqLywKLQkJCQk3QzMxQzg4QzI0N0FENTk1MDA1QkYzMTkgLyogU2ltcGxlQ29s
b3IuaCAqLywKIAkJCQlDRDY0MUVCMjE4MThGNUVEMDBFRTRDNDEgLyogU291cmNlQnVmZmVyUHJp
dmF0ZS5oICovLAogCQkJCUNEQzhCNUFDMTgwNEFFNUQwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQ
cml2YXRlQ2xpZW50LmggKi8sCiAJCQkJN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmlu
Z1NvbHZlci5oICovLApAQCAtMzMyMTcsNyArMzMyMTQsNiBAQAogCQkJCTkzMzA5RUEzMDk5RUI3
OEMwMDU2RTU4MSAvKiBTaGFyZWRUaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREYxOUUyQUMy
NDc3MkJDMTAwN0JEQUNCIC8qIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4MzYyRThDMTIwQ0VGOUNCMDAyNDU4ODYgLyogU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QzMxQzg4RTI0N0FENTk1
MDA1QkYzMTkgLyogU2ltcGxlQ29sb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0ODk0NEEzMTgw
QjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
MUUwNjdFRTFFNjI0NkU1MDAxNjJEMTYgLyogU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1ODVENkUwNDFBMUE3OTJFMDBGQTRGMTIgLyogU2ltcGxlTGluZUxh
eW91dEZsb3dDb250ZW50cy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCShyZXZpc2lvbiAyNjQ1NjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4Nyw3ICs0ODcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBzdGF0aWMgCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAg
ICBpZiAoY3VycmVudCAhPSBlbmQpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsg
Ly8gRklYTUU6IEFscmVhZHkgY2xhbXBlZCwgZG9uJ3QgbmVlZCB0byByZS1jbGFtcCBhcyBtYWtl
U2ltcGxlQ29sb3IgZG9lcy4KKyAgICAgICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRlczxT
UkdCQT4ocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOyAvLyBGSVhNRTogQWxyZWFkeSBjbGFtcGVk
LCBkb2Vzbid0IG5lZWQgdG8gcmUtY2xhbXAuIFVwZGF0ZSBwYXJzZUNvbG9ySW50T3JQZXJjZW50
YWdlL3BhcnNlQWxwaGFWYWx1ZSB0byByZXR1cm4gdWludDhfdCBhbmQgcmVwbGFjZSBjYWxsIHRv
IGNsYW1wVG9Db21wb25lbnRCeXRlcyB3aXRoIGRpcmVjdCBjb25zdHJ1Y3Rpb24gb2YgU1JHQkE8
dWludDhfdD4uCiAgICAgfQogCiAgICAgLy8gVHJ5IHJnYigpIHN5bnRheC4KQEAgLTUwNSw3ICs1
MDUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgCiAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICBpZiAoY3VycmVudCAhPSBlbmQpCiAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gbWFrZVNpbXBs
ZUNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUpOyAvLyBGSVhNRTogQWxyZWFkeSBjbGFtcGVkLCBkb24n
dCBuZWVkIHRvIHJlLWNsYW1wIGFzIG1ha2VTaW1wbGVDb2xvciBkb2VzLgorICAgICAgICByZXR1
cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihyZWQsIGdyZWVuLCBibHVlKTsgLy8gRklY
TUU6IEFscmVhZHkgY2xhbXBlZCwgZG9lc24ndCBuZWVkIHRvIHJlLWNsYW1wLiBVcGRhdGUgcGFy
c2VDb2xvckludE9yUGVyY2VudGFnZS9wYXJzZUFscGhhVmFsdWUgdG8gcmV0dXJuIHVpbnQ4X3Qg
YW5kIHJlcGxhY2UgY2FsbCB0byBjbGFtcFRvQ29tcG9uZW50Qnl0ZXMgd2l0aCBkaXJlY3QgY29u
c3RydWN0aW9uIG9mIFNSR0JBPHVpbnQ4X3Q+LgogICAgIH0KIAogICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCShyZXZpc2lvbiAyNjQ1NjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU4OSw3ICs1ODksNyBAQCBzdGF0aWMgQ29sb3IgcGFyc2VSR0JQYXJhbWV0ZXJzKENT
U1BhcnNlCiAgICAgaWYgKCFhcmdzLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwog
Ci0gICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihjb2xvckFycmF5WzBdLCBjb2xvckFycmF5WzFd
LCBjb2xvckFycmF5WzJdLCBhbHBoYUNvbXBvbmVudCk7CisgICAgcmV0dXJuIFNSR0JBPHVpbnQ4
X3Q+IHsgY29sb3JBcnJheVswXSwgY29sb3JBcnJheVsxXSwgY29sb3JBcnJheVsyXSwgYWxwaGFD
b21wb25lbnQgfTsKIH0KIAogc3RhdGljIENvbG9yIHBhcnNlSFNMUGFyYW1ldGVycyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRpb25IaWdobGlnaHQuaAkocmV2aXNp
b24gMjY0NTY0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdo
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCw5IEBAIHN0cnVjdCBDb21wb3NpdGlvbkhp
Z2hsaWdodCB7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8gZGVmYXVsdENvbXBvc2l0aW9uRmlsbENvbG9yID0gbWFrZVNpbXBsZUNv
bG9yKDE3NSwgMTkyLCAyMjcsIDYwKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVs
dENvbXBvc2l0aW9uRmlsbENvbG9yID0gU1JHQkE8dWludDhfdD4geyAxNzUsIDE5MiwgMjI3LCA2
MCB9OwogI2Vsc2UKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdENvbXBvc2l0aW9u
RmlsbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIyNSwgMjIxLCA4NSk7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGRlZmF1bHRDb21wb3NpdGlvbkZpbGxDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+
IHsgMjI1LCAyMjEsIDg1IH07CiAjZW5kaWYKIAogICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0IHsg
MCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAJKHJldmlzaW9u
IDI2NDU2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90
Pj4gcGFyc2VTaW0KIHsKICAgICBpZiAoIWlzVmFsaWRTaW1wbGVDb2xvcihzdHJpbmcpKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IodG9B
U0NJSUhleFZhbHVlKHN0cmluZ1sxXSwgc3RyaW5nWzJdKSwgdG9BU0NJSUhleFZhbHVlKHN0cmlu
Z1szXSwgc3RyaW5nWzRdKSwgdG9BU0NJSUhleFZhbHVlKHN0cmluZ1s1XSwgc3RyaW5nWzZdKSk7
CisgICAgcmV0dXJuIHsgeyB0b0FTQ0lJSGV4VmFsdWUoc3RyaW5nWzFdLCBzdHJpbmdbMl0pLCB0
b0FTQ0lJSGV4VmFsdWUoc3RyaW5nWzNdLCBzdHJpbmdbNF0pLCB0b0FTQ0lJSGV4VmFsdWUoc3Ry
aW5nWzVdLCBzdHJpbmdbNl0pIH0gfTsKIH0KIAogQ29sb3JJbnB1dFR5cGU6On5Db2xvcklucHV0
VHlwZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24gMjY0
NTY0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMjQsNyArMTAyNCw3IEBAIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4g
cGFyc2VMZWcKICAgICAgICAgcmV0dXJuIG5hbWVkQ29sb3I7CiAKICAgICBpZiAoc3RyaW5nLmxl
bmd0aCgpID09IDQgJiYgc3RyaW5nWzBdID09ICcjJyAmJiBpc0FTQ0lJSGV4RGlnaXQoc3RyaW5n
WzFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoc3RyaW5nWzJdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoc3Ry
aW5nWzNdKSkKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcih0b0FTQ0lJSGV4VmFsdWUo
c3RyaW5nWzFdKSAqIDB4MTEsIHRvQVNDSUlIZXhWYWx1ZShzdHJpbmdbMl0pICogMHgxMSwgdG9B
U0NJSUhleFZhbHVlKHN0cmluZ1szXSkgKiAweDExKTsKKyAgICAgICAgcmV0dXJuIHsgeyBzdGF0
aWNfY2FzdDx1aW50OF90Pih0b0FTQ0lJSGV4VmFsdWUoc3RyaW5nWzFdKSAqIDB4MTEpLCBzdGF0
aWNfY2FzdDx1aW50OF90Pih0b0FTQ0lJSGV4VmFsdWUoc3RyaW5nWzJdKSAqIDB4MTEpLCBzdGF0
aWNfY2FzdDx1aW50OF90Pih0b0FTQ0lJSGV4VmFsdWUoc3RyaW5nWzNdKSAqIDB4MTEpIH0gfTsK
IAogICAgIC8vIFBlciBzcGVjLCBvbmx5IGxvb2sgYXQgdGhlIGZpcnN0IDEyOCBkaWdpdHMgb2Yg
dGhlIHN0cmluZy4KICAgICBjb25zdGV4cHIgdW5zaWduZWQgbWF4Q29sb3JMZW5ndGggPSAxMjg7
CkBAIC0xMDUyLDcgKzEwNTIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBh
cnNlTGVnCiAgICAgZGlnaXRCdWZmZXIuYXBwZW5kKCcwJyk7CiAKICAgICBpZiAoZGlnaXRCdWZm
ZXIuc2l6ZSgpIDwgNikKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcih0b0FTQ0lJSGV4
VmFsdWUoZGlnaXRCdWZmZXJbMF0pLCB0b0FTQ0lJSGV4VmFsdWUoZGlnaXRCdWZmZXJbMV0pLCB0
b0FTQ0lJSGV4VmFsdWUoZGlnaXRCdWZmZXJbMl0pKTsKKyAgICAgICAgcmV0dXJuIHsgeyB0b0FT
Q0lJSGV4VmFsdWUoZGlnaXRCdWZmZXJbMF0pLCB0b0FTQ0lJSGV4VmFsdWUoZGlnaXRCdWZmZXJb
MV0pLCB0b0FTQ0lJSGV4VmFsdWUoZGlnaXRCdWZmZXJbMl0pIH0gfTsKIAogICAgIC8vIFNwbGl0
IHRoZSBkaWdpdHMgaW50byB0aHJlZSBjb21wb25lbnRzLCB0aGVuIHNlYXJjaCB0aGUgbGFzdCA4
IGRpZ2l0cyBvZiBlYWNoIGNvbXBvbmVudC4KICAgICBBU1NFUlQoZGlnaXRCdWZmZXIuc2l6ZSgp
ID49IDYpOwpAQCAtMTA3Niw3ICsxMDc2LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4
X3Q+PiBwYXJzZUxlZwogICAgIHVpbnQ4X3QgcmVkVmFsdWUgPSB0b0FTQ0lJSGV4VmFsdWUoZGln
aXRCdWZmZXJbcmVkSW5kZXhdLCBkaWdpdEJ1ZmZlcltyZWRJbmRleCArIDFdKTsKICAgICB1aW50
OF90IGdyZWVuVmFsdWUgPSB0b0FTQ0lJSGV4VmFsdWUoZGlnaXRCdWZmZXJbZ3JlZW5JbmRleF0s
IGRpZ2l0QnVmZmVyW2dyZWVuSW5kZXggKyAxXSk7CiAgICAgdWludDhfdCBibHVlVmFsdWUgPSB0
b0FTQ0lJSGV4VmFsdWUoZGlnaXRCdWZmZXJbYmx1ZUluZGV4XSwgZGlnaXRCdWZmZXJbYmx1ZUlu
ZGV4ICsgMV0pOwotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IocmVkVmFsdWUsIGdyZWVuVmFs
dWUsIGJsdWVWYWx1ZSk7CisgICAgcmV0dXJuIHsgeyByZWRWYWx1ZSwgZ3JlZW5WYWx1ZSwgYmx1
ZVZhbHVlIH0gfTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudDo6YWRkSFRNTENvbG9yVG9TdHlsZShN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBj
b25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjQ1NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDg1LDcgKzIwODUs
NyBAQCBSZW5kZXJTdHlsZSBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lCiAgICAgaWYgKGhh
c0F1dG9GaWxsU3Ryb25nUGFzc3dvcmRCdXR0b24oKSAmJiAhaXNEaXNhYmxlZE9yUmVhZE9ubHko
KSkgewogICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpJbmxp
bmVCbG9jayk7CiAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldE1heFdpZHRoKExlbmd0aCB7IDEw
MCwgUGVyY2VudCB9KTsKLSAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0Q29sb3IobWFrZVNpbXBs
ZUNvbG9yKDAsIDAsIDAsIDE1MykpOworICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRDb2xvcihD
b2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMTUzKSk7CiAgICAgICAgIHRleHRCbG9ja1N0eWxl
LnNldFRleHRPdmVyZmxvdyhUZXh0T3ZlcmZsb3c6OkNsaXApOwogICAgICAgICB0ZXh0QmxvY2tT
dHlsZS5zZXRNYXNrSW1hZ2UoU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKGF1dG9GaWxsU3Ry
b25nUGFzc3dvcmRNYXNrSW1hZ2UoKSkpOwogICAgICAgICAvLyBBIHN0YWNraW5nIGNvbnRleHQg
aXMgbmVlZGVkIGZvciB0aGUgbWFzay4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAJKHJldmlzaW9uIDI2NDU2NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIy
LDcgKzIyMiw3IEBAIHN0YXRpYyB2b2lkIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChHcmEKICAg
ICBjb250ZXh0LmZpbGxQYXRoKHF1YWRUb1BhdGgocXVhZCwgYm91bmRzKSk7CiAKICAgICBjb250
ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvcjo6RGVzdGluYXRpb25P
dXQpOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDAp
KTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6cmVkKTsKICAgICBjb250ZXh0LmZp
bGxQYXRoKHF1YWRUb1BhdGgoY2xpcFF1YWQsIGJvdW5kcykpOwogfQogCkBAIC0yOTMsNyArMjkz
LDcgQEAgc3RhdGljIHZvaWQgZHJhd1NoYXBlSGlnaGxpZ2h0KEdyYXBoaWNzQwogICAgIEZyYW1l
VmlldyogY29udGFpbmluZ1ZpZXcgPSBjb250YWluaW5nRnJhbWUtPnZpZXcoKTsKICAgICBGcmFt
ZVZpZXcqIG1haW5WaWV3ID0gY29udGFpbmluZ0ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpLnZp
ZXcoKTsKIAotICAgIGNvbnN0ZXhwciBhdXRvIHNoYXBlSGlnaGxpZ2h0Q29sb3IgPSBtYWtlU2lt
cGxlQ29sb3IoOTYsIDgyLCAxMjcsIDIwNCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNo
YXBlSGlnaGxpZ2h0Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDk2LCA4MiwgMTI3LCAyMDQgfTsK
IAogICAgIFNoYXBlOjpEaXNwbGF5UGF0aHMgcGF0aHM7CiAgICAgc2hhcGVPdXRzaWRlSW5mby0+
Y29tcHV0ZWRTaGFwZSgpLmJ1aWxkRGlzcGxheVBhdGhzKHBhdGhzKTsKQEAgLTM0NSw3ICszNDUs
NyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhcGVIaWdobGlnaHQoR3JhcGhpY3NDCiAKICAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogCi0gICAgICAg
IGNvbnN0ZXhwciBhdXRvIHNoYXBlTWFyZ2luSGlnaGxpZ2h0Q29sb3IgPSBtYWtlU2ltcGxlQ29s
b3IoOTYsIDgyLCAxMjcsIDE1Myk7CisgICAgICAgIGNvbnN0ZXhwciBhdXRvIHNoYXBlTWFyZ2lu
SGlnaGxpZ2h0Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDk2LCA4MiwgMTI3LCAxNTMgfTsKICAg
ICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Ioc2hhcGVNYXJnaW5IaWdobGlnaHRDb2xvcik7CiAg
ICAgICAgIGNvbnRleHQuZmlsbFBhdGgobWFyZ2luUGF0aCk7CiAgICAgfQpAQCAtMzgyLDcgKzM4
Miw3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6cGFpbnQoR3JhcGhpY3NDb24KICAgICBpZiAo
bV9pbmRpY2F0aW5nKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihjb250ZXh0KTsKIAotICAgICAgICBjb25zdGV4cHIgYXV0byBpbmRpY2F0aW5nQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMTExLCAxNjgsIDIyMCwgMTY4KTsKKyAgICAgICAgY29uc3RleHBy
IGF1dG8gaW5kaWNhdGluZ0NvbG9yID0gU1JHQkE8dWludDhfdD4geyAxMTEsIDE2OCwgMjIwLCAx
NjggfTsKICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoaW5kaWNhdGluZ0NvbG9yKTsKICAg
ICAgICAgY29udGV4dC5maWxsUmVjdCh7IEZsb2F0UG9pbnQ6Onplcm8oKSwgdmlld3BvcnRTaXpl
IH0pOwogICAgIH0KQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRy
YXdQYWludFJlY3RzKEdyCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGNvbnRleHQpOwogCi0gICAgY29uc3RleHByIGF1dG8gcGFpbnRSZWN0c0NvbG9yID0gbWFr
ZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCwgMTI4KTsKKyAgICBjb25zdGV4cHIgYXV0byBwYWludFJl
Y3RzQ29sb3IgPSBDb2xvcjo6cmVkLmNvbG9yV2l0aEFscGhhKDEyOCk7CiAgICAgY29udGV4dC5z
ZXRGaWxsQ29sb3IocGFpbnRSZWN0c0NvbG9yKTsKIAogICAgIGZvciAoY29uc3QgVGltZVJlY3RQ
YWlyJiBwYWlyIDogcGFpbnRSZWN0cykKQEAgLTY2Miw3ICs2NjIsNyBAQCB2b2lkIEluc3BlY3Rv
ck92ZXJsYXk6OmRyYXdCb3VuZHMoR3JhcGhpCiAKICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNr
bmVzcygxKTsKIAotICAgIGNvbnN0ZXhwciBhdXRvIGJvdW5kc0NvbG9yID0gbWFrZVNpbXBsZUNv
bG9yKDI1NSwgMCwgMCwgMTUzKTsKKyAgICBjb25zdGV4cHIgYXV0byBib3VuZHNDb2xvciA9IENv
bG9yOjpyZWQuY29sb3JXaXRoQWxwaGEoMTUzKTsKICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9y
KGJvdW5kc0NvbG9yKTsKIAogICAgIGNvbnRleHQuc3Ryb2tlUGF0aChwYXRoKTsKQEAgLTY3MCw5
ICs2NzAsOSBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdCb3VuZHMoR3JhcGhpCiAKIHZv
aWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1J1bGVycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEluc3BlY3Rvck92ZXJsYXk6OlJ1bGVyRXhjbHVzaW9uJiBydWxlckV4Y2x1c2lvbikK
IHsKLSAgICBjb25zdGV4cHIgYXV0byBydWxlckJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVD
b2xvcigyNTUsIDI1NSwgMjU1LCAxNTMpOwotICAgIGNvbnN0ZXhwciBhdXRvIGxpZ2h0UnVsZXJD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCA1MSk7Ci0gICAgY29uc3RleHByIGF1dG8g
ZGFya1J1bGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMTI4KTsKKyAgICBjb25z
dGV4cHIgYXV0byBydWxlckJhY2tncm91bmRDb2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldpdGhB
bHBoYSgxNTMpOworICAgIGNvbnN0ZXhwciBhdXRvIGxpZ2h0UnVsZXJDb2xvciA9IENvbG9yOjpi
bGFjay5jb2xvcldpdGhBbHBoYSg1MSk7CisgICAgY29uc3RleHByIGF1dG8gZGFya1J1bGVyQ29s
b3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMTI4KTsKIAogICAgIEludFBvaW50IHNj
cm9sbE9mZnNldDsKIApAQCAtMTA0NiwyMSArMTA0NiwyMSBAQCBQYXRoIEluc3BlY3Rvck92ZXJs
YXk6OmRyYXdFbGVtZW50VGl0bGUoCiAKICAgICBjb250ZXh0LnRyYW5zbGF0ZShlbGVtZW50RGF0
YUJvcmRlclNpemUgLyAyLjBmLCBlbGVtZW50RGF0YUJvcmRlclNpemUgLyAyLjBmKTsKIAotICAg
IGNvbnN0ZXhwciBhdXRvIGVsZW1lbnRUaXRsZUJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVD
b2xvcigyNTUsIDI1NSwgMTk0KTsKKyAgICBjb25zdGV4cHIgYXV0byBlbGVtZW50VGl0bGVCYWNr
Z3JvdW5kQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDI1NSwgMjU1LCAxOTQgfTsKICAgICBjb250
ZXh0LnNldEZpbGxDb2xvcihlbGVtZW50VGl0bGVCYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgY29u
dGV4dC5maWxsUGF0aChwYXRoKTsKIAogICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGVs
ZW1lbnREYXRhQm9yZGVyU2l6ZSk7CiAKLSAgICBjb25zdGV4cHIgYXV0byBlbGVtZW50VGl0bGVC
b3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigxMjgsIDEyOCwgMTI4KTsKKyAgICBjb25zdGV4
cHIgYXV0byBlbGVtZW50VGl0bGVCb3JkZXJDb2xvciA9IENvbG9yOjpkYXJrR3JheTsKICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKGVsZW1lbnRUaXRsZUJvcmRlckNvbG9yKTsKIAogICAgIGNv
bnRleHQuc3Ryb2tlUGF0aChwYXRoKTsKIAogICAgIGZsb2F0IHRleHRQb3NpdGlvblggPSBib3hY
ICsgZWxlbWVudERhdGFTcGFjaW5nOwogICAgIGZsb2F0IHRleHRQb3NpdGlvblkgPSBib3hZIC0g
KGVsZW1lbnREYXRhU3BhY2luZyAvIDIuMGYpICsgZm9udEhlaWdodDsKLSAgICBjb25zdCBhdXRv
IGRyYXdUZXh0ID0gWyZdIChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IENvbG9yJiBjb2xvcikg
eworICAgIGNvbnN0IGF1dG8gZHJhd1RleHQgPSBbJl0gKGNvbnN0IFN0cmluZyYgdGV4dCwgU1JH
QkE8dWludDhfdD4gY29sb3IpIHsKICAgICAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCkBAIC0xMDY4LDEwICsxMDY4LDEwIEBAIFBhdGggSW5zcGVjdG9yT3Zl
cmxheTo6ZHJhd0VsZW1lbnRUaXRsZSgKICAgICAgICAgdGV4dFBvc2l0aW9uWCArPSBjb250ZXh0
LmRyYXdUZXh0KGZvbnQsIFRleHRSdW4odGV4dCksIHsgdGV4dFBvc2l0aW9uWCwgdGV4dFBvc2l0
aW9uWSB9KTsKICAgICB9OwogCi0gICAgZHJhd1RleHQoZWxlbWVudFRhZ05hbWUsIG1ha2VTaW1w
bGVDb2xvcigxMzYsIDE4LCAxMjgpKTsgLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBYTUxWaWV3
ZXIuY3NzICgudGFnKQotICAgIGRyYXdUZXh0KGVsZW1lbnRJRFZhbHVlLCBtYWtlU2ltcGxlQ29s
b3IoMjYsIDI2LCAxNjYpKTsgLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBYTUxWaWV3ZXIuY3Nz
ICguYXR0cmlidXRlLXZhbHVlKQotICAgIGRyYXdUZXh0KGVsZW1lbnRDbGFzc1ZhbHVlLCBtYWtl
U2ltcGxlQ29sb3IoMTUzLCA2OSwgMCkpOyAvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFhNTFZp
ZXdlci5jc3MgKC5hdHRyaWJ1dGUtbmFtZSkKLSAgICBkcmF3VGV4dChlbGVtZW50UHNldWRvVHlw
ZSwgbWFrZVNpbXBsZUNvbG9yKDEzNiwgMTgsIDEyOCkpOyAvLyBLZWVwIHRoaXMgaW4gc3luYyB3
aXRoIFhNTFZpZXdlci5jc3MgKC50YWcpCisgICAgZHJhd1RleHQoZWxlbWVudFRhZ05hbWUsIHsg
MTM2LCAxOCwgMTI4IH0pOyAvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFhNTFZpZXdlci5jc3Mg
KC50YWcpCisgICAgZHJhd1RleHQoZWxlbWVudElEVmFsdWUsIHsgMjYsIDI2LCAxNjYgfSk7IC8v
IEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggWE1MVmlld2VyLmNzcyAoLmF0dHJpYnV0ZS12YWx1ZSkK
KyAgICBkcmF3VGV4dChlbGVtZW50Q2xhc3NWYWx1ZSwgeyAxNTMsIDY5LCAwIH0pOyAvLyBLZWVw
IHRoaXMgaW4gc3luYyB3aXRoIFhNTFZpZXdlci5jc3MgKC5hdHRyaWJ1dGUtbmFtZSkKKyAgICBk
cmF3VGV4dChlbGVtZW50UHNldWRvVHlwZSwgeyAxMzYsIDE4LCAxMjggfSk7IC8vIEtlZXAgdGhp
cyBpbiBzeW5jIHdpdGggWE1MVmlld2VyLmNzcyAoLnRhZykKICAgICBkcmF3VGV4dCgiICJfcywg
Q29sb3I6OmJsYWNrKTsKICAgICBkcmF3VGV4dChlbGVtZW50V2lkdGgsIENvbG9yOjpibGFjayk7
CiAgICAgZHJhd1RleHQoInB4Il9zLCBDb2xvcjo6ZGFya0dyYXkpOwpAQCAtMTA4NSw3ICsxMDg1
LDcgQEAgUGF0aCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3RWxlbWVudFRpdGxlKAogICAgICAgICB0
ZXh0UG9zaXRpb25YID0gYm94WCArIGVsZW1lbnREYXRhU3BhY2luZzsKICAgICAgICAgdGV4dFBv
c2l0aW9uWSArPSBmb250SGVpZ2h0OwogCi0gICAgICAgIGRyYXdUZXh0KCJSb2xlIl9zLCBtYWtl
U2ltcGxlQ29sb3IoMTcwLCAxMywgMTQ1KSk7CisgICAgICAgIGRyYXdUZXh0KCJSb2xlIl9zLCB7
IDE3MCwgMTMsIDE0NSB9KTsKICAgICAgICAgZHJhd1RleHQoIiAiX3MsIENvbG9yOjpibGFjayk7
CiAgICAgICAgIGRyYXdUZXh0KGVsZW1lbnRSb2xlLCBDb2xvcjo6YmxhY2spOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCShyZXZpc2lvbiAyNjQ1NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDE1
ICsxNDEsOCBAQCBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvcihjb25zdCBKU09OOjpPYmplCiAKICAg
ICBkb3VibGUgYSA9IDEuMDsKICAgICBpZiAoIWNvbG9yT2JqZWN0LT5nZXREb3VibGUoImEiLCBh
KSkKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcihyLCBnLCBiKTsKLQotICAgIC8vIENs
YW1wIGFscGhhIHRvIHRoZSBbMC4uMV0gcmFuZ2UuCi0gICAgaWYgKGEgPCAwKQotICAgICAgICBh
ID0gMDsKLSAgICBlbHNlIGlmIChhID4gMSkKLSAgICAgICAgYSA9IDE7Ci0KLSAgICByZXR1cm4g
bWFrZVNpbXBsZUNvbG9yKHIsIGcsIGIsIGNvbnZlcnRUb0NvbXBvbmVudEJ5dGUoYSkpOworICAg
ICAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihyLCBnLCBiKTsKKyAgICBy
ZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihyLCBnLCBiLCBjb252ZXJ0VG9Db21w
b25lbnRCeXRlKGEpKTsKIH0KIAogc3RhdGljIENvbG9yIHBhcnNlQ29uZmlnQ29sb3IoY29uc3Qg
U3RyaW5nJiBmaWVsZE5hbWUsIGNvbnN0IEpTT046Ok9iamVjdCogY29uZmlnT2JqZWN0KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGlu
ZUxheW91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAJKHJldmlzaW9uIDI2NDU2NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVM
YXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjEsNyArMzYxLDcgQEAgU2hhZG93RGF0YSog
TGluZUxheW91dDo6ZGVidWdUZXh0U2hhZG93KAogICAgIGlmICghbV9mbG93LnNldHRpbmdzKCku
c2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVidWdUZXh0
U2hhZG93KEludFBvaW50KDAsIDApLCAxMCwgMjAsIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUs
IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAxNTAsIDE1MCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTaGFkb3dEYXRhPiBkZWJ1Z1RleHRTaGFkb3coSW50UG9pbnQoMCwgMCksIDEwLCAyMCwg
U2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgU1JHQkE8dWludDhfdD4geyAwLCAwLCAxNTAsIDE1
MCB9KTsKICAgICByZXR1cm4gJmRlYnVnVGV4dFNoYWRvdy5nZXQoKTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Ri5jcHAJKHJldmlzaW9uIDI2NDU2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5LDcg
QEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpjYQogewogICAgIC8vIFRo
aXMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgc3BlY2lmaWVkIGlu
IG1lZGlhQ29udHJvbHMuY3NzIGZvciAtd2Via2l0LW1lZGlhLXRleHQtdHJhY2stcGFzdC1ub2Rl
cwogICAgIC8vIGFuZCB3ZWJraXQtbWVkaWEtdGV4dC10cmFjay1mdXR1cmUtbm9kZXMuCi0gICAg
Y29uc3RleHByIGF1dG8gZGVmYXVsdEJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigw
LCAwLCAwLCAwLjggKiAyNTUpOworICAgIGNvbnN0ZXhwciBhdXRvIGRlZmF1bHRCYWNrZ3JvdW5k
Q29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMjA0KTsKIAogICAgIE1BQ2FwdGlv
bkFwcGVhcmFuY2VCZWhhdmlvciBiZWhhdmlvcjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAJKHJldmlzaW9uIDI2NDU2NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4
Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNb3VzZVdoZWVsUmVnaW9u
T3ZlcmxheShQYWdlJiBwYWdlKQotICAgICAgICA6IFJlZ2lvbk92ZXJsYXkocGFnZSwgbWFrZVNp
bXBsZUNvbG9yKDEyOCwgMCwgMCwgMTAyKSkKKyAgICAgICAgOiBSZWdpb25PdmVybGF5KHBhZ2Us
IFNSR0JBPHVpbnQ4X3Q+IHsgMTI4LCAwLCAwLCAxMDIgfSkKICAgICB7CiAgICAgfQogCkBAIC0x
MTgsNyArMTE4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uT3ZlcmxheShQYWdlJiBwYWdlKQotICAgICAgICA6IFJlZ2lvbk92ZXJs
YXkocGFnZSwgbWFrZVNpbXBsZUNvbG9yKDI1NSwgMTI4LCAwLCAxMDIpKQorICAgICAgICA6IFJl
Z2lvbk92ZXJsYXkocGFnZSwgQ29sb3I6Om9yYW5nZS5jb2xvcldpdGhBbHBoYSgxMDIpKQogICAg
IHsKICAgICB9CiAKQEAgLTE0NywyNiArMTQ3LDE2IEBAIGJvb2wgTm9uRmFzdFNjcm9sbGFibGVS
ZWdpb25PdmVybGF5Ojp1cGQKIHN0YXRpYyBjb25zdCBIYXNoTWFwPFN0cmluZywgU1JHQkE8dWlu
dDhfdD4+JiB0b3VjaEV2ZW50UmVnaW9uQ29sb3JzKCkKIHsKICAgICBzdGF0aWMgY29uc3QgYXV0
byByZWdpb25Db2xvcnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBzdHJ1Y3Qg
TWFwRW50cnkgewotICAgICAgICAgICAgQVNDSUlMaXRlcmFsIG5hbWU7Ci0gICAgICAgICAgICB1
aW50OF90IHI7Ci0gICAgICAgICAgICB1aW50OF90IGc7Ci0gICAgICAgICAgICB1aW50OF90IGI7
Ci0gICAgICAgIH07Ci0gICAgICAgIHN0YXRpYyBjb25zdCBNYXBFbnRyeSBlbnRyaWVzW10gPSB7
Ci0gICAgICAgICAgICB7ICJ0b3VjaHN0YXJ0Il9zLCAxOTEsIDE5MSwgNjMgfSwKLSAgICAgICAg
ICAgIHsgInRvdWNobW92ZSJfcywgODAsIDIwNCwgMjQ1IH0sCi0gICAgICAgICAgICB7ICJ0b3Vj
aGVuZCJfcywgMTkxLCA2MywgMTI3IH0sCi0gICAgICAgICAgICB7ICJ0b3VjaGZvcmNlY2hhbmdl
Il9zLCA2MywgNjMsIDE5MSB9LAotICAgICAgICAgICAgeyAid2hlZWwiX3MsIDI1NSwgMTI4LCAw
IH0sCi0gICAgICAgICAgICB7ICJtb3VzZWRvd24iX3MsIDgwLCAyNDUsIDgwIH0sCi0gICAgICAg
ICAgICB7ICJtb3VzZW1vdmUiX3MsIDI0NSwgMjQ1LCA4MCB9LAotICAgICAgICAgICAgeyAibW91
c2V1cCJfcywgODAsIDI0NSwgMTc2IH0sCi0gICAgICAgIH07Ci0gICAgICAgIEhhc2hNYXA8U3Ry
aW5nLCBTUkdCQTx1aW50OF90Pj4gbWFwOwotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW50
cmllcykKLSAgICAgICAgICAgIG1hcC5hZGQoZW50cnkubmFtZSwgbWFrZVNpbXBsZUNvbG9yKGVu
dHJ5LnIsIGVudHJ5LmcsIGVudHJ5LmIsIDUwKSk7Ci0gICAgICAgIHJldHVybiBtYXA7CisgICAg
ICAgIHJldHVybiBIYXNoTWFwPFN0cmluZywgU1JHQkE8dWludDhfdD4+IHsgeworICAgICAgICAg
ICAgeyAidG91Y2hzdGFydCJfcywgeyAxOTEsIDE5MSwgNjMsIDUwIH0gfSwKKyAgICAgICAgICAg
IHsgInRvdWNobW92ZSJfcywgeyA4MCwgMjA0LCAyNDUsIDUwIH0gfSwKKyAgICAgICAgICAgIHsg
InRvdWNoZW5kIl9zLCB7IDE5MSwgNjMsIDEyNywgNTAgfSB9LAorICAgICAgICAgICAgeyAidG91
Y2hmb3JjZWNoYW5nZSJfcywgeyA2MywgNjMsIDE5MSwgNTAgfSB9LAorICAgICAgICAgICAgeyAi
d2hlZWwiX3MsIHsgMjU1LCAxMjgsIDAsIDUwIH0gfSwKKyAgICAgICAgICAgIHsgIm1vdXNlZG93
biJfcywgeyA4MCwgMjQ1LCA4MCwgNTAgfSB9LAorICAgICAgICAgICAgeyAibW91c2Vtb3ZlIl9z
LCB7IDI0NSwgMjQ1LCA4MCwgNTAgfSB9LAorICAgICAgICAgICAgeyAibW91c2V1cCJfcywgeyA4
MCwgMjQ1LCAxNzYsIDUwIH0gfQorICAgICAgICB9IH07CiAgICAgfSgpKTsKICAgICByZXR1cm4g
cmVnaW9uQ29sb3JzOwogfQpAQCAtMjQ2LDcgKzIzNiw3IEBAIHZvaWQgTm9uRmFzdFNjcm9sbGFi
bGVSZWdpb25PdmVybGF5OjpkcmEKICNlbmRpZgogCiAgICAgZm9yIChjb25zdCBhdXRvJiBzeW5j
aHJvbm91c0V2ZW50UmVnaW9uIDogbV9ldmVudFRyYWNraW5nUmVnaW9ucy5ldmVudFNwZWNpZmlj
U3luY2hyb25vdXNEaXNwYXRjaFJlZ2lvbnMpIHsKLSAgICAgICAgYXV0byByZWdpb25Db2xvciA9
IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCA2NCk7CisgICAgICAgIGF1dG8gcmVnaW9uQ29sb3Ig
PSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoNjQpLmNvbG9yKCk7CiAgICAgICAgIGF1dG8g
aXQgPSB0b3VjaEV2ZW50UmVnaW9uQ29sb3JzKCkuZmluZChzeW5jaHJvbm91c0V2ZW50UmVnaW9u
LmtleSk7CiAgICAgICAgIGlmIChpdCAhPSB0b3VjaEV2ZW50UmVnaW9uQ29sb3JzKCkuZW5kKCkp
CiAgICAgICAgICAgICByZWdpb25Db2xvciA9IGl0LT52YWx1ZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDI2NDU2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI0NCw3ICs0MjQ0LDcgQEAgdm9pZCBG
cmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDbwogICAgIGlmIChmaWxsV2l0aFdhcm5p
bmdDb2xvcikgewogICAgICAgICBJbnRSZWN0IGRlYnVnUmVjdCA9IGZyYW1lUmVjdCgpOwogICAg
ICAgICBkZWJ1Z1JlY3QuaW50ZXJzZWN0KGRpcnR5UmVjdCk7Ci0gICAgICAgIGNvbnRleHQuZmls
bFJlY3QoZGVidWdSZWN0LCBtYWtlU2ltcGxlQ29sb3IoMjU1LCA2NCwgMjU1KSk7CisgICAgICAg
IGNvbnRleHQuZmlsbFJlY3QoZGVidWdSZWN0LCBTUkdCQTx1aW50OF90PiB7IDI1NSwgNjQsIDI1
NSB9KTsKICAgICB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENv
bnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0
LmNwcAkocmV2aXNpb24gMjY0NTY0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBQcmludENvbnRl
eHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bgogICAgIGludCB0b3RhbEhlaWdodCA9IHBhZ2VSZWN0
cy5zaXplKCkgKiAocGFnZVNpemVJblBpeGVscy5oZWlnaHQoKSArIDEpIC0gMTsKIAogICAgIC8v
IEZpbGwgdGhlIHdob2xlIGJhY2tncm91bmQgYnkgd2hpdGUuCi0gICAgZ3JhcGhpY3NDb250ZXh0
LnNldEZpbGxDb2xvcihtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSkpOworICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlKTsKICAgICBncmFwaGljc0NvbnRl
eHQuZmlsbFJlY3QoRmxvYXRSZWN0KDAsIDAsIHBhZ2VXaWR0aCwgdG90YWxIZWlnaHQpKTsKIAog
ICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7CkBAIC00NDUsOCArNDQ1LDggQEAgdm9pZCBQcmlu
dENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bgogICAgICAgICAgICAgaW50IGJvdW5kYXJ5
TGluZVkgPSBjdXJyZW50SGVpZ2h0IC0gMTsKICNlbmRpZgogICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LnNhdmUoKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xv
cihtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMjU1KSk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0RmlsbENvbG9yKG1ha2VTaW1wbGVDb2xvcigwLCAwLCAyNTUpKTsKKyAgICAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6Ymx1ZSk7CisgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibHVlKTsKICAgICAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5kcmF3TGluZShJbnRQb2ludCgwLCBib3VuZGFyeUxpbmVZKSwgSW50
UG9pbnQocGFnZVdpZHRoLCBib3VuZGFyeUxpbmVZKSk7CiAgICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQucmVzdG9yZSgpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2Nv
Y29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCShyZXZpc2lvbiAy
NjQ1NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2MCwxOCArMTYwLDE4IEBAIHN0cnVjdCBIaXN0
b3JpY1Jlc291cmNlVXNhZ2VEYXRhIHsKIEhpc3RvcmljUmVzb3VyY2VVc2FnZURhdGE6Okhpc3Rv
cmljUmVzb3VyY2VVc2FnZURhdGEoKQogewogICAgIC8vIFZNIHRhZyBjYXRlZ29yaWVzLgotICAg
IGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkpTSklUXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdv
cnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpKU0pJVCwgbWFrZVNpbXBsZUNvbG9yKDI1NSwgOTYsIDI1
NSksICJKUyBKSVQiKTsKLSAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZV0g
PSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6R2lnYWNhZ2UsIG1h
a2VTaW1wbGVDb2xvcigxMDEsIDc5LCAyNDApLCAiR2lnYWNhZ2UiKTsKLSAgICBjYXRlZ29yaWVz
W01lbW9yeUNhdGVnb3J5OjpJbWFnZXNdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVt
b3J5Q2F0ZWdvcnk6OkltYWdlcywgbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAwKSwgIkltYWdl
cyIpOwotICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OkxheWVyc10gPSBIaXN0b3JpY01l
bW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6TGF5ZXJzLCBtYWtlU2ltcGxlQ29sb3Io
MCwgMjU1LCAyNTUpLCAiTGF5ZXJzIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6
TGliY01hbGxvY10gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6
TGliY01hbGxvYywgbWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCksICJsaWJjIG1hbGxvYyIpOwot
ICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6OmJtYWxsb2NdID0gSGlzdG9yaWNNZW1vcnlD
YXRlZ29yeUluZm8oTWVtb3J5Q2F0ZWdvcnk6OmJtYWxsb2MsIG1ha2VTaW1wbGVDb2xvcigyNTUs
IDk2LCA5NiksICJibWFsbG9jIik7Ci0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6SXNv
SGVhcF0gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SXNvSGVh
cCwgbWFrZVNpbXBsZUNvbG9yKDEyOCwgMTU5LCA2NCksICJJc29IZWFwIik7Ci0gICAgY2F0ZWdv
cmllc1tNZW1vcnlDYXRlZ29yeTo6T3RoZXJdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8o
TWVtb3J5Q2F0ZWdvcnk6Ok90aGVyLCBtYWtlU2ltcGxlQ29sb3IoMTkyLCAyNTUsIDApLCAiT3Ro
ZXIiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpKU0pJVF0gPSBIaXN0b3JpY01l
bW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SlNKSVQsIHsgMjU1LCA5NiwgMjU1IH0s
ICJKUyBKSVQiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpHaWdhY2FnZV0gPSBI
aXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6R2lnYWNhZ2UsIHsgMTAx
LCA3OSwgMjQwIH0sICJHaWdhY2FnZSIpOworICAgIGNhdGVnb3JpZXNbTWVtb3J5Q2F0ZWdvcnk6
OkltYWdlc10gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SW1h
Z2VzLCBDb2xvcjo6eWVsbG93LCAiSW1hZ2VzIik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRl
Z29yeTo6TGF5ZXJzXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5
OjpMYXllcnMsIENvbG9yOjpjeWFuLCAiTGF5ZXJzIik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlD
YXRlZ29yeTo6TGliY01hbGxvY10gPSBIaXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlD
YXRlZ29yeTo6TGliY01hbGxvYywgQ29sb3I6OmdyZWVuLCAibGliYyBtYWxsb2MiKTsKKyAgICBj
YXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpibWFsbG9jXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdv
cnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpibWFsbG9jLCB7IDI1NSwgOTYsIDk2IH0sICJibWFsbG9j
Iik7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6SXNvSGVhcF0gPSBIaXN0b3JpY01l
bW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6SXNvSGVhcCwgeyAxMjgsIDE1OSwgNjQg
fSwgIklzb0hlYXAiKTsKKyAgICBjYXRlZ29yaWVzW01lbW9yeUNhdGVnb3J5OjpPdGhlcl0gPSBI
aXN0b3JpY01lbW9yeUNhdGVnb3J5SW5mbyhNZW1vcnlDYXRlZ29yeTo6T3RoZXIsIHsgMTkyLCAy
NTUsIDAgfSwgIk90aGVyIik7CiAKICAgICAvLyBTdWIgY2F0ZWdvcmllcyAoZS5nIGJyZWFrZG93
biBvZiBibWFsbG9jIHRhZy4pCi0gICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6R0NIZWFw
XSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ0hlYXAsIG1h
a2VTaW1wbGVDb2xvcigxNjAsIDE2MCwgMjU1KSwgIkdDIGhlYXAiLCB0cnVlKTsKLSAgICBjYXRl
Z29yaWVzW01lbW9yeUNhdGVnb3J5OjpHQ093bmVkXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJ
bmZvKE1lbW9yeUNhdGVnb3J5OjpHQ093bmVkLCBtYWtlU2ltcGxlQ29sb3IoMjU1LCAxOTIsIDk2
KSwgIkdDIG93bmVkIiwgdHJ1ZSk7CisgICAgY2F0ZWdvcmllc1tNZW1vcnlDYXRlZ29yeTo6R0NI
ZWFwXSA9IEhpc3RvcmljTWVtb3J5Q2F0ZWdvcnlJbmZvKE1lbW9yeUNhdGVnb3J5OjpHQ0hlYXAs
IHsgMTYwLCAxNjAsIDI1NSB9LCAiR0MgaGVhcCIsIHRydWUpOworICAgIGNhdGVnb3JpZXNbTWVt
b3J5Q2F0ZWdvcnk6OkdDT3duZWRdID0gSGlzdG9yaWNNZW1vcnlDYXRlZ29yeUluZm8oTWVtb3J5
Q2F0ZWdvcnk6OkdDT3duZWQsIHsgMjU1LCAxOTIsIDk2IH0sICJHQyBvd25lZCIsIHRydWUpOwog
CiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIEVuc3VyZSB0aGlzIGFsaWducyB3aXRoIFJlc291cmNl
VXNhZ2VEYXRhJ3MgY2F0ZWdvcnkgb3JkZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2xp
bnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAJKHJldmlzaW9u
IDI2NDU2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJs
YXlMaW51eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDggKzg4LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBjbGlwLCBHcmFwaGljc0xheWVyUGFpbnRCZWhh
dmlvcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC5maWxsUmVjdChjbGlwLCBtYWtl
U2ltcGxlQ29sb3IoMCwgMCwgMCwgMjA0KSk7Ci0gICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KG1ha2VTaW1wbGVDb2xvcigyMzAsIDIzMCwgMjMwKSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJl
Y3QoY2xpcCwgQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhKDIwNCkpOworICAgICAgICBjb250
ZXh0LnNldEZpbGxDb2xvcihTUkdCQTx1aW50OF90PiB7IDIzMCwgMjMwLCAyMzAgfSk7CiAKICAg
ICAgICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IHsgMTAsIDIwIH07CiAgICAgICAgIFN0cmluZyBz
dHJpbmcgPSAgIkNQVTogIiArIGNwdVVzYWdlU3RyaW5nKGdEYXRhLmNwdSk7CkBAIC0xMzcsNyAr
MTM3LDcgQEAgdm9pZCBSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1Jbml0aQogICAgIG1f
cGFpbnRMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShvdmVybGF5KCkucGFnZSgpLT5jaHJv
bWUoKS5jbGllbnQoKS5ncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqbV9vdmVybGF5UGFpbnRlcik7
CiAgICAgbV9wYWludExheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CiAgICAg
bV9wYWludExheWVyLT5zZXRTaXplKHsgbm9ybWFsV2lkdGgsIG5vcm1hbEhlaWdodCB9KTsKLSAg
ICBtX3BhaW50TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihtYWtlU2ltcGxlQ29sb3IoMCwgMCwg
MCwgMjA0KSk7CisgICAgbV9wYWludExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmJs
YWNrLmNvbG9yV2l0aEFscGhhKDIwNCkpOwogICAgIG1fcGFpbnRMYXllci0+c2V0RHJhd3NDb250
ZW50KHRydWUpOwogICAgIG92ZXJsYXkoKS5sYXllcigpLmFkZENoaWxkKCptX3BhaW50TGF5ZXIp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1l
QWR3YWl0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3YWl0
YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEuY3BwCShyZXZpc2lvbiAyNjQ1NjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDEzICs0MywxMyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgb3Zlcmxh
eVRodW1iU2l6ZSA9CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bVRodW1iU2l6ZSA9IDQw
Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRodW1iU2l6ZSA9IDY7CiBzdGF0aWMgY29uc3QgZG91
YmxlIHNjcm9sbGJhck9wYWNpdHkgPSAwLjg7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gc2Nyb2xs
YmFyQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOwotc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHNjcm9sbGJhckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDIyMCwgMjIzLCAyMjcpOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIG92ZXJsYXlUaHVtYkJvcmRl
ckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAyNTUsIDEwMCk7Ci1zdGF0aWMgY29u
c3RleHByIGF1dG8gb3ZlcmxheVRodW1iQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoNDYsIDUyLCA1
NCwgMTAwKTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byB0aHVtYkhvdmVyZWRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcig4NiwgOTEsIDkyKTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byB0aHVtYlByZXNz
ZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNywgMTA2LCAyMDMpOwotc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIHRodW1iQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTI2LCAxMjksIDEzMCk7CitzdGF0
aWMgY29uc3RleHByIGF1dG8gc2Nyb2xsYmFyQmFja2dyb3VuZENvbG9yID0gU1JHQkE8dWludDhf
dD4geyAyNTIsIDI1MiwgMjUyIH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2Nyb2xsYmFyQm9y
ZGVyQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDIyMCwgMjIzLCAyMjcgfTsKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBvdmVybGF5VGh1bWJCb3JkZXJDb2xvciA9IENvbG9yOjp3aGl0ZS5jb2xvcldp
dGhBbHBoYSgxMDApOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIG92ZXJsYXlUaHVtYkNvbG9yID0g
U1JHQkE8dWludDhfdD4geyA0NiwgNTIsIDU0LCAxMDAgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byB0aHVtYkhvdmVyZWRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgODYsIDkxLCA5MiB9Oworc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHRodW1iUHJlc3NlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAy
NywgMTA2LCAyMDMgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB0aHVtYkNvbG9yID0gU1JHQkE8
dWludDhfdD4geyAxMjYsIDEyOSwgMTMwIH07CiAKIGJvb2wgU2Nyb2xsYmFyVGhlbWVBZHdhaXRh
Ojp1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYWR3YWl0YS9UaGVtZUFkd2FpdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Fkd2FpdGEvVGhlbWVBZHdhaXRhLmNwcAkocmV2aXNpb24gMjY0NTY0
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYWR3YWl0YS9UaGVtZUFkd2FpdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiwyOCArMzYsMjggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGZvY3VzTGluZVdpZHRoID0gMTsKLXN0YXRpYyBjb25zdCBD
b2xvciBmb2N1c1JpbmdDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig0NiwgNTIsIDU0LCAxNTApOwor
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGZvY3VzUmluZ0NvbG9yID0gU1JHQkE8dWludDhfdD4geyA0
NiwgNTIsIDU0LCAxNTAgfTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBhcnJvd1NpemUgPSAxNjsK
LXN0YXRpYyBjb25zdCBDb2xvciBhcnJvd0NvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDQ2LCA1Miwg
NTQpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGFycm93Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7
IDQ2LCA1MiwgNTQgfTsKIHN0YXRpYyBjb25zdCBpbnQgYnV0dG9uRm9jdXNPZmZzZXQgPSAtMzsK
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBidXR0b25QYWRkaW5nID0gNTsKIHN0YXRpYyBjb25zdCBp
bnQgYnV0dG9uQm9yZGVyU2l6ZSA9IDE7IC8vIEtlZXAgaW4gc3luYyB3aXRoIG1lbnVMaXN0QnV0
dG9uQm9yZGVyU2l6ZSBpbiBSZW5kZXJUaGVtZUFkd2FpdGEuCi1zdGF0aWMgY29uc3QgQ29sb3Ig
YnV0dG9uQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA1LCAxOTksIDE5NCk7Ci1zdGF0
aWMgY29uc3QgQ29sb3IgYnV0dG9uQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0
NCwgMjQyLCAyNDEpOwotc3RhdGljIGNvbnN0IENvbG9yIGJ1dHRvbkJhY2tncm91bmRQcmVzc2Vk
Q29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjE0LCAyMDksIDIwNSk7Ci1zdGF0aWMgY29uc3QgQ29s
b3IgYnV0dG9uQmFja2dyb3VuZEhvdmVyZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDgsIDI0
OCwgMjQ3KTsKLXN0YXRpYyBjb25zdCBDb2xvciBidXR0b25CYWNrZ3JvdW5kRGlzYWJsZWRDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcigyNDYsIDI0NiwgMjQ0KTsKLXN0YXRpYyBjb25zdCBDb2xvciB0
b2dnbGVCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSk7Ci1z
dGF0aWMgY29uc3QgQ29sb3IgdG9nZ2xlQmFja2dyb3VuZEhvdmVyZWRDb2xvciA9IG1ha2VTaW1w
bGVDb2xvcigyNDIsIDI0MiwgMjQyKTsKLXN0YXRpYyBjb25zdCBDb2xvciB0b2dnbGVCYWNrZ3Jv
dW5kRGlzYWJsZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTIsIDI1MiwgMjUyKTsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBidXR0b25Cb3JkZXJDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjA1
LCAxOTksIDE5NCB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJ1dHRvbkJhY2tncm91bmRDb2xv
ciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjQ0LCAyNDIsIDI0MSB9Oworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGJ1dHRvbkJhY2tncm91bmRQcmVzc2VkQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDIxNCwg
MjA5LCAyMDUgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBidXR0b25CYWNrZ3JvdW5kSG92ZXJl
ZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNDgsIDI0OCwgMjQ3IH07CitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gYnV0dG9uQmFja2dyb3VuZERpc2FibGVkQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7
IDI0NiwgMjQ2LCAyNDQgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB0b2dnbGVCYWNrZ3JvdW5k
Q29sb3IgPSBDb2xvcjo6d2hpdGU7CitzdGF0aWMgY29uc3RleHByIGF1dG8gdG9nZ2xlQmFja2dy
b3VuZEhvdmVyZWRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjQyLCAyNDIsIDI0MiB9Oworc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHRvZ2dsZUJhY2tncm91bmREaXNhYmxlZENvbG9yID0gU1JHQkE8
dWludDhfdD4geyAyNTIsIDI1MiwgMjUyIH07CiBzdGF0aWMgY29uc3QgZG91YmxlIHRvZ2dsZVNp
emUgPSAxNC47CiBzdGF0aWMgY29uc3QgaW50IHRvZ2dsZUZvY3VzT2Zmc2V0ID0gMjsKLXN0YXRp
YyBjb25zdCBDb2xvciB0b2dnbGVDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig0NiwgNTIsIDU0KTsK
LXN0YXRpYyBjb25zdCBDb2xvciB0b2dnbGVEaXNhYmxlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDE2MCwgMTYwLCAxNjApOwotc3RhdGljIGNvbnN0IENvbG9yIHNwaW5CdXR0b25Cb3JkZXJDb2xv
ciA9IG1ha2VTaW1wbGVDb2xvcigyMjAsIDIyMywgMjI3KTsKLXN0YXRpYyBjb25zdCBDb2xvciBz
cGluQnV0dG9uQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIp
Owotc3RhdGljIGNvbnN0IENvbG9yIHNwaW5CdXR0b25CYWNrZ3JvdW5kSG92ZXJlZENvbG9yID0g
bWFrZVNpbXBsZUNvbG9yKDQ2LCA1MiwgNTQsIDUwKTsKLXN0YXRpYyBjb25zdCBDb2xvciBzcGlu
QnV0dG9uQmFja2dyb3VuZFByZXNzZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcig0NiwgNTIsIDU0
LCA3MCk7CitzdGF0aWMgY29uc3RleHByIGF1dG8gdG9nZ2xlQ29sb3IgPSBTUkdCQTx1aW50OF90
PiB7IDQ2LCA1MiwgNTQgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB0b2dnbGVEaXNhYmxlZENv
bG9yID0gU1JHQkE8dWludDhfdD4geyAxNjAsIDE2MCwgMTYwIH07CitzdGF0aWMgY29uc3RleHBy
IGF1dG8gc3BpbkJ1dHRvbkJvcmRlckNvbG9yID0gU1JHQkE8dWludDhfdD4geyAyMjAsIDIyMywg
MjI3IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gc3BpbkJ1dHRvbkJhY2tncm91bmRDb2xvciA9
IFNSR0JBPHVpbnQ4X3Q+IHsgMjUyLCAyNTIsIDI1MiB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHNwaW5CdXR0b25CYWNrZ3JvdW5kSG92ZXJlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyA0Niwg
NTIsIDU0LCA1MCB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNwaW5CdXR0b25CYWNrZ3JvdW5k
UHJlc3NlZENvbG9yID0gU1JHQkE8dWludDhfdD4geyA0NiwgNTIsIDU0LCA3MCB9OwogCiAjaWYg
IVBMQVRGT1JNKEdUSykgfHwgVVNFKEdUSzQpCiBUaGVtZSYgVGhlbWU6OnNpbmdsZXRvbigpCkBA
IC02OSwxNyArNjksMTcgQEAgVGhlbWUmIFRoZW1lOjpzaW5nbGV0b24oKQogCiBDb2xvciBUaGVt
ZUFkd2FpdGE6OmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1KTsKKyAgICByZXR1cm4gQ29sb3I6
OndoaXRlOwogfQogCiBDb2xvciBUaGVtZUFkd2FpdGE6OmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcig1MiwgMTMyLCAy
MjgpOworICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDUyLCAxMzIsIDIyOCB9OwogfQogCiBD
b2xvciBUaGVtZUFkd2FpdGE6OmluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDI1MiwgMjUyLCAyNTIpOworICAgIHJl
dHVybiBTUkdCQTx1aW50OF90PiB7IDI1MiwgMjUyLCAyNTIgfTsKIH0KIAogQ29sb3IgVGhlbWVB
ZHdhaXRhOjppbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZpc2lvbiAyNjQ1
NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDggKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgY29uc3RleHByIGF1dG8gbGlnaHRlbmVkQmxhY2sgPSBtYWtlU2ltcGxlQ29sb3IoODQsIDg0
LCA4NCk7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gZGFya2VuZWRXaGl0ZSA9IG1ha2VTaW1wbGVD
b2xvcigxNzEsIDE3MSwgMTcxKTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBsaWdodGVuZWRCbGFj
ayA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyA4NCwgODQsIDg0IH07CitzdGF0aWMg
Y29uc3RleHByIGF1dG8gZGFya2VuZWRXaGl0ZSA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90
Pj4geyAxNzEsIDE3MSwgMTcxIH07CiAKIENvbG9yOjpDb2xvcihjb25zdCBDb2xvciYgb3RoZXIp
CiAgICAgOiBtX2NvbG9yRGF0YShvdGhlci5tX2NvbG9yRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAkocmV2aXNpb24gMjY0NTY0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjUs
OSArMjUsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb2xvckJ1aWxkZXIuaCIK
ICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNp
bmNsdWRlICJFeHRlbmRlZENvbG9yLmgiCi0jaW5jbHVkZSAiU2ltcGxlQ29sb3IuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hlci5oPgpAQCAtMTQ1LDE0ICsxNDYsMjAgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIG9wZXJhdG9yIEQyRDFfVkVDVE9SXzRGKCkgY29uc3Q7CiAjZW5kaWYKIAot
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBibGFjayA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAw
KTsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gd2hpdGUgPSBtYWtlU2ltcGxlQ29sb3IoMjU1
LCAyNTUsIDI1NSk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRhcmtHcmF5ID0gbWFrZVNp
bXBsZUNvbG9yKDEyOCwgMTI4LCAxMjgpOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBncmF5
ID0gbWFrZVNpbXBsZUNvbG9yKDE2MCwgMTYwLCAxNjApOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
YXV0byBsaWdodEdyYXkgPSBtYWtlU2ltcGxlQ29sb3IoMTkyLCAxOTIsIDE5Mik7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHRyYW5zcGFyZW50ID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAs
IDApOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjeWFuID0gbWFrZVNpbXBsZUNvbG9yKDAs
IDI1NSwgMjU1KTsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8geWVsbG93ID0gbWFrZVNpbXBs
ZUNvbG9yKDI1NSwgMjU1LCAwKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gYmxhY2sgPSBD
b2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsgMCwgMCwgMCB9OworICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byB3aGl0ZSA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAyNTUsIDI1
NSwgMjU1IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRhcmtHcmF5ID0gQ29sb3JCdWls
ZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDEyOCwgMTI4LCAxMjggfTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGF1dG8gZ3JheSA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAxNjAsIDE2MCwg
MTYwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGxpZ2h0R3JheSA9IENvbG9yQnVpbGRl
cjxTUkdCQTx1aW50OF90Pj4geyAxOTIsIDE5MiwgMTkyIH07CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIHRyYW5zcGFyZW50ID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IH07Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGN5YW4gPSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhf
dD4+IHsgMCwgMjU1LCAyNTUgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8geWVsbG93ID0g
Q29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDI1NSwgMjU1LCAwIH07CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIHJlZCA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50OF90Pj4geyAyNTUs
IDAsIDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gbWFnZW50YSA9IENvbG9yQnVpbGRl
cjxTUkdCQTx1aW50OF90Pj4geyAyNTUsIDAsIDI1NSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIg
YXV0byBibHVlID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDAsIDAsIDI1NSB9Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBncmVlbiA9IENvbG9yQnVpbGRlcjxTUkdCQTx1aW50
OF90Pj4geyAwLCAyNTUsIDAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGFya0dyZWVu
ID0gQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiB7IDAsIDEyOCwgMCB9OworICAgIHN0YXRp
YyBjb25zdGV4cHIgYXV0byBvcmFuZ2UgPSBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhfdD4+IHsg
MjU1LCAxMjgsIDAgfTsKIAogICAgIGJvb2wgaXNFeHRlbmRlZCgpIGNvbnN0IHsgcmV0dXJuICEo
bV9jb2xvckRhdGEuaW5saW5lQ29sb3JBbmRGbGFncyAmIGludmFsaWRJbmxpbmVDb2xvcik7IH0K
ICAgICBib29sIGlzSW5saW5lKCkgY29uc3QgeyByZXR1cm4gIWlzRXh0ZW5kZWQoKTsgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCbGVuZGluZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCbGVuZGlu
Zy5jcHAJKHJldmlzaW9uIDI2NDU2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQmxlbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIENv
bG9yIGJsZW5kU291cmNlT3Zlcihjb25zdCBDb2xvciYgYmFja2QKICAgICBpbnQgZyA9IChiYWNr
ZHJvcEcgKiBiYWNrZHJvcEEgKiAoMHhGRiAtIHNvdXJjZUEpICsgMHhGRiAqIHNvdXJjZUEgKiBz
b3VyY2VHKSAvIGQ7CiAgICAgaW50IGIgPSAoYmFja2Ryb3BCICogYmFja2Ryb3BBICogKDB4RkYg
LSBzb3VyY2VBKSArIDB4RkYgKiBzb3VyY2VBICogc291cmNlQikgLyBkOwogCi0gICAgcmV0dXJu
IG1ha2VTaW1wbGVDb2xvcihyLCBnLCBiLCBhKTsKKyAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVu
dEJ5dGVzPFNSR0JBPihyLCBnLCBiLCBhKTsKIH0KIAogQ29sb3IgYmxlbmRXaXRoV2hpdGUoY29u
c3QgQ29sb3ImIGNvbG9yKQpAQCAtNzgsNyArNzgsNyBAQCBDb2xvciBibGVuZFdpdGhXaGl0ZShj
b25zdCBDb2xvciYgY29sb3IpCiAgICAgICAgIGludCBnID0gYmxlbmRDb21wb25lbnQoZXhpc3Rp
bmdHLCBhbHBoYSk7CiAgICAgICAgIGludCBiID0gYmxlbmRDb21wb25lbnQoZXhpc3RpbmdCLCBh
bHBoYSk7CiAKLSAgICAgICAgcmVzdWx0ID0gbWFrZVNpbXBsZUNvbG9yKHIsIGcsIGIsIGFscGhh
KTsKKyAgICAgICAgcmVzdWx0ID0gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihyLCBnLCBi
LCBhbHBoYSk7CiAKICAgICAgICAgaWYgKHIgPj0gMCAmJiBnID49IDAgJiYgYiA+PSAwKQogICAg
ICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvckJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckJ1aWxkZXIuaAkocmV2aXNpb24gMjY0NTY0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEw
ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEhlbHBlciB0byBhbGxvdyBjb252ZW5p
ZW50IHN5bnRheCBmb3Igd29ya2luZyB3aXRoIGNvbG9yIHR5cGVzLgogLy8gZS5nLiBhdXRvIHll
bGxvd1dpdGg1MFBlcmNlbnRBbHBoYSA9IENvbG9yOjp5ZWxsb3cuY29sb3JXaXRoQWxwaGEoMTI4
KTsKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gc3RydWN0IENvbG9yQnVpbGRlciA6IHB1
YmxpYyBDb2xvclR5cGUgewotICAgIGNvbnN0ZXhwciBDb2xvckJ1aWxkZXIoY29uc3QgQ29sb3JU
eXBlJiBjb2xvcikKLSAgICAgICAgOiBDb2xvclR5cGUgeyBjb2xvciB9Ci0gICAgewotICAgIH0K
KyAgICB1c2luZyBDb2xvclR5cGU6OkNvbG9yVHlwZTsKIAogICAgIGNvbnN0ZXhwciBDb2xvclR5
cGUgY29sb3IoKSBjb25zdAogICAgIHsKQEAgLTQyLDkgKzM5LDkgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgQ29sb3JUeXBlPiBzdHJ1Y3QgQ29sbwogCiAgICAgY29uc3RleHByIENvbG9yQnVpbGRlciBj
b2xvcldpdGhBbHBoYSh1aW50OF90IG92ZXJyaWRlQWxwaGEpIGNvbnN0CiAgICAgewotICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PGRlY2x0eXBlKENvbG9yVHlwZSgpLmFscGhh
KSwgdWludDhfdD4sICJPbmx5IHVpbnQ4X3QgYmFzZWQgY29sb3IgdHlwZXMgYXJlIHN1cHBvcnRl
ZC4iKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjx0eXBlbmFtZSBDb2xv
clR5cGU6OkNvbXBvbmVudFR5cGUsIHVpbnQ4X3Q+LCAiT25seSB1aW50OF90IGJhc2VkIGNvbG9y
IHR5cGVzIGFyZSBzdXBwb3J0ZWQuIik7CiAKLSAgICAgICAgQ29sb3JCdWlsZGVyIGNvcHkgPSAq
dGhpczsKKyAgICAgICAgYXV0byBjb3B5ID0gKnRoaXM7CiAgICAgICAgIGNvcHkuYWxwaGEgPSBv
dmVycmlkZUFscGhhOwogICAgICAgICByZXR1cm4gY29weTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCShyZXZpc2lvbiAyNjQ1
NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDE5ICs0MiwyOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb21wb25l
bnRUcmFpdHM8ZmxvYXQ+CiAgICAgc3RhdGljIGNvbnN0ZXhwciBmbG9hdCBtYXhWYWx1ZSA9IDEu
MGY7CiB9OwogCi0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTUkdCQSB7CisgICAgdXNp
bmcgQ29tcG9uZW50VHlwZSA9IFQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3Bh
Y2UgPSBDb2xvclNwYWNlOjpTUkdCOworCisgICAgY29uc3RleHByIFNSR0JBKFQgcmVkLCBUIGdy
ZWVuLCBUIGJsdWUsIFQgYWxwaGEgPSBDb21wb25lbnRUcmFpdHM8VD46Om1heFZhbHVlKQorICAg
ICAgICA6IHJlZCB7IHJlZCB9CisgICAgICAgICwgZ3JlZW4geyBncmVlbiB9CisgICAgICAgICwg
Ymx1ZSB7IGJsdWUgfQorICAgICAgICAsIGFscGhhIHsgYWxwaGEgfQorICAgIHsKKyAgICB9CisK
KyAgICBjb25zdGV4cHIgU1JHQkEoKQorICAgICAgICA6IFNSR0JBIHsgQ29tcG9uZW50VHJhaXRz
PFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJh
aXRzPFQ+OjptaW5WYWx1ZSwgQ29tcG9uZW50VHJhaXRzPFQ+OjptaW5WYWx1ZSB9CisgICAgewor
ICAgIH0KKwogICAgIFQgcmVkOwogICAgIFQgZ3JlZW47CiAgICAgVCBibHVlOwogICAgIFQgYWxw
aGE7Ci0KLSAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKLSAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8gY29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0I7CiB9OwogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBTUkdCQShULCBULCBULCBUKSAtPiBTUkdCQTxUPjsKLQogdGVtcGxhdGU8dHlwZW5h
bWUgVD4gY29uc3RleHByIENvbG9yQ29tcG9uZW50czxUPiBhc0NvbG9yQ29tcG9uZW50cyhjb25z
dCBTUkdCQTxUPiYgYykKIHsKICAgICByZXR1cm4geyBjLnJlZCwgYy5ncmVlbiwgYy5ibHVlLCBj
LmFscGhhIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0
aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yVXRpbGl0aWVzLmgJKHJldmlzaW9uIDI2NDU2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcg
KzU5LDkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252ZXJ0Q29tcG9uZW50RgogdGVtcGxh
dGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gQ29sb3JUeXBlPHVpbnQ4
X3Q+IGNvbnZlcnRUb0NvbXBvbmVudEJ5dGVzKGNvbnN0IENvbG9yVHlwZTxmbG9hdD4mKTsKIHRl
bXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBD
b2xvclR5cGU8ZmxvYXQ+IGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0cyhjb25zdCBDb2xvclR5cGU8
dWludDhfdD4mKTsKIAordGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9y
VHlwZT4gY29uc3RleHByIENvbG9yVHlwZTx1aW50OF90PiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXMo
aW50IHIsIGludCBnLCBpbnQgYik7CiB0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5h
bWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPHVpbnQ4X3Q+IGNsYW1wVG9Db21wb25l
bnRCeXRlcyhpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSk7Cit0ZW1wbGF0ZTx0ZW1wbGF0ZTx0
eXBlbmFtZT4gdHlwZW5hbWUgQ29sb3JUeXBlPiBjb25zdGV4cHIgQ29sb3JUeXBlPGZsb2F0PiBj
bGFtcFRvQ29tcG9uZW50RmxvYXRzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIpOwogdGVtcGxh
dGU8dGVtcGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9y
VHlwZTxmbG9hdD4gY2xhbXBUb0NvbXBvbmVudEZsb2F0cyhmbG9hdCByLCBmbG9hdCBnLCBmbG9h
dCBiLCBmbG9hdCBhKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBG
dW5jdG9yPiBDb2xvclR5cGUgY29sb3JCeU1vZGlmaW5nRWFjaE5vbkFscGhhQ29tcG9uZW50KGNv
bnN0IENvbG9yVHlwZSYsIEZ1bmN0b3ImJik7CkBAIC0xMzQsMTEgKzEzNiwyMSBAQCB0ZW1wbGF0
ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQ29sCiAgICAgcmV0dXJuIHsgY29udmVydFRv
Q29tcG9uZW50RmxvYXQoY29tcG9uZW50c1swXSksIGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0KGNv
bXBvbmVudHNbMV0pLCBjb252ZXJ0VG9Db21wb25lbnRGbG9hdChjb21wb25lbnRzWzJdKSwgY29u
dmVydFRvQ29tcG9uZW50RmxvYXQoY29tcG9uZW50c1szXSkgfTsKIH0KIAordGVtcGxhdGU8dGVt
cGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIENvbG9yVHlwZT4gY29uc3RleHByIENvbG9yVHlwZTx1
aW50OF90PiBjbGFtcFRvQ29tcG9uZW50Qnl0ZXMoaW50IHIsIGludCBnLCBpbnQgYikKK3sKKyAg
ICByZXR1cm4geyBjbGFtcFRvQ29tcG9uZW50Qnl0ZShyKSwgY2xhbXBUb0NvbXBvbmVudEJ5dGUo
ZyksIGNsYW1wVG9Db21wb25lbnRCeXRlKGIpIH07Cit9CisKIHRlbXBsYXRlPHRlbXBsYXRlPHR5
cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0ZXhwciBDb2xvclR5cGU8dWludDhfdD4g
Y2xhbXBUb0NvbXBvbmVudEJ5dGVzKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKQogewogICAg
IHJldHVybiB7IGNsYW1wVG9Db21wb25lbnRCeXRlKHIpLCBjbGFtcFRvQ29tcG9uZW50Qnl0ZShn
KSwgY2xhbXBUb0NvbXBvbmVudEJ5dGUoYiksIGNsYW1wVG9Db21wb25lbnRCeXRlKGEpIH07CiB9
CiAKK3RlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0
ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNsYW1wVG9Db21wb25lbnRGbG9hdHMoZmxvYXQgciwgZmxv
YXQgZywgZmxvYXQgYikKK3sKKyAgICByZXR1cm4geyBjbGFtcFRvQ29tcG9uZW50RmxvYXQociks
IGNsYW1wVG9Db21wb25lbnRGbG9hdChnKSwgY2xhbXBUb0NvbXBvbmVudEZsb2F0KGIpIH07Cit9
CisKIHRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lPiB0eXBlbmFtZSBDb2xvclR5cGU+IGNvbnN0
ZXhwciBDb2xvclR5cGU8ZmxvYXQ+IGNsYW1wVG9Db21wb25lbnRGbG9hdHMoZmxvYXQgciwgZmxv
YXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsKICAgICByZXR1cm4geyBjbGFtcFRvQ29tcG9uZW50
RmxvYXQociksIGNsYW1wVG9Db21wb25lbnRGbG9hdChnKSwgY2xhbXBUb0NvbXBvbmVudEZsb2F0
KGIpLCBjbGFtcFRvQ29tcG9uZW50RmxvYXQoYSkgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCShyZXZpc2lvbiAyNjQ1
NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTk4LDM0ICs1OTgsMzQgQEAgdm9pZCBHcmFwaGljc0xheWVy
OjpnZXREZWJ1Z0JvcmRlckluZm8oQwogICAgIHdpZHRoID0gMjsKIAogICAgIGlmIChuZWVkc0Jh
Y2tkcm9wKCkpIHsKLSAgICAgICAgY29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAyNTUs
IDEyOCk7IC8vIGhhcyBiYWNrZHJvcDogbWFnZW50YQorICAgICAgICBjb2xvciA9IENvbG9yOjpt
YWdlbnRhLmNvbG9yV2l0aEFscGhhKDEyOCk7IC8vIGhhcyBiYWNrZHJvcDogbWFnZW50YQogICAg
ICAgICB3aWR0aCA9IDEyOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIGlmIChk
cmF3c0NvbnRlbnQoKSkgewogICAgICAgICBpZiAodGlsZWRCYWNraW5nKCkpIHsKLSAgICAgICAg
ICAgIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMTI4LCAwLCAxMjgpOyAvLyB0aWxlZCBs
YXllcjogb3JhbmdlCisgICAgICAgICAgICBjb2xvciA9IENvbG9yOjpvcmFuZ2UuY29sb3JXaXRo
QWxwaGEoMTI4KTsgLy8gdGlsZWQgbGF5ZXI6IG9yYW5nZQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgY29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMTI4LCAzMiwg
MTI4KTsgLy8gbm9ybWFsIGxheWVyOiBncmVlbgorICAgICAgICBjb2xvciA9IFNSR0JBPHVpbnQ4
X3Q+IHsgMCwgMTI4LCAzMiwgMTI4IH07IC8vIG5vcm1hbCBsYXllcjogZ3JlZW4KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIGlmICh1c2VzQ29udGVudHNMYXllcigpKSB7Ci0gICAgICAg
IGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDY0LCAxMjgsIDE1MCk7IC8vIG5vbi1wYWludGlu
ZyBsYXllciB3aXRoIGNvbnRlbnRzOiBibHVlCisgICAgICAgIGNvbG9yID0gU1JHQkE8dWludDhf
dD4geyAwLCA2NCwgMTI4LCAxNTAgfTsgLy8gbm9uLXBhaW50aW5nIGxheWVyIHdpdGggY29udGVu
dHM6IGJsdWUKICAgICAgICAgd2lkdGggPSA4OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAogICAgIGlmIChtYXNrc1RvQm91bmRzKCkpIHsKLSAgICAgICAgY29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoMTI4LCAyNTUsIDI1NSwgNDgpOyAvLyBtYXNraW5nIGxheWVyOiBwYWxlIGJsdWUKKyAg
ICAgICAgY29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDEyOCwgMjU1LCAyNTUsIDQ4IH07IC8vIG1h
c2tpbmcgbGF5ZXI6IHBhbGUgYmx1ZQogICAgICAgICB3aWR0aCA9IDE2OwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgY29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDAsIDE5
Mik7IC8vIGNvbnRhaW5lcjogeWVsbG93CisgICAgY29sb3IgPSBDb2xvcjo6eWVsbG93LmNvbG9y
V2l0aEFscGhhKDE5Mik7IC8vIGNvbnRhaW5lcjogeWVsbG93CiB9CiAKIHZvaWQgR3JhcGhpY3NM
YXllcjo6dXBkYXRlRGVidWdJbmRpY2F0b3JzKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NpbXBsZUNvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaAkocmV2aXNpb24gMjY0NTY0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlQ29sb3IuaAkobm9uZXhpc3RlbnQp
CkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNvbG9yQnVpbGRlci5oIgot
I2luY2x1ZGUgIkNvbG9yVHlwZXMuaCIKLSNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0ZXhwciBDb2xvckJ1aWxkZXI8U1JHQkE8dWludDhf
dD4+IG1ha2VTaW1wbGVDb2xvcihpbnQgciwgaW50IGcsIGludCBiKQotewotICAgIHJldHVybiBj
bGFtcFRvQ29tcG9uZW50Qnl0ZXM8U1JHQkE+KHIsIGcsIGIsIDB4RkYpOwotfQotCi1jb25zdGV4
cHIgQ29sb3JCdWlsZGVyPFNSR0JBPHVpbnQ4X3Q+PiBtYWtlU2ltcGxlQ29sb3IoaW50IHIsIGlu
dCBnLCBpbnQgYiwgaW50IGEpCi17Ci0gICAgcmV0dXJuIGNsYW1wVG9Db21wb25lbnRCeXRlczxT
UkdCQT4ociwgZywgYiwgYSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcAkocmV2aXNpb24gMjY0NTY0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5MCw4
ICsxNTkwLDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYQogICAg
IC8vIFVzZSBoYXZpbmcgYSB0cmFuc2Zvcm0gYXMgYSBrZXkgdG8gbWFraW5nIHRoZSB0aWxlIHdh
c2ggbGF5ZXIuIElmIGV2ZXJ5IGxheWVyIGdldHMgYSB3YXNoLAogICAgIC8vIHRoZXkgc3RhcnQg
dG8gb2JzY3VyZSB1c2VmdWwgaW5mb3JtYXRpb24uCiAgICAgaWYgKCghbV90cmFuc2Zvcm0uaXNJ
ZGVudGl0eSgpIHx8IHRpbGVkQmFja2luZygpKSAmJiAhbV92aXNpYmxlVGlsZVdhc2hMYXllcikg
ewotICAgICAgICBjb25zdGV4cHIgYXV0byB3YXNoRmlsbENvbG9yID0gbWFrZVNpbXBsZUNvbG9y
KDI1NSwgMCwgMCwgNTApOwotICAgICAgICBjb25zdGV4cHIgYXV0byB3YXNoQm9yZGVyQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAwLCAxMDApOworICAgICAgICBjb25zdGV4cHIgYXV0
byB3YXNoRmlsbENvbG9yID0gQ29sb3I6OnJlZC5jb2xvcldpdGhBbHBoYSg1MCk7CisgICAgICAg
IGNvbnN0ZXhwciBhdXRvIHdhc2hCb3JkZXJDb2xvciA9IENvbG9yOjpyZWQuY29sb3JXaXRoQWxw
aGEoMTAwKTsKICAgICAgICAgCiAgICAgICAgIG1fdmlzaWJsZVRpbGVXYXNoTGF5ZXIgPSBjcmVh
dGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllciwgdGhpcyk7
CiAgICAgICAgIFN0cmluZyBuYW1lID0gbWFrZVN0cmluZygiVmlzaWJsZSBUaWxlIFdhc2ggTGF5
ZXIgMHgiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fdmlzaWJsZVRpbGVXYXNo
TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSksIExvd2VyY2FzZSkpOwpAQCAtMjU0OCwxMyArMjU0OCwx
MyBAQCBzdGF0aWMgdm9pZCBzZXRMYXllckRlYnVnQm9yZGVyKFBsYXRmb3JtCiBzdGF0aWMgY29u
c3QgZmxvYXQgY29udGVudHNMYXllckJvcmRlcldpZHRoID0gNDsKIHN0YXRpYyBDb2xvciBjb250
ZW50c0xheWVyRGVidWdCb3JkZXJDb2xvcihib29sIHNob3dpbmdCb3JkZXJzKQogewotICAgIHJl
dHVybiBzaG93aW5nQm9yZGVycyA/IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAxMjgsIDE4MCkgOiBD
b2xvciB7IH07CisgICAgcmV0dXJuIHNob3dpbmdCb3JkZXJzID8gU1JHQkE8dWludDhfdD4geyAw
LCAwLCAxMjgsIDE4MCB9IDogQ29sb3IgeyB9OwogfQogCiBzdGF0aWMgY29uc3QgZmxvYXQgY2xv
bmVMYXllckJvcmRlcldpZHRoID0gMjsKIHN0YXRpYyBDb2xvciBjbG9uZUxheWVyRGVidWdCb3Jk
ZXJDb2xvcihib29sIHNob3dpbmdCb3JkZXJzKQogewotICAgIHJldHVybiBzaG93aW5nQm9yZGVy
cyA/IG1ha2VTaW1wbGVDb2xvcigyNTUsIDEyMiwgMjUxKSA6IENvbG9yIHsgfTsKKyAgICByZXR1
cm4gc2hvd2luZ0JvcmRlcnMgPyBTUkdCQTx1aW50OF90PiB7IDI1NSwgMTIyLCAyNTEgfSA6IENv
bG9yIHsgfTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZURlYnVnSW5kaWNhdG9y
cygpCkBAIC0zNzkxLDcgKzM3OTEsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0RGVidWdC
YWNrZ3JvdW5kCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Z2V0RGVidWdCb3JkZXJJbmZvKENvbG9y
JiBjb2xvciwgZmxvYXQmIHdpZHRoKSBjb25zdAogewogICAgIGlmIChpc1BhZ2VUaWxlZEJhY2tp
bmdMYXllcigpKSB7Ci0gICAgICAgIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDEyOCwg
MTI4KTsgLy8gdGlsZSBjYWNoZSBsYXllcjogZGFyayBibHVlCisgICAgICAgIGNvbG9yID0gU1JH
QkE8dWludDhfdD4geyAwLCAwLCAxMjgsIDEyOCB9OyAvLyB0aWxlIGNhY2hlIGxheWVyOiBkYXJr
IGJsdWUKICNpZiBPUyhXSU5ET1dTKQogICAgICAgICB3aWR0aCA9IDEuMDsKICNlbHNlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllci5jcHAJKHJldmlzaW9uIDI2NDU2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0
LDExICs4NCwxMSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0CiAg
ICAgY29uc3QgZmxvYXQgdmVydGljYWxNYXJnaW4gPSAyLjU7CiAgICAgY29uc3QgZmxvYXQgaG9y
aXpvbnRhbE1hcmdpbiA9IDU7CiAgICAgY29uc3QgdW5zaWduZWQgZm9udFNpemUgPSAyMjsKLSAg
ICBjb25zdGV4cHIgYXV0byBiYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTI4LCA2
NCwgMjU1KTsKLSAgICBjb25zdGV4cHIgYXV0byBhY2NlbGVyYXRlZENvbnRleHRMYWJlbENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCk7Ci0gICAgY29uc3RleHByIGF1dG8gdW5hY2Nl
bGVyYXRlZENvbnRleHRMYWJlbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAyNTUp
OwotICAgIGNvbnN0ZXhwciBhdXRvIGxpbmVhckdseXBoTWFza091dGxpbmVDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigwLCAwLCAwLCAxOTIpOwotICAgIGNvbnN0ZXhwciBhdXRvIGRpc3BsYXlMaXN0
Qm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMCwgMTY2KTsKKyAgICBjb25zdGV4
cHIgYXV0byBiYWNrZ3JvdW5kQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDEyOCwgNjQsIDI1NSB9
OworICAgIGNvbnN0ZXhwciBhdXRvIGFjY2VsZXJhdGVkQ29udGV4dExhYmVsQ29sb3IgPSBDb2xv
cjo6cmVkOworICAgIGNvbnN0ZXhwciBhdXRvIHVuYWNjZWxlcmF0ZWRDb250ZXh0TGFiZWxDb2xv
ciA9IENvbG9yOjp3aGl0ZTsKKyAgICBjb25zdGV4cHIgYXV0byBsaW5lYXJHbHlwaE1hc2tPdXRs
aW5lQ29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMTkyKTsKKyAgICBjb25zdGV4
cHIgYXV0byBkaXNwbGF5TGlzdEJvcmRlckNvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFs
cGhhKDE2Nik7CiAKICAgICBUZXh0UnVuIHRleHRSdW4oU3RyaW5nOjpudW1iZXIocmVwYWludENv
dW50KSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVD
b3ZlcmFnZU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcAkocmV2aXNpb24gMjY0NTY0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsMTYgKzUxLDE2IEBAIFRpbGVDb3ZlcmFnZU1hcDo6VGlsZUNvdmVyYWdl
TWFwKGNvbnN0IFQKICAgICBtX3Zpc2libGVWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgpLnNl
dE5hbWUoInZpc2libGUgdmlld3BvcnQgaW5kaWNhdG9yIik7CiAgICAgbV92aXNpYmxlVmlld3Bv
cnRJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRCb3JkZXJXaWR0aCgyKTsKICAgICBtX3Zpc2libGVW
aWV3cG9ydEluZGljYXRvckxheWVyLmdldCgpLnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgp
KTsKLSAgICBtX3Zpc2libGVWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlckNv
bG9yKG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDAsIDIwMCkpOworICAgIG1fdmlzaWJsZVZpZXdw
b3J0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0Qm9yZGVyQ29sb3IoQ29sb3I6OnJlZC5jb2xvcldp
dGhBbHBoYSgyMDApKTsKIAogICAgIG1fbGF5b3V0Vmlld3BvcnRJbmRpY2F0b3JMYXllci5nZXQo
KS5zZXROYW1lKCJsYXlvdXQgdmlld3BvcnQgaW5kaWNhdG9yIik7CiAgICAgbV9sYXlvdXRWaWV3
cG9ydEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlcldpZHRoKDIpOwogICAgIG1fbGF5b3V0
Vmlld3BvcnRJbmRpY2F0b3JMYXllci5nZXQoKS5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0Qo
KSk7Ci0gICAgbV9sYXlvdXRWaWV3cG9ydEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlckNv
bG9yKG1ha2VTaW1wbGVDb2xvcigwLCAxMjgsIDEyOCwgMjAwKSk7CisgICAgbV9sYXlvdXRWaWV3
cG9ydEluZGljYXRvckxheWVyLmdldCgpLnNldEJvcmRlckNvbG9yKFNSR0JBPHVpbnQ4X3Q+IHsg
MCwgMTI4LCAxMjgsIDIwMCB9KTsKICAgICAKICAgICBtX2NvdmVyYWdlUmVjdEluZGljYXRvckxh
eWVyLmdldCgpLnNldE5hbWUoImNvdmVyYWdlIGluZGljYXRvciIpOwogICAgIG1fY292ZXJhZ2VS
ZWN0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwot
ICAgIG1fY292ZXJhZ2VSZWN0SW5kaWNhdG9yTGF5ZXIuZ2V0KCkuc2V0QmFja2dyb3VuZENvbG9y
KG1ha2VTaW1wbGVDb2xvcig2NCwgNjQsIDY0LCA1MCkpOworICAgIG1fY292ZXJhZ2VSZWN0SW5k
aWNhdG9yTGF5ZXIuZ2V0KCkuc2V0QmFja2dyb3VuZENvbG9yKFNSR0JBPHVpbnQ4X3Q+IHsgNjQs
IDY0LCA2NCwgNTAgfSk7CiAKICAgICBtX2xheWVyLmdldCgpLmFwcGVuZFN1YmxheWVyKG1fY292
ZXJhZ2VSZWN0SW5kaWNhdG9yTGF5ZXIpOwogICAgIG1fbGF5ZXIuZ2V0KCkuYXBwZW5kU3VibGF5
ZXIobV92aXNpYmxlVmlld3BvcnRJbmRpY2F0b3JMYXllcik7CkBAIC0xMzYsMTYgKzEzNiwxNiBA
QCB2b2lkIFRpbGVDb3ZlcmFnZU1hcDo6dXBkYXRlKCkKICAgICBDb2xvciB2aXNpYmxlUmVjdElu
ZGljYXRvckNvbG9yOwogICAgIHN3aXRjaCAobV9jb250cm9sbGVyLmluZGljYXRvck1vZGUoKSkg
ewogICAgIGNhc2UgU3luY2hyb25vdXNTY3JvbGxpbmdCZWNhdXNlT2ZMYWNrT2ZTY3JvbGxpbmdD
b29yZGluYXRvckluZGljYXRpb246Ci0gICAgICAgIHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMjAwLCA4MCwgMjU1KTsKKyAgICAgICAgdmlzaWJsZVJlY3RJbmRp
Y2F0b3JDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjAwLCA4MCwgMjU1IH07CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgU3luY2hyb25vdXNTY3JvbGxpbmdCZWNhdXNlT2ZTdHlsZUluZGljYXRp
b246Ci0gICAgICAgIHZpc2libGVSZWN0SW5kaWNhdG9yQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
MjU1LCAwLCAwKTsKKyAgICAgICAgdmlzaWJsZVJlY3RJbmRpY2F0b3JDb2xvciA9IENvbG9yOjpy
ZWQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3luY2hyb25vdXNTY3JvbGxpbmdCZWNhdXNl
T2ZFdmVudEhhbmRsZXJzSW5kaWNhdGlvbjoKLSAgICAgICAgdmlzaWJsZVJlY3RJbmRpY2F0b3JD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMCk7CisgICAgICAgIHZpc2libGVSZWN0
SW5kaWNhdG9yQ29sb3IgPSBDb2xvcjo6eWVsbG93OwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFzeW5jU2Nyb2xsaW5nSW5kaWNhdGlvbjoKLSAgICAgICAgdmlzaWJsZVJlY3RJbmRpY2F0b3JD
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAyMDAsIDApOworICAgICAgICB2aXNpYmxlUmVjdElu
ZGljYXRvckNvbG9yID0gU1JHQkE8dWludDhfdD4geyAwLCAyMDAsIDAgfTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5h
bC5jcHAJKHJldmlzaW9uIDI2NDU2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpkcmF3
UmVwCiAgICAgaWYgKGJvcmRlcldpZHRoID4gMCkKICAgICAgICAgYmFja2dyb3VuZENvbG9yID0g
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IoY2FMYXllcik7CiAgICAgZWxzZQotICAgICAgICBiYWNr
Z3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDApKTsK
KyAgICAgICAgYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xvcjo6cmVkKTsKIAog
ICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoY29udGV4dCk7CiAgICAgUGxhdGZv
cm1DQUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihncmFwaGljc0NvbnRleHQsIG93bmVyKCks
IGRyYXdDb3VudCwgYmFja2dyb3VuZENvbG9yKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCShyZXZpc2lvbiAy
NjQ1NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFn
ZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBDb2xvciBuYXRpdmVJbWFn
ZVNpbmdsZVBpeGVsU29saWRDb2xvcihjCiAgICAgaWYgKCFwaXhlbFszXSkKICAgICAgICAgcmV0
dXJuIENvbG9yOjp0cmFuc3BhcmVudDsKIAotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IocGl4
ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxb
Ml0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOworICAgIHJldHVybiBjbGFtcFRvQ29tcG9u
ZW50Qnl0ZXM8U1JHQkE+KHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1
IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKIH0KIAog
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQkocmV2
aXNpb24gMjY0NTY0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwNSwxNSArMjA1LDE1
IEBAIHN0YXRpYyBDR0NvbG9yUmVmIGNvbG9yRm9yTWFya2VyTGluZVN0eWwKICAgICBzd2l0Y2gg
KHN0eWxlKSB7CiAgICAgLy8gUmVkCiAgICAgY2FzZSBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6
TW9kZTo6U3BlbGxpbmc6Ci0gICAgICAgIHJldHVybiBjYWNoZWRDR0NvbG9yKHVzZURhcmtNb2Rl
ID8gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMTQwLCAxNDAsIDIxNykgOiBtYWtlU2ltcGxlQ29sb3Io
MjU1LCA1OSwgNDgsIDE5MSkpOworICAgICAgICByZXR1cm4gY2FjaGVkQ0dDb2xvcih1c2VEYXJr
TW9kZSA/IFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAxNDAsIDE0MCwgMjE3IH0gOiBTUkdCQTx1aW50
OF90PiB7IDI1NSwgNTksIDQ4LCAxOTEgfSk7CiAgICAgLy8gQmx1ZQogICAgIGNhc2UgRG9jdW1l
bnRNYXJrZXJMaW5lU3R5bGU6Ok1vZGU6OkRpY3RhdGlvbkFsdGVybmF0aXZlczoKICAgICBjYXNl
IERvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpUZXh0Q2hlY2tpbmdEaWN0YXRpb25QaHJh
c2VXaXRoQWx0ZXJuYXRpdmVzOgogICAgIGNhc2UgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU6Ok1v
ZGU6OkF1dG9jb3JyZWN0aW9uUmVwbGFjZW1lbnQ6Ci0gICAgICAgIHJldHVybiBjYWNoZWRDR0Nv
bG9yKHVzZURhcmtNb2RlID8gbWFrZVNpbXBsZUNvbG9yKDQwLCAxNDUsIDI1NSwgMjE3KSA6IG1h
a2VTaW1wbGVDb2xvcigwLCAxMjIsIDI1NSwgMTkxKSk7CisgICAgICAgIHJldHVybiBjYWNoZWRD
R0NvbG9yKHVzZURhcmtNb2RlID8gU1JHQkE8dWludDhfdD4geyA0MCwgMTQ1LCAyNTUsIDIxNyB9
IDogU1JHQkE8dWludDhfdD4geyAwLCAxMjIsIDI1NSwgMTkxIH0pOwogICAgIC8vIEdyZWVuCiAg
ICAgY2FzZSBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6TW9kZTo6R3JhbW1hcjoKLSAgICAgICAg
cmV0dXJuIGNhY2hlZENHQ29sb3IodXNlRGFya01vZGUgPyBtYWtlU2ltcGxlQ29sb3IoNTAsIDIx
NSwgNzUsIDIxNykgOiBtYWtlU2ltcGxlQ29sb3IoMjUsIDE3NSwgNTAsIDE5MSkpOworICAgICAg
ICByZXR1cm4gY2FjaGVkQ0dDb2xvcih1c2VEYXJrTW9kZSA/IFNSR0JBPHVpbnQ4X3Q+IHsgNTAs
IDIxNSwgNzUsIDIxNyB9IDogU1JHQkE8dWludDhfdD4geyAyNSwgMTc1LCA1MCwgMTkxIH0pOwog
ICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db2xvck1hYy5tbQkocmV2aXNpb24gMjY0NTY0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0
OSw3IEBAIHN0YXRpYyBib29sIHVzZU9sZEFxdWFGb2N1c1JpbmdDb2xvcjsKIAogQ29sb3Igb2xk
QXF1YUZvY3VzUmluZ0NvbG9yKCkKIHsKLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDEyNSwg
MTczLCAyMTcpOworICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDEyNSwgMTczLCAyMTcgfTsK
IH0KIAogdm9pZCBzZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcihib29sIG5ld1ZhbHVlKQpA
QCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IG1ha2VTaW1w
CiAgICAgICAgIE5TVUludGVnZXIgcGl4ZWxbNF07CiAgICAgICAgIFtvZmZzY3JlZW5SZXAgZ2V0
UGl4ZWw6cGl4ZWwgYXRYOjAgeTowXTsKIAotICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9y
KHBpeGVsWzBdLCBwaXhlbFsxXSwgcGl4ZWxbMl0sIHBpeGVsWzNdKTsKKyAgICAgICAgcmV0dXJu
IGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4ocGl4ZWxbMF0sIHBpeGVsWzFdLCBwaXhlbFsy
XSwgcGl4ZWxbM10pOwogICAgIH0KIAogICAgIFtyZ2JDb2xvciBnZXRSZWQ6JnJlZENvbXBvbmVu
dCBncmVlbjomZ3JlZW5Db21wb25lbnQgYmx1ZTomYmx1ZUNvbXBvbmVudCBhbHBoYTomYWxwaGFd
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIuY3BwCShyZXZpc2lvbiAyNjQ1NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcjo6cAogICAgICAgICBBU1NFUlQoIW1fdGV4dHVyZSk7CiAgICAgICAgIGlmIChtX2hv
bGVQdW5jaENsaWVudCkKICAgICAgICAgICAgIG1faG9sZVB1bmNoQ2xpZW50LT5zZXRWaWRlb1Jl
Y3RhbmdsZShlbmNsb3NpbmdJbnRSZWN0KG1vZGVsVmlld01hdHJpeC5tYXBSZWN0KHRhcmdldFJl
Y3QpKSk7Ci0gICAgICAgIHRleG1hcEdMLmRyYXdTb2xpZENvbG9yKHRhcmdldFJlY3QsIG1vZGVs
Vmlld01hdHJpeCwgbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDApLCBmYWxzZSk7CisgICAgICAg
IHRleG1hcEdMLmRyYXdTb2xpZENvbG9yKHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgQ29s
b3I6OnRyYW5zcGFyZW50LCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAkocmV2aXNpb24gMjY0NTY0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk4LDggKzE5OCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
RG90c0ZvckRvY3VtZW4KICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4
dCgpOwogICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAKLSAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gc3BlbGxpbmdQYXR0ZXJuQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAw
LCAwKTsKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZ3JhbW1hclBhdHRlcm5Db2xvciA9IG1h
a2VTaW1wbGVDb2xvcigwLCAxMjgsIDApOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBzcGVs
bGluZ1BhdHRlcm5Db2xvciA9IENvbG9yOjpyZWQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRv
IGdyYW1tYXJQYXR0ZXJuQ29sb3IgPSBDb2xvcjo6ZGFya0dyZWVuOwogCiAgICAgYXV0byBbciwg
ZywgYiwgYV0gPSBzdHlsZS5tb2RlID09IERvY3VtZW50TWFya2VyTGluZVN0eWxlOjpNb2RlOjpH
cmFtbWFyID8gZ3JhbW1hclBhdHRlcm5Db2xvciA6IHNwZWxsaW5nUGF0dGVybkNvbG9yOwogICAg
IENHQ29udGV4dFNldFJHQlN0cm9rZUNvbG9yKGNvbnRleHQsIHIsIGcsIGIsIGEpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCShyZXZpc2lvbiAy
NjQ1NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZvckxpbmsoRWxlbQogICAgICAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChyZW5kZXJl
ckNvbnRleHQuQ0dDb250ZXh0KTsKICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgQ0dSZWN0
R2V0SGVpZ2h0KGltYWdlUmVjdCkpOwogICAgICAgICBjb250ZXh0LnNjYWxlKHsgMSwgLTEgfSk7
Ci0gICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoaW1hZ2VS
ZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSg0KSksIG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1
NSwgMjU1KSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJl
Y3QoaW1hZ2VSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSg0KSksIENvbG9yOjp3aGl0ZSk7
CiAgICAgICAgIHRpdGxlRm9udENhc2NhZGUuZ2V0KCkuZHJhd1RleHQoY29udGV4dCwgVGV4dFJ1
bih0cnVuY2F0ZWRUb3BTdHJpbmcpLCBGbG9hdFBvaW50KGRyYWdJbWFnZVBhZGRpbmcsIDE4ICsg
ZHJhZ0ltYWdlUGFkZGluZykpOwogICAgICAgICBpZiAoIXRydW5jYXRlZEJvdHRvbVN0cmluZy5p
c0VtcHR5KCkpCiAgICAgICAgICAgICB1cmxGb250Q2FzY2FkZS5nZXQoKS5kcmF3VGV4dChjb250
ZXh0LCBUZXh0UnVuKHRydW5jYXRlZEJvdHRvbVN0cmluZyksIEZsb2F0UG9pbnQoZHJhZ0ltYWdl
UGFkZGluZywgNDAgKyBkcmFnSW1hZ2VQYWRkaW5nKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0JKHJldmlzaW9uIDI2NDU2NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQ2Miw4ICs0NjIsOCBAQCB1bnNpZ25lZCBMZWdhY3lUaWxlQ2FjaGU6OnRpbGVD
YXBhY2l0eUZvCiBDb2xvciBMZWdhY3lUaWxlQ2FjaGU6OmNvbG9yRm9yR3JpZFRpbGVCb3JkZXIo
TGVnYWN5VGlsZUdyaWQqIGdyaWQpIGNvbnN0CiB7CiAgICAgaWYgKGdyaWQgPT0gbV96b29tZWRP
dXRUaWxlR3JpZC5nZXQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcig1MSwgMjU1
LCAwLCAxMjgpOwotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoNTEsIDIzMCwgMCwgMTI4KTsK
KyAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgNTEsIDI1NSwgMCwgMTI4IH07CisgICAg
cmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgNTEsIDIzMCwgMCwgMTI4IH07CiB9CiAKIHN0YXRpYyBi
b29sIHNob3VsZFJlcGFpbnRJblBpZWNlcyhjb25zdCBDR1JlY3QmIGRpcnR5UmVjdCwgQ0dTUmVn
aW9uT2JqIGRpcnR5UmVnaW9uLCBDR0Zsb2F0IGNvbnRlbnRzU2NhbGUpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmNwcAkocmV2aXNpb24gMjY0NTY0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg2LDggKzg2LDggQEAgc3RhdGljIGlubGluZSBWZWN0b3I8TW9ja01lZGlhRGV2
aWNlPiBkZQogICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiU0NSRUVOLTEiX3MsICJNb2NrIHNj
cmVlbiBkZXZpY2UgMSJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZTo6U2NyZWVuLCBDb2xvcjo6bGlnaHRHcmF5LCB7IDM4NDAsIDIxNjAgfSB9IH0s
CiAgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJTQ1JFRU4tMiJfcywgIk1vY2sgc2NyZWVuIGRl
dmljZSAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlOjpTY3JlZW4sIENvbG9yOjp5ZWxsb3csIHsgMTkyMCwgMTA4MCB9IH0gfSwKIAotICAgICAg
ICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAxIl9zLCBNb2Nr
RGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIG1h
a2VTaW1wbGVDb2xvcigyNTUsIDI0MSwgMTgxKSwgeyA2NDAsIDQ4MCB9IH0gfSwKLSAgICAgICAg
TW9ja01lZGlhRGV2aWNlIHsgIldJTkRPVy0yIl9zLCAiTW9jayB3aW5kb3cgMiJfcywgTW9ja0Rp
c3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBtYWtl
U2ltcGxlQ29sb3IoMjU1LCAyMDgsIDE4MSksIHsgMTI4MCwgNjAwIH0gfSB9LAorICAgICAgICBN
b2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAxIl9zLCBNb2NrRGlz
cGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIFNSR0JB
PHVpbnQ4X3Q+IHsgMjU1LCAyNDEsIDE4MSB9LCB7IDY0MCwgNDgwIH0gfSB9LAorICAgICAgICBN
b2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIiX3MsICJNb2NrIHdpbmRvdyAyIl9zLCBNb2NrRGlz
cGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIFNSR0JB
PHVpbnQ4X3Q+IHsgMjU1LCAyMDgsIDE4MSB9LCB7IDEyODAsIDYwMCB9IH0gfSwKICAgICB9Owog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVv
U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNpb24gMjY0NTY0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2NSwxMSArMjY1LDYgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
ZHJhd0FuaW1hdAogCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3Qm94ZXMoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBtYWdl
bnRhID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMjU1KTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8gYmx1ZSA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAyNTUpOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byByZWQgPSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAwKTsKLSAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8gZGFya0dyZWVuID0gbWFrZVNpbXBsZUNvbG9yKDAsIDEyOCwgMCk7Ci0K
ICAgICBJbnRTaXplIHNpemUgPSBjYXB0dXJlU2l6ZSgpOwogICAgIGZsb2F0IGJveFNpemUgPSBz
aXplLndpZHRoKCkgKiAuMDM1OwogICAgIGZsb2F0IGJveFRvcCA9IHNpemUuaGVpZ2h0KCkgKiAu
NjsKQEAgLTMxOCw3ICszMTMsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpkcmF3
Qm94ZXMoCiAKICAgICBib3hUb3AgKz0gYm94U2l6ZSArIDI7CiAgICAgYm94TGVmdCA9IGJveFNp
emU7Ci0gICAgY29uc3RleHByIFNSR0JBPHVpbnQ4X3Q+IGJveENvbG9yc1tdID0geyBDb2xvcjo6
d2hpdGUsIENvbG9yOjp5ZWxsb3csIENvbG9yOjpjeWFuLCBkYXJrR3JlZW4sIG1hZ2VudGEsIHJl
ZCwgYmx1ZSB9OworICAgIGNvbnN0ZXhwciBTUkdCQTx1aW50OF90PiBib3hDb2xvcnNbXSA9IHsg
Q29sb3I6OndoaXRlLCBDb2xvcjo6eWVsbG93LCBDb2xvcjo6Y3lhbiwgQ29sb3I6OmRhcmtHcmVl
biwgQ29sb3I6Om1hZ2VudGEsIENvbG9yOjpyZWQsIENvbG9yOjpibHVlIH07CiAgICAgZm9yIChh
dXRvJiBib3hDb2xvciA6IGJveENvbG9ycykgewogICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEZs
b2F0UmVjdChib3hMZWZ0LCBib3hUb3AsIGJveFNpemUgKyAxLCBib3hTaXplICsgMSksIGJveENv
bG9yKTsKICAgICAgICAgYm94TGVmdCArPSBib3hTaXplICsgMTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAJKHJldmlz
aW9uIDI2NDU2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhl
bWVNb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBpbnQgU2Nyb2xsYmFy
VGhlbWVNb2NrOjpzY3JvbGxiYXJUaGlja25lCiAKIHZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpw
YWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYg
c2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7Ci0gICAgY29udGV4dC5maWxs
UmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5IDog
bWFrZVNpbXBsZUNvbG9yKDIyNCwgMjI0LCAyMjQpKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KHRy
YWNrUmVjdCwgc2Nyb2xsYmFyLmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdyYXkuY29sb3IoKSA6
IFNSR0JBPHVpbnQ4X3Q+IHsgMjI0LCAyMjQsIDIyNCB9KTsKIH0KIAogdm9pZCBTY3JvbGxiYXJU
aGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXIm
IHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcGxheXN0YXRpb24vU2Nyb2xsYmFyVGhlbWVQbGF5U3RhdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24vU2Nyb2xsYmFy
VGhlbWVQbGF5U3RhdGlvbi5jcHAJKHJldmlzaW9uIDI2NDU2NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3BsYXlzdGF0aW9uL1Njcm9sbGJhclRoZW1lUGxheVN0YXRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVQbGF5U3Rh
dGlvbjo6dHJhY2sKIAogdm9pZCBTY3JvbGxiYXJUaGVtZVBsYXlTdGF0aW9uOjpwYWludFRyYWNr
QmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFy
LCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7Ci0gICAgY29udGV4dC5maWxsUmVjdCh0cmFj
a1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5IDogQ29sb3IobWFr
ZVNpbXBsZUNvbG9yKDB4RTAsIDB4RTAsIDB4RTApKSk7CisgICAgY29udGV4dC5maWxsUmVjdCh0
cmFja1JlY3QsIHNjcm9sbGJhci5lbmFibGVkKCkgPyBDb2xvcjo6bGlnaHRHcmF5IDogU1JHQkE8
dWludDhfdD4geyAyMjQsIDIyNCwgMjI0IH0pOwogfQogCiB2b2lkIFNjcm9sbGJhclRoZW1lUGxh
eVN0YXRpb246OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXIm
IHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAJKHJldmlzaW9uIDI2NDU2NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODksMTQgKzE4OSwxNCBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9y
TGluayhFbGVtCiAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoY29udGV4dFJlZik7CiAgICAg
Ly8gT24gTWFjIGFscGhhIGlzIHswLjcsIDAuNywgMC43LCAwLjh9LCBob3dldmVyIHdlIGNhbid0
IGNvbnRyb2wgYWxwaGEKICAgICAvLyBmb3IgZHJhZyBpbWFnZXMgb24gd2luLCBzbyB3ZSB1c2Ug
MQotICAgIGNvbnN0ZXhwciBhdXRvIGJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigx
NDAsIDE0MCwgMTQwKTsKKyAgICBjb25zdGV4cHIgYXV0byBiYWNrZ3JvdW5kQ29sb3IgPSBTUkdC
QTx1aW50OF90PiB7IDE0MCwgMTQwLCAxNDAgfTsKICAgICBzdGF0aWMgY29uc3QgSW50U2l6ZSBy
YWRpaShEcmFnTGFiZWxSYWRpdXMsIERyYWdMYWJlbFJhZGl1cyk7CiAgICAgSW50UmVjdCByZWN0
KDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpOwogICAgIGNvbnRl
eHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocmVjdCwgcmFkaWksIHJhZGlpLCBy
YWRpaSwgcmFkaWkpLCBiYWNrZ3JvdW5kQ29sb3IpOwogIAogICAgIC8vIERyYXcgdGhlIHRleHQK
LSAgICBjb25zdGV4cHIgYXV0byB0b3BDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwKTsg
Ly8gb3JpZ2luYWwgYWxwaGEgPSAwLjc1Ci0gICAgY29uc3RleHByIGF1dG8gYm90dG9tQ29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSwgMTI3KTsgLy8gb3JpZ2luYWwgYWxwaGEg
PSAwLjUKKyAgICBjb25zdGV4cHIgYXV0byB0b3BDb2xvciA9IENvbG9yOjpibGFjazsgLy8gb3Jp
Z2luYWwgYWxwaGEgPSAwLjc1CisgICAgY29uc3RleHByIGF1dG8gYm90dG9tQ29sb3IgPSBDb2xv
cjo6d2hpdGUuY29sb3JXaXRoQWxwaGEoMTI3KTsgLy8gb3JpZ2luYWwgYWxwaGEgPSAwLjUKICAg
ICBpZiAoZHJhd1VSTFN0cmluZykgewogICAgICAgICBpZiAoY2xpcFVSTFN0cmluZykKICAgICAg
ICAgICAgIHVybFN0cmluZyA9IFN0cmluZ1RydW5jYXRvcjo6cmlnaHRUcnVuY2F0ZSh1cmxTdHJp
bmcsIGltYWdlU2l6ZS53aWR0aCgpIC0gKERyYWdMYWJlbEJvcmRlclggKiAyLjBmKSwgKnVybEZv
bnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuY3BwCShyZXZpc2lvbiAyNjQ1NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxMCArNzQs
MTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHJlcGxhY2VtZW50QXJyb3dMZWZ0TQogc3RhdGljIGNv
bnN0IGZsb2F0IHJlcGxhY2VtZW50QXJyb3dQYWRkaW5nID0gNDsKIHN0YXRpYyBjb25zdCBmbG9h
dCByZXBsYWNlbWVudEFycm93Q2lyY2xlUGFkZGluZyA9IDM7CiAKLWNvbnN0ZXhwciBhdXRvIHJl
cGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UHJlc3NlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDEw
NSwgMTA1LCAxMDUsIDI0Mik7Ci1jb25zdGV4cHIgYXV0byByZXBsYWNlbWVudFRleHRSb3VuZGVk
UmVjdENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDEyNSwgMTI1LCAxMjUsIDI0Mik7Ci1jb25zdGV4
cHIgYXV0byByZXBsYWNlbWVudFRleHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNDAsIDI0MCwg
MjQwKTsKLWNvbnN0ZXhwciBhdXRvIHVuYXZhaWxhYmxlUGx1Z2luQm9yZGVyQ29sb3IgPSBtYWtl
U2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSwgMjE2KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBy
ZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFByZXNzZWRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsg
MTA1LCAxMDUsIDEwNSwgMjQyIH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gcmVwbGFjZW1lbnRU
ZXh0Um91bmRlZFJlY3RDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTI1LCAxMjUsIDEyNSwgMjQy
IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gcmVwbGFjZW1lbnRUZXh0Q29sb3IgPSBTUkdCQTx1
aW50OF90PiB7IDI0MCwgMjQwLCAyNDAgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB1bmF2YWls
YWJsZVBsdWdpbkJvcmRlckNvbG9yID0gQ29sb3I6OndoaXRlLmNvbG9yV2l0aEFscGhhKDIxNik7
CiAKIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpSZW5kZXJFbWJlZGRlZE9iamVjdChIVE1MRnJhbWVP
d25lckVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJX
aWRnZXQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAJKHJldmlzaW9uIDI2NDU2NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDYgKzQ2LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGJvcmRlclN0YXJ0RWRnZUNvbG9yID0gU1JHQkE8dWludDhfdD4geyAxNzAsIDE3MCwgMTcw
IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gYm9yZGVyRW5kRWRnZUNvbG9yID0gQ29sb3I6OmJs
YWNrOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJvcmRlckZpbGxDb2xvciA9IFNSR0JBPHVpbnQ4
X3Q+IHsgMjA4LCAyMDgsIDIwOCB9OworCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVu
ZGVyRnJhbWVTZXQpOwogCiBSZW5kZXJGcmFtZVNldDo6UmVuZGVyRnJhbWVTZXQoSFRNTEZyYW1l
U2V0RWxlbWVudCYgZnJhbWVTZXQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCkBAIC02OCwxMCArNzIs
NiBAQCBSZW5kZXJGcmFtZVNldDo6R3JpZEF4aXM6OkdyaWRBeGlzKCkKIHsKIH0KIAotY29uc3Rl
eHByIGF1dG8gYm9yZGVyU3RhcnRFZGdlQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMTcwLCAxNzAs
IDE3MCk7Ci1jb25zdGV4cHIgYXV0byBib3JkZXJFbmRFZGdlQ29sb3IgPSBDb2xvcjo6YmxhY2s7
Ci1jb25zdGV4cHIgYXV0byBib3JkZXJGaWxsQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjA4LCAy
MDgsIDIwOCk7Ci0KIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBhaW50Q29sdW1uQm9yZGVyKGNvbnN0
IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0KQogewogICAg
IGlmICghcGFpbnRJbmZvLnJlY3QuaW50ZXJzZWN0cyhib3JkZXJSZWN0KSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gMjY0NTY0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjI0OCw3ICsyMjQ4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6YmVnaW5UcmFuc3BhcmVuY3lM
YXllcgogI2VuZGlmCiAKICNpZmRlZiBSRVZFQUxfVFJBTlNQQVJFTkNZX0xBWUVSUwotICAgICAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMTI4LCA1MSkpOwor
ICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihTUkdCQTx1aW50OF90PiB7IDAsIDAsIDEyOCwg
NTEgfSk7CiAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkQ2xpcFJlY3QpOwog
I2VuZGlmCiAgICAgfQpAQCAtNDEyMyw3ICs0MTIzLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRSZXNpemVyKEdyYXBoaWNzQwogICAgICAgICBjb250ZXh0LmNsaXAocmVzaXplckFic1JlY3Qp
OwogICAgICAgICBMYXlvdXRSZWN0IGxhcmdlckNvcm5lciA9IHJlc2l6ZXJBYnNSZWN0OwogICAg
ICAgICBsYXJnZXJDb3JuZXIuc2V0U2l6ZShMYXlvdXRTaXplKGxhcmdlckNvcm5lci53aWR0aCgp
ICsgMV9sdSwgbGFyZ2VyQ29ybmVyLmhlaWdodCgpICsgMV9sdSkpOwotICAgICAgICBjb250ZXh0
LnNldFN0cm9rZUNvbG9yKG1ha2VTaW1wbGVDb2xvcigyMTcsIDIxNywgMjE3KSk7CisgICAgICAg
IGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoU1JHQkE8dWludDhfdD4geyAyMTcsIDIxNywgMjE3IH0p
OwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKICAgICAgICAgY29u
dGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKICAgICAgICAgY29udGV4dC5k
cmF3UmVjdChzbmFwcGVkSW50UmVjdChsYXJnZXJDb3JuZXIpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAyNjQ1
NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzE2MSw3ICszMTYxLDcgQEAgc3RhdGljIFJlZlB0cjxQYXR0ZXJu
PiBwYXR0ZXJuRm9yVG91Y2hBYwogICAgICAgICByZXR1cm4gMDsKICAgICB9OwogCi0gICAgY29u
c3RleHByIGF1dG8gZmlsbENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDAsIDEyOCk7Cisg
ICAgY29uc3RleHByIGF1dG8gZmlsbENvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhh
KDEyOCk7CiAKICAgICBzdGF0aWMgY29uc3QgUGF0dGVybkRlc2NyaXB0aW9uIHBhdHRlcm5EZXNj
cmlwdGlvbnNbXSA9IHsKICAgICAgICAgeyAiYXV0byJfcywgeyB9LCBmaWxsQ29sb3IgfSwKQEAg
LTMxODMsNyArMzE4Myw3IEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4gcGF0dGVybkZvclRvdWNo
QWMKICNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfUkVHSU9OUykKIHN0YXRpYyBSZWZQdHI8UGF0dGVy
bj4gcGF0dGVybkZvckV2ZW50TGlzdGVuZXJSZWdpb25UeXBlKEV2ZW50TGlzdGVuZXJSZWdpb25U
eXBlIHR5cGUsIEZsb2F0U2l6ZSBjb250ZW50T2Zmc2V0LCBHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0KQogewotICAgIGNvbnN0ZXhwciBhdXRvIGZpbGxDb2xvciA9IG1ha2VTaW1wbGVDb2xv
cigwLCAxMjgsIDAsIDEyOCk7CisgICAgY29uc3RleHByIGF1dG8gZmlsbENvbG9yID0gQ29sb3I6
OmRhcmtHcmVlbi5jb2xvcldpdGhBbHBoYSgxMjgpOwogCiAgICAgYXV0byBwYXR0ZXJuQW5kUGhh
c2UgPSBbJl0oKSAtPiBQYXR0ZXJuRGVzY3JpcHRpb24gewogICAgICAgICBzd2l0Y2ggKHR5cGUp
IHsKQEAgLTMyMjAsNyArMzIyMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludERl
YnVnT3ZlcmwKICNpZiBFTkFCTEUoVE9VQ0hfQUNUSU9OX1JFR0lPTlMpCiAgICAgLy8gUGFpbnQg
cmVjdHMgZm9yIHRvdWNoIGFjdGlvbi4KICAgICBpZiAodmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lv
bnMgJiBUb3VjaEFjdGlvblJlZ2lvbikgewotICAgICAgICBjb25zdGV4cHIgYXV0byByZWdpb25D
b2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAyNTUsIDUwKTsKKyAgICAgICAgY29uc3RleHBy
IGF1dG8gcmVnaW9uQ29sb3IgPSBDb2xvcjo6Ymx1ZS5jb2xvcldpdGhBbHBoYSg1MCk7CiAgICAg
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHJlZ2lvbkNvbG9yKTsKICAgICAgICAgZm9yIChhdXRv
IHJlY3QgOiBldmVudFJlZ2lvbi5yZWdpb24oKS5yZWN0cygpKQogICAgICAgICAgICAgY29udGV4
dC5maWxsUmVjdChyZWN0KTsKQEAgLTMyNjUsNyArMzI2NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjpwYWludERlYnVnT3ZlcmwKICNpZiBFTkFCTEUoRURJVEFCTEVfUkVHSU9OKQogICAg
IC8vIFBhaW50IHJlY3RzIGZvciBlZGl0YWJsZSBlbGVtZW50cy4KICAgICBpZiAodmlzaWJsZURl
YnVnT3ZlcmxheVJlZ2lvbnMgJiBFZGl0YWJsZUVsZW1lbnRSZWdpb24pIHsKLSAgICAgICAgY29u
dGV4dC5zZXRGaWxsQ29sb3IobWFrZVNpbXBsZUNvbG9yKDEyOCwgMCwgMTI4LCA1MCkpOworICAg
ICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihTUkdCQTx1aW50OF90PiB7IDEyOCwgMCwgMTI4LCA1
MCB9KTsKICAgICAgICAgZm9yIChhdXRvIHJlY3QgOiBldmVudFJlZ2lvbi5yZWN0c0ZvckVkaXRh
YmxlRWxlbWVudHMoKSkKICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocmVjdCk7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCShyZXZpc2lv
biAyNjQ1NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NzEsNyArNjcxLDcgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OmluYWN0
aXZlTGlzdEJveFNlbGVjdAogQ29sb3IgUmVuZGVyVGhlbWU6OnBsYXRmb3JtQWN0aXZlU2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPikgY29uc3QK
IHsKICAgICAvLyBVc2UgYSBibHVlIGNvbG9yIGJ5IGRlZmF1bHQgaWYgdGhlIHBsYXRmb3JtIHRo
ZW1lIGRvZXNuJ3QgZGVmaW5lIGFueXRoaW5nLgotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3Io
MCwgMCwgMjU1KTsKKyAgICByZXR1cm4gQ29sb3I6OmJsdWU7CiB9CiAKIENvbG9yIFJlbmRlclRo
ZW1lOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihPcHRpb25TZXQ8U3R5
bGVDb2xvcjo6T3B0aW9ucz4pIGNvbnN0CkBAIC02ODQsNyArNjg0LDcgQEAgQ29sb3IgUmVuZGVy
VGhlbWU6OnBsYXRmb3JtSW5hY3RpdmVTZWxlYwogewogICAgIC8vIFVzZSBhIGdyZXkgY29sb3Ig
YnkgZGVmYXVsdCBpZiB0aGUgcGxhdGZvcm0gdGhlbWUgZG9lc24ndCBkZWZpbmUgYW55dGhpbmcu
CiAgICAgLy8gVGhpcyBjb2xvciBtYXRjaGVzIEZpcmVmb3gncyBpbmFjdGl2ZSBjb2xvci4KLSAg
ICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDE3NiwgMTc2LCAxNzYpOworICAgIHJldHVybiBTUkdC
QTx1aW50OF90PiB7IDE3NiwgMTc2LCAxNzYgfTsKIH0KIAogQ29sb3IgUmVuZGVyVGhlbWU6OnBs
YXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoT3B0aW9uU2V0PFN0eWxlQ29s
b3I6Ok9wdGlvbnM+KSBjb25zdApAQCAtMTMzNCwzMCArMTMzNCwzMCBAQCBDb2xvciBSZW5kZXJU
aGVtZTo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJCiB7CiAgICAgc3dpdGNoIChjc3NWYWx1ZUlkKSB7
CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdExpbms6Ci0gICAgICAgIHJldHVybiBvcHRpb25zLmNv
bnRhaW5zKFN0eWxlQ29sb3I6Ok9wdGlvbnM6OkZvclZpc2l0ZWRMaW5rKSA/IG1ha2VTaW1wbGVD
b2xvcig4NSwgMjYsIDEzOSkgOiBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMjM4KTsKKyAgICAgICAg
cmV0dXJuIG9wdGlvbnMuY29udGFpbnMoU3R5bGVDb2xvcjo6T3B0aW9uczo6Rm9yVmlzaXRlZExp
bmspID8gU1JHQkE8dWludDhfdD4geyA4NSwgMjYsIDEzOSB9IDogU1JHQkE8dWludDhfdD4geyAw
LCAwLCAyMzggfTsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0QWN0aXZlbGluazoKICAgICBjYXNl
IENTU1ZhbHVlQWN0aXZldGV4dDoKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigyNTUs
IDAsIDApOworICAgICAgICByZXR1cm4gQ29sb3I6OnJlZDsKICAgICBjYXNlIENTU1ZhbHVlTGlu
a3RleHQ6Ci0gICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMjM4KTsKKyAgICAg
ICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgMCwgMCwgMjM4IH07CiAgICAgY2FzZSBDU1NWYWx1
ZVZpc2l0ZWR0ZXh0OgotICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDg1LCAyNiwgMTM5
KTsKKyAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgODUsIDI2LCAxMzkgfTsKICAgICBj
YXNlIENTU1ZhbHVlQWN0aXZlYm9yZGVyOgogICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwog
ICAgIGNhc2UgQ1NTVmFsdWVBY3RpdmVidXR0b250ZXh0OgogICAgICAgICByZXR1cm4gQ29sb3I6
OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVBY3RpdmVjYXB0aW9uOgotICAgICAgICByZXR1cm4g
bWFrZVNpbXBsZUNvbG9yKDIwNCwgMjA0LCAyMDQpOworICAgICAgICByZXR1cm4gU1JHQkE8dWlu
dDhfdD4geyAyMDQsIDIwNCwgMjA0IH07CiAgICAgY2FzZSBDU1NWYWx1ZUFwcHdvcmtzcGFjZToK
ICAgICAgICAgcmV0dXJuIENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVlQmFja2dyb3Vu
ZDoKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcig5OSwgOTksIDIwNik7CisgICAgICAg
IHJldHVybiBTUkdCQTx1aW50OF90PiB7IDk5LCA5OSwgMjA2IH07CiAgICAgY2FzZSBDU1NWYWx1
ZUJ1dHRvbmZhY2U6CiAgICAgICAgIHJldHVybiBDb2xvcjo6bGlnaHRHcmF5OwogICAgIGNhc2Ug
Q1NTVmFsdWVCdXR0b25oaWdobGlnaHQ6Ci0gICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3Io
MjIxLCAyMjEsIDIyMSk7CisgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDIyMSwgMjIx
LCAyMjEgfTsKICAgICBjYXNlIENTU1ZhbHVlQnV0dG9uc2hhZG93OgotICAgICAgICByZXR1cm4g
bWFrZVNpbXBsZUNvbG9yKDEzNiwgMTM2LCAxMzYpOworICAgICAgICByZXR1cm4gU1JHQkE8dWlu
dDhfdD4geyAxMzYsIDEzNiwgMTM2IH07CiAgICAgY2FzZSBDU1NWYWx1ZUJ1dHRvbnRleHQ6CiAg
ICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZUNhcHRpb250ZXh0
OgpAQCAtMTM3MSw5ICsxMzcxLDkgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKENT
U1ZhbHVlSQogICAgIGNhc2UgQ1NTVmFsdWVGaWVsZHRleHQ6CiAgICAgICAgIHJldHVybiBDb2xv
cjo6YmxhY2s7CiAgICAgY2FzZSBDU1NWYWx1ZUdyYXl0ZXh0OgotICAgICAgICByZXR1cm4gbWFr
ZVNpbXBsZUNvbG9yKDEyOCwgMTI4LCAxMjgpOworICAgICAgICByZXR1cm4gQ29sb3I6OmRhcmtH
cmF5OwogICAgIGNhc2UgQ1NTVmFsdWVIaWdobGlnaHQ6Ci0gICAgICAgIHJldHVybiBtYWtlU2lt
cGxlQ29sb3IoMTgxLCAyMTMsIDI1NSk7CisgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7
IDE4MSwgMjEzLCAyNTUgfTsKICAgICBjYXNlIENTU1ZhbHVlSGlnaGxpZ2h0dGV4dDoKICAgICAg
ICAgcmV0dXJuIENvbG9yOjpibGFjazsKICAgICBjYXNlIENTU1ZhbHVlSW5hY3RpdmVib3JkZXI6
CkBAIC0xMzgxLDkgKzEzODEsOSBAQCBDb2xvciBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoQ1NT
VmFsdWVJCiAgICAgY2FzZSBDU1NWYWx1ZUluYWN0aXZlY2FwdGlvbjoKICAgICAgICAgcmV0dXJu
IENvbG9yOjp3aGl0ZTsKICAgICBjYXNlIENTU1ZhbHVlSW5hY3RpdmVjYXB0aW9udGV4dDoKLSAg
ICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigxMjcsIDEyNywgMTI3KTsKKyAgICAgICAgcmV0
dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgMTI3LCAxMjcsIDEyNyB9OwogICAgIGNhc2UgQ1NTVmFsdWVJ
bmZvYmFja2dyb3VuZDoKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigyNTEsIDI1Miwg
MTk3KTsKKyAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgMjUxLCAyNTIsIDE5NyB9Owog
ICAgIGNhc2UgQ1NTVmFsdWVJbmZvdGV4dDoKICAgICAgICAgcmV0dXJuIENvbG9yOjpibGFjazsK
ICAgICBjYXNlIENTU1ZhbHVlTWVudToKQEAgLTEzOTUsMTkgKzEzOTUsMTkgQEAgQ29sb3IgUmVu
ZGVyVGhlbWU6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSQogICAgIGNhc2UgQ1NTVmFsdWVUZXh0Ogog
ICAgICAgICByZXR1cm4gQ29sb3I6OmJsYWNrOwogICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRkYXJr
c2hhZG93OgotICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDEwMiwgMTAyLCAxMDIpOwor
ICAgICAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAxMDIsIDEwMiwgMTAyIH07CiAgICAgY2Fz
ZSBDU1NWYWx1ZVRocmVlZGZhY2U6CiAgICAgICAgIHJldHVybiBDb2xvcjo6bGlnaHRHcmF5Owog
ICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRoaWdobGlnaHQ6Ci0gICAgICAgIHJldHVybiBtYWtlU2lt
cGxlQ29sb3IoMjIxLCAyMjEsIDIyMSk7CisgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7
IDIyMSwgMjIxLCAyMjEgfTsKICAgICBjYXNlIENTU1ZhbHVlVGhyZWVkbGlnaHRzaGFkb3c6CiAg
ICAgICAgIHJldHVybiBDb2xvcjo6bGlnaHRHcmF5OwogICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRz
aGFkb3c6Ci0gICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMTM2LCAxMzYsIDEzNik7Cisg
ICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDEzNiwgMTM2LCAxMzYgfTsKICAgICBjYXNl
IENTU1ZhbHVlV2luZG93OgogICAgICAgICByZXR1cm4gQ29sb3I6OndoaXRlOwogICAgIGNhc2Ug
Q1NTVmFsdWVXaW5kb3dmcmFtZToKLSAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigyMDQs
IDIwNCwgMjA0KTsKKyAgICAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgMjA0LCAyMDQsIDIw
NCB9OwogICAgIGNhc2UgQ1NTVmFsdWVXaW5kb3d0ZXh0OgogICAgICAgICByZXR1cm4gQ29sb3I6
OmJsYWNrOwogICAgIGRlZmF1bHQ6CkBAIC0xNTE3LDggKzE1MTcsNyBAQCB2b2lkIFJlbmRlclRo
ZW1lOjpwYWludFN5c3RlbVByZXZpZXdCYWRnCiAKICAgICBhdXRvIG1hcmtlclJlY3QgPSBGbG9h
dFJlY3Qge3JlY3QueCgpICsgcmVjdC53aWR0aCgpIC0gMjQsIHJlY3QueSgpICsgOCwgMTYsIDE2
IH07CiAgICAgYXV0byByb3VuZGVkTWFya2VyUmVjdCA9IEZsb2F0Um91bmRlZFJlY3QgeyBtYXJr
ZXJSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSB7IDggfSB9OwotICAgIGF1dG8gY29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAwKTsKLSAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVj
dChyb3VuZGVkTWFya2VyUmVjdCwgY29sb3IpOworICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0
KHJvdW5kZWRNYXJrZXJSZWN0LCBDb2xvcjo6cmVkKTsKIH0KICNlbmRpZgogCkBAIC0xNTI4LDcg
KzE1MjcsNyBAQCBDb2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1UYXBIaWdobGlnaHRDCiB7CiAg
ICAgLy8gVGhpcyBjb2xvciBpcyBleHBlY3RlZCB0byBiZSBkcmF3biBvbiBhIHNlbWktdHJhbnNw
YXJlbnQgb3ZlcmxheSwKICAgICAvLyBtYWtpbmcgaXQgbW9yZSB0cmFuc3BhcmVudCB0aGFuIGl0
cyBhbHBoYSB2YWx1ZSBpbmRpY2F0ZXMuCi0gICAgcmV0dXJuIG1ha2VTaW1wbGVDb2xvcigwLCAw
LCAwLCAxMDIpOworICAgIHJldHVybiBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMTAyKTsK
IH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVB
ZHdhaXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVBZHdhaXRhLmNwcAkocmV2aXNpb24gMjY0NTY0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQWR3YWl0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEwICs0
NSwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgaW50IHRleHRGaWVs
ZEJvcmRlclNpemUgPSAxOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRleHRGaWVsZEJvcmRlckNv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOwotc3RhdGljIGNvbnN0ZXhwciBh
dXRvIHRleHRGaWVsZEJvcmRlckRpc2FibGVkQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjEzLCAy
MDgsIDIwNCk7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gdGV4dEZpZWxkQmFja2dyb3VuZENvbG9y
ID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAyNTUpOwotc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHRleHRGaWVsZEJhY2tncm91bmREaXNhYmxlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1Miwg
MjUyLCAyNTIpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRleHRGaWVsZEJvcmRlckNvbG9yID0g
U1JHQkE8dWludDhfdD4geyAyMDUsIDE5OSwgMTk0IH07CitzdGF0aWMgY29uc3RleHByIGF1dG8g
dGV4dEZpZWxkQm9yZGVyRGlzYWJsZWRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjEzLCAyMDgs
IDIwNCB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRleHRGaWVsZEJhY2tncm91bmRDb2xvciA9
IENvbG9yOjp3aGl0ZTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byB0ZXh0RmllbGRCYWNrZ3JvdW5k
RGlzYWJsZWRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjUyLCAyNTIsIDI1MiB9Owogc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG1lbnVMaXN0QnV0dG9uQXJyb3dTaXplID0gMTY7CiBzdGF0aWMgY29u
c3QgaW50IG1lbnVMaXN0QnV0dG9uRm9jdXNPZmZzZXQgPSAtMzsKIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBtZW51TGlzdEJ1dHRvblBhZGRpbmcgPSA1OwpAQCAtNTcsMjMgKzU3LDIzIEBAIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBwcm9ncmVzc0FjdGl2aXR5QmwKIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBwcm9ncmVzc0FuaW1hdGlvbkZyYW1lQ291bnQgPSA3NTsKIHN0YXRpYyBjb25zdCBTZWNvbmRz
IHByb2dyZXNzQW5pbWF0aW9uRnJhbWVSYXRlID0gMzNfbXM7IC8vIDMwZnBzLgogc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHByb2dyZXNzQmFyU2l6ZSA9IDY7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8g
cHJvZ3Jlc3NCYXJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDUsIDE5OSwgMTk0KTsK
LXN0YXRpYyBjb25zdGV4cHIgYXV0byBwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvciA9IG1ha2VT
aW1wbGVDb2xvcigyMjUsIDIyMiwgMjE5KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBwcm9ncmVz
c0JhckJvcmRlckNvbG9yID0gU1JHQkE8dWludDhfdD4geyAyMDUsIDE5OSwgMTk0IH07CitzdGF0
aWMgY29uc3RleHByIGF1dG8gcHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3IgPSBTUkdCQTx1aW50
OF90PiB7IDIyNSwgMjIyLCAyMTkgfTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzbGlkZXJUcmFj
a1NpemUgPSA2Owogc3RhdGljIGNvbnN0IGludCBzbGlkZXJUcmFja0JvcmRlclNpemUgPSAxOwot
c3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlclRyYWNrQm9yZGVyQ29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoMjA1LCAxOTksIDE5NCk7Ci1zdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyVHJhY2tC
YWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMjI1LCAyMjIsIDIxOSk7CitzdGF0aWMg
Y29uc3RleHByIGF1dG8gc2xpZGVyVHJhY2tCb3JkZXJDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsg
MjA1LCAxOTksIDE5NCB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlclRyYWNrQmFja2dy
b3VuZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAyMjUsIDIyMiwgMjE5IH07CiBzdGF0aWMgY29u
c3QgaW50IHNsaWRlclRyYWNrRm9jdXNPZmZzZXQgPSAyOwogc3RhdGljIGNvbnN0IGludCBzbGlk
ZXJUaHVtYlNpemUgPSAyMDsKIHN0YXRpYyBjb25zdCBpbnQgc2xpZGVyVGh1bWJCb3JkZXJTaXpl
ID0gMTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJUaHVtYkJvcmRlckNvbG9yID0gbWFr
ZVNpbXBsZUNvbG9yKDIwNSwgMTk5LCAxOTQpOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRl
clRodW1iQmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0NCwgMjQyLCAyNDEpOwot
c3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlclRodW1iQmFja2dyb3VuZEhvdmVyZWRDb2xvciA9
IG1ha2VTaW1wbGVDb2xvcigyNDgsIDI0OCwgMjQ3KTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBz
bGlkZXJUaHVtYkJhY2tncm91bmREaXNhYmxlZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI0NCwg
MjQyLCAyNDEpOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlclRodW1iQm9yZGVyQ29sb3Ig
PSBTUkdCQTx1aW50OF90PiB7IDIwNSwgMTk5LCAxOTQgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBzbGlkZXJUaHVtYkJhY2tncm91bmRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjQ0LCAyNDIs
IDI0MSB9Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlclRodW1iQmFja2dyb3VuZEhvdmVy
ZWRDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjQ4LCAyNDgsIDI0NyB9Oworc3RhdGljIGNvbnN0
ZXhwciBhdXRvIHNsaWRlclRodW1iQmFja2dyb3VuZERpc2FibGVkQ29sb3IgPSBTUkdCQTx1aW50
OF90PiB7IDI0NCwgMjQyLCAyNDEgfTsKICNpZiBFTkFCTEUoVklERU8pCi1zdGF0aWMgY29uc3Rl
eHByIGF1dG8gbWVkaWFTbGlkZXJUcmFja0JhY2tncm91bmRjb2xvciA9IG1ha2VTaW1wbGVDb2xv
cig3NywgNzcsIDc3KTsKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBtZWRpYVNsaWRlclRyYWNrQnVm
ZmVyZWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigxNzMsIDE3MywgMTczKTsKLXN0YXRpYyBjb25z
dGV4cHIgYXV0byBtZWRpYVNsaWRlclRyYWNrQWN0aXZlQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3Io
MjUyLCAyNTIsIDI1Mik7CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWVkaWFTbGlkZXJUcmFja0Jh
Y2tncm91bmRjb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgNzcsIDc3LCA3NyB9Oworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG1lZGlhU2xpZGVyVHJhY2tCdWZmZXJlZENvbG9yID0gU1JHQkE8dWludDhf
dD4geyAxNzMsIDE3MywgMTczIH07CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWVkaWFTbGlkZXJU
cmFja0FjdGl2ZUNvbG9yID0gU1JHQkE8dWludDhfdD4geyAyNTIsIDI1MiwgMjUyIH07CiAjZW5k
aWYKIAogI2lmICFQTEFURk9STShHVEspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MuaAkocmV2aXNpb24gMjY0NTY0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIENvbG9y
IHBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtYWtl
U2ltcGxlQ29sb3IoMjYsIDI2LCAyNiwgMHg0RCk7IH0KKyAgICBDb2xvciBwbGF0Zm9ybVRhcEhp
Z2hsaWdodENvbG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU1JHQkE8dWludDhfdD4geyAy
NiwgMjYsIDI2LCA3NyB9IDsgfQogI2VuZGlmCiAKICAgICBib29sIHNob3VsZEhhdmVTcGluQnV0
dG9uKGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQmKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHJldmlzaW9uIDI2NDU2NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkod29ya2luZyBj
b3B5KQpAQCAtODQ4LDkgKzg0OCw5IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50U2xpZGVy
VHJhY2soY28KIAogICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNv
bnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICAgICAgaWYgKHJlYWRvbmx5KQotICAgICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihtYWtlU2ltcGxlQ29sb3Io
MTc4LCAxNzgsIDE3OCkpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJv
a2VDb2xvcihTUkdCQTx1aW50OF90PiB7IDE3OCwgMTc4LCAxNzggfSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IobWFrZVNpbXBs
ZUNvbG9yKDc2LCA3NiwgNzYpKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0
U3Ryb2tlQ29sb3IoU1JHQkE8dWludDhfdD4geyA3NiwgNzYsIDc2IH0pOwogCiAgICAgICAgIFJl
dGFpblB0cjxDR011dGFibGVQYXRoUmVmPiByb3VuZGVkUmVjdFBhdGggPSBhZG9wdENGKENHUGF0
aENyZWF0ZU11dGFibGUoKSk7CiAgICAgICAgIENHUGF0aEFkZFJvdW5kZWRSZWN0KHJvdW5kZWRS
ZWN0UGF0aC5nZXQoKSwgMCwgdHJhY2tDbGlwLCBjb3JuZXJXaWR0aCwgY29ybmVySGVpZ2h0KTsK
QEAgLTkxNywxMCArOTE3LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NC
YXIoY28KIAogICAgIGNvbnN0IGZsb2F0IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gPSByZWN0
LnkoKSArIHZlcnRpY2FsT2Zmc2V0OwogICAgIGF1dG8gc3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVu
dDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVy
dGljYWxSZW5kZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVu
ZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOwotICAgIHN0cm9rZUdy
YWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjBmLCBtYWtlU2ltcGxlQ29sb3IoMTQxLCAxNDEsIDE0
MSkgfSk7Ci0gICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuNDVmLCBtYWtlU2lt
cGxlQ29sb3IoMjM4LCAyMzgsIDIzOCkgfSk7Ci0gICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuNTVmLCBtYWtlU2ltcGxlQ29sb3IoMjM4LCAyMzgsIDIzOCkgfSk7Ci0gICAgc3Ry
b2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEuMGYsIG1ha2VTaW1wbGVDb2xvcigxNDEsIDE0
MSwgMTQxKSB9KTsKKyAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4wZiwgU1JH
QkE8dWludDhfdD4geyAxNDEsIDE0MSwgMTQxIH0gfSk7CisgICAgc3Ryb2tlR3JhZGllbnQtPmFk
ZENvbG9yU3RvcCh7IDAuNDVmLCBTUkdCQTx1aW50OF90PiB7IDIzOCwgMjM4LCAyMzggfSB9KTsK
KyAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC41NWYsIFNSR0JBPHVpbnQ4X3Q+
IHsgMjM4LCAyMzgsIDIzOCB9IH0pOworICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
eyAxLjBmLCBTUkdCQTx1aW50OF90PiB7IDE0MSwgMTQxLCAxNDEgfSB9KTsKICAgICBjb250ZXh0
LnNldFN0cm9rZUdyYWRpZW50KFdURk1vdmUoc3Ryb2tlR3JhZGllbnQpKTsKIAogICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CkBAIC05MzcsOCArOTM3LDggQEAgYm9vbCBS
ZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0JhcihjbwogCiAgICAgZmxvYXQgdXBwZXJHcmFk
aWVudEhlaWdodCA9IHByb2dyZXNzQmFySGVpZ2h0IC8gMi47CiAgICAgYXV0byB1cHBlckdyYWRp
ZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQo
cmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjVmKSwgRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHVwcGVyR3JhZGllbnRIZWlnaHQg
LSAxLjUpIH0pOwotICAgIHVwcGVyR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMGYsIG1ha2VT
aW1wbGVDb2xvcigxMzMsIDEzMywgMTMzLCAxODgpIH0pOwotICAgIHVwcGVyR3JhZGllbnQtPmFk
ZENvbG9yU3RvcCh7IDEuMGYsIG1ha2VTaW1wbGVDb2xvcigxOCwgMTgsIDE4LCA1MSkgfSk7Cisg
ICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4wZiwgU1JHQkE8dWludDhfdD4geyAx
MzMsIDEzMywgMTMzLCAxODggfSB9KTsKKyAgICB1cHBlckdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
eyAxLjBmLCBTUkdCQTx1aW50OF90PiB7IDE4LCAxOCwgMTgsIDUxIH0gfSk7CiAgICAgY29udGV4
dC5zZXRGaWxsR3JhZGllbnQoV1RGTW92ZSh1cHBlckdyYWRpZW50KSk7CiAKICAgICBjb250ZXh0
LmZpbGxSZWN0KEZsb2F0UmVjdChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiwg
cmVjdC53aWR0aCgpLCB1cHBlckdyYWRpZW50SGVpZ2h0KSk7CkBAIC05NDksMTggKzk0OSwxOCBA
QCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvCiAgICAgICAgIGRvdWJs
ZSBwb3NpdGlvbiA9IGNsYW1wVG8ocmVuZGVyUHJvZ3Jlc3MucG9zaXRpb24oKSwgMC4wLCAxLjAp
OwogICAgICAgICBmbG9hdCBiYXJXaWR0aCA9IHBvc2l0aW9uICogcmVjdC53aWR0aCgpOwogICAg
ICAgICBhdXRvIGJhckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFy
RGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAw
LjVmKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHBy
b2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7Ci0gICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0
b3AoeyAwLjBmLCBtYWtlU2ltcGxlQ29sb3IoMTk1LCAyMTcsIDI0NykgfSk7Ci0gICAgICAgIGJh
ckdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjQ1ZiwgbWFrZVNpbXBsZUNvbG9yKDExOCwgMTY0
LCAyMjgpIH0pOwotICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC40OWYsIG1h
a2VTaW1wbGVDb2xvcigxMTgsIDE2NCwgMjI4KSB9KTsKLSAgICAgICAgYmFyR3JhZGllbnQtPmFk
ZENvbG9yU3RvcCh7IDAuNTFmLCBtYWtlU2ltcGxlQ29sb3IoMzYsIDExNCwgMjEwKSB9KTsKLSAg
ICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuNTVmLCBtYWtlU2ltcGxlQ29sb3Io
MzYsIDExNCwgMjEwKSB9KTsKLSAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEu
MGYsIG1ha2VTaW1wbGVDb2xvcig1NywgMTQyLCAyNDQpIH0pOworICAgICAgICBiYXJHcmFkaWVu
dC0+YWRkQ29sb3JTdG9wKHsgMC4wZiwgU1JHQkE8dWludDhfdD4geyAxOTUsIDIxNywgMjQ3IH0g
fSk7CisgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjQ1ZiwgU1JHQkE8dWlu
dDhfdD4geyAxMTgsIDE2NCwgMjI4IH0gfSk7CisgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xv
clN0b3AoeyAwLjQ5ZiwgU1JHQkE8dWludDhfdD4geyAxMTgsIDE2NCwgMjI4IH0gfSk7CisgICAg
ICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjUxZiwgU1JHQkE8dWludDhfdD4geyAz
NiwgMTE0LCAyMTAgfSB9KTsKKyAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAu
NTVmLCBTUkdCQTx1aW50OF90PiB7IDM2LCAxMTQsIDIxMCB9IH0pOworICAgICAgICBiYXJHcmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMS4wZiwgU1JHQkE8dWludDhfdD4geyA1NywgMTQyLCAyNDQg
fSB9KTsKICAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoV1RGTW92ZShiYXJHcmFkaWVu
dCkpOwogCiAgICAgICAgIGF1dG8gYmFyU3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRl
KEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5k
ZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9z
aXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOwotICAgICAgICBiYXJTdHJva2VHcmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMC4wZiwgbWFrZVNpbXBsZUNvbG9yKDk1LCAxMDcsIDE4Mykg
fSk7Ci0gICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjVmLCBtYWtl
U2ltcGxlQ29sb3IoNjYsIDEwNiwgMTc0LCAyNDApIH0pOwotICAgICAgICBiYXJTdHJva2VHcmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMS4wZiwgbWFrZVNpbXBsZUNvbG9yKDM4LCAxMDQsIDE2Nikg
fSk7CisgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjBmLCBTUkdC
QTx1aW50OF90PiB7IDk1LCAxMDcsIDE4MyB9IH0pOworICAgICAgICBiYXJTdHJva2VHcmFkaWVu
dC0+YWRkQ29sb3JTdG9wKHsgMC41ZiwgU1JHQkE8dWludDhfdD4geyA2NiwgMTA2LCAxNzQsIDI0
MCB9IH0pOworICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMS4wZiwg
U1JHQkE8dWludDhfdD4geyAzOCwgMTA0LCAxNjYgfSB9KTsKICAgICAgICAgY29udGV4dC5zZXRT
dHJva2VHcmFkaWVudChXVEZNb3ZlKGJhclN0cm9rZUdyYWRpZW50KSk7CiAKICAgICAgICAgUGF0
aCBiYXJQYXRoOwpAQCAtMTM4MywxMCArMTM4MywxMCBAQCBDb2xvciBSZW5kZXJUaGVtZUlPUzo6
c3lzdGVtQ29sb3IoQ1NTVmFsCiBjb25zdCBDR1NpemUgYXR0YWNobWVudFNpemUgPSB7IDE2MCwg
MTE5IH07CiAKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudEJvcmRlclJhZGl1cyA9IDE2OwotY29u
c3RleHByIGF1dG8gYXR0YWNobWVudEJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwNCwg
MjA0LCAyMDQpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVudEJvcmRlckNvbG9yID0gU1JHQkE8
dWludDhfdD4geyAyMDQsIDIwNCwgMjA0IH07CiBzdGF0aWMgQ0dGbG9hdCBhdHRhY2htZW50Qm9y
ZGVyVGhpY2tuZXNzID0gMTsKIAotY29uc3RleHByIGF1dG8gYXR0YWNobWVudFByb2dyZXNzQ29s
b3IgPSBtYWtlU2ltcGxlQ29sb3IoMjIyLCAyMjIsIDIyMik7Citjb25zdGV4cHIgYXV0byBhdHRh
Y2htZW50UHJvZ3Jlc3NDb2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjIyLCAyMjIsIDIyMiB9Owog
Y29uc3QgQ0dGbG9hdCBhdHRhY2htZW50UHJvZ3Jlc3NCb3JkZXJUaGlja25lc3MgPSAzOwogCiBj
b25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQcm9ncmVzc1NpemUgPSAzNjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHJldmlzaW9uIDI2NDU2NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNTAxLDcgKzUwMSw3IEBAIHN0YXRpYyBTUkdCQTx1aW50OF90PiBtZW51QmFja2dyb3Vu
ZENvbG8KICAgICBOU1VJbnRlZ2VyIHBpeGVsWzRdOwogICAgIFtvZmZzY3JlZW5SZXAgZ2V0UGl4
ZWw6cGl4ZWwgYXRYOjAgeTowXTsKIAotICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IocGl4ZWxb
MF0sIHBpeGVsWzFdLCBwaXhlbFsyXSwgcGl4ZWxbM10pOworICAgIHJldHVybiBjbGFtcFRvQ29t
cG9uZW50Qnl0ZXM8U1JHQkE+KHBpeGVsWzBdLCBwaXhlbFsxXSwgcGl4ZWxbMl0sIHBpeGVsWzNd
KTsKIH0KIAogQ29sb3IgUmVuZGVyVGhlbWVNYWM6OnN5c3RlbUNvbG9yKENTU1ZhbHVlSUQgY3Nz
VmFsdWVJRCwgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IG9wdGlvbnMpIGNvbnN0CkBA
IC03MzcsMTEgKzczNywxMSBAQCBDb2xvciBSZW5kZXJUaGVtZU1hYzo6c3lzdGVtQ29sb3IoQ1NT
VmFsCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVUaHJlZWRmYWNlOgogICAgICAgICAgICAgLy8gV2Ug
c2VsZWN0ZWQgdGhpcyB2YWx1ZSBpbnN0ZWFkIG9mIFtOU0NvbG9yIGNvbnRyb2xDb2xvcl0gdG8g
YXZvaWQgd2Vic2l0ZSBpbmNvbXBhdGliaWxpdGllcy4KICAgICAgICAgICAgIC8vIFdlIG1heSB3
YW50IHRvIGNvbnNpZGVyIGNoYW5naW5nIHRvIFtOU0NvbG9yIGNvbnRyb2xDb2xvcl0gc29tZSBk
YXkuCi0gICAgICAgICAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDE5MiwgMTkyLCAxOTIpOwor
ICAgICAgICAgICAgcmV0dXJuIENvbG9yOjpsaWdodEdyYXk7CiAKICAgICAgICAgY2FzZSBDU1NW
YWx1ZUluZm9iYWNrZ3JvdW5kOgogICAgICAgICAgICAgLy8gTm8gY29ycmVzcG9uZGluZyBOU0Nv
bG9yIGZvciB0aGlzIHNvIHdlIHVzZSBhIGhhcmQgY29kZWQgdmFsdWUuCi0gICAgICAgICAgICBy
ZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDI1MSwgMjUyLCAxOTcpOworICAgICAgICAgICAgcmV0dXJu
IFNSR0JBPHVpbnQ4X3Q+IHsgMjUxLCAyNTIsIDE5NyB9OwogCiAgICAgICAgIGNhc2UgQ1NTVmFs
dWVNZW51OgogICAgICAgICAgICAgcmV0dXJuIG1lbnVCYWNrZ3JvdW5kQ29sb3IoKTsKQEAgLTc1
MCwzMCArNzUwLDMwIEBAIENvbG9yIFJlbmRlclRoZW1lTWFjOjpzeXN0ZW1Db2xvcihDU1NWYWwK
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUFjdGl2ZWJvcmRlcjoKICAgICAgICAgICAgIC8vIEhhcmRj
b2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVzZXIgYXBwZWFyYW5jZSBwcmVmZXJlbmNlIHRvIHRo
ZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgogICAgICAgICAgICAgaWYgKGxvY2FsQXBwZWFyYW5j
ZS51c2luZ0RhcmtBcHBlYXJhbmNlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgbWFrZVNp
bXBsZUNvbG9yKDI2LCAxNjksIDI1NSksIENvbG9yOjpTZW1hbnRpYyB9OwotICAgICAgICAgICAg
cmV0dXJuIHsgbWFrZVNpbXBsZUNvbG9yKDAsIDEwMywgMjQ0KSwgQ29sb3I6OlNlbWFudGljIH07
CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgU1JHQkE8dWludDhfdD4geyAyNiwgMTY5LCAyNTUg
fSwgQ29sb3I6OlNlbWFudGljIH07CisgICAgICAgICAgICByZXR1cm4geyBTUkdCQTx1aW50OF90
PiB7IDAsIDEwMywgMjQ0IH0sIENvbG9yOjpTZW1hbnRpYyB9OwogCiAgICAgICAgIGNhc2UgQ1NT
VmFsdWVBcHBsZVN5c3RlbUNvbnRyb2xBY2NlbnQ6CiAgICAgICAgICAgICAvLyBIYXJkY29kZWQg
dG8gYXZvaWQgZXhwb3NpbmcgYSB1c2VyIGFwcGVhcmFuY2UgcHJlZmVyZW5jZSB0byB0aGUgd2Vi
IGZvciBmaW5nZXJwcmludGluZy4KICAgICAgICAgICAgIC8vIFNhbWUgY29sb3IgaW4gbGlnaHQg
YW5kIGRhcmsgYXBwZWFyYW5jZXMuCi0gICAgICAgICAgICByZXR1cm4geyBtYWtlU2ltcGxlQ29s
b3IoMCwgMTIyLCAyNTUpLCBDb2xvcjo6U2VtYW50aWMgfTsKKyAgICAgICAgICAgIHJldHVybiB7
IFNSR0JBPHVpbnQ4X3Q+IHsgMCwgMTIyLCAyNTUgfSwgQ29sb3I6OlNlbWFudGljIH07CiAKICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2VsZWN0ZWRDb250ZW50QmFja2dyb3VuZDoK
ICAgICAgICAgICAgIC8vIEhhcmRjb2RlZCB0byBhdm9pZCBleHBvc2luZyBhIHVzZXIgYXBwZWFy
YW5jZSBwcmVmZXJlbmNlIHRvIHRoZSB3ZWIgZm9yIGZpbmdlcnByaW50aW5nLgogICAgICAgICAg
ICAgaWYgKGxvY2FsQXBwZWFyYW5jZS51c2luZ0RhcmtBcHBlYXJhbmNlKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHsgbWFrZVNpbXBsZUNvbG9yKDAsIDg4LCAyMDgpLCBDb2xvcjo6U2VtYW50
aWMgfTsKLSAgICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVDb2xvcigwLCA5OSwgMjI1KSwg
Q29sb3I6OlNlbWFudGljIH07CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgU1JHQkE8dWludDhf
dD4geyAwLCA4OCwgMjA4IH0sIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAgcmV0dXJu
IHsgU1JHQkE8dWludDhfdD4geyAwLCA5OSwgMjI1IH0sIENvbG9yOjpTZW1hbnRpYyB9OwogCiAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVIaWdobGlnaHQ6CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBcHBs
ZVN5c3RlbVNlbGVjdGVkVGV4dEJhY2tncm91bmQ6CiAgICAgICAgICAgICAvLyBIYXJkY29kZWQg
dG8gYXZvaWQgZXhwb3NpbmcgYSB1c2VyIGFwcGVhcmFuY2UgcHJlZmVyZW5jZSB0byB0aGUgd2Vi
IGZvciBmaW5nZXJwcmludGluZy4KICAgICAgICAgICAgIGlmIChsb2NhbEFwcGVhcmFuY2UudXNp
bmdEYXJrQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiB7IG1ha2VTaW1wbGVD
b2xvcig2MywgOTksIDEzOSwgMjA0KSwgQ29sb3I6OlNlbWFudGljIH07Ci0gICAgICAgICAgICBy
ZXR1cm4geyBtYWtlU2ltcGxlQ29sb3IoMTI4LCAxODgsIDI1NCwgMTUzKSwgQ29sb3I6OlNlbWFu
dGljIH07CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgU1JHQkE8dWludDhfdD4geyA2MywgOTks
IDEzOSwgMjA0IH0sIENvbG9yOjpTZW1hbnRpYyB9OworICAgICAgICAgICAgcmV0dXJuIHsgU1JH
QkE8dWludDhfdD4geyAxMjgsIDE4OCwgMjU0LCAxNTMgfSwgQ29sb3I6OlNlbWFudGljIH07CiAK
ICNpZiAhSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKICAgICAgICAgY2FzZSBDU1NWYWx1ZUFw
cGxlU3lzdGVtQ29udGFpbmVyQm9yZGVyOgotICAgICAgICAgICAgcmV0dXJuIG1ha2VTaW1wbGVD
b2xvcigxOTcsIDE5NywgMTk3KTsKKyAgICAgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7
IDE5NywgMTk3LCAxOTcgfTsKICNlbmRpZgogCiAgICAgICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5
c3RlbUV2ZW5BbHRlcm5hdGluZ0NvbnRlbnRCYWNrZ3JvdW5kOiB7CkBAIC0xNTkyLDggKzE1OTIs
OCBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uCiAgICAgfTsKICAg
ICBwYWludEluZm8uY29udGV4dCgpLmZpbGxQYXRoKFBhdGg6OnBvbHlnb25QYXRoRnJvbVBvaW50
cyhhcnJvdzIpKTsKIAotICAgIGNvbnN0ZXhwciBhdXRvIGxlZnRTZXBhcmF0b3JDb2xvciA9IG1h
a2VTaW1wbGVDb2xvcigwLCAwLCAwLCA0MCk7Ci0gICAgY29uc3RleHByIGF1dG8gcmlnaHRTZXBh
cmF0b3JDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDI1NSwgMjU1LCA0MCk7CisgICAgY29u
c3RleHByIGF1dG8gbGVmdFNlcGFyYXRvckNvbG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFs
cGhhKDQwKTsKKyAgICBjb25zdGV4cHIgYXV0byByaWdodFNlcGFyYXRvckNvbG9yID0gQ29sb3I6
OndoaXRlLmNvbG9yV2l0aEFscGhhKDQwKTsKIAogICAgIC8vIEZJWE1FOiBTaG91bGQgdGhlIHNl
cGFyYXRvciB0aGlja25lc3MgYW5kIHNwYWNlIGJlIHNjYWxlZCB1cCBieSBmb250U2NhbGU/CiAg
ICAgaW50IHNlcGFyYXRvclNwYWNlID0gMjsgLy8gRGVsaWJlcmF0ZWx5IGlnbm9yZXMgem9vbSBz
aW5jZSBpdCBsb29rcyBuaWNlciBpZiBpdCBzdGF5cyB0aGluLgpAQCAtMjQxMyw4ICsyNDEzLDgg
QEAgY29uc3QgQ0dGbG9hdCBhdHRhY2htZW50SWNvblNlbGVjdGlvbkJvcgogY29uc3QgQ0dGbG9h
dCBhdHRhY2htZW50SWNvbkJhY2tncm91bmRSYWRpdXMgPSAzOwogY29uc3QgQ0dGbG9hdCBhdHRh
Y2htZW50SWNvblRvVGl0bGVNYXJnaW4gPSAyOwogCi1jb25zdGV4cHIgYXV0byBhdHRhY2htZW50
SWNvbkJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAwLCAzMCk7Ci1jb25z
dGV4cHIgYXV0byBhdHRhY2htZW50SWNvbkJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1
NSwgMjU1LCAyNTUsIDEyNSk7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50SWNvbkJhY2tncm91
bmRDb2xvciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgzMCk7Citjb25zdGV4cHIgYXV0
byBhdHRhY2htZW50SWNvbkJvcmRlckNvbG9yID0gQ29sb3I6OndoaXRlLmNvbG9yV2l0aEFscGhh
KDEyNSk7CiAKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFRpdGxlRm9udFNpemUgPSAxMjsKIGNv
bnN0IENHRmxvYXQgYXR0YWNobWVudFRpdGxlQmFja2dyb3VuZFJhZGl1cyA9IDM7CkBAIC0yNDIy
LDIzICsyNDIyLDIzIEBAIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFRpdGxlQmFja2dyb3VuZFAK
IGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFRpdGxlTWF4aW11bVdpZHRoID0gMTAwIC0gKGF0dGFj
aG1lbnRUaXRsZUJhY2tncm91bmRQYWRkaW5nICogMik7CiBjb25zdCBDRkluZGV4IGF0dGFjaG1l
bnRUaXRsZU1heGltdW1MaW5lQ291bnQgPSAyOwogCi1jb25zdGV4cHIgYXV0byBhdHRhY2htZW50
VGl0bGVJbmFjdGl2ZUJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyMDQsIDIwNCwg
MjA0KTsKLWNvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlVGV4dENvbG9yID0g
bWFrZVNpbXBsZUNvbG9yKDEwMCwgMTAwLCAxMDApOworY29uc3RleHByIGF1dG8gYXR0YWNobWVu
dFRpdGxlSW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDIwNCwgMjA0
LCAyMDQgfTsKK2NvbnN0ZXhwciBhdXRvIGF0dGFjaG1lbnRUaXRsZUluYWN0aXZlVGV4dENvbG9y
ID0gU1JHQkE8dWludDhfdD4geyAxMDAsIDEwMCwgMTAwIH07CiAKIGNvbnN0IENHRmxvYXQgYXR0
YWNobWVudFN1YnRpdGxlRm9udFNpemUgPSAxMDsKIGNvbnN0IGludCBhdHRhY2htZW50U3VidGl0
bGVXaWR0aEluY3JlbWVudCA9IDEwOwotY29uc3RleHByIGF1dG8gYXR0YWNobWVudFN1YnRpdGxl
VGV4dENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDgyLCAxNDUsIDIxNCk7Citjb25zdGV4cHIgYXV0
byBhdHRhY2htZW50U3VidGl0bGVUZXh0Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDgyLCAxNDUs
IDIxNCB9OwogCiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQcm9ncmVzc0JhcldpZHRoID0gMzA7
CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1lbnRQcm9ncmVzc0JhckhlaWdodCA9IDU7CiBjb25zdCBD
R0Zsb2F0IGF0dGFjaG1lbnRQcm9ncmVzc0Jhck9mZnNldCA9IC05OwogY29uc3QgQ0dGbG9hdCBh
dHRhY2htZW50UHJvZ3Jlc3NCYXJCb3JkZXJXaWR0aCA9IDE7Ci1jb25zdGV4cHIgYXV0byBhdHRh
Y2htZW50UHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwg
MCwgODkpOworY29uc3RleHByIGF1dG8gYXR0YWNobWVudFByb2dyZXNzQmFyQmFja2dyb3VuZENv
bG9yID0gQ29sb3I6OmJsYWNrLmNvbG9yV2l0aEFscGhhKDg5KTsKIGNvbnN0ZXhwciBhdXRvIGF0
dGFjaG1lbnRQcm9ncmVzc0JhckZpbGxDb2xvciA9IENvbG9yOjp3aGl0ZTsKLWNvbnN0ZXhwciBh
dXRvIGF0dGFjaG1lbnRQcm9ncmVzc0JhckJvcmRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAs
IDAsIDAsIDEyOCk7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50UHJvZ3Jlc3NCYXJCb3JkZXJD
b2xvciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSgxMjgpOwogCiBjb25zdCBDR0Zsb2F0
IGF0dGFjaG1lbnRQbGFjZWhvbGRlckJvcmRlclJhZGl1cyA9IDU7Ci1jb25zdGV4cHIgYXV0byBh
dHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigwLCAwLCAw
LCA1Nik7Citjb25zdGV4cHIgYXV0byBhdHRhY2htZW50UGxhY2Vob2xkZXJCb3JkZXJDb2xvciA9
IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYSg1Nik7CiBjb25zdCBDR0Zsb2F0IGF0dGFjaG1l
bnRQbGFjZWhvbGRlckJvcmRlcldpZHRoID0gMjsKIGNvbnN0IENHRmxvYXQgYXR0YWNobWVudFBs
YWNlaG9sZGVyQm9yZGVyRGFzaExlbmd0aCA9IDY7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAkocmV2aXNpb24gMjY0NTY0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjg4LDE5ICsyODgsMTkgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6c3VwcG9ydHNIb3Zlcihjb25z
dAogQ29sb3IgUmVuZGVyVGhlbWVXaW46OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3Vu
ZENvbG9yKE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPikgY29uc3QKIHsKICAgICBDT0xP
UlJFRiBjb2xvciA9IEdldFN5c0NvbG9yKENPTE9SX0hJR0hMSUdIVCk7Ci0gICAgcmV0dXJuIG1h
a2VTaW1wbGVDb2xvcihHZXRSVmFsdWUoY29sb3IpLCBHZXRHVmFsdWUoY29sb3IpLCBHZXRCVmFs
dWUoY29sb3IpKTsKKyAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyBHZXRSVmFsdWUoY29sb3Ip
LCBHZXRHVmFsdWUoY29sb3IpLCBHZXRCVmFsdWUoY29sb3IpIH07CiB9CiAKIENvbG9yIFJlbmRl
clRoZW1lV2luOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKE9wdGlv
blNldDxTdHlsZUNvbG9yOjpPcHRpb25zPikgY29uc3QKIHsKICAgICAvLyBUaGlzIGNvbG9yIG1h
dGNoZXMgRmlyZWZveC4KLSAgICByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDE3NiwgMTc2LCAxNzYp
OworICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IDE3NiwgMTc2LCAxNzYgfTsKIH0KIAogQ29s
b3IgUmVuZGVyVGhlbWVXaW46OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
KE9wdGlvblNldDxTdHlsZUNvbG9yOjpPcHRpb25zPikgY29uc3QKIHsKICAgICBDT0xPUlJFRiBj
b2xvciA9IEdldFN5c0NvbG9yKENPTE9SX0hJR0hMSUdIVFRFWFQpOwotICAgIHJldHVybiBtYWtl
U2ltcGxlQ29sb3IoR2V0UlZhbHVlKGNvbG9yKSwgR2V0R1ZhbHVlKGNvbG9yKSwgR2V0QlZhbHVl
KGNvbG9yKSk7CisgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgR2V0UlZhbHVlKGNvbG9yKSwg
R2V0R1ZhbHVlKGNvbG9yKSwgR2V0QlZhbHVlKGNvbG9yKSB9OwogfQogCiBDb2xvciBSZW5kZXJU
aGVtZVdpbjo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcihPcHRpb25T
ZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKQEAgLTEwMDksNyArMTAwOSw3
IEBAIENvbG9yIFJlbmRlclRoZW1lV2luOjpzeXN0ZW1Db2xvcihDU1NWYWwKICAgICAgICAgcmV0
dXJuIFJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvcihjc3NWYWx1ZUlkLCBvcHRpb25zKTsKIAogICAg
IENPTE9SUkVGIGNvbG9yID0gR2V0U3lzQ29sb3Ioc3lzQ29sb3JJbmRleCk7Ci0gICAgcmV0dXJu
IG1ha2VTaW1wbGVDb2xvcihHZXRSVmFsdWUoY29sb3IpLCBHZXRHVmFsdWUoY29sb3IpLCBHZXRC
VmFsdWUoY29sb3IpKTsKKyAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyBHZXRSVmFsdWUoY29s
b3IpLCBHZXRHVmFsdWUoY29sb3IpLCBHZXRCVmFsdWUoY29sb3IpIH07CiB9CiAKICNpZiBFTkFC
TEUoVklERU8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAyNjQ1NjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIHBhaW50Rmxvdyhjb25zdCBSZW5kZXJCbG9j
a0Zsb3cmIGZsCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gZGVidWdTaGFkb3cg
PSBudWxscHRyOwogICAgIGlmIChmbG93LnNldHRpbmdzKCkuc2ltcGxlTGluZUxheW91dERlYnVn
Qm9yZGVyc0VuYWJsZWQoKSkgewotICAgICAgICBkZWJ1Z1NoYWRvdyA9IG1ha2VVbmlxdWU8U2hh
ZG93RGF0YT4oSW50UG9pbnQoMCwgMCksIDEwLCAyMCwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1
ZSwgbWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCwgMjAwKSk7CisgICAgICAgIGRlYnVnU2hhZG93
ID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCgwLCAwKSwgMTAsIDIwLCBTaGFkb3dT
dHlsZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcjo6Z3JlZW4uY29sb3JXaXRoQWxwaGEoMjAwKSk7CiAg
ICAgICAgIHRleHRQYWludGVyLnNldFNoYWRvdyhkZWJ1Z1NoYWRvdy5nZXQoKSk7CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEJsb2NrLmNwcAkocmV2aXNpb24gMjY0NTY0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
OSw3ICsxMTksNyBAQCB2b2lkIFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChQYWludEluZm8mCiAK
ICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7CiAgICAgaW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGluZm8uY29udGV4dCgp
LnNldFN0cm9rZUNvbG9yKG1ha2VTaW1wbGVDb2xvcigwLCAwLCAyNTUpKTsKKyAgICBpbmZvLmNv
bnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcjo6Ymx1ZSk7CiAKICAgICBpbmZvLmNvbnRleHQo
KS5kcmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0LCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zm
c2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQu
eSgpKSk7CiAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWlu
dE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zm
c2V0LnkoKSksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVk
T2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZz
ZXRIZWlnaHQoKSkpOwpAQCAtMTI4LDEzICsxMjgsMTMgQEAgdm9pZCBSZW5kZXJNYXRoTUxCbG9j
azo6cGFpbnQoUGFpbnRJbmZvJgogCiAgICAgaW50IHRvcFN0YXJ0ID0gcGFkZGluZ1RvcCgpOwog
Ci0gICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IobWFrZVNpbXBsZUNvbG9yKDAsIDI1
NSwgMCkpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7
CiAKICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zm
c2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyB0b3BTdGFydCksIEludFBvaW50KGFk
anVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0
ZWRQYWludE9mZnNldC55KCkgKyB0b3BTdGFydCkpOwogCiAgICAgaW50IGJhc2VsaW5lID0gcm91
bmRUb0ludChiYXNlbGluZVBvc2l0aW9uKEFscGhhYmV0aWNCYXNlbGluZSwgdHJ1ZSwgSG9yaXpv
bnRhbExpbmUpKTsKIAotICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKG1ha2VTaW1w
bGVDb2xvcigyNTUsIDAsIDApKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihD
b2xvcjo6cmVkKTsKIAogICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGFkanVz
dGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIGJhc2VsaW5lKSwg
SW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0
aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIGJhc2VsaW5lKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9u
IDI2NDU2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMjYsNyArMjAyNiw3IEBAIENvbG9yIFJlbmRlclN0eWxl
Ojpjb2xvclJlc29sdmluZ0N1cnJlbnQKICAgICBpZiAoaXNDdXJyZW50Q29sb3IocmVzdWx0KSkg
ewogICAgICAgICBhdXRvIGJvcmRlclN0eWxlID0gY29tcHV0ZUJvcmRlclN0eWxlKCk7CiAgICAg
ICAgIGlmICghdmlzaXRlZExpbmsgJiYgKGJvcmRlclN0eWxlID09IEJvcmRlclN0eWxlOjpJbnNl
dCB8fCBib3JkZXJTdHlsZSA9PSBCb3JkZXJTdHlsZTo6T3V0c2V0IHx8IGJvcmRlclN0eWxlID09
IEJvcmRlclN0eWxlOjpSaWRnZSB8fCBib3JkZXJTdHlsZSA9PSBCb3JkZXJTdHlsZTo6R3Jvb3Zl
KSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlU2ltcGxlQ29sb3IoMjM4LCAyMzgsIDIzOCk7Cisg
ICAgICAgICAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAyMzgsIDIzOCwgMjM4IH07CiAKICAg
ICAgICAgcmV0dXJuIHZpc2l0ZWRMaW5rID8gdmlzaXRlZExpbmtDb2xvcigpIDogY29sb3IoKTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVu
ZGVyU3R5bGUuaAkocmV2aXNpb24gMjY0NTY0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1NWR1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDEwICs3MywxMCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBpbml0aWFsU3Ryb2tlUGFpbnRVcmkoKSB7IHJl
dHVybiBTdHJpbmcoKTsgfQogICAgIHN0YXRpYyBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IGluaXRp
YWxTdHJva2VEYXNoQXJyYXkoKSB7IHJldHVybiB7IH07IH0KICAgICBzdGF0aWMgZmxvYXQgaW5p
dGlhbFN0b3BPcGFjaXR5KCkgeyByZXR1cm4gMTsgfQotICAgIHN0YXRpYyBDb2xvciBpbml0aWFs
U3RvcENvbG9yKCkgeyByZXR1cm4gbWFrZVNpbXBsZUNvbG9yKDAsIDAsIDApOyB9CisgICAgc3Rh
dGljIENvbG9yIGluaXRpYWxTdG9wQ29sb3IoKSB7IHJldHVybiBDb2xvcjo6YmxhY2s7IH0KICAg
ICBzdGF0aWMgZmxvYXQgaW5pdGlhbEZsb29kT3BhY2l0eSgpIHsgcmV0dXJuIDE7IH0KLSAgICBz
dGF0aWMgQ29sb3IgaW5pdGlhbEZsb29kQ29sb3IoKSB7IHJldHVybiBtYWtlU2ltcGxlQ29sb3Io
MCwgMCwgMCk7IH0KLSAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbExpZ2h0aW5nQ29sb3IoKSB7IHJl
dHVybiBtYWtlU2ltcGxlQ29sb3IoMjU1LCAyNTUsIDI1NSk7IH0KKyAgICBzdGF0aWMgQ29sb3Ig
aW5pdGlhbEZsb29kQ29sb3IoKSB7IHJldHVybiBDb2xvcjo6YmxhY2s7IH0KKyAgICBzdGF0aWMg
Q29sb3IgaW5pdGlhbExpZ2h0aW5nQ29sb3IoKSB7IHJldHVybiBDb2xvcjo6d2hpdGU7IH0KICAg
ICBzdGF0aWMgU2hhZG93RGF0YSogaW5pdGlhbFNoYWRvdygpIHsgcmV0dXJuIG51bGxwdHI7IH0K
ICAgICBzdGF0aWMgU3RyaW5nIGluaXRpYWxNYXNrZXJSZXNvdXJjZSgpIHsgcmV0dXJuIFN0cmlu
ZygpOyB9CiAgICAgc3RhdGljIFN0cmluZyBpbml0aWFsTWFya2VyU3RhcnRSZXNvdXJjZSgpIHsg
cmV0dXJuIFN0cmluZygpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0
aW9uSW1wbC5oCShyZXZpc2lvbiAyNjQ1NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgICAgICBmbG9hdCBibHVlID0gQmFzZTo6
YW5pbWF0ZShwcm9ncmVzcywgcmVwZWF0Q291bnQsIHNpbXBsZUZyb20uYmx1ZSwgc2ltcGxlVG8u
Ymx1ZSwgc2ltcGxlVG9BdEVuZE9mRHVyYXRpb24uYmx1ZSwgc2ltcGxlQW5pbWF0ZWQuYmx1ZSk7
CiAgICAgICAgIGZsb2F0IGFscGhhID0gQmFzZTo6YW5pbWF0ZShwcm9ncmVzcywgcmVwZWF0Q291
bnQsIHNpbXBsZUZyb20uYWxwaGEsIHNpbXBsZVRvLmFscGhhLCBzaW1wbGVUb0F0RW5kT2ZEdXJh
dGlvbi5hbHBoYSwgc2ltcGxlQW5pbWF0ZWQuYWxwaGEpOwogICAgICAgICAKLSAgICAgICAgYW5p
bWF0ZWQgPSBtYWtlU2ltcGxlQ29sb3Iocm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChyZWQpLCBy
b3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGdyZWVuKSwgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5l
bChibHVlKSwgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChhbHBoYSkpOworICAgICAgICBhbmlt
YXRlZCA9IGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4oc3RkOjpscm91bmQocmVkKSwgc3Rk
Ojpscm91bmQoZ3JlZW4pLCBzdGQ6Omxyb3VuZChibHVlKSwgc3RkOjpscm91bmQoYWxwaGEpKTsK
ICAgICB9CiAKICAgICBPcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZHRWxlbWVu
dCosIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgY29uc3Qgb3ZlcnJpZGUK
QEAgLTExNCwyNyArMTE0LDEzIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgaW5s
aW5lIHVpbnQ4X3Qgcm91bmRBbmRDbGFtcENvbG9yQ2hhbm5lbChpbnQgdmFsdWUpCi0gICAgewot
ICAgICAgICByZXR1cm4gc3RkOjpjbGFtcCh2YWx1ZSwgMCwgMjU1KTsKLSAgICB9Ci0KLSAgICBp
bmxpbmUgdWludDhfdCByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKGZsb2F0IHZhbHVlKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6Y2xhbXAoc3RkOjpyb3VuZGYodmFsdWUpLCAwLjBmLCAy
NTUuMGYpOwotICAgIH0KLQogICAgIHZvaWQgYWRkRnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQq
KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgYXV0byBzaW1wbGVGcm9tID0gbV9mcm9tLnRvU1JH
QkFMb3NzeTx1aW50OF90PigpOwogICAgICAgICBhdXRvIHNpbXBsZVRvID0gbV90by50b1NSR0JB
TG9zc3k8dWludDhfdD4oKTsKIAogICAgICAgICAvLyBJZ25vcmVzIGFueSBhbHBoYSBhbmQgc2V0
cyBhbHBoYSBvbiByZXN1bHQgdG8gMTAwJSBvcGFxdWUuCi0gICAgICAgIG1fdG8gPSBtYWtlU2lt
cGxlQ29sb3IoCi0gICAgICAgICAgICByb3VuZEFuZENsYW1wQ29sb3JDaGFubmVsKHNpbXBsZVRv
LnJlZCArIHNpbXBsZUZyb20ucmVkKSwKLSAgICAgICAgICAgIHJvdW5kQW5kQ2xhbXBDb2xvckNo
YW5uZWwoc2ltcGxlVG8uZ3JlZW4gKyBzaW1wbGVGcm9tLmdyZWVuKSwKLSAgICAgICAgICAgIHJv
dW5kQW5kQ2xhbXBDb2xvckNoYW5uZWwoc2ltcGxlVG8uYmx1ZSArIHNpbXBsZUZyb20uYmx1ZSkK
LSAgICAgICAgKTsKKyAgICAgICAgbV90byA9IGNsYW1wVG9Db21wb25lbnRCeXRlczxTUkdCQT4o
c2ltcGxlVG8ucmVkICsgc2ltcGxlRnJvbS5yZWQsIHNpbXBsZVRvLmdyZWVuICsgc2ltcGxlRnJv
bS5ncmVlbiwgc2ltcGxlVG8uYmx1ZSArIHNpbXBsZUZyb20uYmx1ZSk7CiAgICAgfQogCiAgICAg
c3RhdGljIENvbG9yIGNvbG9yRnJvbVN0cmluZyhTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGll
bnQuY3BwCShyZXZpc2lvbiAyNjQ1NjQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQ
YWdlT3ZlcmxheUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSwxMCArMTA1LDEwIEBA
IHZvaWQgTW9ja1BhZ2VPdmVybGF5Q2xpZW50OjpkcmF3UmVjdChQYWcKICAgICBGbG9hdFJlY3Qg
aW5zZXRSZWN0ID0gb3ZlcmxheS5ib3VuZHMoKTsKIAogICAgIGlmIChvdmVybGF5Lm92ZXJsYXlU
eXBlKCkgPT0gUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBlOjpEb2N1bWVudCkgewotICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKG1ha2VTaW1wbGVDb2xvcigwLCAyNTUsIDApKTsKKyAgICAg
ICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6Z3JlZW4pOwogICAgICAgICBpbnNldFJl
Y3QuaW5mbGF0ZSgtNTApOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tl
Q29sb3IobWFrZVNpbXBsZUNvbG9yKDAsIDAsIDI1NSkpOworICAgICAgICBjb250ZXh0LnNldFN0
cm9rZUNvbG9yKENvbG9yOjpibHVlKTsKICAgICAgICAgaW5zZXRSZWN0LmluZmxhdGUoLTIwKTsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3Vh
bElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0JKHJldmlz
aW9uIDI2NDU2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3Vh
bElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbQkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3OihQbGF0Zm9yCiAgICAgX2xheWVyID0g
YWRvcHROUyhbW0NBVGlsZWRMYXllciBhbGxvY10gaW5pdF0pOwogICAgIFtfbGF5ZXIgc2V0TmFt
ZTpAIldlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkiXTsKICAgICBbX2xheWVyIHNl
dEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgW192aWV3IGJvdW5kc10uc2l6ZS53aWR0aCwgW192aWV3
IGJvdW5kc10uc2l6ZS5oZWlnaHQpXTsKLSAgICBXZWJDb3JlOjpDb2xvciB2aWV3Q29sb3IgPSBp
c0RlcHJlY2F0ZWQgPyBXZWJDb3JlOjptYWtlU2ltcGxlQ29sb3IoMjU1LCAwLCAwLCAzMikgOiBX
ZWJDb3JlOjptYWtlU2ltcGxlQ29sb3IoMCwgMCwgMjU1LCAzMik7CisgICAgYXV0byB2aWV3Q29s
b3IgPSBpc0RlcHJlY2F0ZWQgPyBXZWJDb3JlOjpDb2xvcjo6cmVkLmNvbG9yV2l0aEFscGhhKDUw
KSA6IFdlYkNvcmU6OkNvbG9yOjpibHVlLmNvbG9yV2l0aEFscGhhKDMyKTsKICAgICBbX2xheWVy
IHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKHZpZXdDb2xvcildOwogICAgIFtfbGF5
ZXIgc2V0WlBvc2l0aW9uOjk5OV07CiAgICAgW19sYXllciBzZXREZWxlZ2F0ZTpzZWxmXTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNjQ1NjQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIwLTA3LTE2ICBTYW0gV2VpbmlnICA8
d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgZmluYWwgdmVzdGlnYXRlcyBvZiBT
aW1wbGVDb2xvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE0NDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAg
ICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF90YXBIaWdobGlnaHRDb2xvckZvckZhc3RDbGljazpdKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJlY3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpkcmF3UmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwYWludFNuYXBz
aG90QXRTaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9s
bGVySU9TLm1tOgorICAgICAgICBSZXBsYWNlIHJlbWFpbmluZyBtYWtlU2ltcGxlQ29sb3IoKSB1
c2VzLgorCiAyMDIwLTA3LTE3ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIE9LIGJ1dHRvbiB0byBEYXRlL1RpbWUgZm9ybSBjb250cm9scy4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0JKHJldmlzaW9uIDI2NDU2NCkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnQKIAogI2lmbmRlZiBOREVCVUcKICAgICBpZiAobV9p
c09wYXF1ZSkKLSAgICAgICAgY29udGV4dC5maWxsUmVjdChzY2FsZWRMYXllckJvdW5kcywgV2Vi
Q29yZTo6bWFrZVNpbXBsZUNvbG9yKDI1NSwgNDcsIDE0NikpOworICAgICAgICBjb250ZXh0LmZp
bGxSZWN0KHNjYWxlZExheWVyQm91bmRzLCBXZWJDb3JlOjpTUkdCQTx1aW50OF90PiB7IDI1NSwg
NDcsIDE0NiB9KTsKICNlbmRpZgogCiAgICAgY29udGV4dC5zY2FsZShtX3NjYWxlKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMjY0NTY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNDM1
Nyw3ICs0MzU3LDcgQEAgLSAodm9pZClfYmVjb21lRmlyc3RSZXNwb25kZXJXaXRoU2VsZWN0aQog
LSAoV2ViQ29yZTo6Q29sb3IpX3RhcEhpZ2hsaWdodENvbG9yRm9yRmFzdENsaWNrOihCT09MKWZv
ckZhc3RDbGljawogewogICAgIEFTU0VSVChfc2hvd0RlYnVnVGFwSGlnaGxpZ2h0c0ZvckZhc3RD
bGlja2luZyk7Ci0gICAgcmV0dXJuIGZvckZhc3RDbGljayA/IFdlYkNvcmU6Om1ha2VTaW1wbGVD
b2xvcigwLCAyMjUsIDAsIDEyNykgOiBXZWJDb3JlOjptYWtlU2ltcGxlQ29sb3IoMjI1LCAwLCAw
LCAxMjcpOworICAgIHJldHVybiBmb3JGYXN0Q2xpY2sgPyBXZWJDb3JlOjpTUkdCQTx1aW50OF90
PiB7IDAsIDIyNSwgMCwgMTI3IH0gOiBXZWJDb3JlOjpTUkdCQTx1aW50OF90PiB7IDIyNSwgMCwg
MCwgMTI3IH07CiB9CiAKIC0gKHZvaWQpX3NldERvdWJsZVRhcEdlc3R1cmVzRW5hYmxlZDooQk9P
TCllbmFibGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCShyZXZpc2lvbiAyNjQ1NjQpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVu
dDo6c2hvd1BhaW50UmVjdChjCiAgICAgcGFpbnRMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQ
b2ludDNEKCkpOwogICAgIHBhaW50TGF5ZXItPnNldFBvc2l0aW9uKHJlY3QubG9jYXRpb24oKSk7
CiAgICAgcGFpbnRMYXllci0+c2V0U2l6ZShyZWN0LnNpemUoKSk7Ci0gICAgcGFpbnRMYXllci0+
c2V0QmFja2dyb3VuZENvbG9yKG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDAsIDUxKSk7CisgICAg
cGFpbnRMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjpyZWQuY29sb3JXaXRoQWxwaGEo
NTEpKTsKIAogICAgIEtleWZyYW1lVmFsdWVMaXN0IGZhZGVLZXlmcmFtZXMoQW5pbWF0ZWRQcm9w
ZXJ0eU9wYWNpdHkpOwogICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRB
bmltYXRpb25WYWx1ZT4oMCwgMSkpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjY0NTY0KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDgsOCArNTA4LDggQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYQogewogICAgIGNvbnN0IGludCBib3JkZXJXaWR0aCA9IDE7CiAKLSAgICBj
b25zdGV4cHIgYXV0byBvdmVybGF5QmFja2dyb3VuZENvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI2
LCAyNiwgMjYsIDY0KTsKLSAgICBjb25zdGV4cHIgYXV0byBzaGFkb3dDb2xvciA9IG1ha2VTaW1w
bGVDb2xvcigwLCAwLCAwLCAxMjgpOworICAgIGNvbnN0ZXhwciBhdXRvIG92ZXJsYXlCYWNrZ3Jv
dW5kQ29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDI2LCAyNiwgMjYsIDY0IH07CisgICAgY29uc3Rl
eHByIGF1dG8gc2hhZG93Q29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JXaXRoQWxwaGEoMTI4KTsK
IAogICAgIEludFJlY3QgYm9yZGVySW5mbGF0ZWREaXJ0eVJlY3QgPSBkaXJ0eVJlY3Q7CiAgICAg
Ym9yZGVySW5mbGF0ZWREaXJ0eVJlY3QuaW5mbGF0ZShib3JkZXJXaWR0aCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjY0
NTY0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0MTIsNyArMjQxMiw3IEBAIHZvaWQgV2ViUGFnZTo6cGFpbnRTbmFw
c2hvdEF0U2l6ZShjb25zdCAKIAogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zUGFp
bnRTZWxlY3Rpb25SZWN0YW5nbGUpIHsKICAgICAgICAgRmxvYXRSZWN0IHNlbGVjdGlvblJlY3Rh
bmdsZSA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbkJvdW5kcygpOwotICAgICAgICBncmFw
aGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3IobWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCkpOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OnJlZCk7CiAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5zdHJva2VSZWN0KHNlbGVjdGlvblJlY3RhbmdsZSwgMSk7CiAg
ICAgfQogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRD
b250cm9sbGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQkocmV2aXNpb24gMjY0NTY0KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIGNvbnN0IGludCB0b3RhbFZlcnRpY2FsTWFy
Z2luID0gMTsKIAogY29uc3RleHByIE9wdGlvblNldDxUZXh0SW5kaWNhdG9yT3B0aW9uPiBmaW5k
VGV4dEluZGljYXRvck9wdGlvbnMgeyBUZXh0SW5kaWNhdG9yT3B0aW9uOjpJbmNsdWRlTWFyZ2lu
SWZSYW5nZU1hdGNoZXNTZWxlY3Rpb24sIFRleHRJbmRpY2F0b3JPcHRpb246OkRvTm90Q2xpcFRv
VmlzaWJsZVJlY3QgfTsKIAotY29uc3RleHByIGF1dG8gaGlnaGxpZ2h0Q29sb3IgPSBtYWtlU2lt
cGxlQ29sb3IoMjU1LCAyMjgsIDU2KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBoaWdobGlnaHRD
b2xvciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAyMjgsIDU2IH07CiAKIHZvaWQgRmluZEluZGlj
YXRvck92ZXJsYXlDbGllbnRJT1M6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDU2NCkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTA3LTE2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgZmluYWwgdmVzdGlnYXRlcyBvZiBTaW1wbGVDb2xvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NDM5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgICogV2ViVmlldy9XZWJJbmRpY2F0ZUxheWVyLm1t
OgorICAgICAgICBSZXBsYWNlIHJlbWFpbmluZyBtYWtlU2ltcGxlQ29sb3IoKSB1c2VzLgorCiAy
MDIwLTA3LTE3ICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjQ0NzcuCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkluZGljYXRlTGF5ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJJbmRpY2F0ZUxheWVyLm1tCShyZXZpc2lvbiAyNjQ1
NjQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkluZGljYXRlTGF5ZXIu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgLSAoaWQpaW5pdFdpdGhXZWJWaWV3
OihXZWJWaWV3ICopd2ViVmlldwogICAgIHNlbGYuY29udGVudHNTY2FsZSA9IFtbX3dlYlZpZXcg
d2luZG93XSBzY3JlZW5TY2FsZV07CiAKICAgICAvLyBCbHVlIGhpZ2hsaWdodCBjb2xvci4KLSAg
ICBjb25zdGV4cHIgYXV0byBoaWdobGlnaHRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigxMTEsIDE2
OCwgMjIwLCAxNjgpOworICAgIGNvbnN0ZXhwciBhdXRvIGhpZ2hsaWdodENvbG9yID0gU1JHQkE8
dWludDhfdD4geyAxMTEsIDE2OCwgMjIwLCAxNjggfTsKICAgICBzZWxmLmJhY2tncm91bmRDb2xv
ciA9IGNhY2hlZENHQ29sb3IoaGlnaGxpZ2h0Q29sb3IpOwogCiAgICAgcmV0dXJuIHNlbGY7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQ1NjQpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAyMC0wNy0xNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIGZpbmFsIHZlc3RpZ2F0ZXMgb2YgU2ltcGxlQ29sb3IKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDQzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoY29tcG9zaXRpb25Ub1Vu
ZGVybGluZXMpOgorICAgICAgICBSZXBsYWNlIHJlbWFpbmluZyBtYWtlU2ltcGxlQ29sb3IoKSB1
c2VzLgorCiAyMDIwLTA3LTE2ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnku
Y29tPgogCiAgICAgICAgIFtXVEZdIFJlbW92ZSB0aGUgdW5uZWNlc3NhcnkgaW5uZXIgY2xhc3Mg
RGVmYXVsdEhhc2g8VD46Okhhc2gKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjQ1NjQpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzQsMTEgKzc0LDExIEBAIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVy
UmFkaXVzID0gMTI7CiBzdGF0aWMgY29uc3QgaW50IGJvcmRlclRoaWNrbmVzcyA9IDI7CiAKIC8v
IENvbG9ycwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJhY2tncm91bmRDb2xvciA9IG1ha2VTaW1w
bGVDb2xvcigzMiwgMzIsIDMyLCAxNjApOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIGJvcmRlckNv
bG9yID0gbWFrZVNpbXBsZUNvbG9yKDE2MCwgMTYwLCAxNjApOwotc3RhdGljIGNvbnN0ZXhwciBh
dXRvIHNsaWRlckd1dHRlckNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDIwLCAyMCwgMjApOwotc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHNsaWRlckJ1dHRvbkNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDEy
OCwgMTI4LCAxMjgpOwotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRleHRDb2xvciA9IG1ha2VTaW1w
bGVDb2xvcigyNTUsIDI1NSwgMjU1KTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBiYWNrZ3JvdW5k
Q29sb3IgPSBTUkdCQTx1aW50OF90PiB7IDMyLCAzMiwgMzIsIDE2MCB9Oworc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGJvcmRlckNvbG9yID0gU1JHQkE8dWludDhfdD4geyAxNjAsIDE2MCwgMTYwIH07
CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2xpZGVyR3V0dGVyQ29sb3IgPSBTUkdCQTx1aW50OF90
PiB7IDIwLCAyMCwgMjAgfTsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzbGlkZXJCdXR0b25Db2xv
ciA9IFNSR0JBPHVpbnQ4X3Q+IHsgMTI4LCAxMjgsIDEyOCB9Oworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIHRleHRDb2xvciA9IENvbG9yOjp3aGl0ZTsKIAogSFVEQnV0dG9uOjpIVURCdXR0b24oSFVE
QnV0dG9uVHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiAgICAgOiBIVURXaWRn
ZXQoSW50UmVjdChwb3NpdGlvbiwgSW50U2l6ZSgpKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyNjQ1NjQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjI4Myw3ICs2MjgzLDcgQEAgc3RhdGlj
IHZvaWQgY29tcG9zaXRpb25Ub1VuZGVybGluZXMoY29ucwogICAgICAgICB1bmRlcmxpbmVzW2ld
LmVuZE9mZnNldCA9IGNsYXVzZXNbaSArIDFdOwogICAgICAgICBCWVRFIGF0dHJpYnV0ZSA9IGF0
dHJpYnV0ZXNbY2xhdXNlc1tpXV07CiAgICAgICAgIHVuZGVybGluZXNbaV0udGhpY2sgPSBhdHRy
aWJ1dGUgPT0gQVRUUl9UQVJHRVRfQ09OVkVSVEVEIHx8IGF0dHJpYnV0ZSA9PSBBVFRSX1RBUkdF
VF9OT1RDT05WRVJURUQ7Ci0gICAgICAgIHVuZGVybGluZXNbaV0uY29sb3IgPSBtYWtlU2ltcGxl
Q29sb3IoMCwgMCwgMCk7CisgICAgICAgIHVuZGVybGluZXNbaV0uY29sb3IgPSBDb2xvcjo6Ymxh
Y2s7CiAgICAgfQogfQogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQ1NjQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNy0xNiAgU2FtIFdlaW5pZyAgPHdlaW5p
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGZpbmFsIHZlc3RpZ2F0ZXMgb2YgU2ltcGxl
Q29sb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDQzOQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db2xvclRlc3RzLmNwcDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRXh0ZW5kZWRDb2xvclRlc3RzLmNwcDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFBERkRvY3VtZW50Lm1tOgorICAgICAgICBSZXBs
YWNlIHJlbWFpbmluZyBtYWtlU2ltcGxlQ29sb3IoKSB1c2VzLgorCiAyMDIwLTA3LTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEZvbGxvd3VwIHRv
IHIyNjQ1MzEKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db2xvclRl
c3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Q29sb3JUZXN0cy5jcHAJKHJldmlzaW9uIDI2NDU2NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Db2xvclRlc3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgs
NyBAQCBURVNUKENvbG9yLCBSR0JUb0hTTF9CbGFjaykKIAogVEVTVChDb2xvciwgUkdCVG9IU0xf
UmVkKQogewotICAgIENvbG9yIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDI1NSwgMCwgMCk7Cisg
ICAgQ29sb3IgY29sb3IgPSBDb2xvcjo6cmVkOwogCiAgICAgYXV0byBoc2xhQ29sb3IgPSB0b0hT
TEEoY29sb3IudG9TUkdCQUxvc3N5PGZsb2F0PigpKTsKIApAQCAtODQsNyArODQsNyBAQCBURVNU
KENvbG9yLCBSR0JUb0hTTF9SZWQpCiAKIFRFU1QoQ29sb3IsIFJHQlRvSFNMX0dyZWVuKQogewot
ICAgIENvbG9yIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCk7CisgICAgQ29sb3Ig
Y29sb3IgPSBDb2xvcjo6Z3JlZW47CiAKICAgICBhdXRvIGhzbGFDb2xvciA9IHRvSFNMQShjb2xv
ci50b1NSR0JBTG9zc3k8ZmxvYXQ+KCkpOwogCkBAIC0xMDAsNyArMTAwLDcgQEAgVEVTVChDb2xv
ciwgUkdCVG9IU0xfR3JlZW4pCiAKIFRFU1QoQ29sb3IsIFJHQlRvSFNMX0JsdWUpCiB7Ci0gICAg
Q29sb3IgY29sb3IgPSBtYWtlU2ltcGxlQ29sb3IoMCwgMCwgMjU1KTsKKyAgICBDb2xvciBjb2xv
ciA9IENvbG9yOjpibHVlOwogCiAgICAgYXV0byBoc2xhQ29sb3IgPSB0b0hTTEEoY29sb3IudG9T
UkdCQUxvc3N5PGZsb2F0PigpKTsKIApAQCAtMTcyLDcgKzE3Miw3IEBAIFRFU1QoQ29sb3IsIFZh
bGlkaXR5KQogICAgIEVYUEVDVF9GQUxTRShvdGhlckludmFsaWRDb2xvci5pc1ZhbGlkKCkpOwog
ICAgIEVYUEVDVF9GQUxTRShvdGhlckludmFsaWRDb2xvci5pc0V4dGVuZGVkKCkpOwogCi0gICAg
Q29sb3IgdmFsaWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigyNTUsIDAsIDApOworICAgIENvbG9y
IHZhbGlkQ29sb3IgPSBDb2xvcjo6cmVkOwogICAgIEVYUEVDVF9UUlVFKHZhbGlkQ29sb3IuaXNW
YWxpZCgpKTsKICAgICBFWFBFQ1RfRkFMU0UodmFsaWRDb2xvci5pc0V4dGVuZGVkKCkpOwogCkBA
IC0xODAsNyArMTgwLDcgQEAgVEVTVChDb2xvciwgVmFsaWRpdHkpCiAgICAgRVhQRUNUX1RSVUUo
b3RoZXJWYWxpZENvbG9yLmlzVmFsaWQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKG90aGVyVmFsaWRD
b2xvci5pc0V4dGVuZGVkKCkpOwogCi0gICAgdmFsaWRDb2xvciA9IG1ha2VTaW1wbGVDb2xvcigx
LCAyLCAzLCA0KTsKKyAgICB2YWxpZENvbG9yID0gU1JHQkE8dWludDhfdD4geyAxLCAyLCAzLCA0
IH07CiAgICAgRVhQRUNUX1RSVUUodmFsaWRDb2xvci5pc1ZhbGlkKCkpOwogICAgIEVYUEVDVF9G
QUxTRSh2YWxpZENvbG9yLmlzRXh0ZW5kZWQoKSk7CiAgICAgYXV0byB2YWxpZENvbG9yQ29tcG9u
ZW50cyA9IHZhbGlkQ29sb3IudG9TUkdCQUxvc3N5PHVpbnQ4X3Q+KCk7CkBAIC0yMTMsNyArMjEz
LDcgQEAgVEVTVChDb2xvciwgTHVtaW5hbmNlKQogICAgIEVYUEVDVF9GTE9BVF9FUShDb2xvcihD
b2xvcjo6YmxhY2spLmx1bWluYW5jZSgpLCAwKTsKICAgICBFWFBFQ1RfRkxPQVRfRVEoQ29sb3Io
Q29sb3I6OndoaXRlKS5sdW1pbmFuY2UoKSwgMSk7CiAKLSAgICBhdXRvIGNDb21wb25lbnRzID0g
bWFrZVNpbXBsZUNvbG9yKDg1LCA5MCwgMTYwKTsKKyAgICBhdXRvIGNDb21wb25lbnRzID0gU1JH
QkE8dWludDhfdD4geyA4NSwgOTAsIDE2MCB9OwogICAgIEVYUEVDVF9GTE9BVF9FUShDb2xvcihj
Q29tcG9uZW50cykubHVtaW5hbmNlKCksIDAuMTE3ODE2OTIpOwogCiAgICAgRVhQRUNUX0VRKGND
b21wb25lbnRzLnJlZCwgODUpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0V4dGVuZGVkQ29sb3JUZXN0cy5jcHAJKHJldmlzaW9uIDI2NDU2
NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9FeHRlbmRlZENvbG9yVGVz
dHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsMTIgKzEwOCw5IEBAIFRFU1QoRXh0ZW5kZWRD
b2xvciwgRXF1YWxpdHkpCiAgICAgICAgIEVYUEVDVF9ORShjMSwgYzIpOwogICAgIH0KIAotICAg
IGludCByID0gMjU1OwotICAgIGludCBnID0gMTI4OwotICAgIGludCBiID0gNjM7Ci0gICAgaW50
IGEgPSAxMjc7Ci0gICAgQ29sb3IgcmdiMSB7IFNSR0JBPGZsb2F0PiB7IHIgLyAyNTUuMGYsIGcg
LyAyNTUuMGYsIGIgLyAyNTUuMGYsIGEgLyAyNTUuMGYgfSB9OwotICAgIENvbG9yIHJnYjIgPSBt
YWtlU2ltcGxlQ29sb3IociwgZywgYiwgYSk7CisgICAgYXV0byBjb21wb25lbnRCeXRlcyA9IFNS
R0JBPHVpbnQ4X3Q+IHsgMjU1LCAxMjgsIDYzLCAxMjcgfTsKKyAgICBDb2xvciByZ2IxIHsgY29u
dmVydFRvQ29tcG9uZW50RmxvYXRzKGNvbXBvbmVudEJ5dGVzKSB9OworICAgIENvbG9yIHJnYjIg
eyBjb21wb25lbnRCeXRlcyB9OwogICAgIEVYUEVDVF9ORShyZ2IxLCByZ2IyKTsKICAgICBFWFBF
Q1RfTkUocmdiMiwgcmdiMSk7CiB9CkBAIC0xNDAsMTIgKzEzNyw5IEBAIFRFU1QoRXh0ZW5kZWRD
b2xvciwgSGFzaCkKICAgICAgICAgRVhQRUNUX05FKGMxLmhhc2goKSwgYzIuaGFzaCgpKTsKICAg
ICB9CiAKLSAgICBpbnQgciA9IDI1NTsKLSAgICBpbnQgZyA9IDEyODsKLSAgICBpbnQgYiA9IDYz
OwotICAgIGludCBhID0gMTI3OwotICAgIENvbG9yIHJnYjEgeyBTUkdCQTxmbG9hdD4geyByIC8g
MjU1LjBmLCBnIC8gMjU1LjBmLCBiIC8gMjU1LjBmLCBhIC8gMjU1LjBmIH0gfTsKLSAgICBDb2xv
ciByZ2IyID0gbWFrZVNpbXBsZUNvbG9yKHIsIGcsIGIsIGEpOworICAgIGF1dG8gY29tcG9uZW50
Qnl0ZXMgPSBTUkdCQTx1aW50OF90PiB7IDI1NSwgMTI4LCA2MywgMTI3IH07CisgICAgQ29sb3Ig
cmdiMSB7IGNvbnZlcnRUb0NvbXBvbmVudEZsb2F0cyhjb21wb25lbnRCeXRlcykgfTsKKyAgICBD
b2xvciByZ2IyIHsgY29tcG9uZW50Qnl0ZXMgfTsKICAgICBFWFBFQ1RfTkUocmdiMS5oYXNoKCks
IHJnYjIuaGFzaCgpKTsKIH0KIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9QREZTbmFwc2hvdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tCShyZXZpc2lvbiAyNjQ1NjQpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERlNuYXBzaG90Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIFRFU1QoUERGU25hcHNob3QsIEZ1bGxDb250ZW50
KQogICAgICAgICBFWFBFQ1RfRVEocGFnZS0+dGV4dCgpWzRdLCAnbycpOwogCiAgICAgICAgIC8v
IFRoZSBlbnRpcmUgcGFnZSBzaG91bGQgYmUgZ3JlZW4uIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlk
ZGxlIHRvIGNoZWNrLgotICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAw
LCAzMDApID09IFdlYkNvcmU6Om1ha2VTaW1wbGVDb2xvcigwLCAyNTUsIDApKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9PSBXZWJDb3JlOjpDb2xv
cjo6Z3JlZW4pOwogCiAgICAgICAgIGRpZFRha2VTbmFwc2hvdCA9IHRydWU7CiAgICAgfV07CkBA
IC04OSw3ICs4OSw3IEBAIFRFU1QoUERGU25hcHNob3QsIFN1YnJlZ2lvbnMpCiAgICAgICAgIEVY
UEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAwdSk7CiAKICAgICAgICAgLy8gVGhlIGVu
dGlyZSBwYWdlIHNob3VsZCBiZSBncmVlbi4gUGljayBhIHBvaW50IGluIHRoZSBtaWRkbGUgdG8g
Y2hlY2suCi0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCgyMDAsIDE1MCkg
PT0gV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShwYWdlLT5jb2xvckF0UG9pbnQoMjAwLCAxNTApID09IFdlYkNvcmU6OkNvbG9yOjpncmVl
bik7CiAKICAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKICAgICB9XTsKQEAgLTEwOSwx
MCArMTA5LDEwIEBAIFRFU1QoUERGU25hcHNob3QsIFN1YnJlZ2lvbnMpCiAgICAgICAgIEVYUEVD
VF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAs
IDEyMDAsIDEyMDApKSk7CiAKICAgICAgICAgLy8gQSBwaXhlbCB0aGF0IHdhcyBpbiB0aGUgdmll
dyBzaG91bGQgYmUgZ3JlZW4uIFBpY2sgYSBwb2ludCBpbiB0aGUgbWlkZGxlIHRvIGNoZWNrLgot
ICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoMjAwLCAxNTApID09IFdlYkNv
cmU6Om1ha2VTaW1wbGVDb2xvcigwLCAyNTUsIDApKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFn
ZS0+Y29sb3JBdFBvaW50KDIwMCwgMTUwKSA9PSBXZWJDb3JlOjpDb2xvcjo6Z3JlZW4pOwogCiAg
ICAgICAgIC8vIEEgcGl4ZWwgdGhhdCB3YXMgb3V0c2lkZSB0aGUgdmlldyBzaG91bGQgYWxzbyBi
ZSBncmVlbiAod2UgZXh0ZW5kIGJhY2tncm91bmQgY29sb3Igb3V0KS4gUGljayBhIHBvaW50IGlu
IHRoZSBtaWRkbGUgdG8gY2hlY2suCi0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQ
b2ludCg5MDAsIDcwMCkgPT0gV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoOTAwLCA3MDApID09IFdlYkNv
cmU6OkNvbG9yOjpncmVlbik7CiAKICAgICAgICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKICAg
ICB9XTsKQEAgLTEzOCwyMCArMTM4LDIwIEBAIFRFU1QoUERGU25hcHNob3QsIE92ZXIyMDBJbmNo
ZXMpCiAgICAgICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50LT5wYWdlKDApOwogICAgICAgICBFWFBF
Q1RfTkUocGFnZSwgbnVsbHB0cik7CiAgICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9S
ZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RNYWtlKDAsIDAsIDgwMCwgMTQ0MDApKSk7Ci0gICAg
ICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gV2ViQ29yZTo6
bWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5j
b2xvckF0UG9pbnQoNDAwLCAzMDApID09IFdlYkNvcmU6OkNvbG9yOjpncmVlbik7CiAgICAgICAg
IEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCA1dSk7CiAKICAgICAgICAgcGFnZSA9
IGRvY3VtZW50LT5wYWdlKDEpOwogICAgICAgICBFWFBFQ1RfTkUocGFnZSwgbnVsbHB0cik7CiAg
ICAgICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1Jl
Y3RNYWtlKDAsIDAsIDgwMCwgMTQ0MDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNv
bG9yQXRQb2ludCg0MDAsIDMwMCkgPT0gV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwg
MCkpOworICAgICAgICBFWFBFQ1RfVFJVRShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09
IFdlYkNvcmU6OkNvbG9yOjpncmVlbik7CiAKICAgICAgICAgRVhQRUNUX0VRKHBhZ2UtPmNoYXJh
Y3RlckNvdW50KCksIDB1KTsKIAogICAgICAgICBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoMik7CiAg
ICAgICAgIEVYUEVDVF9ORShwYWdlLCBudWxscHRyKTsKICAgICAgICAgRVhQRUNUX1RSVUUoQ0dS
ZWN0RXF1YWxUb1JlY3QocGFnZS0+Ym91bmRzKCksIENHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDAp
KSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9yQXRQb2ludCg0MDAsIDMwMCkgPT0g
V2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDAsIDI1NSwgMCkpOworICAgICAgICBFWFBFQ1RfVFJV
RShwYWdlLT5jb2xvckF0UG9pbnQoNDAwLCAzMDApID09IFdlYkNvcmU6OkNvbG9yOjpncmVlbik7
CiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFyYWN0ZXJDb3VudCgpLCAwdSk7CiAKICAgICAg
ICAgZGlkVGFrZVNuYXBzaG90ID0gdHJ1ZTsKQEAgLTE3Niw3ICsxNzYsNyBAQCBURVNUKFBERlNu
YXBzaG90LCBMaW5rcykKICAgICAgICAgRVhQRUNUX05FKHBhZ2UsIG51bGxwdHIpOwogCiAgICAg
ICAgIEVYUEVDVF9UUlVFKENHUmVjdEVxdWFsVG9SZWN0KHBhZ2UtPmJvdW5kcygpLCBDR1JlY3RN
YWtlKDAsIDAsIDgwMCwgMTQ0MDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHBhZ2UtPmNvbG9y
QXRQb2ludCg0MDAsIDMwMCkgPT0gV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yKDI1NSwgMjU1LCAy
NTUpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUocGFnZS0+Y29sb3JBdFBvaW50KDQwMCwgMzAwKSA9
PSBXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOwogCiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT5jaGFy
YWN0ZXJDb3VudCgpLCA4dSk7CiAgICAgICAgIEVYUEVDVF9FUShwYWdlLT50ZXh0KClbMF0sICdD
Jyk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RQREZEb2N1bWVudC5t
bQkocmV2aXNpb24gMjY0NTY0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0UERG
RG9jdW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0NCw4ICsxNDQsOCBAQCBXZWJDb3JlOjpD
b2xvciBUZXN0UERGUGFnZTo6Y29sb3JBdFBvaW50CiAgICAgYXV0byBhID0gcGl4ZWxbaSArIDNd
OwogCiAgICAgaWYgKCFhKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9y
KDAsIDAsIDAsIDApOwotICAgIHJldHVybiBXZWJDb3JlOjptYWtlU2ltcGxlQ29sb3IociAqIDI1
NSAvIGEsIGcgKiAyNTUgLyBhLCBiICogMjU1IC8gYSwgYSk7CisgICAgICAgIHJldHVybiBXZWJD
b3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNsYW1wVG9Db21w
b25lbnRCeXRlczxXZWJDb3JlOjpTUkdCQT4ociAqIDI1NSAvIGEsIGcgKiAyNTUgLyBhLCBiICog
MjU1IC8gYSwgYSk7CiB9CiAKIC8vIERvY3VtZW50cwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>