<?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>234653</bug_id>
          
          <creation_ts>2021-12-23 15:21:40 -0800</creation_ts>
          <short_desc>On systems without CG support for alpha premultiplied gradients, the CGGradientRef path should still be used for the subset of gradients that can transformed</short_desc>
          <delta_ts>2021-12-31 21:15:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>150940</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>darin</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1826649</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-23 15:21:40 -0800</bug_when>
    <thetext>The current behavior of the CoreGraphics gradient drawing code path is to always use the CGShadingRef strategy for alpha premultiplied gradients if the system does not natively support alpha premultiplied gradients in the CGGradientRef code path.

For performance, we really would like to use the CGGradientRef code path as much as possible, as the backend has a better opportunity to optimize over the CGShadingRef code path.

Fortunately, there are a class of common gradients that can still use the CGGradientRef code path either totally unmodified or with a transformation of the color stops.

Any gradient that uses a uniform alpha value in all its color stops (e.g. linear-gradient(rgba(255, 0, 0, 0.5), rgba(0, 0, 255, 0.5)) can be used directly with no modification, as the alpha premultiplied and alpha non-premultiplied renderings are identical. 

Additionally, gradients that conform to the rule that &quot;any two consecutive color stops must either have one that is fully transparent or have the same alpha value for both&quot; can be transformed to be used by the alpha non-premultiplied backend via a transformation of the color stop list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826656</commentid>
    <comment_count>1</comment_count>
      <attachid>447916</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-23 15:47:26 -0800</bug_when>
    <thetext>Created attachment 447916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826658</commentid>
    <comment_count>2</comment_count>
      <attachid>447916</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-23 16:12:21 -0800</bug_when>
    <thetext>Comment on attachment 447916
Patch

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

&gt; Source/WebCore/platform/graphics/cg/GradientRendererCG.cpp:57
&gt; +static AlphaType classifyAlphaType(float alpha)

This could be called alphaType().

&gt; Source/WebCore/platform/graphics/cg/GradientRendererCG.cpp:137
&gt; +    // The following is the set of transforms that can be preformed on a color stop list to transform it from one used with a premuliplied alpha gradient

preformed -&gt; performed

&gt; Source/WebCore/platform/graphics/cg/GradientRendererCG.cpp:153
&gt; +    // ... Opaque  -&gt; Transparent -&gt; Transparent -&gt; Transparent -&gt; Opaque  ...    ==&gt;    ... Opaque  -&gt; TRANSFORM{Transparent(PreviousChannels)} -&gt; Transparent -&gt; TRANSFORM{Transparent(NextChannels)} -&gt; Opaque  ...
&gt; +    // ... Partial -&gt; Transparent -&gt; Transparent -&gt; Transparent -&gt; Partial ...    ==&gt;    ... Partial -&gt; TRANSFORM{Transparent(PreviousChannels)} -&gt; Transparent -&gt; TRANSFORM{Transparent(NextChannels)} -&gt; Partial ...
&gt; +    // ... Opaque  -&gt; Transparent -&gt; Transparent -&gt; Transparent -&gt; Partial ...    ==&gt;    ... Opaque  -&gt; TRANSFORM{Transparent(PreviousChannels)} -&gt; Transparent -&gt; TRANSFORM{Transparent(NextChannels)} -&gt; Partial ...
&gt; +    // ... Partial -&gt; Transparent -&gt; Transparent -&gt; Transparent -&gt; Opaque  ...    ==&gt;    ... Partial -&gt; TRANSFORM{Transparent(PreviousChannels)} -&gt; Transparent -&gt; TRANSFORM{Transparent(NextChannels)} -&gt; Opaque  ...

If it simplifies code, the middle Transparent here could be skipped or use either endpoint.

&gt; Source/WebCore/platform/graphics/cg/GradientRendererCG.cpp:157
&gt; +    // [ Transparent -&gt; Transparent ...                                           ==&gt;    [ Transparent                          -&gt; Transparent ...

Transparent -&gt; Transparent is also equivalent to TRANSFORM{Transparent(NextChannels)} -&gt; Transparent

&gt; Source/WebCore/platform/graphics/cg/GradientRendererCG.cpp:161
&gt; +    // ... Transparent  -&gt; Transparent ]                                          ==&gt;    ... Transparent -&gt; Transparent                              ]

Transparent -&gt; Transparent is equivalent to Transparent -&gt; TRANSFORM{Transparent(PreviousChannels)}

&gt; Source/WebCore/platform/graphics/cg/GradientRendererCG.cpp:235
&gt; +    // For three or more stops, we handle the first stop special, then the middle stops one at a time with the next and previous stop as context, then the last stop as special.

&quot;handle the first stop special&quot; isn&apos;t very grammatical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826660</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-23 16:22:22 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #2)
&gt; Comment on attachment 447916 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=447916&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/GradientRendererCG.cpp:57
&gt; &gt; +static AlphaType classifyAlphaType(float alpha)
&gt; 
&gt; This could be called alphaType().
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/GradientRendererCG.cpp:137
&gt; &gt; +    // The following is the set of transforms that can be preformed on a color stop list to transform it from one used with a premuliplied alpha gradient
&gt; 
&gt; preformed -&gt; performed
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/GradientRendererCG.cpp:153
&gt; &gt; +    // ... Opaque  -&gt; Transparent -&gt; Transparent -&gt; Transparent -&gt; Opaque  ...    ==&gt;    ... Opaque  -&gt; TRANSFORM{Transparent(PreviousChannels)} -&gt; Transparent -&gt; TRANSFORM{Transparent(NextChannels)} -&gt; Opaque  ...
&gt; &gt; +    // ... Partial -&gt; Transparent -&gt; Transparent -&gt; Transparent -&gt; Partial ...    ==&gt;    ... Partial -&gt; TRANSFORM{Transparent(PreviousChannels)} -&gt; Transparent -&gt; TRANSFORM{Transparent(NextChannels)} -&gt; Partial ...
&gt; &gt; +    // ... Opaque  -&gt; Transparent -&gt; Transparent -&gt; Transparent -&gt; Partial ...    ==&gt;    ... Opaque  -&gt; TRANSFORM{Transparent(PreviousChannels)} -&gt; Transparent -&gt; TRANSFORM{Transparent(NextChannels)} -&gt; Partial ...
&gt; &gt; +    // ... Partial -&gt; Transparent -&gt; Transparent -&gt; Transparent -&gt; Opaque  ...    ==&gt;    ... Partial -&gt; TRANSFORM{Transparent(PreviousChannels)} -&gt; Transparent -&gt; TRANSFORM{Transparent(NextChannels)} -&gt; Opaque  ...
&gt; 
&gt; If it simplifies code, the middle Transparent here could be skipped or use
&gt; either endpoint.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/GradientRendererCG.cpp:157
&gt; &gt; +    // [ Transparent -&gt; Transparent ...                                           ==&gt;    [ Transparent                          -&gt; Transparent ...
&gt; 
&gt; Transparent -&gt; Transparent is also equivalent to
&gt; TRANSFORM{Transparent(NextChannels)} -&gt; Transparent
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/GradientRendererCG.cpp:161
&gt; &gt; +    // ... Transparent  -&gt; Transparent ]                                          ==&gt;    ... Transparent -&gt; Transparent                              ]
&gt; 
&gt; Transparent -&gt; Transparent is equivalent to Transparent -&gt;
&gt; TRANSFORM{Transparent(PreviousChannels)}

These basically come down to the choice of either taking an extra branch (what the code currently does) or doing an extra Color copy. I don&apos;t think it would make the code much simpler though. For the prefix case it would go from:

    if (firstStopAlphaType == AlphaType::FullyTransparent &amp;&amp; secondStopAlphaType != AlphaType::FullyTransparent) {
        // ACTION: Steal next.
        result.append({ firstStop.offset, secondStop.color.colorWithAlpha(0.0f) });
    } else {
        // ACTION: Default.
        result.append(firstStop);
    }

to

    if (firstStopAlphaType == AlphaType::FullyTransparent) {
        // ACTION: Steal next.
        result.append({ firstStop.offset, secondStop.color.colorWithAlpha(0.0f) });
    } else {
        // ACTION: Default.
        result.append(firstStop);
    }


We could similarly remove a branch from the middle and suffix steps, but I would rather not, as the rules are easier for me to follow if we are only talking about transitions from fully transparent to opaque/partially transparent (or vice-versa).

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/GradientRendererCG.cpp:235
&gt; &gt; +    // For three or more stops, we handle the first stop special, then the middle stops one at a time with the next and previous stop as context, then the last stop as special.
&gt; 
&gt; &quot;handle the first stop special&quot; isn&apos;t very grammatical.

Eek. Indeed.


Thanks for the look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826681</commentid>
    <comment_count>4</comment_count>
      <attachid>447927</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-23 19:12:26 -0800</bug_when>
    <thetext>Created attachment 447927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826721</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-24 08:48:12 -0800</bug_when>
    <thetext>Committed r287426 (245561@main): &lt;https://commits.webkit.org/245561@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447927.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826722</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-24 08:49:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/86894195&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827386</commentid>
    <comment_count>7</comment_count>
      <attachid>447916</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-31 21:15:12 -0800</bug_when>
    <thetext>Comment on attachment 447916
Patch

I would mark classifyAlphaType as constexpr</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447916</attachid>
            <date>2021-12-23 15:47:26 -0800</date>
            <delta_ts>2021-12-23 19:12:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234653-20211223154725.patch</filename>
            <type>text/plain</type>
            <size>35560</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NzQxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIxLTEyLTIzICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBPbiBzeXN0ZW1zIHdpdGhvdXQgQ0cg
c3VwcG9ydCBmb3IgYWxwaGEgcHJlbXVsdGlwbGllZCBncmFkaWVudHMsIHRoZSBDR0dyYWRpZW50
UmVmIHBhdGggc2hvdWxkIHN0aWxsIGJlIHVzZWQgZm9yIHRoZSBzdWJzZXQgb2YgZ3JhZGllbnRz
IHRoYXQgY2FuIHRyYW5zZm9ybWVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzQ2NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0OiBmYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0aXBsaWVkLXJl
cHJlc2VudGFibGUtYnktdW5wcmVtdWx0aXBsaWVkLmh0bWwKKworICAgICAgICBPcHRpbWl6ZSBn
cmFkaWVudCByZW5kZXJpbmcgb24gc3lzdGVtcyB3aXRob3V0IGEgdmVyc2lvbiBvZiBDb3JlR3Jh
cGhpY3MgdGhhdCBzdXBwb3J0cworICAgICAgICBhbHBoYSBwcmVtdWx0aXBsaWVkIGdyYWRpZW50
cyBieSB1c2luZyB0aGUgQ0dHcmFkaWVudFJlZiBjb2RlIHBhdGggZm9yIHRoZSBzdWJzZXQgb2YK
KyAgICAgICAgYWxwaGEgcHJlbXVsdGlwbGllZCBncmFkaWVudHMgdGhhdCBjYW4gYmUgcmVwcmVz
ZW50ZWQgYXMgYWxwaGEgbm9uLXByZW11bHRpcGxpZWQgZ3JhZGllbnRzLgorCisgICAgICAgIFR3
byB0eXBlcyBvZiBvcHRpbWl6YXRpb25zIGFyZSBwb3NzaWJsZSBmb3IgdHdvIGNsYXNzZXMgb2Yg
dGhpcyBzdWJzZXQ6CisKKyAgICAgICAgICAxLiBBbnkgZ3JhZGllbnQgdGhhdCB1c2VzIHRoZSBz
YW1lIGFscGhhIHZhbHVlIGZvciBhbGwgY29sb3Igc3RvcHMgY2FuIGJlIHVzZWQgYXMgaXMKKyAg
ICAgICAgICAgICB3aXRoIHRoZSBhbHBoYSBub24tcHJlbXVsdGlwbGllZCBDR0dyYWRpZW50UmVm
LgorICAgICAgICAgIDIuIEFueSBncmFkaWVudCB0aGF0IGNvbmZvcm1zIHRvIHRoZSBydWxlIHRo
YXQgImFueSB0d28gY29uc2VjdXRpdmUgY29sb3Igc3RvcHMgbXVzdCAKKyAgICAgICAgICAgICBl
aXRoZXIgaGF2ZSBvbmUgdGhhdCBpcyBmdWxseSB0cmFuc3BhcmVudCBvciBoYXZlIHRoZSBzYW1l
IGFscGhhIHZhbHVlIGZvciBib3RoIgorICAgICAgICAgICAgIGNhbiBiZSB0cmFuc2Zvcm1lZCBp
bnRvIGFuIGlkZW50aWNhbCBhbHBoYSBub24tcHJlbXVsdGlwbGllZCBncmFkaWVudCBieSB0cmFu
c2Zvcm1pbmcKKyAgICAgICAgICAgICB0aGUgZnVsbHkgdHJhbnNwYXJlbnQgc3RvcHMgaW50byBl
aXRoZXIgb25lIG9yIHR3byBzdG9wcy4gQSBjb21tZW50IGluIHRoZSBjb2RlCisgICAgICAgICAg
ICAgZ29lcyBpbnRvIG11Y2ggbW9yZSBkZXRhaWwgYWJvdXQgdGhpcy4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjbGFzc2lmeUFscGhhVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjphbmFseXplQ29sb3JT
dG9wc0ZvckVtdWxhdGVkQWxwaGFQcmVtdWxpcGxpY2F0aW9uT3BwZXJ0dW5pdHkpOgorICAgICAg
ICAoV2ViQ29yZTo6YWxwaGFUcmFuc2Zvcm1TdG9wc1RvRW11bGF0ZUFscGhhUHJlbXVsaXBsaWNh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudFJlbmRlcmVyQ0c6OnBpY2tTdHJhdGVn
eSBjb25zdCk6CisKIDIwMjEtMTItMjMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBXVEY6OlVVSUQgY2xhc3Mgd2hpY2ggaXMgbmF0aXZlbHkgYSAxMjgt
Yml0IGludGVnZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YWRpZW50UmVuZGVyZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRSZW5kZXJlckNHLmNwcAkocmV2aXNpb24gMjg3NDEyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRSZW5kZXJlckNH
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsMzU0IEBAIEdyYWRpZW50UmVuZGVyZXJD
Rzo6R3JhZGllbnRSZW5kZXJlckNHKENvbG9ySW50ZXJwb2xhdAogCiAvLyBNQVJLOiAtIFN0cmF0
ZWd5IHNlbGVjdGlvbi4KIAorI2lmICFIQVZFKENPUkVfR1JBUEhJQ1NfUFJFTVVMVElQTElFRF9J
TlRFUlBPTEFUSU9OX0dSQURJRU5UKQorCitlbnVtIGNsYXNzIEVtdWxhdGVkQWxwaGFQcmVtdWxp
cGxpY2F0aW9uQW5hbHlzaXNSZXN1bHQgeworICAgIFVzZUdyYWRpZW50QXNJcywKKyAgICBVc2VH
cmFkaWVudFdpdGhBbHBoYVRyYW5zZm9ybXMsCisgICAgVXNlU2hhZGluZworfTsKKworZW51bSBj
bGFzcyBBbHBoYVR5cGUgeworICAgIE9wYXF1ZSwKKyAgICBQYXJ0aWFsbHlUcmFuc3BhcmVudCwK
KyAgICBGdWxseVRyYW5zcGFyZW50Cit9OworCitzdGF0aWMgQWxwaGFUeXBlIGNsYXNzaWZ5QWxw
aGFUeXBlKGZsb2F0IGFscGhhKQoreworICAgIGlmIChhbHBoYSA9PSAxLjBmKQorICAgICAgICBy
ZXR1cm4gQWxwaGFUeXBlOjpPcGFxdWU7CisgICAgaWYgKGFscGhhID09IDAuMGYpCisgICAgICAg
IHJldHVybiBBbHBoYVR5cGU6OkZ1bGx5VHJhbnNwYXJlbnQ7CisgICAgcmV0dXJuIEFscGhhVHlw
ZTo6UGFydGlhbGx5VHJhbnNwYXJlbnQ7Cit9CisKK3N0YXRpYyBFbXVsYXRlZEFscGhhUHJlbXVs
aXBsaWNhdGlvbkFuYWx5c2lzUmVzdWx0IGFuYWx5emVDb2xvclN0b3BzRm9yRW11bGF0ZWRBbHBo
YVByZW11bGlwbGljYXRpb25PcHBlcnR1bml0eShjb25zdCBHcmFkaWVudENvbG9yU3RvcHMmIHN0
b3BzKQoreworICAgIGlmIChzdG9wcy5zaXplKCkgPCAyKQorICAgICAgICByZXR1cm4gRW11bGF0
ZWRBbHBoYVByZW11bGlwbGljYXRpb25BbmFseXNpc1Jlc3VsdDo6VXNlR3JhZGllbnRBc0lzOwor
CisgICAgYm9vbCB1bmlmb3JtQWxwaGEgPSB0cnVlOworCisgICAgYXV0byYgaW5pdGlhbFN0b3Ag
PSAqc3RvcHMuYmVnaW4oKTsKKyAgICBhdXRvIHByZXZpb3VzU3RvcEFscGhhID0gaW5pdGlhbFN0
b3AuY29sb3IuYWxwaGFBc0Zsb2F0KCk7CisgICAgYXV0byBwcmV2aW91c1N0b3BBbHBoYVR5cGUg
PSBjbGFzc2lmeUFscGhhVHlwZShwcmV2aW91c1N0b3BBbHBoYSk7CisKKyAgICBhdXRvIHN0b3BJ
dGVyYXRvciA9IHN0b3BzLmJlZ2luKCk7CisgICAgKytzdG9wSXRlcmF0b3I7CisKKyAgICB3aGls
ZSAoc3RvcEl0ZXJhdG9yICE9IHN0b3BzLmVuZCgpKSB7CisgICAgICAgIGF1dG8mIHN0b3AgPSAq
c3RvcEl0ZXJhdG9yOworCisgICAgICAgIGF1dG8gc3RvcEFscGhhID0gc3RvcC5jb2xvci5hbHBo
YUFzRmxvYXQoKTsKKyAgICAgICAgYXV0byBzdG9wQWxwaGFUeXBlID0gY2xhc3NpZnlBbHBoYVR5
cGUoc3RvcEFscGhhKTsKKworICAgICAgICBzd2l0Y2ggKHN0b3BBbHBoYVR5cGUpIHsKKyAgICAg
ICAgY2FzZSBBbHBoYVR5cGU6Ok9wYXF1ZToKKyAgICAgICAgICAgIHN3aXRjaCAocHJldmlvdXNT
dG9wQWxwaGFUeXBlKSB7CisgICAgICAgICAgICBjYXNlIEFscGhhVHlwZTo6T3BhcXVlOgorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBbHBoYVR5cGU6OlBhcnRpYWxs
eVRyYW5zcGFyZW50OgorICAgICAgICAgICAgICAgIHJldHVybiBFbXVsYXRlZEFscGhhUHJlbXVs
aXBsaWNhdGlvbkFuYWx5c2lzUmVzdWx0OjpVc2VTaGFkaW5nOworICAgICAgICAgICAgY2FzZSBB
bHBoYVR5cGU6OkZ1bGx5VHJhbnNwYXJlbnQ6CisgICAgICAgICAgICAgICAgdW5pZm9ybUFscGhh
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIEFscGhhVHlwZTo6UGFydGlhbGx5VHJhbnNwYXJl
bnQ6CisgICAgICAgICAgICBzd2l0Y2ggKHByZXZpb3VzU3RvcEFscGhhVHlwZSkgeworICAgICAg
ICAgICAgY2FzZSBBbHBoYVR5cGU6Ok9wYXF1ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gRW11
bGF0ZWRBbHBoYVByZW11bGlwbGljYXRpb25BbmFseXNpc1Jlc3VsdDo6VXNlU2hhZGluZzsKKyAg
ICAgICAgICAgIGNhc2UgQWxwaGFUeXBlOjpQYXJ0aWFsbHlUcmFuc3BhcmVudDoKKyAgICAgICAg
ICAgICAgICBpZiAocHJldmlvdXNTdG9wQWxwaGEgIT0gc3RvcEFscGhhKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gRW11bGF0ZWRBbHBoYVByZW11bGlwbGljYXRpb25BbmFseXNpc1Jlc3Vs
dDo6VXNlU2hhZGluZzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
QWxwaGFUeXBlOjpGdWxseVRyYW5zcGFyZW50OgorICAgICAgICAgICAgICAgIHVuaWZvcm1BbHBo
YSA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBBbHBoYVR5cGU6OkZ1bGx5VHJhbnNwYXJlbnQ6
CisgICAgICAgICAgICBzd2l0Y2ggKHByZXZpb3VzU3RvcEFscGhhVHlwZSkgeworICAgICAgICAg
ICAgY2FzZSBBbHBoYVR5cGU6Ok9wYXF1ZToKKyAgICAgICAgICAgIGNhc2UgQWxwaGFUeXBlOjpQ
YXJ0aWFsbHlUcmFuc3BhcmVudDoKKyAgICAgICAgICAgICAgICB1bmlmb3JtQWxwaGEgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBBbHBoYVR5cGU6
OkZ1bGx5VHJhbnNwYXJlbnQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHByZXZpb3VzU3RvcEFs
cGhhID0gc3RvcEFscGhhOworICAgICAgICBwcmV2aW91c1N0b3BBbHBoYVR5cGUgPSBzdG9wQWxw
aGFUeXBlOworCisgICAgICAgICsrc3RvcEl0ZXJhdG9yOworICAgIH0KKworICAgIHJldHVybiB1
bmlmb3JtQWxwaGEgPyBFbXVsYXRlZEFscGhhUHJlbXVsaXBsaWNhdGlvbkFuYWx5c2lzUmVzdWx0
OjpVc2VHcmFkaWVudEFzSXMgOiBFbXVsYXRlZEFscGhhUHJlbXVsaXBsaWNhdGlvbkFuYWx5c2lz
UmVzdWx0OjpVc2VHcmFkaWVudFdpdGhBbHBoYVRyYW5zZm9ybXM7Cit9CisKK3N0YXRpYyBHcmFk
aWVudENvbG9yU3RvcHMgYWxwaGFUcmFuc2Zvcm1TdG9wc1RvRW11bGF0ZUFscGhhUHJlbXVsaXBs
aWNhdGlvbihjb25zdCBHcmFkaWVudENvbG9yU3RvcHMmIHN0b3BzKQoreworICAgIC8vIFRoZSBm
b2xsb3dpbmcgaXMgdGhlIHNldCBvZiB0cmFuc2Zvcm1zIHRoYXQgY2FuIGJlIHByZWZvcm1lZCBv
biBhIGNvbG9yIHN0b3AgbGlzdCB0byB0cmFuc2Zvcm0gaXQgZnJvbSBvbmUgdXNlZCB3aXRoIGEg
cHJlbXVsaXBsaWVkIGFscGhhIGdyYWRpZW50CisgICAgLy8gaW1wbG1lbnRhdGlvbiB0byBvbmUg
dXNlZCBieSB3aXRoIGFuIHVuLXByZW11bHRpcGxpZWQgZ3JhZGllbnQgaW1wbGVtZW50YXRpb24u
CisKKyAgICAvLyAuLi4gT3BhcXVlICAtPiBUcmFuc3BhcmVudCAtPiBPcGFxdWUgIC4uLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT4gICAgLi4uIE9wYXF1ZSAgLT4gVFJBTlNG
T1JNe1RyYW5zcGFyZW50KFByZXZpb3VzQ2hhbm5lbHMpfSB8IEFERElUSU9Oe1RyYW5zcGFyZW50
KE5leHRDaGFubmVscyl9IC0+IE9wYXF1ZSAgLi4uCisgICAgLy8gLi4uIFBhcnRpYWwgLT4gVHJh
bnNwYXJlbnQgLT4gUGFydGlhbCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PT0+ICAgIC4uLiBQYXJ0aWFsIC0+IFRSQU5TRk9STXtUcmFuc3BhcmVudChQcmV2aW91c0NoYW5u
ZWxzKX0gfCBBRERJVElPTntUcmFuc3BhcmVudChOZXh0Q2hhbm5lbHMpfSAtPiBQYXJ0aWFsIC4u
LgorICAgIC8vIC4uLiBPcGFxdWUgIC0+IFRyYW5zcGFyZW50IC0+IFBhcnRpYWwgLi4uICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PiAgICAuLi4gT3BhcXVlICAtPiBUUkFOU0ZP
Uk17VHJhbnNwYXJlbnQoUHJldmlvdXNDaGFubmVscyl9IHwgQURESVRJT057VHJhbnNwYXJlbnQo
TmV4dENoYW5uZWxzKX0gLT4gUGFydGlhbCAuLi4KKyAgICAvLyAuLi4gUGFydGlhbCAtPiBUcmFu
c3BhcmVudCAtPiBPcGFxdWUgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
PT4gICAgLi4uIFBhcnRpYWwgLT4gVFJBTlNGT1JNe1RyYW5zcGFyZW50KFByZXZpb3VzQ2hhbm5l
bHMpfSB8IEFERElUSU9Oe1RyYW5zcGFyZW50KE5leHRDaGFubmVscyl9IC0+IE9wYXF1ZSAgLi4u
CisgICAgLy8KKyAgICAvLyAuLi4gT3BhcXVlICAtPiBUcmFuc3BhcmVudCAtPiBUcmFuc3BhcmVu
dCAtPiBPcGFxdWUgIC4uLiAgICAgICAgICAgICAgICAgICA9PT4gICAgLi4uIE9wYXF1ZSAgLT4g
VFJBTlNGT1JNe1RyYW5zcGFyZW50KFByZXZpb3VzQ2hhbm5lbHMpfSAtPiBUUkFOU0ZPUk17VHJh
bnNwYXJlbnQoTmV4dENoYW5uZWxzKX0gLT4gT3BhcXVlICAuLi4KKyAgICAvLyAuLi4gUGFydGlh
bCAtPiBUcmFuc3BhcmVudCAtPiBUcmFuc3BhcmVudCAtPiBQYXJ0aWFsIC4uLiAgICAgICAgICAg
ICAgICAgICA9PT4gICAgLi4uIFBhcnRpYWwgLT4gVFJBTlNGT1JNe1RyYW5zcGFyZW50KFByZXZp
b3VzQ2hhbm5lbHMpfSAtPiBUUkFOU0ZPUk17VHJhbnNwYXJlbnQoTmV4dENoYW5uZWxzKX0gLT4g
UGFydGlhbCAuLi4KKyAgICAvLyAuLi4gT3BhcXVlICAtPiBUcmFuc3BhcmVudCAtPiBUcmFuc3Bh
cmVudCAtPiBQYXJ0aWFsIC4uLiAgICAgICAgICAgICAgICAgICA9PT4gICAgLi4uIE9wYXF1ZSAg
LT4gVFJBTlNGT1JNe1RyYW5zcGFyZW50KFByZXZpb3VzQ2hhbm5lbHMpfSAtPiBUUkFOU0ZPUk17
VHJhbnNwYXJlbnQoTmV4dENoYW5uZWxzKX0gLT4gUGFydGlhbCAuLi4KKyAgICAvLyAuLi4gUGFy
dGlhbCAtPiBUcmFuc3BhcmVudCAtPiBUcmFuc3BhcmVudCAtPiBPcGFxdWUgIC4uLiAgICAgICAg
ICAgICAgICAgICA9PT4gICAgLi4uIFBhcnRpYWwgLT4gVFJBTlNGT1JNe1RyYW5zcGFyZW50KFBy
ZXZpb3VzQ2hhbm5lbHMpfSAtPiBUUkFOU0ZPUk17VHJhbnNwYXJlbnQoTmV4dENoYW5uZWxzKX0g
LT4gT3BhcXVlICAuLi4KKyAgICAvLworICAgIC8vIC4uLiBPcGFxdWUgIC0+IFRyYW5zcGFyZW50
IC0+IFRyYW5zcGFyZW50IC0+IFRyYW5zcGFyZW50IC0+IE9wYXF1ZSAgLi4uICAgID09PiAgICAu
Li4gT3BhcXVlICAtPiBUUkFOU0ZPUk17VHJhbnNwYXJlbnQoUHJldmlvdXNDaGFubmVscyl9IC0+
IFRyYW5zcGFyZW50IC0+IFRSQU5TRk9STXtUcmFuc3BhcmVudChOZXh0Q2hhbm5lbHMpfSAtPiBP
cGFxdWUgIC4uLgorICAgIC8vIC4uLiBQYXJ0aWFsIC0+IFRyYW5zcGFyZW50IC0+IFRyYW5zcGFy
ZW50IC0+IFRyYW5zcGFyZW50IC0+IFBhcnRpYWwgLi4uICAgID09PiAgICAuLi4gUGFydGlhbCAt
PiBUUkFOU0ZPUk17VHJhbnNwYXJlbnQoUHJldmlvdXNDaGFubmVscyl9IC0+IFRyYW5zcGFyZW50
IC0+IFRSQU5TRk9STXtUcmFuc3BhcmVudChOZXh0Q2hhbm5lbHMpfSAtPiBQYXJ0aWFsIC4uLgor
ICAgIC8vIC4uLiBPcGFxdWUgIC0+IFRyYW5zcGFyZW50IC0+IFRyYW5zcGFyZW50IC0+IFRyYW5z
cGFyZW50IC0+IFBhcnRpYWwgLi4uICAgID09PiAgICAuLi4gT3BhcXVlICAtPiBUUkFOU0ZPUk17
VHJhbnNwYXJlbnQoUHJldmlvdXNDaGFubmVscyl9IC0+IFRyYW5zcGFyZW50IC0+IFRSQU5TRk9S
TXtUcmFuc3BhcmVudChOZXh0Q2hhbm5lbHMpfSAtPiBQYXJ0aWFsIC4uLgorICAgIC8vIC4uLiBQ
YXJ0aWFsIC0+IFRyYW5zcGFyZW50IC0+IFRyYW5zcGFyZW50IC0+IFRyYW5zcGFyZW50IC0+IE9w
YXF1ZSAgLi4uICAgID09PiAgICAuLi4gUGFydGlhbCAtPiBUUkFOU0ZPUk17VHJhbnNwYXJlbnQo
UHJldmlvdXNDaGFubmVscyl9IC0+IFRyYW5zcGFyZW50IC0+IFRSQU5TRk9STXtUcmFuc3BhcmVu
dChOZXh0Q2hhbm5lbHMpfSAtPiBPcGFxdWUgIC4uLgorICAgIC8vCisgICAgLy8gWyBUcmFuc3Bh
cmVudCAtPiBPcGFxdWUgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPT0+ICAgIFsgVFJBTlNGT1JNe1RyYW5zcGFyZW50KE5leHRDaGFubmVscyl9IC0+
IE9wYXF1ZSAgICAgIC4uLgorICAgIC8vIFsgVHJhbnNwYXJlbnQgLT4gUGFydGlhbCAgICAgLi4u
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PiAgICBbIFRSQU5T
Rk9STXtUcmFuc3BhcmVudChOZXh0Q2hhbm5lbHMpfSAtPiBQYXJ0aWFsICAgICAuLi4KKyAgICAv
LyBbIFRyYW5zcGFyZW50IC0+IFRyYW5zcGFyZW50IC4uLiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9PT4gICAgWyBUcmFuc3BhcmVudCAgICAgICAgICAgICAgICAg
ICAgICAgICAgLT4gVHJhbnNwYXJlbnQgLi4uCisgICAgLy8KKyAgICAvLyAuLi4gT3BhcXVlICAg
ICAgIC0+IFRyYW5zcGFyZW50IF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9PT4gICAgLi4uIE9wYXF1ZSAgICAgIC0+IFRSQU5TRk9STXtUcmFuc3BhcmVudChQcmV2
aW91c0NoYW5uZWxzKX0gXQorICAgIC8vIC4uLiBQYXJ0aWFsICAgICAgLT4gVHJhbnNwYXJlbnQg
XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PiAgICAuLi4gUGFy
dGlhbCAgICAgLT4gVFJBTlNGT1JNe1RyYW5zcGFyZW50KFByZXZpb3VzQ2hhbm5lbHMpfSBdCisg
ICAgLy8gLi4uIFRyYW5zcGFyZW50ICAtPiBUcmFuc3BhcmVudCBdICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPT0+ICAgIC4uLiBUcmFuc3BhcmVudCAtPiBUcmFuc3Bh
cmVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKworICAgIC8vIEZvciBlYWNoIHN0
b3AgdGhlIGZvbGxvd2luZyBhY3Rpb25zIGFyZSBwb3NzaWJsZToKKyAgICAvLyAgICAgIC0gRGVm
YXVsdCAgICAgICAgICAgQXBwZW5kIHNlbGYKKyAgICAvLyAgICAgIC0gU3RlYWwgcHJldmlvdXMg
ICAgQXBwZW5kIHByZXZpb3VzLmNvbG9yV2l0aEFscGhhKDAuMGYpCisgICAgLy8gICAgICAtIFN0
ZWFsIG5leHQgICAgICAgIEFwcGVuZCBuZXh0LmNvbG9yV2l0aEFscGhhKDAuMGYpCisgICAgLy8g
ICAgICAtIFNwbGl0ICAgICAgICAgICAgIEFwcGVuZCBwcmV2aW91cy5jb2xvcldpdGhBbHBoYSgw
LjBmKSArIG5leHQuY29sb3JXaXRoQWxwaGEoMC4wZikKKworICAgIEFTU0VSVChzdG9wcy5zaXpl
KCkgPiAxKTsKKworICAgIC8vIFNwZWNpYWwgY2FzZSB3aGVuIHdlIG9ubHkgaGF2ZSB0d28gc3Rv
cHMgdG8gYXZvaWQgY29tcGxpY2F0aW5nIHRoZSBjYXNlcyB3aXRoIG1vcmUuCisgICAgaWYgKHN0
b3BzLnNpemUoKSA9PSAyKSB7CisgICAgICAgIC8vIElsbGVnYWwgcGFpcnMgKHJ1bGVkIG91dCBp
biBhbmFseXNpcykKKyAgICAgICAgLy8gICBPcGFxdWUgIC0+IFBhcnRpYWwKKyAgICAgICAgLy8g
ICBQYXJ0aWFsIC0+IE9wYXF1ZQorICAgICAgICAvLworICAgICAgICAvLyBQb3NzaWJsZSBwYWly
cworICAgICAgICAvLyAgIE9wYXF1ZSAgICAgIC0+IE9wYXF1ZSAgICAgICAoZGVmYXVsdCwgZGVm
YXVsdCkKKyAgICAgICAgLy8gICBQYXJ0aWFsICAgICAtPiBQYXJ0aWFsICAgICAgKGRlZmF1bHQs
IGRlZmF1bHQpCisgICAgICAgIC8vICAgVHJhbnNwYXJlbnQgLT4gVHJhbnNwYXJlbnQgIChkZWZh
dWx0LCBkZWZhdWx0KQorICAgICAgICAvLyAgIE9wYXF1ZSAgICAgIC0+IFRyYW5zcGFyZW50ICAo
ZGVmYXVsdCwgc3RlYWwgcHJldmlvdXMpCisgICAgICAgIC8vICAgUGFydGlhbCAgICAgLT4gVHJh
bnNwYXJlbnQgIChkZWZhdWx0LCBzdGVhbCBwcmV2aW91cykKKyAgICAgICAgLy8gICBUcmFuc3Bh
cmVudCAtPiBPcGFxdWUgICAgICAgKHN0ZWFscyBuZXh0LCBkZWZhdWx0KQorICAgICAgICAvLyAg
IFRyYW5zcGFyZW50IC0+IFBhcnRpYWwgICAgICAoc3RlYWxzIG5leHQsIGRlZmF1bHQpCisKKyAg
ICAgICAgR3JhZGllbnRDb2xvclN0b3BzOjpTdG9wVmVjdG9yIHJlc3VsdDsKKyAgICAgICAgcmVz
dWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7CisKKyAgICAgICAgYXV0byYgc3RvcDEgPSBz
dG9wcy5zdG9wcygpWzBdOworICAgICAgICBhdXRvJiBzdG9wMiA9IHN0b3BzLnN0b3BzKClbMV07
CisKKyAgICAgICAgYXV0byBzdG9wMUFscGhhVHlwZSA9IGNsYXNzaWZ5QWxwaGFUeXBlKHN0b3Ax
LmNvbG9yLmFscGhhQXNGbG9hdCgpKTsKKyAgICAgICAgYXV0byBzdG9wMkFscGhhVHlwZSA9IGNs
YXNzaWZ5QWxwaGFUeXBlKHN0b3AyLmNvbG9yLmFscGhhQXNGbG9hdCgpKTsKKworICAgICAgICBz
d2l0Y2ggKHN0b3AxQWxwaGFUeXBlKSB7CisgICAgICAgIGNhc2UgQWxwaGFUeXBlOjpPcGFxdWU6
CisgICAgICAgIGNhc2UgQWxwaGFUeXBlOjpQYXJ0aWFsbHlUcmFuc3BhcmVudDoKKyAgICAgICAg
ICAgIC8vIEFDVElPTiAoc3RvcDEpOiBEZWZhdWx0LgorICAgICAgICAgICAgcmVzdWx0LnVuY2hl
Y2tlZEFwcGVuZChzdG9wMSk7CisKKyAgICAgICAgICAgIHN3aXRjaCAoc3RvcDJBbHBoYVR5cGUp
IHsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFUeXBlOjpPcGFxdWU6CisgICAgICAgICAgICBjYXNl
IEFscGhhVHlwZTo6UGFydGlhbGx5VHJhbnNwYXJlbnQ6CisgICAgICAgICAgICAgICAgLy8gQUNU
SU9OIChzdG9wMik6IERlZmF1bHQuCisgICAgICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFw
cGVuZChzdG9wMik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFs
cGhhVHlwZTo6RnVsbHlUcmFuc3BhcmVudDoKKyAgICAgICAgICAgICAgICAvLyBBQ1RJT04gKHN0
b3AyKTogU3RlYWwgcHJldmlvdXMuCisgICAgICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFw
cGVuZCh7IHN0b3AyLm9mZnNldCwgc3RvcDEuY29sb3IuY29sb3JXaXRoQWxwaGEoMC4wZikgfSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGNhc2UgQWxwaGFUeXBlOjpGdWxseVRyYW5zcGFyZW50OgorICAgICAg
ICAgICAgc3dpdGNoIChzdG9wMkFscGhhVHlwZSkgeworICAgICAgICAgICAgY2FzZSBBbHBoYVR5
cGU6Ok9wYXF1ZToKKyAgICAgICAgICAgIGNhc2UgQWxwaGFUeXBlOjpQYXJ0aWFsbHlUcmFuc3Bh
cmVudDoKKyAgICAgICAgICAgICAgICAvLyBBQ1RJT04gKHN0b3AxKTogU3RlYWwgbmV4dC4KKyAg
ICAgICAgICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKHsgc3RvcDEub2Zmc2V0LCBzdG9w
Mi5jb2xvci5jb2xvcldpdGhBbHBoYSgwLjBmKSB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgQWxwaGFUeXBlOjpGdWxseVRyYW5zcGFyZW50OgorICAgICAgICAg
ICAgICAgIC8vIEFDVElPTiAoc3RvcDEpOiBEZWZhdWx0LgorICAgICAgICAgICAgICAgIHJlc3Vs
dC51bmNoZWNrZWRBcHBlbmQoc3RvcDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLy8gQUNUSU9OIChzdG9wMik6IERlZmF1bHQuCisgICAgICAg
ICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKHN0b3AyKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEdyYWRpZW50Q29sb3JTdG9wczo6U29ydGVkIHsg
V1RGTW92ZShyZXN1bHQpIH07CisgICAgfQorCisgICAgLy8gRm9yIHRocmVlIG9yIG1vcmUgc3Rv
cHMsIHdlIGhhbmRsZSB0aGUgZmlyc3Qgc3RvcCBzcGVjaWFsLCB0aGVuIHRoZSBtaWRkbGUgc3Rv
cHMgb25lIGF0IGEgdGltZSB3aXRoIHRoZSBuZXh0IGFuZCBwcmV2aW91cyBzdG9wIGFzIGNvbnRl
eHQsIHRoZW4gdGhlIGxhc3Qgc3RvcCBhcyBzcGVjaWFsLgorCisgICAgR3JhZGllbnRDb2xvclN0
b3BzOjpTdG9wVmVjdG9yIHJlc3VsdDsKKworICAgIC8vIDEuIEhhbmRsZSBmaXJzdCBzdG9wLgor
ICAgIC8vCisgICAgLy8gW2ZpcnN0IHN0b3AgbWF0dGVyc10KKyAgICAvLworICAgIC8vIElsbGVn
YWwgcGFpcnMgKHJ1bGVkIG91dCBpbiBhbmFseXNpcykKKyAgICAvLyAgIE9wYXF1ZSAgLT4gUGFy
dGlhbAorICAgIC8vICAgUGFydGlhbCAtPiBPcGFxdWUKKyAgICAvLworICAgIC8vIFBvc3NpYmxl
IHBhaXJzCisgICAgLy8gICBPcGFxdWUgICAgICAtPiBPcGFxdWUgICAgICAgKGRlZmF1bHQpCisg
ICAgLy8gICBQYXJ0aWFsICAgICAtPiBQYXJ0aWFsICAgICAgKGRlZmF1bHQpCisgICAgLy8gICBU
cmFuc3BhcmVudCAtPiBUcmFuc3BhcmVudCAgKGRlZmF1bHQpCisgICAgLy8gICBPcGFxdWUgICAg
ICAtPiBUcmFuc3BhcmVudCAgKGRlZmF1bHQpCisgICAgLy8gICBQYXJ0aWFsICAgICAtPiBUcmFu
c3BhcmVudCAgKGRlZmF1bHQpCisgICAgLy8gICBUcmFuc3BhcmVudCAtPiBPcGFxdWUgICAgICAg
KHN0ZWFscyBuZXh0KQorICAgIC8vICAgVHJhbnNwYXJlbnQgLT4gUGFydGlhbCAgICAgIChzdGVh
bHMgbmV4dCkKKworICAgIGF1dG8mIGZpcnN0U3RvcCA9IHN0b3BzLnN0b3BzKClbMF07CisgICAg
YXV0byYgc2Vjb25kU3RvcCA9IHN0b3BzLnN0b3BzKClbMV07CisKKyAgICBhdXRvIGZpcnN0U3Rv
cEFscGhhVHlwZSA9IGNsYXNzaWZ5QWxwaGFUeXBlKGZpcnN0U3RvcC5jb2xvci5hbHBoYUFzRmxv
YXQoKSk7CisgICAgYXV0byBzZWNvbmRTdG9wQWxwaGFUeXBlID0gY2xhc3NpZnlBbHBoYVR5cGUo
c2Vjb25kU3RvcC5jb2xvci5hbHBoYUFzRmxvYXQoKSk7CisKKyAgICBpZiAoZmlyc3RTdG9wQWxw
aGFUeXBlID09IEFscGhhVHlwZTo6RnVsbHlUcmFuc3BhcmVudCAmJiBzZWNvbmRTdG9wQWxwaGFU
eXBlICE9IEFscGhhVHlwZTo6RnVsbHlUcmFuc3BhcmVudCkgeworICAgICAgICAvLyBBQ1RJT046
IFN0ZWFsIG5leHQuCisgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBmaXJzdFN0b3Aub2Zmc2V0LCBz
ZWNvbmRTdG9wLmNvbG9yLmNvbG9yV2l0aEFscGhhKDAuMGYpIH0pOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIC8vIEFDVElPTjogRGVmYXVsdC4KKyAgICAgICAgcmVzdWx0LmFwcGVuZChmaXJzdFN0
b3ApOworICAgIH0KKworICAgIC8vIDIuIEhhbmRsZSBtaWRkbGUgc3RvcHMuCisgICAgLy8KKyAg
ICAvLyBbbWlkZGxlIHN0b3AgbWF0dGVyc10KKyAgICAvLworICAgIC8vIElsbGVnYWwgdHJpcGxl
dHMgKHJ1bGVkIG91dCBpbiBhbmFseXNpcykKKyAgICAvLyAgIE9wYXF1ZSAgICAgIC0+IE9wYXF1
ZSAgICAgIC0+IFBhcnRpYWwKKyAgICAvLyAgIE9wYXF1ZSAgICAgIC0+IFBhcnRpYWwgICAgIC0+
IFBhcnRpYWwKKyAgICAvLyAgIE9wYXF1ZSAgICAgIC0+IFBhcnRpYWwgICAgIC0+IE9wYXF1ZQor
ICAgIC8vICAgUGFydGlhbCAgICAgLT4gT3BhcXVlICAgICAgLT4gT3BhcXVlCisgICAgLy8gICBQ
YXJ0aWFsICAgICAtPiBQYXJ0aWFsICAgICAtPiBPcGFxdWUKKyAgICAvLyAgIFBhcnRpYWwgICAg
IC0+IE9wYXF1ZSAgICAgIC0+IFBhcnRpYWwKKyAgICAvLworICAgIC8vIFBvc3NpYmxlIHRyaXBs
ZXRzCisgICAgLy8gICBPcGFxdWUgICAgICAtPiBPcGFxdWUgICAgICAtPiBPcGFxdWUgICAgICAg
KGRlZmF1bHQpCisgICAgLy8gICBQYXJ0aWFsICAgICAtPiBQYXJ0aWFsICAgICAtPiBQYXJ0aWFs
ICAgICAgKGRlZmF1bHQpCisgICAgLy8gICBPcGFxdWUgICAgICAtPiBPcGFxdWUgICAgICAtPiBU
cmFuc3BhcmVudCAgKGRlZmF1bHQpCisgICAgLy8gICBPcGFxdWUgICAgICAtPiBQYXJ0aWFsICAg
ICAtPiBUcmFuc3BhcmVudCAgKGRlZmF1bHQpCisgICAgLy8gICBQYXJ0aWFsICAgICAtPiBQYXJ0
aWFsICAgICAtPiBUcmFuc3BhcmVudCAgKGRlZmF1bHQpCisgICAgLy8gICBQYXJ0aWFsICAgICAt
PiBPcGFxdWUgICAgICAtPiBUcmFuc3BhcmVudCAgKGRlZmF1bHQpCisgICAgLy8gICBUcmFuc3Bh
cmVudCAtPiBPcGFxdWUgICAgICAtPiBUcmFuc3BhcmVudCAgKGRlZmF1bHQpCisgICAgLy8gICBU
cmFuc3BhcmVudCAtPiBQYXJ0aWFsICAgICAtPiBUcmFuc3BhcmVudCAgKGRlZmF1bHQpCisgICAg
Ly8gICBUcmFuc3BhcmVudCAtPiBUcmFuc3BhcmVudCAtPiBUcmFuc3BhcmVudCAgKGRlZmF1bHQp
CisgICAgLy8gICBPcGFxdWUgICAgICAtPiBUcmFuc3BhcmVudCAtPiBPcGFxdWUgICAgICAgKHNw
bGl0cywgc3RlYWxzIHByZXZpb3VzICsgbmV4dCkKKyAgICAvLyAgIE9wYXF1ZSAgICAgIC0+IFRy
YW5zcGFyZW50IC0+IFBhcnRpYWwgICAgICAoc3BsaXRzLCBzdGVhbHMgcHJldmlvdXMgKyBuZXh0
KQorICAgIC8vICAgUGFydGlhbCAgICAgLT4gVHJhbnNwYXJlbnQgLT4gUGFydGlhbCAgICAgIChz
cGxpdHMsIHN0ZWFscyBwcmV2aW91cyArIG5leHQpCisgICAgLy8gICBQYXJ0aWFsICAgICAtPiBU
cmFuc3BhcmVudCAtPiBPcGFxdWUgICAgICAgKHNwbGl0cywgc3RlYWxzIHByZXZpb3VzICsgbmV4
dCkKKyAgICAvLyAgIFRyYW5zcGFyZW50IC0+IFRyYW5zcGFyZW50IC0+IE9wYXF1ZSAgICAgICAo
c3RlYWxzIG5leHQpCisgICAgLy8gICBUcmFuc3BhcmVudCAtPiBUcmFuc3BhcmVudCAtPiBQYXJ0
aWFsICAgICAgKHN0ZWFscyBuZXh0KQorICAgIC8vICAgT3BhcXVlICAgICAgLT4gVHJhbnNwYXJl
bnQgLT4gVHJhbnNwYXJlbnQgIChzdGVhbHMgcHJldmlvdXMpCisgICAgLy8gICBQYXJ0aWFsICAg
ICAtPiBUcmFuc3BhcmVudCAtPiBUcmFuc3BhcmVudCAgKHN0ZWFscyBwcmV2aW91cykKKworICAg
IHNpemVfdCBwcmV2aW91c1N0b3BJbmRleCA9IDA7CisgICAgc2l6ZV90IHN0b3BJbmRleCA9IDE7
CisgICAgc2l6ZV90IG5leHRTdG9wSW5kZXggPSAyOworCisgICAgZm9yICg7IG5leHRTdG9wSW5k
ZXggPCBzdG9wcy5zaXplKCk7ICsrcHJldmlvdXNTdG9wSW5kZXgsICsrc3RvcEluZGV4LCArK25l
eHRTdG9wSW5kZXgpIHsKKyAgICAgICAgYXV0byYgcHJldmlvdXNTdG9wID0gc3RvcHMuc3RvcHMo
KVtwcmV2aW91c1N0b3BJbmRleF07CisgICAgICAgIGF1dG8mIHN0b3AgPSBzdG9wcy5zdG9wcygp
W3N0b3BJbmRleF07CisgICAgICAgIGF1dG8mIG5leHRTdG9wID0gc3RvcHMuc3RvcHMoKVtuZXh0
U3RvcEluZGV4XTsKKworICAgICAgICBhdXRvIHByZXZpb3VzU3RvcEFscGhhVHlwZSA9IGNsYXNz
aWZ5QWxwaGFUeXBlKHByZXZpb3VzU3RvcC5jb2xvci5hbHBoYUFzRmxvYXQoKSk7CisgICAgICAg
IGF1dG8gc3RvcEFscGhhVHlwZSA9IGNsYXNzaWZ5QWxwaGFUeXBlKHN0b3AuY29sb3IuYWxwaGFB
c0Zsb2F0KCkpOworICAgICAgICBhdXRvIG5leHRTdG9wQWxwaGFUeXBlID0gY2xhc3NpZnlBbHBo
YVR5cGUobmV4dFN0b3AuY29sb3IuYWxwaGFBc0Zsb2F0KCkpOworCisgICAgICAgIGlmIChzdG9w
QWxwaGFUeXBlID09IEFscGhhVHlwZTo6RnVsbHlUcmFuc3BhcmVudCkgeworICAgICAgICAgICAg
c3dpdGNoIChwcmV2aW91c1N0b3BBbHBoYVR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFU
eXBlOjpPcGFxdWU6CisgICAgICAgICAgICBjYXNlIEFscGhhVHlwZTo6UGFydGlhbGx5VHJhbnNw
YXJlbnQ6CisgICAgICAgICAgICAgICAgc3dpdGNoIChuZXh0U3RvcEFscGhhVHlwZSkgeworICAg
ICAgICAgICAgICAgIGNhc2UgQWxwaGFUeXBlOjpPcGFxdWU6CisgICAgICAgICAgICAgICAgY2Fz
ZSBBbHBoYVR5cGU6OlBhcnRpYWxseVRyYW5zcGFyZW50OgorICAgICAgICAgICAgICAgICAgICAv
LyBBQ1RJT046IFNwbGl0LgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHsgc3Rv
cC5vZmZzZXQsIHByZXZpb3VzU3RvcC5jb2xvci5jb2xvcldpdGhBbHBoYSgwLjBmKSB9KTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IHN0b3Aub2Zmc2V0LCBuZXh0U3RvcC5j
b2xvci5jb2xvcldpdGhBbHBoYSgwLjBmKSB9KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBjYXNlIEFscGhhVHlwZTo6RnVsbHlUcmFuc3BhcmVudDoKKyAg
ICAgICAgICAgICAgICAgICAgLy8gQUNUSU9OOiBTdGVhbCBwcmV2aW91cy4KKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IHN0b3Aub2Zmc2V0LCBwcmV2aW91c1N0b3AuY29sb3Iu
Y29sb3JXaXRoQWxwaGEoMC4wZikgfSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2Fz
ZSBBbHBoYVR5cGU6OkZ1bGx5VHJhbnNwYXJlbnQ6CisgICAgICAgICAgICAgICAgc3dpdGNoIChu
ZXh0U3RvcEFscGhhVHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgQWxwaGFUeXBlOjpPcGFx
dWU6CisgICAgICAgICAgICAgICAgY2FzZSBBbHBoYVR5cGU6OlBhcnRpYWxseVRyYW5zcGFyZW50
OgorICAgICAgICAgICAgICAgICAgICAvLyBBQ1RJT046IFN0ZWFsIG5leHQuCisgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBzdG9wLm9mZnNldCwgbmV4dFN0b3AuY29sb3IuY29s
b3JXaXRoQWxwaGEoMC4wZikgfSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgY2FzZSBBbHBoYVR5cGU6OkZ1bGx5VHJhbnNwYXJlbnQ6CisgICAgICAgICAg
ICAgICAgICAgIC8vIEFDVElPTjogRGVmYXVsdC4KKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChzdG9wKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgLy8gQUNUSU9OOiBEZWZhdWx0LgorICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChzdG9wKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVChuZXh0U3RvcElu
ZGV4ID09IHN0b3BzLnNpemUoKSk7CisKKyAgICAvLyAzLiBIYW5kbGUgbGFzdCBzdG9wLgorICAg
IC8vCisgICAgLy8gW2xhc3Qgc3RvcCBtYXR0ZXJzXQorICAgIC8vCisgICAgLy8gSWxsZWdhbCBw
YWlycyAocnVsZWQgb3V0IGluIGFuYWx5c2lzIHBoYXNlKQorICAgIC8vICAgT3BhcXVlICAtPiBQ
YXJ0aWFsCisgICAgLy8gICBQYXJ0aWFsIC0+IE9wYXF1ZQorICAgIC8vCisgICAgLy8gUG9zc2li
bGUgcGFpcnMKKyAgICAvLyAgIE9wYXF1ZSAgICAgIC0+IE9wYXF1ZSAgICAgICAoZGVmYXVsdCkK
KyAgICAvLyAgIFBhcnRpYWwgICAgIC0+IFBhcnRpYWwgICAgICAoZGVmYXVsdCkKKyAgICAvLyAg
IFRyYW5zcGFyZW50IC0+IFRyYW5zcGFyZW50ICAoZGVmYXVsdCkKKyAgICAvLyAgIE9wYXF1ZSAg
ICAgIC0+IFRyYW5zcGFyZW50ICAoc3RlYWxzIHByZXZpb3VzKQorICAgIC8vICAgUGFydGlhbCAg
ICAgLT4gVHJhbnNwYXJlbnQgIChzdGVhbHMgcHJldmlvdXMpCisgICAgLy8gICBUcmFuc3BhcmVu
dCAtPiBPcGFxdWUgICAgICAgKGRlZmF1bHQpCisgICAgLy8gICBUcmFuc3BhcmVudCAtPiBQYXJ0
aWFsICAgICAgKGRlZmF1bHQpCisKKyAgICBhdXRvJiBzZWNvbmRUb0xhc3RTdG9wID0gc3RvcHMu
c3RvcHMoKVtwcmV2aW91c1N0b3BJbmRleF07CisgICAgYXV0byYgbGFzdFN0b3AgPSBzdG9wcy5z
dG9wcygpW3N0b3BJbmRleF07CisKKyAgICBhdXRvIHNlY29uZFRvTGFzdFN0b3BBbHBoYVR5cGUg
PSBjbGFzc2lmeUFscGhhVHlwZShzZWNvbmRUb0xhc3RTdG9wLmNvbG9yLmFscGhhQXNGbG9hdCgp
KTsKKyAgICBhdXRvIGxhc3RTdG9wQWxwaGFUeXBlID0gY2xhc3NpZnlBbHBoYVR5cGUobGFzdFN0
b3AuY29sb3IuYWxwaGFBc0Zsb2F0KCkpOworCisgICAgaWYgKGxhc3RTdG9wQWxwaGFUeXBlID09
IEFscGhhVHlwZTo6RnVsbHlUcmFuc3BhcmVudCAmJiBzZWNvbmRUb0xhc3RTdG9wQWxwaGFUeXBl
ICE9IEFscGhhVHlwZTo6RnVsbHlUcmFuc3BhcmVudCkgeworICAgICAgICAvLyBBQ1RJT046IFN0
ZWFsIHByZXZpb3VzLgorICAgICAgICByZXN1bHQuYXBwZW5kKHsgbGFzdFN0b3Aub2Zmc2V0LCBz
ZWNvbmRUb0xhc3RTdG9wLmNvbG9yLmNvbG9yV2l0aEFscGhhKDAuMGYpIH0pOworICAgIH0gZWxz
ZSB7CisgICAgICAgIC8vIEFDVElPTjogRGVmYXVsdC4KKyAgICAgICAgcmVzdWx0LmFwcGVuZChs
YXN0U3RvcCk7CisgICAgfQorCisgICAgcmV0dXJuIEdyYWRpZW50Q29sb3JTdG9wczo6U29ydGVk
IHsgV1RGTW92ZShyZXN1bHQpIH07Cit9CisjZW5kaWYKKwogR3JhZGllbnRSZW5kZXJlckNHOjpT
dHJhdGVneSBHcmFkaWVudFJlbmRlcmVyQ0c6OnBpY2tTdHJhdGVneShDb2xvckludGVycG9sYXRp
b25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBHcmFkaWVudENvbG9yU3Rv
cHMmIHN0b3BzKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGNvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZC5jb2xvclNwYWNlLApAQCAtNTEsOCArMzk5LDE0IEBAIEdyYWRpZW50UmVu
ZGVyZXJDRzo6U3RyYXRlZ3kgR3JhZGllbnRSZW5kZXJlckNHOjpwaWNrUwogI2lmIEhBVkUoQ09S
RV9HUkFQSElDU19QUkVNVUxUSVBMSUVEX0lOVEVSUE9MQVRJT05fR1JBRElFTlQpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VHcmFkaWVudChjb2xvckludGVycG9sYXRpb25NZXRob2QsIHN0
b3BzKTsKICNlbHNlCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBncmFkaWVudCBzdHJh
dGVneSBpZiBub25lIG9mIHRoZSBzdG9wcyBoYXZlIGFscGhhLgotICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlU2hhZGluZyhjb2xvckludGVycG9sYXRpb25NZXRob2QsIHN0b3BzKTsKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKGFuYWx5emVDb2xvclN0b3BzRm9yRW11bGF0ZWRBbHBoYVByZW11
bGlwbGljYXRpb25PcHBlcnR1bml0eShzdG9wcykpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEVt
dWxhdGVkQWxwaGFQcmVtdWxpcGxpY2F0aW9uQW5hbHlzaXNSZXN1bHQ6OlVzZUdyYWRpZW50QXNJ
czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VHcmFkaWVudCh7IENvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCB9LCBzdG9wcyk7CisgICAgICAgICAgICAgICAgY2FzZSBFbXVsYXRlZEFscGhhUHJl
bXVsaXBsaWNhdGlvbkFuYWx5c2lzUmVzdWx0OjpVc2VHcmFkaWVudFdpdGhBbHBoYVRyYW5zZm9y
bXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlR3JhZGllbnQoeyBDb2xvckludGVy
cG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQgfSwgYWxwaGFUcmFuc2Zvcm1TdG9wc1RvRW11bGF0ZUFscGhhUHJlbXVsaXBsaWNh
dGlvbihzdG9wcykpOworICAgICAgICAgICAgICAgIGNhc2UgRW11bGF0ZWRBbHBoYVByZW11bGlw
bGljYXRpb25BbmFseXNpc1Jlc3VsdDo6VXNlU2hhZGluZzoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VTaGFkaW5nKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgc3RvcHMpOworICAg
ICAgICAgICAgICAgIH0KICNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICB9LApJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjg3NDEyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMTItMjMgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBw
bGUuY29tPgorCisgICAgICAgIE9uIHN5c3RlbXMgd2l0aG91dCBDRyBzdXBwb3J0IGZvciBhbHBo
YSBwcmVtdWx0aXBsaWVkIGdyYWRpZW50cywgdGhlIENHR3JhZGllbnRSZWYgcGF0aCBzaG91bGQg
c3RpbGwgYmUgdXNlZCBmb3IgdGhlIHN1YnNldCBvZiBncmFkaWVudHMgdGhhdCBjYW4gdHJhbnNm
b3JtZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NDY1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCB0ZXN0cyBvZiBncmFkaWVudHMgdGhhdCBjYW4gcmVuZGVyIGlkZW50aWNhbGx5IHdpdGggYm90
aCBhbHBoYSBwcmVtdWx0aXBsaWVkIGFuZCBub24tcHJlbXVsdGlwbGllZCBncmFkaWVudHMKKyAg
ICAgICAgZWl0aGVyIHVzaW5nIHRoZSBzYW1lIGNvbG9yIHN0b3AgbGlzdCBvciBhIHRyYW5zZm9y
bWVkIG9uZS4KKworICAgICAgICBUaGUgbWFpbiB0ZXN0IHBhZ2UgY29udGFpbnMgdGhlIGFscGhh
IHByZW11bHRpcGxpZWQgZ3JhZGllbnRzICh3aGljaCBpcyB0aGUgZGVmYXVsdCBub3cgZm9yIENT
UyBncmFkaWVudHMpLCB3aGlsZQorICAgICAgICB0aGUgLWV4cGVjdGVkLmh0bWwgY29udGFpbnMg
dGhlIGFscGhhIG5vbi1wcmVtdWx0aXBsaWVkIGdyYWRpZW50cyBhbmQgaGFzIGFscGhhIHByZW11
bHRpcGxpZWQgaW50ZXJwb2xhdGlvbiBleHBsaWNpdGx5CisgICAgICAgIGRpc2FibGVkIHZpYSBh
IENTU0dyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVuYWJsZWQ9ZmFsc2Ug
Y29tbWVudCBjb21tYW5kLgorCisgICAgICAgICogZmFzdC9ncmFkaWVudHMvYWxwaGEtcHJlbXVs
dGlwbGllZC1yZXByZXNlbnRhYmxlLWJ5LXVucHJlbXVsdGlwbGllZC1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0aXBsaWVkLXJlcHJl
c2VudGFibGUtYnktdW5wcmVtdWx0aXBsaWVkLmh0bWw6IEFkZGVkLgorCiAyMDIxLTEyLTIzICBU
aW0gTmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmViYXNlbGluZSBnZXRDb21w
dXRlZFN0eWxlIHRlc3RzIGZvciBpT1MgYWZ0ZXIgcjI4NzM1NgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9ncmFkaWVudHMvYWxwaGEtcHJlbXVsdGlwbGllZC1yZXByZXNlbnRhYmxlLWJ5LXVucHJl
bXVsdGlwbGllZC1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Z3JhZGllbnRzL2FscGhhLXByZW11bHRpcGxpZWQtcmVwcmVzZW50YWJsZS1ieS11bnByZW11bHRp
cGxpZWQtZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2dy
YWRpZW50cy9hbHBoYS1wcmVtdWx0aXBsaWVkLXJlcHJlc2VudGFibGUtYnktdW5wcmVtdWx0aXBs
aWVkLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTIgQEAKKzwhRE9D
VFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQ1NTR3JhZGllbnRQcmVtdWx0aXBs
aWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxlZD1mYWxzZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4K
KzxzdHlsZT4KKyAgICBkaXYgeyAKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWln
aHQ6IDEwMHB4OworICAgICAgICBib3JkZXI6IGRhc2hlZCBibGFjayAxcHg7CisgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICB9CisKKyAgICA6cm9vdCB7CisgICAgICAgIC0tdHJh
bnNwYXJlbnQtMTogcmdiYSgwLCAwLCAyNTUsIDApOworICAgICAgICAtLXRyYW5zcGFyZW50LTI6
IHJnYmEoMjU1LCAwLCAwLCAwKTsKKyAgICAgICAgLS10cmFuc3BhcmVudC0zOiByZ2JhKDAsIDI1
NSwgMCwgMCk7CisgICAgICAgIC0tdHJhbnNwYXJlbnQtNDogcmdiYSgyNTUsIDI1NSwgMCwgMCk7
CisKKyAgICAgICAgLS1vcGFxdWUtMTogcmdiYSgwLCAwLCAyNTUsIDEpOworICAgICAgICAtLW9w
YXF1ZS0yOiByZ2JhKDI1NSwgMCwgMCwgMSk7CisgICAgICAgIC0tb3BhcXVlLTM6IHJnYmEoMCwg
MjU1LCAwLCAxKTsKKyAgICAgICAgLS1vcGFxdWUtNDogcmdiYSgyNTUsIDI1NSwgMCwgMSk7CisK
KyAgICAgICAgLS1wYXJ0aWFsLTE6IHJnYmEoMCwgMCwgMjU1LCAwLjUpOworICAgICAgICAtLXBh
cnRpYWwtMjogcmdiYSgyNTUsIDAsIDAsIDAuNSk7CisgICAgICAgIC0tcGFydGlhbC0zOiByZ2Jh
KDAsIDI1NSwgMCwgMC41KTsKKyAgICAgICAgLS1wYXJ0aWFsLTQ6IHJnYmEoMjU1LCAyNTUsIDAs
IDAuNSk7CisgICAgfQorCisgICAgLyogTk9URTogSWYgd2UgZXZlciB3YW50IHRvIHJlbW92ZSB0
aGUgb3B0aW9uIHRvIGRpc2FibGUgYWxwaGEgcHJlbXVsdGlwbGllZCBncmFkaWVudHMsIGFuZCBh
bHRlcm5hdGl2ZSB3YXkKKyAgICAgICAgICAgICB0byB0ZXN0IHRoaXMgd291bGQgYmUgdXNpbmcg
ZWl0aGVyIENhbnZhcyBvciBTVkcsIHdoaWNoIGJvdGggdXNlIHVucHJlbXVsdGlwbGllZCBpbnRl
cnBvbGF0aW9uLiAgICAqLworCisgICAgI29wYXF1ZS1vcGFxdWUgeworICAgICAgICAvKiBObyB0
cmFuc2Zvcm0gKi8KKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZh
cigtLW9wYXF1ZS0xKSwgdmFyKC0tb3BhcXVlLTIpKTsKKyAgICB9CisKKyAgICAjcGFydGlhbC1w
YXJ0aWFsIHsKKyAgICAgICAgLyogTm8gdHJhbnNmb3JtICovCisgICAgICAgIGJhY2tncm91bmQt
aW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1wYXJ0aWFsLTEpLCB2YXIoLS1wYXJ0aWFsLTIp
KTsKKyAgICB9CisKKyAgICAjdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQgeworICAgICAgICAvKiBO
byB0cmFuc2Zvcm0gKi8KKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50
KHZhcigtLXRyYW5zcGFyZW50LTEpLCB2YXIoLS10cmFuc3BhcmVudC0yKSk7CisgICAgfQorCisg
ICAgI3RyYW5zcGFyZW50LW9wYXF1ZSB7CisgICAgICAgIC8qIFN0ZWFsIG5leHQgKi8KKyAgICAg
ICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLXRyYW5zcGFyZW50LTIp
LCB2YXIoLS1vcGFxdWUtMikpOworICAgIH0KKworICAgICN0cmFuc3BhcmVudC1wYXJ0aWFsIHsK
KyAgICAgICAgLyogU3RlYWwgbmV4dCAqLworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5l
YXItZ3JhZGllbnQodmFyKC0tdHJhbnNwYXJlbnQtMiksIHZhcigtLXBhcnRpYWwtMikpOworICAg
IH0KKworICAgICNvcGFxdWUtdHJhbnNwYXJlbnQgeworICAgICAgICAvKiBTdGVhbCBwcmV2aW91
cyAqLworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tb3Bh
cXVlLTEpLCB2YXIoLS10cmFuc3BhcmVudC0xKSk7CisgICAgfQorCisgICAgI3BhcnRpYWwtdHJh
bnNwYXJlbnQgeworICAgICAgICAvKiBTdGVhbCBwcmV2aW91cyAqLworICAgICAgICBiYWNrZ3Jv
dW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tcGFydGlhbC0xKSwgdmFyKC0tdHJhbnNw
YXJlbnQtMSkpOworICAgIH0KKworICAgICNvcGFxdWUtdHJhbnNwYXJlbnQtb3BhcXVlIHsKKyAg
ICAgICAgLyogU3BsaXQgKi8KKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRp
ZW50KHZhcigtLW9wYXF1ZS0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMSkgNTAlLCB2YXIoLS10cmFu
c3BhcmVudC0zKSA1MCUsIHZhcigtLW9wYXF1ZS0zKSk7CisgICAgfQorCisgICAgI29wYXF1ZS10
cmFuc3BhcmVudC1wYXJ0aWFsIHsKKyAgICAgICAgLyogU3BsaXQgKi8KKyAgICAgICAgYmFja2dy
b3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLW9wYXF1ZS0xKSwgdmFyKC0tdHJhbnNw
YXJlbnQtMSkgNTAlLCB2YXIoLS10cmFuc3BhcmVudC0zKSA1MCUsIHZhcigtLXBhcnRpYWwtMykp
OworICAgIH0KKworICAgICNwYXJ0aWFsLXRyYW5zcGFyZW50LXBhcnRpYWwgeworICAgICAgICAv
KiBTcGxpdCAqLworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFy
KC0tcGFydGlhbC0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMSkgNTAlLCB2YXIoLS10cmFuc3BhcmVu
dC0zKSA1MCUsIHZhcigtLXBhcnRpYWwtMykpOworICAgIH0KKworICAgICNwYXJ0aWFsLXRyYW5z
cGFyZW50LW9wYXF1ZSB7CisgICAgICAgIC8qIFNwbGl0ICovCisgICAgICAgIGJhY2tncm91bmQt
aW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1wYXJ0aWFsLTEpLCB2YXIoLS10cmFuc3BhcmVu
dC0xKSA1MCUsIHZhcigtLXRyYW5zcGFyZW50LTMpIDUwJSwgdmFyKC0tb3BhcXVlLTMpKTsKKyAg
ICB9CisKKyAgICAjb3BhcXVlLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LW9wYXF1ZSB7CisgICAg
ICAgIC8qIFN0ZWFsIHByZXZpb3VzLCBzdGVhbCBuZXh0ICovCisgICAgICAgIGJhY2tncm91bmQt
aW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1vcGFxdWUtMSksIHZhcigtLXRyYW5zcGFyZW50
LTEpLCB2YXIoLS10cmFuc3BhcmVudC00KSwgdmFyKC0tb3BhcXVlLTQpKTsKKyAgICB9CisKKyAg
ICAjb3BhcXVlLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LXBhcnRpYWwgeworICAgICAgICAvKiBT
dGVhbCBwcmV2aW91cywgc3RlYWwgbmV4dCAqLworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBs
aW5lYXItZ3JhZGllbnQodmFyKC0tb3BhcXVlLTEpLCB2YXIoLS10cmFuc3BhcmVudC0xKSwgdmFy
KC0tdHJhbnNwYXJlbnQtNCksIHZhcigtLXBhcnRpYWwtNCkpOworICAgIH0KKworICAgICNwYXJ0
aWFsLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LXBhcnRpYWwgeworICAgICAgICAvKiBTdGVhbCBw
cmV2aW91cywgc3RlYWwgbmV4dCAqLworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXIt
Z3JhZGllbnQodmFyKC0tcGFydGlhbC0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMSksIHZhcigtLXRy
YW5zcGFyZW50LTQpLCB2YXIoLS1wYXJ0aWFsLTQpKTsKKyAgICB9CisKKyAgICAjcGFydGlhbC10
cmFuc3BhcmVudC10cmFuc3BhcmVudC1vcGFxdWUgeworICAgICAgICAvKiBTdGVhbCBwcmV2aW91
cywgbm90aGluZywgc3RlYWwgbmV4dCAqLworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5l
YXItZ3JhZGllbnQodmFyKC0tcGFydGlhbC0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMSksIHZhcigt
LXRyYW5zcGFyZW50LTQpLCB2YXIoLS1vcGFxdWUtNCkpOworICAgIH0KKworICAgICNvcGFxdWUt
dHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtb3BhcXVlIHsKKyAgICAgICAgLyog
U3RlYWwgcHJldmlvdXMsIG5vdGhpbmcsIHN0ZWFsIG5leHQgKi8KKyAgICAgICAgYmFja2dyb3Vu
ZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLW9wYXF1ZS0xKSwgdmFyKC0tdHJhbnNwYXJl
bnQtMSksIHZhcigtLXRyYW5zcGFyZW50LTMpLCB2YXIoLS10cmFuc3BhcmVudC0yKSwgdmFyKC0t
b3BhcXVlLTIpKTsKKyAgICB9CisKKyAgICAjb3BhcXVlLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50
LXRyYW5zcGFyZW50LXBhcnRpYWwgeworICAgICAgICAvKiBTdGVhbCBwcmV2aW91cywgbm90aGlu
Zywgc3RlYWwgbmV4dCAqLworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGll
bnQodmFyKC0tb3BhcXVlLTEpLCB2YXIoLS10cmFuc3BhcmVudC0xKSwgdmFyKC0tdHJhbnNwYXJl
bnQtMyksIHZhcigtLXRyYW5zcGFyZW50LTIpLCB2YXIoLS1wYXJ0aWFsLTIpKTsKKyAgICB9CisK
KyAgICAjcGFydGlhbC10cmFuc3BhcmVudC10cmFuc3BhcmVudC10cmFuc3BhcmVudC1wYXJ0aWFs
IHsKKyAgICAgICAgLyogU3RlYWwgcHJldmlvdXMsIG5vdGhpbmcsIHN0ZWFsIG5leHQgKi8KKyAg
ICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLXBhcnRpYWwtMSks
IHZhcigtLXRyYW5zcGFyZW50LTEpLCB2YXIoLS10cmFuc3BhcmVudC0zKSwgdmFyKC0tdHJhbnNw
YXJlbnQtMiksIHZhcigtLXBhcnRpYWwtMikpOworICAgIH0KKworICAgICNwYXJ0aWFsLXRyYW5z
cGFyZW50LXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LW9wYXF1ZSB7CisgICAgICAgIC8qIFN0ZWFs
IHByZXZpb3VzLCBub3RoaW5nLCBzdGVhbCBuZXh0ICovCisgICAgICAgIGJhY2tncm91bmQtaW1h
Z2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1wYXJ0aWFsLTEpLCB2YXIoLS10cmFuc3BhcmVudC0x
KSwgdmFyKC0tdHJhbnNwYXJlbnQtMyksIHZhcigtLXRyYW5zcGFyZW50LTIpLCB2YXIoLS1vcGFx
dWUtMikpOworICAgIH0KKworICAgICNvcGFxdWUtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQgewor
ICAgICAgICAvKiBTdGVhbCBwcmV2aW91cywgbm90aGluZyAqLworICAgICAgICBiYWNrZ3JvdW5k
LWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tb3BhcXVlLTEpLCB2YXIoLS10cmFuc3BhcmVu
dC0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMykpOworICAgIH0KKworICAgICNwYXJ0aWFsLXRyYW5z
cGFyZW50LXRyYW5zcGFyZW50IHsKKyAgICAgICAgLyogU3RlYWwgcHJldmlvdXMsIG5vdGhpbmcg
Ki8KKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLXBhcnRp
YWwtMSksIHZhcigtLXRyYW5zcGFyZW50LTEpLCB2YXIoLS10cmFuc3BhcmVudC0zKSk7CisgICAg
fQorCisgICAgI3RyYW5zcGFyZW50LXRyYW5zcGFyZW50LW9wYXF1ZSB7CisgICAgICAgIC8qIE5v
dGhpbmcsIHN0ZWFsIG5leHQgKi8KKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdy
YWRpZW50KHZhcigtLXRyYW5zcGFyZW50LTEpLCB2YXIoLS10cmFuc3BhcmVudC0zKSwgdmFyKC0t
b3BhcXVlLTMpKTsKKyAgICB9CisKKyAgICAjdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtcGFydGlh
bCB7CisgICAgICAgIC8qIE5vdGhpbmcsIHN0ZWFsIG5leHQgKi8KKyAgICAgICAgYmFja2dyb3Vu
ZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLXRyYW5zcGFyZW50LTEpLCB2YXIoLS10cmFu
c3BhcmVudC0zKSwgdmFyKC0tcGFydGlhbC0zKSk7CisgICAgfQorCisgICAgI3RyYW5zcGFyZW50
LXRyYW5zcGFyZW50LXRyYW5zcGFyZW50IHsKKyAgICAgICAgLyogTm8gdHJhbnNmb3JtICovCisg
ICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS10cmFuc3BhcmVu
dC0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMiksIHZhcigtLXRyYW5zcGFyZW50LTMpKTsKKyAgICB9
CisKKyAgICAjdHJhbnNwYXJlbnQtb3BhcXVlLXRyYW5zcGFyZW50IHsKKyAgICAgICAgLyogU3Rl
YWwgbmV4dCwgc3RlYWwgcHJldmlvdXMgKi8KKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGlu
ZWFyLWdyYWRpZW50KHZhcigtLXRyYW5zcGFyZW50LTIpLCB2YXIoLS1vcGFxdWUtMiksIHZhcigt
LXRyYW5zcGFyZW50LTIpKTsKKyAgICB9CisKKyAgICAjdHJhbnNwYXJlbnQtcGFydGlhbC10cmFu
c3BhcmVudCB7CisgICAgICAgIC8qIFN0ZWFsIG5leHQsIHN0ZWFsIHByZXZpb3VzICovCisgICAg
ICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS10cmFuc3BhcmVudC0y
KSwgdmFyKC0tcGFydGlhbC0yKSwgdmFyKC0tdHJhbnNwYXJlbnQtMikpOworICAgIH0KKworPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ib3BhcXVlLW9wYXF1ZSI+PC9kaXY+Cis8
ZGl2IGlkPSJwYXJ0aWFsLXBhcnRpYWwiPjwvZGl2PgorPGRpdiBpZD0idHJhbnNwYXJlbnQtdHJh
bnNwYXJlbnQiPjwvZGl2PgorPGRpdiBpZD0idHJhbnNwYXJlbnQtb3BhcXVlIj48L2Rpdj4KKzxk
aXYgaWQ9InRyYW5zcGFyZW50LXBhcnRpYWwiPjwvZGl2PgorPGRpdiBpZD0ib3BhcXVlLXRyYW5z
cGFyZW50Ij48L2Rpdj4KKzxkaXYgaWQ9InBhcnRpYWwtdHJhbnNwYXJlbnQiPjwvZGl2PgorPGRp
diBpZD0ib3BhcXVlLXRyYW5zcGFyZW50LW9wYXF1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJvcGFxdWUt
dHJhbnNwYXJlbnQtcGFydGlhbCI+PC9kaXY+Cis8ZGl2IGlkPSJwYXJ0aWFsLXRyYW5zcGFyZW50
LXBhcnRpYWwiPjwvZGl2PgorPGRpdiBpZD0icGFydGlhbC10cmFuc3BhcmVudC1vcGFxdWUiPjwv
ZGl2PgorPGRpdiBpZD0ib3BhcXVlLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LW9wYXF1ZSI+PC9k
aXY+Cis8ZGl2IGlkPSJvcGFxdWUtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtcGFydGlhbCI+PC9k
aXY+Cis8ZGl2IGlkPSJwYXJ0aWFsLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LXBhcnRpYWwiPjwv
ZGl2PgorPGRpdiBpZD0icGFydGlhbC10cmFuc3BhcmVudC10cmFuc3BhcmVudC1vcGFxdWUiPjwv
ZGl2PgorPGRpdiBpZD0ib3BhcXVlLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LXRyYW5zcGFyZW50
LW9wYXF1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJvcGFxdWUtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQt
dHJhbnNwYXJlbnQtcGFydGlhbCI+PC9kaXY+Cis8ZGl2IGlkPSJwYXJ0aWFsLXRyYW5zcGFyZW50
LXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LXBhcnRpYWwiPjwvZGl2PgorPGRpdiBpZD0icGFydGlh
bC10cmFuc3BhcmVudC10cmFuc3BhcmVudC10cmFuc3BhcmVudC1vcGFxdWUiPjwvZGl2PgorPGRp
diBpZD0ib3BhcXVlLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50Ij48L2Rpdj4KKzxkaXYgaWQ9InBh
cnRpYWwtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQiPjwvZGl2PgorPGRpdiBpZD0idHJhbnNwYXJl
bnQtdHJhbnNwYXJlbnQtb3BhcXVlIj48L2Rpdj4KKzxkaXYgaWQ9InRyYW5zcGFyZW50LXRyYW5z
cGFyZW50LXBhcnRpYWwiPjwvZGl2PgorPGRpdiBpZD0idHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQt
dHJhbnNwYXJlbnQiPjwvZGl2PgorPGRpdiBpZD0idHJhbnNwYXJlbnQtb3BhcXVlLXRyYW5zcGFy
ZW50Ij48L2Rpdj4KKzxkaXYgaWQ9InRyYW5zcGFyZW50LXBhcnRpYWwtdHJhbnNwYXJlbnQiPjwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMv
YWxwaGEtcHJlbXVsdGlwbGllZC1yZXByZXNlbnRhYmxlLWJ5LXVucHJlbXVsdGlwbGllZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2FscGhhLXByZW11bHRp
cGxpZWQtcmVwcmVzZW50YWJsZS1ieS11bnByZW11bHRpcGxpZWQuaHRtbAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0aXBsaWVkLXJlcHJl
c2VudGFibGUtYnktdW5wcmVtdWx0aXBsaWVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxNjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICBk
aXYgeyAKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAg
ICAgICBib3JkZXI6IGRhc2hlZCBibGFjayAxcHg7CisgICAgICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKKyAgICB9CisKKyAgICA6cm9vdCB7CisgICAgICAgIC0tdHJhbnNwYXJlbnQtMTogcmdi
YSgwLCAwLCAyNTUsIDApOworICAgICAgICAtLXRyYW5zcGFyZW50LTI6IHJnYmEoMjU1LCAwLCAw
LCAwKTsKKyAgICAgICAgLS10cmFuc3BhcmVudC0zOiByZ2JhKDAsIDI1NSwgMCwgMCk7CisgICAg
ICAgIC0tdHJhbnNwYXJlbnQtNDogcmdiYSgyNTUsIDI1NSwgMCwgMCk7CisKKyAgICAgICAgLS1v
cGFxdWUtMTogcmdiYSgwLCAwLCAyNTUsIDEpOworICAgICAgICAtLW9wYXF1ZS0yOiByZ2JhKDI1
NSwgMCwgMCwgMSk7CisgICAgICAgIC0tb3BhcXVlLTM6IHJnYmEoMCwgMjU1LCAwLCAxKTsKKyAg
ICAgICAgLS1vcGFxdWUtNDogcmdiYSgyNTUsIDI1NSwgMCwgMSk7CisKKyAgICAgICAgLS1wYXJ0
aWFsLTE6IHJnYmEoMCwgMCwgMjU1LCAwLjUpOworICAgICAgICAtLXBhcnRpYWwtMjogcmdiYSgy
NTUsIDAsIDAsIDAuNSk7CisgICAgICAgIC0tcGFydGlhbC0zOiByZ2JhKDAsIDI1NSwgMCwgMC41
KTsKKyAgICAgICAgLS1wYXJ0aWFsLTQ6IHJnYmEoMjU1LCAyNTUsIDAsIDAuNSk7CisgICAgfQor
ICAgIAorICAgICNvcGFxdWUtb3BhcXVlIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGlu
ZWFyLWdyYWRpZW50KHZhcigtLW9wYXF1ZS0xKSwgdmFyKC0tb3BhcXVlLTIpKTsKKyAgICB9CisK
KyAgICAjcGFydGlhbC1wYXJ0aWFsIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFy
LWdyYWRpZW50KHZhcigtLXBhcnRpYWwtMSksIHZhcigtLXBhcnRpYWwtMikpOworICAgIH0KKwor
ICAgICN0cmFuc3BhcmVudC10cmFuc3BhcmVudCB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6
IGxpbmVhci1ncmFkaWVudCh2YXIoLS10cmFuc3BhcmVudC0xKSwgdmFyKC0tdHJhbnNwYXJlbnQt
MikpOworICAgIH0KKworICAgICN0cmFuc3BhcmVudC1vcGFxdWUgeworICAgICAgICBiYWNrZ3Jv
dW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tdHJhbnNwYXJlbnQtMSksIHZhcigtLW9w
YXF1ZS0yKSk7CisgICAgfQorCisgICAgI3RyYW5zcGFyZW50LXBhcnRpYWwgeworICAgICAgICBi
YWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tdHJhbnNwYXJlbnQtMSksIHZh
cigtLXBhcnRpYWwtMikpOworICAgIH0KKworICAgICNvcGFxdWUtdHJhbnNwYXJlbnQgeworICAg
ICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tb3BhcXVlLTEpLCB2
YXIoLS10cmFuc3BhcmVudC0yKSk7CisgICAgfQorCisgICAgI3BhcnRpYWwtdHJhbnNwYXJlbnQg
eworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tcGFydGlh
bC0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMikpOworICAgIH0KKworICAgICNvcGFxdWUtdHJhbnNw
YXJlbnQtb3BhcXVlIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50
KHZhcigtLW9wYXF1ZS0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMiksIHZhcigtLW9wYXF1ZS0zKSk7
CisgICAgfQorCisgICAgI29wYXF1ZS10cmFuc3BhcmVudC1wYXJ0aWFsIHsKKyAgICAgICAgYmFj
a2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLW9wYXF1ZS0xKSwgdmFyKC0tdHJh
bnNwYXJlbnQtMiksIHZhcigtLXBhcnRpYWwtMykpOworICAgIH0KKworICAgICNwYXJ0aWFsLXRy
YW5zcGFyZW50LXBhcnRpYWwgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3Jh
ZGllbnQodmFyKC0tcGFydGlhbC0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMiksIHZhcigtLXBhcnRp
YWwtMykpOworICAgIH0KKworICAgICNwYXJ0aWFsLXRyYW5zcGFyZW50LW9wYXF1ZSB7CisgICAg
ICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1wYXJ0aWFsLTEpLCB2
YXIoLS10cmFuc3BhcmVudC0yKSwgdmFyKC0tb3BhcXVlLTMpKTsKKyAgICB9CisKKyAgICAjb3Bh
cXVlLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LW9wYXF1ZSB7CisgICAgICAgIGJhY2tncm91bmQt
aW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1vcGFxdWUtMSksIHZhcigtLXRyYW5zcGFyZW50
LTIpLCB2YXIoLS10cmFuc3BhcmVudC0zKSwgdmFyKC0tb3BhcXVlLTQpKTsKKyAgICB9CisKKyAg
ICAjb3BhcXVlLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LXBhcnRpYWwgeworICAgICAgICBiYWNr
Z3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tb3BhcXVlLTEpLCB2YXIoLS10cmFu
c3BhcmVudC0yKSwgdmFyKC0tdHJhbnNwYXJlbnQtMyksIHZhcigtLXBhcnRpYWwtNCkpOworICAg
IH0KKworICAgICNwYXJ0aWFsLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LXBhcnRpYWwgeworICAg
ICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tcGFydGlhbC0xKSwg
dmFyKC0tdHJhbnNwYXJlbnQtMiksIHZhcigtLXRyYW5zcGFyZW50LTMpLCB2YXIoLS1wYXJ0aWFs
LTQpKTsKKyAgICB9CisKKyAgICAjcGFydGlhbC10cmFuc3BhcmVudC10cmFuc3BhcmVudC1vcGFx
dWUgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tcGFy
dGlhbC0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMiksIHZhcigtLXRyYW5zcGFyZW50LTMpLCB2YXIo
LS1vcGFxdWUtNCkpOworICAgIH0KKworICAgICNvcGFxdWUtdHJhbnNwYXJlbnQtdHJhbnNwYXJl
bnQtdHJhbnNwYXJlbnQtb3BhcXVlIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFy
LWdyYWRpZW50KHZhcigtLW9wYXF1ZS0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMiksIHZhcigtLXRy
YW5zcGFyZW50LTMpLCB2YXIoLS10cmFuc3BhcmVudC00KSwgdmFyKC0tb3BhcXVlLTIpKTsKKyAg
ICB9CisKKyAgICAjb3BhcXVlLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LXBh
cnRpYWwgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0t
b3BhcXVlLTEpLCB2YXIoLS10cmFuc3BhcmVudC0yKSwgdmFyKC0tdHJhbnNwYXJlbnQtMyksIHZh
cigtLXRyYW5zcGFyZW50LTQpLCB2YXIoLS1wYXJ0aWFsLTIpKTsKKyAgICB9CisKKyAgICAjcGFy
dGlhbC10cmFuc3BhcmVudC10cmFuc3BhcmVudC10cmFuc3BhcmVudC1wYXJ0aWFsIHsKKyAgICAg
ICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLXBhcnRpYWwtMSksIHZh
cigtLXRyYW5zcGFyZW50LTIpLCB2YXIoLS10cmFuc3BhcmVudC0zKSwgdmFyKC0tdHJhbnNwYXJl
bnQtNCksIHZhcigtLXBhcnRpYWwtMikpOworICAgIH0KKworICAgICNwYXJ0aWFsLXRyYW5zcGFy
ZW50LXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LW9wYXF1ZSB7CisgICAgICAgIGJhY2tncm91bmQt
aW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1wYXJ0aWFsLTEpLCB2YXIoLS10cmFuc3BhcmVu
dC0yKSwgdmFyKC0tdHJhbnNwYXJlbnQtMyksIHZhcigtLXRyYW5zcGFyZW50LTQpLCB2YXIoLS1v
cGFxdWUtMikpOworICAgIH0KKworICAgICNvcGFxdWUtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQg
eworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tb3BhcXVl
LTEpLCB2YXIoLS10cmFuc3BhcmVudC0yKSwgdmFyKC0tdHJhbnNwYXJlbnQtMykpOworICAgIH0K
KworICAgICNwYXJ0aWFsLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50IHsKKyAgICAgICAgYmFja2dy
b3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLXBhcnRpYWwtMSksIHZhcigtLXRyYW5z
cGFyZW50LTIpLCB2YXIoLS10cmFuc3BhcmVudC0zKSk7CisgICAgfQorCisgICAgI3RyYW5zcGFy
ZW50LXRyYW5zcGFyZW50LW9wYXF1ZSB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVh
ci1ncmFkaWVudCh2YXIoLS10cmFuc3BhcmVudC0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMiksIHZh
cigtLW9wYXF1ZS0zKSk7CisgICAgfQorCisgICAgI3RyYW5zcGFyZW50LXRyYW5zcGFyZW50LXBh
cnRpYWwgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0t
dHJhbnNwYXJlbnQtMSksIHZhcigtLXRyYW5zcGFyZW50LTIpLCB2YXIoLS1wYXJ0aWFsLTMpKTsK
KyAgICB9CisKKyAgICAjdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQgeworICAg
ICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tdHJhbnNwYXJlbnQt
MSksIHZhcigtLXRyYW5zcGFyZW50LTIpLCB2YXIoLS10cmFuc3BhcmVudC0zKSk7CisgICAgfQor
CisgICAgI3RyYW5zcGFyZW50LW9wYXF1ZS10cmFuc3BhcmVudCB7CisgICAgICAgIGJhY2tncm91
bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS10cmFuc3BhcmVudC0xKSwgdmFyKC0tb3Bh
cXVlLTIpLCB2YXIoLS10cmFuc3BhcmVudC0zKSk7CisgICAgfQorICAgICN0cmFuc3BhcmVudC1w
YXJ0aWFsLXRyYW5zcGFyZW50IHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdy
YWRpZW50KHZhcigtLXRyYW5zcGFyZW50LTEpLCB2YXIoLS1wYXJ0aWFsLTIpLCB2YXIoLS10cmFu
c3BhcmVudC0zKSk7CisgICAgfQorCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJvcGFxdWUtb3BhcXVlIj48L2Rpdj4KKzxkaXYgaWQ9InBhcnRpYWwtcGFydGlhbCI+PC9kaXY+
Cis8ZGl2IGlkPSJ0cmFuc3BhcmVudC10cmFuc3BhcmVudCI+PC9kaXY+Cis8ZGl2IGlkPSJ0cmFu
c3BhcmVudC1vcGFxdWUiPjwvZGl2PgorPGRpdiBpZD0idHJhbnNwYXJlbnQtcGFydGlhbCI+PC9k
aXY+Cis8ZGl2IGlkPSJvcGFxdWUtdHJhbnNwYXJlbnQiPjwvZGl2PgorPGRpdiBpZD0icGFydGlh
bC10cmFuc3BhcmVudCI+PC9kaXY+Cis8ZGl2IGlkPSJvcGFxdWUtdHJhbnNwYXJlbnQtb3BhcXVl
Ij48L2Rpdj4KKzxkaXYgaWQ9Im9wYXF1ZS10cmFuc3BhcmVudC1wYXJ0aWFsIj48L2Rpdj4KKzxk
aXYgaWQ9InBhcnRpYWwtdHJhbnNwYXJlbnQtcGFydGlhbCI+PC9kaXY+Cis8ZGl2IGlkPSJwYXJ0
aWFsLXRyYW5zcGFyZW50LW9wYXF1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJvcGFxdWUtdHJhbnNwYXJl
bnQtdHJhbnNwYXJlbnQtb3BhcXVlIj48L2Rpdj4KKzxkaXYgaWQ9Im9wYXF1ZS10cmFuc3BhcmVu
dC10cmFuc3BhcmVudC1wYXJ0aWFsIj48L2Rpdj4KKzxkaXYgaWQ9InBhcnRpYWwtdHJhbnNwYXJl
bnQtdHJhbnNwYXJlbnQtcGFydGlhbCI+PC9kaXY+Cis8ZGl2IGlkPSJwYXJ0aWFsLXRyYW5zcGFy
ZW50LXRyYW5zcGFyZW50LW9wYXF1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJvcGFxdWUtdHJhbnNwYXJl
bnQtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtb3BhcXVlIj48L2Rpdj4KKzxkaXYgaWQ9Im9wYXF1
ZS10cmFuc3BhcmVudC10cmFuc3BhcmVudC10cmFuc3BhcmVudC1wYXJ0aWFsIj48L2Rpdj4KKzxk
aXYgaWQ9InBhcnRpYWwtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtcGFydGlh
bCI+PC9kaXY+Cis8ZGl2IGlkPSJwYXJ0aWFsLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LXRyYW5z
cGFyZW50LW9wYXF1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJvcGFxdWUtdHJhbnNwYXJlbnQtdHJhbnNw
YXJlbnQiPjwvZGl2PgorPGRpdiBpZD0icGFydGlhbC10cmFuc3BhcmVudC10cmFuc3BhcmVudCI+
PC9kaXY+Cis8ZGl2IGlkPSJ0cmFuc3BhcmVudC10cmFuc3BhcmVudC1vcGFxdWUiPjwvZGl2Pgor
PGRpdiBpZD0idHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtcGFydGlhbCI+PC9kaXY+Cis8ZGl2IGlk
PSJ0cmFuc3BhcmVudC10cmFuc3BhcmVudC10cmFuc3BhcmVudCI+PC9kaXY+Cis8ZGl2IGlkPSJ0
cmFuc3BhcmVudC1vcGFxdWUtdHJhbnNwYXJlbnQiPjwvZGl2PgorPGRpdiBpZD0idHJhbnNwYXJl
bnQtcGFydGlhbC10cmFuc3BhcmVudCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447927</attachid>
            <date>2021-12-23 19:12:26 -0800</date>
            <delta_ts>2021-12-24 08:48:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234653-20211223191226.patch</filename>
            <type>text/plain</type>
            <size>36788</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NzQxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIxLTEyLTIzICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBPbiBzeXN0ZW1zIHdpdGhvdXQgQ0cg
c3VwcG9ydCBmb3IgYWxwaGEgcHJlbXVsdGlwbGllZCBncmFkaWVudHMsIHRoZSBDR0dyYWRpZW50
UmVmIHBhdGggc2hvdWxkIHN0aWxsIGJlIHVzZWQgZm9yIHRoZSBzdWJzZXQgb2YgZ3JhZGllbnRz
IHRoYXQgY2FuIHRyYW5zZm9ybWVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzQ2NTMKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIu
CisKKyAgICAgICAgVGVzdDogZmFzdC9ncmFkaWVudHMvYWxwaGEtcHJlbXVsdGlwbGllZC1yZXBy
ZXNlbnRhYmxlLWJ5LXVucHJlbXVsdGlwbGllZC5odG1sCisKKyAgICAgICAgT3B0aW1pemUgZ3Jh
ZGllbnQgcmVuZGVyaW5nIG9uIHN5c3RlbXMgd2l0aG91dCBhIHZlcnNpb24gb2YgQ29yZUdyYXBo
aWNzIHRoYXQgc3VwcG9ydHMKKyAgICAgICAgYWxwaGEgcHJlbXVsdGlwbGllZCBncmFkaWVudHMg
YnkgdXNpbmcgdGhlIENHR3JhZGllbnRSZWYgY29kZSBwYXRoIGZvciB0aGUgc3Vic2V0IG9mCisg
ICAgICAgIGFscGhhIHByZW11bHRpcGxpZWQgZ3JhZGllbnRzIHRoYXQgY2FuIGJlIHJlcHJlc2Vu
dGVkIGFzIGFscGhhIG5vbi1wcmVtdWx0aXBsaWVkIGdyYWRpZW50cy4KKworICAgICAgICBUd28g
dHlwZXMgb2Ygb3B0aW1pemF0aW9ucyBhcmUgcG9zc2libGUgZm9yIHR3byBjbGFzc2VzIG9mIHRo
aXMgc3Vic2V0OgorCisgICAgICAgICAgMS4gQW55IGdyYWRpZW50IHRoYXQgdXNlcyB0aGUgc2Ft
ZSBhbHBoYSB2YWx1ZSBmb3IgYWxsIGNvbG9yIHN0b3BzIGNhbiBiZSB1c2VkIGFzIGlzCisgICAg
ICAgICAgICAgd2l0aCB0aGUgYWxwaGEgbm9uLXByZW11bHRpcGxpZWQgQ0dHcmFkaWVudFJlZi4K
KyAgICAgICAgICAyLiBBbnkgZ3JhZGllbnQgdGhhdCBjb25mb3JtcyB0byB0aGUgcnVsZSB0aGF0
ICJhbnkgdHdvIGNvbnNlY3V0aXZlIGNvbG9yIHN0b3BzIG11c3QgCisgICAgICAgICAgICAgZWl0
aGVyIGhhdmUgb25lIHRoYXQgaXMgZnVsbHkgdHJhbnNwYXJlbnQgb3IgaGF2ZSB0aGUgc2FtZSBh
bHBoYSB2YWx1ZSBmb3IgYm90aCIKKyAgICAgICAgICAgICBjYW4gYmUgdHJhbnNmb3JtZWQgaW50
byBhbiBpZGVudGljYWwgYWxwaGEgbm9uLXByZW11bHRpcGxpZWQgZ3JhZGllbnQgYnkgdHJhbnNm
b3JtaW5nCisgICAgICAgICAgICAgdGhlIGZ1bGx5IHRyYW5zcGFyZW50IHN0b3BzIGludG8gZWl0
aGVyIG9uZSBvciB0d28gc3RvcHMuIEEgY29tbWVudCBpbiB0aGUgY29kZQorICAgICAgICAgICAg
IGdvZXMgaW50byBtdWNoIG1vcmUgZGV0YWlsIGFib3V0IHRoaXMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudFJlbmRlcmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y2xhc3NpZnlBbHBoYVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6YW5hbHl6ZUNvbG9yU3Rv
cHNGb3JFbXVsYXRlZEFscGhhUHJlbXVsaXBsaWNhdGlvbk9wcGVydHVuaXR5KToKKyAgICAgICAg
KFdlYkNvcmU6OmFscGhhVHJhbnNmb3JtU3RvcHNUb0VtdWxhdGVBbHBoYVByZW11bGlwbGljYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRSZW5kZXJlckNHOjpwaWNrU3RyYXRlZ3kg
Y29uc3QpOgorCiAyMDIxLTEyLTIzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgV1RGOjpVVUlEIGNsYXNzIHdoaWNoIGlzIG5hdGl2ZWx5IGEgMTI4LWJp
dCBpbnRlZ2VyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFk
aWVudFJlbmRlcmVyQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHAJKHJldmlzaW9uIDI4NzQxMikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDM1MiBAQCBHcmFkaWVudFJlbmRlcmVyQ0c6
OkdyYWRpZW50UmVuZGVyZXJDRyhDb2xvckludGVycG9sYXQKIAogLy8gTUFSSzogLSBTdHJhdGVn
eSBzZWxlY3Rpb24uCiAKKyNpZiAhSEFWRShDT1JFX0dSQVBISUNTX1BSRU1VTFRJUExJRURfSU5U
RVJQT0xBVElPTl9HUkFESUVOVCkKKworZW51bSBjbGFzcyBFbXVsYXRlZEFscGhhUHJlbXVsaXBs
aWNhdGlvbkFuYWx5c2lzUmVzdWx0IHsKKyAgICBVc2VHcmFkaWVudEFzSXMsCisgICAgVXNlR3Jh
ZGllbnRXaXRoQWxwaGFUcmFuc2Zvcm1zLAorICAgIFVzZVNoYWRpbmcKK307CisKK2VudW0gY2xh
c3MgQWxwaGFUeXBlIHsKKyAgICBPcGFxdWUsCisgICAgUGFydGlhbGx5VHJhbnNwYXJlbnQsCisg
ICAgRnVsbHlUcmFuc3BhcmVudAorfTsKKworc3RhdGljIEFscGhhVHlwZSBjbGFzc2lmeUFscGhh
VHlwZShmbG9hdCBhbHBoYSkKK3sKKyAgICBpZiAoYWxwaGEgPT0gMS4wZikKKyAgICAgICAgcmV0
dXJuIEFscGhhVHlwZTo6T3BhcXVlOworICAgIGlmIChhbHBoYSA9PSAwLjBmKQorICAgICAgICBy
ZXR1cm4gQWxwaGFUeXBlOjpGdWxseVRyYW5zcGFyZW50OworICAgIHJldHVybiBBbHBoYVR5cGU6
OlBhcnRpYWxseVRyYW5zcGFyZW50OworfQorCitzdGF0aWMgRW11bGF0ZWRBbHBoYVByZW11bGlw
bGljYXRpb25BbmFseXNpc1Jlc3VsdCBhbmFseXplQ29sb3JTdG9wc0ZvckVtdWxhdGVkQWxwaGFQ
cmVtdWxpcGxpY2F0aW9uT3BwZXJ0dW5pdHkoY29uc3QgR3JhZGllbnRDb2xvclN0b3BzJiBzdG9w
cykKK3sKKyAgICBpZiAoc3RvcHMuc2l6ZSgpIDwgMikKKyAgICAgICAgcmV0dXJuIEVtdWxhdGVk
QWxwaGFQcmVtdWxpcGxpY2F0aW9uQW5hbHlzaXNSZXN1bHQ6OlVzZUdyYWRpZW50QXNJczsKKwor
ICAgIGJvb2wgdW5pZm9ybUFscGhhID0gdHJ1ZTsKKworICAgIGF1dG8mIGluaXRpYWxTdG9wID0g
KnN0b3BzLmJlZ2luKCk7CisgICAgYXV0byBwcmV2aW91c1N0b3BBbHBoYSA9IGluaXRpYWxTdG9w
LmNvbG9yLmFscGhhQXNGbG9hdCgpOworICAgIGF1dG8gcHJldmlvdXNTdG9wQWxwaGFUeXBlID0g
Y2xhc3NpZnlBbHBoYVR5cGUocHJldmlvdXNTdG9wQWxwaGEpOworCisgICAgYXV0byBzdG9wSXRl
cmF0b3IgPSBzdG9wcy5iZWdpbigpOworICAgICsrc3RvcEl0ZXJhdG9yOworCisgICAgd2hpbGUg
KHN0b3BJdGVyYXRvciAhPSBzdG9wcy5lbmQoKSkgeworICAgICAgICBhdXRvJiBzdG9wID0gKnN0
b3BJdGVyYXRvcjsKKworICAgICAgICBhdXRvIHN0b3BBbHBoYSA9IHN0b3AuY29sb3IuYWxwaGFB
c0Zsb2F0KCk7CisgICAgICAgIGF1dG8gc3RvcEFscGhhVHlwZSA9IGNsYXNzaWZ5QWxwaGFUeXBl
KHN0b3BBbHBoYSk7CisKKyAgICAgICAgc3dpdGNoIChzdG9wQWxwaGFUeXBlKSB7CisgICAgICAg
IGNhc2UgQWxwaGFUeXBlOjpPcGFxdWU6CisgICAgICAgICAgICBzd2l0Y2ggKHByZXZpb3VzU3Rv
cEFscGhhVHlwZSkgeworICAgICAgICAgICAgY2FzZSBBbHBoYVR5cGU6Ok9wYXF1ZToKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFUeXBlOjpQYXJ0aWFsbHlU
cmFuc3BhcmVudDoKKyAgICAgICAgICAgICAgICByZXR1cm4gRW11bGF0ZWRBbHBoYVByZW11bGlw
bGljYXRpb25BbmFseXNpc1Jlc3VsdDo6VXNlU2hhZGluZzsKKyAgICAgICAgICAgIGNhc2UgQWxw
aGFUeXBlOjpGdWxseVRyYW5zcGFyZW50OgorICAgICAgICAgICAgICAgIHVuaWZvcm1BbHBoYSA9
IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBBbHBoYVR5cGU6OlBhcnRpYWxseVRyYW5zcGFyZW50
OgorICAgICAgICAgICAgc3dpdGNoIChwcmV2aW91c1N0b3BBbHBoYVR5cGUpIHsKKyAgICAgICAg
ICAgIGNhc2UgQWxwaGFUeXBlOjpPcGFxdWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIEVtdWxh
dGVkQWxwaGFQcmVtdWxpcGxpY2F0aW9uQW5hbHlzaXNSZXN1bHQ6OlVzZVNoYWRpbmc7CisgICAg
ICAgICAgICBjYXNlIEFscGhhVHlwZTo6UGFydGlhbGx5VHJhbnNwYXJlbnQ6CisgICAgICAgICAg
ICAgICAgaWYgKHByZXZpb3VzU3RvcEFscGhhICE9IHN0b3BBbHBoYSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEVtdWxhdGVkQWxwaGFQcmVtdWxpcGxpY2F0aW9uQW5hbHlzaXNSZXN1bHQ6
OlVzZVNoYWRpbmc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFs
cGhhVHlwZTo6RnVsbHlUcmFuc3BhcmVudDoKKyAgICAgICAgICAgICAgICB1bmlmb3JtQWxwaGEg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQWxwaGFUeXBlOjpGdWxseVRyYW5zcGFyZW50Ogor
ICAgICAgICAgICAgc3dpdGNoIChwcmV2aW91c1N0b3BBbHBoYVR5cGUpIHsKKyAgICAgICAgICAg
IGNhc2UgQWxwaGFUeXBlOjpPcGFxdWU6CisgICAgICAgICAgICBjYXNlIEFscGhhVHlwZTo6UGFy
dGlhbGx5VHJhbnNwYXJlbnQ6CisgICAgICAgICAgICAgICAgdW5pZm9ybUFscGhhID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgQWxwaGFUeXBlOjpG
dWxseVRyYW5zcGFyZW50OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBwcmV2aW91c1N0b3BBbHBo
YSA9IHN0b3BBbHBoYTsKKyAgICAgICAgcHJldmlvdXNTdG9wQWxwaGFUeXBlID0gc3RvcEFscGhh
VHlwZTsKKworICAgICAgICArK3N0b3BJdGVyYXRvcjsKKyAgICB9CisKKyAgICByZXR1cm4gdW5p
Zm9ybUFscGhhID8gRW11bGF0ZWRBbHBoYVByZW11bGlwbGljYXRpb25BbmFseXNpc1Jlc3VsdDo6
VXNlR3JhZGllbnRBc0lzIDogRW11bGF0ZWRBbHBoYVByZW11bGlwbGljYXRpb25BbmFseXNpc1Jl
c3VsdDo6VXNlR3JhZGllbnRXaXRoQWxwaGFUcmFuc2Zvcm1zOworfQorCitzdGF0aWMgR3JhZGll
bnRDb2xvclN0b3BzIGFscGhhVHJhbnNmb3JtU3RvcHNUb0VtdWxhdGVBbHBoYVByZW11bGlwbGlj
YXRpb24oY29uc3QgR3JhZGllbnRDb2xvclN0b3BzJiBzdG9wcykKK3sKKyAgICAvLyBUaGUgZm9s
bG93aW5nIGlzIHRoZSBzZXQgb2YgdHJhbnNmb3JtcyB0aGF0IGNhbiBiZSBwZXJmb3JtZWQgb24g
YSBjb2xvciBzdG9wIGxpc3QgdG8gdHJhbnNmb3JtIGl0IGZyb20gb25lIHVzZWQgd2l0aCBhIHBy
ZW11bGlwbGllZCBhbHBoYSBncmFkaWVudAorICAgIC8vIGltcGxtZW50YXRpb24gdG8gb25lIHVz
ZWQgYnkgd2l0aCBhbiB1bi1wcmVtdWx0aXBsaWVkIGdyYWRpZW50IGltcGxlbWVudGF0aW9uLgor
CisgICAgLy8gLi4uIE9wYXF1ZSAgLT4gVHJhbnNwYXJlbnQgLT4gT3BhcXVlICAuLi4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0+ICAgIC4uLiBPcGFxdWUgIC0+IFRSQU5TRk9S
TXtUcmFuc3BhcmVudChQcmV2aW91c0NoYW5uZWxzKX0gfCBBRERJVElPTntUcmFuc3BhcmVudChO
ZXh0Q2hhbm5lbHMpfSAtPiBPcGFxdWUgIC4uLgorICAgIC8vIC4uLiBQYXJ0aWFsIC0+IFRyYW5z
cGFyZW50IC0+IFBhcnRpYWwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09
PiAgICAuLi4gUGFydGlhbCAtPiBUUkFOU0ZPUk17VHJhbnNwYXJlbnQoUHJldmlvdXNDaGFubmVs
cyl9IHwgQURESVRJT057VHJhbnNwYXJlbnQoTmV4dENoYW5uZWxzKX0gLT4gUGFydGlhbCAuLi4K
KyAgICAvLyAuLi4gT3BhcXVlICAtPiBUcmFuc3BhcmVudCAtPiBQYXJ0aWFsIC4uLiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9PT4gICAgLi4uIE9wYXF1ZSAgLT4gVFJBTlNGT1JN
e1RyYW5zcGFyZW50KFByZXZpb3VzQ2hhbm5lbHMpfSB8IEFERElUSU9Oe1RyYW5zcGFyZW50KE5l
eHRDaGFubmVscyl9IC0+IFBhcnRpYWwgLi4uCisgICAgLy8gLi4uIFBhcnRpYWwgLT4gVHJhbnNw
YXJlbnQgLT4gT3BhcXVlICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0+
ICAgIC4uLiBQYXJ0aWFsIC0+IFRSQU5TRk9STXtUcmFuc3BhcmVudChQcmV2aW91c0NoYW5uZWxz
KX0gfCBBRERJVElPTntUcmFuc3BhcmVudChOZXh0Q2hhbm5lbHMpfSAtPiBPcGFxdWUgIC4uLgor
ICAgIC8vCisgICAgLy8gLi4uIE9wYXF1ZSAgLT4gVHJhbnNwYXJlbnQgLT4gVHJhbnNwYXJlbnQg
LT4gT3BhcXVlICAuLi4gICAgICAgICAgICAgICAgICAgPT0+ICAgIC4uLiBPcGFxdWUgIC0+IFRS
QU5TRk9STXtUcmFuc3BhcmVudChQcmV2aW91c0NoYW5uZWxzKX0gLT4gVFJBTlNGT1JNe1RyYW5z
cGFyZW50KE5leHRDaGFubmVscyl9IC0+IE9wYXF1ZSAgLi4uCisgICAgLy8gLi4uIFBhcnRpYWwg
LT4gVHJhbnNwYXJlbnQgLT4gVHJhbnNwYXJlbnQgLT4gUGFydGlhbCAuLi4gICAgICAgICAgICAg
ICAgICAgPT0+ICAgIC4uLiBQYXJ0aWFsIC0+IFRSQU5TRk9STXtUcmFuc3BhcmVudChQcmV2aW91
c0NoYW5uZWxzKX0gLT4gVFJBTlNGT1JNe1RyYW5zcGFyZW50KE5leHRDaGFubmVscyl9IC0+IFBh
cnRpYWwgLi4uCisgICAgLy8gLi4uIE9wYXF1ZSAgLT4gVHJhbnNwYXJlbnQgLT4gVHJhbnNwYXJl
bnQgLT4gUGFydGlhbCAuLi4gICAgICAgICAgICAgICAgICAgPT0+ICAgIC4uLiBPcGFxdWUgIC0+
IFRSQU5TRk9STXtUcmFuc3BhcmVudChQcmV2aW91c0NoYW5uZWxzKX0gLT4gVFJBTlNGT1JNe1Ry
YW5zcGFyZW50KE5leHRDaGFubmVscyl9IC0+IFBhcnRpYWwgLi4uCisgICAgLy8gLi4uIFBhcnRp
YWwgLT4gVHJhbnNwYXJlbnQgLT4gVHJhbnNwYXJlbnQgLT4gT3BhcXVlICAuLi4gICAgICAgICAg
ICAgICAgICAgPT0+ICAgIC4uLiBQYXJ0aWFsIC0+IFRSQU5TRk9STXtUcmFuc3BhcmVudChQcmV2
aW91c0NoYW5uZWxzKX0gLT4gVFJBTlNGT1JNe1RyYW5zcGFyZW50KE5leHRDaGFubmVscyl9IC0+
IE9wYXF1ZSAgLi4uCisgICAgLy8KKyAgICAvLyAuLi4gT3BhcXVlICAtPiBUcmFuc3BhcmVudCAt
PiBUcmFuc3BhcmVudCAtPiBUcmFuc3BhcmVudCAtPiBPcGFxdWUgIC4uLiAgICA9PT4gICAgLi4u
IE9wYXF1ZSAgLT4gVFJBTlNGT1JNe1RyYW5zcGFyZW50KFByZXZpb3VzQ2hhbm5lbHMpfSAtPiBU
cmFuc3BhcmVudCAtPiBUUkFOU0ZPUk17VHJhbnNwYXJlbnQoTmV4dENoYW5uZWxzKX0gLT4gT3Bh
cXVlICAuLi4KKyAgICAvLyAuLi4gUGFydGlhbCAtPiBUcmFuc3BhcmVudCAtPiBUcmFuc3BhcmVu
dCAtPiBUcmFuc3BhcmVudCAtPiBQYXJ0aWFsIC4uLiAgICA9PT4gICAgLi4uIFBhcnRpYWwgLT4g
VFJBTlNGT1JNe1RyYW5zcGFyZW50KFByZXZpb3VzQ2hhbm5lbHMpfSAtPiBUcmFuc3BhcmVudCAt
PiBUUkFOU0ZPUk17VHJhbnNwYXJlbnQoTmV4dENoYW5uZWxzKX0gLT4gUGFydGlhbCAuLi4KKyAg
ICAvLyAuLi4gT3BhcXVlICAtPiBUcmFuc3BhcmVudCAtPiBUcmFuc3BhcmVudCAtPiBUcmFuc3Bh
cmVudCAtPiBQYXJ0aWFsIC4uLiAgICA9PT4gICAgLi4uIE9wYXF1ZSAgLT4gVFJBTlNGT1JNe1Ry
YW5zcGFyZW50KFByZXZpb3VzQ2hhbm5lbHMpfSAtPiBUcmFuc3BhcmVudCAtPiBUUkFOU0ZPUk17
VHJhbnNwYXJlbnQoTmV4dENoYW5uZWxzKX0gLT4gUGFydGlhbCAuLi4KKyAgICAvLyAuLi4gUGFy
dGlhbCAtPiBUcmFuc3BhcmVudCAtPiBUcmFuc3BhcmVudCAtPiBUcmFuc3BhcmVudCAtPiBPcGFx
dWUgIC4uLiAgICA9PT4gICAgLi4uIFBhcnRpYWwgLT4gVFJBTlNGT1JNe1RyYW5zcGFyZW50KFBy
ZXZpb3VzQ2hhbm5lbHMpfSAtPiBUcmFuc3BhcmVudCAtPiBUUkFOU0ZPUk17VHJhbnNwYXJlbnQo
TmV4dENoYW5uZWxzKX0gLT4gT3BhcXVlICAuLi4KKyAgICAvLworICAgIC8vIFsgVHJhbnNwYXJl
bnQgLT4gT3BhcXVlICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID09PiAgICBbIFRSQU5TRk9STXtUcmFuc3BhcmVudChOZXh0Q2hhbm5lbHMpfSAtPiBP
cGFxdWUgICAgICAuLi4KKyAgICAvLyBbIFRyYW5zcGFyZW50IC0+IFBhcnRpYWwgICAgIC4uLiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT4gICAgWyBUUkFOU0ZP
Uk17VHJhbnNwYXJlbnQoTmV4dENoYW5uZWxzKX0gLT4gUGFydGlhbCAgICAgLi4uCisgICAgLy8g
WyBUcmFuc3BhcmVudCAtPiBUcmFuc3BhcmVudCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPT0+ICAgIFsgVHJhbnNwYXJlbnQgICAgICAgICAgICAgICAgICAg
ICAgICAgIC0+IFRyYW5zcGFyZW50IC4uLgorICAgIC8vCisgICAgLy8gLi4uIE9wYXF1ZSAgICAg
ICAtPiBUcmFuc3BhcmVudCBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPT0+ICAgIC4uLiBPcGFxdWUgICAgICAtPiBUUkFOU0ZPUk17VHJhbnNwYXJlbnQoUHJldmlv
dXNDaGFubmVscyl9IF0KKyAgICAvLyAuLi4gUGFydGlhbCAgICAgIC0+IFRyYW5zcGFyZW50IF0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT4gICAgLi4uIFBhcnRp
YWwgICAgIC0+IFRSQU5TRk9STXtUcmFuc3BhcmVudChQcmV2aW91c0NoYW5uZWxzKX0gXQorICAg
IC8vIC4uLiBUcmFuc3BhcmVudCAgLT4gVHJhbnNwYXJlbnQgXSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID09PiAgICAuLi4gVHJhbnNwYXJlbnQgLT4gVHJhbnNwYXJl
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisKKyAgICAvLyBGb3IgZWFjaCBzdG9w
IHRoZSBmb2xsb3dpbmcgYWN0aW9ucyBhcmUgcG9zc2libGU6CisgICAgLy8gICAgICAtIERlZmF1
bHQgICAgICAgICAgIEFwcGVuZCBzZWxmCisgICAgLy8gICAgICAtIFN0ZWFsIHByZXZpb3VzICAg
IEFwcGVuZCBwcmV2aW91cy5jb2xvcldpdGhBbHBoYSgwLjBmKQorICAgIC8vICAgICAgLSBTdGVh
bCBuZXh0ICAgICAgICBBcHBlbmQgbmV4dC5jb2xvcldpdGhBbHBoYSgwLjBmKQorICAgIC8vICAg
ICAgLSBTcGxpdCAgICAgICAgICAgICBBcHBlbmQgcHJldmlvdXMuY29sb3JXaXRoQWxwaGEoMC4w
ZikgKyBuZXh0LmNvbG9yV2l0aEFscGhhKDAuMGYpCisKKyAgICBBU1NFUlQoc3RvcHMuc2l6ZSgp
ID4gMSk7CisKKyAgICAvLyBTcGVjaWFsIGNhc2Ugd2hlbiB3ZSBvbmx5IGhhdmUgdHdvIHN0b3Bz
IHRvIGF2b2lkIGNvbXBsaWNhdGluZyB0aGUgY2FzZXMgd2l0aCBtb3JlLgorICAgIGlmIChzdG9w
cy5zaXplKCkgPT0gMikgeworICAgICAgICAvLyBJbGxlZ2FsIHBhaXJzIChydWxlZCBvdXQgaW4g
YW5hbHlzaXMpCisgICAgICAgIC8vICAgT3BhcXVlICAtPiBQYXJ0aWFsCisgICAgICAgIC8vICAg
UGFydGlhbCAtPiBPcGFxdWUKKyAgICAgICAgLy8KKyAgICAgICAgLy8gUG9zc2libGUgcGFpcnMK
KyAgICAgICAgLy8gICBPcGFxdWUgICAgICAtPiBPcGFxdWUgICAgICAgKGRlZmF1bHQsIGRlZmF1
bHQpCisgICAgICAgIC8vICAgUGFydGlhbCAgICAgLT4gUGFydGlhbCAgICAgIChkZWZhdWx0LCBk
ZWZhdWx0KQorICAgICAgICAvLyAgIFRyYW5zcGFyZW50IC0+IFRyYW5zcGFyZW50ICAoZGVmYXVs
dCwgZGVmYXVsdCkKKyAgICAgICAgLy8gICBPcGFxdWUgICAgICAtPiBUcmFuc3BhcmVudCAgKGRl
ZmF1bHQsIHN0ZWFsIHByZXZpb3VzKQorICAgICAgICAvLyAgIFBhcnRpYWwgICAgIC0+IFRyYW5z
cGFyZW50ICAoZGVmYXVsdCwgc3RlYWwgcHJldmlvdXMpCisgICAgICAgIC8vICAgVHJhbnNwYXJl
bnQgLT4gT3BhcXVlICAgICAgIChzdGVhbHMgbmV4dCwgZGVmYXVsdCkKKyAgICAgICAgLy8gICBU
cmFuc3BhcmVudCAtPiBQYXJ0aWFsICAgICAgKHN0ZWFscyBuZXh0LCBkZWZhdWx0KQorCisgICAg
ICAgIEdyYWRpZW50Q29sb3JTdG9wczo6U3RvcFZlY3RvciByZXN1bHQ7CisgICAgICAgIHJlc3Vs
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDIpOworCisgICAgICAgIGF1dG8mIHN0b3AxID0gc3Rv
cHMuc3RvcHMoKVswXTsKKyAgICAgICAgYXV0byYgc3RvcDIgPSBzdG9wcy5zdG9wcygpWzFdOwor
CisgICAgICAgIGF1dG8gc3RvcDFBbHBoYVR5cGUgPSBjbGFzc2lmeUFscGhhVHlwZShzdG9wMS5j
b2xvci5hbHBoYUFzRmxvYXQoKSk7CisgICAgICAgIGF1dG8gc3RvcDJBbHBoYVR5cGUgPSBjbGFz
c2lmeUFscGhhVHlwZShzdG9wMi5jb2xvci5hbHBoYUFzRmxvYXQoKSk7CisKKyAgICAgICAgc3dp
dGNoIChzdG9wMUFscGhhVHlwZSkgeworICAgICAgICBjYXNlIEFscGhhVHlwZTo6T3BhcXVlOgor
ICAgICAgICBjYXNlIEFscGhhVHlwZTo6UGFydGlhbGx5VHJhbnNwYXJlbnQ6CisgICAgICAgICAg
ICAvLyBBQ1RJT04gKHN0b3AxKTogRGVmYXVsdC4KKyAgICAgICAgICAgIHJlc3VsdC51bmNoZWNr
ZWRBcHBlbmQoc3RvcDEpOworCisgICAgICAgICAgICBzd2l0Y2ggKHN0b3AyQWxwaGFUeXBlKSB7
CisgICAgICAgICAgICBjYXNlIEFscGhhVHlwZTo6T3BhcXVlOgorICAgICAgICAgICAgY2FzZSBB
bHBoYVR5cGU6OlBhcnRpYWxseVRyYW5zcGFyZW50OgorICAgICAgICAgICAgICAgIC8vIEFDVElP
TiAoc3RvcDIpOiBEZWZhdWx0LgorICAgICAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBl
bmQoc3RvcDIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBbHBo
YVR5cGU6OkZ1bGx5VHJhbnNwYXJlbnQ6CisgICAgICAgICAgICAgICAgLy8gQUNUSU9OIChzdG9w
Mik6IFN0ZWFsIHByZXZpb3VzLgorICAgICAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBl
bmQoeyBzdG9wMi5vZmZzZXQsIHN0b3AxLmNvbG9yLmNvbG9yV2l0aEFscGhhKDAuMGYpIH0pOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIEFscGhhVHlwZTo6RnVsbHlUcmFuc3BhcmVudDoKKyAgICAgICAg
ICAgIHN3aXRjaCAoc3RvcDJBbHBoYVR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFUeXBl
OjpPcGFxdWU6CisgICAgICAgICAgICBjYXNlIEFscGhhVHlwZTo6UGFydGlhbGx5VHJhbnNwYXJl
bnQ6CisgICAgICAgICAgICAgICAgLy8gQUNUSU9OIChzdG9wMSk6IFN0ZWFsIG5leHQuCisgICAg
ICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZCh7IHN0b3AxLm9mZnNldCwgc3RvcDIu
Y29sb3IuY29sb3JXaXRoQWxwaGEoMC4wZikgfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIEFscGhhVHlwZTo6RnVsbHlUcmFuc3BhcmVudDoKKyAgICAgICAgICAg
ICAgICAvLyBBQ1RJT04gKHN0b3AxKTogRGVmYXVsdC4KKyAgICAgICAgICAgICAgICByZXN1bHQu
dW5jaGVja2VkQXBwZW5kKHN0b3AxKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC8vIEFDVElPTiAoc3RvcDIpOiBEZWZhdWx0LgorICAgICAgICAg
ICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChzdG9wMik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBHcmFkaWVudENvbG9yU3RvcHM6OlNvcnRlZCB7IFdU
Rk1vdmUocmVzdWx0KSB9OworICAgIH0KKworICAgIEdyYWRpZW50Q29sb3JTdG9wczo6U3RvcFZl
Y3RvciByZXN1bHQ7CisKKyAgICAvLyAxLiBIYW5kbGUgZmlyc3Qgc3RvcC4KKyAgICAvLworICAg
IC8vIFtmaXJzdCBzdG9wIG1hdHRlcnNdCisgICAgLy8KKyAgICAvLyBJbGxlZ2FsIHBhaXJzIChy
dWxlZCBvdXQgaW4gYW5hbHlzaXMpCisgICAgLy8gICBPcGFxdWUgIC0+IFBhcnRpYWwKKyAgICAv
LyAgIFBhcnRpYWwgLT4gT3BhcXVlCisgICAgLy8KKyAgICAvLyBQb3NzaWJsZSBwYWlycworICAg
IC8vICAgT3BhcXVlICAgICAgLT4gT3BhcXVlICAgICAgIChkZWZhdWx0KQorICAgIC8vICAgUGFy
dGlhbCAgICAgLT4gUGFydGlhbCAgICAgIChkZWZhdWx0KQorICAgIC8vICAgVHJhbnNwYXJlbnQg
LT4gVHJhbnNwYXJlbnQgIChkZWZhdWx0KQorICAgIC8vICAgT3BhcXVlICAgICAgLT4gVHJhbnNw
YXJlbnQgIChkZWZhdWx0KQorICAgIC8vICAgUGFydGlhbCAgICAgLT4gVHJhbnNwYXJlbnQgIChk
ZWZhdWx0KQorICAgIC8vICAgVHJhbnNwYXJlbnQgLT4gT3BhcXVlICAgICAgIChzdGVhbHMgbmV4
dCkKKyAgICAvLyAgIFRyYW5zcGFyZW50IC0+IFBhcnRpYWwgICAgICAoc3RlYWxzIG5leHQpCisK
KyAgICBhdXRvJiBmaXJzdFN0b3AgPSBzdG9wcy5zdG9wcygpWzBdOworICAgIGF1dG8mIHNlY29u
ZFN0b3AgPSBzdG9wcy5zdG9wcygpWzFdOworCisgICAgYXV0byBmaXJzdFN0b3BBbHBoYVR5cGUg
PSBjbGFzc2lmeUFscGhhVHlwZShmaXJzdFN0b3AuY29sb3IuYWxwaGFBc0Zsb2F0KCkpOworICAg
IGF1dG8gc2Vjb25kU3RvcEFscGhhVHlwZSA9IGNsYXNzaWZ5QWxwaGFUeXBlKHNlY29uZFN0b3Au
Y29sb3IuYWxwaGFBc0Zsb2F0KCkpOworCisgICAgaWYgKGZpcnN0U3RvcEFscGhhVHlwZSA9PSBB
bHBoYVR5cGU6OkZ1bGx5VHJhbnNwYXJlbnQgJiYgc2Vjb25kU3RvcEFscGhhVHlwZSAhPSBBbHBo
YVR5cGU6OkZ1bGx5VHJhbnNwYXJlbnQpIHsKKyAgICAgICAgLy8gQUNUSU9OOiBTdGVhbCBuZXh0
LgorICAgICAgICByZXN1bHQuYXBwZW5kKHsgZmlyc3RTdG9wLm9mZnNldCwgc2Vjb25kU3RvcC5j
b2xvci5jb2xvcldpdGhBbHBoYSgwLjBmKSB9KTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBB
Q1RJT046IERlZmF1bHQuCisgICAgICAgIHJlc3VsdC5hcHBlbmQoZmlyc3RTdG9wKTsKKyAgICB9
CisKKyAgICAvLyAyLiBIYW5kbGUgbWlkZGxlIHN0b3BzLgorICAgIC8vCisgICAgLy8gW21pZGRs
ZSBzdG9wIG1hdHRlcnNdCisgICAgLy8KKyAgICAvLyBJbGxlZ2FsIHRyaXBsZXRzIChydWxlZCBv
dXQgaW4gYW5hbHlzaXMpCisgICAgLy8gICBPcGFxdWUgICAgICAtPiBPcGFxdWUgICAgICAtPiBQ
YXJ0aWFsCisgICAgLy8gICBPcGFxdWUgICAgICAtPiBQYXJ0aWFsICAgICAtPiBQYXJ0aWFsCisg
ICAgLy8gICBPcGFxdWUgICAgICAtPiBQYXJ0aWFsICAgICAtPiBPcGFxdWUKKyAgICAvLyAgIFBh
cnRpYWwgICAgIC0+IE9wYXF1ZSAgICAgIC0+IE9wYXF1ZQorICAgIC8vICAgUGFydGlhbCAgICAg
LT4gUGFydGlhbCAgICAgLT4gT3BhcXVlCisgICAgLy8gICBQYXJ0aWFsICAgICAtPiBPcGFxdWUg
ICAgICAtPiBQYXJ0aWFsCisgICAgLy8KKyAgICAvLyBQb3NzaWJsZSB0cmlwbGV0cworICAgIC8v
ICAgT3BhcXVlICAgICAgLT4gT3BhcXVlICAgICAgLT4gT3BhcXVlICAgICAgIChkZWZhdWx0KQor
ICAgIC8vICAgUGFydGlhbCAgICAgLT4gUGFydGlhbCAgICAgLT4gUGFydGlhbCAgICAgIChkZWZh
dWx0KQorICAgIC8vICAgT3BhcXVlICAgICAgLT4gT3BhcXVlICAgICAgLT4gVHJhbnNwYXJlbnQg
IChkZWZhdWx0KQorICAgIC8vICAgT3BhcXVlICAgICAgLT4gUGFydGlhbCAgICAgLT4gVHJhbnNw
YXJlbnQgIChkZWZhdWx0KQorICAgIC8vICAgUGFydGlhbCAgICAgLT4gUGFydGlhbCAgICAgLT4g
VHJhbnNwYXJlbnQgIChkZWZhdWx0KQorICAgIC8vICAgUGFydGlhbCAgICAgLT4gT3BhcXVlICAg
ICAgLT4gVHJhbnNwYXJlbnQgIChkZWZhdWx0KQorICAgIC8vICAgVHJhbnNwYXJlbnQgLT4gT3Bh
cXVlICAgICAgLT4gVHJhbnNwYXJlbnQgIChkZWZhdWx0KQorICAgIC8vICAgVHJhbnNwYXJlbnQg
LT4gUGFydGlhbCAgICAgLT4gVHJhbnNwYXJlbnQgIChkZWZhdWx0KQorICAgIC8vICAgVHJhbnNw
YXJlbnQgLT4gVHJhbnNwYXJlbnQgLT4gVHJhbnNwYXJlbnQgIChkZWZhdWx0KQorICAgIC8vICAg
T3BhcXVlICAgICAgLT4gVHJhbnNwYXJlbnQgLT4gT3BhcXVlICAgICAgIChzcGxpdHMsIHN0ZWFs
cyBwcmV2aW91cyArIG5leHQpCisgICAgLy8gICBPcGFxdWUgICAgICAtPiBUcmFuc3BhcmVudCAt
PiBQYXJ0aWFsICAgICAgKHNwbGl0cywgc3RlYWxzIHByZXZpb3VzICsgbmV4dCkKKyAgICAvLyAg
IFBhcnRpYWwgICAgIC0+IFRyYW5zcGFyZW50IC0+IFBhcnRpYWwgICAgICAoc3BsaXRzLCBzdGVh
bHMgcHJldmlvdXMgKyBuZXh0KQorICAgIC8vICAgUGFydGlhbCAgICAgLT4gVHJhbnNwYXJlbnQg
LT4gT3BhcXVlICAgICAgIChzcGxpdHMsIHN0ZWFscyBwcmV2aW91cyArIG5leHQpCisgICAgLy8g
ICBUcmFuc3BhcmVudCAtPiBUcmFuc3BhcmVudCAtPiBPcGFxdWUgICAgICAgKHN0ZWFscyBuZXh0
KQorICAgIC8vICAgVHJhbnNwYXJlbnQgLT4gVHJhbnNwYXJlbnQgLT4gUGFydGlhbCAgICAgIChz
dGVhbHMgbmV4dCkKKyAgICAvLyAgIE9wYXF1ZSAgICAgIC0+IFRyYW5zcGFyZW50IC0+IFRyYW5z
cGFyZW50ICAoc3RlYWxzIHByZXZpb3VzKQorICAgIC8vICAgUGFydGlhbCAgICAgLT4gVHJhbnNw
YXJlbnQgLT4gVHJhbnNwYXJlbnQgIChzdGVhbHMgcHJldmlvdXMpCisKKyAgICBzaXplX3QgcHJl
dmlvdXNTdG9wSW5kZXggPSAwOworICAgIHNpemVfdCBzdG9wSW5kZXggPSAxOworICAgIHNpemVf
dCBuZXh0U3RvcEluZGV4ID0gMjsKKworICAgIGZvciAoOyBuZXh0U3RvcEluZGV4IDwgc3RvcHMu
c2l6ZSgpOyArK3ByZXZpb3VzU3RvcEluZGV4LCArK3N0b3BJbmRleCwgKytuZXh0U3RvcEluZGV4
KSB7CisgICAgICAgIGF1dG8mIHByZXZpb3VzU3RvcCA9IHN0b3BzLnN0b3BzKClbcHJldmlvdXNT
dG9wSW5kZXhdOworICAgICAgICBhdXRvJiBzdG9wID0gc3RvcHMuc3RvcHMoKVtzdG9wSW5kZXhd
OworICAgICAgICBhdXRvJiBuZXh0U3RvcCA9IHN0b3BzLnN0b3BzKClbbmV4dFN0b3BJbmRleF07
CisKKyAgICAgICAgYXV0byBwcmV2aW91c1N0b3BBbHBoYVR5cGUgPSBjbGFzc2lmeUFscGhhVHlw
ZShwcmV2aW91c1N0b3AuY29sb3IuYWxwaGFBc0Zsb2F0KCkpOworICAgICAgICBhdXRvIHN0b3BB
bHBoYVR5cGUgPSBjbGFzc2lmeUFscGhhVHlwZShzdG9wLmNvbG9yLmFscGhhQXNGbG9hdCgpKTsK
KyAgICAgICAgYXV0byBuZXh0U3RvcEFscGhhVHlwZSA9IGNsYXNzaWZ5QWxwaGFUeXBlKG5leHRT
dG9wLmNvbG9yLmFscGhhQXNGbG9hdCgpKTsKKworICAgICAgICBpZiAoc3RvcEFscGhhVHlwZSA9
PSBBbHBoYVR5cGU6OkZ1bGx5VHJhbnNwYXJlbnQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAocHJl
dmlvdXNTdG9wQWxwaGFUeXBlKSB7CisgICAgICAgICAgICBjYXNlIEFscGhhVHlwZTo6T3BhcXVl
OgorICAgICAgICAgICAgY2FzZSBBbHBoYVR5cGU6OlBhcnRpYWxseVRyYW5zcGFyZW50OgorICAg
ICAgICAgICAgICAgIHN3aXRjaCAobmV4dFN0b3BBbHBoYVR5cGUpIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIEFscGhhVHlwZTo6T3BhcXVlOgorICAgICAgICAgICAgICAgIGNhc2UgQWxwaGFUeXBl
OjpQYXJ0aWFsbHlUcmFuc3BhcmVudDoKKyAgICAgICAgICAgICAgICAgICAgLy8gQUNUSU9OOiBT
cGxpdC4KKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh7IHN0b3Aub2Zmc2V0LCBw
cmV2aW91c1N0b3AuY29sb3IuY29sb3JXaXRoQWxwaGEoMC4wZikgfSk7CisgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoeyBzdG9wLm9mZnNldCwgbmV4dFN0b3AuY29sb3IuY29sb3JX
aXRoQWxwaGEoMC4wZikgfSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgY2FzZSBBbHBoYVR5cGU6OkZ1bGx5VHJhbnNwYXJlbnQ6CisgICAgICAgICAgICAg
ICAgICAgIC8vIEFDVElPTjogU3RlYWwgcHJldmlvdXMuCisgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoeyBzdG9wLm9mZnNldCwgcHJldmlvdXNTdG9wLmNvbG9yLmNvbG9yV2l0aEFs
cGhhKDAuMGYpIH0pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgQWxwaGFUeXBl
OjpGdWxseVRyYW5zcGFyZW50OgorICAgICAgICAgICAgICAgIHN3aXRjaCAobmV4dFN0b3BBbHBo
YVR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEFscGhhVHlwZTo6T3BhcXVlOgorICAgICAg
ICAgICAgICAgIGNhc2UgQWxwaGFUeXBlOjpQYXJ0aWFsbHlUcmFuc3BhcmVudDoKKyAgICAgICAg
ICAgICAgICAgICAgLy8gQUNUSU9OOiBTdGVhbCBuZXh0LgorICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKHsgc3RvcC5vZmZzZXQsIG5leHRTdG9wLmNvbG9yLmNvbG9yV2l0aEFscGhh
KDAuMGYpIH0pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGNhc2UgQWxwaGFUeXBlOjpGdWxseVRyYW5zcGFyZW50OgorICAgICAgICAgICAgICAgICAgICAv
LyBBQ1RJT046IERlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3Rv
cCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIC8vIEFDVElPTjogRGVmYXVsdC4KKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3Rv
cCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlQobmV4dFN0b3BJbmRleCA9PSBzdG9w
cy5zaXplKCkpOworCisgICAgLy8gMy4gSGFuZGxlIGxhc3Qgc3RvcC4KKyAgICAvLworICAgIC8v
IFtsYXN0IHN0b3AgbWF0dGVyc10KKyAgICAvLworICAgIC8vIElsbGVnYWwgcGFpcnMgKHJ1bGVk
IG91dCBpbiBhbmFseXNpcyBwaGFzZSkKKyAgICAvLyAgIE9wYXF1ZSAgLT4gUGFydGlhbAorICAg
IC8vICAgUGFydGlhbCAtPiBPcGFxdWUKKyAgICAvLworICAgIC8vIFBvc3NpYmxlIHBhaXJzCisg
ICAgLy8gICBPcGFxdWUgICAgICAtPiBPcGFxdWUgICAgICAgKGRlZmF1bHQpCisgICAgLy8gICBQ
YXJ0aWFsICAgICAtPiBQYXJ0aWFsICAgICAgKGRlZmF1bHQpCisgICAgLy8gICBUcmFuc3BhcmVu
dCAtPiBUcmFuc3BhcmVudCAgKGRlZmF1bHQpCisgICAgLy8gICBPcGFxdWUgICAgICAtPiBUcmFu
c3BhcmVudCAgKHN0ZWFscyBwcmV2aW91cykKKyAgICAvLyAgIFBhcnRpYWwgICAgIC0+IFRyYW5z
cGFyZW50ICAoc3RlYWxzIHByZXZpb3VzKQorICAgIC8vICAgVHJhbnNwYXJlbnQgLT4gT3BhcXVl
ICAgICAgIChkZWZhdWx0KQorICAgIC8vICAgVHJhbnNwYXJlbnQgLT4gUGFydGlhbCAgICAgIChk
ZWZhdWx0KQorCisgICAgYXV0byYgc2Vjb25kVG9MYXN0U3RvcCA9IHN0b3BzLnN0b3BzKClbcHJl
dmlvdXNTdG9wSW5kZXhdOworICAgIGF1dG8mIGxhc3RTdG9wID0gc3RvcHMuc3RvcHMoKVtzdG9w
SW5kZXhdOworCisgICAgYXV0byBzZWNvbmRUb0xhc3RTdG9wQWxwaGFUeXBlID0gY2xhc3NpZnlB
bHBoYVR5cGUoc2Vjb25kVG9MYXN0U3RvcC5jb2xvci5hbHBoYUFzRmxvYXQoKSk7CisgICAgYXV0
byBsYXN0U3RvcEFscGhhVHlwZSA9IGNsYXNzaWZ5QWxwaGFUeXBlKGxhc3RTdG9wLmNvbG9yLmFs
cGhhQXNGbG9hdCgpKTsKKworICAgIGlmIChsYXN0U3RvcEFscGhhVHlwZSA9PSBBbHBoYVR5cGU6
OkZ1bGx5VHJhbnNwYXJlbnQgJiYgc2Vjb25kVG9MYXN0U3RvcEFscGhhVHlwZSAhPSBBbHBoYVR5
cGU6OkZ1bGx5VHJhbnNwYXJlbnQpIHsKKyAgICAgICAgLy8gQUNUSU9OOiBTdGVhbCBwcmV2aW91
cy4KKyAgICAgICAgcmVzdWx0LmFwcGVuZCh7IGxhc3RTdG9wLm9mZnNldCwgc2Vjb25kVG9MYXN0
U3RvcC5jb2xvci5jb2xvcldpdGhBbHBoYSgwLjBmKSB9KTsKKyAgICB9IGVsc2UgeworICAgICAg
ICAvLyBBQ1RJT046IERlZmF1bHQuCisgICAgICAgIHJlc3VsdC5hcHBlbmQobGFzdFN0b3ApOwor
ICAgIH0KKworICAgIHJldHVybiBHcmFkaWVudENvbG9yU3RvcHM6OlNvcnRlZCB7IFdURk1vdmUo
cmVzdWx0KSB9OworfQorI2VuZGlmCisKIEdyYWRpZW50UmVuZGVyZXJDRzo6U3RyYXRlZ3kgR3Jh
ZGllbnRSZW5kZXJlckNHOjpwaWNrU3RyYXRlZ3koQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgY29uc3QgR3JhZGllbnRDb2xvclN0b3BzJiBzdG9wcykg
Y29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihjb2xvckludGVycG9sYXRpb25NZXRo
b2QuY29sb3JTcGFjZSwKQEAgLTUxLDggKzM5NywxNCBAQCBHcmFkaWVudFJlbmRlcmVyQ0c6OlN0
cmF0ZWd5IEdyYWRpZW50UmVuZGVyZXJDRzo6cGlja1MKICNpZiBIQVZFKENPUkVfR1JBUEhJQ1Nf
UFJFTVVMVElQTElFRF9JTlRFUlBPTEFUSU9OX0dSQURJRU5UKQogICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlR3JhZGllbnQoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcyk7CiAjZWxz
ZQotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgZ3JhZGllbnQgc3RyYXRlZ3kgaWYgbm9u
ZSBvZiB0aGUgc3RvcHMgaGF2ZSBhbHBoYS4KLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVNo
YWRpbmcoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcyk7CisgICAgICAgICAgICAgICAg
c3dpdGNoIChhbmFseXplQ29sb3JTdG9wc0ZvckVtdWxhdGVkQWxwaGFQcmVtdWxpcGxpY2F0aW9u
T3BwZXJ0dW5pdHkoc3RvcHMpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBFbXVsYXRlZEFscGhh
UHJlbXVsaXBsaWNhdGlvbkFuYWx5c2lzUmVzdWx0OjpVc2VHcmFkaWVudEFzSXM6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtYWtlR3JhZGllbnQoeyBDb2xvckludGVycG9sYXRpb25NZXRo
b2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSwg
c3RvcHMpOworICAgICAgICAgICAgICAgIGNhc2UgRW11bGF0ZWRBbHBoYVByZW11bGlwbGljYXRp
b25BbmFseXNpc1Jlc3VsdDo6VXNlR3JhZGllbnRXaXRoQWxwaGFUcmFuc2Zvcm1zOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZUdyYWRpZW50KHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0s
IGFscGhhVHJhbnNmb3JtU3RvcHNUb0VtdWxhdGVBbHBoYVByZW11bGlwbGljYXRpb24oc3RvcHMp
KTsKKyAgICAgICAgICAgICAgICBjYXNlIEVtdWxhdGVkQWxwaGFQcmVtdWxpcGxpY2F0aW9uQW5h
bHlzaXNSZXN1bHQ6OlVzZVNoYWRpbmc6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtl
U2hhZGluZyhjb2xvckludGVycG9sYXRpb25NZXRob2QsIHN0b3BzKTsKKyAgICAgICAgICAgICAg
ICB9CiAjZW5kaWYKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI4NzQxNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDIxLTEyLTIzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBPbiBzeXN0ZW1zIHdpdGhvdXQgQ0cgc3VwcG9ydCBmb3IgYWxwaGEgcHJlbXVsdGlw
bGllZCBncmFkaWVudHMsIHRoZSBDR0dyYWRpZW50UmVmIHBhdGggc2hvdWxkIHN0aWxsIGJlIHVz
ZWQgZm9yIHRoZSBzdWJzZXQgb2YgZ3JhZGllbnRzIHRoYXQgY2FuIHRyYW5zZm9ybWVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ2NTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgQWRkIHRlc3RzIG9mIGdy
YWRpZW50cyB0aGF0IGNhbiByZW5kZXIgaWRlbnRpY2FsbHkgd2l0aCBib3RoIGFscGhhIHByZW11
bHRpcGxpZWQgYW5kIG5vbi1wcmVtdWx0aXBsaWVkIGdyYWRpZW50cworICAgICAgICBlaXRoZXIg
dXNpbmcgdGhlIHNhbWUgY29sb3Igc3RvcCBsaXN0IG9yIGEgdHJhbnNmb3JtZWQgb25lLgorCisg
ICAgICAgIFRoZSBtYWluIHRlc3QgcGFnZSBjb250YWlucyB0aGUgYWxwaGEgcHJlbXVsdGlwbGll
ZCBncmFkaWVudHMgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IG5vdyBmb3IgQ1NTIGdyYWRpZW50cyks
IHdoaWxlCisgICAgICAgIHRoZSAtZXhwZWN0ZWQuaHRtbCBjb250YWlucyB0aGUgYWxwaGEgbm9u
LXByZW11bHRpcGxpZWQgZ3JhZGllbnRzIGFuZCBoYXMgYWxwaGEgcHJlbXVsdGlwbGllZCBpbnRl
cnBvbGF0aW9uIGV4cGxpY2l0bHkKKyAgICAgICAgZGlzYWJsZWQgdmlhIGEgQ1NTR3JhZGllbnRQ
cmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxlZD1mYWxzZSBjb21tZW50IGNvbW1h
bmQuCisKKyAgICAgICAgKiBmYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0aXBsaWVkLXJlcHJl
c2VudGFibGUtYnktdW5wcmVtdWx0aXBsaWVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZ3JhZGllbnRzL2FscGhhLXByZW11bHRpcGxpZWQtcmVwcmVzZW50YWJsZS1ieS11
bnByZW11bHRpcGxpZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9UZXN0
RXhwZWN0YXRpb25zOiBEaXNhYmxlIG9uIG5vbi1Db3JlR3JhcGhpY3MgcG9ydHMuCisKIDIwMjEt
MTItMjMgIFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWJhc2VsaW5l
IGdldENvbXB1dGVkU3R5bGUgdGVzdHMgZm9yIGlPUyBhZnRlciByMjg3MzU2CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0aXBsaWVkLXJlcHJlc2VudGFibGUt
YnktdW5wcmVtdWx0aXBsaWVkLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9ncmFkaWVudHMvYWxwaGEtcHJlbXVsdGlwbGllZC1yZXByZXNlbnRhYmxlLWJ5LXVu
cHJlbXVsdGlwbGllZC1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZ3JhZGllbnRzL2FscGhhLXByZW11bHRpcGxpZWQtcmVwcmVzZW50YWJsZS1ieS11bnBy
ZW11bHRpcGxpZWQtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5MiBA
QAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBDU1NHcmFkaWVudFBy
ZW11bHRpcGxpZWRBbHBoYUludGVycG9sYXRpb25FbmFibGVkPWZhbHNlIF0gLS0+Cis8aHRtbD4K
KzxoZWFkPgorPHN0eWxlPgorICAgIGRpdiB7IAorICAgICAgICB3aWR0aDogMTAwcHg7CisgICAg
ICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIGJvcmRlcjogZGFzaGVkIGJsYWNrIDFweDsKKyAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIH0KKworICAgIDpyb290IHsKKyAgICAg
ICAgLS10cmFuc3BhcmVudC0xOiByZ2JhKDAsIDAsIDI1NSwgMCk7CisgICAgICAgIC0tdHJhbnNw
YXJlbnQtMjogcmdiYSgyNTUsIDAsIDAsIDApOworICAgICAgICAtLXRyYW5zcGFyZW50LTM6IHJn
YmEoMCwgMjU1LCAwLCAwKTsKKyAgICAgICAgLS10cmFuc3BhcmVudC00OiByZ2JhKDI1NSwgMjU1
LCAwLCAwKTsKKworICAgICAgICAtLW9wYXF1ZS0xOiByZ2JhKDAsIDAsIDI1NSwgMSk7CisgICAg
ICAgIC0tb3BhcXVlLTI6IHJnYmEoMjU1LCAwLCAwLCAxKTsKKyAgICAgICAgLS1vcGFxdWUtMzog
cmdiYSgwLCAyNTUsIDAsIDEpOworICAgICAgICAtLW9wYXF1ZS00OiByZ2JhKDI1NSwgMjU1LCAw
LCAxKTsKKworICAgICAgICAtLXBhcnRpYWwtMTogcmdiYSgwLCAwLCAyNTUsIDAuNSk7CisgICAg
ICAgIC0tcGFydGlhbC0yOiByZ2JhKDI1NSwgMCwgMCwgMC41KTsKKyAgICAgICAgLS1wYXJ0aWFs
LTM6IHJnYmEoMCwgMjU1LCAwLCAwLjUpOworICAgICAgICAtLXBhcnRpYWwtNDogcmdiYSgyNTUs
IDI1NSwgMCwgMC41KTsKKyAgICB9CisKKyAgICAvKiBOT1RFOiBJZiB3ZSBldmVyIHdhbnQgdG8g
cmVtb3ZlIHRoZSBvcHRpb24gdG8gZGlzYWJsZSBhbHBoYSBwcmVtdWx0aXBsaWVkIGdyYWRpZW50
cywgYW5kIGFsdGVybmF0aXZlIHdheQorICAgICAgICAgICAgIHRvIHRlc3QgdGhpcyB3b3VsZCBi
ZSB1c2luZyBlaXRoZXIgQ2FudmFzIG9yIFNWRywgd2hpY2ggYm90aCB1c2UgdW5wcmVtdWx0aXBs
aWVkIGludGVycG9sYXRpb24uICAgICovCisKKyAgICAjb3BhcXVlLW9wYXF1ZSB7CisgICAgICAg
IC8qIE5vIHRyYW5zZm9ybSAqLworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3Jh
ZGllbnQodmFyKC0tb3BhcXVlLTEpLCB2YXIoLS1vcGFxdWUtMikpOworICAgIH0KKworICAgICNw
YXJ0aWFsLXBhcnRpYWwgeworICAgICAgICAvKiBObyB0cmFuc2Zvcm0gKi8KKyAgICAgICAgYmFj
a2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLXBhcnRpYWwtMSksIHZhcigtLXBh
cnRpYWwtMikpOworICAgIH0KKworICAgICN0cmFuc3BhcmVudC10cmFuc3BhcmVudCB7CisgICAg
ICAgIC8qIE5vIHRyYW5zZm9ybSAqLworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXIt
Z3JhZGllbnQodmFyKC0tdHJhbnNwYXJlbnQtMSksIHZhcigtLXRyYW5zcGFyZW50LTIpKTsKKyAg
ICB9CisKKyAgICAjdHJhbnNwYXJlbnQtb3BhcXVlIHsKKyAgICAgICAgLyogU3RlYWwgbmV4dCAq
LworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tdHJhbnNw
YXJlbnQtMiksIHZhcigtLW9wYXF1ZS0yKSk7CisgICAgfQorCisgICAgI3RyYW5zcGFyZW50LXBh
cnRpYWwgeworICAgICAgICAvKiBTdGVhbCBuZXh0ICovCisgICAgICAgIGJhY2tncm91bmQtaW1h
Z2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS10cmFuc3BhcmVudC0yKSwgdmFyKC0tcGFydGlhbC0y
KSk7CisgICAgfQorCisgICAgI29wYXF1ZS10cmFuc3BhcmVudCB7CisgICAgICAgIC8qIFN0ZWFs
IHByZXZpb3VzICovCisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2
YXIoLS1vcGFxdWUtMSksIHZhcigtLXRyYW5zcGFyZW50LTEpKTsKKyAgICB9CisKKyAgICAjcGFy
dGlhbC10cmFuc3BhcmVudCB7CisgICAgICAgIC8qIFN0ZWFsIHByZXZpb3VzICovCisgICAgICAg
IGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1wYXJ0aWFsLTEpLCB2YXIo
LS10cmFuc3BhcmVudC0xKSk7CisgICAgfQorCisgICAgI29wYXF1ZS10cmFuc3BhcmVudC1vcGFx
dWUgeworICAgICAgICAvKiBTcGxpdCAqLworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5l
YXItZ3JhZGllbnQodmFyKC0tb3BhcXVlLTEpLCB2YXIoLS10cmFuc3BhcmVudC0xKSA1MCUsIHZh
cigtLXRyYW5zcGFyZW50LTMpIDUwJSwgdmFyKC0tb3BhcXVlLTMpKTsKKyAgICB9CisKKyAgICAj
b3BhcXVlLXRyYW5zcGFyZW50LXBhcnRpYWwgeworICAgICAgICAvKiBTcGxpdCAqLworICAgICAg
ICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tb3BhcXVlLTEpLCB2YXIo
LS10cmFuc3BhcmVudC0xKSA1MCUsIHZhcigtLXRyYW5zcGFyZW50LTMpIDUwJSwgdmFyKC0tcGFy
dGlhbC0zKSk7CisgICAgfQorCisgICAgI3BhcnRpYWwtdHJhbnNwYXJlbnQtcGFydGlhbCB7Cisg
ICAgICAgIC8qIFNwbGl0ICovCisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFk
aWVudCh2YXIoLS1wYXJ0aWFsLTEpLCB2YXIoLS10cmFuc3BhcmVudC0xKSA1MCUsIHZhcigtLXRy
YW5zcGFyZW50LTMpIDUwJSwgdmFyKC0tcGFydGlhbC0zKSk7CisgICAgfQorCisgICAgI3BhcnRp
YWwtdHJhbnNwYXJlbnQtb3BhcXVlIHsKKyAgICAgICAgLyogU3BsaXQgKi8KKyAgICAgICAgYmFj
a2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLXBhcnRpYWwtMSksIHZhcigtLXRy
YW5zcGFyZW50LTEpIDUwJSwgdmFyKC0tdHJhbnNwYXJlbnQtMykgNTAlLCB2YXIoLS1vcGFxdWUt
MykpOworICAgIH0KKworICAgICNvcGFxdWUtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtb3BhcXVl
IHsKKyAgICAgICAgLyogU3RlYWwgcHJldmlvdXMsIHN0ZWFsIG5leHQgKi8KKyAgICAgICAgYmFj
a2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLW9wYXF1ZS0xKSwgdmFyKC0tdHJh
bnNwYXJlbnQtMSksIHZhcigtLXRyYW5zcGFyZW50LTQpLCB2YXIoLS1vcGFxdWUtNCkpOworICAg
IH0KKworICAgICNvcGFxdWUtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtcGFydGlhbCB7CisgICAg
ICAgIC8qIFN0ZWFsIHByZXZpb3VzLCBzdGVhbCBuZXh0ICovCisgICAgICAgIGJhY2tncm91bmQt
aW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1vcGFxdWUtMSksIHZhcigtLXRyYW5zcGFyZW50
LTEpLCB2YXIoLS10cmFuc3BhcmVudC00KSwgdmFyKC0tcGFydGlhbC00KSk7CisgICAgfQorCisg
ICAgI3BhcnRpYWwtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtcGFydGlhbCB7CisgICAgICAgIC8q
IFN0ZWFsIHByZXZpb3VzLCBzdGVhbCBuZXh0ICovCisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6
IGxpbmVhci1ncmFkaWVudCh2YXIoLS1wYXJ0aWFsLTEpLCB2YXIoLS10cmFuc3BhcmVudC0xKSwg
dmFyKC0tdHJhbnNwYXJlbnQtNCksIHZhcigtLXBhcnRpYWwtNCkpOworICAgIH0KKworICAgICNw
YXJ0aWFsLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LW9wYXF1ZSB7CisgICAgICAgIC8qIFN0ZWFs
IHByZXZpb3VzLCBub3RoaW5nLCBzdGVhbCBuZXh0ICovCisgICAgICAgIGJhY2tncm91bmQtaW1h
Z2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1wYXJ0aWFsLTEpLCB2YXIoLS10cmFuc3BhcmVudC0x
KSwgdmFyKC0tdHJhbnNwYXJlbnQtNCksIHZhcigtLW9wYXF1ZS00KSk7CisgICAgfQorCisgICAg
I29wYXF1ZS10cmFuc3BhcmVudC10cmFuc3BhcmVudC10cmFuc3BhcmVudC1vcGFxdWUgeworICAg
ICAgICAvKiBTdGVhbCBwcmV2aW91cywgbm90aGluZywgc3RlYWwgbmV4dCAqLworICAgICAgICBi
YWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tb3BhcXVlLTEpLCB2YXIoLS10
cmFuc3BhcmVudC0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMyksIHZhcigtLXRyYW5zcGFyZW50LTIp
LCB2YXIoLS1vcGFxdWUtMikpOworICAgIH0KKworICAgICNvcGFxdWUtdHJhbnNwYXJlbnQtdHJh
bnNwYXJlbnQtdHJhbnNwYXJlbnQtcGFydGlhbCB7CisgICAgICAgIC8qIFN0ZWFsIHByZXZpb3Vz
LCBub3RoaW5nLCBzdGVhbCBuZXh0ICovCisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVh
ci1ncmFkaWVudCh2YXIoLS1vcGFxdWUtMSksIHZhcigtLXRyYW5zcGFyZW50LTEpLCB2YXIoLS10
cmFuc3BhcmVudC0zKSwgdmFyKC0tdHJhbnNwYXJlbnQtMiksIHZhcigtLXBhcnRpYWwtMikpOwor
ICAgIH0KKworICAgICNwYXJ0aWFsLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LXRyYW5zcGFyZW50
LXBhcnRpYWwgeworICAgICAgICAvKiBTdGVhbCBwcmV2aW91cywgbm90aGluZywgc3RlYWwgbmV4
dCAqLworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tcGFy
dGlhbC0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMSksIHZhcigtLXRyYW5zcGFyZW50LTMpLCB2YXIo
LS10cmFuc3BhcmVudC0yKSwgdmFyKC0tcGFydGlhbC0yKSk7CisgICAgfQorCisgICAgI3BhcnRp
YWwtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtb3BhcXVlIHsKKyAgICAgICAg
LyogU3RlYWwgcHJldmlvdXMsIG5vdGhpbmcsIHN0ZWFsIG5leHQgKi8KKyAgICAgICAgYmFja2dy
b3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLXBhcnRpYWwtMSksIHZhcigtLXRyYW5z
cGFyZW50LTEpLCB2YXIoLS10cmFuc3BhcmVudC0zKSwgdmFyKC0tdHJhbnNwYXJlbnQtMiksIHZh
cigtLW9wYXF1ZS0yKSk7CisgICAgfQorCisgICAgI29wYXF1ZS10cmFuc3BhcmVudC10cmFuc3Bh
cmVudCB7CisgICAgICAgIC8qIFN0ZWFsIHByZXZpb3VzLCBub3RoaW5nICovCisgICAgICAgIGJh
Y2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1vcGFxdWUtMSksIHZhcigtLXRy
YW5zcGFyZW50LTEpLCB2YXIoLS10cmFuc3BhcmVudC0zKSk7CisgICAgfQorCisgICAgI3BhcnRp
YWwtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQgeworICAgICAgICAvKiBTdGVhbCBwcmV2aW91cywg
bm90aGluZyAqLworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFy
KC0tcGFydGlhbC0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMSksIHZhcigtLXRyYW5zcGFyZW50LTMp
KTsKKyAgICB9CisKKyAgICAjdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtb3BhcXVlIHsKKyAgICAg
ICAgLyogTm90aGluZywgc3RlYWwgbmV4dCAqLworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBs
aW5lYXItZ3JhZGllbnQodmFyKC0tdHJhbnNwYXJlbnQtMSksIHZhcigtLXRyYW5zcGFyZW50LTMp
LCB2YXIoLS1vcGFxdWUtMykpOworICAgIH0KKworICAgICN0cmFuc3BhcmVudC10cmFuc3BhcmVu
dC1wYXJ0aWFsIHsKKyAgICAgICAgLyogTm90aGluZywgc3RlYWwgbmV4dCAqLworICAgICAgICBi
YWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tdHJhbnNwYXJlbnQtMSksIHZh
cigtLXRyYW5zcGFyZW50LTMpLCB2YXIoLS1wYXJ0aWFsLTMpKTsKKyAgICB9CisKKyAgICAjdHJh
bnNwYXJlbnQtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQgeworICAgICAgICAvKiBObyB0cmFuc2Zv
cm0gKi8KKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLXRy
YW5zcGFyZW50LTEpLCB2YXIoLS10cmFuc3BhcmVudC0yKSwgdmFyKC0tdHJhbnNwYXJlbnQtMykp
OworICAgIH0KKworICAgICN0cmFuc3BhcmVudC1vcGFxdWUtdHJhbnNwYXJlbnQgeworICAgICAg
ICAvKiBTdGVhbCBuZXh0LCBzdGVhbCBwcmV2aW91cyAqLworICAgICAgICBiYWNrZ3JvdW5kLWlt
YWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tdHJhbnNwYXJlbnQtMiksIHZhcigtLW9wYXF1ZS0y
KSwgdmFyKC0tdHJhbnNwYXJlbnQtMikpOworICAgIH0KKworICAgICN0cmFuc3BhcmVudC1wYXJ0
aWFsLXRyYW5zcGFyZW50IHsKKyAgICAgICAgLyogU3RlYWwgbmV4dCwgc3RlYWwgcHJldmlvdXMg
Ki8KKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLXRyYW5z
cGFyZW50LTIpLCB2YXIoLS1wYXJ0aWFsLTIpLCB2YXIoLS10cmFuc3BhcmVudC0yKSk7CisgICAg
fQorCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJvcGFxdWUtb3BhcXVlIj48
L2Rpdj4KKzxkaXYgaWQ9InBhcnRpYWwtcGFydGlhbCI+PC9kaXY+Cis8ZGl2IGlkPSJ0cmFuc3Bh
cmVudC10cmFuc3BhcmVudCI+PC9kaXY+Cis8ZGl2IGlkPSJ0cmFuc3BhcmVudC1vcGFxdWUiPjwv
ZGl2PgorPGRpdiBpZD0idHJhbnNwYXJlbnQtcGFydGlhbCI+PC9kaXY+Cis8ZGl2IGlkPSJvcGFx
dWUtdHJhbnNwYXJlbnQiPjwvZGl2PgorPGRpdiBpZD0icGFydGlhbC10cmFuc3BhcmVudCI+PC9k
aXY+Cis8ZGl2IGlkPSJvcGFxdWUtdHJhbnNwYXJlbnQtb3BhcXVlIj48L2Rpdj4KKzxkaXYgaWQ9
Im9wYXF1ZS10cmFuc3BhcmVudC1wYXJ0aWFsIj48L2Rpdj4KKzxkaXYgaWQ9InBhcnRpYWwtdHJh
bnNwYXJlbnQtcGFydGlhbCI+PC9kaXY+Cis8ZGl2IGlkPSJwYXJ0aWFsLXRyYW5zcGFyZW50LW9w
YXF1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJvcGFxdWUtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtb3Bh
cXVlIj48L2Rpdj4KKzxkaXYgaWQ9Im9wYXF1ZS10cmFuc3BhcmVudC10cmFuc3BhcmVudC1wYXJ0
aWFsIj48L2Rpdj4KKzxkaXYgaWQ9InBhcnRpYWwtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtcGFy
dGlhbCI+PC9kaXY+Cis8ZGl2IGlkPSJwYXJ0aWFsLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LW9w
YXF1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJvcGFxdWUtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtdHJh
bnNwYXJlbnQtb3BhcXVlIj48L2Rpdj4KKzxkaXYgaWQ9Im9wYXF1ZS10cmFuc3BhcmVudC10cmFu
c3BhcmVudC10cmFuc3BhcmVudC1wYXJ0aWFsIj48L2Rpdj4KKzxkaXYgaWQ9InBhcnRpYWwtdHJh
bnNwYXJlbnQtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtcGFydGlhbCI+PC9kaXY+Cis8ZGl2IGlk
PSJwYXJ0aWFsLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LW9wYXF1ZSI+PC9k
aXY+Cis8ZGl2IGlkPSJvcGFxdWUtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQiPjwvZGl2PgorPGRp
diBpZD0icGFydGlhbC10cmFuc3BhcmVudC10cmFuc3BhcmVudCI+PC9kaXY+Cis8ZGl2IGlkPSJ0
cmFuc3BhcmVudC10cmFuc3BhcmVudC1vcGFxdWUiPjwvZGl2PgorPGRpdiBpZD0idHJhbnNwYXJl
bnQtdHJhbnNwYXJlbnQtcGFydGlhbCI+PC9kaXY+Cis8ZGl2IGlkPSJ0cmFuc3BhcmVudC10cmFu
c3BhcmVudC10cmFuc3BhcmVudCI+PC9kaXY+Cis8ZGl2IGlkPSJ0cmFuc3BhcmVudC1vcGFxdWUt
dHJhbnNwYXJlbnQiPjwvZGl2PgorPGRpdiBpZD0idHJhbnNwYXJlbnQtcGFydGlhbC10cmFuc3Bh
cmVudCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2dy
YWRpZW50cy9hbHBoYS1wcmVtdWx0aXBsaWVkLXJlcHJlc2VudGFibGUtYnktdW5wcmVtdWx0aXBs
aWVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvYWxwaGEt
cHJlbXVsdGlwbGllZC1yZXByZXNlbnRhYmxlLWJ5LXVucHJlbXVsdGlwbGllZC5odG1sCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2FscGhhLXByZW11bHRpcGxp
ZWQtcmVwcmVzZW50YWJsZS1ieS11bnByZW11bHRpcGxpZWQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE2MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxl
PgorICAgIGRpdiB7IAorICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAw
cHg7CisgICAgICAgIGJvcmRlcjogZGFzaGVkIGJsYWNrIDFweDsKKyAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgIH0KKworICAgIDpyb290IHsKKyAgICAgICAgLS10cmFuc3BhcmVu
dC0xOiByZ2JhKDAsIDAsIDI1NSwgMCk7CisgICAgICAgIC0tdHJhbnNwYXJlbnQtMjogcmdiYSgy
NTUsIDAsIDAsIDApOworICAgICAgICAtLXRyYW5zcGFyZW50LTM6IHJnYmEoMCwgMjU1LCAwLCAw
KTsKKyAgICAgICAgLS10cmFuc3BhcmVudC00OiByZ2JhKDI1NSwgMjU1LCAwLCAwKTsKKworICAg
ICAgICAtLW9wYXF1ZS0xOiByZ2JhKDAsIDAsIDI1NSwgMSk7CisgICAgICAgIC0tb3BhcXVlLTI6
IHJnYmEoMjU1LCAwLCAwLCAxKTsKKyAgICAgICAgLS1vcGFxdWUtMzogcmdiYSgwLCAyNTUsIDAs
IDEpOworICAgICAgICAtLW9wYXF1ZS00OiByZ2JhKDI1NSwgMjU1LCAwLCAxKTsKKworICAgICAg
ICAtLXBhcnRpYWwtMTogcmdiYSgwLCAwLCAyNTUsIDAuNSk7CisgICAgICAgIC0tcGFydGlhbC0y
OiByZ2JhKDI1NSwgMCwgMCwgMC41KTsKKyAgICAgICAgLS1wYXJ0aWFsLTM6IHJnYmEoMCwgMjU1
LCAwLCAwLjUpOworICAgICAgICAtLXBhcnRpYWwtNDogcmdiYSgyNTUsIDI1NSwgMCwgMC41KTsK
KyAgICB9CisgICAgCisgICAgI29wYXF1ZS1vcGFxdWUgeworICAgICAgICBiYWNrZ3JvdW5kLWlt
YWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tb3BhcXVlLTEpLCB2YXIoLS1vcGFxdWUtMikpOwor
ICAgIH0KKworICAgICNwYXJ0aWFsLXBhcnRpYWwgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdl
OiBsaW5lYXItZ3JhZGllbnQodmFyKC0tcGFydGlhbC0xKSwgdmFyKC0tcGFydGlhbC0yKSk7Cisg
ICAgfQorCisgICAgI3RyYW5zcGFyZW50LXRyYW5zcGFyZW50IHsKKyAgICAgICAgYmFja2dyb3Vu
ZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLXRyYW5zcGFyZW50LTEpLCB2YXIoLS10cmFu
c3BhcmVudC0yKSk7CisgICAgfQorCisgICAgI3RyYW5zcGFyZW50LW9wYXF1ZSB7CisgICAgICAg
IGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS10cmFuc3BhcmVudC0xKSwg
dmFyKC0tb3BhcXVlLTIpKTsKKyAgICB9CisKKyAgICAjdHJhbnNwYXJlbnQtcGFydGlhbCB7Cisg
ICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS10cmFuc3BhcmVu
dC0xKSwgdmFyKC0tcGFydGlhbC0yKSk7CisgICAgfQorCisgICAgI29wYXF1ZS10cmFuc3BhcmVu
dCB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1vcGFx
dWUtMSksIHZhcigtLXRyYW5zcGFyZW50LTIpKTsKKyAgICB9CisKKyAgICAjcGFydGlhbC10cmFu
c3BhcmVudCB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIo
LS1wYXJ0aWFsLTEpLCB2YXIoLS10cmFuc3BhcmVudC0yKSk7CisgICAgfQorCisgICAgI29wYXF1
ZS10cmFuc3BhcmVudC1vcGFxdWUgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXIt
Z3JhZGllbnQodmFyKC0tb3BhcXVlLTEpLCB2YXIoLS10cmFuc3BhcmVudC0yKSwgdmFyKC0tb3Bh
cXVlLTMpKTsKKyAgICB9CisKKyAgICAjb3BhcXVlLXRyYW5zcGFyZW50LXBhcnRpYWwgeworICAg
ICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tb3BhcXVlLTEpLCB2
YXIoLS10cmFuc3BhcmVudC0yKSwgdmFyKC0tcGFydGlhbC0zKSk7CisgICAgfQorCisgICAgI3Bh
cnRpYWwtdHJhbnNwYXJlbnQtcGFydGlhbCB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxp
bmVhci1ncmFkaWVudCh2YXIoLS1wYXJ0aWFsLTEpLCB2YXIoLS10cmFuc3BhcmVudC0yKSwgdmFy
KC0tcGFydGlhbC0zKSk7CisgICAgfQorCisgICAgI3BhcnRpYWwtdHJhbnNwYXJlbnQtb3BhcXVl
IHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLXBhcnRp
YWwtMSksIHZhcigtLXRyYW5zcGFyZW50LTIpLCB2YXIoLS1vcGFxdWUtMykpOworICAgIH0KKwor
ICAgICNvcGFxdWUtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtb3BhcXVlIHsKKyAgICAgICAgYmFj
a2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLW9wYXF1ZS0xKSwgdmFyKC0tdHJh
bnNwYXJlbnQtMiksIHZhcigtLXRyYW5zcGFyZW50LTMpLCB2YXIoLS1vcGFxdWUtNCkpOworICAg
IH0KKworICAgICNvcGFxdWUtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtcGFydGlhbCB7CisgICAg
ICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1vcGFxdWUtMSksIHZh
cigtLXRyYW5zcGFyZW50LTIpLCB2YXIoLS10cmFuc3BhcmVudC0zKSwgdmFyKC0tcGFydGlhbC00
KSk7CisgICAgfQorCisgICAgI3BhcnRpYWwtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtcGFydGlh
bCB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1wYXJ0
aWFsLTEpLCB2YXIoLS10cmFuc3BhcmVudC0yKSwgdmFyKC0tdHJhbnNwYXJlbnQtMyksIHZhcigt
LXBhcnRpYWwtNCkpOworICAgIH0KKworICAgICNwYXJ0aWFsLXRyYW5zcGFyZW50LXRyYW5zcGFy
ZW50LW9wYXF1ZSB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2
YXIoLS1wYXJ0aWFsLTEpLCB2YXIoLS10cmFuc3BhcmVudC0yKSwgdmFyKC0tdHJhbnNwYXJlbnQt
MyksIHZhcigtLW9wYXF1ZS00KSk7CisgICAgfQorCisgICAgI29wYXF1ZS10cmFuc3BhcmVudC10
cmFuc3BhcmVudC10cmFuc3BhcmVudC1vcGFxdWUgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdl
OiBsaW5lYXItZ3JhZGllbnQodmFyKC0tb3BhcXVlLTEpLCB2YXIoLS10cmFuc3BhcmVudC0yKSwg
dmFyKC0tdHJhbnNwYXJlbnQtMyksIHZhcigtLXRyYW5zcGFyZW50LTQpLCB2YXIoLS1vcGFxdWUt
MikpOworICAgIH0KKworICAgICNvcGFxdWUtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtdHJhbnNw
YXJlbnQtcGFydGlhbCB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVu
dCh2YXIoLS1vcGFxdWUtMSksIHZhcigtLXRyYW5zcGFyZW50LTIpLCB2YXIoLS10cmFuc3BhcmVu
dC0zKSwgdmFyKC0tdHJhbnNwYXJlbnQtNCksIHZhcigtLXBhcnRpYWwtMikpOworICAgIH0KKwor
ICAgICNwYXJ0aWFsLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LXBhcnRpYWwg
eworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tcGFydGlh
bC0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMiksIHZhcigtLXRyYW5zcGFyZW50LTMpLCB2YXIoLS10
cmFuc3BhcmVudC00KSwgdmFyKC0tcGFydGlhbC0yKSk7CisgICAgfQorCisgICAgI3BhcnRpYWwt
dHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtb3BhcXVlIHsKKyAgICAgICAgYmFj
a2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLXBhcnRpYWwtMSksIHZhcigtLXRy
YW5zcGFyZW50LTIpLCB2YXIoLS10cmFuc3BhcmVudC0zKSwgdmFyKC0tdHJhbnNwYXJlbnQtNCks
IHZhcigtLW9wYXF1ZS0yKSk7CisgICAgfQorCisgICAgI29wYXF1ZS10cmFuc3BhcmVudC10cmFu
c3BhcmVudCB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIo
LS1vcGFxdWUtMSksIHZhcigtLXRyYW5zcGFyZW50LTIpLCB2YXIoLS10cmFuc3BhcmVudC0zKSk7
CisgICAgfQorCisgICAgI3BhcnRpYWwtdHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQgeworICAgICAg
ICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tcGFydGlhbC0xKSwgdmFy
KC0tdHJhbnNwYXJlbnQtMiksIHZhcigtLXRyYW5zcGFyZW50LTMpKTsKKyAgICB9CisKKyAgICAj
dHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtb3BhcXVlIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFn
ZTogbGluZWFyLWdyYWRpZW50KHZhcigtLXRyYW5zcGFyZW50LTEpLCB2YXIoLS10cmFuc3BhcmVu
dC0yKSwgdmFyKC0tb3BhcXVlLTMpKTsKKyAgICB9CisKKyAgICAjdHJhbnNwYXJlbnQtdHJhbnNw
YXJlbnQtcGFydGlhbCB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVu
dCh2YXIoLS10cmFuc3BhcmVudC0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMiksIHZhcigtLXBhcnRp
YWwtMykpOworICAgIH0KKworICAgICN0cmFuc3BhcmVudC10cmFuc3BhcmVudC10cmFuc3BhcmVu
dCB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS10cmFu
c3BhcmVudC0xKSwgdmFyKC0tdHJhbnNwYXJlbnQtMiksIHZhcigtLXRyYW5zcGFyZW50LTMpKTsK
KyAgICB9CisKKyAgICAjdHJhbnNwYXJlbnQtb3BhcXVlLXRyYW5zcGFyZW50IHsKKyAgICAgICAg
YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLXRyYW5zcGFyZW50LTEpLCB2
YXIoLS1vcGFxdWUtMiksIHZhcigtLXRyYW5zcGFyZW50LTMpKTsKKyAgICB9CisgICAgI3RyYW5z
cGFyZW50LXBhcnRpYWwtdHJhbnNwYXJlbnQgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBs
aW5lYXItZ3JhZGllbnQodmFyKC0tdHJhbnNwYXJlbnQtMSksIHZhcigtLXBhcnRpYWwtMiksIHZh
cigtLXRyYW5zcGFyZW50LTMpKTsKKyAgICB9CisKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9Im9wYXF1ZS1vcGFxdWUiPjwvZGl2PgorPGRpdiBpZD0icGFydGlhbC1wYXJ0aWFs
Ij48L2Rpdj4KKzxkaXYgaWQ9InRyYW5zcGFyZW50LXRyYW5zcGFyZW50Ij48L2Rpdj4KKzxkaXYg
aWQ9InRyYW5zcGFyZW50LW9wYXF1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJ0cmFuc3BhcmVudC1wYXJ0
aWFsIj48L2Rpdj4KKzxkaXYgaWQ9Im9wYXF1ZS10cmFuc3BhcmVudCI+PC9kaXY+Cis8ZGl2IGlk
PSJwYXJ0aWFsLXRyYW5zcGFyZW50Ij48L2Rpdj4KKzxkaXYgaWQ9Im9wYXF1ZS10cmFuc3BhcmVu
dC1vcGFxdWUiPjwvZGl2PgorPGRpdiBpZD0ib3BhcXVlLXRyYW5zcGFyZW50LXBhcnRpYWwiPjwv
ZGl2PgorPGRpdiBpZD0icGFydGlhbC10cmFuc3BhcmVudC1wYXJ0aWFsIj48L2Rpdj4KKzxkaXYg
aWQ9InBhcnRpYWwtdHJhbnNwYXJlbnQtb3BhcXVlIj48L2Rpdj4KKzxkaXYgaWQ9Im9wYXF1ZS10
cmFuc3BhcmVudC10cmFuc3BhcmVudC1vcGFxdWUiPjwvZGl2PgorPGRpdiBpZD0ib3BhcXVlLXRy
YW5zcGFyZW50LXRyYW5zcGFyZW50LXBhcnRpYWwiPjwvZGl2PgorPGRpdiBpZD0icGFydGlhbC10
cmFuc3BhcmVudC10cmFuc3BhcmVudC1wYXJ0aWFsIj48L2Rpdj4KKzxkaXYgaWQ9InBhcnRpYWwt
dHJhbnNwYXJlbnQtdHJhbnNwYXJlbnQtb3BhcXVlIj48L2Rpdj4KKzxkaXYgaWQ9Im9wYXF1ZS10
cmFuc3BhcmVudC10cmFuc3BhcmVudC10cmFuc3BhcmVudC1vcGFxdWUiPjwvZGl2PgorPGRpdiBp
ZD0ib3BhcXVlLXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LXRyYW5zcGFyZW50LXBhcnRpYWwiPjwv
ZGl2PgorPGRpdiBpZD0icGFydGlhbC10cmFuc3BhcmVudC10cmFuc3BhcmVudC10cmFuc3BhcmVu
dC1wYXJ0aWFsIj48L2Rpdj4KKzxkaXYgaWQ9InBhcnRpYWwtdHJhbnNwYXJlbnQtdHJhbnNwYXJl
bnQtdHJhbnNwYXJlbnQtb3BhcXVlIj48L2Rpdj4KKzxkaXYgaWQ9Im9wYXF1ZS10cmFuc3BhcmVu
dC10cmFuc3BhcmVudCI+PC9kaXY+Cis8ZGl2IGlkPSJwYXJ0aWFsLXRyYW5zcGFyZW50LXRyYW5z
cGFyZW50Ij48L2Rpdj4KKzxkaXYgaWQ9InRyYW5zcGFyZW50LXRyYW5zcGFyZW50LW9wYXF1ZSI+
PC9kaXY+Cis8ZGl2IGlkPSJ0cmFuc3BhcmVudC10cmFuc3BhcmVudC1wYXJ0aWFsIj48L2Rpdj4K
KzxkaXYgaWQ9InRyYW5zcGFyZW50LXRyYW5zcGFyZW50LXRyYW5zcGFyZW50Ij48L2Rpdj4KKzxk
aXYgaWQ9InRyYW5zcGFyZW50LW9wYXF1ZS10cmFuc3BhcmVudCI+PC9kaXY+Cis8ZGl2IGlkPSJ0
cmFuc3BhcmVudC1wYXJ0aWFsLXRyYW5zcGFyZW50Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlz
aW9uIDI4NzQxMikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9u
cwkod29ya2luZyBjb3B5KQpAQCAtNDg5LDkgKzQ4OSwxMCBAQCB3ZWJraXQub3JnL2IvMjEzMTE0
IGZhc3QvZmxleGJveC9saW5lLWNsYW1wLXdpdGgtYW5jaG8KIAogIyBmYXN0L2dyYWRpZW50cyBh
cmUgU2tpcCBpbiB0aGUgdG9wIGxldmVsIEV4cGVjdGF0aW9uLiBXaGVuIGZpeGluZywgY2hhbmdl
IHRoaXMgdG8KICMgUGFzcyBpbnN0ZWFkIG9mIHJlbW92aW5nIHRoaXMgbGluZS4KLXdlYmtpdC5v
cmcvYi8yMTQyNTkgZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0
aXBsaWVkLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMTQyNTkgZmFz
dC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQotd2Via2l0Lm9yZy9iLzIzNDQ5MiBmYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0aXBsaWVk
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzQ2MDYgZmFzdC9ncmFk
aWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0aXBsaWVkLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzQ2MDYgZmFzdC9ncmFkaWVudHMvY29uaWMtZ3Jh
ZGllbnQtYWxwaGEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIzNDYw
NiBmYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0aXBsaWVkLXJlcHJlc2VudGFibGUtYnktdW5w
cmVtdWx0aXBsaWVkLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzQ2
MDYgZmFzdC9ncmFkaWVudHMvYWxwaGEtcHJlbXVsdGlwbGllZC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNjk5ODggY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tk
cm9wLWZpbHRlci13aXRoLWJvcmRlci1yYWRpdXMtYW5kLXJlZmxlY3Rpb24tYWRkLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNjk5ODggY3NzMy9maWx0ZXJzL2JhY2tk
cm9wL2JhY2tkcm9wLWZpbHRlci13aXRoLWJvcmRlci1yYWRpdXMtYW5kLXJlZmxlY3Rpb24uaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>