<?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>81448</bug_id>
          
          <creation_ts>2012-03-17 04:05:11 -0700</creation_ts>
          <short_desc>Enable animVal support for SVGNumberOptionalNumber</short_desc>
          <delta_ts>2012-03-17 05:14:01 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>12437</dependson>
          <blocked>41761</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>581300</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-17 04:05:11 -0700</bug_when>
    <thetext>Certain types like stdDeviationX, stdDeviationY are mapped to a single attribute SVGNames::stdDeviationAttr.
Two SVG DOM properties (two distinctive SVGAnimatedNumbers) have to reflect the changes when an animation is running.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581302</commentid>
    <comment_count>1</comment_count>
      <attachid>132457</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-17 04:13:46 -0700</bug_when>
    <thetext>Created attachment 132457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581306</commentid>
    <comment_count>2</comment_count>
      <attachid>132457</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-17 04:41:15 -0700</bug_when>
    <thetext>Comment on attachment 132457
Patch

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

&gt; Source/WebCore/svg/SVGAnimateElement.cpp:245
&gt; +    for (size_t i = 0; i &lt; m_animatedProperties.size(); ++i)
&gt; +        ASSERT(m_animatedPropertyType == m_animatedProperties[i]-&gt;animatedPropertyType());

You should add an inline function returning bool for this and then assert on that, ASSERT(propertyTypesConsistent()) or similar.

&gt; Source/WebCore/svg/SVGAnimatedTypeAnimator.h:74
&gt; +        AnimatedType* copy = new AnimatedType(*reinterpret_cast&lt;AnimatedType*&gt;(animatedType));
&gt; +        types.append(reinterpret_cast&lt;SVGGenericAnimatedType*&gt;(copy));

Why is this reinterpret_cast needed? Why is it safe?

There should be at least a comment.

