<?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>44541</bug_id>
          
          <creation_ts>2010-08-24 11:41:11 -0700</creation_ts>
          <short_desc>Implement steps() timing function for animations</short_desc>
          <delta_ts>2010-09-08 17:10:02 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://dev.w3.org/csswg/css3-transitions/#transition-timing-function_tag</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarrin</cc>
    
    <cc>divya</cc>
    
    <cc>eric</cc>
    
    <cc>gianni</cc>
    
    <cc>ml</cc>
    
    <cc>peter</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>268684</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-08-24 11:41:11 -0700</bug_when>
    <thetext>Implement step-start, step-end, steps() as defined in http://dev.w3.org/csswg/css3-transitions/#transition-timing-function_tag

Since CSSTimingFunction assumes it is a bezier, I suspect we&apos;ll have to make a base class and a couple of isBezierFunction() / isStepFunction() queries, similar to Events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275753</commentid>
    <comment_count>1</comment_count>
      <attachid>66880</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-09-08 04:44:18 -0700</bug_when>
    <thetext>Created attachment 66880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275756</commentid>
    <comment_count>2</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-09-08 04:46:00 -0700</bug_when>
    <thetext>Note that the patch also includes the small change in WebCore/rendering/RenderLayerBacking.cpp that was causing hardware animations to not run. This will be removed before submission.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275895</commentid>
    <comment_count>3</comment_count>
      <attachid>66880</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-08 09:49:15 -0700</bug_when>
    <thetext>Comment on attachment 66880
Patch

&gt; diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj

&gt;  			compatibilityVersion = &quot;Xcode 2.4&quot;;
&gt; +			developmentRegion = English;

Please don&apos;t commit this.


&gt; @@ -6079,7 +6085,13 @@ void CSSStyleSelector::mapAnimationTimingFunction(Animation* animation, CSSValue
&gt;      
&gt;      if (value-&gt;isTimingFunctionValue()) {
&gt;          CSSTimingFunctionValue* timingFunction = static_cast&lt;CSSTimingFunctionValue*&gt;(value);
&gt; -        animation-&gt;setTimingFunction(TimingFunction(CubicBezierTimingFunction, timingFunction-&gt;x1(), timingFunction-&gt;y1(), timingFunction-&gt;x2(), timingFunction-&gt;y2()));
&gt; +        if (timingFunction-&gt;isCubicBezierTimingFunctionValue()) {
&gt; +            CSSCubicBezierTimingFunctionValue* cubicTimingFunction = static_cast&lt;CSSCubicBezierTimingFunctionValue*&gt;(value);
&gt; +            animation-&gt;setTimingFunction(CubicBezierTimingFunction::create(cubicTimingFunction-&gt;x1(), cubicTimingFunction-&gt;y1(), cubicTimingFunction-&gt;x2(), cubicTimingFunction-&gt;y2()));
&gt; +        } else if (timingFunction-&gt;isStepsTimingFunctionValue()) {
&gt; +            CSSStepsTimingFunctionValue* stepsTimingFunction = static_cast&lt;CSSStepsTimingFunctionValue*&gt;(value);
&gt; +            animation-&gt;setTimingFunction(StepsTimingFunction::create(stepsTimingFunction-&gt;numberOfSteps(), stepsTimingFunction-&gt;stepAtStart()));
&gt; +        }

Why aren&apos;t linear timing functions handled here?

  
&gt; diff --git a/WebCore/css/CSSTimingFunctionValue.cpp b/WebCore/css/CSSTimingFunctionValue.cpp

&gt; +String CSSLinearTimingFunctionValue::cssText() const
&gt; +{
&gt; +    String text(&quot;linear&quot;);
&gt; +    return text;

return &quot;linear&quot; would work.

&gt; diff --git a/WebCore/css/CSSTimingFunctionValue.h b/WebCore/css/CSSTimingFunctionValue.h

&gt; +class CSSLinearTimingFunctionValue : public CSSTimingFunctionValue {
&gt; +public:

&gt; +    virtual String cssText() const;
&gt; +    
&gt; +    virtual bool isLinearTimingFunctionValue() const { return true; }

Darin would argue that these two methods should be private.

&gt; +class CSSCubicBezierTimingFunctionValue : public CSSTimingFunctionValue {

&gt; +    virtual String cssText() const;

Ditto for this.

&gt; +    
&gt; +    virtual bool isCubicBezierTimingFunctionValue() const { return true; }

Ditto for this.

&gt;  private:
&gt; -    CSSTimingFunctionValue(double x1, double y1, double x2, double y2)
&gt; -        : m_x1(x1)
&gt; -        , m_y1(y1)
&gt; -        , m_x2(x2)
&gt; -        , m_y2(y2)
&gt; +    CSSCubicBezierTimingFunctionValue(double x1, double y1, double x2, double y2)
&gt; +    : m_x1(x1)
&gt; +    , m_y1(y1)
&gt; +    , m_x2(x2)
&gt; +    , m_y2(y2)

The old indentation was correct.

&gt; +class CSSStepsTimingFunctionValue : public CSSTimingFunctionValue {
&gt; +    virtual String cssText() const;

Private?

&gt; +    virtual bool isStepsTimingFunctionValue() const { return true; }

Private.

&gt; +private:
&gt; +    CSSStepsTimingFunctionValue(int steps, bool stepAtStart)
&gt; +    : m_steps(steps)
&gt; +    , m_stepAtStart(stepAtStart)

Indent these.

&gt; diff --git a/WebCore/platform/animation/Animation.h b/WebCore/platform/animation/Animation.h

&gt; -    const TimingFunction&amp; timingFunction() const { return m_timingFunction; }
&gt; +    const PassRefPtr&lt;TimingFunction&gt; timingFunction() const { return m_timingFunction; }

This should return a raw pointer. You&apos;re not transferring ownership.

I&apos;m not convinced that TimingFunctions need to be refcounted.They can use OwnPtrs etc.

&gt; diff --git a/WebCore/platform/animation/TimingFunction.h b/WebCore/platform/animation/TimingFunction.h

&gt; +class TimingFunction : public RefCounted&lt;TimingFunction&gt; {

Again, no need to refcount here either.

&gt; +    enum TimingFunctionType {
&gt; +        LINEAR_FUNCTION, CUBIC_BEZIER_FUNCTION, STEPS_FUNCTION
&gt; +    };

We don&apos;t normally use uppercase for enums.

&gt; +    CubicBezierTimingFunction()
&gt; +        : TimingFunction(CUBIC_BEZIER_FUNCTION)
&gt; +        , m_x1(0.25)
&gt; +        , m_y1(0.1)
&gt; +        , m_x2(0.25)
&gt; +        , m_y2(1.0)
&gt; +    {
&gt; +    }
&gt; +
&gt; +    CubicBezierTimingFunction(double x1, double y1, double x2, double y2)
&gt; +        : TimingFunction(CUBIC_BEZIER_FUNCTION)
&gt; +        , m_x1(x1)
&gt; +        , m_y1(y1)
&gt; +        , m_x2(x2)
&gt; +        , m_y2(y2)
&gt; +    {
&gt; +    }

You could just provide default arguments and have a single ctor. It bugs me that the magic numbers are here and in the CSS code. I wonder if the CSS/style timing fucntions sbould just wrap these?

&gt; +    static const StepsTimingFunction* cast(const TimingFunction* timingFunction)
&gt; +    {
&gt; +        return timingFunction-&gt;isStepsTimingFunction()
&gt; +            ? static_cast&lt;const StepsTimingFunction*&gt;(timingFunction)
&gt; +            : 0;
&gt; +    }

This is a bit weird.We do stuff like this with toRenderBox etc, so maybe toStepsTimingFunction()?

&gt; diff --git a/WebCore/platform/graphics/GraphicsLayer.h b/WebCore/platform/graphics/GraphicsLayer.h

&gt;  class AnimationValue : public Noncopyable {
&gt;  public:
&gt; -    AnimationValue(float keyTime, const TimingFunction* timingFunction = 0)
&gt; +    AnimationValue(float keyTime, PassRefPtr&lt;TimingFunction&gt; timingFunction = 0)
&gt;          : m_keyTime(keyTime)
&gt;      {
&gt;          if (timingFunction)
&gt; -            m_timingFunction = adoptPtr(new TimingFunction(*timingFunction));
&gt; +            m_timingFunction = timingFunction;

If timing functions are now RefCounted, then you could use OwnPtr/PassOwnPtr here.

&gt; -static CAMediaTimingFunction* getCAMediaTimingFunction(const TimingFunction&amp; timingFunction)
&gt; +static CAMediaTimingFunction* getCAMediaTimingFunction(const TimingFunction* timingFunction)

&gt; +    // By this point, timing functions can only be linear or cubic, not steps.

Add assertion?

&gt; +    if (timingFunction-&gt;isCubicBezierTimingFunction()) {
&gt; +        const CubicBezierTimingFunction* ctf = static_cast&lt;const CubicBezierTimingFunction*&gt;(timingFunction);
&gt; +        return [CAMediaTimingFunction functionWithControlPoints:static_cast&lt;float&gt;(ctf-&gt;x1()) :static_cast&lt;float&gt;(ctf-&gt;y1())
&gt; +                                                               :static_cast&lt;float&gt;(ctf-&gt;x2()) :static_cast&lt;float&gt;(ctf-&gt;y2())];
&gt; +    } else
&gt; +        return [CAMediaTimingFunction functionWithName:@&quot;linear&quot;];

&gt; diff --git a/WebCore/rendering/RenderLayerBacking.cpp b/WebCore/rendering/RenderLayerBacking.cpp

&gt;          // get timing function
&gt; -        const TimingFunction* tf = keyframeStyle-&gt;hasAnimations() ? &amp;((*keyframeStyle-&gt;animations()).animation(0)-&gt;timingFunction()) : 0;
&gt; +        RefPtr&lt;TimingFunction&gt; tf = keyframeStyle-&gt;hasAnimations() ? (*keyframeStyle-&gt;animations()).animation(0)-&gt;timingFunction() : 0;

Do you really need a RefPtr here? You can use a bare pointer I think.

&gt; -        if (currentKeyframe.containsProperty(AnimatedPropertyWebkitTransform))
&gt; +        if (currentKeyframe.containsProperty(CSSPropertyWebkitTransform))
&gt;              transformVector.insert(new TransformAnimationValue(key, &amp;(keyframeStyle-&gt;transform()), tf));
&gt;          
&gt; -        if (currentKeyframe.containsProperty(AnimatedPropertyOpacity))
&gt; +        if (currentKeyframe.containsProperty(CSSPropertyOpacity))
&gt;              opacityVector.insert(new FloatAnimationValue(key, keyframeStyle-&gt;opacity(), tf));

These changes are in TOT already, as you mention.

r- for bad use of PassRefPtr in style code, possibly missing linear block, and consideration of making TimingFunction not refcounted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276056</commentid>
    <comment_count>4</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-09-08 14:11:37 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; 
&gt; &gt; @@ -6079,7 +6085,13 @@ void CSSStyleSelector::mapAnimationTimingFunction(Animation* animation, CSSValue
&gt; &gt;      
&gt; &gt;      if (value-&gt;isTimingFunctionValue()) {
&gt; &gt;          CSSTimingFunctionValue* timingFunction = static_cast&lt;CSSTimingFunctionValue*&gt;(value);
&gt; &gt; -        animation-&gt;setTimingFunction(TimingFunction(CubicBezierTimingFunction, timingFunction-&gt;x1(), timingFunction-&gt;y1(), timingFunction-&gt;x2(), timingFunction-&gt;y2()));
&gt; &gt; +        if (timingFunction-&gt;isCubicBezierTimingFunctionValue()) {
&gt; &gt; +            CSSCubicBezierTimingFunctionValue* cubicTimingFunction = static_cast&lt;CSSCubicBezierTimingFunctionValue*&gt;(value);
&gt; &gt; +            animation-&gt;setTimingFunction(CubicBezierTimingFunction::create(cubicTimingFunction-&gt;x1(), cubicTimingFunction-&gt;y1(), cubicTimingFunction-&gt;x2(), cubicTimingFunction-&gt;y2()));
&gt; &gt; +        } else if (timingFunction-&gt;isStepsTimingFunctionValue()) {
&gt; &gt; +            CSSStepsTimingFunctionValue* stepsTimingFunction = static_cast&lt;CSSStepsTimingFunctionValue*&gt;(value);
&gt; &gt; +            animation-&gt;setTimingFunction(StepsTimingFunction::create(stepsTimingFunction-&gt;numberOfSteps(), stepsTimingFunction-&gt;stepAtStart()));
&gt; &gt; +        }
&gt; 
&gt; Why aren&apos;t linear timing functions handled here?

Because the only way to get a linear function is via the keyword &quot;linear&quot; which is handled right above.

&gt; 
&gt; 
&gt; &gt; diff --git a/WebCore/css/CSSTimingFunctionValue.cpp b/WebCore/css/CSSTimingFunctionValue.cpp
&gt; 
&gt; &gt; +String CSSLinearTimingFunctionValue::cssText() const
&gt; &gt; +{
&gt; &gt; +    String text(&quot;linear&quot;);
&gt; &gt; +    return text;
&gt; 
&gt; return &quot;linear&quot; would work.

done.

&gt; 
&gt; &gt; diff --git a/WebCore/css/CSSTimingFunctionValue.h b/WebCore/css/CSSTimingFunctionValue.h
&gt; 
&gt; &gt; +class CSSLinearTimingFunctionValue : public CSSTimingFunctionValue {
&gt; &gt; +public:
&gt; 
&gt; &gt; +    virtual String cssText() const;
&gt; &gt; +    
&gt; &gt; +    virtual bool isLinearTimingFunctionValue() const { return true; }
&gt; 
&gt; Darin would argue that these two methods should be private.

done... and for the other cases you mentioned.

&gt; &gt;  private:
&gt; &gt; -    CSSTimingFunctionValue(double x1, double y1, double x2, double y2)
&gt; &gt; -        : m_x1(x1)
&gt; &gt; -        , m_y1(y1)
&gt; &gt; -        , m_x2(x2)
&gt; &gt; -        , m_y2(y2)
&gt; &gt; +    CSSCubicBezierTimingFunctionValue(double x1, double y1, double x2, double y2)
&gt; &gt; +    : m_x1(x1)
&gt; &gt; +    , m_y1(y1)
&gt; &gt; +    , m_x2(x2)
&gt; &gt; +    , m_y2(y2)
&gt; 
&gt; The old indentation was correct.

Fixed.

&gt; &gt; +private:
&gt; &gt; +    CSSStepsTimingFunctionValue(int steps, bool stepAtStart)
&gt; &gt; +    : m_steps(steps)
&gt; &gt; +    , m_stepAtStart(stepAtStart)
&gt; 
&gt; Indent these.

Fixed.

&gt; 
&gt; &gt; diff --git a/WebCore/platform/animation/Animation.h b/WebCore/platform/animation/Animation.h
&gt; 
&gt; &gt; -    const TimingFunction&amp; timingFunction() const { return m_timingFunction; }
&gt; &gt; +    const PassRefPtr&lt;TimingFunction&gt; timingFunction() const { return m_timingFunction; }
&gt; 
&gt; This should return a raw pointer. You&apos;re not transferring ownership.

We do make a copy in RenderLayerBacking::startAnimation when creating an AnimationValue.

&gt; I&apos;m not convinced that TimingFunctions need to be refcounted.They can use OwnPtrs etc.

After discussion on IRC, we came back to refcounted. 

&gt; &gt; +    enum TimingFunctionType {
&gt; &gt; +        LINEAR_FUNCTION, CUBIC_BEZIER_FUNCTION, STEPS_FUNCTION
&gt; &gt; +    };
&gt; 
&gt; We don&apos;t normally use uppercase for enums.

Fixed.

&gt; 
&gt; &gt; +    CubicBezierTimingFunction()
&gt; &gt; +        : TimingFunction(CUBIC_BEZIER_FUNCTION)
&gt; &gt; +        , m_x1(0.25)
&gt; &gt; +        , m_y1(0.1)
&gt; &gt; +        , m_x2(0.25)
&gt; &gt; +        , m_y2(1.0)
&gt; &gt; +    {
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    CubicBezierTimingFunction(double x1, double y1, double x2, double y2)
&gt; &gt; +        : TimingFunction(CUBIC_BEZIER_FUNCTION)
&gt; &gt; +        , m_x1(x1)
&gt; &gt; +        , m_y1(y1)
&gt; &gt; +        , m_x2(x2)
&gt; &gt; +        , m_y2(y2)
&gt; &gt; +    {
&gt; &gt; +    }
&gt; 
&gt; You could just provide default arguments and have a single ctor. It bugs me that the magic numbers are here and in the CSS code. I wonder if the CSS/style timing fucntions sbould just wrap these?

There is only one copy of the numbers, but you&apos;re right in that some of them are in the style code. The problem is that initialTimingFunction also needs to create a default version, so it would have to be in two places again. Maybe we should make createEaseIn() type methods, so the code is always here?

Anyway, for this I removed the empty constructor and added default values to the create(x1, y1, x2, y2) call.

&gt; 
&gt; &gt; +    static const StepsTimingFunction* cast(const TimingFunction* timingFunction)
&gt; &gt; +    {
&gt; &gt; +        return timingFunction-&gt;isStepsTimingFunction()
&gt; &gt; +            ? static_cast&lt;const StepsTimingFunction*&gt;(timingFunction)
&gt; &gt; +            : 0;
&gt; &gt; +    }
&gt; 
&gt; This is a bit weird.We do stuff like this with toRenderBox etc, so maybe toStepsTimingFunction()?

I copied this approach from somewhere else, but it turns out it isn&apos;t really needed. The only client for cast() was the operator== so I simply moved the code in there.

&gt; 
&gt; &gt; -static CAMediaTimingFunction* getCAMediaTimingFunction(const TimingFunction&amp; timingFunction)
&gt; &gt; +static CAMediaTimingFunction* getCAMediaTimingFunction(const TimingFunction* timingFunction)
&gt; 
&gt; &gt; +    // By this point, timing functions can only be linear or cubic, not steps.
&gt; 
&gt; Add assertion?

Done

&gt; 
&gt; &gt; diff --git a/WebCore/rendering/RenderLayerBacking.cpp b/WebCore/rendering/RenderLayerBacking.cpp
&gt; 
&gt; &gt;          // get timing function
&gt; &gt; -        const TimingFunction* tf = keyframeStyle-&gt;hasAnimations() ? &amp;((*keyframeStyle-&gt;animations()).animation(0)-&gt;timingFunction()) : 0;
&gt; &gt; +        RefPtr&lt;TimingFunction&gt; tf = keyframeStyle-&gt;hasAnimations() ? (*keyframeStyle-&gt;animations()).animation(0)-&gt;timingFunction() : 0;
&gt; 
&gt; Do you really need a RefPtr here? You can use a bare pointer I think.

The problem was that AnimationValue makes a copy of this timing function. Now that TimingFunction is a base class, it can&apos;t easily clone, so making another reference is ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276062</commentid>
    <comment_count>5</comment_count>
      <attachid>66941</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-09-08 14:17:37 -0700</bug_when>
    <thetext>Created attachment 66941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276064</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-08 14:20:25 -0700</bug_when>
    <thetext>Attachment 66941 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/platform/animation/Animation.cpp:114:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 1 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276081</commentid>
    <comment_count>7</comment_count>
      <attachid>66943</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-09-08 14:42:16 -0700</bug_when>
    <thetext>Created attachment 66943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276084</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-08 14:47:56 -0700</bug_when>
    <thetext>Attachment 66943 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/platform/animation/Animation.cpp:114:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 1 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276088</commentid>
    <comment_count>9</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-09-08 14:50:58 -0700</bug_when>
    <thetext>Attachment 66941 did not build on qt:
Build output: http://queues.webkit.org/results/3923288</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276090</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-08 14:53:17 -0700</bug_when>
    <thetext>Attachment 66941 did not build on mac:
Build output: http://queues.webkit.org/results/3937320</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276119</commentid>
    <comment_count>11</comment_count>
      <attachid>66950</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-09-08 15:35:22 -0700</bug_when>
    <thetext>Created attachment 66950
Patch

Testing build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276149</commentid>
    <comment_count>12</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-09-08 16:07:02 -0700</bug_when>
    <thetext>Committed. Fingers crossed I didn&apos;t break QT.

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	M	LayoutTests/animations/animation-shorthand.html
	M	LayoutTests/animations/computed-style-expected.txt
	M	LayoutTests/animations/computed-style.html
	M	LayoutTests/animations/fill-unset-properties.html
	A	LayoutTests/animations/timing-functions-expected.txt
	A	LayoutTests/animations/timing-functions.html
	M	LayoutTests/transitions/inherit-other-props-expected.txt
	M	LayoutTests/transitions/inherit-other-props.html
	A	LayoutTests/transitions/steps-timing-function-expected.txt
	A	LayoutTests/transitions/steps-timing-function.html
	M	WebCore/ChangeLog
	M	WebCore/css/CSSComputedStyleDeclaration.cpp
	M	WebCore/css/CSSParser.cpp
	M	WebCore/css/CSSParser.h
	M	WebCore/css/CSSStyleSelector.cpp
	M	WebCore/css/CSSTimingFunctionValue.cpp
	M	WebCore/css/CSSTimingFunctionValue.h
	M	WebCore/css/CSSValueKeywords.in
	M	WebCore/page/animation/AnimationBase.cpp
	M	WebCore/page/animation/KeyframeAnimation.cpp
	M	WebCore/platform/animation/Animation.cpp
	M	WebCore/platform/animation/Animation.h
	M	WebCore/platform/animation/TimingFunction.h
	M	WebCore/platform/graphics/GraphicsLayer.h
	M	WebCore/platform/graphics/mac/GraphicsLayerCA.mm
	M	WebCore/platform/graphics/qt/GraphicsLayerQt.cpp
	M	WebCore/rendering/RenderLayerBacking.cpp
	M	WebCore/rendering/style/RenderStyleConstants.h
Committed r67032</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276150</commentid>
    <comment_count>13</comment_count>
      <attachid>66950</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-09-08 16:07:53 -0700</bug_when>
    <thetext>Comment on attachment 66950
Patch

r=smfr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276151</commentid>
    <comment_count>14</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-09-08 16:08:50 -0700</bug_when>
    <thetext>Attachment 66950 did not build on qt:
Build output: http://queues.webkit.org/results/3955288</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276153</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-08 16:12:57 -0700</bug_when>
    <thetext>Attachment 66950 did not build on mac:
Build output: http://queues.webkit.org/results/3973271</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276154</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-08 16:16:48 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67032 might have broken Qt Linux Release minimal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276194</commentid>
    <comment_count>17</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-09-08 17:10:02 -0700</bug_when>
    <thetext>two subsequent build fix commits</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66880</attachid>
            <date>2010-09-08 04:44:18 -0700</date>
            <delta_ts>2010-09-08 14:17:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44541-20100908214416.patch</filename>
            <type>text/plain</type>
            <size>61068</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhODc3ODcwNjkwMmJhYmQwMWM3YzRlYTEzMDJmZWZkOWY2MTkzZGMxLi45ZDRmNjI4
MjU5NjAzMzE0YzhkZTM3OTNhMGYwZjQ4NmVhMTk5YTRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMTAtMDktMDggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBzdGVwcygpIHRp
bWluZyBmdW5jdGlvbiBmb3IgYW5pbWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ1NDEKKworICAgICAgICAqIHRyYW5zaXRpb25zL3N0ZXBz
LXRpbWluZy1mdW5jdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRyYW5zaXRp
b25zL3N0ZXBzLXRpbWluZy1mdW5jdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRp
b25zL3RpbWluZy1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhbmlt
YXRpb25zL3RpbWluZy1mdW5jdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICAgICAtIE5ldyB0
ZXN0cyB0aGF0IGV4ZXJjaXNlIHN0ZXBzIGluIGFuaW1hdGlvbnMKKyAgICAgICAgICAgICAgYW5k
IHRyYW5zaXRpb25zLCBpbiBzb2Z0d2FyZSBhbmQgaGFyZHdhcmUKKworICAgICAgICAqIGFuaW1h
dGlvbnMvY29tcHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFuaW1hdGlvbnMv
Y29tcHV0ZWQtc3R5bGUuaHRtbDoKKyAgICAgICAgKiBhbmltYXRpb25zL2FuaW1hdGlvbi1zaG9y
dGhhbmQuaHRtbDoKKyAgICAgICAgKiBhbmltYXRpb25zL2ZpbGwtdW5zZXQtcHJvcGVydGllcy5o
dG1sOgorICAgICAgICAqIHRyYW5zaXRpb25zL2luaGVyaXQtb3RoZXItcHJvcHMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHRyYW5zaXRpb25zL2luaGVyaXQtb3RoZXItcHJvcHMuaHRtbDoKKyAg
ICAgICAgICAgIC0gQ2hhbmdlIGV4aXN0aW5nIHRlc3RzIHRvIHVzZSAnbGluZWFyJyBjb21wdXRl
ZAorICAgICAgICAgICAgICBzdHlsZSB3aGVyZSBuZWNlc3NhcnkKKwogMjAxMC0wOS0wNyAgRGFu
IEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmUg
SHlhdHQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1zaG9y
dGhhbmQuaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLXNob3J0aGFuZC5o
dG1sCmluZGV4IGFkZjM3MTkyNjQzMjVhMTI3NmI2NjEzNGZlM2Q0YWFjMDYwYTRiYzcuLmU4ZmJk
ZjhhZmFkYWFkNjIzMzUxN2U4MjdhZDViMjk5NjNlNjZiMjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLXNob3J0aGFuZC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2FuaW1hdGlvbnMvYW5pbWF0aW9uLXNob3J0aGFuZC5odG1sCkBAIC01NywxMyArNTcsMTMgQEAK
ICAgICAgIHsgaWQ6ICdhJywgIHZhbHVlczogWyAibm9uZSIsICIwcyIsICJjdWJpYy1iZXppZXIo
MC4yNSwgMC4xLCAwLjI1LCAxKSIsICIwcyIsICIxIiwgIm5vcm1hbCIsICJub25lIiBdIH0sCiAg
ICAgICB7IGlkOiAnYicsICB2YWx1ZXM6IFsgIm5vbmUiLCAiMHMiLCAiY3ViaWMtYmV6aWVyKDAu
MjUsIDAuMSwgMC4yNSwgMSkiLCAiMHMiLCAiMSIsICJub3JtYWwiLCAibm9uZSIgXSB9LAogICAg
ICAgeyBpZDogJ2MnLCAgdmFsdWVzOiBbICJhbmltMSIsICIxMHMiLCAiY3ViaWMtYmV6aWVyKDAu
MjUsIDAuMSwgMC4yNSwgMSkiLCAiMHMiLCAiMSIsICJub3JtYWwiLCAibm9uZSIgXSB9LAotICAg
ICAgeyBpZDogJ2QnLCAgdmFsdWVzOiBbICJhbmltMSIsICIxMHMiLCAiY3ViaWMtYmV6aWVyKDAs
IDAsIDEsIDEpIiwgIjBzIiwgIjEiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKLSAgICAgIHsgaWQ6
ICdlJywgIHZhbHVlczogWyAiYW5pbTEiLCAiMTBzIiwgImN1YmljLWJlemllcigwLCAwLCAxLCAx
KSIsICI1cyIsICIxIiwgIm5vcm1hbCIsICJub25lIiBdIH0sCi0gICAgICB7IGlkOiAnZicsICB2
YWx1ZXM6IFsgImFuaW0xIiwgIjEwcyIsICJjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSkiLCAiNXMi
LCAiMyIsICJub3JtYWwiLCAibm9uZSIgXSB9LAotICAgICAgeyBpZDogJ2cnLCAgdmFsdWVzOiBb
ICJhbmltMSIsICIxMHMiLCAiY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpIiwgIjVzIiwgImluZmlu
aXRlIiwgImFsdGVybmF0ZSIsICJub25lIiBdIH0sCi0gICAgICB7IGlkOiAnaCcsICB2YWx1ZXM6
IFsgImFuaW0xIiwgIjEwcyIsICJjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSkiLCAiNXMiLCAiaW5m
aW5pdGUiLCAiYWx0ZXJuYXRlIiwgImZvcndhcmRzIiBdIH0sCi0gICAgICB7IGlkOiAnaScsICB2
YWx1ZXM6IFsgImFuaW0xIiwgIjEwcyIsICJjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSkiLCAiMHMi
LCAiMSIsICJub3JtYWwiLCAibm9uZSIgXSB9LAotICAgICAgeyBpZDogJ2onLCAgdmFsdWVzOiBb
ICJhbmltMSwgYW5pbTIsIGFuaW0zIiwgIjEwcywgM3MsIDVzIiwgImN1YmljLWJlemllcigwLCAw
LCAxLCAxKSwgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSksIGN1YmljLWJlemllcigw
LjI1LCAwLjEsIDAuMjUsIDEpIiwgIjBzLCAwcywgMHMiLCAiaW5maW5pdGUsIDEsIDEiLCAibm9y
bWFsLCBub3JtYWwsIG5vcm1hbCIsICJiYWNrd2FyZHMsIG5vbmUsIGJvdGgiIF0gfQorICAgICAg
eyBpZDogJ2QnLCAgdmFsdWVzOiBbICJhbmltMSIsICIxMHMiLCAibGluZWFyIiwgIjBzIiwgIjEi
LCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKKyAgICAgIHsgaWQ6ICdlJywgIHZhbHVlczogWyAiYW5p
bTEiLCAiMTBzIiwgImxpbmVhciIsICI1cyIsICIxIiwgIm5vcm1hbCIsICJub25lIiBdIH0sCisg
ICAgICB7IGlkOiAnZicsICB2YWx1ZXM6IFsgImFuaW0xIiwgIjEwcyIsICJsaW5lYXIiLCAiNXMi
LCAiMyIsICJub3JtYWwiLCAibm9uZSIgXSB9LAorICAgICAgeyBpZDogJ2cnLCAgdmFsdWVzOiBb
ICJhbmltMSIsICIxMHMiLCAibGluZWFyIiwgIjVzIiwgImluZmluaXRlIiwgImFsdGVybmF0ZSIs
ICJub25lIiBdIH0sCisgICAgICB7IGlkOiAnaCcsICB2YWx1ZXM6IFsgImFuaW0xIiwgIjEwcyIs
ICJsaW5lYXIiLCAiNXMiLCAiaW5maW5pdGUiLCAiYWx0ZXJuYXRlIiwgImZvcndhcmRzIiBdIH0s
CisgICAgICB7IGlkOiAnaScsICB2YWx1ZXM6IFsgImFuaW0xIiwgIjEwcyIsICJsaW5lYXIiLCAi
MHMiLCAiMSIsICJub3JtYWwiLCAibm9uZSIgXSB9LAorICAgICAgeyBpZDogJ2onLCAgdmFsdWVz
OiBbICJhbmltMSwgYW5pbTIsIGFuaW0zIiwgIjEwcywgM3MsIDVzIiwgImxpbmVhciwgY3ViaWMt
YmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSksIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUs
IDEpIiwgIjBzLCAwcywgMHMiLCAiaW5maW5pdGUsIDEsIDEiLCAibm9ybWFsLCBub3JtYWwsIG5v
cm1hbCIsICJiYWNrd2FyZHMsIG5vbmUsIGJvdGgiIF0gfQogICAgIF07CiAgICAgCiAgICAgZnVu
Y3Rpb24gc3RhcnQoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jb21wdXRl
ZC1zdHlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2NvbXB1dGVkLXN0
eWxlLWV4cGVjdGVkLnR4dAppbmRleCA2OGIwOTIxMmY0MzYzNjI0ZDUwYTAyOTkyYTJiYzljMDQ5
MjI4ZGNlLi44YWNjNTIwNDUzN2E3NGNmNGEwNWYyNDMxNjI2OTI3ODU1MGIzMzRmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2NvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2NvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dApA
QCAtNSwxNCArNSwxNiBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiBQQVNTIHRlc3QxU3R5
bGUud2Via2l0QW5pbWF0aW9uTmFtZSBpcyAnYW5pbTEnCiBQQVNTIHRlc3QyU3R5bGUud2Via2l0
QW5pbWF0aW9uTmFtZSBpcyAnYW5pbTIsIGFuaW0zJworUEFTUyB0ZXN0M1N0eWxlLndlYmtpdEFu
aW1hdGlvbk5hbWUgaXMgJ2FuaW0xLCBhbmltMiwgYW5pbTMnCiBQQVNTIHRlc3QxU3R5bGUud2Vi
a2l0QW5pbWF0aW9uRHVyYXRpb24gaXMgJzEwcycKIFBBU1MgdGVzdDJTdHlsZS53ZWJraXRBbmlt
YXRpb25EdXJhdGlvbiBpcyAnNXMsIDIuNXMnCiBQQVNTIHRlc3QxU3R5bGUud2Via2l0QW5pbWF0
aW9uRmlsbE1vZGUgaXMgJ2JhY2t3YXJkcycKIFBBU1MgdGVzdDJTdHlsZS53ZWJraXRBbmltYXRp
b25GaWxsTW9kZSBpcyAnZm9yd2FyZHMsIGJvdGgnCiBQQVNTIHRlc3QxU3R5bGUud2Via2l0QW5p
bWF0aW9uSXRlcmF0aW9uQ291bnQgaXMgJzEwJwogUEFTUyB0ZXN0MlN0eWxlLndlYmtpdEFuaW1h
dGlvbkl0ZXJhdGlvbkNvdW50IGlzICcxMCwgaW5maW5pdGUnCi1QQVNTIHRlc3QxU3R5bGUud2Vi
a2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2N1YmljLWJlemllcigwLCAwLCAxLCAxKScK
LVBBU1MgdGVzdDJTdHlsZS53ZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiBpcyAnY3ViaWMt
YmV6aWVyKDAsIDAsIDEsIDEpLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSknCitQQVNT
IHRlc3QxU3R5bGUud2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2xpbmVhcicKK1BB
U1MgdGVzdDJTdHlsZS53ZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiBpcyAnbGluZWFyLCBj
dWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSknCitQQVNTIHRlc3QzU3R5bGUud2Via2l0QW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ3N0ZXBzKDEsIHN0YXJ0KSwgc3RlcHMoMSwgZW5kKSwg
c3RlcHMoNSwgZW5kKScKIFBBU1MgdGVzdDFTdHlsZS53ZWJraXRBbmltYXRpb25EaXJlY3Rpb24g
aXMgJ25vcm1hbCcKIFBBU1MgdGVzdDJTdHlsZS53ZWJraXRBbmltYXRpb25EaXJlY3Rpb24gaXMg
J25vcm1hbCwgYWx0ZXJuYXRlJwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25z
L2NvbXB1dGVkLXN0eWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2NvbXB1dGVkLXN0
eWxlLmh0bWwKaW5kZXggODljOGVlZGY0MzAzYTJjZjFmMWEzOTZiYmZhYTQ1ZWExYWRhYmY5YS4u
ZDNkODY3ODFjY2VhMjA4NDIxMzNiYWJkYzEzNzlmNTRhYWEzZDY5YiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy9jb21wdXRlZC1zdHlsZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2FuaW1hdGlvbnMvY29tcHV0ZWQtc3R5bGUuaHRtbApAQCAtMjYsNiArMjYsMTUgQEAKICAgICAg
ICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXIsIGVhc2UtaW4tb3V0
OwogICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kaXJlY3Rpb246IG5vcm1hbCwgYWx0ZXJuYXRl
OwogICAgIH0KKyAgICAjdGVzdDMgeworICAgICAgICB3aWR0aDogMjBweDsKKyAgICAgICAgaGVp
Z2h0OiAyMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgICBwb3Np
dGlvbjogcmVsYXRpdmU7CisgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGFuaW0xLCBh
bmltMiwgYW5pbTM7CisgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiA1czsKKyAg
ICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBzdGVwLXN0YXJ0LCBzdGVw
LWVuZCwgc3RlcHMoNSwgZW5kKTsKKyAgICB9CiAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0x
IHsKICAgICAgICAgZnJvbSB7IGxlZnQ6IDEwcHg7IH0KICAgICAgICAgdG8geyBsZWZ0OiAyMHB4
OyB9CkBAIC00NCw2ICs1Myw3IEBACiA8Ym9keT4KIDxwIGlkPSJ0ZXN0MSI+PC9wPgogPHAgaWQ9
InRlc3QyIj48L3A+Cis8cCBpZD0idGVzdDMiPjwvcD4KIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0PgpAQCAtNTUsOSArNjUsMTEgQEAg
dmFyIHRlc3QyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QyIik7CiAKIHZhciB0ZXN0
MVN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdDEpOwogdmFyIHRlc3QyU3R5bGUg
PSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0Mik7Cit2YXIgdGVzdDNTdHlsZSA9IHdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKHRlc3QzKTsKIAogc2hvdWxkQmUoInRlc3QxU3R5bGUud2Via2l0
QW5pbWF0aW9uTmFtZSIsICInYW5pbTEnIik7CiBzaG91bGRCZSgidGVzdDJTdHlsZS53ZWJraXRB
bmltYXRpb25OYW1lIiwgIidhbmltMiwgYW5pbTMnIik7CitzaG91bGRCZSgidGVzdDNTdHlsZS53
ZWJraXRBbmltYXRpb25OYW1lIiwgIidhbmltMSwgYW5pbTIsIGFuaW0zJyIpOwogCiBzaG91bGRC
ZSgidGVzdDFTdHlsZS53ZWJraXRBbmltYXRpb25EdXJhdGlvbiIsICInMTBzJyIpOwogc2hvdWxk
QmUoInRlc3QyU3R5bGUud2Via2l0QW5pbWF0aW9uRHVyYXRpb24iLCAiJzVzLCAyLjVzJyIpOwpA
QCAtNjgsOCArODAsOSBAQCBzaG91bGRCZSgidGVzdDJTdHlsZS53ZWJraXRBbmltYXRpb25GaWxs
TW9kZSIsICInZm9yd2FyZHMsIGJvdGgnIik7CiBzaG91bGRCZSgidGVzdDFTdHlsZS53ZWJraXRB
bmltYXRpb25JdGVyYXRpb25Db3VudCIsICInMTAnIik7CiBzaG91bGRCZSgidGVzdDJTdHlsZS53
ZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCIsICInMTAsIGluZmluaXRlJyIpOwogCi1zaG91
bGRCZSgidGVzdDFTdHlsZS53ZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiIsICInY3ViaWMt
YmV6aWVyKDAsIDAsIDEsIDEpJyIpOwotc2hvdWxkQmUoInRlc3QyU3R5bGUud2Via2l0QW5pbWF0
aW9uVGltaW5nRnVuY3Rpb24iLCAiJ2N1YmljLWJlemllcigwLCAwLCAxLCAxKSwgY3ViaWMtYmV6
aWVyKDAuNDIsIDAsIDAuNTgsIDEpJyIpOworc2hvdWxkQmUoInRlc3QxU3R5bGUud2Via2l0QW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24iLCAiJ2xpbmVhciciKTsKK3Nob3VsZEJlKCJ0ZXN0MlN0eWxl
LndlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIiwgIidsaW5lYXIsIGN1YmljLWJlemllcigw
LjQyLCAwLCAwLjU4LCAxKSciKTsKK3Nob3VsZEJlKCJ0ZXN0M1N0eWxlLndlYmtpdEFuaW1hdGlv
blRpbWluZ0Z1bmN0aW9uIiwgIidzdGVwcygxLCBzdGFydCksIHN0ZXBzKDEsIGVuZCksIHN0ZXBz
KDUsIGVuZCknIik7CiAKIHNob3VsZEJlKCJ0ZXN0MVN0eWxlLndlYmtpdEFuaW1hdGlvbkRpcmVj
dGlvbiIsICInbm9ybWFsJyIpOwogc2hvdWxkQmUoInRlc3QyU3R5bGUud2Via2l0QW5pbWF0aW9u
RGlyZWN0aW9uIiwgIidub3JtYWwsIGFsdGVybmF0ZSciKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FuaW1hdGlvbnMvZmlsbC11bnNldC1wcm9wZXJ0aWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9h
bmltYXRpb25zL2ZpbGwtdW5zZXQtcHJvcGVydGllcy5odG1sCmluZGV4IGE0OWRlY2FmNTFmZjYz
Y2U3NDIwNmY3ODY2Yzk1ZmNjNzljZjI1YjcuLjg1MDM2YzQ0Njg3OGMzMzNmYmQ4MGUwODE2YmQz
MWM2OTY5NjAzZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlsbC11bnNl
dC1wcm9wZXJ0aWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9maWxsLXVuc2V0
LXByb3BlcnRpZXMuaHRtbApAQCAtMjksNyArMjksNyBAQAogICAgICAgeyAncHJvcGVydHknOiAn
d2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uJywgJ3ZhbHVlJzogJzJzLCAycywgMXMsIDFzLCAycycg
fSwKICAgICAgIHsgJ3Byb3BlcnR5JzogJ3dlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eScsICd2YWx1
ZSc6ICdsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQsIG9wYWNpdHknIH0sCiAgICAgICB7ICdwcm9w
ZXJ0eSc6ICd3ZWJraXRUcmFuc2l0aW9uRGVsYXknLCAgICAndmFsdWUnOiAnNHMsIDNzLCA0cywg
M3MsIDRzJyB9LAotICAgICAgeyAncHJvcGVydHknOiAnd2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1
bmN0aW9uJywgJ3ZhbHVlJzogJ2N1YmljLWJlemllcigwLCAwLCAxLCAxKSwgY3ViaWMtYmV6aWVy
KDAsIDAsIDEsIDEpLCBjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSksIGN1YmljLWJlemllcigwLCAw
LCAxLCAxKSwgY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpJyB9LAorICAgICAgeyAncHJvcGVydHkn
OiAnd2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uJywgJ3ZhbHVlJzogJ2xpbmVhciwgbGlu
ZWFyLCBsaW5lYXIsIGxpbmVhciwgbGluZWFyJyB9LAogICAgICAgeyAncHJvcGVydHknOiAnd2Vi
a2l0QW5pbWF0aW9uTmFtZScsICAgICAgJ3ZhbHVlJzogJ2EsIGIsIGMsIGQsIGUnIH0sCiAgICAg
ICB7ICdwcm9wZXJ0eSc6ICd3ZWJraXRBbmltYXRpb25EdXJhdGlvbicsICAndmFsdWUnOiAnMTBz
LCAyMHMsIDEwcywgMjBzLCAxMHMnIH0sCiAgICAgICB7ICdwcm9wZXJ0eSc6ICd3ZWJraXRBbmlt
YXRpb25EZWxheScsICAgICAndmFsdWUnOiAnMXMsIDFzLCAxcywgMXMsIDFzJyB9LApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90aW1pbmctZnVuY3Rpb25zLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdGltaW5nLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmViZDM0NzBmMDg3ZWJjMzRiYmNmYzU5NjA2MGQ1Y2RjYzEyYWE0NgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdGltaW5nLWZ1bmN0aW9ucy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNiBAQAorVGhpcyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1h
dGlvbiBvZiB0aGUgbGVmdCBwcm9wZXJ0eS4gSXQgYW5pbWF0ZXMgb3ZlciAxIHNlY29uZC4gSXQg
dGFrZXMgMyBzbmFwc2hvdHMgYW5kIGV4cGVjdHMgZWFjaCByZXN1bHQgdG8gYmUgd2l0aGluIGEg
c3BlY2lmaWVkIHJhbmdlLgorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDEiIGVsZW1l
bnQgYXQgMC4yNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTQxCitQQVNTIC0gImxlZnQiIHBy
b3BlcnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86
IDE4MAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgMC43NXMg
c2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTk2CitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAi
Ym94MiIgZWxlbWVudCBhdCAwLjI1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNDEKK1BBU1Mg
LSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gyIiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGlu
ZyBjbG9zZSB0bzogMTgwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94MiIgZWxlbWVu
dCBhdCAwLjc1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxOTYKK1BBU1MgLSAibGVmdCIgcHJv
cGVydHkgZm9yICJib3gzIiBlbGVtZW50IGF0IDAuMjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86
IDEyNQorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDMiIGVsZW1lbnQgYXQgMC41cyBz
YXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNTAKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJi
b3gzIiBlbGVtZW50IGF0IDAuNzVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE3NQorUEFTUyAt
ICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDQiIGVsZW1lbnQgYXQgMC4yNXMgc2F3IHNvbWV0aGlu
ZyBjbG9zZSB0bzogMjAwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94NCIgZWxlbWVu
dCBhdCAwLjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIwMAorUEFTUyAtICJsZWZ0IiBwcm9w
ZXJ0eSBmb3IgImJveDQiIGVsZW1lbnQgYXQgMC43NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzog
MjAwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94NSIgZWxlbWVudCBhdCAwLjI1cyBz
YXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxMDAKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJi
b3g1IiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTAwCitQQVNTIC0g
ImxlZnQiIHByb3BlcnR5IGZvciAiYm94NSIgZWxlbWVudCBhdCAwLjc1cyBzYXcgc29tZXRoaW5n
IGNsb3NlIHRvOiAxMDAKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3g2IiBlbGVtZW50
IGF0IDAuMjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEwMAorUEFTUyAtICJsZWZ0IiBwcm9w
ZXJ0eSBmb3IgImJveDYiIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAx
MzMKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3g2IiBlbGVtZW50IGF0IDAuNzVzIHNh
dyBzb21ldGhpbmcgY2xvc2UgdG86IDE2NgorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJv
eDciIGVsZW1lbnQgYXQgMC4yNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTMzCitQQVNTIC0g
ImxlZnQiIHByb3BlcnR5IGZvciAiYm94NyIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhpbmcg
Y2xvc2UgdG86IDE2NgorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDciIGVsZW1lbnQg
YXQgMC43NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjAwCitQQVNTIC0gImxlZnQiIHByb3Bl
cnR5IGZvciAiYm94OCIgZWxlbWVudCBhdCAwLjI1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAx
MDAKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3g4IiBlbGVtZW50IGF0IDAuNXMgc2F3
IHNvbWV0aGluZyBjbG9zZSB0bzogMTMzCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94
OCIgZWxlbWVudCBhdCAwLjc1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNjYKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90aW1pbmctZnVuY3Rpb25zLmh0bWwgYi9MYXlv
dXRUZXN0cy9hbmltYXRpb25zL3RpbWluZy1mdW5jdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWEz
ZTBjMGZiY2VjYzZiYTU1NzEyN2FjYTZkNGQxMGRjNmYzZDc0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90aW1pbmctZnVuY3Rpb25zLmh0bWwKQEAgLTAsMCArMSwx
MDUgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5z
aXRpb25hbC8vRU4iCisgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4K
KworPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgPHRpdGxlPlRlc3Qg
dGltaW5nIGZ1bmN0aW9uczwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9
InNjcmVlbiI+CisgICAgLmJveCB7CisgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICBs
ZWZ0OiAxMDBweDsKKyAgICAgIHRvcDogMHB4OworICAgICAgaGVpZ2h0OiA1cHg7CisgICAgICB3
aWR0aDogNXB4OworICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgIC13ZWJraXQt
YW5pbWF0aW9uLWR1cmF0aW9uOiAxczsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGFu
aW07CisgICAgfQorICAgIEAtd2Via2l0LWtleWZyYW1lcyBhbmltIHsKKyAgICAgICAgZnJvbSB7
IGxlZnQ6IDEwMHB4OyB9CisgICAgICAgIHRvICAgeyBsZWZ0OiAyMDBweDsgfQorICAgIH0KKyAg
ICAjYm94MSB7CisgICAgfQorICAgICNib3gyIHsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRp
bWluZy1mdW5jdGlvbjogZWFzZTsKKyAgICB9CisgICAgI2JveDMgeworICAgICAgLXdlYmtpdC1h
bmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7CisgICAgfQorICAgICNib3g0IHsKKyAg
ICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogc3RlcC1zdGFydDsKKyAgICB9
CisgICAgI2JveDUgeworICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBz
dGVwLWVuZDsKKyAgICB9CisgICAgI2JveDYgeworICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGlt
aW5nLWZ1bmN0aW9uOiBzdGVwcygzKTsKKyAgICB9CisgICAgI2JveDcgeworICAgICAgLXdlYmtp
dC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBzdGVwcygzLCBzdGFydCk7CisgICAgfQorICAg
ICNib3g4IHsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogc3RlcHMo
MywgZW5kKTsKKyAgICB9CisgICAgCisgIDwvc3R5bGU+CisgIDxzY3JpcHQgc3JjPSJhbmltYXRp
b24tdGVzdC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04
Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0
Zi04Ij4KKworICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gWworICAgICAgLy8gW2FuaW1hdGlv
bi1uYW1lLCB0aW1lLCBlbGVtZW50LWlkLCBwcm9wZXJ0eSwgZXhwZWN0ZWQtdmFsdWUsIHRvbGVy
YW5jZV0KKyAgICAgIFsiYW5pbSIsIDAuMjUsICJib3gxIiwgImxlZnQiLCAxNDEsIDVdLAorICAg
ICAgWyJhbmltIiwgMC41MCwgImJveDEiLCAibGVmdCIsIDE4MCwgNV0sCisgICAgICBbImFuaW0i
LCAwLjc1LCAiYm94MSIsICJsZWZ0IiwgMTk2LCA1XSwKKyAgICAgIFsiYW5pbSIsIDAuMjUsICJi
b3gyIiwgImxlZnQiLCAxNDEsIDVdLAorICAgICAgWyJhbmltIiwgMC41MCwgImJveDIiLCAibGVm
dCIsIDE4MCwgNV0sCisgICAgICBbImFuaW0iLCAwLjc1LCAiYm94MiIsICJsZWZ0IiwgMTk2LCA1
XSwKKyAgICAgIFsiYW5pbSIsIDAuMjUsICJib3gzIiwgImxlZnQiLCAxMjUsIDVdLAorICAgICAg
WyJhbmltIiwgMC41MCwgImJveDMiLCAibGVmdCIsIDE1MCwgNV0sCisgICAgICBbImFuaW0iLCAw
Ljc1LCAiYm94MyIsICJsZWZ0IiwgMTc1LCA1XSwKKyAgICAgIFsiYW5pbSIsIDAuMjUsICJib3g0
IiwgImxlZnQiLCAyMDAsIDVdLAorICAgICAgWyJhbmltIiwgMC41MCwgImJveDQiLCAibGVmdCIs
IDIwMCwgNV0sCisgICAgICBbImFuaW0iLCAwLjc1LCAiYm94NCIsICJsZWZ0IiwgMjAwLCA1XSwK
KyAgICAgIFsiYW5pbSIsIDAuMjUsICJib3g1IiwgImxlZnQiLCAxMDAsIDVdLAorICAgICAgWyJh
bmltIiwgMC41MCwgImJveDUiLCAibGVmdCIsIDEwMCwgNV0sCisgICAgICBbImFuaW0iLCAwLjc1
LCAiYm94NSIsICJsZWZ0IiwgMTAwLCA1XSwKKyAgICAgIFsiYW5pbSIsIDAuMjUsICJib3g2Iiwg
ImxlZnQiLCAxMDAsIDVdLAorICAgICAgWyJhbmltIiwgMC41MCwgImJveDYiLCAibGVmdCIsIDEz
MywgNV0sCisgICAgICBbImFuaW0iLCAwLjc1LCAiYm94NiIsICJsZWZ0IiwgMTY2LCA1XSwKKyAg
ICAgIFsiYW5pbSIsIDAuMjUsICJib3g3IiwgImxlZnQiLCAxMzMsIDVdLAorICAgICAgWyJhbmlt
IiwgMC41MCwgImJveDciLCAibGVmdCIsIDE2NiwgNV0sCisgICAgICBbImFuaW0iLCAwLjc1LCAi
Ym94NyIsICJsZWZ0IiwgMjAwLCA1XSwKKyAgICAgIFsiYW5pbSIsIDAuMjUsICJib3g4IiwgImxl
ZnQiLCAxMDAsIDVdLAorICAgICAgWyJhbmltIiwgMC41MCwgImJveDgiLCAibGVmdCIsIDEzMywg
NV0sCisgICAgICBbImFuaW0iLCAwLjc1LCAiYm94OCIsICJsZWZ0IiwgMTY2LCA1XSwKKyAgICBd
OworICAgIAorICAgIHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMpOworICAgIAorICA8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlv
biBvZiB0aGUgbGVmdCBwcm9wZXJ0eS4gSXQgYW5pbWF0ZXMgb3ZlciAxIHNlY29uZC4KK0l0IHRh
a2VzIDMgc25hcHNob3RzIGFuZCBleHBlY3RzIGVhY2ggcmVzdWx0IHRvIGJlIHdpdGhpbiBhIHNw
ZWNpZmllZCByYW5nZS4KKzxkaXYgY2xhc3M9ImJveCIgaWQ9ImJveDEiPgorPC9kaXY+Cis8ZGl2
IGNsYXNzPSJib3giIGlkPSJib3gyIj4KKzwvZGl2PgorPGRpdiBjbGFzcz0iYm94IiBpZD0iYm94
MyI+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImJveCIgaWQ9ImJveDQiPgorPC9kaXY+Cis8ZGl2IGNs
YXNzPSJib3giIGlkPSJib3g1Ij4KKzwvZGl2PgorPGRpdiBjbGFzcz0iYm94IiBpZD0iYm94NiI+
Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImJveCIgaWQ9ImJveDciPgorPC9kaXY+Cis8ZGl2IGNsYXNz
PSJib3giIGlkPSJib3g4Ij4KKzwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij4KKzwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvaW5oZXJp
dC1vdGhlci1wcm9wcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9pbmhl
cml0LW90aGVyLXByb3BzLWV4cGVjdGVkLnR4dAppbmRleCAyOWQxYTVjMjI3ZWZjM2VhNWVjNjRh
NzYxN2E4NTFmYzIxMDk0NDIxLi4yZGRhZGJkZjU4ZThjZjdlYzhiYTZjMjU0ZWY0YmZkNDEyMGQ5
ZDEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9pbmhlcml0LW90aGVyLXBy
b3BzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9pbmhlcml0LW90
aGVyLXByb3BzLWV4cGVjdGVkLnR4dApAQCAtMywxNiArMywxNiBAQCBQQVNTIC0tIEJveCAxIGNv
bXB1dGVkIHRyYW5zaXRpb24gZHVyYXRpb246IDBzIGV4cGVjdGVkOiAwcwogUEFTUyAtLSBCb3gg
MSBjb21wdXRlZCB0cmFuc2l0aW9uIHRpbWluZyBmdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjUs
IDAuMSwgMC4yNSwgMSkgZXhwZWN0ZWQ6IGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEp
CiBQQVNTIC0tIEJveCAyIGNvbXB1dGVkIHRyYW5zaXRpb24gcHJvcGVydHk6IGxlZnQgZXhwZWN0
ZWQ6IGxlZnQKIFBBU1MgLS0gQm94IDIgY29tcHV0ZWQgdHJhbnNpdGlvbiBkdXJhdGlvbjogMnMg
ZXhwZWN0ZWQ6IDJzCi1QQVNTIC0tIEJveCAyIGNvbXB1dGVkIHRyYW5zaXRpb24gdGltaW5nIGZ1
bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSkgZXhwZWN0ZWQ6IGN1YmljLWJlemllcigw
LCAwLCAxLCAxKQorUEFTUyAtLSBCb3ggMiBjb21wdXRlZCB0cmFuc2l0aW9uIHRpbWluZyBmdW5j
dGlvbjogbGluZWFyIGV4cGVjdGVkOiBsaW5lYXIKIFBBU1MgLS0gQm94IDMgY29tcHV0ZWQgdHJh
bnNpdGlvbiBwcm9wZXJ0eTogbGVmdCBleHBlY3RlZDogbGVmdAogUEFTUyAtLSBCb3ggMyBjb21w
dXRlZCB0cmFuc2l0aW9uIGR1cmF0aW9uOiAycyBleHBlY3RlZDogMnMKLVBBU1MgLS0gQm94IDMg
Y29tcHV0ZWQgdHJhbnNpdGlvbiB0aW1pbmcgZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAx
LCAxKSBleHBlY3RlZDogY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpCitQQVNTIC0tIEJveCAzIGNv
bXB1dGVkIHRyYW5zaXRpb24gdGltaW5nIGZ1bmN0aW9uOiBsaW5lYXIgZXhwZWN0ZWQ6IGxpbmVh
cgogUEFTUyAtLSBCb3ggNCBjb21wdXRlZCB0cmFuc2l0aW9uIHByb3BlcnR5OiBsZWZ0IGV4cGVj
dGVkOiBsZWZ0CiBQQVNTIC0tIEJveCA0IGNvbXB1dGVkIHRyYW5zaXRpb24gZHVyYXRpb246IDJz
IGV4cGVjdGVkOiAycwotUEFTUyAtLSBCb3ggNCBjb21wdXRlZCB0cmFuc2l0aW9uIHRpbWluZyBm
dW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpIGV4cGVjdGVkOiBjdWJpYy1iZXppZXIo
MCwgMCwgMSwgMSkKK1BBU1MgLS0gQm94IDQgY29tcHV0ZWQgdHJhbnNpdGlvbiB0aW1pbmcgZnVu
Y3Rpb246IGxpbmVhciBleHBlY3RlZDogbGluZWFyCiBQQVNTIC0tIEJveCA1IGNvbXB1dGVkIHRy
YW5zaXRpb24gcHJvcGVydHk6IGxlZnQgZXhwZWN0ZWQ6IGxlZnQKIFBBU1MgLS0gQm94IDUgY29t
cHV0ZWQgdHJhbnNpdGlvbiBkdXJhdGlvbjogMnMgZXhwZWN0ZWQ6IDJzCi1QQVNTIC0tIEJveCA1
IGNvbXB1dGVkIHRyYW5zaXRpb24gdGltaW5nIGZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwg
MSwgMSkgZXhwZWN0ZWQ6IGN1YmljLWJlemllcigwLCAwLCAxLCAxKQorUEFTUyAtLSBCb3ggNSBj
b21wdXRlZCB0cmFuc2l0aW9uIHRpbWluZyBmdW5jdGlvbjogbGluZWFyIGV4cGVjdGVkOiBsaW5l
YXIKIFBBU1MgLS0gQm94IDYgY29tcHV0ZWQgdHJhbnNpdGlvbiBwcm9wZXJ0eTogYWxsIGV4cGVj
dGVkOiBhbGwKIFBBU1MgLS0gQm94IDYgY29tcHV0ZWQgdHJhbnNpdGlvbiBkdXJhdGlvbjogMHMg
ZXhwZWN0ZWQ6IDBzCiBQQVNTIC0tIEJveCA2IGNvbXB1dGVkIHRyYW5zaXRpb24gdGltaW5nIGZ1
bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKSBleHBlY3RlZDogY3ViaWMt
YmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5z
aXRpb25zL2luaGVyaXQtb3RoZXItcHJvcHMuaHRtbCBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25z
L2luaGVyaXQtb3RoZXItcHJvcHMuaHRtbAppbmRleCBhNzVhNWI4MDc0M2ViZTRmMjY2MDc2YTg0
YTc5MWI0MjZmNTI0ODJlLi4xYTkyMWMyNDM3NjczNDEwNzhhNzQ0NmZlNTQ3NjVhNjhmMzY5YjI5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9pbmhlcml0LW90aGVyLXByb3Bz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvaW5oZXJpdC1vdGhlci1wcm9wcy5o
dG1sCkBAIC00NywxMCArNDcsMTAgQEAKIAogICAgIHZhciBrRXhwZWN0ZWRUaW1pbmdGdW5jdGlv
biA9IFsKICAgICAgICdjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKScsIC8qIGJveDEg
Ki8KLSAgICAgICdjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSknLCAvKiBib3gyICovCi0gICAgICAn
Y3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpJywgLyogYm94MyAqLwotICAgICAgJ2N1YmljLWJlemll
cigwLCAwLCAxLCAxKScsIC8qIGJveDQgKi8gLyogaW5oZXJpdHMgZnJvbSBib3gzICovCi0gICAg
ICAnY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpJywgLyogYm94NSAqLworICAgICAgJ2xpbmVhcics
IC8qIGJveDIgKi8KKyAgICAgICdsaW5lYXInLCAvKiBib3gzICovCisgICAgICAnbGluZWFyJywg
LyogYm94NCAqLyAvKiBpbmhlcml0cyBmcm9tIGJveDMgKi8KKyAgICAgICdsaW5lYXInLCAvKiBi
b3g1ICovCiAgICAgICAnY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSknLCAvKiBib3g2
ICovIC8qIGRvZXMgTk9UIGluaGVyaXQgKi8KICAgICBdOwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90cmFuc2l0aW9ucy9zdGVwcy10aW1pbmctZnVuY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdHJhbnNpdGlvbnMvc3RlcHMtdGltaW5nLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40Y2YxMTcwZDhmNzM2NWI5ZjA0Njg0ZjE0ZjM1MmE0ODk5YmRhM2JlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvc3RlcHMtdGltaW5nLWZ1bmN0
aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK1RoZSBib3ggc2hvdWxkIG1vdmUgaG9y
aXpvbnRhbGx5IDIwMHB4IG92ZXIgMXMsIGluIDMgZXF1YWwgaW5jcmVtZW50cy4KKworUEFTUyAt
ICItd2Via2l0LXRyYW5zZm9ybS40IiBwcm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBhdCAwLjI1
cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwCitQQVNTIC0gIi13ZWJraXQtdHJhbnNmb3JtLjQi
IHByb3BlcnR5IGZvciAiYm94IiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0
bzogNjYKK1BBU1MgLSAiLXdlYmtpdC10cmFuc2Zvcm0uNCIgcHJvcGVydHkgZm9yICJib3giIGVs
ZW1lbnQgYXQgMC43NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTMzCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3N0ZXBzLXRpbWluZy1mdW5jdGlvbi5odG1sIGIvTGF5
b3V0VGVzdHMvdHJhbnNpdGlvbnMvc3RlcHMtdGltaW5nLWZ1bmN0aW9uLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjZmYWUzMTU5MjdjZDZmNGNlNGM1YWI2YzRmMTRjNTY1MDA0NWQyZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3N0ZXBzLXRpbWluZy1mdW5jdGlvbi5odG1s
CkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRN
TCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iCisgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQv
bG9vc2UuZHRkIj4KKworPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgIDxtZXRhIGh0dHAtZXF1
aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAg
PHRpdGxlPlRyYW5zaXRpb24gd2l0aCBzdGVwcyB0aW1pbmcgZnVuY3Rpb248L3RpdGxlPgorICA8
c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICNib3ggeworICAgICAg
aGVpZ2h0OiAxMDBweDsKKyAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgIGJhY2tncm91bmQtY29s
b3I6IGJsdWU7CisgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwcHgpOworICAg
ICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAxczsKKyAgICAgIC13ZWJraXQtdHJhbnNp
dGlvbi10aW1pbmctZnVuY3Rpb246IHN0ZXBzKDMsIGVuZCk7CisgICAgICAtd2Via2l0LXRyYW5z
aXRpb24tcHJvcGVydHk6IC13ZWJraXQtdHJhbnNmb3JtOworICAgIH0KKyAgPC9zdHlsZT4KKyAg
PHNjcmlwdCBzcmM9InRyYW5zaXRpb24tdGVzdC1oZWxwZXJzLmpzIiB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij48L3NjcmlwdD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAKKyAgICBjb25zdCBleHBlY3RlZFZhbHVl
cyA9IFsKKyAgICAgIC8vIFt0aW1lLCBlbGVtZW50LWlkLCBwcm9wZXJ0eSwgZXhwZWN0ZWQtdmFs
dWUsIHRvbGVyYW5jZV0KKyAgICAgIFswLjI1LCAiYm94IiwgIi13ZWJraXQtdHJhbnNmb3JtLjQi
LCAwLCA1XSwKKyAgICAgIFswLjUsICJib3giLCAiLXdlYmtpdC10cmFuc2Zvcm0uNCIsIDY2LCA1
XSwKKyAgICAgIFswLjc1LCAiYm94IiwgIi13ZWJraXQtdHJhbnNmb3JtLjQiLCAxMzMsIDVdLAor
ICAgIF07CisgICAgCisgICAgZnVuY3Rpb24gc2V0dXBUZXN0KCkKKyAgICB7CisgICAgICB2YXIg
Ym94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JveCcpOworICAgICAgYm94LnN0eWxlLndl
YmtpdFRyYW5zZm9ybSA9ICd0cmFuc2xhdGVYKDIwMHB4KSc7CisgICAgfQorICAgIAorICAgIHJ1
blRyYW5zaXRpb25UZXN0KGV4cGVjdGVkVmFsdWVzLCBzZXR1cFRlc3QsIHRydWUpOworICAgIAor
ICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8cD4KK1RoZSBib3ggc2hvdWxkIG1vdmUg
aG9yaXpvbnRhbGx5IDIwMHB4IG92ZXIgMXMsIGluIDMgZXF1YWwgaW5jcmVtZW50cy4KKzwvcD4K
KzxkaXYgaWQ9ImJveCI+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+Cis8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMjdiNWJhODEyYjg5Yzc0NmFiNDE2MWZjOGZmZWFlNGRlODA4OWI2ZC4uZjM1
YjQ4MDI4MTcyYTgwMzcyN2NkOTMyYWI1ODJmM2U4MWYyZTNkZiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTMgQEAKKzIw
MTAtMDktMDggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBzdGVwcygpIHRpbWlu
ZyBmdW5jdGlvbiBmb3IgYW5pbWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDQ1NDEKKworICAgICAgICBUZXN0czogYW5pbWF0aW9ucy90aW1p
bmctZnVuY3Rpb25zLmh0bWwKKyAgICAgICAgICAgICAgIHRyYW5zaXRpb25zL3N0ZXBzLXRpbWlu
Zy1mdW5jdGlvbi5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAg
ICAgICAgICAgLSB3aGVuIGNyZWF0aW5nIGNvbXB1dGVkIHN0eWxlIHdlIG5vdyB0ZXN0IHdoYXQK
KyAgICAgICAgICAgICAgdHlwZSBvZiB0aW1pbmcgZnVuY3Rpb24gaXQgYmVpbmcgdXNlZAorICAg
ICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZUN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgICAgICAtIHJlbmFt
ZSB0aGlzIG1ldGhvZCBmcm9tIHBhcnNlVGltaW5nRnVuY3Rpb25WYWx1ZQorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAg
ICAgIC0gc3VwcG9ydCBwYXJzaW5nIHRoZSBzdGVwcygpIGZ1bmN0aW9uCisgICAgICAgICogY3Nz
L0NTU1BhcnNlci5oOgorICAgICAgICAgICAgLSBtZXRob2QgcmVuYW1lCisgICAgICAgICogY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rv
cjo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pOgorICAgICAgICAgICAgLSBoYW5kbGUgJ3N0
ZXAtc3RhcnQnIGFuZCAnc3RlcC1lbmQnIGlkZW50aWZpZXJzLiBBbHNvCisgICAgICAgICAgICAg
IGNoYW5nZSB0byB1c2UgOjpjcmVhdGUgd2hlbiBjb25zdHJ1Y3Rpbmcgb2JqZWN0cworICAgICAg
ICAqIGNzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmNzc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjc3NUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgICAg
ICAtIG5ldyB0ZXh0IG91dHB1dCBmb3IgY29tcHV0ZWQgc3R5bGUuIFdlIG5vdyBwcm9kdWNlCisg
ICAgICAgICAgICAgIHRoZSB0ZXh0ICdsaW5lYXInIHdoZW4gYXBwcm9wcmlhdGUuCisgICAgICAg
ICogY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rp
bWluZ0Z1bmN0aW9uVmFsdWU6OmlzTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NUaW1pbmdGdW5jdGlvblZhbHVlOjppc0N1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUaW1pbmdGdW5jdGlvblZhbHVlOjpp
c1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUaW1pbmdG
dW5jdGlvblZhbHVlOjpDU1NUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmlzVGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZTo6aXNMaW5lYXJUaW1pbmdG
dW5jdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhclRpbWluZ0Z1bmN0aW9u
VmFsdWU6OkNTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjppc0N1YmljQmV6aWVyVGlt
aW5nRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdWJpY0JlemllclRpbWlu
Z0Z1bmN0aW9uVmFsdWU6OkNTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6Om51bWJlck9mU3RlcHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpzdGVwQXRT
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6Omlz
U3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0ZXBzVGlt
aW5nRnVuY3Rpb25WYWx1ZTo6Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAg
ICAgIC0gQ1NTVGltaW5nRnVuY3Rpb24gaXMgbm93IGEgcHVyZSB2aXJ0dWFsIHJlZi1jb3VudGVk
IGJhc2UgY2xhc3MsIHdpdGgKKyAgICAgICAgICAgICAgc3ViY2xhc3NlcyBmb3IgZWFjaCBvZiB0
aGUgdGhyZWUgc3VwcG9ydGVkIHRpbWluZyBmdW5jdGlvbnMuCisgICAgICAgICogY3NzL0NTU1Zh
bHVlS2V5d29yZHMuaW46CisgICAgICAgICAgICAtIG5ldyBrZXl3b3JkcyBzdGVwLXN0YXJ0IGFu
ZCBzdGVwLWVuZAorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c29sdmVTdGVwc0Z1bmN0aW9uKToKKyAgICAgICAgICAgIC0gcHJv
ZHVjZXMgdGhlIG91dHB1dCB2YWx1ZSBmcm9tIGEgc3RlcHBpbmcgZnVuY3Rpb24KKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OnByb2dyZXNzKToKKyAgICAgICAgICAgIC0gbm93IGhh
cyB0byBzd2l0Y2ggYmFzZWQgb24gdGltaW5nIGZ1bmN0aW9uIHR5cGUKKyAgICAgICAgKiBwYWdl
L2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlm
cmFtZUFuaW1hdGlvbjo6ZmV0Y2hJbnRlcnZhbEVuZHBvaW50c0ZvclByb3BlcnR5KToKKyAgICAg
ICAgICAgIC0gdXNlIHJlZi1jb3VudGVkIGFjY2VzcworICAgICAgICAqIHBsYXRmb3JtL2FuaW1h
dGlvbi9BbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjphbmltYXRp
b25zTWF0Y2gpOgorICAgICAgICAgICAgLSBjaGFuZ2UgdGltaW5nIGZ1bmN0aW9uIGNvbXBhcmlz
b24gZm9yIG9wZXJhdG9yPT0KKyAgICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb246OnRpbWluZ0Z1bmN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFuaW1hdGlvbjo6c2V0VGltaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6QW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pOgorICAgICAg
ICAgICAgLSBtb3ZlIHRvIHJlZi1jb3VudGVkIHRpbWluZyBmdW5jdGlvbiBjbGFzcworICAgICAg
ICAqIHBsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6VGltaW5nRnVuY3Rpb246On5UaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpU
aW1pbmdGdW5jdGlvbjo6aXNMaW5lYXJUaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpUaW1pbmdGdW5jdGlvbjo6aXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbWluZ0Z1bmN0aW9uOjppc1N0ZXBzVGltaW5nRnVuY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6VGltaW5nRnVuY3Rpb246OlRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkxpbmVhclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TGluZWFyVGltaW5nRnVuY3Rpb246On5MaW5lYXJUaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpMaW5lYXJUaW1pbmdGdW5jdGlvbjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJD
b3JlOjpMaW5lYXJUaW1pbmdGdW5jdGlvbjo6TGluZWFyVGltaW5nRnVuY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNhc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6fkN1YmljQmV6aWVyVGltaW5nRnVuY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBzVGltaW5nRnVu
Y3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjpj
YXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBzVGltaW5nRnVuY3Rpb246On5TdGVwc1RpbWlu
Z0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBzVGltaW5nRnVuY3Rpb246Om9wZXJh
dG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6U3RlcHNUaW1pbmdGdW5jdGlvbjo6bnVtYmVyT2ZT
dGVwcyk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjpzdGVwQXRTdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVwc1RpbWluZ0Z1
bmN0aW9uKToKKyAgICAgICAgICAgIC0gVGltaW5nRnVuY3Rpb24gaXMgbm93IGEgcmVmLWNvdW50
ZWQgcHVyZSB2aXJ0dWFsIGJhc2UgY2xhc3MsCisgICAgICAgICAgICAgIHdpdGggdGhyZWUgc3Vi
Y2xhc3NlcyByZXByZXNlbnRpbmcgdGhlIHR5cGVzIG9mIHRpbWluZyBmdW5jdGlvbnMKKyAgICAg
ICAgICAgICAgdGhhdCBhcmUgc3VwcG9ydGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblZhbHVlOjpBbmlt
YXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZhbHVlOjpGbG9h
dEFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFuaW1hdGlvblZh
bHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSk6CisgICAgICAgICAgICAtIHVzZSBQYXNzUmVm
UHRyIGluIGZ1bmN0aW9uIHBhcmFtZXRlcnMKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvR3JhcGhpY3NMYXllckNBLm1tOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q0FNZWRpYVRpbWlu
Z0Z1bmN0aW9uKToKKyAgICAgICAgICAgIC0gdXBkYXRlIGZvciBuZXcgdGltaW5nIGZ1bmN0aW9u
IGludGVyZmFjZQorICAgICAgICAoV2ViQ29yZTo6YW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5j
dGlvbik6CisgICAgICAgICAgICAtIG5ldyBtZXRob2QgdG8gbWFrZSBzdXJlIGFuaW1hdGlvbnMg
d2l0aCBzdGVwcygpIGZ1bmN0aW9ucworICAgICAgICAgICAgICBuZXZlciB0cnkgdG8gZXhlY3V0
ZSBpbiBDb3JlIEFuaW1hdGlvbgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjph
ZGRBbmltYXRpb24pOgorICAgICAgICAgICAgLSB0ZXN0IGZvciBzdGVwcygpIHRpbWluZyBmdW5j
dGlvbgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp0aW1pbmdGdW5jdGlvbkZv
ckFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVD
b25zdGFudHMuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIG9sZCBSZW5kZXJTdHlsZSBlbnVtIGZv
ciB0aW1pbmcgZnVuY3Rpb24gdHlwZXMKKwogMjAxMC0wOS0wNyAgRGF2aWQgSHlhdHQgIDxoeWF0
dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTVjYzA2Y2I0ZDNlZTVkNjgz
NDMzOTBjZjQ4Njc0MTk2OTllMWNlNy4uMjU5Y2NiOTY2MjM2YzU2MjY0NGNlYmY0YTdjMjNkNjJj
ZGM4YjA1MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTIwNDk1LDYgKzIwNDk1LDcgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZp
Z3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CiAJCQljb21wYXRpYmlsaXR5
VmVyc2lvbiA9ICJYY29kZSAyLjQiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwog
CQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJ
RW5nbGlzaCwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmlu
ZGV4IGIxZThhYzQwMTU0YzA0ODJlM2JlOWRlNWMwMGRjYzdlZjkxYWYyNzkuLjdkM2NkYzk1N2U3
MWJiZDEyZDFhODc4MzlmMGJmODU0ZjkwYjQ4YjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNTAxLDEzICs1MDEsMjkgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IGdldFRpbWluZ0Z1bmN0aW9uVmFsdWUoY29uc3QgQW5pbWF0aW9uTGlz
dCogYW5pbUxpc3QKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGlmIChhbmltTGlzdCkgewogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1MaXN0LT5zaXplKCk7ICsraSkgewotICAgICAgICAg
ICAgY29uc3QgVGltaW5nRnVuY3Rpb24mIHRmID0gYW5pbUxpc3QtPmFuaW1hdGlvbihpKS0+dGlt
aW5nRnVuY3Rpb24oKTsKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NUaW1pbmdGdW5jdGlv
blZhbHVlOjpjcmVhdGUodGYueDEoKSwgdGYueTEoKSwgdGYueDIoKSwgdGYueTIoKSkpOworICAg
ICAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRmID0gYW5pbUxpc3QtPmFuaW1hdGlvbihp
KS0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKKyAgICAgICAgICAgIGlmICh0Zi0+aXNDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uKiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWlu
Z0Z1bmN0aW9uKj4odGYpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShjdGYtPngxKCksIGN0Zi0+eTEoKSwgY3Rm
LT54MigpLCBjdGYtPnkyKCkpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGYtPmlzU3RlcHNU
aW1pbmdGdW5jdGlvbigpKSB7CisgICAgICAgICAgICAgICAgY29uc3QgU3RlcHNUaW1pbmdGdW5j
dGlvbiogc3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbio+KHRmKTsK
KyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVl
OjpjcmVhdGUoc3RmLT5udW1iZXJPZlN0ZXBzKCksIHN0Zi0+c3RlcEF0U3RhcnQoKSkpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTTGluZWFy
VGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTm90ZSB0aGF0IGluaXRpYWxBbmltYXRpb25UaW1p
bmdGdW5jdGlvbigpIGlzIHVzZWQgZm9yIGJvdGggdHJhbnNpdGlvbnMgYW5kIGFuaW1hdGlvbnMK
LSAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24mIHRmID0gQW5pbWF0aW9uOjppbml0aWFsQW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24oKTsKLSAgICAgICAgbGlzdC0+YXBwZW5kKENTU1RpbWluZ0Z1
bmN0aW9uVmFsdWU6OmNyZWF0ZSh0Zi54MSgpLCB0Zi55MSgpLCB0Zi54MigpLCB0Zi55MigpKSk7
CisgICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0ZiA9IEFuaW1hdGlvbjo6aW5pdGlhbEFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7CisgICAgICAgIGlmICh0Zi0+aXNDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IEN1YmljQmV6aWVyVGlt
aW5nRnVuY3Rpb24qIGN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24qPih0Zik7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTQ3ViaWNCZXppZXJUaW1p
bmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoY3RmLT54MSgpLCBjdGYtPnkxKCksIGN0Zi0+eDIoKSwg
Y3RmLT55MigpKSk7CisgICAgICAgIH0gZWxzZSBpZiAodGYtPmlzU3RlcHNUaW1pbmdGdW5jdGlv
bigpKSB7CisgICAgICAgICAgICBjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uKiBzdGYgPSBzdGF0
aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uKj4odGYpOworICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHN0Zi0+bnVtYmVy
T2ZTdGVwcygpLCBzdGYtPnN0ZXBBdFN0YXJ0KCkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUo
KSk7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKaW5kZXggNjg3MjM1Zjc5MDUzNDUxYjU4OTgwYmIxMjg5YjM2MDRjNjBmMzQ4Ni4uMGY4
ODc0MzgzM2NhYjNkMDYxMGVjM2JjNmQ2MWM4YWUzNDI3MDBmOCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0y
Nzg2LDcgKzI3ODYsNyBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2VUcmFuc2Zvcm1PcmlnaW5TaG9y
dGhhbmQoUmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUxLCBSZWZQdHI8QwogICAgICAgICBtX3ZhbHVl
TGlzdC0+bmV4dCgpOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VUaW1pbmdGdW5jdGlvblZh
bHVlKENTU1BhcnNlclZhbHVlTGlzdComIGFyZ3MsIGRvdWJsZSYgcmVzdWx0KQorYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNlclZhbHVl
TGlzdComIGFyZ3MsIGRvdWJsZSYgcmVzdWx0KQogewogICAgIENTU1BhcnNlclZhbHVlKiB2ID0g
YXJncy0+Y3VycmVudCgpOwogICAgIGlmICghdmFsaWRVbml0KHYsIEZOdW1iZXIsIG1fc3RyaWN0
KSkKQEAgLTI4MDcsMzEgKzI4MDcsNjcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVGltaW5nRnVu
Y3Rpb25WYWx1ZShDU1NQYXJzZXJWYWx1ZUxpc3QqJiBhcmdzLCBkb3VibGUmIHJlc3UKIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25UaW1pbmdGdW5jdGlvbigp
CiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsK
LSAgICBpZiAodmFsdWUtPmlkID09IENTU1ZhbHVlRWFzZSB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFs
dWVMaW5lYXIgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlRWFzZUluIHx8IHZhbHVlLT5pZCA9PSBD
U1NWYWx1ZUVhc2VPdXQgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlRWFzZUluT3V0KQorICAgIGlm
ICh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVFYXNlIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUxpbmVh
ciB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVFYXNlSW4gfHwgdmFsdWUtPmlkID09IENTU1ZhbHVl
RWFzZU91dAorICAgICAgICB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVFYXNlSW5PdXQgfHwgdmFs
dWUtPmlkID09IENTU1ZhbHVlU3RlcFN0YXJ0IHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZVN0ZXBF
bmQpCiAgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcih2
YWx1ZS0+aWQpOwogCiAgICAgLy8gV2UgbXVzdCBiZSBhIGZ1bmN0aW9uLgogICAgIGlmICh2YWx1
ZS0+dW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24pCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgLy8gVGhlIG9ubHkgdGltaW5nIGZ1bmN0aW9uIHdlIGFjY2VwdCBmb3Igbm93IGlzIGEg
Y3ViaWMgYmV6aWVyIGZ1bmN0aW9uLiAgNCBwb2ludHMgbXVzdCBiZSBzcGVjaWZpZWQuCiAgICAg
Q1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gdmFsdWUtPmZ1bmN0aW9uLT5hcmdzLmdldCgpOwot
ICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAiY3ViaWMt
YmV6aWVyKCIpIHx8ICFhcmdzIHx8IGFyZ3MtPnNpemUoKSAhPSA3KQotICAgICAgICByZXR1cm4g
MDsKIAotICAgIC8vIFRoZXJlIGFyZSB0d28gcG9pbnRzIHNwZWNpZmllZC4gIFRoZSB2YWx1ZXMg
bXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDEuCi0gICAgZG91YmxlIHgxLCB5MSwgeDIsIHkyOworICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS0+ZnVuY3Rpb24tPm5hbWUsICJzdGVwcygiKSkg
eworICAgICAgICAvLyBGb3Igc3RlcHMsIDEgb3IgMiBwYXJhbXMgbXVzdCBiZSBzcGVjaWZpZWQg
KGNvbW1hLXNlcGFyYXRlZCkKKyAgICAgICAgaWYgKCFhcmdzIHx8IChhcmdzLT5zaXplKCkgIT0g
MSAmJiBhcmdzLT5zaXplKCkgIT0gMykpCisgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgIGlm
ICghcGFyc2VUaW1pbmdGdW5jdGlvblZhbHVlKGFyZ3MsIHgxKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgaWYgKCFwYXJzZVRpbWluZ0Z1bmN0aW9uVmFsdWUoYXJncywgeTEpKQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICBpZiAoIXBhcnNlVGltaW5nRnVuY3Rpb25WYWx1ZShhcmdzLCB4MikpCi0g
ICAgICAgIHJldHVybiAwOwotICAgIGlmICghcGFyc2VUaW1pbmdGdW5jdGlvblZhbHVlKGFyZ3Ms
IHkyKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIC8vIFRoZXJlIGFyZSB0d28gdmFsdWVz
LgorICAgICAgICBpbnQgbnVtU3RlcHM7CisgICAgICAgIGJvb2wgc3RlcEF0U3RhcnQgPSBmYWxz
ZTsKIAotICAgIHJldHVybiBDU1NUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoeDEsIHkxLCB4
MiwgeTIpOworICAgICAgICBDU1NQYXJzZXJWYWx1ZSogdiA9IGFyZ3MtPmN1cnJlbnQoKTsKKyAg
ICAgICAgaWYgKCF2YWxpZFVuaXQodiwgRkludGVnZXIsIG1fc3RyaWN0KSkKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICBudW1TdGVwcyA9IHYtPmZWYWx1ZTsKKyAgICAgICAgaWYgKG51
bVN0ZXBzIDwgMSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB2ID0gYXJncy0+bmV4
dCgpOworCisgICAgICAgIGlmICh2KSB7CisgICAgICAgICAgICAvLyBUaGVyZSBpcyBhIGNvbW1h
IHNvIHdlIG5lZWQgdG8gcGFyc2UgdGhlIHNlY29uZCB2YWx1ZQorICAgICAgICAgICAgaWYgKHYt
PnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIHYtPmlWYWx1ZSAhPSAnLCcpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB2ID0gYXJncy0+bmV4dCgpOwor
ICAgICAgICAgICAgaWYgKHYtPmlkICE9IENTU1ZhbHVlU3RhcnQgJiYgdi0+aWQgIT0gQ1NTVmFs
dWVFbmQpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBzdGVwQXRTdGFy
dCA9IHYtPmlkID09IENTU1ZhbHVlU3RhcnQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUobnVtU3RlcHMsIHN0ZXBBdFN0YXJ0
KTsKKyAgICB9CisgICAgCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLT5mdW5jdGlv
bi0+bmFtZSwgImN1YmljLWJlemllcigiKSkgeworICAgICAgICAvLyBGb3IgY3ViaWMgYmV6aWVy
LCA0IHZhbHVlcyBtdXN0IGJlIHNwZWNpZmllZC4KKyAgICAgICAgaWYgKCFhcmdzIHx8IGFyZ3Mt
PnNpemUoKSAhPSA3KQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgLy8gVGhlcmUg
YXJlIHR3byBwb2ludHMgc3BlY2lmaWVkLiAgVGhlIHZhbHVlcyBtdXN0IGJlIGJldHdlZW4gMCBh
bmQgMS4KKyAgICAgICAgZG91YmxlIHgxLCB5MSwgeDIsIHkyOworCisgICAgICAgIGlmICghcGFy
c2VDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUoYXJncywgeDEpKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIGlmICghcGFyc2VDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFs
dWUoYXJncywgeTEpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmICghcGFyc2VD
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUoYXJncywgeDIpKQorICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIGlmICghcGFyc2VDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUo
YXJncywgeTIpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgcmV0dXJuIENTU0N1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHgxLCB5MSwgeDIsIHkyKTsKKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUFuaW1h
dGlvblByb3BlcnR5KGludCBwcm9wSWQsIFJlZlB0cjxDU1NWYWx1ZT4mIHJlc3VsdCkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgK
aW5kZXggNjIxMWU2MjhiOTY2NGU2N2FmYjc1YjA4YTE4MDljMDY2NzMzNjU3NC4uOTQ5NDIyY2Rl
OWUxZmZhNmVhYzBjMTJiOWJlYzcxMjI4NTlkNTE3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTEwOCw3ICsxMDgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBh
cnNlQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oKTsKIAogICAgICAgICB2b2lkIHBhcnNlVHJhbnNm
b3JtT3JpZ2luU2hvcnRoYW5kKFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+Jiwg
UmVmUHRyPENTU1ZhbHVlPiYpOwotICAgICAgICBib29sIHBhcnNlVGltaW5nRnVuY3Rpb25WYWx1
ZShDU1NQYXJzZXJWYWx1ZUxpc3QqJiBhcmdzLCBkb3VibGUmIHJlc3VsdCk7CisgICAgICAgIGJv
b2wgcGFyc2VDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUoQ1NTUGFyc2VyVmFsdWVMaXN0
KiYgYXJncywgZG91YmxlJiByZXN1bHQpOwogICAgICAgICBib29sIHBhcnNlQW5pbWF0aW9uUHJv
cGVydHkoaW50IHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiYpOwogICAgICAgICBib29sIHBhcnNl
VHJhbnNpdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCk7CiAgICAgICAgIGJvb2wgcGFyc2VB
bmltYXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAppbmRleCBkNmYwNGFhNmUyMmU1YzJmOTViMzNhNTM0YWVhOGE5ZmE1YjdhYTMwLi4yMDdkYTUw
MDM0OWVmZWE3OWE4M2VhYTg4ZjVjNDFkOTY0ZGVkMjcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcApAQCAtNjA1OSwxOSArNjA1OSwyNSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uKEFuaW1hdGlvbiogYW5pbWF0aW9uLCBDU1NWYWx1ZQogICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSkgewogICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxpbmVhcjoKLSAgICAgICAg
ICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKFRpbWluZ0Z1bmN0aW9uKExpbmVh
clRpbWluZ0Z1bmN0aW9uLCAwLjAsIDAuMCwgMS4wLCAxLjApKTsKKyAgICAgICAgICAgICAgICBh
bmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKExpbmVhclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUo
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRWFz
ZToKLSAgICAgICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKFRpbWluZ0Z1
bmN0aW9uKCkpOworICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24o
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUVhc2VJbjoKLSAgICAgICAgICAgICAgICBh
bmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6aWVyVGlt
aW5nRnVuY3Rpb24sIDAuNDIsIDAuMCwgMS4wLCAxLjApKTsKKyAgICAgICAgICAgICAgICBhbmlt
YXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0
ZSgwLjQyLCAwLjAsIDEuMCwgMS4wKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlRWFzZU91dDoKLSAgICAgICAgICAgICAgICBhbmltYXRpb24tPnNl
dFRpbWluZ0Z1bmN0aW9uKFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24s
IDAuMCwgMC4wLCAwLjU4LCAxLjApKTsKKyAgICAgICAgICAgICAgICBhbmltYXRpb24tPnNldFRp
bWluZ0Z1bmN0aW9uKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgwLjAsIDAuMCwg
MC41OCwgMS4wKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlRWFzZUluT3V0OgotICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVu
Y3Rpb24oVGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiwgMC40MiwgMC4w
LCAwLjU4LCAxLjApKTsKKyAgICAgICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0
aW9uKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgwLjQyLCAwLjAsIDAuNTgsIDEu
MCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVN0
ZXBTdGFydDoKKyAgICAgICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKFN0
ZXBzVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgxLCB0cnVlKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3RlcEVuZDoKKyAgICAgICAgICAgICAgICBh
bmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKFN0ZXBzVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgx
LCBmYWxzZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybjsKQEAgLTYwNzksNyArNjA4NSwxMyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uKEFuaW1hdGlvbiogYW5pbWF0aW9uLCBDU1NWYWx1ZQogICAg
IAogICAgIGlmICh2YWx1ZS0+aXNUaW1pbmdGdW5jdGlvblZhbHVlKCkpIHsKICAgICAgICAgQ1NT
VGltaW5nRnVuY3Rpb25WYWx1ZSogdGltaW5nRnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxDU1NUaW1p
bmdGdW5jdGlvblZhbHVlKj4odmFsdWUpOwotICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1
bmN0aW9uKFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24sIHRpbWluZ0Z1
bmN0aW9uLT54MSgpLCB0aW1pbmdGdW5jdGlvbi0+eTEoKSwgdGltaW5nRnVuY3Rpb24tPngyKCks
IHRpbWluZ0Z1bmN0aW9uLT55MigpKSk7CisgICAgICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXND
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUoKSkgeworICAgICAgICAgICAgQ1NTQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKiBjdWJpY1RpbWluZ0Z1bmN0aW9uID0gc3RhdGljX2Nh
c3Q8Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKj4odmFsdWUpOworICAgICAgICAg
ICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
OjpjcmVhdGUoY3ViaWNUaW1pbmdGdW5jdGlvbi0+eDEoKSwgY3ViaWNUaW1pbmdGdW5jdGlvbi0+
eTEoKSwgY3ViaWNUaW1pbmdGdW5jdGlvbi0+eDIoKSwgY3ViaWNUaW1pbmdGdW5jdGlvbi0+eTIo
KSkpOworICAgICAgICB9IGVsc2UgaWYgKHRpbWluZ0Z1bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVu
Y3Rpb25WYWx1ZSgpKSB7CisgICAgICAgICAgICBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUq
IHN0ZXBzVGltaW5nRnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxDU1NTdGVwc1RpbWluZ0Z1bmN0aW9u
VmFsdWUqPih2YWx1ZSk7CisgICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9u
KFN0ZXBzVGltaW5nRnVuY3Rpb246OmNyZWF0ZShzdGVwc1RpbWluZ0Z1bmN0aW9uLT5udW1iZXJP
ZlN0ZXBzKCksIHN0ZXBzVGltaW5nRnVuY3Rpb24tPnN0ZXBBdFN0YXJ0KCkpKTsKKyAgICAgICAg
fQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25W
YWx1ZS5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcAppbmRleCBl
NTc2ZDM2OTZiYzk5YjNjMTI2MzRkNTg1YzI1NWFhYzE2Mjk2MzU3Li45ZjFkNzM4MWU1YmNhMGE0
NTU0MmU0ZDU2Y2RhNWIxOTQ3ODNlYjkwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NUaW1p
bmdGdW5jdGlvblZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZh
bHVlLmNwcApAQCAtMzAsNyArMzAsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHJp
bmcgQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CitTdHJpbmcgQ1NTTGlu
ZWFyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0Cit7CisgICAgU3RyaW5nIHRl
eHQoImxpbmVhciIpOworICAgIHJldHVybiB0ZXh0OworfQorCitTdHJpbmcgQ1NTQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjc3NUZXh0KCkgY29uc3QKIHsKICAgICBTdHJpbmcgdGV4
dCgiY3ViaWMtYmV6aWVyKCIpOwogICAgIHRleHQgKz0gU3RyaW5nOjpudW1iZXIobV94MSk7CkBA
IC00NCw0ICs1MCwxNCBAQCBTdHJpbmcgQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3NzVGV4dCgp
IGNvbnN0CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKK1N0cmluZyBDU1NTdGVwc1RpbWluZ0Z1bmN0
aW9uVmFsdWU6OmNzc1RleHQoKSBjb25zdAoreworICAgIFN0cmluZyB0ZXh0KCJzdGVwcygiKTsK
KyAgICB0ZXh0ICs9IFN0cmluZzo6bnVtYmVyKG1fc3RlcHMpOworICAgIHRleHQgKz0gIiwgIjsK
KyAgICB0ZXh0ICs9IG1fc3RlcEF0U3RhcnQgPyAic3RhcnQiIDogImVuZCI7CisgICAgdGV4dCAr
PSAiKSI7CisgICAgcmV0dXJuIHRleHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBiL1dlYkNvcmUv
Y3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaAppbmRleCBlNDY1OTkzNWNkYjc5MzE4NmMxMGRm
NzA0ZTQ4Y2Q3OWRjZGJhNzMwLi4zODU2ZjlmN2ZlMmRlMmIxMzIyMGYwOTRmZDBkZjNmNjkyMzEy
MDVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKKysr
IGIvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCkBAIC0zMywyOCArMzMsNjEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NUaW1pbmdGdW5jdGlvblZhbHVlIDog
cHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NUaW1p
bmdGdW5jdGlvblZhbHVlPiBjcmVhdGUoZG91YmxlIHgxLCBkb3VibGUgeTEsIGRvdWJsZSB4Miwg
ZG91YmxlIHkyKQorICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdCA9IDA7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
VmFsdWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1N0ZXBz
VGltaW5nRnVuY3Rpb25WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKK3Byb3RlY3Rl
ZDoKKyAgICBDU1NUaW1pbmdGdW5jdGlvblZhbHVlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZSh4MSwgeTEsIHgyLCB5MikpOwogICAg
IH0KIAotICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNUaW1pbmdGdW5jdGlvblZhbHVlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorfTsKIAor
Y2xhc3MgQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZSA6IHB1YmxpYyBDU1NUaW1pbmdGdW5j
dGlvblZhbHVlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NMaW5lYXJUaW1p
bmdGdW5jdGlvblZhbHVlPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlKTsKKyAgICB9CisgICAgCisgICAgdmly
dHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0xp
bmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgCitw
cml2YXRlOgorICAgIENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUoKQorICAgIHsKKyAgICB9
Cit9OworICAgIAorY2xhc3MgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlIDogcHVi
bGljIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZT4gY3JlYXRlKGRvdWJsZSB4MSwg
ZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKHgxLCB5MSwgeDIs
IHkyKSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsK
KyAgICAKICAgICBkb3VibGUgeDEoKSBjb25zdCB7IHJldHVybiBtX3gxOyB9CiAgICAgZG91Ymxl
IHkxKCkgY29uc3QgeyByZXR1cm4gbV95MTsgfQogICAgIGRvdWJsZSB4MigpIGNvbnN0IHsgcmV0
dXJuIG1feDI7IH0KICAgICBkb3VibGUgeTIoKSBjb25zdCB7IHJldHVybiBtX3kyOyB9CisgICAg
CisgICAgdmlydHVhbCBib29sIGlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIENTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUoZG91YmxlIHgxLCBkb3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyKQotICAgICAgICA6
IG1feDEoeDEpCi0gICAgICAgICwgbV95MSh5MSkKLSAgICAgICAgLCBtX3gyKHgyKQotICAgICAg
ICAsIG1feTIoeTIpCisgICAgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKGRvdWJs
ZSB4MSwgZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikKKyAgICA6IG1feDEoeDEpCisg
ICAgLCBtX3kxKHkxKQorICAgICwgbV94Mih4MikKKyAgICAsIG1feTIoeTIpCiAgICAgewogICAg
IH0KLQotICAgIHZpcnR1YWwgYm9vbCBpc1RpbWluZ0Z1bmN0aW9uVmFsdWUoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAgICAgCiAgICAgZG91YmxlIG1feDE7CiAgICAgZG91YmxlIG1feTE7CkBA
IC02Miw2ICs5NSwzMSBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX3kyOwogfTsKIAorY2xhc3Mg
Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlIDogcHVibGljIENTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU1N0ZXBzVGltaW5nRnVuY3Rp
b25WYWx1ZT4gY3JlYXRlKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKHN0ZXBz
LCBzdGVwQXRTdGFydCkpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0
KCkgY29uc3Q7CisgICAgCisgICAgaW50IG51bWJlck9mU3RlcHMoKSBjb25zdCB7IHJldHVybiBt
X3N0ZXBzOyB9CisgICAgYm9vbCBzdGVwQXRTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcEF0
U3RhcnQ7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNTdGVwc1RpbWluZ0Z1bmN0aW9uVmFs
dWUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgCitwcml2YXRlOgorICAgIENTU1N0ZXBz
VGltaW5nRnVuY3Rpb25WYWx1ZShpbnQgc3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQpCisgICAgOiBt
X3N0ZXBzKHN0ZXBzKQorICAgICwgbV9zdGVwQXRTdGFydChzdGVwQXRTdGFydCkKKyAgICB7Cisg
ICAgfQorICAgIAorICAgIGludCBtX3N0ZXBzOworICAgIGJvb2wgbV9zdGVwQXRTdGFydDsKK307
CisgICAgCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCmlu
ZGV4IDdhOWI5Yzc3OGIzZjgxMTZlMmVmNmZjMzFlNmQ1NmQ3NTgyNDU0YWQuLjFlN2MyYjViNzYz
NjY4NDBlMjFhYTRhNDIzZTliZjQ0OGI3OWYxM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlS2V5d29yZHMuaW4KKysrIGIvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpA
QCAtNjkxLDYgKzY5MSw4IEBAIGxpbmVhcgogZWFzZS1pbgogZWFzZS1vdXQKIGVhc2UtaW4tb3V0
CitzdGVwLXN0YXJ0CitzdGVwLWVuZAogCiAjCiAjIENTU19QUk9QX1pPT00KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IGQ0OTI2ZWFmMzA1YzhkMmU3YThkY2Nj
ZTIwNDJjZDFiYzZhOTQxYTQuLjZlZmVkOGU2NTFmZGVlMTFmNmYyYjA4ODJjOGU4NGY2ZTE4NzRh
NmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtNzAsNiAr
NzAsMTMgQEAgc3RhdGljIGlubGluZSBkb3VibGUgc29sdmVDdWJpY0JlemllckZ1bmN0aW9uKGRv
dWJsZSBwMXgsIGRvdWJsZSBwMXksIGRvdWJsZSBwMngKICAgICByZXR1cm4gYmV6aWVyLnNvbHZl
KHQsIHNvbHZlRXBzaWxvbihkdXJhdGlvbikpOwogfQogCitzdGF0aWMgaW5saW5lIGRvdWJsZSBz
b2x2ZVN0ZXBzRnVuY3Rpb24oaW50IG51bVN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0LCBkb3VibGUg
dCkKK3sKKyAgICBpZiAoc3RlcEF0U3RhcnQpCisgICAgICAgIHJldHVybiBtaW4oMS4wLCAoZmxv
b3IobnVtU3RlcHMgKiB0KSArIDEpIC8gbnVtU3RlcHMpOworICAgIHJldHVybiBmbG9vcihudW1T
dGVwcyAqIHQpIC8gbnVtU3RlcHM7Cit9CisKIHN0YXRpYyBpbmxpbmUgaW50IGJsZW5kRnVuYyhj
b25zdCBBbmltYXRpb25CYXNlKiwgaW50IGZyb20sIGludCB0bywgZG91YmxlIHByb2dyZXNzKQog
eyAgCiAgICAgcmV0dXJuIGludChmcm9tICsgKHRvIC0gZnJvbSkgKiBwcm9ncmVzcyk7CkBAIC0x
MjQ5LDE4ICsxMjU2LDIwIEBAIGRvdWJsZSBBbmltYXRpb25CYXNlOjpwcm9ncmVzcyhkb3VibGUg
c2NhbGUsIGRvdWJsZSBvZmZzZXQsIGNvbnN0IFRpbWluZ0Z1bmN0aW9uCiAgICAgICAgIGZyYWN0
aW9uYWxUaW1lID0gKGZyYWN0aW9uYWxUaW1lIC0gb2Zmc2V0KSAqIHNjYWxlOwogICAgICAgICAK
ICAgICBpZiAoIXRmKQotICAgICAgICB0ZiA9ICZtX2FuaW1hdGlvbi0+dGltaW5nRnVuY3Rpb24o
KTsKLQotICAgIGlmICh0Zi0+dHlwZSgpID09IExpbmVhclRpbWluZ0Z1bmN0aW9uKQorICAgICAg
ICB0ZiA9IG1fYW5pbWF0aW9uLT50aW1pbmdGdW5jdGlvbigpLmdldCgpOworCisgICAgaWYgKHRm
LT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgeworICAgICAgICBjb25zdCBDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uKiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRp
bWluZ0Z1bmN0aW9uKj4odGYpOworICAgICAgICByZXR1cm4gc29sdmVDdWJpY0JlemllckZ1bmN0
aW9uKGN0Zi0+eDEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
dGYtPnkxKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RmLT54
MigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0Zi0+eTIoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbmFsVGltZSwg
bV9hbmltYXRpb24tPmR1cmF0aW9uKCkpOworICAgIH0gZWxzZSBpZiAodGYtPmlzU3RlcHNUaW1p
bmdGdW5jdGlvbigpKSB7CisgICAgICAgIGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24qIHN0ZiA9
IHN0YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24qPih0Zik7CisgICAgICAgIHJl
dHVybiBzb2x2ZVN0ZXBzRnVuY3Rpb24oc3RmLT5udW1iZXJPZlN0ZXBzKCksIHN0Zi0+c3RlcEF0
U3RhcnQoKSwgZnJhY3Rpb25hbFRpbWUpOworICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gZnJh
Y3Rpb25hbFRpbWU7Ci0KLSAgICAvLyBDdWJpYyBiZXppZXIuCi0gICAgZG91YmxlIHJlc3VsdCA9
IHNvbHZlQ3ViaWNCZXppZXJGdW5jdGlvbih0Zi0+eDEoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGYtPnkxKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRmLT54MigpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0Zi0+eTIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnJhY3Rpb25hbFRpbWUsIG1fYW5pbWF0aW9uLT5kdXJhdGlvbigp
KTsKLSAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIEFuaW1hdGlvbkJhc2U6OmdldFRpbWVU
b05leHRFdmVudChkb3VibGUmIHRpbWUsIGJvb2wmIGlzTG9vcGluZykgY29uc3QKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwIGIvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKaW5kZXggMDFlYzJmMTY5MDhh
MGFlZTI0YjYxZTExNGViNmQ5YTllMDE1ZTBmNi4uZWVkZGI5NDZmYjQ0MjU4YmRmYjBmOGIzMTMx
ZThjMzNkMTY0NjAyMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFt
ZUFuaW1hdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1h
dGlvbi5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIEtleWZyYW1lQW5pbWF0aW9uOjpmZXRj
aEludGVydmFsRW5kcG9pbnRzRm9yUHJvcGVydHkoaW50IHByb3BlcnR5LCBjb25zdCBSZQogICAg
IGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IDA7CiAgICAgaWYgKGZyb21T
dHlsZS0+YW5pbWF0aW9ucygpICYmIGZyb21TdHlsZS0+YW5pbWF0aW9ucygpLT5zaXplKCkgPiAw
KSB7CiAgICAgICAgIC8vIFdlIGdldCB0aGUgdGltaW5nIGZ1bmN0aW9uIGZyb20gdGhlIGZpcnN0
IGFuaW1hdGlvbiwgYmVjYXVzZSB3ZSd2ZSBzeW50aGVzaXplZCBhIFJlbmRlclN0eWxlIGZvciBl
YWNoIGtleWZyYW1lLgotICAgICAgICB0aW1pbmdGdW5jdGlvbiA9ICYoZnJvbVN0eWxlLT5hbmlt
YXRpb25zKCktPmFuaW1hdGlvbigwKS0+dGltaW5nRnVuY3Rpb24oKSk7CisgICAgICAgIHRpbWlu
Z0Z1bmN0aW9uID0gZnJvbVN0eWxlLT5hbmltYXRpb25zKCktPmFuaW1hdGlvbigwKS0+dGltaW5n
RnVuY3Rpb24oKS5nZXQoKTsKICAgICB9CiAKICAgICBwcm9nID0gcHJvZ3Jlc3Moc2NhbGUsIG9m
ZnNldCwgdGltaW5nRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmlt
YXRpb24vQW5pbWF0aW9uLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlv
bi5jcHAKaW5kZXggYmMzM2E5ZWZlZGRkMTRmZDA2MWFiN2I0ZjhmYWE5OWRhMDdkOTQxOS4uNmU1
OWY2YjEyYjBjYjI0Njk4M2ZlMGZlZDUwNjE1MTEzNDliOGNkYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2FuaW1hdGlvbi9BbmltYXRpb24uY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgYm9vbCBBbmltYXRp
b246OmFuaW1hdGlvbnNNYXRjaChjb25zdCBBbmltYXRpb24qIG8sIGJvb2wgbWF0Y2hQbGF5U3Rh
dGVzKSBjb25zdAogICAgICAgICAgICAgICAgICAgbV9pdGVyYXRpb25Db3VudCA9PSBvLT5tX2l0
ZXJhdGlvbkNvdW50ICYmCiAgICAgICAgICAgICAgICAgICBtX2RlbGF5ID09IG8tPm1fZGVsYXkg
JiYKICAgICAgICAgICAgICAgICAgIG1fZHVyYXRpb24gPT0gby0+bV9kdXJhdGlvbiAmJgotICAg
ICAgICAgICAgICAgICAgbV90aW1pbmdGdW5jdGlvbiA9PSBvLT5tX3RpbWluZ0Z1bmN0aW9uICYm
CisgICAgICAgICAgICAgICAgICAqKG1fdGltaW5nRnVuY3Rpb24uZ2V0KCkpID09ICooby0+bV90
aW1pbmdGdW5jdGlvbi5nZXQoKSkgJiYKICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9uID09
IG8tPm1fZGlyZWN0aW9uICYmCiAgICAgICAgICAgICAgICAgICBtX2ZpbGxNb2RlID09IG8tPm1f
ZmlsbE1vZGUgJiYKICAgICAgICAgICAgICAgICAgIG1fZGVsYXlTZXQgPT0gby0+bV9kZWxheVNl
dCAmJgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaAppbmRleCBjYWJiMGViZmQx
OWMwNmExM2IxOTNmOTc4YjFmMjlmN2NlYzZiMDBkLi5hNWNmNDQzZWNhOGMyOWU5NWE5NWU5NTBk
M2ZiODdhYmUxZThjZjAzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9B
bmltYXRpb24uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaApA
QCAtMjYsNyArMjYsOSBAQAogI2RlZmluZSBBbmltYXRpb25faAogCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUg
IlRpbWluZ0Z1bmN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTk0
LDcgKzk2LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZTsgfQogICAgIHVuc2lnbmVkIHBsYXlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGxheVN0YXRlOyB9CiAgICAgaW50IHByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0
eTsgfQotICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0aW1pbmdGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdGltaW5nRnVuY3Rpb247IH0KKyAgICBjb25zdCBQYXNzUmVmUHRyPFRpbWluZ0Z1
bmN0aW9uPiB0aW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGltaW5nRnVuY3Rpb247
IH0KIAogICAgIHZvaWQgc2V0RGVsYXkoZG91YmxlIGMpIHsgbV9kZWxheSA9IGM7IG1fZGVsYXlT
ZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXREaXJlY3Rpb24oQW5pbWF0aW9uRGlyZWN0aW9uIGQp
IHsgbV9kaXJlY3Rpb24gPSBkOyBtX2RpcmVjdGlvblNldCA9IHRydWU7IH0KQEAgLTEwNCw3ICsx
MDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbikgeyBtX25h
bWUgPSBuOyBtX25hbWVTZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRQbGF5U3RhdGUodW5zaWdu
ZWQgZCkgeyBtX3BsYXlTdGF0ZSA9IGQ7IG1fcGxheVN0YXRlU2V0ID0gdHJ1ZTsgfQogICAgIHZv
aWQgc2V0UHJvcGVydHkoaW50IHQpIHsgbV9wcm9wZXJ0eSA9IHQ7IG1fcHJvcGVydHlTZXQgPSB0
cnVlOyB9Ci0gICAgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiYg
ZikgeyBtX3RpbWluZ0Z1bmN0aW9uID0gZjsgbV90aW1pbmdGdW5jdGlvblNldCA9IHRydWU7IH0K
KyAgICB2b2lkIHNldFRpbWluZ0Z1bmN0aW9uKFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGYp
IHsgbV90aW1pbmdGdW5jdGlvbiA9IGY7IG1fdGltaW5nRnVuY3Rpb25TZXQgPSB0cnVlOyB9CiAK
ICAgICB2b2lkIHNldElzTm9uZUFuaW1hdGlvbihib29sIG4pIHsgbV9pc05vbmUgPSBuOyB9CiAK
QEAgLTEyOSw3ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIGludCBtX2l0ZXJhdGlvbkNvdW50Owog
ICAgIGRvdWJsZSBtX2RlbGF5OwogICAgIGRvdWJsZSBtX2R1cmF0aW9uOwotICAgIFRpbWluZ0Z1
bmN0aW9uIG1fdGltaW5nRnVuY3Rpb247CisgICAgUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBtX3Rp
bWluZ0Z1bmN0aW9uOwogICAgIEFuaW1hdGlvbkRpcmVjdGlvbiBtX2RpcmVjdGlvbiA6IDE7CiAg
ICAgdW5zaWduZWQgbV9maWxsTW9kZSA6IDI7CiAKQEAgLTE1Niw3ICsxNTgsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFN0cmluZyBpbml0aWFsQW5pbWF0aW9uTmFtZSgpIHsgcmV0dXJuIFN0cmlu
Zygibm9uZSIpOyB9CiAgICAgc3RhdGljIHVuc2lnbmVkIGluaXRpYWxBbmltYXRpb25QbGF5U3Rh
dGUoKSB7IHJldHVybiBBbmltUGxheVN0YXRlUGxheWluZzsgfQogICAgIHN0YXRpYyBpbnQgaW5p
dGlhbEFuaW1hdGlvblByb3BlcnR5KCkgeyByZXR1cm4gY0FuaW1hdGVBbGw7IH0KLSAgICBzdGF0
aWMgVGltaW5nRnVuY3Rpb24gaW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkgeyByZXR1
cm4gVGltaW5nRnVuY3Rpb24oKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiBpbml0aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oKSB7IHJldHVybiBDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24u
aCBiL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgKaW5kZXggZDNm
NzFmZjJiMTIxNmFmNmI3ZDZlNDkzNWUyYzQ0NWRhNTY3MTgwOS4uMjJmMDdhOWFlZTAzNGQ1OWU2
NzBkZThjZDUzZjZiMjQ0MDExYWE5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmlt
YXRpb24vVGltaW5nRnVuY3Rpb24uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9U
aW1pbmdGdW5jdGlvbi5oCkBAIC0yNSw2MCArMjUsMTUyIEBACiAjaWZuZGVmIFRpbWluZ0Z1bmN0
aW9uX2gKICNkZWZpbmUgVGltaW5nRnVuY3Rpb25faAogCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGVD
b25zdGFudHMuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0cnVjdCBUaW1pbmdGdW5jdGlvbiA6IEZhc3RBbGxvY0Jhc2UgewotICAgIFRp
bWluZ0Z1bmN0aW9uKCkKLSAgICAgICAgOiBtX3R5cGUoQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bikKLSAgICAgICAgLCBtX3gxKDAuMjUpCi0gICAgICAgICwgbV95MSgwLjEpCi0gICAgICAgICwg
bV94MigwLjI1KQotICAgICAgICAsIG1feTIoMS4wKQorY2xhc3MgVGltaW5nRnVuY3Rpb24gOiBw
dWJsaWMgUmVmQ291bnRlZDxUaW1pbmdGdW5jdGlvbj4geworcHVibGljOgorCisgICAgZW51bSBU
aW1pbmdGdW5jdGlvblR5cGUgeworICAgICAgICBMSU5FQVJfRlVOQ1RJT04sIENVQklDX0JFWklF
Ul9GVU5DVElPTiwgU1RFUFNfRlVOQ1RJT04KKyAgICB9OworICAgIAorICAgIHZpcnR1YWwgflRp
bWluZ0Z1bmN0aW9uKCkgeyB9CisgICAgCisgICAgYm9vbCBpc0xpbmVhclRpbWluZ0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IExJTkVBUl9GVU5DVElPTjsgfQorICAgIGJvb2wg
aXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IENV
QklDX0JFWklFUl9GVU5DVElPTjsgfQorICAgIGJvb2wgaXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlID09IFNURVBTX0ZVTkNUSU9OOyB9CisgICAgCisgICAgdmly
dHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSA9IDA7CisK
K3Byb3RlY3RlZDoKKyAgICBUaW1pbmdGdW5jdGlvbihUaW1pbmdGdW5jdGlvblR5cGUgdHlwZSkK
KyAgICAgICAgOiBtX3R5cGUodHlwZSkKICAgICB7CiAgICAgfQorICAgIAorICAgIFRpbWluZ0Z1
bmN0aW9uVHlwZSBtX3R5cGU7Cit9OwogCi0gICAgLy8gVGhpcyBleHBsaWNpdCBjb3B5IGNvbnN0
cnVjdG9yIHdvcmtzIGFyb3VuZCBhbiBpbmxpbmluZyBidWcgaW4gR0NDIDQuMiAob25seSByZXBy
b2VkIG9uIG1hYywgYnV0IG1heSBleGlzdCBvbiBvdGhlciBwbGF0Zm9ybXMpLgotICAgIFRpbWlu
Z0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0aGF0KQotICAgICAgICA6IG1fdHlwZSh0
aGF0Lm1fdHlwZSkKLSAgICAgICAgLCBtX3gxKHRoYXQubV94MSkKLSAgICAgICAgLCBtX3kxKHRo
YXQubV95MSkKLSAgICAgICAgLCBtX3gyKHRoYXQubV94MikKLSAgICAgICAgLCBtX3kyKHRoYXQu
bV95MikKK2NsYXNzIExpbmVhclRpbWluZ0Z1bmN0aW9uIDogcHVibGljIFRpbWluZ0Z1bmN0aW9u
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxMaW5lYXJUaW1pbmdGdW5jdGlvbj4g
Y3JlYXRlKCkKICAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGluZWFyVGltaW5n
RnVuY3Rpb24pOwogICAgIH0KLQotICAgIFRpbWluZ0Z1bmN0aW9uKEVUaW1pbmdGdW5jdGlvblR5
cGUgdGltaW5nRnVuY3Rpb24sIGRvdWJsZSB4MSA9IDAuMCwgZG91YmxlIHkxID0gMC4wLCBkb3Vi
bGUgeDIgPSAxLjAsIGRvdWJsZSB5MiA9IDEuMCkKLSAgICAgICAgOiBtX3R5cGUodGltaW5nRnVu
Y3Rpb24pCi0gICAgICAgICwgbV94MSh4MSkKLSAgICAgICAgLCBtX3kxKHkxKQotICAgICAgICAs
IG1feDIoeDIpCi0gICAgICAgICwgbV95Mih5MikKKyAgICAKKyAgICB+TGluZWFyVGltaW5nRnVu
Y3Rpb24oKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1p
bmdGdW5jdGlvbiYgb3RoZXIpCiAgICAgeworICAgICAgICByZXR1cm4gb3RoZXIuaXNMaW5lYXJU
aW1pbmdGdW5jdGlvbigpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgTGluZWFyVGltaW5n
RnVuY3Rpb24oKQorICAgICAgICA6IFRpbWluZ0Z1bmN0aW9uKExJTkVBUl9GVU5DVElPTikKKyAg
ICB7CisgICAgfQorfTsKKyAgICAKK2NsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24gOiBw
dWJsaWMgVGltaW5nRnVuY3Rpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24pOworICAgIH0KKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoZG91YmxlIHgx
LCBkb3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKHgxLCB5MSwgeDIsIHkyKSk7
CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvKSBj
b25zdAorICAgIHN0YXRpYyBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBjYXN0KGNv
bnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbikKKyAgICB7CisgICAgICAgIHJldHVy
biB0aW1pbmdGdW5jdGlvbi0+aXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKCkKKyAgICAgICAg
ICAgID8gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+KHRpbWlu
Z0Z1bmN0aW9uKQorICAgICAgICAgICAgOiAwOworICAgIH0KKyAgICAKKyAgICB+Q3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbigpIHsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3R5
cGUgPT0gby5tX3R5cGUgJiYgbV94MSA9PSBvLm1feDEgJiYgbV95MSA9PSBvLm1feTEgJiYgbV94
MiA9PSBvLm1feDIgJiYgbV95MiA9PSBvLm1feTI7CisgICAgICAgIGlmIChjb25zdCBDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uKiBjdGYgPSBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjYXN0
KCZvdGhlcikpCisgICAgICAgICAgICByZXR1cm4gbV94MSA9PSBjdGYtPm1feDEgJiYgbV95MSA9
PSBjdGYtPm1feTEKKyAgICAgICAgICAgICAgICAgICAmJiBtX3gyID09IGN0Zi0+bV94MiAmJiBt
X3kyID09IGN0Zi0+bV95MjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGRv
dWJsZSB4MSgpIGNvbnN0IHsgcmV0dXJuIG1feDE7IH0KICAgICBkb3VibGUgeTEoKSBjb25zdCB7
IHJldHVybiBtX3kxOyB9CiAgICAgZG91YmxlIHgyKCkgY29uc3QgeyByZXR1cm4gbV94MjsgfQog
ICAgIGRvdWJsZSB5MigpIGNvbnN0IHsgcmV0dXJuIG1feTI7IH0KLQotICAgIEVUaW1pbmdGdW5j
dGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotCisgICAgCiBwcml2YXRl
OgotICAgIEVUaW1pbmdGdW5jdGlvblR5cGUgbV90eXBlOworICAgIEN1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb24oKQorICAgICAgICA6IFRpbWluZ0Z1bmN0aW9uKENVQklDX0JFWklFUl9GVU5DVElP
TikKKyAgICAgICAgLCBtX3gxKDAuMjUpCisgICAgICAgICwgbV95MSgwLjEpCisgICAgICAgICwg
bV94MigwLjI1KQorICAgICAgICAsIG1feTIoMS4wKQorICAgIHsKKyAgICB9CisKKyAgICBDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uKGRvdWJsZSB4MSwgZG91YmxlIHkxLCBkb3VibGUgeDIsIGRv
dWJsZSB5MikKKyAgICAgICAgOiBUaW1pbmdGdW5jdGlvbihDVUJJQ19CRVpJRVJfRlVOQ1RJT04p
CisgICAgICAgICwgbV94MSh4MSkKKyAgICAgICAgLCBtX3kxKHkxKQorICAgICAgICAsIG1feDIo
eDIpCisgICAgICAgICwgbV95Mih5MikKKyAgICB7CisgICAgfQogCiAgICAgZG91YmxlIG1feDE7
CiAgICAgZG91YmxlIG1feTE7CiAgICAgZG91YmxlIG1feDI7CiAgICAgZG91YmxlIG1feTI7CisK
IH07CiAKK2NsYXNzIFN0ZXBzVGltaW5nRnVuY3Rpb24gOiBwdWJsaWMgVGltaW5nRnVuY3Rpb24g
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0ZXBzVGltaW5nRnVuY3Rpb24+IGNy
ZWF0ZShpbnQgc3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFN0ZXBzVGltaW5nRnVuY3Rpb24oc3RlcHMsIHN0ZXBBdFN0YXJ0KSk7Cisg
ICAgfQorICAgIAorICAgIHN0YXRpYyBjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uKiBjYXN0KGNv
bnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbikKKyAgICB7CisgICAgICAgIHJldHVy
biB0aW1pbmdGdW5jdGlvbi0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkKKyAgICAgICAgICAgID8g
c3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKQor
ICAgICAgICAgICAgOiAwOworICAgIH0KKyAgICAKKyAgICB+U3RlcHNUaW1pbmdGdW5jdGlvbigp
IHsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0
aW9uJiBvdGhlcikKKyAgICB7CisgICAgICAgIGlmIChjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9u
KiBzdGYgPSBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpjYXN0KCZvdGhlcikpCisgICAgICAgICAgICBy
ZXR1cm4gbV9zdGVwcyA9PSBzdGYtPm1fc3RlcHMgJiYgbV9zdGVwQXRTdGFydCA9PSBzdGYtPm1f
c3RlcEF0U3RhcnQ7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgaW50
IG51bWJlck9mU3RlcHMoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBzOyB9CisgICAgYm9vbCBzdGVw
QXRTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcEF0U3RhcnQ7IH0KKyAgICAKK3ByaXZhdGU6
CisgICAgU3RlcHNUaW1pbmdGdW5jdGlvbihpbnQgc3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQpCisg
ICAgICAgIDogVGltaW5nRnVuY3Rpb24oU1RFUFNfRlVOQ1RJT04pCisgICAgICAgICwgbV9zdGVw
cyhzdGVwcykKKyAgICAgICAgLCBtX3N0ZXBBdFN0YXJ0KHN0ZXBBdFN0YXJ0KQorICAgIHsKKyAg
ICB9CisgICAgCisgICAgaW50IG1fc3RlcHM7CisgICAgYm9vbCBtX3N0ZXBBdFN0YXJ0OworfTsK
KyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFRpbWluZ0Z1bmN0aW9u
X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggMGY3NGNk
NWNiMzM4NWVlN2JiNWE2ODgwMmI3YWZjMjk3ODdmZjgwZi4uNjhhNTgwZWQ0ZTAzYzQ3NWE5NDQy
OTc1NTk3ZjhmMzNmYjNkY2I4OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmgKQEAgLTg1LDE4ICs4NSwxOCBAQCBjbGFzcyBGbG9hdFBvaW50M0Q7CiBjbGFzcyBH
cmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIFRleHRTdHJlYW07Ci1zdHJ1Y3Qg
VGltaW5nRnVuY3Rpb247CitjbGFzcyBUaW1pbmdGdW5jdGlvbjsKIAogLy8gQmFzZSBjbGFzcyBm
b3IgYW5pbWF0aW9uIHZhbHVlcyAoYWxzbyB1c2VkIGZvciB0cmFuc2l0aW9ucykuIEhlcmUgdG8K
IC8vIHJlcHJlc2VudCB2YWx1ZXMgZm9yIHByb3BlcnRpZXMgYmVpbmcgYW5pbWF0ZWQgdmlhIHRo
ZSBHcmFwaGljc0xheWVyLAogLy8gd2l0aG91dCBwdWxsaW5nIGluIHN0eWxlLXJlbGF0ZWQgZGF0
YSBmcm9tIG91dHNpZGUgb2YgdGhlIHBsYXRmb3JtIGRpcmVjdG9yeS4KIGNsYXNzIEFuaW1hdGlv
blZhbHVlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKLSAgICBBbmltYXRpb25WYWx1
ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSAw
KQorICAgIEFuaW1hdGlvblZhbHVlKGZsb2F0IGtleVRpbWUsIFBhc3NSZWZQdHI8VGltaW5nRnVu
Y3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKICAgICAgICAgOiBtX2tleVRpbWUoa2V5VGltZSkK
ICAgICB7CiAgICAgICAgIGlmICh0aW1pbmdGdW5jdGlvbikKLSAgICAgICAgICAgIG1fdGltaW5n
RnVuY3Rpb24gPSBhZG9wdFB0cihuZXcgVGltaW5nRnVuY3Rpb24oKnRpbWluZ0Z1bmN0aW9uKSk7
CisgICAgICAgICAgICBtX3RpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb247CiAgICAgfQog
ICAgIAogICAgIHZpcnR1YWwgfkFuaW1hdGlvblZhbHVlKCkgeyB9CkBAIC0xMDYsMTMgKzEwNiwx
MyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZmxvYXQgbV9rZXlUaW1lOwotICAgIE93blB0
cjxUaW1pbmdGdW5jdGlvbj4gbV90aW1pbmdGdW5jdGlvbjsKKyAgICBSZWZQdHI8VGltaW5nRnVu
Y3Rpb24+IG1fdGltaW5nRnVuY3Rpb247CiB9OwogCiAvLyBVc2VkIHRvIHN0b3JlIG9uZSBmbG9h
dCB2YWx1ZSBvZiBhbiBhbmltYXRpb24uCiBjbGFzcyBGbG9hdEFuaW1hdGlvblZhbHVlIDogcHVi
bGljIEFuaW1hdGlvblZhbHVlIHsKIHB1YmxpYzoKLSAgICBGbG9hdEFuaW1hdGlvblZhbHVlKGZs
b2F0IGtleVRpbWUsIGZsb2F0IHZhbHVlLCBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVu
Y3Rpb24gPSAwKQorICAgIEZsb2F0QW5pbWF0aW9uVmFsdWUoZmxvYXQga2V5VGltZSwgZmxvYXQg
dmFsdWUsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKICAg
ICAgICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5jdGlvbikKICAgICAgICAg
LCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgogLy8g
VXNlZCB0byBzdG9yZSBvbmUgdHJhbnNmb3JtIHZhbHVlIGluIGEga2V5ZnJhbWUgbGlzdC4KIGNs
YXNzIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKIHB1
YmxpYzoKLSAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBU
cmFuc2Zvcm1PcGVyYXRpb25zKiB2YWx1ZSA9IDAsIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1p
bmdGdW5jdGlvbiA9IDApCisgICAgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoZmxvYXQga2V5VGlt
ZSwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyogdmFsdWUgPSAwLCBQYXNzUmVmUHRyPFRpbWlu
Z0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCiAgICAgICAgIDogQW5pbWF0aW9uVmFsdWUo
a2V5VGltZSwgdGltaW5nRnVuY3Rpb24pCiAgICAgewogICAgICAgICBpZiAodmFsdWUpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW0g
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW0KaW5kZXgg
MzE1Y2MwMDkxMDNjNjk4ZmEwMDE0N2I0OTNmODY1NDljODFmMmNhZS4uMDBkOTQwZGRmN2YyODlk
MWM4NzAyMmRlNmM3YjBjYjYxMTNhMjkyZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQpAQCAtMjcyLDE2ICsyNzIsMTUgQEAgc3RhdGlj
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGZsaXBUcmFuc2Zvcm0oKQogfQogI2VuZGlmCiAKLXN0YXRp
YyBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIGdldENBTWVkaWFUaW1pbmdGdW5jdGlvbihjb25zdCBU
aW1pbmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb24pCitzdGF0aWMgQ0FNZWRpYVRpbWluZ0Z1bmN0
aW9uKiBnZXRDQU1lZGlhVGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWlu
Z0Z1bmN0aW9uKQogewotICAgIHN3aXRjaCAodGltaW5nRnVuY3Rpb24udHlwZSgpKSB7Ci0gICAg
ICAgIGNhc2UgTGluZWFyVGltaW5nRnVuY3Rpb246Ci0gICAgICAgICAgICByZXR1cm4gW0NBTWVk
aWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOkAibGluZWFyIl07Ci0gICAgICAgIGNh
c2UgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBbQ0FNZWRp
YVRpbWluZ0Z1bmN0aW9uIGZ1bmN0aW9uV2l0aENvbnRyb2xQb2ludHM6c3RhdGljX2Nhc3Q8Zmxv
YXQ+KHRpbWluZ0Z1bmN0aW9uLngxKCkpIDpzdGF0aWNfY2FzdDxmbG9hdD4odGltaW5nRnVuY3Rp
b24ueTEoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIDpzdGF0aWNfY2FzdDxmbG9hdD4odGlt
aW5nRnVuY3Rpb24ueDIoKSkgOnN0YXRpY19jYXN0PGZsb2F0Pih0aW1pbmdGdW5jdGlvbi55Migp
KV07Ci0gICAgfQotICAgIHJldHVybiAwOworICAgIC8vIEJ5IHRoaXMgcG9pbnQsIHRpbWluZyBm
dW5jdGlvbnMgY2FuIG9ubHkgYmUgbGluZWFyIG9yIGN1YmljLCBub3Qgc3RlcHMuCisgICAgaWYg
KHRpbWluZ0Z1bmN0aW9uLT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgeworICAgICAg
ICBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBjdGYgPSBzdGF0aWNfY2FzdDxjb25z
dCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24pOworICAgICAgICBy
ZXR1cm4gW0NBTWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhDb250cm9sUG9pbnRzOnN0
YXRpY19jYXN0PGZsb2F0PihjdGYtPngxKCkpIDpzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT55MSgp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOnN0YXRpY19jYXN0PGZsb2F0PihjdGYtPngyKCkpIDpzdGF0aWNfY2FzdDxmbG9h
dD4oY3RmLT55MigpKV07CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBbQ0FNZWRpYVRpbWlu
Z0Z1bmN0aW9uIGZ1bmN0aW9uV2l0aE5hbWU6QCJsaW5lYXIiXTsKIH0KIAogc3RhdGljIHZvaWQg
c2V0TGF5ZXJCb3JkZXJDb2xvcihQbGF0Zm9ybUxheWVyKiBsYXllciwgY29uc3QgQ29sb3ImIGNv
bG9yKQpAQCAtMzU2LDYgKzM1NSwyMCBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5KiBudWxsQWN0aW9u
c0RpY3Rpb25hcnkoKQogICAgIHJldHVybiBhY3Rpb25zOwogfQogCitzdGF0aWMgYm9vbCBhbmlt
YXRpb25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSkKK3sKKyAgICBpZiAoYW5pbS0+dGltaW5nRnVu
Y3Rpb24oKS0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdmFsdWVM
aXN0LmF0KGkpLT50aW1pbmdGdW5jdGlvbigpOworICAgICAgICBpZiAodGltaW5nRnVuY3Rpb24g
JiYgdGltaW5nRnVuY3Rpb24tPmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBQYXNzT3duUHRy
PEdyYXBoaWNzTGF5ZXI+IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyQ2xpZW50
KiBjbGllbnQpCiB7CiAgICAgcmV0dXJuIG5ldyBHcmFwaGljc0xheWVyQ0EoY2xpZW50KTsKQEAg
LTcxNiw2ICs3MjksMTEgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFkZEFuaW1hdGlvbihjb25z
dCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBJbnQKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogI2VuZGlmCiAKKyAgICAvLyBDb3JlQW5pbWF0aW9uIGRvZXMgbm90IGhhbmRsZSB0
aGUgc3RlcHMoKSB0aW1pbmcgZnVuY3Rpb24uIEZhbGwgYmFjaworICAgIC8vIHRvIHNvZnR3YXJl
IGFuaW1hdGlvbiBpbiB0aGF0IGNhc2UuCisgICAgaWYgKGFuaW1hdGlvbkhhc1N0ZXBzVGltaW5n
RnVuY3Rpb24odmFsdWVMaXN0LCBhbmltKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
Ym9vbCBjcmVhdGVkQW5pbWF0aW9ucyA9IGZhbHNlOwogICAgIGlmICh2YWx1ZUxpc3QucHJvcGVy
dHkoKSA9PSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKQogICAgICAgICBjcmVhdGVk
QW5pbWF0aW9ucyA9IGNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKHZhbHVl
TGlzdCwgYW5pbSwga2V5ZnJhbWVzTmFtZSwgdGltZU9mZnNldCwgYm94U2l6ZSk7CkBAIC0xOTEz
LDkgKzE5MzEsOSBAQCBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIEdyYXBoaWNzTGF5ZXJDQTo6dGlt
aW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShjb25zdCBBbgogICAgIGlmIChhbmltVmFsdWUt
PnRpbWluZ0Z1bmN0aW9uKCkpCiAgICAgICAgIHRmID0gYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlv
bigpOwogICAgIGVsc2UgaWYgKGFuaW0tPmlzVGltaW5nRnVuY3Rpb25TZXQoKSkKLSAgICAgICAg
dGYgPSAmYW5pbS0+dGltaW5nRnVuY3Rpb24oKTsKKyAgICAgICAgdGYgPSBhbmltLT50aW1pbmdG
dW5jdGlvbigpLmdldCgpOwogCi0gICAgcmV0dXJuIGdldENBTWVkaWFUaW1pbmdGdW5jdGlvbih0
ZiA/ICp0ZiA6IFRpbWluZ0Z1bmN0aW9uKCkpOworICAgIHJldHVybiBnZXRDQU1lZGlhVGltaW5n
RnVuY3Rpb24odGYgPyB0ZiA6IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpLmdl
dCgpKTsKIH0KIAogYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbkVuZHBvaW50cyhj
b25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0s
IENBQmFzaWNBbmltYXRpb24qIGJhc2ljQW5pbSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCmluZGV4IGY5MDkwYmE3MDg0ZmQ4YTlhNmU4OWI3ZGM1YWE4ZjNjODgwMjQ0
MzkuLjZjNThlMGQ3MWIyYjUwMGFjMTY1OGZjNWIxYmZmMGI0OGZjODg3ZmQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTEyNSwxMiArMTEyNSwxMiBAQCBi
b29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQs
IGNvbnN0IEFuaW1hdGlvbiogYW5pbQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAKICAgICAgICAgLy8gZ2V0IHRpbWluZyBmdW5jdGlvbgotICAgICAgICBjb25zdCBUaW1pbmdG
dW5jdGlvbiogdGYgPSBrZXlmcmFtZVN0eWxlLT5oYXNBbmltYXRpb25zKCkgPyAmKCgqa2V5ZnJh
bWVTdHlsZS0+YW5pbWF0aW9ucygpKS5hbmltYXRpb24oMCktPnRpbWluZ0Z1bmN0aW9uKCkpIDog
MDsKKyAgICAgICAgUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0ZiA9IGtleWZyYW1lU3R5bGUtPmhh
c0FuaW1hdGlvbnMoKSA/ICgqa2V5ZnJhbWVTdHlsZS0+YW5pbWF0aW9ucygpKS5hbmltYXRpb24o
MCktPnRpbWluZ0Z1bmN0aW9uKCkgOiAwOwogICAgICAgICAKLSAgICAgICAgaWYgKGN1cnJlbnRL
ZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0p
KQorICAgICAgICBpZiAoY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm0pKQogICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChu
ZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoa2V5LCAmKGtleWZyYW1lU3R5bGUtPnRyYW5zZm9y
bSgpKSwgdGYpKTsKICAgICAgICAgCi0gICAgICAgIGlmIChjdXJyZW50S2V5ZnJhbWUuY29udGFp
bnNQcm9wZXJ0eShBbmltYXRlZFByb3BlcnR5T3BhY2l0eSkpCisgICAgICAgIGlmIChjdXJyZW50
S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHkpKQogICAgICAgICAg
ICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQobmV3IEZsb2F0QW5pbWF0aW9uVmFsdWUoa2V5LCBrZXlm
cmFtZVN0eWxlLT5vcGFjaXR5KCksIHRmKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oIGIvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAppbmRleCA2OGM4MTEzZjYzYzgyYTg4YzY5
ZjY0OWFmNDYzNTI5N2QwY2E5OGZhLi5hNzgzMjFmODQxNTc1NjM4MjFkZTc3MjhjNTA2Y2Y2NTdi
YTEzYmFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNv
bnN0YW50cy5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3Rh
bnRzLmgKQEAgLTMwMyw4ICszMDMsNiBAQCBlbnVtIEVBbmltUGxheVN0YXRlIHsKICAgICBBbmlt
UGxheVN0YXRlUGF1c2VkID0gMHgxCiB9OwogCi1lbnVtIEVUaW1pbmdGdW5jdGlvblR5cGUgeyBM
aW5lYXJUaW1pbmdGdW5jdGlvbiwgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiB9OwotCiBlbnVt
IEVXaGl0ZVNwYWNlIHsKICAgICBOT1JNQUwsIFBSRSwgUFJFX1dSQVAsIFBSRV9MSU5FLCBOT1dS
QVAsIEtIVE1MX05PV1JBUAogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66941</attachid>
            <date>2010-09-08 14:17:37 -0700</date>
            <delta_ts>2010-09-08 14:42:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44541-20100909071735.patch</filename>
            <type>text/plain</type>
            <size>59324</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMzkxZDMxMjJmZjEyMjU2NTlkN2Y3MmVkMDY1ZjY4MTAwNDk1Y2E2Li5lMmI0NTFl
MjVlM2MzODE2ZjBkZTkxNWJhZmJhZGU4YzM1NTA5OGQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMTAtMDktMDggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBzdGVwcygpIHRp
bWluZyBmdW5jdGlvbiBmb3IgYW5pbWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ1NDEKKworICAgICAgICAqIHRyYW5zaXRpb25zL3N0ZXBz
LXRpbWluZy1mdW5jdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRyYW5zaXRp
b25zL3N0ZXBzLXRpbWluZy1mdW5jdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRp
b25zL3RpbWluZy1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhbmlt
YXRpb25zL3RpbWluZy1mdW5jdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICAgICAtIE5ldyB0
ZXN0cyB0aGF0IGV4ZXJjaXNlIHN0ZXBzIGluIGFuaW1hdGlvbnMKKyAgICAgICAgICAgICAgYW5k
IHRyYW5zaXRpb25zLCBpbiBzb2Z0d2FyZSBhbmQgaGFyZHdhcmUKKworICAgICAgICAqIGFuaW1h
dGlvbnMvY29tcHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFuaW1hdGlvbnMv
Y29tcHV0ZWQtc3R5bGUuaHRtbDoKKyAgICAgICAgKiBhbmltYXRpb25zL2FuaW1hdGlvbi1zaG9y
dGhhbmQuaHRtbDoKKyAgICAgICAgKiBhbmltYXRpb25zL2ZpbGwtdW5zZXQtcHJvcGVydGllcy5o
dG1sOgorICAgICAgICAqIHRyYW5zaXRpb25zL2luaGVyaXQtb3RoZXItcHJvcHMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHRyYW5zaXRpb25zL2luaGVyaXQtb3RoZXItcHJvcHMuaHRtbDoKKyAg
ICAgICAgICAgIC0gQ2hhbmdlIGV4aXN0aW5nIHRlc3RzIHRvIHVzZSAnbGluZWFyJyBjb21wdXRl
ZAorICAgICAgICAgICAgICBzdHlsZSB3aGVyZSBuZWNlc3NhcnkKKwogMjAxMC0wOS0wOCAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tc2hv
cnRoYW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1zaG9ydGhhbmQu
aHRtbAppbmRleCBhZGYzNzE5MjY0MzI1YTEyNzZiNjYxMzRmZTNkNGFhYzA2MGE0YmM3Li5lOGZi
ZGY4YWZhZGFhZDYyMzM1MTdlODI3YWQ1YjI5OTYzZTY2YjIyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1zaG9ydGhhbmQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9hbmltYXRpb25zL2FuaW1hdGlvbi1zaG9ydGhhbmQuaHRtbApAQCAtNTcsMTMgKzU3LDEzIEBA
CiAgICAgICB7IGlkOiAnYScsICB2YWx1ZXM6IFsgIm5vbmUiLCAiMHMiLCAiY3ViaWMtYmV6aWVy
KDAuMjUsIDAuMSwgMC4yNSwgMSkiLCAiMHMiLCAiMSIsICJub3JtYWwiLCAibm9uZSIgXSB9LAog
ICAgICAgeyBpZDogJ2InLCAgdmFsdWVzOiBbICJub25lIiwgIjBzIiwgImN1YmljLWJlemllcigw
LjI1LCAwLjEsIDAuMjUsIDEpIiwgIjBzIiwgIjEiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKICAg
ICAgIHsgaWQ6ICdjJywgIHZhbHVlczogWyAiYW5pbTEiLCAiMTBzIiwgImN1YmljLWJlemllcigw
LjI1LCAwLjEsIDAuMjUsIDEpIiwgIjBzIiwgIjEiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKLSAg
ICAgIHsgaWQ6ICdkJywgIHZhbHVlczogWyAiYW5pbTEiLCAiMTBzIiwgImN1YmljLWJlemllcigw
LCAwLCAxLCAxKSIsICIwcyIsICIxIiwgIm5vcm1hbCIsICJub25lIiBdIH0sCi0gICAgICB7IGlk
OiAnZScsICB2YWx1ZXM6IFsgImFuaW0xIiwgIjEwcyIsICJjdWJpYy1iZXppZXIoMCwgMCwgMSwg
MSkiLCAiNXMiLCAiMSIsICJub3JtYWwiLCAibm9uZSIgXSB9LAotICAgICAgeyBpZDogJ2YnLCAg
dmFsdWVzOiBbICJhbmltMSIsICIxMHMiLCAiY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpIiwgIjVz
IiwgIjMiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKLSAgICAgIHsgaWQ6ICdnJywgIHZhbHVlczog
WyAiYW5pbTEiLCAiMTBzIiwgImN1YmljLWJlemllcigwLCAwLCAxLCAxKSIsICI1cyIsICJpbmZp
bml0ZSIsICJhbHRlcm5hdGUiLCAibm9uZSIgXSB9LAotICAgICAgeyBpZDogJ2gnLCAgdmFsdWVz
OiBbICJhbmltMSIsICIxMHMiLCAiY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpIiwgIjVzIiwgImlu
ZmluaXRlIiwgImFsdGVybmF0ZSIsICJmb3J3YXJkcyIgXSB9LAotICAgICAgeyBpZDogJ2knLCAg
dmFsdWVzOiBbICJhbmltMSIsICIxMHMiLCAiY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpIiwgIjBz
IiwgIjEiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKLSAgICAgIHsgaWQ6ICdqJywgIHZhbHVlczog
WyAiYW5pbTEsIGFuaW0yLCBhbmltMyIsICIxMHMsIDNzLCA1cyIsICJjdWJpYy1iZXppZXIoMCwg
MCwgMSwgMSksIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpLCBjdWJpYy1iZXppZXIo
MC4yNSwgMC4xLCAwLjI1LCAxKSIsICIwcywgMHMsIDBzIiwgImluZmluaXRlLCAxLCAxIiwgIm5v
cm1hbCwgbm9ybWFsLCBub3JtYWwiLCAiYmFja3dhcmRzLCBub25lLCBib3RoIiBdIH0KKyAgICAg
IHsgaWQ6ICdkJywgIHZhbHVlczogWyAiYW5pbTEiLCAiMTBzIiwgImxpbmVhciIsICIwcyIsICIx
IiwgIm5vcm1hbCIsICJub25lIiBdIH0sCisgICAgICB7IGlkOiAnZScsICB2YWx1ZXM6IFsgImFu
aW0xIiwgIjEwcyIsICJsaW5lYXIiLCAiNXMiLCAiMSIsICJub3JtYWwiLCAibm9uZSIgXSB9LAor
ICAgICAgeyBpZDogJ2YnLCAgdmFsdWVzOiBbICJhbmltMSIsICIxMHMiLCAibGluZWFyIiwgIjVz
IiwgIjMiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKKyAgICAgIHsgaWQ6ICdnJywgIHZhbHVlczog
WyAiYW5pbTEiLCAiMTBzIiwgImxpbmVhciIsICI1cyIsICJpbmZpbml0ZSIsICJhbHRlcm5hdGUi
LCAibm9uZSIgXSB9LAorICAgICAgeyBpZDogJ2gnLCAgdmFsdWVzOiBbICJhbmltMSIsICIxMHMi
LCAibGluZWFyIiwgIjVzIiwgImluZmluaXRlIiwgImFsdGVybmF0ZSIsICJmb3J3YXJkcyIgXSB9
LAorICAgICAgeyBpZDogJ2knLCAgdmFsdWVzOiBbICJhbmltMSIsICIxMHMiLCAibGluZWFyIiwg
IjBzIiwgIjEiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKKyAgICAgIHsgaWQ6ICdqJywgIHZhbHVl
czogWyAiYW5pbTEsIGFuaW0yLCBhbmltMyIsICIxMHMsIDNzLCA1cyIsICJsaW5lYXIsIGN1Ymlj
LWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpLCBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1
LCAxKSIsICIwcywgMHMsIDBzIiwgImluZmluaXRlLCAxLCAxIiwgIm5vcm1hbCwgbm9ybWFsLCBu
b3JtYWwiLCAiYmFja3dhcmRzLCBub25lLCBib3RoIiBdIH0KICAgICBdOwogICAgIAogICAgIGZ1
bmN0aW9uIHN0YXJ0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvY29tcHV0
ZWQtc3R5bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jb21wdXRlZC1z
dHlsZS1leHBlY3RlZC50eHQKaW5kZXggNjhiMDkyMTJmNDM2MzYyNGQ1MGEwMjk5MmEyYmM5YzA0
OTIyOGRjZS4uOGFjYzUyMDQ1MzdhNzRjZjRhMDVmMjQzMTYyNjkyNzg1NTBiMzM0ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQK
QEAgLTUsMTQgKzUsMTYgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogUEFTUyB0ZXN0MVN0
eWxlLndlYmtpdEFuaW1hdGlvbk5hbWUgaXMgJ2FuaW0xJwogUEFTUyB0ZXN0MlN0eWxlLndlYmtp
dEFuaW1hdGlvbk5hbWUgaXMgJ2FuaW0yLCBhbmltMycKK1BBU1MgdGVzdDNTdHlsZS53ZWJraXRB
bmltYXRpb25OYW1lIGlzICdhbmltMSwgYW5pbTIsIGFuaW0zJwogUEFTUyB0ZXN0MVN0eWxlLndl
YmtpdEFuaW1hdGlvbkR1cmF0aW9uIGlzICcxMHMnCiBQQVNTIHRlc3QyU3R5bGUud2Via2l0QW5p
bWF0aW9uRHVyYXRpb24gaXMgJzVzLCAyLjVzJwogUEFTUyB0ZXN0MVN0eWxlLndlYmtpdEFuaW1h
dGlvbkZpbGxNb2RlIGlzICdiYWNrd2FyZHMnCiBQQVNTIHRlc3QyU3R5bGUud2Via2l0QW5pbWF0
aW9uRmlsbE1vZGUgaXMgJ2ZvcndhcmRzLCBib3RoJwogUEFTUyB0ZXN0MVN0eWxlLndlYmtpdEFu
aW1hdGlvbkl0ZXJhdGlvbkNvdW50IGlzICcxMCcKIFBBU1MgdGVzdDJTdHlsZS53ZWJraXRBbmlt
YXRpb25JdGVyYXRpb25Db3VudCBpcyAnMTAsIGluZmluaXRlJwotUEFTUyB0ZXN0MVN0eWxlLndl
YmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSkn
Ci1QQVNTIHRlc3QyU3R5bGUud2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2N1Ymlj
LWJlemllcigwLCAwLCAxLCAxKSwgY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpJworUEFT
UyB0ZXN0MVN0eWxlLndlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdsaW5lYXInCitQ
QVNTIHRlc3QyU3R5bGUud2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2xpbmVhciwg
Y3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpJworUEFTUyB0ZXN0M1N0eWxlLndlYmtpdEFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdzdGVwcygxLCBzdGFydCksIHN0ZXBzKDEsIGVuZCks
IHN0ZXBzKDUsIGVuZCknCiBQQVNTIHRlc3QxU3R5bGUud2Via2l0QW5pbWF0aW9uRGlyZWN0aW9u
IGlzICdub3JtYWwnCiBQQVNTIHRlc3QyU3R5bGUud2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uIGlz
ICdub3JtYWwsIGFsdGVybmF0ZScKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9u
cy9jb21wdXRlZC1zdHlsZS5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jb21wdXRlZC1z
dHlsZS5odG1sCmluZGV4IDg5YzhlZWRmNDMwM2EyY2YxZjFhMzk2YmJmYWE0NWVhMWFkYWJmOWEu
LmQzZDg2NzgxY2NlYTIwODQyMTMzYmFiZGMxMzc5ZjU0YWFhM2Q2OWIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2FuaW1hdGlvbnMvY29tcHV0ZWQtc3R5bGUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9hbmltYXRpb25zL2NvbXB1dGVkLXN0eWxlLmh0bWwKQEAgLTI2LDYgKzI2LDE1IEBACiAgICAg
ICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyLCBlYXNlLWluLW91
dDsKICAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOiBub3JtYWwsIGFsdGVybmF0
ZTsKICAgICB9CisgICAgI3Rlc3QzIHsKKyAgICAgICAgd2lkdGg6IDIwcHg7CisgICAgICAgIGhl
aWdodDogMjBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgcG9z
aXRpb246IHJlbGF0aXZlOworICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBhbmltMSwg
YW5pbTIsIGFuaW0zOworICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogNXM7Cisg
ICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogc3RlcC1zdGFydCwgc3Rl
cC1lbmQsIHN0ZXBzKDUsIGVuZCk7CisgICAgfQogICAgIEAtd2Via2l0LWtleWZyYW1lcyBhbmlt
MSB7CiAgICAgICAgIGZyb20geyBsZWZ0OiAxMHB4OyB9CiAgICAgICAgIHRvIHsgbGVmdDogMjBw
eDsgfQpAQCAtNDQsNiArNTMsNyBAQAogPGJvZHk+CiA8cCBpZD0idGVzdDEiPjwvcD4KIDxwIGlk
PSJ0ZXN0MiI+PC9wPgorPHAgaWQ9InRlc3QzIj48L3A+CiA8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KQEAgLTU1LDkgKzY1LDExIEBA
IHZhciB0ZXN0MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0MiIpOwogCiB2YXIgdGVz
dDFTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRlc3QxKTsKIHZhciB0ZXN0MlN0eWxl
ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdDIpOwordmFyIHRlc3QzU3R5bGUgPSB3aW5k
b3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0Myk7CiAKIHNob3VsZEJlKCJ0ZXN0MVN0eWxlLndlYmtp
dEFuaW1hdGlvbk5hbWUiLCAiJ2FuaW0xJyIpOwogc2hvdWxkQmUoInRlc3QyU3R5bGUud2Via2l0
QW5pbWF0aW9uTmFtZSIsICInYW5pbTIsIGFuaW0zJyIpOworc2hvdWxkQmUoInRlc3QzU3R5bGUu
d2Via2l0QW5pbWF0aW9uTmFtZSIsICInYW5pbTEsIGFuaW0yLCBhbmltMyciKTsKIAogc2hvdWxk
QmUoInRlc3QxU3R5bGUud2Via2l0QW5pbWF0aW9uRHVyYXRpb24iLCAiJzEwcyciKTsKIHNob3Vs
ZEJlKCJ0ZXN0MlN0eWxlLndlYmtpdEFuaW1hdGlvbkR1cmF0aW9uIiwgIic1cywgMi41cyciKTsK
QEAgLTY4LDggKzgwLDkgQEAgc2hvdWxkQmUoInRlc3QyU3R5bGUud2Via2l0QW5pbWF0aW9uRmls
bE1vZGUiLCAiJ2ZvcndhcmRzLCBib3RoJyIpOwogc2hvdWxkQmUoInRlc3QxU3R5bGUud2Via2l0
QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCAiJzEwJyIpOwogc2hvdWxkQmUoInRlc3QyU3R5bGUu
d2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCAiJzEwLCBpbmZpbml0ZSciKTsKIAotc2hv
dWxkQmUoInRlc3QxU3R5bGUud2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24iLCAiJ2N1Ymlj
LWJlemllcigwLCAwLCAxLCAxKSciKTsKLXNob3VsZEJlKCJ0ZXN0MlN0eWxlLndlYmtpdEFuaW1h
dGlvblRpbWluZ0Z1bmN0aW9uIiwgIidjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSksIGN1YmljLWJl
emllcigwLjQyLCAwLCAwLjU4LCAxKSciKTsKK3Nob3VsZEJlKCJ0ZXN0MVN0eWxlLndlYmtpdEFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uIiwgIidsaW5lYXInIik7CitzaG91bGRCZSgidGVzdDJTdHls
ZS53ZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiIsICInbGluZWFyLCBjdWJpYy1iZXppZXIo
MC40MiwgMCwgMC41OCwgMSknIik7CitzaG91bGRCZSgidGVzdDNTdHlsZS53ZWJraXRBbmltYXRp
b25UaW1pbmdGdW5jdGlvbiIsICInc3RlcHMoMSwgc3RhcnQpLCBzdGVwcygxLCBlbmQpLCBzdGVw
cyg1LCBlbmQpJyIpOwogCiBzaG91bGRCZSgidGVzdDFTdHlsZS53ZWJraXRBbmltYXRpb25EaXJl
Y3Rpb24iLCAiJ25vcm1hbCciKTsKIHNob3VsZEJlKCJ0ZXN0MlN0eWxlLndlYmtpdEFuaW1hdGlv
bkRpcmVjdGlvbiIsICInbm9ybWFsLCBhbHRlcm5hdGUnIik7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hbmltYXRpb25zL2ZpbGwtdW5zZXQtcHJvcGVydGllcy5odG1sIGIvTGF5b3V0VGVzdHMv
YW5pbWF0aW9ucy9maWxsLXVuc2V0LXByb3BlcnRpZXMuaHRtbAppbmRleCBhNDlkZWNhZjUxZmY2
M2NlNzQyMDZmNzg2NmM5NWZjYzc5Y2YyNWI3Li44NTAzNmM0NDY4NzhjMzMzZmJkODBlMDgxNmJk
MzFjNjk2OTYwM2ViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpbGwtdW5z
ZXQtcHJvcGVydGllcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlsbC11bnNl
dC1wcm9wZXJ0aWVzLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAKICAgICAgIHsgJ3Byb3BlcnR5Jzog
J3dlYmtpdFRyYW5zaXRpb25EdXJhdGlvbicsICd2YWx1ZSc6ICcycywgMnMsIDFzLCAxcywgMnMn
IH0sCiAgICAgICB7ICdwcm9wZXJ0eSc6ICd3ZWJraXRUcmFuc2l0aW9uUHJvcGVydHknLCAndmFs
dWUnOiAnbGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0LCBvcGFjaXR5JyB9LAogICAgICAgeyAncHJv
cGVydHknOiAnd2Via2l0VHJhbnNpdGlvbkRlbGF5JywgICAgJ3ZhbHVlJzogJzRzLCAzcywgNHMs
IDNzLCA0cycgfSwKLSAgICAgIHsgJ3Byb3BlcnR5JzogJ3dlYmtpdFRyYW5zaXRpb25UaW1pbmdG
dW5jdGlvbicsICd2YWx1ZSc6ICdjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSksIGN1YmljLWJlemll
cigwLCAwLCAxLCAxKSwgY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpLCBjdWJpYy1iZXppZXIoMCwg
MCwgMSwgMSksIGN1YmljLWJlemllcigwLCAwLCAxLCAxKScgfSwKKyAgICAgIHsgJ3Byb3BlcnR5
JzogJ3dlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbicsICd2YWx1ZSc6ICdsaW5lYXIsIGxp
bmVhciwgbGluZWFyLCBsaW5lYXIsIGxpbmVhcicgfSwKICAgICAgIHsgJ3Byb3BlcnR5JzogJ3dl
YmtpdEFuaW1hdGlvbk5hbWUnLCAgICAgICd2YWx1ZSc6ICdhLCBiLCBjLCBkLCBlJyB9LAogICAg
ICAgeyAncHJvcGVydHknOiAnd2Via2l0QW5pbWF0aW9uRHVyYXRpb24nLCAgJ3ZhbHVlJzogJzEw
cywgMjBzLCAxMHMsIDIwcywgMTBzJyB9LAogICAgICAgeyAncHJvcGVydHknOiAnd2Via2l0QW5p
bWF0aW9uRGVsYXknLCAgICAgJ3ZhbHVlJzogJzFzLCAxcywgMXMsIDFzLCAxcycgfSwKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdGltaW5nLWZ1bmN0aW9ucy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RpbWluZy1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlYmQzNDcwZjA4N2ViYzM0YmJjZmM1OTYwNjBkNWNkY2MxMmFhNDYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RpbWluZy1mdW5jdGlvbnMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjYgQEAKK1RoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmlt
YXRpb24gb2YgdGhlIGxlZnQgcHJvcGVydHkuIEl0IGFuaW1hdGVzIG92ZXIgMSBzZWNvbmQuIEl0
IHRha2VzIDMgc25hcHNob3RzIGFuZCBleHBlY3RzIGVhY2ggcmVzdWx0IHRvIGJlIHdpdGhpbiBh
IHNwZWNpZmllZCByYW5nZS4KK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gxIiBlbGVt
ZW50IGF0IDAuMjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE0MQorUEFTUyAtICJsZWZ0IiBw
cm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRv
OiAxODAKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gxIiBlbGVtZW50IGF0IDAuNzVz
IHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE5NgorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3Ig
ImJveDIiIGVsZW1lbnQgYXQgMC4yNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTQxCitQQVNT
IC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94MiIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhp
bmcgY2xvc2UgdG86IDE4MAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDIiIGVsZW1l
bnQgYXQgMC43NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTk2CitQQVNTIC0gImxlZnQiIHBy
b3BlcnR5IGZvciAiYm94MyIgZWxlbWVudCBhdCAwLjI1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRv
OiAxMjUKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gzIiBlbGVtZW50IGF0IDAuNXMg
c2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTUwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAi
Ym94MyIgZWxlbWVudCBhdCAwLjc1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNzUKK1BBU1Mg
LSAibGVmdCIgcHJvcGVydHkgZm9yICJib3g0IiBlbGVtZW50IGF0IDAuMjVzIHNhdyBzb21ldGhp
bmcgY2xvc2UgdG86IDIwMAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDQiIGVsZW1l
bnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyMDAKK1BBU1MgLSAibGVmdCIgcHJv
cGVydHkgZm9yICJib3g0IiBlbGVtZW50IGF0IDAuNzVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86
IDIwMAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDUiIGVsZW1lbnQgYXQgMC4yNXMg
c2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTAwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAi
Ym94NSIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEwMAorUEFTUyAt
ICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDUiIGVsZW1lbnQgYXQgMC43NXMgc2F3IHNvbWV0aGlu
ZyBjbG9zZSB0bzogMTAwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94NiIgZWxlbWVu
dCBhdCAwLjI1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxMDAKK1BBU1MgLSAibGVmdCIgcHJv
cGVydHkgZm9yICJib3g2IiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzog
MTMzCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94NiIgZWxlbWVudCBhdCAwLjc1cyBz
YXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNjYKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJi
b3g3IiBlbGVtZW50IGF0IDAuMjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEzMworUEFTUyAt
ICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDciIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5n
IGNsb3NlIHRvOiAxNjYKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3g3IiBlbGVtZW50
IGF0IDAuNzVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIwMAorUEFTUyAtICJsZWZ0IiBwcm9w
ZXJ0eSBmb3IgImJveDgiIGVsZW1lbnQgYXQgMC4yNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzog
MTAwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94OCIgZWxlbWVudCBhdCAwLjVzIHNh
dyBzb21ldGhpbmcgY2xvc2UgdG86IDEzMworUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJv
eDgiIGVsZW1lbnQgYXQgMC43NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTY2CisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdGltaW5nLWZ1bmN0aW9ucy5odG1sIGIvTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy90aW1pbmctZnVuY3Rpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmVh
M2UwYzBmYmNlY2M2YmE1NTcxMjdhY2E2ZDRkMTBkYzZmM2Q3NAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdGltaW5nLWZ1bmN0aW9ucy5odG1sCkBAIC0wLDAgKzEs
MTA1IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFu
c2l0aW9uYWwvL0VOIgorICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+
CisKKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgIDx0aXRsZT5UZXN0
IHRpbWluZyBmdW5jdGlvbnM8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlh
PSJzY3JlZW4iPgorICAgIC5ib3ggeworICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAg
bGVmdDogMTAwcHg7CisgICAgICB0b3A6IDBweDsKKyAgICAgIGhlaWdodDogNXB4OworICAgICAg
d2lkdGg6IDVweDsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAtd2Via2l0
LWFuaW1hdGlvbi1kdXJhdGlvbjogMXM7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBh
bmltOworICAgIH0KKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbSB7CisgICAgICAgIGZyb20g
eyBsZWZ0OiAxMDBweDsgfQorICAgICAgICB0byAgIHsgbGVmdDogMjAwcHg7IH0KKyAgICB9Cisg
ICAgI2JveDEgeworICAgIH0KKyAgICAjYm94MiB7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi10
aW1pbmctZnVuY3Rpb246IGVhc2U7CisgICAgfQorICAgICNib3gzIHsKKyAgICAgIC13ZWJraXQt
YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOworICAgIH0KKyAgICAjYm94NCB7Cisg
ICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHN0ZXAtc3RhcnQ7CisgICAg
fQorICAgICNib3g1IHsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjog
c3RlcC1lbmQ7CisgICAgfQorICAgICNib3g2IHsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRp
bWluZy1mdW5jdGlvbjogc3RlcHMoMyk7CisgICAgfQorICAgICNib3g3IHsKKyAgICAgIC13ZWJr
aXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogc3RlcHMoMywgc3RhcnQpOworICAgIH0KKyAg
ICAjYm94OCB7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHN0ZXBz
KDMsIGVuZCk7CisgICAgfQorICAgIAorICA8L3N0eWxlPgorICA8c2NyaXB0IHNyYz0iYW5pbWF0
aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYt
OCI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1
dGYtOCI+CisKKyAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAgICAgIC8vIFthbmltYXRp
b24tbmFtZSwgdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVjdGVkLXZhbHVlLCB0b2xl
cmFuY2VdCisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94MSIsICJsZWZ0IiwgMTQxLCA1XSwKKyAg
ICAgIFsiYW5pbSIsIDAuNTAsICJib3gxIiwgImxlZnQiLCAxODAsIDVdLAorICAgICAgWyJhbmlt
IiwgMC43NSwgImJveDEiLCAibGVmdCIsIDE5NiwgNV0sCisgICAgICBbImFuaW0iLCAwLjI1LCAi
Ym94MiIsICJsZWZ0IiwgMTQxLCA1XSwKKyAgICAgIFsiYW5pbSIsIDAuNTAsICJib3gyIiwgImxl
ZnQiLCAxODAsIDVdLAorICAgICAgWyJhbmltIiwgMC43NSwgImJveDIiLCAibGVmdCIsIDE5Niwg
NV0sCisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94MyIsICJsZWZ0IiwgMTI1LCA1XSwKKyAgICAg
IFsiYW5pbSIsIDAuNTAsICJib3gzIiwgImxlZnQiLCAxNTAsIDVdLAorICAgICAgWyJhbmltIiwg
MC43NSwgImJveDMiLCAibGVmdCIsIDE3NSwgNV0sCisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94
NCIsICJsZWZ0IiwgMjAwLCA1XSwKKyAgICAgIFsiYW5pbSIsIDAuNTAsICJib3g0IiwgImxlZnQi
LCAyMDAsIDVdLAorICAgICAgWyJhbmltIiwgMC43NSwgImJveDQiLCAibGVmdCIsIDIwMCwgNV0s
CisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94NSIsICJsZWZ0IiwgMTAwLCA1XSwKKyAgICAgIFsi
YW5pbSIsIDAuNTAsICJib3g1IiwgImxlZnQiLCAxMDAsIDVdLAorICAgICAgWyJhbmltIiwgMC43
NSwgImJveDUiLCAibGVmdCIsIDEwMCwgNV0sCisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94NiIs
ICJsZWZ0IiwgMTAwLCA1XSwKKyAgICAgIFsiYW5pbSIsIDAuNTAsICJib3g2IiwgImxlZnQiLCAx
MzMsIDVdLAorICAgICAgWyJhbmltIiwgMC43NSwgImJveDYiLCAibGVmdCIsIDE2NiwgNV0sCisg
ICAgICBbImFuaW0iLCAwLjI1LCAiYm94NyIsICJsZWZ0IiwgMTMzLCA1XSwKKyAgICAgIFsiYW5p
bSIsIDAuNTAsICJib3g3IiwgImxlZnQiLCAxNjYsIDVdLAorICAgICAgWyJhbmltIiwgMC43NSwg
ImJveDciLCAibGVmdCIsIDIwMCwgNV0sCisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94OCIsICJs
ZWZ0IiwgMTAwLCA1XSwKKyAgICAgIFsiYW5pbSIsIDAuNTAsICJib3g4IiwgImxlZnQiLCAxMzMs
IDVdLAorICAgICAgWyJhbmltIiwgMC43NSwgImJveDgiLCAibGVmdCIsIDE2NiwgNV0sCisgICAg
XTsKKyAgICAKKyAgICBydW5BbmltYXRpb25UZXN0KGV4cGVjdGVkVmFsdWVzKTsKKyAgICAKKyAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRp
b24gb2YgdGhlIGxlZnQgcHJvcGVydHkuIEl0IGFuaW1hdGVzIG92ZXIgMSBzZWNvbmQuCitJdCB0
YWtlcyAzIHNuYXBzaG90cyBhbmQgZXhwZWN0cyBlYWNoIHJlc3VsdCB0byBiZSB3aXRoaW4gYSBz
cGVjaWZpZWQgcmFuZ2UuCis8ZGl2IGNsYXNzPSJib3giIGlkPSJib3gxIj4KKzwvZGl2PgorPGRp
diBjbGFzcz0iYm94IiBpZD0iYm94MiI+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImJveCIgaWQ9ImJv
eDMiPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJib3giIGlkPSJib3g0Ij4KKzwvZGl2PgorPGRpdiBj
bGFzcz0iYm94IiBpZD0iYm94NSI+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImJveCIgaWQ9ImJveDYi
PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJib3giIGlkPSJib3g3Ij4KKzwvZGl2PgorPGRpdiBjbGFz
cz0iYm94IiBpZD0iYm94OCI+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+Cis8L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2luaGVy
aXQtb3RoZXItcHJvcHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvaW5o
ZXJpdC1vdGhlci1wcm9wcy1leHBlY3RlZC50eHQKaW5kZXggMjlkMWE1YzIyN2VmYzNlYTVlYzY0
YTc2MTdhODUxZmMyMTA5NDQyMS4uMmRkYWRiZGY1OGU4Y2Y3ZWM4YmE2YzI1NGVmNGJmZDQxMjBk
OWQxMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvaW5oZXJpdC1vdGhlci1w
cm9wcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvaW5oZXJpdC1v
dGhlci1wcm9wcy1leHBlY3RlZC50eHQKQEAgLTMsMTYgKzMsMTYgQEAgUEFTUyAtLSBCb3ggMSBj
b21wdXRlZCB0cmFuc2l0aW9uIGR1cmF0aW9uOiAwcyBleHBlY3RlZDogMHMKIFBBU1MgLS0gQm94
IDEgY29tcHV0ZWQgdHJhbnNpdGlvbiB0aW1pbmcgZnVuY3Rpb246IGN1YmljLWJlemllcigwLjI1
LCAwLjEsIDAuMjUsIDEpIGV4cGVjdGVkOiBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAx
KQogUEFTUyAtLSBCb3ggMiBjb21wdXRlZCB0cmFuc2l0aW9uIHByb3BlcnR5OiBsZWZ0IGV4cGVj
dGVkOiBsZWZ0CiBQQVNTIC0tIEJveCAyIGNvbXB1dGVkIHRyYW5zaXRpb24gZHVyYXRpb246IDJz
IGV4cGVjdGVkOiAycwotUEFTUyAtLSBCb3ggMiBjb21wdXRlZCB0cmFuc2l0aW9uIHRpbWluZyBm
dW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpIGV4cGVjdGVkOiBjdWJpYy1iZXppZXIo
MCwgMCwgMSwgMSkKK1BBU1MgLS0gQm94IDIgY29tcHV0ZWQgdHJhbnNpdGlvbiB0aW1pbmcgZnVu
Y3Rpb246IGxpbmVhciBleHBlY3RlZDogbGluZWFyCiBQQVNTIC0tIEJveCAzIGNvbXB1dGVkIHRy
YW5zaXRpb24gcHJvcGVydHk6IGxlZnQgZXhwZWN0ZWQ6IGxlZnQKIFBBU1MgLS0gQm94IDMgY29t
cHV0ZWQgdHJhbnNpdGlvbiBkdXJhdGlvbjogMnMgZXhwZWN0ZWQ6IDJzCi1QQVNTIC0tIEJveCAz
IGNvbXB1dGVkIHRyYW5zaXRpb24gdGltaW5nIGZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwg
MSwgMSkgZXhwZWN0ZWQ6IGN1YmljLWJlemllcigwLCAwLCAxLCAxKQorUEFTUyAtLSBCb3ggMyBj
b21wdXRlZCB0cmFuc2l0aW9uIHRpbWluZyBmdW5jdGlvbjogbGluZWFyIGV4cGVjdGVkOiBsaW5l
YXIKIFBBU1MgLS0gQm94IDQgY29tcHV0ZWQgdHJhbnNpdGlvbiBwcm9wZXJ0eTogbGVmdCBleHBl
Y3RlZDogbGVmdAogUEFTUyAtLSBCb3ggNCBjb21wdXRlZCB0cmFuc2l0aW9uIGR1cmF0aW9uOiAy
cyBleHBlY3RlZDogMnMKLVBBU1MgLS0gQm94IDQgY29tcHV0ZWQgdHJhbnNpdGlvbiB0aW1pbmcg
ZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAxLCAxKSBleHBlY3RlZDogY3ViaWMtYmV6aWVy
KDAsIDAsIDEsIDEpCitQQVNTIC0tIEJveCA0IGNvbXB1dGVkIHRyYW5zaXRpb24gdGltaW5nIGZ1
bmN0aW9uOiBsaW5lYXIgZXhwZWN0ZWQ6IGxpbmVhcgogUEFTUyAtLSBCb3ggNSBjb21wdXRlZCB0
cmFuc2l0aW9uIHByb3BlcnR5OiBsZWZ0IGV4cGVjdGVkOiBsZWZ0CiBQQVNTIC0tIEJveCA1IGNv
bXB1dGVkIHRyYW5zaXRpb24gZHVyYXRpb246IDJzIGV4cGVjdGVkOiAycwotUEFTUyAtLSBCb3gg
NSBjb21wdXRlZCB0cmFuc2l0aW9uIHRpbWluZyBmdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAs
IDEsIDEpIGV4cGVjdGVkOiBjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSkKK1BBU1MgLS0gQm94IDUg
Y29tcHV0ZWQgdHJhbnNpdGlvbiB0aW1pbmcgZnVuY3Rpb246IGxpbmVhciBleHBlY3RlZDogbGlu
ZWFyCiBQQVNTIC0tIEJveCA2IGNvbXB1dGVkIHRyYW5zaXRpb24gcHJvcGVydHk6IGFsbCBleHBl
Y3RlZDogYWxsCiBQQVNTIC0tIEJveCA2IGNvbXB1dGVkIHRyYW5zaXRpb24gZHVyYXRpb246IDBz
IGV4cGVjdGVkOiAwcwogUEFTUyAtLSBCb3ggNiBjb21wdXRlZCB0cmFuc2l0aW9uIHRpbWluZyBm
dW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSkgZXhwZWN0ZWQ6IGN1Ymlj
LWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFu
c2l0aW9ucy9pbmhlcml0LW90aGVyLXByb3BzLmh0bWwgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9u
cy9pbmhlcml0LW90aGVyLXByb3BzLmh0bWwKaW5kZXggYTc1YTViODA3NDNlYmU0ZjI2NjA3NmE4
NGE3OTFiNDI2ZjUyNDgyZS4uMWE5MjFjMjQzNzY3MzQxMDc4YTc0NDZmZTU0NzY1YTY4ZjM2OWIy
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvaW5oZXJpdC1vdGhlci1wcm9w
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2luaGVyaXQtb3RoZXItcHJvcHMu
aHRtbApAQCAtNDcsMTAgKzQ3LDEwIEBACiAKICAgICB2YXIga0V4cGVjdGVkVGltaW5nRnVuY3Rp
b24gPSBbCiAgICAgICAnY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSknLCAvKiBib3gx
ICovCi0gICAgICAnY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpJywgLyogYm94MiAqLwotICAgICAg
J2N1YmljLWJlemllcigwLCAwLCAxLCAxKScsIC8qIGJveDMgKi8KLSAgICAgICdjdWJpYy1iZXpp
ZXIoMCwgMCwgMSwgMSknLCAvKiBib3g0ICovIC8qIGluaGVyaXRzIGZyb20gYm94MyAqLwotICAg
ICAgJ2N1YmljLWJlemllcigwLCAwLCAxLCAxKScsIC8qIGJveDUgKi8KKyAgICAgICdsaW5lYXIn
LCAvKiBib3gyICovCisgICAgICAnbGluZWFyJywgLyogYm94MyAqLworICAgICAgJ2xpbmVhcics
IC8qIGJveDQgKi8gLyogaW5oZXJpdHMgZnJvbSBib3gzICovCisgICAgICAnbGluZWFyJywgLyog
Ym94NSAqLwogICAgICAgJ2N1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpJywgLyogYm94
NiAqLyAvKiBkb2VzIE5PVCBpbmhlcml0ICovCiAgICAgXTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdHJhbnNpdGlvbnMvc3RlcHMtdGltaW5nLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RyYW5zaXRpb25zL3N0ZXBzLXRpbWluZy1mdW5jdGlvbi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGNmMTE3MGQ4ZjczNjViOWYwNDY4NGYxNGYzNTJhNDg5OWJkYTNiZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3N0ZXBzLXRpbWluZy1mdW5j
dGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUaGUgYm94IHNob3VsZCBtb3ZlIGhv
cml6b250YWxseSAyMDBweCBvdmVyIDFzLCBpbiAzIGVxdWFsIGluY3JlbWVudHMuCisKK1BBU1Mg
LSAiLXdlYmtpdC10cmFuc2Zvcm0uNCIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC4y
NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMAorUEFTUyAtICItd2Via2l0LXRyYW5zZm9ybS40
IiBwcm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhpbmcgY2xvc2Ug
dG86IDY2CitQQVNTIC0gIi13ZWJraXQtdHJhbnNmb3JtLjQiIHByb3BlcnR5IGZvciAiYm94IiBl
bGVtZW50IGF0IDAuNzVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEzMworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9zdGVwcy10aW1pbmctZnVuY3Rpb24uaHRtbCBiL0xh
eW91dFRlc3RzL3RyYW5zaXRpb25zL3N0ZXBzLXRpbWluZy1mdW5jdGlvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY2ZmFlMzE1OTI3Y2Q2ZjRjZTRjNWFiNmM0ZjE0YzU2NTAwNDVkMmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9zdGVwcy10aW1pbmctZnVuY3Rpb24uaHRt
bApAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhU
TUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgorICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0
L2xvb3NlLmR0ZCI+CisKKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cisg
IDx0aXRsZT5UcmFuc2l0aW9uIHdpdGggc3RlcHMgdGltaW5nIGZ1bmN0aW9uPC90aXRsZT4KKyAg
PHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAjYm94IHsKKyAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiBibHVlOworICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMHB4KTsKKyAg
ICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMXM7CisgICAgICAtd2Via2l0LXRyYW5z
aXRpb24tdGltaW5nLWZ1bmN0aW9uOiBzdGVwcygzLCBlbmQpOworICAgICAgLXdlYmtpdC10cmFu
c2l0aW9uLXByb3BlcnR5OiAtd2Via2l0LXRyYW5zZm9ybTsKKyAgICB9CisgIDwvc3R5bGU+Cisg
IDxzY3JpcHQgc3JjPSJ0cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgICAgCisgICAgY29uc3QgZXhwZWN0ZWRWYWx1
ZXMgPSBbCisgICAgICAvLyBbdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVjdGVkLXZh
bHVlLCB0b2xlcmFuY2VdCisgICAgICBbMC4yNSwgImJveCIsICItd2Via2l0LXRyYW5zZm9ybS40
IiwgMCwgNV0sCisgICAgICBbMC41LCAiYm94IiwgIi13ZWJraXQtdHJhbnNmb3JtLjQiLCA2Niwg
NV0sCisgICAgICBbMC43NSwgImJveCIsICItd2Via2l0LXRyYW5zZm9ybS40IiwgMTMzLCA1XSwK
KyAgICBdOworICAgIAorICAgIGZ1bmN0aW9uIHNldHVwVGVzdCgpCisgICAgeworICAgICAgdmFy
IGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKTsKKyAgICAgIGJveC5zdHlsZS53
ZWJraXRUcmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgyMDBweCknOworICAgIH0KKyAgICAKKyAgICBy
dW5UcmFuc2l0aW9uVGVzdChleHBlY3RlZFZhbHVlcywgc2V0dXBUZXN0LCB0cnVlKTsKKyAgICAK
KyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHA+CitUaGUgYm94IHNob3VsZCBtb3Zl
IGhvcml6b250YWxseSAyMDBweCBvdmVyIDFzLCBpbiAzIGVxdWFsIGluY3JlbWVudHMuCis8L3A+
Cis8ZGl2IGlkPSJib3giPgorPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPgorPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGNiNDEzODcyNDlhNDNiY2UzZjk5M2NhOGQ0NWFhMDhkNTYzNGU5MDMuLjlm
YmYzZjkxZDJjYTdlOGRkMGE4YWEwODdmZTI3YzUzZDk0MjkwZmUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTExIEBACisy
MDEwLTA5LTA4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgc3RlcHMoKSB0aW1p
bmcgZnVuY3Rpb24gZm9yIGFuaW1hdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ0NTQxCisKKyAgICAgICAgVGVzdHM6IGFuaW1hdGlvbnMvdGlt
aW5nLWZ1bmN0aW9ucy5odG1sCisgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy9zdGVwcy10aW1p
bmctZnVuY3Rpb24uaHRtbAorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAg
ICAgICAgICAgIC0gd2hlbiBjcmVhdGluZyBjb21wdXRlZCBzdHlsZSB3ZSBub3cgdGVzdCB3aGF0
CisgICAgICAgICAgICAgIHR5cGUgb2YgdGltaW5nIGZ1bmN0aW9uIGl0IGJlaW5nIHVzZWQKKyAg
ICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAgICAgLSByZW5h
bWUgdGhpcyBtZXRob2QgZnJvbSBwYXJzZVRpbWluZ0Z1bmN0aW9uVmFsdWUKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25UaW1pbmdGdW5jdGlvbik6CisgICAgICAg
ICAgICAtIHN1cHBvcnQgcGFyc2luZyB0aGUgc3RlcHMoKSBmdW5jdGlvbgorICAgICAgICAqIGNz
cy9DU1NQYXJzZXIuaDoKKyAgICAgICAgICAgIC0gbWV0aG9kIHJlbmFtZQorICAgICAgICAqIGNz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0
b3I6Om1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgICAgIC0gaGFuZGxlICdz
dGVwLXN0YXJ0JyBhbmQgJ3N0ZXAtZW5kJyBpZGVudGlmaWVycy4gQWxzbworICAgICAgICAgICAg
ICBub3cgdXNlIDo6Y3JlYXRlIHdoZW4gY29uc3RydWN0aW5nIG9iamVjdHMKKyAgICAgICAgKiBj
c3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5l
YXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNzc1RleHQpOgorICAgICAgICAgICAgLSBu
ZXcgdGV4dCBvdXRwdXQgZm9yIGNvbXB1dGVkIHN0eWxlLiBXZSBub3cgcHJvZHVjZQorICAgICAg
ICAgICAgICB0aGUgdGV4dCAnbGluZWFyJyB3aGVuIGFwcHJvcHJpYXRlLgorICAgICAgICAqIGNz
cy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NUaW1pbmdG
dW5jdGlvblZhbHVlOjppc0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6aXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6aXNTdGVw
c1RpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVGltaW5nRnVuY3Rp
b25WYWx1ZTo6Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
aW1pbmdGdW5jdGlvblZhbHVlOjppc1RpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmlzTGluZWFyVGltaW5nRnVuY3Rp
b25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVl
OjpDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6aXNDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvblZhbHVlOjpDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpudW1iZXJPZlN0ZXBzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6c3RlcEF0U3RhcnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjppc1N0ZXBz
VGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdGVwc1RpbWluZ0Z1
bmN0aW9uVmFsdWU6OkNTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgICAgICAt
IENTU1RpbWluZ0Z1bmN0aW9uIGlzIG5vdyBhIHB1cmUgdmlydHVhbCByZWYtY291bnRlZCBiYXNl
IGNsYXNzLCB3aXRoCisgICAgICAgICAgICAgIHN1YmNsYXNzZXMgZm9yIGVhY2ggb2YgdGhlIHRo
cmVlIHN1cHBvcnRlZCB0aW1pbmcgZnVuY3Rpb25zLgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUtl
eXdvcmRzLmluOgorICAgICAgICAgICAgLSBuZXcga2V5d29yZHMgc3RlcC1zdGFydCBhbmQgc3Rl
cC1lbmQKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNvbHZlU3RlcHNGdW5jdGlvbik6CisgICAgICAgICAgICAtIHByb2R1Y2Vz
IHRoZSBvdXRwdXQgdmFsdWUgZnJvbSBhIHN0ZXBwaW5nIGZ1bmN0aW9uCisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25CYXNlOjpwcm9ncmVzcyk6CisgICAgICAgICAgICAtIG5vdyBoYXMgdG8g
c3dpdGNoIGJhc2VkIG9uIHRpbWluZyBmdW5jdGlvbiB0eXBlCisgICAgICAgICogcGFnZS9hbmlt
YXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVB
bmltYXRpb246OmZldGNoSW50ZXJ2YWxFbmRwb2ludHNGb3JQcm9wZXJ0eSk6CisgICAgICAgICAg
ICAtIHVzZSByZWYtY291bnRlZCBhY2Nlc3MKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24v
QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbjo6YW5pbWF0aW9uc01h
dGNoKToKKyAgICAgICAgICAgIC0gY2hhbmdlIHRpbWluZyBmdW5jdGlvbiBjb21wYXJpc29uIGZv
ciBvcGVyYXRvcj09CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjp0aW1pbmdGdW5jdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpBbmltYXRpb246OnNldFRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgICAg
IC0gbW92ZSB0byByZWYtY291bnRlZCB0aW1pbmcgZnVuY3Rpb24gY2xhc3MKKyAgICAgICAgKiBw
bGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlRp
bWluZ0Z1bmN0aW9uOjp+VGltaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGltaW5n
RnVuY3Rpb246OmlzTGluZWFyVGltaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGlt
aW5nRnVuY3Rpb246OmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpUaW1pbmdGdW5jdGlvbjo6aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlRpbWluZ0Z1bmN0aW9uOjpUaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVh
clRpbWluZ0Z1bmN0aW9uOjp+TGluZWFyVGltaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TGluZWFyVGltaW5nRnVuY3Rpb246Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6
TGluZWFyVGltaW5nRnVuY3Rpb246OkxpbmVhclRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjp+Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OkN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3RlcHNUaW1pbmdGdW5j
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBzVGltaW5nRnVuY3Rpb246On5T
dGVwc1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBzVGltaW5nRnVuY3Rp
b246Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6U3RlcHNUaW1pbmdGdW5jdGlvbjo6
bnVtYmVyT2ZTdGVwcyk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjpz
dGVwQXRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVw
c1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgICAgIC0gVGltaW5nRnVuY3Rpb24gaXMgbm93IGEg
cmVmLWNvdW50ZWQgcHVyZSB2aXJ0dWFsIGJhc2UgY2xhc3MsCisgICAgICAgICAgICAgIHdpdGgg
dGhyZWUgc3ViY2xhc3NlcyByZXByZXNlbnRpbmcgdGhlIHR5cGVzIG9mIHRpbWluZyBmdW5jdGlv
bnMKKyAgICAgICAgICAgICAgdGhhdCBhcmUgc3VwcG9ydGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblZh
bHVlOjpBbmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZh
bHVlOjpGbG9hdEFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSk6CisgICAgICAgICAgICAtIHVz
ZSBQYXNzUmVmUHRyIGluIGZ1bmN0aW9uIHBhcmFtZXRlcnMKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q0FN
ZWRpYVRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgICAgIC0gdXBkYXRlIGZvciBuZXcgdGltaW5n
IGZ1bmN0aW9uIGludGVyZmFjZQorICAgICAgICAoV2ViQ29yZTo6YW5pbWF0aW9uSGFzU3RlcHNU
aW1pbmdGdW5jdGlvbik6CisgICAgICAgICAgICAtIG5ldyBtZXRob2QgdG8gbWFrZSBzdXJlIGFu
aW1hdGlvbnMgd2l0aCBzdGVwcygpIGZ1bmN0aW9ucworICAgICAgICAgICAgICBuZXZlciB0cnkg
dG8gZXhlY3V0ZSBpbiBDb3JlIEFuaW1hdGlvbgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjphZGRBbmltYXRpb24pOgorICAgICAgICAgICAgLSB0ZXN0IGZvciBzdGVwcygpIHRp
bWluZyBmdW5jdGlvbgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp0aW1pbmdG
dW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIG9sZCBSZW5kZXJTdHls
ZSBlbnVtIGZvciB0aW1pbmcgZnVuY3Rpb24gdHlwZXMKKwogMjAxMC0wOS0wOCAgQW5keSBFc3Rl
cyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgRGFyaW4g
QWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRl
eCBiMWU4YWM0MDE1NGMwNDgyZTNiZTlkZTVjMDBkY2M3ZWY5MWFmMjc5Li43ZDNjZGM5NTdlNzFi
YmQxMmQxYTg3ODM5ZjBiZjg1NGY5MGI0OGI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTUwMSwxMyArNTAxLDI5IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBnZXRUaW1pbmdGdW5jdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3Qq
IGFuaW1MaXN0CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBpZiAoYW5pbUxpc3QpIHsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBhbmltTGlzdC0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAg
IGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0ZiA9IGFuaW1MaXN0LT5hbmltYXRpb24oaSktPnRpbWlu
Z0Z1bmN0aW9uKCk7Ci0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVGltaW5nRnVuY3Rpb25W
YWx1ZTo6Y3JlYXRlKHRmLngxKCksIHRmLnkxKCksIHRmLngyKCksIHRmLnkyKCkpKTsKKyAgICAg
ICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0ZiA9IGFuaW1MaXN0LT5hbmltYXRpb24oaSkt
PnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7CisgICAgICAgICAgICBpZiAodGYtPmlzQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbigpKSB7CisgICAgICAgICAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvbiogY3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbio+KHRmKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoY3RmLT54MSgpLCBjdGYtPnkxKCksIGN0Zi0+
eDIoKSwgY3RmLT55MigpKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRmLT5pc1N0ZXBzVGlt
aW5nRnVuY3Rpb24oKSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rp
b24qIHN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24qPih0Zik7Cisg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6
Y3JlYXRlKHN0Zi0+bnVtYmVyT2ZTdGVwcygpLCBzdGYtPnN0ZXBBdFN0YXJ0KCkpKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU0xpbmVhclRp
bWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE5vdGUgdGhhdCBpbml0aWFsQW5pbWF0aW9uVGltaW5n
RnVuY3Rpb24oKSBpcyB1c2VkIGZvciBib3RoIHRyYW5zaXRpb25zIGFuZCBhbmltYXRpb25zCi0g
ICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0ZiA9IEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1h
dGlvblRpbWluZ0Z1bmN0aW9uKCk7Ci0gICAgICAgIGxpc3QtPmFwcGVuZChDU1NUaW1pbmdGdW5j
dGlvblZhbHVlOjpjcmVhdGUodGYueDEoKSwgdGYueTEoKSwgdGYueDIoKSwgdGYueTIoKSkpOwor
ICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGYgPSBBbmltYXRpb246OmluaXRpYWxBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbigpLmdldCgpOworICAgICAgICBpZiAodGYtPmlzQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbigpKSB7CisgICAgICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWlu
Z0Z1bmN0aW9uKiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uKj4odGYpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU0N1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKGN0Zi0+eDEoKSwgY3RmLT55MSgpLCBjdGYtPngyKCksIGN0
Zi0+eTIoKSkpOworICAgICAgICB9IGVsc2UgaWYgKHRmLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24o
KSkgeworICAgICAgICAgICAgY29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiogc3RmID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbio+KHRmKTsKKyAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShzdGYtPm51bWJlck9m
U3RlcHMoKSwgc3RmLT5zdGVwQXRTdGFydCgpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKCkp
OworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCmluZGV4IDJhZDMyOTQyNGUyMmFmMDNhOTk3ZDA2MzM3ODlkNDY5ZWEwZThkNTMuLmY5Mjcx
MTA4ZTA3MTJiZTIzMjg3NTQ2NzRjYzQxZTIzYzRkYmNkMzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMjc4
NCw3ICsyNzg0LDcgQEAgdm9pZCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNmb3JtT3JpZ2luU2hvcnRo
YW5kKFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMSwgUmVmUHRyPEMKICAgICAgICAgbV92YWx1ZUxp
c3QtPm5leHQoKTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlVGltaW5nRnVuY3Rpb25WYWx1
ZShDU1NQYXJzZXJWYWx1ZUxpc3QqJiBhcmdzLCBkb3VibGUmIHJlc3VsdCkKK2Jvb2wgQ1NTUGFy
c2VyOjpwYXJzZUN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZShDU1NQYXJzZXJWYWx1ZUxp
c3QqJiBhcmdzLCBkb3VibGUmIHJlc3VsdCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSogdiA9IGFy
Z3MtPmN1cnJlbnQoKTsKICAgICBpZiAoIXZhbGlkVW5pdCh2LCBGTnVtYmVyLCBtX3N0cmljdCkp
CkBAIC0yODA1LDMxICsyODA1LDY3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRpbWluZ0Z1bmN0
aW9uVmFsdWUoQ1NTUGFyc2VyVmFsdWVMaXN0KiYgYXJncywgZG91YmxlJiByZXN1CiBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oKQog
ewogICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7Ci0g
ICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUVhc2UgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVl
TGluZWFyIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUVhc2VJbiB8fCB2YWx1ZS0+aWQgPT0gQ1NT
VmFsdWVFYXNlT3V0IHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUVhc2VJbk91dCkKKyAgICBpZiAo
dmFsdWUtPmlkID09IENTU1ZhbHVlRWFzZSB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVMaW5lYXIg
fHwgdmFsdWUtPmlkID09IENTU1ZhbHVlRWFzZUluIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUVh
c2VPdXQKKyAgICAgICAgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlRWFzZUluT3V0IHx8IHZhbHVl
LT5pZCA9PSBDU1NWYWx1ZVN0ZXBTdGFydCB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVTdGVwRW5k
KQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIodmFs
dWUtPmlkKTsKIAogICAgIC8vIFdlIG11c3QgYmUgYSBmdW5jdGlvbi4KICAgICBpZiAodmFsdWUt
PnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIC8vIFRoZSBvbmx5IHRpbWluZyBmdW5jdGlvbiB3ZSBhY2NlcHQgZm9yIG5vdyBpcyBhIGN1
YmljIGJlemllciBmdW5jdGlvbi4gIDQgcG9pbnRzIG11c3QgYmUgc3BlY2lmaWVkLgogICAgIENT
U1BhcnNlclZhbHVlTGlzdCogYXJncyA9IHZhbHVlLT5mdW5jdGlvbi0+YXJncy5nZXQoKTsKLSAg
ICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgImN1YmljLWJl
emllcigiKSB8fCAhYXJncyB8fCBhcmdzLT5zaXplKCkgIT0gNykKLSAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICAvLyBUaGVyZSBhcmUgdHdvIHBvaW50cyBzcGVjaWZpZWQuICBUaGUgdmFsdWVzIG11
c3QgYmUgYmV0d2VlbiAwIGFuZCAxLgotICAgIGRvdWJsZSB4MSwgeTEsIHgyLCB5MjsKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAic3RlcHMoIikpIHsK
KyAgICAgICAgLy8gRm9yIHN0ZXBzLCAxIG9yIDIgcGFyYW1zIG11c3QgYmUgc3BlY2lmaWVkIChj
b21tYS1zZXBhcmF0ZWQpCisgICAgICAgIGlmICghYXJncyB8fCAoYXJncy0+c2l6ZSgpICE9IDEg
JiYgYXJncy0+c2l6ZSgpICE9IDMpKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAo
IXBhcnNlVGltaW5nRnVuY3Rpb25WYWx1ZShhcmdzLCB4MSkpCi0gICAgICAgIHJldHVybiAwOwot
ICAgIGlmICghcGFyc2VUaW1pbmdGdW5jdGlvblZhbHVlKGFyZ3MsIHkxKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgaWYgKCFwYXJzZVRpbWluZ0Z1bmN0aW9uVmFsdWUoYXJncywgeDIpKQotICAg
ICAgICByZXR1cm4gMDsKLSAgICBpZiAoIXBhcnNlVGltaW5nRnVuY3Rpb25WYWx1ZShhcmdzLCB5
MikpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICAvLyBUaGVyZSBhcmUgdHdvIHZhbHVlcy4K
KyAgICAgICAgaW50IG51bVN0ZXBzOworICAgICAgICBib29sIHN0ZXBBdFN0YXJ0ID0gZmFsc2U7
CiAKLSAgICByZXR1cm4gQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHgxLCB5MSwgeDIs
IHkyKTsKKyAgICAgICAgQ1NTUGFyc2VyVmFsdWUqIHYgPSBhcmdzLT5jdXJyZW50KCk7CisgICAg
ICAgIGlmICghdmFsaWRVbml0KHYsIEZJbnRlZ2VyLCBtX3N0cmljdCkpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgbnVtU3RlcHMgPSB2LT5mVmFsdWU7CisgICAgICAgIGlmIChudW1T
dGVwcyA8IDEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgdiA9IGFyZ3MtPm5leHQo
KTsKKworICAgICAgICBpZiAodikgeworICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSBjb21tYSBz
byB3ZSBuZWVkIHRvIHBhcnNlIHRoZSBzZWNvbmQgdmFsdWUKKyAgICAgICAgICAgIGlmICh2LT51
bml0ICE9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciAmJiB2LT5pVmFsdWUgIT0gJywnKQorICAg
ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgdiA9IGFyZ3MtPm5leHQoKTsKKyAg
ICAgICAgICAgIGlmICh2LT5pZCAhPSBDU1NWYWx1ZVN0YXJ0ICYmIHYtPmlkICE9IENTU1ZhbHVl
RW5kKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgc3RlcEF0U3RhcnQg
PSB2LT5pZCA9PSBDU1NWYWx1ZVN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIENT
U1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKG51bVN0ZXBzLCBzdGVwQXRTdGFydCk7
CisgICAgfQorICAgIAorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS0+ZnVuY3Rpb24t
Pm5hbWUsICJjdWJpYy1iZXppZXIoIikpIHsKKyAgICAgICAgLy8gRm9yIGN1YmljIGJlemllciwg
NCB2YWx1ZXMgbXVzdCBiZSBzcGVjaWZpZWQuCisgICAgICAgIGlmICghYXJncyB8fCBhcmdzLT5z
aXplKCkgIT0gNykKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIC8vIFRoZXJlIGFy
ZSB0d28gcG9pbnRzIHNwZWNpZmllZC4gIFRoZSB2YWx1ZXMgbXVzdCBiZSBiZXR3ZWVuIDAgYW5k
IDEuCisgICAgICAgIGRvdWJsZSB4MSwgeTEsIHgyLCB5MjsKKworICAgICAgICBpZiAoIXBhcnNl
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKGFyZ3MsIHgxKSkKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICBpZiAoIXBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVl
KGFyZ3MsIHkxKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoIXBhcnNlQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKGFyZ3MsIHgyKSkKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICBpZiAoIXBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKGFy
Z3MsIHkyKSkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIHJldHVybiBDU1NDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZSh4MSwgeTEsIHgyLCB5Mik7CisgICAg
fQorICAgIAorICAgIHJldHVybiAwOwogfQogCiBib29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRp
b25Qcm9wZXJ0eShpbnQgcHJvcElkLCBSZWZQdHI8Q1NTVmFsdWU+JiByZXN1bHQpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmlu
ZGV4IGU4NDBhNzBlNDU4MmUxZDE3MDE0YWZjNjNjODIzYTAyMjE3YjMwNGQuLjQ3ZjBiZWQ2NjYy
Yzg3MTQ1Y2YxYzU2ZWY1YmFkN2VkYzJjODA0MGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0xMDgsNyArMTA4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJz
ZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCk7CiAKICAgICAgICAgdm9pZCBwYXJzZVRyYW5zZm9y
bU9yaWdpblNob3J0aGFuZChSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYsIFJl
ZlB0cjxDU1NWYWx1ZT4mKTsKLSAgICAgICAgYm9vbCBwYXJzZVRpbWluZ0Z1bmN0aW9uVmFsdWUo
Q1NTUGFyc2VyVmFsdWVMaXN0KiYgYXJncywgZG91YmxlJiByZXN1bHQpOworICAgICAgICBib29s
IHBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNlclZhbHVlTGlzdCom
IGFyZ3MsIGRvdWJsZSYgcmVzdWx0KTsKICAgICAgICAgYm9vbCBwYXJzZUFuaW1hdGlvblByb3Bl
cnR5KGludCBwcm9wSWQsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKICAgICAgICAgYm9vbCBwYXJzZVRy
YW5zaXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpOwogICAgICAgICBib29sIHBhcnNlQW5p
bWF0aW9uU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
aW5kZXggMmE3YjA4ZTI5YzZiNjZmYWUzNTQ5NDcxNTMxOTZjNTg5ZTEwNzI4OS4uNDdkMDFlOGQ5
NGVkM2RhMjYxZTNiNGZiNzNhNDVmYWY0OTVlZDE4YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHAKQEAgLTYwNTksMTkgKzYwNTksMjUgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbihBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUKICAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkpIHsKICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMaW5lYXI6Ci0gICAgICAgICAg
ICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihUaW1pbmdGdW5jdGlvbihMaW5lYXJU
aW1pbmdGdW5jdGlvbiwgMC4wLCAwLjAsIDEuMCwgMS4wKSk7CisgICAgICAgICAgICAgICAgYW5p
bWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUVhc2U6
Ci0gICAgICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihUaW1pbmdGdW5j
dGlvbigpKTsKKyAgICAgICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEN1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVFYXNlSW46Ci0gICAgICAgICAgICAgICAgYW5p
bWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihUaW1pbmdGdW5jdGlvbihDdWJpY0JlemllclRpbWlu
Z0Z1bmN0aW9uLCAwLjQyLCAwLjAsIDEuMCwgMS4wKSk7CisgICAgICAgICAgICAgICAgYW5pbWF0
aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUo
MC40MiwgMC4wLCAxLjAsIDEuMCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBDU1NWYWx1ZUVhc2VPdXQ6Ci0gICAgICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRU
aW1pbmdGdW5jdGlvbihUaW1pbmdGdW5jdGlvbihDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uLCAw
LjAsIDAuMCwgMC41OCwgMS4wKSk7CisgICAgICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1p
bmdGdW5jdGlvbihDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoMC4wLCAwLjAsIDAu
NTgsIDEuMCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NW
YWx1ZUVhc2VJbk91dDoKLSAgICAgICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0
aW9uKFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24sIDAuNDIsIDAuMCwg
MC41OCwgMS4wKSk7CisgICAgICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlv
bihDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoMC40MiwgMC4wLCAwLjU4LCAxLjAp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTdGVw
U3RhcnQ6CisgICAgICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihTdGVw
c1RpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoMSwgdHJ1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVN0ZXBFbmQ6CisgICAgICAgICAgICAgICAgYW5p
bWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihTdGVwc1RpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoMSwg
ZmFsc2UpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICByZXR1
cm47CkBAIC02MDc5LDcgKzYwODUsMTQgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbihBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUKICAgICAK
ICAgICBpZiAodmFsdWUtPmlzVGltaW5nRnVuY3Rpb25WYWx1ZSgpKSB7CiAgICAgICAgIENTU1Rp
bWluZ0Z1bmN0aW9uVmFsdWUqIHRpbWluZ0Z1bmN0aW9uID0gc3RhdGljX2Nhc3Q8Q1NTVGltaW5n
RnVuY3Rpb25WYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5j
dGlvbihUaW1pbmdGdW5jdGlvbihDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uLCB0aW1pbmdGdW5j
dGlvbi0+eDEoKSwgdGltaW5nRnVuY3Rpb24tPnkxKCksIHRpbWluZ0Z1bmN0aW9uLT54MigpLCB0
aW1pbmdGdW5jdGlvbi0+eTIoKSkpOworICAgICAgICBpZiAodGltaW5nRnVuY3Rpb24tPmlzQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKCkpIHsKKyAgICAgICAgICAgIENTU0N1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSogY3ViaWNUaW1pbmdGdW5jdGlvbiA9IHN0YXRpY19jYXN0
PENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgICAg
IGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6
Y3JlYXRlKGN1YmljVGltaW5nRnVuY3Rpb24tPngxKCksIGN1YmljVGltaW5nRnVuY3Rpb24tPnkx
KCksIGN1YmljVGltaW5nRnVuY3Rpb24tPngyKCksIGN1YmljVGltaW5nRnVuY3Rpb24tPnkyKCkp
KTsKKyAgICAgICAgfSBlbHNlIGlmICh0aW1pbmdGdW5jdGlvbi0+aXNTdGVwc1RpbWluZ0Z1bmN0
aW9uVmFsdWUoKSkgeworICAgICAgICAgICAgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKiBz
dGVwc1RpbWluZ0Z1bmN0aW9uID0gc3RhdGljX2Nhc3Q8Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZh
bHVlKj4odmFsdWUpOworICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihT
dGVwc1RpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoc3RlcHNUaW1pbmdGdW5jdGlvbi0+bnVtYmVyT2ZT
dGVwcygpLCBzdGVwc1RpbWluZ0Z1bmN0aW9uLT5zdGVwQXRTdGFydCgpKSk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihMaW5lYXJUaW1p
bmdGdW5jdGlvbjo6Y3JlYXRlKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9j
c3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5j
dGlvblZhbHVlLmNwcAppbmRleCBlNTc2ZDM2OTZiYzk5YjNjMTI2MzRkNTg1YzI1NWFhYzE2Mjk2
MzU3Li45ZWVjYjJjNzZiMDFkZGFjOGMzNDA3OWI4ZmQyODY0NzM0MGZiNWRjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2Nz
cy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcApAQCAtMzAsNyArMzAsMTIgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1TdHJpbmcgQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3NzVGV4dCgp
IGNvbnN0CitTdHJpbmcgQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3NzVGV4dCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuICJsaW5lYXIiOworfQorCitTdHJpbmcgQ1NTQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvblZhbHVlOjpjc3NUZXh0KCkgY29uc3QKIHsKICAgICBTdHJpbmcgdGV4dCgi
Y3ViaWMtYmV6aWVyKCIpOwogICAgIHRleHQgKz0gU3RyaW5nOjpudW1iZXIobV94MSk7CkBAIC00
NCw0ICs0OSwxNCBAQCBTdHJpbmcgQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3NzVGV4dCgpIGNv
bnN0CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKK1N0cmluZyBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9u
VmFsdWU6OmNzc1RleHQoKSBjb25zdAoreworICAgIFN0cmluZyB0ZXh0KCJzdGVwcygiKTsKKyAg
ICB0ZXh0ICs9IFN0cmluZzo6bnVtYmVyKG1fc3RlcHMpOworICAgIHRleHQgKz0gIiwgIjsKKyAg
ICB0ZXh0ICs9IG1fc3RlcEF0U3RhcnQgPyAic3RhcnQiIDogImVuZCI7CisgICAgdGV4dCArPSAi
KSI7CisgICAgcmV0dXJuIHRleHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBiL1dlYkNvcmUvY3Nz
L0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaAppbmRleCBlNDY1OTkzNWNkYjc5MzE4NmMxMGRmNzA0
ZTQ4Y2Q3OWRjZGJhNzMwLi4yN2U4OTliZDU5ZjZiNWQ3NzlkMTI5NjE3MTQ0MTM3NjEwNzhhZmM5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKKysrIGIv
V2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCkBAIC0zMywyMCArMzMsNTEgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NUaW1pbmdGdW5jdGlvblZhbHVlIDogcHVi
bGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NUaW1pbmdG
dW5jdGlvblZhbHVlPiBjcmVhdGUoZG91YmxlIHgxLCBkb3VibGUgeTEsIGRvdWJsZSB4MiwgZG91
YmxlIHkyKQorICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdCA9IDA7CisKKyAgICB2
aXJ0dWFsIGJvb2wgaXNMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFs
dWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1N0ZXBzVGlt
aW5nRnVuY3Rpb25WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKK3Byb3RlY3RlZDoK
KyAgICBDU1NUaW1pbmdGdW5jdGlvblZhbHVlKCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVh
bCBib29sIGlzVGltaW5nRnVuY3Rpb25WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KK307
CisKK2NsYXNzIENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUgOiBwdWJsaWMgQ1NTVGltaW5n
RnVuY3Rpb25WYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTTGluZWFy
VGltaW5nRnVuY3Rpb25WYWx1ZT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZSk7CisgICAgfQorICAgIAorcHJp
dmF0ZToKKyAgICBDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZSh4MSwgeTEsIHgyLCB5
MikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKIAorICAg
IHZpcnR1YWwgYm9vbCBpc0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9Cit9OworICAgIAorY2xhc3MgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZh
bHVlIDogcHVibGljIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZT4gY3JlYXRlKGRv
dWJsZSB4MSwgZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKHgx
LCB5MSwgeDIsIHkyKSk7CisgICAgfQorCiAgICAgZG91YmxlIHgxKCkgY29uc3QgeyByZXR1cm4g
bV94MTsgfQogICAgIGRvdWJsZSB5MSgpIGNvbnN0IHsgcmV0dXJuIG1feTE7IH0KICAgICBkb3Vi
bGUgeDIoKSBjb25zdCB7IHJldHVybiBtX3gyOyB9CiAgICAgZG91YmxlIHkyKCkgY29uc3QgeyBy
ZXR1cm4gbV95MjsgfQogCiBwcml2YXRlOgotICAgIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUoZG91
YmxlIHgxLCBkb3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyKQorICAgIENTU0N1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb25WYWx1ZShkb3VibGUgeDEsIGRvdWJsZSB5MSwgZG91YmxlIHgyLCBk
b3VibGUgeTIpCiAgICAgICAgIDogbV94MSh4MSkKICAgICAgICAgLCBtX3kxKHkxKQogICAgICAg
ICAsIG1feDIoeDIpCkBAIC01NCwxNCArODUsNDEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgdmlydHVhbCBib29sIGlzVGltaW5nRnVuY3Rpb25WYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KLSAgICAKKyAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisKICAgICBkb3VibGUgbV94MTsKICAgICBkb3VibGUgbV95MTsKICAg
ICBkb3VibGUgbV94MjsKICAgICBkb3VibGUgbV95MjsKIH07CiAKK2NsYXNzIENTU1N0ZXBzVGlt
aW5nRnVuY3Rpb25WYWx1ZSA6IHB1YmxpYyBDU1NUaW1pbmdGdW5jdGlvblZhbHVlIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU+IGNy
ZWF0ZShpbnQgc3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZShzdGVwcywgc3RlcEF0U3Rh
cnQpKTsKKyAgICB9CisKKyAgICBpbnQgbnVtYmVyT2ZTdGVwcygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RlcHM7IH0KKyAgICBib29sIHN0ZXBBdFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGVwQXRT
dGFydDsgfQorICAgIAorcHJpdmF0ZToKKyAgICBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUo
aW50IHN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0KQorICAgICAgICA6IG1fc3RlcHMoc3RlcHMpCisg
ICAgICAgICwgbV9zdGVwQXRTdGFydChzdGVwQXRTdGFydCkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzU3Rl
cHNUaW1pbmdGdW5jdGlvblZhbHVlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgaW50
IG1fc3RlcHM7CisgICAgYm9vbCBtX3N0ZXBBdFN0YXJ0OworfTsKKyAgICAKIH0gLy8gbmFtZXNw
YWNlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5p
biBiL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KaW5kZXggN2E5YjljNzc4YjNmODEx
NmUyZWY2ZmMzMWU2ZDU2ZDc1ODI0NTRhZC4uMWU3YzJiNWI3NjM2Njg0MGUyMWFhNGE0MjNlOWJm
NDQ4Yjc5ZjEzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgor
KysgYi9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCkBAIC02OTEsNiArNjkxLDggQEAg
bGluZWFyCiBlYXNlLWluCiBlYXNlLW91dAogZWFzZS1pbi1vdXQKK3N0ZXAtc3RhcnQKK3N0ZXAt
ZW5kCiAKICMKICMgQ1NTX1BST1BfWk9PTQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25CYXNlLmNwcCBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
QmFzZS5jcHAKaW5kZXggZDQ5MjZlYWYzMDVjOGQyZTdhOGRjY2NlMjA0MmNkMWJjNmE5NDFhNC4u
NmVmZWQ4ZTY1MWZkZWUxMWY2ZjJiMDg4MmM4ZTg0ZjZlMTg3NGE2ZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCkBAIC03MCw2ICs3MCwxMyBAQCBzdGF0aWMgaW5s
aW5lIGRvdWJsZSBzb2x2ZUN1YmljQmV6aWVyRnVuY3Rpb24oZG91YmxlIHAxeCwgZG91YmxlIHAx
eSwgZG91YmxlIHAyeAogICAgIHJldHVybiBiZXppZXIuc29sdmUodCwgc29sdmVFcHNpbG9uKGR1
cmF0aW9uKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgZG91YmxlIHNvbHZlU3RlcHNGdW5jdGlvbihp
bnQgbnVtU3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQsIGRvdWJsZSB0KQoreworICAgIGlmIChzdGVw
QXRTdGFydCkKKyAgICAgICAgcmV0dXJuIG1pbigxLjAsIChmbG9vcihudW1TdGVwcyAqIHQpICsg
MSkgLyBudW1TdGVwcyk7CisgICAgcmV0dXJuIGZsb29yKG51bVN0ZXBzICogdCkgLyBudW1TdGVw
czsKK30KKwogc3RhdGljIGlubGluZSBpbnQgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2Uq
LCBpbnQgZnJvbSwgaW50IHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7ICAKICAgICByZXR1cm4gaW50
KGZyb20gKyAodG8gLSBmcm9tKSAqIHByb2dyZXNzKTsKQEAgLTEyNDksMTggKzEyNTYsMjAgQEAg
ZG91YmxlIEFuaW1hdGlvbkJhc2U6OnByb2dyZXNzKGRvdWJsZSBzY2FsZSwgZG91YmxlIG9mZnNl
dCwgY29uc3QgVGltaW5nRnVuY3Rpb24KICAgICAgICAgZnJhY3Rpb25hbFRpbWUgPSAoZnJhY3Rp
b25hbFRpbWUgLSBvZmZzZXQpICogc2NhbGU7CiAgICAgICAgIAogICAgIGlmICghdGYpCi0gICAg
ICAgIHRmID0gJm1fYW5pbWF0aW9uLT50aW1pbmdGdW5jdGlvbigpOwotCi0gICAgaWYgKHRmLT50
eXBlKCkgPT0gTGluZWFyVGltaW5nRnVuY3Rpb24pCisgICAgICAgIHRmID0gbV9hbmltYXRpb24t
PnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7CisKKyAgICBpZiAodGYtPmlzQ3ViaWNCZXppZXJUaW1p
bmdGdW5jdGlvbigpKSB7CisgICAgICAgIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24q
IGN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qPih0Zik7
CisgICAgICAgIHJldHVybiBzb2x2ZUN1YmljQmV6aWVyRnVuY3Rpb24oY3RmLT54MSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0Zi0+eTEoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdGYtPngyKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RmLT55MigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uYWxUaW1lLCBtX2FuaW1hdGlvbi0+ZHVyYXRp
b24oKSk7CisgICAgfSBlbHNlIGlmICh0Zi0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpIHsKKyAg
ICAgICAgY29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiogc3RmID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
U3RlcHNUaW1pbmdGdW5jdGlvbio+KHRmKTsKKyAgICAgICAgcmV0dXJuIHNvbHZlU3RlcHNGdW5j
dGlvbihzdGYtPm51bWJlck9mU3RlcHMoKSwgc3RmLT5zdGVwQXRTdGFydCgpLCBmcmFjdGlvbmFs
VGltZSk7CisgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBmcmFjdGlvbmFsVGltZTsKLQotICAg
IC8vIEN1YmljIGJlemllci4KLSAgICBkb3VibGUgcmVzdWx0ID0gc29sdmVDdWJpY0JlemllckZ1
bmN0aW9uKHRmLT54MSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0Zi0+eTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGYtPngyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRmLT55MigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
cmFjdGlvbmFsVGltZSwgbV9hbmltYXRpb24tPmR1cmF0aW9uKCkpOwotICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIHZvaWQgQW5pbWF0aW9uQmFzZTo6Z2V0VGltZVRvTmV4dEV2ZW50KGRvdWJsZSYg
dGltZSwgYm9vbCYgaXNMb29waW5nKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tl
eWZyYW1lQW5pbWF0aW9uLmNwcAppbmRleCAwMWVjMmYxNjkwOGEwYWVlMjRiNjFlMTE0ZWI2ZDlh
OWUwMTVlMGY2Li5lZWRkYjk0NmZiNDQyNThiZGZiMGY4YjMxMzFlOGMzM2QxNjQ2MDIwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAorKysg
Yi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcApAQCAtMTI3LDcg
KzEyNyw3IEBAIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246OmZldGNoSW50ZXJ2YWxFbmRwb2ludHNG
b3JQcm9wZXJ0eShpbnQgcHJvcGVydHksIGNvbnN0IFJlCiAgICAgY29uc3QgVGltaW5nRnVuY3Rp
b24qIHRpbWluZ0Z1bmN0aW9uID0gMDsKICAgICBpZiAoZnJvbVN0eWxlLT5hbmltYXRpb25zKCkg
JiYgZnJvbVN0eWxlLT5hbmltYXRpb25zKCktPnNpemUoKSA+IDApIHsKICAgICAgICAgLy8gV2Ug
Z2V0IHRoZSB0aW1pbmcgZnVuY3Rpb24gZnJvbSB0aGUgZmlyc3QgYW5pbWF0aW9uLCBiZWNhdXNl
IHdlJ3ZlIHN5bnRoZXNpemVkIGEgUmVuZGVyU3R5bGUgZm9yIGVhY2gga2V5ZnJhbWUuCi0gICAg
ICAgIHRpbWluZ0Z1bmN0aW9uID0gJihmcm9tU3R5bGUtPmFuaW1hdGlvbnMoKS0+YW5pbWF0aW9u
KDApLT50aW1pbmdGdW5jdGlvbigpKTsKKyAgICAgICAgdGltaW5nRnVuY3Rpb24gPSBmcm9tU3R5
bGUtPmFuaW1hdGlvbnMoKS0+YW5pbWF0aW9uKDApLT50aW1pbmdGdW5jdGlvbigpLmdldCgpOwog
ICAgIH0KIAogICAgIHByb2cgPSBwcm9ncmVzcyhzY2FsZSwgb2Zmc2V0LCB0aW1pbmdGdW5jdGlv
bik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcAppbmRleCBiYzMzYTll
ZmVkZGQxNGZkMDYxYWI3YjRmOGZhYTk5ZGEwN2Q5NDE5Li42ZTU5ZjZiMTJiMGNiMjQ2OTgzZmUw
ZmVkNTA2MTUxMTM0OWI4Y2RhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlv
bi9BbmltYXRpb24uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlv
bi5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBib29sIEFuaW1hdGlvbjo6YW5pbWF0aW9uc01hdGNo
KGNvbnN0IEFuaW1hdGlvbiogbywgYm9vbCBtYXRjaFBsYXlTdGF0ZXMpIGNvbnN0CiAgICAgICAg
ICAgICAgICAgICBtX2l0ZXJhdGlvbkNvdW50ID09IG8tPm1faXRlcmF0aW9uQ291bnQgJiYKICAg
ICAgICAgICAgICAgICAgIG1fZGVsYXkgPT0gby0+bV9kZWxheSAmJgogICAgICAgICAgICAgICAg
ICAgbV9kdXJhdGlvbiA9PSBvLT5tX2R1cmF0aW9uICYmCi0gICAgICAgICAgICAgICAgICBtX3Rp
bWluZ0Z1bmN0aW9uID09IG8tPm1fdGltaW5nRnVuY3Rpb24gJiYKKyAgICAgICAgICAgICAgICAg
ICoobV90aW1pbmdGdW5jdGlvbi5nZXQoKSkgPT0gKihvLT5tX3RpbWluZ0Z1bmN0aW9uLmdldCgp
KSAmJgogICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb24gPT0gby0+bV9kaXJlY3Rpb24gJiYK
ICAgICAgICAgICAgICAgICAgIG1fZmlsbE1vZGUgPT0gby0+bV9maWxsTW9kZSAmJgogICAgICAg
ICAgICAgICAgICAgbV9kZWxheVNldCA9PSBvLT5tX2RlbGF5U2V0ICYmCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaCBiL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL0FuaW1hdGlvbi5oCmluZGV4IGNhYmIwZWJmZDE5YzA2YTEzYjE5M2Y5NzhiMWYy
OWY3Y2VjNmIwMGQuLjkxMzA0MTUxOTkxMGZiYTM3NjQ1MjUyOTZiZDgyNjgyNWMzYWE3YmIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
ZGVmaW5lIEFuaW1hdGlvbl9oCiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1
ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiVGltaW5nRnVuY3Rpb24uaCIK
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CkBAIC05NCw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25z
dCB7IHJldHVybiBtX25hbWU7IH0KICAgICB1bnNpZ25lZCBwbGF5U3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3BsYXlTdGF0ZTsgfQogICAgIGludCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvcGVydHk7IH0KLSAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3RpbWluZ0Z1bmN0aW9uOyB9CisgICAgY29uc3QgUGFzc1JlZlB0cjxU
aW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3RpbWluZ0Z1
bmN0aW9uOyB9CiAKICAgICB2b2lkIHNldERlbGF5KGRvdWJsZSBjKSB7IG1fZGVsYXkgPSBjOyBt
X2RlbGF5U2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0RGlyZWN0aW9uKEFuaW1hdGlvbkRpcmVj
dGlvbiBkKSB7IG1fZGlyZWN0aW9uID0gZDsgbV9kaXJlY3Rpb25TZXQgPSB0cnVlOyB9CkBAIC0x
MDQsNyArMTA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG4p
IHsgbV9uYW1lID0gbjsgbV9uYW1lU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0UGxheVN0YXRl
KHVuc2lnbmVkIGQpIHsgbV9wbGF5U3RhdGUgPSBkOyBtX3BsYXlTdGF0ZVNldCA9IHRydWU7IH0K
ICAgICB2b2lkIHNldFByb3BlcnR5KGludCB0KSB7IG1fcHJvcGVydHkgPSB0OyBtX3Byb3BlcnR5
U2V0ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0VGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVu
Y3Rpb24mIGYpIHsgbV90aW1pbmdGdW5jdGlvbiA9IGY7IG1fdGltaW5nRnVuY3Rpb25TZXQgPSB0
cnVlOyB9CisgICAgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbihQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiBmKSB7IG1fdGltaW5nRnVuY3Rpb24gPSBmOyBtX3RpbWluZ0Z1bmN0aW9uU2V0ID0gdHJ1
ZTsgfQogCiAgICAgdm9pZCBzZXRJc05vbmVBbmltYXRpb24oYm9vbCBuKSB7IG1faXNOb25lID0g
bjsgfQogCkBAIC0xMjksNyArMTMwLDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9pdGVyYXRpb25D
b3VudDsKICAgICBkb3VibGUgbV9kZWxheTsKICAgICBkb3VibGUgbV9kdXJhdGlvbjsKLSAgICBU
aW1pbmdGdW5jdGlvbiBtX3RpbWluZ0Z1bmN0aW9uOworICAgIFJlZlB0cjxUaW1pbmdGdW5jdGlv
bj4gbV90aW1pbmdGdW5jdGlvbjsKICAgICBBbmltYXRpb25EaXJlY3Rpb24gbV9kaXJlY3Rpb24g
OiAxOwogICAgIHVuc2lnbmVkIG1fZmlsbE1vZGUgOiAyOwogCkBAIC0xNTYsNyArMTU3LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhbEFuaW1hdGlvbk5hbWUoKSB7IHJldHVy
biBTdHJpbmcoIm5vbmUiKTsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCBpbml0aWFsQW5pbWF0aW9u
UGxheVN0YXRlKCkgeyByZXR1cm4gQW5pbVBsYXlTdGF0ZVBsYXlpbmc7IH0KICAgICBzdGF0aWMg
aW50IGluaXRpYWxBbmltYXRpb25Qcm9wZXJ0eSgpIHsgcmV0dXJuIGNBbmltYXRlQWxsOyB9Ci0g
ICAgc3RhdGljIFRpbWluZ0Z1bmN0aW9uIGluaXRpYWxBbmltYXRpb25UaW1pbmdGdW5jdGlvbigp
IHsgcmV0dXJuIFRpbWluZ0Z1bmN0aW9uKCk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUaW1p
bmdGdW5jdGlvbj4gaW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkgeyByZXR1cm4gQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1
bmN0aW9uLmggYi9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCmlu
ZGV4IGQzZjcxZmYyYjEyMTZhZjZiN2Q2ZTQ5MzVlMmM0NDVkYTU2NzE4MDkuLjhlZjJkOGYxNDUz
ZTNlZjFkMzdkMjYzZjkwNzlmNzY2OWJmYjdjOTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmlt
YXRpb24vVGltaW5nRnVuY3Rpb24uaApAQCAtMjUsNTMgKzI1LDg3IEBACiAjaWZuZGVmIFRpbWlu
Z0Z1bmN0aW9uX2gKICNkZWZpbmUgVGltaW5nRnVuY3Rpb25faAogCi0jaW5jbHVkZSAiUmVuZGVy
U3R5bGVDb25zdGFudHMuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBUaW1pbmdGdW5jdGlvbiA6IEZhc3RBbGxvY0Jhc2Ugewot
ICAgIFRpbWluZ0Z1bmN0aW9uKCkKLSAgICAgICAgOiBtX3R5cGUoQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbikKLSAgICAgICAgLCBtX3gxKDAuMjUpCi0gICAgICAgICwgbV95MSgwLjEpCi0gICAg
ICAgICwgbV94MigwLjI1KQotICAgICAgICAsIG1feTIoMS4wKQorY2xhc3MgVGltaW5nRnVuY3Rp
b24gOiBwdWJsaWMgUmVmQ291bnRlZDxUaW1pbmdGdW5jdGlvbj4geworcHVibGljOgorCisgICAg
ZW51bSBUaW1pbmdGdW5jdGlvblR5cGUgeworICAgICAgICBMaW5lYXJGdW5jdGlvbiwgQ3ViaWNC
ZXppZXJGdW5jdGlvbiwgU3RlcHNGdW5jdGlvbgorICAgIH07CisgICAgCisgICAgdmlydHVhbCB+
VGltaW5nRnVuY3Rpb24oKSB7IH0KKyAgICAKKyAgICBib29sIGlzTGluZWFyVGltaW5nRnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTGluZWFyRnVuY3Rpb247IH0KKyAgICBib29s
IGlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBD
dWJpY0JlemllckZ1bmN0aW9uOyB9CisgICAgYm9vbCBpc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gU3RlcHNGdW5jdGlvbjsgfQorICAgIAorICAgIHZpcnR1
YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgPSAwOworCitw
cm90ZWN0ZWQ6CisgICAgVGltaW5nRnVuY3Rpb24oVGltaW5nRnVuY3Rpb25UeXBlIHR5cGUpCisg
ICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAgewogICAgIH0KKyAgICAKKyAgICBUaW1pbmdGdW5j
dGlvblR5cGUgbV90eXBlOworfTsKIAotICAgIC8vIFRoaXMgZXhwbGljaXQgY29weSBjb25zdHJ1
Y3RvciB3b3JrcyBhcm91bmQgYW4gaW5saW5pbmcgYnVnIGluIEdDQyA0LjIgKG9ubHkgcmVwcm9l
ZCBvbiBtYWMsIGJ1dCBtYXkgZXhpc3Qgb24gb3RoZXIgcGxhdGZvcm1zKS4KLSAgICBUaW1pbmdG
dW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiYgdGhhdCkKLSAgICAgICAgOiBtX3R5cGUodGhh
dC5tX3R5cGUpCi0gICAgICAgICwgbV94MSh0aGF0Lm1feDEpCi0gICAgICAgICwgbV95MSh0aGF0
Lm1feTEpCi0gICAgICAgICwgbV94Mih0aGF0Lm1feDIpCi0gICAgICAgICwgbV95Mih0aGF0Lm1f
eTIpCitjbGFzcyBMaW5lYXJUaW1pbmdGdW5jdGlvbiA6IHB1YmxpYyBUaW1pbmdGdW5jdGlvbiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TGluZWFyVGltaW5nRnVuY3Rpb24+IGNy
ZWF0ZSgpCiAgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExpbmVhclRpbWluZ0Z1
bmN0aW9uKTsKICAgICB9Ci0KLSAgICBUaW1pbmdGdW5jdGlvbihFVGltaW5nRnVuY3Rpb25UeXBl
IHRpbWluZ0Z1bmN0aW9uLCBkb3VibGUgeDEgPSAwLjAsIGRvdWJsZSB5MSA9IDAuMCwgZG91Ymxl
IHgyID0gMS4wLCBkb3VibGUgeTIgPSAxLjApCi0gICAgICAgIDogbV90eXBlKHRpbWluZ0Z1bmN0
aW9uKQotICAgICAgICAsIG1feDEoeDEpCi0gICAgICAgICwgbV95MSh5MSkKLSAgICAgICAgLCBt
X3gyKHgyKQotICAgICAgICAsIG1feTIoeTIpCisgICAgCisgICAgfkxpbmVhclRpbWluZ0Z1bmN0
aW9uKCkgeyB9CisgICAgCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5n
RnVuY3Rpb24mIG90aGVyKQogICAgIHsKKyAgICAgICAgcmV0dXJuIG90aGVyLmlzTGluZWFyVGlt
aW5nRnVuY3Rpb24oKTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIExpbmVhclRpbWluZ0Z1
bmN0aW9uKCkKKyAgICAgICAgOiBUaW1pbmdGdW5jdGlvbihMaW5lYXJGdW5jdGlvbikKKyAgICB7
CisgICAgfQorfTsKKyAgICAKK2NsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24gOiBwdWJs
aWMgVGltaW5nRnVuY3Rpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb24+IGNyZWF0ZShkb3VibGUgeDEgPSAwLjI1LCBkb3VibGUgeTEg
PSAwLjEsIGRvdWJsZSB4MiA9IDAuMjUsIGRvdWJsZSB5MiA9IDEuMCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbih4MSwgeTEsIHgy
LCB5MikpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlv
biYgbykgY29uc3QKKyAgICB+Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpIHsgfQorICAgIAor
ICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBtX3R5cGUgPT0gby5tX3R5cGUgJiYgbV94MSA9PSBvLm1f
eDEgJiYgbV95MSA9PSBvLm1feTEgJiYgbV94MiA9PSBvLm1feDIgJiYgbV95MiA9PSBvLm1feTI7
CisgICAgICAgIGlmIChvdGhlci5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgeworICAg
ICAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiogY3RmID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+KCZvdGhlcik7CisgICAgICAgICAg
ICByZXR1cm4gbV94MSA9PSBjdGYtPm1feDEgJiYgbV95MSA9PSBjdGYtPm1feTEgJiYgbV94MiA9
PSBjdGYtPm1feDIgJiYgbV95MiA9PSBjdGYtPm1feTI7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGRvdWJsZSB4MSgpIGNvbnN0IHsgcmV0dXJuIG1feDE7
IH0KICAgICBkb3VibGUgeTEoKSBjb25zdCB7IHJldHVybiBtX3kxOyB9CiAgICAgZG91YmxlIHgy
KCkgY29uc3QgeyByZXR1cm4gbV94MjsgfQogICAgIGRvdWJsZSB5MigpIGNvbnN0IHsgcmV0dXJu
IG1feTI7IH0KLQotICAgIEVUaW1pbmdGdW5jdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQotCisgICAgCiBwcml2YXRlOgotICAgIEVUaW1pbmdGdW5jdGlvblR5cGUgbV90
eXBlOworICAgIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oZG91YmxlIHgxLCBkb3VibGUgeTEs
IGRvdWJsZSB4MiwgZG91YmxlIHkyKQorICAgICAgICA6IFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6
aWVyRnVuY3Rpb24pCisgICAgICAgICwgbV94MSh4MSkKKyAgICAgICAgLCBtX3kxKHkxKQorICAg
ICAgICAsIG1feDIoeDIpCisgICAgICAgICwgbV95Mih5MikKKyAgICB7CisgICAgfQogCiAgICAg
ZG91YmxlIG1feDE7CiAgICAgZG91YmxlIG1feTE7CkBAIC03OSw2ICsxMTMsMzkgQEAgcHJpdmF0
ZToKICAgICBkb3VibGUgbV95MjsKIH07CiAKK2NsYXNzIFN0ZXBzVGltaW5nRnVuY3Rpb24gOiBw
dWJsaWMgVGltaW5nRnVuY3Rpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
ZXBzVGltaW5nRnVuY3Rpb24+IGNyZWF0ZShpbnQgc3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0ZXBzVGltaW5nRnVuY3Rpb24oc3Rl
cHMsIHN0ZXBBdFN0YXJ0KSk7CisgICAgfQorICAgIAorICAgIH5TdGVwc1RpbWluZ0Z1bmN0aW9u
KCkgeyB9CisgICAgCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVu
Y3Rpb24mIG90aGVyKQorICAgIHsKKyAgICAgICAgaWYgKG90aGVyLmlzU3RlcHNUaW1pbmdGdW5j
dGlvbigpKSB7CisgICAgICAgICAgICBjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uKiBzdGYgPSBz
dGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uKj4oJm90aGVyKTsKKyAgICAgICAg
ICAgIHJldHVybiBtX3N0ZXBzID09IHN0Zi0+bV9zdGVwcyAmJiBtX3N0ZXBBdFN0YXJ0ID09IHN0
Zi0+bV9zdGVwQXRTdGFydDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIAorICAgIGludCBudW1iZXJPZlN0ZXBzKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwczsg
fQorICAgIGJvb2wgc3RlcEF0U3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBBdFN0YXJ0OyB9
CisgICAgCitwcml2YXRlOgorICAgIFN0ZXBzVGltaW5nRnVuY3Rpb24oaW50IHN0ZXBzLCBib29s
IHN0ZXBBdFN0YXJ0KQorICAgICAgICA6IFRpbWluZ0Z1bmN0aW9uKFN0ZXBzRnVuY3Rpb24pCisg
ICAgICAgICwgbV9zdGVwcyhzdGVwcykKKyAgICAgICAgLCBtX3N0ZXBBdFN0YXJ0KHN0ZXBBdFN0
YXJ0KQorICAgIHsKKyAgICB9CisgICAgCisgICAgaW50IG1fc3RlcHM7CisgICAgYm9vbCBtX3N0
ZXBBdFN0YXJ0OworfTsKKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFRpbWluZ0Z1bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
LmgKaW5kZXggMGY3NGNkNWNiMzM4NWVlN2JiNWE2ODgwMmI3YWZjMjk3ODdmZjgwZi4uNjhhNTgw
ZWQ0ZTAzYzQ3NWE5NDQyOTc1NTk3ZjhmMzNmYjNkY2I4OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTg1LDE4ICs4NSwxOCBAQCBjbGFzcyBGbG9hdFBv
aW50M0Q7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIFRleHRT
dHJlYW07Ci1zdHJ1Y3QgVGltaW5nRnVuY3Rpb247CitjbGFzcyBUaW1pbmdGdW5jdGlvbjsKIAog
Ly8gQmFzZSBjbGFzcyBmb3IgYW5pbWF0aW9uIHZhbHVlcyAoYWxzbyB1c2VkIGZvciB0cmFuc2l0
aW9ucykuIEhlcmUgdG8KIC8vIHJlcHJlc2VudCB2YWx1ZXMgZm9yIHByb3BlcnRpZXMgYmVpbmcg
YW5pbWF0ZWQgdmlhIHRoZSBHcmFwaGljc0xheWVyLAogLy8gd2l0aG91dCBwdWxsaW5nIGluIHN0
eWxlLXJlbGF0ZWQgZGF0YSBmcm9tIG91dHNpZGUgb2YgdGhlIHBsYXRmb3JtIGRpcmVjdG9yeS4K
IGNsYXNzIEFuaW1hdGlvblZhbHVlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKLSAg
ICBBbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGlt
aW5nRnVuY3Rpb24gPSAwKQorICAgIEFuaW1hdGlvblZhbHVlKGZsb2F0IGtleVRpbWUsIFBhc3NS
ZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uID0gMCkKICAgICAgICAgOiBtX2tl
eVRpbWUoa2V5VGltZSkKICAgICB7CiAgICAgICAgIGlmICh0aW1pbmdGdW5jdGlvbikKLSAgICAg
ICAgICAgIG1fdGltaW5nRnVuY3Rpb24gPSBhZG9wdFB0cihuZXcgVGltaW5nRnVuY3Rpb24oKnRp
bWluZ0Z1bmN0aW9uKSk7CisgICAgICAgICAgICBtX3RpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVu
Y3Rpb247CiAgICAgfQogICAgIAogICAgIHZpcnR1YWwgfkFuaW1hdGlvblZhbHVlKCkgeyB9CkBA
IC0xMDYsMTMgKzEwNiwxMyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZmxvYXQgbV9rZXlU
aW1lOwotICAgIE93blB0cjxUaW1pbmdGdW5jdGlvbj4gbV90aW1pbmdGdW5jdGlvbjsKKyAgICBS
ZWZQdHI8VGltaW5nRnVuY3Rpb24+IG1fdGltaW5nRnVuY3Rpb247CiB9OwogCiAvLyBVc2VkIHRv
IHN0b3JlIG9uZSBmbG9hdCB2YWx1ZSBvZiBhbiBhbmltYXRpb24uCiBjbGFzcyBGbG9hdEFuaW1h
dGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKIHB1YmxpYzoKLSAgICBGbG9hdEFu
aW1hdGlvblZhbHVlKGZsb2F0IGtleVRpbWUsIGZsb2F0IHZhbHVlLCBjb25zdCBUaW1pbmdGdW5j
dGlvbiogdGltaW5nRnVuY3Rpb24gPSAwKQorICAgIEZsb2F0QW5pbWF0aW9uVmFsdWUoZmxvYXQg
a2V5VGltZSwgZmxvYXQgdmFsdWUsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1
bmN0aW9uID0gMCkKICAgICAgICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1pbmdGdW5j
dGlvbikKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKQEAgLTEyNyw3ICsxMjcsNyBA
QCBwcml2YXRlOgogLy8gVXNlZCB0byBzdG9yZSBvbmUgdHJhbnNmb3JtIHZhbHVlIGluIGEga2V5
ZnJhbWUgbGlzdC4KIGNsYXNzIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1h
dGlvblZhbHVlIHsKIHB1YmxpYzoKLSAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShmbG9hdCBr
ZXlUaW1lLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zKiB2YWx1ZSA9IDAsIGNvbnN0IFRpbWlu
Z0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IDApCisgICAgVHJhbnNmb3JtQW5pbWF0aW9uVmFs
dWUoZmxvYXQga2V5VGltZSwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyogdmFsdWUgPSAwLCBQ
YXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCiAgICAgICAgIDog
QW5pbWF0aW9uVmFsdWUoa2V5VGltZSwgdGltaW5nRnVuY3Rpb24pCiAgICAgewogICAgICAgICBp
ZiAodmFsdWUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0xheWVyQ0EubW0gYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xh
eWVyQ0EubW0KaW5kZXggMzE1Y2MwMDkxMDNjNjk4ZmEwMDE0N2I0OTNmODY1NDljODFmMmNhZS4u
NWZlZGFmZmYyN2Y2ZTljYzczYTBmNTAxYjZhMDdjZTcwZWNhMjkzYSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQpAQCAtMjcyLDE2ICsy
NzIsMTYgQEAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZsaXBUcmFuc2Zvcm0oKQogfQog
I2VuZGlmCiAKLXN0YXRpYyBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIGdldENBTWVkaWFUaW1pbmdG
dW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb24pCi17Ci0gICAgc3dp
dGNoICh0aW1pbmdGdW5jdGlvbi50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBMaW5lYXJUaW1pbmdG
dW5jdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBbQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uIGZ1bmN0
aW9uV2l0aE5hbWU6QCJsaW5lYXIiXTsKLSAgICAgICAgY2FzZSBDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uOgotICAgICAgICAgICAgcmV0dXJuIFtDQU1lZGlhVGltaW5nRnVuY3Rpb24gZnVuY3Rp
b25XaXRoQ29udHJvbFBvaW50czpzdGF0aWNfY2FzdDxmbG9hdD4odGltaW5nRnVuY3Rpb24ueDEo
KSkgOnN0YXRpY19jYXN0PGZsb2F0Pih0aW1pbmdGdW5jdGlvbi55MSgpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgOnN0YXRpY19jYXN0PGZsb2F0Pih0aW1pbmdGdW5jdGlvbi54MigpKSA6c3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHRpbWluZ0Z1bmN0aW9uLnkyKCkpXTsKLSAgICB9Ci0gICAgcmV0dXJu
IDA7CitzdGF0aWMgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiBnZXRDQU1lZGlhVGltaW5nRnVuY3Rp
b24oY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKQoreworICAgIC8vIEJ5IHRo
aXMgcG9pbnQsIHRpbWluZyBmdW5jdGlvbnMgY2FuIG9ubHkgYmUgbGluZWFyIG9yIGN1YmljLCBu
b3Qgc3RlcHMuCisgICAgQVNTRVJUKCF0aW1pbmdGdW5jdGlvbi0+aXNTdGVwc1RpbWluZ0Z1bmN0
aW9uKCkpOworICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXNDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uKCkpIHsKKyAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiogY3RmID0g
c3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0
aW9uKTsKKyAgICAgICAgcmV0dXJuIFtDQU1lZGlhVGltaW5nRnVuY3Rpb24gZnVuY3Rpb25XaXRo
Q29udHJvbFBvaW50czpzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT54MSgpKSA6c3RhdGljX2Nhc3Q8
ZmxvYXQ+KGN0Zi0+eTEoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDpzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT54MigpKSA6
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0Zi0+eTIoKSldOworICAgIH0gZWxzZQorICAgICAgICByZXR1
cm4gW0NBTWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOkAibGluZWFyIl07CiB9
CiAKIHN0YXRpYyB2b2lkIHNldExheWVyQm9yZGVyQ29sb3IoUGxhdGZvcm1MYXllciogbGF5ZXIs
IGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTM1Niw2ICszNTYsMjAgQEAgc3RhdGljIE5TRGljdGlv
bmFyeSogbnVsbEFjdGlvbnNEaWN0aW9uYXJ5KCkKICAgICByZXR1cm4gYWN0aW9uczsKIH0KIAor
c3RhdGljIGJvb2wgYW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlvbihjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0pCit7CisgICAgaWYg
KGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCktPmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVM
aXN0LnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdG
dW5jdGlvbiA9IHZhbHVlTGlzdC5hdChpKS0+dGltaW5nRnVuY3Rpb24oKTsKKyAgICAgICAgaWYg
KHRpbWluZ0Z1bmN0aW9uICYmIHRpbWluZ0Z1bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24o
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsK
K30KKwogUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3Jh
cGhpY3NMYXllckNsaWVudCogY2xpZW50KQogewogICAgIHJldHVybiBuZXcgR3JhcGhpY3NMYXll
ckNBKGNsaWVudCk7CkBAIC03MTYsNiArNzMwLDExIEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjph
ZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgSW50
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCisgICAgLy8gQ29yZUFuaW1hdGlvbiBk
b2VzIG5vdCBoYW5kbGUgdGhlIHN0ZXBzKCkgdGltaW5nIGZ1bmN0aW9uLiBGYWxsIGJhY2sKKyAg
ICAvLyB0byBzb2Z0d2FyZSBhbmltYXRpb24gaW4gdGhhdCBjYXNlLgorICAgIGlmIChhbmltYXRp
b25IYXNTdGVwc1RpbWluZ0Z1bmN0aW9uKHZhbHVlTGlzdCwgYW5pbSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKwogICAgIGJvb2wgY3JlYXRlZEFuaW1hdGlvbnMgPSBmYWxzZTsKICAgICBpZiAo
dmFsdWVMaXN0LnByb3BlcnR5KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSkK
ICAgICAgICAgY3JlYXRlZEFuaW1hdGlvbnMgPSBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJv
bUtleWZyYW1lcyh2YWx1ZUxpc3QsIGFuaW0sIGtleWZyYW1lc05hbWUsIHRpbWVPZmZzZXQsIGJv
eFNpemUpOwpAQCAtMTkxMyw5ICsxOTMyLDkgQEAgQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uKiBHcmFw
aGljc0xheWVyQ0E6OnRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUoY29uc3QgQW4KICAg
ICBpZiAoYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpKQogICAgICAgICB0ZiA9IGFuaW1WYWx1
ZS0+dGltaW5nRnVuY3Rpb24oKTsKICAgICBlbHNlIGlmIChhbmltLT5pc1RpbWluZ0Z1bmN0aW9u
U2V0KCkpCi0gICAgICAgIHRmID0gJmFuaW0tPnRpbWluZ0Z1bmN0aW9uKCk7CisgICAgICAgIHRm
ID0gYW5pbS0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKIAotICAgIHJldHVybiBnZXRDQU1lZGlh
VGltaW5nRnVuY3Rpb24odGYgPyAqdGYgOiBUaW1pbmdGdW5jdGlvbigpKTsKKyAgICByZXR1cm4g
Z2V0Q0FNZWRpYVRpbWluZ0Z1bmN0aW9uKHRmID8gdGYgOiBDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uOjpjcmVhdGUoKS5nZXQoKSk7CiB9CiAKIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzZXRBbmlt
YXRpb25FbmRwb2ludHMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3Qg
QW5pbWF0aW9uKiBhbmltLCBDQUJhc2ljQW5pbWF0aW9uKiBiYXNpY0FuaW0pCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA5ODFmYTE2ZmViMzUyZjMwZjcyNjZj
OTgzMTA3OGQ0ODVmYTljMjZiLi42YzU4ZTBkNzFiMmI1MDBhYzE2NThmYzViMWJmZjBiNDhmYzg4
N2ZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTExMjUs
NyArMTEyNSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydEFuaW1hdGlvbihkb3Vi
bGUgdGltZU9mZnNldCwgY29uc3QgQW5pbWF0aW9uKiBhbmltCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIAogICAgICAgICAvLyBnZXQgdGltaW5nIGZ1bmN0aW9uCi0gICAgICAg
IGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0ZiA9IGtleWZyYW1lU3R5bGUtPmhhc0FuaW1hdGlvbnMo
KSA/ICYoKCprZXlmcmFtZVN0eWxlLT5hbmltYXRpb25zKCkpLmFuaW1hdGlvbigwKS0+dGltaW5n
RnVuY3Rpb24oKSkgOiAwOworICAgICAgICBSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRmID0ga2V5
ZnJhbWVTdHlsZS0+aGFzQW5pbWF0aW9ucygpID8gKCprZXlmcmFtZVN0eWxlLT5hbmltYXRpb25z
KCkpLmFuaW1hdGlvbigwKS0+dGltaW5nRnVuY3Rpb24oKSA6IDA7CiAgICAgICAgIAogICAgICAg
ICBpZiAoY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm0pKQogICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChuZXcgVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUoa2V5LCAmKGtleWZyYW1lU3R5bGUtPnRyYW5zZm9ybSgpKSwgdGYp
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3Rh
bnRzLmggYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCmlu
ZGV4IDY4YzgxMTNmNjNjODJhODhjNjlmNjQ5YWY0NjM1Mjk3ZDBjYTk4ZmEuLmE3ODMyMWY4NDE1
NzU2MzgyMWRlNzcyOGM1MDZjZjY1N2JhMTNiYWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtMzAzLDggKzMwMyw2IEBAIGVudW0gRUFu
aW1QbGF5U3RhdGUgewogICAgIEFuaW1QbGF5U3RhdGVQYXVzZWQgPSAweDEKIH07CiAKLWVudW0g
RVRpbWluZ0Z1bmN0aW9uVHlwZSB7IExpbmVhclRpbWluZ0Z1bmN0aW9uLCBDdWJpY0JlemllclRp
bWluZ0Z1bmN0aW9uIH07Ci0KIGVudW0gRVdoaXRlU3BhY2UgewogICAgIE5PUk1BTCwgUFJFLCBQ
UkVfV1JBUCwgUFJFX0xJTkUsIE5PV1JBUCwgS0hUTUxfTk9XUkFQCiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66943</attachid>
            <date>2010-09-08 14:42:16 -0700</date>
            <delta_ts>2010-09-08 15:35:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44541-20100909074214.patch</filename>
            <type>text/plain</type>
            <size>59346</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMzkxZDMxMjJmZjEyMjU2NTlkN2Y3MmVkMDY1ZjY4MTAwNDk1Y2E2Li5lMmI0NTFl
MjVlM2MzODE2ZjBkZTkxNWJhZmJhZGU4YzM1NTA5OGQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMTAtMDktMDggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBzdGVwcygpIHRp
bWluZyBmdW5jdGlvbiBmb3IgYW5pbWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ1NDEKKworICAgICAgICAqIHRyYW5zaXRpb25zL3N0ZXBz
LXRpbWluZy1mdW5jdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRyYW5zaXRp
b25zL3N0ZXBzLXRpbWluZy1mdW5jdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRp
b25zL3RpbWluZy1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhbmlt
YXRpb25zL3RpbWluZy1mdW5jdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICAgICAtIE5ldyB0
ZXN0cyB0aGF0IGV4ZXJjaXNlIHN0ZXBzIGluIGFuaW1hdGlvbnMKKyAgICAgICAgICAgICAgYW5k
IHRyYW5zaXRpb25zLCBpbiBzb2Z0d2FyZSBhbmQgaGFyZHdhcmUKKworICAgICAgICAqIGFuaW1h
dGlvbnMvY29tcHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFuaW1hdGlvbnMv
Y29tcHV0ZWQtc3R5bGUuaHRtbDoKKyAgICAgICAgKiBhbmltYXRpb25zL2FuaW1hdGlvbi1zaG9y
dGhhbmQuaHRtbDoKKyAgICAgICAgKiBhbmltYXRpb25zL2ZpbGwtdW5zZXQtcHJvcGVydGllcy5o
dG1sOgorICAgICAgICAqIHRyYW5zaXRpb25zL2luaGVyaXQtb3RoZXItcHJvcHMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHRyYW5zaXRpb25zL2luaGVyaXQtb3RoZXItcHJvcHMuaHRtbDoKKyAg
ICAgICAgICAgIC0gQ2hhbmdlIGV4aXN0aW5nIHRlc3RzIHRvIHVzZSAnbGluZWFyJyBjb21wdXRl
ZAorICAgICAgICAgICAgICBzdHlsZSB3aGVyZSBuZWNlc3NhcnkKKwogMjAxMC0wOS0wOCAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tc2hv
cnRoYW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1zaG9ydGhhbmQu
aHRtbAppbmRleCBhZGYzNzE5MjY0MzI1YTEyNzZiNjYxMzRmZTNkNGFhYzA2MGE0YmM3Li5lOGZi
ZGY4YWZhZGFhZDYyMzM1MTdlODI3YWQ1YjI5OTYzZTY2YjIyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1zaG9ydGhhbmQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9hbmltYXRpb25zL2FuaW1hdGlvbi1zaG9ydGhhbmQuaHRtbApAQCAtNTcsMTMgKzU3LDEzIEBA
CiAgICAgICB7IGlkOiAnYScsICB2YWx1ZXM6IFsgIm5vbmUiLCAiMHMiLCAiY3ViaWMtYmV6aWVy
KDAuMjUsIDAuMSwgMC4yNSwgMSkiLCAiMHMiLCAiMSIsICJub3JtYWwiLCAibm9uZSIgXSB9LAog
ICAgICAgeyBpZDogJ2InLCAgdmFsdWVzOiBbICJub25lIiwgIjBzIiwgImN1YmljLWJlemllcigw
LjI1LCAwLjEsIDAuMjUsIDEpIiwgIjBzIiwgIjEiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKICAg
ICAgIHsgaWQ6ICdjJywgIHZhbHVlczogWyAiYW5pbTEiLCAiMTBzIiwgImN1YmljLWJlemllcigw
LjI1LCAwLjEsIDAuMjUsIDEpIiwgIjBzIiwgIjEiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKLSAg
ICAgIHsgaWQ6ICdkJywgIHZhbHVlczogWyAiYW5pbTEiLCAiMTBzIiwgImN1YmljLWJlemllcigw
LCAwLCAxLCAxKSIsICIwcyIsICIxIiwgIm5vcm1hbCIsICJub25lIiBdIH0sCi0gICAgICB7IGlk
OiAnZScsICB2YWx1ZXM6IFsgImFuaW0xIiwgIjEwcyIsICJjdWJpYy1iZXppZXIoMCwgMCwgMSwg
MSkiLCAiNXMiLCAiMSIsICJub3JtYWwiLCAibm9uZSIgXSB9LAotICAgICAgeyBpZDogJ2YnLCAg
dmFsdWVzOiBbICJhbmltMSIsICIxMHMiLCAiY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpIiwgIjVz
IiwgIjMiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKLSAgICAgIHsgaWQ6ICdnJywgIHZhbHVlczog
WyAiYW5pbTEiLCAiMTBzIiwgImN1YmljLWJlemllcigwLCAwLCAxLCAxKSIsICI1cyIsICJpbmZp
bml0ZSIsICJhbHRlcm5hdGUiLCAibm9uZSIgXSB9LAotICAgICAgeyBpZDogJ2gnLCAgdmFsdWVz
OiBbICJhbmltMSIsICIxMHMiLCAiY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpIiwgIjVzIiwgImlu
ZmluaXRlIiwgImFsdGVybmF0ZSIsICJmb3J3YXJkcyIgXSB9LAotICAgICAgeyBpZDogJ2knLCAg
dmFsdWVzOiBbICJhbmltMSIsICIxMHMiLCAiY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpIiwgIjBz
IiwgIjEiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKLSAgICAgIHsgaWQ6ICdqJywgIHZhbHVlczog
WyAiYW5pbTEsIGFuaW0yLCBhbmltMyIsICIxMHMsIDNzLCA1cyIsICJjdWJpYy1iZXppZXIoMCwg
MCwgMSwgMSksIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpLCBjdWJpYy1iZXppZXIo
MC4yNSwgMC4xLCAwLjI1LCAxKSIsICIwcywgMHMsIDBzIiwgImluZmluaXRlLCAxLCAxIiwgIm5v
cm1hbCwgbm9ybWFsLCBub3JtYWwiLCAiYmFja3dhcmRzLCBub25lLCBib3RoIiBdIH0KKyAgICAg
IHsgaWQ6ICdkJywgIHZhbHVlczogWyAiYW5pbTEiLCAiMTBzIiwgImxpbmVhciIsICIwcyIsICIx
IiwgIm5vcm1hbCIsICJub25lIiBdIH0sCisgICAgICB7IGlkOiAnZScsICB2YWx1ZXM6IFsgImFu
aW0xIiwgIjEwcyIsICJsaW5lYXIiLCAiNXMiLCAiMSIsICJub3JtYWwiLCAibm9uZSIgXSB9LAor
ICAgICAgeyBpZDogJ2YnLCAgdmFsdWVzOiBbICJhbmltMSIsICIxMHMiLCAibGluZWFyIiwgIjVz
IiwgIjMiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKKyAgICAgIHsgaWQ6ICdnJywgIHZhbHVlczog
WyAiYW5pbTEiLCAiMTBzIiwgImxpbmVhciIsICI1cyIsICJpbmZpbml0ZSIsICJhbHRlcm5hdGUi
LCAibm9uZSIgXSB9LAorICAgICAgeyBpZDogJ2gnLCAgdmFsdWVzOiBbICJhbmltMSIsICIxMHMi
LCAibGluZWFyIiwgIjVzIiwgImluZmluaXRlIiwgImFsdGVybmF0ZSIsICJmb3J3YXJkcyIgXSB9
LAorICAgICAgeyBpZDogJ2knLCAgdmFsdWVzOiBbICJhbmltMSIsICIxMHMiLCAibGluZWFyIiwg
IjBzIiwgIjEiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKKyAgICAgIHsgaWQ6ICdqJywgIHZhbHVl
czogWyAiYW5pbTEsIGFuaW0yLCBhbmltMyIsICIxMHMsIDNzLCA1cyIsICJsaW5lYXIsIGN1Ymlj
LWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpLCBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1
LCAxKSIsICIwcywgMHMsIDBzIiwgImluZmluaXRlLCAxLCAxIiwgIm5vcm1hbCwgbm9ybWFsLCBu
b3JtYWwiLCAiYmFja3dhcmRzLCBub25lLCBib3RoIiBdIH0KICAgICBdOwogICAgIAogICAgIGZ1
bmN0aW9uIHN0YXJ0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvY29tcHV0
ZWQtc3R5bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jb21wdXRlZC1z
dHlsZS1leHBlY3RlZC50eHQKaW5kZXggNjhiMDkyMTJmNDM2MzYyNGQ1MGEwMjk5MmEyYmM5YzA0
OTIyOGRjZS4uOGFjYzUyMDQ1MzdhNzRjZjRhMDVmMjQzMTYyNjkyNzg1NTBiMzM0ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQK
QEAgLTUsMTQgKzUsMTYgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogUEFTUyB0ZXN0MVN0
eWxlLndlYmtpdEFuaW1hdGlvbk5hbWUgaXMgJ2FuaW0xJwogUEFTUyB0ZXN0MlN0eWxlLndlYmtp
dEFuaW1hdGlvbk5hbWUgaXMgJ2FuaW0yLCBhbmltMycKK1BBU1MgdGVzdDNTdHlsZS53ZWJraXRB
bmltYXRpb25OYW1lIGlzICdhbmltMSwgYW5pbTIsIGFuaW0zJwogUEFTUyB0ZXN0MVN0eWxlLndl
YmtpdEFuaW1hdGlvbkR1cmF0aW9uIGlzICcxMHMnCiBQQVNTIHRlc3QyU3R5bGUud2Via2l0QW5p
bWF0aW9uRHVyYXRpb24gaXMgJzVzLCAyLjVzJwogUEFTUyB0ZXN0MVN0eWxlLndlYmtpdEFuaW1h
dGlvbkZpbGxNb2RlIGlzICdiYWNrd2FyZHMnCiBQQVNTIHRlc3QyU3R5bGUud2Via2l0QW5pbWF0
aW9uRmlsbE1vZGUgaXMgJ2ZvcndhcmRzLCBib3RoJwogUEFTUyB0ZXN0MVN0eWxlLndlYmtpdEFu
aW1hdGlvbkl0ZXJhdGlvbkNvdW50IGlzICcxMCcKIFBBU1MgdGVzdDJTdHlsZS53ZWJraXRBbmlt
YXRpb25JdGVyYXRpb25Db3VudCBpcyAnMTAsIGluZmluaXRlJwotUEFTUyB0ZXN0MVN0eWxlLndl
YmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSkn
Ci1QQVNTIHRlc3QyU3R5bGUud2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2N1Ymlj
LWJlemllcigwLCAwLCAxLCAxKSwgY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpJworUEFT
UyB0ZXN0MVN0eWxlLndlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdsaW5lYXInCitQ
QVNTIHRlc3QyU3R5bGUud2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2xpbmVhciwg
Y3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpJworUEFTUyB0ZXN0M1N0eWxlLndlYmtpdEFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdzdGVwcygxLCBzdGFydCksIHN0ZXBzKDEsIGVuZCks
IHN0ZXBzKDUsIGVuZCknCiBQQVNTIHRlc3QxU3R5bGUud2Via2l0QW5pbWF0aW9uRGlyZWN0aW9u
IGlzICdub3JtYWwnCiBQQVNTIHRlc3QyU3R5bGUud2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uIGlz
ICdub3JtYWwsIGFsdGVybmF0ZScKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9u
cy9jb21wdXRlZC1zdHlsZS5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jb21wdXRlZC1z
dHlsZS5odG1sCmluZGV4IDg5YzhlZWRmNDMwM2EyY2YxZjFhMzk2YmJmYWE0NWVhMWFkYWJmOWEu
LmQzZDg2NzgxY2NlYTIwODQyMTMzYmFiZGMxMzc5ZjU0YWFhM2Q2OWIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2FuaW1hdGlvbnMvY29tcHV0ZWQtc3R5bGUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9hbmltYXRpb25zL2NvbXB1dGVkLXN0eWxlLmh0bWwKQEAgLTI2LDYgKzI2LDE1IEBACiAgICAg
ICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyLCBlYXNlLWluLW91
dDsKICAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOiBub3JtYWwsIGFsdGVybmF0
ZTsKICAgICB9CisgICAgI3Rlc3QzIHsKKyAgICAgICAgd2lkdGg6IDIwcHg7CisgICAgICAgIGhl
aWdodDogMjBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgcG9z
aXRpb246IHJlbGF0aXZlOworICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBhbmltMSwg
YW5pbTIsIGFuaW0zOworICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogNXM7Cisg
ICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogc3RlcC1zdGFydCwgc3Rl
cC1lbmQsIHN0ZXBzKDUsIGVuZCk7CisgICAgfQogICAgIEAtd2Via2l0LWtleWZyYW1lcyBhbmlt
MSB7CiAgICAgICAgIGZyb20geyBsZWZ0OiAxMHB4OyB9CiAgICAgICAgIHRvIHsgbGVmdDogMjBw
eDsgfQpAQCAtNDQsNiArNTMsNyBAQAogPGJvZHk+CiA8cCBpZD0idGVzdDEiPjwvcD4KIDxwIGlk
PSJ0ZXN0MiI+PC9wPgorPHAgaWQ9InRlc3QzIj48L3A+CiA8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KQEAgLTU1LDkgKzY1LDExIEBA
IHZhciB0ZXN0MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0MiIpOwogCiB2YXIgdGVz
dDFTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRlc3QxKTsKIHZhciB0ZXN0MlN0eWxl
ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdDIpOwordmFyIHRlc3QzU3R5bGUgPSB3aW5k
b3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0Myk7CiAKIHNob3VsZEJlKCJ0ZXN0MVN0eWxlLndlYmtp
dEFuaW1hdGlvbk5hbWUiLCAiJ2FuaW0xJyIpOwogc2hvdWxkQmUoInRlc3QyU3R5bGUud2Via2l0
QW5pbWF0aW9uTmFtZSIsICInYW5pbTIsIGFuaW0zJyIpOworc2hvdWxkQmUoInRlc3QzU3R5bGUu
d2Via2l0QW5pbWF0aW9uTmFtZSIsICInYW5pbTEsIGFuaW0yLCBhbmltMyciKTsKIAogc2hvdWxk
QmUoInRlc3QxU3R5bGUud2Via2l0QW5pbWF0aW9uRHVyYXRpb24iLCAiJzEwcyciKTsKIHNob3Vs
ZEJlKCJ0ZXN0MlN0eWxlLndlYmtpdEFuaW1hdGlvbkR1cmF0aW9uIiwgIic1cywgMi41cyciKTsK
QEAgLTY4LDggKzgwLDkgQEAgc2hvdWxkQmUoInRlc3QyU3R5bGUud2Via2l0QW5pbWF0aW9uRmls
bE1vZGUiLCAiJ2ZvcndhcmRzLCBib3RoJyIpOwogc2hvdWxkQmUoInRlc3QxU3R5bGUud2Via2l0
QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCAiJzEwJyIpOwogc2hvdWxkQmUoInRlc3QyU3R5bGUu
d2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCAiJzEwLCBpbmZpbml0ZSciKTsKIAotc2hv
dWxkQmUoInRlc3QxU3R5bGUud2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24iLCAiJ2N1Ymlj
LWJlemllcigwLCAwLCAxLCAxKSciKTsKLXNob3VsZEJlKCJ0ZXN0MlN0eWxlLndlYmtpdEFuaW1h
dGlvblRpbWluZ0Z1bmN0aW9uIiwgIidjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSksIGN1YmljLWJl
emllcigwLjQyLCAwLCAwLjU4LCAxKSciKTsKK3Nob3VsZEJlKCJ0ZXN0MVN0eWxlLndlYmtpdEFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uIiwgIidsaW5lYXInIik7CitzaG91bGRCZSgidGVzdDJTdHls
ZS53ZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiIsICInbGluZWFyLCBjdWJpYy1iZXppZXIo
MC40MiwgMCwgMC41OCwgMSknIik7CitzaG91bGRCZSgidGVzdDNTdHlsZS53ZWJraXRBbmltYXRp
b25UaW1pbmdGdW5jdGlvbiIsICInc3RlcHMoMSwgc3RhcnQpLCBzdGVwcygxLCBlbmQpLCBzdGVw
cyg1LCBlbmQpJyIpOwogCiBzaG91bGRCZSgidGVzdDFTdHlsZS53ZWJraXRBbmltYXRpb25EaXJl
Y3Rpb24iLCAiJ25vcm1hbCciKTsKIHNob3VsZEJlKCJ0ZXN0MlN0eWxlLndlYmtpdEFuaW1hdGlv
bkRpcmVjdGlvbiIsICInbm9ybWFsLCBhbHRlcm5hdGUnIik7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hbmltYXRpb25zL2ZpbGwtdW5zZXQtcHJvcGVydGllcy5odG1sIGIvTGF5b3V0VGVzdHMv
YW5pbWF0aW9ucy9maWxsLXVuc2V0LXByb3BlcnRpZXMuaHRtbAppbmRleCBhNDlkZWNhZjUxZmY2
M2NlNzQyMDZmNzg2NmM5NWZjYzc5Y2YyNWI3Li44NTAzNmM0NDY4NzhjMzMzZmJkODBlMDgxNmJk
MzFjNjk2OTYwM2ViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpbGwtdW5z
ZXQtcHJvcGVydGllcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlsbC11bnNl
dC1wcm9wZXJ0aWVzLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAKICAgICAgIHsgJ3Byb3BlcnR5Jzog
J3dlYmtpdFRyYW5zaXRpb25EdXJhdGlvbicsICd2YWx1ZSc6ICcycywgMnMsIDFzLCAxcywgMnMn
IH0sCiAgICAgICB7ICdwcm9wZXJ0eSc6ICd3ZWJraXRUcmFuc2l0aW9uUHJvcGVydHknLCAndmFs
dWUnOiAnbGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0LCBvcGFjaXR5JyB9LAogICAgICAgeyAncHJv
cGVydHknOiAnd2Via2l0VHJhbnNpdGlvbkRlbGF5JywgICAgJ3ZhbHVlJzogJzRzLCAzcywgNHMs
IDNzLCA0cycgfSwKLSAgICAgIHsgJ3Byb3BlcnR5JzogJ3dlYmtpdFRyYW5zaXRpb25UaW1pbmdG
dW5jdGlvbicsICd2YWx1ZSc6ICdjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSksIGN1YmljLWJlemll
cigwLCAwLCAxLCAxKSwgY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpLCBjdWJpYy1iZXppZXIoMCwg
MCwgMSwgMSksIGN1YmljLWJlemllcigwLCAwLCAxLCAxKScgfSwKKyAgICAgIHsgJ3Byb3BlcnR5
JzogJ3dlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbicsICd2YWx1ZSc6ICdsaW5lYXIsIGxp
bmVhciwgbGluZWFyLCBsaW5lYXIsIGxpbmVhcicgfSwKICAgICAgIHsgJ3Byb3BlcnR5JzogJ3dl
YmtpdEFuaW1hdGlvbk5hbWUnLCAgICAgICd2YWx1ZSc6ICdhLCBiLCBjLCBkLCBlJyB9LAogICAg
ICAgeyAncHJvcGVydHknOiAnd2Via2l0QW5pbWF0aW9uRHVyYXRpb24nLCAgJ3ZhbHVlJzogJzEw
cywgMjBzLCAxMHMsIDIwcywgMTBzJyB9LAogICAgICAgeyAncHJvcGVydHknOiAnd2Via2l0QW5p
bWF0aW9uRGVsYXknLCAgICAgJ3ZhbHVlJzogJzFzLCAxcywgMXMsIDFzLCAxcycgfSwKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdGltaW5nLWZ1bmN0aW9ucy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RpbWluZy1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlYmQzNDcwZjA4N2ViYzM0YmJjZmM1OTYwNjBkNWNkY2MxMmFhNDYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RpbWluZy1mdW5jdGlvbnMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjYgQEAKK1RoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmlt
YXRpb24gb2YgdGhlIGxlZnQgcHJvcGVydHkuIEl0IGFuaW1hdGVzIG92ZXIgMSBzZWNvbmQuIEl0
IHRha2VzIDMgc25hcHNob3RzIGFuZCBleHBlY3RzIGVhY2ggcmVzdWx0IHRvIGJlIHdpdGhpbiBh
IHNwZWNpZmllZCByYW5nZS4KK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gxIiBlbGVt
ZW50IGF0IDAuMjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE0MQorUEFTUyAtICJsZWZ0IiBw
cm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRv
OiAxODAKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gxIiBlbGVtZW50IGF0IDAuNzVz
IHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE5NgorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3Ig
ImJveDIiIGVsZW1lbnQgYXQgMC4yNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTQxCitQQVNT
IC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94MiIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhp
bmcgY2xvc2UgdG86IDE4MAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDIiIGVsZW1l
bnQgYXQgMC43NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTk2CitQQVNTIC0gImxlZnQiIHBy
b3BlcnR5IGZvciAiYm94MyIgZWxlbWVudCBhdCAwLjI1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRv
OiAxMjUKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gzIiBlbGVtZW50IGF0IDAuNXMg
c2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTUwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAi
Ym94MyIgZWxlbWVudCBhdCAwLjc1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNzUKK1BBU1Mg
LSAibGVmdCIgcHJvcGVydHkgZm9yICJib3g0IiBlbGVtZW50IGF0IDAuMjVzIHNhdyBzb21ldGhp
bmcgY2xvc2UgdG86IDIwMAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDQiIGVsZW1l
bnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyMDAKK1BBU1MgLSAibGVmdCIgcHJv
cGVydHkgZm9yICJib3g0IiBlbGVtZW50IGF0IDAuNzVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86
IDIwMAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDUiIGVsZW1lbnQgYXQgMC4yNXMg
c2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTAwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAi
Ym94NSIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEwMAorUEFTUyAt
ICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDUiIGVsZW1lbnQgYXQgMC43NXMgc2F3IHNvbWV0aGlu
ZyBjbG9zZSB0bzogMTAwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94NiIgZWxlbWVu
dCBhdCAwLjI1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxMDAKK1BBU1MgLSAibGVmdCIgcHJv
cGVydHkgZm9yICJib3g2IiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzog
MTMzCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94NiIgZWxlbWVudCBhdCAwLjc1cyBz
YXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNjYKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJi
b3g3IiBlbGVtZW50IGF0IDAuMjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEzMworUEFTUyAt
ICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDciIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5n
IGNsb3NlIHRvOiAxNjYKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3g3IiBlbGVtZW50
IGF0IDAuNzVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIwMAorUEFTUyAtICJsZWZ0IiBwcm9w
ZXJ0eSBmb3IgImJveDgiIGVsZW1lbnQgYXQgMC4yNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzog
MTAwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94OCIgZWxlbWVudCBhdCAwLjVzIHNh
dyBzb21ldGhpbmcgY2xvc2UgdG86IDEzMworUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJv
eDgiIGVsZW1lbnQgYXQgMC43NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTY2CisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdGltaW5nLWZ1bmN0aW9ucy5odG1sIGIvTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy90aW1pbmctZnVuY3Rpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmVh
M2UwYzBmYmNlY2M2YmE1NTcxMjdhY2E2ZDRkMTBkYzZmM2Q3NAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdGltaW5nLWZ1bmN0aW9ucy5odG1sCkBAIC0wLDAgKzEs
MTA1IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFu
c2l0aW9uYWwvL0VOIgorICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+
CisKKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgIDx0aXRsZT5UZXN0
IHRpbWluZyBmdW5jdGlvbnM8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlh
PSJzY3JlZW4iPgorICAgIC5ib3ggeworICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAg
bGVmdDogMTAwcHg7CisgICAgICB0b3A6IDBweDsKKyAgICAgIGhlaWdodDogNXB4OworICAgICAg
d2lkdGg6IDVweDsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAtd2Via2l0
LWFuaW1hdGlvbi1kdXJhdGlvbjogMXM7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBh
bmltOworICAgIH0KKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbSB7CisgICAgICAgIGZyb20g
eyBsZWZ0OiAxMDBweDsgfQorICAgICAgICB0byAgIHsgbGVmdDogMjAwcHg7IH0KKyAgICB9Cisg
ICAgI2JveDEgeworICAgIH0KKyAgICAjYm94MiB7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi10
aW1pbmctZnVuY3Rpb246IGVhc2U7CisgICAgfQorICAgICNib3gzIHsKKyAgICAgIC13ZWJraXQt
YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOworICAgIH0KKyAgICAjYm94NCB7Cisg
ICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHN0ZXAtc3RhcnQ7CisgICAg
fQorICAgICNib3g1IHsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjog
c3RlcC1lbmQ7CisgICAgfQorICAgICNib3g2IHsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRp
bWluZy1mdW5jdGlvbjogc3RlcHMoMyk7CisgICAgfQorICAgICNib3g3IHsKKyAgICAgIC13ZWJr
aXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogc3RlcHMoMywgc3RhcnQpOworICAgIH0KKyAg
ICAjYm94OCB7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHN0ZXBz
KDMsIGVuZCk7CisgICAgfQorICAgIAorICA8L3N0eWxlPgorICA8c2NyaXB0IHNyYz0iYW5pbWF0
aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYt
OCI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1
dGYtOCI+CisKKyAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAgICAgIC8vIFthbmltYXRp
b24tbmFtZSwgdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVjdGVkLXZhbHVlLCB0b2xl
cmFuY2VdCisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94MSIsICJsZWZ0IiwgMTQxLCA1XSwKKyAg
ICAgIFsiYW5pbSIsIDAuNTAsICJib3gxIiwgImxlZnQiLCAxODAsIDVdLAorICAgICAgWyJhbmlt
IiwgMC43NSwgImJveDEiLCAibGVmdCIsIDE5NiwgNV0sCisgICAgICBbImFuaW0iLCAwLjI1LCAi
Ym94MiIsICJsZWZ0IiwgMTQxLCA1XSwKKyAgICAgIFsiYW5pbSIsIDAuNTAsICJib3gyIiwgImxl
ZnQiLCAxODAsIDVdLAorICAgICAgWyJhbmltIiwgMC43NSwgImJveDIiLCAibGVmdCIsIDE5Niwg
NV0sCisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94MyIsICJsZWZ0IiwgMTI1LCA1XSwKKyAgICAg
IFsiYW5pbSIsIDAuNTAsICJib3gzIiwgImxlZnQiLCAxNTAsIDVdLAorICAgICAgWyJhbmltIiwg
MC43NSwgImJveDMiLCAibGVmdCIsIDE3NSwgNV0sCisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94
NCIsICJsZWZ0IiwgMjAwLCA1XSwKKyAgICAgIFsiYW5pbSIsIDAuNTAsICJib3g0IiwgImxlZnQi
LCAyMDAsIDVdLAorICAgICAgWyJhbmltIiwgMC43NSwgImJveDQiLCAibGVmdCIsIDIwMCwgNV0s
CisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94NSIsICJsZWZ0IiwgMTAwLCA1XSwKKyAgICAgIFsi
YW5pbSIsIDAuNTAsICJib3g1IiwgImxlZnQiLCAxMDAsIDVdLAorICAgICAgWyJhbmltIiwgMC43
NSwgImJveDUiLCAibGVmdCIsIDEwMCwgNV0sCisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94NiIs
ICJsZWZ0IiwgMTAwLCA1XSwKKyAgICAgIFsiYW5pbSIsIDAuNTAsICJib3g2IiwgImxlZnQiLCAx
MzMsIDVdLAorICAgICAgWyJhbmltIiwgMC43NSwgImJveDYiLCAibGVmdCIsIDE2NiwgNV0sCisg
ICAgICBbImFuaW0iLCAwLjI1LCAiYm94NyIsICJsZWZ0IiwgMTMzLCA1XSwKKyAgICAgIFsiYW5p
bSIsIDAuNTAsICJib3g3IiwgImxlZnQiLCAxNjYsIDVdLAorICAgICAgWyJhbmltIiwgMC43NSwg
ImJveDciLCAibGVmdCIsIDIwMCwgNV0sCisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94OCIsICJs
ZWZ0IiwgMTAwLCA1XSwKKyAgICAgIFsiYW5pbSIsIDAuNTAsICJib3g4IiwgImxlZnQiLCAxMzMs
IDVdLAorICAgICAgWyJhbmltIiwgMC43NSwgImJveDgiLCAibGVmdCIsIDE2NiwgNV0sCisgICAg
XTsKKyAgICAKKyAgICBydW5BbmltYXRpb25UZXN0KGV4cGVjdGVkVmFsdWVzKTsKKyAgICAKKyAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRp
b24gb2YgdGhlIGxlZnQgcHJvcGVydHkuIEl0IGFuaW1hdGVzIG92ZXIgMSBzZWNvbmQuCitJdCB0
YWtlcyAzIHNuYXBzaG90cyBhbmQgZXhwZWN0cyBlYWNoIHJlc3VsdCB0byBiZSB3aXRoaW4gYSBz
cGVjaWZpZWQgcmFuZ2UuCis8ZGl2IGNsYXNzPSJib3giIGlkPSJib3gxIj4KKzwvZGl2PgorPGRp
diBjbGFzcz0iYm94IiBpZD0iYm94MiI+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImJveCIgaWQ9ImJv
eDMiPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJib3giIGlkPSJib3g0Ij4KKzwvZGl2PgorPGRpdiBj
bGFzcz0iYm94IiBpZD0iYm94NSI+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImJveCIgaWQ9ImJveDYi
PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJib3giIGlkPSJib3g3Ij4KKzwvZGl2PgorPGRpdiBjbGFz
cz0iYm94IiBpZD0iYm94OCI+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+Cis8L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2luaGVy
aXQtb3RoZXItcHJvcHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvaW5o
ZXJpdC1vdGhlci1wcm9wcy1leHBlY3RlZC50eHQKaW5kZXggMjlkMWE1YzIyN2VmYzNlYTVlYzY0
YTc2MTdhODUxZmMyMTA5NDQyMS4uMmRkYWRiZGY1OGU4Y2Y3ZWM4YmE2YzI1NGVmNGJmZDQxMjBk
OWQxMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvaW5oZXJpdC1vdGhlci1w
cm9wcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvaW5oZXJpdC1v
dGhlci1wcm9wcy1leHBlY3RlZC50eHQKQEAgLTMsMTYgKzMsMTYgQEAgUEFTUyAtLSBCb3ggMSBj
b21wdXRlZCB0cmFuc2l0aW9uIGR1cmF0aW9uOiAwcyBleHBlY3RlZDogMHMKIFBBU1MgLS0gQm94
IDEgY29tcHV0ZWQgdHJhbnNpdGlvbiB0aW1pbmcgZnVuY3Rpb246IGN1YmljLWJlemllcigwLjI1
LCAwLjEsIDAuMjUsIDEpIGV4cGVjdGVkOiBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAx
KQogUEFTUyAtLSBCb3ggMiBjb21wdXRlZCB0cmFuc2l0aW9uIHByb3BlcnR5OiBsZWZ0IGV4cGVj
dGVkOiBsZWZ0CiBQQVNTIC0tIEJveCAyIGNvbXB1dGVkIHRyYW5zaXRpb24gZHVyYXRpb246IDJz
IGV4cGVjdGVkOiAycwotUEFTUyAtLSBCb3ggMiBjb21wdXRlZCB0cmFuc2l0aW9uIHRpbWluZyBm
dW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpIGV4cGVjdGVkOiBjdWJpYy1iZXppZXIo
MCwgMCwgMSwgMSkKK1BBU1MgLS0gQm94IDIgY29tcHV0ZWQgdHJhbnNpdGlvbiB0aW1pbmcgZnVu
Y3Rpb246IGxpbmVhciBleHBlY3RlZDogbGluZWFyCiBQQVNTIC0tIEJveCAzIGNvbXB1dGVkIHRy
YW5zaXRpb24gcHJvcGVydHk6IGxlZnQgZXhwZWN0ZWQ6IGxlZnQKIFBBU1MgLS0gQm94IDMgY29t
cHV0ZWQgdHJhbnNpdGlvbiBkdXJhdGlvbjogMnMgZXhwZWN0ZWQ6IDJzCi1QQVNTIC0tIEJveCAz
IGNvbXB1dGVkIHRyYW5zaXRpb24gdGltaW5nIGZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwg
MSwgMSkgZXhwZWN0ZWQ6IGN1YmljLWJlemllcigwLCAwLCAxLCAxKQorUEFTUyAtLSBCb3ggMyBj
b21wdXRlZCB0cmFuc2l0aW9uIHRpbWluZyBmdW5jdGlvbjogbGluZWFyIGV4cGVjdGVkOiBsaW5l
YXIKIFBBU1MgLS0gQm94IDQgY29tcHV0ZWQgdHJhbnNpdGlvbiBwcm9wZXJ0eTogbGVmdCBleHBl
Y3RlZDogbGVmdAogUEFTUyAtLSBCb3ggNCBjb21wdXRlZCB0cmFuc2l0aW9uIGR1cmF0aW9uOiAy
cyBleHBlY3RlZDogMnMKLVBBU1MgLS0gQm94IDQgY29tcHV0ZWQgdHJhbnNpdGlvbiB0aW1pbmcg
ZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAxLCAxKSBleHBlY3RlZDogY3ViaWMtYmV6aWVy
KDAsIDAsIDEsIDEpCitQQVNTIC0tIEJveCA0IGNvbXB1dGVkIHRyYW5zaXRpb24gdGltaW5nIGZ1
bmN0aW9uOiBsaW5lYXIgZXhwZWN0ZWQ6IGxpbmVhcgogUEFTUyAtLSBCb3ggNSBjb21wdXRlZCB0
cmFuc2l0aW9uIHByb3BlcnR5OiBsZWZ0IGV4cGVjdGVkOiBsZWZ0CiBQQVNTIC0tIEJveCA1IGNv
bXB1dGVkIHRyYW5zaXRpb24gZHVyYXRpb246IDJzIGV4cGVjdGVkOiAycwotUEFTUyAtLSBCb3gg
NSBjb21wdXRlZCB0cmFuc2l0aW9uIHRpbWluZyBmdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAs
IDEsIDEpIGV4cGVjdGVkOiBjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSkKK1BBU1MgLS0gQm94IDUg
Y29tcHV0ZWQgdHJhbnNpdGlvbiB0aW1pbmcgZnVuY3Rpb246IGxpbmVhciBleHBlY3RlZDogbGlu
ZWFyCiBQQVNTIC0tIEJveCA2IGNvbXB1dGVkIHRyYW5zaXRpb24gcHJvcGVydHk6IGFsbCBleHBl
Y3RlZDogYWxsCiBQQVNTIC0tIEJveCA2IGNvbXB1dGVkIHRyYW5zaXRpb24gZHVyYXRpb246IDBz
IGV4cGVjdGVkOiAwcwogUEFTUyAtLSBCb3ggNiBjb21wdXRlZCB0cmFuc2l0aW9uIHRpbWluZyBm
dW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSkgZXhwZWN0ZWQ6IGN1Ymlj
LWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFu
c2l0aW9ucy9pbmhlcml0LW90aGVyLXByb3BzLmh0bWwgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9u
cy9pbmhlcml0LW90aGVyLXByb3BzLmh0bWwKaW5kZXggYTc1YTViODA3NDNlYmU0ZjI2NjA3NmE4
NGE3OTFiNDI2ZjUyNDgyZS4uMWE5MjFjMjQzNzY3MzQxMDc4YTc0NDZmZTU0NzY1YTY4ZjM2OWIy
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvaW5oZXJpdC1vdGhlci1wcm9w
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2luaGVyaXQtb3RoZXItcHJvcHMu
aHRtbApAQCAtNDcsMTAgKzQ3LDEwIEBACiAKICAgICB2YXIga0V4cGVjdGVkVGltaW5nRnVuY3Rp
b24gPSBbCiAgICAgICAnY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSknLCAvKiBib3gx
ICovCi0gICAgICAnY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpJywgLyogYm94MiAqLwotICAgICAg
J2N1YmljLWJlemllcigwLCAwLCAxLCAxKScsIC8qIGJveDMgKi8KLSAgICAgICdjdWJpYy1iZXpp
ZXIoMCwgMCwgMSwgMSknLCAvKiBib3g0ICovIC8qIGluaGVyaXRzIGZyb20gYm94MyAqLwotICAg
ICAgJ2N1YmljLWJlemllcigwLCAwLCAxLCAxKScsIC8qIGJveDUgKi8KKyAgICAgICdsaW5lYXIn
LCAvKiBib3gyICovCisgICAgICAnbGluZWFyJywgLyogYm94MyAqLworICAgICAgJ2xpbmVhcics
IC8qIGJveDQgKi8gLyogaW5oZXJpdHMgZnJvbSBib3gzICovCisgICAgICAnbGluZWFyJywgLyog
Ym94NSAqLwogICAgICAgJ2N1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpJywgLyogYm94
NiAqLyAvKiBkb2VzIE5PVCBpbmhlcml0ICovCiAgICAgXTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdHJhbnNpdGlvbnMvc3RlcHMtdGltaW5nLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RyYW5zaXRpb25zL3N0ZXBzLXRpbWluZy1mdW5jdGlvbi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGNmMTE3MGQ4ZjczNjViOWYwNDY4NGYxNGYzNTJhNDg5OWJkYTNiZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3N0ZXBzLXRpbWluZy1mdW5j
dGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUaGUgYm94IHNob3VsZCBtb3ZlIGhv
cml6b250YWxseSAyMDBweCBvdmVyIDFzLCBpbiAzIGVxdWFsIGluY3JlbWVudHMuCisKK1BBU1Mg
LSAiLXdlYmtpdC10cmFuc2Zvcm0uNCIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC4y
NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMAorUEFTUyAtICItd2Via2l0LXRyYW5zZm9ybS40
IiBwcm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhpbmcgY2xvc2Ug
dG86IDY2CitQQVNTIC0gIi13ZWJraXQtdHJhbnNmb3JtLjQiIHByb3BlcnR5IGZvciAiYm94IiBl
bGVtZW50IGF0IDAuNzVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEzMworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9zdGVwcy10aW1pbmctZnVuY3Rpb24uaHRtbCBiL0xh
eW91dFRlc3RzL3RyYW5zaXRpb25zL3N0ZXBzLXRpbWluZy1mdW5jdGlvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY2ZmFlMzE1OTI3Y2Q2ZjRjZTRjNWFiNmM0ZjE0YzU2NTAwNDVkMmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9zdGVwcy10aW1pbmctZnVuY3Rpb24uaHRt
bApAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhU
TUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgorICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0
L2xvb3NlLmR0ZCI+CisKKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cisg
IDx0aXRsZT5UcmFuc2l0aW9uIHdpdGggc3RlcHMgdGltaW5nIGZ1bmN0aW9uPC90aXRsZT4KKyAg
PHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAjYm94IHsKKyAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiBibHVlOworICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMHB4KTsKKyAg
ICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMXM7CisgICAgICAtd2Via2l0LXRyYW5z
aXRpb24tdGltaW5nLWZ1bmN0aW9uOiBzdGVwcygzLCBlbmQpOworICAgICAgLXdlYmtpdC10cmFu
c2l0aW9uLXByb3BlcnR5OiAtd2Via2l0LXRyYW5zZm9ybTsKKyAgICB9CisgIDwvc3R5bGU+Cisg
IDxzY3JpcHQgc3JjPSJ0cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgICAgCisgICAgY29uc3QgZXhwZWN0ZWRWYWx1
ZXMgPSBbCisgICAgICAvLyBbdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVjdGVkLXZh
bHVlLCB0b2xlcmFuY2VdCisgICAgICBbMC4yNSwgImJveCIsICItd2Via2l0LXRyYW5zZm9ybS40
IiwgMCwgNV0sCisgICAgICBbMC41LCAiYm94IiwgIi13ZWJraXQtdHJhbnNmb3JtLjQiLCA2Niwg
NV0sCisgICAgICBbMC43NSwgImJveCIsICItd2Via2l0LXRyYW5zZm9ybS40IiwgMTMzLCA1XSwK
KyAgICBdOworICAgIAorICAgIGZ1bmN0aW9uIHNldHVwVGVzdCgpCisgICAgeworICAgICAgdmFy
IGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKTsKKyAgICAgIGJveC5zdHlsZS53
ZWJraXRUcmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgyMDBweCknOworICAgIH0KKyAgICAKKyAgICBy
dW5UcmFuc2l0aW9uVGVzdChleHBlY3RlZFZhbHVlcywgc2V0dXBUZXN0LCB0cnVlKTsKKyAgICAK
KyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHA+CitUaGUgYm94IHNob3VsZCBtb3Zl
IGhvcml6b250YWxseSAyMDBweCBvdmVyIDFzLCBpbiAzIGVxdWFsIGluY3JlbWVudHMuCis8L3A+
Cis8ZGl2IGlkPSJib3giPgorPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPgorPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGNiNDEzODcyNDlhNDNiY2UzZjk5M2NhOGQ0NWFhMDhkNTYzNGU5MDMuLjlm
YmYzZjkxZDJjYTdlOGRkMGE4YWEwODdmZTI3YzUzZDk0MjkwZmUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTExIEBACisy
MDEwLTA5LTA4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgc3RlcHMoKSB0aW1p
bmcgZnVuY3Rpb24gZm9yIGFuaW1hdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ0NTQxCisKKyAgICAgICAgVGVzdHM6IGFuaW1hdGlvbnMvdGlt
aW5nLWZ1bmN0aW9ucy5odG1sCisgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy9zdGVwcy10aW1p
bmctZnVuY3Rpb24uaHRtbAorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAg
ICAgICAgICAgIC0gd2hlbiBjcmVhdGluZyBjb21wdXRlZCBzdHlsZSB3ZSBub3cgdGVzdCB3aGF0
CisgICAgICAgICAgICAgIHR5cGUgb2YgdGltaW5nIGZ1bmN0aW9uIGl0IGJlaW5nIHVzZWQKKyAg
ICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAgICAgLSByZW5h
bWUgdGhpcyBtZXRob2QgZnJvbSBwYXJzZVRpbWluZ0Z1bmN0aW9uVmFsdWUKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25UaW1pbmdGdW5jdGlvbik6CisgICAgICAg
ICAgICAtIHN1cHBvcnQgcGFyc2luZyB0aGUgc3RlcHMoKSBmdW5jdGlvbgorICAgICAgICAqIGNz
cy9DU1NQYXJzZXIuaDoKKyAgICAgICAgICAgIC0gbWV0aG9kIHJlbmFtZQorICAgICAgICAqIGNz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0
b3I6Om1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgICAgIC0gaGFuZGxlICdz
dGVwLXN0YXJ0JyBhbmQgJ3N0ZXAtZW5kJyBpZGVudGlmaWVycy4gQWxzbworICAgICAgICAgICAg
ICBub3cgdXNlIDo6Y3JlYXRlIHdoZW4gY29uc3RydWN0aW5nIG9iamVjdHMKKyAgICAgICAgKiBj
c3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5l
YXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNzc1RleHQpOgorICAgICAgICAgICAgLSBu
ZXcgdGV4dCBvdXRwdXQgZm9yIGNvbXB1dGVkIHN0eWxlLiBXZSBub3cgcHJvZHVjZQorICAgICAg
ICAgICAgICB0aGUgdGV4dCAnbGluZWFyJyB3aGVuIGFwcHJvcHJpYXRlLgorICAgICAgICAqIGNz
cy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NUaW1pbmdG
dW5jdGlvblZhbHVlOjppc0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6aXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6aXNTdGVw
c1RpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVGltaW5nRnVuY3Rp
b25WYWx1ZTo6Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
aW1pbmdGdW5jdGlvblZhbHVlOjppc1RpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmlzTGluZWFyVGltaW5nRnVuY3Rp
b25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVl
OjpDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6aXNDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvblZhbHVlOjpDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpudW1iZXJPZlN0ZXBzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6c3RlcEF0U3RhcnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjppc1N0ZXBz
VGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdGVwc1RpbWluZ0Z1
bmN0aW9uVmFsdWU6OkNTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgICAgICAt
IENTU1RpbWluZ0Z1bmN0aW9uIGlzIG5vdyBhIHB1cmUgdmlydHVhbCByZWYtY291bnRlZCBiYXNl
IGNsYXNzLCB3aXRoCisgICAgICAgICAgICAgIHN1YmNsYXNzZXMgZm9yIGVhY2ggb2YgdGhlIHRo
cmVlIHN1cHBvcnRlZCB0aW1pbmcgZnVuY3Rpb25zLgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUtl
eXdvcmRzLmluOgorICAgICAgICAgICAgLSBuZXcga2V5d29yZHMgc3RlcC1zdGFydCBhbmQgc3Rl
cC1lbmQKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNvbHZlU3RlcHNGdW5jdGlvbik6CisgICAgICAgICAgICAtIHByb2R1Y2Vz
IHRoZSBvdXRwdXQgdmFsdWUgZnJvbSBhIHN0ZXBwaW5nIGZ1bmN0aW9uCisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25CYXNlOjpwcm9ncmVzcyk6CisgICAgICAgICAgICAtIG5vdyBoYXMgdG8g
c3dpdGNoIGJhc2VkIG9uIHRpbWluZyBmdW5jdGlvbiB0eXBlCisgICAgICAgICogcGFnZS9hbmlt
YXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVB
bmltYXRpb246OmZldGNoSW50ZXJ2YWxFbmRwb2ludHNGb3JQcm9wZXJ0eSk6CisgICAgICAgICAg
ICAtIHVzZSByZWYtY291bnRlZCBhY2Nlc3MKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24v
QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbjo6YW5pbWF0aW9uc01h
dGNoKToKKyAgICAgICAgICAgIC0gY2hhbmdlIHRpbWluZyBmdW5jdGlvbiBjb21wYXJpc29uIGZv
ciBvcGVyYXRvcj09CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjp0aW1pbmdGdW5jdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpBbmltYXRpb246OnNldFRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgICAg
IC0gbW92ZSB0byByZWYtY291bnRlZCB0aW1pbmcgZnVuY3Rpb24gY2xhc3MKKyAgICAgICAgKiBw
bGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlRp
bWluZ0Z1bmN0aW9uOjp+VGltaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGltaW5n
RnVuY3Rpb246OmlzTGluZWFyVGltaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGlt
aW5nRnVuY3Rpb246OmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpUaW1pbmdGdW5jdGlvbjo6aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlRpbWluZ0Z1bmN0aW9uOjpUaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVh
clRpbWluZ0Z1bmN0aW9uOjp+TGluZWFyVGltaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TGluZWFyVGltaW5nRnVuY3Rpb246Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6
TGluZWFyVGltaW5nRnVuY3Rpb246OkxpbmVhclRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjp+Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OkN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3RlcHNUaW1pbmdGdW5j
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBzVGltaW5nRnVuY3Rpb246On5T
dGVwc1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBzVGltaW5nRnVuY3Rp
b246Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6U3RlcHNUaW1pbmdGdW5jdGlvbjo6
bnVtYmVyT2ZTdGVwcyk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjpz
dGVwQXRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVw
c1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgICAgIC0gVGltaW5nRnVuY3Rpb24gaXMgbm93IGEg
cmVmLWNvdW50ZWQgcHVyZSB2aXJ0dWFsIGJhc2UgY2xhc3MsCisgICAgICAgICAgICAgIHdpdGgg
dGhyZWUgc3ViY2xhc3NlcyByZXByZXNlbnRpbmcgdGhlIHR5cGVzIG9mIHRpbWluZyBmdW5jdGlv
bnMKKyAgICAgICAgICAgICAgdGhhdCBhcmUgc3VwcG9ydGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblZh
bHVlOjpBbmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZh
bHVlOjpGbG9hdEFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSk6CisgICAgICAgICAgICAtIHVz
ZSBQYXNzUmVmUHRyIGluIGZ1bmN0aW9uIHBhcmFtZXRlcnMKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q0FN
ZWRpYVRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgICAgIC0gdXBkYXRlIGZvciBuZXcgdGltaW5n
IGZ1bmN0aW9uIGludGVyZmFjZQorICAgICAgICAoV2ViQ29yZTo6YW5pbWF0aW9uSGFzU3RlcHNU
aW1pbmdGdW5jdGlvbik6CisgICAgICAgICAgICAtIG5ldyBtZXRob2QgdG8gbWFrZSBzdXJlIGFu
aW1hdGlvbnMgd2l0aCBzdGVwcygpIGZ1bmN0aW9ucworICAgICAgICAgICAgICBuZXZlciB0cnkg
dG8gZXhlY3V0ZSBpbiBDb3JlIEFuaW1hdGlvbgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjphZGRBbmltYXRpb24pOgorICAgICAgICAgICAgLSB0ZXN0IGZvciBzdGVwcygpIHRp
bWluZyBmdW5jdGlvbgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp0aW1pbmdG
dW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIG9sZCBSZW5kZXJTdHls
ZSBlbnVtIGZvciB0aW1pbmcgZnVuY3Rpb24gdHlwZXMKKwogMjAxMC0wOS0wOCAgQW5keSBFc3Rl
cyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgRGFyaW4g
QWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRl
eCBiMWU4YWM0MDE1NGMwNDgyZTNiZTlkZTVjMDBkY2M3ZWY5MWFmMjc5Li43ZDNjZGM5NTdlNzFi
YmQxMmQxYTg3ODM5ZjBiZjg1NGY5MGI0OGI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTUwMSwxMyArNTAxLDI5IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBnZXRUaW1pbmdGdW5jdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3Qq
IGFuaW1MaXN0CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBpZiAoYW5pbUxpc3QpIHsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBhbmltTGlzdC0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAg
IGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0ZiA9IGFuaW1MaXN0LT5hbmltYXRpb24oaSktPnRpbWlu
Z0Z1bmN0aW9uKCk7Ci0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVGltaW5nRnVuY3Rpb25W
YWx1ZTo6Y3JlYXRlKHRmLngxKCksIHRmLnkxKCksIHRmLngyKCksIHRmLnkyKCkpKTsKKyAgICAg
ICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0ZiA9IGFuaW1MaXN0LT5hbmltYXRpb24oaSkt
PnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7CisgICAgICAgICAgICBpZiAodGYtPmlzQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbigpKSB7CisgICAgICAgICAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvbiogY3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbio+KHRmKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoY3RmLT54MSgpLCBjdGYtPnkxKCksIGN0Zi0+
eDIoKSwgY3RmLT55MigpKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRmLT5pc1N0ZXBzVGlt
aW5nRnVuY3Rpb24oKSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rp
b24qIHN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24qPih0Zik7Cisg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6
Y3JlYXRlKHN0Zi0+bnVtYmVyT2ZTdGVwcygpLCBzdGYtPnN0ZXBBdFN0YXJ0KCkpKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU0xpbmVhclRp
bWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE5vdGUgdGhhdCBpbml0aWFsQW5pbWF0aW9uVGltaW5n
RnVuY3Rpb24oKSBpcyB1c2VkIGZvciBib3RoIHRyYW5zaXRpb25zIGFuZCBhbmltYXRpb25zCi0g
ICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0ZiA9IEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1h
dGlvblRpbWluZ0Z1bmN0aW9uKCk7Ci0gICAgICAgIGxpc3QtPmFwcGVuZChDU1NUaW1pbmdGdW5j
dGlvblZhbHVlOjpjcmVhdGUodGYueDEoKSwgdGYueTEoKSwgdGYueDIoKSwgdGYueTIoKSkpOwor
ICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGYgPSBBbmltYXRpb246OmluaXRpYWxBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbigpLmdldCgpOworICAgICAgICBpZiAodGYtPmlzQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbigpKSB7CisgICAgICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWlu
Z0Z1bmN0aW9uKiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uKj4odGYpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU0N1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKGN0Zi0+eDEoKSwgY3RmLT55MSgpLCBjdGYtPngyKCksIGN0
Zi0+eTIoKSkpOworICAgICAgICB9IGVsc2UgaWYgKHRmLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24o
KSkgeworICAgICAgICAgICAgY29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiogc3RmID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbio+KHRmKTsKKyAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShzdGYtPm51bWJlck9m
U3RlcHMoKSwgc3RmLT5zdGVwQXRTdGFydCgpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKCkp
OworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCmluZGV4IDJhZDMyOTQyNGUyMmFmMDNhOTk3ZDA2MzM3ODlkNDY5ZWEwZThkNTMuLjk1YTI3
ODQwNjU4MjI4MGExMTdiZjEyZDdmYWU3YWJkMDYzYWFhYWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMjc4
NCw3ICsyNzg0LDcgQEAgdm9pZCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNmb3JtT3JpZ2luU2hvcnRo
YW5kKFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMSwgUmVmUHRyPEMKICAgICAgICAgbV92YWx1ZUxp
c3QtPm5leHQoKTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlVGltaW5nRnVuY3Rpb25WYWx1
ZShDU1NQYXJzZXJWYWx1ZUxpc3QqJiBhcmdzLCBkb3VibGUmIHJlc3VsdCkKK2Jvb2wgQ1NTUGFy
c2VyOjpwYXJzZUN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZShDU1NQYXJzZXJWYWx1ZUxp
c3QqJiBhcmdzLCBkb3VibGUmIHJlc3VsdCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSogdiA9IGFy
Z3MtPmN1cnJlbnQoKTsKICAgICBpZiAoIXZhbGlkVW5pdCh2LCBGTnVtYmVyLCBtX3N0cmljdCkp
CkBAIC0yODA1LDMxICsyODA1LDY3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRpbWluZ0Z1bmN0
aW9uVmFsdWUoQ1NTUGFyc2VyVmFsdWVMaXN0KiYgYXJncywgZG91YmxlJiByZXN1CiBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oKQog
ewogICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7Ci0g
ICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUVhc2UgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVl
TGluZWFyIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUVhc2VJbiB8fCB2YWx1ZS0+aWQgPT0gQ1NT
VmFsdWVFYXNlT3V0IHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUVhc2VJbk91dCkKKyAgICBpZiAo
dmFsdWUtPmlkID09IENTU1ZhbHVlRWFzZSB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVMaW5lYXIg
fHwgdmFsdWUtPmlkID09IENTU1ZhbHVlRWFzZUluIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUVh
c2VPdXQKKyAgICAgICAgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlRWFzZUluT3V0IHx8IHZhbHVl
LT5pZCA9PSBDU1NWYWx1ZVN0ZXBTdGFydCB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVTdGVwRW5k
KQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIodmFs
dWUtPmlkKTsKIAogICAgIC8vIFdlIG11c3QgYmUgYSBmdW5jdGlvbi4KICAgICBpZiAodmFsdWUt
PnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIC8vIFRoZSBvbmx5IHRpbWluZyBmdW5jdGlvbiB3ZSBhY2NlcHQgZm9yIG5vdyBpcyBhIGN1
YmljIGJlemllciBmdW5jdGlvbi4gIDQgcG9pbnRzIG11c3QgYmUgc3BlY2lmaWVkLgogICAgIENT
U1BhcnNlclZhbHVlTGlzdCogYXJncyA9IHZhbHVlLT5mdW5jdGlvbi0+YXJncy5nZXQoKTsKLSAg
ICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgImN1YmljLWJl
emllcigiKSB8fCAhYXJncyB8fCBhcmdzLT5zaXplKCkgIT0gNykKLSAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICAvLyBUaGVyZSBhcmUgdHdvIHBvaW50cyBzcGVjaWZpZWQuICBUaGUgdmFsdWVzIG11
c3QgYmUgYmV0d2VlbiAwIGFuZCAxLgotICAgIGRvdWJsZSB4MSwgeTEsIHgyLCB5MjsKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAic3RlcHMoIikpIHsK
KyAgICAgICAgLy8gRm9yIHN0ZXBzLCAxIG9yIDIgcGFyYW1zIG11c3QgYmUgc3BlY2lmaWVkIChj
b21tYS1zZXBhcmF0ZWQpCisgICAgICAgIGlmICghYXJncyB8fCAoYXJncy0+c2l6ZSgpICE9IDEg
JiYgYXJncy0+c2l6ZSgpICE9IDMpKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAo
IXBhcnNlVGltaW5nRnVuY3Rpb25WYWx1ZShhcmdzLCB4MSkpCi0gICAgICAgIHJldHVybiAwOwot
ICAgIGlmICghcGFyc2VUaW1pbmdGdW5jdGlvblZhbHVlKGFyZ3MsIHkxKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgaWYgKCFwYXJzZVRpbWluZ0Z1bmN0aW9uVmFsdWUoYXJncywgeDIpKQotICAg
ICAgICByZXR1cm4gMDsKLSAgICBpZiAoIXBhcnNlVGltaW5nRnVuY3Rpb25WYWx1ZShhcmdzLCB5
MikpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICAvLyBUaGVyZSBhcmUgdHdvIHZhbHVlcy4K
KyAgICAgICAgaW50IG51bVN0ZXBzOworICAgICAgICBib29sIHN0ZXBBdFN0YXJ0ID0gZmFsc2U7
CiAKLSAgICByZXR1cm4gQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHgxLCB5MSwgeDIs
IHkyKTsKKyAgICAgICAgQ1NTUGFyc2VyVmFsdWUqIHYgPSBhcmdzLT5jdXJyZW50KCk7CisgICAg
ICAgIGlmICghdmFsaWRVbml0KHYsIEZJbnRlZ2VyLCBtX3N0cmljdCkpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgbnVtU3RlcHMgPSBtaW4odi0+ZlZhbHVlLCAoZG91YmxlKUlOVF9N
QVgpOworICAgICAgICBpZiAobnVtU3RlcHMgPCAxKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHYgPSBhcmdzLT5uZXh0KCk7CisKKyAgICAgICAgaWYgKHYpIHsKKyAgICAgICAgICAg
IC8vIFRoZXJlIGlzIGEgY29tbWEgc28gd2UgbmVlZCB0byBwYXJzZSB0aGUgc2Vjb25kIHZhbHVl
CisgICAgICAgICAgICBpZiAodi0+dW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYg
di0+aVZhbHVlICE9ICcsJykKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg
IHYgPSBhcmdzLT5uZXh0KCk7CisgICAgICAgICAgICBpZiAodi0+aWQgIT0gQ1NTVmFsdWVTdGFy
dCAmJiB2LT5pZCAhPSBDU1NWYWx1ZUVuZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgICAgIHN0ZXBBdFN0YXJ0ID0gdi0+aWQgPT0gQ1NTVmFsdWVTdGFydDsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShu
dW1TdGVwcywgc3RlcEF0U3RhcnQpOworICAgIH0KKyAgICAKKyAgICBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAiY3ViaWMtYmV6aWVyKCIpKSB7CisgICAgICAg
IC8vIEZvciBjdWJpYyBiZXppZXIsIDQgdmFsdWVzIG11c3QgYmUgc3BlY2lmaWVkLgorICAgICAg
ICBpZiAoIWFyZ3MgfHwgYXJncy0+c2l6ZSgpICE9IDcpCisgICAgICAgICAgICByZXR1cm4gMDsK
KworICAgICAgICAvLyBUaGVyZSBhcmUgdHdvIHBvaW50cyBzcGVjaWZpZWQuICBUaGUgdmFsdWVz
IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxLgorICAgICAgICBkb3VibGUgeDEsIHkxLCB4MiwgeTI7
CisKKyAgICAgICAgaWYgKCFwYXJzZUN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZShhcmdz
LCB4MSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKCFwYXJzZUN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb25WYWx1ZShhcmdzLCB5MSkpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgaWYgKCFwYXJzZUN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZShhcmdzLCB4
MikpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKCFwYXJzZUN1YmljQmV6aWVy
VGltaW5nRnVuY3Rpb25WYWx1ZShhcmdzLCB5MikpCisgICAgICAgICAgICByZXR1cm4gMDsKKwor
ICAgICAgICByZXR1cm4gQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUo
eDEsIHkxLCB4MiwgeTIpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKIH0KIAogYm9vbCBD
U1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uUHJvcGVydHkoaW50IHByb3BJZCwgUmVmUHRyPENTU1Zh
bHVlPiYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBlODQwYTcwZTQ1ODJlMWQxNzAxNGFmYzYzYzgyM2Ew
MjIxN2IzMDRkLi40N2YwYmVkNjY2MmM4NzE0NWNmMWM1NmVmNWJhZDdlZGMyYzgwNDBjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuaApAQCAtMTA4LDcgKzEwOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRpb25UaW1pbmdGdW5jdGlvbigpOwogCiAgICAg
ICAgIHZvaWQgcGFyc2VUcmFuc2Zvcm1PcmlnaW5TaG9ydGhhbmQoUmVmUHRyPENTU1ZhbHVlPiYs
IFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+Jik7Ci0gICAgICAgIGJvb2wgcGFy
c2VUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNlclZhbHVlTGlzdComIGFyZ3MsIGRvdWJsZSYg
cmVzdWx0KTsKKyAgICAgICAgYm9vbCBwYXJzZUN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1
ZShDU1NQYXJzZXJWYWx1ZUxpc3QqJiBhcmdzLCBkb3VibGUmIHJlc3VsdCk7CiAgICAgICAgIGJv
b2wgcGFyc2VBbmltYXRpb25Qcm9wZXJ0eShpbnQgcHJvcElkLCBSZWZQdHI8Q1NTVmFsdWU+Jik7
CiAgICAgICAgIGJvb2wgcGFyc2VUcmFuc2l0aW9uU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KTsK
ICAgICAgICAgYm9vbCBwYXJzZUFuaW1hdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDJhN2IwOGUyOWM2YjY2ZmFlMzU0OTQ3MTUzMTk2
YzU4OWUxMDcyODkuLjQ3ZDAxZThkOTRlZDNkYTI2MWUzYjRmYjczYTQ1ZmFmNDk1ZWQxOGMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC02MDU5LDE5ICs2MDU5LDI1IEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oQW5pbWF0aW9uKiBhbmlt
YXRpb24sIENTU1ZhbHVlCiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAgICAgICBzd2l0
Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CiAgICAgICAgICAgICBjYXNlIENTU1Zh
bHVlTGluZWFyOgotICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24o
VGltaW5nRnVuY3Rpb24oTGluZWFyVGltaW5nRnVuY3Rpb24sIDAuMCwgMC4wLCAxLjAsIDEuMCkp
OworICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oTGluZWFyVGlt
aW5nRnVuY3Rpb246OmNyZWF0ZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVFYXNlOgotICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGlt
aW5nRnVuY3Rpb24oVGltaW5nRnVuY3Rpb24oKSk7CisgICAgICAgICAgICAgICAgYW5pbWF0aW9u
LT5zZXRUaW1pbmdGdW5jdGlvbihDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRWFzZUlu
OgotICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oVGltaW5nRnVu
Y3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiwgMC40MiwgMC4wLCAxLjAsIDEuMCkpOwor
ICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvbjo6Y3JlYXRlKDAuNDIsIDAuMCwgMS4wLCAxLjApKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVFYXNlT3V0OgotICAgICAgICAg
ICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oVGltaW5nRnVuY3Rpb24oQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvbiwgMC4wLCAwLjAsIDAuNTgsIDEuMCkpOworICAgICAgICAgICAg
ICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjo6Y3JlYXRlKDAuMCwgMC4wLCAwLjU4LCAxLjApKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVFYXNlSW5PdXQ6Ci0gICAgICAgICAgICAgICAgYW5p
bWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihUaW1pbmdGdW5jdGlvbihDdWJpY0JlemllclRpbWlu
Z0Z1bmN0aW9uLCAwLjQyLCAwLjAsIDAuNTgsIDEuMCkpOworICAgICAgICAgICAgICAgIGFuaW1h
dGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRl
KDAuNDIsIDAuMCwgMC41OCwgMS4wKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlU3RlcFN0YXJ0OgorICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+
c2V0VGltaW5nRnVuY3Rpb24oU3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKDEsIHRydWUpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTdGVwRW5k
OgorICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oU3RlcHNUaW1p
bmdGdW5jdGlvbjo6Y3JlYXRlKDEsIGZhbHNlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtNjA3OSw3ICs2MDg1LDE0IEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oQW5pbWF0aW9uKiBhbmlt
YXRpb24sIENTU1ZhbHVlCiAgICAgCiAgICAgaWYgKHZhbHVlLT5pc1RpbWluZ0Z1bmN0aW9uVmFs
dWUoKSkgewogICAgICAgICBDU1NUaW1pbmdGdW5jdGlvblZhbHVlKiB0aW1pbmdGdW5jdGlvbiA9
IHN0YXRpY19jYXN0PENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgIGFu
aW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oVGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1p
bmdGdW5jdGlvbiwgdGltaW5nRnVuY3Rpb24tPngxKCksIHRpbWluZ0Z1bmN0aW9uLT55MSgpLCB0
aW1pbmdGdW5jdGlvbi0+eDIoKSwgdGltaW5nRnVuY3Rpb24tPnkyKCkpKTsKKyAgICAgICAgaWYg
KHRpbWluZ0Z1bmN0aW9uLT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSgpKSB7Cisg
ICAgICAgICAgICBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUqIGN1YmljVGltaW5n
RnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUq
Pih2YWx1ZSk7CisgICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZShjdWJpY1RpbWluZ0Z1bmN0aW9uLT54MSgpLCBj
dWJpY1RpbWluZ0Z1bmN0aW9uLT55MSgpLCBjdWJpY1RpbWluZ0Z1bmN0aW9uLT54MigpLCBjdWJp
Y1RpbWluZ0Z1bmN0aW9uLT55MigpKSk7CisgICAgICAgIH0gZWxzZSBpZiAodGltaW5nRnVuY3Rp
b24tPmlzU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKCkpIHsKKyAgICAgICAgICAgIENTU1N0ZXBz
VGltaW5nRnVuY3Rpb25WYWx1ZSogc3RlcHNUaW1pbmdGdW5jdGlvbiA9IHN0YXRpY19jYXN0PENT
U1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgICAgIGFuaW1hdGlv
bi0+c2V0VGltaW5nRnVuY3Rpb24oU3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKHN0ZXBzVGlt
aW5nRnVuY3Rpb24tPm51bWJlck9mU3RlcHMoKSwgc3RlcHNUaW1pbmdGdW5jdGlvbi0+c3RlcEF0
U3RhcnQoKSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGlt
aW5nRnVuY3Rpb24oTGluZWFyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwIGIvV2Vi
Q29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKaW5kZXggZTU3NmQzNjk2YmM5OWIz
YzEyNjM0ZDU4NWMyNTVhYWMxNjI5NjM1Ny4uOWVlY2IyYzc2YjAxZGRhYzhjMzQwNzliOGZkMjg2
NDczNDBmYjVkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1
ZS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKQEAgLTMw
LDcgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIENTU1RpbWluZ0Z1
bmN0aW9uVmFsdWU6OmNzc1RleHQoKSBjb25zdAorU3RyaW5nIENTU0xpbmVhclRpbWluZ0Z1bmN0
aW9uVmFsdWU6OmNzc1RleHQoKSBjb25zdAoreworICAgIHJldHVybiAibGluZWFyIjsKK30KKwor
U3RyaW5nIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0
CiB7CiAgICAgU3RyaW5nIHRleHQoImN1YmljLWJlemllcigiKTsKICAgICB0ZXh0ICs9IFN0cmlu
Zzo6bnVtYmVyKG1feDEpOwpAQCAtNDQsNCArNDksMTQgQEAgU3RyaW5nIENTU1RpbWluZ0Z1bmN0
aW9uVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiB0ZXh0OwogfQogCitTdHJpbmcg
Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpjc3NUZXh0KCkgY29uc3QKK3sKKyAgICBTdHJp
bmcgdGV4dCgic3RlcHMoIik7CisgICAgdGV4dCArPSBTdHJpbmc6Om51bWJlcihtX3N0ZXBzKTsK
KyAgICB0ZXh0ICs9ICIsICI7CisgICAgdGV4dCArPSBtX3N0ZXBBdFN0YXJ0ID8gInN0YXJ0IiA6
ICJlbmQiOworICAgIHRleHQgKz0gIikiOworICAgIHJldHVybiB0ZXh0OworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlv
blZhbHVlLmggYi9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKaW5kZXggZTQ2
NTk5MzVjZGI3OTMxODZjMTBkZjcwNGU0OGNkNzlkY2RiYTczMC4uMjdlODk5YmQ1OWY2YjVkNzc5
ZDEyOTYxNzE0NDEzNzYxMDc4YWZjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTVGltaW5n
RnVuY3Rpb25WYWx1ZS5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUu
aApAQCAtMzMsMjAgKzMzLDUxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTVGlt
aW5nRnVuY3Rpb25WYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZT4gY3JlYXRlKGRvdWJsZSB4MSwgZG91
YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikKKyAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0
KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGlzTGluZWFyVGltaW5nRnVuY3Rpb25W
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZSgpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBpc1RpbWluZ0Z1bmN0aW9uVmFsdWUoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9Cit9OworCitjbGFzcyBDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZh
bHVlIDogcHVibGljIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWU+IGNyZWF0ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFs
dWUpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25W
YWx1ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU1RpbWluZ0Z1bmN0
aW9uVmFsdWUoeDEsIHkxLCB4MiwgeTIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyBj
c3NUZXh0KCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5lYXJUaW1pbmdGdW5jdGlv
blZhbHVlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorfTsKKyAgICAKK2NsYXNzIENTU0N1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSA6IHB1YmxpYyBDU1NUaW1pbmdGdW5jdGlvblZhbHVl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uVmFsdWU+IGNyZWF0ZShkb3VibGUgeDEsIGRvdWJsZSB5MSwgZG91YmxlIHgyLCBkb3Vi
bGUgeTIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU0N1YmljQmV6aWVy
VGltaW5nRnVuY3Rpb25WYWx1ZSh4MSwgeTEsIHgyLCB5MikpOworICAgIH0KKwogICAgIGRvdWJs
ZSB4MSgpIGNvbnN0IHsgcmV0dXJuIG1feDE7IH0KICAgICBkb3VibGUgeTEoKSBjb25zdCB7IHJl
dHVybiBtX3kxOyB9CiAgICAgZG91YmxlIHgyKCkgY29uc3QgeyByZXR1cm4gbV94MjsgfQogICAg
IGRvdWJsZSB5MigpIGNvbnN0IHsgcmV0dXJuIG1feTI7IH0KIAogcHJpdmF0ZToKLSAgICBDU1NU
aW1pbmdGdW5jdGlvblZhbHVlKGRvdWJsZSB4MSwgZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJs
ZSB5MikKKyAgICBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUoZG91YmxlIHgxLCBk
b3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyKQogICAgICAgICA6IG1feDEoeDEpCiAgICAg
ICAgICwgbV95MSh5MSkKICAgICAgICAgLCBtX3gyKHgyKQpAQCAtNTQsMTQgKzg1LDQxIEBAIHBy
aXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1RpbWluZ0Z1bmN0aW9u
VmFsdWUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgCisgICAgdmlydHVhbCBTdHJpbmcg
Y3NzVGV4dCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvblZhbHVlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgZG91YmxlIG1feDE7
CiAgICAgZG91YmxlIG1feTE7CiAgICAgZG91YmxlIG1feDI7CiAgICAgZG91YmxlIG1feTI7CiB9
OwogCitjbGFzcyBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUgOiBwdWJsaWMgQ1NTVGltaW5n
RnVuY3Rpb25WYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTU3RlcHNU
aW1pbmdGdW5jdGlvblZhbHVlPiBjcmVhdGUoaW50IHN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9u
VmFsdWUoc3RlcHMsIHN0ZXBBdFN0YXJ0KSk7CisgICAgfQorCisgICAgaW50IG51bWJlck9mU3Rl
cHMoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBzOyB9CisgICAgYm9vbCBzdGVwQXRTdGFydCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RlcEF0U3RhcnQ7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgQ1NTU3Rl
cHNUaW1pbmdGdW5jdGlvblZhbHVlKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKKyAgICAg
ICAgOiBtX3N0ZXBzKHN0ZXBzKQorICAgICAgICAsIG1fc3RlcEF0U3RhcnQoc3RlcEF0U3RhcnQp
CisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBpc1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKworICAgIGludCBtX3N0ZXBzOworICAgIGJvb2wgbV9zdGVwQXRTdGFydDsK
K307CisgICAgCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmlu
CmluZGV4IDdhOWI5Yzc3OGIzZjgxMTZlMmVmNmZjMzFlNmQ1NmQ3NTgyNDU0YWQuLjFlN2MyYjVi
NzYzNjY4NDBlMjFhYTRhNDIzZTliZjQ0OGI3OWYxM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlS2V5d29yZHMuaW4KKysrIGIvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5p
bgpAQCAtNjkxLDYgKzY5MSw4IEBAIGxpbmVhcgogZWFzZS1pbgogZWFzZS1vdXQKIGVhc2UtaW4t
b3V0CitzdGVwLXN0YXJ0CitzdGVwLWVuZAogCiAjCiAjIENTU19QUk9QX1pPT00KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IGQ0OTI2ZWFmMzA1YzhkMmU3YThk
Y2NjZTIwNDJjZDFiYzZhOTQxYTQuLjZlZmVkOGU2NTFmZGVlMTFmNmYyYjA4ODJjOGU4NGY2ZTE4
NzRhNmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5j
cHAKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtNzAs
NiArNzAsMTMgQEAgc3RhdGljIGlubGluZSBkb3VibGUgc29sdmVDdWJpY0JlemllckZ1bmN0aW9u
KGRvdWJsZSBwMXgsIGRvdWJsZSBwMXksIGRvdWJsZSBwMngKICAgICByZXR1cm4gYmV6aWVyLnNv
bHZlKHQsIHNvbHZlRXBzaWxvbihkdXJhdGlvbikpOwogfQogCitzdGF0aWMgaW5saW5lIGRvdWJs
ZSBzb2x2ZVN0ZXBzRnVuY3Rpb24oaW50IG51bVN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0LCBkb3Vi
bGUgdCkKK3sKKyAgICBpZiAoc3RlcEF0U3RhcnQpCisgICAgICAgIHJldHVybiBtaW4oMS4wLCAo
Zmxvb3IobnVtU3RlcHMgKiB0KSArIDEpIC8gbnVtU3RlcHMpOworICAgIHJldHVybiBmbG9vcihu
dW1TdGVwcyAqIHQpIC8gbnVtU3RlcHM7Cit9CisKIHN0YXRpYyBpbmxpbmUgaW50IGJsZW5kRnVu
Yyhjb25zdCBBbmltYXRpb25CYXNlKiwgaW50IGZyb20sIGludCB0bywgZG91YmxlIHByb2dyZXNz
KQogeyAgCiAgICAgcmV0dXJuIGludChmcm9tICsgKHRvIC0gZnJvbSkgKiBwcm9ncmVzcyk7CkBA
IC0xMjQ5LDE4ICsxMjU2LDIwIEBAIGRvdWJsZSBBbmltYXRpb25CYXNlOjpwcm9ncmVzcyhkb3Vi
bGUgc2NhbGUsIGRvdWJsZSBvZmZzZXQsIGNvbnN0IFRpbWluZ0Z1bmN0aW9uCiAgICAgICAgIGZy
YWN0aW9uYWxUaW1lID0gKGZyYWN0aW9uYWxUaW1lIC0gb2Zmc2V0KSAqIHNjYWxlOwogICAgICAg
ICAKICAgICBpZiAoIXRmKQotICAgICAgICB0ZiA9ICZtX2FuaW1hdGlvbi0+dGltaW5nRnVuY3Rp
b24oKTsKLQotICAgIGlmICh0Zi0+dHlwZSgpID09IExpbmVhclRpbWluZ0Z1bmN0aW9uKQorICAg
ICAgICB0ZiA9IG1fYW5pbWF0aW9uLT50aW1pbmdGdW5jdGlvbigpLmdldCgpOworCisgICAgaWYg
KHRmLT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgeworICAgICAgICBjb25zdCBDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uKiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uKj4odGYpOworICAgICAgICByZXR1cm4gc29sdmVDdWJpY0JlemllckZ1
bmN0aW9uKGN0Zi0+eDEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjdGYtPnkxKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Rm
LT54MigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0Zi0+eTIo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbmFsVGlt
ZSwgbV9hbmltYXRpb24tPmR1cmF0aW9uKCkpOworICAgIH0gZWxzZSBpZiAodGYtPmlzU3RlcHNU
aW1pbmdGdW5jdGlvbigpKSB7CisgICAgICAgIGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24qIHN0
ZiA9IHN0YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24qPih0Zik7CisgICAgICAg
IHJldHVybiBzb2x2ZVN0ZXBzRnVuY3Rpb24oc3RmLT5udW1iZXJPZlN0ZXBzKCksIHN0Zi0+c3Rl
cEF0U3RhcnQoKSwgZnJhY3Rpb25hbFRpbWUpOworICAgIH0gZWxzZQogICAgICAgICByZXR1cm4g
ZnJhY3Rpb25hbFRpbWU7Ci0KLSAgICAvLyBDdWJpYyBiZXppZXIuCi0gICAgZG91YmxlIHJlc3Vs
dCA9IHNvbHZlQ3ViaWNCZXppZXJGdW5jdGlvbih0Zi0+eDEoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGYtPnkxKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRmLT54MigpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0Zi0+eTIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb25hbFRpbWUsIG1fYW5pbWF0aW9uLT5kdXJhdGlv
bigpKTsKLSAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIEFuaW1hdGlvbkJhc2U6OmdldFRp
bWVUb05leHRFdmVudChkb3VibGUmIHRpbWUsIGJvb2wmIGlzTG9vcGluZykgY29uc3QKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwIGIvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKaW5kZXggMDFlYzJmMTY5
MDhhMGFlZTI0YjYxZTExNGViNmQ5YTllMDE1ZTBmNi4uZWVkZGI5NDZmYjQ0MjU4YmRmYjBmOGIz
MTMxZThjMzNkMTY0NjAyMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlm
cmFtZUFuaW1hdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFu
aW1hdGlvbi5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIEtleWZyYW1lQW5pbWF0aW9uOjpm
ZXRjaEludGVydmFsRW5kcG9pbnRzRm9yUHJvcGVydHkoaW50IHByb3BlcnR5LCBjb25zdCBSZQog
ICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IDA7CiAgICAgaWYgKGZy
b21TdHlsZS0+YW5pbWF0aW9ucygpICYmIGZyb21TdHlsZS0+YW5pbWF0aW9ucygpLT5zaXplKCkg
PiAwKSB7CiAgICAgICAgIC8vIFdlIGdldCB0aGUgdGltaW5nIGZ1bmN0aW9uIGZyb20gdGhlIGZp
cnN0IGFuaW1hdGlvbiwgYmVjYXVzZSB3ZSd2ZSBzeW50aGVzaXplZCBhIFJlbmRlclN0eWxlIGZv
ciBlYWNoIGtleWZyYW1lLgotICAgICAgICB0aW1pbmdGdW5jdGlvbiA9ICYoZnJvbVN0eWxlLT5h
bmltYXRpb25zKCktPmFuaW1hdGlvbigwKS0+dGltaW5nRnVuY3Rpb24oKSk7CisgICAgICAgIHRp
bWluZ0Z1bmN0aW9uID0gZnJvbVN0eWxlLT5hbmltYXRpb25zKCktPmFuaW1hdGlvbigwKS0+dGlt
aW5nRnVuY3Rpb24oKS5nZXQoKTsKICAgICB9CiAKICAgICBwcm9nID0gcHJvZ3Jlc3Moc2NhbGUs
IG9mZnNldCwgdGltaW5nRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9h
bmltYXRpb24vQW5pbWF0aW9uLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1h
dGlvbi5jcHAKaW5kZXggYmMzM2E5ZWZlZGRkMTRmZDA2MWFiN2I0ZjhmYWE5OWRhMDdkOTQxOS4u
NmU1OWY2YjEyYjBjYjI0Njk4M2ZlMGZlZDUwNjE1MTEzNDliOGNkYSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2FuaW1hdGlvbi9BbmltYXRpb24uY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgYm9vbCBBbmlt
YXRpb246OmFuaW1hdGlvbnNNYXRjaChjb25zdCBBbmltYXRpb24qIG8sIGJvb2wgbWF0Y2hQbGF5
U3RhdGVzKSBjb25zdAogICAgICAgICAgICAgICAgICAgbV9pdGVyYXRpb25Db3VudCA9PSBvLT5t
X2l0ZXJhdGlvbkNvdW50ICYmCiAgICAgICAgICAgICAgICAgICBtX2RlbGF5ID09IG8tPm1fZGVs
YXkgJiYKICAgICAgICAgICAgICAgICAgIG1fZHVyYXRpb24gPT0gby0+bV9kdXJhdGlvbiAmJgot
ICAgICAgICAgICAgICAgICAgbV90aW1pbmdGdW5jdGlvbiA9PSBvLT5tX3RpbWluZ0Z1bmN0aW9u
ICYmCisgICAgICAgICAgICAgICAgICAqKG1fdGltaW5nRnVuY3Rpb24uZ2V0KCkpID09ICooby0+
bV90aW1pbmdGdW5jdGlvbi5nZXQoKSkgJiYKICAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9u
ID09IG8tPm1fZGlyZWN0aW9uICYmCiAgICAgICAgICAgICAgICAgICBtX2ZpbGxNb2RlID09IG8t
Pm1fZmlsbE1vZGUgJiYKICAgICAgICAgICAgICAgICAgIG1fZGVsYXlTZXQgPT0gby0+bV9kZWxh
eVNldCAmJgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9u
LmggYi9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaAppbmRleCBjYWJiMGVi
ZmQxOWMwNmExM2IxOTNmOTc4YjFmMjlmN2NlYzZiMDBkLi45MTMwNDE1MTk5MTBmYmEzNzY0NTI1
Mjk2YmQ4MjY4MjVjM2FhN2JiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlv
bi9BbmltYXRpb24uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24u
aApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBBbmltYXRpb25faAogCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1
ZGUgIlRpbWluZ0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtOTQsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdW5zaWduZWQg
cGxheVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5U3RhdGU7IH0KICAgICBpbnQgcHJvcGVy
dHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5OyB9Ci0gICAgY29uc3QgVGltaW5nRnVuY3Rp
b24mIHRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90aW1pbmdGdW5jdGlvbjsgfQor
ICAgIGNvbnN0IFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV90aW1pbmdGdW5jdGlvbjsgfQogCiAgICAgdm9pZCBzZXREZWxheShkb3Vi
bGUgYykgeyBtX2RlbGF5ID0gYzsgbV9kZWxheVNldCA9IHRydWU7IH0KICAgICB2b2lkIHNldERp
cmVjdGlvbihBbmltYXRpb25EaXJlY3Rpb24gZCkgeyBtX2RpcmVjdGlvbiA9IGQ7IG1fZGlyZWN0
aW9uU2V0ID0gdHJ1ZTsgfQpAQCAtMTA0LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dE5hbWUoY29uc3QgU3RyaW5nJiBuKSB7IG1fbmFtZSA9IG47IG1fbmFtZVNldCA9IHRydWU7IH0K
ICAgICB2b2lkIHNldFBsYXlTdGF0ZSh1bnNpZ25lZCBkKSB7IG1fcGxheVN0YXRlID0gZDsgbV9w
bGF5U3RhdGVTZXQgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXRQcm9wZXJ0eShpbnQgdCkgeyBtX3By
b3BlcnR5ID0gdDsgbV9wcm9wZXJ0eVNldCA9IHRydWU7IH0KLSAgICB2b2lkIHNldFRpbWluZ0Z1
bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBmKSB7IG1fdGltaW5nRnVuY3Rpb24gPSBmOyBt
X3RpbWluZ0Z1bmN0aW9uU2V0ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0VGltaW5nRnVuY3Rpb24o
UGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gZikgeyBtX3RpbWluZ0Z1bmN0aW9uID0gZjsgbV90
aW1pbmdGdW5jdGlvblNldCA9IHRydWU7IH0KIAogICAgIHZvaWQgc2V0SXNOb25lQW5pbWF0aW9u
KGJvb2wgbikgeyBtX2lzTm9uZSA9IG47IH0KIApAQCAtMTI5LDcgKzEzMCw3IEBAIHByaXZhdGU6
CiAgICAgaW50IG1faXRlcmF0aW9uQ291bnQ7CiAgICAgZG91YmxlIG1fZGVsYXk7CiAgICAgZG91
YmxlIG1fZHVyYXRpb247Ci0gICAgVGltaW5nRnVuY3Rpb24gbV90aW1pbmdGdW5jdGlvbjsKKyAg
ICBSZWZQdHI8VGltaW5nRnVuY3Rpb24+IG1fdGltaW5nRnVuY3Rpb247CiAgICAgQW5pbWF0aW9u
RGlyZWN0aW9uIG1fZGlyZWN0aW9uIDogMTsKICAgICB1bnNpZ25lZCBtX2ZpbGxNb2RlIDogMjsK
IApAQCAtMTU2LDcgKzE1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGluaXRpYWxB
bmltYXRpb25OYW1lKCkgeyByZXR1cm4gU3RyaW5nKCJub25lIik7IH0KICAgICBzdGF0aWMgdW5z
aWduZWQgaW5pdGlhbEFuaW1hdGlvblBsYXlTdGF0ZSgpIHsgcmV0dXJuIEFuaW1QbGF5U3RhdGVQ
bGF5aW5nOyB9CiAgICAgc3RhdGljIGludCBpbml0aWFsQW5pbWF0aW9uUHJvcGVydHkoKSB7IHJl
dHVybiBjQW5pbWF0ZUFsbDsgfQotICAgIHN0YXRpYyBUaW1pbmdGdW5jdGlvbiBpbml0aWFsQW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24oKSB7IHJldHVybiBUaW1pbmdGdW5jdGlvbigpOyB9CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGluaXRpYWxBbmltYXRpb25UaW1pbmdG
dW5jdGlvbigpIHsgcmV0dXJuIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpOyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRp
b24vVGltaW5nRnVuY3Rpb24uaAppbmRleCBkM2Y3MWZmMmIxMjE2YWY2YjdkNmU0OTM1ZTJjNDQ1
ZGE1NjcxODA5Li44ZWYyZDhmMTQ1M2UzZWYxZDM3ZDI2M2Y5MDc5Zjc2NjliZmI3YzkyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgKQEAgLTI1LDUzICsy
NSw4NyBAQAogI2lmbmRlZiBUaW1pbmdGdW5jdGlvbl9oCiAjZGVmaW5lIFRpbWluZ0Z1bmN0aW9u
X2gKIAotI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgVGltaW5nRnVuY3Rp
b24gOiBGYXN0QWxsb2NCYXNlIHsKLSAgICBUaW1pbmdGdW5jdGlvbigpCi0gICAgICAgIDogbV90
eXBlKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24pCi0gICAgICAgICwgbV94MSgwLjI1KQotICAg
ICAgICAsIG1feTEoMC4xKQotICAgICAgICAsIG1feDIoMC4yNSkKLSAgICAgICAgLCBtX3kyKDEu
MCkKK2NsYXNzIFRpbWluZ0Z1bmN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8VGltaW5nRnVuY3Rp
b24+IHsKK3B1YmxpYzoKKworICAgIGVudW0gVGltaW5nRnVuY3Rpb25UeXBlIHsKKyAgICAgICAg
TGluZWFyRnVuY3Rpb24sIEN1YmljQmV6aWVyRnVuY3Rpb24sIFN0ZXBzRnVuY3Rpb24KKyAgICB9
OworICAgIAorICAgIHZpcnR1YWwgflRpbWluZ0Z1bmN0aW9uKCkgeyB9CisgICAgCisgICAgYm9v
bCBpc0xpbmVhclRpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IExpbmVh
ckZ1bmN0aW9uOyB9CisgICAgYm9vbCBpc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3R5cGUgPT0gQ3ViaWNCZXppZXJGdW5jdGlvbjsgfQorICAgIGJvb2wgaXNT
dGVwc1RpbWluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFN0ZXBzRnVuY3Rp
b247IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5j
dGlvbiYgb3RoZXIpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFRpbWluZ0Z1bmN0aW9uKFRpbWlu
Z0Z1bmN0aW9uVHlwZSB0eXBlKQorICAgICAgICA6IG1fdHlwZSh0eXBlKQogICAgIHsKICAgICB9
CisgICAgCisgICAgVGltaW5nRnVuY3Rpb25UeXBlIG1fdHlwZTsKK307CiAKLSAgICAvLyBUaGlz
IGV4cGxpY2l0IGNvcHkgY29uc3RydWN0b3Igd29ya3MgYXJvdW5kIGFuIGlubGluaW5nIGJ1ZyBp
biBHQ0MgNC4yIChvbmx5IHJlcHJvZWQgb24gbWFjLCBidXQgbWF5IGV4aXN0IG9uIG90aGVyIHBs
YXRmb3JtcykuCi0gICAgVGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24mIHRoYXQp
Ci0gICAgICAgIDogbV90eXBlKHRoYXQubV90eXBlKQotICAgICAgICAsIG1feDEodGhhdC5tX3gx
KQotICAgICAgICAsIG1feTEodGhhdC5tX3kxKQotICAgICAgICAsIG1feDIodGhhdC5tX3gyKQot
ICAgICAgICAsIG1feTIodGhhdC5tX3kyKQorY2xhc3MgTGluZWFyVGltaW5nRnVuY3Rpb24gOiBw
dWJsaWMgVGltaW5nRnVuY3Rpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPExp
bmVhclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoKQogICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBMaW5lYXJUaW1pbmdGdW5jdGlvbik7CiAgICAgfQotCi0gICAgVGltaW5nRnVuY3Rp
b24oRVRpbWluZ0Z1bmN0aW9uVHlwZSB0aW1pbmdGdW5jdGlvbiwgZG91YmxlIHgxID0gMC4wLCBk
b3VibGUgeTEgPSAwLjAsIGRvdWJsZSB4MiA9IDEuMCwgZG91YmxlIHkyID0gMS4wKQotICAgICAg
ICA6IG1fdHlwZSh0aW1pbmdGdW5jdGlvbikKLSAgICAgICAgLCBtX3gxKHgxKQotICAgICAgICAs
IG1feTEoeTEpCi0gICAgICAgICwgbV94Mih4MikKLSAgICAgICAgLCBtX3kyKHkyKQorICAgIAor
ICAgIH5MaW5lYXJUaW1pbmdGdW5jdGlvbigpIHsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikKICAgICB7CisgICAgICAgIHJl
dHVybiBvdGhlci5pc0xpbmVhclRpbWluZ0Z1bmN0aW9uKCk7CisgICAgfQorICAgIAorcHJpdmF0
ZToKKyAgICBMaW5lYXJUaW1pbmdGdW5jdGlvbigpCisgICAgICAgIDogVGltaW5nRnVuY3Rpb24o
TGluZWFyRnVuY3Rpb24pCisgICAgeworICAgIH0KK307CisgICAgCitjbGFzcyBDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uIDogcHVibGljIFRpbWluZ0Z1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoZG91Ymxl
IHgxID0gMC4yNSwgZG91YmxlIHkxID0gMC4xLCBkb3VibGUgeDIgPSAwLjI1LCBkb3VibGUgeTIg
PSAxLjApCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1YmljQmV6aWVyVGlt
aW5nRnVuY3Rpb24oeDEsIHkxLCB4MiwgeTIpKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgVGltaW5nRnVuY3Rpb24mIG8pIGNvbnN0CisgICAgfkN1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb24oKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBU
aW1pbmdGdW5jdGlvbiYgb3RoZXIpCiAgICAgewotICAgICAgICByZXR1cm4gbV90eXBlID09IG8u
bV90eXBlICYmIG1feDEgPT0gby5tX3gxICYmIG1feTEgPT0gby5tX3kxICYmIG1feDIgPT0gby5t
X3gyICYmIG1feTIgPT0gby5tX3kyOworICAgICAgICBpZiAob3RoZXIuaXNDdWJpY0JlemllclRp
bWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb24qIGN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24q
Pigmb3RoZXIpOworICAgICAgICAgICAgcmV0dXJuIG1feDEgPT0gY3RmLT5tX3gxICYmIG1feTEg
PT0gY3RmLT5tX3kxICYmIG1feDIgPT0gY3RmLT5tX3gyICYmIG1feTIgPT0gY3RmLT5tX3kyOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBkb3VibGUgeDEo
KSBjb25zdCB7IHJldHVybiBtX3gxOyB9CiAgICAgZG91YmxlIHkxKCkgY29uc3QgeyByZXR1cm4g
bV95MTsgfQogICAgIGRvdWJsZSB4MigpIGNvbnN0IHsgcmV0dXJuIG1feDI7IH0KICAgICBkb3Vi
bGUgeTIoKSBjb25zdCB7IHJldHVybiBtX3kyOyB9Ci0KLSAgICBFVGltaW5nRnVuY3Rpb25UeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLQorICAgIAogcHJpdmF0ZToKLSAgICBF
VGltaW5nRnVuY3Rpb25UeXBlIG1fdHlwZTsKKyAgICBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
KGRvdWJsZSB4MSwgZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikKKyAgICAgICAgOiBU
aW1pbmdGdW5jdGlvbihDdWJpY0JlemllckZ1bmN0aW9uKQorICAgICAgICAsIG1feDEoeDEpCisg
ICAgICAgICwgbV95MSh5MSkKKyAgICAgICAgLCBtX3gyKHgyKQorICAgICAgICAsIG1feTIoeTIp
CisgICAgeworICAgIH0KIAogICAgIGRvdWJsZSBtX3gxOwogICAgIGRvdWJsZSBtX3kxOwpAQCAt
NzksNiArMTEzLDM5IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1feTI7CiB9OwogCitjbGFzcyBT
dGVwc1RpbWluZ0Z1bmN0aW9uIDogcHVibGljIFRpbWluZ0Z1bmN0aW9uIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdGVwc1RpbWluZ0Z1bmN0aW9uPiBjcmVhdGUoaW50IHN0ZXBz
LCBib29sIHN0ZXBBdFN0YXJ0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
dGVwc1RpbWluZ0Z1bmN0aW9uKHN0ZXBzLCBzdGVwQXRTdGFydCkpOworICAgIH0KKyAgICAKKyAg
ICB+U3RlcHNUaW1pbmdGdW5jdGlvbigpIHsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikKKyAgICB7CisgICAgICAgIGlmIChv
dGhlci5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkgeworICAgICAgICAgICAgY29uc3QgU3RlcHNU
aW1pbmdGdW5jdGlvbiogc3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlv
bio+KCZvdGhlcik7CisgICAgICAgICAgICByZXR1cm4gbV9zdGVwcyA9PSBzdGYtPm1fc3RlcHMg
JiYgbV9zdGVwQXRTdGFydCA9PSBzdGYtPm1fc3RlcEF0U3RhcnQ7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBpbnQgbnVtYmVyT2ZTdGVwcygpIGNv
bnN0IHsgcmV0dXJuIG1fc3RlcHM7IH0KKyAgICBib29sIHN0ZXBBdFN0YXJ0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGVwQXRTdGFydDsgfQorICAgIAorcHJpdmF0ZToKKyAgICBTdGVwc1RpbWluZ0Z1
bmN0aW9uKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKKyAgICAgICAgOiBUaW1pbmdGdW5j
dGlvbihTdGVwc0Z1bmN0aW9uKQorICAgICAgICAsIG1fc3RlcHMoc3RlcHMpCisgICAgICAgICwg
bV9zdGVwQXRTdGFydChzdGVwQXRTdGFydCkKKyAgICB7CisgICAgfQorICAgIAorICAgIGludCBt
X3N0ZXBzOworICAgIGJvb2wgbV9zdGVwQXRTdGFydDsKK307CisgICAgCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBUaW1pbmdGdW5jdGlvbl9oCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDBmNzRjZDVjYjMzODVlZTdiYjVhNjg4MDJi
N2FmYzI5Nzg3ZmY4MGYuLjY4YTU4MGVkNGUwM2M0NzVhOTQ0Mjk3NTU5N2Y4ZjMzZmIzZGNiODgg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC04NSwxOCAr
ODUsMTggQEAgY2xhc3MgRmxvYXRQb2ludDNEOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xh
c3MgSW1hZ2U7CiBjbGFzcyBUZXh0U3RyZWFtOwotc3RydWN0IFRpbWluZ0Z1bmN0aW9uOworY2xh
c3MgVGltaW5nRnVuY3Rpb247CiAKIC8vIEJhc2UgY2xhc3MgZm9yIGFuaW1hdGlvbiB2YWx1ZXMg
KGFsc28gdXNlZCBmb3IgdHJhbnNpdGlvbnMpLiBIZXJlIHRvCiAvLyByZXByZXNlbnQgdmFsdWVz
IGZvciBwcm9wZXJ0aWVzIGJlaW5nIGFuaW1hdGVkIHZpYSB0aGUgR3JhcGhpY3NMYXllciwKIC8v
IHdpdGhvdXQgcHVsbGluZyBpbiBzdHlsZS1yZWxhdGVkIGRhdGEgZnJvbSBvdXRzaWRlIG9mIHRo
ZSBwbGF0Zm9ybSBkaXJlY3RvcnkuCiBjbGFzcyBBbmltYXRpb25WYWx1ZSA6IHB1YmxpYyBOb25j
b3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgQW5pbWF0aW9uVmFsdWUoZmxvYXQga2V5VGltZSwgY29u
c3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gMCkKKyAgICBBbmltYXRpb25WYWx1
ZShmbG9hdCBrZXlUaW1lLCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlv
biA9IDApCiAgICAgICAgIDogbV9rZXlUaW1lKGtleVRpbWUpCiAgICAgewogICAgICAgICBpZiAo
dGltaW5nRnVuY3Rpb24pCi0gICAgICAgICAgICBtX3RpbWluZ0Z1bmN0aW9uID0gYWRvcHRQdHIo
bmV3IFRpbWluZ0Z1bmN0aW9uKCp0aW1pbmdGdW5jdGlvbikpOworICAgICAgICAgICAgbV90aW1p
bmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9uOwogICAgIH0KICAgICAKICAgICB2aXJ0dWFsIH5B
bmltYXRpb25WYWx1ZSgpIHsgfQpAQCAtMTA2LDEzICsxMDYsMTMgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIGZsb2F0IG1fa2V5VGltZTsKLSAgICBPd25QdHI8VGltaW5nRnVuY3Rpb24+IG1f
dGltaW5nRnVuY3Rpb247CisgICAgUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBtX3RpbWluZ0Z1bmN0
aW9uOwogfTsKIAogLy8gVXNlZCB0byBzdG9yZSBvbmUgZmxvYXQgdmFsdWUgb2YgYW4gYW5pbWF0
aW9uLgogY2xhc3MgRmxvYXRBbmltYXRpb25WYWx1ZSA6IHB1YmxpYyBBbmltYXRpb25WYWx1ZSB7
CiBwdWJsaWM6Ci0gICAgRmxvYXRBbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBmbG9hdCB2
YWx1ZSwgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gMCkKKyAgICBGbG9h
dEFuaW1hdGlvblZhbHVlKGZsb2F0IGtleVRpbWUsIGZsb2F0IHZhbHVlLCBQYXNzUmVmUHRyPFRp
bWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiA9IDApCiAgICAgICAgIDogQW5pbWF0aW9uVmFs
dWUoa2V5VGltZSwgdGltaW5nRnVuY3Rpb24pCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAg
ICB7CkBAIC0xMjcsNyArMTI3LDcgQEAgcHJpdmF0ZToKIC8vIFVzZWQgdG8gc3RvcmUgb25lIHRy
YW5zZm9ybSB2YWx1ZSBpbiBhIGtleWZyYW1lIGxpc3QuCiBjbGFzcyBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZSA6IHB1YmxpYyBBbmltYXRpb25WYWx1ZSB7CiBwdWJsaWM6Ci0gICAgVHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWUoZmxvYXQga2V5VGltZSwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyog
dmFsdWUgPSAwLCBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSAwKQorICAg
IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGZsb2F0IGtleVRpbWUsIGNvbnN0IFRyYW5zZm9ybU9w
ZXJhdGlvbnMqIHZhbHVlID0gMCwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVu
Y3Rpb24gPSAwKQogICAgICAgICA6IEFuaW1hdGlvblZhbHVlKGtleVRpbWUsIHRpbWluZ0Z1bmN0
aW9uKQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tCmluZGV4IDMxNWNjMDA5MTAzYzY5OGZhMDAx
NDdiNDkzZjg2NTQ5YzgxZjJjYWUuLjVmZWRhZmZmMjdmNmU5Y2M3M2EwZjUwMWI2YTA3Y2U3MGVj
YTI5M2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNz
TGF5ZXJDQS5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xh
eWVyQ0EubW0KQEAgLTI3MiwxNiArMjcyLDE2IEBAIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBmbGlwVHJhbnNmb3JtKCkKIH0KICNlbmRpZgogCi1zdGF0aWMgQ0FNZWRpYVRpbWluZ0Z1bmN0
aW9uKiBnZXRDQU1lZGlhVGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24mIHRpbWlu
Z0Z1bmN0aW9uKQotewotICAgIHN3aXRjaCAodGltaW5nRnVuY3Rpb24udHlwZSgpKSB7Ci0gICAg
ICAgIGNhc2UgTGluZWFyVGltaW5nRnVuY3Rpb246Ci0gICAgICAgICAgICByZXR1cm4gW0NBTWVk
aWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhOYW1lOkAibGluZWFyIl07Ci0gICAgICAgIGNh
c2UgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBbQ0FNZWRp
YVRpbWluZ0Z1bmN0aW9uIGZ1bmN0aW9uV2l0aENvbnRyb2xQb2ludHM6c3RhdGljX2Nhc3Q8Zmxv
YXQ+KHRpbWluZ0Z1bmN0aW9uLngxKCkpIDpzdGF0aWNfY2FzdDxmbG9hdD4odGltaW5nRnVuY3Rp
b24ueTEoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIDpzdGF0aWNfY2FzdDxmbG9hdD4odGlt
aW5nRnVuY3Rpb24ueDIoKSkgOnN0YXRpY19jYXN0PGZsb2F0Pih0aW1pbmdGdW5jdGlvbi55Migp
KV07Ci0gICAgfQotICAgIHJldHVybiAwOworc3RhdGljIENBTWVkaWFUaW1pbmdGdW5jdGlvbiog
Z2V0Q0FNZWRpYVRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5j
dGlvbikKK3sKKyAgICAvLyBCeSB0aGlzIHBvaW50LCB0aW1pbmcgZnVuY3Rpb25zIGNhbiBvbmx5
IGJlIGxpbmVhciBvciBjdWJpYywgbm90IHN0ZXBzLgorICAgIEFTU0VSVCghdGltaW5nRnVuY3Rp
b24tPmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKTsKKyAgICBpZiAodGltaW5nRnVuY3Rpb24tPmlz
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbigpKSB7CisgICAgICAgIGNvbnN0IEN1YmljQmV6aWVy
VGltaW5nRnVuY3Rpb24qIGN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb24qPih0aW1pbmdGdW5jdGlvbik7CisgICAgICAgIHJldHVybiBbQ0FNZWRpYVRpbWlu
Z0Z1bmN0aW9uIGZ1bmN0aW9uV2l0aENvbnRyb2xQb2ludHM6c3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0
Zi0+eDEoKSkgOnN0YXRpY19jYXN0PGZsb2F0PihjdGYtPnkxKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c3RhdGljX2Nh
c3Q8ZmxvYXQ+KGN0Zi0+eDIoKSkgOnN0YXRpY19jYXN0PGZsb2F0PihjdGYtPnkyKCkpXTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIFtDQU1lZGlhVGltaW5nRnVuY3Rpb24gZnVuY3Rpb25X
aXRoTmFtZTpAImxpbmVhciJdOwogfQogCiBzdGF0aWMgdm9pZCBzZXRMYXllckJvcmRlckNvbG9y
KFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBjb25zdCBDb2xvciYgY29sb3IpCkBAIC0zNTYsNiArMzU2
LDIwIEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkqIG51bGxBY3Rpb25zRGljdGlvbmFyeSgpCiAgICAg
cmV0dXJuIGFjdGlvbnM7CiB9CiAKK3N0YXRpYyBib29sIGFuaW1hdGlvbkhhc1N0ZXBzVGltaW5n
RnVuY3Rpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0
aW9uKiBhbmltKQoreworICAgIGlmIChhbmltLT50aW1pbmdGdW5jdGlvbigpLT5pc1N0ZXBzVGlt
aW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBU
aW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24gPSB2YWx1ZUxpc3QuYXQoaSktPnRpbWluZ0Z1
bmN0aW9uKCk7CisgICAgICAgIGlmICh0aW1pbmdGdW5jdGlvbiAmJiB0aW1pbmdGdW5jdGlvbi0+
aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gR3Jh
cGhpY3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKIHsKICAgICBy
ZXR1cm4gbmV3IEdyYXBoaWNzTGF5ZXJDQShjbGllbnQpOwpAQCAtNzE2LDYgKzczMCwxMSBAQCBi
b29sIEdyYXBoaWNzTGF5ZXJDQTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0
JiB2YWx1ZUxpc3QsIGNvbnN0IEludAogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAor
ICAgIC8vIENvcmVBbmltYXRpb24gZG9lcyBub3QgaGFuZGxlIHRoZSBzdGVwcygpIHRpbWluZyBm
dW5jdGlvbi4gRmFsbCBiYWNrCisgICAgLy8gdG8gc29mdHdhcmUgYW5pbWF0aW9uIGluIHRoYXQg
Y2FzZS4KKyAgICBpZiAoYW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlvbih2YWx1ZUxpc3Qs
IGFuaW0pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBib29sIGNyZWF0ZWRBbmltYXRp
b25zID0gZmFsc2U7CiAgICAgaWYgKHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJv
cGVydHlXZWJraXRUcmFuc2Zvcm0pCiAgICAgICAgIGNyZWF0ZWRBbmltYXRpb25zID0gY3JlYXRl
VHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXModmFsdWVMaXN0LCBhbmltLCBrZXlmcmFt
ZXNOYW1lLCB0aW1lT2Zmc2V0LCBib3hTaXplKTsKQEAgLTE5MTMsOSArMTkzMiw5IEBAIENBTWVk
aWFUaW1pbmdGdW5jdGlvbiogR3JhcGhpY3NMYXllckNBOjp0aW1pbmdGdW5jdGlvbkZvckFuaW1h
dGlvblZhbHVlKGNvbnN0IEFuCiAgICAgaWYgKGFuaW1WYWx1ZS0+dGltaW5nRnVuY3Rpb24oKSkK
ICAgICAgICAgdGYgPSBhbmltVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCk7CiAgICAgZWxzZSBpZiAo
YW5pbS0+aXNUaW1pbmdGdW5jdGlvblNldCgpKQotICAgICAgICB0ZiA9ICZhbmltLT50aW1pbmdG
dW5jdGlvbigpOworICAgICAgICB0ZiA9IGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7CiAK
LSAgICByZXR1cm4gZ2V0Q0FNZWRpYVRpbWluZ0Z1bmN0aW9uKHRmID8gKnRmIDogVGltaW5nRnVu
Y3Rpb24oKSk7CisgICAgcmV0dXJuIGdldENBTWVkaWFUaW1pbmdGdW5jdGlvbih0ZiA/IHRmIDog
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpOwogfQogCiBib29sIEdy
YXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgQ0FCYXNpY0FuaW1hdGlvbiog
YmFzaWNBbmltKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXgg
OTgxZmExNmZlYjM1MmYzMGY3MjY2Yzk4MzEwNzhkNDg1ZmE5YzI2Yi4uNmM1OGUwZDcxYjJiNTAw
YWMxNjU4ZmM1YjFiZmYwYjQ4ZmM4ODdmZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCkBAIC0xMTI1LDcgKzExMjUsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2lu
Zzo6c3RhcnRBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiogYW5p
bQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gZ2V0IHRp
bWluZyBmdW5jdGlvbgotICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGYgPSBrZXlmcmFt
ZVN0eWxlLT5oYXNBbmltYXRpb25zKCkgPyAmKCgqa2V5ZnJhbWVTdHlsZS0+YW5pbWF0aW9ucygp
KS5hbmltYXRpb24oMCktPnRpbWluZ0Z1bmN0aW9uKCkpIDogMDsKKyAgICAgICAgUmVmUHRyPFRp
bWluZ0Z1bmN0aW9uPiB0ZiA9IGtleWZyYW1lU3R5bGUtPmhhc0FuaW1hdGlvbnMoKSA/ICgqa2V5
ZnJhbWVTdHlsZS0+YW5pbWF0aW9ucygpKS5hbmltYXRpb24oMCktPnRpbWluZ0Z1bmN0aW9uKCkg
OiAwOwogICAgICAgICAKICAgICAgICAgaWYgKGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3Bl
cnR5KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtKSkKICAgICAgICAgICAgIHRyYW5zZm9ybVZl
Y3Rvci5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGtleSwgJihrZXlmcmFtZVN0
eWxlLT50cmFuc2Zvcm0oKSksIHRmKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuaAppbmRleCA2OGM4MTEzZjYzYzgyYTg4YzY5ZjY0OWFmNDYzNTI5
N2QwY2E5OGZhLi5hNzgzMjFmODQxNTc1NjM4MjFkZTc3MjhjNTA2Y2Y2NTdiYTEzYmFkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKQEAgLTMw
Myw4ICszMDMsNiBAQCBlbnVtIEVBbmltUGxheVN0YXRlIHsKICAgICBBbmltUGxheVN0YXRlUGF1
c2VkID0gMHgxCiB9OwogCi1lbnVtIEVUaW1pbmdGdW5jdGlvblR5cGUgeyBMaW5lYXJUaW1pbmdG
dW5jdGlvbiwgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiB9OwotCiBlbnVtIEVXaGl0ZVNwYWNl
IHsKICAgICBOT1JNQUwsIFBSRSwgUFJFX1dSQVAsIFBSRV9MSU5FLCBOT1dSQVAsIEtIVE1MX05P
V1JBUAogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66950</attachid>
            <date>2010-09-08 15:35:22 -0700</date>
            <delta_ts>2010-09-08 16:07:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44541-20100909083519.patch</filename>
            <type>text/plain</type>
            <size>64708</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMzkxZDMxMjJmZjEyMjU2NTlkN2Y3MmVkMDY1ZjY4MTAwNDk1Y2E2Li5lMmI0NTFl
MjVlM2MzODE2ZjBkZTkxNWJhZmJhZGU4YzM1NTA5OGQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMTAtMDktMDggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBzdGVwcygpIHRp
bWluZyBmdW5jdGlvbiBmb3IgYW5pbWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ1NDEKKworICAgICAgICAqIHRyYW5zaXRpb25zL3N0ZXBz
LXRpbWluZy1mdW5jdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRyYW5zaXRp
b25zL3N0ZXBzLXRpbWluZy1mdW5jdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRp
b25zL3RpbWluZy1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhbmlt
YXRpb25zL3RpbWluZy1mdW5jdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICAgICAtIE5ldyB0
ZXN0cyB0aGF0IGV4ZXJjaXNlIHN0ZXBzIGluIGFuaW1hdGlvbnMKKyAgICAgICAgICAgICAgYW5k
IHRyYW5zaXRpb25zLCBpbiBzb2Z0d2FyZSBhbmQgaGFyZHdhcmUKKworICAgICAgICAqIGFuaW1h
dGlvbnMvY29tcHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFuaW1hdGlvbnMv
Y29tcHV0ZWQtc3R5bGUuaHRtbDoKKyAgICAgICAgKiBhbmltYXRpb25zL2FuaW1hdGlvbi1zaG9y
dGhhbmQuaHRtbDoKKyAgICAgICAgKiBhbmltYXRpb25zL2ZpbGwtdW5zZXQtcHJvcGVydGllcy5o
dG1sOgorICAgICAgICAqIHRyYW5zaXRpb25zL2luaGVyaXQtb3RoZXItcHJvcHMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHRyYW5zaXRpb25zL2luaGVyaXQtb3RoZXItcHJvcHMuaHRtbDoKKyAg
ICAgICAgICAgIC0gQ2hhbmdlIGV4aXN0aW5nIHRlc3RzIHRvIHVzZSAnbGluZWFyJyBjb21wdXRl
ZAorICAgICAgICAgICAgICBzdHlsZSB3aGVyZSBuZWNlc3NhcnkKKwogMjAxMC0wOS0wOCAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tc2hv
cnRoYW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1zaG9ydGhhbmQu
aHRtbAppbmRleCBhZGYzNzE5MjY0MzI1YTEyNzZiNjYxMzRmZTNkNGFhYzA2MGE0YmM3Li5lOGZi
ZGY4YWZhZGFhZDYyMzM1MTdlODI3YWQ1YjI5OTYzZTY2YjIyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9hbmltYXRpb25zL2FuaW1hdGlvbi1zaG9ydGhhbmQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9hbmltYXRpb25zL2FuaW1hdGlvbi1zaG9ydGhhbmQuaHRtbApAQCAtNTcsMTMgKzU3LDEzIEBA
CiAgICAgICB7IGlkOiAnYScsICB2YWx1ZXM6IFsgIm5vbmUiLCAiMHMiLCAiY3ViaWMtYmV6aWVy
KDAuMjUsIDAuMSwgMC4yNSwgMSkiLCAiMHMiLCAiMSIsICJub3JtYWwiLCAibm9uZSIgXSB9LAog
ICAgICAgeyBpZDogJ2InLCAgdmFsdWVzOiBbICJub25lIiwgIjBzIiwgImN1YmljLWJlemllcigw
LjI1LCAwLjEsIDAuMjUsIDEpIiwgIjBzIiwgIjEiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKICAg
ICAgIHsgaWQ6ICdjJywgIHZhbHVlczogWyAiYW5pbTEiLCAiMTBzIiwgImN1YmljLWJlemllcigw
LjI1LCAwLjEsIDAuMjUsIDEpIiwgIjBzIiwgIjEiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKLSAg
ICAgIHsgaWQ6ICdkJywgIHZhbHVlczogWyAiYW5pbTEiLCAiMTBzIiwgImN1YmljLWJlemllcigw
LCAwLCAxLCAxKSIsICIwcyIsICIxIiwgIm5vcm1hbCIsICJub25lIiBdIH0sCi0gICAgICB7IGlk
OiAnZScsICB2YWx1ZXM6IFsgImFuaW0xIiwgIjEwcyIsICJjdWJpYy1iZXppZXIoMCwgMCwgMSwg
MSkiLCAiNXMiLCAiMSIsICJub3JtYWwiLCAibm9uZSIgXSB9LAotICAgICAgeyBpZDogJ2YnLCAg
dmFsdWVzOiBbICJhbmltMSIsICIxMHMiLCAiY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpIiwgIjVz
IiwgIjMiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKLSAgICAgIHsgaWQ6ICdnJywgIHZhbHVlczog
WyAiYW5pbTEiLCAiMTBzIiwgImN1YmljLWJlemllcigwLCAwLCAxLCAxKSIsICI1cyIsICJpbmZp
bml0ZSIsICJhbHRlcm5hdGUiLCAibm9uZSIgXSB9LAotICAgICAgeyBpZDogJ2gnLCAgdmFsdWVz
OiBbICJhbmltMSIsICIxMHMiLCAiY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpIiwgIjVzIiwgImlu
ZmluaXRlIiwgImFsdGVybmF0ZSIsICJmb3J3YXJkcyIgXSB9LAotICAgICAgeyBpZDogJ2knLCAg
dmFsdWVzOiBbICJhbmltMSIsICIxMHMiLCAiY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpIiwgIjBz
IiwgIjEiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKLSAgICAgIHsgaWQ6ICdqJywgIHZhbHVlczog
WyAiYW5pbTEsIGFuaW0yLCBhbmltMyIsICIxMHMsIDNzLCA1cyIsICJjdWJpYy1iZXppZXIoMCwg
MCwgMSwgMSksIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpLCBjdWJpYy1iZXppZXIo
MC4yNSwgMC4xLCAwLjI1LCAxKSIsICIwcywgMHMsIDBzIiwgImluZmluaXRlLCAxLCAxIiwgIm5v
cm1hbCwgbm9ybWFsLCBub3JtYWwiLCAiYmFja3dhcmRzLCBub25lLCBib3RoIiBdIH0KKyAgICAg
IHsgaWQ6ICdkJywgIHZhbHVlczogWyAiYW5pbTEiLCAiMTBzIiwgImxpbmVhciIsICIwcyIsICIx
IiwgIm5vcm1hbCIsICJub25lIiBdIH0sCisgICAgICB7IGlkOiAnZScsICB2YWx1ZXM6IFsgImFu
aW0xIiwgIjEwcyIsICJsaW5lYXIiLCAiNXMiLCAiMSIsICJub3JtYWwiLCAibm9uZSIgXSB9LAor
ICAgICAgeyBpZDogJ2YnLCAgdmFsdWVzOiBbICJhbmltMSIsICIxMHMiLCAibGluZWFyIiwgIjVz
IiwgIjMiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKKyAgICAgIHsgaWQ6ICdnJywgIHZhbHVlczog
WyAiYW5pbTEiLCAiMTBzIiwgImxpbmVhciIsICI1cyIsICJpbmZpbml0ZSIsICJhbHRlcm5hdGUi
LCAibm9uZSIgXSB9LAorICAgICAgeyBpZDogJ2gnLCAgdmFsdWVzOiBbICJhbmltMSIsICIxMHMi
LCAibGluZWFyIiwgIjVzIiwgImluZmluaXRlIiwgImFsdGVybmF0ZSIsICJmb3J3YXJkcyIgXSB9
LAorICAgICAgeyBpZDogJ2knLCAgdmFsdWVzOiBbICJhbmltMSIsICIxMHMiLCAibGluZWFyIiwg
IjBzIiwgIjEiLCAibm9ybWFsIiwgIm5vbmUiIF0gfSwKKyAgICAgIHsgaWQ6ICdqJywgIHZhbHVl
czogWyAiYW5pbTEsIGFuaW0yLCBhbmltMyIsICIxMHMsIDNzLCA1cyIsICJsaW5lYXIsIGN1Ymlj
LWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpLCBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1
LCAxKSIsICIwcywgMHMsIDBzIiwgImluZmluaXRlLCAxLCAxIiwgIm5vcm1hbCwgbm9ybWFsLCBu
b3JtYWwiLCAiYmFja3dhcmRzLCBub25lLCBib3RoIiBdIH0KICAgICBdOwogICAgIAogICAgIGZ1
bmN0aW9uIHN0YXJ0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvY29tcHV0
ZWQtc3R5bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jb21wdXRlZC1z
dHlsZS1leHBlY3RlZC50eHQKaW5kZXggNjhiMDkyMTJmNDM2MzYyNGQ1MGEwMjk5MmEyYmM5YzA0
OTIyOGRjZS4uOGFjYzUyMDQ1MzdhNzRjZjRhMDVmMjQzMTYyNjkyNzg1NTBiMzM0ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQK
QEAgLTUsMTQgKzUsMTYgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogUEFTUyB0ZXN0MVN0
eWxlLndlYmtpdEFuaW1hdGlvbk5hbWUgaXMgJ2FuaW0xJwogUEFTUyB0ZXN0MlN0eWxlLndlYmtp
dEFuaW1hdGlvbk5hbWUgaXMgJ2FuaW0yLCBhbmltMycKK1BBU1MgdGVzdDNTdHlsZS53ZWJraXRB
bmltYXRpb25OYW1lIGlzICdhbmltMSwgYW5pbTIsIGFuaW0zJwogUEFTUyB0ZXN0MVN0eWxlLndl
YmtpdEFuaW1hdGlvbkR1cmF0aW9uIGlzICcxMHMnCiBQQVNTIHRlc3QyU3R5bGUud2Via2l0QW5p
bWF0aW9uRHVyYXRpb24gaXMgJzVzLCAyLjVzJwogUEFTUyB0ZXN0MVN0eWxlLndlYmtpdEFuaW1h
dGlvbkZpbGxNb2RlIGlzICdiYWNrd2FyZHMnCiBQQVNTIHRlc3QyU3R5bGUud2Via2l0QW5pbWF0
aW9uRmlsbE1vZGUgaXMgJ2ZvcndhcmRzLCBib3RoJwogUEFTUyB0ZXN0MVN0eWxlLndlYmtpdEFu
aW1hdGlvbkl0ZXJhdGlvbkNvdW50IGlzICcxMCcKIFBBU1MgdGVzdDJTdHlsZS53ZWJraXRBbmlt
YXRpb25JdGVyYXRpb25Db3VudCBpcyAnMTAsIGluZmluaXRlJwotUEFTUyB0ZXN0MVN0eWxlLndl
YmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSkn
Ci1QQVNTIHRlc3QyU3R5bGUud2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2N1Ymlj
LWJlemllcigwLCAwLCAxLCAxKSwgY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpJworUEFT
UyB0ZXN0MVN0eWxlLndlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdsaW5lYXInCitQ
QVNTIHRlc3QyU3R5bGUud2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24gaXMgJ2xpbmVhciwg
Y3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpJworUEFTUyB0ZXN0M1N0eWxlLndlYmtpdEFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uIGlzICdzdGVwcygxLCBzdGFydCksIHN0ZXBzKDEsIGVuZCks
IHN0ZXBzKDUsIGVuZCknCiBQQVNTIHRlc3QxU3R5bGUud2Via2l0QW5pbWF0aW9uRGlyZWN0aW9u
IGlzICdub3JtYWwnCiBQQVNTIHRlc3QyU3R5bGUud2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uIGlz
ICdub3JtYWwsIGFsdGVybmF0ZScKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9u
cy9jb21wdXRlZC1zdHlsZS5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9jb21wdXRlZC1z
dHlsZS5odG1sCmluZGV4IDg5YzhlZWRmNDMwM2EyY2YxZjFhMzk2YmJmYWE0NWVhMWFkYWJmOWEu
LmQzZDg2NzgxY2NlYTIwODQyMTMzYmFiZGMxMzc5ZjU0YWFhM2Q2OWIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2FuaW1hdGlvbnMvY29tcHV0ZWQtc3R5bGUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9hbmltYXRpb25zL2NvbXB1dGVkLXN0eWxlLmh0bWwKQEAgLTI2LDYgKzI2LDE1IEBACiAgICAg
ICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyLCBlYXNlLWluLW91
dDsKICAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uOiBub3JtYWwsIGFsdGVybmF0
ZTsKICAgICB9CisgICAgI3Rlc3QzIHsKKyAgICAgICAgd2lkdGg6IDIwcHg7CisgICAgICAgIGhl
aWdodDogMjBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgcG9z
aXRpb246IHJlbGF0aXZlOworICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBhbmltMSwg
YW5pbTIsIGFuaW0zOworICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogNXM7Cisg
ICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogc3RlcC1zdGFydCwgc3Rl
cC1lbmQsIHN0ZXBzKDUsIGVuZCk7CisgICAgfQogICAgIEAtd2Via2l0LWtleWZyYW1lcyBhbmlt
MSB7CiAgICAgICAgIGZyb20geyBsZWZ0OiAxMHB4OyB9CiAgICAgICAgIHRvIHsgbGVmdDogMjBw
eDsgfQpAQCAtNDQsNiArNTMsNyBAQAogPGJvZHk+CiA8cCBpZD0idGVzdDEiPjwvcD4KIDxwIGlk
PSJ0ZXN0MiI+PC9wPgorPHAgaWQ9InRlc3QzIj48L3A+CiA8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KQEAgLTU1LDkgKzY1LDExIEBA
IHZhciB0ZXN0MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0MiIpOwogCiB2YXIgdGVz
dDFTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRlc3QxKTsKIHZhciB0ZXN0MlN0eWxl
ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdDIpOwordmFyIHRlc3QzU3R5bGUgPSB3aW5k
b3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0Myk7CiAKIHNob3VsZEJlKCJ0ZXN0MVN0eWxlLndlYmtp
dEFuaW1hdGlvbk5hbWUiLCAiJ2FuaW0xJyIpOwogc2hvdWxkQmUoInRlc3QyU3R5bGUud2Via2l0
QW5pbWF0aW9uTmFtZSIsICInYW5pbTIsIGFuaW0zJyIpOworc2hvdWxkQmUoInRlc3QzU3R5bGUu
d2Via2l0QW5pbWF0aW9uTmFtZSIsICInYW5pbTEsIGFuaW0yLCBhbmltMyciKTsKIAogc2hvdWxk
QmUoInRlc3QxU3R5bGUud2Via2l0QW5pbWF0aW9uRHVyYXRpb24iLCAiJzEwcyciKTsKIHNob3Vs
ZEJlKCJ0ZXN0MlN0eWxlLndlYmtpdEFuaW1hdGlvbkR1cmF0aW9uIiwgIic1cywgMi41cyciKTsK
QEAgLTY4LDggKzgwLDkgQEAgc2hvdWxkQmUoInRlc3QyU3R5bGUud2Via2l0QW5pbWF0aW9uRmls
bE1vZGUiLCAiJ2ZvcndhcmRzLCBib3RoJyIpOwogc2hvdWxkQmUoInRlc3QxU3R5bGUud2Via2l0
QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCAiJzEwJyIpOwogc2hvdWxkQmUoInRlc3QyU3R5bGUu
d2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCAiJzEwLCBpbmZpbml0ZSciKTsKIAotc2hv
dWxkQmUoInRlc3QxU3R5bGUud2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24iLCAiJ2N1Ymlj
LWJlemllcigwLCAwLCAxLCAxKSciKTsKLXNob3VsZEJlKCJ0ZXN0MlN0eWxlLndlYmtpdEFuaW1h
dGlvblRpbWluZ0Z1bmN0aW9uIiwgIidjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSksIGN1YmljLWJl
emllcigwLjQyLCAwLCAwLjU4LCAxKSciKTsKK3Nob3VsZEJlKCJ0ZXN0MVN0eWxlLndlYmtpdEFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uIiwgIidsaW5lYXInIik7CitzaG91bGRCZSgidGVzdDJTdHls
ZS53ZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiIsICInbGluZWFyLCBjdWJpYy1iZXppZXIo
MC40MiwgMCwgMC41OCwgMSknIik7CitzaG91bGRCZSgidGVzdDNTdHlsZS53ZWJraXRBbmltYXRp
b25UaW1pbmdGdW5jdGlvbiIsICInc3RlcHMoMSwgc3RhcnQpLCBzdGVwcygxLCBlbmQpLCBzdGVw
cyg1LCBlbmQpJyIpOwogCiBzaG91bGRCZSgidGVzdDFTdHlsZS53ZWJraXRBbmltYXRpb25EaXJl
Y3Rpb24iLCAiJ25vcm1hbCciKTsKIHNob3VsZEJlKCJ0ZXN0MlN0eWxlLndlYmtpdEFuaW1hdGlv
bkRpcmVjdGlvbiIsICInbm9ybWFsLCBhbHRlcm5hdGUnIik7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hbmltYXRpb25zL2ZpbGwtdW5zZXQtcHJvcGVydGllcy5odG1sIGIvTGF5b3V0VGVzdHMv
YW5pbWF0aW9ucy9maWxsLXVuc2V0LXByb3BlcnRpZXMuaHRtbAppbmRleCBhNDlkZWNhZjUxZmY2
M2NlNzQyMDZmNzg2NmM5NWZjYzc5Y2YyNWI3Li44NTAzNmM0NDY4NzhjMzMzZmJkODBlMDgxNmJk
MzFjNjk2OTYwM2ViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpbGwtdW5z
ZXQtcHJvcGVydGllcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlsbC11bnNl
dC1wcm9wZXJ0aWVzLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAKICAgICAgIHsgJ3Byb3BlcnR5Jzog
J3dlYmtpdFRyYW5zaXRpb25EdXJhdGlvbicsICd2YWx1ZSc6ICcycywgMnMsIDFzLCAxcywgMnMn
IH0sCiAgICAgICB7ICdwcm9wZXJ0eSc6ICd3ZWJraXRUcmFuc2l0aW9uUHJvcGVydHknLCAndmFs
dWUnOiAnbGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0LCBvcGFjaXR5JyB9LAogICAgICAgeyAncHJv
cGVydHknOiAnd2Via2l0VHJhbnNpdGlvbkRlbGF5JywgICAgJ3ZhbHVlJzogJzRzLCAzcywgNHMs
IDNzLCA0cycgfSwKLSAgICAgIHsgJ3Byb3BlcnR5JzogJ3dlYmtpdFRyYW5zaXRpb25UaW1pbmdG
dW5jdGlvbicsICd2YWx1ZSc6ICdjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSksIGN1YmljLWJlemll
cigwLCAwLCAxLCAxKSwgY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpLCBjdWJpYy1iZXppZXIoMCwg
MCwgMSwgMSksIGN1YmljLWJlemllcigwLCAwLCAxLCAxKScgfSwKKyAgICAgIHsgJ3Byb3BlcnR5
JzogJ3dlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbicsICd2YWx1ZSc6ICdsaW5lYXIsIGxp
bmVhciwgbGluZWFyLCBsaW5lYXIsIGxpbmVhcicgfSwKICAgICAgIHsgJ3Byb3BlcnR5JzogJ3dl
YmtpdEFuaW1hdGlvbk5hbWUnLCAgICAgICd2YWx1ZSc6ICdhLCBiLCBjLCBkLCBlJyB9LAogICAg
ICAgeyAncHJvcGVydHknOiAnd2Via2l0QW5pbWF0aW9uRHVyYXRpb24nLCAgJ3ZhbHVlJzogJzEw
cywgMjBzLCAxMHMsIDIwcywgMTBzJyB9LAogICAgICAgeyAncHJvcGVydHknOiAnd2Via2l0QW5p
bWF0aW9uRGVsYXknLCAgICAgJ3ZhbHVlJzogJzFzLCAxcywgMXMsIDFzLCAxcycgfSwKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdGltaW5nLWZ1bmN0aW9ucy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RpbWluZy1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlYmQzNDcwZjA4N2ViYzM0YmJjZmM1OTYwNjBkNWNkY2MxMmFhNDYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RpbWluZy1mdW5jdGlvbnMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjYgQEAKK1RoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmlt
YXRpb24gb2YgdGhlIGxlZnQgcHJvcGVydHkuIEl0IGFuaW1hdGVzIG92ZXIgMSBzZWNvbmQuIEl0
IHRha2VzIDMgc25hcHNob3RzIGFuZCBleHBlY3RzIGVhY2ggcmVzdWx0IHRvIGJlIHdpdGhpbiBh
IHNwZWNpZmllZCByYW5nZS4KK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gxIiBlbGVt
ZW50IGF0IDAuMjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE0MQorUEFTUyAtICJsZWZ0IiBw
cm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRv
OiAxODAKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gxIiBlbGVtZW50IGF0IDAuNzVz
IHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE5NgorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3Ig
ImJveDIiIGVsZW1lbnQgYXQgMC4yNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTQxCitQQVNT
IC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94MiIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhp
bmcgY2xvc2UgdG86IDE4MAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDIiIGVsZW1l
bnQgYXQgMC43NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTk2CitQQVNTIC0gImxlZnQiIHBy
b3BlcnR5IGZvciAiYm94MyIgZWxlbWVudCBhdCAwLjI1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRv
OiAxMjUKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gzIiBlbGVtZW50IGF0IDAuNXMg
c2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTUwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAi
Ym94MyIgZWxlbWVudCBhdCAwLjc1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNzUKK1BBU1Mg
LSAibGVmdCIgcHJvcGVydHkgZm9yICJib3g0IiBlbGVtZW50IGF0IDAuMjVzIHNhdyBzb21ldGhp
bmcgY2xvc2UgdG86IDIwMAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDQiIGVsZW1l
bnQgYXQgMC41cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyMDAKK1BBU1MgLSAibGVmdCIgcHJv
cGVydHkgZm9yICJib3g0IiBlbGVtZW50IGF0IDAuNzVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86
IDIwMAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDUiIGVsZW1lbnQgYXQgMC4yNXMg
c2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTAwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAi
Ym94NSIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEwMAorUEFTUyAt
ICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDUiIGVsZW1lbnQgYXQgMC43NXMgc2F3IHNvbWV0aGlu
ZyBjbG9zZSB0bzogMTAwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94NiIgZWxlbWVu
dCBhdCAwLjI1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxMDAKK1BBU1MgLSAibGVmdCIgcHJv
cGVydHkgZm9yICJib3g2IiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzog
MTMzCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94NiIgZWxlbWVudCBhdCAwLjc1cyBz
YXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNjYKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJi
b3g3IiBlbGVtZW50IGF0IDAuMjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEzMworUEFTUyAt
ICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDciIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5n
IGNsb3NlIHRvOiAxNjYKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3g3IiBlbGVtZW50
IGF0IDAuNzVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIwMAorUEFTUyAtICJsZWZ0IiBwcm9w
ZXJ0eSBmb3IgImJveDgiIGVsZW1lbnQgYXQgMC4yNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzog
MTAwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94OCIgZWxlbWVudCBhdCAwLjVzIHNh
dyBzb21ldGhpbmcgY2xvc2UgdG86IDEzMworUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJv
eDgiIGVsZW1lbnQgYXQgMC43NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTY2CisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdGltaW5nLWZ1bmN0aW9ucy5odG1sIGIvTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy90aW1pbmctZnVuY3Rpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmVh
M2UwYzBmYmNlY2M2YmE1NTcxMjdhY2E2ZDRkMTBkYzZmM2Q3NAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdGltaW5nLWZ1bmN0aW9ucy5odG1sCkBAIC0wLDAgKzEs
MTA1IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFu
c2l0aW9uYWwvL0VOIgorICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+
CisKKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgIDx0aXRsZT5UZXN0
IHRpbWluZyBmdW5jdGlvbnM8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlh
PSJzY3JlZW4iPgorICAgIC5ib3ggeworICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAg
bGVmdDogMTAwcHg7CisgICAgICB0b3A6IDBweDsKKyAgICAgIGhlaWdodDogNXB4OworICAgICAg
d2lkdGg6IDVweDsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAtd2Via2l0
LWFuaW1hdGlvbi1kdXJhdGlvbjogMXM7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBh
bmltOworICAgIH0KKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbSB7CisgICAgICAgIGZyb20g
eyBsZWZ0OiAxMDBweDsgfQorICAgICAgICB0byAgIHsgbGVmdDogMjAwcHg7IH0KKyAgICB9Cisg
ICAgI2JveDEgeworICAgIH0KKyAgICAjYm94MiB7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi10
aW1pbmctZnVuY3Rpb246IGVhc2U7CisgICAgfQorICAgICNib3gzIHsKKyAgICAgIC13ZWJraXQt
YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOworICAgIH0KKyAgICAjYm94NCB7Cisg
ICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHN0ZXAtc3RhcnQ7CisgICAg
fQorICAgICNib3g1IHsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjog
c3RlcC1lbmQ7CisgICAgfQorICAgICNib3g2IHsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRp
bWluZy1mdW5jdGlvbjogc3RlcHMoMyk7CisgICAgfQorICAgICNib3g3IHsKKyAgICAgIC13ZWJr
aXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogc3RlcHMoMywgc3RhcnQpOworICAgIH0KKyAg
ICAjYm94OCB7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHN0ZXBz
KDMsIGVuZCk7CisgICAgfQorICAgIAorICA8L3N0eWxlPgorICA8c2NyaXB0IHNyYz0iYW5pbWF0
aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYt
OCI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1
dGYtOCI+CisKKyAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAgICAgIC8vIFthbmltYXRp
b24tbmFtZSwgdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVjdGVkLXZhbHVlLCB0b2xl
cmFuY2VdCisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94MSIsICJsZWZ0IiwgMTQxLCA1XSwKKyAg
ICAgIFsiYW5pbSIsIDAuNTAsICJib3gxIiwgImxlZnQiLCAxODAsIDVdLAorICAgICAgWyJhbmlt
IiwgMC43NSwgImJveDEiLCAibGVmdCIsIDE5NiwgNV0sCisgICAgICBbImFuaW0iLCAwLjI1LCAi
Ym94MiIsICJsZWZ0IiwgMTQxLCA1XSwKKyAgICAgIFsiYW5pbSIsIDAuNTAsICJib3gyIiwgImxl
ZnQiLCAxODAsIDVdLAorICAgICAgWyJhbmltIiwgMC43NSwgImJveDIiLCAibGVmdCIsIDE5Niwg
NV0sCisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94MyIsICJsZWZ0IiwgMTI1LCA1XSwKKyAgICAg
IFsiYW5pbSIsIDAuNTAsICJib3gzIiwgImxlZnQiLCAxNTAsIDVdLAorICAgICAgWyJhbmltIiwg
MC43NSwgImJveDMiLCAibGVmdCIsIDE3NSwgNV0sCisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94
NCIsICJsZWZ0IiwgMjAwLCA1XSwKKyAgICAgIFsiYW5pbSIsIDAuNTAsICJib3g0IiwgImxlZnQi
LCAyMDAsIDVdLAorICAgICAgWyJhbmltIiwgMC43NSwgImJveDQiLCAibGVmdCIsIDIwMCwgNV0s
CisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94NSIsICJsZWZ0IiwgMTAwLCA1XSwKKyAgICAgIFsi
YW5pbSIsIDAuNTAsICJib3g1IiwgImxlZnQiLCAxMDAsIDVdLAorICAgICAgWyJhbmltIiwgMC43
NSwgImJveDUiLCAibGVmdCIsIDEwMCwgNV0sCisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94NiIs
ICJsZWZ0IiwgMTAwLCA1XSwKKyAgICAgIFsiYW5pbSIsIDAuNTAsICJib3g2IiwgImxlZnQiLCAx
MzMsIDVdLAorICAgICAgWyJhbmltIiwgMC43NSwgImJveDYiLCAibGVmdCIsIDE2NiwgNV0sCisg
ICAgICBbImFuaW0iLCAwLjI1LCAiYm94NyIsICJsZWZ0IiwgMTMzLCA1XSwKKyAgICAgIFsiYW5p
bSIsIDAuNTAsICJib3g3IiwgImxlZnQiLCAxNjYsIDVdLAorICAgICAgWyJhbmltIiwgMC43NSwg
ImJveDciLCAibGVmdCIsIDIwMCwgNV0sCisgICAgICBbImFuaW0iLCAwLjI1LCAiYm94OCIsICJs
ZWZ0IiwgMTAwLCA1XSwKKyAgICAgIFsiYW5pbSIsIDAuNTAsICJib3g4IiwgImxlZnQiLCAxMzMs
IDVdLAorICAgICAgWyJhbmltIiwgMC43NSwgImJveDgiLCAibGVmdCIsIDE2NiwgNV0sCisgICAg
XTsKKyAgICAKKyAgICBydW5BbmltYXRpb25UZXN0KGV4cGVjdGVkVmFsdWVzKTsKKyAgICAKKyAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRp
b24gb2YgdGhlIGxlZnQgcHJvcGVydHkuIEl0IGFuaW1hdGVzIG92ZXIgMSBzZWNvbmQuCitJdCB0
YWtlcyAzIHNuYXBzaG90cyBhbmQgZXhwZWN0cyBlYWNoIHJlc3VsdCB0byBiZSB3aXRoaW4gYSBz
cGVjaWZpZWQgcmFuZ2UuCis8ZGl2IGNsYXNzPSJib3giIGlkPSJib3gxIj4KKzwvZGl2PgorPGRp
diBjbGFzcz0iYm94IiBpZD0iYm94MiI+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImJveCIgaWQ9ImJv
eDMiPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJib3giIGlkPSJib3g0Ij4KKzwvZGl2PgorPGRpdiBj
bGFzcz0iYm94IiBpZD0iYm94NSI+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImJveCIgaWQ9ImJveDYi
PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJib3giIGlkPSJib3g3Ij4KKzwvZGl2PgorPGRpdiBjbGFz
cz0iYm94IiBpZD0iYm94OCI+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+Cis8L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2luaGVy
aXQtb3RoZXItcHJvcHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvaW5o
ZXJpdC1vdGhlci1wcm9wcy1leHBlY3RlZC50eHQKaW5kZXggMjlkMWE1YzIyN2VmYzNlYTVlYzY0
YTc2MTdhODUxZmMyMTA5NDQyMS4uMmRkYWRiZGY1OGU4Y2Y3ZWM4YmE2YzI1NGVmNGJmZDQxMjBk
OWQxMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvaW5oZXJpdC1vdGhlci1w
cm9wcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvaW5oZXJpdC1v
dGhlci1wcm9wcy1leHBlY3RlZC50eHQKQEAgLTMsMTYgKzMsMTYgQEAgUEFTUyAtLSBCb3ggMSBj
b21wdXRlZCB0cmFuc2l0aW9uIGR1cmF0aW9uOiAwcyBleHBlY3RlZDogMHMKIFBBU1MgLS0gQm94
IDEgY29tcHV0ZWQgdHJhbnNpdGlvbiB0aW1pbmcgZnVuY3Rpb246IGN1YmljLWJlemllcigwLjI1
LCAwLjEsIDAuMjUsIDEpIGV4cGVjdGVkOiBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAx
KQogUEFTUyAtLSBCb3ggMiBjb21wdXRlZCB0cmFuc2l0aW9uIHByb3BlcnR5OiBsZWZ0IGV4cGVj
dGVkOiBsZWZ0CiBQQVNTIC0tIEJveCAyIGNvbXB1dGVkIHRyYW5zaXRpb24gZHVyYXRpb246IDJz
IGV4cGVjdGVkOiAycwotUEFTUyAtLSBCb3ggMiBjb21wdXRlZCB0cmFuc2l0aW9uIHRpbWluZyBm
dW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpIGV4cGVjdGVkOiBjdWJpYy1iZXppZXIo
MCwgMCwgMSwgMSkKK1BBU1MgLS0gQm94IDIgY29tcHV0ZWQgdHJhbnNpdGlvbiB0aW1pbmcgZnVu
Y3Rpb246IGxpbmVhciBleHBlY3RlZDogbGluZWFyCiBQQVNTIC0tIEJveCAzIGNvbXB1dGVkIHRy
YW5zaXRpb24gcHJvcGVydHk6IGxlZnQgZXhwZWN0ZWQ6IGxlZnQKIFBBU1MgLS0gQm94IDMgY29t
cHV0ZWQgdHJhbnNpdGlvbiBkdXJhdGlvbjogMnMgZXhwZWN0ZWQ6IDJzCi1QQVNTIC0tIEJveCAz
IGNvbXB1dGVkIHRyYW5zaXRpb24gdGltaW5nIGZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwg
MSwgMSkgZXhwZWN0ZWQ6IGN1YmljLWJlemllcigwLCAwLCAxLCAxKQorUEFTUyAtLSBCb3ggMyBj
b21wdXRlZCB0cmFuc2l0aW9uIHRpbWluZyBmdW5jdGlvbjogbGluZWFyIGV4cGVjdGVkOiBsaW5l
YXIKIFBBU1MgLS0gQm94IDQgY29tcHV0ZWQgdHJhbnNpdGlvbiBwcm9wZXJ0eTogbGVmdCBleHBl
Y3RlZDogbGVmdAogUEFTUyAtLSBCb3ggNCBjb21wdXRlZCB0cmFuc2l0aW9uIGR1cmF0aW9uOiAy
cyBleHBlY3RlZDogMnMKLVBBU1MgLS0gQm94IDQgY29tcHV0ZWQgdHJhbnNpdGlvbiB0aW1pbmcg
ZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAxLCAxKSBleHBlY3RlZDogY3ViaWMtYmV6aWVy
KDAsIDAsIDEsIDEpCitQQVNTIC0tIEJveCA0IGNvbXB1dGVkIHRyYW5zaXRpb24gdGltaW5nIGZ1
bmN0aW9uOiBsaW5lYXIgZXhwZWN0ZWQ6IGxpbmVhcgogUEFTUyAtLSBCb3ggNSBjb21wdXRlZCB0
cmFuc2l0aW9uIHByb3BlcnR5OiBsZWZ0IGV4cGVjdGVkOiBsZWZ0CiBQQVNTIC0tIEJveCA1IGNv
bXB1dGVkIHRyYW5zaXRpb24gZHVyYXRpb246IDJzIGV4cGVjdGVkOiAycwotUEFTUyAtLSBCb3gg
NSBjb21wdXRlZCB0cmFuc2l0aW9uIHRpbWluZyBmdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAs
IDEsIDEpIGV4cGVjdGVkOiBjdWJpYy1iZXppZXIoMCwgMCwgMSwgMSkKK1BBU1MgLS0gQm94IDUg
Y29tcHV0ZWQgdHJhbnNpdGlvbiB0aW1pbmcgZnVuY3Rpb246IGxpbmVhciBleHBlY3RlZDogbGlu
ZWFyCiBQQVNTIC0tIEJveCA2IGNvbXB1dGVkIHRyYW5zaXRpb24gcHJvcGVydHk6IGFsbCBleHBl
Y3RlZDogYWxsCiBQQVNTIC0tIEJveCA2IGNvbXB1dGVkIHRyYW5zaXRpb24gZHVyYXRpb246IDBz
IGV4cGVjdGVkOiAwcwogUEFTUyAtLSBCb3ggNiBjb21wdXRlZCB0cmFuc2l0aW9uIHRpbWluZyBm
dW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSkgZXhwZWN0ZWQ6IGN1Ymlj
LWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFu
c2l0aW9ucy9pbmhlcml0LW90aGVyLXByb3BzLmh0bWwgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9u
cy9pbmhlcml0LW90aGVyLXByb3BzLmh0bWwKaW5kZXggYTc1YTViODA3NDNlYmU0ZjI2NjA3NmE4
NGE3OTFiNDI2ZjUyNDgyZS4uMWE5MjFjMjQzNzY3MzQxMDc4YTc0NDZmZTU0NzY1YTY4ZjM2OWIy
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvaW5oZXJpdC1vdGhlci1wcm9w
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL2luaGVyaXQtb3RoZXItcHJvcHMu
aHRtbApAQCAtNDcsMTAgKzQ3LDEwIEBACiAKICAgICB2YXIga0V4cGVjdGVkVGltaW5nRnVuY3Rp
b24gPSBbCiAgICAgICAnY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSknLCAvKiBib3gx
ICovCi0gICAgICAnY3ViaWMtYmV6aWVyKDAsIDAsIDEsIDEpJywgLyogYm94MiAqLwotICAgICAg
J2N1YmljLWJlemllcigwLCAwLCAxLCAxKScsIC8qIGJveDMgKi8KLSAgICAgICdjdWJpYy1iZXpp
ZXIoMCwgMCwgMSwgMSknLCAvKiBib3g0ICovIC8qIGluaGVyaXRzIGZyb20gYm94MyAqLwotICAg
ICAgJ2N1YmljLWJlemllcigwLCAwLCAxLCAxKScsIC8qIGJveDUgKi8KKyAgICAgICdsaW5lYXIn
LCAvKiBib3gyICovCisgICAgICAnbGluZWFyJywgLyogYm94MyAqLworICAgICAgJ2xpbmVhcics
IC8qIGJveDQgKi8gLyogaW5oZXJpdHMgZnJvbSBib3gzICovCisgICAgICAnbGluZWFyJywgLyog
Ym94NSAqLwogICAgICAgJ2N1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpJywgLyogYm94
NiAqLyAvKiBkb2VzIE5PVCBpbmhlcml0ICovCiAgICAgXTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdHJhbnNpdGlvbnMvc3RlcHMtdGltaW5nLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RyYW5zaXRpb25zL3N0ZXBzLXRpbWluZy1mdW5jdGlvbi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGNmMTE3MGQ4ZjczNjViOWYwNDY4NGYxNGYzNTJhNDg5OWJkYTNiZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3N0ZXBzLXRpbWluZy1mdW5j
dGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUaGUgYm94IHNob3VsZCBtb3ZlIGhv
cml6b250YWxseSAyMDBweCBvdmVyIDFzLCBpbiAzIGVxdWFsIGluY3JlbWVudHMuCisKK1BBU1Mg
LSAiLXdlYmtpdC10cmFuc2Zvcm0uNCIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC4y
NXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMAorUEFTUyAtICItd2Via2l0LXRyYW5zZm9ybS40
IiBwcm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhpbmcgY2xvc2Ug
dG86IDY2CitQQVNTIC0gIi13ZWJraXQtdHJhbnNmb3JtLjQiIHByb3BlcnR5IGZvciAiYm94IiBl
bGVtZW50IGF0IDAuNzVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEzMworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9zdGVwcy10aW1pbmctZnVuY3Rpb24uaHRtbCBiL0xh
eW91dFRlc3RzL3RyYW5zaXRpb25zL3N0ZXBzLXRpbWluZy1mdW5jdGlvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY2ZmFlMzE1OTI3Y2Q2ZjRjZTRjNWFiNmM0ZjE0YzU2NTAwNDVkMmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9zdGVwcy10aW1pbmctZnVuY3Rpb24uaHRt
bApAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhU
TUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgorICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0
L2xvb3NlLmR0ZCI+CisKKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cisg
IDx0aXRsZT5UcmFuc2l0aW9uIHdpdGggc3RlcHMgdGltaW5nIGZ1bmN0aW9uPC90aXRsZT4KKyAg
PHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAjYm94IHsKKyAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgICB3aWR0aDogMTAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiBibHVlOworICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMHB4KTsKKyAg
ICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMXM7CisgICAgICAtd2Via2l0LXRyYW5z
aXRpb24tdGltaW5nLWZ1bmN0aW9uOiBzdGVwcygzLCBlbmQpOworICAgICAgLXdlYmtpdC10cmFu
c2l0aW9uLXByb3BlcnR5OiAtd2Via2l0LXRyYW5zZm9ybTsKKyAgICB9CisgIDwvc3R5bGU+Cisg
IDxzY3JpcHQgc3JjPSJ0cmFuc2l0aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgICAgCisgICAgY29uc3QgZXhwZWN0ZWRWYWx1
ZXMgPSBbCisgICAgICAvLyBbdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVjdGVkLXZh
bHVlLCB0b2xlcmFuY2VdCisgICAgICBbMC4yNSwgImJveCIsICItd2Via2l0LXRyYW5zZm9ybS40
IiwgMCwgNV0sCisgICAgICBbMC41LCAiYm94IiwgIi13ZWJraXQtdHJhbnNmb3JtLjQiLCA2Niwg
NV0sCisgICAgICBbMC43NSwgImJveCIsICItd2Via2l0LXRyYW5zZm9ybS40IiwgMTMzLCA1XSwK
KyAgICBdOworICAgIAorICAgIGZ1bmN0aW9uIHNldHVwVGVzdCgpCisgICAgeworICAgICAgdmFy
IGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3gnKTsKKyAgICAgIGJveC5zdHlsZS53
ZWJraXRUcmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgyMDBweCknOworICAgIH0KKyAgICAKKyAgICBy
dW5UcmFuc2l0aW9uVGVzdChleHBlY3RlZFZhbHVlcywgc2V0dXBUZXN0LCB0cnVlKTsKKyAgICAK
KyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHA+CitUaGUgYm94IHNob3VsZCBtb3Zl
IGhvcml6b250YWxseSAyMDBweCBvdmVyIDFzLCBpbiAzIGVxdWFsIGluY3JlbWVudHMuCis8L3A+
Cis8ZGl2IGlkPSJib3giPgorPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPgorPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGNiNDEzODcyNDlhNDNiY2UzZjk5M2NhOGQ0NWFhMDhkNTYzNGU5MDMuLjlm
YmYzZjkxZDJjYTdlOGRkMGE4YWEwODdmZTI3YzUzZDk0MjkwZmUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTExIEBACisy
MDEwLTA5LTA4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgc3RlcHMoKSB0aW1p
bmcgZnVuY3Rpb24gZm9yIGFuaW1hdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ0NTQxCisKKyAgICAgICAgVGVzdHM6IGFuaW1hdGlvbnMvdGlt
aW5nLWZ1bmN0aW9ucy5odG1sCisgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy9zdGVwcy10aW1p
bmctZnVuY3Rpb24uaHRtbAorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAg
ICAgICAgICAgIC0gd2hlbiBjcmVhdGluZyBjb21wdXRlZCBzdHlsZSB3ZSBub3cgdGVzdCB3aGF0
CisgICAgICAgICAgICAgIHR5cGUgb2YgdGltaW5nIGZ1bmN0aW9uIGl0IGJlaW5nIHVzZWQKKyAg
ICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAgICAgLSByZW5h
bWUgdGhpcyBtZXRob2QgZnJvbSBwYXJzZVRpbWluZ0Z1bmN0aW9uVmFsdWUKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25UaW1pbmdGdW5jdGlvbik6CisgICAgICAg
ICAgICAtIHN1cHBvcnQgcGFyc2luZyB0aGUgc3RlcHMoKSBmdW5jdGlvbgorICAgICAgICAqIGNz
cy9DU1NQYXJzZXIuaDoKKyAgICAgICAgICAgIC0gbWV0aG9kIHJlbmFtZQorICAgICAgICAqIGNz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0
b3I6Om1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgICAgIC0gaGFuZGxlICdz
dGVwLXN0YXJ0JyBhbmQgJ3N0ZXAtZW5kJyBpZGVudGlmaWVycy4gQWxzbworICAgICAgICAgICAg
ICBub3cgdXNlIDo6Y3JlYXRlIHdoZW4gY29uc3RydWN0aW5nIG9iamVjdHMKKyAgICAgICAgKiBj
c3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5l
YXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjc3NUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNzc1RleHQpOgorICAgICAgICAgICAgLSBu
ZXcgdGV4dCBvdXRwdXQgZm9yIGNvbXB1dGVkIHN0eWxlLiBXZSBub3cgcHJvZHVjZQorICAgICAg
ICAgICAgICB0aGUgdGV4dCAnbGluZWFyJyB3aGVuIGFwcHJvcHJpYXRlLgorICAgICAgICAqIGNz
cy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NUaW1pbmdG
dW5jdGlvblZhbHVlOjppc0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6aXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6aXNTdGVw
c1RpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVGltaW5nRnVuY3Rp
b25WYWx1ZTo6Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
aW1pbmdGdW5jdGlvblZhbHVlOjppc1RpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmlzTGluZWFyVGltaW5nRnVuY3Rp
b25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVl
OjpDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6aXNDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvblZhbHVlOjpDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpudW1iZXJPZlN0ZXBzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6c3RlcEF0U3RhcnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjppc1N0ZXBz
VGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdGVwc1RpbWluZ0Z1
bmN0aW9uVmFsdWU6OkNTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAgICAgICAgICAt
IENTU1RpbWluZ0Z1bmN0aW9uIGlzIG5vdyBhIHB1cmUgdmlydHVhbCByZWYtY291bnRlZCBiYXNl
IGNsYXNzLCB3aXRoCisgICAgICAgICAgICAgIHN1YmNsYXNzZXMgZm9yIGVhY2ggb2YgdGhlIHRo
cmVlIHN1cHBvcnRlZCB0aW1pbmcgZnVuY3Rpb25zLgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUtl
eXdvcmRzLmluOgorICAgICAgICAgICAgLSBuZXcga2V5d29yZHMgc3RlcC1zdGFydCBhbmQgc3Rl
cC1lbmQKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNvbHZlU3RlcHNGdW5jdGlvbik6CisgICAgICAgICAgICAtIHByb2R1Y2Vz
IHRoZSBvdXRwdXQgdmFsdWUgZnJvbSBhIHN0ZXBwaW5nIGZ1bmN0aW9uCisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25CYXNlOjpwcm9ncmVzcyk6CisgICAgICAgICAgICAtIG5vdyBoYXMgdG8g
c3dpdGNoIGJhc2VkIG9uIHRpbWluZyBmdW5jdGlvbiB0eXBlCisgICAgICAgICogcGFnZS9hbmlt
YXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVB
bmltYXRpb246OmZldGNoSW50ZXJ2YWxFbmRwb2ludHNGb3JQcm9wZXJ0eSk6CisgICAgICAgICAg
ICAtIHVzZSByZWYtY291bnRlZCBhY2Nlc3MKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24v
QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbjo6YW5pbWF0aW9uc01h
dGNoKToKKyAgICAgICAgICAgIC0gY2hhbmdlIHRpbWluZyBmdW5jdGlvbiBjb21wYXJpc29uIGZv
ciBvcGVyYXRvcj09CisgICAgICAgICogcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uOjp0aW1pbmdGdW5jdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpBbmltYXRpb246OnNldFRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgICAg
IC0gbW92ZSB0byByZWYtY291bnRlZCB0aW1pbmcgZnVuY3Rpb24gY2xhc3MKKyAgICAgICAgKiBw
bGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlRp
bWluZ0Z1bmN0aW9uOjp+VGltaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGltaW5n
RnVuY3Rpb246OmlzTGluZWFyVGltaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGlt
aW5nRnVuY3Rpb246OmlzQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpUaW1pbmdGdW5jdGlvbjo6aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlRpbWluZ0Z1bmN0aW9uOjpUaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVh
clRpbWluZ0Z1bmN0aW9uOjp+TGluZWFyVGltaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TGluZWFyVGltaW5nRnVuY3Rpb246Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6
TGluZWFyVGltaW5nRnVuY3Rpb246OkxpbmVhclRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjp+Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKFdlYkNvcmU6OkN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OkN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3RlcHNUaW1pbmdGdW5j
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBzVGltaW5nRnVuY3Rpb246On5T
dGVwc1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBzVGltaW5nRnVuY3Rp
b246Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6U3RlcHNUaW1pbmdGdW5jdGlvbjo6
bnVtYmVyT2ZTdGVwcyk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjpz
dGVwQXRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwc1RpbWluZ0Z1bmN0aW9uOjpTdGVw
c1RpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgICAgIC0gVGltaW5nRnVuY3Rpb24gaXMgbm93IGEg
cmVmLWNvdW50ZWQgcHVyZSB2aXJ0dWFsIGJhc2UgY2xhc3MsCisgICAgICAgICAgICAgIHdpdGgg
dGhyZWUgc3ViY2xhc3NlcyByZXByZXNlbnRpbmcgdGhlIHR5cGVzIG9mIHRpbWluZyBmdW5jdGlv
bnMKKyAgICAgICAgICAgICAgdGhhdCBhcmUgc3VwcG9ydGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblZh
bHVlOjpBbmltYXRpb25WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdEFuaW1hdGlvblZh
bHVlOjpGbG9hdEFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlOjpUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSk6CisgICAgICAgICAgICAtIHVz
ZSBQYXNzUmVmUHRyIGluIGZ1bmN0aW9uIHBhcmFtZXRlcnMKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q0FN
ZWRpYVRpbWluZ0Z1bmN0aW9uKToKKyAgICAgICAgICAgIC0gdXBkYXRlIGZvciBuZXcgdGltaW5n
IGZ1bmN0aW9uIGludGVyZmFjZQorICAgICAgICAoV2ViQ29yZTo6YW5pbWF0aW9uSGFzU3RlcHNU
aW1pbmdGdW5jdGlvbik6CisgICAgICAgICAgICAtIG5ldyBtZXRob2QgdG8gbWFrZSBzdXJlIGFu
aW1hdGlvbnMgd2l0aCBzdGVwcygpIGZ1bmN0aW9ucworICAgICAgICAgICAgICBuZXZlciB0cnkg
dG8gZXhlY3V0ZSBpbiBDb3JlIEFuaW1hdGlvbgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjphZGRBbmltYXRpb24pOgorICAgICAgICAgICAgLSB0ZXN0IGZvciBzdGVwcygpIHRp
bWluZyBmdW5jdGlvbgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp0aW1pbmdG
dW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgICAgIC0gcmVtb3ZlIG9sZCBSZW5kZXJTdHls
ZSBlbnVtIGZvciB0aW1pbmcgZnVuY3Rpb24gdHlwZXMKKwogMjAxMC0wOS0wOCAgQW5keSBFc3Rl
cyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgRGFyaW4g
QWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRl
eCBiMWU4YWM0MDE1NGMwNDgyZTNiZTlkZTVjMDBkY2M3ZWY5MWFmMjc5Li43ZDNjZGM5NTdlNzFi
YmQxMmQxYTg3ODM5ZjBiZjg1NGY5MGI0OGI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTUwMSwxMyArNTAxLDI5IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBnZXRUaW1pbmdGdW5jdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3Qq
IGFuaW1MaXN0CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBpZiAoYW5pbUxpc3QpIHsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBhbmltTGlzdC0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAg
IGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0ZiA9IGFuaW1MaXN0LT5hbmltYXRpb24oaSktPnRpbWlu
Z0Z1bmN0aW9uKCk7Ci0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVGltaW5nRnVuY3Rpb25W
YWx1ZTo6Y3JlYXRlKHRmLngxKCksIHRmLnkxKCksIHRmLngyKCksIHRmLnkyKCkpKTsKKyAgICAg
ICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0ZiA9IGFuaW1MaXN0LT5hbmltYXRpb24oaSkt
PnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7CisgICAgICAgICAgICBpZiAodGYtPmlzQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbigpKSB7CisgICAgICAgICAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvbiogY3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbio+KHRmKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoY3RmLT54MSgpLCBjdGYtPnkxKCksIGN0Zi0+
eDIoKSwgY3RmLT55MigpKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRmLT5pc1N0ZXBzVGlt
aW5nRnVuY3Rpb24oKSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rp
b24qIHN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24qPih0Zik7Cisg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6
Y3JlYXRlKHN0Zi0+bnVtYmVyT2ZTdGVwcygpLCBzdGYtPnN0ZXBBdFN0YXJ0KCkpKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU0xpbmVhclRp
bWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE5vdGUgdGhhdCBpbml0aWFsQW5pbWF0aW9uVGltaW5n
RnVuY3Rpb24oKSBpcyB1c2VkIGZvciBib3RoIHRyYW5zaXRpb25zIGFuZCBhbmltYXRpb25zCi0g
ICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0ZiA9IEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1h
dGlvblRpbWluZ0Z1bmN0aW9uKCk7Ci0gICAgICAgIGxpc3QtPmFwcGVuZChDU1NUaW1pbmdGdW5j
dGlvblZhbHVlOjpjcmVhdGUodGYueDEoKSwgdGYueTEoKSwgdGYueDIoKSwgdGYueTIoKSkpOwor
ICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogdGYgPSBBbmltYXRpb246OmluaXRpYWxBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbigpLmdldCgpOworICAgICAgICBpZiAodGYtPmlzQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbigpKSB7CisgICAgICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWlu
Z0Z1bmN0aW9uKiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uKj4odGYpOworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU0N1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKGN0Zi0+eDEoKSwgY3RmLT55MSgpLCBjdGYtPngyKCksIGN0
Zi0+eTIoKSkpOworICAgICAgICB9IGVsc2UgaWYgKHRmLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24o
KSkgeworICAgICAgICAgICAgY29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiogc3RmID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbio+KHRmKTsKKyAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShzdGYtPm51bWJlck9m
U3RlcHMoKSwgc3RmLT5zdGVwQXRTdGFydCgpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKCkp
OworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCmluZGV4IDJhZDMyOTQyNGUyMmFmMDNhOTk3ZDA2MzM3ODlkNDY5ZWEwZThkNTMuLjk1YTI3
ODQwNjU4MjI4MGExMTdiZjEyZDdmYWU3YWJkMDYzYWFhYWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMjc4
NCw3ICsyNzg0LDcgQEAgdm9pZCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNmb3JtT3JpZ2luU2hvcnRo
YW5kKFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMSwgUmVmUHRyPEMKICAgICAgICAgbV92YWx1ZUxp
c3QtPm5leHQoKTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlVGltaW5nRnVuY3Rpb25WYWx1
ZShDU1NQYXJzZXJWYWx1ZUxpc3QqJiBhcmdzLCBkb3VibGUmIHJlc3VsdCkKK2Jvb2wgQ1NTUGFy
c2VyOjpwYXJzZUN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZShDU1NQYXJzZXJWYWx1ZUxp
c3QqJiBhcmdzLCBkb3VibGUmIHJlc3VsdCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSogdiA9IGFy
Z3MtPmN1cnJlbnQoKTsKICAgICBpZiAoIXZhbGlkVW5pdCh2LCBGTnVtYmVyLCBtX3N0cmljdCkp
CkBAIC0yODA1LDMxICsyODA1LDY3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRpbWluZ0Z1bmN0
aW9uVmFsdWUoQ1NTUGFyc2VyVmFsdWVMaXN0KiYgYXJncywgZG91YmxlJiByZXN1CiBQYXNzUmVm
UHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oKQog
ewogICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7Ci0g
ICAgaWYgKHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUVhc2UgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVl
TGluZWFyIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUVhc2VJbiB8fCB2YWx1ZS0+aWQgPT0gQ1NT
VmFsdWVFYXNlT3V0IHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUVhc2VJbk91dCkKKyAgICBpZiAo
dmFsdWUtPmlkID09IENTU1ZhbHVlRWFzZSB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVMaW5lYXIg
fHwgdmFsdWUtPmlkID09IENTU1ZhbHVlRWFzZUluIHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZUVh
c2VPdXQKKyAgICAgICAgfHwgdmFsdWUtPmlkID09IENTU1ZhbHVlRWFzZUluT3V0IHx8IHZhbHVl
LT5pZCA9PSBDU1NWYWx1ZVN0ZXBTdGFydCB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVTdGVwRW5k
KQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIodmFs
dWUtPmlkKTsKIAogICAgIC8vIFdlIG11c3QgYmUgYSBmdW5jdGlvbi4KICAgICBpZiAodmFsdWUt
PnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIC8vIFRoZSBvbmx5IHRpbWluZyBmdW5jdGlvbiB3ZSBhY2NlcHQgZm9yIG5vdyBpcyBhIGN1
YmljIGJlemllciBmdW5jdGlvbi4gIDQgcG9pbnRzIG11c3QgYmUgc3BlY2lmaWVkLgogICAgIENT
U1BhcnNlclZhbHVlTGlzdCogYXJncyA9IHZhbHVlLT5mdW5jdGlvbi0+YXJncy5nZXQoKTsKLSAg
ICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgImN1YmljLWJl
emllcigiKSB8fCAhYXJncyB8fCBhcmdzLT5zaXplKCkgIT0gNykKLSAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICAvLyBUaGVyZSBhcmUgdHdvIHBvaW50cyBzcGVjaWZpZWQuICBUaGUgdmFsdWVzIG11
c3QgYmUgYmV0d2VlbiAwIGFuZCAxLgotICAgIGRvdWJsZSB4MSwgeTEsIHgyLCB5MjsKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAic3RlcHMoIikpIHsK
KyAgICAgICAgLy8gRm9yIHN0ZXBzLCAxIG9yIDIgcGFyYW1zIG11c3QgYmUgc3BlY2lmaWVkIChj
b21tYS1zZXBhcmF0ZWQpCisgICAgICAgIGlmICghYXJncyB8fCAoYXJncy0+c2l6ZSgpICE9IDEg
JiYgYXJncy0+c2l6ZSgpICE9IDMpKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAo
IXBhcnNlVGltaW5nRnVuY3Rpb25WYWx1ZShhcmdzLCB4MSkpCi0gICAgICAgIHJldHVybiAwOwot
ICAgIGlmICghcGFyc2VUaW1pbmdGdW5jdGlvblZhbHVlKGFyZ3MsIHkxKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgaWYgKCFwYXJzZVRpbWluZ0Z1bmN0aW9uVmFsdWUoYXJncywgeDIpKQotICAg
ICAgICByZXR1cm4gMDsKLSAgICBpZiAoIXBhcnNlVGltaW5nRnVuY3Rpb25WYWx1ZShhcmdzLCB5
MikpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICAvLyBUaGVyZSBhcmUgdHdvIHZhbHVlcy4K
KyAgICAgICAgaW50IG51bVN0ZXBzOworICAgICAgICBib29sIHN0ZXBBdFN0YXJ0ID0gZmFsc2U7
CiAKLSAgICByZXR1cm4gQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHgxLCB5MSwgeDIs
IHkyKTsKKyAgICAgICAgQ1NTUGFyc2VyVmFsdWUqIHYgPSBhcmdzLT5jdXJyZW50KCk7CisgICAg
ICAgIGlmICghdmFsaWRVbml0KHYsIEZJbnRlZ2VyLCBtX3N0cmljdCkpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgbnVtU3RlcHMgPSBtaW4odi0+ZlZhbHVlLCAoZG91YmxlKUlOVF9N
QVgpOworICAgICAgICBpZiAobnVtU3RlcHMgPCAxKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHYgPSBhcmdzLT5uZXh0KCk7CisKKyAgICAgICAgaWYgKHYpIHsKKyAgICAgICAgICAg
IC8vIFRoZXJlIGlzIGEgY29tbWEgc28gd2UgbmVlZCB0byBwYXJzZSB0aGUgc2Vjb25kIHZhbHVl
CisgICAgICAgICAgICBpZiAodi0+dW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYg
di0+aVZhbHVlICE9ICcsJykKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg
IHYgPSBhcmdzLT5uZXh0KCk7CisgICAgICAgICAgICBpZiAodi0+aWQgIT0gQ1NTVmFsdWVTdGFy
dCAmJiB2LT5pZCAhPSBDU1NWYWx1ZUVuZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgICAgIHN0ZXBBdFN0YXJ0ID0gdi0+aWQgPT0gQ1NTVmFsdWVTdGFydDsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShu
dW1TdGVwcywgc3RlcEF0U3RhcnQpOworICAgIH0KKyAgICAKKyAgICBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAiY3ViaWMtYmV6aWVyKCIpKSB7CisgICAgICAg
IC8vIEZvciBjdWJpYyBiZXppZXIsIDQgdmFsdWVzIG11c3QgYmUgc3BlY2lmaWVkLgorICAgICAg
ICBpZiAoIWFyZ3MgfHwgYXJncy0+c2l6ZSgpICE9IDcpCisgICAgICAgICAgICByZXR1cm4gMDsK
KworICAgICAgICAvLyBUaGVyZSBhcmUgdHdvIHBvaW50cyBzcGVjaWZpZWQuICBUaGUgdmFsdWVz
IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxLgorICAgICAgICBkb3VibGUgeDEsIHkxLCB4MiwgeTI7
CisKKyAgICAgICAgaWYgKCFwYXJzZUN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZShhcmdz
LCB4MSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKCFwYXJzZUN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb25WYWx1ZShhcmdzLCB5MSkpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgaWYgKCFwYXJzZUN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZShhcmdzLCB4
MikpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKCFwYXJzZUN1YmljQmV6aWVy
VGltaW5nRnVuY3Rpb25WYWx1ZShhcmdzLCB5MikpCisgICAgICAgICAgICByZXR1cm4gMDsKKwor
ICAgICAgICByZXR1cm4gQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUo
eDEsIHkxLCB4MiwgeTIpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKIH0KIAogYm9vbCBD
U1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uUHJvcGVydHkoaW50IHByb3BJZCwgUmVmUHRyPENTU1Zh
bHVlPiYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBlODQwYTcwZTQ1ODJlMWQxNzAxNGFmYzYzYzgyM2Ew
MjIxN2IzMDRkLi40N2YwYmVkNjY2MmM4NzE0NWNmMWM1NmVmNWJhZDdlZGMyYzgwNDBjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuaApAQCAtMTA4LDcgKzEwOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRpb25UaW1pbmdGdW5jdGlvbigpOwogCiAgICAg
ICAgIHZvaWQgcGFyc2VUcmFuc2Zvcm1PcmlnaW5TaG9ydGhhbmQoUmVmUHRyPENTU1ZhbHVlPiYs
IFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+Jik7Ci0gICAgICAgIGJvb2wgcGFy
c2VUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNlclZhbHVlTGlzdComIGFyZ3MsIGRvdWJsZSYg
cmVzdWx0KTsKKyAgICAgICAgYm9vbCBwYXJzZUN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1
ZShDU1NQYXJzZXJWYWx1ZUxpc3QqJiBhcmdzLCBkb3VibGUmIHJlc3VsdCk7CiAgICAgICAgIGJv
b2wgcGFyc2VBbmltYXRpb25Qcm9wZXJ0eShpbnQgcHJvcElkLCBSZWZQdHI8Q1NTVmFsdWU+Jik7
CiAgICAgICAgIGJvb2wgcGFyc2VUcmFuc2l0aW9uU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KTsK
ICAgICAgICAgYm9vbCBwYXJzZUFuaW1hdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDJhN2IwOGUyOWM2YjY2ZmFlMzU0OTQ3MTUzMTk2
YzU4OWUxMDcyODkuLjQ3ZDAxZThkOTRlZDNkYTI2MWUzYjRmYjczYTQ1ZmFmNDk1ZWQxOGMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC02MDU5LDE5ICs2MDU5LDI1IEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oQW5pbWF0aW9uKiBhbmlt
YXRpb24sIENTU1ZhbHVlCiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAgICAgICBzd2l0
Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CiAgICAgICAgICAgICBjYXNlIENTU1Zh
bHVlTGluZWFyOgotICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24o
VGltaW5nRnVuY3Rpb24oTGluZWFyVGltaW5nRnVuY3Rpb24sIDAuMCwgMC4wLCAxLjAsIDEuMCkp
OworICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oTGluZWFyVGlt
aW5nRnVuY3Rpb246OmNyZWF0ZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVFYXNlOgotICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGlt
aW5nRnVuY3Rpb24oVGltaW5nRnVuY3Rpb24oKSk7CisgICAgICAgICAgICAgICAgYW5pbWF0aW9u
LT5zZXRUaW1pbmdGdW5jdGlvbihDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRWFzZUlu
OgotICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oVGltaW5nRnVu
Y3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiwgMC40MiwgMC4wLCAxLjAsIDEuMCkpOwor
ICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvbjo6Y3JlYXRlKDAuNDIsIDAuMCwgMS4wLCAxLjApKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVFYXNlT3V0OgotICAgICAgICAg
ICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oVGltaW5nRnVuY3Rpb24oQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvbiwgMC4wLCAwLjAsIDAuNTgsIDEuMCkpOworICAgICAgICAgICAg
ICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjo6Y3JlYXRlKDAuMCwgMC4wLCAwLjU4LCAxLjApKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVFYXNlSW5PdXQ6Ci0gICAgICAgICAgICAgICAgYW5p
bWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihUaW1pbmdGdW5jdGlvbihDdWJpY0JlemllclRpbWlu
Z0Z1bmN0aW9uLCAwLjQyLCAwLjAsIDAuNTgsIDEuMCkpOworICAgICAgICAgICAgICAgIGFuaW1h
dGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRl
KDAuNDIsIDAuMCwgMC41OCwgMS4wKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlU3RlcFN0YXJ0OgorICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+
c2V0VGltaW5nRnVuY3Rpb24oU3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKDEsIHRydWUpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTdGVwRW5k
OgorICAgICAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oU3RlcHNUaW1p
bmdGdW5jdGlvbjo6Y3JlYXRlKDEsIGZhbHNlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtNjA3OSw3ICs2MDg1LDE0IEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oQW5pbWF0aW9uKiBhbmlt
YXRpb24sIENTU1ZhbHVlCiAgICAgCiAgICAgaWYgKHZhbHVlLT5pc1RpbWluZ0Z1bmN0aW9uVmFs
dWUoKSkgewogICAgICAgICBDU1NUaW1pbmdGdW5jdGlvblZhbHVlKiB0aW1pbmdGdW5jdGlvbiA9
IHN0YXRpY19jYXN0PENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgIGFu
aW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oVGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1p
bmdGdW5jdGlvbiwgdGltaW5nRnVuY3Rpb24tPngxKCksIHRpbWluZ0Z1bmN0aW9uLT55MSgpLCB0
aW1pbmdGdW5jdGlvbi0+eDIoKSwgdGltaW5nRnVuY3Rpb24tPnkyKCkpKTsKKyAgICAgICAgaWYg
KHRpbWluZ0Z1bmN0aW9uLT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSgpKSB7Cisg
ICAgICAgICAgICBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUqIGN1YmljVGltaW5n
RnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUq
Pih2YWx1ZSk7CisgICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZShjdWJpY1RpbWluZ0Z1bmN0aW9uLT54MSgpLCBj
dWJpY1RpbWluZ0Z1bmN0aW9uLT55MSgpLCBjdWJpY1RpbWluZ0Z1bmN0aW9uLT54MigpLCBjdWJp
Y1RpbWluZ0Z1bmN0aW9uLT55MigpKSk7CisgICAgICAgIH0gZWxzZSBpZiAodGltaW5nRnVuY3Rp
b24tPmlzU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKCkpIHsKKyAgICAgICAgICAgIENTU1N0ZXBz
VGltaW5nRnVuY3Rpb25WYWx1ZSogc3RlcHNUaW1pbmdGdW5jdGlvbiA9IHN0YXRpY19jYXN0PENT
U1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgICAgIGFuaW1hdGlv
bi0+c2V0VGltaW5nRnVuY3Rpb24oU3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKHN0ZXBzVGlt
aW5nRnVuY3Rpb24tPm51bWJlck9mU3RlcHMoKSwgc3RlcHNUaW1pbmdGdW5jdGlvbi0+c3RlcEF0
U3RhcnQoKSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGlt
aW5nRnVuY3Rpb24oTGluZWFyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwIGIvV2Vi
Q29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKaW5kZXggZTU3NmQzNjk2YmM5OWIz
YzEyNjM0ZDU4NWMyNTVhYWMxNjI5NjM1Ny4uOWVlY2IyYzc2YjAxZGRhYzhjMzQwNzliOGZkMjg2
NDczNDBmYjVkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1
ZS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKQEAgLTMw
LDcgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIENTU1RpbWluZ0Z1
bmN0aW9uVmFsdWU6OmNzc1RleHQoKSBjb25zdAorU3RyaW5nIENTU0xpbmVhclRpbWluZ0Z1bmN0
aW9uVmFsdWU6OmNzc1RleHQoKSBjb25zdAoreworICAgIHJldHVybiAibGluZWFyIjsKK30KKwor
U3RyaW5nIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0
CiB7CiAgICAgU3RyaW5nIHRleHQoImN1YmljLWJlemllcigiKTsKICAgICB0ZXh0ICs9IFN0cmlu
Zzo6bnVtYmVyKG1feDEpOwpAQCAtNDQsNCArNDksMTQgQEAgU3RyaW5nIENTU1RpbWluZ0Z1bmN0
aW9uVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiB0ZXh0OwogfQogCitTdHJpbmcg
Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpjc3NUZXh0KCkgY29uc3QKK3sKKyAgICBTdHJp
bmcgdGV4dCgic3RlcHMoIik7CisgICAgdGV4dCArPSBTdHJpbmc6Om51bWJlcihtX3N0ZXBzKTsK
KyAgICB0ZXh0ICs9ICIsICI7CisgICAgdGV4dCArPSBtX3N0ZXBBdFN0YXJ0ID8gInN0YXJ0IiA6
ICJlbmQiOworICAgIHRleHQgKz0gIikiOworICAgIHJldHVybiB0ZXh0OworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlv
blZhbHVlLmggYi9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKaW5kZXggZTQ2
NTk5MzVjZGI3OTMxODZjMTBkZjcwNGU0OGNkNzlkY2RiYTczMC4uMjdlODk5YmQ1OWY2YjVkNzc5
ZDEyOTYxNzE0NDEzNzYxMDc4YWZjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTVGltaW5n
RnVuY3Rpb25WYWx1ZS5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUu
aApAQCAtMzMsMjAgKzMzLDUxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTVGlt
aW5nRnVuY3Rpb25WYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZT4gY3JlYXRlKGRvdWJsZSB4MSwgZG91
YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikKKyAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0
KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBib29sIGlzTGluZWFyVGltaW5nRnVuY3Rpb25W
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZSgpCisgICAg
eworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBpc1RpbWluZ0Z1bmN0aW9uVmFsdWUoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9Cit9OworCitjbGFzcyBDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZh
bHVlIDogcHVibGljIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWU+IGNyZWF0ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFs
dWUpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25W
YWx1ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU1RpbWluZ0Z1bmN0
aW9uVmFsdWUoeDEsIHkxLCB4MiwgeTIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyBj
c3NUZXh0KCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5lYXJUaW1pbmdGdW5jdGlv
blZhbHVlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorfTsKKyAgICAKK2NsYXNzIENTU0N1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSA6IHB1YmxpYyBDU1NUaW1pbmdGdW5jdGlvblZhbHVl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uVmFsdWU+IGNyZWF0ZShkb3VibGUgeDEsIGRvdWJsZSB5MSwgZG91YmxlIHgyLCBkb3Vi
bGUgeTIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU0N1YmljQmV6aWVy
VGltaW5nRnVuY3Rpb25WYWx1ZSh4MSwgeTEsIHgyLCB5MikpOworICAgIH0KKwogICAgIGRvdWJs
ZSB4MSgpIGNvbnN0IHsgcmV0dXJuIG1feDE7IH0KICAgICBkb3VibGUgeTEoKSBjb25zdCB7IHJl
dHVybiBtX3kxOyB9CiAgICAgZG91YmxlIHgyKCkgY29uc3QgeyByZXR1cm4gbV94MjsgfQogICAg
IGRvdWJsZSB5MigpIGNvbnN0IHsgcmV0dXJuIG1feTI7IH0KIAogcHJpdmF0ZToKLSAgICBDU1NU
aW1pbmdGdW5jdGlvblZhbHVlKGRvdWJsZSB4MSwgZG91YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJs
ZSB5MikKKyAgICBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUoZG91YmxlIHgxLCBk
b3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyKQogICAgICAgICA6IG1feDEoeDEpCiAgICAg
ICAgICwgbV95MSh5MSkKICAgICAgICAgLCBtX3gyKHgyKQpAQCAtNTQsMTQgKzg1LDQxIEBAIHBy
aXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1RpbWluZ0Z1bmN0aW9u
VmFsdWUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgCisgICAgdmlydHVhbCBTdHJpbmcg
Y3NzVGV4dCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvblZhbHVlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgZG91YmxlIG1feDE7
CiAgICAgZG91YmxlIG1feTE7CiAgICAgZG91YmxlIG1feDI7CiAgICAgZG91YmxlIG1feTI7CiB9
OwogCitjbGFzcyBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUgOiBwdWJsaWMgQ1NTVGltaW5n
RnVuY3Rpb25WYWx1ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTU3RlcHNU
aW1pbmdGdW5jdGlvblZhbHVlPiBjcmVhdGUoaW50IHN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9u
VmFsdWUoc3RlcHMsIHN0ZXBBdFN0YXJ0KSk7CisgICAgfQorCisgICAgaW50IG51bWJlck9mU3Rl
cHMoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBzOyB9CisgICAgYm9vbCBzdGVwQXRTdGFydCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RlcEF0U3RhcnQ7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgQ1NTU3Rl
cHNUaW1pbmdGdW5jdGlvblZhbHVlKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKKyAgICAg
ICAgOiBtX3N0ZXBzKHN0ZXBzKQorICAgICAgICAsIG1fc3RlcEF0U3RhcnQoc3RlcEF0U3RhcnQp
CisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBpc1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKworICAgIGludCBtX3N0ZXBzOworICAgIGJvb2wgbV9zdGVwQXRTdGFydDsK
K307CisgICAgCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmlu
CmluZGV4IDdhOWI5Yzc3OGIzZjgxMTZlMmVmNmZjMzFlNmQ1NmQ3NTgyNDU0YWQuLjFlN2MyYjVi
NzYzNjY4NDBlMjFhYTRhNDIzZTliZjQ0OGI3OWYxM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlS2V5d29yZHMuaW4KKysrIGIvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5p
bgpAQCAtNjkxLDYgKzY5MSw4IEBAIGxpbmVhcgogZWFzZS1pbgogZWFzZS1vdXQKIGVhc2UtaW4t
b3V0CitzdGVwLXN0YXJ0CitzdGVwLWVuZAogCiAjCiAjIENTU19QUk9QX1pPT00KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IGQ0OTI2ZWFmMzA1YzhkMmU3YThk
Y2NjZTIwNDJjZDFiYzZhOTQxYTQuLjZlZmVkOGU2NTFmZGVlMTFmNmYyYjA4ODJjOGU4NGY2ZTE4
NzRhNmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5j
cHAKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtNzAs
NiArNzAsMTMgQEAgc3RhdGljIGlubGluZSBkb3VibGUgc29sdmVDdWJpY0JlemllckZ1bmN0aW9u
KGRvdWJsZSBwMXgsIGRvdWJsZSBwMXksIGRvdWJsZSBwMngKICAgICByZXR1cm4gYmV6aWVyLnNv
bHZlKHQsIHNvbHZlRXBzaWxvbihkdXJhdGlvbikpOwogfQogCitzdGF0aWMgaW5saW5lIGRvdWJs
ZSBzb2x2ZVN0ZXBzRnVuY3Rpb24oaW50IG51bVN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0LCBkb3Vi
bGUgdCkKK3sKKyAgICBpZiAoc3RlcEF0U3RhcnQpCisgICAgICAgIHJldHVybiBtaW4oMS4wLCAo
Zmxvb3IobnVtU3RlcHMgKiB0KSArIDEpIC8gbnVtU3RlcHMpOworICAgIHJldHVybiBmbG9vcihu
dW1TdGVwcyAqIHQpIC8gbnVtU3RlcHM7Cit9CisKIHN0YXRpYyBpbmxpbmUgaW50IGJsZW5kRnVu
Yyhjb25zdCBBbmltYXRpb25CYXNlKiwgaW50IGZyb20sIGludCB0bywgZG91YmxlIHByb2dyZXNz
KQogeyAgCiAgICAgcmV0dXJuIGludChmcm9tICsgKHRvIC0gZnJvbSkgKiBwcm9ncmVzcyk7CkBA
IC0xMjQ5LDE4ICsxMjU2LDIwIEBAIGRvdWJsZSBBbmltYXRpb25CYXNlOjpwcm9ncmVzcyhkb3Vi
bGUgc2NhbGUsIGRvdWJsZSBvZmZzZXQsIGNvbnN0IFRpbWluZ0Z1bmN0aW9uCiAgICAgICAgIGZy
YWN0aW9uYWxUaW1lID0gKGZyYWN0aW9uYWxUaW1lIC0gb2Zmc2V0KSAqIHNjYWxlOwogICAgICAg
ICAKICAgICBpZiAoIXRmKQotICAgICAgICB0ZiA9ICZtX2FuaW1hdGlvbi0+dGltaW5nRnVuY3Rp
b24oKTsKLQotICAgIGlmICh0Zi0+dHlwZSgpID09IExpbmVhclRpbWluZ0Z1bmN0aW9uKQorICAg
ICAgICB0ZiA9IG1fYW5pbWF0aW9uLT50aW1pbmdGdW5jdGlvbigpLmdldCgpOworCisgICAgaWYg
KHRmLT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgeworICAgICAgICBjb25zdCBDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uKiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uKj4odGYpOworICAgICAgICByZXR1cm4gc29sdmVDdWJpY0JlemllckZ1
bmN0aW9uKGN0Zi0+eDEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjdGYtPnkxKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Rm
LT54MigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0Zi0+eTIo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbmFsVGlt
ZSwgbV9hbmltYXRpb24tPmR1cmF0aW9uKCkpOworICAgIH0gZWxzZSBpZiAodGYtPmlzU3RlcHNU
aW1pbmdGdW5jdGlvbigpKSB7CisgICAgICAgIGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24qIHN0
ZiA9IHN0YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24qPih0Zik7CisgICAgICAg
IHJldHVybiBzb2x2ZVN0ZXBzRnVuY3Rpb24oc3RmLT5udW1iZXJPZlN0ZXBzKCksIHN0Zi0+c3Rl
cEF0U3RhcnQoKSwgZnJhY3Rpb25hbFRpbWUpOworICAgIH0gZWxzZQogICAgICAgICByZXR1cm4g
ZnJhY3Rpb25hbFRpbWU7Ci0KLSAgICAvLyBDdWJpYyBiZXppZXIuCi0gICAgZG91YmxlIHJlc3Vs
dCA9IHNvbHZlQ3ViaWNCZXppZXJGdW5jdGlvbih0Zi0+eDEoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGYtPnkxKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRmLT54MigpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0Zi0+eTIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb25hbFRpbWUsIG1fYW5pbWF0aW9uLT5kdXJhdGlv
bigpKTsKLSAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIEFuaW1hdGlvbkJhc2U6OmdldFRp
bWVUb05leHRFdmVudChkb3VibGUmIHRpbWUsIGJvb2wmIGlzTG9vcGluZykgY29uc3QKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwIGIvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKaW5kZXggMDFlYzJmMTY5
MDhhMGFlZTI0YjYxZTExNGViNmQ5YTllMDE1ZTBmNi4uZWVkZGI5NDZmYjQ0MjU4YmRmYjBmOGIz
MTMxZThjMzNkMTY0NjAyMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlm
cmFtZUFuaW1hdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFu
aW1hdGlvbi5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIEtleWZyYW1lQW5pbWF0aW9uOjpm
ZXRjaEludGVydmFsRW5kcG9pbnRzRm9yUHJvcGVydHkoaW50IHByb3BlcnR5LCBjb25zdCBSZQog
ICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IDA7CiAgICAgaWYgKGZy
b21TdHlsZS0+YW5pbWF0aW9ucygpICYmIGZyb21TdHlsZS0+YW5pbWF0aW9ucygpLT5zaXplKCkg
PiAwKSB7CiAgICAgICAgIC8vIFdlIGdldCB0aGUgdGltaW5nIGZ1bmN0aW9uIGZyb20gdGhlIGZp
cnN0IGFuaW1hdGlvbiwgYmVjYXVzZSB3ZSd2ZSBzeW50aGVzaXplZCBhIFJlbmRlclN0eWxlIGZv
ciBlYWNoIGtleWZyYW1lLgotICAgICAgICB0aW1pbmdGdW5jdGlvbiA9ICYoZnJvbVN0eWxlLT5h
bmltYXRpb25zKCktPmFuaW1hdGlvbigwKS0+dGltaW5nRnVuY3Rpb24oKSk7CisgICAgICAgIHRp
bWluZ0Z1bmN0aW9uID0gZnJvbVN0eWxlLT5hbmltYXRpb25zKCktPmFuaW1hdGlvbigwKS0+dGlt
aW5nRnVuY3Rpb24oKS5nZXQoKTsKICAgICB9CiAKICAgICBwcm9nID0gcHJvZ3Jlc3Moc2NhbGUs
IG9mZnNldCwgdGltaW5nRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9h
bmltYXRpb24vQW5pbWF0aW9uLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1h
dGlvbi5jcHAKaW5kZXggYmMzM2E5ZWZlZGRkMTRmZDA2MWFiN2I0ZjhmYWE5OWRhMDdkOTQxOS4u
MTEyZWUzNjAyNzk5ODdkNGU2ZGE2NGZlMDZhNTM4Njc1MWJkZTZhNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2FuaW1hdGlvbi9BbmltYXRpb24uY3BwCkBAIC0xMDYsMjMgKzEwNiwyMyBAQCBib29sIEFu
aW1hdGlvbjo6YW5pbWF0aW9uc01hdGNoKGNvbnN0IEFuaW1hdGlvbiogbywgYm9vbCBtYXRjaFBs
YXlTdGF0ZXMpIGNvbnN0CiAgICAgaWYgKCFvKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ci0gICAgYm9vbCByZXN1bHQgPSBtX25hbWUgPT0gby0+bV9uYW1lICYmCi0gICAgICAgICAgICAg
ICAgICBtX3Byb3BlcnR5ID09IG8tPm1fcHJvcGVydHkgJiYgCi0gICAgICAgICAgICAgICAgICBt
X2l0ZXJhdGlvbkNvdW50ID09IG8tPm1faXRlcmF0aW9uQ291bnQgJiYKLSAgICAgICAgICAgICAg
ICAgIG1fZGVsYXkgPT0gby0+bV9kZWxheSAmJgotICAgICAgICAgICAgICAgICAgbV9kdXJhdGlv
biA9PSBvLT5tX2R1cmF0aW9uICYmCi0gICAgICAgICAgICAgICAgICBtX3RpbWluZ0Z1bmN0aW9u
ID09IG8tPm1fdGltaW5nRnVuY3Rpb24gJiYKLSAgICAgICAgICAgICAgICAgIG1fZGlyZWN0aW9u
ID09IG8tPm1fZGlyZWN0aW9uICYmCi0gICAgICAgICAgICAgICAgICBtX2ZpbGxNb2RlID09IG8t
Pm1fZmlsbE1vZGUgJiYKLSAgICAgICAgICAgICAgICAgIG1fZGVsYXlTZXQgPT0gby0+bV9kZWxh
eVNldCAmJgotICAgICAgICAgICAgICAgICAgbV9kaXJlY3Rpb25TZXQgPT0gby0+bV9kaXJlY3Rp
b25TZXQgJiYKLSAgICAgICAgICAgICAgICAgIG1fZHVyYXRpb25TZXQgPT0gby0+bV9kdXJhdGlv
blNldCAmJgotICAgICAgICAgICAgICAgICAgbV9maWxsTW9kZVNldCA9PSBvLT5tX2ZpbGxNb2Rl
U2V0ICYmCi0gICAgICAgICAgICAgICAgICBtX2l0ZXJhdGlvbkNvdW50U2V0ID09IG8tPm1faXRl
cmF0aW9uQ291bnRTZXQgJiYKLSAgICAgICAgICAgICAgICAgIG1fbmFtZVNldCA9PSBvLT5tX25h
bWVTZXQgJiYKLSAgICAgICAgICAgICAgICAgIG1fcHJvcGVydHlTZXQgPT0gby0+bV9wcm9wZXJ0
eVNldCAmJgotICAgICAgICAgICAgICAgICAgbV90aW1pbmdGdW5jdGlvblNldCA9PSBvLT5tX3Rp
bWluZ0Z1bmN0aW9uU2V0ICYmCi0gICAgICAgICAgICAgICAgICBtX2lzTm9uZSA9PSBvLT5tX2lz
Tm9uZTsKKyAgICBib29sIHJlc3VsdCA9IG1fbmFtZSA9PSBvLT5tX25hbWUKKyAgICAgICAgICAg
ICAgICAgICYmIG1fcHJvcGVydHkgPT0gby0+bV9wcm9wZXJ0eSAKKyAgICAgICAgICAgICAgICAg
ICYmIG1faXRlcmF0aW9uQ291bnQgPT0gby0+bV9pdGVyYXRpb25Db3VudAorICAgICAgICAgICAg
ICAgICAgJiYgbV9kZWxheSA9PSBvLT5tX2RlbGF5CisgICAgICAgICAgICAgICAgICAmJiBtX2R1
cmF0aW9uID09IG8tPm1fZHVyYXRpb24KKyAgICAgICAgICAgICAgICAgICYmICoobV90aW1pbmdG
dW5jdGlvbi5nZXQoKSkgPT0gKihvLT5tX3RpbWluZ0Z1bmN0aW9uLmdldCgpKQorICAgICAgICAg
ICAgICAgICAgJiYgbV9kaXJlY3Rpb24gPT0gby0+bV9kaXJlY3Rpb24KKyAgICAgICAgICAgICAg
ICAgICYmIG1fZmlsbE1vZGUgPT0gby0+bV9maWxsTW9kZQorICAgICAgICAgICAgICAgICAgJiYg
bV9kZWxheVNldCA9PSBvLT5tX2RlbGF5U2V0CisgICAgICAgICAgICAgICAgICAmJiBtX2RpcmVj
dGlvblNldCA9PSBvLT5tX2RpcmVjdGlvblNldAorICAgICAgICAgICAgICAgICAgJiYgbV9kdXJh
dGlvblNldCA9PSBvLT5tX2R1cmF0aW9uU2V0CisgICAgICAgICAgICAgICAgICAmJiBtX2ZpbGxN
b2RlU2V0ID09IG8tPm1fZmlsbE1vZGVTZXQKKyAgICAgICAgICAgICAgICAgICYmIG1faXRlcmF0
aW9uQ291bnRTZXQgPT0gby0+bV9pdGVyYXRpb25Db3VudFNldAorICAgICAgICAgICAgICAgICAg
JiYgbV9uYW1lU2V0ID09IG8tPm1fbmFtZVNldAorICAgICAgICAgICAgICAgICAgJiYgbV9wcm9w
ZXJ0eVNldCA9PSBvLT5tX3Byb3BlcnR5U2V0CisgICAgICAgICAgICAgICAgICAmJiBtX3RpbWlu
Z0Z1bmN0aW9uU2V0ID09IG8tPm1fdGltaW5nRnVuY3Rpb25TZXQKKyAgICAgICAgICAgICAgICAg
ICYmIG1faXNOb25lID09IG8tPm1faXNOb25lOwogCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0Fu
aW1hdGlvbi5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgKaW5kZXgg
Y2FiYjBlYmZkMTljMDZhMTNiMTkzZjk3OGIxZjI5ZjdjZWM2YjAwZC4uOTEzMDQxNTE5OTEwZmJh
Mzc2NDUyNTI5NmJkODI2ODI1YzNhYTdiYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9h
bmltYXRpb24vQW5pbWF0aW9uLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5p
bWF0aW9uLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNkZWZpbmUgQW5pbWF0aW9uX2gKIAogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIK
ICNpbmNsdWRlICJUaW1pbmdGdW5jdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTk0LDcgKzk1LDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIHVu
c2lnbmVkIHBsYXlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheVN0YXRlOyB9CiAgICAgaW50
IHByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eTsgfQotICAgIGNvbnN0IFRpbWlu
Z0Z1bmN0aW9uJiB0aW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGltaW5nRnVuY3Rp
b247IH0KKyAgICBjb25zdCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fdGltaW5nRnVuY3Rpb247IH0KIAogICAgIHZvaWQgc2V0RGVs
YXkoZG91YmxlIGMpIHsgbV9kZWxheSA9IGM7IG1fZGVsYXlTZXQgPSB0cnVlOyB9CiAgICAgdm9p
ZCBzZXREaXJlY3Rpb24oQW5pbWF0aW9uRGlyZWN0aW9uIGQpIHsgbV9kaXJlY3Rpb24gPSBkOyBt
X2RpcmVjdGlvblNldCA9IHRydWU7IH0KQEAgLTEwNCw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbikgeyBtX25hbWUgPSBuOyBtX25hbWVTZXQgPSB0
cnVlOyB9CiAgICAgdm9pZCBzZXRQbGF5U3RhdGUodW5zaWduZWQgZCkgeyBtX3BsYXlTdGF0ZSA9
IGQ7IG1fcGxheVN0YXRlU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0UHJvcGVydHkoaW50IHQp
IHsgbV9wcm9wZXJ0eSA9IHQ7IG1fcHJvcGVydHlTZXQgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXRU
aW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiYgZikgeyBtX3RpbWluZ0Z1bmN0aW9u
ID0gZjsgbV90aW1pbmdGdW5jdGlvblNldCA9IHRydWU7IH0KKyAgICB2b2lkIHNldFRpbWluZ0Z1
bmN0aW9uKFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IGYpIHsgbV90aW1pbmdGdW5jdGlvbiA9
IGY7IG1fdGltaW5nRnVuY3Rpb25TZXQgPSB0cnVlOyB9CiAKICAgICB2b2lkIHNldElzTm9uZUFu
aW1hdGlvbihib29sIG4pIHsgbV9pc05vbmUgPSBuOyB9CiAKQEAgLTEyOSw3ICsxMzAsNyBAQCBw
cml2YXRlOgogICAgIGludCBtX2l0ZXJhdGlvbkNvdW50OwogICAgIGRvdWJsZSBtX2RlbGF5Owog
ICAgIGRvdWJsZSBtX2R1cmF0aW9uOwotICAgIFRpbWluZ0Z1bmN0aW9uIG1fdGltaW5nRnVuY3Rp
b247CisgICAgUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBtX3RpbWluZ0Z1bmN0aW9uOwogICAgIEFu
aW1hdGlvbkRpcmVjdGlvbiBtX2RpcmVjdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9maWxsTW9k
ZSA6IDI7CiAKQEAgLTE1Niw3ICsxNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBp
bml0aWFsQW5pbWF0aW9uTmFtZSgpIHsgcmV0dXJuIFN0cmluZygibm9uZSIpOyB9CiAgICAgc3Rh
dGljIHVuc2lnbmVkIGluaXRpYWxBbmltYXRpb25QbGF5U3RhdGUoKSB7IHJldHVybiBBbmltUGxh
eVN0YXRlUGxheWluZzsgfQogICAgIHN0YXRpYyBpbnQgaW5pdGlhbEFuaW1hdGlvblByb3BlcnR5
KCkgeyByZXR1cm4gY0FuaW1hdGVBbGw7IH0KLSAgICBzdGF0aWMgVGltaW5nRnVuY3Rpb24gaW5p
dGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkgeyByZXR1cm4gVGltaW5nRnVuY3Rpb24oKTsg
fQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBpbml0aWFsQW5pbWF0aW9u
VGltaW5nRnVuY3Rpb24oKSB7IHJldHVybiBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVh
dGUoKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaCBiL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgKaW5kZXggZDNmNzFmZjJiMTIxNmFmNmI3ZDZlNDkz
NWUyYzQ0NWRhNTY3MTgwOS4uOGVmMmQ4ZjE0NTNlM2VmMWQzN2QyNjNmOTA3OWY3NjY5YmZiN2M5
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24u
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCkBAIC0y
NSw1MyArMjUsODcgQEAKICNpZm5kZWYgVGltaW5nRnVuY3Rpb25faAogI2RlZmluZSBUaW1pbmdG
dW5jdGlvbl9oCiAKLSNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IFRpbWlu
Z0Z1bmN0aW9uIDogRmFzdEFsbG9jQmFzZSB7Ci0gICAgVGltaW5nRnVuY3Rpb24oKQotICAgICAg
ICA6IG1fdHlwZShDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKQotICAgICAgICAsIG1feDEoMC4y
NSkKLSAgICAgICAgLCBtX3kxKDAuMSkKLSAgICAgICAgLCBtX3gyKDAuMjUpCi0gICAgICAgICwg
bV95MigxLjApCitjbGFzcyBUaW1pbmdGdW5jdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFRpbWlu
Z0Z1bmN0aW9uPiB7CitwdWJsaWM6CisKKyAgICBlbnVtIFRpbWluZ0Z1bmN0aW9uVHlwZSB7Cisg
ICAgICAgIExpbmVhckZ1bmN0aW9uLCBDdWJpY0JlemllckZ1bmN0aW9uLCBTdGVwc0Z1bmN0aW9u
CisgICAgfTsKKyAgICAKKyAgICB2aXJ0dWFsIH5UaW1pbmdGdW5jdGlvbigpIHsgfQorICAgIAor
ICAgIGJvb2wgaXNMaW5lYXJUaW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9
PSBMaW5lYXJGdW5jdGlvbjsgfQorICAgIGJvb2wgaXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEN1YmljQmV6aWVyRnVuY3Rpb247IH0KKyAgICBi
b29sIGlzU3RlcHNUaW1pbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBTdGVw
c0Z1bmN0aW9uOyB9CisgICAgCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVGlt
aW5nRnVuY3Rpb24mIG90aGVyKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBUaW1pbmdGdW5jdGlv
bihUaW1pbmdGdW5jdGlvblR5cGUgdHlwZSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKICAgICB7
CiAgICAgfQorICAgIAorICAgIFRpbWluZ0Z1bmN0aW9uVHlwZSBtX3R5cGU7Cit9OwogCi0gICAg
Ly8gVGhpcyBleHBsaWNpdCBjb3B5IGNvbnN0cnVjdG9yIHdvcmtzIGFyb3VuZCBhbiBpbmxpbmlu
ZyBidWcgaW4gR0NDIDQuMiAob25seSByZXByb2VkIG9uIG1hYywgYnV0IG1heSBleGlzdCBvbiBv
dGhlciBwbGF0Zm9ybXMpLgotICAgIFRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9u
JiB0aGF0KQotICAgICAgICA6IG1fdHlwZSh0aGF0Lm1fdHlwZSkKLSAgICAgICAgLCBtX3gxKHRo
YXQubV94MSkKLSAgICAgICAgLCBtX3kxKHRoYXQubV95MSkKLSAgICAgICAgLCBtX3gyKHRoYXQu
bV94MikKLSAgICAgICAgLCBtX3kyKHRoYXQubV95MikKK2NsYXNzIExpbmVhclRpbWluZ0Z1bmN0
aW9uIDogcHVibGljIFRpbWluZ0Z1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxMaW5lYXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKCkKICAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgTGluZWFyVGltaW5nRnVuY3Rpb24pOwogICAgIH0KLQotICAgIFRpbWlu
Z0Z1bmN0aW9uKEVUaW1pbmdGdW5jdGlvblR5cGUgdGltaW5nRnVuY3Rpb24sIGRvdWJsZSB4MSA9
IDAuMCwgZG91YmxlIHkxID0gMC4wLCBkb3VibGUgeDIgPSAxLjAsIGRvdWJsZSB5MiA9IDEuMCkK
LSAgICAgICAgOiBtX3R5cGUodGltaW5nRnVuY3Rpb24pCi0gICAgICAgICwgbV94MSh4MSkKLSAg
ICAgICAgLCBtX3kxKHkxKQotICAgICAgICAsIG1feDIoeDIpCi0gICAgICAgICwgbV95Mih5MikK
KyAgICAKKyAgICB+TGluZWFyVGltaW5nRnVuY3Rpb24oKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFs
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpCiAgICAgeworICAg
ICAgICByZXR1cm4gb3RoZXIuaXNMaW5lYXJUaW1pbmdGdW5jdGlvbigpOworICAgIH0KKyAgICAK
K3ByaXZhdGU6CisgICAgTGluZWFyVGltaW5nRnVuY3Rpb24oKQorICAgICAgICA6IFRpbWluZ0Z1
bmN0aW9uKExpbmVhckZ1bmN0aW9uKQorICAgIHsKKyAgICB9Cit9OworICAgIAorY2xhc3MgQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvbiA6IHB1YmxpYyBUaW1pbmdGdW5jdGlvbiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4gY3JlYXRl
KGRvdWJsZSB4MSA9IDAuMjUsIGRvdWJsZSB5MSA9IDAuMSwgZG91YmxlIHgyID0gMC4yNSwgZG91
YmxlIHkyID0gMS4wKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uKHgxLCB5MSwgeDIsIHkyKSk7CiAgICAgfQogCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvKSBjb25zdAorICAgIH5DdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uKCkgeyB9CisgICAgCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdHlw
ZSA9PSBvLm1fdHlwZSAmJiBtX3gxID09IG8ubV94MSAmJiBtX3kxID09IG8ubV95MSAmJiBtX3gy
ID09IG8ubV94MiAmJiBtX3kyID09IG8ubV95MjsKKyAgICAgICAgaWYgKG90aGVyLmlzQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvbigpKSB7CisgICAgICAgICAgICBjb25zdCBDdWJpY0JlemllclRp
bWluZ0Z1bmN0aW9uKiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uKj4oJm90aGVyKTsKKyAgICAgICAgICAgIHJldHVybiBtX3gxID09IGN0Zi0+bV94MSAm
JiBtX3kxID09IGN0Zi0+bV95MSAmJiBtX3gyID09IGN0Zi0+bV94MiAmJiBtX3kyID09IGN0Zi0+
bV95MjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgZG91
YmxlIHgxKCkgY29uc3QgeyByZXR1cm4gbV94MTsgfQogICAgIGRvdWJsZSB5MSgpIGNvbnN0IHsg
cmV0dXJuIG1feTE7IH0KICAgICBkb3VibGUgeDIoKSBjb25zdCB7IHJldHVybiBtX3gyOyB9CiAg
ICAgZG91YmxlIHkyKCkgY29uc3QgeyByZXR1cm4gbV95MjsgfQotCi0gICAgRVRpbWluZ0Z1bmN0
aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KKyAgICAKIHByaXZhdGU6
Ci0gICAgRVRpbWluZ0Z1bmN0aW9uVHlwZSBtX3R5cGU7CisgICAgQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbihkb3VibGUgeDEsIGRvdWJsZSB5MSwgZG91YmxlIHgyLCBkb3VibGUgeTIpCisgICAg
ICAgIDogVGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJGdW5jdGlvbikKKyAgICAgICAgLCBtX3gx
KHgxKQorICAgICAgICAsIG1feTEoeTEpCisgICAgICAgICwgbV94Mih4MikKKyAgICAgICAgLCBt
X3kyKHkyKQorICAgIHsKKyAgICB9CiAKICAgICBkb3VibGUgbV94MTsKICAgICBkb3VibGUgbV95
MTsKQEAgLTc5LDYgKzExMywzOSBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX3kyOwogfTsKIAor
Y2xhc3MgU3RlcHNUaW1pbmdGdW5jdGlvbiA6IHB1YmxpYyBUaW1pbmdGdW5jdGlvbiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RlcHNUaW1pbmdGdW5jdGlvbj4gY3JlYXRlKGlu
dCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU3RlcHNUaW1pbmdGdW5jdGlvbihzdGVwcywgc3RlcEF0U3RhcnQpKTsKKyAgICB9Cisg
ICAgCisgICAgflN0ZXBzVGltaW5nRnVuY3Rpb24oKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpCisgICAgeworICAgICAg
ICBpZiAob3RoZXIuaXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgICAgIGNvbnN0
IFN0ZXBzVGltaW5nRnVuY3Rpb24qIHN0ZiA9IHN0YXRpY19jYXN0PGNvbnN0IFN0ZXBzVGltaW5n
RnVuY3Rpb24qPigmb3RoZXIpOworICAgICAgICAgICAgcmV0dXJuIG1fc3RlcHMgPT0gc3RmLT5t
X3N0ZXBzICYmIG1fc3RlcEF0U3RhcnQgPT0gc3RmLT5tX3N0ZXBBdFN0YXJ0OworICAgICAgICB9
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgaW50IG51bWJlck9mU3Rl
cHMoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBzOyB9CisgICAgYm9vbCBzdGVwQXRTdGFydCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RlcEF0U3RhcnQ7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgU3RlcHNU
aW1pbmdGdW5jdGlvbihpbnQgc3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQpCisgICAgICAgIDogVGlt
aW5nRnVuY3Rpb24oU3RlcHNGdW5jdGlvbikKKyAgICAgICAgLCBtX3N0ZXBzKHN0ZXBzKQorICAg
ICAgICAsIG1fc3RlcEF0U3RhcnQoc3RlcEF0U3RhcnQpCisgICAgeworICAgIH0KKyAgICAKKyAg
ICBpbnQgbV9zdGVwczsKKyAgICBib29sIG1fc3RlcEF0U3RhcnQ7Cit9OworICAgIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVGltaW5nRnVuY3Rpb25faApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCAwZjc0Y2Q1Y2IzMzg1ZWU3YmI1
YTY4ODAyYjdhZmMyOTc4N2ZmODBmLi42OGE1ODBlZDRlMDNjNDc1YTk0NDI5NzU1OTdmOGYzM2Zi
M2RjYjg4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAt
ODUsMTggKzg1LDE4IEBAIGNsYXNzIEZsb2F0UG9pbnQzRDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDsKIGNsYXNzIEltYWdlOwogY2xhc3MgVGV4dFN0cmVhbTsKLXN0cnVjdCBUaW1pbmdGdW5jdGlv
bjsKK2NsYXNzIFRpbWluZ0Z1bmN0aW9uOwogCiAvLyBCYXNlIGNsYXNzIGZvciBhbmltYXRpb24g
dmFsdWVzIChhbHNvIHVzZWQgZm9yIHRyYW5zaXRpb25zKS4gSGVyZSB0bwogLy8gcmVwcmVzZW50
IHZhbHVlcyBmb3IgcHJvcGVydGllcyBiZWluZyBhbmltYXRlZCB2aWEgdGhlIEdyYXBoaWNzTGF5
ZXIsCiAvLyB3aXRob3V0IHB1bGxpbmcgaW4gc3R5bGUtcmVsYXRlZCBkYXRhIGZyb20gb3V0c2lk
ZSBvZiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5LgogY2xhc3MgQW5pbWF0aW9uVmFsdWUgOiBwdWJs
aWMgTm9uY29weWFibGUgewogcHVibGljOgotICAgIEFuaW1hdGlvblZhbHVlKGZsb2F0IGtleVRp
bWUsIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IDApCisgICAgQW5pbWF0
aW9uVmFsdWUoZmxvYXQga2V5VGltZSwgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5n
RnVuY3Rpb24gPSAwKQogICAgICAgICA6IG1fa2V5VGltZShrZXlUaW1lKQogICAgIHsKICAgICAg
ICAgaWYgKHRpbWluZ0Z1bmN0aW9uKQotICAgICAgICAgICAgbV90aW1pbmdGdW5jdGlvbiA9IGFk
b3B0UHRyKG5ldyBUaW1pbmdGdW5jdGlvbigqdGltaW5nRnVuY3Rpb24pKTsKKyAgICAgICAgICAg
IG1fdGltaW5nRnVuY3Rpb24gPSB0aW1pbmdGdW5jdGlvbjsKICAgICB9CiAgICAgCiAgICAgdmly
dHVhbCB+QW5pbWF0aW9uVmFsdWUoKSB7IH0KQEAgLTEwNiwxMyArMTA2LDEzIEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBmbG9hdCBtX2tleVRpbWU7Ci0gICAgT3duUHRyPFRpbWluZ0Z1bmN0
aW9uPiBtX3RpbWluZ0Z1bmN0aW9uOworICAgIFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4gbV90aW1p
bmdGdW5jdGlvbjsKIH07CiAKIC8vIFVzZWQgdG8gc3RvcmUgb25lIGZsb2F0IHZhbHVlIG9mIGFu
IGFuaW1hdGlvbi4KIGNsYXNzIEZsb2F0QW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5pbWF0aW9u
VmFsdWUgewogcHVibGljOgotICAgIEZsb2F0QW5pbWF0aW9uVmFsdWUoZmxvYXQga2V5VGltZSwg
ZmxvYXQgdmFsdWUsIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IDApCisg
ICAgRmxvYXRBbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBmbG9hdCB2YWx1ZSwgUGFzc1Jl
ZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24gPSAwKQogICAgICAgICA6IEFuaW1h
dGlvblZhbHVlKGtleVRpbWUsIHRpbWluZ0Z1bmN0aW9uKQogICAgICAgICAsIG1fdmFsdWUodmFs
dWUpCiAgICAgewpAQCAtMTI3LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAvLyBVc2VkIHRvIHN0b3Jl
IG9uZSB0cmFuc2Zvcm0gdmFsdWUgaW4gYSBrZXlmcmFtZSBsaXN0LgogY2xhc3MgVHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogcHVibGljOgotICAgIFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlKGZsb2F0IGtleVRpbWUsIGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbnMqIHZhbHVlID0gMCwgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0g
MCkKKyAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShmbG9hdCBrZXlUaW1lLCBjb25zdCBUcmFu
c2Zvcm1PcGVyYXRpb25zKiB2YWx1ZSA9IDAsIFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+IHRp
bWluZ0Z1bmN0aW9uID0gMCkKICAgICAgICAgOiBBbmltYXRpb25WYWx1ZShrZXlUaW1lLCB0aW1p
bmdGdW5jdGlvbikKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZSkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbSBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQppbmRleCAzMTVjYzAwOTEwM2M2
OThmYTAwMTQ3YjQ5M2Y4NjU0OWM4MWYyY2FlLi41ZmVkYWZmZjI3ZjZlOWNjNzNhMGY1MDFiNmEw
N2NlNzBlY2EyOTNhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9H
cmFwaGljc0xheWVyQ0EubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3Jh
cGhpY3NMYXllckNBLm1tCkBAIC0yNzIsMTYgKzI3MiwxNiBAQCBzdGF0aWMgVHJhbnNmb3JtYXRp
b25NYXRyaXggZmxpcFRyYW5zZm9ybSgpCiB9CiAjZW5kaWYKIAotc3RhdGljIENBTWVkaWFUaW1p
bmdGdW5jdGlvbiogZ2V0Q0FNZWRpYVRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9u
JiB0aW1pbmdGdW5jdGlvbikKLXsKLSAgICBzd2l0Y2ggKHRpbWluZ0Z1bmN0aW9uLnR5cGUoKSkg
ewotICAgICAgICBjYXNlIExpbmVhclRpbWluZ0Z1bmN0aW9uOgotICAgICAgICAgICAgcmV0dXJu
IFtDQU1lZGlhVGltaW5nRnVuY3Rpb24gZnVuY3Rpb25XaXRoTmFtZTpAImxpbmVhciJdOwotICAg
ICAgICBjYXNlIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246Ci0gICAgICAgICAgICByZXR1cm4g
W0NBTWVkaWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhDb250cm9sUG9pbnRzOnN0YXRpY19j
YXN0PGZsb2F0Pih0aW1pbmdGdW5jdGlvbi54MSgpKSA6c3RhdGljX2Nhc3Q8ZmxvYXQ+KHRpbWlu
Z0Z1bmN0aW9uLnkxKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICA6c3RhdGljX2Nhc3Q8Zmxv
YXQ+KHRpbWluZ0Z1bmN0aW9uLngyKCkpIDpzdGF0aWNfY2FzdDxmbG9hdD4odGltaW5nRnVuY3Rp
b24ueTIoKSldOwotICAgIH0KLSAgICByZXR1cm4gMDsKK3N0YXRpYyBDQU1lZGlhVGltaW5nRnVu
Y3Rpb24qIGdldENBTWVkaWFUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGlt
aW5nRnVuY3Rpb24pCit7CisgICAgLy8gQnkgdGhpcyBwb2ludCwgdGltaW5nIGZ1bmN0aW9ucyBj
YW4gb25seSBiZSBsaW5lYXIgb3IgY3ViaWMsIG5vdCBzdGVwcy4KKyAgICBBU1NFUlQoIXRpbWlu
Z0Z1bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSk7CisgICAgaWYgKHRpbWluZ0Z1bmN0
aW9uLT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgeworICAgICAgICBjb25zdCBDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uKiBjdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24pOworICAgICAgICByZXR1cm4gW0NBTWVk
aWFUaW1pbmdGdW5jdGlvbiBmdW5jdGlvbldpdGhDb250cm9sUG9pbnRzOnN0YXRpY19jYXN0PGZs
b2F0PihjdGYtPngxKCkpIDpzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT55MSgpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnN0
YXRpY19jYXN0PGZsb2F0PihjdGYtPngyKCkpIDpzdGF0aWNfY2FzdDxmbG9hdD4oY3RmLT55Migp
KV07CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBbQ0FNZWRpYVRpbWluZ0Z1bmN0aW9uIGZ1
bmN0aW9uV2l0aE5hbWU6QCJsaW5lYXIiXTsKIH0KIAogc3RhdGljIHZvaWQgc2V0TGF5ZXJCb3Jk
ZXJDb2xvcihQbGF0Zm9ybUxheWVyKiBsYXllciwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtMzU2
LDYgKzM1NiwyMCBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5KiBudWxsQWN0aW9uc0RpY3Rpb25hcnko
KQogICAgIHJldHVybiBhY3Rpb25zOwogfQogCitzdGF0aWMgYm9vbCBhbmltYXRpb25IYXNTdGVw
c1RpbWluZ0Z1bmN0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0
IEFuaW1hdGlvbiogYW5pbSkKK3sKKyAgICBpZiAoYW5pbS0+dGltaW5nRnVuY3Rpb24oKS0+aXNT
dGVwc1RpbWluZ0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
Y29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdmFsdWVMaXN0LmF0KGkpLT50
aW1pbmdGdW5jdGlvbigpOworICAgICAgICBpZiAodGltaW5nRnVuY3Rpb24gJiYgdGltaW5nRnVu
Y3Rpb24tPmlzU3RlcHNUaW1pbmdGdW5jdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBQYXNzT3duUHRyPEdyYXBoaWNzTGF5
ZXI+IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiB7
CiAgICAgcmV0dXJuIG5ldyBHcmFwaGljc0xheWVyQ0EoY2xpZW50KTsKQEAgLTcxNiw2ICs3MzAs
MTEgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBJbnQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vu
ZGlmCiAKKyAgICAvLyBDb3JlQW5pbWF0aW9uIGRvZXMgbm90IGhhbmRsZSB0aGUgc3RlcHMoKSB0
aW1pbmcgZnVuY3Rpb24uIEZhbGwgYmFjaworICAgIC8vIHRvIHNvZnR3YXJlIGFuaW1hdGlvbiBp
biB0aGF0IGNhc2UuCisgICAgaWYgKGFuaW1hdGlvbkhhc1N0ZXBzVGltaW5nRnVuY3Rpb24odmFs
dWVMaXN0LCBhbmltKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgYm9vbCBjcmVhdGVk
QW5pbWF0aW9ucyA9IGZhbHNlOwogICAgIGlmICh2YWx1ZUxpc3QucHJvcGVydHkoKSA9PSBBbmlt
YXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKQogICAgICAgICBjcmVhdGVkQW5pbWF0aW9ucyA9
IGNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKHZhbHVlTGlzdCwgYW5pbSwg
a2V5ZnJhbWVzTmFtZSwgdGltZU9mZnNldCwgYm94U2l6ZSk7CkBAIC0xOTEzLDkgKzE5MzIsOSBA
QCBDQU1lZGlhVGltaW5nRnVuY3Rpb24qIEdyYXBoaWNzTGF5ZXJDQTo6dGltaW5nRnVuY3Rpb25G
b3JBbmltYXRpb25WYWx1ZShjb25zdCBBbgogICAgIGlmIChhbmltVmFsdWUtPnRpbWluZ0Z1bmN0
aW9uKCkpCiAgICAgICAgIHRmID0gYW5pbVZhbHVlLT50aW1pbmdGdW5jdGlvbigpOwogICAgIGVs
c2UgaWYgKGFuaW0tPmlzVGltaW5nRnVuY3Rpb25TZXQoKSkKLSAgICAgICAgdGYgPSAmYW5pbS0+
dGltaW5nRnVuY3Rpb24oKTsKKyAgICAgICAgdGYgPSBhbmltLT50aW1pbmdGdW5jdGlvbigpLmdl
dCgpOwogCi0gICAgcmV0dXJuIGdldENBTWVkaWFUaW1pbmdGdW5jdGlvbih0ZiA/ICp0ZiA6IFRp
bWluZ0Z1bmN0aW9uKCkpOworICAgIHJldHVybiBnZXRDQU1lZGlhVGltaW5nRnVuY3Rpb24odGYg
PyB0ZiA6IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpLmdldCgpKTsKIH0KIAog
Ym9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbkVuZHBvaW50cyhjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW0sIENBQmFzaWNBbmlt
YXRpb24qIGJhc2ljQW5pbSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NMYXllclF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NMYXllclF0LmNwcAppbmRleCA4OWJhZGNjYzc5NjJmMjI1OWM5ZmVhZDlmZTk3NjQyMjky
OTA3NmVjLi4xNTFiMWRmM2JhNDBjYTA4MWRmYjZiMzhiMGZjNDc5NGZjMWQzMzM3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwCkBAIC0x
MjEzLDcgKzEyMTMsNyBAQCBQbGF0Zm9ybUxheWVyKiBHcmFwaGljc0xheWVyUXQ6OnBsYXRmb3Jt
TGF5ZXIoKSBjb25zdAogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0cnVjdCBLZXlmcmFtZVZh
bHVlUXQgewotICAgIFRpbWluZ0Z1bmN0aW9uIHRpbWluZ0Z1bmN0aW9uOworICAgIGNvbnN0IFRp
bWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbjsKICAgICBUIHZhbHVlOwogfTsKIApAQCAtMTIz
MCwyMyArMTIzMCwzMiBAQCBzdGF0aWMgaW5saW5lIGRvdWJsZSBzb2x2ZUN1YmljQmV6aWVyRnVu
Y3Rpb24ocXJlYWwgcDF4LCBxcmVhbCBwMXksIHFyZWFsIHAyeCwgcQogICAgIHJldHVybiBiZXpp
ZXIuc29sdmUodCwgc29sdmVFcHNpbG9uKGR1cmF0aW9uKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
cXJlYWwgYXBwbHlUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiYgdGltaW5nRnVu
Y3Rpb24sIHFyZWFsIHByb2dyZXNzLCBkb3VibGUgZHVyYXRpb24pCitzdGF0aWMgaW5saW5lIGRv
dWJsZSBzb2x2ZVN0ZXBzRnVuY3Rpb24oaW50IG51bVN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0LCBk
b3VibGUgdCkKK3sKKyAgICBpZiAoc3RlcEF0U3RhcnQpCisgICAgICAgIHJldHVybiBtaW4oMS4w
LCAoZmxvb3IobnVtU3RlcHMgKiB0KSArIDEpIC8gbnVtU3RlcHMpOworICAgIHJldHVybiBmbG9v
cihudW1TdGVwcyAqIHQpIC8gbnVtU3RlcHM7Cit9CisKK3N0YXRpYyBpbmxpbmUgcXJlYWwgYXBw
bHlUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24sIHFy
ZWFsIHByb2dyZXNzLCBkb3VibGUgZHVyYXRpb24pCiB7CiAgICAgLy8gV2Ugd2FudCB0aGUgdGlt
aW5nIGZ1bmN0aW9uIHRvIGJlIGFzIGNsb3NlIGFzIHBvc3NpYmxlIHRvIHdoYXQgdGhlIHdlYi1k
ZXZlbG9wZXIgaW50ZW5kZWQsIHNvCiAgICAgLy8gd2UncmUgdXNpbmcgdGhlIHNhbWUgZnVuY3Rp
b24gdXNlZCBieSBXZWJDb3JlIHdoZW4gY29tcG9zaXRpbmcgaXMgZGlzYWJsZWQuIFVzaW5nIGVh
c2luZy1jdXJ2ZXMKICAgICAvLyB3b3VsZCBwcm9iYWJseSB3b3JrIGZvciBzb21lIG9mIHRoZSBj
YXNlcywgYnV0IHdvdWxkbid0IHJlYWxseSBidXkgdXMgYW55dGhpbmcgYXMgd2UnZCBoYXZlIHRv
CiAgICAgLy8gY29udmVydCB0aGUgYmV6aWVyIGZ1bmN0aW9uIGJhY2sgdG8gYW4gZWFzaW5nIGN1
cnZlLgogCi0gICAgaWYgKHRpbWluZ0Z1bmN0aW9uLnR5cGUoKSA9PSBMaW5lYXJUaW1pbmdGdW5j
dGlvbikKLSAgICAgICAgcmV0dXJuIHByb2dyZXNzOwotICAgIGlmICh0aW1pbmdGdW5jdGlvbi50
eXBlKCkgPT0gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbikgewotICAgICAgICByZXR1cm4gc29s
dmVDdWJpY0JlemllckZ1bmN0aW9uKHRpbWluZ0Z1bmN0aW9uLngxKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltaW5nRnVuY3Rpb24ueTEoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1pbmdGdW5jdGlvbi54MigpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9uLnkyKCks
CisgICAgaWYgKHRpbWluZ0Z1bmN0aW9uLT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkg
eworICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBjdGYgPSBzdGF0aWNf
Y2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24pOwor
ICAgICAgICByZXR1cm4gc29sdmVDdWJpY0JlemllckZ1bmN0aW9uKGN0Zi0+eDEoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdGYtPnkxKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RmLT54MigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGN0Zi0+eTIoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb3VibGUocHJvZ3Jlc3MpLCBkb3VibGUoZHVyYXRpb24pIC8g
MTAwMCk7Ci0gICAgfQotICAgIHJldHVybiBwcm9ncmVzczsKKyAgICB9IGVsc2UgaWYgKHRmLT5p
c1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkgeworICAgICAgICBjb25zdCBTdGVwc1RpbWluZ0Z1bmN0
aW9uKiBzdGYgPSBzdGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uKj4odGltaW5n
RnVuY3Rpb24pOworICAgICAgICByZXR1cm4gc29sdmVTdGVwc0Z1bmN0aW9uKHN0Zi0+bnVtYmVy
T2ZTdGVwcygpLCBzdGYtPnN0ZXBBdFN0YXJ0KCksIGRvdWJsZShwcm9ncmVzcykpOworICAgIH0g
ZWxzZQorICAgICAgICByZXR1cm4gcHJvZ3Jlc3M7CiB9CiAKIC8vIEhlbHBlciBmdW5jdGlvbnMg
dG8gc2FmZWx5IGdldCBhIHZhbHVlIG91dCBvZiBXZWJDb3JlJ3MgQW5pbWF0aW9uVmFsdWUqLgpA
QCAtMTMyMiw5ICsxMzMxLDkgQEAgcHVibGljOgogICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9u
VmFsdWUqIGFuaW1hdGlvblZhbHVlID0gdmFsdWVzLmF0KGkpOwogICAgICAgICAgICAgS2V5ZnJh
bWVWYWx1ZVF0PFQ+IGtleWZyYW1lVmFsdWU7CiAgICAgICAgICAgICBpZiAoYW5pbWF0aW9uVmFs
dWUtPnRpbWluZ0Z1bmN0aW9uKCkpCi0gICAgICAgICAgICAgICAga2V5ZnJhbWVWYWx1ZS50aW1p
bmdGdW5jdGlvbiA9ICphbmltYXRpb25WYWx1ZS0+dGltaW5nRnVuY3Rpb24oKTsKKyAgICAgICAg
ICAgICAgICBrZXlmcmFtZVZhbHVlLnRpbWluZ0Z1bmN0aW9uID0gYW5pbWF0aW9uVmFsdWUtPnRp
bWluZ0Z1bmN0aW9uKCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAga2V5ZnJh
bWVWYWx1ZS50aW1pbmdGdW5jdGlvbiA9IGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCk7CisgICAgICAg
ICAgICAgICAga2V5ZnJhbWVWYWx1ZS50aW1pbmdGdW5jdGlvbiA9IGFuaW0tPnRpbWluZ0Z1bmN0
aW9uKCkuZ2V0KCk7CiAgICAgICAgICAgICB3ZWJraXRBbmltYXRpb25Ub1F0QW5pbWF0aW9uVmFs
dWUoYW5pbWF0aW9uVmFsdWUsIGtleWZyYW1lVmFsdWUudmFsdWUpOwogICAgICAgICAgICAgbV9r
ZXlmcmFtZVZhbHVlc1thbmltYXRpb25WYWx1ZS0+a2V5VGltZSgpXSA9IGtleWZyYW1lVmFsdWU7
CiAgICAgICAgIH0KQEAgLTEzODEsNyArMTM5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgY29u
c3QgS2V5ZnJhbWVWYWx1ZVF0PFQ+JiBmcm9tS2V5ZnJhbWUgPSBpdC52YWx1ZSgpOwogICAgICAg
ICBjb25zdCBLZXlmcmFtZVZhbHVlUXQ8VD4mIHRvS2V5ZnJhbWUgPSBpdDIudmFsdWUoKTsKIAot
ICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiYgdGltaW5nRnVuYyA9IGZyb21LZXlmcmFtZS50
aW1pbmdGdW5jdGlvbjsKKyAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmMg
PSBmcm9tS2V5ZnJhbWUudGltaW5nRnVuY3Rpb247CiAgICAgICAgIGNvbnN0IFQmIGZyb21WYWx1
ZSA9IGZyb21LZXlmcmFtZS52YWx1ZTsKICAgICAgICAgY29uc3QgVCYgdG9WYWx1ZSA9IHRvS2V5
ZnJhbWUudmFsdWU7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmlu
ZGV4IDk4MWZhMTZmZWIzNTJmMzBmNzI2NmM5ODMxMDc4ZDQ4NWZhOWMyNmIuLjZjNThlMGQ3MWIy
YjUwMGFjMTY1OGZjNWIxYmZmMGI0OGZjODg3ZmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcApAQCAtMTEyNSw3ICsxMTI1LDcgQEAgYm9vbCBSZW5kZXJMYXllckJh
Y2tpbmc6OnN0YXJ0QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBBbmltYXRpb24q
IGFuaW0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIGdl
dCB0aW1pbmcgZnVuY3Rpb24KLSAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRmID0ga2V5
ZnJhbWVTdHlsZS0+aGFzQW5pbWF0aW9ucygpID8gJigoKmtleWZyYW1lU3R5bGUtPmFuaW1hdGlv
bnMoKSkuYW5pbWF0aW9uKDApLT50aW1pbmdGdW5jdGlvbigpKSA6IDA7CisgICAgICAgIFJlZlB0
cjxUaW1pbmdGdW5jdGlvbj4gdGYgPSBrZXlmcmFtZVN0eWxlLT5oYXNBbmltYXRpb25zKCkgPyAo
KmtleWZyYW1lU3R5bGUtPmFuaW1hdGlvbnMoKSkuYW5pbWF0aW9uKDApLT50aW1pbmdGdW5jdGlv
bigpIDogMDsKICAgICAgICAgCiAgICAgICAgIGlmIChjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSkpCiAgICAgICAgICAgICB0cmFuc2Zv
cm1WZWN0b3IuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShrZXksICYoa2V5ZnJh
bWVTdHlsZS0+dHJhbnNmb3JtKCkpLCB0ZikpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKaW5kZXggNjhjODExM2Y2M2M4MmE4OGM2OWY2NDlhZjQ2
MzUyOTdkMGNhOThmYS4uYTc4MzIxZjg0MTU3NTYzODIxZGU3NzI4YzUwNmNmNjU3YmExM2JhZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMu
aAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCkBA
IC0zMDMsOCArMzAzLDYgQEAgZW51bSBFQW5pbVBsYXlTdGF0ZSB7CiAgICAgQW5pbVBsYXlTdGF0
ZVBhdXNlZCA9IDB4MQogfTsKIAotZW51bSBFVGltaW5nRnVuY3Rpb25UeXBlIHsgTGluZWFyVGlt
aW5nRnVuY3Rpb24sIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24gfTsKLQogZW51bSBFV2hpdGVT
cGFjZSB7CiAgICAgTk9STUFMLCBQUkUsIFBSRV9XUkFQLCBQUkVfTElORSwgTk9XUkFQLCBLSFRN
TF9OT1dSQVAKIH07Cg==
</data>
<flag name="review"
          id="56107"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>