&gt; Source/WebCore/svg/SVGAnimationElement.cpp:383
&gt; +        size_t propertiesSize = properties.size();
&gt; +        if (propertiesSize) {

Note that we want to make vectors use 32 bit indexes in the future so the general direction is away from size_t. But probably better use it here for consistency for now.

&gt; Source/WebCore/svg/SVGAnimationElement.cpp:480
&gt; -void SVGAnimationElement::animationStarted(SVGAnimatedProperty* property, SVGAnimatedType* type)
&gt; +void SVGAnimationElement::animationStarted(const Vector&lt;SVGAnimatedProperty*&gt;&amp; properties, const Vector&lt;SVGGenericAnimatedType*&gt;&amp; types)
&gt;  {
&gt; -    ASSERT(type);
&gt; -    notifyAnimatedPropertyAboutAnimationBeginEnd(property, type, targetElement(), attributeName());
&gt; +    notifyAnimatedPropertyAboutAnimationBeginEnd(properties, types, targetElement(), attributeName());

It might be good to add a comment explaining what exactly is the case with more than one property per element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581307</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-17 04:43:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 132457 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132457&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimateElement.cpp:245
&gt; &gt; +    for (size_t i = 0; i &lt; m_animatedProperties.size(); ++i)
&gt; &gt; +        ASSERT(m_animatedPropertyType == m_animatedProperties[i]-&gt;animatedPropertyType());
&gt; 
&gt; You should add an inline function returning bool for this and then assert on that, ASSERT(propertyTypesConsistent()) or similar.
Good idea.

&gt; &gt; Source/WebCore/svg/SVGAnimatedTypeAnimator.h:74
&gt; Why is this reinterpret_cast needed? Why is it safe?
SVGGenericAnimatedType isn&apos;t defined anywhere, we use it as generic variant type. This patch is a first step moving away from that, to avoid reinterpret_casts in future.

&gt; There should be at least a comment.
Ok.
 
&gt; &gt; Source/WebCore/svg/SVGAnimationElement.cpp:383
&gt; Note that we want to make vectors use 32 bit indexes in the future so the general direction is away from size_t. But probably better use it here for consistency for now.
Ok, good to know.

&gt; &gt; Source/WebCore/svg/SVGAnimationElement.cpp:480
&gt; It might be good to add a comment explaining what exactly is the case with more than one property per element.
Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581309</commentid>
    <comment_count>4</comment_count>
      <attachid>132457</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-17 04:57:27 -0700</bug_when>
    <thetext>Comment on attachment 132457
Patch

r=me since this is an existing architecture. The code that requires reinterpret_casts here absolutely need to be eliminated soon and replaced with properly designed types. The code is completely unsafe as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581310</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-17 05:00:44 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 132457 [details])
&gt; r=me since this is an existing architecture. The code that requires reinterpret_casts here absolutely need to be eliminated soon and replaced with properly designed types. The code is completely unsafe as is.

Thanks, I&apos;ll post the follow-up patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581312</commentid>
    <comment_count>6</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-17 05:14:01 -0700</bug_when>
    <thetext>Committed r111120: &lt;http://trac.webkit.org/changeset/111120&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132457</attachid>
            <date>2012-03-17 04:13:46 -0700</date>
            <delta_ts>2012-03-17 04:57:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81448-20120317121343.patch</filename>
            <type>text/plain</type>
            <size>61109</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGEzMWNiODljYjc3Nzcw
YWJkZGRhMDM5ZDA2MmIxYmNmY2YwZDJiMC4uM2MzYjA1ZmRiNDNhNTkzMmFhMzk5M2QxZGEyZjA4
MGFmNTdhODkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTAzLTE3ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIEVuYWJsZSBh
bmltVmFsIHN1cHBvcnQgZm9yIFNWR051bWJlck9wdGlvbmFsTnVtYmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ0OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBhbmltVmFsIHN1cHBvcnQg
Zm9yIFNWR051bWJlck9wdGlvbmFsTnVtYmVyLiBJdHMgYSBzcGVjaWFsIGNhc2UgYXMgdHdvIFNW
RyBET00gcHJvcGVydGllcworICAgICAgICBlZy4gc3RkRGV2aWF0aW9uWC9zdGREZXZpYXRpb25Z
IGFyZSBtYXBwZWQgdG8gYSBzaW5nbGUgWE1MIGF0dHJpYnV0ZTogU1ZHTmFtZXM6OnN0ZERldmlh
dGlvbkF0dHIuCisKKyAgICAgICAgV2hlbiBhbmltYXRpbmcgcHJvcGVydGllcyBsaWtlIHRoaXMs
IGJvdGggYW5pbVZhbCB3cmFwcGVycyBuZWVkIHRvIHJlZmxlY3QgY2hhbmdlcy4KKyAgICAgICAg
R2VuZXJhbGl6ZSB0aGUgY3VycmVudCBhbmltVmFsIGNvZGUgdG8gc3VwcG9ydCBtb3JlIHRoYW4g
b25lIFNWR0FuaW1hdGVkUHJvcGVydHkgdGhhdCBnZXRzCisgICAgICAgIGFuaW1hdGVkIGZvciBh
IHNpbmdsZSBhdHRyaWJ1dGVOYW1lLiBUaGlzIGFsbG93cyB1cyB0byByZW1vdmUgU1ZHQW5pbWF0
ZWRUeXBlOjp2YXJpYW50VmFsdWUvc2V0VmFyaWFudFZhbHVlCisgICAgICAgIHdoaWNoIHBhdmVz
IHRoZSB3YXkgZm9yIHJlbW92aW5nIFNWR0dlbmVyaWNBbmltYXRlZFR5cGUgZnJvbSBldmVuIG1v
cmUgcGxhY2VzLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZUVsZW1lbnQ6OlNWR0FuaW1hdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVFbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVFbGVtZW50Ojp0YXJnZXRFbGVtZW50V2lsbENoYW5nZSk6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVFbGVtZW50Lmg6CisgICAgICAgIChTVkdBbmltYXRlRWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21CYXNlVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9y
OjpyZXNldEFuaW1hdGVkVHlwZVRvQmFzZVZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZWRMZW5ndGguaDoKKyAgICAgICAgKFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IpOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21CYXNlVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0aExpc3RB
bmltYXRvcjo6cmVzZXRBbmltYXRlZFR5cGVUb0Jhc2VWYWx1ZSk6CisgICAgICAgICogc3ZnL1NW
R0FuaW1hdGVkTGVuZ3RoTGlzdC5oOgorICAgICAgICAoU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5p
bWF0b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZE51bWJlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tQmFzZVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1i
ZXJBbmltYXRvcjo6cmVzZXRBbmltYXRlZFR5cGVUb0Jhc2VWYWx1ZSk6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkTnVtYmVyLmg6CisgICAgICAgIChTVkdBbmltYXRlZE51bWJlckFuaW1hdG9y
KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tQmFzZVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0QW5pbWF0b3I6OnJlc2V0QW5pbWF0ZWRUeXBlVG9CYXNlVmFsdWUpOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuaDoKKyAgICAgICAgKFNWR0FuaW1hdGVkTnVt
YmVyTGlzdEFuaW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25h
bE51bWJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlck9wdGlvbmFs
TnVtYmVyQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21CYXNlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyQW5p
bWF0b3I6OnJlc2V0QW5pbWF0ZWRUeXBlVG9CYXNlVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcik6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y29uc3RydWN0RnJvbUJhc2VWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6cmVzZXRB
bmltYXRlZFR5cGVUb0Jhc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBz
dmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Lmg6CisgICAgICAgIChTVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3RBbmltYXRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OnN1cHBvcnRzQW5pbVZhbCk6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5oOgorICAgICAgICAoU1ZHQW5pbWF0ZWRUeXBlKToK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaDoKKyAgICAgICAgKFNWR0Fu
aW1hdGVkVHlwZUFuaW1hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZUFu
aW1hdG9yOjpjb25zdHJ1Y3RGcm9tQmFzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkVHlwZUFuaW1hdG9yOjpyZXNldEFuaW1hdGVkVHlwZVRvQmFzZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yOjpjdXJyZW50QmFzZVZhbHVlVmFy
aWFudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGVBbmltYXRvcjo6Y29uc3Ry
dWN0RnJvbU9uZUJhc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGVB
bmltYXRvcjo6cmVzZXRBbmltYXRlZFR5cGVGcm9tT25lQmFzZVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tVHdvQmFzZVZhbHVl
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGVBbmltYXRvcjo6cmVzZXRBbmlt
YXRlZFR5cGVGcm9tVHdvQmFzZVZhbHVlcyk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZE1hdGNoaW5nQW5pbWF0ZWRQcm9wZXJ0
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmFwcGx5QW5pbWF0
ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpub3RpZnlBbmltYXRlZFByb3BlcnR5QWJvdXRB
bmltYXRpb25CZWdpbkVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50
OjphbmltYXRpb25TdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1l
bnQ6OmFuaW1hdGlvbkVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1l
bnQ6OmFuaW1hdGVkUHJvcGVydGllc0ZvclR5cGUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRp
b25FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJv
cGVydHlUZWFyT2ZmLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmY6OmN1cnJlbnRCYXNlVmFsdWVWYXJpYW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjo6YW5pbWF0aW9uU3RhcnRlZCk6CisgICAgICAg
ICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oOgorICAgICAgICAoU1ZHQW5p
bWF0ZWRQcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHlUZWFy
T2ZmOjpjdXJyZW50QmFzZVZhbHVlVmFyaWFudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFByb3BlcnR5VGVhck9mZjo6YW5pbWF0aW9uU3RhcnRlZCk6CisgICAgICAgICogc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmOjpjdXJyZW50QmFzZVZhbHVl
VmFyaWFudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVh
ck9mZjo6YW5pbWF0aW9uU3RhcnRlZCk6CisKIDIwMTItMDItMDcgIFJvYmVydCBIb2dhbiAgPHJv
YmVydEB3ZWJraXQub3JnPgogCiAgICAgICAgIENTUyAyLjEgZmFpbHVyZTogZml4ZWQtdGFibGUt
bGF5b3V0LTAxMyBhbmQgZml4ZWQtdGFibGUtbGF5b3V0LTAxNSBmYWlsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAppbmRleCBkYjUyNDUxNGJmODZlYzFhZDY2NTk1NTIw
ODIwMjEzNzA2MmFmOTcwLi42ZjU4ZjIyZTFmNTg4YjM0NGIzNjMwMWU5NzY1ODJhNTBhYmYzYWMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKQEAgLTQxLDcgKzQx
LDYgQEAgU1ZHQW5pbWF0ZUVsZW1lbnQ6OlNWR0FuaW1hdGVFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MKICAgICAsIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5
cGUoQW5pbWF0ZWRTdHJpbmcpCiAgICAgLCBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZShSZWd1bGFy
UHJvcGVydHlWYWx1ZSkKICAgICAsIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZShSZWd1bGFyUHJvcGVy
dHlWYWx1ZSkKLSAgICAsIG1fYW5pbWF0ZWRQcm9wZXJ0eSgwKQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKFNWR05hbWVzOjphbmltYXRlVGFnKSB8fCBoYXNUYWdOYW1lKFNWR05hbWVzOjpzZXRU
YWcpIHx8IGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykgfHwgaGFzVGFnTmFt
ZShTVkdOYW1lczo6YW5pbWF0ZVRyYW5zZm9ybVRhZykpOwogfQpAQCAtMTkzLDggKzE5Miw5IEBA
IHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVy
Y2VudGFnZSwgdW5zaWduZWQgcmVwZWF0CiAgICAgLy8gaWYgYWZ0ZXIgY2FsY3VsYXRlQW5pbWF0
ZWRWYWx1ZSgpIHJhbiB0aGUgY2FjaGVkIHBvaW50ZXJzIGluIHRoZSBsaXN0IHByb3BlcnkgdGVh
cgogICAgIC8vIG9mZnMgd291bGQgcG9pbnQgbm93aGVyZSwgYW5kIHdlIGNvdWxkbid0IGNyZWF0
ZSBjb3BpZXMgb2YgdGhvc2UgdmFsdWVzIGFueW1vcmUsCiAgICAgLy8gd2hpbGUgZGV0YWNoaW5n
LiBUaGlzIGlzIGNvdmVyZWQgYnkgYXNzZXJ0aW9ucywgbW92aW5nIHRoaXMgZG93biB3b3VsZCBm
aXJlIHRoZW0uCi0gICAgaWYgKFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVydHkg
PSBhbmltYXRlZFByb3BlcnR5Rm9yVHlwZShtX2FuaW1hdG9yLT50eXBlKCkpKQotICAgICAgICBh
bmltYXRlZFByb3BlcnR5LT5hbmltYXRpb25WYWx1ZVdpbGxDaGFuZ2UoKTsKKyAgICBzaXplX3Qg
cHJvcGVydGllc1NpemUgPSBtX2FuaW1hdGVkUHJvcGVydGllcy5zaXplKCk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzU2l6ZTsgKytpKQorICAgICAgICBtX2FuaW1hdGVk
UHJvcGVydGllc1tpXS0+YW5pbWF0aW9uVmFsdWVXaWxsQ2hhbmdlKCk7CiAKICAgICBtX2FuaW1h
dG9yLT5jYWxjdWxhdGVBbmltYXRlZFZhbHVlKHBlcmNlbnRhZ2UsIHJlcGVhdCwgbV9mcm9tVHlw
ZSwgbV90b1R5cGUsIHJlc3VsdEFuaW1hdGlvbkVsZW1lbnQtPm1fYW5pbWF0ZWRUeXBlKTsKIH0K
QEAgLTIyOSwyMyArMjI5LDI3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNl
VmFsdWUoY29uc3QgU3RyaW5nJiBiYXNlU3RyaW5nKQogICAgIC8vIEluIHRoYXQgY2FzZSB3ZSBk
b24ndCBuZWVkIGFueSBiYXNlIHZhbHVlIHN0cmluZ3MsIGJ1dCBjYW4gZGlyZWN0bHkgb3BlcmF0
ZSBvbiB0aGVzZQogICAgIC8vIFNWRyBET00gcHJpbWl0aXZlcywgbGlrZSBTVkdMZW5ndGguCiAg
ICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IqIGFuaW1hdG9yID0gZW5zdXJlQW5pbWF0b3IoKTsK
LSAgICBtX2FuaW1hdGVkUHJvcGVydHkgPSBhbmltYXRlZFByb3BlcnR5Rm9yVHlwZShhbmltYXRv
ci0+dHlwZSgpKTsKLSAgICBpZiAobV9hbmltYXRlZFByb3BlcnR5KSB7Ci0gICAgICAgIGlmICgh
bV9hbmltYXRlZFR5cGUpIHsKLSAgICAgICAgICAgIG1fYW5pbWF0ZWRUeXBlID0gYW5pbWF0b3It
PmNvbnN0cnVjdEZyb21WYXJpYW50KG1fYW5pbWF0ZWRQcm9wZXJ0eS0+Y3VycmVudEJhc2VWYWx1
ZVZhcmlhbnQoYW5pbWF0b3ItPnR5cGUoKSkpOwotICAgICAgICAgICAgYW5pbWF0aW9uU3RhcnRl
ZChtX2FuaW1hdGVkUHJvcGVydHksIG1fYW5pbWF0ZWRUeXBlLmdldCgpKTsKLSAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBtX2FuaW1hdGVkVHlwZS0+c2V0VmFyaWFudFZhbHVlKG1fYW5pbWF0
ZWRQcm9wZXJ0eS0+Y3VycmVudEJhc2VWYWx1ZVZhcmlhbnQobV9hbmltYXRvci0+dHlwZSgpKSk7
Ci0gICAgICAgIEFTU0VSVChtX2FuaW1hdGVkUHJvcGVydHlUeXBlID09IGFuaW1hdG9yLT50eXBl
KCkpOwotICAgICAgICBBU1NFUlQobV9hbmltYXRlZFByb3BlcnR5VHlwZSA9PSBtX2FuaW1hdGVk
UHJvcGVydHktPmFuaW1hdGVkUHJvcGVydHlUeXBlKCkpOworICAgIEFTU0VSVChtX2FuaW1hdGVk
UHJvcGVydHlUeXBlID09IGFuaW1hdG9yLT50eXBlKCkpOworCisgICAgbV9hbmltYXRlZFByb3Bl
cnRpZXMgPSBhbmltYXRlZFByb3BlcnRpZXNGb3JUeXBlKGFuaW1hdG9yLT50eXBlKCkpOworICAg
IGlmIChtX2FuaW1hdGVkUHJvcGVydGllcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gTGVnYWN5
IGZhbGxiYWNrIGNvZGUgcGF0aCwgdXNlcyB0aGUgcGFzc2VkLWluIGJhc2VTdHJpbmcsIHdoaWNo
IGlzIGNhY2hlZC4KKyAgICAgICAgaWYgKCFtX2FuaW1hdGVkVHlwZSkKKyAgICAgICAgICAgIG1f
YW5pbWF0ZWRUeXBlID0gYW5pbWF0b3ItPmNvbnN0cnVjdEZyb21TdHJpbmcoYmFzZVN0cmluZyk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fYW5pbWF0ZWRUeXBlLT5zZXRWYWx1ZUFzU3Ry
aW5nKGF0dHJpYnV0ZU5hbWUoKSwgYmFzZVN0cmluZyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAoIW1fYW5pbWF0ZWRUeXBlKQotICAgICAgICBtX2FuaW1hdGVkVHlwZSA9IGFu
aW1hdG9yLT5jb25zdHJ1Y3RGcm9tU3RyaW5nKGJhc2VTdHJpbmcpOwotICAgIGVsc2UKLSAgICAg
ICAgbV9hbmltYXRlZFR5cGUtPnNldFZhbHVlQXNTdHJpbmcoYXR0cmlidXRlTmFtZSgpLCBiYXNl
U3RyaW5nKTsKLSAgICBBU1NFUlQobV9hbmltYXRlZFByb3BlcnR5VHlwZSA9PSBhbmltYXRvci0+
dHlwZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYW5pbWF0ZWRQcm9wZXJ0aWVz
LnNpemUoKTsgKytpKQorICAgICAgICBBU1NFUlQobV9hbmltYXRlZFByb3BlcnR5VHlwZSA9PSBt
X2FuaW1hdGVkUHJvcGVydGllc1tpXS0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGUoKSk7CisKKyAgICBp
ZiAoIW1fYW5pbWF0ZWRUeXBlKSB7CisgICAgICAgIFZlY3RvcjxTVkdHZW5lcmljQW5pbWF0ZWRU
eXBlKj4gdHlwZXM7CisgICAgICAgIG1fYW5pbWF0ZWRUeXBlID0gYW5pbWF0b3ItPmNvbnN0cnVj
dEZyb21CYXNlVmFsdWUobV9hbmltYXRlZFByb3BlcnRpZXMsIHR5cGVzKTsKKyAgICAgICAgYW5p
bWF0aW9uU3RhcnRlZChtX2FuaW1hdGVkUHJvcGVydGllcywgdHlwZXMpOworICAgIH0gZWxzZQor
ICAgICAgICBhbmltYXRvci0+cmVzZXRBbmltYXRlZFR5cGVUb0Jhc2VWYWx1ZShtX2FuaW1hdGVk
UHJvcGVydGllcywgbV9hbmltYXRlZFR5cGUuZ2V0KCkpOwogfQogCiB2b2lkIFNWR0FuaW1hdGVF
bGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCkBAIC0yNzEsOSArMjc1LDkgQEAgdm9pZCBT
VkdBbmltYXRlRWxlbWVudDo6dGFyZ2V0RWxlbWVudFdpbGxDaGFuZ2UoU1ZHRWxlbWVudCogY3Vy
cmVudFRhcmdldCwgU1ZHRWwKIHsKICAgICBTVkdTTUlMRWxlbWVudDo6dGFyZ2V0RWxlbWVudFdp
bGxDaGFuZ2UoY3VycmVudFRhcmdldCwgbmV3VGFyZ2V0KTsKIAotICAgIGlmIChtX2FuaW1hdGVk
UHJvcGVydHkpIHsKLSAgICAgICAgYW5pbWF0aW9uRW5kZWQobV9hbmltYXRlZFByb3BlcnR5KTsK
LSAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5ID0gMDsKKyAgICBpZiAoIW1fYW5pbWF0ZWRQcm9w
ZXJ0aWVzLmlzRW1wdHkoKSkgeworICAgICAgICBhbmltYXRpb25FbmRlZChtX2FuaW1hdGVkUHJv
cGVydGllcyk7CisgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0aWVzLmNsZWFyKCk7CiAgICAgfQog
CiAgICAgbV9hbmltYXRlZFR5cGUuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVF
bGVtZW50LmgKaW5kZXggNWU2ODk0ZTYwNDRkZmQzNDJkNTU1M2Q1NDhjMDg3YWFkNWJjYTFlZC4u
MjQ4OWI3MzI4YTk0MjQ1ZTgxYjY3ODJmMTI2ZDUzYjUzZGE4YTc4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX3RvVHlwZTsKICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBtX2FuaW1hdGVkVHlwZTsKIAotICAgIFNWR0FuaW1hdGVkUHJvcGVydHkqIG1fYW5pbWF0
ZWRQcm9wZXJ0eTsKKyAgICBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+IG1fYW5pbWF0ZWRQ
cm9wZXJ0aWVzOwogICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGVBbmltYXRvcj4gbV9hbmltYXRv
cjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0
aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwCmluZGV4IDRm
ZDFlNWI0OTRlMTM0M2I2NDViYWM2M2IyYjhkYWYyMjZlM2UzMzIuLjFkZTM3ZmQxZjAwMWQ3MjU2
OGNkNjJlODQ4YmUwMjkyNDYyNzFjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZExlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
TGVuZ3RoLmNwcApAQCAtNDcsMTAgKzQ3LDE0IEBAIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0CiAg
ICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTGVuZ3RoKG5ldyBTVkdMZW5ndGgobV9s
ZW5ndGhNb2RlLCBzdHJpbmcpKTsKIH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNW
R0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21WYXJpYW50KFNWR0dlbmVyaWNB
bmltYXRlZFR5cGUqIGFuaW1hdGVkVHlwZSkKK1Bhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBT
VkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tQmFzZVZhbHVlKGNvbnN0IFZl
Y3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMsIFZlY3RvcjxTVkdHZW5lcmlj
QW5pbWF0ZWRUeXBlKj4mIHR5cGVzKQogewotICAgIEFTU0VSVChhbmltYXRlZFR5cGUpOwotICAg
IHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUxlbmd0aChuZXcgU1ZHTGVuZ3RoKCpyZWlu
dGVycHJldF9jYXN0PFNWR0xlbmd0aCo+KGFuaW1hdGVkVHlwZSkpKTsKKyAgICByZXR1cm4gU1ZH
QW5pbWF0ZWRUeXBlOjpjcmVhdGVMZW5ndGgoY29uc3RydWN0RnJvbU9uZUJhc2VWYWx1ZTxTVkdM
ZW5ndGg+KHByb3BlcnRpZXMsIHR5cGVzKSk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWRMZW5ndGhB
bmltYXRvcjo6cmVzZXRBbmltYXRlZFR5cGVUb0Jhc2VWYWx1ZShjb25zdCBWZWN0b3I8U1ZHQW5p
bWF0ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVzLCBTVkdBbmltYXRlZFR5cGUqIHR5cGUpCit7Cisg
ICAgcmVzZXRBbmltYXRlZFR5cGVGcm9tT25lQmFzZVZhbHVlPFNWR0xlbmd0aD4ocHJvcGVydGll
cywgdHlwZSwgJlNWR0FuaW1hdGVkVHlwZTo6bGVuZ3RoKTsKIH0KIAogdm9pZCBTVkdBbmltYXRl
ZExlbmd0aEFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5n
JiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRMZW5ndGguaAppbmRleCAxYWJiMTgyMjhkNDc2YmY1YWRkODNhY2RkNDlmZjc5YWYz
ZTgyNDE0Li45MmQ0OGIxZjcwZTM0ZjZlNmEzOTNkMWM1YWQzODgxODQ1MWY1ZmI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaApAQCAtNDYsNyArNDYsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcigpIHsgfQogCiAgICAgdmly
dHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25z
dHJ1Y3RGcm9tVmFyaWFudChTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKik7CisgICAgdmlydHVhbCBQ
YXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbUJhc2VWYWx1ZShjb25zdCBW
ZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiwgVmVjdG9yPFNWR0dlbmVyaWNBbmltYXRlZFR5
cGUqPiYpOworICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1hdGVkVHlwZVRvQmFzZVZhbHVlKGNv
bnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mLCBTVkdBbmltYXRlZFR5cGUqKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNv
bnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiAgICAgdmly
dHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3Ry
aW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAKaW5kZXggYTlmYWE5M2E3MzAwOWYxMzgz
MGE4NWIwYzcyYjRiZThhNzdhYWQ4My4uODc5NDkwOWY2ODRlZTZjZWIyNmRkYjE4ZjlmYmM5MGU2
MmY3NTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3Ro
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5j
cHAKQEAgLTQwLDEwICs0MCwxNCBAQCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoYwogICAgIHJldHVy
biBhbmltYXRlVHlwZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6Y29uc3RydWN0RnJvbVZhcmlhbnQoU1ZH
R2VuZXJpY0FuaW1hdGVkVHlwZSogYW5pbWF0ZWRUeXBlKQorUGFzc093blB0cjxTVkdBbmltYXRl
ZFR5cGU+IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tQmFzZVZh
bHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMsIFZlY3Rv
cjxTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKj4mIHR5cGVzKQogewotICAgIEFTU0VSVChhbmltYXRl
ZFR5cGUpOwotICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUxlbmd0aExpc3QobmV3
IFNWR0xlbmd0aExpc3QoKnJlaW50ZXJwcmV0X2Nhc3Q8U1ZHTGVuZ3RoTGlzdCo+KGFuaW1hdGVk
VHlwZSkpKTsKKyAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVMZW5ndGhMaXN0KGNv
bnN0cnVjdEZyb21PbmVCYXNlVmFsdWU8U1ZHTGVuZ3RoTGlzdD4ocHJvcGVydGllcywgdHlwZXMp
KTsKK30KKwordm9pZCBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6cmVzZXRBbmltYXRl
ZFR5cGVUb0Jhc2VWYWx1ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9w
ZXJ0aWVzLCBTVkdBbmltYXRlZFR5cGUqIHR5cGUpCit7CisgICAgcmVzZXRBbmltYXRlZFR5cGVG
cm9tT25lQmFzZVZhbHVlPFNWR0xlbmd0aExpc3Q+KHByb3BlcnRpZXMsIHR5cGUsICZTVkdBbmlt
YXRlZFR5cGU6Omxlbmd0aExpc3QpOwogfQogCiB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFu
aW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkTGVuZ3RoTGlzdC5oCmluZGV4IGFkYzVlYzhkYWEzMTBhNTY2NmY0YzY1M2Y4MjgyMTBkNTc1
NWQ1YmMuLjZkZGYwNzA4ZmE1MGMwOWMzZDdlNTk1Yzk0NGE5YmI4NThhMDEwOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgKQEAgLTQ2LDggKzQ2LDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yKCkgeyB9
CiAgICAgCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tVmFyaWFudChTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKik7
Ci0gICAgCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0
RnJvbUJhc2VWYWx1ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiwgVmVjdG9y
PFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqPiYpOworICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1h
dGVkVHlwZVRvQmFzZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mLCBT
VkdBbmltYXRlZFR5cGUqKTsKKwogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9W
YWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5n
JiB0b1N0cmluZyk7CiAgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3Ry
aW5nKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJj
ZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWROdW1iZXIuY3BwCmluZGV4IDMxZmUzYmE4ODEzZmMxNGY2YzliMmFkNTYxYTdiMDM4ODQyMzk2
NjEuLjI4NmIzMTk1YjU4YzViZWNkNTUwYTE3ZDViNzE1Y2E2ODA5MjJjYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcApAQCAtNDMsMTAgKzQzLDE0IEBAIFBhc3NP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjb25zdHJ1
Y3RGcm9tU3RyaW5nKGNvbnN0CiAgICAgcmV0dXJuIGFuaW10ZWRUeXBlLnJlbGVhc2UoKTsKIH0K
IAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6
OmNvbnN0cnVjdEZyb21WYXJpYW50KFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqIGFuaW1hdGVkVHlw
ZSkKK1Bhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9y
Ojpjb25zdHJ1Y3RGcm9tQmFzZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5
Kj4mIHByb3BlcnRpZXMsIFZlY3RvcjxTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKj4mIHR5cGVzKQog
ewotICAgIEFTU0VSVChhbmltYXRlZFR5cGUpOwotICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6
OmNyZWF0ZU51bWJlcihuZXcgZmxvYXQoKnJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihhbmltYXRl
ZFR5cGUpKSk7CisgICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyKGNvbnN0
cnVjdEZyb21PbmVCYXNlVmFsdWU8ZmxvYXQ+KHByb3BlcnRpZXMsIHR5cGVzKSk7Cit9CisKK3Zv
aWQgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6cmVzZXRBbmltYXRlZFR5cGVUb0Jhc2VWYWx1
ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVzLCBTVkdBbmlt
YXRlZFR5cGUqIHR5cGUpCit7CisgICAgcmVzZXRBbmltYXRlZFR5cGVGcm9tT25lQmFzZVZhbHVl
PGZsb2F0Pihwcm9wZXJ0aWVzLCB0eXBlLCAmU1ZHQW5pbWF0ZWRUeXBlOjpudW1iZXIpOwogfQog
CiB2b2lkIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVl
cyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCmluZGV4IGQyYjI1NmU0ZTI4Mzk3NGM2
ZWFlNTFiOThlZTlhYTY2YzExNTU3MmMuLjU1NDljMDU1MGNiMmEwZGJhMTY3ZThhNjhlMWZkOGU3
YTkwZTBiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCkBAIC01MSw3
ICs1MSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVBbmltYXRlZE51bWJl
cihTVkdBbmltYXRpb25FbGVtZW50KiwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0
Q291bnQsIGZsb2F0JiBhbmltYXRlZE51bWJlciwgZmxvYXQgZnJvbU51bWJlciwgZmxvYXQgdG9O
dW1iZXIpOwogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3Ry
dWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tVmFyaWFudChTVkdHZW5lcmljQW5pbWF0ZWRUeXBl
Kik7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJv
bUJhc2VWYWx1ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiwgVmVjdG9yPFNW
R0dlbmVyaWNBbmltYXRlZFR5cGUqPiYpOworICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1hdGVk
VHlwZVRvQmFzZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mLCBTVkdB
bmltYXRlZFR5cGUqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1
ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0
b1N0cmluZyk7CiAgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYg
dG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5n
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAKaW5kZXgg
ODBlYmM4OGY5NmVkZjE3NWI1ODQ1YTVjODYxOThmZTA3ZDBjMTdiZC4uOTk5NTMzMzZmNjcxZmI4
OWU2ZGM1NDg4MWU2ZDM5YWVlYWU1Njg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkTnVtYmVyTGlzdC5jcHAKQEAgLTM5LDEwICszOSwxNCBAQCBQYXNzT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21T
dHJpbmcoYwogICAgIHJldHVybiBhbmltdGVkVHlwZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcjo6Y29uc3Ry
dWN0RnJvbVZhcmlhbnQoU1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSogYW5pbWF0ZWRUeXBlKQorUGFz
c093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpj
b25zdHJ1Y3RGcm9tQmFzZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4m
IHByb3BlcnRpZXMsIFZlY3RvcjxTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKj4mIHR5cGVzKQogewot
ICAgIEFTU0VSVChhbmltYXRlZFR5cGUpOwotICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNy
ZWF0ZU51bWJlckxpc3QobmV3IFNWR051bWJlckxpc3QoKnJlaW50ZXJwcmV0X2Nhc3Q8U1ZHTnVt
YmVyTGlzdCo+KGFuaW1hdGVkVHlwZSkpKTsKKyAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpj
cmVhdGVOdW1iZXJMaXN0KGNvbnN0cnVjdEZyb21PbmVCYXNlVmFsdWU8U1ZHTnVtYmVyTGlzdD4o
cHJvcGVydGllcywgdHlwZXMpKTsKK30KKwordm9pZCBTVkdBbmltYXRlZE51bWJlckxpc3RBbmlt
YXRvcjo6cmVzZXRBbmltYXRlZFR5cGVUb0Jhc2VWYWx1ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0
ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVzLCBTVkdBbmltYXRlZFR5cGUqIHR5cGUpCit7CisgICAg
cmVzZXRBbmltYXRlZFR5cGVGcm9tT25lQmFzZVZhbHVlPFNWR051bWJlckxpc3Q+KHByb3BlcnRp
ZXMsIHR5cGUsICZTVkdBbmltYXRlZFR5cGU6Om51bWJlckxpc3QpOwogfQogCiB2b2lkIFNWR0Fu
aW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29u
c3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oCmluZGV4IDFmMWJlNGEzZjE5MmU5MjU1
OTMxYmM2ZTIyNzIyY2Q3NGYyZDExNDIuLjgwMjJjYjg0YmI0Y2IwMTI2MjVhNmNkN2IwZTdmYTA3
OWM5NmUzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJl
ckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgK
QEAgLTQ2LDcgKzQ2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkTnVtYmVy
TGlzdEFuaW1hdG9yKCkgeyB9CiAgICAgCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tVmFyaWFudChTVkdHZW5l
cmljQW5pbWF0ZWRUeXBlKik7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4gY29uc3RydWN0RnJvbUJhc2VWYWx1ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0
eSo+JiwgVmVjdG9yPFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqPiYpOworICAgIHZpcnR1YWwgdm9p
ZCByZXNldEFuaW1hdGVkVHlwZVRvQmFzZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFBy
b3BlcnR5Kj4mLCBTVkdBbmltYXRlZFR5cGUqKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgY2Fs
Y3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUs
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZyb21TdHJp
bmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOwogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVG
cm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29u
c3QgU3RyaW5nJiBieVN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5jcHAKaW5kZXggMGRlZDI0YzViNzNmOTQxZGRm
Mzg3OTNkYzJhMjUyNDQyNmZkOTBjOC4uMGUzNjQ4NmY2ZTRjMTQwNzJlN2U2M2ViY2E1NDgyMjkw
YTQyZGJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVy
T3B0aW9uYWxOdW1iZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51
bWJlck9wdGlvbmFsTnVtYmVyLmNwcApAQCAtNDYsNiArNDYsMTYgQEAgUGFzc093blB0cjxTVkdB
bmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcjo6Y29u
c3RydWN0RnIKICAgICByZXR1cm4gYW5pbXRlZFR5cGUucmVsZWFzZSgpOwogfQogCitQYXNzT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1h
dG9yOjpjb25zdHJ1Y3RGcm9tQmFzZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3Bl
cnR5Kj4mIHByb3BlcnRpZXMsIFZlY3RvcjxTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKj4mIHR5cGVz
KQoreworICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlck9wdGlvbmFsTnVt
YmVyKGNvbnN0cnVjdEZyb21Ud29CYXNlVmFsdWVzPHBhaXI8ZmxvYXQsIGZsb2F0PiwgZmxvYXQ+
KHByb3BlcnRpZXMsIHR5cGVzKSk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25h
bE51bWJlckFuaW1hdG9yOjpyZXNldEFuaW1hdGVkVHlwZVRvQmFzZVZhbHVlKGNvbnN0IFZlY3Rv
cjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMsIFNWR0FuaW1hdGVkVHlwZSogdHlw
ZSkKK3sKKyAgICByZXNldEFuaW1hdGVkVHlwZUZyb21Ud29CYXNlVmFsdWVzPHBhaXI8ZmxvYXQs
IGZsb2F0PiwgZmxvYXQ+KHByb3BlcnRpZXMsIHR5cGUsICZTVkdBbmltYXRlZFR5cGU6Om51bWJl
ck9wdGlvbmFsTnVtYmVyKTsKK30KKwogdm9pZCBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVt
YmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7CiAgICAgQVNTRVJUKG1fY29udGV4
dEVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVt
YmVyT3B0aW9uYWxOdW1iZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJl
ck9wdGlvbmFsTnVtYmVyLmgKaW5kZXggNjQwODU0ZWI1ZjczNWQ5ZmM3M2JlMGRjMzQzNjRmNTIz
ZDA5ZWQxMy4uOGI1ZjAwOGZhOTAxN2Q2NmQ4MDBiMmEwNWE2YzJiZTZkZjlmMmNiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJl
ci5oCkBAIC0yNiw2ICsyNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0Fu
aW1hdGlvbkVsZW1lbnQ7CitjbGFzcyBTVkdHZW5lcmljQW5pbWF0ZWRUeXBlOwogCiBjbGFzcyBT
VkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyQW5pbWF0b3IgOiBwdWJsaWMgU1ZHQW5pbWF0
ZWRUeXBlQW5pbWF0b3IgewogICAgIApAQCAtMzYsNyArMzcsOSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcihTVkdBbmltYXRp
b25FbGVtZW50KiwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIGZsb2F0
JiBhbmltYXRlZE51bWJlciwgZmxvYXQgZnJvbU51bWJlciwgZmxvYXQgdG9OdW1iZXIpOwogICAg
IAogICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21T
dHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbUJhc2VWYWx1ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0
ZWRQcm9wZXJ0eSo+JiwgVmVjdG9yPFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqPiYpOworICAgIHZp
cnR1YWwgdm9pZCByZXNldEFuaW1hdGVkVHlwZVRvQmFzZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdB
bmltYXRlZFByb3BlcnR5Kj4mLCBTVkdBbmltYXRlZFR5cGUqKTsKKwogICAgIHZpcnR1YWwgdm9p
ZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21W
YWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJv
bVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiAgICAgdmlydHVhbCB2b2lkIGNhbGN1
bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5p
bWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAKaW5kZXggMjhj
Mjg2ZGFiYWIwMjQ4YjMxM2Y1ZGMzNjYyYTAxOTRiZDIyOGFhOC4uNzE4NzZhZTU1ZDQyNzVhMjk3
NzhkOWQyZWQyOWFlYWZmM2QxNzIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAKQEAgLTQ4LDEwICs0OCw5IEBAIFBhc3NPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y29uc3RydWN0
RnJvbVN0cmluCiAgICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6
Y29uc3RydWN0RnJvbVZhcmlhbnQoU1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSogYW5pbWF0ZWRUeXBl
KQorUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFu
aW1hdG9yOjpjb25zdHJ1Y3RGcm9tQmFzZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFBy
b3BlcnR5Kj4mIHByb3BlcnRpZXMsIFZlY3RvcjxTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKj4mIHR5
cGVzKQogewotICAgIEFTU0VSVChhbmltYXRlZFR5cGUpOwotICAgIHJldHVybiBTVkdBbmltYXRl
ZFR5cGU6OmNyZWF0ZVRyYW5zZm9ybUxpc3QobmV3IFNWR1RyYW5zZm9ybUxpc3QoKnJlaW50ZXJw
cmV0X2Nhc3Q8U1ZHVHJhbnNmb3JtTGlzdCo+KGFuaW1hdGVkVHlwZSkpKTsKKyAgICByZXR1cm4g
U1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVUcmFuc2Zvcm1MaXN0KGNvbnN0cnVjdEZyb21PbmVCYXNl
VmFsdWU8U1ZHVHJhbnNmb3JtTGlzdD4ocHJvcGVydGllcywgdHlwZXMpKTsKIH0KIAogaW5saW5l
IFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmlt
YXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCogYW5p
bWF0ZVRyYW5zZm9ybUVsZW1lbnQsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtNjAsNiArNTks
MTEgQEAgaW5saW5lIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3RBbmltYXRvcjo6Y29uc3RydWN0RnIKICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoU1ZHVHJhbnNmb3JtOjp0cmFu
c2Zvcm1UeXBlUHJlZml4Rm9yUGFyc2luZyhhbmltYXRlVHJhbnNmb3JtRWxlbWVudC0+dHJhbnNm
b3JtVHlwZSgpKSArIHN0cmluZyArICcpJyk7CiB9CiAKK3ZvaWQgU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0QW5pbWF0b3I6OnJlc2V0QW5pbWF0ZWRUeXBlVG9CYXNlVmFsdWUoY29uc3QgVmVjdG9y
PFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGllcywgU1ZHQW5pbWF0ZWRUeXBlKiB0eXBl
KQoreworICAgIHJlc2V0QW5pbWF0ZWRUeXBlRnJvbU9uZUJhc2VWYWx1ZTxTVkdUcmFuc2Zvcm1M
aXN0Pihwcm9wZXJ0aWVzLCB0eXBlLCAmU1ZHQW5pbWF0ZWRUeXBlOjp0cmFuc2Zvcm1MaXN0KTsK
K30KKwogdm9pZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y2FsY3VsYXRlRnJv
bUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0
b1N0cmluZykKIHsKICAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaAppbmRleCA1NzFkODgxNzAzNmY3
MDk1MWUyMDkxNzI0ZGYzNzkyZDk4M2M3NjRkLi44NWVmNDBlNjYxYmQ0ZDVhMGJmMmU3ZDgwMTBm
MmNmOGU2OWE5Zjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNm
b3JtTGlzdC5oCkBAIC00NSw3ICs0NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcigpIHsgfQogCiAgICAgdmlydHVhbCBQYXNzT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tVmFyaWFu
dChTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKik7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbUJhc2VWYWx1ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0
ZWRQcm9wZXJ0eSo+JiwgVmVjdG9yPFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqPiYpOworICAgIHZp
cnR1YWwgdm9pZCByZXNldEFuaW1hdGVkVHlwZVRvQmFzZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdB
bmltYXRlZFByb3BlcnR5Kj4mLCBTVkdBbmltYXRlZFR5cGUqKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21W
YWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJv
bVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiAgICAgdmlydHVhbCB2b2lkIGNhbGN1
bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlw
ZS5jcHAKaW5kZXggNTg5NTE0MDU0ZGFhMzdkNjA5MjcyNDVhZWIzZTdkMGZmNjAwYTBjMS4uNDUz
NDJlNmFhNDMzNjAyYjhlMmM1ODEwY2U3ZDdiNzhlMjAyYmViMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkVHlwZS5jcHAKQEAgLTQ1Nyw2ICs0NTcsNyBAQCBib29sIFNWR0FuaW1hdGVk
VHlwZTo6c3VwcG9ydHNBbmltVmFsKEFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUpCiAgICAgY2Fz
ZSBBbmltYXRlZExlbmd0aExpc3Q6CiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAgICBjYXNl
IEFuaW1hdGVkTnVtYmVyTGlzdDoKKyAgICBjYXNlIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1i
ZXI6CiAgICAgY2FzZSBBbmltYXRlZFRyYW5zZm9ybUxpc3Q6CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKQEAgLTQ2NCw3ICs0NjUsNiBAQCBib29sIFNWR0Fu
aW1hdGVkVHlwZTo6c3VwcG9ydHNBbmltVmFsKEFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUpCiAg
ICAgY2FzZSBBbmltYXRlZENvbG9yOgogICAgIGNhc2UgQW5pbWF0ZWRFbnVtZXJhdGlvbjoKICAg
ICBjYXNlIEFuaW1hdGVkSW50ZWdlcjoKLSAgICBjYXNlIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxO
dW1iZXI6CiAgICAgY2FzZSBBbmltYXRlZFBhdGg6CiAgICAgY2FzZSBBbmltYXRlZFBvaW50czoK
ICAgICBjYXNlIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbzoKQEAgLTQ3OCw0MyArNDc4LDYg
QEAgYm9vbCBTVkdBbmltYXRlZFR5cGU6OnN1cHBvcnRzQW5pbVZhbChBbmltYXRlZFByb3BlcnR5
VHlwZSB0eXBlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBTVkdBbmltYXRlZFR5cGU6
OnNldFZhcmlhbnRWYWx1ZShTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKiB0eXBlKQotewotICAgIC8v
IEZJWE1FOiBUaGlzIGxpc3RzIHRoZSBjdXJyZW50IHN0YXRlIG9mIG91ciBhbmltVmFsIHN1cHBv
cnQuCi0gICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgotICAg
ICAgICAqbV9kYXRhLmxlbmd0aCA9ICpyZWludGVycHJldF9jYXN0PFNWR0xlbmd0aCo+KHR5cGUp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBBbmltYXRlZExlbmd0aExpc3Q6Ci0gICAgICAg
ICptX2RhdGEubGVuZ3RoTGlzdCA9ICpyZWludGVycHJldF9jYXN0PFNWR0xlbmd0aExpc3QqPih0
eXBlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6Ci0gICAgICAg
ICptX2RhdGEubnVtYmVyID0gKnJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih0eXBlKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgQW5pbWF0ZWROdW1iZXJMaXN0OgotICAgICAgICAqbV9kYXRh
Lm51bWJlckxpc3QgPSAqcmVpbnRlcnByZXRfY2FzdDxTVkdOdW1iZXJMaXN0Kj4odHlwZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIEFuaW1hdGVkVHJhbnNmb3JtTGlzdDoKLSAgICAgICAg
Km1fZGF0YS50cmFuc2Zvcm1MaXN0ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8U1ZHVHJhbnNmb3JtTGlz
dCo+KHR5cGUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBBbmltYXRlZEFuZ2xlOgotICAg
IGNhc2UgQW5pbWF0ZWRCb29sZWFuOgotICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKLSAgICBjYXNl
IEFuaW1hdGVkRW51bWVyYXRpb246Ci0gICAgY2FzZSBBbmltYXRlZEludGVnZXI6Ci0gICAgY2Fz
ZSBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyOgotICAgIGNhc2UgQW5pbWF0ZWRQYXRoOgot
ICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6Ci0gICAgY2FzZSBBbmltYXRlZFByZXNlcnZlQXNwZWN0
UmF0aW86Ci0gICAgY2FzZSBBbmltYXRlZFJlY3Q6Ci0gICAgY2FzZSBBbmltYXRlZFN0cmluZzoK
LSAgICBjYXNlIEFuaW1hdGVkVW5rbm93bjoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKaW5kZXgg
NzdkYzZlM2RiMDVkMTJiMmRhYTBjOTI2YmQ5MjI3NmZkZGQ2NWRiYi4uY2I1N2E1MTgxZjdjNWYx
ZjgxODYzN2RiOTc4MDRhMmQ4ODFjNjJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5
cGUuaApAQCAtNzcsMTAgKzc3LDYgQEAgcHVibGljOgogICAgIFN0cmluZyYgc3RyaW5nKCk7CiAg
ICAgU1ZHVHJhbnNmb3JtTGlzdCYgdHJhbnNmb3JtTGlzdCgpOwogCi0gICAgLy8gVXNlIHdpdGgg
Y2FyZSwgdGhlIGFjdHVhbCB0eXBlIG9mIHRoZSBnZW5lcmljIGFuaW1hdGVkIG9iamVjdCBoYXMg
dG8gYmUgZXF1YWwgdG8gb3VyIHR5cGUoKS4KLSAgICB2b2lkIHNldFZhcmlhbnRWYWx1ZShTVkdH
ZW5lcmljQW5pbWF0ZWRUeXBlKik7Ci0gICAgU1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSogdmFyaWFu
dFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnZhcmlhbnQ7IH0KLQogICAgIFN0cmluZyB2
YWx1ZUFzU3RyaW5nKCk7CiAgICAgYm9vbCBzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBTdHJpbmcmKTsKICAgICAKQEAgLTExMyw3ICsxMDksNiBAQCBwcml2YXRl
OgogICAgICAgICBGbG9hdFJlY3QqIHJlY3Q7CiAgICAgICAgIFN0cmluZyogc3RyaW5nOwogICAg
ICAgICBTVkdUcmFuc2Zvcm1MaXN0KiB0cmFuc2Zvcm1MaXN0OwotICAgICAgICBTVkdHZW5lcmlj
QW5pbWF0ZWRUeXBlKiB2YXJpYW50OwogICAgIH0gbV9kYXRhOwogfTsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgKaW5kZXggNzQ4ODMyZjhhNzc0
M2NiZDVlZWM5ZTBiMTliYzkzMzcwY2YwMDZmNi4uMWM2N2NmM2FiMGZlMzI5MTUyZjY4NmRjZGZm
NjhiMzY3ZDYyZTg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
VHlwZUFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFu
aW1hdG9yLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNkZWZpbmUgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0
b3JfaAogCiAjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5Lmgi
CiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KIApAQCAtMzQsOSArMzUsMTAgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3Igewog
cHVibGljOgogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKCkgeyB9CiAgICAg
dmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhj
b25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgLy8gRklYTUU6IE1ha2UgdGhpcyBwdXJlIG9uY2UgYWxs
IHR5cGVzIGltcGxlbWVudCB0aGlzLiBJdHMgbmVlZGVkIGZvciBhbmltVmFsLCBhbmQgY3VycmVu
dGx5IG9ubHkgU1ZHTGVuZ3RoQW5pbWF0b3IgaW1wbGVtZW50cyB0aGlzLgotICAgIHZpcnR1YWwg
UGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21WYXJpYW50KFNWR0dlbmVy
aWNBbmltYXRlZFR5cGUqKSB7IHJldHVybiBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4oKTsg
fQotICAgIAorICAgIC8vIEZJWE1FOiBNYWtlIHRoZXNlIHR3byBwdXJlIG9uY2UgYWxsIHR5cGVz
IGltcGxlbWVudCB0aGlzLgorICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+
IGNvbnN0cnVjdEZyb21CYXNlVmFsdWUoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkq
PiYsIFZlY3RvcjxTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKj4mKSB7IHJldHVybiBQYXNzT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4oKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1hdGVkVHlw
ZVRvQmFzZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mLCBTVkdBbmlt
YXRlZFR5cGUqKSB7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1
ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0
b1N0cmluZykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMo
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0
cmluZykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0
IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LApAQCAtNTUsNiArNTcsNTkgQEAgcHJv
dGVjdGVkOgogICAgIHsKICAgICB9CiAKKyAgICBTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKiBjdXJy
ZW50QmFzZVZhbHVlVmFyaWFudChTVkdBbmltYXRlZFByb3BlcnR5KiBwcm9wZXJ0eSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7CisgICAgICAgIEFTU0VSVChwcm9wZXJ0eS0+YW5p
bWF0ZWRQcm9wZXJ0eVR5cGUoKSA9PSBtX3R5cGUpOworICAgICAgICByZXR1cm4gcHJvcGVydHkt
PmN1cnJlbnRCYXNlVmFsdWVWYXJpYW50KCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQW5pbWF0ZWRUeXBlPgorICAgIEFuaW1hdGVkVHlwZSogY29uc3RydWN0RnJvbU9uZUJhc2VW
YWx1ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVzLCBWZWN0
b3I8U1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSo+JiB0eXBlcykKKyAgICB7CisgICAgICAgIEFTU0VS
VChwcm9wZXJ0aWVzLnNpemUoKSA9PSAxKTsKKyAgICAgICAgU1ZHR2VuZXJpY0FuaW1hdGVkVHlw
ZSogYW5pbWF0ZWRUeXBlID0gY3VycmVudEJhc2VWYWx1ZVZhcmlhbnQocHJvcGVydGllc1swXSk7
CisKKyAgICAgICAgQW5pbWF0ZWRUeXBlKiBjb3B5ID0gbmV3IEFuaW1hdGVkVHlwZSgqcmVpbnRl
cnByZXRfY2FzdDxBbmltYXRlZFR5cGUqPihhbmltYXRlZFR5cGUpKTsKKyAgICAgICAgdHlwZXMu
YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8U1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSo+KGNvcHkpKTsK
KyAgICAgICAgcmV0dXJuIGNvcHk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5p
bWF0ZWRUeXBlPgorICAgIHZvaWQgcmVzZXRBbmltYXRlZFR5cGVGcm9tT25lQmFzZVZhbHVlKGNv
bnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMsIFNWR0FuaW1hdGVk
VHlwZSogdHlwZSwgQW5pbWF0ZWRUeXBlJiAoU1ZHQW5pbWF0ZWRUeXBlOjoqZ2V0dGVyKSgpKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKHR5cGUpOworICAgICAgICBBU1NFUlQodHlwZS0+dHlwZSgp
ID09IG1fdHlwZSk7CisgICAgICAgIEFTU0VSVChwcm9wZXJ0aWVzLnNpemUoKSA9PSAxKTsKKyAg
ICAgICAgKHR5cGUtPipnZXR0ZXIpKCkgPSAqcmVpbnRlcnByZXRfY2FzdDxBbmltYXRlZFR5cGUq
PihjdXJyZW50QmFzZVZhbHVlVmFyaWFudChwcm9wZXJ0aWVzWzBdKSk7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBlLCB0eXBlbmFtZSBDb250ZW50VHlwZT4KKyAg
ICBBbmltYXRlZFR5cGUqIGNvbnN0cnVjdEZyb21Ud29CYXNlVmFsdWVzKGNvbnN0IFZlY3RvcjxT
VkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMsIFZlY3RvcjxTVkdHZW5lcmljQW5pbWF0
ZWRUeXBlKj4mIHR5cGVzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHByb3BlcnRpZXMuc2l6ZSgp
ID09IDIpOworICAgICAgICBTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKiBmaXJzdFR5cGUgPSBjdXJy
ZW50QmFzZVZhbHVlVmFyaWFudChwcm9wZXJ0aWVzWzBdKTsKKyAgICAgICAgU1ZHR2VuZXJpY0Fu
aW1hdGVkVHlwZSogc2Vjb25kVHlwZSA9IGN1cnJlbnRCYXNlVmFsdWVWYXJpYW50KHByb3BlcnRp
ZXNbMV0pOworCisgICAgICAgIEFuaW1hdGVkVHlwZSogY29weSA9IG5ldyBBbmltYXRlZFR5cGUo
KnJlaW50ZXJwcmV0X2Nhc3Q8Q29udGVudFR5cGUqPihmaXJzdFR5cGUpLCAqcmVpbnRlcnByZXRf
Y2FzdDxDb250ZW50VHlwZSo+KHNlY29uZFR5cGUpKTsKKyAgICAgICAgdHlwZXMucmVzZXJ2ZUNh
cGFjaXR5KDIpOworICAgICAgICB0eXBlcy5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxTVkdHZW5l
cmljQW5pbWF0ZWRUeXBlKj4oJmNvcHktPmZpcnN0KSk7CisgICAgICAgIHR5cGVzLmFwcGVuZChy
ZWludGVycHJldF9jYXN0PFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqPigmY29weS0+c2Vjb25kKSk7
CisgICAgICAgIHJldHVybiBjb3B5OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFu
aW1hdGVkVHlwZSwgdHlwZW5hbWUgQ29udGVudFR5cGU+CisgICAgdm9pZCByZXNldEFuaW1hdGVk
VHlwZUZyb21Ud29CYXNlVmFsdWVzKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4m
IHByb3BlcnRpZXMsIFNWR0FuaW1hdGVkVHlwZSogdHlwZSwgQW5pbWF0ZWRUeXBlJiAoU1ZHQW5p
bWF0ZWRUeXBlOjoqZ2V0dGVyKSgpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHR5cGUpOworICAg
ICAgICBBU1NFUlQodHlwZS0+dHlwZSgpID09IG1fdHlwZSk7CisgICAgICAgIEFTU0VSVChwcm9w
ZXJ0aWVzLnNpemUoKSA9PSAyKTsKKworICAgICAgICBBbmltYXRlZFR5cGUmIGFuaW1hdGVkVHlw
ZVZhbHVlID0gKHR5cGUtPipnZXR0ZXIpKCk7CisgICAgICAgIGFuaW1hdGVkVHlwZVZhbHVlLmZp
cnN0ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Q29udGVudFR5cGUqPihjdXJyZW50QmFzZVZhbHVlVmFy
aWFudChwcm9wZXJ0aWVzWzBdKSk7CisgICAgICAgIGFuaW1hdGVkVHlwZVZhbHVlLnNlY29uZCA9
ICpyZWludGVycHJldF9jYXN0PENvbnRlbnRUeXBlKj4oY3VycmVudEJhc2VWYWx1ZVZhcmlhbnQo
cHJvcGVydGllc1sxXSkpOworICAgIH0KKwogICAgIEFuaW1hdGVkUHJvcGVydHlUeXBlIG1fdHlw
ZTsKICAgICBTVkdBbmltYXRpb25FbGVtZW50KiBtX2FuaW1hdGlvbkVsZW1lbnQ7CiAgICAgU1ZH
RWxlbWVudCogbV9jb250ZXh0RWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRp
b25FbGVtZW50LmNwcAppbmRleCBkOTVhZTUzZjY5NjE1MTFmYTY5MDg3NjhmOTRjNTNlMjQwMzYx
M2EwLi41OWQyNDFmYmVkOTU3ZTMxNTZlNjE2YTQxMTEzNGRjZmEzNDcwYzczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCkBAIC0zNDYsMjQgKzM0NiwyNCBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0VGFyZ2V0QXR0cmlidXRlQW5pbWF0ZWRDU1NWYWx1ZShT
VkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LAogICAgICAgICB0YXJnZXRFbGVtZW50LT5zZXROZWVk
c1N0eWxlUmVjYWxjKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSog
ZmluZE1hdGNoaW5nQW5pbWF0ZWRQcm9wZXJ0eShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5VHlwZSB0
eXBlKQorc3RhdGljIGlubGluZSBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+IGZpbmRNYXRj
aGluZ0FuaW1hdGVkUHJvcGVydGllcyhTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5VHlwZSB0eXBlKQog
ewogICAgIFZlY3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gPiBwcm9wZXJ0aWVzOwog
ICAgIHRhcmdldEVsZW1lbnQtPmxvY2FsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpLmFuaW1hdGVk
UHJvcGVydGllc0ZvckF0dHJpYnV0ZSh0YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBwcm9w
ZXJ0aWVzKTsKIAorICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGNhbiBnbyBhd2F5IG9uY2UgYWxs
IHR5cGVzIHN1cHBvcnQgYW5pbVZhbC4KKyAgICBpZiAoIVNWR0FuaW1hdGVkVHlwZTo6c3VwcG9y
dHNBbmltVmFsKHR5cGUpKQorICAgICAgICByZXR1cm4gVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVy
dHkqPigpOworCisgICAgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiByZXN1bHQ7CiAgICAg
c2l6ZV90IHByb3BlcnRpZXNTaXplID0gcHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzU2l6ZTsgKytpKSB7CiAgICAgICAgIFNWR0FuaW1hdGVk
UHJvcGVydHkqIHByb3BlcnR5ID0gcHJvcGVydGllc1tpXS5nZXQoKTsKLSAgICAgICAgaWYgKHBy
b3BlcnR5LT5hbmltYXRlZFByb3BlcnR5VHlwZSgpICE9IHR5cGUpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBjYW4gZ28gYXdheSBvbmNlIGFs
bCB0eXBlcyBzdXBwb3J0IGFuaW1WYWwuCi0gICAgICAgIGlmIChTVkdBbmltYXRlZFR5cGU6OnN1
cHBvcnRzQW5pbVZhbChwcm9wZXJ0eS0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGUoKSkpCi0gICAgICAg
ICAgICByZXR1cm4gcHJvcGVydHk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAocHJv
cGVydHktPmFuaW1hdGVkUHJvcGVydHlUeXBlKCkgPT0gdHlwZSkKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQocHJvcGVydHkpOwogICAgIH0KIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6YXBwbHlBbmltYXRlZFZhbHVl
KFNWR0FuaW1hdGlvbkVsZW1lbnQ6OlNob3VsZEFwcGx5QW5pbWF0aW9uIHNob3VsZEFwcGx5LCBT
VkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lLCBTVkdBbmltYXRlZFR5cGUqIGFuaW1hdGVkVHlwZSkKQEAgLTM3OCw5ICszNzgsMTIgQEAg
dm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjphcHBseUFuaW1hdGVkVmFsdWUoU1ZHQW5pbWF0aW9u
RWxlbWVudDo6U2hvdWxkQXBwbHlBbmkKICAgICAgICAgc2V0VGFyZ2V0QXR0cmlidXRlQW5pbWF0
ZWRDU1NWYWx1ZSh0YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZFR5cGUtPnZh
bHVlQXNTdHJpbmcoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXBwbHlYTUxBbmltYXRp
b246Ci0gICAgICAgIGlmIChTVkdBbmltYXRlZFByb3BlcnR5KiBwcm9wZXJ0eSA9IGZpbmRNYXRj
aGluZ0FuaW1hdGVkUHJvcGVydHkodGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWRUeXBlLT50eXBlKCkpKSB7Ci0gICAgICAgICAgICBwcm9wZXJ0eS0+YW5pbWF0aW9uVmFsdWVE
aWRDaGFuZ2UoKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBWZWN0b3I8U1ZHQW5pbWF0
ZWRQcm9wZXJ0eSo+IHByb3BlcnRpZXMgPSBmaW5kTWF0Y2hpbmdBbmltYXRlZFByb3BlcnRpZXMo
dGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRUeXBlLT50eXBlKCkpOworICAg
ICAgICBzaXplX3QgcHJvcGVydGllc1NpemUgPSBwcm9wZXJ0aWVzLnNpemUoKTsKKyAgICAgICAg
aWYgKHByb3BlcnRpZXNTaXplKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHByb3BlcnRpZXNTaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJvcGVydGllc1tpXS0+YW5p
bWF0aW9uVmFsdWVEaWRDaGFuZ2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIEZJWE1FOiBEZXByZWNhdGVkIGxlZ2FjeSBjb2RlIHBhdGggd2hpY2ggbXV0
YXRlcyB0aGUgRE9NLgpAQCAtNDMxLDU5ICs0MzQsNjYgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVt
ZW50OjpzZXRUYXJnZXRBdHRyaWJ1dGVBbmltYXRlZFZhbHVlKFNWR0FuaW1hdGVkVHlwZSogYW5p
bWEKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBub3RpZnlBbmltYXRlZFByb3BlcnR5
QWJvdXRBbmltYXRpb25CZWdpbkVuZChTVkdBbmltYXRlZFByb3BlcnR5KiBwcm9wZXJ0eSwgU1ZH
QW5pbWF0ZWRUeXBlKiB0eXBlLCBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorc3RhdGljIGlubGluZSB2b2lkIG5vdGlmeUFuaW1h
dGVkUHJvcGVydHlBYm91dEFuaW1hdGlvbkJlZ2luRW5kKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRl
ZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMsIGNvbnN0IFZlY3RvcjxTVkdHZW5lcmljQW5pbWF0ZWRU
eXBlKj4mIHR5cGVzLCBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKQogewotICAgIEFTU0VSVChwcm9wZXJ0eSk7CisgICAgQVNTRVJU
KCFwcm9wZXJ0aWVzLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKHR5cGVzLmlzRW1wdHkoKSB8fCBw
cm9wZXJ0aWVzLnNpemUoKSA9PSB0eXBlcy5zaXplKCkpOwogICAgIEFTU0VSVCh0YXJnZXRFbGVt
ZW50KTsKLSAgICBBU1NFUlQocHJvcGVydHktPmNvbnRleHRFbGVtZW50KCkgPT0gdGFyZ2V0RWxl
bWVudCk7Ci0gICAgQVNTRVJUKHByb3BlcnR5LT5hdHRyaWJ1dGVOYW1lKCkgPT0gYXR0cmlidXRl
TmFtZSk7Ci0gICAgaWYgKHR5cGUpCi0gICAgICAgIHByb3BlcnR5LT5hbmltYXRpb25TdGFydGVk
KHR5cGUpOwotICAgIGVsc2UgewotICAgICAgICAvLyBhbmltYXRpb25FbmRlZCgpIG5vdGlmaWVz
IHRoZSB0YXJnZXRFbGVtZW50IGFib3V0IHRoZSBhdHRyaWJ1dGUgY2hhbmdlIC0gdGFrZSBjYXJl
IG9mIGJsb2NraW5nCi0gICAgICAgIC8vIHVwZGF0ZXMgdG8gaW5zdGFuY2VzIG9mIGVsZW1lbnRz
LCBvdGhlcndpc2UgdGhleSB1c2UgdHJlZXMgZ290IHJlY2xvbmVkLCB1bm5jZXNzYXJ5LgotICAg
ICAgICBJbnN0YW5jZVVwZGF0ZUJsb2NrZXIgYmxvY2tlcih0YXJnZXRFbGVtZW50KTsKLSAgICAg
ICAgcHJvcGVydHktPmFuaW1hdGlvbkVuZGVkKCk7Ci0gICAgfQotCi0gICAgLy8gSWYgdGhlIHRh
cmdldCBlbGVtZW50IGhhcyBpbnN0YW5jZXMsIHVwZGF0ZSB0aGVtIGFzIHdlbGwsIHcvbyByZXF1
aXJpbmcgdGhlIDx1c2U+IHRyZWUgdG8gYmUgcmVidWlsdC4KLSAgICBjb25zdCBIYXNoU2V0PFNW
R0VsZW1lbnRJbnN0YW5jZSo+JiBpbnN0YW5jZXMgPSB0YXJnZXRFbGVtZW50LT5pbnN0YW5jZXNG
b3JFbGVtZW50KCk7Ci0gICAgY29uc3QgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPjo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gaW5zdGFuY2VzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxTVkdF
bGVtZW50SW5zdGFuY2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBpbnN0YW5jZXMuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFNWR0VsZW1lbnQqIHNoYWRvd1RyZWVFbGVtZW50
ID0gKCppdCktPnNoYWRvd1RyZWVFbGVtZW50KCk7Ci0gICAgICAgIGlmICghc2hhZG93VHJlZUVs
ZW1lbnQpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBTVkdBbmltYXRlZFByb3Bl
cnR5KiBwcm9wZXJ0eUluc3RhbmNlID0gZmluZE1hdGNoaW5nQW5pbWF0ZWRQcm9wZXJ0eShzaGFk
b3dUcmVlRWxlbWVudCwgYXR0cmlidXRlTmFtZSwgcHJvcGVydHktPmFuaW1hdGVkUHJvcGVydHlU
eXBlKCkpOwotICAgICAgICBpZiAoIXByb3BlcnR5SW5zdGFuY2UpCi0gICAgICAgICAgICBjb250
aW51ZTsKIAorICAgIHNpemVfdCBzaXplID0gcHJvcGVydGllcy5zaXplKCk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eSogcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldOworICAgICAgICBBU1NFUlQocHJvcGVydHktPmNv
bnRleHRFbGVtZW50KCkgPT0gdGFyZ2V0RWxlbWVudCk7CisgICAgICAgIEFTU0VSVChwcm9wZXJ0
eS0+YXR0cmlidXRlTmFtZSgpID09IGF0dHJpYnV0ZU5hbWUpOworICAgICAgICBTVkdHZW5lcmlj
QW5pbWF0ZWRUeXBlKiB0eXBlID0gdHlwZXMuaXNFbXB0eSgpID8gMCA6IHR5cGVzW2ldOwogICAg
ICAgICBpZiAodHlwZSkKLSAgICAgICAgICAgIHByb3BlcnR5SW5zdGFuY2UtPmFuaW1hdGlvblN0
YXJ0ZWQodHlwZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByb3BlcnR5SW5zdGFuY2Ut
PmFuaW1hdGlvbkVuZGVkKCk7CisgICAgICAgICAgICBwcm9wZXJ0eS0+YW5pbWF0aW9uU3RhcnRl
ZCh0eXBlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBJbnN0YW5jZVVwZGF0ZUJsb2Nr
ZXIgYmxvY2tlcih0YXJnZXRFbGVtZW50KTsKKyAgICAgICAgICAgIHByb3BlcnR5LT5hbmltYXRp
b25FbmRlZCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBlbGVtZW50
IGhhcyBpbnN0YW5jZXMsIHVwZGF0ZSB0aGVtIGFzIHdlbGwsIHcvbyByZXF1aXJpbmcgdGhlIDx1
c2U+IHRyZWUgdG8gYmUgcmVidWlsdC4KKyAgICAgICAgY29uc3QgSGFzaFNldDxTVkdFbGVtZW50
SW5zdGFuY2UqPiYgaW5zdGFuY2VzID0gdGFyZ2V0RWxlbWVudC0+aW5zdGFuY2VzRm9yRWxlbWVu
dCgpOworICAgICAgICBjb25zdCBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+Ojpjb25zdF9p
dGVyYXRvciBlbmQgPSBpbnN0YW5jZXMuZW5kKCk7CisgICAgICAgIGZvciAoSGFzaFNldDxTVkdF
bGVtZW50SW5zdGFuY2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBpbnN0YW5jZXMuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBTVkdFbGVtZW50KiBzaGFkb3dUcmVlRWxl
bWVudCA9ICgqaXQpLT5zaGFkb3dUcmVlRWxlbWVudCgpOworICAgICAgICAgICAgaWYgKCFzaGFk
b3dUcmVlRWxlbWVudCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
VmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiBwcm9wZXJ0aWVzSW5zdGFuY2UgPSBmaW5kTWF0
Y2hpbmdBbmltYXRlZFByb3BlcnRpZXMoc2hhZG93VHJlZUVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUs
IHByb3BlcnR5LT5hbmltYXRlZFByb3BlcnR5VHlwZSgpKTsKKworICAgICAgICAgICAgc2l6ZV90
IHByb3BlcnRpZXNJbnN0YW5jZVNpemUgPSBwcm9wZXJ0aWVzSW5zdGFuY2Uuc2l6ZSgpOworICAg
ICAgICAgICAgQVNTRVJUKHByb3BlcnRpZXNJbnN0YW5jZVNpemUgPT0gc2l6ZSk7CisgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnRpZXNJbnN0YW5jZVNpemU7ICsraSkg
eworICAgICAgICAgICAgICAgIGlmICh0eXBlKQorICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0
aWVzSW5zdGFuY2VbaV0tPmFuaW1hdGlvblN0YXJ0ZWQodHlwZSk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzSW5zdGFuY2VbaV0tPmFuaW1hdGlv
bkVuZGVkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgU1ZH
QW5pbWF0aW9uRWxlbWVudDo6YW5pbWF0aW9uU3RhcnRlZChTVkdBbmltYXRlZFByb3BlcnR5KiBw
cm9wZXJ0eSwgU1ZHQW5pbWF0ZWRUeXBlKiB0eXBlKQordm9pZCBTVkdBbmltYXRpb25FbGVtZW50
OjphbmltYXRpb25TdGFydGVkKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHBy
b3BlcnRpZXMsIGNvbnN0IFZlY3RvcjxTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKj4mIHR5cGVzKQog
ewotICAgIEFTU0VSVCh0eXBlKTsKLSAgICBub3RpZnlBbmltYXRlZFByb3BlcnR5QWJvdXRBbmlt
YXRpb25CZWdpbkVuZChwcm9wZXJ0eSwgdHlwZSwgdGFyZ2V0RWxlbWVudCgpLCBhdHRyaWJ1dGVO
YW1lKCkpOworICAgIG5vdGlmeUFuaW1hdGVkUHJvcGVydHlBYm91dEFuaW1hdGlvbkJlZ2luRW5k
KHByb3BlcnRpZXMsIHR5cGVzLCB0YXJnZXRFbGVtZW50KCksIGF0dHJpYnV0ZU5hbWUoKSk7CiB9
CiAKLXZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6YW5pbWF0aW9uRW5kZWQoU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSogcHJvcGVydHkpCit2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmFuaW1hdGlvbkVu
ZGVkKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMpCiB7Ci0g
ICAgbm90aWZ5QW5pbWF0ZWRQcm9wZXJ0eUFib3V0QW5pbWF0aW9uQmVnaW5FbmQocHJvcGVydHks
IDAsIHRhcmdldEVsZW1lbnQoKSwgYXR0cmlidXRlTmFtZSgpKTsKKyAgICBWZWN0b3I8U1ZHR2Vu
ZXJpY0FuaW1hdGVkVHlwZSo+IGVtcHR5VHlwZXM7CisgICAgbm90aWZ5QW5pbWF0ZWRQcm9wZXJ0
eUFib3V0QW5pbWF0aW9uQmVnaW5FbmQocHJvcGVydGllcywgZW1wdHlUeXBlcywgdGFyZ2V0RWxl
bWVudCgpLCBhdHRyaWJ1dGVOYW1lKCkpOwogfQogCi1TVkdBbmltYXRlZFByb3BlcnR5KiBTVkdB
bmltYXRpb25FbGVtZW50OjphbmltYXRlZFByb3BlcnR5Rm9yVHlwZShBbmltYXRlZFByb3BlcnR5
VHlwZSB0eXBlKQorVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiBTVkdBbmltYXRpb25FbGVt
ZW50OjphbmltYXRlZFByb3BlcnRpZXNGb3JUeXBlKEFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUp
CiB7CiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQo
KTsKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lID0gdGhpcy0+YXR0cmli
dXRlTmFtZSgpOwogICAgIFNob3VsZEFwcGx5QW5pbWF0aW9uIHNob3VsZEFwcGx5ID0gc2hvdWxk
QXBwbHlBbmltYXRpb24odGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSk7Ci0gICAgaWYgKHNo
b3VsZEFwcGx5ICE9IEFwcGx5WE1MQW5pbWF0aW9uKQotICAgICAgICByZXR1cm4gMDsKLSAgICBy
ZXR1cm4gZmluZE1hdGNoaW5nQW5pbWF0ZWRQcm9wZXJ0eSh0YXJnZXRFbGVtZW50LCBhdHRyaWJ1
dGVOYW1lLCB0eXBlKTsKKyAgICBpZiAoc2hvdWxkQXBwbHkgPT0gQXBwbHlYTUxBbmltYXRpb24p
CisgICAgICAgIHJldHVybiBmaW5kTWF0Y2hpbmdBbmltYXRlZFByb3BlcnRpZXModGFyZ2V0RWxl
bWVudCwgYXR0cmlidXRlTmFtZSwgdHlwZSk7CisgICAgcmV0dXJuIFZlY3RvcjxTVkdBbmltYXRl
ZFByb3BlcnR5Kj4oKTsKIH0KIAogU1ZHQW5pbWF0aW9uRWxlbWVudDo6U2hvdWxkQXBwbHlBbmlt
YXRpb24gU1ZHQW5pbWF0aW9uRWxlbWVudDo6c2hvdWxkQXBwbHlBbmltYXRpb24oU1ZHRWxlbWVu
dCogdGFyZ2V0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCmluZGV4IGYwODg3MjZkMmIzYWE1
MDRlNDE0NzVlYzYwNTFmMjc3ZTU2ZmU3ZTUuLmMxZDY1ZDNiMGI3OTJjZTUxMGQxNTg2NWIyODE2
ZTc1ZTYyY2Y0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaApA
QCAtMTAyLDEwICsxMDIsMTAgQEAgcHJvdGVjdGVkOgogCiAgICAgU3RyaW5nIHRhcmdldEF0dHJp
YnV0ZUJhc2VWYWx1ZSgpOwogICAgIHZvaWQgc2V0VGFyZ2V0QXR0cmlidXRlQW5pbWF0ZWRWYWx1
ZShTVkdBbmltYXRlZFR5cGUqKTsKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFBy
b3BlcnR5Rm9yVHlwZShBbmltYXRlZFByb3BlcnR5VHlwZSk7CisgICAgVmVjdG9yPFNWR0FuaW1h
dGVkUHJvcGVydHkqPiBhbmltYXRlZFByb3BlcnRpZXNGb3JUeXBlKEFuaW1hdGVkUHJvcGVydHlU
eXBlKTsKIAotICAgIHZvaWQgYW5pbWF0aW9uU3RhcnRlZChTVkdBbmltYXRlZFByb3BlcnR5Kiwg
U1ZHQW5pbWF0ZWRUeXBlKik7Ci0gICAgdm9pZCBhbmltYXRpb25FbmRlZChTVkdBbmltYXRlZFBy
b3BlcnR5Kik7CisgICAgdm9pZCBhbmltYXRpb25TdGFydGVkKGNvbnN0IFZlY3RvcjxTVkdBbmlt
YXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMsIGNvbnN0IFZlY3RvcjxTVkdHZW5lcmljQW5pbWF0
ZWRUeXBlKj4mIHR5cGVzKTsKKyAgICB2b2lkIGFuaW1hdGlvbkVuZGVkKGNvbnN0IFZlY3RvcjxT
VkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMpOwogCiAgICAgLy8gZnJvbSBTVkdTTUlM
RWxlbWVudAogICAgIHZpcnR1YWwgdm9pZCBzdGFydGVkQWN0aXZlSW50ZXJ2YWwoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3Bl
cnR5VGVhck9mZi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRM
aXN0UHJvcGVydHlUZWFyT2ZmLmgKaW5kZXggNTNiNmZhYzU4ZmMzMGEyYjE2YzhkM2M4YWEyNWY4
YTk1YjNiMDhlZC4uMGQ5ZmE5MWY2MTBkY2JiOWU4OGI0NjYyYmU5Nzc3NTk3YzQ2Njg3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJv
cGVydHlUZWFyT2ZmLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgKQEAgLTIyLDcgKzIyLDYgQEAKIAogI2lmIEVOQUJM
RShTVkcpCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgotI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkVHlwZS5oIgogI2luY2x1ZGUgIlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKICNpbmNs
dWRlICJTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCiAKQEAgLTc1LDIyICs3NCwyMCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhbmltVmFsKCktPnZhbHVlcygpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgU1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSogY3VycmVudEJhc2VWYWx1ZVZhcmlh
bnQoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgZXhwZWN0ZWRQcm9wZXJ0eVR5cGUpIGNvbnN0CisgICAg
dmlydHVhbCBTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKiBjdXJyZW50QmFzZVZhbHVlVmFyaWFudCgp
IGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlRfVU5VU0VEKGV4cGVjdGVkUHJvcGVydHlUeXBl
LCBhbmltYXRlZFByb3BlcnR5VHlwZSgpID09IGV4cGVjdGVkUHJvcGVydHlUeXBlKTsKICAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSo+KCZtX3Zh
bHVlcyk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvblN0YXJ0ZWQoU1ZHQW5p
bWF0ZWRUeXBlKiBhbmltYXRlZFR5cGUpCisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvblN0YXJ0
ZWQoU1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSogYW5pbWF0ZWRUeXBlKQogICAgIHsKICAgICAgICAg
QVNTRVJUKCFtX2lzQW5pbWF0aW5nKTsKICAgICAgICAgQVNTRVJUKGFuaW1hdGVkVHlwZSk7Ci0g
ICAgICAgIEFTU0VSVChhbmltYXRlZFR5cGUtPnR5cGUoKSA9PSBhbmltYXRlZFByb3BlcnR5VHlw
ZSgpKTsKICAgICAgICAgQVNTRVJUKG1fdmFsdWVzLnNpemUoKSA9PSBtX3dyYXBwZXJzLnNpemUo
KSk7CiAgICAgICAgIEFTU0VSVChtX2FuaW1hdGVkV3JhcHBlcnMuaXNFbXB0eSgpKTsKIAogICAg
ICAgICAvLyBTd2l0Y2ggdG8gbmV3IHBhc3NlZCBpbiB2YWx1ZSB0eXBlICYgbmV3IHdyYXBwZXJz
IGxpc3QuIFRoZSBuZXcgd3JhcHBlcnMgbGlzdCBtdXN0IGJlIGNyZWF0ZWQgZm9yIHRoZSBuZXcg
dmFsdWUuCi0gICAgICAgIFByb3BlcnR5VHlwZSogbmV3QW5pbVZhbCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UHJvcGVydHlUeXBlKj4oYW5pbWF0ZWRUeXBlLT52YXJpYW50VmFsdWUoKSk7CisgICAgICAg
IFByb3BlcnR5VHlwZSogbmV3QW5pbVZhbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UHJvcGVydHlUeXBl
Kj4oYW5pbWF0ZWRUeXBlKTsKICAgICAgICAgaWYgKCFuZXdBbmltVmFsLT5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICBtX2FuaW1hdGVkV3JhcHBlcnMuZmlsbCgwLCBuZXdBbmltVmFsLT5zaXplKCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5LmgKaW5kZXggYjdiYWE5Mzg5M2Q3N2QyNTY1ZDYxODEwNWE1NjQ1YTM0NTNhMWU1Yi4u
YjBkYjE5NmU2ZmFiNmUyZDc5OWRjMWEyODcxMDkxOTI1ZDBhM2U0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaApAQCAtMjgs
NyArMjgsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0FuaW1hdGVkVHlw
ZTsKIGNsYXNzIFNWR0VsZW1lbnQ7CiBjbGFzcyBTVkdHZW5lcmljQW5pbWF0ZWRUeXBlOwogCkBA
IC00OCwxMSArNDcsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQW5pbWF0ZWRM
aXN0VGVhck9mZigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YW5pbWF0aW9uU3RhcnRlZChTVkdBbmltYXRlZFR5cGUqKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGFuaW1hdGlvblN0YXJ0ZWQoU1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSopID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYW5pbWF0aW9uRW5kZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlv
blZhbHVlV2lsbENoYW5nZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uVmFsdWVE
aWRDaGFuZ2UoKSA9IDA7Ci0gICAgdmlydHVhbCBTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKiBjdXJy
ZW50QmFzZVZhbHVlVmFyaWFudChBbmltYXRlZFByb3BlcnR5VHlwZSkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgU1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSogY3VycmVudEJhc2VWYWx1ZVZhcmlhbnQo
KSBjb25zdCA9IDA7CiAKICAgICAvLyBDYWNoaW5nIGZhY2lsaXRpZXMuCiAgICAgdHlwZWRlZiBI
YXNoTWFwPFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiwgUmVmUHRyPFNWR0FuaW1hdGVk
UHJvcGVydHk+LCBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb25IYXNoLCBTVkdBbmltYXRl
ZFByb3BlcnR5RGVzY3JpcHRpb25IYXNoVHJhaXRzPiBDYWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZi5o
CmluZGV4IDY0OTRiMDczNGQ4ZWUxNTkzOTBkZGY5N2Y2MTAwNjFkMDY3YzE1NjMuLjRkYjc1MDFh
NjA0MzI4NDcwYWFjZjdhMGY0M2VjZmE0MzlmY2MyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaApA
QCAtMjIsNyArMjIsNiBAQAogCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdBbmltYXRl
ZFByb3BlcnR5LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlLmgiCiAjaW5jbHVkZSAiU1ZH
UHJvcGVydHlUZWFyT2ZmLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU5LDE4ICs1OCwx
NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2FuaW1WYWwtPnByb3BlcnR5UmVmZXJlbmNl
KCk7CiAgICAgfQogCi0gICAgdmlydHVhbCBTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKiBjdXJyZW50
QmFzZVZhbHVlVmFyaWFudChBbmltYXRlZFByb3BlcnR5VHlwZSBleHBlY3RlZFByb3BlcnR5VHlw
ZSkgY29uc3QKKyAgICB2aXJ0dWFsIFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqIGN1cnJlbnRCYXNl
VmFsdWVWYXJpYW50KCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoZXhwZWN0
ZWRQcm9wZXJ0eVR5cGUsIGFuaW1hdGVkUHJvcGVydHlUeXBlKCkgPT0gZXhwZWN0ZWRQcm9wZXJ0
eVR5cGUpOwogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTVkdHZW5lcmljQW5pbWF0
ZWRUeXBlKj4oJm1fcHJvcGVydHkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRp
b25TdGFydGVkKFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0ZWRUeXBlKQorICAgIHZpcnR1YWwgdm9p
ZCBhbmltYXRpb25TdGFydGVkKFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqIGFuaW1hdGVkVHlwZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9pc0FuaW1hdGluZyk7CiAgICAgICAgIEFTU0VSVChh
bmltYXRlZFR5cGUpOwotICAgICAgICBBU1NFUlQoYW5pbWF0ZWRUeXBlLT50eXBlKCkgPT0gYW5p
bWF0ZWRQcm9wZXJ0eVR5cGUoKSk7Ci0gICAgICAgIGFuaW1WYWwoKS0+c2V0VmFsdWUoKnJlaW50
ZXJwcmV0X2Nhc3Q8UHJvcGVydHlUeXBlKj4oYW5pbWF0ZWRUeXBlLT52YXJpYW50VmFsdWUoKSkp
OworICAgICAgICBhbmltVmFsKCktPnNldFZhbHVlKCpyZWludGVycHJldF9jYXN0PFByb3BlcnR5
VHlwZSo+KGFuaW1hdGVkVHlwZSkpOwogICAgICAgICBtX2lzQW5pbWF0aW5nID0gdHJ1ZTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oCmluZGV4IDNiNjA5YTdjYTU4NTZl
MDUxODM1MDA3NTA1MDc5ZGFjMjJhOTk0ODMuLjk4NDQ1NDU4ODNjYjZhNjBmMDIzZTYyNjY3MjFm
N2Q4MDlkMzk0MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaApAQCAtMjIsNyAr
MjIsNiBAQAogCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5
LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNjAsMTkgKzU5LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICptX2FuaW1hdGVk
UHJvcGVydHk7CiAgICAgfQogCi0gICAgdmlydHVhbCBTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKiBj
dXJyZW50QmFzZVZhbHVlVmFyaWFudChBbmltYXRlZFByb3BlcnR5VHlwZSBleHBlY3RlZFByb3Bl
cnR5VHlwZSkgY29uc3QKKyAgICB2aXJ0dWFsIFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqIGN1cnJl
bnRCYXNlVmFsdWVWYXJpYW50KCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQo
ZXhwZWN0ZWRQcm9wZXJ0eVR5cGUsIGFuaW1hdGVkUHJvcGVydHlUeXBlKCkgPT0gZXhwZWN0ZWRQ
cm9wZXJ0eVR5cGUpOwogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTVkdHZW5lcmlj
QW5pbWF0ZWRUeXBlKj4oJm1fcHJvcGVydHkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBh
bmltYXRpb25TdGFydGVkKFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0ZWRUeXBlKQorICAgIHZpcnR1
YWwgdm9pZCBhbmltYXRpb25TdGFydGVkKFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqIGFuaW1hdGVk
VHlwZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9pc0FuaW1hdGluZyk7CiAgICAgICAgIEFT
U0VSVCghbV9hbmltYXRlZFByb3BlcnR5KTsKICAgICAgICAgQVNTRVJUKGFuaW1hdGVkVHlwZSk7
Ci0gICAgICAgIEFTU0VSVChhbmltYXRlZFR5cGUtPnR5cGUoKSA9PSBhbmltYXRlZFByb3BlcnR5
VHlwZSgpKTsKLSAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5ID0gcmVpbnRlcnByZXRfY2FzdDxQ
cm9wZXJ0eVR5cGUqPihhbmltYXRlZFR5cGUtPnZhcmlhbnRWYWx1ZSgpKTsKKyAgICAgICAgbV9h
bmltYXRlZFByb3BlcnR5ID0gcmVpbnRlcnByZXRfY2FzdDxQcm9wZXJ0eVR5cGUqPihhbmltYXRl
ZFR5cGUpOwogICAgICAgICBtX2lzQW5pbWF0aW5nID0gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3
M2EwYmVhZTFiMzM0MzliNmI1YTgyZjhjMzcyNjI1ZjU2OWU4N2EwLi42YzYzYjE4NTUwZjBiZGNl
YWQxZTY3OTA1ZjA2Y2JmMDcwMDJmZWY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTItMDMt
MTcgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAg
RW5hYmxlIGFuaW1WYWwgc3VwcG9ydCBmb3IgU1ZHTnVtYmVyT3B0aW9uYWxOdW1iZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNDQ4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXh0ZW5kIFNWR051bWJl
ck9wdGlvbmFsTnVtYmVyIHRlc3RzIHRvIGNvdmVyIGFuaW1WYWwvYmFzZVZhbCBhdCB0aGUgc2Ft
ZSB0aW1lLgorCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251bWJl
cm9wdGlvbmFsbnVtYmVyLWFuaW1hdGlvbi0xLmpzOgorICAgICAgICAoc2FtcGxlMSk6CisgICAg
ICAgIChzYW1wbGUyKToKKyAgICAgICAgKHNhbXBsZTMpOgorICAgICAgICAqIHN2Zy9hbmltYXRp
b25zL3NjcmlwdC10ZXN0cy9zdmdudW1iZXJvcHRpb25hbG51bWJlci1hbmltYXRpb24tMi5qczoK
KyAgICAgICAgKHNhbXBsZTEpOgorICAgICAgICAoc2FtcGxlMik6CisgICAgICAgIChzYW1wbGUz
KToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvc3ZnbnVtYmVyb3B0aW9u
YWxudW1iZXItYW5pbWF0aW9uLTMuanM6CisgICAgICAgIChzYW1wbGUxKToKKyAgICAgICAgKHNh
bXBsZTIpOgorICAgICAgICAoc2FtcGxlMyk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvc2Ny
aXB0LXRlc3RzL3N2Z251bWJlcm9wdGlvbmFsbnVtYmVyLWFuaW1hdGlvbi00LmpzOgorICAgICAg
ICAoc2FtcGxlMSk6CisgICAgICAgIChzYW1wbGUyKToKKyAgICAgICAgKHNhbXBsZTMpOgorICAg
ICAgICAqIHN2Zy9hbmltYXRpb25zL3N2Z251bWJlcm9wdGlvbmFsbnVtYmVyLWFuaW1hdGlvbi0x
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zdmdudW1iZXJvcHRpb25h
bG51bWJlci1hbmltYXRpb24tMi1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2FuaW1hdGlv
bnMvc3ZnbnVtYmVyb3B0aW9uYWxudW1iZXItYW5pbWF0aW9uLTMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHN2Zy9hbmltYXRpb25zL3N2Z251bWJlcm9wdGlvbmFsbnVtYmVyLWFuaW1hdGlvbi00
LWV4cGVjdGVkLnR4dDoKKwogMjAxMi0wMy0xNSAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQ1NTIDIuMSBmYWlsdXJlOiBmaXhlZC10YWJsZS1sYXlvdXQtMDEz
IGFuZCBmaXhlZC10YWJsZS1sYXlvdXQtMDE1IGZhaWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdudW1iZXJvcHRpb25hbG51bWJlci1hbmlt
YXRpb24tMS5qcyBiL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdu
dW1iZXJvcHRpb25hbG51bWJlci1hbmltYXRpb24tMS5qcwppbmRleCBiN2RhZTAxOWM4YTkwMGNm
NDI1ZWI1MzFkOTIzNmUxY2VmNTU3ZWM5Li5lZGI2MzU4MjA1ZDY5NDk4NDhkZDFlYzQ0NzUxZGI0
MmI2MDhmY2ZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQt
dGVzdHMvc3ZnbnVtYmVyb3B0aW9uYWxudW1iZXItYW5pbWF0aW9uLTEuanMKKysrIGIvTGF5b3V0
VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251bWJlcm9wdGlvbmFsbnVtYmVy
LWFuaW1hdGlvbi0xLmpzCkBAIC00MiwxNiArNDIsMjUgQEAgZmVHYXVzc2lhbkJsdXIuYXBwZW5k
Q2hpbGQoYW5pbWF0ZSk7CiBmdW5jdGlvbiBzYW1wbGUxKCkgewogICAgIHNob3VsZEJlQ2xvc2VF
bm91Z2goImZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblguYW5pbVZhbCIsICI1Iik7CiAgICAg
c2hvdWxkQmVDbG9zZUVub3VnaCgiZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWS5hbmltVmFs
IiwgIjUiKTsKKworICAgIHNob3VsZEJlKCJmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25YLmJh
c2VWYWwiLCAiNSIpOworICAgIHNob3VsZEJlKCJmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25Z
LmJhc2VWYWwiLCAiNSIpOwogfQogCiBmdW5jdGlvbiBzYW1wbGUyKCkgewogICAgIHNob3VsZEJl
Q2xvc2VFbm91Z2goImZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblguYW5pbVZhbCIsICIyMi41
Iik7CiAgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgiZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9u
WS5hbmltVmFsIiwgIjcuNSIpOworCisgICAgc2hvdWxkQmUoImZlR2F1c3NpYW5CbHVyLnN0ZERl
dmlhdGlvblguYmFzZVZhbCIsICI1Iik7CisgICAgc2hvdWxkQmUoImZlR2F1c3NpYW5CbHVyLnN0
ZERldmlhdGlvblkuYmFzZVZhbCIsICI1Iik7CiB9CiAKIGZ1bmN0aW9uIHNhbXBsZTMoKSB7CiAg
ICAgc2hvdWxkQmVDbG9zZUVub3VnaCgiZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWC5hbmlt
VmFsIiwgIjQwIik7CiAgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgiZmVHYXVzc2lhbkJsdXIuc3Rk
RGV2aWF0aW9uWS5hbmltVmFsIiwgIjEwIik7CisKKyAgICBzaG91bGRCZSgiZmVHYXVzc2lhbkJs
dXIuc3RkRGV2aWF0aW9uWC5iYXNlVmFsIiwgIjUiKTsKKyAgICBzaG91bGRCZSgiZmVHYXVzc2lh
bkJsdXIuc3RkRGV2aWF0aW9uWS5iYXNlVmFsIiwgIjUiKTsKIH0KIAogZnVuY3Rpb24gZXhlY3V0
ZVRlc3QoKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQt
dGVzdHMvc3ZnbnVtYmVyb3B0aW9uYWxudW1iZXItYW5pbWF0aW9uLTIuanMgYi9MYXlvdXRUZXN0
cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvc3ZnbnVtYmVyb3B0aW9uYWxudW1iZXItYW5p
bWF0aW9uLTIuanMKaW5kZXggM2FlODJiMjIzYWVlZjY2ZWQ4NWRlM2YwMmUzMTRjOTAyYmEyZDYx
My4uMjg5YWRmY2E3OTc2ZDA1ZWRhNGUzZGIzMzg1YmIyYmI4NWVhMDliMCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251bWJlcm9wdGlvbmFs
bnVtYmVyLWFuaW1hdGlvbi0yLmpzCisrKyBiL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3Nj
cmlwdC10ZXN0cy9zdmdudW1iZXJvcHRpb25hbG51bWJlci1hbmltYXRpb24tMi5qcwpAQCAtNDIs
MTYgKzQyLDI1IEBAIGZlR2F1c3NpYW5CbHVyLmFwcGVuZENoaWxkKGFuaW1hdGUpOwogZnVuY3Rp
b24gc2FtcGxlMSgpIHsKICAgICBzaG91bGRCZUNsb3NlRW5vdWdoKCJmZUdhdXNzaWFuQmx1ci5z
dGREZXZpYXRpb25YLmFuaW1WYWwiLCAiNSIpOwogICAgIHNob3VsZEJlQ2xvc2VFbm91Z2goImZl
R2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblkuYW5pbVZhbCIsICI1Iik7CisKKyAgICBzaG91bGRC
ZSgiZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWC5iYXNlVmFsIiwgIjUiKTsKKyAgICBzaG91
bGRCZSgiZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWS5iYXNlVmFsIiwgIjUiKTsKIH0KIAog
ZnVuY3Rpb24gc2FtcGxlMigpIHsKICAgICBzaG91bGRCZUNsb3NlRW5vdWdoKCJmZUdhdXNzaWFu
Qmx1ci5zdGREZXZpYXRpb25YLmFuaW1WYWwiLCAiMjIuNSIpOwogICAgIHNob3VsZEJlQ2xvc2VF
bm91Z2goImZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblkuYW5pbVZhbCIsICI3LjUiKTsKKwor
ICAgIHNob3VsZEJlKCJmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25YLmJhc2VWYWwiLCAiNSIp
OworICAgIHNob3VsZEJlKCJmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25ZLmJhc2VWYWwiLCAi
NSIpOwogfQogCiBmdW5jdGlvbiBzYW1wbGUzKCkgewogICAgIHNob3VsZEJlQ2xvc2VFbm91Z2go
ImZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblguYW5pbVZhbCIsICI0MCIpOwogICAgIHNob3Vs
ZEJlQ2xvc2VFbm91Z2goImZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblkuYW5pbVZhbCIsICIx
MCIpOworCisgICAgc2hvdWxkQmUoImZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblguYmFzZVZh
bCIsICI1Iik7CisgICAgc2hvdWxkQmUoImZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblkuYmFz
ZVZhbCIsICI1Iik7CiB9CiAKIGZ1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgewpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251bWJlcm9wdGlvbmFs
bnVtYmVyLWFuaW1hdGlvbi0zLmpzIGIvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0
LXRlc3RzL3N2Z251bWJlcm9wdGlvbmFsbnVtYmVyLWFuaW1hdGlvbi0zLmpzCmluZGV4IDZlYzQ2
MGQxNDM0NjU1MzNlODgwZmZjZDc3N2Y3YTliMDA0ZmNlY2MuLjIxY2YyMzBmZGU2Y2VhZDc3ODA4
OTU1YWFlM2Q5Yjg5YjJjZDM1YjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9hbmltYXRp
b25zL3NjcmlwdC10ZXN0cy9zdmdudW1iZXJvcHRpb25hbG51bWJlci1hbmltYXRpb24tMy5qcwor
KysgYi9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvc3ZnbnVtYmVyb3B0
aW9uYWxudW1iZXItYW5pbWF0aW9uLTMuanMKQEAgLTQyLDE2ICs0MiwyNSBAQCBmZUdhdXNzaWFu
Qmx1ci5hcHBlbmRDaGlsZChhbmltYXRlKTsKIGZ1bmN0aW9uIHNhbXBsZTEoKSB7CiAgICAgc2hv
dWxkQmVDbG9zZUVub3VnaCgiZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWC5hbmltVmFsIiwg
IjQwIik7CiAgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgiZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0
aW9uWS5hbmltVmFsIiwgIjEwIik7CisKKyAgICBzaG91bGRCZSgiZmVHYXVzc2lhbkJsdXIuc3Rk
RGV2aWF0aW9uWC5iYXNlVmFsIiwgIjQwIik7CisgICAgc2hvdWxkQmUoImZlR2F1c3NpYW5CbHVy
LnN0ZERldmlhdGlvblkuYmFzZVZhbCIsICIxMCIpOwogfQogCiBmdW5jdGlvbiBzYW1wbGUyKCkg
ewogICAgIHNob3VsZEJlQ2xvc2VFbm91Z2goImZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblgu
YW5pbVZhbCIsICIyMi41Iik7CiAgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgiZmVHYXVzc2lhbkJs
dXIuc3RkRGV2aWF0aW9uWS5hbmltVmFsIiwgIjcuNSIpOworCisgICAgc2hvdWxkQmUoImZlR2F1
c3NpYW5CbHVyLnN0ZERldmlhdGlvblguYmFzZVZhbCIsICI0MCIpOworICAgIHNob3VsZEJlKCJm
ZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25ZLmJhc2VWYWwiLCAiMTAiKTsKIH0KIAogZnVuY3Rp
b24gc2FtcGxlMygpIHsKICAgICBzaG91bGRCZUNsb3NlRW5vdWdoKCJmZUdhdXNzaWFuQmx1ci5z
dGREZXZpYXRpb25YLmFuaW1WYWwiLCAiNSIpOwogICAgIHNob3VsZEJlQ2xvc2VFbm91Z2goImZl
R2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblkuYW5pbVZhbCIsICI1Iik7CisKKyAgICBzaG91bGRC
ZSgiZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWC5iYXNlVmFsIiwgIjQwIik7CisgICAgc2hv
dWxkQmUoImZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblkuYmFzZVZhbCIsICIxMCIpOwogfQog
CiBmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9h
bmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdudW1iZXJvcHRpb25hbG51bWJlci1hbmltYXRpb24t
NC5qcyBiL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdudW1iZXJv
cHRpb25hbG51bWJlci1hbmltYXRpb24tNC5qcwppbmRleCA4ZjhiMjU2YTQ4MmM0OGRlODE3ODI4
ZjVmOThjMGUxZDdmMWMwMjVmLi5jOGExYjIzOGMwMTgwNTY5OTA3MDUxMmIzMzU0NTZiMmEwMTE5
MDJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMv
c3ZnbnVtYmVyb3B0aW9uYWxudW1iZXItYW5pbWF0aW9uLTQuanMKKysrIGIvTGF5b3V0VGVzdHMv
c3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251bWJlcm9wdGlvbmFsbnVtYmVyLWFuaW1h
dGlvbi00LmpzCkBAIC00MiwxNiArNDIsMjUgQEAgZmVHYXVzc2lhbkJsdXIuYXBwZW5kQ2hpbGQo
YW5pbWF0ZSk7CiBmdW5jdGlvbiBzYW1wbGUxKCkgewogICAgIHNob3VsZEJlQ2xvc2VFbm91Z2go
ImZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblguYW5pbVZhbCIsICI1Iik7CiAgICAgc2hvdWxk
QmVDbG9zZUVub3VnaCgiZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWS5hbmltVmFsIiwgIjUi
KTsKKworICAgIHNob3VsZEJlKCJmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25YLmJhc2VWYWwi
LCAiNSIpOworICAgIHNob3VsZEJlKCJmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25ZLmJhc2VW
YWwiLCAiNSIpOwogfQogCiBmdW5jdGlvbiBzYW1wbGUyKCkgewogICAgIHNob3VsZEJlQ2xvc2VF
bm91Z2goImZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblguYW5pbVZhbCIsICIxMCIpOwogICAg
IHNob3VsZEJlQ2xvc2VFbm91Z2goImZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblkuYW5pbVZh
bCIsICIxMCIpOworCisgICAgc2hvdWxkQmUoImZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblgu
YmFzZVZhbCIsICI1Iik7CisgICAgc2hvdWxkQmUoImZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlv
blkuYmFzZVZhbCIsICI1Iik7CiB9CiAKIGZ1bmN0aW9uIHNhbXBsZTMoKSB7CiAgICAgc2hvdWxk
QmVDbG9zZUVub3VnaCgiZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWC5hbmltVmFsIiwgIjE1
Iik7CiAgICAgc2hvdWxkQmVDbG9zZUVub3VnaCgiZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9u
WS5hbmltVmFsIiwgIjE1Iik7CisKKyAgICBzaG91bGRCZSgiZmVHYXVzc2lhbkJsdXIuc3RkRGV2
aWF0aW9uWC5iYXNlVmFsIiwgIjUiKTsKKyAgICBzaG91bGRCZSgiZmVHYXVzc2lhbkJsdXIuc3Rk
RGV2aWF0aW9uWS5iYXNlVmFsIiwgIjUiKTsKIH0KIAogZnVuY3Rpb24gZXhlY3V0ZVRlc3QoKSB7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXJvcHRpb25h
bG51bWJlci1hbmltYXRpb24tMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0
aW9ucy9zdmdudW1iZXJvcHRpb25hbG51bWJlci1hbmltYXRpb24tMS1leHBlY3RlZC50eHQKaW5k
ZXggZDc4YjBiYjgzYWRlNjM2MzRiOTZkYzEyYjJjNTZjNmU3OGE0MjhlNC4uYmM5M2U3ODMzM2Mx
NzM4ZjZjZDg3YzMzM2JhMGE3MmRlNzNlYWIyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Zn
L2FuaW1hdGlvbnMvc3ZnbnVtYmVyb3B0aW9uYWxudW1iZXItYW5pbWF0aW9uLTEtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z251bWJlcm9wdGlvbmFsbnVt
YmVyLWFuaW1hdGlvbi0xLWV4cGVjdGVkLnR4dApAQCAtNywxMiArNywyMCBAQCBPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURQogCiBQQVNTIGZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblguYW5pbVZh
bCBpcyA1CiBQQVNTIGZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblkuYW5pbVZhbCBpcyA1CitQ
QVNTIGZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblguYmFzZVZhbCBpcyA1CitQQVNTIGZlR2F1
c3NpYW5CbHVyLnN0ZERldmlhdGlvblkuYmFzZVZhbCBpcyA1CiBQQVNTIGZlR2F1c3NpYW5CbHVy
LnN0ZERldmlhdGlvblguYW5pbVZhbCBpcyAyMi41CiBQQVNTIGZlR2F1c3NpYW5CbHVyLnN0ZERl
dmlhdGlvblkuYW5pbVZhbCBpcyA3LjUKK1BBU1MgZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9u
WC5iYXNlVmFsIGlzIDUKK1BBU1MgZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWS5iYXNlVmFs
IGlzIDUKIFBBU1MgZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWC5hbmltVmFsIGlzIDQwCiBQ
QVNTIGZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblkuYW5pbVZhbCBpcyAxMAorUEFTUyBmZUdh
dXNzaWFuQmx1ci5zdGREZXZpYXRpb25YLmJhc2VWYWwgaXMgNQorUEFTUyBmZUdhdXNzaWFuQmx1
ci5zdGREZXZpYXRpb25ZLmJhc2VWYWwgaXMgNQogUEFTUyBmZUdhdXNzaWFuQmx1ci5zdGREZXZp
YXRpb25YLmFuaW1WYWwgaXMgNQogUEFTUyBmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25ZLmFu
aW1WYWwgaXMgNQorUEFTUyBmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25YLmJhc2VWYWwgaXMg
NQorUEFTUyBmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25ZLmJhc2VWYWwgaXMgNQogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXJvcHRpb25hbG51bWJlci1hbmltYXRp
b24tMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXJv
cHRpb25hbG51bWJlci1hbmltYXRpb24tMi1leHBlY3RlZC50eHQKaW5kZXggNDE3Y2RiNWE3OTdk
ZjM2N2Q1ZTM4M2FiNDVmNTJjZTc0Y2RhNGU4MC4uMzk5N2ZiY2FmOWQyYjNkZTk1MTM3ZmExMjg2
YjhiMjM4ZTg1NTA4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3Zn
bnVtYmVyb3B0aW9uYWxudW1iZXItYW5pbWF0aW9uLTItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z251bWJlcm9wdGlvbmFsbnVtYmVyLWFuaW1hdGlvbi0y
LWV4cGVjdGVkLnR4dApAQCAtNywxMiArNywyMCBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQog
CiBQQVNTIGZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblguYW5pbVZhbCBpcyA1CiBQQVNTIGZl
R2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblkuYW5pbVZhbCBpcyA1CitQQVNTIGZlR2F1c3NpYW5C
bHVyLnN0ZERldmlhdGlvblguYmFzZVZhbCBpcyA1CitQQVNTIGZlR2F1c3NpYW5CbHVyLnN0ZERl
dmlhdGlvblkuYmFzZVZhbCBpcyA1CiBQQVNTIGZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblgu
YW5pbVZhbCBpcyAyMi41CiBQQVNTIGZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblkuYW5pbVZh
bCBpcyA3LjUKK1BBU1MgZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWC5iYXNlVmFsIGlzIDUK
K1BBU1MgZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWS5iYXNlVmFsIGlzIDUKIFBBU1MgZmVH
YXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWC5hbmltVmFsIGlzIDQwCiBQQVNTIGZlR2F1c3NpYW5C
bHVyLnN0ZERldmlhdGlvblkuYW5pbVZhbCBpcyAxMAorUEFTUyBmZUdhdXNzaWFuQmx1ci5zdGRE
ZXZpYXRpb25YLmJhc2VWYWwgaXMgNQorUEFTUyBmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25Z
LmJhc2VWYWwgaXMgNQogUEFTUyBmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25YLmFuaW1WYWwg
aXMgNQogUEFTUyBmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25ZLmFuaW1WYWwgaXMgNQorUEFT
UyBmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25YLmJhc2VWYWwgaXMgNQorUEFTUyBmZUdhdXNz
aWFuQmx1ci5zdGREZXZpYXRpb25ZLmJhc2VWYWwgaXMgNQogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcv
YW5pbWF0aW9ucy9zdmdudW1iZXJvcHRpb25hbG51bWJlci1hbmltYXRpb24tMy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXJvcHRpb25hbG51bWJlci1h
bmltYXRpb24tMy1leHBlY3RlZC50eHQKaW5kZXggZmU2OTBhYjhmNTM5NWI3NjFkODUxMDEyZGEz
NWMxY2NmZjk2ZWRkMC4uYjRjNGY3NzI5ZWQ2ZjQ3YjQxYTJjYTg0NWJhNGE4NWU1NDcxM2FhYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVyb3B0aW9uYWxu
dW1iZXItYW5pbWF0aW9uLTMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N2Zy9hbmlt
YXRpb25zL3N2Z251bWJlcm9wdGlvbmFsbnVtYmVyLWFuaW1hdGlvbi0zLWV4cGVjdGVkLnR4dApA
QCAtNywxMiArNywyMCBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiBQQVNTIGZlR2F1c3Np
YW5CbHVyLnN0ZERldmlhdGlvblguYW5pbVZhbCBpcyA0MAogUEFTUyBmZUdhdXNzaWFuQmx1ci5z
dGREZXZpYXRpb25ZLmFuaW1WYWwgaXMgMTAKK1BBU1MgZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0
aW9uWC5iYXNlVmFsIGlzIDQwCitQQVNTIGZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblkuYmFz
ZVZhbCBpcyAxMAogUEFTUyBmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25YLmFuaW1WYWwgaXMg
MjIuNQogUEFTUyBmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25ZLmFuaW1WYWwgaXMgNy41CitQ
QVNTIGZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblguYmFzZVZhbCBpcyA0MAorUEFTUyBmZUdh
dXNzaWFuQmx1ci5zdGREZXZpYXRpb25ZLmJhc2VWYWwgaXMgMTAKIFBBU1MgZmVHYXVzc2lhbkJs
dXIuc3RkRGV2aWF0aW9uWC5hbmltVmFsIGlzIDUKIFBBU1MgZmVHYXVzc2lhbkJsdXIuc3RkRGV2
aWF0aW9uWS5hbmltVmFsIGlzIDUKK1BBU1MgZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWC5i
YXNlVmFsIGlzIDQwCitQQVNTIGZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlvblkuYmFzZVZhbCBp
cyAxMAogUEFTUyBmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25YLmFuaW1WYWwgaXMgNDAKIFBB
U1MgZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWS5hbmltVmFsIGlzIDEwCitQQVNTIGZlR2F1
c3NpYW5CbHVyLnN0ZERldmlhdGlvblguYmFzZVZhbCBpcyA0MAorUEFTUyBmZUdhdXNzaWFuQmx1
ci5zdGREZXZpYXRpb25ZLmJhc2VWYWwgaXMgMTAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2FuaW1h
dGlvbnMvc3ZnbnVtYmVyb3B0aW9uYWxudW1iZXItYW5pbWF0aW9uLTQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVyb3B0aW9uYWxudW1iZXItYW5pbWF0
aW9uLTQtZXhwZWN0ZWQudHh0CmluZGV4IDA1NDg2YWZhMmFlZGRmMGU4ZTZmZWM2MzZlZmI4MTc4
MzkyMTQ5Y2QuLjI2MDZiODZlODlkMGU0NWRmNDViZTJhMWZhOWFiNGViZmI4OGY5OGYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z251bWJlcm9wdGlvbmFsbnVtYmVy
LWFuaW1hdGlvbi00LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9u
cy9zdmdudW1iZXJvcHRpb25hbG51bWJlci1hbmltYXRpb24tNC1leHBlY3RlZC50eHQKQEAgLTcs
MTIgKzcsMjAgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogUEFTUyBmZUdhdXNzaWFuQmx1
ci5zdGREZXZpYXRpb25YLmFuaW1WYWwgaXMgNQogUEFTUyBmZUdhdXNzaWFuQmx1ci5zdGREZXZp
YXRpb25ZLmFuaW1WYWwgaXMgNQorUEFTUyBmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25YLmJh
c2VWYWwgaXMgNQorUEFTUyBmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25ZLmJhc2VWYWwgaXMg
NQogUEFTUyBmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25YLmFuaW1WYWwgaXMgMTAKIFBBU1Mg
ZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWS5hbmltVmFsIGlzIDEwCitQQVNTIGZlR2F1c3Np
YW5CbHVyLnN0ZERldmlhdGlvblguYmFzZVZhbCBpcyA1CitQQVNTIGZlR2F1c3NpYW5CbHVyLnN0
ZERldmlhdGlvblkuYmFzZVZhbCBpcyA1CiBQQVNTIGZlR2F1c3NpYW5CbHVyLnN0ZERldmlhdGlv
blguYW5pbVZhbCBpcyAxNQogUEFTUyBmZUdhdXNzaWFuQmx1ci5zdGREZXZpYXRpb25ZLmFuaW1W
YWwgaXMgMTUKK1BBU1MgZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWC5iYXNlVmFsIGlzIDUK
K1BBU1MgZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWS5iYXNlVmFsIGlzIDUKIFBBU1MgZmVH
YXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWC5hbmltVmFsIGlzIDUKIFBBU1MgZmVHYXVzc2lhbkJs
dXIuc3RkRGV2aWF0aW9uWS5hbmltVmFsIGlzIDUKK1BBU1MgZmVHYXVzc2lhbkJsdXIuc3RkRGV2
aWF0aW9uWC5iYXNlVmFsIGlzIDUKK1BBU1MgZmVHYXVzc2lhbkJsdXIuc3RkRGV2aWF0aW9uWS5i
YXNlVmFsIGlzIDUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQo=
</data>
<flag name="review"
          id="136111"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>