<?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>221880</bug_id>
          
          <creation_ts>2021-02-14 14:47:05 -0800</creation_ts>
          <short_desc>Add experimental support for CSS Color 5 Relative Color Syntax</short_desc>
          <delta_ts>2022-07-15 05:48:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>221881</dependson>
          <blocked>221873</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>darin</cc>
    
    <cc>dev</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>menard</cc>
    
    <cc>nimajneb0905</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1729017</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-14 14:47:05 -0800</bug_when>
    <thetext>Let&apos;s add experimental support for CSS Color 5 Relative Color Syntax - https://drafts.csswg.org/css-color-5/#relative-colors.

Because the spec doesn&apos;t seem quite finished, we should keep this behind an experimental feature flag for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729018</commentid>
    <comment_count>1</comment_count>
      <attachid>420255</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-14 14:51:03 -0800</bug_when>
    <thetext>Created attachment 420255
WIP

WIP. This adds parsing and resolving for all relative colors with a few main things missing:

- Doesn&apos;t support calc() using the component identifiers - e.g `color: hsl(from red calc(h+180) s l)`.
- Doesn&apos;t support system keywords.

It&apos;s also got a bunch of housekeeping that can go in first, so I am going to break it up to actually land what is here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729022</commentid>
    <comment_count>2</comment_count>
      <attachid>420257</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-14 16:00:03 -0800</bug_when>
    <thetext>Created attachment 420257
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729520</commentid>
    <comment_count>3</comment_count>
      <attachid>420416</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-15 19:16:08 -0800</bug_when>
    <thetext>Created attachment 420416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729522</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-15 19:17:54 -0800</bug_when>
    <thetext>Needs tests, but implementation of parsing and basic resolving is getting close. Still no support for calc() or system keywords, but I want to get this in first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730063</commentid>
    <comment_count>5</comment_count>
      <attachid>420576</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-16 18:23:02 -0800</bug_when>
    <thetext>Created attachment 420576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730683</commentid>
    <comment_count>6</comment_count>
      <attachid>420773</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-17 17:58:59 -0800</bug_when>
    <thetext>Created attachment 420773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730687</commentid>
    <comment_count>7</comment_count>
      <attachid>420775</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-17 18:01:15 -0800</bug_when>
    <thetext>Created attachment 420775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730869</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-18 08:54:21 -0800</bug_when>
    <thetext>Going to have to fix the test for this after https://bugs.webkit.org/show_bug.cgi?id=222085 lands, but it will simplify the lch() tests which is great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730903</commentid>
    <comment_count>9</comment_count>
      <attachid>420775</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-18 10:02:24 -0800</bug_when>
    <thetext>Comment on attachment 420775
Patch

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

&gt; Source/WebCore/ChangeLog:19
&gt; +        Some additional caveates about this initial implementation that need further 

Typo in caveats here.

&gt; Source/WebCore/css/parser/CSSParserContext.h:133
&gt; +            &amp; key.mode                                      &lt;&lt; 20; // Keep this last.

That (non-new) comment is mysterious. Why do we need to keep it last?

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:925
&gt; +    // and clamp at the end. It won&apos;t make a difference until we support calculations on the origins

Should put a question mark here. Also &quot;origins&quot; should be &quot;origin&apos;s&quot;.

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:926
&gt; +    // components.

I see that you have orphaned a word. How do you expect me to sleep at night?

&gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1057
&gt; +    return convertColor&lt;SRGBA&lt;uint8_t&gt;&gt;(HSLA&lt;float&gt; { static_cast&lt;float&gt;(resolvedHue), static_cast&lt;float&gt;(resolvedSaturation), static_cast&lt;float&gt;(resolvedLightness), static_cast&lt;float&gt;(resolvedAlpha) });

Are these casts all narrowing from double? Or is there something else going on here? I see this pattern repeatedly and I would like us to improve the idiom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731188</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-18 20:19:12 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; Comment on attachment 420775 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420775&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:19
&gt; &gt; +        Some additional caveates about this initial implementation that need further 
&gt; 
&gt; Typo in caveats here.

What would of change of mine be without making the stylebot red and a misspelled word :).

&gt; 
&gt; &gt; Source/WebCore/css/parser/CSSParserContext.h:133
&gt; &gt; +            &amp; key.mode                                      &lt;&lt; 20; // Keep this last.
&gt; 
&gt; That (non-new) comment is mysterious. Why do we need to keep it last?

I think its due to mode being more than one bit, but can&apos;t say for sure. I will resolve with https://bugs.webkit.org/show_bug.cgi?id=222043.

&gt; 
&gt; &gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:925
&gt; &gt; +    // and clamp at the end. It won&apos;t make a difference until we support calculations on the origins
&gt; 
&gt; Should put a question mark here. Also &quot;origins&quot; should be &quot;origin&apos;s&quot;.

Fixed.

&gt; 
&gt; &gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:926
&gt; &gt; +    // components.
&gt; 
&gt; I see that you have orphaned a word. How do you expect me to sleep at night?

Fixed. Deepest apologies.

&gt; 
&gt; &gt; Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp:1057
&gt; &gt; +    return convertColor&lt;SRGBA&lt;uint8_t&gt;&gt;(HSLA&lt;float&gt; { static_cast&lt;float&gt;(resolvedHue), static_cast&lt;float&gt;(resolvedSaturation), static_cast&lt;float&gt;(resolvedLightness), static_cast&lt;float&gt;(resolvedAlpha) });
&gt; 
&gt; Are these casts all narrowing from double? Or is there something else going
&gt; on here? I see this pattern repeatedly and I would like us to improve the
&gt; idiom.

It&apos;s just narrowing from double. All of the CSS parser code is in terms of double, so I have been trying to just keep it double until the very end to avoid casts in more places. This is definitely something I can improve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731200</commentid>
    <comment_count>11</comment_count>
      <attachid>420914</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-18 20:57:21 -0800</bug_when>
    <thetext>Created attachment 420914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731215</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-18 21:51:13 -0800</bug_when>
    <thetext>Committed r273127: &lt;https://commits.webkit.org/r273127&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420914.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731216</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-18 21:52:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/74509452&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733013</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-02-24 12:05:09 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733014</commentid>
    <comment_count>15</comment_count>
      <attachid>421436</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-02-24 12:05:12 -0800</bug_when>
    <thetext>Created attachment 421436
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733029</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-24 12:46:01 -0800</bug_when>
    <thetext>Committed r273428: &lt;https://commits.webkit.org/r273428&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421436.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420255</attachid>
            <date>2021-02-14 14:51:03 -0800</date>
            <delta_ts>2021-02-14 16:00:03 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>wipRelativeColor.diff</filename>
            <type>text/plain</type>
            <size>79877</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVy
aW1lbnRhbC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCShyZXZpc2lvbiAyNzI4MzcpCisrKyBT
b3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwu
eWFtbAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDIwLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xNjMsNiArMTYzLDE4IEBAIENTU1BhaW50aW5nQVBJRW5hYmxlZDoKICAgICAg
ICJFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkVTKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShXUEUpKSI6IHRydWUKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAKK0NTU1JlbGF0aXZlQ29s
b3JTeW50YXhFbmFibGVkOgorICB0eXBlOiBib29sCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiQ1NT
IFJlbGF0aXZlIENvbG9yIFN5bnRheCIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5h
YmxlIHN1cHBvcnQgZm9yIENTUyBSZWxhdGl2ZSBDb2xvciBTeW50YXggZGVmaW5lZCBpbiBDU1Mg
Q29sb3IgNSIKKyAgZGVmYXVsdFZhbHVlOgorICAgIFdlYktpdExlZ2FjeToKKyAgICAgIGRlZmF1
bHQ6IGZhbHNlCisgICAgV2ViS2l0OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJDb3Jl
OgorICAgICAgZGVmYXVsdDogZmFsc2UKKwogQ1NTVHlwZWRPTUVuYWJsZWQ6CiAgIHR5cGU6IGJv
b2wKICAgaHVtYW5SZWFkYWJsZU5hbWU6ICJDU1MgVHlwZWQgT00iCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyNjYsNiAr
MTI2NiwyNSBAQCBsYWIKIGxjaAogLy9jb2xvcgogCisvLyByZWxhdGl2ZSBjb2xvciBpZGVudGlm
aWVycworLy8gZnJvbQorcgorZworYgoraAorcworbAorLy8gaAordworLy8gYgorLy8gbAorYQor
Ly8gYgorLy8gbAorYworLy8gaAorLy9hbHBoYQorCiAvLyB0cmFuc2Zvcm0KIG1hdHJpeAogbWF0
cml4M2QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAJKHJldmlz
aW9uIDI3MjgzNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIENvbG9yIENTU1BhcnNlcjo6cGFyc2VD
b2xvcldvcmtlclNhZmUoY28KICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlKHRva2VuaXpl
ci50b2tlblJhbmdlKCkpOwogICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CiAKLSAgICBy
ZXR1cm4gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQ29sb3JXb3JrZXJTYWZlKHJh
bmdlLCBIVE1MU3RhbmRhcmRNb2RlKTsKKyAgICByZXR1cm4gQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpjb25zdW1lQ29sb3JXb3JrZXJTYWZlKHJhbmdlLCBzdHJpY3RDU1NQYXJzZXJDb250ZXh0
KCkpOwogfQogCiBDb2xvciBDU1NQYXJzZXI6OnBhcnNlU3lzdGVtQ29sb3IoU3RyaW5nVmlldyBz
dHJpbmcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NywzOSArNDcsNDcgQEAg
Q1NTUGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29udGV4dChDU1NQYQogewogfQogCi1DU1NQYXJz
ZXJDb250ZXh0OjpDU1NQYXJzZXJDb250ZXh0KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiBzaGVldEJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCkKLSAgICA6IGJhc2VV
Ukwoc2hlZXRCYXNlVVJMLmlzTnVsbCgpID8gZG9jdW1lbnQuYmFzZVVSTCgpIDogc2hlZXRCYXNl
VVJMKQotICAgICwgY2hhcnNldChjaGFyc2V0KQotICAgICwgbW9kZShkb2N1bWVudC5pblF1aXJr
c01vZGUoKSA/IEhUTUxRdWlya3NNb2RlIDogSFRNTFN0YW5kYXJkTW9kZSkKLSAgICAsIGlzSFRN
TERvY3VtZW50KGRvY3VtZW50LmlzSFRNTERvY3VtZW50KCkpCi0gICAgLCBoYXNEb2N1bWVudFNl
Y3VyaXR5T3JpZ2luKHNoZWV0QmFzZVVSTC5pc051bGwoKSB8fCBkb2N1bWVudC5zZWN1cml0eU9y
aWdpbigpLmNhblJlcXVlc3QoYmFzZVVSTCkpCi17Ci0gICAgZW5mb3JjZXNDU1NNSU1FVHlwZUlu
Tm9RdWlya3NNb2RlID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5lbmZvcmNlQ1NTTUlNRVR5cGVJbk5v
UXVpcmtzTW9kZSgpOwotICAgIHVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZp
b3IgPSBkb2N1bWVudC5zZXR0aW5ncygpLnVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5k
QmVoYXZpb3IoKTsKLSNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQotICAgIHRleHRBdXRvc2l6
aW5nRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkudGV4dEF1dG9zaXppbmdFbmFibGVkKCk7
Ci0jZW5kaWYKICNpZiBFTkFCTEUoT1ZFUkZMT1dfU0NST0xMSU5HX1RPVUNIKQotICAgIGxlZ2Fj
eU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hFbmFibGVkID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5sZWdh
Y3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoRW5hYmxlZCgpOworc3RhdGljIGJvb2wgc2hvdWxkRW5h
YmxlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQp
Cit7CiAgICAgLy8gVGhlIGxlZ2FjeSAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2gg
YmVoYXZpb3IgbWF5IGhhdmUgYmVlbiBkaXNhYmxlZCB0aHJvdWdoIHRoZSB3ZWJzaXRlIHBvbGlj
eSwKICAgICAvLyBpbiB0aGF0IGNhc2Ugd2Ugd2FudCB0byBkaXNhYmxlIHRoZSBsZWdhY3kgYmVo
YXZpb3IgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSBzZXR0aW5nIHNheXMuCiAgICAgaWYgKGF1dG8q
IGxvYWRlciA9IGRvY3VtZW50LmxvYWRlcigpKSB7CiAgICAgICAgIGlmIChsb2FkZXItPmxlZ2Fj
eU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3koKSA9PSBMZWdhY3lPdmVyZmxvd1Njcm9sbGlu
Z1RvdWNoUG9saWN5OjpEaXNhYmxlKQotICAgICAgICAgICAgbGVnYWN5T3ZlcmZsb3dTY3JvbGxp
bmdUb3VjaEVuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CisgICAgcmV0dXJuIGRvY3VtZW50LnNldHRpbmdzKCkubGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdU
b3VjaEVuYWJsZWQoKTsKK30KKyNlbmRpZgorCitDU1NQYXJzZXJDb250ZXh0OjpDU1NQYXJzZXJD
b250ZXh0KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiBzaGVldEJhc2VVUkws
IGNvbnN0IFN0cmluZyYgY2hhcnNldCkKKyAgICA6IGJhc2VVUkwgeyBzaGVldEJhc2VVUkwuaXNO
dWxsKCkgPyBkb2N1bWVudC5iYXNlVVJMKCkgOiBzaGVldEJhc2VVUkwgfQorICAgICwgY2hhcnNl
dCB7IGNoYXJzZXQgfQorICAgICwgbW9kZSB7IGRvY3VtZW50LmluUXVpcmtzTW9kZSgpID8gSFRN
TFF1aXJrc01vZGUgOiBIVE1MU3RhbmRhcmRNb2RlIH0KKyAgICAsIGlzSFRNTERvY3VtZW50IHsg
ZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSB9CisgICAgLCBoYXNEb2N1bWVudFNlY3VyaXR5T3Jp
Z2luIHsgc2hlZXRCYXNlVVJMLmlzTnVsbCgpIHx8IGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCku
Y2FuUmVxdWVzdChiYXNlVVJMKSB9CisgICAgLCB1c2VTeXN0ZW1BcHBlYXJhbmNlIHsgZG9jdW1l
bnQucGFnZSgpID8gZG9jdW1lbnQucGFnZSgpLT51c2VTeXN0ZW1BcHBlYXJhbmNlKCkgOiBmYWxz
ZSB9CisgICAgLCBhc3BlY3RSYXRpb0VuYWJsZWQgeyBkb2N1bWVudC5zZXR0aW5ncygpLmFzcGVj
dFJhdGlvRW5hYmxlZCgpIH0KKyAgICAsIGNvbG9yRmlsdGVyRW5hYmxlZCB7IGRvY3VtZW50LnNl
dHRpbmdzKCkuY29sb3JGaWx0ZXJFbmFibGVkKCkgfQorICAgICwgY29uc3RhbnRQcm9wZXJ0aWVz
RW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCgp
IH0KKyAgICAsIGRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCku
ZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkKCkgfQorICAgICwgZW5mb3JjZXNDU1NNSU1FVHlwZUlu
Tm9RdWlya3NNb2RlIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5lbmZvcmNlQ1NTTUlNRVR5cGVJbk5v
UXVpcmtzTW9kZSgpIH0KKyAgICAsIGluZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxl
ZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzSW5kaXZpZHVhbFRyYW5zZm9ybVByb3BlcnRpZXNF
bmFibGVkKCkgfQorI2lmIEVOQUJMRShPVkVSRkxPV19TQ1JPTExJTkdfVE9VQ0gpCisgICAgLCBs
ZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoRW5hYmxlZCB7IHNob3VsZEVuYWJsZUxlZ2FjeU92
ZXJmbG93U2Nyb2xsaW5nVG91Y2goZG9jdW1lbnQpIH0KICNlbmRpZgotICAgIHNwcmluZ1RpbWlu
Z0Z1bmN0aW9uRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkuc3ByaW5nVGltaW5nRnVuY3Rp
b25FbmFibGVkKCk7Ci0gICAgY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCA9IGRvY3VtZW50LnNl
dHRpbmdzKCkuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCgpOwotICAgIGNvbG9yRmlsdGVyRW5h
YmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkuY29sb3JGaWx0ZXJFbmFibGVkKCk7CisgICAgLCBv
dmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5vdmVyc2Nyb2xs
QmVoYXZpb3JFbmFibGVkKCkgfQorICAgICwgcmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQgeyBk
b2N1bWVudC5zZXR0aW5ncygpLmNzc1JlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkKCkgfQorICAg
ICwgc2Nyb2xsQmVoYXZpb3JFbmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5DU1NPTVZpZXdT
bW9vdGhTY3JvbGxpbmdFbmFibGVkKCkgfQorICAgICwgc3ByaW5nVGltaW5nRnVuY3Rpb25FbmFi
bGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQoKSB9
CisjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKKyAgICAsIHRleHRBdXRvc2l6aW5nRW5hYmxl
ZCB7IGRvY3VtZW50LnNldHRpbmdzKCkudGV4dEF1dG9zaXppbmdFbmFibGVkKCkgfQorI2VuZGlm
CisgICAgLCB1c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yIHsgZG9jdW1l
bnQuc2V0dGluZ3MoKS51c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKCkg
fQogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgYXR0YWNobWVudEVuYWJsZWQg
PSBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVt
ZW50RW5hYmxlZCgpOworICAgICwgYXR0YWNobWVudEVuYWJsZWQgeyBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpIH0KICNl
bmRpZgotICAgIGRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCku
ZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkKCk7Ci0gICAgc2Nyb2xsQmVoYXZpb3JFbmFibGVkID0g
ZG9jdW1lbnQuc2V0dGluZ3MoKS5DU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkKCk7Ci0g
ICAgb3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkub3ZlcnNj
cm9sbEJlaGF2aW9yRW5hYmxlZCgpOwotICAgIHVzZVN5c3RlbUFwcGVhcmFuY2UgPSBkb2N1bWVu
dC5wYWdlKCkgPyBkb2N1bWVudC5wYWdlKCktPnVzZVN5c3RlbUFwcGVhcmFuY2UoKSA6IGZhbHNl
OwotICAgIGluZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZCA9IGRvY3VtZW50LnNl
dHRpbmdzKCkuY3NzSW5kaXZpZHVhbFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkKCk7Ci0gICAg
YXNwZWN0UmF0aW9FbmFibGVkID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5hc3BlY3RSYXRpb0VuYWJs
ZWQoKTsKK3sKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGEs
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGIpCkBAIC04NywyOCArOTUsMzIgQEAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIAogICAgIHJldHVybiBhLmJhc2VVUkwgPT0g
Yi5iYXNlVVJMCiAgICAgICAgICYmIGEuY2hhcnNldCA9PSBiLmNoYXJzZXQKICAgICAgICAgJiYg
YS5tb2RlID09IGIubW9kZQorICAgICAgICAmJiBhLmVuY2xvc2luZ1J1bGVUeXBlID09IGIuZW5j
bG9zaW5nUnVsZVR5cGUKICAgICAgICAgJiYgYS5pc0hUTUxEb2N1bWVudCA9PSBiLmlzSFRNTERv
Y3VtZW50Ci0jaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKLSAgICAgICAgJiYgYS50ZXh0QXV0
b3NpemluZ0VuYWJsZWQgPT0gYi50ZXh0QXV0b3NpemluZ0VuYWJsZWQKLSNlbmRpZgorICAgICAg
ICAmJiBhLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPT0gYi5oYXNEb2N1bWVudFNlY3VyaXR5
T3JpZ2luCisgICAgICAgICYmIGEuaXNDb250ZW50T3BhcXVlID09IGIuaXNDb250ZW50T3BhcXVl
CisgICAgICAgICYmIGEudXNlU3lzdGVtQXBwZWFyYW5jZSA9PSBiLnVzZVN5c3RlbUFwcGVhcmFu
Y2UKKyAgICAgICAgJiYgYS5hc3BlY3RSYXRpb0VuYWJsZWQgPT0gYi5hc3BlY3RSYXRpb0VuYWJs
ZWQKKyAgICAgICAgJiYgYS5jb2xvckZpbHRlckVuYWJsZWQgPT0gYi5jb2xvckZpbHRlckVuYWJs
ZWQKKyAgICAgICAgJiYgYS5jb25zdGFudFByb3BlcnRpZXNFbmFibGVkID09IGIuY29uc3RhbnRQ
cm9wZXJ0aWVzRW5hYmxlZAorICAgICAgICAmJiBhLmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCA9
PSBiLmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZAorICAgICAgICAmJiBhLmVuZm9yY2VzQ1NTTUlN
RVR5cGVJbk5vUXVpcmtzTW9kZSA9PSBiLmVuZm9yY2VzQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9k
ZQorICAgICAgICAmJiBhLmluZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZCA9PSBi
LmluZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZAogI2lmIEVOQUJMRShPVkVSRkxP
V19TQ1JPTExJTkdfVE9VQ0gpCiAgICAgICAgICYmIGEubGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdU
b3VjaEVuYWJsZWQgPT0gYi5sZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoRW5hYmxlZAogI2Vu
ZGlmCi0gICAgICAgICYmIGEuZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlID09IGIu
ZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlCi0gICAgICAgICYmIGEudXNlTGVnYWN5
QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9PSBiLnVzZUxlZ2FjeUJhY2tncm91bmRT
aXplU2hvcnRoYW5kQmVoYXZpb3IKKyAgICAgICAgJiYgYS5vdmVyc2Nyb2xsQmVoYXZpb3JFbmFi
bGVkID09IGIub3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZAorICAgICAgICAmJiBhLnJlbGF0aXZl
Q29sb3JTeW50YXhFbmFibGVkID09IGIucmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQKKyAgICAg
ICAgJiYgYS5zY3JvbGxCZWhhdmlvckVuYWJsZWQgPT0gYi5zY3JvbGxCZWhhdmlvckVuYWJsZWQK
ICAgICAgICAgJiYgYS5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQgPT0gYi5zcHJpbmdUaW1p
bmdGdW5jdGlvbkVuYWJsZWQKLSAgICAgICAgJiYgYS5jb25zdGFudFByb3BlcnRpZXNFbmFibGVk
ID09IGIuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZAotICAgICAgICAmJiBhLmNvbG9yRmlsdGVy
RW5hYmxlZCA9PSBiLmNvbG9yRmlsdGVyRW5hYmxlZAorI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJ
TkcpCisgICAgICAgICYmIGEudGV4dEF1dG9zaXppbmdFbmFibGVkID09IGIudGV4dEF1dG9zaXpp
bmdFbmFibGVkCisjZW5kaWYKKyAgICAgICAgJiYgYS51c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNo
b3J0aGFuZEJlaGF2aW9yID09IGIudXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhh
dmlvcgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgICAgICYmIGEuYXR0YWNo
bWVudEVuYWJsZWQgPT0gYi5hdHRhY2htZW50RW5hYmxlZAogI2VuZGlmCi0gICAgICAgICYmIGEu
ZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkID09IGIuZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkCi0g
ICAgICAgICYmIGEuc2Nyb2xsQmVoYXZpb3JFbmFibGVkID09IGIuc2Nyb2xsQmVoYXZpb3JFbmFi
bGVkCi0gICAgICAgICYmIGEuaW5kaXZpZHVhbFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkID09
IGIuaW5kaXZpZHVhbFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkCi0gICAgICAgICYmIGEuaGFz
RG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9PSBiLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4KLSAg
ICAgICAgJiYgYS51c2VTeXN0ZW1BcHBlYXJhbmNlID09IGIudXNlU3lzdGVtQXBwZWFyYW5jZQot
ICAgICAgICAmJiBhLmFzcGVjdFJhdGlvRW5hYmxlZCA9PSBiLmFzcGVjdFJhdGlvRW5hYmxlZAot
ICAgICAgICAmJiBhLm92ZXJzY3JvbGxCZWhhdmlvckVuYWJsZWQgPT0gYi5vdmVyc2Nyb2xsQmVo
YXZpb3JFbmFibGVkOworICAgIDsKIH0KIAogVVJMIENTU1BhcnNlckNvbnRleHQ6OmNvbXBsZXRl
VVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDEsNyArNDEsNiBAQCBjbGFzcyBEb2N1bWVudDsKIHN0cnVjdCBDU1NQYXJzZXJDb250ZXh0IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLQogICAgIENTU1BhcnNlckNv
bnRleHQoQ1NTUGFyc2VyTW9kZSwgY29uc3QgVVJMJiBiYXNlVVJMID0gVVJMKCkpOwogICAgIFdF
QkNPUkVfRVhQT1JUIENTU1BhcnNlckNvbnRleHQoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwm
IGJhc2VVUkwgPSBVUkwoKSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0ID0gZW1wdHlTdHJpbmcoKSk7
CiAKQEAgLTUwLDM2ICs0OSwzOCBAQCBwdWJsaWM6CiAgICAgQ1NTUGFyc2VyTW9kZSBtb2RlIHsg
SFRNTFN0YW5kYXJkTW9kZSB9OwogICAgIE9wdGlvbmFsPFN0eWxlUnVsZVR5cGU+IGVuY2xvc2lu
Z1J1bGVUeXBlOwogICAgIGJvb2wgaXNIVE1MRG9jdW1lbnQgeyBmYWxzZSB9OwotI2lmIEVOQUJM
RShURVhUX0FVVE9TSVpJTkcpCi0gICAgYm9vbCB0ZXh0QXV0b3NpemluZ0VuYWJsZWQgeyBmYWxz
ZSB9OwotI2VuZGlmCisKKyAgICAvLyBUaGlzIGlzIG9ubHkgbmVlZGVkIHRvIHN1cHBvcnQgZ2V0
TWF0Y2hlZENTU1J1bGVzLgorICAgIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiB7IGZh
bHNlIH07CisKKyAgICBib29sIGlzQ29udGVudE9wYXF1ZSB7IGZhbHNlIH07CisgICAgYm9vbCB1
c2VTeXN0ZW1BcHBlYXJhbmNlIHsgZmFsc2UgfTsKKworICAgIC8vIFNldHRpbmdzLgorICAgIGJv
b2wgYXNwZWN0UmF0aW9FbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIGNvbG9yRmlsdGVyRW5h
YmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBjb25zdGFudFByb3BlcnRpZXNFbmFibGVkIHsgZmFs
c2UgfTsKKyAgICBib29sIGRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07CisgICAg
Ym9vbCBlbmZvcmNlc0NTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGUgeyB0cnVlIH07CisgICAgYm9v
bCBpbmRpdmlkdWFsVHJhbnNmb3JtUHJvcGVydGllc0VuYWJsZWQgeyBmYWxzZSB9OwogI2lmIEVO
QUJMRShPVkVSRkxPV19TQ1JPTExJTkdfVE9VQ0gpCiAgICAgYm9vbCBsZWdhY3lPdmVyZmxvd1Nj
cm9sbGluZ1RvdWNoRW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKLSAgICBib29sIGVuZm9yY2Vz
Q1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZSB7IHRydWUgfTsKLSAgICBib29sIHVzZUxlZ2FjeUJh
Y2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IgeyBmYWxzZSB9OworICAgIGJvb2wgb3ZlcnNj
cm9sbEJlaGF2aW9yRW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCByZWxhdGl2ZUNvbG9yU3lu
dGF4RW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBzY3JvbGxCZWhhdmlvckVuYWJsZWQgeyBm
YWxzZSB9OwogICAgIGJvb2wgc3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkIHsgZmFsc2UgfTsK
LSAgICBib29sIGNvbnN0YW50UHJvcGVydGllc0VuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wg
Y29sb3JGaWx0ZXJFbmFibGVkIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5H
KQorICAgIGJvb2wgdGV4dEF1dG9zaXppbmdFbmFibGVkIHsgZmFsc2UgfTsKKyNlbmRpZgorICAg
IGJvb2wgdXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciB7IGZhbHNlIH07
CisKKyAgICAvLyBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLgogI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCiAgICAgYm9vbCBhdHRhY2htZW50RW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYK
LSAgICBib29sIGRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBz
Y3JvbGxCZWhhdmlvckVuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgaW5kaXZpZHVhbFRyYW5z
Zm9ybVByb3BlcnRpZXNFbmFibGVkIHsgZmFsc2UgfTsKLQotICAgIGJvb2wgb3ZlcnNjcm9sbEJl
aGF2aW9yRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgCi0gICAgLy8gVGhpcyBpcyBvbmx5IG5lZWRl
ZCB0byBzdXBwb3J0IGdldE1hdGNoZWRDU1NSdWxlcy4KLSAgICBib29sIGhhc0RvY3VtZW50U2Vj
dXJpdHlPcmlnaW4geyBmYWxzZSB9OwotICAgIAotICAgIGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5j
ZSB7IGZhbHNlIH07CiAKICAgICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNv
bnN0OwotCi0gICAgYm9vbCBpc0NvbnRlbnRPcGFxdWUgeyBmYWxzZSB9OwotCi0gICAgYm9vbCBh
c3BlY3RSYXRpb0VuYWJsZWQgeyBmYWxzZSB9OwogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENTU1BhcnNlckNvbnRleHQmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CkBAIC05MCw2ICs5
MSw4IEBAIFdFQkNPUkVfRVhQT1JUIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIHMKIHN0cnVjdCBD
U1NQYXJzZXJDb250ZXh0SGFzaCB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYga2V5KQogICAgIHsKKyAgICAgICAgLy8gRklYTUU6IENvbnZlcnQgdGhp
cyB0byB1c2UgV1RGOjpIYXNoZXIuCisKICAgICAgICAgdW5zaWduZWQgaGFzaCA9IDA7CiAgICAg
ICAgIGlmICgha2V5LmJhc2VVUkwuaXNOdWxsKCkpCiAgICAgICAgICAgICBoYXNoIF49IFdURjo6
VVJMSGFzaDo6aGFzaChrZXkuYmFzZVVSTCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAkocmV2aXNpb24gMjcyODM3KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MjYsMTQgKzE3MjYsMTQgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3Vt
ZVpJbmRleChDUwogICAgIHJldHVybiBjb25zdW1lSW50ZWdlcihyYW5nZSk7CiB9CiAKLXN0YXRp
YyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVTaGFkb3coQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgYm9vbCBpc0JveFNoYWRvd1Byb3BlcnR5
KQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVNoYWRvdyhDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgYm9vbCBpc0JveFNo
YWRvd1Byb3BlcnR5KQogewogICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5v
bmUpCiAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwogCiAgICAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gc2hhZG93VmFsdWVMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOwogICAgIGRvIHsKLSAgICAgICAgaWYgKFJlZlB0cjxDU1NTaGFkb3dWYWx1ZT4g
c2hhZG93VmFsdWUgPSBjb25zdW1lU2luZ2xlU2hhZG93KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBp
c0JveFNoYWRvd1Byb3BlcnR5LCBpc0JveFNoYWRvd1Byb3BlcnR5KSkKKyAgICAgICAgaWYgKFJl
ZlB0cjxDU1NTaGFkb3dWYWx1ZT4gc2hhZG93VmFsdWUgPSBjb25zdW1lU2luZ2xlU2hhZG93KHJh
bmdlLCBjb250ZXh0LCBpc0JveFNoYWRvd1Byb3BlcnR5LCBpc0JveFNoYWRvd1Byb3BlcnR5KSkK
ICAgICAgICAgICAgIHNoYWRvd1ZhbHVlTGlzdC0+YXBwZW5kKCpzaGFkb3dWYWx1ZSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTgxMywxOSArMTgxMywx
OSBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lVGV4dEVtcGhhCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVD
YXJldENvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUpCitzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQ2FyZXRD
b2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKQog
ICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKLSAgICByZXR1cm4gY29uc3VtZUNv
bG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKKyAgICByZXR1cm4gY29uc3VtZUNvbG9yKHJhbmdl
LCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZU91dGxpbmVD
b2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZU91dGxpbmVDb2xvcihDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsK
ICAgICAvLyBBbGxvdyB0aGUgc3BlY2lhbCBmb2N1cyBjb2xvciBldmVuIGluIEhUTUwgU3RhbmRh
cmQgcGFyc2luZyBtb2RlLgogICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZVdl
YmtpdEZvY3VzUmluZ0NvbG9yKQogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsK
LSAgICByZXR1cm4gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKKyAgICByZXR1
cm4gY29uc3VtZUNvbG9yKHJhbmdlLCBjb250ZXh0KTsKIH0KIAogc3RhdGljIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gY29uc3VtZUxpbmVXaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQpA
QCAtMjIyOCw3ICsyMjI4LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29u
c3VtZQogICAgIHJldHVybiBjb25zdW1lUG9zaXRpb25Mb25naGFuZDxDU1NWYWx1ZVRvcCwgQ1NT
VmFsdWVCb3R0b20+KHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKIH0KIAotc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZT4gY29uc3VtZVBhaW50U3Ryb2tlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lUGFpbnRTdHJva2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1Zh
bHVlTm9uZSkKICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CkBAIC0yMjM4LDcg
KzIyMzgsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lUGFpbnRTdHJvCiAgICAg
ICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICBw
YXJzZWRWYWx1ZSA9IGNvbnN1bWVJZGVudChyYW5nZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKKyAg
ICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUNvbG9yKHJhbmdlLCBjb250ZXh0KTsKICAg
ICAgICAgaWYgKHBhcnNlZFZhbHVlKSB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAg
ICAgICB2YWx1ZXMtPmFwcGVuZCh1cmwucmVsZWFzZU5vbk51bGwoKSk7CkBAIC0yMjQ3LDcgKzIy
NDcsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lUGFpbnRTdHJvCiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIHVybDsKICAgICB9Ci0gICAgcmV0dXJuIGNvbnN1bWVDb2xvcihy
YW5nZSwgY3NzUGFyc2VyTW9kZSk7CisgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihyYW5nZSwgY29u
dGV4dCk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVHbHlwaE9yaWVudGF0
aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIG1vZGUsIENTU1By
b3BlcnR5SUQgcHJvcGVydHkpCkBAIC0zMjU4LDcgKzMyNTgsNyBAQCBzdGF0aWMgUmVmUHRyPENT
U1ZhbHVlPiBjb25zdW1lQmFja2dyb3VuCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tT
aXplOgogICAgICAgICByZXR1cm4gY29uc3VtZUJhY2tncm91bmRTaXplKHByb3BlcnR5LCByYW5n
ZSwgY29udGV4dC5tb2RlKTsKICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgot
ICAgICAgICByZXR1cm4gY29uc3VtZUNvbG9yKHJhbmdlLCBjb250ZXh0Lm1vZGUpOworICAgICAg
ICByZXR1cm4gY29uc3VtZUNvbG9yKHJhbmdlLCBjb250ZXh0KTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKICAgICB9OwpAQCAtNDI0MSw3ICs0MjQxLDcgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFycwogICAgIGNhc2UgQ1NTUHJvcGVydHlXaWRvd3M6CiAg
ICAgICAgIHJldHVybiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKG1fcmFuZ2UpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yOgotICAgICAgICByZXR1cm4gY29uc3VtZUNv
bG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2xv
cihtX3JhbmdlLCBtX2NvbnRleHQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlv
blNraXA6CiAgICAgICAgIHJldHVybiBjb25zdW1lVGV4dERlY29yYXRpb25Ta2lwKG1fcmFuZ2Up
OwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGg6CkBAIC00MjYxLDEy
ICs0MjYxLDEyIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnMKICAg
ICBjYXNlIENTU1Byb3BlcnR5Rmxvb2RDb2xvcjoKICAgICBjYXNlIENTU1Byb3BlcnR5TGlnaHRp
bmdDb2xvcjoKICAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uUnVsZUNvbG9yOgotICAgICAgICBy
ZXR1cm4gY29uc3VtZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKTsKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVDb2xvcihtX3JhbmdlLCBtX2NvbnRleHQpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlDYXJldENvbG9yOgotICAgICAgICByZXR1cm4gY29uc3VtZUNhcmV0Q29sb3IobV9yYW5nZSwg
bV9jb250ZXh0Lm1vZGUpOworICAgICAgICByZXR1cm4gY29uc3VtZUNhcmV0Q29sb3IobV9yYW5n
ZSwgbV9jb250ZXh0KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3I6CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihtX3Jh
bmdlLCBtX2NvbnRleHQubW9kZSwgaW5RdWlya3NNb2RlKCkpOworICAgICAgICByZXR1cm4gY29u
c3VtZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dCwgaW5RdWlya3NNb2RlKCkpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJJbmxpbmVTdGFydFdpZHRoOgogICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJJbmxpbmVFbmRXaWR0aDoKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tTdGFy
dFdpZHRoOgpAQCAtNDI3OCw3ICs0Mjc4LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9wZXJ0
eVBhcnNlcjo6cGFycwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcjogewogICAg
ICAgICBib29sIGFsbG93UXVpcmt5Q29sb3JzID0gaW5RdWlya3NNb2RlKCkKICAgICAgICAgICAg
ICYmIChjdXJyZW50U2hvcnRoYW5kID09IENTU1Byb3BlcnR5SW52YWxpZCB8fCBjdXJyZW50U2hv
cnRoYW5kID09IENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IpOwotICAgICAgICByZXR1cm4gY29uc3Vt
ZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBhbGxvd1F1aXJreUNvbG9ycyk7CisgICAg
ICAgIHJldHVybiBjb25zdW1lQ29sb3IobV9yYW5nZSwgbV9jb250ZXh0LCBhbGxvd1F1aXJreUNv
bG9ycyk7CiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aDoKICAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoOgpAQCAtNDI5NCw3ICs0Mjk0LDcgQEAg
UmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFycwogICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0U2hhZG93OiAvLyBDU1MyIHByb3BlcnR5LCBkcm9wcGVkIGluIENTUzIuMSwgYmFj
ayBpbiBDU1MzLCBzbyB0cmVhdCBhcyBDU1MzCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNoYWRv
dzoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93OgotICAgICAgICByZXR1cm4g
Y29uc3VtZVNoYWRvdyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSwgcHJvcGVydHkgPT0gQ1NTUHJv
cGVydHlCb3hTaGFkb3cgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3cp
OworICAgICAgICByZXR1cm4gY29uc3VtZVNoYWRvdyhtX3JhbmdlLCBtX2NvbnRleHQsIHByb3Bl
cnR5ID09IENTU1Byb3BlcnR5Qm94U2hhZG93IHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Vi
a2l0Qm94U2hhZG93KTsKICAgICBjYXNlIENTU1Byb3BlcnR5RmlsdGVyOgogI2lmIEVOQUJMRShG
SUxURVJTX0xFVkVMXzIpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVy
OgpAQCAtNDM0Miw3ICs0MzQyLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNl
cjo6cGFycwogICAgICAgICByZXR1cm4gY29uc3VtZVJvdGF0ZShtX3JhbmdlLCBtX2NvbnRleHQu
bW9kZSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGw6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVN0
cm9rZToKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVQYWludFN0cm9rZShtX3JhbmdlLCBtX2NvbnRl
eHQubW9kZSk7CisgICAgICAgIHJldHVybiBjb25zdW1lUGFpbnRTdHJva2UobV9yYW5nZSwgbV9j
b250ZXh0KTsKICAgICBjYXNlIENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlHbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDoKICAgICAgICAg
cmV0dXJuIGNvbnN1bWVHbHlwaE9yaWVudGF0aW9uKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBw
cm9wZXJ0eSk7CkBAIC01MDkzLDcgKzUwOTMsNyBAQCBib29sIENTU1Byb3BlcnR5UGFyc2VyOjpj
b25zdW1lQm9yZGVyKFJlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCFjb2xvcikgewotICAgICAgICAgICAgY29sb3IgPSBjb25zdW1lQ29sb3IobV9y
YW5nZSwgbV9jb250ZXh0Lm1vZGUpOworICAgICAgICAgICAgY29sb3IgPSBjb25zdW1lQ29sb3Io
bV9yYW5nZSwgbV9jb250ZXh0KTsKICAgICAgICAgICAgIGlmIChjb2xvcikKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkocmV2aXNpb24gMjcy
ODM3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTAsMzQgKzY5MCwyOTIgQEAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lVXJsKENTUwogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZVZhbHVlKHVybC50b1N0cmluZygpLCBDU1NVbml0VHlwZTo6Q1NTX1VS
SSk7CiB9CiAKLXN0YXRpYyB1aW50OF90IGNsYW1wUkdCQ29tcG9uZW50KGRvdWJsZSB2YWx1ZSwg
Ym9vbCBpc1BlcmNlbnRhZ2UpCitzdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lT3B0aW9u
YWxBbHBoYShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKLSAgICBpZiAoaXNQZXJjZW50
YWdlKQorICAgIGlmICghY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpCisg
ICAgICAgIHJldHVybiAxLjA7CisKKyAgICBpZiAoYXV0byBhbHBoYVBhcmFtZXRlciA9IGNvbnN1
bWVOdW1iZXJPclBlcmNlbnREaXZpZGVkQnkxMDBSYXcocmFuZ2UpKQorICAgICAgICByZXR1cm4g
Y2xhbXBUbzxkb3VibGU+KCphbHBoYVBhcmFtZXRlciwgMC4wLCAxLjApOworCisgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKK30KKwordGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRz
PiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lT3B0
aW9uYWxBbHBoYU9ySWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYg
KGF1dG8gYWxwaGEgPSBjb25zdW1lT3B0aW9uYWxBbHBoYShyYW5nZSkpCisgICAgICAgIHJldHVy
biB7ICphbHBoYSB9OworCisgICAgaWYgKGF1dG8gaWRlbnQgPSBjb25zdW1lSWRlbnRSYXc8YWxs
b3dlZElkZW50cy4uLj4ocmFuZ2UpKQorICAgICAgICByZXR1cm4geyAqaWRlbnQgfTsKKworICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3N0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbnN1
bWVIdWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQpCit7CisgICAgaWYgKGF1dG8gYW5nbGUgPSBjb25zdW1lQW5nbGVSYXcocmFuZ2Us
IGNvbnRleHQubW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0bGVzc1plcm9RdWlyazo6
Rm9yYmlkKSkKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlRGVncmVl
cyhhbmdsZS0+dHlwZSwgYW5nbGUtPnZhbHVlKTsKKworICAgIGlmIChhdXRvIG51bWJlciA9IGNv
bnN1bWVOdW1iZXJSYXcocmFuZ2UpKQorICAgICAgICByZXR1cm4gKm51bWJlcjsKKworICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3RlbXBsYXRlPENTU1ZhbHVlSUQuLi4gYWxsb3dlZElk
ZW50cz4gc3RhdGljIE9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlEPj4gY29uc3Vt
ZUh1ZU9ySWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNv
bnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKGF1dG8gaHVlID0gY29uc3VtZUh1ZShyYW5nZSwg
Y29udGV4dCkpCisgICAgICAgIHJldHVybiB7ICpodWUgfTsKKworICAgIGlmIChhdXRvIGlkZW50
ID0gY29uc3VtZUlkZW50UmF3PGFsbG93ZWRJZGVudHMuLi4+KHJhbmdlKSkKKyAgICAgICAgcmV0
dXJuIHsgKmlkZW50IH07CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitzdGF0aWMg
ZG91YmxlIG5vcm1hbGl6ZUh1ZUZyb20wVG8zNjAoZG91YmxlIGh1ZSkKK3sKKyAgICByZXR1cm4g
c3RkOjpmbW9kKHN0ZDo6Zm1vZChodWUsIDM2MC4wKSArIDM2MC4wLCAzNjAuMCkgLyAzNjAuMDsK
K30KKworc3RhdGljIGRvdWJsZSBub3JtYWxpemVIdWVGcm9tMFRvMShkb3VibGUgaHVlKQorewor
ICAgIHJldHVybiBub3JtYWxpemVIdWVGcm9tMFRvMzYwKGh1ZSkgLyAzNjAuMDsKK30KKwordGVt
cGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFu
dDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lTnVtYmVyT3JJZGVudChDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1lTnVtYmVyUmF3
KHJhbmdlKSkKKyAgICAgICAgcmV0dXJuIHsgKm51bWJlciB9OworCisgICAgaWYgKGF1dG8gaWRl
bnQgPSBjb25zdW1lSWRlbnRSYXc8YWxsb3dlZElkZW50cy4uLj4ocmFuZ2UpKQorICAgICAgICBy
ZXR1cm4geyAqaWRlbnQgfTsKKworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3RlbXBs
YXRlPENTU1ZhbHVlSUQuLi4gYWxsb3dlZElkZW50cz4gc3RhdGljIE9wdGlvbmFsPFZhcmlhbnQ8
ZG91YmxlLCBDU1NWYWx1ZUlEPj4gY29uc3VtZVBlcmNlbnRPcklkZW50KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChhdXRvIHBlcmNlbnQgPSBjb25zdW1lUGVyY2VudFJh
dyhyYW5nZSkpCisgICAgICAgIHJldHVybiB7ICpwZXJjZW50IH07CisKKyAgICBpZiAoYXV0byBp
ZGVudCA9IGNvbnN1bWVJZGVudFJhdzxhbGxvd2VkSWRlbnRzLi4uPihyYW5nZSkpCisgICAgICAg
IHJldHVybiB7ICppZGVudCB9OworCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordGVt
cGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFu
dDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lUGVyY2VudERpdmlkZWRCeTEwME9ySWRlbnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKGF1dG8gcGVyY2VudCA9IGNv
bnN1bWVQZXJjZW50UmF3KHJhbmdlKSkKKyAgICAgICAgcmV0dXJuIHsgY2xhbXBUbzxkb3VibGU+
KCpwZXJjZW50LCAwLjAsIDEwMC4wKSAvIDEwMC4wIH07CisKKyAgICBpZiAoYXV0byBpZGVudCA9
IGNvbnN1bWVJZGVudFJhdzxhbGxvd2VkSWRlbnRzLi4uPihyYW5nZSkpCisgICAgICAgIHJldHVy
biB7ICppZGVudCB9OworCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordGVtcGxhdGU8
Q1NTVmFsdWVJRCBDMSwgQ1NTVmFsdWVJRCBDMiwgQ1NTVmFsdWVJRCBDMywgQ1NTVmFsdWVJRCBB
bHBoYUNoYW5uZWwsIHR5cGVuYW1lIENvbG9yVHlwZT4gc3RhdGljIGRlY2x0eXBlKGF1dG8pIGV4
dHJhY3RDaGFubmVsVmFsdWUoQ1NTVmFsdWVJRCBjaGFubmVsLCBjb25zdCBDb2xvclR5cGUmIG9y
aWdpbkNvbG9yKQoreworICAgIGF1dG8gY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKG9y
aWdpbkNvbG9yKTsKKyAgICBzd2l0Y2ggKGNoYW5uZWwpIHsKKyAgICAgICAgY2FzZSBDMToKKyAg
ICAgICAgICAgIHJldHVybiBjb21wb25lbnRzWzBdOworICAgICAgICBjYXNlIEMyOgorICAgICAg
ICAgICAgcmV0dXJuIGNvbXBvbmVudHNbMV07CisgICAgICAgIGNhc2UgQzM6CisgICAgICAgICAg
ICByZXR1cm4gY29tcG9uZW50c1syXTsKKyAgICAgICAgY2FzZSBBbHBoYUNoYW5uZWw6CisgICAg
ICAgICAgICByZXR1cm4gY29tcG9uZW50c1szXTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwordGVtcGxhdGU8Q1NTVmFsdWVJ
RCBDMSwgQ1NTVmFsdWVJRCBDMiwgQ1NTVmFsdWVJRCBDMywgQ1NTVmFsdWVJRCBBbHBoYUNoYW5u
ZWwsIHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFuc2Zvcm1lcj4gc3RhdGlj
IGRlY2x0eXBlKGF1dG8pIHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbChjb25zdCBWYXJpYW50
PGRvdWJsZSwgQ1NTVmFsdWVJRD4mIHBhcnNlZENoYW5uZWwsIGNvbnN0IENvbG9yVHlwZSYgb3Jp
Z2luQ29sb3IsIFZhbHVlVHJhbnNmb3JtZXImJiB2YWx1ZVRyYW5zZm9ybWVyKQoreworICAgIHJl
dHVybiBzd2l0Y2hPbihwYXJzZWRDaGFubmVsLAorICAgICAgICBbJl0gKGRvdWJsZSB2YWx1ZSkg
eworICAgICAgICAgICAgcmV0dXJuIHZhbHVlVHJhbnNmb3JtZXIodmFsdWUpOworICAgICAgICB9
LAorICAgICAgICBbJl0gKENTU1ZhbHVlSUQgY2hhbm5lbCkgeworICAgICAgICAgICAgcmV0dXJu
IGV4dHJhY3RDaGFubmVsVmFsdWU8QzEsIEMyLCBDMywgQWxwaGFDaGFubmVsPihjaGFubmVsLCBv
cmlnaW5Db2xvcik7CisgICAgICAgIH0KKyAgICApOworfQorCit0ZW1wbGF0ZTxDU1NWYWx1ZUlE
IEMxLCBDU1NWYWx1ZUlEIEMyLCBDU1NWYWx1ZUlEIEMzLCBDU1NWYWx1ZUlEIEFscGhhQ2hhbm5l
bCwgdHlwZW5hbWUgQ29sb3JUeXBlPiBzdGF0aWMgZGVjbHR5cGUoYXV0bykgcmVzb2x2ZVJlbGF0
aXZlQ29sb3JDaGFubmVsKGNvbnN0IFZhcmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlEPiYgcGFyc2Vk
Q2hhbm5lbCwgY29uc3QgQ29sb3JUeXBlJiBvcmlnaW5Db2xvcikKK3sKKyAgICByZXR1cm4gcmVz
b2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPEMxLCBDMiwgQzMsIEFscGhhQ2hhbm5lbD4ocGFyc2Vk
Q2hhbm5lbCwgb3JpZ2luQ29sb3IsIFtdKGF1dG8gdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9KTsK
K30KKworZW51bSBjbGFzcyBSR0JDb21wb25lbnRUeXBlIHsKKyAgICBOdW1iZXIsCisgICAgUGVy
Y2VudGFnZQorfTsKKworc3RhdGljIHVpbnQ4X3QgY2xhbXBSR0JDb21wb25lbnQoZG91YmxlIHZh
bHVlLCBSR0JDb21wb25lbnRUeXBlIGNvbXBvbmVudFR5cGUpCit7CisgICAgaWYgKGNvbXBvbmVu
dFR5cGUgPT0gUkdCQ29tcG9uZW50VHlwZTo6UGVyY2VudGFnZSkKICAgICAgICAgdmFsdWUgPSB2
YWx1ZSAvIDEwMC4wICogMjU1LjA7CiAKICAgICByZXR1cm4gY29udmVydFByZXNjYWxlZFNSR0JB
RmxvYXRUb1NSR0JBQnl0ZSh2YWx1ZSk7CiB9CiAKLXN0YXRpYyBDb2xvciBwYXJzZVJHQlBhcmFt
ZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCitzdGF0aWMgQ29sb3IgY29uc3VtZU9y
aWdpbkNvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmIGNvbnRleHQpCit7CisgICAgYXV0byB2YWx1ZSA9IGNvbnN1bWVDb2xvcihhcmdzLCBjb250
ZXh0KTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKHZh
bHVlLT5pc1JHQkNvbG9yKCkpCisgICAgICAgIHJldHVybiB2YWx1ZS0+Y29sb3IoKTsKKworICAg
IEFTU0VSVCh2YWx1ZS0+aXNWYWx1ZUlEKCkpOworICAgIGF1dG8ga2V5d29yZCA9IHZhbHVlLT52
YWx1ZUlEKCk7CisKKyAgICAvLyBGSVhNRTogV2UgZG9uJ3QgaGF2ZSBlbm91Z2ggY29udGV4dCBp
biB0aGUgcGFyc2VyIHRvIHJlc29sdmluZyBhIHN5c3RlbSBrZXl3b3JkCisgICAgLy8gY29ycmVj
dGx5LiBXZSBzaG91bGQgcGFja2FnZSB1cCB0aGUgcmVsYXRpdmUgY29sb3IgcGFyYW1ldGVycyBh
bmQgcmVzb2x2ZSB0aGUKKyAgICAvLyB3aG9sZSB0aGluZyBhdCB0aGUgYXBwcm9wcmlhdGUgdGlt
ZSB3aGVuIHRoZSBvcmlnaW4gY29sb3IgaXMgYSBzeXN0ZW0ga2V5d29yZC4KKyAgICBpZiAoU3R5
bGVDb2xvcjo6aXNTeXN0ZW1Db2xvcihrZXl3b3JkKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIHJldHVybiBTdHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKGtleXdvcmQsIHsgfSk7Cit9
CisKK3N0YXRpYyBDb2xvciBwYXJzZVJlbGF0aXZlUkdCUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tl
blJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIEFT
U0VSVChhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbSk7CisgICAgY29uc3VtZUlkZW50
UmF3KGFyZ3MpOworCisgICAgYXV0byBvcmlnaW5Db2xvciA9IGNvbnN1bWVPcmlnaW5Db2xvcihh
cmdzLCBjb250ZXh0KTsKKyAgICBpZiAoIW9yaWdpbkNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIHN0cnVjdCBDb21wb25lbnQgeworICAgICAgICBWYXJpYW50PGRv
dWJsZSwgQ1NTVmFsdWVJRD4gdmFsdWU7CisgICAgICAgIE9wdGlvbmFsPFJHQkNvbXBvbmVudFR5
cGU+IHR5cGU7CisgICAgfTsKKworICAgIC8vIEZJWE1FOiBUaGUgc3BlYyBoYXMgZXhhbXBsZXMg
dXNpbmcgdGhlIGlkZW5maWVycyBhcyBjb25zdGFudHMgaW4gY2FsYyBleHByZXNzaW9ucy4gQW4g
ZXhhbXBsZSBmcm9tCisgICAgLy8gdGhlIHJlbGF0aXZlIEhTTCBzZWN0aW9uczoKKyAgICAvLwor
ICAgIC8vICAgICBoc2woZnJvbSB2YXIoLS1hY2NlbnQpIGNhbGMoaCsxODApIHMgbCk7CisgICAg
Ly8KKyAgICAvLyBGaWd1cmUgb3V0IGhvdyB0byBpbmplY3QgdGhlc2UgaW4gdG8gdGhlIGNhbGN1
bGF0aW9uIGVudmlyb25tZW50IGFuZCBhbHNvIGNvbnNpZGVyIHdoYXQgdGhpcyBtZWFucworICAg
IC8vIGZvciBsYXRlIHJlc29sdXRpb24uCisKKyAgICBhdXRvIGNvbnN1bWVDb21wb25lbnQgPSBb
XShhdXRvJiBhcmdzLCBPcHRpb25hbDxSR0JDb21wb25lbnRUeXBlPiBjb21wb25lbnRUeXBlKSAt
PiBPcHRpb25hbDxDb21wb25lbnQ+IHsKKyAgICAgICAgaWYgKCFjb21wb25lbnRUeXBlKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1lTnVtYmVyUmF3KGFyZ3MpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBDb21wb25lbnQgeyAqbnVtYmVyLCBSR0JDb21wb25lbnRUeXBl
OjpOdW1iZXIgfTsKKyAgICAgICAgICAgIGlmIChhdXRvIHBlcmNlbnQgPSBjb25zdW1lUGVyY2Vu
dFJhdyhhcmdzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29tcG9uZW50IHsgKnBlcmNlbnQs
IFJHQkNvbXBvbmVudFR5cGU6OlBlcmNlbnRhZ2UgfTsKKyAgICAgICAgICAgIGlmIChhdXRvIGNo
YW5uZWwgPSBjb25zdW1lSWRlbnRSYXc8Q1NTVmFsdWVSLCBDU1NWYWx1ZUcsIENTU1ZhbHVlQiwg
Q1NTVmFsdWVBbHBoYT4oYXJncykpCisgICAgICAgICAgICAgICAgcmV0dXJuIENvbXBvbmVudCB7
ICpjaGFubmVsLCBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKCpjb21wb25lbnRUeXBl
KSB7CisgICAgICAgICAgICAgICAgY2FzZSBSR0JDb21wb25lbnRUeXBlOjpOdW1iZXI6IHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gbnVtYmVyID0gY29uc3VtZU51bWJlclJhdyhhcmdz
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDb21wb25lbnQgeyAqbnVtYmVyLCBS
R0JDb21wb25lbnRUeXBlOjpOdW1iZXIgfTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8g
Y2hhbm5lbCA9IGNvbnN1bWVJZGVudFJhdzxDU1NWYWx1ZVIsIENTU1ZhbHVlRywgQ1NTVmFsdWVC
LCBDU1NWYWx1ZUFscGhhPihhcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBD
b21wb25lbnQgeyAqY2hhbm5lbCwgUkdCQ29tcG9uZW50VHlwZTo6TnVtYmVyIH07CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGNhc2UgUkdCQ29tcG9uZW50VHlwZTo6UGVyY2VudGFnZTogeworICAgICAg
ICAgICAgICAgICAgICBpZiAoYXV0byBwZXJjZW50ID0gY29uc3VtZVBlcmNlbnRSYXcoYXJncykp
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ29tcG9uZW50IHsgKnBlcmNlbnQsIFJH
QkNvbXBvbmVudFR5cGU6OlBlcmNlbnRhZ2UgfTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF1
dG8gY2hhbm5lbCA9IGNvbnN1bWVJZGVudFJhdzxDU1NWYWx1ZVIsIENTU1ZhbHVlRywgQ1NTVmFs
dWVCLCBDU1NWYWx1ZUFscGhhPihhcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBDb21wb25lbnQgeyAqY2hhbm5lbCwgUkdCQ29tcG9uZW50VHlwZTo6UGVyY2VudGFnZSB9Owor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICBPcHRpb25hbDxSR0JD
b21wb25lbnRUeXBlPiBjb21wb25lbnRUeXBlOworICAgIHN0ZDo6YXJyYXk8VmFyaWFudDxkb3Vi
bGUsIENTU1ZhbHVlSUQ+LCAzPiBjb21wb25lbnRzOworCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IDM7ICsraSkgeworICAgICAgICBhdXRvIGNvbXBvbmVudCA9IGNvbnN1bWVDb21wb25l
bnQoYXJncywgY29tcG9uZW50VHlwZSk7CisgICAgICAgIGlmICghY29tcG9uZW50KQorICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgY29tcG9uZW50c1tpXSA9IGNvbXBvbmVudC0+dmFs
dWU7CisgICAgICAgIGNvbXBvbmVudFR5cGUgPSBjb21wb25lbnQtPnR5cGU7CisgICAgfQorICAg
IAorICAgIGF1dG8gYWxwaGEgPSBjb25zdW1lT3B0aW9uYWxBbHBoYU9ySWRlbnQ8Q1NTVmFsdWVS
LCBDU1NWYWx1ZUcsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oYXJncyk7CisgICAgaWYgKCFh
bHBoYSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgLy8gQWZ0ZXIgcGFyc2luZywgY29udmVydCBpZGVudGlm
aWVycyB0byB2YWx1ZXMgZnJvbSB0aGUgb3JpZ2luIGNvbG9yLgorCisgICAgLy8gRklYTUU6IERv
IHdlIHdhbnQgdG8gYmVpbmcgZG9pbmcgdGhpcyBpbiB1aW50OF90IHZhbHVlcz8gT3Igc2hvdWxk
IHdlIHVzZSBoaWdoZXIgcHJlY2lzaW9uCisgICAgLy8gYW5kIGNsYW1wIGF0IHRoZSBlbmQuIEl0
IHdvbid0IG1ha2UgYSBkaWZmZXJlbmNlIHVudGlsIHdlIHN1cHBvcnQgY2FsY3VsYXRpb25zIG9u
IHRoZSBvcmlnaW5zCisgICAgLy8gY29tcG9uZW50cy4KKyAgICBhdXRvIG9yaWdpbkNvbG9yQXNT
UkdCID0gb3JpZ2luQ29sb3IudG9TUkdCQUxvc3N5PHVpbnQ4X3Q+KCk7CisKKyAgICBhdXRvIHJl
c29sdmVkQ29tcG9uZW50VHlwZSA9IGNvbXBvbmVudFR5cGUudmFsdWVPcihSR0JDb21wb25lbnRU
eXBlOjpQZXJjZW50YWdlKTsKKworICAgIHVpbnQ4X3QgcmVzb2x2ZUNvbXBvbmVudHNbM107Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgICAgICByZXNvbHZlQ29t
cG9uZW50c1tpXSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZVIsIENTU1Zh
bHVlRywgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPihjb21wb25lbnRzW2ldLCBvcmlnaW5Db2xv
ckFzU1JHQiwgW3Jlc29sdmVkQ29tcG9uZW50VHlwZV0oYXV0byB2YWx1ZSkgeworICAgICAgICAg
ICAgcmV0dXJuIGNsYW1wUkdCQ29tcG9uZW50KHZhbHVlLCByZXNvbHZlZENvbXBvbmVudFR5cGUp
OworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBhdXRvIHJlc29sdmVkQWxwaGEgPSByZXNvbHZl
UmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVSLCBDU1NWYWx1ZUcsIENTU1ZhbHVlQiwgQ1NT
VmFsdWVBbHBoYT4oKmFscGhhLCBvcmlnaW5Db2xvckFzU1JHQiwgW10oYXV0byB2YWx1ZSkgewor
ICAgICAgICByZXR1cm4gY29udmVydEZsb2F0QWxwaGFUbzx1aW50OF90Pih2YWx1ZSk7CisgICAg
fSk7CisKKyAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyByZXNvbHZlQ29tcG9uZW50c1swXSwg
cmVzb2x2ZUNvbXBvbmVudHNbMV0sIHJlc29sdmVDb21wb25lbnRzWzJdLCByZXNvbHZlZEFscGhh
IH07Cit9CisKK2VudW0gY2xhc3MgUkdCRnVuY3Rpb25Nb2RlIHsgUkdCLCBSR0JBIH07CisKK3Rl
bXBsYXRlPFJHQkZ1bmN0aW9uTW9kZSBNb2RlPiBzdGF0aWMgQ29sb3IgcGFyc2VSR0JQYXJhbWV0
ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBj
b250ZXh0KQogewogICAgIEFTU0VSVChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1Zh
bHVlUmdiIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVSZ2JhKTsKICAg
ICBhdXRvIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOwogCi0gICAgYm9vbCBpc1BlcmNl
bnRhZ2UgPSBmYWxzZTsKLSAgICBkb3VibGUgY29sb3JQYXJhbWV0ZXI7Ci0gICAgaWYgKGF1dG8g
bnVtYmVyID0gY29uc3VtZU51bWJlclJhdyhhcmdzKSkKLSAgICAgICAgY29sb3JQYXJhbWV0ZXIg
PSAqbnVtYmVyOwotICAgIGVsc2UgaWYgKGF1dG8gcGVyY2VudCA9IGNvbnN1bWVQZXJjZW50UmF3
KGFyZ3MpKSB7Ci0gICAgICAgIGNvbG9yUGFyYW1ldGVyID0gKnBlcmNlbnQ7Ci0gICAgICAgIGlz
UGVyY2VudGFnZSA9IHRydWU7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJldHVybiB7IH07CisgICAg
aWYgY29uc3RleHByIChNb2RlID09IFJHQkZ1bmN0aW9uTW9kZTo6UkdCKSB7CisgICAgICAgIGlm
IChjb250ZXh0LnJlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkICYmIGFyZ3MucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVGcm9tKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlUmVsYXRpdmVSR0JQYXJh
bWV0ZXJzKGFyZ3MsIGNvbnRleHQpOworICAgIH0KIAogICAgIGVudW0gY2xhc3MgQ29sb3JTeW50
YXggewogICAgICAgICBDb21tYXMsCiAgICAgICAgIFdoaXRlc3BhY2VTbGFzaCwKICAgICB9Owog
CisgICAgc3RydWN0IEluaXRpYWxDb21wb25lbnQgeworICAgICAgICBkb3VibGUgdmFsdWU7Cisg
ICAgICAgIFJHQkNvbXBvbmVudFR5cGUgdHlwZTsKKyAgICB9OworCisgICAgYXV0byBjb25zdW1l
SW5pdGlhbENvbXBvbmVudCA9IFtdKGF1dG8gYXJncykgLT4gT3B0aW9uYWw8SW5pdGlhbENvbXBv
bmVudD4geworICAgICAgICBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1lTnVtYmVyUmF3KGFyZ3Mp
KQorICAgICAgICAgICAgcmV0dXJuIHsgeyAqbnVtYmVyLCBSR0JDb21wb25lbnRUeXBlOjpOdW1i
ZXIgfSB9OworICAgICAgICBpZiAoYXV0byBwZXJjZW50ID0gY29uc3VtZVBlcmNlbnRSYXcoYXJn
cykpCisgICAgICAgICAgICByZXR1cm4geyB7ICpwZXJjZW50LCBSR0JDb21wb25lbnRUeXBlOjpQ
ZXJjZW50YWdlIH0gfTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9OworCisg
ICAgYXV0byBjb25zdW1lQ29tcG9uZW50ID0gW10oYXV0byBhcmdzLCBhdXRvIGNvbXBvbmVudFR5
cGUpIHsKKyAgICAgICAgc3dpdGNoIChjb21wb25lbnRUeXBlKSB7CisgICAgICAgIGNhc2UgUkdC
Q29tcG9uZW50VHlwZTo6UGVyY2VudGFnZToKKyAgICAgICAgICAgIHJldHVybiBjb25zdW1lUGVy
Y2VudFJhdyhhcmdzKTsKKyAgICAgICAgY2FzZSBSR0JDb21wb25lbnRUeXBlOjpOdW1iZXI6Cisg
ICAgICAgICAgICByZXR1cm4gY29uc3VtZU51bWJlclJhdyhhcmdzKTsKKyAgICAgICAgfQorICAg
IH07CisKICAgICBDb2xvclN5bnRheCBzeW50YXggPSBDb2xvclN5bnRheDo6Q29tbWFzOwogICAg
IGF1dG8gY29uc3VtZVNlcGFyYXRvciA9IFsmXSB7CiAgICAgICAgIGlmIChzeW50YXggPT0gQ29s
b3JTeW50YXg6OkNvbW1hcykKQEAgLTcyNiwyNiArOTg0LDI1IEBAIHN0YXRpYyBDb2xvciBwYXJz
ZVJHQlBhcmFtZXRlcnMoQ1NTUGFyc2UKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKIAot
ICAgIHVpbnQ4X3QgY29sb3JBcnJheVszXTsKLSAgICBjb2xvckFycmF5WzBdID0gY2xhbXBSR0JD
b21wb25lbnQoY29sb3JQYXJhbWV0ZXIsIGlzUGVyY2VudGFnZSk7Ci0gICAgZm9yIChpbnQgaSA9
IDE7IGkgPCAzOyBpKyspIHsKLSAgICAgICAgaWYgKGkgPT0gMSkKLSAgICAgICAgICAgIHN5bnRh
eCA9IGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykgPyBDb2xvclN5bnRheDo6
Q29tbWFzIDogQ29sb3JTeW50YXg6OldoaXRlc3BhY2VTbGFzaDsKLSAgICAgICAgZWxzZSBpZiAo
IWNvbnN1bWVTZXBhcmF0b3IoKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byBp
bml0aWFsQ29tcG9uZW50ID0gY29uc3VtZUluaXRpYWxDb21wb25lbnQoYXJncyk7CisgICAgaWYg
KCFpbml0aWFsQ29tcG9uZW50KQorICAgICAgICByZXR1cm4geyB9OwogCi0gICAgICAgIGlmIChp
c1BlcmNlbnRhZ2UpIHsKLSAgICAgICAgICAgIGF1dG8gcGVyY2VudCA9IGNvbnN1bWVQZXJjZW50
UmF3KGFyZ3MpOwotICAgICAgICAgICAgaWYgKCFwZXJjZW50KQotICAgICAgICAgICAgICAgIHJl
dHVybiB7IH07Ci0gICAgICAgICAgICBjb2xvckFycmF5W2ldID0gY2xhbXBSR0JDb21wb25lbnQo
KnBlcmNlbnQsIHRydWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBudW1i
ZXIgPSBjb25zdW1lTnVtYmVyUmF3KGFyZ3MpOwotICAgICAgICAgICAgaWYgKCFudW1iZXIpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgICAgIGNvbG9yQXJyYXlbaV0gPSBj
bGFtcFJHQkNvbXBvbmVudCgqbnVtYmVyLCBmYWxzZSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAg
YXV0byBjb21wb25lbnRUeXBlID0gaW5pdGlhbENvbXBvbmVudC0+dHlwZTsKKyAgICBhdXRvIHJl
ZCA9IGluaXRpYWxDb21wb25lbnQtPnZhbHVlOworCisgICAgc3ludGF4ID0gY29uc3VtZUNvbW1h
SW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSA/IENvbG9yU3ludGF4OjpDb21tYXMgOiBDb2xvclN5
bnRheDo6V2hpdGVzcGFjZVNsYXNoOworICAgIAorICAgIGF1dG8gZ3JlZW4gPSBjb25zdW1lQ29t
cG9uZW50KGFyZ3MsIGNvbXBvbmVudFR5cGUpOworICAgIGlmICghZ3JlZW4pCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBpZiAoIWNvbnN1bWVTZXBhcmF0b3IoKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIGF1dG8gYmx1ZSA9IGNvbnN1bWVDb21wb25lbnQoYXJncywgY29tcG9uZW50
VHlwZSk7CisgICAgaWYgKCFibHVlKQorICAgICAgICByZXR1cm4geyB9OwogCiAgICAgLy8gSGlz
dG9yaWNhbGx5LCBhbHBoYSB3YXMgb25seSBwYXJzZWQgZm9yIHJnYmEoKSwgYnV0IGNzcy1jb2xv
ci00IHNwZWNpZmllcyB0aGF0IHJnYmEoKSBpcyBhIHNpbXBsZSBhbGlhcyBmb3IgcmdiKCkuCiAg
ICAgYXV0byBjb25zdW1lQWxwaGFTZXBhcmF0b3IgPSBbJl0gewpAQCAtNzU1LDQwICsxMDEyLDg2
IEBAIHN0YXRpYyBDb2xvciBwYXJzZVJHQlBhcmFtZXRlcnMoQ1NTUGFyc2UKICAgICAgICAgcmV0
dXJuIGNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UoYXJncyk7CiAgICAgfTsKIAotICAg
IHVpbnQ4X3QgYWxwaGFDb21wb25lbnQgPSAyNTU7CisgICAgZG91YmxlIGFscGhhID0gMTsKICAg
ICBpZiAoY29uc3VtZUFscGhhU2VwYXJhdG9yKCkpIHsKLSAgICAgICAgYXV0byBhbHBoYSA9IGNv
bnN1bWVOdW1iZXJPclBlcmNlbnREaXZpZGVkQnkxMDBSYXcoYXJncyk7Ci0gICAgICAgIGlmICgh
YWxwaGEpCisgICAgICAgIGF1dG8gYWxwaGFDb21wb25lbnQgPSBjb25zdW1lTnVtYmVyT3JQZXJj
ZW50RGl2aWRlZEJ5MTAwUmF3KGFyZ3MpOworICAgICAgICBpZiAoIWFscGhhQ29tcG9uZW50KQog
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgYWxwaGFDb21wb25lbnQgPSBjb252ZXJ0
RmxvYXRBbHBoYVRvPHVpbnQ4X3Q+KCphbHBoYSk7CisgICAgICAgIGFscGhhID0gKmFscGhhQ29t
cG9uZW50OwogICAgIH0KIAogICAgIGlmICghYXJncy5hdEVuZCgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgY29sb3JBcnJheVswXSwgY29sb3JB
cnJheVsxXSwgY29sb3JBcnJheVsyXSwgYWxwaGFDb21wb25lbnQgfTsKKyAgICByZXR1cm4gU1JH
QkE8dWludDhfdD4geyBjbGFtcFJHQkNvbXBvbmVudChyZWQsIGNvbXBvbmVudFR5cGUpLCBjbGFt
cFJHQkNvbXBvbmVudCgqZ3JlZW4sIGNvbXBvbmVudFR5cGUpLCBjbGFtcFJHQkNvbXBvbmVudCgq
Ymx1ZSwgY29tcG9uZW50VHlwZSksIGNvbnZlcnRGbG9hdEFscGhhVG88dWludDhfdD4oYWxwaGEp
IH07Cit9CisKK3N0YXRpYyBDb2xvciBwYXJzZVJlbGF0aXZlSFNMUGFyYW1ldGVycyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQorewor
ICAgIEFTU0VSVChhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbSk7CisgICAgY29uc3Vt
ZUlkZW50UmF3KGFyZ3MpOworCisgICAgYXV0byBvcmlnaW5Db2xvciA9IGNvbnN1bWVPcmlnaW5D
b2xvcihhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAoIW9yaWdpbkNvbG9yLmlzVmFsaWQoKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gaHVlID0gY29uc3VtZUh1ZU9ySWRlbnQ8Q1NT
VmFsdWVIPihhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAoIWh1ZSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIGF1dG8gc2F0dXJhdGlvbiA9IGNvbnN1bWVQZXJjZW50RGl2aWRlZEJ5MTAwT3JJ
ZGVudDxDU1NWYWx1ZVMsIENTU1ZhbHVlTCwgQ1NTVmFsdWVBbHBoYT4oYXJncyk7CisgICAgaWYg
KCFzYXR1cmF0aW9uKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBsaWdodG5lc3Mg
PSBjb25zdW1lUGVyY2VudERpdmlkZWRCeTEwME9ySWRlbnQ8Q1NTVmFsdWVTLCBDU1NWYWx1ZUws
IENTU1ZhbHVlQWxwaGE+KGFyZ3MpOworICAgIGlmICghbGlnaHRuZXNzKQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgYXV0byBhbHBoYSA9IGNvbnN1bWVPcHRpb25hbEFscGhhT3JJZGVudDxD
U1NWYWx1ZVMsIENTU1ZhbHVlTCwgQ1NTVmFsdWVBbHBoYT4oYXJncyk7CisgICAgaWYgKCFhbHBo
YSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAg
ICByZXR1cm4geyB9OworCisKKyAgICAvLyBBZnRlciBwYXJzaW5nLCBjb252ZXJ0IGlkZW50aWZp
ZXJzIHRvIHZhbHVlcyBmcm9tIHRoZSBvcmlnaW4gY29sb3IuCisKKyAgICBhdXRvIG9yaWdpbkNv
bG9yQXNIU0wgPSBvcmlnaW5Db2xvci50b0NvbG9yVHlwZUxvc3N5PEhTTEE8ZmxvYXQ+PigpOwor
CisgICAgYXV0byByZXNvbHZlZEh1ZSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NW
YWx1ZUgsIENTU1ZhbHVlUywgQ1NTVmFsdWVMLCBDU1NWYWx1ZUFscGhhPigqaHVlLCBvcmlnaW5D
b2xvckFzSFNMLCBbXShhdXRvIGh1ZSkgeworICAgICAgICByZXR1cm4gbm9ybWFsaXplSHVlRnJv
bTBUbzEoaHVlKTsKKyAgICB9KTsKKyAgICBhdXRvIHJlc29sdmVkU2F0dXJhdGlvbiA9IHJlc29s
dmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUgsIENTU1ZhbHVlUywgQ1NTVmFsdWVMLCBD
U1NWYWx1ZUFscGhhPigqc2F0dXJhdGlvbiwgb3JpZ2luQ29sb3JBc0hTTCk7CisgICAgYXV0byBy
ZXNvbHZlZExpZ2h0bmVzcyA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUgs
IENTU1ZhbHVlUywgQ1NTVmFsdWVMLCBDU1NWYWx1ZUFscGhhPigqbGlnaHRuZXNzLCBvcmlnaW5D
b2xvckFzSFNMKTsKKyAgICBhdXRvIHJlc29sdmVkQWxwaGEgPSByZXNvbHZlUmVsYXRpdmVDb2xv
ckNoYW5uZWw8Q1NTVmFsdWVILCBDU1NWYWx1ZVMsIENTU1ZhbHVlTCwgQ1NTVmFsdWVBbHBoYT4o
KmFscGhhLCBvcmlnaW5Db2xvckFzSFNMKTsKKworICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JH
QkE8dWludDhfdD4+KEhTTEE8ZmxvYXQ+IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkSHVl
KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkU2F0dXJhdGlvbiksIHN0YXRpY19jYXN0PGZs
b2F0PihyZXNvbHZlZExpZ2h0bmVzcyksIHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZEFscGhh
KSB9KTsKIH0KIAotc3RhdGljIENvbG9yIHBhcnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQorZW51bSBjbGFzcyBI
U0xGdW5jdGlvbk1vZGUgeyBIU0wsIEhTTEEgfTsKKwordGVtcGxhdGU8SFNMRnVuY3Rpb25Nb2Rl
IE1vZGU+IHN0YXRpYyBDb2xvciBwYXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQVNTRVJU
KHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVIc2wgfHwgcmFuZ2UucGVlaygp
LmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUhzbGEpOwogICAgIGF1dG8gYXJncyA9IGNvbnN1bWVG
dW5jdGlvbihyYW5nZSk7CiAKLSAgICBkb3VibGUgaHVlQW5nbGVJbkRlZ3JlZXM7Ci0gICAgaWYg
KGF1dG8gYW5nbGUgPSBjb25zdW1lQW5nbGVSYXcoYXJncywgY3NzUGFyc2VyTW9kZSwgVW5pdGxl
c3NRdWlyazo6Rm9yYmlkLCBVbml0bGVzc1plcm9RdWlyazo6Rm9yYmlkKSkKLSAgICAgICAgaHVl
QW5nbGVJbkRlZ3JlZXMgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZURlZ3JlZXMoYW5nbGUt
PnR5cGUsIGFuZ2xlLT52YWx1ZSk7Ci0gICAgZWxzZSBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1l
TnVtYmVyUmF3KGFyZ3MpKQotICAgICAgICBodWVBbmdsZUluRGVncmVlcyA9ICpudW1iZXI7Ci0g
ICAgZWxzZQorICAgIGlmIGNvbnN0ZXhwciAoTW9kZSA9PSBIU0xGdW5jdGlvbk1vZGU6OkhTTCkg
eworICAgICAgICBpZiAoY29udGV4dC5yZWxhdGl2ZUNvbG9yU3ludGF4RW5hYmxlZCAmJiBhcmdz
LnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZVJl
bGF0aXZlSFNMUGFyYW1ldGVycyhhcmdzLCBjb250ZXh0KTsKKyAgICB9CisKKyAgICBhdXRvIGh1
ZSA9IGNvbnN1bWVIdWUoYXJncywgY29udGV4dCk7CisgICAgaWYgKCFodWUpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKLSAgICBkb3VibGUgY29sb3JBcnJheVszXTsKLSAgICBjb2xvckFycmF5WzBd
ID0gZm1vZChmbW9kKGh1ZUFuZ2xlSW5EZWdyZWVzLCAzNjAuMCkgKyAzNjAuMCwgMzYwLjApIC8g
MzYwLjA7CisgICAgYXV0byBub3JtYWxpemVkSHVlID0gbm9ybWFsaXplSHVlRnJvbTBUbzEoKmh1
ZSk7CiAKKyAgICBkb3VibGUgY29sb3JBcnJheVsyXTsKICAgICBib29sIHJlcXVpcmVzQ29tbWFz
ID0gZmFsc2U7Ci0gICAgZm9yIChpbnQgaSA9IDE7IGkgPCAzOyBpKyspIHsKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDI7IGkrKykgewogICAgICAgICBpZiAoY29uc3VtZUNvbW1hSW5jbHVkaW5n
V2hpdGVzcGFjZShhcmdzKSkgewotICAgICAgICAgICAgaWYgKGkgIT0gMSAmJiAhcmVxdWlyZXND
b21tYXMpCisgICAgICAgICAgICBpZiAoaSAhPSAwICYmICFyZXF1aXJlc0NvbW1hcykKICAgICAg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgcmVxdWlyZXNDb21tYXMgPSB0cnVl
OwogICAgICAgICB9IGVsc2UgaWYgKHJlcXVpcmVzQ29tbWFzIHx8IGFyZ3MuYXRFbmQoKSB8fCAo
JmFyZ3MucGVlaygpIC0gMSktPnR5cGUoKSAhPSBXaGl0ZXNwYWNlVG9rZW4pCkBAIC04MTUsMTQz
ICsxMTE4LDI1MiBAQCBzdGF0aWMgQ29sb3IgcGFyc2VIU0xQYXJhbWV0ZXJzKENTU1BhcnNlCiAg
ICAgaWYgKCFhcmdzLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4g
Y29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+PihIU0xBPGZsb2F0PiB7IHN0YXRpY19jYXN0PGZs
b2F0Pihjb2xvckFycmF5WzBdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yQXJyYXlbMV0pLCBz
dGF0aWNfY2FzdDxmbG9hdD4oY29sb3JBcnJheVsyXSksIHN0YXRpY19jYXN0PGZsb2F0PihhbHBo
YSkgfSk7CisgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oSFNMQTxmbG9h
dD4geyBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZEh1ZSksIHN0YXRpY19jYXN0PGZsb2F0
Pihjb2xvckFycmF5WzBdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yQXJyYXlbMV0pLCBzdGF0
aWNfY2FzdDxmbG9hdD4oYWxwaGEpIH0pOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IHBh
cnNlT3B0aW9uYWxBbHBoYShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKK3N0cnVjdCBXaGl0
ZW5lc3NCbGFja25lc3MgeworICAgIGRvdWJsZSB3aGl0ZW5lc3M7CisgICAgZG91YmxlIGJsYWNr
bmVzczsKK307CitzdGF0aWMgV2hpdGVuZXNzQmxhY2tuZXNzIG5vcm1hbGl6ZVdoaXRlbmVzc0Js
YWNrbmVzcyhkb3VibGUgd2hpdGVuZXNzLCBkb3VibGUgYmxhY2tuZXNzKQogewotICAgIGlmICgh
Y29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpCi0gICAgICAgIHJldHVybiAx
LjBmOworICAgIFdoaXRlbmVzc0JsYWNrbmVzcyByZXN1bHQ7CiAKLSAgICBpZiAoYXV0byBhbHBo
YVBhcmFtZXRlciA9IGNvbnN1bWVOdW1iZXJPclBlcmNlbnREaXZpZGVkQnkxMDBSYXcocmFuZ2Up
KQotICAgICAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oKmFscGhhUGFyYW1ldGVyLCAwLjAsIDEu
MCk7CisgICAgLy8gICBWYWx1ZXMgb3V0c2lkZSBvZiB0aGVzZSByYW5nZXMgYXJlIG5vdCBpbnZh
bGlkLCBidXQgYXJlIGNsYW1wZWQgdG8gdGhlCisgICAgLy8gICByYW5nZXMgZGVmaW5lZCBoZXJl
IGF0IGNvbXB1dGVkLXZhbHVlIHRpbWUuCisgICAgcmVzdWx0LndoaXRlbmVzcyA9IGNsYW1wVG88
ZG91YmxlPih3aGl0ZW5lc3MsIDAsIDEwMCk7CisgICAgcmVzdWx0LmJsYWNrbmVzcyA9IGNsYW1w
VG88ZG91YmxlPihibGFja25lc3MsIDAsIDEwMCk7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIC8vICAgSWYgdGhlIHN1bSBvZiB0aGVzZSB0d28gYXJndW1lbnRzIGlzIGdyZWF0ZXIg
dGhhbiAxMDAlLCB0aGVuIGF0CisgICAgLy8gICBjb21wdXRlZC12YWx1ZSB0aW1lIHRoZXkgYXJl
IGZ1cnRoZXIgbm9ybWFsaXplZCB0byBhZGQgdXAgdG8gMTAwJSwgd2l0aAorICAgIC8vICAgdGhl
IHNhbWUgcmVsYXRpdmUgcmF0aW8uCisgICAgaWYgKGF1dG8gc3VtID0gcmVzdWx0LndoaXRlbmVz
cyArIHJlc3VsdC5ibGFja25lc3M7IHN1bSA+PSAxMDApIHsKKyAgICAgICAgcmVzdWx0LndoaXRl
bmVzcyAqPSAxMDAuMCAvIHN1bTsKKyAgICAgICAgcmVzdWx0LmJsYWNrbmVzcyAqPSAxMDAuMCAv
IHN1bTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgQ29sb3IgcGFy
c2VIV0JQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUpCitzdGF0aWMgQ29sb3IgcGFyc2VSZWxhdGl2ZUhXQlBhcmFtZXRlcnMo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4
dCkKK3sKKyAgICBBU1NFUlQoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pOworICAg
IGNvbnN1bWVJZGVudFJhdyhhcmdzKTsKKworICAgIGF1dG8gb3JpZ2luQ29sb3IgPSBjb25zdW1l
T3JpZ2luQ29sb3IoYXJncywgY29udGV4dCk7CisgICAgaWYgKCFvcmlnaW5Db2xvci5pc1ZhbGlk
KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGh1ZSA9IGNvbnN1bWVIdWVPcklk
ZW50PENTU1ZhbHVlSD4oYXJncywgY29udGV4dCk7CisgICAgaWYgKCFodWUpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBhdXRvIHdoaXRlbmVzcyA9IGNvbnN1bWVQZXJjZW50RGl2aWRlZEJ5
MTAwT3JJZGVudDxDU1NWYWx1ZVcsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oYXJncyk7Cisg
ICAgaWYgKCF3aGl0ZW5lc3MpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGJsYWNr
bmVzcyA9IGNvbnN1bWVQZXJjZW50RGl2aWRlZEJ5MTAwT3JJZGVudDxDU1NWYWx1ZVcsIENTU1Zh
bHVlQiwgQ1NTVmFsdWVBbHBoYT4oYXJncyk7CisgICAgaWYgKCFibGFja25lc3MpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICBhdXRvIGFscGhhID0gY29uc3VtZU9wdGlvbmFsQWxwaGFPcklk
ZW50PENTU1ZhbHVlVywgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPihhcmdzKTsKKyAgICBpZiAo
IWFscGhhKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKCFhcmdzLmF0RW5kKCkpCisg
ICAgICAgIHJldHVybiB7IH07CisKKworICAgIC8vIEFmdGVyIHBhcnNpbmcsIGNvbnZlcnQgaWRl
bnRpZmllcnMgdG8gdmFsdWVzIGZyb20gdGhlIG9yaWdpbiBjb2xvci4KKworICAgIGF1dG8gb3Jp
Z2luQ29sb3JBc0hXQiA9IG9yaWdpbkNvbG9yLnRvQ29sb3JUeXBlTG9zc3k8SFdCQTxmbG9hdD4+
KCk7CisKKyAgICBhdXRvIHJlc29sdmVkSHVlID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVs
PENTU1ZhbHVlSCwgQ1NTVmFsdWVXLCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KCpodWUsIG9y
aWdpbkNvbG9yQXNIV0IsIFtdKGF1dG8gaHVlKSB7CisgICAgICAgIHJldHVybiBub3JtYWxpemVI
dWVGcm9tMFRvMzYwKGh1ZSk7CisgICAgfSk7CisgICAgYXV0byByZXNvbHZlZFdoaXRlbmVzcyA9
IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUgsIENTU1ZhbHVlVywgQ1NTVmFs
dWVCLCBDU1NWYWx1ZUFscGhhPigqd2hpdGVuZXNzLCBvcmlnaW5Db2xvckFzSFdCKTsKKyAgICBh
dXRvIHJlc29sdmVkQmxhY2tuZXNzID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1Zh
bHVlSCwgQ1NTVmFsdWVXLCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KCpibGFja25lc3MsIG9y
aWdpbkNvbG9yQXNIV0IpOworICAgIGF1dG8gcmVzb2x2ZWRBbHBoYSA9IHJlc29sdmVSZWxhdGl2
ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUgsIENTU1ZhbHVlVywgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFs
cGhhPigqYWxwaGEsIG9yaWdpbkNvbG9yQXNIV0IpOworCisgICAgYXV0byBbbm9ybWFsaXplZFdo
aXRuZXNzLCBub3JtYWxpemVkQmxhY2tuZXNzXSA9IG5vcm1hbGl6ZVdoaXRlbmVzc0JsYWNrbmVz
cyhyZXNvbHZlZFdoaXRlbmVzcywgcmVzb2x2ZWRCbGFja25lc3MpOworCisgICAgcmV0dXJuIGNv
bnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oSFNMQTxmbG9hdD4geyBzdGF0aWNfY2FzdDxmbG9h
dD4ocmVzb2x2ZWRIdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZFdoaXRuZXNzKSwg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRCbGFja25lc3MpLCBzdGF0aWNfY2FzdDxmbG9h
dD4ocmVzb2x2ZWRBbHBoYSkgfSk7Cit9CisKK3N0YXRpYyBDb2xvciBwYXJzZUhXQlBhcmFtZXRl
cnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQpCiB7CiAgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFs
dWVId2IpOwogICAgIGF1dG8gYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CiAKLSAgICBk
b3VibGUgaHVlQW5nbGVJbkRlZ3JlZXM7Ci0gICAgaWYgKGF1dG8gYW5nbGUgPSBjb25zdW1lQW5n
bGVSYXcoYXJncywgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0bGVz
c1plcm9RdWlyazo6Rm9yYmlkKSkKLSAgICAgICAgaHVlQW5nbGVJbkRlZ3JlZXMgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y29tcHV0ZURlZ3JlZXMoYW5nbGUtPnR5cGUsIGFuZ2xlLT52YWx1ZSk7Ci0g
ICAgZWxzZSBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1lTnVtYmVyUmF3KGFyZ3MpKQotICAgICAg
ICBodWVBbmdsZUluRGVncmVlcyA9ICpudW1iZXI7Ci0gICAgZWxzZQorICAgIGlmIChjb250ZXh0
LnJlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkICYmIGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFs
dWVGcm9tKQorICAgICAgICByZXR1cm4gcGFyc2VSZWxhdGl2ZUhXQlBhcmFtZXRlcnMoYXJncywg
Y29udGV4dCk7CisKKyAgICBhdXRvIGh1ZSA9IGNvbnN1bWVIdWUoYXJncywgY29udGV4dCk7Cisg
ICAgaWYgKCFodWUpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIHdoaXRlbmVzcyA9
IGNvbnN1bWVQZXJjZW50UmF3KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgIGF1dG8gd2hpdGVu
ZXNzID0gY29uc3VtZVBlcmNlbnRSYXcoYXJncyk7CiAgICAgaWYgKCF3aGl0ZW5lc3MpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGJsYWNrbmVzcyA9IGNvbnN1bWVQZXJjZW50UmF3
KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgIGF1dG8gYmxhY2tuZXNzID0gY29uc3VtZVBlcmNl
bnRSYXcoYXJncyk7CiAgICAgaWYgKCFibGFja25lc3MpCiAgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICBhdXRvIGFscGhhID0gcGFyc2VPcHRpb25hbEFscGhhKGFyZ3MpOworICAgIGF1dG8gYWxw
aGEgPSBjb25zdW1lT3B0aW9uYWxBbHBoYShhcmdzKTsKICAgICBpZiAoIWFscGhhKQogICAgICAg
ICByZXR1cm4geyB9OwogCiAgICAgaWYgKCFhcmdzLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiB7
IH07CiAKLSAgICAvLyBOb3JtYWxpemUgaHVlLgorICAgIGF1dG8gbm9ybWFsaXplZEh1ZSA9IG5v
cm1hbGl6ZUh1ZUZyb20wVG8zNjAoKmh1ZSk7CisgICAgYXV0byBbbm9ybWFsaXplZFdoaXRuZXNz
LCBub3JtYWxpemVkQmxhY2tuZXNzXSA9IG5vcm1hbGl6ZVdoaXRlbmVzc0JsYWNrbmVzcygqd2hp
dGVuZXNzLCAqYmxhY2tuZXNzKTsKIAotICAgIGh1ZUFuZ2xlSW5EZWdyZWVzID0gc3RkOjpmbW9k
KGh1ZUFuZ2xlSW5EZWdyZWVzLCAzNjAuMCk7Ci0gICAgaWYgKGh1ZUFuZ2xlSW5EZWdyZWVzIDwg
MC4wKQotICAgICAgICBodWVBbmdsZUluRGVncmVlcyArPSAzNjAuMDsKLSAgICAKLSAgICAvLyBD
b252ZXJ0IGFuZ2xlIHRvIG5vcm1hbGl6ZWQgZm9ybSBmcm9tIDAgLSAxLgotICAgIGF1dG8gbm9y
bWFsaXplZEh1ZSA9IGh1ZUFuZ2xlSW5EZWdyZWVzIC8gMzYwLjA7CisgICAgcmV0dXJuIGNvbnZl
cnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oSFdCQTxmbG9hdD4geyBzdGF0aWNfY2FzdDxmbG9hdD4o
bm9ybWFsaXplZEh1ZSksIHN0YXRpY19jYXN0PGZsb2F0Pihub3JtYWxpemVkV2hpdG5lc3MpLCBz
dGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZEJsYWNrbmVzcyksIHN0YXRpY19jYXN0PGZsb2F0
PigqYWxwaGEpIH0pOworfQogCi0gICAgLy8gTm9ybWFsaXplIHdoaXRlbmVzcy9ibGFja25lc3Mu
CitzdGF0aWMgQ29sb3IgcGFyc2VSZWxhdGl2ZUxhYlBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBBU1NF
UlQoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pOworICAgIGNvbnN1bWVJZGVudFJh
dyhhcmdzKTsKIAotICAgIC8vICAgVmFsdWVzIG91dHNpZGUgb2YgdGhlc2UgcmFuZ2VzIGFyZSBu
b3QgaW52YWxpZCwgYnV0IGFyZSBjbGFtcGVkIHRvIHRoZQotICAgIC8vICAgcmFuZ2VzIGRlZmlu
ZWQgaGVyZSBhdCBjb21wdXRlZC12YWx1ZSB0aW1lLgotICAgIGF1dG8gbm9tYWxpemVkV2hpdGVu
ZXNzID0gY2xhbXBUbzxkb3VibGU+KCp3aGl0ZW5lc3MsIDAsIDEwMCk7Ci0gICAgYXV0byBub21h
bGl6ZWRCbGFja25lc3MgPSBjbGFtcFRvPGRvdWJsZT4oKmJsYWNrbmVzcywgMCwgMTAwKTsKKyAg
ICBhdXRvIG9yaWdpbkNvbG9yID0gY29uc3VtZU9yaWdpbkNvbG9yKGFyZ3MsIGNvbnRleHQpOwor
ICAgIGlmICghb3JpZ2luQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgLy8gICBJZiB0aGUgc3VtIG9mIHRoZXNlIHR3byBhcmd1bWVudHMgaXMgZ3JlYXRlciB0aGFu
IDEwMCUsIHRoZW4gYXQKLSAgICAvLyAgIGNvbXB1dGVkLXZhbHVlIHRpbWUgdGhleSBhcmUgZnVy
dGhlciBub3JtYWxpemVkIHRvIGFkZCB1cCB0byAxMDAlLCB3aXRoCi0gICAgLy8gICB0aGUgc2Ft
ZSByZWxhdGl2ZSByYXRpby4KLSAgICBpZiAoYXV0byBzdW0gPSBub21hbGl6ZWRXaGl0ZW5lc3Mg
KyBub21hbGl6ZWRCbGFja25lc3M7IHN1bSA+PSAxMDApIHsKLSAgICAgICAgbm9tYWxpemVkV2hp
dGVuZXNzICo9IDEwMC4wIC8gc3VtOwotICAgICAgICBub21hbGl6ZWRCbGFja25lc3MgKj0gMTAw
LjAgLyBzdW07Ci0gICAgfQorICAgIGF1dG8gbGlnaHRuZXNzID0gY29uc3VtZVBlcmNlbnRPcklk
ZW50PENTU1ZhbHVlTCwgQ1NTVmFsdWVBbHBoYT4oYXJncyk7CisgICAgaWYgKCFsaWdodG5lc3Mp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGFWYWx1ZSA9IGNvbnN1bWVOdW1iZXJP
cklkZW50PENTU1ZhbHVlQSwgQ1NTVmFsdWVCPihhcmdzKTsKKyAgICBpZiAoIWFWYWx1ZSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gYlZhbHVlID0gY29uc3VtZU51bWJlck9ySWRl
bnQ8Q1NTVmFsdWVBLCBDU1NWYWx1ZUI+KGFyZ3MpOworICAgIGlmICghYlZhbHVlKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgYXV0byBhbHBoYSA9IGNvbnN1bWVPcHRpb25hbEFscGhhT3JJ
ZGVudDxDU1NWYWx1ZUwsIENTU1ZhbHVlQWxwaGE+KGFyZ3MpOworICAgIGlmICghYWxwaGEpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIGF1dG8gb3JpZ2luQ29sb3JBc0xhYiA9IG9yaWdpbkNvbG9yLnRvQ29s
b3JUeXBlTG9zc3k8TGFiPGZsb2F0Pj4oKTsKIAotICAgIC8vIENvbnZlcnQgdG8gbm9ybWFsaXpl
ZCBmb3JtIGZyb20gMCAtIDEuCi0gICAgbm9tYWxpemVkV2hpdGVuZXNzIC89IDEwMC4wOwotICAg
IG5vbWFsaXplZEJsYWNrbmVzcyAvPSAxMDAuMDsKKyAgICBhdXRvIHJlc29sdmVkTGlnaHRuZXNz
ID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlTCwgQ1NTVmFsdWVBLCBDU1NW
YWx1ZUIsIENTU1ZhbHVlQWxwaGE+KCpsaWdodG5lc3MsIG9yaWdpbkNvbG9yQXNMYWIpOworICAg
IGF1dG8gcmVzb2x2ZWRBVmFsdWUgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFs
dWVMLCBDU1NWYWx1ZUEsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oKmFWYWx1ZSwgb3JpZ2lu
Q29sb3JBc0xhYik7CisgICAgYXV0byByZXNvbHZlZEJWYWx1ZSA9IHJlc29sdmVSZWxhdGl2ZUNv
bG9yQ2hhbm5lbDxDU1NWYWx1ZUwsIENTU1ZhbHVlQSwgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhh
PigqYlZhbHVlLCBvcmlnaW5Db2xvckFzTGFiKTsKKyAgICBhdXRvIHJlc29sdmVkQWxwaGEgPSBy
ZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVMLCBDU1NWYWx1ZUEsIENTU1ZhbHVl
QiwgQ1NTVmFsdWVBbHBoYT4oKmFscGhhLCBvcmlnaW5Db2xvckFzTGFiKTsKIAotICAgIHJldHVy
biBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KEhXQkE8ZmxvYXQ+IHsgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KG5vcm1hbGl6ZWRIdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4obm9tYWxpemVkV2hpdGVu
ZXNzKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vbWFsaXplZEJsYWNrbmVzcyksIHN0YXRpY19jYXN0
PGZsb2F0PigqYWxwaGEpIH0pOworICAgIHJldHVybiBMYWI8ZmxvYXQ+IHsgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHJlc29sdmVkTGlnaHRuZXNzKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkQVZh
bHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkQlZhbHVlKSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHJlc29sdmVkQWxwaGEpIH07CiB9CiAKLXN0YXRpYyBDb2xvciBwYXJzZUxhYlBhcmFtZXRl
cnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCitzdGF0aWMgQ29sb3IgcGFyc2VMYWJQYXJh
bWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBjb250ZXh0KQogewogICAgIEFTU0VSVChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENT
U1ZhbHVlTGFiKTsKICAgICBhdXRvIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOwogCi0g
ICAgYXV0byBsaWdodG5lc3MgPSBjb25zdW1lUGVyY2VudFJhdyhhcmdzLCBWYWx1ZVJhbmdlQWxs
KTsKKyAgICBpZiAoY29udGV4dC5yZWxhdGl2ZUNvbG9yU3ludGF4RW5hYmxlZCAmJiBhcmdzLnBl
ZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbSkKKyAgICAgICAgcmV0dXJuIHBhcnNlUmVsYXRpdmVM
YWJQYXJhbWV0ZXJzKGFyZ3MsIGNvbnRleHQpOworCisgICAgYXV0byBsaWdodG5lc3MgPSBjb25z
dW1lUGVyY2VudFJhdyhhcmdzKTsKICAgICBpZiAoIWxpZ2h0bmVzcykKICAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgIGF1dG8gYVZhbHVlID0gY29uc3VtZU51bWJlclJhdyhhcmdzLCBWYWx1ZVJh
bmdlQWxsKTsKKyAgICBhdXRvIGFWYWx1ZSA9IGNvbnN1bWVOdW1iZXJSYXcoYXJncyk7CiAgICAg
aWYgKCFhVmFsdWUpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGJWYWx1ZSA9IGNv
bnN1bWVOdW1iZXJSYXcoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgYXV0byBiVmFsdWUgPSBj
b25zdW1lTnVtYmVyUmF3KGFyZ3MpOwogICAgIGlmICghYlZhbHVlKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgYXV0byBhbHBoYSA9IHBhcnNlT3B0aW9uYWxBbHBoYShhcmdzKTsKKyAgICBh
dXRvIGFscGhhID0gY29uc3VtZU9wdGlvbmFsQWxwaGEoYXJncyk7CiAgICAgaWYgKCFhbHBoYSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGlmICghYXJncy5hdEVuZCgpKQogICAgICAgICBy
ZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIExhYjxmbG9hdD4geyBzdGF0aWNfY2FzdDxmbG9hdD4o
KmxpZ2h0bmVzcyksIHN0YXRpY19jYXN0PGZsb2F0PigqYVZhbHVlKSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KCpiVmFsdWUpLCAqYWxwaGEgfTsKKyAgICByZXR1cm4gTGFiPGZsb2F0PiB7IHN0YXRpY19j
YXN0PGZsb2F0PigqbGlnaHRuZXNzKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KCphVmFsdWUpLCBzdGF0
aWNfY2FzdDxmbG9hdD4oKmJWYWx1ZSksIHN0YXRpY19jYXN0PGZsb2F0PigqYWxwaGEpIH07CiB9
CiAKLXN0YXRpYyBDb2xvciBwYXJzZUxDSFBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3N0YXRpYyBDb2xvciBwYXJzZVJl
bGF0aXZlTENIUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIEFTU0VSVChhcmdzLnBlZWsoKS5pZCgpID09
IENTU1ZhbHVlRnJvbSk7CisgICAgY29uc3VtZUlkZW50UmF3KGFyZ3MpOworCisgICAgYXV0byBv
cmlnaW5Db2xvciA9IGNvbnN1bWVPcmlnaW5Db2xvcihhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAo
IW9yaWdpbkNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8g
bGlnaHRuZXNzID0gY29uc3VtZVBlcmNlbnRPcklkZW50PENTU1ZhbHVlTCwgQ1NTVmFsdWVBbHBo
YT4oYXJncyk7CisgICAgaWYgKCFsaWdodG5lc3MpCisgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICBhdXRvIGNocm9tYSA9IGNvbnN1bWVOdW1iZXJPcklkZW50PENTU1ZhbHVlQywgQ1NTVmFsdWVI
PihhcmdzKTsKKyAgICBpZiAoIWNocm9tYSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1
dG8gaHVlID0gY29uc3VtZUh1ZU9ySWRlbnQ8Q1NTVmFsdWVDLCBDU1NWYWx1ZUg+KGFyZ3MsIGNv
bnRleHQpOworICAgIGlmICghaHVlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBh
bHBoYSA9IGNvbnN1bWVPcHRpb25hbEFscGhhT3JJZGVudDxDU1NWYWx1ZUwsIENTU1ZhbHVlQWxw
aGE+KGFyZ3MpOworICAgIGlmICghYWxwaGEpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBp
ZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gb3JpZ2lu
Q29sb3JBc0xDSCA9IG9yaWdpbkNvbG9yLnRvQ29sb3JUeXBlTG9zc3k8TENIQTxmbG9hdD4+KCk7
CisKKyAgICBhdXRvIHJlc29sdmVkTGlnaHRuZXNzID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFu
bmVsPENTU1ZhbHVlTCwgQ1NTVmFsdWVDLCBDU1NWYWx1ZUgsIENTU1ZhbHVlQWxwaGE+KCpsaWdo
dG5lc3MsIG9yaWdpbkNvbG9yQXNMQ0gpOworICAgIGF1dG8gcmVzb2x2ZWRDaHJvbWEgPSByZXNv
bHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVMLCBDU1NWYWx1ZUMsIENTU1ZhbHVlSCwg
Q1NTVmFsdWVBbHBoYT4oKmNocm9tYSwgb3JpZ2luQ29sb3JBc0xDSCk7CisgICAgYXV0byByZXNv
bHZlZEh1ZSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUwsIENTU1ZhbHVl
QywgQ1NTVmFsdWVILCBDU1NWYWx1ZUFscGhhPigqaHVlLCBvcmlnaW5Db2xvckFzTENILCBbXShh
dXRvIGh1ZSkgeworICAgICAgICByZXR1cm4gbm9ybWFsaXplSHVlRnJvbTBUbzM2MChodWUpOwor
ICAgIH0pOworICAgIGF1dG8gcmVzb2x2ZWRBbHBoYSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hh
bm5lbDxDU1NWYWx1ZUwsIENTU1ZhbHVlQywgQ1NTVmFsdWVILCBDU1NWYWx1ZUFscGhhPigqYWxw
aGEsIG9yaWdpbkNvbG9yQXNMQ0gpOworCisgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxMYWI8Zmxv
YXQ+PihMQ0hBPGZsb2F0PiB7IHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZExpZ2h0bmVzcyks
IHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZENocm9tYSksIHN0YXRpY19jYXN0PGZsb2F0Pihy
ZXNvbHZlZEh1ZSksIHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZEFscGhhKSB9KTsKK30KKwor
c3RhdGljIENvbG9yIHBhcnNlTENIUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBBU1NFUlQocmFuZ2Uu
cGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUxjaCk7CiAgICAgYXV0byBhcmdzID0gY29u
c3VtZUZ1bmN0aW9uKHJhbmdlKTsKIAotICAgIGF1dG8gbGlnaHRuZXNzID0gY29uc3VtZVBlcmNl
bnRSYXcoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKGNvbnRleHQucmVsYXRpdmVDb2xv
clN5bnRheEVuYWJsZWQgJiYgYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pCisgICAg
ICAgIHJldHVybiBwYXJzZVJlbGF0aXZlTENIUGFyYW1ldGVycyhhcmdzLCBjb250ZXh0KTsKKwor
ICAgIGF1dG8gbGlnaHRuZXNzID0gY29uc3VtZVBlcmNlbnRSYXcoYXJncyk7CiAgICAgaWYgKCFs
aWdodG5lc3MpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGNocm9tYVZhbHVlID0g
Y29uc3VtZU51bWJlclJhdyhhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKLSAgICBpZiAoIWNocm9tYVZh
bHVlKQorICAgIGF1dG8gY2hyb21hID0gY29uc3VtZU51bWJlclJhdyhhcmdzKTsKKyAgICBpZiAo
IWNocm9tYSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGRvdWJsZSBodWVBbmdsZUluRGVn
cmVlczsKLSAgICBpZiAoYXV0byBhbmdsZSA9IGNvbnN1bWVBbmdsZVJhdyhhcmdzLCBjc3NQYXJz
ZXJNb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIFVuaXRsZXNzWmVyb1F1aXJrOjpGb3JiaWQp
KQotICAgICAgICBodWVBbmdsZUluRGVncmVlcyA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRl
RGVncmVlcyhhbmdsZS0+dHlwZSwgYW5nbGUtPnZhbHVlKTsKLSAgICBlbHNlIGlmIChhdXRvIG51
bWJlciA9IGNvbnN1bWVOdW1iZXJSYXcoYXJncywgVmFsdWVSYW5nZUFsbCkpCi0gICAgICAgIGh1
ZUFuZ2xlSW5EZWdyZWVzID0gKm51bWJlcjsKLSAgICBlbHNlCisgICAgYXV0byBodWUgPSBjb25z
dW1lSHVlKGFyZ3MsIGNvbnRleHQpOworICAgIGlmICghaHVlKQogICAgICAgICByZXR1cm4geyB9
OwogCi0gICAgaHVlQW5nbGVJbkRlZ3JlZXMgPSBmbW9kKGh1ZUFuZ2xlSW5EZWdyZWVzLCAzNjAu
MCk7Ci0gICAgaWYgKGh1ZUFuZ2xlSW5EZWdyZWVzIDwgMC4wKQotICAgICAgICBodWVBbmdsZUlu
RGVncmVlcyArPSAzNjAuMDsKLQotICAgIGF1dG8gYWxwaGEgPSBwYXJzZU9wdGlvbmFsQWxwaGEo
YXJncyk7CisgICAgYXV0byBhbHBoYSA9IGNvbnN1bWVPcHRpb25hbEFscGhhKGFyZ3MpOwogICAg
IGlmICghYWxwaGEpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAoIWFyZ3MuYXRFbmQo
KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBjb252ZXJ0Q29sb3I8TGFiPGZs
b2F0Pj4oTENIQTxmbG9hdD4geyBzdGF0aWNfY2FzdDxmbG9hdD4oKmxpZ2h0bmVzcyksIHN0YXRp
Y19jYXN0PGZsb2F0PigqY2hyb21hVmFsdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4oaHVlQW5nbGVJ
bkRlZ3JlZXMpLCAqYWxwaGEgfSk7CisgICAgYXV0byBub3JtYWxpemVkSHVlID0gbm9ybWFsaXpl
SHVlRnJvbTBUbzM2MCgqaHVlKTsKKworICAgIHJldHVybiBjb252ZXJ0Q29sb3I8TGFiPGZsb2F0
Pj4oTENIQTxmbG9hdD4geyBzdGF0aWNfY2FzdDxmbG9hdD4oKmxpZ2h0bmVzcyksIHN0YXRpY19j
YXN0PGZsb2F0PigqY2hyb21hKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRIdWUpLCBz
dGF0aWNfY2FzdDxmbG9hdD4oKmFscGhhKSB9KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ29s
b3JUeXBlPgotc3RhdGljIENvbG9yIHBhcnNlQ29sb3JGdW5jdGlvbkZvclJHQlR5cGVzKENTU1Bh
cnNlclRva2VuUmFuZ2UmIGFyZ3MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IHN0YXRp
YyBDb2xvciBwYXJzZUNvbG9yRnVuY3Rpb25Gb3JSR0JUeXBlcyhDU1NQYXJzZXJUb2tlblJhbmdl
JiBhcmdzKQogewogICAgIEFTU0VSVChhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQTk4Umdi
IHx8IGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVEaXNwbGF5UDMgfHwgYXJncy5wZWVrKCku
aWQoKSA9PSBDU1NWYWx1ZVByb3Bob3RvUmdiIHx8IGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFs
dWVSZWMyMDIwIHx8IGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVTUkdCKTsKICAgICBjb25z
dW1lSWRlbnRSYXcoYXJncyk7CkBAIC05NjQsMTEgKzEzNzYsMTEgQEAgc3RhdGljIENvbG9yIHBh
cnNlQ29sb3JGdW5jdGlvbkZvclJHQlR5cAogICAgICAgICBjaGFubmVsc1tpXSA9ICp2YWx1ZTsK
ICAgICB9CiAKLSAgICBhdXRvIGFscGhhID0gcGFyc2VPcHRpb25hbEFscGhhKGFyZ3MpOworICAg
IGF1dG8gYWxwaGEgPSBjb25zdW1lT3B0aW9uYWxBbHBoYShhcmdzKTsKICAgICBpZiAoIWFscGhh
KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIENvbG9yVHlwZSB7IGNsYW1wVG88
ZmxvYXQ+KGNoYW5uZWxzWzBdLCAwLjAsIDEuMCksIGNsYW1wVG88ZmxvYXQ+KGNoYW5uZWxzWzFd
LCAwLjAsIDEuMCksIGNsYW1wVG88ZmxvYXQ+KGNoYW5uZWxzWzJdLCAwLjAsIDEuMCksICphbHBo
YSB9OworICAgIHJldHVybiBDb2xvclR5cGUgeyBjbGFtcFRvPGZsb2F0PihjaGFubmVsc1swXSwg
MC4wLCAxLjApLCBjbGFtcFRvPGZsb2F0PihjaGFubmVsc1sxXSwgMC4wLCAxLjApLCBjbGFtcFRv
PGZsb2F0PihjaGFubmVsc1syXSwgMC4wLCAxLjApLCBzdGF0aWNfY2FzdDxmbG9hdD4oKmFscGhh
KSB9OwogfQogCiBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvckZ1bmN0aW9uRm9yTGFiUGFyYW1ldGVy
cyhDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzKQpAQCAtOTc4LDI3ICsxMzkwLDI3IEBAIHN0YXRp
YyBDb2xvciBwYXJzZUNvbG9yRnVuY3Rpb25Gb3JMYWJQYXIKIAogICAgIGRvdWJsZSBjaGFubmVs
c1szXSA9IHsgMCwgMCwgMCB9OwogICAgIFsmXSB7Ci0gICAgICAgIGF1dG8gbGlnaHRuZXNzID0g
Y29uc3VtZVBlcmNlbnRSYXcoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGF1dG8gbGln
aHRuZXNzID0gY29uc3VtZVBlcmNlbnRSYXcoYXJncyk7CiAgICAgICAgIGlmICghbGlnaHRuZXNz
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGFubmVsc1swXSA9ICpsaWdodG5lc3M7
CiAKLSAgICAgICAgYXV0byBhVmFsdWUgPSBjb25zdW1lTnVtYmVyUmF3KGFyZ3MsIFZhbHVlUmFu
Z2VBbGwpOworICAgICAgICBhdXRvIGFWYWx1ZSA9IGNvbnN1bWVOdW1iZXJSYXcoYXJncyk7CiAg
ICAgICAgIGlmICghYVZhbHVlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGFubmVs
c1sxXSA9ICphVmFsdWU7CiAKLSAgICAgICAgYXV0byBiVmFsdWUgPSBjb25zdW1lTnVtYmVyUmF3
KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBhdXRvIGJWYWx1ZSA9IGNvbnN1bWVOdW1i
ZXJSYXcoYXJncyk7CiAgICAgICAgIGlmICghYlZhbHVlKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBjaGFubmVsc1syXSA9ICpiVmFsdWU7CiAgICAgfSgpOwogCi0gICAgYXV0byBhbHBo
YSA9IHBhcnNlT3B0aW9uYWxBbHBoYShhcmdzKTsKKyAgICBhdXRvIGFscGhhID0gY29uc3VtZU9w
dGlvbmFsQWxwaGEoYXJncyk7CiAgICAgaWYgKCFhbHBoYSkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAotICAgIHJldHVybiBMYWI8ZmxvYXQ+IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNoYW5uZWxzWzBd
KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNoYW5uZWxzWzFdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNo
YW5uZWxzWzJdKSwgKmFscGhhIH07CisgICAgcmV0dXJuIExhYjxmbG9hdD4geyBzdGF0aWNfY2Fz
dDxmbG9hdD4oY2hhbm5lbHNbMF0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oY2hhbm5lbHNbMV0pLCBz
dGF0aWNfY2FzdDxmbG9hdD4oY2hhbm5lbHNbMl0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oKmFscGhh
KSB9OwogfQogCiBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvckZ1bmN0aW9uRm9yWFlaUGFyYW1ldGVy
cyhDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzKQpAQCAtMTAwOCwyNyArMTQyMCwyNyBAQCBzdGF0
aWMgQ29sb3IgcGFyc2VDb2xvckZ1bmN0aW9uRm9yWFlaUGFyCiAKICAgICBkb3VibGUgY2hhbm5l
bHNbM10gPSB7IDAsIDAsIDAgfTsKICAgICBbJl0gewotICAgICAgICBhdXRvIHggPSBjb25zdW1l
TnVtYmVyUmF3KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBhdXRvIHggPSBjb25zdW1l
TnVtYmVyUmF3KGFyZ3MpOwogICAgICAgICBpZiAoIXgpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIGNoYW5uZWxzWzBdID0gKng7CiAKLSAgICAgICAgYXV0byB5ID0gY29uc3VtZU51bWJl
clJhdyhhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgYXV0byB5ID0gY29uc3VtZU51bWJl
clJhdyhhcmdzKTsKICAgICAgICAgaWYgKCF5KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBjaGFubmVsc1sxXSA9ICp5OwogCi0gICAgICAgIGF1dG8geiA9IGNvbnN1bWVOdW1iZXJSYXco
YXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIGF1dG8geiA9IGNvbnN1bWVOdW1iZXJSYXco
YXJncyk7CiAgICAgICAgIGlmICgheikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hh
bm5lbHNbMl0gPSAqejsKICAgICB9KCk7CiAKLSAgICBhdXRvIGFscGhhID0gcGFyc2VPcHRpb25h
bEFscGhhKGFyZ3MpOworICAgIGF1dG8gYWxwaGEgPSBjb25zdW1lT3B0aW9uYWxBbHBoYShhcmdz
KTsKICAgICBpZiAoIWFscGhhKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIFhZ
WkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4geyBzdGF0aWNfY2FzdDxmbG9hdD4oY2hhbm5lbHNb
MF0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oY2hhbm5lbHNbMV0pLCBzdGF0aWNfY2FzdDxmbG9hdD4o
Y2hhbm5lbHNbMl0pLCAqYWxwaGEgfTsKKyAgICByZXR1cm4gWFlaQTxmbG9hdCwgV2hpdGVQb2lu
dDo6RDUwPiB7IHN0YXRpY19jYXN0PGZsb2F0PihjaGFubmVsc1swXSksIHN0YXRpY19jYXN0PGZs
b2F0PihjaGFubmVsc1sxXSksIHN0YXRpY19jYXN0PGZsb2F0PihjaGFubmVsc1syXSksIHN0YXRp
Y19jYXN0PGZsb2F0PigqYWxwaGEpIH07CiB9CiAKIHN0YXRpYyBDb2xvciBwYXJzZUNvbG9yRnVu
Y3Rpb25QYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQpAQCAtMTExMSwyOCAr
MTUyMywzMiBAQCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBhcnNlSGV4CiAgICAg
cmV0dXJuICpyZXN1bHQ7CiB9CiAKLXN0YXRpYyBDb2xvciBwYXJzZUNvbG9yRnVuY3Rpb24oQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3N0
YXRpYyBDb2xvciBwYXJzZUNvbG9yRnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQ1NTUGFyc2VyVG9rZW5S
YW5nZSBjb2xvclJhbmdlID0gcmFuZ2U7CiAgICAgQ1NTVmFsdWVJRCBmdW5jdGlvbklkID0gcmFu
Z2UucGVlaygpLmZ1bmN0aW9uSWQoKTsKICAgICBDb2xvciBjb2xvcjsKICAgICBzd2l0Y2ggKGZ1
bmN0aW9uSWQpIHsKICAgICBjYXNlIENTU1ZhbHVlUmdiOgorICAgICAgICBjb2xvciA9IHBhcnNl
UkdCUGFyYW1ldGVyczxSR0JGdW5jdGlvbk1vZGU6OlJHQj4oY29sb3JSYW5nZSwgY29udGV4dCk7
CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVSZ2JhOgotICAgICAgICBjb2xvciA9
IHBhcnNlUkdCUGFyYW1ldGVycyhjb2xvclJhbmdlKTsKKyAgICAgICAgY29sb3IgPSBwYXJzZVJH
QlBhcmFtZXRlcnM8UkdCRnVuY3Rpb25Nb2RlOjpSR0JBPihjb2xvclJhbmdlLCBjb250ZXh0KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUhzbDoKKyAgICAgICAgY29sb3IgPSBw
YXJzZUhTTFBhcmFtZXRlcnM8SFNMRnVuY3Rpb25Nb2RlOjpIU0w+KGNvbG9yUmFuZ2UsIGNvbnRl
eHQpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlSHNsYToKLSAgICAgICAgY29s
b3IgPSBwYXJzZUhTTFBhcmFtZXRlcnMoY29sb3JSYW5nZSwgY3NzUGFyc2VyTW9kZSk7CisgICAg
ICAgIGNvbG9yID0gcGFyc2VIU0xQYXJhbWV0ZXJzPEhTTEZ1bmN0aW9uTW9kZTo6SFNMQT4oY29s
b3JSYW5nZSwgY29udGV4dCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVId2I6
Ci0gICAgICAgIGNvbG9yID0gcGFyc2VIV0JQYXJhbWV0ZXJzKGNvbG9yUmFuZ2UsIGNzc1BhcnNl
ck1vZGUpOworICAgICAgICBjb2xvciA9IHBhcnNlSFdCUGFyYW1ldGVycyhjb2xvclJhbmdlLCBj
b250ZXh0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUxhYjoKLSAgICAgICAg
Y29sb3IgPSBwYXJzZUxhYlBhcmFtZXRlcnMoY29sb3JSYW5nZSk7CisgICAgICAgIGNvbG9yID0g
cGFyc2VMYWJQYXJhbWV0ZXJzKGNvbG9yUmFuZ2UsIGNvbnRleHQpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENTU1ZhbHVlTGNoOgotICAgICAgICBjb2xvciA9IHBhcnNlTENIUGFyYW1ldGVy
cyhjb2xvclJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKKyAgICAgICAgY29sb3IgPSBwYXJzZUxDSFBh
cmFtZXRlcnMoY29sb3JSYW5nZSwgY29udGV4dCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q1NTVmFsdWVDb2xvcjoKICAgICAgICAgY29sb3IgPSBwYXJzZUNvbG9yRnVuY3Rpb25QYXJhbWV0
ZXJzKGNvbG9yUmFuZ2UpOwpAQCAtMTE0NSw3ICsxNTYxLDcgQEAgc3RhdGljIENvbG9yIHBhcnNl
Q29sb3JGdW5jdGlvbihDU1NQYXJzZQogICAgIHJldHVybiBjb2xvcjsKIH0KIAotQ29sb3IgY29u
c3VtZUNvbG9yV29ya2VyU2FmZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlKQorQ29sb3IgY29uc3VtZUNvbG9yV29ya2VyU2FmZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsK
ICAgICBDb2xvciByZXN1bHQ7CiAgICAgYXV0byBrZXl3b3JkID0gcmFuZ2UucGVlaygpLmlkKCk7
CkBAIC0xMTU0LDcgKzE1NzAsNyBAQCBDb2xvciBjb25zdW1lQ29sb3JXb3JrZXJTYWZlKENTU1Bh
cnNlclRvCiAgICAgICAgIC8vICAgICAgICBGb3Igbm93LCB3ZSBkZXRlY3QgdGhlIHN5c3RlbSBj
b2xvciwgYnV0IHRoZW4gaW50ZW50aW9uYWxseSBmYWlsIHBhcnNpbmcuCiAgICAgICAgIGlmIChT
dHlsZUNvbG9yOjppc1N5c3RlbUNvbG9yKGtleXdvcmQpKQogICAgICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICAgICAgaWYgKCFpc1ZhbHVlQWxsb3dlZEluTW9kZShrZXl3b3JkLCBjc3NQYXJzZXJN
b2RlKSkKKyAgICAgICAgaWYgKCFpc1ZhbHVlQWxsb3dlZEluTW9kZShrZXl3b3JkLCBjb250ZXh0
Lm1vZGUpKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgcmVzdWx0ID0gU3R5bGVD
b2xvcjo6Y29sb3JGcm9tS2V5d29yZChrZXl3b3JkLCB7IH0pOwogICAgICAgICByYW5nZS5jb25z
dW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwpAQCAtMTE2Myw3ICsxNTc5LDcgQEAgQ29sb3IgY29u
c3VtZUNvbG9yV29ya2VyU2FmZShDU1NQYXJzZXJUbwogICAgIGlmIChhdXRvIHBhcnNlZENvbG9y
ID0gcGFyc2VIZXhDb2xvcihyYW5nZSwgZmFsc2UpKQogICAgICAgICByZXN1bHQgPSAqcGFyc2Vk
Q29sb3I7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBwYXJzZUNvbG9yRnVuY3Rpb24ocmFu
Z2UsIGNzc1BhcnNlck1vZGUpOworICAgICAgICByZXN1bHQgPSBwYXJzZUNvbG9yRnVuY3Rpb24o
cmFuZ2UsIGNvbnRleHQpOwogCiAgICAgaWYgKCFyYW5nZS5hdEVuZCgpKQogICAgICAgICByZXR1
cm4geyB9OwpAQCAtMTE3MSwxMSArMTU4NywxMSBAQCBDb2xvciBjb25zdW1lQ29sb3JXb3JrZXJT
YWZlKENTU1BhcnNlclRvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBjb25zdW1lQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Bh
cnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgYm9vbCBhY2NlcHRRdWlya3lDb2xvcnMpCitSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVDb2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgYm9vbCBhY2NlcHRRdWlya3lDb2xv
cnMpCiB7CiAgICAgYXV0byBrZXl3b3JkID0gcmFuZ2UucGVlaygpLmlkKCk7CiAgICAgaWYgKFN0
eWxlQ29sb3I6OmlzQ29sb3JLZXl3b3JkKGtleXdvcmQpKSB7Ci0gICAgICAgIGlmICghaXNWYWx1
ZUFsbG93ZWRJbk1vZGUoa2V5d29yZCwgY3NzUGFyc2VyTW9kZSkpCisgICAgICAgIGlmICghaXNW
YWx1ZUFsbG93ZWRJbk1vZGUoa2V5d29yZCwgY29udGV4dC5tb2RlKSkKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKICAgICB9
CkBAIC0xMTgzLDcgKzE1OTksNyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVD
b2xvcihDCiAgICAgaWYgKGF1dG8gcGFyc2VkQ29sb3IgPSBwYXJzZUhleENvbG9yKHJhbmdlLCBh
Y2NlcHRRdWlya3lDb2xvcnMpKQogICAgICAgICBjb2xvciA9ICpwYXJzZWRDb2xvcjsKICAgICBl
bHNlIHsKLSAgICAgICAgY29sb3IgPSBwYXJzZUNvbG9yRnVuY3Rpb24ocmFuZ2UsIGNzc1BhcnNl
ck1vZGUpOworICAgICAgICBjb2xvciA9IHBhcnNlQ29sb3JGdW5jdGlvbihyYW5nZSwgY29udGV4
dCk7CiAgICAgICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQpAQCAtMTQxMywxNCArMTgyOSwxNCBAQCBzdGF0aWMgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lCiB9CiAKIC8vIFVzZWQgdG8gcGFyc2UgY29sb3JzIGZvciAt
d2Via2l0LWdyYWRpZW50KC4uLikuCi1zdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBj
b25zdW1lRGVwcmVjYXRlZEdyYWRpZW50U3RvcENvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIGFy
Z3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3N0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRTdG9wQ29sb3IoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBp
ZiAoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNvbnN1bWVDb2xvcihhcmdzLCBjc3NQYXJzZXJNb2Rl
KTsKKyAgICByZXR1cm4gY29uc3VtZUNvbG9yKGFyZ3MsIGNvbnRleHQpOwogfQogCi1zdGF0aWMg
Ym9vbCBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50Q29sb3JTdG9wKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBDU1NHcmFkaWVudENvbG9yU3RvcCYgc3RvcCwgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlKQorc3RhdGljIGJvb2wgY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3Rv
cChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTR3JhZGllbnRDb2xvclN0b3AmIHN0b3As
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQ1NTVmFsdWVJRCBpZCA9
IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCk7CiAgICAgaWYgKGlkICE9IENTU1ZhbHVlRnJvbSAm
JiBpZCAhPSBDU1NWYWx1ZVRvICYmIGlkICE9IENTU1ZhbHVlQ29sb3JTdG9wKQpAQCAtMTQ0Miwx
MSArMTg1OCwxMSBAQCBzdGF0aWMgYm9vbCBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50Q29sCiAg
ICAgfQogCiAgICAgc3RvcC5wb3NpdGlvbiA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlVmFsdWUocG9zaXRpb24sIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKLSAgICBzdG9wLmNv
bG9yID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFN0b3BDb2xvcihhcmdzLCBjc3NQYXJzZXJN
b2RlKTsKKyAgICBzdG9wLmNvbG9yID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFN0b3BDb2xv
cihhcmdzLCBjb250ZXh0KTsKICAgICByZXR1cm4gc3RvcC5jb2xvciAmJiBhcmdzLmF0RW5kKCk7
CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQor
c3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudChDU1NQYXJz
ZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogewog
ICAgIFJlZlB0cjxDU1NHcmFkaWVudFZhbHVlPiByZXN1bHQ7CiAgICAgQ1NTVmFsdWVJRCBpZCA9
IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOwpAQCAtMTQ5OSw3ICsxOTE1
LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZQogCiAgICAgQ1NT
R3JhZGllbnRDb2xvclN0b3Agc3RvcDsKICAgICB3aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5n
V2hpdGVzcGFjZShhcmdzKSkgewotICAgICAgICBpZiAoIWNvbnN1bWVEZXByZWNhdGVkR3JhZGll
bnRDb2xvclN0b3AoYXJncywgc3RvcCwgY3NzUGFyc2VyTW9kZSkpCisgICAgICAgIGlmICghY29u
c3VtZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3RvcChhcmdzLCBzdG9wLCBjb250ZXh0KSkKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXN1bHQtPmFkZFN0b3AoV1RGTW92
ZShzdG9wKSk7CiAgICAgfQpAQCAtMTUwOCwyMCArMTkyNCwyMCBAQCBzdGF0aWMgUmVmUHRyPENT
U1ZhbHVlPiBjb25zdW1lRGVwcmVjYXRlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGlj
IGJvb2wgY29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTUGFyc2VyTW9kZSBtb2RlLCBDU1NHcmFkaWVudFZhbHVlJiBncmFkaWVudCkKK3N0YXRp
YyBib29sIGNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENTU0dyYWRpZW50VmFsdWUmIGdy
YWRpZW50KQogewogICAgIGJvb2wgc3VwcG9ydHNDb2xvckhpbnRzID0gZ3JhZGllbnQuZ3JhZGll
bnRUeXBlKCkgPT0gQ1NTTGluZWFyR3JhZGllbnQgfHwgZ3JhZGllbnQuZ3JhZGllbnRUeXBlKCkg
PT0gQ1NTUmFkaWFsR3JhZGllbnQgfHwgZ3JhZGllbnQuZ3JhZGllbnRUeXBlKCkgPT0gQ1NTQ29u
aWNHcmFkaWVudDsKICAgICAKICAgICBhdXRvIGNvbnN1bWVTdG9wUG9zaXRpb24gPSBbJl0gewog
ICAgICAgICByZXR1cm4gZ3JhZGllbnQuZ3JhZGllbnRUeXBlKCkgPT0gQ1NTQ29uaWNHcmFkaWVu
dAotICAgICAgICAgICAgPyBjb25zdW1lQW5nbGVPclBlcmNlbnQocmFuZ2UsIG1vZGUsIFZhbHVl
UmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVpcms6OkFsbG93
KQotICAgICAgICAgICAgOiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBtb2RlLCBWYWx1
ZVJhbmdlQWxsKTsKKyAgICAgICAgICAgID8gY29uc3VtZUFuZ2xlT3JQZXJjZW50KHJhbmdlLCBj
b250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2VBbGwsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxl
c3NaZXJvUXVpcms6OkFsbG93KQorICAgICAgICAgICAgOiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50
KHJhbmdlLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2VBbGwpOwogICAgIH07CiAKICAgICAvLyBU
aGUgZmlyc3QgY29sb3Igc3RvcCBjYW5ub3QgYmUgYSBjb2xvciBoaW50LgogICAgIGJvb2wgcHJl
dmlvdXNTdG9wV2FzQ29sb3JIaW50ID0gdHJ1ZTsKICAgICBkbyB7Ci0gICAgICAgIENTU0dyYWRp
ZW50Q29sb3JTdG9wIHN0b3AgeyBjb25zdW1lQ29sb3IocmFuZ2UsIG1vZGUpLCBjb25zdW1lU3Rv
cFBvc2l0aW9uKCksIHsgfSB9OworICAgICAgICBDU1NHcmFkaWVudENvbG9yU3RvcCBzdG9wIHsg
Y29uc3VtZUNvbG9yKHJhbmdlLCBjb250ZXh0KSwgY29uc3VtZVN0b3BQb3NpdGlvbigpLCB7IH0g
fTsKICAgICAgICAgaWYgKCFzdG9wLmNvbG9yICYmICFzdG9wLnBvc2l0aW9uKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xNTUyLDExICsxOTY4LDExIEBAIHN0YXRpYyBib29sIGNv
bnN1bWVHcmFkaWVudENvbG9yU3RvcHMoQ1MKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGlj
IFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChDU1NQYXJz
ZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU0dyYWRp
ZW50UmVwZWF0IHJlcGVhdGluZykKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXBy
ZWNhdGVkUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYgY29udGV4dCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQogewog
ICAgIGF1dG8gcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGlu
ZywgQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVudCk7CiAKLSAgICBhdXRvIGNlbnRlckNvb3JkaW5h
dGUgPSBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbkNvb3JkaW5hdGVzKGFyZ3MsIGNzc1Bh
cnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CisgICAgYXV0byBjZW50ZXJDb29yZGlu
YXRlID0gY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRpb25Db29yZGluYXRlcyhhcmdzLCBjb250
ZXh0Lm1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CiAgICAgaWYgKGNlbnRlckNvb3JkaW5h
dGUgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCkBAIC0xNTY3LDEwICsxOTgzLDEwIEBAIHN0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVEZXByZWNhdGUKIAogICAgIC8vIE9yLCB0d28gbGVuZ3RocyBvciBwZXJj
ZW50YWdlcwogICAgIGlmICghc2hhcGUgJiYgIXNpemVLZXl3b3JkKSB7Ci0gICAgICAgIGF1dG8g
aG9yaXpvbnRhbFNpemUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1v
ZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgIGF1dG8gaG9yaXpvbnRhbFNpemUg
PSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZU5v
bk5lZ2F0aXZlKTsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2ZXJ0aWNhbFNp
emU7CiAgICAgICAgIGlmIChob3Jpem9udGFsU2l6ZSkgewotICAgICAgICAgICAgdmVydGljYWxT
aXplID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJh
bmdlTm9uTmVnYXRpdmUpOworICAgICAgICAgICAgdmVydGljYWxTaXplID0gY29uc3VtZUxlbmd0
aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CiAg
ICAgICAgICAgICBpZiAoIXZlcnRpY2FsU2l6ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgICAgIGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncyk7
CkBAIC0xNTgxLDcgKzE5OTcsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lRGVw
cmVjYXRlCiAgICAgICAgIGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncyk7CiAg
ICAgfQogCi0gICAgaWYgKCFjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKGFyZ3MsIGNzc1BhcnNl
ck1vZGUsIHJlc3VsdCkpCisgICAgaWYgKCFjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKGFyZ3Ms
IGNvbnRleHQsIHJlc3VsdCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGNl
bnRlckNvb3JkaW5hdGUpIHsKQEAgLTE1OTYsNyArMjAxMiw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVEZXByZWNhdGUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMg
UmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NHcmFkaWVudFJlcGVhdCBy
ZXBlYXRpbmcpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lUmFkaWFsR3JhZGllbnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4
dCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQogewogICAgIFJlZlB0cjxDU1NSYWRpYWxH
cmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVw
ZWF0aW5nLCBDU1NSYWRpYWxHcmFkaWVudCk7CiAKQEAgLTE2MjQsMTMgKzIwNDAsMTMgQEAgc3Rh
dGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVJhZGlhbEdyYQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byBj
ZW50ZXIgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVl
UmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgICAgICBhdXRvIGNlbnRlciA9IGNvbnN1bWVMZW5n
dGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOwog
ICAgICAgICAgICAgaWYgKCFjZW50ZXIpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBpZiAoaG9yaXpvbnRhbFNpemUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgICAgICBob3Jpem9udGFsU2l6ZSA9IGNlbnRlcjsKLSAgICAgICAgICAgIGNlbnRl
ciA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5n
ZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgICAgIGNlbnRlciA9IGNvbnN1bWVMZW5ndGhPclBlcmNl
bnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOwogICAgICAgICAg
ICAgaWYgKGNlbnRlcikgewogICAgICAgICAgICAgICAgIHZlcnRpY2FsU2l6ZSA9IGNlbnRlcjsK
ICAgICAgICAgICAgICAgICArK2k7CkBAIC0xNjU5LDcgKzIwNzUsNyBAQCBzdGF0aWMgUmVmUHRy
PENTU1ZhbHVlPiBjb25zdW1lUmFkaWFsR3JhCiAgICAgaWYgKGFyZ3MucGVlaygpLmlkKCkgPT0g
Q1NTVmFsdWVBdCkgewogICAgICAgICBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7
CiAgICAgICAgIAotICAgICAgICBhdXRvIGNlbnRlckNvb3JkaW5hdGUgPSBjb25zdW1lUG9zaXRp
b25Db29yZGluYXRlcyhhcmdzLCBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQs
IFBvc2l0aW9uU3ludGF4OjpQb3NpdGlvbik7CisgICAgICAgIGF1dG8gY2VudGVyQ29vcmRpbmF0
ZSA9IGNvbnN1bWVQb3NpdGlvbkNvb3JkaW5hdGVzKGFyZ3MsIGNvbnRleHQubW9kZSwgVW5pdGxl
c3NRdWlyazo6Rm9yYmlkLCBQb3NpdGlvblN5bnRheDo6UG9zaXRpb24pOwogICAgICAgICBpZiAo
IWNlbnRlckNvb3JkaW5hdGUpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
CkBAIC0xNjc2LDcgKzIwOTIsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lUmFk
aWFsR3JhCiAKICAgICBpZiAoKHNoYXBlIHx8IHNpemVLZXl3b3JkIHx8IGhvcml6b250YWxTaXpl
IHx8IGNlbnRlclggfHwgY2VudGVyWSkgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3Bh
Y2UoYXJncykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghY29uc3VtZUdyYWRp
ZW50Q29sb3JTdG9wcyhhcmdzLCBjc3NQYXJzZXJNb2RlLCAqcmVzdWx0KSkKKyAgICBpZiAoIWNv
bnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJncywgY29udGV4dCwgKnJlc3VsdCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgcmVzdWx0LT5zZXRTaGFwZShXVEZNb3ZlKHNoYXBlKSk7
CkBAIC0xNjg3LDEyICsyMTAzLDEyIEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVS
YWRpYWxHcmEKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgUmVmUHRyPENTU1ZhbHVl
PiBjb25zdW1lTGluZWFyR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NHcmFkaWVudFJlcGVhdCByZXBlYXRpbmcsIENTU0dy
YWRpZW50VHlwZSBncmFkaWVudFR5cGUpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1l
TGluZWFyR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgY29udGV4dCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nLCBDU1NHcmFkaWVu
dFR5cGUgZ3JhZGllbnRUeXBlKQogewogICAgIFJlZlB0cjxDU1NMaW5lYXJHcmFkaWVudFZhbHVl
PiByZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBncmFk
aWVudFR5cGUpOwogCiAgICAgYm9vbCBleHBlY3RDb21tYSA9IHRydWU7Ci0gICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBhbmdsZSA9IGNvbnN1bWVBbmdsZShhcmdzLCBjc3NQYXJzZXJNb2Rl
LCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIFVuaXRsZXNzWmVyb1F1aXJrOjpBbGxvdyk7CisgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBhbmdsZSA9IGNvbnN1bWVBbmdsZShhcmdzLCBjb250
ZXh0Lm1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVpcms6OkFsbG93
KTsKICAgICBpZiAoYW5nbGUpCiAgICAgICAgIHJlc3VsdC0+c2V0QW5nbGUoYW5nbGUucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgZWxzZSBpZiAoZ3JhZGllbnRUeXBlID09IENTU1ByZWZpeGVkTGlu
ZWFyR3JhZGllbnQgfHwgY29uc3VtZUlkZW50PENTU1ZhbHVlVG8+KGFyZ3MpKSB7CkBAIC0xNzE1
LDEyICsyMTMxLDEyIEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVMaW5lYXJHcmEK
IAogICAgIGlmIChleHBlY3RDb21tYSAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShhcmdzKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFjb25zdW1lR3JhZGll
bnRDb2xvclN0b3BzKGFyZ3MsIGNzc1BhcnNlck1vZGUsICpyZXN1bHQpKQorICAgIGlmICghY29u
c3VtZUdyYWRpZW50Q29sb3JTdG9wcyhhcmdzLCBjb250ZXh0LCAqcmVzdWx0KSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZT4gY29uc3VtZUNvbmljR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywg
Q1NTUGFyc2VyQ29udGV4dCBjb250ZXh0LCBDU1NHcmFkaWVudFJlcGVhdCByZXBlYXRpbmcpCitz
dGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQ29uaWNHcmFkaWVudChDU1NQYXJzZXJUb2tl
blJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBDU1NHcmFkaWVu
dFJlcGVhdCByZXBlYXRpbmcpCiB7CiAjaWYgRU5BQkxFKENTU19DT05JQ19HUkFESUVOVFMpCiAg
ICAgUmVmUHRyPENTU0NvbmljR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTQ29uaWNHcmFkaWVu
dFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nKTsKQEAgLTE3NTQsNyArMjE3MCw3IEBAIHN0YXRpYyBS
ZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDb25pY0dyYWQKIAogICAgIGlmIChleHBlY3RDb21tYSAm
JiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgaWYgKCFjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKGFyZ3MsIGNvbnRl
eHQubW9kZSwgKnJlc3VsdCkpCisgICAgaWYgKCFjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKGFy
Z3MsIGNvbnRleHQsICpyZXN1bHQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1
cm4gcmVzdWx0OwogI2Vsc2UKQEAgLTE3NjUsMTQgKzIxODEsMTQgQEAgc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZT4gY29uc3VtZUNvbmljR3JhZAogI2VuZGlmCiB9CiAKLVJlZlB0cjxDU1NWYWx1ZT4g
Y29uc3VtZUltYWdlT3JOb25lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJD
b250ZXh0IGNvbnRleHQpCitSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZU9yTm9uZShDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkK
IHsKICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICBy
ZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKICAgICByZXR1cm4gY29uc3VtZUltYWdlKHJhbmdl
LCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNyb3NzRmFk
ZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQsIGJv
b2wgcHJlZml4ZWQpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQ3Jvc3NGYWRlKENT
U1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQs
IGJvb2wgcHJlZml4ZWQpCiB7CiAgICAgYXV0byBmcm9tSW1hZ2VWYWx1ZSA9IGNvbnN1bWVJbWFn
ZU9yTm9uZShhcmdzLCBjb250ZXh0KTsKICAgICBpZiAoIWZyb21JbWFnZVZhbHVlIHx8ICFjb25z
dW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQpAQCAtMTg0OCwzMCArMjI2NCwzMCBA
QCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQ3VzdG9tUGFpCiB9CiAjZW5kaWYKIAot
c3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUdlbmVyYXRlZEltYWdlKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQpCitzdGF0aWMgUmVmUHRy
PENTU1ZhbHVlPiBjb25zdW1lR2VuZXJhdGVkSW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQ1NTVmFsdWVJRCBp
ZCA9IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCk7CiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBy
YW5nZUNvcHkgPSByYW5nZTsKICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1l
RnVuY3Rpb24ocmFuZ2VDb3B5KTsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc3VsdDsKICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVSYWRpYWxHcmFkaWVudCkKLSAgICAgICAgcmVzdWx0ID0gY29uc3Vt
ZVJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgTm9uUmVwZWF0aW5nKTsKKyAgICAg
ICAgcmVzdWx0ID0gY29uc3VtZVJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRleHQsIE5vblJlcGVh
dGluZyk7CiAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVSZXBlYXRpbmdSYWRpYWxHcmFkaWVu
dCkKLSAgICAgICAgcmVzdWx0ID0gY29uc3VtZVJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRleHQu
bW9kZSwgUmVwZWF0aW5nKTsKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZVJhZGlhbEdyYWRpZW50
KGFyZ3MsIGNvbnRleHQsIFJlcGVhdGluZyk7CiAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVX
ZWJraXRMaW5lYXJHcmFkaWVudCkKLSAgICAgICAgcmVzdWx0ID0gY29uc3VtZUxpbmVhckdyYWRp
ZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgTm9uUmVwZWF0aW5nLCBDU1NQcmVmaXhlZExpbmVhckdy
YWRpZW50KTsKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZUxpbmVhckdyYWRpZW50KGFyZ3MsIGNv
bnRleHQsIE5vblJlcGVhdGluZywgQ1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudCk7CiAgICAgZWxz
ZSBpZiAoaWQgPT0gQ1NTVmFsdWVXZWJraXRSZXBlYXRpbmdMaW5lYXJHcmFkaWVudCkKLSAgICAg
ICAgcmVzdWx0ID0gY29uc3VtZUxpbmVhckdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgUmVw
ZWF0aW5nLCBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50KTsKKyAgICAgICAgcmVzdWx0ID0gY29u
c3VtZUxpbmVhckdyYWRpZW50KGFyZ3MsIGNvbnRleHQsIFJlcGVhdGluZywgQ1NTUHJlZml4ZWRM
aW5lYXJHcmFkaWVudCk7CiAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVSZXBlYXRpbmdMaW5l
YXJHcmFkaWVudCkKLSAgICAgICAgcmVzdWx0ID0gY29uc3VtZUxpbmVhckdyYWRpZW50KGFyZ3Ms
IGNvbnRleHQubW9kZSwgUmVwZWF0aW5nLCBDU1NMaW5lYXJHcmFkaWVudCk7CisgICAgICAgIHJl
c3VsdCA9IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdzLCBjb250ZXh0LCBSZXBlYXRpbmcsIENT
U0xpbmVhckdyYWRpZW50KTsKICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUxpbmVhckdyYWRp
ZW50KQotICAgICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFyR3JhZGllbnQoYXJncywgY29udGV4
dC5tb2RlLCBOb25SZXBlYXRpbmcsIENTU0xpbmVhckdyYWRpZW50KTsKKyAgICAgICAgcmVzdWx0
ID0gY29uc3VtZUxpbmVhckdyYWRpZW50KGFyZ3MsIGNvbnRleHQsIE5vblJlcGVhdGluZywgQ1NT
TGluZWFyR3JhZGllbnQpOwogICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0R3JhZGll
bnQpCi0gICAgICAgIHJlc3VsdCA9IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnQoYXJncywgY29u
dGV4dC5tb2RlKTsKKyAgICAgICAgcmVzdWx0ID0gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudChh
cmdzLCBjb250ZXh0KTsKICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtpdFJhZGlhbEdy
YWRpZW50KQotICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50
KGFyZ3MsIGNvbnRleHQubW9kZSwgTm9uUmVwZWF0aW5nKTsKKyAgICAgICAgcmVzdWx0ID0gY29u
c3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0LCBOb25SZXBlYXRpbmcp
OwogICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0UmVwZWF0aW5nUmFkaWFsR3JhZGll
bnQpCi0gICAgICAgIHJlc3VsdCA9IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQoYXJn
cywgY29udGV4dC5tb2RlLCBSZXBlYXRpbmcpOworICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVw
cmVjYXRlZFJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRleHQsIFJlcGVhdGluZyk7CiAgICAgZWxz
ZSBpZiAoaWQgPT0gQ1NTVmFsdWVDb25pY0dyYWRpZW50KQogICAgICAgICByZXN1bHQgPSBjb25z
dW1lQ29uaWNHcmFkaWVudChhcmdzLCBjb250ZXh0LCBOb25SZXBlYXRpbmcpOwogICAgIGVsc2Ug
aWYgKGlkID09IENTU1ZhbHVlUmVwZWF0aW5nQ29uaWNHcmFkaWVudCkKQEAgLTIwMTcsNyArMjQz
Myw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTRnVuY3Rpb25WYWx1ZT4gY29uc3VtZUYKICAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHBhcnNlZFZhbHVlOwogCiAgICAgaWYgKGZpbHRlclR5cGUgPT0gQ1NTVmFs
dWVEcm9wU2hhZG93KQotICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVTaW5nbGVTaGFkb3co
YXJncywgY29udGV4dC5tb2RlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICBwYXJzZWRWYWx1ZSA9
IGNvbnN1bWVTaW5nbGVTaGFkb3coYXJncywgY29udGV4dCwgZmFsc2UsIGZhbHNlKTsKICAgICBl
bHNlIHsKICAgICAgICAgaWYgKGFyZ3MuYXRFbmQoKSkKICAgICAgICAgICAgIHJldHVybiBmaWx0
ZXJWYWx1ZTsKQEAgLTIwNjQsNyArMjQ4MCw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUZp
bHRlcihDU1NQYXJzZXIKICAgICByZXR1cm4gbGlzdC5wdHIoKTsKIH0KIAotUmVmUHRyPENTU1No
YWRvd1ZhbHVlPiBjb25zdW1lU2luZ2xlU2hhZG93KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIGJvb2wgYWxsb3dJbnNldCwgYm9vbCBhbGxv
d1NwcmVhZCkKK1JlZlB0cjxDU1NTaGFkb3dWYWx1ZT4gY29uc3VtZVNpbmdsZVNoYWRvdyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwg
Ym9vbCBhbGxvd0luc2V0LCBib29sIGFsbG93U3ByZWFkKQogewogICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gc3R5bGU7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb2xvcjsK
QEAgLTIwODksNyArMjUwNSw3IEBAIFJlZlB0cjxDU1NTaGFkb3dWYWx1ZT4gY29uc3VtZVNpbmds
ZVNoYWQKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBhdXRvIG1heWJlQ29sb3IgPSBjb25zdW1lQ29sb3IocmFuZ2UsIGNzc1BhcnNlck1vZGUpOwor
ICAgICAgICBhdXRvIG1heWJlQ29sb3IgPSBjb25zdW1lQ29sb3IocmFuZ2UsIGNvbnRleHQpOwog
ICAgICAgICBpZiAobWF5YmVDb2xvcikgewogICAgICAgICAgICAgLy8gSWYgd2UganVzdCBwYXJz
ZWQgYSBjb2xvciBidXQgYWxyZWFkeSBoYWQgb25lLCB0aGUgZ2l2ZW4gdG9rZW4gcmFuZ2UgaXMg
bm90IGEgdmFsaWQgPHNoYWRvdz4uCiAgICAgICAgICAgICBpZiAoY29sb3IpCkBAIC0yMTAzLDIz
ICsyNTE5LDIzIEBAIFJlZlB0cjxDU1NTaGFkb3dWYWx1ZT4gY29uc3VtZVNpbmdsZVNoYWQKICAg
ICAgICAgICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgcGFyc2VkIHRoZXNlIGxlbmd0aHMsIHRoZSBn
aXZlbiB2YWx1ZSBpcyBpbnZhbGlkIGFzIHRoZXJlIGNhbm5vdCBiZSB0d28gbGVuZ3RocyBjb21w
b25lbnRzIGluIGEgc2luZ2xlIDxzaGFkb3c+IHZhbHVlLgogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgaG9yaXpvbnRhbE9mZnNldCA9IGNvbnN1bWVMZW5n
dGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBob3Jpem9u
dGFsT2Zmc2V0ID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdl
QWxsKTsKICAgICAgICAgaWYgKCFob3Jpem9udGFsT2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgIHZlcnRpY2FsT2Zmc2V0ID0gY29uc3VtZUxlbmd0aChyYW5nZSwg
Y3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgIHZlcnRpY2FsT2Zmc2V0ID0g
Y29uc3VtZUxlbmd0aChyYW5nZSwgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlQWxsKTsKICAgICAg
ICAgaWYgKCF2ZXJ0aWNhbE9mZnNldCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKICAgICAg
ICAgLy8gVGhlIGV4cGxpY2l0IGNoZWNrIGZvciBjYWxjKCkgaXMgdW5mb3J0dW5hdGUuIFRoaXMg
aXMgZW5zdXJpbmcgdGhhdCB3ZSBvbmx5IGZhaWwgcGFyc2luZyBpZiB0aGVyZSBpcyBhIGxlbmd0
aCwgYnV0IGl0IGZhaWxzIHRoZSByYW5nZSBjaGVjay4KICAgICAgICAgaWYgKHRva2VuLnR5cGUo
KSA9PSBEaW1lbnNpb25Ub2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4gfHwgKHRv
a2VuLnR5cGUoKSA9PSBGdW5jdGlvblRva2VuICYmIENTU0NhbGNWYWx1ZTo6aXNDYWxjRnVuY3Rp
b24odG9rZW4uZnVuY3Rpb25JZCgpKSkpIHsKLSAgICAgICAgICAgIGJsdXJSYWRpdXMgPSBjb25z
dW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOwor
ICAgICAgICAgICAgYmx1clJhZGl1cyA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNvbnRleHQubW9k
ZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKICAgICAgICAgICAgIGlmICghYmx1clJhZGl1cykK
ICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChibHVyUmFkaXVzICYmIGFsbG93U3ByZWFkKQotICAgICAgICAgICAgc3ByZWFkRGlzdGFuY2Ug
PSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKKyAg
ICAgICAgICAgIHNwcmVhZERpc3RhbmNlID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY29udGV4dC5t
b2RlLCBWYWx1ZVJhbmdlQWxsKTsKICAgICB9CiAgICAgCiAgICAgLy8gSW4gb3JkZXIgZm9yIHRo
aXMgdG8gYmUgYSB2YWxpZCA8c2hhZG93PiwgYXQgbGVhc3QgdGhlc2UgbGVuZ3RocyBtdXN0IGJl
IHByZXNlbnQuCkBAIC0yMTI4LDcgKzI1NDQsNyBAQCBSZWZQdHI8Q1NTU2hhZG93VmFsdWU+IGNv
bnN1bWVTaW5nbGVTaGFkCiAgICAgcmV0dXJuIENTU1NoYWRvd1ZhbHVlOjpjcmVhdGUoV1RGTW92
ZShob3Jpem9udGFsT2Zmc2V0KSwgV1RGTW92ZSh2ZXJ0aWNhbE9mZnNldCksIFdURk1vdmUoYmx1
clJhZGl1cyksIFdURk1vdmUoc3ByZWFkRGlzdGFuY2UpLCBXVEZNb3ZlKHN0eWxlKSwgV1RGTW92
ZShjb2xvcikpOwogfQogCi1SZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZShDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0LCBPcHRpb25TZXQ8QWxs
b3dlZEltYWdlVHlwZT4gYWxsb3dlZEltYWdlVHlwZXMpCitSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1
bWVJbWFnZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYgY29udGV4dCwgT3B0aW9uU2V0PEFsbG93ZWRJbWFnZVR5cGU+IGFsbG93ZWRJbWFnZVR5cGVz
KQogewogICAgIGlmICgocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBTdHJpbmdUb2tlbikgJiYgKGFs
bG93ZWRJbWFnZVR5cGVzLmNvbnRhaW5zKEFsbG93ZWRJbWFnZVR5cGU6OlJhd1N0cmluZ0FzVVJM
KSkpIHsKICAgICAgICAgYXV0byB1cmxTdHJpbmdWaWV3ID0gcmFuZ2UuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKS52YWx1ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oCShyZXZpc2lvbiAyNzI4MzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDIsOCArMTAyLDggQEAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBjb25zdW1lU3RyaW5nKAogU3RyaW5nVmlldyBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KENTU1Bh
cnNlclRva2VuUmFuZ2UmKTsKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVVybChD
U1NQYXJzZXJUb2tlblJhbmdlJik7CiAKLUNvbG9yIGNvbnN1bWVDb2xvcldvcmtlclNhZmUoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUpOwotUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBjb25zdW1lQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlck1vZGUsIGJv
b2wgYWNjZXB0UXVpcmt5Q29sb3JzID0gZmFsc2UpOworQ29sb3IgY29uc3VtZUNvbG9yV29ya2Vy
U2FmZShDU1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOworUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQ29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYs
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBib29sIGFjY2VwdFF1aXJreUNvbG9ycyA9IGZhbHNl
KTsKIAogZW51bSBjbGFzcyBQb3NpdGlvblN5bnRheCB7CiAgICAgUG9zaXRpb24sIC8vIDxwb3Np
dGlvbj4KQEAgLTEyNiw5ICsxMjYsOCBAQCBlbnVtIGNsYXNzIEFsbG93ZWRJbWFnZVR5cGUgOiB1
aW50OF90IHsKICAgICBHZW5lcmF0ZWRJbWFnZSA9IDEgPDwgMwogfTsKIAotUmVmUHRyPENTU1Zh
bHVlPiBjb25zdW1lSW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlckNvbnRleHQs
IE9wdGlvblNldDxBbGxvd2VkSW1hZ2VUeXBlPiA9IHsgQWxsb3dlZEltYWdlVHlwZTo6VVJMRnVu
Y3Rpb24sIEFsbG93ZWRJbWFnZVR5cGU6OkltYWdlU2V0LCBBbGxvd2VkSW1hZ2VUeXBlOjpHZW5l
cmF0ZWRJbWFnZSB9KTsKLQotUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lSW1hZ2VPck5vbmUoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNlckNvbnRleHQpOworUmVmUHRyPENTU1ZhbHVlPiBj
b25zdW1lSW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
LCBPcHRpb25TZXQ8QWxsb3dlZEltYWdlVHlwZT4gPSB7IEFsbG93ZWRJbWFnZVR5cGU6OlVSTEZ1
bmN0aW9uLCBBbGxvd2VkSW1hZ2VUeXBlOjpJbWFnZVNldCwgQWxsb3dlZEltYWdlVHlwZTo6R2Vu
ZXJhdGVkSW1hZ2UgfSk7CitSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZU9yTm9uZShDU1NQ
YXJzZXJUb2tlblJhbmdlJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOwogCiBlbnVtIGNsYXNz
IEFsbG93ZWRGaWx0ZXJGdW5jdGlvbnMgewogICAgIFBpeGVsRmlsdGVycywKQEAgLTEzNiw3ICsx
MzUsNyBAQCBlbnVtIGNsYXNzIEFsbG93ZWRGaWx0ZXJGdW5jdGlvbnMgewogfTsKIAogUmVmUHRy
PENTU1ZhbHVlPiBjb25zdW1lRmlsdGVyKENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiwgQWxsb3dlZEZpbHRlckZ1bmN0aW9ucyk7Ci1SZWZQdHI8Q1NTU2hhZG93
VmFsdWU+IGNvbnN1bWVTaW5nbGVTaGFkb3coQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIENTU1BhcnNl
ck1vZGUsIGJvb2wgYWxsb3dJbnNldCwgYm9vbCBhbGxvd1NwcmVhZCk7CitSZWZQdHI8Q1NTU2hh
ZG93VmFsdWU+IGNvbnN1bWVTaW5nbGVTaGFkb3coQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0
IENTU1BhcnNlckNvbnRleHQmLCBib29sIGFsbG93SW5zZXQsIGJvb2wgYWxsb3dTcHJlYWQpOwog
CiBzdHJ1Y3QgRm9udFN0eWxlUmF3IHsKICAgICBDU1NWYWx1ZUlEIHN0eWxlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24u
Y3BwCShyZXZpc2lvbiAyNzI4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvckNvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw4ICs1OCw2IEBAIHN0
YXRpYyBIU0xIdWVDYWxjdWxhdGlvblJlc3VsdCBjYWxjdWxhdGUKICAgICBpZiAoaHVlID49IDM2
MC4wZikKICAgICAgICAgaHVlIC09IDM2MC4wZjsKIAotICAgIGh1ZSAvPSAzNjAuMGY7Ci0KICAg
ICByZXR1cm4geyBodWUsIG1pbiwgbWF4LCBjaHJvbWEgfTsKIH0KIApAQCAtNjksNiArNjcsNyBA
QCBIU0xBPGZsb2F0PiBDb2xvckNvbnZlcnNpb248SFNMQTxmbG9hdD4sCiAgICAgYXV0byBbciwg
ZywgYiwgYWxwaGFdID0gY29sb3I7CiAgICAgYXV0byBbaHVlLCBtaW4sIG1heCwgY2hyb21hXSA9
IGNhbGN1bGF0ZUhTTEh1ZShjb2xvcik7CiAKKyAgICBmbG9hdCBub3JtYWxpemVkSHVlID0gaHVl
IC8gMzYwLjBmOwogICAgIGZsb2F0IGxpZ2h0bmVzcyA9IDAuNWYgKiAobWF4ICsgbWluKTsKICAg
ICBmbG9hdCBzYXR1cmF0aW9uOwogICAgIGlmICghY2hyb21hKQpAQCAtNzgsNyArNzcsNyBAQCBI
U0xBPGZsb2F0PiBDb2xvckNvbnZlcnNpb248SFNMQTxmbG9hdD4sCiAgICAgZWxzZQogICAgICAg
ICBzYXR1cmF0aW9uID0gKGNocm9tYSAvICgyLjBmIC0gKG1heCArIG1pbikpKTsKIAotICAgIHJl
dHVybiB7IGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzLCBhbHBoYSB9OworICAgIHJldHVybiB7
IG5vcm1hbGl6ZWRIdWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcywgYWxwaGEgfTsKIH0KIAogU1JH
QkE8ZmxvYXQ+IENvbG9yQ29udmVyc2lvbjxTUkdCQTxmbG9hdD4sIEhTTEE8ZmxvYXQ+Pjo6Y29u
dmVydChjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCkBAIC0xMzEsNyArMTMwLDcgQEAgSFdCQTxm
bG9hdD4gQ29sb3JDb252ZXJzaW9uPEhXQkE8ZmxvYXQ+LAogICAgIGF1dG8gd2hpdGVuZXNzID0g
bWluOwogICAgIGF1dG8gYmxhY2tuZXNzID0gMS4wZiAtIG1heDsKICAgICAKLSAgICByZXR1cm4g
eyBodWUsIHdoaXRlbmVzcywgYmxhY2tuZXNzLCBjb2xvci5hbHBoYSB9OworICAgIHJldHVybiB7
IGh1ZSwgd2hpdGVuZXNzICogMTAwLjBmLCBibGFja25lc3MgKiAxMDAuMGYsIGNvbG9yLmFscGhh
IH07CiB9CiAKIFNSR0JBPGZsb2F0PiBDb2xvckNvbnZlcnNpb248U1JHQkE8ZmxvYXQ+LCBIV0JB
PGZsb2F0Pj46OmNvbnZlcnQoY29uc3QgSFdCQTxmbG9hdD4mIGNvbG9yKQpAQCAtMTM5LDggKzEz
OCwyNCBAQCBTUkdCQTxmbG9hdD4gQ29sb3JDb252ZXJzaW9uPFNSR0JBPGZsb2F0CiAgICAgLy8g
aHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1jb2xvci00LyNod2ItdG8tcmdiCiAgICAgYXV0
byBbaHVlLCB3aGl0ZW5lc3MsIGJsYWNrbmVzcywgYWxwaGFdID0gY29sb3I7CiAKLSAgICBpZiAo
d2hpdGVuZXNzICsgYmxhY2tuZXNzID09IDEuMGYpCi0gICAgICAgIHJldHVybiB7IHdoaXRlbmVz
cywgd2hpdGVuZXNzLCB3aGl0ZW5lc3MsIGFscGhhIH07CisgICAgaWYgKHdoaXRlbmVzcyArIGJs
YWNrbmVzcyA9PSAxMDAuMGYpIHsKKyAgICAgICAgYXV0byBncmV5ID0gd2hpdGVuZXNzIC8gMTAw
LjBmOworICAgICAgICByZXR1cm4geyBncmV5LCBncmV5LCBncmV5LCBhbHBoYSB9OworICAgIH0K
KworICAgIC8vIGh1ZVRvUkdCKCkgd2FudHMgaHVlIGluIHRoZSAwLTYgcmFuZ2UuCisgICAgYXV0
byBub3JtYWxpemVkSHVlID0gKGh1ZSAvIDM2MC4wZikgKiA2LjBmOworCisgICAgYXV0byBodWVG
b3JSZWQgPSBub3JtYWxpemVkSHVlICsgMi4wZjsKKyAgICBhdXRvIGh1ZUZvckdyZWVuID0gbm9y
bWFsaXplZEh1ZTsKKyAgICBhdXRvIGh1ZUZvckJsdWUgPSBub3JtYWxpemVkSHVlIC0gMi4wZjsK
KyAgICBpZiAoaHVlRm9yUmVkID4gNi4wZikKKyAgICAgICAgaHVlRm9yUmVkIC09IDYuMGY7Cisg
ICAgZWxzZSBpZiAoaHVlRm9yQmx1ZSA8IDAuMGYpCisgICAgICAgIGh1ZUZvckJsdWUgKz0gNi4w
ZjsKKworICAgIGF1dG8gbm9ybWFsaXplZFdoaXRlbmVzcyA9IHdoaXRlbmVzcyAvIDEwMC4wZjsK
KyAgICBhdXRvIG5vcm1hbGl6ZWRCbGFja25lc3MgPSBibGFja25lc3MgLyAxMDAuMGY7CiAKICAg
ICAvLyBUaGlzIGlzIHRoZSBodWVUb1JHQiBmdW5jdGlvbiBpbiBjb252ZXJ0Q29sb3I8U1JHQkE8
ZmxvYXQ+Pihjb25zdCBIU0xBJikgd2l0aCB0ZW1wMSA9PSAwCiAgICAgLy8gYW5kIHRlbXAyID09
IDEgc3RyZW5ndGggcmVkdWNlZCB0aHJvdWdoIGl0LgpAQCAtMTU0LDI1ICsxNjksMTQgQEAgU1JH
QkE8ZmxvYXQ+IENvbG9yQ29udmVyc2lvbjxTUkdCQTxmbG9hdAogICAgICAgICByZXR1cm4gMC4w
ZjsKICAgICB9OwogCi0gICAgYXV0byBhcHBseVdoaXRlbmVzc0JsYWNrbmVzcyA9IFsmXShmbG9h
dCBjb21wb25lbnQpIHsKLSAgICAgICAgcmV0dXJuIChjb21wb25lbnQgKiAoMS4wZiAtIGNvbG9y
LndoaXRlbmVzcyAtIGNvbG9yLmJsYWNrbmVzcykpICsgY29sb3Iud2hpdGVuZXNzOworICAgIGF1
dG8gYXBwbHlXaGl0ZW5lc3NCbGFja25lc3MgPSBbXShmbG9hdCBjb21wb25lbnQsIGF1dG8gd2hp
dGVuZXNzLCBhdXRvIGJsYWNrbmVzcykgeworICAgICAgICByZXR1cm4gKGNvbXBvbmVudCAqICgx
LjBmIC0gd2hpdGVuZXNzIC0gYmxhY2tuZXNzKSkgKyB3aGl0ZW5lc3M7CiAgICAgfTsKIAotICAg
IC8vIGh1ZVRvUkdCKCkgd2FudHMgaHVlIGluIHRoZSAwLTYgcmFuZ2UuCi0gICAgaHVlICo9IDYu
MGY7Ci0KLSAgICBhdXRvIGh1ZUZvclJlZCA9IGh1ZSArIDIuMGY7Ci0gICAgYXV0byBodWVGb3JH
cmVlbiA9IGh1ZTsKLSAgICBhdXRvIGh1ZUZvckJsdWUgPSBodWUgLSAyLjBmOwotICAgIGlmICho
dWVGb3JSZWQgPiA2LjBmKQotICAgICAgICBodWVGb3JSZWQgLT0gNi4wZjsKLSAgICBlbHNlIGlm
IChodWVGb3JCbHVlIDwgMC4wZikKLSAgICAgICAgaHVlRm9yQmx1ZSArPSA2LjBmOwotCiAgICAg
cmV0dXJuIHsKLSAgICAgICAgYXBwbHlXaGl0ZW5lc3NCbGFja25lc3MoaHVlVG9SR0IoaHVlRm9y
UmVkKSksCi0gICAgICAgIGFwcGx5V2hpdGVuZXNzQmxhY2tuZXNzKGh1ZVRvUkdCKGh1ZUZvckdy
ZWVuKSksCi0gICAgICAgIGFwcGx5V2hpdGVuZXNzQmxhY2tuZXNzKGh1ZVRvUkdCKGh1ZUZvckJs
dWUpKSwKKyAgICAgICAgYXBwbHlXaGl0ZW5lc3NCbGFja25lc3MoaHVlVG9SR0IoaHVlRm9yUmVk
KSwgbm9ybWFsaXplZFdoaXRlbmVzcywgbm9ybWFsaXplZEJsYWNrbmVzcyksCisgICAgICAgIGFw
cGx5V2hpdGVuZXNzQmxhY2tuZXNzKGh1ZVRvUkdCKGh1ZUZvckdyZWVuKSwgbm9ybWFsaXplZFdo
aXRlbmVzcywgbm9ybWFsaXplZEJsYWNrbmVzcyksCisgICAgICAgIGFwcGx5V2hpdGVuZXNzQmxh
Y2tuZXNzKGh1ZVRvUkdCKGh1ZUZvckJsdWUpLCBub3JtYWxpemVkV2hpdGVuZXNzLCBub3JtYWxp
emVkQmxhY2tuZXNzKSwKICAgICAgICAgYWxwaGEKICAgICB9OwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNb2RlbHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1vZGVscy5oCShyZXZpc2lvbiAyNzI4
MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1vZGVscy5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Niw5ICs3Niw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEhTTE1vZGVs
PGZsb2F0PiB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEhXQk1vZGVsPGZsb2F0PiB7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PENvbG9yQ29tcG9uZW50UmFuZ2U8ZmxvYXQ+LCAzPiBy
YW5nZXMgeyB7Ci0gICAgICAgIHsgMCwgMSB9LAotICAgICAgICB7IDAsIDEgfSwKLSAgICAgICAg
eyAwLCAxIH0KKyAgICAgICAgeyAwLCAzNjAgfSwKKyAgICAgICAgeyAwLCAxMDAgfSwKKyAgICAg
ICAgeyAwLCAxMDAgfQogICAgIH0gfTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbnZl
cnRpYmxlID0gZmFsc2U7CiB9Owo=
</data>
<flag name="commit-queue"
          id="438708"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420257</attachid>
            <date>2021-02-14 16:00:03 -0800</date>
            <delta_ts>2021-02-15 19:16:04 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>wipRelativeColor.diff</filename>
            <type>text/plain</type>
            <size>79899</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVy
aW1lbnRhbC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCShyZXZpc2lvbiAyNzI4MzcpCisrKyBT
b3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwu
eWFtbAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDIwLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xNjMsNiArMTYzLDE4IEBAIENTU1BhaW50aW5nQVBJRW5hYmxlZDoKICAgICAg
ICJFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkVTKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShXUEUpKSI6IHRydWUKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAKK0NTU1JlbGF0aXZlQ29s
b3JTeW50YXhFbmFibGVkOgorICB0eXBlOiBib29sCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiQ1NT
IFJlbGF0aXZlIENvbG9yIFN5bnRheCIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5h
YmxlIHN1cHBvcnQgZm9yIENTUyBSZWxhdGl2ZSBDb2xvciBTeW50YXggZGVmaW5lZCBpbiBDU1Mg
Q29sb3IgNSIKKyAgZGVmYXVsdFZhbHVlOgorICAgIFdlYktpdExlZ2FjeToKKyAgICAgIGRlZmF1
bHQ6IGZhbHNlCisgICAgV2ViS2l0OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJDb3Jl
OgorICAgICAgZGVmYXVsdDogZmFsc2UKKwogQ1NTVHlwZWRPTUVuYWJsZWQ6CiAgIHR5cGU6IGJv
b2wKICAgaHVtYW5SZWFkYWJsZU5hbWU6ICJDU1MgVHlwZWQgT00iCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyNjYsNiAr
MTI2NiwyNSBAQCBsYWIKIGxjaAogLy9jb2xvcgogCisvLyByZWxhdGl2ZSBjb2xvciBpZGVudGlm
aWVycworLy8gZnJvbQorcgorZworYgoraAorcworbAorLy8gaAordworLy8gYgorLy8gbAorYQor
Ly8gYgorLy8gbAorYworLy8gaAorLy9hbHBoYQorCiAvLyB0cmFuc2Zvcm0KIG1hdHJpeAogbWF0
cml4M2QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAJKHJldmlz
aW9uIDI3MjgzNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIENvbG9yIENTU1BhcnNlcjo6cGFyc2VD
b2xvcldvcmtlclNhZmUoY28KICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlKHRva2VuaXpl
ci50b2tlblJhbmdlKCkpOwogICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CiAKLSAgICBy
ZXR1cm4gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQ29sb3JXb3JrZXJTYWZlKHJh
bmdlLCBIVE1MU3RhbmRhcmRNb2RlKTsKKyAgICByZXR1cm4gQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpjb25zdW1lQ29sb3JXb3JrZXJTYWZlKHJhbmdlLCBzdHJpY3RDU1NQYXJzZXJDb250ZXh0
KCkpOwogfQogCiBDb2xvciBDU1NQYXJzZXI6OnBhcnNlU3lzdGVtQ29sb3IoU3RyaW5nVmlldyBz
dHJpbmcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NywzOSArNDcsNDcgQEAg
Q1NTUGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29udGV4dChDU1NQYQogewogfQogCi1DU1NQYXJz
ZXJDb250ZXh0OjpDU1NQYXJzZXJDb250ZXh0KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiBzaGVldEJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCkKLSAgICA6IGJhc2VV
Ukwoc2hlZXRCYXNlVVJMLmlzTnVsbCgpID8gZG9jdW1lbnQuYmFzZVVSTCgpIDogc2hlZXRCYXNl
VVJMKQotICAgICwgY2hhcnNldChjaGFyc2V0KQotICAgICwgbW9kZShkb2N1bWVudC5pblF1aXJr
c01vZGUoKSA/IEhUTUxRdWlya3NNb2RlIDogSFRNTFN0YW5kYXJkTW9kZSkKLSAgICAsIGlzSFRN
TERvY3VtZW50KGRvY3VtZW50LmlzSFRNTERvY3VtZW50KCkpCi0gICAgLCBoYXNEb2N1bWVudFNl
Y3VyaXR5T3JpZ2luKHNoZWV0QmFzZVVSTC5pc051bGwoKSB8fCBkb2N1bWVudC5zZWN1cml0eU9y
aWdpbigpLmNhblJlcXVlc3QoYmFzZVVSTCkpCi17Ci0gICAgZW5mb3JjZXNDU1NNSU1FVHlwZUlu
Tm9RdWlya3NNb2RlID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5lbmZvcmNlQ1NTTUlNRVR5cGVJbk5v
UXVpcmtzTW9kZSgpOwotICAgIHVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZp
b3IgPSBkb2N1bWVudC5zZXR0aW5ncygpLnVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5k
QmVoYXZpb3IoKTsKLSNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQotICAgIHRleHRBdXRvc2l6
aW5nRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkudGV4dEF1dG9zaXppbmdFbmFibGVkKCk7
Ci0jZW5kaWYKICNpZiBFTkFCTEUoT1ZFUkZMT1dfU0NST0xMSU5HX1RPVUNIKQotICAgIGxlZ2Fj
eU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hFbmFibGVkID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5sZWdh
Y3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoRW5hYmxlZCgpOworc3RhdGljIGJvb2wgc2hvdWxkRW5h
YmxlTGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQp
Cit7CiAgICAgLy8gVGhlIGxlZ2FjeSAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2gg
YmVoYXZpb3IgbWF5IGhhdmUgYmVlbiBkaXNhYmxlZCB0aHJvdWdoIHRoZSB3ZWJzaXRlIHBvbGlj
eSwKICAgICAvLyBpbiB0aGF0IGNhc2Ugd2Ugd2FudCB0byBkaXNhYmxlIHRoZSBsZWdhY3kgYmVo
YXZpb3IgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSBzZXR0aW5nIHNheXMuCiAgICAgaWYgKGF1dG8q
IGxvYWRlciA9IGRvY3VtZW50LmxvYWRlcigpKSB7CiAgICAgICAgIGlmIChsb2FkZXItPmxlZ2Fj
eU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3koKSA9PSBMZWdhY3lPdmVyZmxvd1Njcm9sbGlu
Z1RvdWNoUG9saWN5OjpEaXNhYmxlKQotICAgICAgICAgICAgbGVnYWN5T3ZlcmZsb3dTY3JvbGxp
bmdUb3VjaEVuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CisgICAgcmV0dXJuIGRvY3VtZW50LnNldHRpbmdzKCkubGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdU
b3VjaEVuYWJsZWQoKTsKK30KKyNlbmRpZgorCitDU1NQYXJzZXJDb250ZXh0OjpDU1NQYXJzZXJD
b250ZXh0KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiBzaGVldEJhc2VVUkws
IGNvbnN0IFN0cmluZyYgY2hhcnNldCkKKyAgICA6IGJhc2VVUkwgeyBzaGVldEJhc2VVUkwuaXNO
dWxsKCkgPyBkb2N1bWVudC5iYXNlVVJMKCkgOiBzaGVldEJhc2VVUkwgfQorICAgICwgY2hhcnNl
dCB7IGNoYXJzZXQgfQorICAgICwgbW9kZSB7IGRvY3VtZW50LmluUXVpcmtzTW9kZSgpID8gSFRN
TFF1aXJrc01vZGUgOiBIVE1MU3RhbmRhcmRNb2RlIH0KKyAgICAsIGlzSFRNTERvY3VtZW50IHsg
ZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSB9CisgICAgLCBoYXNEb2N1bWVudFNlY3VyaXR5T3Jp
Z2luIHsgc2hlZXRCYXNlVVJMLmlzTnVsbCgpIHx8IGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCku
Y2FuUmVxdWVzdChiYXNlVVJMKSB9CisgICAgLCB1c2VTeXN0ZW1BcHBlYXJhbmNlIHsgZG9jdW1l
bnQucGFnZSgpID8gZG9jdW1lbnQucGFnZSgpLT51c2VTeXN0ZW1BcHBlYXJhbmNlKCkgOiBmYWxz
ZSB9CisgICAgLCBhc3BlY3RSYXRpb0VuYWJsZWQgeyBkb2N1bWVudC5zZXR0aW5ncygpLmFzcGVj
dFJhdGlvRW5hYmxlZCgpIH0KKyAgICAsIGNvbG9yRmlsdGVyRW5hYmxlZCB7IGRvY3VtZW50LnNl
dHRpbmdzKCkuY29sb3JGaWx0ZXJFbmFibGVkKCkgfQorICAgICwgY29uc3RhbnRQcm9wZXJ0aWVz
RW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCgp
IH0KKyAgICAsIGRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCku
ZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkKCkgfQorICAgICwgZW5mb3JjZXNDU1NNSU1FVHlwZUlu
Tm9RdWlya3NNb2RlIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5lbmZvcmNlQ1NTTUlNRVR5cGVJbk5v
UXVpcmtzTW9kZSgpIH0KKyAgICAsIGluZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxl
ZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzSW5kaXZpZHVhbFRyYW5zZm9ybVByb3BlcnRpZXNF
bmFibGVkKCkgfQorI2lmIEVOQUJMRShPVkVSRkxPV19TQ1JPTExJTkdfVE9VQ0gpCisgICAgLCBs
ZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoRW5hYmxlZCB7IHNob3VsZEVuYWJsZUxlZ2FjeU92
ZXJmbG93U2Nyb2xsaW5nVG91Y2goZG9jdW1lbnQpIH0KICNlbmRpZgotICAgIHNwcmluZ1RpbWlu
Z0Z1bmN0aW9uRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkuc3ByaW5nVGltaW5nRnVuY3Rp
b25FbmFibGVkKCk7Ci0gICAgY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCA9IGRvY3VtZW50LnNl
dHRpbmdzKCkuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCgpOwotICAgIGNvbG9yRmlsdGVyRW5h
YmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkuY29sb3JGaWx0ZXJFbmFibGVkKCk7CisgICAgLCBv
dmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5vdmVyc2Nyb2xs
QmVoYXZpb3JFbmFibGVkKCkgfQorICAgICwgcmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQgeyBk
b2N1bWVudC5zZXR0aW5ncygpLmNzc1JlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkKCkgfQorICAg
ICwgc2Nyb2xsQmVoYXZpb3JFbmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5DU1NPTVZpZXdT
bW9vdGhTY3JvbGxpbmdFbmFibGVkKCkgfQorICAgICwgc3ByaW5nVGltaW5nRnVuY3Rpb25FbmFi
bGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQoKSB9
CisjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKKyAgICAsIHRleHRBdXRvc2l6aW5nRW5hYmxl
ZCB7IGRvY3VtZW50LnNldHRpbmdzKCkudGV4dEF1dG9zaXppbmdFbmFibGVkKCkgfQorI2VuZGlm
CisgICAgLCB1c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yIHsgZG9jdW1l
bnQuc2V0dGluZ3MoKS51c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yKCkg
fQogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgYXR0YWNobWVudEVuYWJsZWQg
PSBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVt
ZW50RW5hYmxlZCgpOworICAgICwgYXR0YWNobWVudEVuYWJsZWQgeyBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpIH0KICNl
bmRpZgotICAgIGRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCku
ZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkKCk7Ci0gICAgc2Nyb2xsQmVoYXZpb3JFbmFibGVkID0g
ZG9jdW1lbnQuc2V0dGluZ3MoKS5DU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkKCk7Ci0g
ICAgb3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZCA9IGRvY3VtZW50LnNldHRpbmdzKCkub3ZlcnNj
cm9sbEJlaGF2aW9yRW5hYmxlZCgpOwotICAgIHVzZVN5c3RlbUFwcGVhcmFuY2UgPSBkb2N1bWVu
dC5wYWdlKCkgPyBkb2N1bWVudC5wYWdlKCktPnVzZVN5c3RlbUFwcGVhcmFuY2UoKSA6IGZhbHNl
OwotICAgIGluZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZCA9IGRvY3VtZW50LnNl
dHRpbmdzKCkuY3NzSW5kaXZpZHVhbFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkKCk7Ci0gICAg
YXNwZWN0UmF0aW9FbmFibGVkID0gZG9jdW1lbnQuc2V0dGluZ3MoKS5hc3BlY3RSYXRpb0VuYWJs
ZWQoKTsKK3sKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGEs
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGIpCkBAIC04NywyOCArOTUsMzIgQEAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIAogICAgIHJldHVybiBhLmJhc2VVUkwgPT0g
Yi5iYXNlVVJMCiAgICAgICAgICYmIGEuY2hhcnNldCA9PSBiLmNoYXJzZXQKICAgICAgICAgJiYg
YS5tb2RlID09IGIubW9kZQorICAgICAgICAmJiBhLmVuY2xvc2luZ1J1bGVUeXBlID09IGIuZW5j
bG9zaW5nUnVsZVR5cGUKICAgICAgICAgJiYgYS5pc0hUTUxEb2N1bWVudCA9PSBiLmlzSFRNTERv
Y3VtZW50Ci0jaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKLSAgICAgICAgJiYgYS50ZXh0QXV0
b3NpemluZ0VuYWJsZWQgPT0gYi50ZXh0QXV0b3NpemluZ0VuYWJsZWQKLSNlbmRpZgorICAgICAg
ICAmJiBhLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPT0gYi5oYXNEb2N1bWVudFNlY3VyaXR5
T3JpZ2luCisgICAgICAgICYmIGEuaXNDb250ZW50T3BhcXVlID09IGIuaXNDb250ZW50T3BhcXVl
CisgICAgICAgICYmIGEudXNlU3lzdGVtQXBwZWFyYW5jZSA9PSBiLnVzZVN5c3RlbUFwcGVhcmFu
Y2UKKyAgICAgICAgJiYgYS5hc3BlY3RSYXRpb0VuYWJsZWQgPT0gYi5hc3BlY3RSYXRpb0VuYWJs
ZWQKKyAgICAgICAgJiYgYS5jb2xvckZpbHRlckVuYWJsZWQgPT0gYi5jb2xvckZpbHRlckVuYWJs
ZWQKKyAgICAgICAgJiYgYS5jb25zdGFudFByb3BlcnRpZXNFbmFibGVkID09IGIuY29uc3RhbnRQ
cm9wZXJ0aWVzRW5hYmxlZAorICAgICAgICAmJiBhLmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCA9
PSBiLmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZAorICAgICAgICAmJiBhLmVuZm9yY2VzQ1NTTUlN
RVR5cGVJbk5vUXVpcmtzTW9kZSA9PSBiLmVuZm9yY2VzQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9k
ZQorICAgICAgICAmJiBhLmluZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZCA9PSBi
LmluZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZAogI2lmIEVOQUJMRShPVkVSRkxP
V19TQ1JPTExJTkdfVE9VQ0gpCiAgICAgICAgICYmIGEubGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdU
b3VjaEVuYWJsZWQgPT0gYi5sZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoRW5hYmxlZAogI2Vu
ZGlmCi0gICAgICAgICYmIGEuZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlID09IGIu
ZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NNb2RlCi0gICAgICAgICYmIGEudXNlTGVnYWN5
QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9PSBiLnVzZUxlZ2FjeUJhY2tncm91bmRT
aXplU2hvcnRoYW5kQmVoYXZpb3IKKyAgICAgICAgJiYgYS5vdmVyc2Nyb2xsQmVoYXZpb3JFbmFi
bGVkID09IGIub3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZAorICAgICAgICAmJiBhLnJlbGF0aXZl
Q29sb3JTeW50YXhFbmFibGVkID09IGIucmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQKKyAgICAg
ICAgJiYgYS5zY3JvbGxCZWhhdmlvckVuYWJsZWQgPT0gYi5zY3JvbGxCZWhhdmlvckVuYWJsZWQK
ICAgICAgICAgJiYgYS5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQgPT0gYi5zcHJpbmdUaW1p
bmdGdW5jdGlvbkVuYWJsZWQKLSAgICAgICAgJiYgYS5jb25zdGFudFByb3BlcnRpZXNFbmFibGVk
ID09IGIuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZAotICAgICAgICAmJiBhLmNvbG9yRmlsdGVy
RW5hYmxlZCA9PSBiLmNvbG9yRmlsdGVyRW5hYmxlZAorI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJ
TkcpCisgICAgICAgICYmIGEudGV4dEF1dG9zaXppbmdFbmFibGVkID09IGIudGV4dEF1dG9zaXpp
bmdFbmFibGVkCisjZW5kaWYKKyAgICAgICAgJiYgYS51c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNo
b3J0aGFuZEJlaGF2aW9yID09IGIudXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhh
dmlvcgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgICAgICYmIGEuYXR0YWNo
bWVudEVuYWJsZWQgPT0gYi5hdHRhY2htZW50RW5hYmxlZAogI2VuZGlmCi0gICAgICAgICYmIGEu
ZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkID09IGIuZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkCi0g
ICAgICAgICYmIGEuc2Nyb2xsQmVoYXZpb3JFbmFibGVkID09IGIuc2Nyb2xsQmVoYXZpb3JFbmFi
bGVkCi0gICAgICAgICYmIGEuaW5kaXZpZHVhbFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkID09
IGIuaW5kaXZpZHVhbFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkCi0gICAgICAgICYmIGEuaGFz
RG9jdW1lbnRTZWN1cml0eU9yaWdpbiA9PSBiLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4KLSAg
ICAgICAgJiYgYS51c2VTeXN0ZW1BcHBlYXJhbmNlID09IGIudXNlU3lzdGVtQXBwZWFyYW5jZQot
ICAgICAgICAmJiBhLmFzcGVjdFJhdGlvRW5hYmxlZCA9PSBiLmFzcGVjdFJhdGlvRW5hYmxlZAot
ICAgICAgICAmJiBhLm92ZXJzY3JvbGxCZWhhdmlvckVuYWJsZWQgPT0gYi5vdmVyc2Nyb2xsQmVo
YXZpb3JFbmFibGVkOworICAgIDsKIH0KIAogVVJMIENTU1BhcnNlckNvbnRleHQ6OmNvbXBsZXRl
VVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgJKHJldmlzaW9uIDI3MjgzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDEsNyArNDEsNiBAQCBjbGFzcyBEb2N1bWVudDsKIHN0cnVjdCBDU1NQYXJzZXJDb250ZXh0IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLQogICAgIENTU1BhcnNlckNv
bnRleHQoQ1NTUGFyc2VyTW9kZSwgY29uc3QgVVJMJiBiYXNlVVJMID0gVVJMKCkpOwogICAgIFdF
QkNPUkVfRVhQT1JUIENTU1BhcnNlckNvbnRleHQoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwm
IGJhc2VVUkwgPSBVUkwoKSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0ID0gZW1wdHlTdHJpbmcoKSk7
CiAKQEAgLTUwLDM2ICs0OSwzOCBAQCBwdWJsaWM6CiAgICAgQ1NTUGFyc2VyTW9kZSBtb2RlIHsg
SFRNTFN0YW5kYXJkTW9kZSB9OwogICAgIE9wdGlvbmFsPFN0eWxlUnVsZVR5cGU+IGVuY2xvc2lu
Z1J1bGVUeXBlOwogICAgIGJvb2wgaXNIVE1MRG9jdW1lbnQgeyBmYWxzZSB9OwotI2lmIEVOQUJM
RShURVhUX0FVVE9TSVpJTkcpCi0gICAgYm9vbCB0ZXh0QXV0b3NpemluZ0VuYWJsZWQgeyBmYWxz
ZSB9OwotI2VuZGlmCisKKyAgICAvLyBUaGlzIGlzIG9ubHkgbmVlZGVkIHRvIHN1cHBvcnQgZ2V0
TWF0Y2hlZENTU1J1bGVzLgorICAgIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiB7IGZh
bHNlIH07CisKKyAgICBib29sIGlzQ29udGVudE9wYXF1ZSB7IGZhbHNlIH07CisgICAgYm9vbCB1
c2VTeXN0ZW1BcHBlYXJhbmNlIHsgZmFsc2UgfTsKKworICAgIC8vIFNldHRpbmdzLgorICAgIGJv
b2wgYXNwZWN0UmF0aW9FbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIGNvbG9yRmlsdGVyRW5h
YmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBjb25zdGFudFByb3BlcnRpZXNFbmFibGVkIHsgZmFs
c2UgfTsKKyAgICBib29sIGRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07CisgICAg
Ym9vbCBlbmZvcmNlc0NTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGUgeyB0cnVlIH07CisgICAgYm9v
bCBpbmRpdmlkdWFsVHJhbnNmb3JtUHJvcGVydGllc0VuYWJsZWQgeyBmYWxzZSB9OwogI2lmIEVO
QUJMRShPVkVSRkxPV19TQ1JPTExJTkdfVE9VQ0gpCiAgICAgYm9vbCBsZWdhY3lPdmVyZmxvd1Nj
cm9sbGluZ1RvdWNoRW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKLSAgICBib29sIGVuZm9yY2Vz
Q1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZSB7IHRydWUgfTsKLSAgICBib29sIHVzZUxlZ2FjeUJh
Y2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IgeyBmYWxzZSB9OworICAgIGJvb2wgb3ZlcnNj
cm9sbEJlaGF2aW9yRW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCByZWxhdGl2ZUNvbG9yU3lu
dGF4RW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBzY3JvbGxCZWhhdmlvckVuYWJsZWQgeyBm
YWxzZSB9OwogICAgIGJvb2wgc3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkIHsgZmFsc2UgfTsK
LSAgICBib29sIGNvbnN0YW50UHJvcGVydGllc0VuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wg
Y29sb3JGaWx0ZXJFbmFibGVkIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5H
KQorICAgIGJvb2wgdGV4dEF1dG9zaXppbmdFbmFibGVkIHsgZmFsc2UgfTsKKyNlbmRpZgorICAg
IGJvb2wgdXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciB7IGZhbHNlIH07
CisKKyAgICAvLyBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLgogI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCiAgICAgYm9vbCBhdHRhY2htZW50RW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYK
LSAgICBib29sIGRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBz
Y3JvbGxCZWhhdmlvckVuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgaW5kaXZpZHVhbFRyYW5z
Zm9ybVByb3BlcnRpZXNFbmFibGVkIHsgZmFsc2UgfTsKLQotICAgIGJvb2wgb3ZlcnNjcm9sbEJl
aGF2aW9yRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgCi0gICAgLy8gVGhpcyBpcyBvbmx5IG5lZWRl
ZCB0byBzdXBwb3J0IGdldE1hdGNoZWRDU1NSdWxlcy4KLSAgICBib29sIGhhc0RvY3VtZW50U2Vj
dXJpdHlPcmlnaW4geyBmYWxzZSB9OwotICAgIAotICAgIGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5j
ZSB7IGZhbHNlIH07CiAKICAgICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNv
bnN0OwotCi0gICAgYm9vbCBpc0NvbnRlbnRPcGFxdWUgeyBmYWxzZSB9OwotCi0gICAgYm9vbCBh
c3BlY3RSYXRpb0VuYWJsZWQgeyBmYWxzZSB9OwogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENTU1BhcnNlckNvbnRleHQmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CkBAIC05MCw2ICs5
MSw4IEBAIFdFQkNPUkVfRVhQT1JUIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIHMKIHN0cnVjdCBD
U1NQYXJzZXJDb250ZXh0SGFzaCB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYga2V5KQogICAgIHsKKyAgICAgICAgLy8gRklYTUU6IENvbnZlcnQgdGhp
cyB0byB1c2UgV1RGOjpIYXNoZXIuCisKICAgICAgICAgdW5zaWduZWQgaGFzaCA9IDA7CiAgICAg
ICAgIGlmICgha2V5LmJhc2VVUkwuaXNOdWxsKCkpCiAgICAgICAgICAgICBoYXNoIF49IFdURjo6
VVJMSGFzaDo6aGFzaChrZXkuYmFzZVVSTCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAkocmV2aXNpb24gMjcyODM3KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MjYsMTQgKzE3MjYsMTQgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3Vt
ZVpJbmRleChDUwogICAgIHJldHVybiBjb25zdW1lSW50ZWdlcihyYW5nZSk7CiB9CiAKLXN0YXRp
YyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVTaGFkb3coQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgYm9vbCBpc0JveFNoYWRvd1Byb3BlcnR5
KQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVNoYWRvdyhDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgYm9vbCBpc0JveFNo
YWRvd1Byb3BlcnR5KQogewogICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5v
bmUpCiAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwogCiAgICAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gc2hhZG93VmFsdWVMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOwogICAgIGRvIHsKLSAgICAgICAgaWYgKFJlZlB0cjxDU1NTaGFkb3dWYWx1ZT4g
c2hhZG93VmFsdWUgPSBjb25zdW1lU2luZ2xlU2hhZG93KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBp
c0JveFNoYWRvd1Byb3BlcnR5LCBpc0JveFNoYWRvd1Byb3BlcnR5KSkKKyAgICAgICAgaWYgKFJl
ZlB0cjxDU1NTaGFkb3dWYWx1ZT4gc2hhZG93VmFsdWUgPSBjb25zdW1lU2luZ2xlU2hhZG93KHJh
bmdlLCBjb250ZXh0LCBpc0JveFNoYWRvd1Byb3BlcnR5LCBpc0JveFNoYWRvd1Byb3BlcnR5KSkK
ICAgICAgICAgICAgIHNoYWRvd1ZhbHVlTGlzdC0+YXBwZW5kKCpzaGFkb3dWYWx1ZSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTgxMywxOSArMTgxMywx
OSBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lVGV4dEVtcGhhCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVD
YXJldENvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1Bh
cnNlck1vZGUpCitzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQ2FyZXRD
b2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVBdXRvKQog
ICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKLSAgICByZXR1cm4gY29uc3VtZUNv
bG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKKyAgICByZXR1cm4gY29uc3VtZUNvbG9yKHJhbmdl
LCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZU91dGxpbmVD
b2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZU91dGxpbmVDb2xvcihDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsK
ICAgICAvLyBBbGxvdyB0aGUgc3BlY2lhbCBmb2N1cyBjb2xvciBldmVuIGluIEhUTUwgU3RhbmRh
cmQgcGFyc2luZyBtb2RlLgogICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZVdl
YmtpdEZvY3VzUmluZ0NvbG9yKQogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsK
LSAgICByZXR1cm4gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKKyAgICByZXR1
cm4gY29uc3VtZUNvbG9yKHJhbmdlLCBjb250ZXh0KTsKIH0KIAogc3RhdGljIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gY29uc3VtZUxpbmVXaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQpA
QCAtMjIyOCw3ICsyMjI4LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29u
c3VtZQogICAgIHJldHVybiBjb25zdW1lUG9zaXRpb25Mb25naGFuZDxDU1NWYWx1ZVRvcCwgQ1NT
VmFsdWVCb3R0b20+KHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKIH0KIAotc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZT4gY29uc3VtZVBhaW50U3Ryb2tlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lUGFpbnRTdHJva2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1Zh
bHVlTm9uZSkKICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CkBAIC0yMjM4LDcg
KzIyMzgsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lUGFpbnRTdHJvCiAgICAg
ICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICBw
YXJzZWRWYWx1ZSA9IGNvbnN1bWVJZGVudChyYW5nZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUNvbG9yKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKKyAg
ICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUNvbG9yKHJhbmdlLCBjb250ZXh0KTsKICAg
ICAgICAgaWYgKHBhcnNlZFZhbHVlKSB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAg
ICAgICB2YWx1ZXMtPmFwcGVuZCh1cmwucmVsZWFzZU5vbk51bGwoKSk7CkBAIC0yMjQ3LDcgKzIy
NDcsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lUGFpbnRTdHJvCiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIHVybDsKICAgICB9Ci0gICAgcmV0dXJuIGNvbnN1bWVDb2xvcihy
YW5nZSwgY3NzUGFyc2VyTW9kZSk7CisgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihyYW5nZSwgY29u
dGV4dCk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVHbHlwaE9yaWVudGF0
aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIG1vZGUsIENTU1By
b3BlcnR5SUQgcHJvcGVydHkpCkBAIC0zMjU4LDcgKzMyNTgsNyBAQCBzdGF0aWMgUmVmUHRyPENT
U1ZhbHVlPiBjb25zdW1lQmFja2dyb3VuCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tT
aXplOgogICAgICAgICByZXR1cm4gY29uc3VtZUJhY2tncm91bmRTaXplKHByb3BlcnR5LCByYW5n
ZSwgY29udGV4dC5tb2RlKTsKICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgot
ICAgICAgICByZXR1cm4gY29uc3VtZUNvbG9yKHJhbmdlLCBjb250ZXh0Lm1vZGUpOworICAgICAg
ICByZXR1cm4gY29uc3VtZUNvbG9yKHJhbmdlLCBjb250ZXh0KTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKICAgICB9OwpAQCAtNDI0MSw3ICs0MjQxLDcgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFycwogICAgIGNhc2UgQ1NTUHJvcGVydHlXaWRvd3M6CiAg
ICAgICAgIHJldHVybiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKG1fcmFuZ2UpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbkNvbG9yOgotICAgICAgICByZXR1cm4gY29uc3VtZUNv
bG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2xv
cihtX3JhbmdlLCBtX2NvbnRleHQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlv
blNraXA6CiAgICAgICAgIHJldHVybiBjb25zdW1lVGV4dERlY29yYXRpb25Ta2lwKG1fcmFuZ2Up
OwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGg6CkBAIC00MjYxLDEy
ICs0MjYxLDEyIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnMKICAg
ICBjYXNlIENTU1Byb3BlcnR5Rmxvb2RDb2xvcjoKICAgICBjYXNlIENTU1Byb3BlcnR5TGlnaHRp
bmdDb2xvcjoKICAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1uUnVsZUNvbG9yOgotICAgICAgICBy
ZXR1cm4gY29uc3VtZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKTsKKyAgICAgICAgcmV0
dXJuIGNvbnN1bWVDb2xvcihtX3JhbmdlLCBtX2NvbnRleHQpOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlDYXJldENvbG9yOgotICAgICAgICByZXR1cm4gY29uc3VtZUNhcmV0Q29sb3IobV9yYW5nZSwg
bV9jb250ZXh0Lm1vZGUpOworICAgICAgICByZXR1cm4gY29uc3VtZUNhcmV0Q29sb3IobV9yYW5n
ZSwgbV9jb250ZXh0KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3I6CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihtX3Jh
bmdlLCBtX2NvbnRleHQubW9kZSwgaW5RdWlya3NNb2RlKCkpOworICAgICAgICByZXR1cm4gY29u
c3VtZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dCwgaW5RdWlya3NNb2RlKCkpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJJbmxpbmVTdGFydFdpZHRoOgogICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJJbmxpbmVFbmRXaWR0aDoKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQmxvY2tTdGFy
dFdpZHRoOgpAQCAtNDI3OCw3ICs0Mjc4LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9wZXJ0
eVBhcnNlcjo6cGFycwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcjogewogICAg
ICAgICBib29sIGFsbG93UXVpcmt5Q29sb3JzID0gaW5RdWlya3NNb2RlKCkKICAgICAgICAgICAg
ICYmIChjdXJyZW50U2hvcnRoYW5kID09IENTU1Byb3BlcnR5SW52YWxpZCB8fCBjdXJyZW50U2hv
cnRoYW5kID09IENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IpOwotICAgICAgICByZXR1cm4gY29uc3Vt
ZUNvbG9yKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBhbGxvd1F1aXJreUNvbG9ycyk7CisgICAg
ICAgIHJldHVybiBjb25zdW1lQ29sb3IobV9yYW5nZSwgbV9jb250ZXh0LCBhbGxvd1F1aXJreUNv
bG9ycyk7CiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aDoKICAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoOgpAQCAtNDI5NCw3ICs0Mjk0LDcgQEAg
UmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFycwogICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0U2hhZG93OiAvLyBDU1MyIHByb3BlcnR5LCBkcm9wcGVkIGluIENTUzIuMSwgYmFj
ayBpbiBDU1MzLCBzbyB0cmVhdCBhcyBDU1MzCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNoYWRv
dzoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93OgotICAgICAgICByZXR1cm4g
Y29uc3VtZVNoYWRvdyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSwgcHJvcGVydHkgPT0gQ1NTUHJv
cGVydHlCb3hTaGFkb3cgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3cp
OworICAgICAgICByZXR1cm4gY29uc3VtZVNoYWRvdyhtX3JhbmdlLCBtX2NvbnRleHQsIHByb3Bl
cnR5ID09IENTU1Byb3BlcnR5Qm94U2hhZG93IHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Vi
a2l0Qm94U2hhZG93KTsKICAgICBjYXNlIENTU1Byb3BlcnR5RmlsdGVyOgogI2lmIEVOQUJMRShG
SUxURVJTX0xFVkVMXzIpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVy
OgpAQCAtNDM0Miw3ICs0MzQyLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNl
cjo6cGFycwogICAgICAgICByZXR1cm4gY29uc3VtZVJvdGF0ZShtX3JhbmdlLCBtX2NvbnRleHQu
bW9kZSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUZpbGw6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVN0
cm9rZToKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVQYWludFN0cm9rZShtX3JhbmdlLCBtX2NvbnRl
eHQubW9kZSk7CisgICAgICAgIHJldHVybiBjb25zdW1lUGFpbnRTdHJva2UobV9yYW5nZSwgbV9j
b250ZXh0KTsKICAgICBjYXNlIENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlHbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDoKICAgICAgICAg
cmV0dXJuIGNvbnN1bWVHbHlwaE9yaWVudGF0aW9uKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBw
cm9wZXJ0eSk7CkBAIC01MDkzLDcgKzUwOTMsNyBAQCBib29sIENTU1Byb3BlcnR5UGFyc2VyOjpj
b25zdW1lQm9yZGVyKFJlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCFjb2xvcikgewotICAgICAgICAgICAgY29sb3IgPSBjb25zdW1lQ29sb3IobV9y
YW5nZSwgbV9jb250ZXh0Lm1vZGUpOworICAgICAgICAgICAgY29sb3IgPSBjb25zdW1lQ29sb3Io
bV9yYW5nZSwgbV9jb250ZXh0KTsKICAgICAgICAgICAgIGlmIChjb2xvcikKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkocmV2aXNpb24gMjcy
ODM3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTAsMzQgKzY5MCwyOTIgQEAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lVXJsKENTUwogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZVZhbHVlKHVybC50b1N0cmluZygpLCBDU1NVbml0VHlwZTo6Q1NTX1VS
SSk7CiB9CiAKLXN0YXRpYyB1aW50OF90IGNsYW1wUkdCQ29tcG9uZW50KGRvdWJsZSB2YWx1ZSwg
Ym9vbCBpc1BlcmNlbnRhZ2UpCitzdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lT3B0aW9u
YWxBbHBoYShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKLSAgICBpZiAoaXNQZXJjZW50
YWdlKQorICAgIGlmICghY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpCisg
ICAgICAgIHJldHVybiAxLjA7CisKKyAgICBpZiAoYXV0byBhbHBoYVBhcmFtZXRlciA9IGNvbnN1
bWVOdW1iZXJPclBlcmNlbnREaXZpZGVkQnkxMDBSYXcocmFuZ2UpKQorICAgICAgICByZXR1cm4g
Y2xhbXBUbzxkb3VibGU+KCphbHBoYVBhcmFtZXRlciwgMC4wLCAxLjApOworCisgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKK30KKwordGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRz
PiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lT3B0
aW9uYWxBbHBoYU9ySWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYg
KGF1dG8gYWxwaGEgPSBjb25zdW1lT3B0aW9uYWxBbHBoYShyYW5nZSkpCisgICAgICAgIHJldHVy
biB7ICphbHBoYSB9OworCisgICAgaWYgKGF1dG8gaWRlbnQgPSBjb25zdW1lSWRlbnRSYXc8YWxs
b3dlZElkZW50cy4uLj4ocmFuZ2UpKQorICAgICAgICByZXR1cm4geyAqaWRlbnQgfTsKKworICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3N0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbnN1
bWVIdWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQpCit7CisgICAgaWYgKGF1dG8gYW5nbGUgPSBjb25zdW1lQW5nbGVSYXcocmFuZ2Us
IGNvbnRleHQubW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0bGVzc1plcm9RdWlyazo6
Rm9yYmlkKSkKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlRGVncmVl
cyhhbmdsZS0+dHlwZSwgYW5nbGUtPnZhbHVlKTsKKworICAgIGlmIChhdXRvIG51bWJlciA9IGNv
bnN1bWVOdW1iZXJSYXcocmFuZ2UpKQorICAgICAgICByZXR1cm4gKm51bWJlcjsKKworICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3RlbXBsYXRlPENTU1ZhbHVlSUQuLi4gYWxsb3dlZElk
ZW50cz4gc3RhdGljIE9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlEPj4gY29uc3Vt
ZUh1ZU9ySWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNv
bnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKGF1dG8gaHVlID0gY29uc3VtZUh1ZShyYW5nZSwg
Y29udGV4dCkpCisgICAgICAgIHJldHVybiB7ICpodWUgfTsKKworICAgIGlmIChhdXRvIGlkZW50
ID0gY29uc3VtZUlkZW50UmF3PGFsbG93ZWRJZGVudHMuLi4+KHJhbmdlKSkKKyAgICAgICAgcmV0
dXJuIHsgKmlkZW50IH07CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitzdGF0aWMg
ZG91YmxlIG5vcm1hbGl6ZUh1ZUZyb20wVG8zNjAoZG91YmxlIGh1ZSkKK3sKKyAgICByZXR1cm4g
c3RkOjpmbW9kKHN0ZDo6Zm1vZChodWUsIDM2MC4wKSArIDM2MC4wLCAzNjAuMCkgLyAzNjAuMDsK
K30KKworc3RhdGljIGRvdWJsZSBub3JtYWxpemVIdWVGcm9tMFRvMShkb3VibGUgaHVlKQorewor
ICAgIHJldHVybiBub3JtYWxpemVIdWVGcm9tMFRvMzYwKGh1ZSkgLyAzNjAuMDsKK30KKwordGVt
cGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFu
dDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lTnVtYmVyT3JJZGVudChDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1lTnVtYmVyUmF3
KHJhbmdlKSkKKyAgICAgICAgcmV0dXJuIHsgKm51bWJlciB9OworCisgICAgaWYgKGF1dG8gaWRl
bnQgPSBjb25zdW1lSWRlbnRSYXc8YWxsb3dlZElkZW50cy4uLj4ocmFuZ2UpKQorICAgICAgICBy
ZXR1cm4geyAqaWRlbnQgfTsKKworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3RlbXBs
YXRlPENTU1ZhbHVlSUQuLi4gYWxsb3dlZElkZW50cz4gc3RhdGljIE9wdGlvbmFsPFZhcmlhbnQ8
ZG91YmxlLCBDU1NWYWx1ZUlEPj4gY29uc3VtZVBlcmNlbnRPcklkZW50KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChhdXRvIHBlcmNlbnQgPSBjb25zdW1lUGVyY2VudFJh
dyhyYW5nZSkpCisgICAgICAgIHJldHVybiB7ICpwZXJjZW50IH07CisKKyAgICBpZiAoYXV0byBp
ZGVudCA9IGNvbnN1bWVJZGVudFJhdzxhbGxvd2VkSWRlbnRzLi4uPihyYW5nZSkpCisgICAgICAg
IHJldHVybiB7ICppZGVudCB9OworCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordGVt
cGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFu
dDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lUGVyY2VudERpdmlkZWRCeTEwME9ySWRlbnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKGF1dG8gcGVyY2VudCA9IGNv
bnN1bWVQZXJjZW50UmF3KHJhbmdlKSkKKyAgICAgICAgcmV0dXJuIHsgY2xhbXBUbzxkb3VibGU+
KCpwZXJjZW50LCAwLjAsIDEwMC4wKSAvIDEwMC4wIH07CisKKyAgICBpZiAoYXV0byBpZGVudCA9
IGNvbnN1bWVJZGVudFJhdzxhbGxvd2VkSWRlbnRzLi4uPihyYW5nZSkpCisgICAgICAgIHJldHVy
biB7ICppZGVudCB9OworCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordGVtcGxhdGU8
Q1NTVmFsdWVJRCBDMSwgQ1NTVmFsdWVJRCBDMiwgQ1NTVmFsdWVJRCBDMywgQ1NTVmFsdWVJRCBB
bHBoYUNoYW5uZWwsIHR5cGVuYW1lIENvbG9yVHlwZT4gc3RhdGljIGRlY2x0eXBlKGF1dG8pIGV4
dHJhY3RDaGFubmVsVmFsdWUoQ1NTVmFsdWVJRCBjaGFubmVsLCBjb25zdCBDb2xvclR5cGUmIG9y
aWdpbkNvbG9yKQoreworICAgIGF1dG8gY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKG9y
aWdpbkNvbG9yKTsKKyAgICBzd2l0Y2ggKGNoYW5uZWwpIHsKKyAgICAgICAgY2FzZSBDMToKKyAg
ICAgICAgICAgIHJldHVybiBjb21wb25lbnRzWzBdOworICAgICAgICBjYXNlIEMyOgorICAgICAg
ICAgICAgcmV0dXJuIGNvbXBvbmVudHNbMV07CisgICAgICAgIGNhc2UgQzM6CisgICAgICAgICAg
ICByZXR1cm4gY29tcG9uZW50c1syXTsKKyAgICAgICAgY2FzZSBBbHBoYUNoYW5uZWw6CisgICAg
ICAgICAgICByZXR1cm4gY29tcG9uZW50c1szXTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gY29tcG9uZW50c1swXTsKKyAgICB9Cit9
CisKK3RlbXBsYXRlPENTU1ZhbHVlSUQgQzEsIENTU1ZhbHVlSUQgQzIsIENTU1ZhbHVlSUQgQzMs
IENTU1ZhbHVlSUQgQWxwaGFDaGFubmVsLCB0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIFZh
bHVlVHJhbnNmb3JtZXI+IHN0YXRpYyBkZWNsdHlwZShhdXRvKSByZXNvbHZlUmVsYXRpdmVDb2xv
ckNoYW5uZWwoY29uc3QgVmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+JiBwYXJzZWRDaGFubmVs
LCBjb25zdCBDb2xvclR5cGUmIG9yaWdpbkNvbG9yLCBWYWx1ZVRyYW5zZm9ybWVyJiYgdmFsdWVU
cmFuc2Zvcm1lcikKK3sKKyAgICByZXR1cm4gc3dpdGNoT24ocGFyc2VkQ2hhbm5lbCwKKyAgICAg
ICAgWyZdIChkb3VibGUgdmFsdWUpIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZVRyYW5zZm9y
bWVyKHZhbHVlKTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChDU1NWYWx1ZUlEIGNoYW5uZWwp
IHsKKyAgICAgICAgICAgIHJldHVybiBleHRyYWN0Q2hhbm5lbFZhbHVlPEMxLCBDMiwgQzMsIEFs
cGhhQ2hhbm5lbD4oY2hhbm5lbCwgb3JpZ2luQ29sb3IpOworICAgICAgICB9CisgICAgKTsKK30K
KwordGVtcGxhdGU8Q1NTVmFsdWVJRCBDMSwgQ1NTVmFsdWVJRCBDMiwgQ1NTVmFsdWVJRCBDMywg
Q1NTVmFsdWVJRCBBbHBoYUNoYW5uZWwsIHR5cGVuYW1lIENvbG9yVHlwZT4gc3RhdGljIGRlY2x0
eXBlKGF1dG8pIHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbChjb25zdCBWYXJpYW50PGRvdWJs
ZSwgQ1NTVmFsdWVJRD4mIHBhcnNlZENoYW5uZWwsIGNvbnN0IENvbG9yVHlwZSYgb3JpZ2luQ29s
b3IpCit7CisgICAgcmV0dXJuIHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDMSwgQzIsIEMz
LCBBbHBoYUNoYW5uZWw+KHBhcnNlZENoYW5uZWwsIG9yaWdpbkNvbG9yLCBbXShhdXRvIHZhbHVl
KSB7IHJldHVybiB2YWx1ZTsgfSk7Cit9CisKK2VudW0gY2xhc3MgUkdCQ29tcG9uZW50VHlwZSB7
CisgICAgTnVtYmVyLAorICAgIFBlcmNlbnRhZ2UKK307CisKK3N0YXRpYyB1aW50OF90IGNsYW1w
UkdCQ29tcG9uZW50KGRvdWJsZSB2YWx1ZSwgUkdCQ29tcG9uZW50VHlwZSBjb21wb25lbnRUeXBl
KQoreworICAgIGlmIChjb21wb25lbnRUeXBlID09IFJHQkNvbXBvbmVudFR5cGU6OlBlcmNlbnRh
Z2UpCiAgICAgICAgIHZhbHVlID0gdmFsdWUgLyAxMDAuMCAqIDI1NS4wOwogCiAgICAgcmV0dXJu
IGNvbnZlcnRQcmVzY2FsZWRTUkdCQUZsb2F0VG9TUkdCQUJ5dGUodmFsdWUpOwogfQogCi1zdGF0
aWMgQ29sb3IgcGFyc2VSR0JQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQor
c3RhdGljIENvbG9yIGNvbnN1bWVPcmlnaW5Db2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdz
LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIGF1dG8gdmFsdWUgPSBj
b25zdW1lQ29sb3IoYXJncywgY29udGV4dCk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIGlmICh2YWx1ZS0+aXNSR0JDb2xvcigpKQorICAgICAgICByZXR1cm4g
dmFsdWUtPmNvbG9yKCk7CisKKyAgICBBU1NFUlQodmFsdWUtPmlzVmFsdWVJRCgpKTsKKyAgICBh
dXRvIGtleXdvcmQgPSB2YWx1ZS0+dmFsdWVJRCgpOworCisgICAgLy8gRklYTUU6IFdlIGRvbid0
IGhhdmUgZW5vdWdoIGNvbnRleHQgaW4gdGhlIHBhcnNlciB0byByZXNvbHZpbmcgYSBzeXN0ZW0g
a2V5d29yZAorICAgIC8vIGNvcnJlY3RseS4gV2Ugc2hvdWxkIHBhY2thZ2UgdXAgdGhlIHJlbGF0
aXZlIGNvbG9yIHBhcmFtZXRlcnMgYW5kIHJlc29sdmUgdGhlCisgICAgLy8gd2hvbGUgdGhpbmcg
YXQgdGhlIGFwcHJvcHJpYXRlIHRpbWUgd2hlbiB0aGUgb3JpZ2luIGNvbG9yIGlzIGEgc3lzdGVt
IGtleXdvcmQuCisgICAgaWYgKFN0eWxlQ29sb3I6OmlzU3lzdGVtQ29sb3Ioa2V5d29yZCkpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5
d29yZChrZXl3b3JkLCB7IH0pOworfQorCitzdGF0aWMgQ29sb3IgcGFyc2VSZWxhdGl2ZVJHQlBh
cmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYgY29udGV4dCkKK3sKKyAgICBBU1NFUlQoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZy
b20pOworICAgIGNvbnN1bWVJZGVudFJhdyhhcmdzKTsKKworICAgIGF1dG8gb3JpZ2luQ29sb3Ig
PSBjb25zdW1lT3JpZ2luQ29sb3IoYXJncywgY29udGV4dCk7CisgICAgaWYgKCFvcmlnaW5Db2xv
ci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBzdHJ1Y3QgQ29tcG9uZW50
IHsKKyAgICAgICAgVmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+IHZhbHVlOworICAgICAgICBP
cHRpb25hbDxSR0JDb21wb25lbnRUeXBlPiB0eXBlOworICAgIH07CisKKyAgICAvLyBGSVhNRTog
VGhlIHNwZWMgaGFzIGV4YW1wbGVzIHVzaW5nIHRoZSBpZGVuZmllcnMgYXMgY29uc3RhbnRzIGlu
IGNhbGMgZXhwcmVzc2lvbnMuIEFuIGV4YW1wbGUgZnJvbQorICAgIC8vIHRoZSByZWxhdGl2ZSBI
U0wgc2VjdGlvbnM6CisgICAgLy8KKyAgICAvLyAgICAgaHNsKGZyb20gdmFyKC0tYWNjZW50KSBj
YWxjKGgrMTgwKSBzIGwpOworICAgIC8vCisgICAgLy8gRmlndXJlIG91dCBob3cgdG8gaW5qZWN0
IHRoZXNlIGluIHRvIHRoZSBjYWxjdWxhdGlvbiBlbnZpcm9ubWVudCBhbmQgYWxzbyBjb25zaWRl
ciB3aGF0IHRoaXMgbWVhbnMKKyAgICAvLyBmb3IgbGF0ZSByZXNvbHV0aW9uLgorCisgICAgYXV0
byBjb25zdW1lQ29tcG9uZW50ID0gW10oYXV0byYgYXJncywgT3B0aW9uYWw8UkdCQ29tcG9uZW50
VHlwZT4gY29tcG9uZW50VHlwZSkgLT4gT3B0aW9uYWw8Q29tcG9uZW50PiB7CisgICAgICAgIGlm
ICghY29tcG9uZW50VHlwZSkgeworICAgICAgICAgICAgaWYgKGF1dG8gbnVtYmVyID0gY29uc3Vt
ZU51bWJlclJhdyhhcmdzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29tcG9uZW50IHsgKm51
bWJlciwgUkdCQ29tcG9uZW50VHlwZTo6TnVtYmVyIH07CisgICAgICAgICAgICBpZiAoYXV0byBw
ZXJjZW50ID0gY29uc3VtZVBlcmNlbnRSYXcoYXJncykpCisgICAgICAgICAgICAgICAgcmV0dXJu
IENvbXBvbmVudCB7ICpwZXJjZW50LCBSR0JDb21wb25lbnRUeXBlOjpQZXJjZW50YWdlIH07Cisg
ICAgICAgICAgICBpZiAoYXV0byBjaGFubmVsID0gY29uc3VtZUlkZW50UmF3PENTU1ZhbHVlUiwg
Q1NTVmFsdWVHLCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KGFyZ3MpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBDb21wb25lbnQgeyAqY2hhbm5lbCwgV1RGOjpudWxsb3B0IH07CisgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
c3dpdGNoICgqY29tcG9uZW50VHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgUkdCQ29tcG9u
ZW50VHlwZTo6TnVtYmVyOiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIG51bWJlciA9
IGNvbnN1bWVOdW1iZXJSYXcoYXJncykpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Q29tcG9uZW50IHsgKm51bWJlciwgUkdCQ29tcG9uZW50VHlwZTo6TnVtYmVyIH07CisgICAgICAg
ICAgICAgICAgICAgIGlmIChhdXRvIGNoYW5uZWwgPSBjb25zdW1lSWRlbnRSYXc8Q1NTVmFsdWVS
LCBDU1NWYWx1ZUcsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oYXJncykpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gQ29tcG9uZW50IHsgKmNoYW5uZWwsIFJHQkNvbXBvbmVudFR5
cGU6Ok51bWJlciB9OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIFJHQkNvbXBvbmVudFR5cGU6
OlBlcmNlbnRhZ2U6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gcGVyY2VudCA9IGNv
bnN1bWVQZXJjZW50UmF3KGFyZ3MpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENv
bXBvbmVudCB7ICpwZXJjZW50LCBSR0JDb21wb25lbnRUeXBlOjpQZXJjZW50YWdlIH07CisgICAg
ICAgICAgICAgICAgICAgIGlmIChhdXRvIGNoYW5uZWwgPSBjb25zdW1lSWRlbnRSYXc8Q1NTVmFs
dWVSLCBDU1NWYWx1ZUcsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oYXJncykpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gQ29tcG9uZW50IHsgKmNoYW5uZWwsIFJHQkNvbXBvbmVu
dFR5cGU6OlBlcmNlbnRhZ2UgfTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
OworCisgICAgT3B0aW9uYWw8UkdCQ29tcG9uZW50VHlwZT4gY29tcG9uZW50VHlwZTsKKyAgICBz
dGQ6OmFycmF5PFZhcmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlEPiwgMz4gY29tcG9uZW50czsKKwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAzOyArK2kpIHsKKyAgICAgICAgYXV0byBjb21w
b25lbnQgPSBjb25zdW1lQ29tcG9uZW50KGFyZ3MsIGNvbXBvbmVudFR5cGUpOworICAgICAgICBp
ZiAoIWNvbXBvbmVudCkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGNvbXBvbmVu
dHNbaV0gPSBjb21wb25lbnQtPnZhbHVlOworICAgICAgICBjb21wb25lbnRUeXBlID0gY29tcG9u
ZW50LT50eXBlOworICAgIH0KKyAgICAKKyAgICBhdXRvIGFscGhhID0gY29uc3VtZU9wdGlvbmFs
QWxwaGFPcklkZW50PENTU1ZhbHVlUiwgQ1NTVmFsdWVHLCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxw
aGE+KGFyZ3MpOworICAgIGlmICghYWxwaGEpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBp
ZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIC8vIEFmdGVyIHBh
cnNpbmcsIGNvbnZlcnQgaWRlbnRpZmllcnMgdG8gdmFsdWVzIGZyb20gdGhlIG9yaWdpbiBjb2xv
ci4KKworICAgIC8vIEZJWE1FOiBEbyB3ZSB3YW50IHRvIGJlaW5nIGRvaW5nIHRoaXMgaW4gdWlu
dDhfdCB2YWx1ZXM/IE9yIHNob3VsZCB3ZSB1c2UgaGlnaGVyIHByZWNpc2lvbgorICAgIC8vIGFu
ZCBjbGFtcCBhdCB0aGUgZW5kLiBJdCB3b24ndCBtYWtlIGEgZGlmZmVyZW5jZSB1bnRpbCB3ZSBz
dXBwb3J0IGNhbGN1bGF0aW9ucyBvbiB0aGUgb3JpZ2lucworICAgIC8vIGNvbXBvbmVudHMuCisg
ICAgYXV0byBvcmlnaW5Db2xvckFzU1JHQiA9IG9yaWdpbkNvbG9yLnRvU1JHQkFMb3NzeTx1aW50
OF90PigpOworCisgICAgYXV0byByZXNvbHZlZENvbXBvbmVudFR5cGUgPSBjb21wb25lbnRUeXBl
LnZhbHVlT3IoUkdCQ29tcG9uZW50VHlwZTo6UGVyY2VudGFnZSk7CisKKyAgICB1aW50OF90IHJl
c29sdmVDb21wb25lbnRzWzNdOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAzOyArK2kp
IHsKKyAgICAgICAgcmVzb2x2ZUNvbXBvbmVudHNbaV0gPSByZXNvbHZlUmVsYXRpdmVDb2xvckNo
YW5uZWw8Q1NTVmFsdWVSLCBDU1NWYWx1ZUcsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oY29t
cG9uZW50c1tpXSwgb3JpZ2luQ29sb3JBc1NSR0IsIFtyZXNvbHZlZENvbXBvbmVudFR5cGVdKGF1
dG8gdmFsdWUpIHsKKyAgICAgICAgICAgIHJldHVybiBjbGFtcFJHQkNvbXBvbmVudCh2YWx1ZSwg
cmVzb2x2ZWRDb21wb25lbnRUeXBlKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYXV0byBy
ZXNvbHZlZEFscGhhID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlUiwgQ1NT
VmFsdWVHLCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KCphbHBoYSwgb3JpZ2luQ29sb3JBc1NS
R0IsIFtdKGF1dG8gdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRGbG9hdEFscGhhVG88
dWludDhfdD4odmFsdWUpOworICAgIH0pOworCisgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsg
cmVzb2x2ZUNvbXBvbmVudHNbMF0sIHJlc29sdmVDb21wb25lbnRzWzFdLCByZXNvbHZlQ29tcG9u
ZW50c1syXSwgcmVzb2x2ZWRBbHBoYSB9OworfQorCitlbnVtIGNsYXNzIFJHQkZ1bmN0aW9uTW9k
ZSB7IFJHQiwgUkdCQSB9OworCit0ZW1wbGF0ZTxSR0JGdW5jdGlvbk1vZGUgTW9kZT4gc3RhdGlj
IENvbG9yIHBhcnNlUkdCUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBBU1NFUlQocmFuZ2UucGVlaygp
LmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVJnYiB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgp
ID09IENTU1ZhbHVlUmdiYSk7CiAgICAgYXV0byBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdl
KTsKIAotICAgIGJvb2wgaXNQZXJjZW50YWdlID0gZmFsc2U7Ci0gICAgZG91YmxlIGNvbG9yUGFy
YW1ldGVyOwotICAgIGlmIChhdXRvIG51bWJlciA9IGNvbnN1bWVOdW1iZXJSYXcoYXJncykpCi0g
ICAgICAgIGNvbG9yUGFyYW1ldGVyID0gKm51bWJlcjsKLSAgICBlbHNlIGlmIChhdXRvIHBlcmNl
bnQgPSBjb25zdW1lUGVyY2VudFJhdyhhcmdzKSkgewotICAgICAgICBjb2xvclBhcmFtZXRlciA9
ICpwZXJjZW50OwotICAgICAgICBpc1BlcmNlbnRhZ2UgPSB0cnVlOwotICAgIH0gZWxzZQotICAg
ICAgICByZXR1cm4geyB9OworICAgIGlmIGNvbnN0ZXhwciAoTW9kZSA9PSBSR0JGdW5jdGlvbk1v
ZGU6OlJHQikgeworICAgICAgICBpZiAoY29udGV4dC5yZWxhdGl2ZUNvbG9yU3ludGF4RW5hYmxl
ZCAmJiBhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbSkKKyAgICAgICAgICAgIHJldHVy
biBwYXJzZVJlbGF0aXZlUkdCUGFyYW1ldGVycyhhcmdzLCBjb250ZXh0KTsKKyAgICB9CiAKICAg
ICBlbnVtIGNsYXNzIENvbG9yU3ludGF4IHsKICAgICAgICAgQ29tbWFzLAogICAgICAgICBXaGl0
ZXNwYWNlU2xhc2gsCiAgICAgfTsKIAorICAgIHN0cnVjdCBJbml0aWFsQ29tcG9uZW50IHsKKyAg
ICAgICAgZG91YmxlIHZhbHVlOworICAgICAgICBSR0JDb21wb25lbnRUeXBlIHR5cGU7CisgICAg
fTsKKworICAgIGF1dG8gY29uc3VtZUluaXRpYWxDb21wb25lbnQgPSBbXShhdXRvIGFyZ3MpIC0+
IE9wdGlvbmFsPEluaXRpYWxDb21wb25lbnQ+IHsKKyAgICAgICAgaWYgKGF1dG8gbnVtYmVyID0g
Y29uc3VtZU51bWJlclJhdyhhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiB7IHsgKm51bWJlciwg
UkdCQ29tcG9uZW50VHlwZTo6TnVtYmVyIH0gfTsKKyAgICAgICAgaWYgKGF1dG8gcGVyY2VudCA9
IGNvbnN1bWVQZXJjZW50UmF3KGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIHsgeyAqcGVyY2Vu
dCwgUkdCQ29tcG9uZW50VHlwZTo6UGVyY2VudGFnZSB9IH07CisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgfTsKKworICAgIGF1dG8gY29uc3VtZUNvbXBvbmVudCA9IFtdKGF1dG8g
YXJncywgYXV0byBjb21wb25lbnRUeXBlKSB7CisgICAgICAgIHN3aXRjaCAoY29tcG9uZW50VHlw
ZSkgeworICAgICAgICBjYXNlIFJHQkNvbXBvbmVudFR5cGU6OlBlcmNlbnRhZ2U6CisgICAgICAg
ICAgICByZXR1cm4gY29uc3VtZVBlcmNlbnRSYXcoYXJncyk7CisgICAgICAgIGNhc2UgUkdCQ29t
cG9uZW50VHlwZTo6TnVtYmVyOgorICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVOdW1iZXJSYXco
YXJncyk7CisgICAgICAgIH0KKyAgICB9OworCiAgICAgQ29sb3JTeW50YXggc3ludGF4ID0gQ29s
b3JTeW50YXg6OkNvbW1hczsKICAgICBhdXRvIGNvbnN1bWVTZXBhcmF0b3IgPSBbJl0gewogICAg
ICAgICBpZiAoc3ludGF4ID09IENvbG9yU3ludGF4OjpDb21tYXMpCkBAIC03MjYsMjYgKzk4NCwy
NSBAQCBzdGF0aWMgQ29sb3IgcGFyc2VSR0JQYXJhbWV0ZXJzKENTU1BhcnNlCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH07CiAKLSAgICB1aW50OF90IGNvbG9yQXJyYXlbM107Ci0gICAgY29s
b3JBcnJheVswXSA9IGNsYW1wUkdCQ29tcG9uZW50KGNvbG9yUGFyYW1ldGVyLCBpc1BlcmNlbnRh
Z2UpOwotICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzsgaSsrKSB7Ci0gICAgICAgIGlmIChpID09
IDEpCi0gICAgICAgICAgICBzeW50YXggPSBjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpID8gQ29sb3JTeW50YXg6OkNvbW1hcyA6IENvbG9yU3ludGF4OjpXaGl0ZXNwYWNlU2xh
c2g7Ci0gICAgICAgIGVsc2UgaWYgKCFjb25zdW1lU2VwYXJhdG9yKCkpCi0gICAgICAgICAgICBy
ZXR1cm4geyB9OworICAgIGF1dG8gaW5pdGlhbENvbXBvbmVudCA9IGNvbnN1bWVJbml0aWFsQ29t
cG9uZW50KGFyZ3MpOworICAgIGlmICghaW5pdGlhbENvbXBvbmVudCkKKyAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgICAgICBpZiAoaXNQZXJjZW50YWdlKSB7Ci0gICAgICAgICAgICBhdXRvIHBl
cmNlbnQgPSBjb25zdW1lUGVyY2VudFJhdyhhcmdzKTsKLSAgICAgICAgICAgIGlmICghcGVyY2Vu
dCkKLSAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAgICAgY29sb3JBcnJheVtp
XSA9IGNsYW1wUkdCQ29tcG9uZW50KCpwZXJjZW50LCB0cnVlKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIGF1dG8gbnVtYmVyID0gY29uc3VtZU51bWJlclJhdyhhcmdzKTsKLSAgICAg
ICAgICAgIGlmICghbnVtYmVyKQotICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAg
ICAgICBjb2xvckFycmF5W2ldID0gY2xhbXBSR0JDb21wb25lbnQoKm51bWJlciwgZmFsc2UpOwot
ICAgICAgICB9Ci0gICAgfQorICAgIGF1dG8gY29tcG9uZW50VHlwZSA9IGluaXRpYWxDb21wb25l
bnQtPnR5cGU7CisgICAgYXV0byByZWQgPSBpbml0aWFsQ29tcG9uZW50LT52YWx1ZTsKKworICAg
IHN5bnRheCA9IGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykgPyBDb2xvclN5
bnRheDo6Q29tbWFzIDogQ29sb3JTeW50YXg6OldoaXRlc3BhY2VTbGFzaDsKKyAgICAKKyAgICBh
dXRvIGdyZWVuID0gY29uc3VtZUNvbXBvbmVudChhcmdzLCBjb21wb25lbnRUeXBlKTsKKyAgICBp
ZiAoIWdyZWVuKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKCFjb25zdW1lU2VwYXJh
dG9yKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGJsdWUgPSBjb25zdW1lQ29t
cG9uZW50KGFyZ3MsIGNvbXBvbmVudFR5cGUpOworICAgIGlmICghYmx1ZSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKIAogICAgIC8vIEhpc3RvcmljYWxseSwgYWxwaGEgd2FzIG9ubHkgcGFyc2VkIGZv
ciByZ2JhKCksIGJ1dCBjc3MtY29sb3ItNCBzcGVjaWZpZXMgdGhhdCByZ2JhKCkgaXMgYSBzaW1w
bGUgYWxpYXMgZm9yIHJnYigpLgogICAgIGF1dG8gY29uc3VtZUFscGhhU2VwYXJhdG9yID0gWyZd
IHsKQEAgLTc1NSw0MCArMTAxMiw4NiBAQCBzdGF0aWMgQ29sb3IgcGFyc2VSR0JQYXJhbWV0ZXJz
KENTU1BhcnNlCiAgICAgICAgIHJldHVybiBjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNl
KGFyZ3MpOwogICAgIH07CiAKLSAgICB1aW50OF90IGFscGhhQ29tcG9uZW50ID0gMjU1OworICAg
IGRvdWJsZSBhbHBoYSA9IDE7CiAgICAgaWYgKGNvbnN1bWVBbHBoYVNlcGFyYXRvcigpKSB7Ci0g
ICAgICAgIGF1dG8gYWxwaGEgPSBjb25zdW1lTnVtYmVyT3JQZXJjZW50RGl2aWRlZEJ5MTAwUmF3
KGFyZ3MpOwotICAgICAgICBpZiAoIWFscGhhKQorICAgICAgICBhdXRvIGFscGhhQ29tcG9uZW50
ID0gY29uc3VtZU51bWJlck9yUGVyY2VudERpdmlkZWRCeTEwMFJhdyhhcmdzKTsKKyAgICAgICAg
aWYgKCFhbHBoYUNvbXBvbmVudCkKICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIGFs
cGhhQ29tcG9uZW50ID0gY29udmVydEZsb2F0QWxwaGFUbzx1aW50OF90PigqYWxwaGEpOworICAg
ICAgICBhbHBoYSA9ICphbHBoYUNvbXBvbmVudDsKICAgICB9CiAKICAgICBpZiAoIWFyZ3MuYXRF
bmQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7
IGNvbG9yQXJyYXlbMF0sIGNvbG9yQXJyYXlbMV0sIGNvbG9yQXJyYXlbMl0sIGFscGhhQ29tcG9u
ZW50IH07CisgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgY2xhbXBSR0JDb21wb25lbnQocmVk
LCBjb21wb25lbnRUeXBlKSwgY2xhbXBSR0JDb21wb25lbnQoKmdyZWVuLCBjb21wb25lbnRUeXBl
KSwgY2xhbXBSR0JDb21wb25lbnQoKmJsdWUsIGNvbXBvbmVudFR5cGUpLCBjb252ZXJ0RmxvYXRB
bHBoYVRvPHVpbnQ4X3Q+KGFscGhhKSB9OworfQorCitzdGF0aWMgQ29sb3IgcGFyc2VSZWxhdGl2
ZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgY29udGV4dCkKK3sKKyAgICBBU1NFUlQoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NW
YWx1ZUZyb20pOworICAgIGNvbnN1bWVJZGVudFJhdyhhcmdzKTsKKworICAgIGF1dG8gb3JpZ2lu
Q29sb3IgPSBjb25zdW1lT3JpZ2luQ29sb3IoYXJncywgY29udGV4dCk7CisgICAgaWYgKCFvcmln
aW5Db2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGh1ZSA9
IGNvbnN1bWVIdWVPcklkZW50PENTU1ZhbHVlSD4oYXJncywgY29udGV4dCk7CisgICAgaWYgKCFo
dWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIHNhdHVyYXRpb24gPSBjb25zdW1l
UGVyY2VudERpdmlkZWRCeTEwME9ySWRlbnQ8Q1NTVmFsdWVTLCBDU1NWYWx1ZUwsIENTU1ZhbHVl
QWxwaGE+KGFyZ3MpOworICAgIGlmICghc2F0dXJhdGlvbikKKyAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgIGF1dG8gbGlnaHRuZXNzID0gY29uc3VtZVBlcmNlbnREaXZpZGVkQnkxMDBPcklkZW50
PENTU1ZhbHVlUywgQ1NTVmFsdWVMLCBDU1NWYWx1ZUFscGhhPihhcmdzKTsKKyAgICBpZiAoIWxp
Z2h0bmVzcykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gYWxwaGEgPSBjb25zdW1l
T3B0aW9uYWxBbHBoYU9ySWRlbnQ8Q1NTVmFsdWVTLCBDU1NWYWx1ZUwsIENTU1ZhbHVlQWxwaGE+
KGFyZ3MpOworICAgIGlmICghYWxwaGEpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAo
IWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworCisgICAgLy8gQWZ0ZXIgcGFy
c2luZywgY29udmVydCBpZGVudGlmaWVycyB0byB2YWx1ZXMgZnJvbSB0aGUgb3JpZ2luIGNvbG9y
LgorCisgICAgYXV0byBvcmlnaW5Db2xvckFzSFNMID0gb3JpZ2luQ29sb3IudG9Db2xvclR5cGVM
b3NzeTxIU0xBPGZsb2F0Pj4oKTsKKworICAgIGF1dG8gcmVzb2x2ZWRIdWUgPSByZXNvbHZlUmVs
YXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVILCBDU1NWYWx1ZVMsIENTU1ZhbHVlTCwgQ1NTVmFs
dWVBbHBoYT4oKmh1ZSwgb3JpZ2luQ29sb3JBc0hTTCwgW10oYXV0byBodWUpIHsKKyAgICAgICAg
cmV0dXJuIG5vcm1hbGl6ZUh1ZUZyb20wVG8xKGh1ZSk7CisgICAgfSk7CisgICAgYXV0byByZXNv
bHZlZFNhdHVyYXRpb24gPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVILCBD
U1NWYWx1ZVMsIENTU1ZhbHVlTCwgQ1NTVmFsdWVBbHBoYT4oKnNhdHVyYXRpb24sIG9yaWdpbkNv
bG9yQXNIU0wpOworICAgIGF1dG8gcmVzb2x2ZWRMaWdodG5lc3MgPSByZXNvbHZlUmVsYXRpdmVD
b2xvckNoYW5uZWw8Q1NTVmFsdWVILCBDU1NWYWx1ZVMsIENTU1ZhbHVlTCwgQ1NTVmFsdWVBbHBo
YT4oKmxpZ2h0bmVzcywgb3JpZ2luQ29sb3JBc0hTTCk7CisgICAgYXV0byByZXNvbHZlZEFscGhh
ID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlSCwgQ1NTVmFsdWVTLCBDU1NW
YWx1ZUwsIENTU1ZhbHVlQWxwaGE+KCphbHBoYSwgb3JpZ2luQ29sb3JBc0hTTCk7CisKKyAgICBy
ZXR1cm4gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+PihIU0xBPGZsb2F0PiB7IHN0YXRpY19j
YXN0PGZsb2F0PihyZXNvbHZlZEh1ZSksIHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZFNhdHVy
YXRpb24pLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRMaWdodG5lc3MpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4ocmVzb2x2ZWRBbHBoYSkgfSk7CiB9CiAKLXN0YXRpYyBDb2xvciBwYXJzZUhTTFBh
cmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFy
c2VyTW9kZSkKK2VudW0gY2xhc3MgSFNMRnVuY3Rpb25Nb2RlIHsgSFNMLCBIU0xBIH07CisKK3Rl
bXBsYXRlPEhTTEZ1bmN0aW9uTW9kZSBNb2RlPiBzdGF0aWMgQ29sb3IgcGFyc2VIU0xQYXJhbWV0
ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBj
b250ZXh0KQogewogICAgIEFTU0VSVChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1Zh
bHVlSHNsIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVIc2xhKTsKICAg
ICBhdXRvIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOwogCi0gICAgZG91YmxlIGh1ZUFu
Z2xlSW5EZWdyZWVzOwotICAgIGlmIChhdXRvIGFuZ2xlID0gY29uc3VtZUFuZ2xlUmF3KGFyZ3Ms
IGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVpcms6
OkZvcmJpZCkpCi0gICAgICAgIGh1ZUFuZ2xlSW5EZWdyZWVzID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNvbXB1dGVEZWdyZWVzKGFuZ2xlLT50eXBlLCBhbmdsZS0+dmFsdWUpOwotICAgIGVsc2UgaWYg
KGF1dG8gbnVtYmVyID0gY29uc3VtZU51bWJlclJhdyhhcmdzKSkKLSAgICAgICAgaHVlQW5nbGVJ
bkRlZ3JlZXMgPSAqbnVtYmVyOwotICAgIGVsc2UKKyAgICBpZiBjb25zdGV4cHIgKE1vZGUgPT0g
SFNMRnVuY3Rpb25Nb2RlOjpIU0wpIHsKKyAgICAgICAgaWYgKGNvbnRleHQucmVsYXRpdmVDb2xv
clN5bnRheEVuYWJsZWQgJiYgYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pCisgICAg
ICAgICAgICByZXR1cm4gcGFyc2VSZWxhdGl2ZUhTTFBhcmFtZXRlcnMoYXJncywgY29udGV4dCk7
CisgICAgfQorCisgICAgYXV0byBodWUgPSBjb25zdW1lSHVlKGFyZ3MsIGNvbnRleHQpOworICAg
IGlmICghaHVlKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgZG91YmxlIGNvbG9yQXJyYXlb
M107Ci0gICAgY29sb3JBcnJheVswXSA9IGZtb2QoZm1vZChodWVBbmdsZUluRGVncmVlcywgMzYw
LjApICsgMzYwLjAsIDM2MC4wKSAvIDM2MC4wOworICAgIGF1dG8gbm9ybWFsaXplZEh1ZSA9IG5v
cm1hbGl6ZUh1ZUZyb20wVG8xKCpodWUpOwogCisgICAgZG91YmxlIGNvbG9yQXJyYXlbMl07CiAg
ICAgYm9vbCByZXF1aXJlc0NvbW1hcyA9IGZhbHNlOwotICAgIGZvciAoaW50IGkgPSAxOyBpIDwg
MzsgaSsrKSB7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKICAgICAgICAgaWYg
KGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpIHsKLSAgICAgICAgICAgIGlm
IChpICE9IDEgJiYgIXJlcXVpcmVzQ29tbWFzKQorICAgICAgICAgICAgaWYgKGkgIT0gMCAmJiAh
cmVxdWlyZXNDb21tYXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAg
IHJlcXVpcmVzQ29tbWFzID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIGlmIChyZXF1aXJlc0NvbW1h
cyB8fCBhcmdzLmF0RW5kKCkgfHwgKCZhcmdzLnBlZWsoKSAtIDEpLT50eXBlKCkgIT0gV2hpdGVz
cGFjZVRva2VuKQpAQCAtODE1LDE0MyArMTExOCwyNTIgQEAgc3RhdGljIENvbG9yIHBhcnNlSFNM
UGFyYW1ldGVycyhDU1NQYXJzZQogICAgIGlmICghYXJncy5hdEVuZCgpKQogICAgICAgICByZXR1
cm4geyB9OwogCi0gICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oSFNMQTxm
bG9hdD4geyBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3JBcnJheVswXSksIHN0YXRpY19jYXN0PGZs
b2F0Pihjb2xvckFycmF5WzFdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbG9yQXJyYXlbMl0pLCBz
dGF0aWNfY2FzdDxmbG9hdD4oYWxwaGEpIH0pOworICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JH
QkE8dWludDhfdD4+KEhTTEE8ZmxvYXQ+IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRI
dWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29sb3JBcnJheVswXSksIHN0YXRpY19jYXN0PGZsb2F0
Pihjb2xvckFycmF5WzFdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFscGhhKSB9KTsKIH0KIAotc3Rh
dGljIE9wdGlvbmFsPGZsb2F0PiBwYXJzZU9wdGlvbmFsQWxwaGEoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCitzdHJ1Y3QgV2hpdGVuZXNzQmxhY2tuZXNzIHsKKyAgICBkb3VibGUgd2hpdGVu
ZXNzOworICAgIGRvdWJsZSBibGFja25lc3M7Cit9Oworc3RhdGljIFdoaXRlbmVzc0JsYWNrbmVz
cyBub3JtYWxpemVXaGl0ZW5lc3NCbGFja25lc3MoZG91YmxlIHdoaXRlbmVzcywgZG91YmxlIGJs
YWNrbmVzcykKIHsKLSAgICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UocmFu
Z2UpKQotICAgICAgICByZXR1cm4gMS4wZjsKKyAgICBXaGl0ZW5lc3NCbGFja25lc3MgcmVzdWx0
OwogCi0gICAgaWYgKGF1dG8gYWxwaGFQYXJhbWV0ZXIgPSBjb25zdW1lTnVtYmVyT3JQZXJjZW50
RGl2aWRlZEJ5MTAwUmF3KHJhbmdlKSkKLSAgICAgICAgcmV0dXJuIGNsYW1wVG88ZmxvYXQ+KCph
bHBoYVBhcmFtZXRlciwgMC4wLCAxLjApOworICAgIC8vICAgVmFsdWVzIG91dHNpZGUgb2YgdGhl
c2UgcmFuZ2VzIGFyZSBub3QgaW52YWxpZCwgYnV0IGFyZSBjbGFtcGVkIHRvIHRoZQorICAgIC8v
ICAgcmFuZ2VzIGRlZmluZWQgaGVyZSBhdCBjb21wdXRlZC12YWx1ZSB0aW1lLgorICAgIHJlc3Vs
dC53aGl0ZW5lc3MgPSBjbGFtcFRvPGRvdWJsZT4od2hpdGVuZXNzLCAwLCAxMDApOworICAgIHJl
c3VsdC5ibGFja25lc3MgPSBjbGFtcFRvPGRvdWJsZT4oYmxhY2tuZXNzLCAwLCAxMDApOwogCi0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAvLyAgIElmIHRoZSBzdW0gb2YgdGhlc2UgdHdv
IGFyZ3VtZW50cyBpcyBncmVhdGVyIHRoYW4gMTAwJSwgdGhlbiBhdAorICAgIC8vICAgY29tcHV0
ZWQtdmFsdWUgdGltZSB0aGV5IGFyZSBmdXJ0aGVyIG5vcm1hbGl6ZWQgdG8gYWRkIHVwIHRvIDEw
MCUsIHdpdGgKKyAgICAvLyAgIHRoZSBzYW1lIHJlbGF0aXZlIHJhdGlvLgorICAgIGlmIChhdXRv
IHN1bSA9IHJlc3VsdC53aGl0ZW5lc3MgKyByZXN1bHQuYmxhY2tuZXNzOyBzdW0gPj0gMTAwKSB7
CisgICAgICAgIHJlc3VsdC53aGl0ZW5lc3MgKj0gMTAwLjAgLyBzdW07CisgICAgICAgIHJlc3Vs
dC5ibGFja25lc3MgKj0gMTAwLjAgLyBzdW07CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotc3RhdGljIENvbG9yIHBhcnNlSFdCUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQorc3RhdGljIENvbG9yIHBhcnNl
UmVsYXRpdmVIV0JQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENT
U1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGFyZ3MucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVGcm9tKTsKKyAgICBjb25zdW1lSWRlbnRSYXcoYXJncyk7CisKKyAgICBhdXRv
IG9yaWdpbkNvbG9yID0gY29uc3VtZU9yaWdpbkNvbG9yKGFyZ3MsIGNvbnRleHQpOworICAgIGlm
ICghb3JpZ2luQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0
byBodWUgPSBjb25zdW1lSHVlT3JJZGVudDxDU1NWYWx1ZUg+KGFyZ3MsIGNvbnRleHQpOworICAg
IGlmICghaHVlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byB3aGl0ZW5lc3MgPSBj
b25zdW1lUGVyY2VudERpdmlkZWRCeTEwME9ySWRlbnQ8Q1NTVmFsdWVXLCBDU1NWYWx1ZUIsIENT
U1ZhbHVlQWxwaGE+KGFyZ3MpOworICAgIGlmICghd2hpdGVuZXNzKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgYXV0byBibGFja25lc3MgPSBjb25zdW1lUGVyY2VudERpdmlkZWRCeTEwME9y
SWRlbnQ8Q1NTVmFsdWVXLCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KGFyZ3MpOworICAgIGlm
ICghYmxhY2tuZXNzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBhbHBoYSA9IGNv
bnN1bWVPcHRpb25hbEFscGhhT3JJZGVudDxDU1NWYWx1ZVcsIENTU1ZhbHVlQiwgQ1NTVmFsdWVB
bHBoYT4oYXJncyk7CisgICAgaWYgKCFhbHBoYSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4geyB9OworCisKKyAgICAvLyBBZnRl
ciBwYXJzaW5nLCBjb252ZXJ0IGlkZW50aWZpZXJzIHRvIHZhbHVlcyBmcm9tIHRoZSBvcmlnaW4g
Y29sb3IuCisKKyAgICBhdXRvIG9yaWdpbkNvbG9yQXNIV0IgPSBvcmlnaW5Db2xvci50b0NvbG9y
VHlwZUxvc3N5PEhXQkE8ZmxvYXQ+PigpOworCisgICAgYXV0byByZXNvbHZlZEh1ZSA9IHJlc29s
dmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUgsIENTU1ZhbHVlVywgQ1NTVmFsdWVCLCBD
U1NWYWx1ZUFscGhhPigqaHVlLCBvcmlnaW5Db2xvckFzSFdCLCBbXShhdXRvIGh1ZSkgeworICAg
ICAgICByZXR1cm4gbm9ybWFsaXplSHVlRnJvbTBUbzM2MChodWUpOworICAgIH0pOworICAgIGF1
dG8gcmVzb2x2ZWRXaGl0ZW5lc3MgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFs
dWVILCBDU1NWYWx1ZVcsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oKndoaXRlbmVzcywgb3Jp
Z2luQ29sb3JBc0hXQik7CisgICAgYXV0byByZXNvbHZlZEJsYWNrbmVzcyA9IHJlc29sdmVSZWxh
dGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUgsIENTU1ZhbHVlVywgQ1NTVmFsdWVCLCBDU1NWYWx1
ZUFscGhhPigqYmxhY2tuZXNzLCBvcmlnaW5Db2xvckFzSFdCKTsKKyAgICBhdXRvIHJlc29sdmVk
QWxwaGEgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVILCBDU1NWYWx1ZVcs
IENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oKmFscGhhLCBvcmlnaW5Db2xvckFzSFdCKTsKKwor
ICAgIGF1dG8gW25vcm1hbGl6ZWRXaGl0bmVzcywgbm9ybWFsaXplZEJsYWNrbmVzc10gPSBub3Jt
YWxpemVXaGl0ZW5lc3NCbGFja25lc3MocmVzb2x2ZWRXaGl0ZW5lc3MsIHJlc29sdmVkQmxhY2tu
ZXNzKTsKKworICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KEhTTEE8Zmxv
YXQ+IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkSHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KG5vcm1hbGl6ZWRXaGl0bmVzcyksIHN0YXRpY19jYXN0PGZsb2F0Pihub3JtYWxpemVkQmxhY2tu
ZXNzKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkQWxwaGEpIH0pOworfQorCitzdGF0aWMg
Q29sb3IgcGFyc2VIV0JQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25z
dCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogewogICAgIEFTU0VSVChyYW5nZS5wZWVrKCku
ZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlSHdiKTsKICAgICBhdXRvIGFyZ3MgPSBjb25zdW1lRnVu
Y3Rpb24ocmFuZ2UpOwogCi0gICAgZG91YmxlIGh1ZUFuZ2xlSW5EZWdyZWVzOwotICAgIGlmIChh
dXRvIGFuZ2xlID0gY29uc3VtZUFuZ2xlUmF3KGFyZ3MsIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNz
UXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVpcms6OkZvcmJpZCkpCi0gICAgICAgIGh1ZUFu
Z2xlSW5EZWdyZWVzID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVEZWdyZWVzKGFuZ2xlLT50
eXBlLCBhbmdsZS0+dmFsdWUpOwotICAgIGVsc2UgaWYgKGF1dG8gbnVtYmVyID0gY29uc3VtZU51
bWJlclJhdyhhcmdzKSkKLSAgICAgICAgaHVlQW5nbGVJbkRlZ3JlZXMgPSAqbnVtYmVyOwotICAg
IGVsc2UKKyAgICBpZiAoY29udGV4dC5yZWxhdGl2ZUNvbG9yU3ludGF4RW5hYmxlZCAmJiBhcmdz
LnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbSkKKyAgICAgICAgcmV0dXJuIHBhcnNlUmVsYXRp
dmVIV0JQYXJhbWV0ZXJzKGFyZ3MsIGNvbnRleHQpOworCisgICAgYXV0byBodWUgPSBjb25zdW1l
SHVlKGFyZ3MsIGNvbnRleHQpOworICAgIGlmICghaHVlKQogICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgYXV0byB3aGl0ZW5lc3MgPSBjb25zdW1lUGVyY2VudFJhdyhhcmdzLCBWYWx1ZVJhbmdl
QWxsKTsKKyAgICBhdXRvIHdoaXRlbmVzcyA9IGNvbnN1bWVQZXJjZW50UmF3KGFyZ3MpOwogICAg
IGlmICghd2hpdGVuZXNzKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBibGFja25l
c3MgPSBjb25zdW1lUGVyY2VudFJhdyhhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICBhdXRvIGJs
YWNrbmVzcyA9IGNvbnN1bWVQZXJjZW50UmF3KGFyZ3MpOwogICAgIGlmICghYmxhY2tuZXNzKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBhbHBoYSA9IHBhcnNlT3B0aW9uYWxBbHBo
YShhcmdzKTsKKyAgICBhdXRvIGFscGhhID0gY29uc3VtZU9wdGlvbmFsQWxwaGEoYXJncyk7CiAg
ICAgaWYgKCFhbHBoYSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGlmICghYXJncy5hdEVu
ZCgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgLy8gTm9ybWFsaXplIGh1ZS4KKyAgICBh
dXRvIG5vcm1hbGl6ZWRIdWUgPSBub3JtYWxpemVIdWVGcm9tMFRvMzYwKCpodWUpOworICAgIGF1
dG8gW25vcm1hbGl6ZWRXaGl0bmVzcywgbm9ybWFsaXplZEJsYWNrbmVzc10gPSBub3JtYWxpemVX
aGl0ZW5lc3NCbGFja25lc3MoKndoaXRlbmVzcywgKmJsYWNrbmVzcyk7CiAKLSAgICBodWVBbmds
ZUluRGVncmVlcyA9IHN0ZDo6Zm1vZChodWVBbmdsZUluRGVncmVlcywgMzYwLjApOwotICAgIGlm
IChodWVBbmdsZUluRGVncmVlcyA8IDAuMCkKLSAgICAgICAgaHVlQW5nbGVJbkRlZ3JlZXMgKz0g
MzYwLjA7Ci0gICAgCi0gICAgLy8gQ29udmVydCBhbmdsZSB0byBub3JtYWxpemVkIGZvcm0gZnJv
bSAwIC0gMS4KLSAgICBhdXRvIG5vcm1hbGl6ZWRIdWUgPSBodWVBbmdsZUluRGVncmVlcyAvIDM2
MC4wOworICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KEhXQkE8ZmxvYXQ+
IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRIdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4o
bm9ybWFsaXplZFdoaXRuZXNzKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRCbGFja25l
c3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4oKmFscGhhKSB9KTsKK30KIAotICAgIC8vIE5vcm1hbGl6
ZSB3aGl0ZW5lc3MvYmxhY2tuZXNzLgorc3RhdGljIENvbG9yIHBhcnNlUmVsYXRpdmVMYWJQYXJh
bWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQpCit7CisgICAgQVNTRVJUKGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVGcm9t
KTsKKyAgICBjb25zdW1lSWRlbnRSYXcoYXJncyk7CiAKLSAgICAvLyAgIFZhbHVlcyBvdXRzaWRl
IG9mIHRoZXNlIHJhbmdlcyBhcmUgbm90IGludmFsaWQsIGJ1dCBhcmUgY2xhbXBlZCB0byB0aGUK
LSAgICAvLyAgIHJhbmdlcyBkZWZpbmVkIGhlcmUgYXQgY29tcHV0ZWQtdmFsdWUgdGltZS4KLSAg
ICBhdXRvIG5vbWFsaXplZFdoaXRlbmVzcyA9IGNsYW1wVG88ZG91YmxlPigqd2hpdGVuZXNzLCAw
LCAxMDApOwotICAgIGF1dG8gbm9tYWxpemVkQmxhY2tuZXNzID0gY2xhbXBUbzxkb3VibGU+KCpi
bGFja25lc3MsIDAsIDEwMCk7CisgICAgYXV0byBvcmlnaW5Db2xvciA9IGNvbnN1bWVPcmlnaW5D
b2xvcihhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAoIW9yaWdpbkNvbG9yLmlzVmFsaWQoKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKIAotICAgIC8vICAgSWYgdGhlIHN1bSBvZiB0aGVzZSB0d28gYXJn
dW1lbnRzIGlzIGdyZWF0ZXIgdGhhbiAxMDAlLCB0aGVuIGF0Ci0gICAgLy8gICBjb21wdXRlZC12
YWx1ZSB0aW1lIHRoZXkgYXJlIGZ1cnRoZXIgbm9ybWFsaXplZCB0byBhZGQgdXAgdG8gMTAwJSwg
d2l0aAotICAgIC8vICAgdGhlIHNhbWUgcmVsYXRpdmUgcmF0aW8uCi0gICAgaWYgKGF1dG8gc3Vt
ID0gbm9tYWxpemVkV2hpdGVuZXNzICsgbm9tYWxpemVkQmxhY2tuZXNzOyBzdW0gPj0gMTAwKSB7
Ci0gICAgICAgIG5vbWFsaXplZFdoaXRlbmVzcyAqPSAxMDAuMCAvIHN1bTsKLSAgICAgICAgbm9t
YWxpemVkQmxhY2tuZXNzICo9IDEwMC4wIC8gc3VtOwotICAgIH0KKyAgICBhdXRvIGxpZ2h0bmVz
cyA9IGNvbnN1bWVQZXJjZW50T3JJZGVudDxDU1NWYWx1ZUwsIENTU1ZhbHVlQWxwaGE+KGFyZ3Mp
OworICAgIGlmICghbGlnaHRuZXNzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBh
VmFsdWUgPSBjb25zdW1lTnVtYmVyT3JJZGVudDxDU1NWYWx1ZUEsIENTU1ZhbHVlQj4oYXJncyk7
CisgICAgaWYgKCFhVmFsdWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGJWYWx1
ZSA9IGNvbnN1bWVOdW1iZXJPcklkZW50PENTU1ZhbHVlQSwgQ1NTVmFsdWVCPihhcmdzKTsKKyAg
ICBpZiAoIWJWYWx1ZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gYWxwaGEgPSBj
b25zdW1lT3B0aW9uYWxBbHBoYU9ySWRlbnQ8Q1NTVmFsdWVMLCBDU1NWYWx1ZUFscGhhPihhcmdz
KTsKKyAgICBpZiAoIWFscGhhKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKCFhcmdz
LmF0RW5kKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIG9yaWdpbkNvbG9yQXNM
YWIgPSBvcmlnaW5Db2xvci50b0NvbG9yVHlwZUxvc3N5PExhYjxmbG9hdD4+KCk7CiAKLSAgICAv
LyBDb252ZXJ0IHRvIG5vcm1hbGl6ZWQgZm9ybSBmcm9tIDAgLSAxLgotICAgIG5vbWFsaXplZFdo
aXRlbmVzcyAvPSAxMDAuMDsKLSAgICBub21hbGl6ZWRCbGFja25lc3MgLz0gMTAwLjA7CisgICAg
YXV0byByZXNvbHZlZExpZ2h0bmVzcyA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NW
YWx1ZUwsIENTU1ZhbHVlQSwgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPigqbGlnaHRuZXNzLCBv
cmlnaW5Db2xvckFzTGFiKTsKKyAgICBhdXRvIHJlc29sdmVkQVZhbHVlID0gcmVzb2x2ZVJlbGF0
aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlTCwgQ1NTVmFsdWVBLCBDU1NWYWx1ZUIsIENTU1ZhbHVl
QWxwaGE+KCphVmFsdWUsIG9yaWdpbkNvbG9yQXNMYWIpOworICAgIGF1dG8gcmVzb2x2ZWRCVmFs
dWUgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVMLCBDU1NWYWx1ZUEsIENT
U1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oKmJWYWx1ZSwgb3JpZ2luQ29sb3JBc0xhYik7CisgICAg
YXV0byByZXNvbHZlZEFscGhhID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVl
TCwgQ1NTVmFsdWVBLCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KCphbHBoYSwgb3JpZ2luQ29s
b3JBc0xhYik7CiAKLSAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+PihIV0JB
PGZsb2F0PiB7IHN0YXRpY19jYXN0PGZsb2F0Pihub3JtYWxpemVkSHVlKSwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KG5vbWFsaXplZFdoaXRlbmVzcyksIHN0YXRpY19jYXN0PGZsb2F0Pihub21hbGl6ZWRC
bGFja25lc3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4oKmFscGhhKSB9KTsKKyAgICByZXR1cm4gTGFi
PGZsb2F0PiB7IHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZExpZ2h0bmVzcyksIHN0YXRpY19j
YXN0PGZsb2F0PihyZXNvbHZlZEFWYWx1ZSksIHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZEJW
YWx1ZSksIHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZEFscGhhKSB9OwogfQogCi1zdGF0aWMg
Q29sb3IgcGFyc2VMYWJQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorc3Rh
dGljIENvbG9yIHBhcnNlTGFiUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBBU1NFUlQocmFuZ2UucGVl
aygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUxhYik7CiAgICAgYXV0byBhcmdzID0gY29uc3Vt
ZUZ1bmN0aW9uKHJhbmdlKTsKIAotICAgIGF1dG8gbGlnaHRuZXNzID0gY29uc3VtZVBlcmNlbnRS
YXcoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgaWYgKGNvbnRleHQucmVsYXRpdmVDb2xvclN5
bnRheEVuYWJsZWQgJiYgYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pCisgICAgICAg
IHJldHVybiBwYXJzZVJlbGF0aXZlTGFiUGFyYW1ldGVycyhhcmdzLCBjb250ZXh0KTsKKworICAg
IGF1dG8gbGlnaHRuZXNzID0gY29uc3VtZVBlcmNlbnRSYXcoYXJncyk7CiAgICAgaWYgKCFsaWdo
dG5lc3MpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGFWYWx1ZSA9IGNvbnN1bWVO
dW1iZXJSYXcoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgYXV0byBhVmFsdWUgPSBjb25zdW1l
TnVtYmVyUmF3KGFyZ3MpOwogICAgIGlmICghYVZhbHVlKQogICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgYXV0byBiVmFsdWUgPSBjb25zdW1lTnVtYmVyUmF3KGFyZ3MsIFZhbHVlUmFuZ2VBbGwp
OworICAgIGF1dG8gYlZhbHVlID0gY29uc3VtZU51bWJlclJhdyhhcmdzKTsKICAgICBpZiAoIWJW
YWx1ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gYWxwaGEgPSBwYXJzZU9wdGlv
bmFsQWxwaGEoYXJncyk7CisgICAgYXV0byBhbHBoYSA9IGNvbnN1bWVPcHRpb25hbEFscGhhKGFy
Z3MpOwogICAgIGlmICghYWxwaGEpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAoIWFy
Z3MuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBMYWI8ZmxvYXQ+
IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KCpsaWdodG5lc3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4oKmFW
YWx1ZSksIHN0YXRpY19jYXN0PGZsb2F0PigqYlZhbHVlKSwgKmFscGhhIH07CisgICAgcmV0dXJu
IExhYjxmbG9hdD4geyBzdGF0aWNfY2FzdDxmbG9hdD4oKmxpZ2h0bmVzcyksIHN0YXRpY19jYXN0
PGZsb2F0PigqYVZhbHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KCpiVmFsdWUpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oKmFscGhhKSB9OwogfQogCi1zdGF0aWMgQ29sb3IgcGFyc2VMQ0hQYXJhbWV0ZXJz
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUp
CitzdGF0aWMgQ29sb3IgcGFyc2VSZWxhdGl2ZUxDSFBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBBU1NF
UlQoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pOworICAgIGNvbnN1bWVJZGVudFJh
dyhhcmdzKTsKKworICAgIGF1dG8gb3JpZ2luQ29sb3IgPSBjb25zdW1lT3JpZ2luQ29sb3IoYXJn
cywgY29udGV4dCk7CisgICAgaWYgKCFvcmlnaW5Db2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBhdXRvIGxpZ2h0bmVzcyA9IGNvbnN1bWVQZXJjZW50T3JJZGVudDxD
U1NWYWx1ZUwsIENTU1ZhbHVlQWxwaGE+KGFyZ3MpOworICAgIGlmICghbGlnaHRuZXNzKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBjaHJvbWEgPSBjb25zdW1lTnVtYmVyT3JJZGVu
dDxDU1NWYWx1ZUMsIENTU1ZhbHVlSD4oYXJncyk7CisgICAgaWYgKCFjaHJvbWEpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICBhdXRvIGh1ZSA9IGNvbnN1bWVIdWVPcklkZW50PENTU1ZhbHVl
QywgQ1NTVmFsdWVIPihhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAoIWh1ZSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIGF1dG8gYWxwaGEgPSBjb25zdW1lT3B0aW9uYWxBbHBoYU9ySWRlbnQ8
Q1NTVmFsdWVMLCBDU1NWYWx1ZUFscGhhPihhcmdzKTsKKyAgICBpZiAoIWFscGhhKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgaWYgKCFhcmdzLmF0RW5kKCkpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICBhdXRvIG9yaWdpbkNvbG9yQXNMQ0ggPSBvcmlnaW5Db2xvci50b0NvbG9yVHlw
ZUxvc3N5PExDSEE8ZmxvYXQ+PigpOworCisgICAgYXV0byByZXNvbHZlZExpZ2h0bmVzcyA9IHJl
c29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUwsIENTU1ZhbHVlQywgQ1NTVmFsdWVI
LCBDU1NWYWx1ZUFscGhhPigqbGlnaHRuZXNzLCBvcmlnaW5Db2xvckFzTENIKTsKKyAgICBhdXRv
IHJlc29sdmVkQ2hyb21hID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlTCwg
Q1NTVmFsdWVDLCBDU1NWYWx1ZUgsIENTU1ZhbHVlQWxwaGE+KCpjaHJvbWEsIG9yaWdpbkNvbG9y
QXNMQ0gpOworICAgIGF1dG8gcmVzb2x2ZWRIdWUgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5u
ZWw8Q1NTVmFsdWVMLCBDU1NWYWx1ZUMsIENTU1ZhbHVlSCwgQ1NTVmFsdWVBbHBoYT4oKmh1ZSwg
b3JpZ2luQ29sb3JBc0xDSCwgW10oYXV0byBodWUpIHsKKyAgICAgICAgcmV0dXJuIG5vcm1hbGl6
ZUh1ZUZyb20wVG8zNjAoaHVlKTsKKyAgICB9KTsKKyAgICBhdXRvIHJlc29sdmVkQWxwaGEgPSBy
ZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVMLCBDU1NWYWx1ZUMsIENTU1ZhbHVl
SCwgQ1NTVmFsdWVBbHBoYT4oKmFscGhhLCBvcmlnaW5Db2xvckFzTENIKTsKKworICAgIHJldHVy
biBjb252ZXJ0Q29sb3I8TGFiPGZsb2F0Pj4oTENIQTxmbG9hdD4geyBzdGF0aWNfY2FzdDxmbG9h
dD4ocmVzb2x2ZWRMaWdodG5lc3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRDaHJvbWEp
LCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRIdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVz
b2x2ZWRBbHBoYSkgfSk7Cit9CisKK3N0YXRpYyBDb2xvciBwYXJzZUxDSFBhcmFtZXRlcnMoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQp
CiB7CiAgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVMY2gp
OwogICAgIGF1dG8gYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CiAKLSAgICBhdXRvIGxp
Z2h0bmVzcyA9IGNvbnN1bWVQZXJjZW50UmF3KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgIGlm
IChjb250ZXh0LnJlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkICYmIGFyZ3MucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVGcm9tKQorICAgICAgICByZXR1cm4gcGFyc2VSZWxhdGl2ZUxDSFBhcmFtZXRl
cnMoYXJncywgY29udGV4dCk7CisKKyAgICBhdXRvIGxpZ2h0bmVzcyA9IGNvbnN1bWVQZXJjZW50
UmF3KGFyZ3MpOwogICAgIGlmICghbGlnaHRuZXNzKQogICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgYXV0byBjaHJvbWFWYWx1ZSA9IGNvbnN1bWVOdW1iZXJSYXcoYXJncywgVmFsdWVSYW5nZUFs
bCk7Ci0gICAgaWYgKCFjaHJvbWFWYWx1ZSkKKyAgICBhdXRvIGNocm9tYSA9IGNvbnN1bWVOdW1i
ZXJSYXcoYXJncyk7CisgICAgaWYgKCFjaHJvbWEpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICBkb3VibGUgaHVlQW5nbGVJbkRlZ3JlZXM7Ci0gICAgaWYgKGF1dG8gYW5nbGUgPSBjb25zdW1l
QW5nbGVSYXcoYXJncywgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0
bGVzc1plcm9RdWlyazo6Rm9yYmlkKSkKLSAgICAgICAgaHVlQW5nbGVJbkRlZ3JlZXMgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y29tcHV0ZURlZ3JlZXMoYW5nbGUtPnR5cGUsIGFuZ2xlLT52YWx1ZSk7
Ci0gICAgZWxzZSBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1lTnVtYmVyUmF3KGFyZ3MsIFZhbHVl
UmFuZ2VBbGwpKQotICAgICAgICBodWVBbmdsZUluRGVncmVlcyA9ICpudW1iZXI7Ci0gICAgZWxz
ZQorICAgIGF1dG8gaHVlID0gY29uc3VtZUh1ZShhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAoIWh1
ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGh1ZUFuZ2xlSW5EZWdyZWVzID0gZm1vZCho
dWVBbmdsZUluRGVncmVlcywgMzYwLjApOwotICAgIGlmIChodWVBbmdsZUluRGVncmVlcyA8IDAu
MCkKLSAgICAgICAgaHVlQW5nbGVJbkRlZ3JlZXMgKz0gMzYwLjA7Ci0KLSAgICBhdXRvIGFscGhh
ID0gcGFyc2VPcHRpb25hbEFscGhhKGFyZ3MpOworICAgIGF1dG8gYWxwaGEgPSBjb25zdW1lT3B0
aW9uYWxBbHBoYShhcmdzKTsKICAgICBpZiAoIWFscGhhKQogICAgICAgICByZXR1cm4geyB9Owog
CiAgICAgaWYgKCFhcmdzLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1
cm4gY29udmVydENvbG9yPExhYjxmbG9hdD4+KExDSEE8ZmxvYXQ+IHsgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KCpsaWdodG5lc3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4oKmNocm9tYVZhbHVlKSwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGh1ZUFuZ2xlSW5EZWdyZWVzKSwgKmFscGhhIH0pOworICAgIGF1dG8gbm9y
bWFsaXplZEh1ZSA9IG5vcm1hbGl6ZUh1ZUZyb20wVG8zNjAoKmh1ZSk7CisKKyAgICByZXR1cm4g
Y29udmVydENvbG9yPExhYjxmbG9hdD4+KExDSEE8ZmxvYXQ+IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KCpsaWdodG5lc3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4oKmNocm9tYSksIHN0YXRpY19jYXN0PGZs
b2F0Pihub3JtYWxpemVkSHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KCphbHBoYSkgfSk7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4KLXN0YXRpYyBDb2xvciBwYXJzZUNvbG9yRnVu
Y3Rpb25Gb3JSR0JUeXBlcyhDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzKQordGVtcGxhdGU8dHlw
ZW5hbWUgQ29sb3JUeXBlPiBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvckZ1bmN0aW9uRm9yUkdCVHlw
ZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncykKIHsKICAgICBBU1NFUlQoYXJncy5wZWVrKCku
aWQoKSA9PSBDU1NWYWx1ZUE5OFJnYiB8fCBhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRGlz
cGxheVAzIHx8IGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVQcm9waG90b1JnYiB8fCBhcmdz
LnBlZWsoKS5pZCgpID09IENTU1ZhbHVlUmVjMjAyMCB8fCBhcmdzLnBlZWsoKS5pZCgpID09IENT
U1ZhbHVlU1JHQik7CiAgICAgY29uc3VtZUlkZW50UmF3KGFyZ3MpOwpAQCAtOTY0LDExICsxMzc2
LDExIEBAIHN0YXRpYyBDb2xvciBwYXJzZUNvbG9yRnVuY3Rpb25Gb3JSR0JUeXAKICAgICAgICAg
Y2hhbm5lbHNbaV0gPSAqdmFsdWU7CiAgICAgfQogCi0gICAgYXV0byBhbHBoYSA9IHBhcnNlT3B0
aW9uYWxBbHBoYShhcmdzKTsKKyAgICBhdXRvIGFscGhhID0gY29uc3VtZU9wdGlvbmFsQWxwaGEo
YXJncyk7CiAgICAgaWYgKCFhbHBoYSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVy
biBDb2xvclR5cGUgeyBjbGFtcFRvPGZsb2F0PihjaGFubmVsc1swXSwgMC4wLCAxLjApLCBjbGFt
cFRvPGZsb2F0PihjaGFubmVsc1sxXSwgMC4wLCAxLjApLCBjbGFtcFRvPGZsb2F0PihjaGFubmVs
c1syXSwgMC4wLCAxLjApLCAqYWxwaGEgfTsKKyAgICByZXR1cm4gQ29sb3JUeXBlIHsgY2xhbXBU
bzxmbG9hdD4oY2hhbm5lbHNbMF0sIDAuMCwgMS4wKSwgY2xhbXBUbzxmbG9hdD4oY2hhbm5lbHNb
MV0sIDAuMCwgMS4wKSwgY2xhbXBUbzxmbG9hdD4oY2hhbm5lbHNbMl0sIDAuMCwgMS4wKSwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KCphbHBoYSkgfTsKIH0KIAogc3RhdGljIENvbG9yIHBhcnNlQ29sb3JG
dW5jdGlvbkZvckxhYlBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncykKQEAgLTk3
OCwyNyArMTM5MCwyNyBAQCBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvckZ1bmN0aW9uRm9yTGFiUGFy
CiAKICAgICBkb3VibGUgY2hhbm5lbHNbM10gPSB7IDAsIDAsIDAgfTsKICAgICBbJl0gewotICAg
ICAgICBhdXRvIGxpZ2h0bmVzcyA9IGNvbnN1bWVQZXJjZW50UmF3KGFyZ3MsIFZhbHVlUmFuZ2VB
bGwpOworICAgICAgICBhdXRvIGxpZ2h0bmVzcyA9IGNvbnN1bWVQZXJjZW50UmF3KGFyZ3MpOwog
ICAgICAgICBpZiAoIWxpZ2h0bmVzcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hh
bm5lbHNbMF0gPSAqbGlnaHRuZXNzOwogCi0gICAgICAgIGF1dG8gYVZhbHVlID0gY29uc3VtZU51
bWJlclJhdyhhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgYXV0byBhVmFsdWUgPSBjb25z
dW1lTnVtYmVyUmF3KGFyZ3MpOwogICAgICAgICBpZiAoIWFWYWx1ZSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgY2hhbm5lbHNbMV0gPSAqYVZhbHVlOwogCi0gICAgICAgIGF1dG8gYlZh
bHVlID0gY29uc3VtZU51bWJlclJhdyhhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAgICAgICAgYXV0
byBiVmFsdWUgPSBjb25zdW1lTnVtYmVyUmF3KGFyZ3MpOwogICAgICAgICBpZiAoIWJWYWx1ZSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hhbm5lbHNbMl0gPSAqYlZhbHVlOwogICAg
IH0oKTsKIAotICAgIGF1dG8gYWxwaGEgPSBwYXJzZU9wdGlvbmFsQWxwaGEoYXJncyk7CisgICAg
YXV0byBhbHBoYSA9IGNvbnN1bWVPcHRpb25hbEFscGhhKGFyZ3MpOwogICAgIGlmICghYWxwaGEp
CiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4gTGFiPGZsb2F0PiB7IHN0YXRpY19j
YXN0PGZsb2F0PihjaGFubmVsc1swXSksIHN0YXRpY19jYXN0PGZsb2F0PihjaGFubmVsc1sxXSks
IHN0YXRpY19jYXN0PGZsb2F0PihjaGFubmVsc1syXSksICphbHBoYSB9OworICAgIHJldHVybiBM
YWI8ZmxvYXQ+IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNoYW5uZWxzWzBdKSwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGNoYW5uZWxzWzFdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNoYW5uZWxzWzJdKSwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KCphbHBoYSkgfTsKIH0KIAogc3RhdGljIENvbG9yIHBhcnNlQ29sb3JG
dW5jdGlvbkZvclhZWlBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncykKQEAgLTEw
MDgsMjcgKzE0MjAsMjcgQEAgc3RhdGljIENvbG9yIHBhcnNlQ29sb3JGdW5jdGlvbkZvclhZWlBh
cgogCiAgICAgZG91YmxlIGNoYW5uZWxzWzNdID0geyAwLCAwLCAwIH07CiAgICAgWyZdIHsKLSAg
ICAgICAgYXV0byB4ID0gY29uc3VtZU51bWJlclJhdyhhcmdzLCBWYWx1ZVJhbmdlQWxsKTsKKyAg
ICAgICAgYXV0byB4ID0gY29uc3VtZU51bWJlclJhdyhhcmdzKTsKICAgICAgICAgaWYgKCF4KQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGFubmVsc1swXSA9ICp4OwogCi0gICAgICAg
IGF1dG8geSA9IGNvbnN1bWVOdW1iZXJSYXcoYXJncywgVmFsdWVSYW5nZUFsbCk7CisgICAgICAg
IGF1dG8geSA9IGNvbnN1bWVOdW1iZXJSYXcoYXJncyk7CiAgICAgICAgIGlmICgheSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgY2hhbm5lbHNbMV0gPSAqeTsKIAotICAgICAgICBhdXRv
IHogPSBjb25zdW1lTnVtYmVyUmF3KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOworICAgICAgICBhdXRv
IHogPSBjb25zdW1lTnVtYmVyUmF3KGFyZ3MpOwogICAgICAgICBpZiAoIXopCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGNoYW5uZWxzWzJdID0gKno7CiAgICAgfSgpOwogCi0gICAgYXV0
byBhbHBoYSA9IHBhcnNlT3B0aW9uYWxBbHBoYShhcmdzKTsKKyAgICBhdXRvIGFscGhhID0gY29u
c3VtZU9wdGlvbmFsQWxwaGEoYXJncyk7CiAgICAgaWYgKCFhbHBoYSkKICAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgIHJldHVybiBYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENTA+IHsgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGNoYW5uZWxzWzBdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNoYW5uZWxzWzFd
KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNoYW5uZWxzWzJdKSwgKmFscGhhIH07CisgICAgcmV0dXJu
IFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ1MD4geyBzdGF0aWNfY2FzdDxmbG9hdD4oY2hhbm5l
bHNbMF0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oY2hhbm5lbHNbMV0pLCBzdGF0aWNfY2FzdDxmbG9h
dD4oY2hhbm5lbHNbMl0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oKmFscGhhKSB9OwogfQogCiBzdGF0
aWMgQ29sb3IgcGFyc2VDb2xvckZ1bmN0aW9uUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKQEAgLTExMTEsMjggKzE1MjMsMzIgQEAgc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVp
bnQ4X3Q+PiBwYXJzZUhleAogICAgIHJldHVybiAqcmVzdWx0OwogfQogCi1zdGF0aWMgQ29sb3Ig
cGFyc2VDb2xvckZ1bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUpCitzdGF0aWMgQ29sb3IgcGFyc2VDb2xvckZ1bmN0aW9uKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIENTU1BhcnNlclRva2VuUmFuZ2UgY29sb3JSYW5nZSA9IHJhbmdlOwogICAgIENTU1Zh
bHVlSUQgZnVuY3Rpb25JZCA9IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCk7CiAgICAgQ29sb3Ig
Y29sb3I7CiAgICAgc3dpdGNoIChmdW5jdGlvbklkKSB7CiAgICAgY2FzZSBDU1NWYWx1ZVJnYjoK
KyAgICAgICAgY29sb3IgPSBwYXJzZVJHQlBhcmFtZXRlcnM8UkdCRnVuY3Rpb25Nb2RlOjpSR0I+
KGNvbG9yUmFuZ2UsIGNvbnRleHQpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVl
UmdiYToKLSAgICAgICAgY29sb3IgPSBwYXJzZVJHQlBhcmFtZXRlcnMoY29sb3JSYW5nZSk7Cisg
ICAgICAgIGNvbG9yID0gcGFyc2VSR0JQYXJhbWV0ZXJzPFJHQkZ1bmN0aW9uTW9kZTo6UkdCQT4o
Y29sb3JSYW5nZSwgY29udGV4dCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVI
c2w6CisgICAgICAgIGNvbG9yID0gcGFyc2VIU0xQYXJhbWV0ZXJzPEhTTEZ1bmN0aW9uTW9kZTo6
SFNMPihjb2xvclJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NW
YWx1ZUhzbGE6Ci0gICAgICAgIGNvbG9yID0gcGFyc2VIU0xQYXJhbWV0ZXJzKGNvbG9yUmFuZ2Us
IGNzc1BhcnNlck1vZGUpOworICAgICAgICBjb2xvciA9IHBhcnNlSFNMUGFyYW1ldGVyczxIU0xG
dW5jdGlvbk1vZGU6OkhTTEE+KGNvbG9yUmFuZ2UsIGNvbnRleHQpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENTU1ZhbHVlSHdiOgotICAgICAgICBjb2xvciA9IHBhcnNlSFdCUGFyYW1ldGVy
cyhjb2xvclJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKKyAgICAgICAgY29sb3IgPSBwYXJzZUhXQlBh
cmFtZXRlcnMoY29sb3JSYW5nZSwgY29udGV4dCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q1NTVmFsdWVMYWI6Ci0gICAgICAgIGNvbG9yID0gcGFyc2VMYWJQYXJhbWV0ZXJzKGNvbG9yUmFu
Z2UpOworICAgICAgICBjb2xvciA9IHBhcnNlTGFiUGFyYW1ldGVycyhjb2xvclJhbmdlLCBjb250
ZXh0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUxjaDoKLSAgICAgICAgY29s
b3IgPSBwYXJzZUxDSFBhcmFtZXRlcnMoY29sb3JSYW5nZSwgY3NzUGFyc2VyTW9kZSk7CisgICAg
ICAgIGNvbG9yID0gcGFyc2VMQ0hQYXJhbWV0ZXJzKGNvbG9yUmFuZ2UsIGNvbnRleHQpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlQ29sb3I6CiAgICAgICAgIGNvbG9yID0gcGFy
c2VDb2xvckZ1bmN0aW9uUGFyYW1ldGVycyhjb2xvclJhbmdlKTsKQEAgLTExNDUsNyArMTU2MSw3
IEBAIHN0YXRpYyBDb2xvciBwYXJzZUNvbG9yRnVuY3Rpb24oQ1NTUGFyc2UKICAgICByZXR1cm4g
Y29sb3I7CiB9CiAKLUNvbG9yIGNvbnN1bWVDb2xvcldvcmtlclNhZmUoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK0NvbG9yIGNvbnN1bWVD
b2xvcldvcmtlclNhZmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQ29sb3IgcmVzdWx0OwogICAgIGF1dG8ga2V5d29y
ZCA9IHJhbmdlLnBlZWsoKS5pZCgpOwpAQCAtMTE1NCw3ICsxNTcwLDcgQEAgQ29sb3IgY29uc3Vt
ZUNvbG9yV29ya2VyU2FmZShDU1NQYXJzZXJUbwogICAgICAgICAvLyAgICAgICAgRm9yIG5vdywg
d2UgZGV0ZWN0IHRoZSBzeXN0ZW0gY29sb3IsIGJ1dCB0aGVuIGludGVudGlvbmFsbHkgZmFpbCBw
YXJzaW5nLgogICAgICAgICBpZiAoU3R5bGVDb2xvcjo6aXNTeXN0ZW1Db2xvcihrZXl3b3JkKSkK
ICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIGlmICghaXNWYWx1ZUFsbG93ZWRJbk1v
ZGUoa2V5d29yZCwgY3NzUGFyc2VyTW9kZSkpCisgICAgICAgIGlmICghaXNWYWx1ZUFsbG93ZWRJ
bk1vZGUoa2V5d29yZCwgY29udGV4dC5tb2RlKSkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgICAgIHJlc3VsdCA9IFN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQoa2V5d29yZCwgeyB9
KTsKICAgICAgICAgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKQEAgLTExNjMs
NyArMTU3OSw3IEBAIENvbG9yIGNvbnN1bWVDb2xvcldvcmtlclNhZmUoQ1NTUGFyc2VyVG8KICAg
ICBpZiAoYXV0byBwYXJzZWRDb2xvciA9IHBhcnNlSGV4Q29sb3IocmFuZ2UsIGZhbHNlKSkKICAg
ICAgICAgcmVzdWx0ID0gKnBhcnNlZENvbG9yOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0g
cGFyc2VDb2xvckZ1bmN0aW9uKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKKyAgICAgICAgcmVzdWx0
ID0gcGFyc2VDb2xvckZ1bmN0aW9uKHJhbmdlLCBjb250ZXh0KTsKIAogICAgIGlmICghcmFuZ2Uu
YXRFbmQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTExNzEsMTEgKzE1ODcsMTEgQEAgQ29s
b3IgY29uc3VtZUNvbG9yV29ya2VyU2FmZShDU1NQYXJzZXJUbwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLVJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUNvbG9yKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIGJvb2wgYWNjZXB0
UXVpcmt5Q29sb3JzKQorUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQ29sb3IoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQs
IGJvb2wgYWNjZXB0UXVpcmt5Q29sb3JzKQogewogICAgIGF1dG8ga2V5d29yZCA9IHJhbmdlLnBl
ZWsoKS5pZCgpOwogICAgIGlmIChTdHlsZUNvbG9yOjppc0NvbG9yS2V5d29yZChrZXl3b3JkKSkg
ewotICAgICAgICBpZiAoIWlzVmFsdWVBbGxvd2VkSW5Nb2RlKGtleXdvcmQsIGNzc1BhcnNlck1v
ZGUpKQorICAgICAgICBpZiAoIWlzVmFsdWVBbGxvd2VkSW5Nb2RlKGtleXdvcmQsIGNvbnRleHQu
bW9kZSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGNvbnN1
bWVJZGVudChyYW5nZSk7CiAgICAgfQpAQCAtMTE4Myw3ICsxNTk5LDcgQEAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lQ29sb3IoQwogICAgIGlmIChhdXRvIHBhcnNlZENvbG9yID0g
cGFyc2VIZXhDb2xvcihyYW5nZSwgYWNjZXB0UXVpcmt5Q29sb3JzKSkKICAgICAgICAgY29sb3Ig
PSAqcGFyc2VkQ29sb3I7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNvbG9yID0gcGFyc2VDb2xvckZ1
bmN0aW9uKHJhbmdlLCBjc3NQYXJzZXJNb2RlKTsKKyAgICAgICAgY29sb3IgPSBwYXJzZUNvbG9y
RnVuY3Rpb24ocmFuZ2UsIGNvbnRleHQpOwogICAgICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTE0MTMsMTQgKzE4MjksMTQg
QEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZQogfQogCiAvLyBVc2Vk
IHRvIHBhcnNlIGNvbG9ycyBmb3IgLXdlYmtpdC1ncmFkaWVudCguLi4pLgotc3RhdGljIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFN0b3BDb2xvcihD
U1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCitz
dGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50
U3RvcENvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVDdXJy
ZW50Y29sb3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBjb25zdW1lQ29s
b3IoYXJncywgY3NzUGFyc2VyTW9kZSk7CisgICAgcmV0dXJuIGNvbnN1bWVDb2xvcihhcmdzLCBj
b250ZXh0KTsKIH0KIAotc3RhdGljIGJvb2wgY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudENvbG9y
U3RvcChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTR3JhZGllbnRDb2xvclN0b3AmIHN0
b3AsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKK3N0YXRpYyBib29sIGNvbnN1bWVEZXBy
ZWNhdGVkR3JhZGllbnRDb2xvclN0b3AoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU0dy
YWRpZW50Q29sb3JTdG9wJiBzdG9wLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOwogICAgIGlm
IChpZCAhPSBDU1NWYWx1ZUZyb20gJiYgaWQgIT0gQ1NTVmFsdWVUbyAmJiBpZCAhPSBDU1NWYWx1
ZUNvbG9yU3RvcCkKQEAgLTE0NDIsMTEgKzE4NTgsMTEgQEAgc3RhdGljIGJvb2wgY29uc3VtZURl
cHJlY2F0ZWRHcmFkaWVudENvbAogICAgIH0KIAogICAgIHN0b3AucG9zaXRpb24gPSBDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHBvc2l0aW9uLCBDU1NVbml0VHlwZTo6Q1NT
X05VTUJFUik7Ci0gICAgc3RvcC5jb2xvciA9IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRTdG9w
Q29sb3IoYXJncywgY3NzUGFyc2VyTW9kZSk7CisgICAgc3RvcC5jb2xvciA9IGNvbnN1bWVEZXBy
ZWNhdGVkR3JhZGllbnRTdG9wQ29sb3IoYXJncywgY29udGV4dCk7CiAgICAgcmV0dXJuIHN0b3Au
Y29sb3IgJiYgYXJncy5hdEVuZCgpOwogfQogCi1zdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lRGVwcmVjYXRlZEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNl
ck1vZGUgY3NzUGFyc2VyTW9kZSkKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXBy
ZWNhdGVkR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgY29udGV4dCkKIHsKICAgICBSZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gcmVzdWx0
OwogICAgIENTU1ZhbHVlSUQgaWQgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
aWQoKTsKQEAgLTE0OTksNyArMTkxNSw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1
bWVEZXByZWNhdGUKIAogICAgIENTU0dyYWRpZW50Q29sb3JTdG9wIHN0b3A7CiAgICAgd2hpbGUg
KGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpIHsKLSAgICAgICAgaWYgKCFj
b25zdW1lRGVwcmVjYXRlZEdyYWRpZW50Q29sb3JTdG9wKGFyZ3MsIHN0b3AsIGNzc1BhcnNlck1v
ZGUpKQorICAgICAgICBpZiAoIWNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRDb2xvclN0b3AoYXJn
cywgc3RvcCwgY29udGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
cmVzdWx0LT5hZGRTdG9wKFdURk1vdmUoc3RvcCkpOwogICAgIH0KQEAgLTE1MDgsMjAgKzE5MjQs
MjAgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZQogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXN0YXRpYyBib29sIGNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgbW9kZSwgQ1NTR3JhZGllbnRW
YWx1ZSYgZ3JhZGllbnQpCitzdGF0aWMgYm9vbCBjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0
LCBDU1NHcmFkaWVudFZhbHVlJiBncmFkaWVudCkKIHsKICAgICBib29sIHN1cHBvcnRzQ29sb3JI
aW50cyA9IGdyYWRpZW50LmdyYWRpZW50VHlwZSgpID09IENTU0xpbmVhckdyYWRpZW50IHx8IGdy
YWRpZW50LmdyYWRpZW50VHlwZSgpID09IENTU1JhZGlhbEdyYWRpZW50IHx8IGdyYWRpZW50Lmdy
YWRpZW50VHlwZSgpID09IENTU0NvbmljR3JhZGllbnQ7CiAgICAgCiAgICAgYXV0byBjb25zdW1l
U3RvcFBvc2l0aW9uID0gWyZdIHsKICAgICAgICAgcmV0dXJuIGdyYWRpZW50LmdyYWRpZW50VHlw
ZSgpID09IENTU0NvbmljR3JhZGllbnQKLSAgICAgICAgICAgID8gY29uc3VtZUFuZ2xlT3JQZXJj
ZW50KHJhbmdlLCBtb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIFVu
aXRsZXNzWmVyb1F1aXJrOjpBbGxvdykKLSAgICAgICAgICAgIDogY29uc3VtZUxlbmd0aE9yUGVy
Y2VudChyYW5nZSwgbW9kZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICA/IGNvbnN1bWVB
bmdsZU9yUGVyY2VudChyYW5nZSwgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlQWxsLCBVbml0bGVz
c1F1aXJrOjpGb3JiaWQsIFVuaXRsZXNzWmVyb1F1aXJrOjpBbGxvdykKKyAgICAgICAgICAgIDog
Y29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlQWxs
KTsKICAgICB9OwogCiAgICAgLy8gVGhlIGZpcnN0IGNvbG9yIHN0b3AgY2Fubm90IGJlIGEgY29s
b3IgaGludC4KICAgICBib29sIHByZXZpb3VzU3RvcFdhc0NvbG9ySGludCA9IHRydWU7CiAgICAg
ZG8gewotICAgICAgICBDU1NHcmFkaWVudENvbG9yU3RvcCBzdG9wIHsgY29uc3VtZUNvbG9yKHJh
bmdlLCBtb2RlKSwgY29uc3VtZVN0b3BQb3NpdGlvbigpLCB7IH0gfTsKKyAgICAgICAgQ1NTR3Jh
ZGllbnRDb2xvclN0b3Agc3RvcCB7IGNvbnN1bWVDb2xvcihyYW5nZSwgY29udGV4dCksIGNvbnN1
bWVTdG9wUG9zaXRpb24oKSwgeyB9IH07CiAgICAgICAgIGlmICghc3RvcC5jb2xvciAmJiAhc3Rv
cC5wb3NpdGlvbikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTU1MiwxMSArMTk2
OCwxMSBAQCBzdGF0aWMgYm9vbCBjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKENTCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVk
UmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlLCBDU1NHcmFkaWVudFJlcGVhdCByZXBlYXRpbmcpCitzdGF0aWMgUmVmUHRy
PENTU1ZhbHVlPiBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRva2Vu
UmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENTU0dyYWRpZW50
UmVwZWF0IHJlcGVhdGluZykKIHsKICAgICBhdXRvIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50
VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIENTU1ByZWZpeGVkUmFkaWFsR3JhZGllbnQpOwogCi0g
ICAgYXV0byBjZW50ZXJDb29yZGluYXRlID0gY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRpb25D
b29yZGluYXRlcyhhcmdzLCBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOwor
ICAgIGF1dG8gY2VudGVyQ29vcmRpbmF0ZSA9IGNvbnN1bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9u
Q29vcmRpbmF0ZXMoYXJncywgY29udGV4dC5tb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQpOwog
ICAgIGlmIChjZW50ZXJDb29yZGluYXRlICYmICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNw
YWNlKGFyZ3MpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTU2NywxMCArMTk4Mywx
MCBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lRGVwcmVjYXRlCiAKICAgICAvLyBP
ciwgdHdvIGxlbmd0aHMgb3IgcGVyY2VudGFnZXMKICAgICBpZiAoIXNoYXBlICYmICFzaXplS2V5
d29yZCkgewotICAgICAgICBhdXRvIGhvcml6b250YWxTaXplID0gY29uc3VtZUxlbmd0aE9yUGVy
Y2VudChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAg
ICBhdXRvIGhvcml6b250YWxTaXplID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250
ZXh0Lm1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CiAgICAgICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gdmVydGljYWxTaXplOwogICAgICAgICBpZiAoaG9yaXpvbnRhbFNpemUpIHsK
LSAgICAgICAgICAgIHZlcnRpY2FsU2l6ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywg
Y3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgICAgIHZlcnRp
Y2FsU2l6ZSA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1
ZVJhbmdlTm9uTmVnYXRpdmUpOwogICAgICAgICAgICAgaWYgKCF2ZXJ0aWNhbFNpemUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBjb25zdW1lQ29tbWFJbmNs
dWRpbmdXaGl0ZXNwYWNlKGFyZ3MpOwpAQCAtMTU4MSw3ICsxOTk3LDcgQEAgc3RhdGljIFJlZlB0
cjxDU1NWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZQogICAgICAgICBjb25zdW1lQ29tbWFJbmNsdWRp
bmdXaGl0ZXNwYWNlKGFyZ3MpOwogICAgIH0KIAotICAgIGlmICghY29uc3VtZUdyYWRpZW50Q29s
b3JTdG9wcyhhcmdzLCBjc3NQYXJzZXJNb2RlLCByZXN1bHQpKQorICAgIGlmICghY29uc3VtZUdy
YWRpZW50Q29sb3JTdG9wcyhhcmdzLCBjb250ZXh0LCByZXN1bHQpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmIChjZW50ZXJDb29yZGluYXRlKSB7CkBAIC0xNTk2LDcgKzIwMTIs
NyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lRGVwcmVjYXRlCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVJhZGlhbEdyYWRp
ZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4g
Y29uc3VtZVJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENT
U1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKIHsK
ICAgICBSZWZQdHI8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTUmFkaWFsR3Jh
ZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgQ1NTUmFkaWFsR3JhZGllbnQpOwogCkBAIC0x
NjI0LDEzICsyMDQwLDEzIEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVSYWRpYWxH
cmEKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGF1dG8gY2VudGVyID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdz
LCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOworICAgICAgICAgICAgYXV0
byBjZW50ZXIgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFs
dWVSYW5nZU5vbk5lZ2F0aXZlKTsKICAgICAgICAgICAgIGlmICghY2VudGVyKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgaWYgKGhvcml6b250YWxTaXplKQogICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgaG9yaXpvbnRhbFNpemUgPSBjZW50
ZXI7Ci0gICAgICAgICAgICBjZW50ZXIgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNz
c1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CisgICAgICAgICAgICBjZW50ZXIg
PSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZU5v
bk5lZ2F0aXZlKTsKICAgICAgICAgICAgIGlmIChjZW50ZXIpIHsKICAgICAgICAgICAgICAgICB2
ZXJ0aWNhbFNpemUgPSBjZW50ZXI7CiAgICAgICAgICAgICAgICAgKytpOwpAQCAtMTY1OSw3ICsy
MDc1LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVJhZGlhbEdyYQogICAgIGlm
IChhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlQXQpIHsKICAgICAgICAgYXJncy5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICAKLSAgICAgICAgYXV0byBjZW50ZXJDb29y
ZGluYXRlID0gY29uc3VtZVBvc2l0aW9uQ29vcmRpbmF0ZXMoYXJncywgY3NzUGFyc2VyTW9kZSwg
VW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBQb3NpdGlvblN5bnRheDo6UG9zaXRpb24pOworICAgICAg
ICBhdXRvIGNlbnRlckNvb3JkaW5hdGUgPSBjb25zdW1lUG9zaXRpb25Db29yZGluYXRlcyhhcmdz
LCBjb250ZXh0Lm1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgUG9zaXRpb25TeW50YXg6OlBv
c2l0aW9uKTsKICAgICAgICAgaWYgKCFjZW50ZXJDb29yZGluYXRlKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIApAQCAtMTY3Niw3ICsyMDkyLDcgQEAgc3RhdGljIFJlZlB0
cjxDU1NWYWx1ZT4gY29uc3VtZVJhZGlhbEdyYQogCiAgICAgaWYgKChzaGFwZSB8fCBzaXplS2V5
d29yZCB8fCBob3Jpem9udGFsU2l6ZSB8fCBjZW50ZXJYIHx8IGNlbnRlclkpICYmICFjb25zdW1l
Q29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJncywgY3NzUGFyc2VyTW9kZSwg
KnJlc3VsdCkpCisgICAgaWYgKCFjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKGFyZ3MsIGNvbnRl
eHQsICpyZXN1bHQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJlc3VsdC0+c2V0
U2hhcGUoV1RGTW92ZShzaGFwZSkpOwpAQCAtMTY4NywxMiArMjEwMywxMiBAQCBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lUmFkaWFsR3JhCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
c3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUxpbmVhckdyYWRpZW50KENTU1BhcnNlclRv
a2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTR3JhZGllbnRS
ZXBlYXQgcmVwZWF0aW5nLCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKQorc3RhdGljIFJl
ZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUxpbmVhckdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2Um
IGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENTU0dyYWRpZW50UmVwZWF0
IHJlcGVhdGluZywgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSkKIHsKICAgICBSZWZQdHI8
Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6
Y3JlYXRlKHJlcGVhdGluZywgZ3JhZGllbnRUeXBlKTsKIAogICAgIGJvb2wgZXhwZWN0Q29tbWEg
PSB0cnVlOwotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYW5nbGUgPSBjb25zdW1lQW5n
bGUoYXJncywgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0bGVzc1pl
cm9RdWlyazo6QWxsb3cpOworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYW5nbGUgPSBj
b25zdW1lQW5nbGUoYXJncywgY29udGV4dC5tb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIFVu
aXRsZXNzWmVyb1F1aXJrOjpBbGxvdyk7CiAgICAgaWYgKGFuZ2xlKQogICAgICAgICByZXN1bHQt
PnNldEFuZ2xlKGFuZ2xlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGVsc2UgaWYgKGdyYWRpZW50
VHlwZSA9PSBDU1NQcmVmaXhlZExpbmVhckdyYWRpZW50IHx8IGNvbnN1bWVJZGVudDxDU1NWYWx1
ZVRvPihhcmdzKSkgewpAQCAtMTcxNSwxMiArMjEzMSwxMiBAQCBzdGF0aWMgUmVmUHRyPENTU1Zh
bHVlPiBjb25zdW1lTGluZWFyR3JhCiAKICAgICBpZiAoZXhwZWN0Q29tbWEgJiYgIWNvbnN1bWVD
b21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGlmICghY29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhhcmdzLCBjc3NQYXJzZXJNb2RlLCAq
cmVzdWx0KSkKKyAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJncywgY29udGV4
dCwgKnJlc3VsdCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDb25pY0dyYWRpZW50KENTU1Bh
cnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlckNvbnRleHQgY29udGV4dCwgQ1NTR3JhZGll
bnRSZXBlYXQgcmVwZWF0aW5nKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNvbmlj
R3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYgY29udGV4dCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQogewogI2lmIEVOQUJMRShD
U1NfQ09OSUNfR1JBRElFTlRTKQogICAgIFJlZlB0cjxDU1NDb25pY0dyYWRpZW50VmFsdWU+IHJl
c3VsdCA9IENTU0NvbmljR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZyk7CkBAIC0xNzU0
LDcgKzIxNzAsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQ29uaWNHcmFkCiAK
ICAgICBpZiAoZXhwZWN0Q29tbWEgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2Uo
YXJncykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghY29uc3VtZUdyYWRpZW50
Q29sb3JTdG9wcyhhcmdzLCBjb250ZXh0Lm1vZGUsICpyZXN1bHQpKQorICAgIGlmICghY29uc3Vt
ZUdyYWRpZW50Q29sb3JTdG9wcyhhcmdzLCBjb250ZXh0LCAqcmVzdWx0KSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCkBAIC0xNzY1LDE0ICsyMTgx
LDE0IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDb25pY0dyYWQKICNlbmRpZgog
fQogCi1SZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZU9yTm9uZShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KQorUmVmUHRyPENTU1ZhbHVlPiBj
b25zdW1lSW1hZ2VPck5vbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENT
U1ZhbHVlTm9uZSkKICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CiAgICAgcmV0
dXJuIGNvbnN1bWVJbWFnZShyYW5nZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVDcm9zc0ZhZGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFy
c2VyQ29udGV4dCBjb250ZXh0LCBib29sIHByZWZpeGVkKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZUNyb3NzRmFkZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBjb250ZXh0LCBib29sIHByZWZpeGVkKQogewogICAgIGF1dG8gZnJvbUlt
YWdlVmFsdWUgPSBjb25zdW1lSW1hZ2VPck5vbmUoYXJncywgY29udGV4dCk7CiAgICAgaWYgKCFm
cm9tSW1hZ2VWYWx1ZSB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkK
QEAgLTE4NDgsMzAgKzIyNjQsMzAgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUN1
c3RvbVBhaQogfQogI2VuZGlmCiAKLXN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVHZW5l
cmF0ZWRJbWFnZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyQ29udGV4dCBj
b250ZXh0KQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUdlbmVyYXRlZEltYWdlKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0
KQogewogICAgIENTU1ZhbHVlSUQgaWQgPSByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpOwogICAg
IENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VDb3B5ID0gcmFuZ2U7CiAgICAgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlQ29weSk7CiAgICAgUmVmUHRyPENT
U1ZhbHVlPiByZXN1bHQ7CiAgICAgaWYgKGlkID09IENTU1ZhbHVlUmFkaWFsR3JhZGllbnQpCi0g
ICAgICAgIHJlc3VsdCA9IGNvbnN1bWVSYWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUs
IE5vblJlcGVhdGluZyk7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVSYWRpYWxHcmFkaWVudChh
cmdzLCBjb250ZXh0LCBOb25SZXBlYXRpbmcpOwogICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVl
UmVwZWF0aW5nUmFkaWFsR3JhZGllbnQpCi0gICAgICAgIHJlc3VsdCA9IGNvbnN1bWVSYWRpYWxH
cmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUsIFJlcGVhdGluZyk7CisgICAgICAgIHJlc3VsdCA9
IGNvbnN1bWVSYWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0LCBSZXBlYXRpbmcpOwogICAgIGVs
c2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0TGluZWFyR3JhZGllbnQpCi0gICAgICAgIHJlc3Vs
dCA9IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUsIE5vblJlcGVhdGlu
ZywgQ1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudCk7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVM
aW5lYXJHcmFkaWVudChhcmdzLCBjb250ZXh0LCBOb25SZXBlYXRpbmcsIENTU1ByZWZpeGVkTGlu
ZWFyR3JhZGllbnQpOwogICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlV2Via2l0UmVwZWF0aW5n
TGluZWFyR3JhZGllbnQpCi0gICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJHcmFkaWVudChh
cmdzLCBjb250ZXh0Lm1vZGUsIFJlcGVhdGluZywgQ1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudCk7
CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdzLCBjb250ZXh0LCBS
ZXBlYXRpbmcsIENTU1ByZWZpeGVkTGluZWFyR3JhZGllbnQpOwogICAgIGVsc2UgaWYgKGlkID09
IENTU1ZhbHVlUmVwZWF0aW5nTGluZWFyR3JhZGllbnQpCi0gICAgICAgIHJlc3VsdCA9IGNvbnN1
bWVMaW5lYXJHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUsIFJlcGVhdGluZywgQ1NTTGluZWFy
R3JhZGllbnQpOworICAgICAgICByZXN1bHQgPSBjb25zdW1lTGluZWFyR3JhZGllbnQoYXJncywg
Y29udGV4dCwgUmVwZWF0aW5nLCBDU1NMaW5lYXJHcmFkaWVudCk7CiAgICAgZWxzZSBpZiAoaWQg
PT0gQ1NTVmFsdWVMaW5lYXJHcmFkaWVudCkKLSAgICAgICAgcmVzdWx0ID0gY29uc3VtZUxpbmVh
ckdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgTm9uUmVwZWF0aW5nLCBDU1NMaW5lYXJHcmFk
aWVudCk7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVMaW5lYXJHcmFkaWVudChhcmdzLCBjb250
ZXh0LCBOb25SZXBlYXRpbmcsIENTU0xpbmVhckdyYWRpZW50KTsKICAgICBlbHNlIGlmIChpZCA9
PSBDU1NWYWx1ZVdlYmtpdEdyYWRpZW50KQotICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVj
YXRlZEdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSk7CisgICAgICAgIHJlc3VsdCA9IGNvbnN1
bWVEZXByZWNhdGVkR3JhZGllbnQoYXJncywgY29udGV4dCk7CiAgICAgZWxzZSBpZiAoaWQgPT0g
Q1NTVmFsdWVXZWJraXRSYWRpYWxHcmFkaWVudCkKLSAgICAgICAgcmVzdWx0ID0gY29uc3VtZURl
cHJlY2F0ZWRSYWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0Lm1vZGUsIE5vblJlcGVhdGluZyk7
CisgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQoYXJncywg
Y29udGV4dCwgTm9uUmVwZWF0aW5nKTsKICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVdlYmtp
dFJlcGVhdGluZ1JhZGlhbEdyYWRpZW50KQotICAgICAgICByZXN1bHQgPSBjb25zdW1lRGVwcmVj
YXRlZFJhZGlhbEdyYWRpZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgUmVwZWF0aW5nKTsKKyAgICAg
ICAgcmVzdWx0ID0gY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChhcmdzLCBjb250ZXh0
LCBSZXBlYXRpbmcpOwogICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlQ29uaWNHcmFkaWVudCkK
ICAgICAgICAgcmVzdWx0ID0gY29uc3VtZUNvbmljR3JhZGllbnQoYXJncywgY29udGV4dCwgTm9u
UmVwZWF0aW5nKTsKICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVJlcGVhdGluZ0NvbmljR3Jh
ZGllbnQpCkBAIC0yMDE3LDcgKzI0MzMsNyBAQCBzdGF0aWMgUmVmUHRyPENTU0Z1bmN0aW9uVmFs
dWU+IGNvbnN1bWVGCiAgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZWRWYWx1ZTsKIAogICAgIGlm
IChmaWx0ZXJUeXBlID09IENTU1ZhbHVlRHJvcFNoYWRvdykKLSAgICAgICAgcGFyc2VkVmFsdWUg
PSBjb25zdW1lU2luZ2xlU2hhZG93KGFyZ3MsIGNvbnRleHQubW9kZSwgZmFsc2UsIGZhbHNlKTsK
KyAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lU2luZ2xlU2hhZG93KGFyZ3MsIGNvbnRleHQs
IGZhbHNlLCBmYWxzZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChhcmdzLmF0RW5kKCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmlsdGVyVmFsdWU7CkBAIC0yMDY0LDcgKzI0ODAsNyBAQCBSZWZQ
dHI8Q1NTVmFsdWU+IGNvbnN1bWVGaWx0ZXIoQ1NTUGFyc2VyCiAgICAgcmV0dXJuIGxpc3QucHRy
KCk7CiB9CiAKLVJlZlB0cjxDU1NTaGFkb3dWYWx1ZT4gY29uc3VtZVNpbmdsZVNoYWRvdyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBib29s
IGFsbG93SW5zZXQsIGJvb2wgYWxsb3dTcHJlYWQpCitSZWZQdHI8Q1NTU2hhZG93VmFsdWU+IGNv
bnN1bWVTaW5nbGVTaGFkb3coQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmIGNvbnRleHQsIGJvb2wgYWxsb3dJbnNldCwgYm9vbCBhbGxvd1NwcmVhZCkK
IHsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0eWxlOwogICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gY29sb3I7CkBAIC0yMDg5LDcgKzI1MDUsNyBAQCBSZWZQdHI8Q1NTU2hh
ZG93VmFsdWU+IGNvbnN1bWVTaW5nbGVTaGFkCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgYXV0byBtYXliZUNvbG9yID0gY29uc3VtZUNvbG9yKHJh
bmdlLCBjc3NQYXJzZXJNb2RlKTsKKyAgICAgICAgYXV0byBtYXliZUNvbG9yID0gY29uc3VtZUNv
bG9yKHJhbmdlLCBjb250ZXh0KTsKICAgICAgICAgaWYgKG1heWJlQ29sb3IpIHsKICAgICAgICAg
ICAgIC8vIElmIHdlIGp1c3QgcGFyc2VkIGEgY29sb3IgYnV0IGFscmVhZHkgaGFkIG9uZSwgdGhl
IGdpdmVuIHRva2VuIHJhbmdlIGlzIG5vdCBhIHZhbGlkIDxzaGFkb3c+LgogICAgICAgICAgICAg
aWYgKGNvbG9yKQpAQCAtMjEwMywyMyArMjUxOSwyMyBAQCBSZWZQdHI8Q1NTU2hhZG93VmFsdWU+
IGNvbnN1bWVTaW5nbGVTaGFkCiAgICAgICAgICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IHBhcnNl
ZCB0aGVzZSBsZW5ndGhzLCB0aGUgZ2l2ZW4gdmFsdWUgaXMgaW52YWxpZCBhcyB0aGVyZSBjYW5u
b3QgYmUgdHdvIGxlbmd0aHMgY29tcG9uZW50cyBpbiBhIHNpbmdsZSA8c2hhZG93PiB2YWx1ZS4K
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGhvcml6b250
YWxPZmZzZXQgPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdl
QWxsKTsKKyAgICAgICAgaG9yaXpvbnRhbE9mZnNldCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNv
bnRleHQubW9kZSwgVmFsdWVSYW5nZUFsbCk7CiAgICAgICAgIGlmICghaG9yaXpvbnRhbE9mZnNl
dCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB2ZXJ0aWNhbE9mZnNldCA9
IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworICAg
ICAgICB2ZXJ0aWNhbE9mZnNldCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNvbnRleHQubW9kZSwg
VmFsdWVSYW5nZUFsbCk7CiAgICAgICAgIGlmICghdmVydGljYWxPZmZzZXQpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4g
PSByYW5nZS5wZWVrKCk7CiAgICAgICAgIC8vIFRoZSBleHBsaWNpdCBjaGVjayBmb3IgY2FsYygp
IGlzIHVuZm9ydHVuYXRlLiBUaGlzIGlzIGVuc3VyaW5nIHRoYXQgd2Ugb25seSBmYWlsIHBhcnNp
bmcgaWYgdGhlcmUgaXMgYSBsZW5ndGgsIGJ1dCBpdCBmYWlscyB0aGUgcmFuZ2UgY2hlY2suCiAg
ICAgICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4gfHwgdG9rZW4udHlwZSgp
ID09IE51bWJlclRva2VuIHx8ICh0b2tlbi50eXBlKCkgPT0gRnVuY3Rpb25Ub2tlbiAmJiBDU1ND
YWxjVmFsdWU6OmlzQ2FsY0Z1bmN0aW9uKHRva2VuLmZ1bmN0aW9uSWQoKSkpKSB7Ci0gICAgICAg
ICAgICBibHVyUmFkaXVzID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFs
dWVSYW5nZU5vbk5lZ2F0aXZlKTsKKyAgICAgICAgICAgIGJsdXJSYWRpdXMgPSBjb25zdW1lTGVu
Z3RoKHJhbmdlLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2VOb25OZWdhdGl2ZSk7CiAgICAgICAg
ICAgICBpZiAoIWJsdXJSYWRpdXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoYmx1clJhZGl1cyAmJiBhbGxvd1NwcmVhZCkKLSAgICAg
ICAgICAgIHNwcmVhZERpc3RhbmNlID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9k
ZSwgVmFsdWVSYW5nZUFsbCk7CisgICAgICAgICAgICBzcHJlYWREaXN0YW5jZSA9IGNvbnN1bWVM
ZW5ndGgocmFuZ2UsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZUFsbCk7CiAgICAgfQogICAgIAog
ICAgIC8vIEluIG9yZGVyIGZvciB0aGlzIHRvIGJlIGEgdmFsaWQgPHNoYWRvdz4sIGF0IGxlYXN0
IHRoZXNlIGxlbmd0aHMgbXVzdCBiZSBwcmVzZW50LgpAQCAtMjEyOCw3ICsyNTQ0LDcgQEAgUmVm
UHRyPENTU1NoYWRvd1ZhbHVlPiBjb25zdW1lU2luZ2xlU2hhZAogICAgIHJldHVybiBDU1NTaGFk
b3dWYWx1ZTo6Y3JlYXRlKFdURk1vdmUoaG9yaXpvbnRhbE9mZnNldCksIFdURk1vdmUodmVydGlj
YWxPZmZzZXQpLCBXVEZNb3ZlKGJsdXJSYWRpdXMpLCBXVEZNb3ZlKHNwcmVhZERpc3RhbmNlKSwg
V1RGTW92ZShzdHlsZSksIFdURk1vdmUoY29sb3IpKTsKIH0KIAotUmVmUHRyPENTU1ZhbHVlPiBj
b25zdW1lSW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlckNvbnRleHQg
Y29udGV4dCwgT3B0aW9uU2V0PEFsbG93ZWRJbWFnZVR5cGU+IGFsbG93ZWRJbWFnZVR5cGVzKQor
UmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lSW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIE9wdGlvblNldDxBbGxvd2VkSW1hZ2VU
eXBlPiBhbGxvd2VkSW1hZ2VUeXBlcykKIHsKICAgICBpZiAoKHJhbmdlLnBlZWsoKS50eXBlKCkg
PT0gU3RyaW5nVG9rZW4pICYmIChhbGxvd2VkSW1hZ2VUeXBlcy5jb250YWlucyhBbGxvd2VkSW1h
Z2VUeXBlOjpSYXdTdHJpbmdBc1VSTCkpKSB7CiAgICAgICAgIGF1dG8gdXJsU3RyaW5nVmlldyA9
IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMu
aAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDggKzEwMiw4IEBAIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVN0cmluZygKIFN0cmluZ1ZpZXcgY29uc3Vt
ZVVybEFzU3RyaW5nVmlldyhDU1NQYXJzZXJUb2tlblJhbmdlJik7CiBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGNvbnN1bWVVcmwoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwogCi1Db2xvciBjb25z
dW1lQ29sb3JXb3JrZXJTYWZlKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlKTsK
LVJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUNvbG9yKENTU1BhcnNlclRva2VuUmFu
Z2UmLCBDU1NQYXJzZXJNb2RlLCBib29sIGFjY2VwdFF1aXJreUNvbG9ycyA9IGZhbHNlKTsKK0Nv
bG9yIGNvbnN1bWVDb2xvcldvcmtlclNhZmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENT
U1BhcnNlckNvbnRleHQmKTsKK1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUNvbG9y
KENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiwgYm9vbCBhY2Nl
cHRRdWlya3lDb2xvcnMgPSBmYWxzZSk7CiAKIGVudW0gY2xhc3MgUG9zaXRpb25TeW50YXggewog
ICAgIFBvc2l0aW9uLCAvLyA8cG9zaXRpb24+CkBAIC0xMjYsOSArMTI2LDggQEAgZW51bSBjbGFz
cyBBbGxvd2VkSW1hZ2VUeXBlIDogdWludDhfdCB7CiAgICAgR2VuZXJhdGVkSW1hZ2UgPSAxIDw8
IDMKIH07CiAKLVJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUltYWdlKENTU1BhcnNlclRva2VuUmFu
Z2UmLCBDU1NQYXJzZXJDb250ZXh0LCBPcHRpb25TZXQ8QWxsb3dlZEltYWdlVHlwZT4gPSB7IEFs
bG93ZWRJbWFnZVR5cGU6OlVSTEZ1bmN0aW9uLCBBbGxvd2VkSW1hZ2VUeXBlOjpJbWFnZVNldCwg
QWxsb3dlZEltYWdlVHlwZTo6R2VuZXJhdGVkSW1hZ2UgfSk7Ci0KLVJlZlB0cjxDU1NWYWx1ZT4g
Y29uc3VtZUltYWdlT3JOb25lKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJDb250ZXh0
KTsKK1JlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUltYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmLCBj
b25zdCBDU1NQYXJzZXJDb250ZXh0JiwgT3B0aW9uU2V0PEFsbG93ZWRJbWFnZVR5cGU+ID0geyBB
bGxvd2VkSW1hZ2VUeXBlOjpVUkxGdW5jdGlvbiwgQWxsb3dlZEltYWdlVHlwZTo6SW1hZ2VTZXQs
IEFsbG93ZWRJbWFnZVR5cGU6OkdlbmVyYXRlZEltYWdlIH0pOworUmVmUHRyPENTU1ZhbHVlPiBj
b25zdW1lSW1hZ2VPck5vbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNlckNv
bnRleHQmKTsKIAogZW51bSBjbGFzcyBBbGxvd2VkRmlsdGVyRnVuY3Rpb25zIHsKICAgICBQaXhl
bEZpbHRlcnMsCkBAIC0xMzYsNyArMTM1LDcgQEAgZW51bSBjbGFzcyBBbGxvd2VkRmlsdGVyRnVu
Y3Rpb25zIHsKIH07CiAKIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUZpbHRlcihDU1NQYXJzZXJU
b2tlblJhbmdlJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYsIEFsbG93ZWRGaWx0ZXJGdW5jdGlv
bnMpOwotUmVmUHRyPENTU1NoYWRvd1ZhbHVlPiBjb25zdW1lU2luZ2xlU2hhZG93KENTU1BhcnNl
clRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2RlLCBib29sIGFsbG93SW5zZXQsIGJvb2wgYWxsb3dT
cHJlYWQpOworUmVmUHRyPENTU1NoYWRvd1ZhbHVlPiBjb25zdW1lU2luZ2xlU2hhZG93KENTU1Bh
cnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiwgYm9vbCBhbGxvd0luc2V0
LCBib29sIGFsbG93U3ByZWFkKTsKIAogc3RydWN0IEZvbnRTdHlsZVJhdyB7CiAgICAgQ1NTVmFs
dWVJRCBzdHlsZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
Q29udmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTgsOCArNTgsNiBAQCBzdGF0aWMgSFNMSHVlQ2FsY3VsYXRpb25SZXN1bHQgY2FsY3Vs
YXRlCiAgICAgaWYgKGh1ZSA+PSAzNjAuMGYpCiAgICAgICAgIGh1ZSAtPSAzNjAuMGY7CiAKLSAg
ICBodWUgLz0gMzYwLjBmOwotCiAgICAgcmV0dXJuIHsgaHVlLCBtaW4sIG1heCwgY2hyb21hIH07
CiB9CiAKQEAgLTY5LDYgKzY3LDcgQEAgSFNMQTxmbG9hdD4gQ29sb3JDb252ZXJzaW9uPEhTTEE8
ZmxvYXQ+LAogICAgIGF1dG8gW3IsIGcsIGIsIGFscGhhXSA9IGNvbG9yOwogICAgIGF1dG8gW2h1
ZSwgbWluLCBtYXgsIGNocm9tYV0gPSBjYWxjdWxhdGVIU0xIdWUoY29sb3IpOwogCisgICAgZmxv
YXQgbm9ybWFsaXplZEh1ZSA9IGh1ZSAvIDM2MC4wZjsKICAgICBmbG9hdCBsaWdodG5lc3MgPSAw
LjVmICogKG1heCArIG1pbik7CiAgICAgZmxvYXQgc2F0dXJhdGlvbjsKICAgICBpZiAoIWNocm9t
YSkKQEAgLTc4LDcgKzc3LDcgQEAgSFNMQTxmbG9hdD4gQ29sb3JDb252ZXJzaW9uPEhTTEE8Zmxv
YXQ+LAogICAgIGVsc2UKICAgICAgICAgc2F0dXJhdGlvbiA9IChjaHJvbWEgLyAoMi4wZiAtICht
YXggKyBtaW4pKSk7CiAKLSAgICByZXR1cm4geyBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcywg
YWxwaGEgfTsKKyAgICByZXR1cm4geyBub3JtYWxpemVkSHVlLCBzYXR1cmF0aW9uLCBsaWdodG5l
c3MsIGFscGhhIH07CiB9CiAKIFNSR0JBPGZsb2F0PiBDb2xvckNvbnZlcnNpb248U1JHQkE8Zmxv
YXQ+LCBIU0xBPGZsb2F0Pj46OmNvbnZlcnQoY29uc3QgSFNMQTxmbG9hdD4mIGNvbG9yKQpAQCAt
MTMxLDcgKzEzMCw3IEBAIEhXQkE8ZmxvYXQ+IENvbG9yQ29udmVyc2lvbjxIV0JBPGZsb2F0PiwK
ICAgICBhdXRvIHdoaXRlbmVzcyA9IG1pbjsKICAgICBhdXRvIGJsYWNrbmVzcyA9IDEuMGYgLSBt
YXg7CiAgICAgCi0gICAgcmV0dXJuIHsgaHVlLCB3aGl0ZW5lc3MsIGJsYWNrbmVzcywgY29sb3Iu
YWxwaGEgfTsKKyAgICByZXR1cm4geyBodWUsIHdoaXRlbmVzcyAqIDEwMC4wZiwgYmxhY2tuZXNz
ICogMTAwLjBmLCBjb2xvci5hbHBoYSB9OwogfQogCiBTUkdCQTxmbG9hdD4gQ29sb3JDb252ZXJz
aW9uPFNSR0JBPGZsb2F0PiwgSFdCQTxmbG9hdD4+Ojpjb252ZXJ0KGNvbnN0IEhXQkE8ZmxvYXQ+
JiBjb2xvcikKQEAgLTEzOSw4ICsxMzgsMjQgQEAgU1JHQkE8ZmxvYXQ+IENvbG9yQ29udmVyc2lv
bjxTUkdCQTxmbG9hdAogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtY29sb3It
NC8jaHdiLXRvLXJnYgogICAgIGF1dG8gW2h1ZSwgd2hpdGVuZXNzLCBibGFja25lc3MsIGFscGhh
XSA9IGNvbG9yOwogCi0gICAgaWYgKHdoaXRlbmVzcyArIGJsYWNrbmVzcyA9PSAxLjBmKQotICAg
ICAgICByZXR1cm4geyB3aGl0ZW5lc3MsIHdoaXRlbmVzcywgd2hpdGVuZXNzLCBhbHBoYSB9Owor
ICAgIGlmICh3aGl0ZW5lc3MgKyBibGFja25lc3MgPT0gMTAwLjBmKSB7CisgICAgICAgIGF1dG8g
Z3JleSA9IHdoaXRlbmVzcyAvIDEwMC4wZjsKKyAgICAgICAgcmV0dXJuIHsgZ3JleSwgZ3JleSwg
Z3JleSwgYWxwaGEgfTsKKyAgICB9CisKKyAgICAvLyBodWVUb1JHQigpIHdhbnRzIGh1ZSBpbiB0
aGUgMC02IHJhbmdlLgorICAgIGF1dG8gbm9ybWFsaXplZEh1ZSA9IChodWUgLyAzNjAuMGYpICog
Ni4wZjsKKworICAgIGF1dG8gaHVlRm9yUmVkID0gbm9ybWFsaXplZEh1ZSArIDIuMGY7CisgICAg
YXV0byBodWVGb3JHcmVlbiA9IG5vcm1hbGl6ZWRIdWU7CisgICAgYXV0byBodWVGb3JCbHVlID0g
bm9ybWFsaXplZEh1ZSAtIDIuMGY7CisgICAgaWYgKGh1ZUZvclJlZCA+IDYuMGYpCisgICAgICAg
IGh1ZUZvclJlZCAtPSA2LjBmOworICAgIGVsc2UgaWYgKGh1ZUZvckJsdWUgPCAwLjBmKQorICAg
ICAgICBodWVGb3JCbHVlICs9IDYuMGY7CisKKyAgICBhdXRvIG5vcm1hbGl6ZWRXaGl0ZW5lc3Mg
PSB3aGl0ZW5lc3MgLyAxMDAuMGY7CisgICAgYXV0byBub3JtYWxpemVkQmxhY2tuZXNzID0gYmxh
Y2tuZXNzIC8gMTAwLjBmOwogCiAgICAgLy8gVGhpcyBpcyB0aGUgaHVlVG9SR0IgZnVuY3Rpb24g
aW4gY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29uc3QgSFNMQSYpIHdpdGggdGVtcDEgPT0g
MAogICAgIC8vIGFuZCB0ZW1wMiA9PSAxIHN0cmVuZ3RoIHJlZHVjZWQgdGhyb3VnaCBpdC4KQEAg
LTE1NCwyNSArMTY5LDE0IEBAIFNSR0JBPGZsb2F0PiBDb2xvckNvbnZlcnNpb248U1JHQkE8Zmxv
YXQKICAgICAgICAgcmV0dXJuIDAuMGY7CiAgICAgfTsKIAotICAgIGF1dG8gYXBwbHlXaGl0ZW5l
c3NCbGFja25lc3MgPSBbJl0oZmxvYXQgY29tcG9uZW50KSB7Ci0gICAgICAgIHJldHVybiAoY29t
cG9uZW50ICogKDEuMGYgLSBjb2xvci53aGl0ZW5lc3MgLSBjb2xvci5ibGFja25lc3MpKSArIGNv
bG9yLndoaXRlbmVzczsKKyAgICBhdXRvIGFwcGx5V2hpdGVuZXNzQmxhY2tuZXNzID0gW10oZmxv
YXQgY29tcG9uZW50LCBhdXRvIHdoaXRlbmVzcywgYXV0byBibGFja25lc3MpIHsKKyAgICAgICAg
cmV0dXJuIChjb21wb25lbnQgKiAoMS4wZiAtIHdoaXRlbmVzcyAtIGJsYWNrbmVzcykpICsgd2hp
dGVuZXNzOwogICAgIH07CiAKLSAgICAvLyBodWVUb1JHQigpIHdhbnRzIGh1ZSBpbiB0aGUgMC02
IHJhbmdlLgotICAgIGh1ZSAqPSA2LjBmOwotCi0gICAgYXV0byBodWVGb3JSZWQgPSBodWUgKyAy
LjBmOwotICAgIGF1dG8gaHVlRm9yR3JlZW4gPSBodWU7Ci0gICAgYXV0byBodWVGb3JCbHVlID0g
aHVlIC0gMi4wZjsKLSAgICBpZiAoaHVlRm9yUmVkID4gNi4wZikKLSAgICAgICAgaHVlRm9yUmVk
IC09IDYuMGY7Ci0gICAgZWxzZSBpZiAoaHVlRm9yQmx1ZSA8IDAuMGYpCi0gICAgICAgIGh1ZUZv
ckJsdWUgKz0gNi4wZjsKLQogICAgIHJldHVybiB7Ci0gICAgICAgIGFwcGx5V2hpdGVuZXNzQmxh
Y2tuZXNzKGh1ZVRvUkdCKGh1ZUZvclJlZCkpLAotICAgICAgICBhcHBseVdoaXRlbmVzc0JsYWNr
bmVzcyhodWVUb1JHQihodWVGb3JHcmVlbikpLAotICAgICAgICBhcHBseVdoaXRlbmVzc0JsYWNr
bmVzcyhodWVUb1JHQihodWVGb3JCbHVlKSksCisgICAgICAgIGFwcGx5V2hpdGVuZXNzQmxhY2tu
ZXNzKGh1ZVRvUkdCKGh1ZUZvclJlZCksIG5vcm1hbGl6ZWRXaGl0ZW5lc3MsIG5vcm1hbGl6ZWRC
bGFja25lc3MpLAorICAgICAgICBhcHBseVdoaXRlbmVzc0JsYWNrbmVzcyhodWVUb1JHQihodWVG
b3JHcmVlbiksIG5vcm1hbGl6ZWRXaGl0ZW5lc3MsIG5vcm1hbGl6ZWRCbGFja25lc3MpLAorICAg
ICAgICBhcHBseVdoaXRlbmVzc0JsYWNrbmVzcyhodWVUb1JHQihodWVGb3JCbHVlKSwgbm9ybWFs
aXplZFdoaXRlbmVzcywgbm9ybWFsaXplZEJsYWNrbmVzcyksCiAgICAgICAgIGFscGhhCiAgICAg
fTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTW9kZWxz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JN
b2RlbHMuaAkocmV2aXNpb24gMjcyODM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JNb2RlbHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsOSArNzYsOSBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBIU0xNb2RlbDxmbG9hdD4gewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBIV0JN
b2RlbDxmbG9hdD4gewogICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxDb2xvckNvbXBv
bmVudFJhbmdlPGZsb2F0PiwgMz4gcmFuZ2VzIHsgewotICAgICAgICB7IDAsIDEgfSwKLSAgICAg
ICAgeyAwLCAxIH0sCi0gICAgICAgIHsgMCwgMSB9CisgICAgICAgIHsgMCwgMzYwIH0sCisgICAg
ICAgIHsgMCwgMTAwIH0sCisgICAgICAgIHsgMCwgMTAwIH0KICAgICB9IH07CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzSW52ZXJ0aWJsZSA9IGZhbHNlOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420416</attachid>
            <date>2021-02-15 19:16:08 -0800</date>
            <delta_ts>2021-02-16 18:23:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221880-20210215191607.patch</filename>
            <type>text/plain</type>
            <size>28499</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzI4OTMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAyLTE1ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIENTUyBD
b2xvciA1IFJlbGF0aXZlIENvbG9yIFN5bnRheAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxODgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2Vz
RXhwZXJpbWVudGFsLnlhbWw6CisgICAgICAgIEFkZCBuZXcgZXhwZXJpbWVudGFsIHByZWZlcmVu
Y2UgZm9yIENTUyBDb2xvciA1IFJlbGF0aXZlIENvbG9yIFN5bnRheAorICAgICAgICB3aGljaCBp
cyBvZmYgYnkgZGVmYXVsdC4KKwogMjAyMS0wMi0xNSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2Zm
QGFwcGxlLmNvbT4KIAogICAgICAgICBbQVJNNjRdIENoYW5nZSBicmVhayBpbnN0cnVjdGlvbiBj
b21tZW50IHRvIGluZGljYXRlIHBvc3NpYmxlIHNlY3VyaXR5IGZhaWx1cmUKSW5kZXg6IFNvdXJj
ZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0V4cGVyaW1lbnRhbC55YW1sCShyZXZpc2lvbiAyNzI4ODYpCisrKyBTb3VyY2UvV1RGL1Nj
cmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDIwLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NjMsNiArMTYzLDE4IEBAIENTU1BhaW50aW5nQVBJRW5hYmxlZDoKICAgICAgICJFTkFCTEUoRVhQ
RVJJTUVOVEFMX0ZFQVRVUkVTKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpKSI6
IHRydWUKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAKK0NTU1JlbGF0aXZlQ29sb3JTeW50YXhFbmFi
bGVkOgorICB0eXBlOiBib29sCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiQ1NTIFJlbGF0aXZlIENv
bG9yIFN5bnRheCIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIHN1cHBvcnQg
Zm9yIENTUyBSZWxhdGl2ZSBDb2xvciBTeW50YXggZGVmaW5lZCBpbiBDU1MgQ29sb3IgNSIKKyAg
ZGVmYXVsdFZhbHVlOgorICAgIFdlYktpdExlZ2FjeToKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisg
ICAgV2ViS2l0OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJDb3JlOgorICAgICAgZGVm
YXVsdDogZmFsc2UKKwogQ1NTVHlwZWRPTUVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5S
ZWFkYWJsZU5hbWU6ICJDU1MgVHlwZWQgT00iCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzI4
OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw3NyBAQAorMjAyMS0wMi0xNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBDU1MgQ29sb3IgNSBSZWxhdGl2ZSBD
b2xvciBTeW50YXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMTg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgaW5pdGlhbCBzdXBwb3J0IGZvciBDU1MgQ29sb3IgNSBSZWxhdGl2ZSBDb2xvciBT
eW50YXggLSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLTUvI3JlbGF0aXZlLWNv
bG9ycyAKKworICAgICAgICBUaGlzIGZlYXR1cmUgaXMgb2ZmIGJ5IGRlZmF1bHQgYW5kIGNhbiBi
ZSBlbmFibGVkIHZpYSB0aGUgQ1NTUmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQKKyAgICAgICAg
ZXhwZXJpbWVudGFsIHByZWZlcmVuY2UgZmxhZy4KKworICAgICAgICBBcyB0aGlzIGlzIHRoZSBp
bml0aWFsIGNvbW1pdCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LCBpdCBpcyBub3QgeWV0IGNvbXBs
ZXRlLgorICAgICAgICBUaGlzIGFkZHMgYmFzaWMgcGFyc2luZyBhbmQgcmVzb2x1dGlvbiBmb3Ig
cmVsYXRpdmUgcmdiKCksIGhzbCgpLCBod2IoKSwgbGFiKCkKKyAgICAgICAgYW5kIGxjaCgpLCBi
dXQgZG9lcyBub3QgeWV0IGltcGxlbWVudCBzdXBwb3J0IGZvciBjYWxjKCkgZnVuY3Rpb25zIHRo
YXQgY2FuIG9wZXJhdGUKKyAgICAgICAgb24gdGhlIGNoYW5uZWwga2V5d29yZHMgbm9yIGRvZXMg
aXQgc3VwcG9ydCB1c2luZyBzeXN0ZW0ga2V5d29yZCBjb2xvcnMgYXMgdGhlCisgICAgICAgIG9y
aWdpbiBvZiB0aGUgcmVsYXRpdmUgY29sb3JzLgorCisgICAgICAgIFNvbWUgYWRkaXRpb25hbCBj
YXZlYXRlcyBhYm91dCB0aGlzIGluaXRpYWwgaW1wbGVtZW50YXRpb24gdGhhdCBuZWVkIGZ1cnRo
ZXIgCisgICAgICAgIGNsYXJpZmljYXRpb24gZnJvbSB0aGUgc3BlYyBlZGl0b3JzOiAKKworICAg
ICAgICAxLiBDdXJyZW50bHksIHdlIGFsbG93IHVzaW5nIGFueSBvZiB0aGUgc3VwcG9ydGVkIGNo
YW5uZWwgaWRlbnRpZmVycyBmb3IgYW55IGNoYW5uZWwKKyAgICAgICAgKGV2ZW4gdXNpbmcgdGhl
bSBtb3JlIHRoYW4gb25jZSkgYXMgbG9uZyBhcyB0aGUgdHlwZXMgbWF0Y2guIFRoaXMgbWVhbnMg
eW91IGNhbiBkbzoKKyAgICAgICAgCisgICAgICAgICAgICByZ2IoZnJvbSByZWQgZyByIGIpCisg
ICAgICAgIAorICAgICAgICB0byBwZXJtdXRlIHRoZSBjaGFubmVscyBpZiB0aGF0IGlzIGRlc2ly
ZWQsIGJ1dCBjYW4ndCBkbzoKKyAgICAgICAgCisgICAgICAgICAgICBoc2woZnJvbSByZWQgcyBo
IGwpCisKKyAgICAgICAgYmVjYXVzZSB0aGUgZmlyc3QgY2hhbm5lbCBleHBlY3RzIGEgbnVtYmVy
IChmb3IgaHVlKSBhbmQgInMiIGlzIGEgcGVyY2VudGFnZS4KKworICAgICAgICAyLiBGb3Igcmdi
KCksIHdoaWNoIGFsbG93cyByLCBnLCBhbmQgYiB0byBiZSBhbGwgbnVtYmVycyBvciBhbGwgcGVy
Y2VudGFnZXMsCisgICAgICAgIHdlIGN1cnJlbnRseSBkb24ndCBhc3N1bWUgZWl0aGVyIG51bWJl
ciBvciBwZXJjZW50YWdlLCBhbmQgd2FpdCB1bnRpbCBzb21lCisgICAgICAgIGNvbnN0YW50IHZh
bHVlIGlzIHByb3ZpZGVkIHRvIHNldCB0aGUgdHlwZS4gVGhhdCBtZWFucyB0aGF0OgorICAgICAg
ICAKKyAgICAgICAgICAgIHJnYihmcm9tIHJlZCByIGcgMTApCisKKyAgICAgICAgd2lsbCB0cmVh
dCByLCBhbmcgZyBhcyBudW1iZXJzLCBidXQ6CisgICAgICAgIAorICAgICAgICAgICAgcmdiKGZy
b20gcmVkIHIgZyAxMCUpCisKKyAgICAgICAgd2lsbCB0cmVhdCByIGFuZCBnIGFzIHBlcmNlbnRh
Z2VzLiBUaGlzIGlzIG5vdCBjdXJyZW50bHkgb2JzZXJ2YWJsZSBvdGhlciB0aGFuCisgICAgICAg
IHRoYXQgd2UgcmVqZWN0IHNvbWV0aGluZyB0aGF0IG1peGVzIHRoZSB0d28sIHN1Y2ggYXMKKyAg
ICAgICAgCisgICAgICAgICAgICByZ2IoZnJvbSByZWQgciAxMCAxMCUpCisKKyAgICAgICAgYnV0
IHdpbGwgYmUgZnVsbHkgb2JzZXJ2YWJsZSBvbmNlIHByb2Nlc3NpbmcgdGhlIGNoYW5uZWxzIHZp
YSBjYWxjKCkgaXMgc3VwcG9ydGVkLgorCisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMu
aW46CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyQ29u
dGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6Omhhc2gpOgor
ICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZU9yaWdpbkNvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZU9w
dGlvbmFsQWxwaGFPcklkZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
SGVscGVyczo6Y29uc3VtZUh1ZU9ySWRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lTnVtYmVyT3JJZGVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVQZXJjZW50T3JJZGVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmV4dHJhY3RDaGFubmVsVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpyZXNvbHZl
UmVsYXRpdmVDb2xvckNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzOjpwYXJzZVJlbGF0aXZlUkdCUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlUkdCUGFyYW1ldGVycyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlUmVsYXRpdmVIU0xQYXJh
bWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6cGFy
c2VIU0xQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVs
cGVyczo6cGFyc2VSZWxhdGl2ZUhXQlBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZUhXQlBhcmFtZXRlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZVJlbGF0aXZlTGFiUGFyYW1ldGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlTGFi
UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6
OnBhcnNlUmVsYXRpdmVMQ0hQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5UGFyc2VySGVscGVyczo6cGFyc2VMQ0hQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6cGFyc2VDb2xvckZ1bmN0aW9uKToKKwogMjAyMS0w
Mi0xNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBb
bWFjT1NdIENvbm5lY3QgVG91Y2ggQmFyIHRvIE1lZGlhU2Vzc2lvbgpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHJldmlzaW9uIDI3Mjg4NikKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjY2LDYg
KzEyNjYsMjUgQEAgbGFiCiBsY2gKIC8vY29sb3IKIAorLy8gcmVsYXRpdmUgY29sb3IgaWRlbnRp
ZmllcnMKKy8vIGZyb20KK3IKK2cKK2IKK2gKK3MKK2wKKy8vIGgKK3cKKy8vIGIKKy8vIGwKK2EK
Ky8vIGIKKy8vIGwKK2MKKy8vIGgKKy8vIGFscGhhCisKIC8vIHRyYW5zZm9ybQogbWF0cml4CiBt
YXRyaXgzZApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNv
bnRleHQuY3BwCShyZXZpc2lvbiAyNzI4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlckNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3Nyw3IEBAIENT
U1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoY29uc3QKICAgICAsIGxlZ2FjeU92ZXJm
bG93U2Nyb2xsaW5nVG91Y2hFbmFibGVkIHsgc2hvdWxkRW5hYmxlTGVnYWN5T3ZlcmZsb3dTY3Jv
bGxpbmdUb3VjaChkb2N1bWVudCkgfQogI2VuZGlmCiAgICAgLCBvdmVyc2Nyb2xsQmVoYXZpb3JF
bmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5vdmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVkKCkg
fQorICAgICwgcmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQgeyBkb2N1bWVudC5zZXR0aW5ncygp
LmNzc1JlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkKCkgfQogICAgICwgc2Nyb2xsQmVoYXZpb3JF
bmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5DU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFi
bGVkKCkgfQogICAgICwgc3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkIHsgZG9jdW1lbnQuc2V0
dGluZ3MoKS5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQoKSB9CiAjaWYgRU5BQkxFKFRFWFRf
QVVUT1NJWklORykKQEAgLTEwOSw2ICsxMTAsNyBAQCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYgCiAgICAgICAgICYmIGEubGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3Vj
aEVuYWJsZWQgPT0gYi5sZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoRW5hYmxlZAogI2VuZGlm
CiAgICAgICAgICYmIGEub3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZCA9PSBiLm92ZXJzY3JvbGxC
ZWhhdmlvckVuYWJsZWQKKyAgICAgICAgJiYgYS5yZWxhdGl2ZUNvbG9yU3ludGF4RW5hYmxlZCA9
PSBiLnJlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkCiAgICAgICAgICYmIGEuc2Nyb2xsQmVoYXZp
b3JFbmFibGVkID09IGIuc2Nyb2xsQmVoYXZpb3JFbmFibGVkCiAgICAgICAgICYmIGEuc3ByaW5n
VGltaW5nRnVuY3Rpb25FbmFibGVkID09IGIuc3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkCiAj
aWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCShyZXZpc2lvbiAyNzI4ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NiArNjcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBsZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNo
RW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKICAgICBib29sIG92ZXJzY3JvbGxCZWhhdmlvckVu
YWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgcmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQgeyBm
YWxzZSB9OwogICAgIGJvb2wgc2Nyb2xsQmVoYXZpb3JFbmFibGVkIHsgZmFsc2UgfTsKICAgICBi
b29sIHNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKFRF
WFRfQVVUT1NJWklORykKQEAgLTExOCw3ICsxMTksOCBAQCBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4
dEhhc2ggewogICAgICAgICAgICAgJiBrZXkuc2Nyb2xsQmVoYXZpb3JFbmFibGVkICAgICAgICAg
ICAgICAgICAgICAgPDwgMTIKICAgICAgICAgICAgICYga2V5LmluZGl2aWR1YWxUcmFuc2Zvcm1Q
cm9wZXJ0aWVzRW5hYmxlZCAgICAgIDw8IDEzCiAgICAgICAgICAgICAmIGtleS5vdmVyc2Nyb2xs
QmVoYXZpb3JFbmFibGVkICAgICAgICAgICAgICAgICA8PCAxNAotICAgICAgICAgICAgJiBrZXku
bW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMTU7IC8vIEtlZXAg
dGhpcyBsYXN0LgorICAgICAgICAgICAgJiBrZXkucmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQg
ICAgICAgICAgICAgICAgPDwgMTUKKyAgICAgICAgICAgICYga2V5Lm1vZGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDE2OyAvLyBLZWVwIHRoaXMgbGFzdC4KICAgICAg
ICAgaGFzaCBePSBXVEY6OmludEhhc2goYml0cyk7CiAgICAgICAgIHJldHVybiBoYXNoOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VySGVscGVycy5jcHAJKHJldmlzaW9uIDI3Mjg4NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjkwLDYgKzY5MCwyNyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVVcmwo
Q1NTCiAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUodXJs
LnRvU3RyaW5nKCksIENTU1VuaXRUeXBlOjpDU1NfVVJJKTsKIH0KIAorc3RhdGljIENvbG9yIGNv
bnN1bWVPcmlnaW5Db2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJz
ZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIGF1dG8gdmFsdWUgPSBjb25zdW1lQ29sb3IoYXJn
cywgY29udGV4dCk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGlmICh2YWx1ZS0+aXNSR0JDb2xvcigpKQorICAgICAgICByZXR1cm4gdmFsdWUtPmNvbG9yKCk7
CisKKyAgICBBU1NFUlQodmFsdWUtPmlzVmFsdWVJRCgpKTsKKyAgICBhdXRvIGtleXdvcmQgPSB2
YWx1ZS0+dmFsdWVJRCgpOworCisgICAgLy8gRklYTUU6IFdlIGRvbid0IGhhdmUgZW5vdWdoIGNv
bnRleHQgaW4gdGhlIHBhcnNlciB0byByZXNvbHZpbmcgYSBzeXN0ZW0ga2V5d29yZAorICAgIC8v
IGNvcnJlY3RseS4gV2Ugc2hvdWxkIHBhY2thZ2UgdXAgdGhlIHJlbGF0aXZlIGNvbG9yIHBhcmFt
ZXRlcnMgYW5kIHJlc29sdmUgdGhlCisgICAgLy8gd2hvbGUgdGhpbmcgYXQgdGhlIGFwcHJvcHJp
YXRlIHRpbWUgd2hlbiB0aGUgb3JpZ2luIGNvbG9yIGlzIGEgc3lzdGVtIGtleXdvcmQuCisgICAg
aWYgKFN0eWxlQ29sb3I6OmlzU3lzdGVtQ29sb3Ioa2V5d29yZCkpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICByZXR1cm4gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChrZXl3b3JkLCB7
IH0pOworfQorCiBzdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lT3B0aW9uYWxBbHBoYShD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1
ZGluZ1doaXRlc3BhY2UocmFuZ2UpKQpAQCAtNzAxLDYgKzcyMiwxNyBAQCBzdGF0aWMgT3B0aW9u
YWw8ZG91YmxlPiBjb25zdW1lT3B0aW9uYWxBCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0K
IAordGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8
VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lT3B0aW9uYWxBbHBoYU9ySWRlbnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKGF1dG8gYWxwaGEgPSBjb25z
dW1lT3B0aW9uYWxBbHBoYShyYW5nZSkpCisgICAgICAgIHJldHVybiB7ICphbHBoYSB9OworCisg
ICAgaWYgKGF1dG8gaWRlbnQgPSBjb25zdW1lSWRlbnRSYXc8YWxsb3dlZElkZW50cy4uLj4ocmFu
Z2UpKQorICAgICAgICByZXR1cm4geyAqaWRlbnQgfTsKKworICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Cit9CisKIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVIdWUoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
aWYgKGF1dG8gYW5nbGUgPSBjb25zdW1lQW5nbGVSYXcocmFuZ2UsIGNvbnRleHQubW9kZSwgVW5p
dGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0bGVzc1plcm9RdWlyazo6Rm9yYmlkKSkKQEAgLTcwOSwx
MSArNzQxLDc5IEBAIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVIdWUoQ1NTUGEKICAg
ICByZXR1cm4gY29uc3VtZU51bWJlclJhdyhyYW5nZSk7CiB9CiAKK3RlbXBsYXRlPENTU1ZhbHVl
SUQuLi4gYWxsb3dlZElkZW50cz4gc3RhdGljIE9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBDU1NW
YWx1ZUlEPj4gY29uc3VtZUh1ZU9ySWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNv
bnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKGF1dG8gaHVlID0gY29u
c3VtZUh1ZShyYW5nZSwgY29udGV4dCkpCisgICAgICAgIHJldHVybiB7ICpodWUgfTsKKworICAg
IGlmIChhdXRvIGlkZW50ID0gY29uc3VtZUlkZW50UmF3PGFsbG93ZWRJZGVudHMuLi4+KHJhbmdl
KSkKKyAgICAgICAgcmV0dXJuIHsgKmlkZW50IH07CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworfQorCiBzdGF0aWMgZG91YmxlIG5vcm1hbGl6ZUh1ZShkb3VibGUgaHVlKQogewogICAgIHJl
dHVybiBzdGQ6OmZtb2Qoc3RkOjpmbW9kKGh1ZSwgMzYwLjApICsgMzYwLjAsIDM2MC4wKTsKIH0K
IAordGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8
VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lTnVtYmVyT3JJZGVudChDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1lTnVt
YmVyUmF3KHJhbmdlKSkKKyAgICAgICAgcmV0dXJuIHsgKm51bWJlciB9OworCisgICAgaWYgKGF1
dG8gaWRlbnQgPSBjb25zdW1lSWRlbnRSYXc8YWxsb3dlZElkZW50cy4uLj4ocmFuZ2UpKQorICAg
ICAgICByZXR1cm4geyAqaWRlbnQgfTsKKworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisK
K3RlbXBsYXRlPENTU1ZhbHVlSUQuLi4gYWxsb3dlZElkZW50cz4gc3RhdGljIE9wdGlvbmFsPFZh
cmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlEPj4gY29uc3VtZVBlcmNlbnRPcklkZW50KENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChhdXRvIHBlcmNlbnQgPSBjb25zdW1lUGVy
Y2VudFJhdyhyYW5nZSkpCisgICAgICAgIHJldHVybiB7ICpwZXJjZW50IH07CisKKyAgICBpZiAo
YXV0byBpZGVudCA9IGNvbnN1bWVJZGVudFJhdzxhbGxvd2VkSWRlbnRzLi4uPihyYW5nZSkpCisg
ICAgICAgIHJldHVybiB7ICppZGVudCB9OworCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30K
KwordGVtcGxhdGU8Q1NTVmFsdWVJRCBDMSwgQ1NTVmFsdWVJRCBDMiwgQ1NTVmFsdWVJRCBDMywg
Q1NTVmFsdWVJRCBBbHBoYUNoYW5uZWwsIHR5cGVuYW1lIENvbG9yVHlwZT4gc3RhdGljIGRlY2x0
eXBlKGF1dG8pIGV4dHJhY3RDaGFubmVsVmFsdWUoQ1NTVmFsdWVJRCBjaGFubmVsLCBjb25zdCBD
b2xvclR5cGUmIG9yaWdpbkNvbG9yKQoreworICAgIGF1dG8gY29tcG9uZW50cyA9IGFzQ29sb3JD
b21wb25lbnRzKG9yaWdpbkNvbG9yKTsKKyAgICBzd2l0Y2ggKGNoYW5uZWwpIHsKKyAgICBjYXNl
IEMxOgorICAgICAgICByZXR1cm4gY29tcG9uZW50c1swXTsKKyAgICBjYXNlIEMyOgorICAgICAg
ICByZXR1cm4gY29tcG9uZW50c1sxXTsKKyAgICBjYXNlIEMzOgorICAgICAgICByZXR1cm4gY29t
cG9uZW50c1syXTsKKyAgICBjYXNlIEFscGhhQ2hhbm5lbDoKKyAgICAgICAgcmV0dXJuIGNvbXBv
bmVudHNbM107CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBjb21wb25lbnRzWzBdOworICAgIH0KK30KKwordGVtcGxhdGU8Q1NTVmFs
dWVJRCBDMSwgQ1NTVmFsdWVJRCBDMiwgQ1NTVmFsdWVJRCBDMywgQ1NTVmFsdWVJRCBBbHBoYUNo
YW5uZWwsIHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFuc2Zvcm1lcj4gc3Rh
dGljIGRlY2x0eXBlKGF1dG8pIHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbChjb25zdCBWYXJp
YW50PGRvdWJsZSwgQ1NTVmFsdWVJRD4mIHBhcnNlZENoYW5uZWwsIGNvbnN0IENvbG9yVHlwZSYg
b3JpZ2luQ29sb3IsIFZhbHVlVHJhbnNmb3JtZXImJiB2YWx1ZVRyYW5zZm9ybWVyKQoreworICAg
IHJldHVybiBzd2l0Y2hPbihwYXJzZWRDaGFubmVsLAorICAgICAgICBbJl0gKGRvdWJsZSB2YWx1
ZSkgeworICAgICAgICAgICAgcmV0dXJuIHZhbHVlVHJhbnNmb3JtZXIodmFsdWUpOworICAgICAg
ICB9LAorICAgICAgICBbJl0gKENTU1ZhbHVlSUQgY2hhbm5lbCkgeworICAgICAgICAgICAgcmV0
dXJuIGV4dHJhY3RDaGFubmVsVmFsdWU8QzEsIEMyLCBDMywgQWxwaGFDaGFubmVsPihjaGFubmVs
LCBvcmlnaW5Db2xvcik7CisgICAgICAgIH0KKyAgICApOworfQorCit0ZW1wbGF0ZTxDU1NWYWx1
ZUlEIEMxLCBDU1NWYWx1ZUlEIEMyLCBDU1NWYWx1ZUlEIEMzLCBDU1NWYWx1ZUlEIEFscGhhQ2hh
bm5lbCwgdHlwZW5hbWUgQ29sb3JUeXBlPiBzdGF0aWMgZGVjbHR5cGUoYXV0bykgcmVzb2x2ZVJl
bGF0aXZlQ29sb3JDaGFubmVsKGNvbnN0IFZhcmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlEPiYgcGFy
c2VkQ2hhbm5lbCwgY29uc3QgQ29sb3JUeXBlJiBvcmlnaW5Db2xvcikKK3sKKyAgICByZXR1cm4g
cmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPEMxLCBDMiwgQzMsIEFscGhhQ2hhbm5lbD4ocGFy
c2VkQ2hhbm5lbCwgb3JpZ2luQ29sb3IsIFtdKGF1dG8gdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9
KTsKK30KKwogZW51bSBjbGFzcyBSR0JDb21wb25lbnRUeXBlIHsgTnVtYmVyLCBQZXJjZW50YWdl
IH07CiAKIHN0YXRpYyB1aW50OF90IGNsYW1wUkdCQ29tcG9uZW50KGRvdWJsZSB2YWx1ZSwgUkdC
Q29tcG9uZW50VHlwZSBjb21wb25lbnRUeXBlKQpAQCAtNzQ4LDExICs4NDgsMTAyIEBAIHN0YXRp
YyBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVSR0JPckhTTE8KICAgICByZXR1cm4gY29uc3VtZU51
bWJlck9yUGVyY2VudERpdmlkZWRCeTEwMFJhdyhhcmdzKTsKIH0KIAotc3RhdGljIENvbG9yIHBh
cnNlUkdCUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYpCitzdGF0aWMgQ29sb3IgcGFyc2VSZWxhdGl2ZVJHQlBhcmFtZXRlcnMoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkK
K3sKKyAgICBBU1NFUlQoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pOworICAgIGNv
bnN1bWVJZGVudFJhdyhhcmdzKTsKKworICAgIGF1dG8gb3JpZ2luQ29sb3IgPSBjb25zdW1lT3Jp
Z2luQ29sb3IoYXJncywgY29udGV4dCk7CisgICAgaWYgKCFvcmlnaW5Db2xvci5pc1ZhbGlkKCkp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBzdHJ1Y3QgQ29tcG9uZW50IHsKKyAgICAgICAg
VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+IHZhbHVlOworICAgICAgICBPcHRpb25hbDxSR0JD
b21wb25lbnRUeXBlPiB0eXBlOworICAgIH07CisKKyAgICBhdXRvIGNvbnN1bWVDb21wb25lbnQg
PSBbXShhdXRvJiBhcmdzLCBPcHRpb25hbDxSR0JDb21wb25lbnRUeXBlPiBjb21wb25lbnRUeXBl
KSAtPiBPcHRpb25hbDxDb21wb25lbnQ+IHsKKyAgICAgICAgaWYgKCFjb21wb25lbnRUeXBlKSB7
CisgICAgICAgICAgICBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1lTnVtYmVyUmF3KGFyZ3MpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBDb21wb25lbnQgeyAqbnVtYmVyLCBSR0JDb21wb25lbnRU
eXBlOjpOdW1iZXIgfTsKKyAgICAgICAgICAgIGlmIChhdXRvIHBlcmNlbnQgPSBjb25zdW1lUGVy
Y2VudFJhdyhhcmdzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29tcG9uZW50IHsgKnBlcmNl
bnQsIFJHQkNvbXBvbmVudFR5cGU6OlBlcmNlbnRhZ2UgfTsKKyAgICAgICAgICAgIGlmIChhdXRv
IGNoYW5uZWwgPSBjb25zdW1lSWRlbnRSYXc8Q1NTVmFsdWVSLCBDU1NWYWx1ZUcsIENTU1ZhbHVl
QiwgQ1NTVmFsdWVBbHBoYT4oYXJncykpCisgICAgICAgICAgICAgICAgcmV0dXJuIENvbXBvbmVu
dCB7ICpjaGFubmVsLCBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKCpjb21wb25lbnRU
eXBlKSB7CisgICAgICAgICAgICBjYXNlIFJHQkNvbXBvbmVudFR5cGU6Ok51bWJlcjogeworICAg
ICAgICAgICAgICAgIGlmIChhdXRvIG51bWJlciA9IGNvbnN1bWVOdW1iZXJSYXcoYXJncykpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBDb21wb25lbnQgeyAqbnVtYmVyLCBSR0JDb21wb25l
bnRUeXBlOjpOdW1iZXIgfTsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBjaGFubmVsID0gY29u
c3VtZUlkZW50UmF3PENTU1ZhbHVlUiwgQ1NTVmFsdWVHLCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxw
aGE+KGFyZ3MpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ29tcG9uZW50IHsgKmNoYW5u
ZWwsIFJHQkNvbXBvbmVudFR5cGU6Ok51bWJlciB9OworICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFJHQkNvbXBvbmVu
dFR5cGU6OlBlcmNlbnRhZ2U6IHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBwZXJjZW50ID0g
Y29uc3VtZVBlcmNlbnRSYXcoYXJncykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBDb21w
b25lbnQgeyAqcGVyY2VudCwgUkdCQ29tcG9uZW50VHlwZTo6UGVyY2VudGFnZSB9OworICAgICAg
ICAgICAgICAgIGlmIChhdXRvIGNoYW5uZWwgPSBjb25zdW1lSWRlbnRSYXc8Q1NTVmFsdWVSLCBD
U1NWYWx1ZUcsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oYXJncykpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBDb21wb25lbnQgeyAqY2hhbm5lbCwgUkdCQ29tcG9uZW50VHlwZTo6UGVy
Y2VudGFnZSB9OworICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgT3B0aW9uYWw8
UkdCQ29tcG9uZW50VHlwZT4gY29tcG9uZW50VHlwZTsKKyAgICBzdGQ6OmFycmF5PFZhcmlhbnQ8
ZG91YmxlLCBDU1NWYWx1ZUlEPiwgMz4gY29tcG9uZW50czsKKworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCAzOyArK2kpIHsKKyAgICAgICAgYXV0byBjb21wb25lbnQgPSBjb25zdW1lQ29t
cG9uZW50KGFyZ3MsIGNvbXBvbmVudFR5cGUpOworICAgICAgICBpZiAoIWNvbXBvbmVudCkKKyAg
ICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIGNvbXBvbmVudHNbaV0gPSBjb21wb25lbnQt
PnZhbHVlOworICAgICAgICBjb21wb25lbnRUeXBlID0gY29tcG9uZW50LT50eXBlOworICAgIH0K
KworICAgIGF1dG8gYWxwaGEgPSBjb25zdW1lT3B0aW9uYWxBbHBoYU9ySWRlbnQ8Q1NTVmFsdWVS
LCBDU1NWYWx1ZUcsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oYXJncyk7CisgICAgaWYgKCFh
bHBoYSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgLy8gQWZ0ZXIgcGFyc2luZywgY29udmVydCBpZGVudGlm
aWVycyB0byB2YWx1ZXMgZnJvbSB0aGUgb3JpZ2luIGNvbG9yLgorCisgICAgLy8gRklYTUU6IERv
IHdlIHdhbnQgdG8gYmVpbmcgZG9pbmcgdGhpcyBpbiB1aW50OF90IHZhbHVlcz8gT3Igc2hvdWxk
IHdlIHVzZSBoaWdoZXIgcHJlY2lzaW9uCisgICAgLy8gYW5kIGNsYW1wIGF0IHRoZSBlbmQuIEl0
IHdvbid0IG1ha2UgYSBkaWZmZXJlbmNlIHVudGlsIHdlIHN1cHBvcnQgY2FsY3VsYXRpb25zIG9u
IHRoZSBvcmlnaW5zCisgICAgLy8gY29tcG9uZW50cy4KKyAgICBhdXRvIG9yaWdpbkNvbG9yQXNT
UkdCID0gb3JpZ2luQ29sb3IudG9TUkdCQUxvc3N5PHVpbnQ4X3Q+KCk7CisKKyAgICBhdXRvIHJl
c29sdmVkQ29tcG9uZW50VHlwZSA9IGNvbXBvbmVudFR5cGUudmFsdWVPcihSR0JDb21wb25lbnRU
eXBlOjpQZXJjZW50YWdlKTsKKworICAgIHVpbnQ4X3QgcmVzb2x2ZUNvbXBvbmVudHNbM107Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgICAgICByZXNvbHZlQ29t
cG9uZW50c1tpXSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZVIsIENTU1Zh
bHVlRywgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPihjb21wb25lbnRzW2ldLCBvcmlnaW5Db2xv
ckFzU1JHQiwgW3Jlc29sdmVkQ29tcG9uZW50VHlwZV0oYXV0byB2YWx1ZSkgeworICAgICAgICAg
ICAgcmV0dXJuIGNsYW1wUkdCQ29tcG9uZW50KHZhbHVlLCByZXNvbHZlZENvbXBvbmVudFR5cGUp
OworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBhdXRvIHJlc29sdmVkQWxwaGEgPSByZXNvbHZl
UmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVSLCBDU1NWYWx1ZUcsIENTU1ZhbHVlQiwgQ1NT
VmFsdWVBbHBoYT4oKmFscGhhLCBvcmlnaW5Db2xvckFzU1JHQiwgW10oYXV0byB2YWx1ZSkgewor
ICAgICAgICByZXR1cm4gY29udmVydEZsb2F0QWxwaGFUbzx1aW50OF90Pih2YWx1ZSk7CisgICAg
fSk7CisKKyAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyByZXNvbHZlQ29tcG9uZW50c1swXSwg
cmVzb2x2ZUNvbXBvbmVudHNbMV0sIHJlc29sdmVDb21wb25lbnRzWzJdLCByZXNvbHZlZEFscGhh
IH07Cit9CisKK2VudW0gY2xhc3MgUkdCRnVuY3Rpb25Nb2RlIHsgUkdCLCBSR0JBIH07CisKK3Rl
bXBsYXRlPFJHQkZ1bmN0aW9uTW9kZSBNb2RlPiBzdGF0aWMgQ29sb3IgcGFyc2VSR0JQYXJhbWV0
ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBj
b250ZXh0KQogewogICAgIEFTU0VSVChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1Zh
bHVlUmdiIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVSZ2JhKTsKICAg
ICBhdXRvIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOwogCisgICAgaWYgY29uc3RleHBy
IChNb2RlID09IFJHQkZ1bmN0aW9uTW9kZTo6UkdCKSB7CisgICAgICAgIGlmIChjb250ZXh0LnJl
bGF0aXZlQ29sb3JTeW50YXhFbmFibGVkICYmIGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVG
cm9tKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlUmVsYXRpdmVSR0JQYXJhbWV0ZXJzKGFyZ3Ms
IGNvbnRleHQpOworICAgIH0KKwogICAgIHN0cnVjdCBJbml0aWFsQ29tcG9uZW50IHsKICAgICAg
ICAgZG91YmxlIHZhbHVlOwogICAgICAgICBSR0JDb21wb25lbnRUeXBlIHR5cGU7CkBAIC04MTEs
MTEgKzEwMDIsNjAgQEAgc3RhdGljIENvbG9yIHBhcnNlUkdCUGFyYW1ldGVycyhDU1NQYXJzZQog
ICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IG5vcm1hbGl6ZWRSZWQsIG5vcm1hbGl6ZWRHcmVl
biwgbm9ybWFsaXplZEJsdWUsIG5vcm1hbGl6ZWRBbHBoYSB9OwogfQogCi1zdGF0aWMgQ29sb3Ig
cGFyc2VIU0xQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBjb250ZXh0KQorc3RhdGljIENvbG9yIHBhcnNlUmVsYXRpdmVIU0xQYXJh
bWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQpCit7CisgICAgQVNTRVJUKGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVGcm9t
KTsKKyAgICBjb25zdW1lSWRlbnRSYXcoYXJncyk7CisKKyAgICBhdXRvIG9yaWdpbkNvbG9yID0g
Y29uc3VtZU9yaWdpbkNvbG9yKGFyZ3MsIGNvbnRleHQpOworICAgIGlmICghb3JpZ2luQ29sb3Iu
aXNWYWxpZCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBodWUgPSBjb25zdW1l
SHVlT3JJZGVudDxDU1NWYWx1ZUg+KGFyZ3MsIGNvbnRleHQpOworICAgIGlmICghaHVlKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBzYXR1cmF0aW9uID0gY29uc3VtZVBlcmNlbnRP
cklkZW50PENTU1ZhbHVlUywgQ1NTVmFsdWVMLCBDU1NWYWx1ZUFscGhhPihhcmdzKTsKKyAgICBp
ZiAoIXNhdHVyYXRpb24pCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGxpZ2h0bmVz
cyA9IGNvbnN1bWVQZXJjZW50T3JJZGVudDxDU1NWYWx1ZVMsIENTU1ZhbHVlTCwgQ1NTVmFsdWVB
bHBoYT4oYXJncyk7CisgICAgaWYgKCFsaWdodG5lc3MpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICBhdXRvIGFscGhhID0gY29uc3VtZU9wdGlvbmFsQWxwaGFPcklkZW50PENTU1ZhbHVlUywg
Q1NTVmFsdWVMLCBDU1NWYWx1ZUFscGhhPihhcmdzKTsKKyAgICBpZiAoIWFscGhhKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgaWYgKCFhcmdzLmF0RW5kKCkpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICAvLyBBZnRlciBwYXJzaW5nLCBjb252ZXJ0IGlkZW50aWZpZXJzIHRvIHZhbHVl
cyBmcm9tIHRoZSBvcmlnaW4gY29sb3IuCisKKyAgICBhdXRvIG9yaWdpbkNvbG9yQXNIU0wgPSBv
cmlnaW5Db2xvci50b0NvbG9yVHlwZUxvc3N5PEhTTEE8ZmxvYXQ+PigpOworCisgICAgYXV0byBy
ZXNvbHZlZEh1ZSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUgsIENTU1Zh
bHVlUywgQ1NTVmFsdWVMLCBDU1NWYWx1ZUFscGhhPigqaHVlLCBvcmlnaW5Db2xvckFzSFNMLCBb
XShhdXRvIGh1ZSkgeworICAgICAgICByZXR1cm4gbm9ybWFsaXplSHVlKGh1ZSk7CisgICAgfSk7
CisgICAgYXV0byByZXNvbHZlZFNhdHVyYXRpb24gPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5u
ZWw8Q1NTVmFsdWVILCBDU1NWYWx1ZVMsIENTU1ZhbHVlTCwgQ1NTVmFsdWVBbHBoYT4oKnNhdHVy
YXRpb24sIG9yaWdpbkNvbG9yQXNIU0wpOworICAgIGF1dG8gcmVzb2x2ZWRMaWdodG5lc3MgPSBy
ZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVILCBDU1NWYWx1ZVMsIENTU1ZhbHVl
TCwgQ1NTVmFsdWVBbHBoYT4oKmxpZ2h0bmVzcywgb3JpZ2luQ29sb3JBc0hTTCk7CisgICAgYXV0
byByZXNvbHZlZEFscGhhID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlSCwg
Q1NTVmFsdWVTLCBDU1NWYWx1ZUwsIENTU1ZhbHVlQWxwaGE+KCphbHBoYSwgb3JpZ2luQ29sb3JB
c0hTTCk7CisKKyAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+PihIU0xBPGZs
b2F0PiB7IHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZEh1ZSksIHN0YXRpY19jYXN0PGZsb2F0
PihyZXNvbHZlZFNhdHVyYXRpb24pLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRMaWdodG5l
c3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRBbHBoYSkgfSk7Cit9CisKK2VudW0gY2xh
c3MgSFNMRnVuY3Rpb25Nb2RlIHsgSFNMLCBIU0xBIH07CisKK3RlbXBsYXRlPEhTTEZ1bmN0aW9u
TW9kZSBNb2RlPiBzdGF0aWMgQ29sb3IgcGFyc2VIU0xQYXJhbWV0ZXJzKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogewogICAgIEFT
U0VSVChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlSHNsIHx8IHJhbmdlLnBl
ZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVIc2xhKTsKICAgICBhdXRvIGFyZ3MgPSBjb25z
dW1lRnVuY3Rpb24ocmFuZ2UpOwogCisgICAgaWYgY29uc3RleHByIChNb2RlID09IEhTTEZ1bmN0
aW9uTW9kZTo6SFNMKSB7CisgICAgICAgIGlmIChjb250ZXh0LnJlbGF0aXZlQ29sb3JTeW50YXhF
bmFibGVkICYmIGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVGcm9tKQorICAgICAgICAgICAg
cmV0dXJuIHBhcnNlUmVsYXRpdmVIU0xQYXJhbWV0ZXJzKGFyZ3MsIGNvbnRleHQpOworICAgIH0K
KwogICAgIGF1dG8gaHVlID0gY29uc3VtZUh1ZShhcmdzLCBjb250ZXh0KTsKICAgICBpZiAoIWh1
ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTg3MiwxMSArMTExMiw1OCBAQCBzdGF0aWMgV2hp
dGVuZXNzQmxhY2tuZXNzIG5vcm1hbGl6ZVdoaXRlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
c3RhdGljIENvbG9yIHBhcnNlUmVsYXRpdmVIV0JQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFu
Z2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQVNTRVJU
KGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVGcm9tKTsKKyAgICBjb25zdW1lSWRlbnRSYXco
YXJncyk7CisKKyAgICBhdXRvIG9yaWdpbkNvbG9yID0gY29uc3VtZU9yaWdpbkNvbG9yKGFyZ3Ms
IGNvbnRleHQpOworICAgIGlmICghb3JpZ2luQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgYXV0byBodWUgPSBjb25zdW1lSHVlT3JJZGVudDxDU1NWYWx1ZUg+KGFy
Z3MsIGNvbnRleHQpOworICAgIGlmICghaHVlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
YXV0byB3aGl0ZW5lc3MgPSBjb25zdW1lUGVyY2VudE9ySWRlbnQ8Q1NTVmFsdWVXLCBDU1NWYWx1
ZUIsIENTU1ZhbHVlQWxwaGE+KGFyZ3MpOworICAgIGlmICghd2hpdGVuZXNzKQorICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgYXV0byBibGFja25lc3MgPSBjb25zdW1lUGVyY2VudE9ySWRlbnQ8
Q1NTVmFsdWVXLCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KGFyZ3MpOworICAgIGlmICghYmxh
Y2tuZXNzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBhbHBoYSA9IGNvbnN1bWVP
cHRpb25hbEFscGhhT3JJZGVudDxDU1NWYWx1ZVcsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4o
YXJncyk7CisgICAgaWYgKCFhbHBoYSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmICgh
YXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgLy8gQWZ0ZXIgcGFyc2lu
ZywgY29udmVydCBpZGVudGlmaWVycyB0byB2YWx1ZXMgZnJvbSB0aGUgb3JpZ2luIGNvbG9yLgor
CisgICAgYXV0byBvcmlnaW5Db2xvckFzSFdCID0gb3JpZ2luQ29sb3IudG9Db2xvclR5cGVMb3Nz
eTxIV0JBPGZsb2F0Pj4oKTsKKworICAgIGF1dG8gcmVzb2x2ZWRIdWUgPSByZXNvbHZlUmVsYXRp
dmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVILCBDU1NWYWx1ZVcsIENTU1ZhbHVlQiwgQ1NTVmFsdWVB
bHBoYT4oKmh1ZSwgb3JpZ2luQ29sb3JBc0hXQiwgW10oYXV0byBodWUpIHsKKyAgICAgICAgcmV0
dXJuIG5vcm1hbGl6ZUh1ZShodWUpOworICAgIH0pOworICAgIGF1dG8gcmVzb2x2ZWRXaGl0ZW5l
c3MgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVILCBDU1NWYWx1ZVcsIENT
U1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oKndoaXRlbmVzcywgb3JpZ2luQ29sb3JBc0hXQik7Cisg
ICAgYXV0byByZXNvbHZlZEJsYWNrbmVzcyA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxD
U1NWYWx1ZUgsIENTU1ZhbHVlVywgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPigqYmxhY2tuZXNz
LCBvcmlnaW5Db2xvckFzSFdCKTsKKyAgICBhdXRvIHJlc29sdmVkQWxwaGEgPSByZXNvbHZlUmVs
YXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVILCBDU1NWYWx1ZVcsIENTU1ZhbHVlQiwgQ1NTVmFs
dWVBbHBoYT4oKmFscGhhLCBvcmlnaW5Db2xvckFzSFdCKTsKKworICAgIGF1dG8gW25vcm1hbGl6
ZWRXaGl0bmVzcywgbm9ybWFsaXplZEJsYWNrbmVzc10gPSBub3JtYWxpemVXaGl0ZW5lc3NCbGFj
a25lc3MocmVzb2x2ZWRXaGl0ZW5lc3MsIHJlc29sdmVkQmxhY2tuZXNzKTsKKworICAgIHJldHVy
biBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KEhTTEE8ZmxvYXQ+IHsgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHJlc29sdmVkSHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRXaGl0bmVz
cyksIHN0YXRpY19jYXN0PGZsb2F0Pihub3JtYWxpemVkQmxhY2tuZXNzKSwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHJlc29sdmVkQWxwaGEpIH0pOworfQorCiBzdGF0aWMgQ29sb3IgcGFyc2VIV0JQYXJh
bWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBjb250ZXh0KQogewogICAgIEFTU0VSVChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENT
U1ZhbHVlSHdiKTsKICAgICBhdXRvIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOwogCisg
ICAgaWYgKGNvbnRleHQucmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQgJiYgYXJncy5wZWVrKCku
aWQoKSA9PSBDU1NWYWx1ZUZyb20pCisgICAgICAgIHJldHVybiBwYXJzZVJlbGF0aXZlSFdCUGFy
YW1ldGVycyhhcmdzLCBjb250ZXh0KTsKKwogICAgIGF1dG8gaHVlID0gY29uc3VtZUh1ZShhcmdz
LCBjb250ZXh0KTsKICAgICBpZiAoIWh1ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTkwMiwx
MSArMTE4OSw1NCBAQCBzdGF0aWMgQ29sb3IgcGFyc2VIV0JQYXJhbWV0ZXJzKENTU1BhcnNlCiAg
ICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oSFdCQTxmbG9hdD4geyBzdGF0
aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZEh1ZSksIHN0YXRpY19jYXN0PGZsb2F0Pihub3JtYWxp
emVkV2hpdG5lc3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZEJsYWNrbmVzcyksIHN0
YXRpY19jYXN0PGZsb2F0PigqYWxwaGEpIH0pOwogfQogCi1zdGF0aWMgQ29sb3IgcGFyc2VMYWJQ
YXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250
ZXh0JikKK3N0YXRpYyBDb2xvciBwYXJzZVJlbGF0aXZlTGFiUGFyYW1ldGVycyhDU1NQYXJzZXJU
b2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAg
IEFTU0VSVChhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbSk7CisgICAgY29uc3VtZUlk
ZW50UmF3KGFyZ3MpOworCisgICAgYXV0byBvcmlnaW5Db2xvciA9IGNvbnN1bWVPcmlnaW5Db2xv
cihhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAoIW9yaWdpbkNvbG9yLmlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gbGlnaHRuZXNzID0gY29uc3VtZVBlcmNlbnRPcklk
ZW50PENTU1ZhbHVlTCwgQ1NTVmFsdWVBbHBoYT4oYXJncyk7CisgICAgaWYgKCFsaWdodG5lc3Mp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGFWYWx1ZSA9IGNvbnN1bWVOdW1iZXJP
cklkZW50PENTU1ZhbHVlQSwgQ1NTVmFsdWVCPihhcmdzKTsKKyAgICBpZiAoIWFWYWx1ZSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gYlZhbHVlID0gY29uc3VtZU51bWJlck9ySWRl
bnQ8Q1NTVmFsdWVBLCBDU1NWYWx1ZUI+KGFyZ3MpOworICAgIGlmICghYlZhbHVlKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgYXV0byBhbHBoYSA9IGNvbnN1bWVPcHRpb25hbEFscGhhT3JJ
ZGVudDxDU1NWYWx1ZUwsIENTU1ZhbHVlQWxwaGE+KGFyZ3MpOworICAgIGlmICghYWxwaGEpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIC8vIEFmdGVyIHBhcnNpbmcsIGNvbnZlcnQgaWRlbnRpZmllcnMgdG8g
dmFsdWVzIGZyb20gdGhlIG9yaWdpbiBjb2xvci4KKworICAgIGF1dG8gb3JpZ2luQ29sb3JBc0xh
YiA9IG9yaWdpbkNvbG9yLnRvQ29sb3JUeXBlTG9zc3k8TGFiPGZsb2F0Pj4oKTsKKworICAgIGF1
dG8gcmVzb2x2ZWRMaWdodG5lc3MgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFs
dWVMLCBDU1NWYWx1ZUEsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oKmxpZ2h0bmVzcywgb3Jp
Z2luQ29sb3JBc0xhYik7CisgICAgYXV0byByZXNvbHZlZEFWYWx1ZSA9IHJlc29sdmVSZWxhdGl2
ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUwsIENTU1ZhbHVlQSwgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFs
cGhhPigqYVZhbHVlLCBvcmlnaW5Db2xvckFzTGFiKTsKKyAgICBhdXRvIHJlc29sdmVkQlZhbHVl
ID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlTCwgQ1NTVmFsdWVBLCBDU1NW
YWx1ZUIsIENTU1ZhbHVlQWxwaGE+KCpiVmFsdWUsIG9yaWdpbkNvbG9yQXNMYWIpOworICAgIGF1
dG8gcmVzb2x2ZWRBbHBoYSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUws
IENTU1ZhbHVlQSwgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPigqYWxwaGEsIG9yaWdpbkNvbG9y
QXNMYWIpOworCisgICAgcmV0dXJuIExhYjxmbG9hdD4geyBzdGF0aWNfY2FzdDxmbG9hdD4ocmVz
b2x2ZWRMaWdodG5lc3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRBVmFsdWUpLCBzdGF0
aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRCVmFsdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2
ZWRBbHBoYSkgfTsKK30KKworc3RhdGljIENvbG9yIHBhcnNlTGFiUGFyYW1ldGVycyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsK
ICAgICBBU1NFUlQocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUxhYik7CiAg
ICAgYXV0byBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKIAorICAgIGlmIChjb250ZXh0
LnJlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkICYmIGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFs
dWVGcm9tKQorICAgICAgICByZXR1cm4gcGFyc2VSZWxhdGl2ZUxhYlBhcmFtZXRlcnMoYXJncywg
Y29udGV4dCk7CisKICAgICBhdXRvIGxpZ2h0bmVzcyA9IGNvbnN1bWVQZXJjZW50UmF3KGFyZ3Mp
OwogICAgIGlmICghbGlnaHRuZXNzKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtOTI5LDExICsx
MjU5LDU0IEBAIHN0YXRpYyBDb2xvciBwYXJzZUxhYlBhcmFtZXRlcnMoQ1NTUGFyc2UKICAgICBy
ZXR1cm4gTGFiPGZsb2F0PiB7IHN0YXRpY19jYXN0PGZsb2F0PigqbGlnaHRuZXNzKSwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KCphVmFsdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4oKmJWYWx1ZSksIHN0YXRp
Y19jYXN0PGZsb2F0PigqYWxwaGEpIH07CiB9CiAKK3N0YXRpYyBDb2xvciBwYXJzZVJlbGF0aXZl
TENIUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJD
b250ZXh0JiBjb250ZXh0KQoreworICAgIEFTU0VSVChhcmdzLnBlZWsoKS5pZCgpID09IENTU1Zh
bHVlRnJvbSk7CisgICAgY29uc3VtZUlkZW50UmF3KGFyZ3MpOworCisgICAgYXV0byBvcmlnaW5D
b2xvciA9IGNvbnN1bWVPcmlnaW5Db2xvcihhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAoIW9yaWdp
bkNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gbGlnaHRu
ZXNzID0gY29uc3VtZVBlcmNlbnRPcklkZW50PENTU1ZhbHVlTCwgQ1NTVmFsdWVBbHBoYT4oYXJn
cyk7CisgICAgaWYgKCFsaWdodG5lc3MpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRv
IGNocm9tYSA9IGNvbnN1bWVOdW1iZXJPcklkZW50PENTU1ZhbHVlQywgQ1NTVmFsdWVIPihhcmdz
KTsKKyAgICBpZiAoIWNocm9tYSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gaHVl
ID0gY29uc3VtZUh1ZU9ySWRlbnQ8Q1NTVmFsdWVDLCBDU1NWYWx1ZUg+KGFyZ3MsIGNvbnRleHQp
OworICAgIGlmICghaHVlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBhbHBoYSA9
IGNvbnN1bWVPcHRpb25hbEFscGhhT3JJZGVudDxDU1NWYWx1ZUwsIENTU1ZhbHVlQWxwaGE+KGFy
Z3MpOworICAgIGlmICghYWxwaGEpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoIWFy
Z3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gb3JpZ2luQ29sb3JB
c0xDSCA9IG9yaWdpbkNvbG9yLnRvQ29sb3JUeXBlTG9zc3k8TENIQTxmbG9hdD4+KCk7CisKKyAg
ICBhdXRvIHJlc29sdmVkTGlnaHRuZXNzID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENT
U1ZhbHVlTCwgQ1NTVmFsdWVDLCBDU1NWYWx1ZUgsIENTU1ZhbHVlQWxwaGE+KCpsaWdodG5lc3Ms
IG9yaWdpbkNvbG9yQXNMQ0gpOworICAgIGF1dG8gcmVzb2x2ZWRDaHJvbWEgPSByZXNvbHZlUmVs
YXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVMLCBDU1NWYWx1ZUMsIENTU1ZhbHVlSCwgQ1NTVmFs
dWVBbHBoYT4oKmNocm9tYSwgb3JpZ2luQ29sb3JBc0xDSCk7CisgICAgYXV0byByZXNvbHZlZEh1
ZSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUwsIENTU1ZhbHVlQywgQ1NT
VmFsdWVILCBDU1NWYWx1ZUFscGhhPigqaHVlLCBvcmlnaW5Db2xvckFzTENILCBbXShhdXRvIGh1
ZSkgeworICAgICAgICByZXR1cm4gbm9ybWFsaXplSHVlKGh1ZSk7CisgICAgfSk7CisgICAgYXV0
byByZXNvbHZlZEFscGhhID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlTCwg
Q1NTVmFsdWVDLCBDU1NWYWx1ZUgsIENTU1ZhbHVlQWxwaGE+KCphbHBoYSwgb3JpZ2luQ29sb3JB
c0xDSCk7CisKKyAgICByZXR1cm4gY29udmVydENvbG9yPExhYjxmbG9hdD4+KExDSEE8ZmxvYXQ+
IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkTGlnaHRuZXNzKSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHJlc29sdmVkQ2hyb21hKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkSHVlKSwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkQWxwaGEpIH0pOworfQorCiBzdGF0aWMgQ29sb3IgcGFy
c2VMQ0hQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJz
ZXJDb250ZXh0JiBjb250ZXh0KQogewogICAgIEFTU0VSVChyYW5nZS5wZWVrKCkuZnVuY3Rpb25J
ZCgpID09IENTU1ZhbHVlTGNoKTsKICAgICBhdXRvIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFu
Z2UpOwogCisgICAgaWYgKGNvbnRleHQucmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQgJiYgYXJn
cy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pCisgICAgICAgIHJldHVybiBwYXJzZVJlbGF0
aXZlTENIUGFyYW1ldGVycyhhcmdzLCBjb250ZXh0KTsKKwogICAgIGF1dG8gbGlnaHRuZXNzID0g
Y29uc3VtZVBlcmNlbnRSYXcoYXJncyk7CiAgICAgaWYgKCFsaWdodG5lc3MpCiAgICAgICAgIHJl
dHVybiB7IH07CkBAIC0xMTI1LDEyICsxNDk4LDE2IEBAIHN0YXRpYyBDb2xvciBwYXJzZUNvbG9y
RnVuY3Rpb24oQ1NTUGFyc2UKICAgICBDb2xvciBjb2xvcjsKICAgICBzd2l0Y2ggKGZ1bmN0aW9u
SWQpIHsKICAgICBjYXNlIENTU1ZhbHVlUmdiOgorICAgICAgICBjb2xvciA9IHBhcnNlUkdCUGFy
YW1ldGVyczxSR0JGdW5jdGlvbk1vZGU6OlJHQj4oY29sb3JSYW5nZSwgY29udGV4dCk7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVSZ2JhOgotICAgICAgICBjb2xvciA9IHBhcnNl
UkdCUGFyYW1ldGVycyhjb2xvclJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgY29sb3IgPSBwYXJz
ZVJHQlBhcmFtZXRlcnM8UkdCRnVuY3Rpb25Nb2RlOjpSR0JBPihjb2xvclJhbmdlLCBjb250ZXh0
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUhzbDoKKyAgICAgICAgY29sb3Ig
PSBwYXJzZUhTTFBhcmFtZXRlcnM8SFNMRnVuY3Rpb25Nb2RlOjpIU0w+KGNvbG9yUmFuZ2UsIGNv
bnRleHQpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlSHNsYToKLSAgICAgICAg
Y29sb3IgPSBwYXJzZUhTTFBhcmFtZXRlcnMoY29sb3JSYW5nZSwgY29udGV4dCk7CisgICAgICAg
IGNvbG9yID0gcGFyc2VIU0xQYXJhbWV0ZXJzPEhTTEZ1bmN0aW9uTW9kZTo6SFNMQT4oY29sb3JS
YW5nZSwgY29udGV4dCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVId2I6CiAg
ICAgICAgIGNvbG9yID0gcGFyc2VIV0JQYXJhbWV0ZXJzKGNvbG9yUmFuZ2UsIGNvbnRleHQpOwo=
</data>
<flag name="commit-queue"
          id="438976"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420576</attachid>
            <date>2021-02-16 18:23:02 -0800</date>
            <delta_ts>2021-02-17 17:58:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221880-20210215191607.patch</filename>
            <type>text/plain</type>
            <size>28546</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzI4OTMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAyLTE1ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIENTUyBD
b2xvciA1IFJlbGF0aXZlIENvbG9yIFN5bnRheAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxODgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2Vz
RXhwZXJpbWVudGFsLnlhbWw6CisgICAgICAgIEFkZCBuZXcgZXhwZXJpbWVudGFsIHByZWZlcmVu
Y2UgZm9yIENTUyBDb2xvciA1IFJlbGF0aXZlIENvbG9yIFN5bnRheAorICAgICAgICB3aGljaCBp
cyBvZmYgYnkgZGVmYXVsdC4KKwogMjAyMS0wMi0xNSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2Zm
QGFwcGxlLmNvbT4KIAogICAgICAgICBbQVJNNjRdIENoYW5nZSBicmVhayBpbnN0cnVjdGlvbiBj
b21tZW50IHRvIGluZGljYXRlIHBvc3NpYmxlIHNlY3VyaXR5IGZhaWx1cmUKSW5kZXg6IFNvdXJj
ZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0V4cGVyaW1lbnRhbC55YW1sCShyZXZpc2lvbiAyNzI4ODYpCisrKyBTb3VyY2UvV1RGL1Nj
cmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDIwLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NjMsNiArMTYzLDE4IEBAIENTU1BhaW50aW5nQVBJRW5hYmxlZDoKICAgICAgICJFTkFCTEUoRVhQ
RVJJTUVOVEFMX0ZFQVRVUkVTKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpKSI6
IHRydWUKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAKK0NTU1JlbGF0aXZlQ29sb3JTeW50YXhFbmFi
bGVkOgorICB0eXBlOiBib29sCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiQ1NTIFJlbGF0aXZlIENv
bG9yIFN5bnRheCIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIHN1cHBvcnQg
Zm9yIENTUyBSZWxhdGl2ZSBDb2xvciBTeW50YXggZGVmaW5lZCBpbiBDU1MgQ29sb3IgNSIKKyAg
ZGVmYXVsdFZhbHVlOgorICAgIFdlYktpdExlZ2FjeToKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisg
ICAgV2ViS2l0OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJDb3JlOgorICAgICAgZGVm
YXVsdDogZmFsc2UKKwogQ1NTVHlwZWRPTUVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5S
ZWFkYWJsZU5hbWU6ICJDU1MgVHlwZWQgT00iCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzI4
OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw3NyBAQAorMjAyMS0wMi0xNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBDU1MgQ29sb3IgNSBSZWxhdGl2ZSBD
b2xvciBTeW50YXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMTg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgaW5pdGlhbCBzdXBwb3J0IGZvciBDU1MgQ29sb3IgNSBSZWxhdGl2ZSBDb2xvciBT
eW50YXggLSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLTUvI3JlbGF0aXZlLWNv
bG9ycyAKKworICAgICAgICBUaGlzIGZlYXR1cmUgaXMgb2ZmIGJ5IGRlZmF1bHQgYW5kIGNhbiBi
ZSBlbmFibGVkIHZpYSB0aGUgQ1NTUmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQKKyAgICAgICAg
ZXhwZXJpbWVudGFsIHByZWZlcmVuY2UgZmxhZy4KKworICAgICAgICBBcyB0aGlzIGlzIHRoZSBp
bml0aWFsIGNvbW1pdCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LCBpdCBpcyBub3QgeWV0IGNvbXBs
ZXRlLgorICAgICAgICBUaGlzIGFkZHMgYmFzaWMgcGFyc2luZyBhbmQgcmVzb2x1dGlvbiBmb3Ig
cmVsYXRpdmUgcmdiKCksIGhzbCgpLCBod2IoKSwgbGFiKCkKKyAgICAgICAgYW5kIGxjaCgpLCBi
dXQgZG9lcyBub3QgeWV0IGltcGxlbWVudCBzdXBwb3J0IGZvciBjYWxjKCkgZnVuY3Rpb25zIHRo
YXQgY2FuIG9wZXJhdGUKKyAgICAgICAgb24gdGhlIGNoYW5uZWwga2V5d29yZHMgbm9yIGRvZXMg
aXQgc3VwcG9ydCB1c2luZyBzeXN0ZW0ga2V5d29yZCBjb2xvcnMgYXMgdGhlCisgICAgICAgIG9y
aWdpbiBvZiB0aGUgcmVsYXRpdmUgY29sb3JzLgorCisgICAgICAgIFNvbWUgYWRkaXRpb25hbCBj
YXZlYXRlcyBhYm91dCB0aGlzIGluaXRpYWwgaW1wbGVtZW50YXRpb24gdGhhdCBuZWVkIGZ1cnRo
ZXIgCisgICAgICAgIGNsYXJpZmljYXRpb24gZnJvbSB0aGUgc3BlYyBlZGl0b3JzOiAKKworICAg
ICAgICAxLiBDdXJyZW50bHksIHdlIGFsbG93IHVzaW5nIGFueSBvZiB0aGUgc3VwcG9ydGVkIGNo
YW5uZWwgaWRlbnRpZmVycyBmb3IgYW55IGNoYW5uZWwKKyAgICAgICAgKGV2ZW4gdXNpbmcgdGhl
bSBtb3JlIHRoYW4gb25jZSkgYXMgbG9uZyBhcyB0aGUgdHlwZXMgbWF0Y2guIFRoaXMgbWVhbnMg
eW91IGNhbiBkbzoKKyAgICAgICAgCisgICAgICAgICAgICByZ2IoZnJvbSByZWQgZyByIGIpCisg
ICAgICAgIAorICAgICAgICB0byBwZXJtdXRlIHRoZSBjaGFubmVscyBpZiB0aGF0IGlzIGRlc2ly
ZWQsIGJ1dCBjYW4ndCBkbzoKKyAgICAgICAgCisgICAgICAgICAgICBoc2woZnJvbSByZWQgcyBo
IGwpCisKKyAgICAgICAgYmVjYXVzZSB0aGUgZmlyc3QgY2hhbm5lbCBleHBlY3RzIGEgbnVtYmVy
IChmb3IgaHVlKSBhbmQgInMiIGlzIGEgcGVyY2VudGFnZS4KKworICAgICAgICAyLiBGb3Igcmdi
KCksIHdoaWNoIGFsbG93cyByLCBnLCBhbmQgYiB0byBiZSBhbGwgbnVtYmVycyBvciBhbGwgcGVy
Y2VudGFnZXMsCisgICAgICAgIHdlIGN1cnJlbnRseSBkb24ndCBhc3N1bWUgZWl0aGVyIG51bWJl
ciBvciBwZXJjZW50YWdlLCBhbmQgd2FpdCB1bnRpbCBzb21lCisgICAgICAgIGNvbnN0YW50IHZh
bHVlIGlzIHByb3ZpZGVkIHRvIHNldCB0aGUgdHlwZS4gVGhhdCBtZWFucyB0aGF0OgorICAgICAg
ICAKKyAgICAgICAgICAgIHJnYihmcm9tIHJlZCByIGcgMTApCisKKyAgICAgICAgd2lsbCB0cmVh
dCByLCBhbmcgZyBhcyBudW1iZXJzLCBidXQ6CisgICAgICAgIAorICAgICAgICAgICAgcmdiKGZy
b20gcmVkIHIgZyAxMCUpCisKKyAgICAgICAgd2lsbCB0cmVhdCByIGFuZCBnIGFzIHBlcmNlbnRh
Z2VzLiBUaGlzIGlzIG5vdCBjdXJyZW50bHkgb2JzZXJ2YWJsZSBvdGhlciB0aGFuCisgICAgICAg
IHRoYXQgd2UgcmVqZWN0IHNvbWV0aGluZyB0aGF0IG1peGVzIHRoZSB0d28sIHN1Y2ggYXMKKyAg
ICAgICAgCisgICAgICAgICAgICByZ2IoZnJvbSByZWQgciAxMCAxMCUpCisKKyAgICAgICAgYnV0
IHdpbGwgYmUgZnVsbHkgb2JzZXJ2YWJsZSBvbmNlIHByb2Nlc3NpbmcgdGhlIGNoYW5uZWxzIHZp
YSBjYWxjKCkgaXMgc3VwcG9ydGVkLgorCisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMu
aW46CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyQ29u
dGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6Omhhc2gpOgor
ICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZU9yaWdpbkNvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZU9w
dGlvbmFsQWxwaGFPcklkZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
SGVscGVyczo6Y29uc3VtZUh1ZU9ySWRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lTnVtYmVyT3JJZGVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVQZXJjZW50T3JJZGVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmV4dHJhY3RDaGFubmVsVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpyZXNvbHZl
UmVsYXRpdmVDb2xvckNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzOjpwYXJzZVJlbGF0aXZlUkdCUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlUkdCUGFyYW1ldGVycyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlUmVsYXRpdmVIU0xQYXJh
bWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6cGFy
c2VIU0xQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVs
cGVyczo6cGFyc2VSZWxhdGl2ZUhXQlBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZUhXQlBhcmFtZXRlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZVJlbGF0aXZlTGFiUGFyYW1ldGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlTGFi
UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6
OnBhcnNlUmVsYXRpdmVMQ0hQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5UGFyc2VySGVscGVyczo6cGFyc2VMQ0hQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6cGFyc2VDb2xvckZ1bmN0aW9uKToKKwogMjAyMS0w
Mi0xNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBb
bWFjT1NdIENvbm5lY3QgVG91Y2ggQmFyIHRvIE1lZGlhU2Vzc2lvbgpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHJldmlzaW9uIDI3Mjg4NikKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjY2LDYg
KzEyNjYsMjUgQEAgbGFiCiBsY2gKIC8vY29sb3IKIAorLy8gcmVsYXRpdmUgY29sb3IgaWRlbnRp
ZmllcnMKKy8vIGZyb20KK3IKK2cKK2IKK2gKK3MKK2wKKy8vIGgKK3cKKy8vIGIKKy8vIGwKK2EK
Ky8vIGIKKy8vIGwKK2MKKy8vIGgKKy8vIGFscGhhCisKIC8vIHRyYW5zZm9ybQogbWF0cml4CiBt
YXRyaXgzZApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNv
bnRleHQuY3BwCShyZXZpc2lvbiAyNzI4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlckNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3Nyw3IEBAIENT
U1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoY29uc3QKICAgICAsIGxlZ2FjeU92ZXJm
bG93U2Nyb2xsaW5nVG91Y2hFbmFibGVkIHsgc2hvdWxkRW5hYmxlTGVnYWN5T3ZlcmZsb3dTY3Jv
bGxpbmdUb3VjaChkb2N1bWVudCkgfQogI2VuZGlmCiAgICAgLCBvdmVyc2Nyb2xsQmVoYXZpb3JF
bmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5vdmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVkKCkg
fQorICAgICwgcmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQgeyBkb2N1bWVudC5zZXR0aW5ncygp
LmNzc1JlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkKCkgfQogICAgICwgc2Nyb2xsQmVoYXZpb3JF
bmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5DU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFi
bGVkKCkgfQogICAgICwgc3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkIHsgZG9jdW1lbnQuc2V0
dGluZ3MoKS5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQoKSB9CiAjaWYgRU5BQkxFKFRFWFRf
QVVUT1NJWklORykKQEAgLTEwOSw2ICsxMTAsNyBAQCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYgCiAgICAgICAgICYmIGEubGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3Vj
aEVuYWJsZWQgPT0gYi5sZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoRW5hYmxlZAogI2VuZGlm
CiAgICAgICAgICYmIGEub3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZCA9PSBiLm92ZXJzY3JvbGxC
ZWhhdmlvckVuYWJsZWQKKyAgICAgICAgJiYgYS5yZWxhdGl2ZUNvbG9yU3ludGF4RW5hYmxlZCA9
PSBiLnJlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkCiAgICAgICAgICYmIGEuc2Nyb2xsQmVoYXZp
b3JFbmFibGVkID09IGIuc2Nyb2xsQmVoYXZpb3JFbmFibGVkCiAgICAgICAgICYmIGEuc3ByaW5n
VGltaW5nRnVuY3Rpb25FbmFibGVkID09IGIuc3ByaW5nVGltaW5nRnVuY3Rpb25FbmFibGVkCiAj
aWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCShyZXZpc2lvbiAyNzI4ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NiArNjcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBsZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNo
RW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKICAgICBib29sIG92ZXJzY3JvbGxCZWhhdmlvckVu
YWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgcmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQgeyBm
YWxzZSB9OwogICAgIGJvb2wgc2Nyb2xsQmVoYXZpb3JFbmFibGVkIHsgZmFsc2UgfTsKICAgICBi
b29sIHNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKFRF
WFRfQVVUT1NJWklORykKQEAgLTExOCw3ICsxMTksOCBAQCBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4
dEhhc2ggewogICAgICAgICAgICAgJiBrZXkuc2Nyb2xsQmVoYXZpb3JFbmFibGVkICAgICAgICAg
ICAgICAgICAgICAgPDwgMTIKICAgICAgICAgICAgICYga2V5LmluZGl2aWR1YWxUcmFuc2Zvcm1Q
cm9wZXJ0aWVzRW5hYmxlZCAgICAgIDw8IDEzCiAgICAgICAgICAgICAmIGtleS5vdmVyc2Nyb2xs
QmVoYXZpb3JFbmFibGVkICAgICAgICAgICAgICAgICA8PCAxNAotICAgICAgICAgICAgJiBrZXku
bW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMTU7IC8vIEtlZXAg
dGhpcyBsYXN0LgorICAgICAgICAgICAgJiBrZXkucmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQg
ICAgICAgICAgICAgICAgPDwgMTUKKyAgICAgICAgICAgICYga2V5Lm1vZGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDE2OyAvLyBLZWVwIHRoaXMgbGFzdC4KICAgICAg
ICAgaGFzaCBePSBXVEY6OmludEhhc2goYml0cyk7CiAgICAgICAgIHJldHVybiBoYXNoOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VySGVscGVycy5jcHAJKHJldmlzaW9uIDI3Mjg4NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjkwLDYgKzY5MCwyNyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVVcmwo
Q1NTCiAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUodXJs
LnRvU3RyaW5nKCksIENTU1VuaXRUeXBlOjpDU1NfVVJJKTsKIH0KIAorc3RhdGljIENvbG9yIGNv
bnN1bWVPcmlnaW5Db2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJz
ZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIGF1dG8gdmFsdWUgPSBjb25zdW1lQ29sb3IoYXJn
cywgY29udGV4dCk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGlmICh2YWx1ZS0+aXNSR0JDb2xvcigpKQorICAgICAgICByZXR1cm4gdmFsdWUtPmNvbG9yKCk7
CisKKyAgICBBU1NFUlQodmFsdWUtPmlzVmFsdWVJRCgpKTsKKyAgICBhdXRvIGtleXdvcmQgPSB2
YWx1ZS0+dmFsdWVJRCgpOworCisgICAgLy8gRklYTUU6IFdlIGRvbid0IGhhdmUgZW5vdWdoIGNv
bnRleHQgaW4gdGhlIHBhcnNlciB0byByZXNvbHZpbmcgYSBzeXN0ZW0ga2V5d29yZAorICAgIC8v
IGNvcnJlY3RseS4gV2Ugc2hvdWxkIHBhY2thZ2UgdXAgdGhlIHJlbGF0aXZlIGNvbG9yIHBhcmFt
ZXRlcnMgYW5kIHJlc29sdmUgdGhlCisgICAgLy8gd2hvbGUgdGhpbmcgYXQgdGhlIGFwcHJvcHJp
YXRlIHRpbWUgd2hlbiB0aGUgb3JpZ2luIGNvbG9yIGlzIGEgc3lzdGVtIGtleXdvcmQuCisgICAg
aWYgKFN0eWxlQ29sb3I6OmlzU3lzdGVtQ29sb3Ioa2V5d29yZCkpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICByZXR1cm4gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChrZXl3b3JkLCB7
IH0pOworfQorCiBzdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lT3B0aW9uYWxBbHBoYShD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1
ZGluZ1doaXRlc3BhY2UocmFuZ2UpKQpAQCAtNzAxLDYgKzcyMiwxNyBAQCBzdGF0aWMgT3B0aW9u
YWw8ZG91YmxlPiBjb25zdW1lT3B0aW9uYWxBCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0K
IAordGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8
VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lT3B0aW9uYWxBbHBoYU9ySWRlbnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKGF1dG8gYWxwaGEgPSBjb25z
dW1lT3B0aW9uYWxBbHBoYShyYW5nZSkpCisgICAgICAgIHJldHVybiB7ICphbHBoYSB9OworCisg
ICAgaWYgKGF1dG8gaWRlbnQgPSBjb25zdW1lSWRlbnRSYXc8YWxsb3dlZElkZW50cy4uLj4ocmFu
Z2UpKQorICAgICAgICByZXR1cm4geyAqaWRlbnQgfTsKKworICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Cit9CisKIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVIdWUoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
aWYgKGF1dG8gYW5nbGUgPSBjb25zdW1lQW5nbGVSYXcocmFuZ2UsIGNvbnRleHQubW9kZSwgVW5p
dGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0bGVzc1plcm9RdWlyazo6Rm9yYmlkKSkKQEAgLTcwOSwx
MSArNzQxLDc5IEBAIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVIdWUoQ1NTUGEKICAg
ICByZXR1cm4gY29uc3VtZU51bWJlclJhdyhyYW5nZSk7CiB9CiAKK3RlbXBsYXRlPENTU1ZhbHVl
SUQuLi4gYWxsb3dlZElkZW50cz4gc3RhdGljIE9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBDU1NW
YWx1ZUlEPj4gY29uc3VtZUh1ZU9ySWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNv
bnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKGF1dG8gaHVlID0gY29u
c3VtZUh1ZShyYW5nZSwgY29udGV4dCkpCisgICAgICAgIHJldHVybiB7ICpodWUgfTsKKworICAg
IGlmIChhdXRvIGlkZW50ID0gY29uc3VtZUlkZW50UmF3PGFsbG93ZWRJZGVudHMuLi4+KHJhbmdl
KSkKKyAgICAgICAgcmV0dXJuIHsgKmlkZW50IH07CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworfQorCiBzdGF0aWMgZG91YmxlIG5vcm1hbGl6ZUh1ZShkb3VibGUgaHVlKQogewogICAgIHJl
dHVybiBzdGQ6OmZtb2Qoc3RkOjpmbW9kKGh1ZSwgMzYwLjApICsgMzYwLjAsIDM2MC4wKTsKIH0K
IAordGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8
VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lTnVtYmVyT3JJZGVudChDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1lTnVt
YmVyUmF3KHJhbmdlKSkKKyAgICAgICAgcmV0dXJuIHsgKm51bWJlciB9OworCisgICAgaWYgKGF1
dG8gaWRlbnQgPSBjb25zdW1lSWRlbnRSYXc8YWxsb3dlZElkZW50cy4uLj4ocmFuZ2UpKQorICAg
ICAgICByZXR1cm4geyAqaWRlbnQgfTsKKworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisK
K3RlbXBsYXRlPENTU1ZhbHVlSUQuLi4gYWxsb3dlZElkZW50cz4gc3RhdGljIE9wdGlvbmFsPFZh
cmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlEPj4gY29uc3VtZVBlcmNlbnRPcklkZW50KENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChhdXRvIHBlcmNlbnQgPSBjb25zdW1lUGVy
Y2VudFJhdyhyYW5nZSkpCisgICAgICAgIHJldHVybiB7ICpwZXJjZW50IH07CisKKyAgICBpZiAo
YXV0byBpZGVudCA9IGNvbnN1bWVJZGVudFJhdzxhbGxvd2VkSWRlbnRzLi4uPihyYW5nZSkpCisg
ICAgICAgIHJldHVybiB7ICppZGVudCB9OworCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30K
KwordGVtcGxhdGU8Q1NTVmFsdWVJRCBDMSwgQ1NTVmFsdWVJRCBDMiwgQ1NTVmFsdWVJRCBDMywg
Q1NTVmFsdWVJRCBBbHBoYUNoYW5uZWwsIHR5cGVuYW1lIENvbG9yVHlwZT4gc3RhdGljIGRlY2x0
eXBlKGF1dG8pIGV4dHJhY3RDaGFubmVsVmFsdWUoQ1NTVmFsdWVJRCBjaGFubmVsLCBjb25zdCBD
b2xvclR5cGUmIG9yaWdpbkNvbG9yKQoreworICAgIGF1dG8gY29tcG9uZW50cyA9IGFzQ29sb3JD
b21wb25lbnRzKG9yaWdpbkNvbG9yKTsKKyAgICBzd2l0Y2ggKGNoYW5uZWwpIHsKKyAgICBjYXNl
IEMxOgorICAgICAgICByZXR1cm4gY29tcG9uZW50c1swXTsKKyAgICBjYXNlIEMyOgorICAgICAg
ICByZXR1cm4gY29tcG9uZW50c1sxXTsKKyAgICBjYXNlIEMzOgorICAgICAgICByZXR1cm4gY29t
cG9uZW50c1syXTsKKyAgICBjYXNlIEFscGhhQ2hhbm5lbDoKKyAgICAgICAgcmV0dXJuIGNvbXBv
bmVudHNbM107CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxkZWNs
dHlwZShjb21wb25lbnRzWzBdKT4+KDApOworfQorCit0ZW1wbGF0ZTxDU1NWYWx1ZUlEIEMxLCBD
U1NWYWx1ZUlEIEMyLCBDU1NWYWx1ZUlEIEMzLCBDU1NWYWx1ZUlEIEFscGhhQ2hhbm5lbCwgdHlw
ZW5hbWUgQ29sb3JUeXBlLCB0eXBlbmFtZSBWYWx1ZVRyYW5zZm9ybWVyPiBzdGF0aWMgZGVjbHR5
cGUoYXV0bykgcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsKGNvbnN0IFZhcmlhbnQ8ZG91Ymxl
LCBDU1NWYWx1ZUlEPiYgcGFyc2VkQ2hhbm5lbCwgY29uc3QgQ29sb3JUeXBlJiBvcmlnaW5Db2xv
ciwgVmFsdWVUcmFuc2Zvcm1lciYmIHZhbHVlVHJhbnNmb3JtZXIpCit7CisgICAgcmV0dXJuIHN3
aXRjaE9uKHBhcnNlZENoYW5uZWwsCisgICAgICAgIFsmXSAoZG91YmxlIHZhbHVlKSB7CisgICAg
ICAgICAgICByZXR1cm4gdmFsdWVUcmFuc2Zvcm1lcih2YWx1ZSk7CisgICAgICAgIH0sCisgICAg
ICAgIFsmXSAoQ1NTVmFsdWVJRCBjaGFubmVsKSB7CisgICAgICAgICAgICByZXR1cm4gZXh0cmFj
dENoYW5uZWxWYWx1ZTxDMSwgQzIsIEMzLCBBbHBoYUNoYW5uZWw+KGNoYW5uZWwsIG9yaWdpbkNv
bG9yKTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK3RlbXBsYXRlPENTU1ZhbHVlSUQgQzEsIENT
U1ZhbHVlSUQgQzIsIENTU1ZhbHVlSUQgQzMsIENTU1ZhbHVlSUQgQWxwaGFDaGFubmVsLCB0eXBl
bmFtZSBDb2xvclR5cGU+IHN0YXRpYyBkZWNsdHlwZShhdXRvKSByZXNvbHZlUmVsYXRpdmVDb2xv
ckNoYW5uZWwoY29uc3QgVmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+JiBwYXJzZWRDaGFubmVs
LCBjb25zdCBDb2xvclR5cGUmIG9yaWdpbkNvbG9yKQoreworICAgIHJldHVybiByZXNvbHZlUmVs
YXRpdmVDb2xvckNoYW5uZWw8QzEsIEMyLCBDMywgQWxwaGFDaGFubmVsPihwYXJzZWRDaGFubmVs
LCBvcmlnaW5Db2xvciwgW10oYXV0byB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0pOworfQorCiBl
bnVtIGNsYXNzIFJHQkNvbXBvbmVudFR5cGUgeyBOdW1iZXIsIFBlcmNlbnRhZ2UgfTsKIAogc3Rh
dGljIHVpbnQ4X3QgY2xhbXBSR0JDb21wb25lbnQoZG91YmxlIHZhbHVlLCBSR0JDb21wb25lbnRU
eXBlIGNvbXBvbmVudFR5cGUpCkBAIC03NDgsMTEgKzg0OCwxMDIgQEAgc3RhdGljIE9wdGlvbmFs
PGRvdWJsZT4gY29uc3VtZVJHQk9ySFNMTwogICAgIHJldHVybiBjb25zdW1lTnVtYmVyT3JQZXJj
ZW50RGl2aWRlZEJ5MTAwUmF3KGFyZ3MpOwogfQogCi1zdGF0aWMgQ29sb3IgcGFyc2VSR0JQYXJh
bWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JikKK3N0YXRpYyBDb2xvciBwYXJzZVJlbGF0aXZlUkdCUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tl
blJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIEFT
U0VSVChhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbSk7CisgICAgY29uc3VtZUlkZW50
UmF3KGFyZ3MpOworCisgICAgYXV0byBvcmlnaW5Db2xvciA9IGNvbnN1bWVPcmlnaW5Db2xvcihh
cmdzLCBjb250ZXh0KTsKKyAgICBpZiAoIW9yaWdpbkNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIHN0cnVjdCBDb21wb25lbnQgeworICAgICAgICBWYXJpYW50PGRv
dWJsZSwgQ1NTVmFsdWVJRD4gdmFsdWU7CisgICAgICAgIE9wdGlvbmFsPFJHQkNvbXBvbmVudFR5
cGU+IHR5cGU7CisgICAgfTsKKworICAgIGF1dG8gY29uc3VtZUNvbXBvbmVudCA9IFtdKGF1dG8m
IGFyZ3MsIE9wdGlvbmFsPFJHQkNvbXBvbmVudFR5cGU+IGNvbXBvbmVudFR5cGUpIC0+IE9wdGlv
bmFsPENvbXBvbmVudD4geworICAgICAgICBpZiAoIWNvbXBvbmVudFR5cGUpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvIG51bWJlciA9IGNvbnN1bWVOdW1iZXJSYXcoYXJncykpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIENvbXBvbmVudCB7ICpudW1iZXIsIFJHQkNvbXBvbmVudFR5cGU6Ok51bWJl
ciB9OworICAgICAgICAgICAgaWYgKGF1dG8gcGVyY2VudCA9IGNvbnN1bWVQZXJjZW50UmF3KGFy
Z3MpKQorICAgICAgICAgICAgICAgIHJldHVybiBDb21wb25lbnQgeyAqcGVyY2VudCwgUkdCQ29t
cG9uZW50VHlwZTo6UGVyY2VudGFnZSB9OworICAgICAgICAgICAgaWYgKGF1dG8gY2hhbm5lbCA9
IGNvbnN1bWVJZGVudFJhdzxDU1NWYWx1ZVIsIENTU1ZhbHVlRywgQ1NTVmFsdWVCLCBDU1NWYWx1
ZUFscGhhPihhcmdzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29tcG9uZW50IHsgKmNoYW5u
ZWwsIFdURjo6bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoKmNvbXBvbmVudFR5cGUpIHsKKyAg
ICAgICAgICAgIGNhc2UgUkdCQ29tcG9uZW50VHlwZTo6TnVtYmVyOiB7CisgICAgICAgICAgICAg
ICAgaWYgKGF1dG8gbnVtYmVyID0gY29uc3VtZU51bWJlclJhdyhhcmdzKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIENvbXBvbmVudCB7ICpudW1iZXIsIFJHQkNvbXBvbmVudFR5cGU6Ok51
bWJlciB9OworICAgICAgICAgICAgICAgIGlmIChhdXRvIGNoYW5uZWwgPSBjb25zdW1lSWRlbnRS
YXc8Q1NTVmFsdWVSLCBDU1NWYWx1ZUcsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oYXJncykp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBDb21wb25lbnQgeyAqY2hhbm5lbCwgUkdCQ29t
cG9uZW50VHlwZTo6TnVtYmVyIH07CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgUkdCQ29tcG9uZW50VHlwZTo6UGVy
Y2VudGFnZTogeworICAgICAgICAgICAgICAgIGlmIChhdXRvIHBlcmNlbnQgPSBjb25zdW1lUGVy
Y2VudFJhdyhhcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENvbXBvbmVudCB7ICpw
ZXJjZW50LCBSR0JDb21wb25lbnRUeXBlOjpQZXJjZW50YWdlIH07CisgICAgICAgICAgICAgICAg
aWYgKGF1dG8gY2hhbm5lbCA9IGNvbnN1bWVJZGVudFJhdzxDU1NWYWx1ZVIsIENTU1ZhbHVlRywg
Q1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPihhcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIENvbXBvbmVudCB7ICpjaGFubmVsLCBSR0JDb21wb25lbnRUeXBlOjpQZXJjZW50YWdlIH07
CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICBPcHRpb25hbDxSR0JDb21wb25l
bnRUeXBlPiBjb21wb25lbnRUeXBlOworICAgIHN0ZDo6YXJyYXk8VmFyaWFudDxkb3VibGUsIENT
U1ZhbHVlSUQ+LCAzPiBjb21wb25lbnRzOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IDM7ICsraSkgeworICAgICAgICBhdXRvIGNvbXBvbmVudCA9IGNvbnN1bWVDb21wb25lbnQoYXJn
cywgY29tcG9uZW50VHlwZSk7CisgICAgICAgIGlmICghY29tcG9uZW50KQorICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgY29tcG9uZW50c1tpXSA9IGNvbXBvbmVudC0+dmFsdWU7Cisg
ICAgICAgIGNvbXBvbmVudFR5cGUgPSBjb21wb25lbnQtPnR5cGU7CisgICAgfQorCisgICAgYXV0
byBhbHBoYSA9IGNvbnN1bWVPcHRpb25hbEFscGhhT3JJZGVudDxDU1NWYWx1ZVIsIENTU1ZhbHVl
RywgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPihhcmdzKTsKKyAgICBpZiAoIWFscGhhKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgaWYgKCFhcmdzLmF0RW5kKCkpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICAvLyBBZnRlciBwYXJzaW5nLCBjb252ZXJ0IGlkZW50aWZpZXJzIHRvIHZh
bHVlcyBmcm9tIHRoZSBvcmlnaW4gY29sb3IuCisKKyAgICAvLyBGSVhNRTogRG8gd2Ugd2FudCB0
byBiZWluZyBkb2luZyB0aGlzIGluIHVpbnQ4X3QgdmFsdWVzPyBPciBzaG91bGQgd2UgdXNlIGhp
Z2hlciBwcmVjaXNpb24KKyAgICAvLyBhbmQgY2xhbXAgYXQgdGhlIGVuZC4gSXQgd29uJ3QgbWFr
ZSBhIGRpZmZlcmVuY2UgdW50aWwgd2Ugc3VwcG9ydCBjYWxjdWxhdGlvbnMgb24gdGhlIG9yaWdp
bnMKKyAgICAvLyBjb21wb25lbnRzLgorICAgIGF1dG8gb3JpZ2luQ29sb3JBc1NSR0IgPSBvcmln
aW5Db2xvci50b1NSR0JBTG9zc3k8dWludDhfdD4oKTsKKworICAgIGF1dG8gcmVzb2x2ZWRDb21w
b25lbnRUeXBlID0gY29tcG9uZW50VHlwZS52YWx1ZU9yKFJHQkNvbXBvbmVudFR5cGU6OlBlcmNl
bnRhZ2UpOworCisgICAgdWludDhfdCByZXNvbHZlQ29tcG9uZW50c1szXTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgICAgIHJlc29sdmVDb21wb25lbnRzW2ld
ID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlUiwgQ1NTVmFsdWVHLCBDU1NW
YWx1ZUIsIENTU1ZhbHVlQWxwaGE+KGNvbXBvbmVudHNbaV0sIG9yaWdpbkNvbG9yQXNTUkdCLCBb
cmVzb2x2ZWRDb21wb25lbnRUeXBlXShhdXRvIHZhbHVlKSB7CisgICAgICAgICAgICByZXR1cm4g
Y2xhbXBSR0JDb21wb25lbnQodmFsdWUsIHJlc29sdmVkQ29tcG9uZW50VHlwZSk7CisgICAgICAg
IH0pOworICAgIH0KKworICAgIGF1dG8gcmVzb2x2ZWRBbHBoYSA9IHJlc29sdmVSZWxhdGl2ZUNv
bG9yQ2hhbm5lbDxDU1NWYWx1ZVIsIENTU1ZhbHVlRywgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhh
PigqYWxwaGEsIG9yaWdpbkNvbG9yQXNTUkdCLCBbXShhdXRvIHZhbHVlKSB7CisgICAgICAgIHJl
dHVybiBjb252ZXJ0RmxvYXRBbHBoYVRvPHVpbnQ4X3Q+KHZhbHVlKTsKKyAgICB9KTsKKworICAg
IHJldHVybiBTUkdCQTx1aW50OF90PiB7IHJlc29sdmVDb21wb25lbnRzWzBdLCByZXNvbHZlQ29t
cG9uZW50c1sxXSwgcmVzb2x2ZUNvbXBvbmVudHNbMl0sIHJlc29sdmVkQWxwaGEgfTsKK30KKwor
ZW51bSBjbGFzcyBSR0JGdW5jdGlvbk1vZGUgeyBSR0IsIFJHQkEgfTsKKwordGVtcGxhdGU8UkdC
RnVuY3Rpb25Nb2RlIE1vZGU+IHN0YXRpYyBDb2xvciBwYXJzZVJHQlBhcmFtZXRlcnMoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7
CiAgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVSZ2IgfHwg
cmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVJnYmEpOwogICAgIGF1dG8gYXJn
cyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CiAKKyAgICBpZiBjb25zdGV4cHIgKE1vZGUgPT0g
UkdCRnVuY3Rpb25Nb2RlOjpSR0IpIHsKKyAgICAgICAgaWYgKGNvbnRleHQucmVsYXRpdmVDb2xv
clN5bnRheEVuYWJsZWQgJiYgYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pCisgICAg
ICAgICAgICByZXR1cm4gcGFyc2VSZWxhdGl2ZVJHQlBhcmFtZXRlcnMoYXJncywgY29udGV4dCk7
CisgICAgfQorCiAgICAgc3RydWN0IEluaXRpYWxDb21wb25lbnQgewogICAgICAgICBkb3VibGUg
dmFsdWU7CiAgICAgICAgIFJHQkNvbXBvbmVudFR5cGUgdHlwZTsKQEAgLTgxMSwxMSArMTAwMiw2
MCBAQCBzdGF0aWMgQ29sb3IgcGFyc2VSR0JQYXJhbWV0ZXJzKENTU1BhcnNlCiAgICAgcmV0dXJu
IFNSR0JBPHVpbnQ4X3Q+IHsgbm9ybWFsaXplZFJlZCwgbm9ybWFsaXplZEdyZWVuLCBub3JtYWxp
emVkQmx1ZSwgbm9ybWFsaXplZEFscGhhIH07CiB9CiAKLXN0YXRpYyBDb2xvciBwYXJzZUhTTFBh
cmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmIGNvbnRleHQpCitzdGF0aWMgQ29sb3IgcGFyc2VSZWxhdGl2ZUhTTFBhcmFtZXRlcnMoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkK
K3sKKyAgICBBU1NFUlQoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pOworICAgIGNv
bnN1bWVJZGVudFJhdyhhcmdzKTsKKworICAgIGF1dG8gb3JpZ2luQ29sb3IgPSBjb25zdW1lT3Jp
Z2luQ29sb3IoYXJncywgY29udGV4dCk7CisgICAgaWYgKCFvcmlnaW5Db2xvci5pc1ZhbGlkKCkp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGh1ZSA9IGNvbnN1bWVIdWVPcklkZW50
PENTU1ZhbHVlSD4oYXJncywgY29udGV4dCk7CisgICAgaWYgKCFodWUpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBhdXRvIHNhdHVyYXRpb24gPSBjb25zdW1lUGVyY2VudE9ySWRlbnQ8Q1NT
VmFsdWVTLCBDU1NWYWx1ZUwsIENTU1ZhbHVlQWxwaGE+KGFyZ3MpOworICAgIGlmICghc2F0dXJh
dGlvbikKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gbGlnaHRuZXNzID0gY29uc3Vt
ZVBlcmNlbnRPcklkZW50PENTU1ZhbHVlUywgQ1NTVmFsdWVMLCBDU1NWYWx1ZUFscGhhPihhcmdz
KTsKKyAgICBpZiAoIWxpZ2h0bmVzcykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8g
YWxwaGEgPSBjb25zdW1lT3B0aW9uYWxBbHBoYU9ySWRlbnQ8Q1NTVmFsdWVTLCBDU1NWYWx1ZUws
IENTU1ZhbHVlQWxwaGE+KGFyZ3MpOworICAgIGlmICghYWxwaGEpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICBpZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IC8vIEFmdGVyIHBhcnNpbmcsIGNvbnZlcnQgaWRlbnRpZmllcnMgdG8gdmFsdWVzIGZyb20gdGhl
IG9yaWdpbiBjb2xvci4KKworICAgIGF1dG8gb3JpZ2luQ29sb3JBc0hTTCA9IG9yaWdpbkNvbG9y
LnRvQ29sb3JUeXBlTG9zc3k8SFNMQTxmbG9hdD4+KCk7CisKKyAgICBhdXRvIHJlc29sdmVkSHVl
ID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlSCwgQ1NTVmFsdWVTLCBDU1NW
YWx1ZUwsIENTU1ZhbHVlQWxwaGE+KCpodWUsIG9yaWdpbkNvbG9yQXNIU0wsIFtdKGF1dG8gaHVl
KSB7CisgICAgICAgIHJldHVybiBub3JtYWxpemVIdWUoaHVlKTsKKyAgICB9KTsKKyAgICBhdXRv
IHJlc29sdmVkU2F0dXJhdGlvbiA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1
ZUgsIENTU1ZhbHVlUywgQ1NTVmFsdWVMLCBDU1NWYWx1ZUFscGhhPigqc2F0dXJhdGlvbiwgb3Jp
Z2luQ29sb3JBc0hTTCk7CisgICAgYXV0byByZXNvbHZlZExpZ2h0bmVzcyA9IHJlc29sdmVSZWxh
dGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUgsIENTU1ZhbHVlUywgQ1NTVmFsdWVMLCBDU1NWYWx1
ZUFscGhhPigqbGlnaHRuZXNzLCBvcmlnaW5Db2xvckFzSFNMKTsKKyAgICBhdXRvIHJlc29sdmVk
QWxwaGEgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVILCBDU1NWYWx1ZVMs
IENTU1ZhbHVlTCwgQ1NTVmFsdWVBbHBoYT4oKmFscGhhLCBvcmlnaW5Db2xvckFzSFNMKTsKKwor
ICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KEhTTEE8ZmxvYXQ+IHsgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkSHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVk
U2F0dXJhdGlvbiksIHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZExpZ2h0bmVzcyksIHN0YXRp
Y19jYXN0PGZsb2F0PihyZXNvbHZlZEFscGhhKSB9KTsKK30KKworZW51bSBjbGFzcyBIU0xGdW5j
dGlvbk1vZGUgeyBIU0wsIEhTTEEgfTsKKwordGVtcGxhdGU8SFNMRnVuY3Rpb25Nb2RlIE1vZGU+
IHN0YXRpYyBDb2xvciBwYXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKHJhbmdl
LnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVIc2wgfHwgcmFuZ2UucGVlaygpLmZ1bmN0
aW9uSWQoKSA9PSBDU1NWYWx1ZUhzbGEpOwogICAgIGF1dG8gYXJncyA9IGNvbnN1bWVGdW5jdGlv
bihyYW5nZSk7CiAKKyAgICBpZiBjb25zdGV4cHIgKE1vZGUgPT0gSFNMRnVuY3Rpb25Nb2RlOjpI
U0wpIHsKKyAgICAgICAgaWYgKGNvbnRleHQucmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQgJiYg
YXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pCisgICAgICAgICAgICByZXR1cm4gcGFy
c2VSZWxhdGl2ZUhTTFBhcmFtZXRlcnMoYXJncywgY29udGV4dCk7CisgICAgfQorCiAgICAgYXV0
byBodWUgPSBjb25zdW1lSHVlKGFyZ3MsIGNvbnRleHQpOwogICAgIGlmICghaHVlKQogICAgICAg
ICByZXR1cm4geyB9OwpAQCAtODcyLDExICsxMTEyLDU4IEBAIHN0YXRpYyBXaGl0ZW5lc3NCbGFj
a25lc3Mgbm9ybWFsaXplV2hpdGUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgQ29s
b3IgcGFyc2VSZWxhdGl2ZUhXQlBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywg
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBBU1NFUlQoYXJncy5wZWVr
KCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pOworICAgIGNvbnN1bWVJZGVudFJhdyhhcmdzKTsKKwor
ICAgIGF1dG8gb3JpZ2luQ29sb3IgPSBjb25zdW1lT3JpZ2luQ29sb3IoYXJncywgY29udGV4dCk7
CisgICAgaWYgKCFvcmlnaW5Db2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICBhdXRvIGh1ZSA9IGNvbnN1bWVIdWVPcklkZW50PENTU1ZhbHVlSD4oYXJncywgY29udGV4
dCk7CisgICAgaWYgKCFodWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIHdoaXRl
bmVzcyA9IGNvbnN1bWVQZXJjZW50T3JJZGVudDxDU1NWYWx1ZVcsIENTU1ZhbHVlQiwgQ1NTVmFs
dWVBbHBoYT4oYXJncyk7CisgICAgaWYgKCF3aGl0ZW5lc3MpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICBhdXRvIGJsYWNrbmVzcyA9IGNvbnN1bWVQZXJjZW50T3JJZGVudDxDU1NWYWx1ZVcs
IENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oYXJncyk7CisgICAgaWYgKCFibGFja25lc3MpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGFscGhhID0gY29uc3VtZU9wdGlvbmFsQWxw
aGFPcklkZW50PENTU1ZhbHVlVywgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPihhcmdzKTsKKyAg
ICBpZiAoIWFscGhhKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKCFhcmdzLmF0RW5k
KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICAvLyBBZnRlciBwYXJzaW5nLCBjb252ZXJ0
IGlkZW50aWZpZXJzIHRvIHZhbHVlcyBmcm9tIHRoZSBvcmlnaW4gY29sb3IuCisKKyAgICBhdXRv
IG9yaWdpbkNvbG9yQXNIV0IgPSBvcmlnaW5Db2xvci50b0NvbG9yVHlwZUxvc3N5PEhXQkE8Zmxv
YXQ+PigpOworCisgICAgYXV0byByZXNvbHZlZEh1ZSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hh
bm5lbDxDU1NWYWx1ZUgsIENTU1ZhbHVlVywgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPigqaHVl
LCBvcmlnaW5Db2xvckFzSFdCLCBbXShhdXRvIGh1ZSkgeworICAgICAgICByZXR1cm4gbm9ybWFs
aXplSHVlKGh1ZSk7CisgICAgfSk7CisgICAgYXV0byByZXNvbHZlZFdoaXRlbmVzcyA9IHJlc29s
dmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUgsIENTU1ZhbHVlVywgQ1NTVmFsdWVCLCBD
U1NWYWx1ZUFscGhhPigqd2hpdGVuZXNzLCBvcmlnaW5Db2xvckFzSFdCKTsKKyAgICBhdXRvIHJl
c29sdmVkQmxhY2tuZXNzID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlSCwg
Q1NTVmFsdWVXLCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KCpibGFja25lc3MsIG9yaWdpbkNv
bG9yQXNIV0IpOworICAgIGF1dG8gcmVzb2x2ZWRBbHBoYSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9y
Q2hhbm5lbDxDU1NWYWx1ZUgsIENTU1ZhbHVlVywgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPigq
YWxwaGEsIG9yaWdpbkNvbG9yQXNIV0IpOworCisgICAgYXV0byBbbm9ybWFsaXplZFdoaXRuZXNz
LCBub3JtYWxpemVkQmxhY2tuZXNzXSA9IG5vcm1hbGl6ZVdoaXRlbmVzc0JsYWNrbmVzcyhyZXNv
bHZlZFdoaXRlbmVzcywgcmVzb2x2ZWRCbGFja25lc3MpOworCisgICAgcmV0dXJuIGNvbnZlcnRD
b2xvcjxTUkdCQTx1aW50OF90Pj4oSFNMQTxmbG9hdD4geyBzdGF0aWNfY2FzdDxmbG9hdD4ocmVz
b2x2ZWRIdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZFdoaXRuZXNzKSwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRCbGFja25lc3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVz
b2x2ZWRBbHBoYSkgfSk7Cit9CisKIHN0YXRpYyBDb2xvciBwYXJzZUhXQlBhcmFtZXRlcnMoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQp
CiB7CiAgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVId2Ip
OwogICAgIGF1dG8gYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CiAKKyAgICBpZiAoY29u
dGV4dC5yZWxhdGl2ZUNvbG9yU3ludGF4RW5hYmxlZCAmJiBhcmdzLnBlZWsoKS5pZCgpID09IENT
U1ZhbHVlRnJvbSkKKyAgICAgICAgcmV0dXJuIHBhcnNlUmVsYXRpdmVIV0JQYXJhbWV0ZXJzKGFy
Z3MsIGNvbnRleHQpOworCiAgICAgYXV0byBodWUgPSBjb25zdW1lSHVlKGFyZ3MsIGNvbnRleHQp
OwogICAgIGlmICghaHVlKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtOTAyLDExICsxMTg5LDU0
IEBAIHN0YXRpYyBDb2xvciBwYXJzZUhXQlBhcmFtZXRlcnMoQ1NTUGFyc2UKICAgICByZXR1cm4g
Y29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+PihIV0JBPGZsb2F0PiB7IHN0YXRpY19jYXN0PGZs
b2F0Pihub3JtYWxpemVkSHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRXaGl0bmVz
cyksIHN0YXRpY19jYXN0PGZsb2F0Pihub3JtYWxpemVkQmxhY2tuZXNzKSwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KCphbHBoYSkgfSk7CiB9CiAKLXN0YXRpYyBDb2xvciBwYXJzZUxhYlBhcmFtZXRlcnMo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKQorc3Rh
dGljIENvbG9yIHBhcnNlUmVsYXRpdmVMYWJQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2Um
IGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGFy
Z3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVGcm9tKTsKKyAgICBjb25zdW1lSWRlbnRSYXcoYXJn
cyk7CisKKyAgICBhdXRvIG9yaWdpbkNvbG9yID0gY29uc3VtZU9yaWdpbkNvbG9yKGFyZ3MsIGNv
bnRleHQpOworICAgIGlmICghb3JpZ2luQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgYXV0byBsaWdodG5lc3MgPSBjb25zdW1lUGVyY2VudE9ySWRlbnQ8Q1NTVmFs
dWVMLCBDU1NWYWx1ZUFscGhhPihhcmdzKTsKKyAgICBpZiAoIWxpZ2h0bmVzcykKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIGF1dG8gYVZhbHVlID0gY29uc3VtZU51bWJlck9ySWRlbnQ8Q1NT
VmFsdWVBLCBDU1NWYWx1ZUI+KGFyZ3MpOworICAgIGlmICghYVZhbHVlKQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgYXV0byBiVmFsdWUgPSBjb25zdW1lTnVtYmVyT3JJZGVudDxDU1NWYWx1
ZUEsIENTU1ZhbHVlQj4oYXJncyk7CisgICAgaWYgKCFiVmFsdWUpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICBhdXRvIGFscGhhID0gY29uc3VtZU9wdGlvbmFsQWxwaGFPcklkZW50PENTU1Zh
bHVlTCwgQ1NTVmFsdWVBbHBoYT4oYXJncyk7CisgICAgaWYgKCFhbHBoYSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgLy8gQWZ0ZXIgcGFyc2luZywgY29udmVydCBpZGVudGlmaWVycyB0byB2YWx1ZXMgZnJv
bSB0aGUgb3JpZ2luIGNvbG9yLgorCisgICAgYXV0byBvcmlnaW5Db2xvckFzTGFiID0gb3JpZ2lu
Q29sb3IudG9Db2xvclR5cGVMb3NzeTxMYWI8ZmxvYXQ+PigpOworCisgICAgYXV0byByZXNvbHZl
ZExpZ2h0bmVzcyA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUwsIENTU1Zh
bHVlQSwgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPigqbGlnaHRuZXNzLCBvcmlnaW5Db2xvckFz
TGFiKTsKKyAgICBhdXRvIHJlc29sdmVkQVZhbHVlID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFu
bmVsPENTU1ZhbHVlTCwgQ1NTVmFsdWVBLCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KCphVmFs
dWUsIG9yaWdpbkNvbG9yQXNMYWIpOworICAgIGF1dG8gcmVzb2x2ZWRCVmFsdWUgPSByZXNvbHZl
UmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVMLCBDU1NWYWx1ZUEsIENTU1ZhbHVlQiwgQ1NT
VmFsdWVBbHBoYT4oKmJWYWx1ZSwgb3JpZ2luQ29sb3JBc0xhYik7CisgICAgYXV0byByZXNvbHZl
ZEFscGhhID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlTCwgQ1NTVmFsdWVB
LCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KCphbHBoYSwgb3JpZ2luQ29sb3JBc0xhYik7CisK
KyAgICByZXR1cm4gTGFiPGZsb2F0PiB7IHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZExpZ2h0
bmVzcyksIHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZEFWYWx1ZSksIHN0YXRpY19jYXN0PGZs
b2F0PihyZXNvbHZlZEJWYWx1ZSksIHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZEFscGhhKSB9
OworfQorCitzdGF0aWMgQ29sb3IgcGFyc2VMYWJQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogewogICAgIEFTU0VS
VChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlTGFiKTsKICAgICBhdXRvIGFy
Z3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOwogCisgICAgaWYgKGNvbnRleHQucmVsYXRpdmVD
b2xvclN5bnRheEVuYWJsZWQgJiYgYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pCisg
ICAgICAgIHJldHVybiBwYXJzZVJlbGF0aXZlTGFiUGFyYW1ldGVycyhhcmdzLCBjb250ZXh0KTsK
KwogICAgIGF1dG8gbGlnaHRuZXNzID0gY29uc3VtZVBlcmNlbnRSYXcoYXJncyk7CiAgICAgaWYg
KCFsaWdodG5lc3MpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC05MjksMTEgKzEyNTksNTQgQEAg
c3RhdGljIENvbG9yIHBhcnNlTGFiUGFyYW1ldGVycyhDU1NQYXJzZQogICAgIHJldHVybiBMYWI8
ZmxvYXQ+IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KCpsaWdodG5lc3MpLCBzdGF0aWNfY2FzdDxmbG9h
dD4oKmFWYWx1ZSksIHN0YXRpY19jYXN0PGZsb2F0PigqYlZhbHVlKSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KCphbHBoYSkgfTsKIH0KIAorc3RhdGljIENvbG9yIHBhcnNlUmVsYXRpdmVMQ0hQYXJhbWV0
ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQpCit7CisgICAgQVNTRVJUKGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVGcm9tKTsK
KyAgICBjb25zdW1lSWRlbnRSYXcoYXJncyk7CisKKyAgICBhdXRvIG9yaWdpbkNvbG9yID0gY29u
c3VtZU9yaWdpbkNvbG9yKGFyZ3MsIGNvbnRleHQpOworICAgIGlmICghb3JpZ2luQ29sb3IuaXNW
YWxpZCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBsaWdodG5lc3MgPSBjb25z
dW1lUGVyY2VudE9ySWRlbnQ8Q1NTVmFsdWVMLCBDU1NWYWx1ZUFscGhhPihhcmdzKTsKKyAgICBp
ZiAoIWxpZ2h0bmVzcykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gY2hyb21hID0g
Y29uc3VtZU51bWJlck9ySWRlbnQ8Q1NTVmFsdWVDLCBDU1NWYWx1ZUg+KGFyZ3MpOworICAgIGlm
ICghY2hyb21hKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBodWUgPSBjb25zdW1l
SHVlT3JJZGVudDxDU1NWYWx1ZUMsIENTU1ZhbHVlSD4oYXJncywgY29udGV4dCk7CisgICAgaWYg
KCFodWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGFscGhhID0gY29uc3VtZU9w
dGlvbmFsQWxwaGFPcklkZW50PENTU1ZhbHVlTCwgQ1NTVmFsdWVBbHBoYT4oYXJncyk7CisgICAg
aWYgKCFhbHBoYSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmICghYXJncy5hdEVuZCgp
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBvcmlnaW5Db2xvckFzTENIID0gb3Jp
Z2luQ29sb3IudG9Db2xvclR5cGVMb3NzeTxMQ0hBPGZsb2F0Pj4oKTsKKworICAgIGF1dG8gcmVz
b2x2ZWRMaWdodG5lc3MgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVMLCBD
U1NWYWx1ZUMsIENTU1ZhbHVlSCwgQ1NTVmFsdWVBbHBoYT4oKmxpZ2h0bmVzcywgb3JpZ2luQ29s
b3JBc0xDSCk7CisgICAgYXV0byByZXNvbHZlZENocm9tYSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9y
Q2hhbm5lbDxDU1NWYWx1ZUwsIENTU1ZhbHVlQywgQ1NTVmFsdWVILCBDU1NWYWx1ZUFscGhhPigq
Y2hyb21hLCBvcmlnaW5Db2xvckFzTENIKTsKKyAgICBhdXRvIHJlc29sdmVkSHVlID0gcmVzb2x2
ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlTCwgQ1NTVmFsdWVDLCBDU1NWYWx1ZUgsIENT
U1ZhbHVlQWxwaGE+KCpodWUsIG9yaWdpbkNvbG9yQXNMQ0gsIFtdKGF1dG8gaHVlKSB7CisgICAg
ICAgIHJldHVybiBub3JtYWxpemVIdWUoaHVlKTsKKyAgICB9KTsKKyAgICBhdXRvIHJlc29sdmVk
QWxwaGEgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVMLCBDU1NWYWx1ZUMs
IENTU1ZhbHVlSCwgQ1NTVmFsdWVBbHBoYT4oKmFscGhhLCBvcmlnaW5Db2xvckFzTENIKTsKKwor
ICAgIHJldHVybiBjb252ZXJ0Q29sb3I8TGFiPGZsb2F0Pj4oTENIQTxmbG9hdD4geyBzdGF0aWNf
Y2FzdDxmbG9hdD4ocmVzb2x2ZWRMaWdodG5lc3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2
ZWRDaHJvbWEpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRIdWUpLCBzdGF0aWNfY2FzdDxm
bG9hdD4ocmVzb2x2ZWRBbHBoYSkgfSk7Cit9CisKIHN0YXRpYyBDb2xvciBwYXJzZUxDSFBhcmFt
ZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NT
VmFsdWVMY2gpOwogICAgIGF1dG8gYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CiAKKyAg
ICBpZiAoY29udGV4dC5yZWxhdGl2ZUNvbG9yU3ludGF4RW5hYmxlZCAmJiBhcmdzLnBlZWsoKS5p
ZCgpID09IENTU1ZhbHVlRnJvbSkKKyAgICAgICAgcmV0dXJuIHBhcnNlUmVsYXRpdmVMQ0hQYXJh
bWV0ZXJzKGFyZ3MsIGNvbnRleHQpOworCiAgICAgYXV0byBsaWdodG5lc3MgPSBjb25zdW1lUGVy
Y2VudFJhdyhhcmdzKTsKICAgICBpZiAoIWxpZ2h0bmVzcykKICAgICAgICAgcmV0dXJuIHsgfTsK
QEAgLTExMjUsMTIgKzE0OTgsMTYgQEAgc3RhdGljIENvbG9yIHBhcnNlQ29sb3JGdW5jdGlvbihD
U1NQYXJzZQogICAgIENvbG9yIGNvbG9yOwogICAgIHN3aXRjaCAoZnVuY3Rpb25JZCkgewogICAg
IGNhc2UgQ1NTVmFsdWVSZ2I6CisgICAgICAgIGNvbG9yID0gcGFyc2VSR0JQYXJhbWV0ZXJzPFJH
QkZ1bmN0aW9uTW9kZTo6UkdCPihjb2xvclJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDU1NWYWx1ZVJnYmE6Ci0gICAgICAgIGNvbG9yID0gcGFyc2VSR0JQYXJhbWV0
ZXJzKGNvbG9yUmFuZ2UsIGNvbnRleHQpOworICAgICAgICBjb2xvciA9IHBhcnNlUkdCUGFyYW1l
dGVyczxSR0JGdW5jdGlvbk1vZGU6OlJHQkE+KGNvbG9yUmFuZ2UsIGNvbnRleHQpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlSHNsOgorICAgICAgICBjb2xvciA9IHBhcnNlSFNM
UGFyYW1ldGVyczxIU0xGdW5jdGlvbk1vZGU6OkhTTD4oY29sb3JSYW5nZSwgY29udGV4dCk7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVIc2xhOgotICAgICAgICBjb2xvciA9IHBh
cnNlSFNMUGFyYW1ldGVycyhjb2xvclJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgY29sb3IgPSBw
YXJzZUhTTFBhcmFtZXRlcnM8SFNMRnVuY3Rpb25Nb2RlOjpIU0xBPihjb2xvclJhbmdlLCBjb250
ZXh0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUh3YjoKICAgICAgICAgY29s
b3IgPSBwYXJzZUhXQlBhcmFtZXRlcnMoY29sb3JSYW5nZSwgY29udGV4dCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420773</attachid>
            <date>2021-02-17 17:58:59 -0800</date>
            <delta_ts>2021-02-17 18:01:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221880-20210217175858.patch</filename>
            <type>text/plain</type>
            <size>83400</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzMwNTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAyLTE3ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIENTUyBD
b2xvciA1IFJlbGF0aXZlIENvbG9yIFN5bnRheAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxODgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2Vz
RXhwZXJpbWVudGFsLnlhbWw6CisgICAgICAgIEFkZCBuZXcgZXhwZXJpbWVudGFsIHByZWZlcmVu
Y2UgZm9yIENTUyBDb2xvciA1IFJlbGF0aXZlIENvbG9yIFN5bnRheAorICAgICAgICB3aGljaCBp
cyBvZmYgYnkgZGVmYXVsdC4KKwogMjAyMS0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIER1bXBSZW5kZXJUcmVlJ3MgY3JlYXRlV2ViVmlld0FuZE9mZnNj
cmVlbldpbmRvdygpIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIKSW5kZXg6IFNvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4
cGVyaW1lbnRhbC55YW1sCShyZXZpc2lvbiAyNzMwMTMpCisrKyBTb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAkod29ya2luZyBjb3B5
KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjMsNiAr
MTYzLDMwIEBAIENTU1BhaW50aW5nQVBJRW5hYmxlZDoKICAgICAgICJFTkFCTEUoRVhQRVJJTUVO
VEFMX0ZFQVRVUkVTKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpKSI6IHRydWUK
ICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAKK0NTU1JlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkOgor
ICB0eXBlOiBib29sCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiQ1NTIFJlbGF0aXZlIENvbG9yIFN5
bnRheCIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIHN1cHBvcnQgZm9yIENT
UyBSZWxhdGl2ZSBDb2xvciBTeW50YXggZGVmaW5lZCBpbiBDU1MgQ29sb3IgNSIKKyAgZGVmYXVs
dFZhbHVlOgorICAgIFdlYktpdExlZ2FjeToKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2Vi
S2l0OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJDb3JlOgorICAgICAgZGVmYXVsdDog
ZmFsc2UKKworQ1NTUmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAg
aHVtYW5SZWFkYWJsZU5hbWU6ICJDU1MgUmVsYXRpdmUgQ29sb3IgU3ludGF4IgorICBodW1hblJl
YWRhYmxlRGVzY3JpcHRpb246ICJFbmFibGUgc3VwcG9ydCBmb3IgQ1NTIFJlbGF0aXZlIENvbG9y
IFN5bnRheCBkZWZpbmVkIGluIENTUyBDb2xvciA1IgorICBkZWZhdWx0VmFsdWU6CisgICAgV2Vi
S2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJLaXQ6CisgICAgICBkZWZh
dWx0OiBmYWxzZQorICAgIFdlYkNvcmU6CisgICAgICBkZWZhdWx0OiBmYWxzZQorCiBDU1NUeXBl
ZE9NRW5hYmxlZDoKICAgdHlwZTogYm9vbAogICBodW1hblJlYWRhYmxlTmFtZTogIkNTUyBUeXBl
ZCBPTSIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MzAxMykKKysrIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDIxLTAyLTE3ICBT
YW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFs
IHN1cHBvcnQgZm9yIENTUyBDb2xvciA1IFJlbGF0aXZlIENvbG9yIFN5bnRheAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxODgwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBpbml0aWFsIHN1cHBv
cnQgZm9yIENTUyBDb2xvciA1IFJlbGF0aXZlIENvbG9yIFN5bnRheCAtIGh0dHBzOi8vZHJhZnRz
LmNzc3dnLm9yZy9jc3MtY29sb3ItNS8jcmVsYXRpdmUtY29sb3JzIAorCisgICAgICAgIFRoaXMg
ZmVhdHVyZSBpcyBvZmYgYnkgZGVmYXVsdCBhbmQgY2FuIGJlIGVuYWJsZWQgdmlhIHRoZSBDU1NS
ZWxhdGl2ZUNvbG9yU3ludGF4RW5hYmxlZAorICAgICAgICBleHBlcmltZW50YWwgcHJlZmVyZW5j
ZSBmbGFnLgorCisgICAgICAgIEFzIHRoaXMgaXMgdGhlIGluaXRpYWwgY29tbWl0IGZvciB0aGlz
IGZ1bmN0aW9uYWxpdHksIGl0IGlzIG5vdCB5ZXQgY29tcGxldGUuCisgICAgICAgIFRoaXMgYWRk
cyBiYXNpYyBwYXJzaW5nIGFuZCByZXNvbHV0aW9uIGZvciByZWxhdGl2ZSByZ2IoKSwgaHNsKCks
IGh3YigpLCBsYWIoKQorICAgICAgICBhbmQgbGNoKCksIGJ1dCBkb2VzIG5vdCB5ZXQgaW1wbGVt
ZW50IHN1cHBvcnQgZm9yIGNhbGMoKSBmdW5jdGlvbnMgdGhhdCBjYW4gb3BlcmF0ZQorICAgICAg
ICBvbiB0aGUgY2hhbm5lbCBrZXl3b3JkcyBub3IgZG9lcyBpdCBzdXBwb3J0IHVzaW5nIHN5c3Rl
bSBrZXl3b3JkIGNvbG9ycyBhcyB0aGUKKyAgICAgICAgb3JpZ2luIG9mIHRoZSByZWxhdGl2ZSBj
b2xvcnMuCisKKyAgICAgICAgU29tZSBhZGRpdGlvbmFsIGNhdmVhdGVzIGFib3V0IHRoaXMgaW5p
dGlhbCBpbXBsZW1lbnRhdGlvbiB0aGF0IG5lZWQgZnVydGhlciAKKyAgICAgICAgY2xhcmlmaWNh
dGlvbiBmcm9tIHRoZSBzcGVjIGVkaXRvcnM6IAorCisgICAgICAgIDEuIEN1cnJlbnRseSwgd2Ug
b25seSBhbGxvdyB1c2luZyB0aGUgY2hhbm5lbCBjb3JyZXNwb25kaW5nIHRvIHRvIHRoZSBwb3Np
dGlvbiBvZiB0aGF0IGNoYW5uZWwKKyAgICAgICAgaW4gdGhlIHJlcGxhY2VtZW50IHN5bnRheC4g
VGhpcyBtZWFucyB5b3UgY2FuJ3QgZG86CisgICAgICAgIAorICAgICAgICAgICAgcmdiKGZyb20g
cmVkIGcgciBiKQorICAgICAgICAKKyAgICAgICAgdG8gcGVybXV0ZSB0aGUgY2hhbm5lbHMuCisK
KyAgICAgICAgMi4gRm9yIHJnYigpLCB3aGljaCBhbGxvd3MgciwgZywgYW5kIGIgdG8gYmUgYWxs
IG51bWJlcnMgb3IgYWxsIHBlcmNlbnRhZ2VzLAorICAgICAgICB3ZSBjdXJyZW50bHkgZG9uJ3Qg
YXNzdW1lIGVpdGhlciBudW1iZXIgb3IgcGVyY2VudGFnZSwgYW5kIHdhaXQgdW50aWwgc29tZQor
ICAgICAgICBjb25zdGFudCB2YWx1ZSBpcyBwcm92aWRlZCB0byBzZXQgdGhlIHR5cGUuIFRoYXQg
bWVhbnMgdGhhdDoKKyAgICAgICAgCisgICAgICAgICAgICByZ2IoZnJvbSByZWQgciBnIDEwKQor
CisgICAgICAgIHdpbGwgdHJlYXQgciwgYW5nIGcgYXMgbnVtYmVycywgYnV0OgorICAgICAgICAK
KyAgICAgICAgICAgIHJnYihmcm9tIHJlZCByIGcgMTAlKQorCisgICAgICAgIHdpbGwgdHJlYXQg
ciBhbmQgZyBhcyBwZXJjZW50YWdlcy4gVGhpcyBpcyBub3QgY3VycmVudGx5IG9ic2VydmFibGUg
b3RoZXIgdGhhbgorICAgICAgICB0aGF0IHdlIHJlamVjdCBzb21ldGhpbmcgdGhhdCBtaXhlcyB0
aGUgdHdvLCBzdWNoIGFzCisgICAgICAgIAorICAgICAgICAgICAgcmdiKGZyb20gcmVkIHIgMTAg
MTAlKQorCisgICAgICAgIGJ1dCB3aWxsIGJlIGZ1bGx5IG9ic2VydmFibGUgb25jZSBwcm9jZXNz
aW5nIHRoZSBjaGFubmVscyB2aWEgY2FsYygpIGlzIHN1cHBvcnRlZC4KKworICAgICAgICBUZXN0
OiBmYXN0L2Nzcy9wYXJzaW5nLXJlbGF0aXZlLWNvbG9yLXN5bnRheC5odG1sCisKKyAgICAgICAg
KiBjc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNl
ckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJDb250ZXh0SGFzaDo6aGFzaCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpjb25zdW1lT3JpZ2luQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzOjpjb25zdW1lT3B0aW9uYWxBbHBoYU9ySWRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lSHVlT3JJZGVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVOdW1iZXJPcklk
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3Vt
ZVBlcmNlbnRPcklkZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVs
cGVyczo6ZXh0cmFjdENoYW5uZWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM6OnJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVSZWxhdGl2ZVJHQkNvbXBv
bmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNl
UmVsYXRpdmVSR0JQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFy
c2VySGVscGVyczo6cGFyc2VSR0JQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5UGFyc2VySGVscGVyczo6cGFyc2VSZWxhdGl2ZUhTTFBhcmFtZXRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZUhTTFBhcmFtZXRlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpub3JtYWxpemVX
aGl0ZW5lc3NCbGFja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzOjpwYXJzZVJlbGF0aXZlSFdCUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlSFdCUGFyYW1ldGVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlUmVsYXRpdmVMYWJQYXJhbWV0
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6cGFyc2VM
YWJQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVy
czo6cGFyc2VSZWxhdGl2ZUxDSFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZUxDSFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZUNvbG9yRnVuY3Rpb24pOgorCiAyMDIx
LTAyLTE3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSBBZGQgYW4gb3ZlcmZsb3cgYnV0dG9uIHRoYXQncyBzaG93biB3aGVuIGNvbnRyb2xzIGFyZSBk
cm9wcGVkIHNvIHRoYXQgaXQncyBzdGlsbCBwb3NzaWJsZSB0byB0cmlnZ2VyIHRoZSBkcm9wcGVk
IGJ1dHRvbidzIGFjdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdv
cmRzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRz
LmluCShyZXZpc2lvbiAyNzMwMTMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3
b3Jkcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTI2OSw2ICsxMjY5LDI1IEBAIGxhYgogbGNoCiAv
L2NvbG9yCiAKKy8vIHJlbGF0aXZlIGNvbG9yIGlkZW50aWZpZXJzCisvLyBmcm9tCityCitnCiti
CitoCitzCitsCisvLyBoCit3CisvLyBiCisvLyBsCithCisvLyBiCisvLyBsCitjCisvLyBoCisv
LyBhbHBoYQorCiAvLyB0cmFuc2Zvcm0KIG1hdHJpeAogbWF0cml4M2QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcAkocmV2aXNpb24gMjcz
MDEzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsNyBAQCBDU1NQYXJzZXJDb250ZXh0OjpDU1NQYXJz
ZXJDb250ZXh0KGNvbnN0CiAgICAgLCBsZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoRW5hYmxl
ZCB7IHNob3VsZEVuYWJsZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2goZG9jdW1lbnQpIH0K
ICNlbmRpZgogICAgICwgb3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZCB7IGRvY3VtZW50LnNldHRp
bmdzKCkub3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZCgpIH0KKyAgICAsIHJlbGF0aXZlQ29sb3JT
eW50YXhFbmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5jc3NSZWxhdGl2ZUNvbG9yU3ludGF4
RW5hYmxlZCgpIH0KICAgICAsIHNjcm9sbEJlaGF2aW9yRW5hYmxlZCB7IGRvY3VtZW50LnNldHRp
bmdzKCkuQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCgpIH0KICAgICAsIHNwcmluZ1Rp
bWluZ0Z1bmN0aW9uRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuc3ByaW5nVGltaW5nRnVu
Y3Rpb25FbmFibGVkKCkgfQogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC0xMTMsNiAr
MTE0LDcgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIAogICAgICAg
ICAmJiBhLmxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hFbmFibGVkID09IGIubGVnYWN5T3Zl
cmZsb3dTY3JvbGxpbmdUb3VjaEVuYWJsZWQKICNlbmRpZgogICAgICAgICAmJiBhLm92ZXJzY3Jv
bGxCZWhhdmlvckVuYWJsZWQgPT0gYi5vdmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVkCisgICAgICAg
ICYmIGEucmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQgPT0gYi5yZWxhdGl2ZUNvbG9yU3ludGF4
RW5hYmxlZAogICAgICAgICAmJiBhLnNjcm9sbEJlaGF2aW9yRW5hYmxlZCA9PSBiLnNjcm9sbEJl
aGF2aW9yRW5hYmxlZAogICAgICAgICAmJiBhLnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZCA9
PSBiLnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJ
TkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQu
aAkocmV2aXNpb24gMjczMDEzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgogICAg
IGJvb2wgbGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaEVuYWJsZWQgeyBmYWxzZSB9OwogI2Vu
ZGlmCiAgICAgYm9vbCBvdmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBi
b29sIHJlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIHNjcm9s
bEJlaGF2aW9yRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBzcHJpbmdUaW1pbmdGdW5jdGlv
bkVuYWJsZWQgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC0xMDIs
MzAgKzEwMywzNCBAQCBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dEhhc2ggewogICAgICAgICBpZiAo
IWtleS5jaGFyc2V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGhhc2ggXj0gU3RyaW5nSGFzaDo6
aGFzaChrZXkuY2hhcnNldCk7CiAgICAgICAgIHVuc2lnbmVkIGJpdHMgPSBrZXkuaXNIVE1MRG9j
dW1lbnQgICAgICAgICAgICAgICAgICA8PCAwCi0jaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykK
LSAgICAgICAgICAgICYga2V5LnRleHRBdXRvc2l6aW5nRW5hYmxlZCAgICAgICAgICAgICAgICAg
ICAgIDw8IDEKLSNlbmRpZgorICAgICAgICAgICAgJiBrZXkuaGFzRG9jdW1lbnRTZWN1cml0eU9y
aWdpbiAgICAgICAgICAgICAgICAgPDwgMQorICAgICAgICAgICAgJiBrZXkuaXNDb250ZW50T3Bh
cXVlICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMgorICAgICAgICAgICAgJiBrZXkudXNl
U3lzdGVtQXBwZWFyYW5jZSAgICAgICAgICAgICAgICAgICAgICAgPDwgMworICAgICAgICAgICAg
JiBrZXkuYXNwZWN0UmF0aW9FbmFibGVkICAgICAgICAgICAgICAgICAgICAgICAgPDwgNAorICAg
ICAgICAgICAgJiBrZXkuY29sb3JGaWx0ZXJFbmFibGVkICAgICAgICAgICAgICAgICAgICAgICAg
PDwgNQorICAgICAgICAgICAgJiBrZXkuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCAgICAgICAg
ICAgICAgICAgPDwgNgorICAgICAgICAgICAgJiBrZXkuZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVk
ICAgICAgICAgICAgICAgICAgPDwgNworICAgICAgICAgICAgJiBrZXkuZW5mb3JjZXNDU1NNSU1F
VHlwZUluTm9RdWlya3NNb2RlICAgICAgICAgPDwgOAorICAgICAgICAgICAgJiBrZXkuaW5kaXZp
ZHVhbFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkICAgICAgPDwgOQogI2lmIEVOQUJMRShPVkVS
RkxPV19TQ1JPTExJTkdfVE9VQ0gpCi0gICAgICAgICAgICAmIGtleS5sZWdhY3lPdmVyZmxvd1Nj
cm9sbGluZ1RvdWNoRW5hYmxlZCAgICAgICA8PCAyCisgICAgICAgICAgICAmIGtleS5sZWdhY3lP
dmVyZmxvd1Njcm9sbGluZ1RvdWNoRW5hYmxlZCAgICAgICA8PCAxMAogI2VuZGlmCi0gICAgICAg
ICAgICAmIGtleS5lbmZvcmNlc0NTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGUgICAgICAgICA8PCAz
Ci0gICAgICAgICAgICAmIGtleS51c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2
aW9yICA8PCA0Ci0gICAgICAgICAgICAmIGtleS5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQg
ICAgICAgICAgICAgICA8PCA1Ci0gICAgICAgICAgICAmIGtleS5jb25zdGFudFByb3BlcnRpZXNF
bmFibGVkICAgICAgICAgICAgICAgICA8PCA2Ci0gICAgICAgICAgICAmIGtleS5jb2xvckZpbHRl
ckVuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICA8PCA3Ci0gICAgICAgICAgICAmIGtleS5k
ZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgICAgICAgICAgICAgICAgICA8PCA4Ci0gICAgICAgICAg
ICAmIGtleS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luICAgICAgICAgICAgICAgICA8PCA5Ci0g
ICAgICAgICAgICAmIGtleS51c2VTeXN0ZW1BcHBlYXJhbmNlICAgICAgICAgICAgICAgICAgICAg
ICA8PCAxMAotI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgICAgICAgICAmIGtl
eS5hdHRhY2htZW50RW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxMQorICAgICAg
ICAgICAgJiBrZXkub3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZCAgICAgICAgICAgICAgICAgPDwg
MTEKKyAgICAgICAgICAgICYga2V5LnJlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkICAgICAgICAg
ICAgICAgIDw8IDEyCisgICAgICAgICAgICAmIGtleS5zY3JvbGxCZWhhdmlvckVuYWJsZWQgICAg
ICAgICAgICAgICAgICAgICA8PCAxMworICAgICAgICAgICAgJiBrZXkuc3ByaW5nVGltaW5nRnVu
Y3Rpb25FbmFibGVkICAgICAgICAgICAgICAgPDwgMTQKKyNpZiBFTkFCTEUoVEVYVF9BVVRPU0la
SU5HKQorICAgICAgICAgICAgJiBrZXkudGV4dEF1dG9zaXppbmdFbmFibGVkICAgICAgICAgICAg
ICAgICAgICAgPDwgMTUKICNlbmRpZgotICAgICAgICAgICAgJiBrZXkuc2Nyb2xsQmVoYXZpb3JF
bmFibGVkICAgICAgICAgICAgICAgICAgICAgPDwgMTIKLSAgICAgICAgICAgICYga2V5LmluZGl2
aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZCAgICAgIDw8IDEzCi0gICAgICAgICAgICAm
IGtleS5vdmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVkICAgICAgICAgICAgICAgICA8PCAxNAogI2lm
IEVOQUJMRShDU1NfVFJBTlNGT1JNX1NUWUxFX09QVElNSVpFRF8zRCkKLSAgICAgICAgICAgICYg
a2V5LnRyYW5zZm9ybVN0eWxlT3B0aW1pemVkM0RFbmFibGVkICAgICAgICAgIDw8IDE1CisgICAg
ICAgICAgICAmIGtleS50cmFuc2Zvcm1TdHlsZU9wdGltaXplZDNERW5hYmxlZCAgICAgICAgICA8
PCAxNgorI2VuZGlmCisgICAgICAgICAgICAmIGtleS51c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNo
b3J0aGFuZEJlaGF2aW9yICA8PCAxNworICAgICAgICAgICAgJiBrZXkuZm9jdXNWaXNpYmxlRW5h
YmxlZCAgICAgICAgICAgICAgICAgICAgICAgPDwgMTgKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorICAgICAgICAgICAgJiBrZXkuYXR0YWNobWVudEVuYWJsZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgMTkKICNlbmRpZgotICAgICAgICAgICAgJiBrZXkubW9kZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMTY7IC8vIEtlZXAgdGhpcyBsYXN0Lgor
ICAgICAgICAgICAgJiBrZXkubW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgMjA7IC8vIEtlZXAgdGhpcyBsYXN0LgogICAgICAgICBoYXNoIF49IFdURjo6aW50SGFz
aChiaXRzKTsKICAgICAgICAgcmV0dXJuIGhhc2g7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAko
cmV2aXNpb24gMjczMDEzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTAsNiArNjkwLDI3IEBAIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVVybChDU1MKICAgICByZXR1cm4gQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSh1cmwudG9TdHJpbmcoKSwgQ1NTVW5pdFR5
cGU6OkNTU19VUkkpOwogfQogCitzdGF0aWMgQ29sb3IgY29uc3VtZU9yaWdpbkNvbG9yKENTU1Bh
cnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7
CisgICAgYXV0byB2YWx1ZSA9IGNvbnN1bWVDb2xvcihhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAo
IXZhbHVlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKHZhbHVlLT5pc1JHQkNvbG9y
KCkpCisgICAgICAgIHJldHVybiB2YWx1ZS0+Y29sb3IoKTsKKworICAgIEFTU0VSVCh2YWx1ZS0+
aXNWYWx1ZUlEKCkpOworICAgIGF1dG8ga2V5d29yZCA9IHZhbHVlLT52YWx1ZUlEKCk7CisKKyAg
ICAvLyBGSVhNRTogV2UgZG9uJ3QgaGF2ZSBlbm91Z2ggY29udGV4dCBpbiB0aGUgcGFyc2VyIHRv
IHJlc29sdmluZyBhIHN5c3RlbSBrZXl3b3JkCisgICAgLy8gY29ycmVjdGx5LiBXZSBzaG91bGQg
cGFja2FnZSB1cCB0aGUgcmVsYXRpdmUgY29sb3IgcGFyYW1ldGVycyBhbmQgcmVzb2x2ZSB0aGUK
KyAgICAvLyB3aG9sZSB0aGluZyBhdCB0aGUgYXBwcm9wcmlhdGUgdGltZSB3aGVuIHRoZSBvcmln
aW4gY29sb3IgaXMgYSBzeXN0ZW0ga2V5d29yZC4KKyAgICBpZiAoU3R5bGVDb2xvcjo6aXNTeXN0
ZW1Db2xvcihrZXl3b3JkKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBTdHls
ZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKGtleXdvcmQsIHsgfSk7Cit9CisKIHN0YXRpYyBPcHRp
b25hbDxkb3VibGU+IGNvbnN1bWVPcHRpb25hbEFscGhhKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQogewogICAgIGlmICghY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkp
CkBAIC03MDEsNiArNzIyLDE3IEBAIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVPcHRp
b25hbEEKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCit0ZW1wbGF0ZTxDU1NWYWx1ZUlE
Li4uIGFsbG93ZWRJZGVudHM+IHN0YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFs
dWVJRD4+IGNvbnN1bWVPcHRpb25hbEFscGhhT3JJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKK3sKKyAgICBpZiAoYXV0byBhbHBoYSA9IGNvbnN1bWVPcHRpb25hbEFscGhhKHJhbmdl
KSkKKyAgICAgICAgcmV0dXJuIHsgKmFscGhhIH07CisKKyAgICBpZiAoYXV0byBpZGVudCA9IGNv
bnN1bWVJZGVudFJhdzxhbGxvd2VkSWRlbnRzLi4uPihyYW5nZSkpCisgICAgICAgIHJldHVybiB7
ICppZGVudCB9OworCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwogc3RhdGljIE9wdGlv
bmFsPGRvdWJsZT4gY29uc3VtZUh1ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoYXV0byBhbmdsZSA9IGNvbnN1
bWVBbmdsZVJhdyhyYW5nZSwgY29udGV4dC5tb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIFVu
aXRsZXNzWmVyb1F1aXJrOjpGb3JiaWQpKQpAQCAtNzA5LDExICs3NDEsODAgQEAgc3RhdGljIE9w
dGlvbmFsPGRvdWJsZT4gY29uc3VtZUh1ZShDU1NQYQogICAgIHJldHVybiBjb25zdW1lTnVtYmVy
UmF3KHJhbmdlKTsKIH0KIAordGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBz
dGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lSHVlT3JJ
ZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCkKK3sKKyAgICBpZiAoYXV0byBodWUgPSBjb25zdW1lSHVlKHJhbmdlLCBjb250ZXh0
KSkKKyAgICAgICAgcmV0dXJuIHsgKmh1ZSB9OworCisgICAgaWYgKGF1dG8gaWRlbnQgPSBjb25z
dW1lSWRlbnRSYXc8YWxsb3dlZElkZW50cy4uLj4ocmFuZ2UpKQorICAgICAgICByZXR1cm4geyAq
aWRlbnQgfTsKKworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKIHN0YXRpYyBkb3VibGUg
bm9ybWFsaXplSHVlKGRvdWJsZSBodWUpCiB7CiAgICAgcmV0dXJuIHN0ZDo6Zm1vZChzdGQ6OmZt
b2QoaHVlLCAzNjAuMCkgKyAzNjAuMCwgMzYwLjApOwogfQogCit0ZW1wbGF0ZTxDU1NWYWx1ZUlE
Li4uIGFsbG93ZWRJZGVudHM+IHN0YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFs
dWVJRD4+IGNvbnN1bWVOdW1iZXJPcklkZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQor
eworICAgIGlmIChhdXRvIG51bWJlciA9IGNvbnN1bWVOdW1iZXJSYXcocmFuZ2UpKQorICAgICAg
ICByZXR1cm4geyAqbnVtYmVyIH07CisKKyAgICBpZiAoYXV0byBpZGVudCA9IGNvbnN1bWVJZGVu
dFJhdzxhbGxvd2VkSWRlbnRzLi4uPihyYW5nZSkpCisgICAgICAgIHJldHVybiB7ICppZGVudCB9
OworCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordGVtcGxhdGU8Q1NTVmFsdWVJRC4u
LiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVl
SUQ+PiBjb25zdW1lUGVyY2VudE9ySWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7
CisgICAgaWYgKGF1dG8gcGVyY2VudCA9IGNvbnN1bWVQZXJjZW50UmF3KHJhbmdlKSkKKyAgICAg
ICAgcmV0dXJuIHsgKnBlcmNlbnQgfTsKKworICAgIGlmIChhdXRvIGlkZW50ID0gY29uc3VtZUlk
ZW50UmF3PGFsbG93ZWRJZGVudHMuLi4+KHJhbmdlKSkKKyAgICAgICAgcmV0dXJuIHsgKmlkZW50
IH07CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCit0ZW1wbGF0ZTxDU1NWYWx1ZUlE
IEMxLCBDU1NWYWx1ZUlEIEMyLCBDU1NWYWx1ZUlEIEMzLCBDU1NWYWx1ZUlEIEFscGhhQ2hhbm5l
bCwgdHlwZW5hbWUgQ29sb3JUeXBlPiBzdGF0aWMgYXV0byBleHRyYWN0Q2hhbm5lbFZhbHVlKENT
U1ZhbHVlSUQgY2hhbm5lbCwgY29uc3QgQ29sb3JUeXBlJiBvcmlnaW5Db2xvcikgLT4gdHlwZW5h
bWUgQ29sb3JUeXBlOjpDb21wb25lbnRUeXBlCit7CisgICAgYXV0byBjb21wb25lbnRzID0gYXND
b2xvckNvbXBvbmVudHMob3JpZ2luQ29sb3IpOworICAgIHN3aXRjaCAoY2hhbm5lbCkgeworICAg
IGNhc2UgQzE6CisgICAgICAgIHJldHVybiBjb21wb25lbnRzWzBdOworICAgIGNhc2UgQzI6Cisg
ICAgICAgIHJldHVybiBjb21wb25lbnRzWzFdOworICAgIGNhc2UgQzM6CisgICAgICAgIHJldHVy
biBjb21wb25lbnRzWzJdOworICAgIGNhc2UgQWxwaGFDaGFubmVsOgorICAgICAgICByZXR1cm4g
Y29tcG9uZW50c1szXTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwordGVtcGxhdGU8Q1NTVmFsdWVJRCBDMSwg
Q1NTVmFsdWVJRCBDMiwgQ1NTVmFsdWVJRCBDMywgQ1NTVmFsdWVJRCBBbHBoYUNoYW5uZWwsIHR5
cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFuc2Zvcm1lcj4gc3RhdGljIGRlY2x0
eXBlKGF1dG8pIHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbChjb25zdCBWYXJpYW50PGRvdWJs
ZSwgQ1NTVmFsdWVJRD4mIHBhcnNlZENoYW5uZWwsIGNvbnN0IENvbG9yVHlwZSYgb3JpZ2luQ29s
b3IsIFZhbHVlVHJhbnNmb3JtZXImJiB2YWx1ZVRyYW5zZm9ybWVyKQoreworICAgIHJldHVybiBz
d2l0Y2hPbihwYXJzZWRDaGFubmVsLAorICAgICAgICBbJl0gKGRvdWJsZSB2YWx1ZSkgeworICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlVHJhbnNmb3JtZXIodmFsdWUpOworICAgICAgICB9LAorICAg
ICAgICBbJl0gKENTU1ZhbHVlSUQgY2hhbm5lbCkgeworICAgICAgICAgICAgcmV0dXJuIGV4dHJh
Y3RDaGFubmVsVmFsdWU8QzEsIEMyLCBDMywgQWxwaGFDaGFubmVsPihjaGFubmVsLCBvcmlnaW5D
b2xvcik7CisgICAgICAgIH0KKyAgICApOworfQorCit0ZW1wbGF0ZTxDU1NWYWx1ZUlEIEMxLCBD
U1NWYWx1ZUlEIEMyLCBDU1NWYWx1ZUlEIEMzLCBDU1NWYWx1ZUlEIEFscGhhQ2hhbm5lbCwgdHlw
ZW5hbWUgQ29sb3JUeXBlPiBzdGF0aWMgZGVjbHR5cGUoYXV0bykgcmVzb2x2ZVJlbGF0aXZlQ29s
b3JDaGFubmVsKGNvbnN0IFZhcmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlEPiYgcGFyc2VkQ2hhbm5l
bCwgY29uc3QgQ29sb3JUeXBlJiBvcmlnaW5Db2xvcikKK3sKKyAgICByZXR1cm4gcmVzb2x2ZVJl
bGF0aXZlQ29sb3JDaGFubmVsPEMxLCBDMiwgQzMsIEFscGhhQ2hhbm5lbD4ocGFyc2VkQ2hhbm5l
bCwgb3JpZ2luQ29sb3IsIFtdKGF1dG8gdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9KTsKK30KKwog
ZW51bSBjbGFzcyBSR0JDb21wb25lbnRUeXBlIHsgTnVtYmVyLCBQZXJjZW50YWdlIH07CiAKIHN0
YXRpYyB1aW50OF90IGNsYW1wUkdCQ29tcG9uZW50KGRvdWJsZSB2YWx1ZSwgUkdCQ29tcG9uZW50
VHlwZSBjb21wb25lbnRUeXBlKQpAQCAtNzQ4LDExICs4NDksMTEwIEBAIHN0YXRpYyBPcHRpb25h
bDxkb3VibGU+IGNvbnN1bWVSR0JPckhTTE8KICAgICByZXR1cm4gY29uc3VtZU51bWJlck9yUGVy
Y2VudERpdmlkZWRCeTEwMFJhdyhhcmdzKTsKIH0KIAotc3RhdGljIENvbG9yIHBhcnNlUkdCUGFy
YW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYpCitzdHJ1Y3QgUmVsYXRpdmVSR0JDb21wb25lbnQgeworICAgIFZhcmlhbnQ8ZG91YmxlLCBD
U1NWYWx1ZUlEPiB2YWx1ZTsKKyAgICBPcHRpb25hbDxSR0JDb21wb25lbnRUeXBlPiB0eXBlOwor
fTsKKwordGVtcGxhdGU8Q1NTVmFsdWVJRCBDPiBzdGF0aWMgT3B0aW9uYWw8UmVsYXRpdmVSR0JD
b21wb25lbnQ+IGNvbnN1bWVSZWxhdGl2ZVJHQkNvbXBvbmVudChDU1NQYXJzZXJUb2tlblJhbmdl
JiBhcmdzLCBPcHRpb25hbDxSR0JDb21wb25lbnRUeXBlPiBjb21wb25lbnRUeXBlKQoreworICAg
IGlmICghY29tcG9uZW50VHlwZSkgeworICAgICAgICBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1l
TnVtYmVyUmF3KGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIFJlbGF0aXZlUkdCQ29tcG9uZW50
IHsgKm51bWJlciwgUkdCQ29tcG9uZW50VHlwZTo6TnVtYmVyIH07CisgICAgICAgIGlmIChhdXRv
IHBlcmNlbnQgPSBjb25zdW1lUGVyY2VudFJhdyhhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBS
ZWxhdGl2ZVJHQkNvbXBvbmVudCB7ICpwZXJjZW50LCBSR0JDb21wb25lbnRUeXBlOjpQZXJjZW50
YWdlIH07CisgICAgICAgIGlmIChhdXRvIGNoYW5uZWwgPSBjb25zdW1lSWRlbnRSYXc8Qz4oYXJn
cykpCisgICAgICAgICAgICByZXR1cm4gUmVsYXRpdmVSR0JDb21wb25lbnQgeyAqY2hhbm5lbCwg
V1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisg
ICAgc3dpdGNoICgqY29tcG9uZW50VHlwZSkgeworICAgIGNhc2UgUkdCQ29tcG9uZW50VHlwZTo6
TnVtYmVyOiB7CisgICAgICAgIGlmIChhdXRvIG51bWJlciA9IGNvbnN1bWVOdW1iZXJSYXcoYXJn
cykpCisgICAgICAgICAgICByZXR1cm4gUmVsYXRpdmVSR0JDb21wb25lbnQgeyAqbnVtYmVyLCBS
R0JDb21wb25lbnRUeXBlOjpOdW1iZXIgfTsKKyAgICAgICAgaWYgKGF1dG8gY2hhbm5lbCA9IGNv
bnN1bWVJZGVudFJhdzxDPihhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBSZWxhdGl2ZVJHQkNv
bXBvbmVudCB7ICpjaGFubmVsLCBSR0JDb21wb25lbnRUeXBlOjpOdW1iZXIgfTsKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisgICAgY2FzZSBSR0JDb21wb25lbnRUeXBlOjpQ
ZXJjZW50YWdlOiB7CisgICAgICAgIGlmIChhdXRvIHBlcmNlbnQgPSBjb25zdW1lUGVyY2VudFJh
dyhhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBSZWxhdGl2ZVJHQkNvbXBvbmVudCB7ICpwZXJj
ZW50LCBSR0JDb21wb25lbnRUeXBlOjpQZXJjZW50YWdlIH07CisgICAgICAgIGlmIChhdXRvIGNo
YW5uZWwgPSBjb25zdW1lSWRlbnRSYXc8Qz4oYXJncykpCisgICAgICAgICAgICByZXR1cm4gUmVs
YXRpdmVSR0JDb21wb25lbnQgeyAqY2hhbm5lbCwgUkdCQ29tcG9uZW50VHlwZTo6UGVyY2VudGFn
ZSB9OworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKyAgICB9Cit9CisKK3N0
YXRpYyBDb2xvciBwYXJzZVJlbGF0aXZlUkdCUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdl
JiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIEFTU0VSVChh
cmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbSk7CisgICAgY29uc3VtZUlkZW50UmF3KGFy
Z3MpOworCisgICAgYXV0byBvcmlnaW5Db2xvciA9IGNvbnN1bWVPcmlnaW5Db2xvcihhcmdzLCBj
b250ZXh0KTsKKyAgICBpZiAoIW9yaWdpbkNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIE9wdGlvbmFsPFJHQkNvbXBvbmVudFR5cGU+IGNvbXBvbmVudFR5cGU7Cisg
ICAgYXV0byByZWRSZXN1bHQgPSBjb25zdW1lUmVsYXRpdmVSR0JDb21wb25lbnQ8Q1NTVmFsdWVS
PihhcmdzLCBjb21wb25lbnRUeXBlKTsKKyAgICBpZiAoIXJlZFJlc3VsdCkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICBhdXRvIHJlZCA9IHJlZFJlc3VsdC0+dmFsdWU7CisgICAgY29tcG9uZW50
VHlwZSA9IHJlZFJlc3VsdC0+dHlwZTsKKworICAgIGF1dG8gZ3JlZW5SZXN1bHQgPSBjb25zdW1l
UmVsYXRpdmVSR0JDb21wb25lbnQ8Q1NTVmFsdWVHPihhcmdzLCBjb21wb25lbnRUeXBlKTsKKyAg
ICBpZiAoIWdyZWVuUmVzdWx0KQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gZ3JlZW4g
PSBncmVlblJlc3VsdC0+dmFsdWU7CisgICAgY29tcG9uZW50VHlwZSA9IGdyZWVuUmVzdWx0LT50
eXBlOworCisgICAgYXV0byBibHVlUmVzdWx0ID0gY29uc3VtZVJlbGF0aXZlUkdCQ29tcG9uZW50
PENTU1ZhbHVlQj4oYXJncywgY29tcG9uZW50VHlwZSk7CisgICAgaWYgKCFibHVlUmVzdWx0KQor
ICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gYmx1ZSA9IGJsdWVSZXN1bHQtPnZhbHVlOwor
ICAgIGNvbXBvbmVudFR5cGUgPSBibHVlUmVzdWx0LT50eXBlOworCisgICAgYXV0byBhbHBoYSA9
IGNvbnN1bWVPcHRpb25hbEFscGhhT3JJZGVudDxDU1NWYWx1ZUFscGhhPihhcmdzKTsKKyAgICBp
ZiAoIWFscGhhKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKCFhcmdzLmF0RW5kKCkp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICAvLyBBZnRlciBwYXJzaW5nLCBjb252ZXJ0IGlk
ZW50aWZpZXJzIHRvIHZhbHVlcyBmcm9tIHRoZSBvcmlnaW4gY29sb3IuCisKKyAgICAvLyBGSVhN
RTogRG8gd2Ugd2FudCB0byBiZWluZyBkb2luZyB0aGlzIGluIHVpbnQ4X3QgdmFsdWVzPyBPciBz
aG91bGQgd2UgdXNlIGhpZ2hlciBwcmVjaXNpb24KKyAgICAvLyBhbmQgY2xhbXAgYXQgdGhlIGVu
ZC4gSXQgd29uJ3QgbWFrZSBhIGRpZmZlcmVuY2UgdW50aWwgd2Ugc3VwcG9ydCBjYWxjdWxhdGlv
bnMgb24gdGhlIG9yaWdpbnMKKyAgICAvLyBjb21wb25lbnRzLgorICAgIGF1dG8gb3JpZ2luQ29s
b3JBc1NSR0IgPSBvcmlnaW5Db2xvci50b1NSR0JBTG9zc3k8dWludDhfdD4oKTsKKworICAgIGF1
dG8gcmVzb2x2ZWRDb21wb25lbnRUeXBlID0gY29tcG9uZW50VHlwZS52YWx1ZU9yKFJHQkNvbXBv
bmVudFR5cGU6OlBlcmNlbnRhZ2UpOworICAgIGF1dG8gY2hhbm5lbFJlc29sdmVyID0gW3Jlc29s
dmVkQ29tcG9uZW50VHlwZV0oYXV0byB2YWx1ZSkgeworICAgICAgICByZXR1cm4gY2xhbXBSR0JD
b21wb25lbnQodmFsdWUsIHJlc29sdmVkQ29tcG9uZW50VHlwZSk7CisgICAgfTsKKworICAgIGF1
dG8gcmVzb2x2ZWRSZWQgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVSLCBD
U1NWYWx1ZUcsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4ocmVkLCBvcmlnaW5Db2xvckFzU1JH
QiwgY2hhbm5lbFJlc29sdmVyKTsKKyAgICBhdXRvIHJlc29sdmVkR3JlZW4gPSByZXNvbHZlUmVs
YXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVSLCBDU1NWYWx1ZUcsIENTU1ZhbHVlQiwgQ1NTVmFs
dWVBbHBoYT4oZ3JlZW4sIG9yaWdpbkNvbG9yQXNTUkdCLCBjaGFubmVsUmVzb2x2ZXIpOworICAg
IGF1dG8gcmVzb2x2ZWRCbHVlID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVl
UiwgQ1NTVmFsdWVHLCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KGJsdWUsIG9yaWdpbkNvbG9y
QXNTUkdCLCBjaGFubmVsUmVzb2x2ZXIpOworICAgIGF1dG8gcmVzb2x2ZWRBbHBoYSA9IHJlc29s
dmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZVIsIENTU1ZhbHVlRywgQ1NTVmFsdWVCLCBD
U1NWYWx1ZUFscGhhPigqYWxwaGEsIG9yaWdpbkNvbG9yQXNTUkdCLCBbXShhdXRvIHZhbHVlKSB7
CisgICAgICAgIHJldHVybiBjb252ZXJ0RmxvYXRBbHBoYVRvPHVpbnQ4X3Q+KHZhbHVlKTsKKyAg
ICB9KTsKKworICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7IHJlc29sdmVkUmVkLCByZXNvbHZl
ZEdyZWVuLCByZXNvbHZlZEJsdWUsIHJlc29sdmVkQWxwaGEgfTsKK30KKworZW51bSBjbGFzcyBS
R0JGdW5jdGlvbk1vZGUgeyBSR0IsIFJHQkEgfTsKKwordGVtcGxhdGU8UkdCRnVuY3Rpb25Nb2Rl
IE1vZGU+IHN0YXRpYyBDb2xvciBwYXJzZVJHQlBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQVNTRVJU
KHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVSZ2IgfHwgcmFuZ2UucGVlaygp
LmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVJnYmEpOwogICAgIGF1dG8gYXJncyA9IGNvbnN1bWVG
dW5jdGlvbihyYW5nZSk7CiAKKyAgICBpZiBjb25zdGV4cHIgKE1vZGUgPT0gUkdCRnVuY3Rpb25N
b2RlOjpSR0IpIHsKKyAgICAgICAgaWYgKGNvbnRleHQucmVsYXRpdmVDb2xvclN5bnRheEVuYWJs
ZWQgJiYgYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pCisgICAgICAgICAgICByZXR1
cm4gcGFyc2VSZWxhdGl2ZVJHQlBhcmFtZXRlcnMoYXJncywgY29udGV4dCk7CisgICAgfQorCiAg
ICAgc3RydWN0IEluaXRpYWxDb21wb25lbnQgewogICAgICAgICBkb3VibGUgdmFsdWU7CiAgICAg
ICAgIFJHQkNvbXBvbmVudFR5cGUgdHlwZTsKQEAgLTgxMSwxMSArMTAxMSw2NCBAQCBzdGF0aWMg
Q29sb3IgcGFyc2VSR0JQYXJhbWV0ZXJzKENTU1BhcnNlCiAgICAgcmV0dXJuIFNSR0JBPHVpbnQ4
X3Q+IHsgbm9ybWFsaXplZFJlZCwgbm9ybWFsaXplZEdyZWVuLCBub3JtYWxpemVkQmx1ZSwgbm9y
bWFsaXplZEFscGhhIH07CiB9CiAKLXN0YXRpYyBDb2xvciBwYXJzZUhTTFBhcmFtZXRlcnMoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQp
CitzdGF0aWMgQ29sb3IgcGFyc2VSZWxhdGl2ZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBBU1NF
UlQoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pOworICAgIGNvbnN1bWVJZGVudFJh
dyhhcmdzKTsKKworICAgIGF1dG8gb3JpZ2luQ29sb3IgPSBjb25zdW1lT3JpZ2luQ29sb3IoYXJn
cywgY29udGV4dCk7CisgICAgaWYgKCFvcmlnaW5Db2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBhdXRvIGh1ZSA9IGNvbnN1bWVIdWVPcklkZW50PENTU1ZhbHVlSD4o
YXJncywgY29udGV4dCk7CisgICAgaWYgKCFodWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICBhdXRvIHNhdHVyYXRpb24gPSBjb25zdW1lUGVyY2VudE9ySWRlbnQ8Q1NTVmFsdWVTPihhcmdz
KTsKKyAgICBpZiAoIXNhdHVyYXRpb24pCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRv
IGxpZ2h0bmVzcyA9IGNvbnN1bWVQZXJjZW50T3JJZGVudDxDU1NWYWx1ZUw+KGFyZ3MpOworICAg
IGlmICghbGlnaHRuZXNzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBhbHBoYSA9
IGNvbnN1bWVPcHRpb25hbEFscGhhT3JJZGVudDxDU1NWYWx1ZUFscGhhPihhcmdzKTsKKyAgICBp
ZiAoIWFscGhhKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKCFhcmdzLmF0RW5kKCkp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICAvLyBBZnRlciBwYXJzaW5nLCBjb252ZXJ0IGlk
ZW50aWZpZXJzIHRvIHZhbHVlcyBmcm9tIHRoZSBvcmlnaW4gY29sb3IuCisKKyAgICBhdXRvIG9y
aWdpbkNvbG9yQXNIU0wgPSBvcmlnaW5Db2xvci50b0NvbG9yVHlwZUxvc3N5PEhTTEE8ZmxvYXQ+
PigpOworCisgICAgYXV0byByZXNvbHZlZEh1ZSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5l
bDxDU1NWYWx1ZUgsIENTU1ZhbHVlUywgQ1NTVmFsdWVMLCBDU1NWYWx1ZUFscGhhPigqaHVlLCBv
cmlnaW5Db2xvckFzSFNMLCBbXShhdXRvIGh1ZSkgeworICAgICAgICByZXR1cm4gbm9ybWFsaXpl
SHVlKGh1ZSk7CisgICAgfSk7CisgICAgYXV0byByZXNvbHZlZFNhdHVyYXRpb24gPSByZXNvbHZl
UmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVILCBDU1NWYWx1ZVMsIENTU1ZhbHVlTCwgQ1NT
VmFsdWVBbHBoYT4oKnNhdHVyYXRpb24sIG9yaWdpbkNvbG9yQXNIU0wsIFtdKGF1dG8gc2F0dXJh
dGlvbikgeworICAgICAgICByZXR1cm4gY2xhbXBUbyhzYXR1cmF0aW9uLCAwLjAsIDEwMC4wKTsK
KyAgICB9KTsKKyAgICBhdXRvIHJlc29sdmVkTGlnaHRuZXNzID0gcmVzb2x2ZVJlbGF0aXZlQ29s
b3JDaGFubmVsPENTU1ZhbHVlSCwgQ1NTVmFsdWVTLCBDU1NWYWx1ZUwsIENTU1ZhbHVlQWxwaGE+
KCpsaWdodG5lc3MsIG9yaWdpbkNvbG9yQXNIU0wsIFtdKGF1dG8gbGlnaHRuZXNzKSB7CisgICAg
ICAgIHJldHVybiBjbGFtcFRvKGxpZ2h0bmVzcywgMC4wLCAxMDAuMCk7CisgICAgfSk7CisgICAg
YXV0byByZXNvbHZlZEFscGhhID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVl
SCwgQ1NTVmFsdWVTLCBDU1NWYWx1ZUwsIENTU1ZhbHVlQWxwaGE+KCphbHBoYSwgb3JpZ2luQ29s
b3JBc0hTTCk7CisKKyAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+PihIU0xB
PGZsb2F0PiB7IHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZEh1ZSksIHN0YXRpY19jYXN0PGZs
b2F0PihyZXNvbHZlZFNhdHVyYXRpb24pLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRMaWdo
dG5lc3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRBbHBoYSkgfSk7Cit9CisKK2VudW0g
Y2xhc3MgSFNMRnVuY3Rpb25Nb2RlIHsgSFNMLCBIU0xBIH07CisKK3RlbXBsYXRlPEhTTEZ1bmN0
aW9uTW9kZSBNb2RlPiBzdGF0aWMgQ29sb3IgcGFyc2VIU0xQYXJhbWV0ZXJzKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogewogICAg
IEFTU0VSVChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlSHNsIHx8IHJhbmdl
LnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVIc2xhKTsKICAgICBhdXRvIGFyZ3MgPSBj
b25zdW1lRnVuY3Rpb24ocmFuZ2UpOwogCisgICAgaWYgY29uc3RleHByIChNb2RlID09IEhTTEZ1
bmN0aW9uTW9kZTo6SFNMKSB7CisgICAgICAgIGlmIChjb250ZXh0LnJlbGF0aXZlQ29sb3JTeW50
YXhFbmFibGVkICYmIGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVGcm9tKQorICAgICAgICAg
ICAgcmV0dXJuIHBhcnNlUmVsYXRpdmVIU0xQYXJhbWV0ZXJzKGFyZ3MsIGNvbnRleHQpOworICAg
IH0KKwogICAgIGF1dG8gaHVlID0gY29uc3VtZUh1ZShhcmdzLCBjb250ZXh0KTsKICAgICBpZiAo
IWh1ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTg0MSw5ICsxMDk0LDkgQEAgc3RhdGljIENv
bG9yIHBhcnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZQogICAgICAgICByZXR1cm4geyB9OwogCiAg
ICAgYXV0byBub3JtYWxpemVkSHVlID0gbm9ybWFsaXplSHVlKCpodWUpOwotICAgIGF1dG8gbm9y
bWFsaXplZFNhdHVyYXRpb24gPSBjbGFtcFRvPGRvdWJsZT4oKnNhdHVyYXRpb24sIDAuMCwgMTAw
LjApOwotICAgIGF1dG8gbm9ybWFsaXplZExpZ2h0bmVzcyA9IGNsYW1wVG88ZG91YmxlPigqbGln
aHRuZXNzLCAwLjAsIDEwMC4wKTsKLSAgICBhdXRvIG5vcm1hbGl6ZWRBbHBoYSA9IGNsYW1wVG88
ZG91YmxlPigqYWxwaGEsIDAuMCwgMS4wKTsKKyAgICBhdXRvIG5vcm1hbGl6ZWRTYXR1cmF0aW9u
ID0gY2xhbXBUbygqc2F0dXJhdGlvbiwgMC4wLCAxMDAuMCk7CisgICAgYXV0byBub3JtYWxpemVk
TGlnaHRuZXNzID0gY2xhbXBUbygqbGlnaHRuZXNzLCAwLjAsIDEwMC4wKTsKKyAgICBhdXRvIG5v
cm1hbGl6ZWRBbHBoYSA9IGNsYW1wVG8oKmFscGhhLCAwLjAsIDEuMCk7CiAKICAgICByZXR1cm4g
Y29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+PihIU0xBPGZsb2F0PiB7IHN0YXRpY19jYXN0PGZs
b2F0Pihub3JtYWxpemVkSHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRTYXR1cmF0
aW9uKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRMaWdodG5lc3MpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4obm9ybWFsaXplZEFscGhhKSB9KTsKIH0KQEAgLTg1NCwxMiArMTEwNywxMiBAQCBz
dHJ1Y3QgV2hpdGVuZXNzQmxhY2tuZXNzIHsKIH07CiBzdGF0aWMgV2hpdGVuZXNzQmxhY2tuZXNz
IG5vcm1hbGl6ZVdoaXRlbmVzc0JsYWNrbmVzcyhkb3VibGUgd2hpdGVuZXNzLCBkb3VibGUgYmxh
Y2tuZXNzKQogewotICAgIFdoaXRlbmVzc0JsYWNrbmVzcyByZXN1bHQ7Ci0KICAgICAvLyAgIFZh
bHVlcyBvdXRzaWRlIG9mIHRoZXNlIHJhbmdlcyBhcmUgbm90IGludmFsaWQsIGJ1dCBhcmUgY2xh
bXBlZCB0byB0aGUKICAgICAvLyAgIHJhbmdlcyBkZWZpbmVkIGhlcmUgYXQgY29tcHV0ZWQtdmFs
dWUgdGltZS4KLSAgICByZXN1bHQud2hpdGVuZXNzID0gY2xhbXBUbzxkb3VibGU+KHdoaXRlbmVz
cywgMCwgMTAwKTsKLSAgICByZXN1bHQuYmxhY2tuZXNzID0gY2xhbXBUbzxkb3VibGU+KGJsYWNr
bmVzcywgMCwgMTAwKTsKKyAgICBXaGl0ZW5lc3NCbGFja25lc3MgcmVzdWx0IHsKKyAgICAgICAg
Y2xhbXBUbyh3aGl0ZW5lc3MsIDAuMCwgMTAwLjApLAorICAgICAgICBjbGFtcFRvKGJsYWNrbmVz
cywgMC4wLCAxMDAuMCkKKyAgICB9OwogCiAgICAgLy8gICBJZiB0aGUgc3VtIG9mIHRoZXNlIHR3
byBhcmd1bWVudHMgaXMgZ3JlYXRlciB0aGFuIDEwMCUsIHRoZW4gYXQKICAgICAvLyAgIGNvbXB1
dGVkLXZhbHVlIHRpbWUgdGhleSBhcmUgZnVydGhlciBub3JtYWxpemVkIHRvIGFkZCB1cCB0byAx
MDAlLCB3aXRoCkBAIC04NzIsMTEgKzExMjUsNTggQEAgc3RhdGljIFdoaXRlbmVzc0JsYWNrbmVz
cyBub3JtYWxpemVXaGl0ZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBDb2xvciBw
YXJzZVJlbGF0aXZlSFdCUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25z
dCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIEFTU0VSVChhcmdzLnBlZWsoKS5p
ZCgpID09IENTU1ZhbHVlRnJvbSk7CisgICAgY29uc3VtZUlkZW50UmF3KGFyZ3MpOworCisgICAg
YXV0byBvcmlnaW5Db2xvciA9IGNvbnN1bWVPcmlnaW5Db2xvcihhcmdzLCBjb250ZXh0KTsKKyAg
ICBpZiAoIW9yaWdpbkNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGF1dG8gaHVlID0gY29uc3VtZUh1ZU9ySWRlbnQ8Q1NTVmFsdWVIPihhcmdzLCBjb250ZXh0KTsK
KyAgICBpZiAoIWh1ZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gd2hpdGVuZXNz
ID0gY29uc3VtZVBlcmNlbnRPcklkZW50PENTU1ZhbHVlVz4oYXJncyk7CisgICAgaWYgKCF3aGl0
ZW5lc3MpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGJsYWNrbmVzcyA9IGNvbnN1
bWVQZXJjZW50T3JJZGVudDxDU1NWYWx1ZUI+KGFyZ3MpOworICAgIGlmICghYmxhY2tuZXNzKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBhbHBoYSA9IGNvbnN1bWVPcHRpb25hbEFs
cGhhT3JJZGVudDxDU1NWYWx1ZUFscGhhPihhcmdzKTsKKyAgICBpZiAoIWFscGhhKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgaWYgKCFhcmdzLmF0RW5kKCkpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICAvLyBBZnRlciBwYXJzaW5nLCBjb252ZXJ0IGlkZW50aWZpZXJzIHRvIHZhbHVl
cyBmcm9tIHRoZSBvcmlnaW4gY29sb3IuCisKKyAgICBhdXRvIG9yaWdpbkNvbG9yQXNIV0IgPSBv
cmlnaW5Db2xvci50b0NvbG9yVHlwZUxvc3N5PEhXQkE8ZmxvYXQ+PigpOworCisgICAgYXV0byBy
ZXNvbHZlZEh1ZSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUgsIENTU1Zh
bHVlVywgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPigqaHVlLCBvcmlnaW5Db2xvckFzSFdCLCBb
XShhdXRvIGh1ZSkgeworICAgICAgICByZXR1cm4gbm9ybWFsaXplSHVlKGh1ZSk7CisgICAgfSk7
CisgICAgYXV0byByZXNvbHZlZFdoaXRlbmVzcyA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5l
bDxDU1NWYWx1ZUgsIENTU1ZhbHVlVywgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPigqd2hpdGVu
ZXNzLCBvcmlnaW5Db2xvckFzSFdCKTsKKyAgICBhdXRvIHJlc29sdmVkQmxhY2tuZXNzID0gcmVz
b2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlSCwgQ1NTVmFsdWVXLCBDU1NWYWx1ZUIs
IENTU1ZhbHVlQWxwaGE+KCpibGFja25lc3MsIG9yaWdpbkNvbG9yQXNIV0IpOworICAgIGF1dG8g
cmVzb2x2ZWRBbHBoYSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUgsIENT
U1ZhbHVlVywgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPigqYWxwaGEsIG9yaWdpbkNvbG9yQXNI
V0IpOworCisgICAgYXV0byBbbm9ybWFsaXplZFdoaXRuZXNzLCBub3JtYWxpemVkQmxhY2tuZXNz
XSA9IG5vcm1hbGl6ZVdoaXRlbmVzc0JsYWNrbmVzcyhyZXNvbHZlZFdoaXRlbmVzcywgcmVzb2x2
ZWRCbGFja25lc3MpOworCisgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4o
SFdCQTxmbG9hdD4geyBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRIdWUpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4obm9ybWFsaXplZFdoaXRuZXNzKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6
ZWRCbGFja25lc3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRBbHBoYSkgfSk7Cit9CisK
IHN0YXRpYyBDb2xvciBwYXJzZUhXQlBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKHJhbmdl
LnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVId2IpOwogICAgIGF1dG8gYXJncyA9IGNv
bnN1bWVGdW5jdGlvbihyYW5nZSk7CiAKKyAgICBpZiAoY29udGV4dC5yZWxhdGl2ZUNvbG9yU3lu
dGF4RW5hYmxlZCAmJiBhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbSkKKyAgICAgICAg
cmV0dXJuIHBhcnNlUmVsYXRpdmVIV0JQYXJhbWV0ZXJzKGFyZ3MsIGNvbnRleHQpOworCiAgICAg
YXV0byBodWUgPSBjb25zdW1lSHVlKGFyZ3MsIGNvbnRleHQpOwogICAgIGlmICghaHVlKQogICAg
ICAgICByZXR1cm4geyB9OwpAQCAtOTAyLDExICsxMjAyLDU2IEBAIHN0YXRpYyBDb2xvciBwYXJz
ZUhXQlBhcmFtZXRlcnMoQ1NTUGFyc2UKICAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JBPHVp
bnQ4X3Q+PihIV0JBPGZsb2F0PiB7IHN0YXRpY19jYXN0PGZsb2F0Pihub3JtYWxpemVkSHVlKSwg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRXaGl0bmVzcyksIHN0YXRpY19jYXN0PGZsb2F0
Pihub3JtYWxpemVkQmxhY2tuZXNzKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KCphbHBoYSkgfSk7CiB9
CiAKLXN0YXRpYyBDb2xvciBwYXJzZUxhYlBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKQorc3RhdGljIENvbG9yIHBhcnNlUmVsYXRp
dmVMYWJQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NT
VmFsdWVGcm9tKTsKKyAgICBjb25zdW1lSWRlbnRSYXcoYXJncyk7CisKKyAgICBhdXRvIG9yaWdp
bkNvbG9yID0gY29uc3VtZU9yaWdpbkNvbG9yKGFyZ3MsIGNvbnRleHQpOworICAgIGlmICghb3Jp
Z2luQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBsaWdo
dG5lc3MgPSBjb25zdW1lUGVyY2VudE9ySWRlbnQ8Q1NTVmFsdWVMPihhcmdzKTsKKyAgICBpZiAo
IWxpZ2h0bmVzcykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gYVZhbHVlID0gY29u
c3VtZU51bWJlck9ySWRlbnQ8Q1NTVmFsdWVBPihhcmdzKTsKKyAgICBpZiAoIWFWYWx1ZSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gYlZhbHVlID0gY29uc3VtZU51bWJlck9ySWRl
bnQ8Q1NTVmFsdWVCPihhcmdzKTsKKyAgICBpZiAoIWJWYWx1ZSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIGF1dG8gYWxwaGEgPSBjb25zdW1lT3B0aW9uYWxBbHBoYU9ySWRlbnQ8Q1NTVmFs
dWVBbHBoYT4oYXJncyk7CisgICAgaWYgKCFhbHBoYSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgLy8gQWZ0
ZXIgcGFyc2luZywgY29udmVydCBpZGVudGlmaWVycyB0byB2YWx1ZXMgZnJvbSB0aGUgb3JpZ2lu
IGNvbG9yLgorCisgICAgYXV0byBvcmlnaW5Db2xvckFzTGFiID0gb3JpZ2luQ29sb3IudG9Db2xv
clR5cGVMb3NzeTxMYWI8ZmxvYXQ+PigpOworCisgICAgYXV0byByZXNvbHZlZExpZ2h0bmVzcyA9
IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUwsIENTU1ZhbHVlQSwgQ1NTVmFs
dWVCLCBDU1NWYWx1ZUFscGhhPigqbGlnaHRuZXNzLCBvcmlnaW5Db2xvckFzTGFiLCBbXShhdXRv
IGxpZ2h0bmVzcykgeworICAgICAgICByZXR1cm4gc3RkOjptYXgoMC4wLCBsaWdodG5lc3MpOwor
ICAgIH0pOworICAgIGF1dG8gcmVzb2x2ZWRBVmFsdWUgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNo
YW5uZWw8Q1NTVmFsdWVMLCBDU1NWYWx1ZUEsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oKmFW
YWx1ZSwgb3JpZ2luQ29sb3JBc0xhYik7CisgICAgYXV0byByZXNvbHZlZEJWYWx1ZSA9IHJlc29s
dmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUwsIENTU1ZhbHVlQSwgQ1NTVmFsdWVCLCBD
U1NWYWx1ZUFscGhhPigqYlZhbHVlLCBvcmlnaW5Db2xvckFzTGFiKTsKKyAgICBhdXRvIHJlc29s
dmVkQWxwaGEgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVMLCBDU1NWYWx1
ZUEsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oKmFscGhhLCBvcmlnaW5Db2xvckFzTGFiKTsK
KworICAgIHJldHVybiBMYWI8ZmxvYXQ+IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkTGln
aHRuZXNzKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkQVZhbHVlKSwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHJlc29sdmVkQlZhbHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkQWxwaGEp
IH07Cit9CisKK3N0YXRpYyBDb2xvciBwYXJzZUxhYlBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQVNT
RVJUKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVMYWIpOwogICAgIGF1dG8g
YXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CiAKKyAgICBpZiAoY29udGV4dC5yZWxhdGl2
ZUNvbG9yU3ludGF4RW5hYmxlZCAmJiBhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbSkK
KyAgICAgICAgcmV0dXJuIHBhcnNlUmVsYXRpdmVMYWJQYXJhbWV0ZXJzKGFyZ3MsIGNvbnRleHQp
OworCiAgICAgYXV0byBsaWdodG5lc3MgPSBjb25zdW1lUGVyY2VudFJhdyhhcmdzKTsKICAgICBp
ZiAoIWxpZ2h0bmVzcykKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTkzMSwxMSArMTI3Niw1OCBA
QCBzdGF0aWMgQ29sb3IgcGFyc2VMYWJQYXJhbWV0ZXJzKENTU1BhcnNlCiAgICAgcmV0dXJuIExh
YjxmbG9hdD4geyBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZExpZ2h0bmVzcyksIHN0YXRp
Y19jYXN0PGZsb2F0PigqYVZhbHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KCpiVmFsdWUpLCBzdGF0
aWNfY2FzdDxmbG9hdD4oKmFscGhhKSB9OwogfQogCitzdGF0aWMgQ29sb3IgcGFyc2VSZWxhdGl2
ZUxDSFBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgY29udGV4dCkKK3sKKyAgICBBU1NFUlQoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NW
YWx1ZUZyb20pOworICAgIGNvbnN1bWVJZGVudFJhdyhhcmdzKTsKKworICAgIGF1dG8gb3JpZ2lu
Q29sb3IgPSBjb25zdW1lT3JpZ2luQ29sb3IoYXJncywgY29udGV4dCk7CisgICAgaWYgKCFvcmln
aW5Db2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGxpZ2h0
bmVzcyA9IGNvbnN1bWVQZXJjZW50T3JJZGVudDxDU1NWYWx1ZUw+KGFyZ3MpOworICAgIGlmICgh
bGlnaHRuZXNzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBjaHJvbWEgPSBjb25z
dW1lTnVtYmVyT3JJZGVudDxDU1NWYWx1ZUM+KGFyZ3MpOworICAgIGlmICghY2hyb21hKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBodWUgPSBjb25zdW1lSHVlT3JJZGVudDxDU1NW
YWx1ZUg+KGFyZ3MsIGNvbnRleHQpOworICAgIGlmICghaHVlKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgYXV0byBhbHBoYSA9IGNvbnN1bWVPcHRpb25hbEFscGhhT3JJZGVudDxDU1NWYWx1
ZUFscGhhPihhcmdzKTsKKyAgICBpZiAoIWFscGhhKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgaWYgKCFhcmdzLmF0RW5kKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIG9y
aWdpbkNvbG9yQXNMQ0ggPSBvcmlnaW5Db2xvci50b0NvbG9yVHlwZUxvc3N5PExDSEE8ZmxvYXQ+
PigpOworCisgICAgYXV0byByZXNvbHZlZExpZ2h0bmVzcyA9IHJlc29sdmVSZWxhdGl2ZUNvbG9y
Q2hhbm5lbDxDU1NWYWx1ZUwsIENTU1ZhbHVlQywgQ1NTVmFsdWVILCBDU1NWYWx1ZUFscGhhPigq
bGlnaHRuZXNzLCBvcmlnaW5Db2xvckFzTENILCBbXShhdXRvIGxpZ2h0bmVzcykgeworICAgICAg
ICByZXR1cm4gc3RkOjptYXgoMC4wLCBsaWdodG5lc3MpOworICAgIH0pOworICAgIGF1dG8gcmVz
b2x2ZWRDaHJvbWEgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVMLCBDU1NW
YWx1ZUMsIENTU1ZhbHVlSCwgQ1NTVmFsdWVBbHBoYT4oKmNocm9tYSwgb3JpZ2luQ29sb3JBc0xD
SCwgW10oYXV0byBjaHJvbWEpIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KDAuMCwgY2hyb21h
KTsKKyAgICB9KTsKKyAgICBhdXRvIHJlc29sdmVkSHVlID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JD
aGFubmVsPENTU1ZhbHVlTCwgQ1NTVmFsdWVDLCBDU1NWYWx1ZUgsIENTU1ZhbHVlQWxwaGE+KCpo
dWUsIG9yaWdpbkNvbG9yQXNMQ0gsIFtdKGF1dG8gaHVlKSB7CisgICAgICAgIHJldHVybiBub3Jt
YWxpemVIdWUoaHVlKTsKKyAgICB9KTsKKyAgICBhdXRvIHJlc29sdmVkQWxwaGEgPSByZXNvbHZl
UmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVMLCBDU1NWYWx1ZUMsIENTU1ZhbHVlSCwgQ1NT
VmFsdWVBbHBoYT4oKmFscGhhLCBvcmlnaW5Db2xvckFzTENIKTsKKworICAgIHJldHVybiBjb252
ZXJ0Q29sb3I8TGFiPGZsb2F0Pj4oTENIQTxmbG9hdD4geyBzdGF0aWNfY2FzdDxmbG9hdD4ocmVz
b2x2ZWRMaWdodG5lc3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRDaHJvbWEpLCBzdGF0
aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRIdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRB
bHBoYSkgfSk7Cit9CisKIHN0YXRpYyBDb2xvciBwYXJzZUxDSFBhcmFtZXRlcnMoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAg
ICAgQVNTRVJUKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVMY2gpOwogICAg
IGF1dG8gYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CiAKKyAgICBpZiAoY29udGV4dC5y
ZWxhdGl2ZUNvbG9yU3ludGF4RW5hYmxlZCAmJiBhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVl
RnJvbSkKKyAgICAgICAgcmV0dXJuIHBhcnNlUmVsYXRpdmVMQ0hQYXJhbWV0ZXJzKGFyZ3MsIGNv
bnRleHQpOworCiAgICAgYXV0byBsaWdodG5lc3MgPSBjb25zdW1lUGVyY2VudFJhdyhhcmdzKTsK
ICAgICBpZiAoIWxpZ2h0bmVzcykKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTExMzEsMTIgKzE1
MjMsMTYgQEAgc3RhdGljIENvbG9yIHBhcnNlQ29sb3JGdW5jdGlvbihDU1NQYXJzZQogICAgIENv
bG9yIGNvbG9yOwogICAgIHN3aXRjaCAoZnVuY3Rpb25JZCkgewogICAgIGNhc2UgQ1NTVmFsdWVS
Z2I6CisgICAgICAgIGNvbG9yID0gcGFyc2VSR0JQYXJhbWV0ZXJzPFJHQkZ1bmN0aW9uTW9kZTo6
UkdCPihjb2xvclJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NW
YWx1ZVJnYmE6Ci0gICAgICAgIGNvbG9yID0gcGFyc2VSR0JQYXJhbWV0ZXJzKGNvbG9yUmFuZ2Us
IGNvbnRleHQpOworICAgICAgICBjb2xvciA9IHBhcnNlUkdCUGFyYW1ldGVyczxSR0JGdW5jdGlv
bk1vZGU6OlJHQkE+KGNvbG9yUmFuZ2UsIGNvbnRleHQpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIENTU1ZhbHVlSHNsOgorICAgICAgICBjb2xvciA9IHBhcnNlSFNMUGFyYW1ldGVyczxIU0xG
dW5jdGlvbk1vZGU6OkhTTD4oY29sb3JSYW5nZSwgY29udGV4dCk7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ1NTVmFsdWVIc2xhOgotICAgICAgICBjb2xvciA9IHBhcnNlSFNMUGFyYW1ldGVy
cyhjb2xvclJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgY29sb3IgPSBwYXJzZUhTTFBhcmFtZXRl
cnM8SFNMRnVuY3Rpb25Nb2RlOjpIU0xBPihjb2xvclJhbmdlLCBjb250ZXh0KTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUh3YjoKICAgICAgICAgY29sb3IgPSBwYXJzZUhXQlBh
cmFtZXRlcnMoY29sb3JSYW5nZSwgY29udGV4dCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzMwMTMp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBA
QAorMjAyMS0wMi0xNyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBDU1MgQ29sb3IgNSBSZWxhdGl2ZSBDb2xvciBT
eW50YXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MTg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
ZmFzdC9jc3MvcGFyc2luZy1yZWxhdGl2ZS1jb2xvci1zeW50YXgtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wYXJzaW5nLXJlbGF0aXZlLWNvbG9yLXN5bnRheC5odG1s
OiBBZGRlZC4KKyAgICAgICAgQWRkIGJhc2ljIHBhcnNpbmcgYW5kIGNvbXB1dGVkIHN0eWxlIGNv
bXB1dGF0aW9uIHRlc3RzIGZvciByZWxhdGl2ZSBjb2xvciBzeW50YXguCisKKzIwMjEtMDItMTUg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIGxhYigpIGFuZCBsY2go
KSBhcmUgbm90IGNsYW1waW5nIG91dCBvZiBiYW5kcyB2YWx1ZXMgYXQgcGFyc2UgdGltZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTQ3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG1vZGVsIGxl
dmVsIGFzc2VydGlvbnMgY2F1Z2h0IHRoaXMgKHlheSkuIFRoZSBzcGVjIHJlcXVpcmVzIHRoYXQg
d2UKKyAgICAgICAgY2xhbXAgbmVnYXRpdmUgbGlnaHRuZXNzIHZhbHVlcyB0byAwIGZvciBsYWIo
KSwgbGNoKCkgYW5kIGNvbG9yKGxhYikKKyAgICAgICAgYW5kIG5lZ2F0aXZlIGNocm9tYSB2YWx1
ZXMgdG8gMCBmb3IgbGNoKCkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9wYXJzaW5nLWxhYi1jb2xv
cnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY3NzL3BhcnNpbmctbGFiLWNvbG9ycy5o
dG1sOgorCiAyMDIxLTAyLTE3ICBSb2JlcnQgSmVubmVyICA8amVubmVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbIEJpZ1N1ciBdIHBsYXRmb3JtL21hYy1iaWdzdXIvbWVkaWEvbWVkaWEtd2VibS1u
by1kdXJhdGlvbi5odG1sIGlzIGNvbnN0YW50bHkgdGV4dCBmYWlsaW5nCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLXJlbGF0aXZlLWNvbG9yLXN5bnRheC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1yZWxhdGl2ZS1jb2xv
ci1zeW50YXgtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3BhcnNpbmctcmVsYXRpdmUtY29sb3Itc3ludGF4LWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDI0OSBAQAorVGVzdCB0aGUgcGFyc2luZyBvZiBDU1MgQ29sb3IgNSBS
ZWxhdGl2ZSBDb2xvciBTeW50YXguCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCity
Z2IoZnJvbSAuLi4pCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdi
KGZyb20gcmViZWNjYXB1cnBsZSByIGcgYikiKSBpcyAicmdiKDEwMiwgNTEsIDE1MykiCitQQVNT
IGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmViZWNjYXB1cnBs
ZSByIGcgYiAvIGFscGhhKSIpIGlzICJyZ2IoMTAyLCA1MSwgMTUzKSIKK1BBU1MgY29tcHV0ZWRT
dHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAl
KSByIGcgYiAvIGFscGhhKSIpIGlzICJyZ2JhKDI2LCA1MSwgNzcsIDAuNCkiCitQQVNTIGNvbXB1
dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gaHNsKDEyMGRlZyAyMCUgNTAl
IC8gLjUpIHIgZyBiIC8gYWxwaGEpIikgaXMgInJnYmEoMTAyLCAxNTMsIDEwMiwgMC41KSIKK1BB
U1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZ2IoZnJvbSBy
ZWJlY2NhcHVycGxlIHIgZyBiKSByIGcgYikiKSBpcyAicmdiKDEwMiwgNTEsIDE1MykiCitQQVNT
IGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gY29sb3IoZGlzcGxh
eS1wMyAwIDEgMCkgciBnIGIgLyBhbHBoYSkiKSBpcyAicmdiKDAsIDI1NSwgMCkiCitQQVNTIGNv
bXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmViZWNjYXB1cnBsZSAw
IDAgMCkiKSBpcyAicmdiKDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5k
LWNvbG9yIiwgInJnYihmcm9tIHJlYmVjY2FwdXJwbGUgMCAwIDAgLyAwKSIpIGlzICJyZ2JhKDAs
IDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihm
cm9tIHJlYmVjY2FwdXJwbGUgMCBnIGIgLyBhbHBoYSkiKSBpcyAicmdiKDAsIDUxLCAxNTMpIgor
UEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJlYmVjY2Fw
dXJwbGUgciAwIGIgLyBhbHBoYSkiKSBpcyAicmdiKDEwMiwgMCwgMTUzKSIKK1BBU1MgY29tcHV0
ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgZyAw
IC8gYWxwaGEpIikgaXMgInJnYigxMDIsIDUxLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFj
a2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgZyBiIC8gMCkiKSBpcyAi
cmdiYSgxMDIsIDUxLCAxNTMsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNv
bG9yIiwgInJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDAgZyBiIC8gYWxwaGEpIikg
aXMgInJnYmEoMCwgNTEsIDc3LCAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5k
LWNvbG9yIiwgInJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIHIgMCBiIC8gYWxwaGEp
IikgaXMgInJnYmEoMjYsIDAsIDc3LCAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3Jv
dW5kLWNvbG9yIiwgInJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIHIgZyAwIC8gYWxw
aGEpIikgaXMgInJnYmEoMjYsIDUxLCAwLCAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNr
Z3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIHIgZyBiIC8g
MCkiKSBpcyAicmdiYSgyNiwgNTEsIDc3LCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dy
b3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIDI1IGcgYiAvIGFscGhhKSIpIGlz
ICJyZ2IoMjUsIDUxLCAxNTMpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9y
IiwgInJnYihmcm9tIHJlYmVjY2FwdXJwbGUgciAyNSBiIC8gYWxwaGEpIikgaXMgInJnYigxMDIs
IDI1LCAxNTMpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihm
cm9tIHJlYmVjY2FwdXJwbGUgciBnIDI1IC8gYWxwaGEpIikgaXMgInJnYigxMDIsIDUxLCAyNSki
CitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmViZWNj
YXB1cnBsZSByIGcgYiAvIC4yNSkiKSBpcyAicmdiYSgxMDIsIDUxLCAxNTMsIDAuMjUpIgorUEFT
UyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJnYigxMCUsIDIw
JSwgMzAlLCA0MCUpIDI1IGcgYiAvIGFscGhhKSIpIGlzICJyZ2JhKDI1LCA1MSwgNzcsIDAuNCki
CitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmdiKDEw
JSwgMjAlLCAzMCUsIDQwJSkgciAyNSBiIC8gYWxwaGEpIikgaXMgInJnYmEoMjYsIDI1LCA3Nywg
MC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSBy
Z2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIGcgMjUgLyBhbHBoYSkiKSBpcyAicmdiYSgyNiwgNTEs
IDI1LCAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihm
cm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIHIgZyBiIC8gLjI1KSIpIGlzICJyZ2JhKDI2LCA1
MSwgNzcsIDAuMjUpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJn
Yihmcm9tIHJlYmVjY2FwdXJwbGUgMjUlIGcgYiAvIGFscGhhKSIpIGlzICJyZ2IoNjQsIDUxLCAx
NTMpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJl
YmVjY2FwdXJwbGUgciAyNSUgYiAvIGFscGhhKSIpIGlzICJyZ2IoMTAyLCA2NCwgMTUzKSIKK1BB
U1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVy
cGxlIHIgZyAyNSUgLyBhbHBoYSkiKSBpcyAicmdiKDEwMiwgNTEsIDY0KSIKK1BBU1MgY29tcHV0
ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgZyBi
IC8gMjUlKSIpIGlzICJyZ2JhKDEwMiwgNTEsIDE1MywgMC4yNSkiCitQQVNTIGNvbXB1dGVkU3R5
bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkg
MjUlIGcgYiAvIGFscGhhKSIpIGlzICJyZ2JhKDY0LCA1MSwgNzcsIDAuNCkiCitQQVNTIGNvbXB1
dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUs
IDQwJSkgciAyNSUgYiAvIGFscGhhKSIpIGlzICJyZ2JhKDI2LCA2NCwgNzcsIDAuNCkiCitQQVNT
IGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmdiKDEwJSwgMjAl
LCAzMCUsIDQwJSkgciBnIDI1JSAvIGFscGhhKSIpIGlzICJyZ2JhKDI2LCA1MSwgNjQsIDAuNCki
CitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmdiKDEw
JSwgMjAlLCAzMCUsIDQwJSkgciBnIGIgLyAyNSUpIikgaXMgInJnYmEoMjYsIDUxLCA3NywgMC4y
NSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmVi
ZWNjYXB1cnBsZSAyNSBnIGIgLyAyNSUpIikgaXMgInJnYmEoMjUsIDUxLCAxNTMsIDAuMjUpIgor
UEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJlYmVjY2Fw
dXJwbGUgciAyNSBiIC8gMjUlKSIpIGlzICJyZ2JhKDEwMiwgMjUsIDE1MywgMC4yNSkiCitQQVNT
IGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmViZWNjYXB1cnBs
ZSByIGcgMjUgLyAyNSUpIikgaXMgInJnYmEoMTAyLCA1MSwgMjUsIDAuMjUpIgorUEFTUyBjb21w
dXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAl
LCA0MCUpIDI1IGcgYiAvIDI1JSkiKSBpcyAicmdiYSgyNSwgNTEsIDc3LCAwLjI1KSIKK1BBU1Mg
Y29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZ2IoMTAlLCAyMCUs
IDMwJSwgNDAlKSByIDI1IGIgLyAyNSUpIikgaXMgInJnYmEoMjYsIDI1LCA3NywgMC4yNSkiCitQ
QVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmdiKDEwJSwg
MjAlLCAzMCUsIDQwJSkgciBnIDI1IC8gMjUlKSIpIGlzICJyZ2JhKDI2LCA1MSwgMjUsIDAuMjUp
IgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJlYmVj
Y2FwdXJwbGUgZyBiIHIpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5
bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmViZWNjYXB1cnBsZSBiIGFscGhhIHIg
LyBnKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3Jv
dW5kLWNvbG9yIiwgInJnYihmcm9tIHJlYmVjY2FwdXJwbGUgciByIHIgLyByKSIpIGlzICJyZ2Jh
KDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJn
Yihmcm9tIHJlYmVjY2FwdXJwbGUgYWxwaGEgYWxwaGEgYWxwaGEgLyBhbHBoYSkiKSBpcyAicmdi
YSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJy
Z2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBnIGIgcikiKSBpcyAicmdiYSgwLCAwLCAw
LCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSBy
Z2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBiIGFscGhhIHIgLyBnKSIpIGlzICJyZ2JhKDAsIDAsIDAs
IDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJn
YigxMCUsIDIwJSwgMzAlLCA0MCUpIHIgciByIC8gcikiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIK
K1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZ2IoMTAl
LCAyMCUsIDMwJSwgNDAlKSBhbHBoYSBhbHBoYSBhbHBoYSAvIGFscGhhKSIpIGlzICJyZ2JhKDAs
IDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihm
cm9tIHJlYmVjY2FwdXJwbGUgciAxMCUgMTApIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNT
IGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmViZWNjYXB1cnBs
ZSByIDEwIDEwJSkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgi
YmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIDAlIDEwIDEwKSIpIGlz
ICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9y
IiwgInJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIHIgMTAlIDEwKSIpIGlzICJyZ2Jh
KDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJn
Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIHIgMTAgMTAlKSIpIGlzICJyZ2JhKDAsIDAs
IDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9t
IHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDAlIDEwIDEwKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDAp
IgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJlYmVj
Y2FwdXJwbGUgcmVkIGcgYikiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRT
dHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIGwgZyBiKSIp
IGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNv
bG9yIiwgInJnYihmcm9tIHJlYmVjY2FwdXJwbGUgaCBnIGIpIikgaXMgInJnYmEoMCwgMCwgMCwg
MCkiCisKK2hzbChmcm9tIC4uLikKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xv
ciIsICJoc2woZnJvbSByZWJlY2NhcHVycGxlIGggcyBsKSIpIGlzICJyZ2IoMTAyLCA1MSwgMTUz
KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZWJl
Y2NhcHVycGxlIGggcyBsIC8gYWxwaGEpIikgaXMgInJnYigxMDIsIDUxLCAxNTMpIgorUEFTUyBj
b21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJnYigxMCUsIDIwJSwg
MzAlLCA0MCUpIGggcyBsIC8gYWxwaGEpIikgaXMgInJnYmEoMjYsIDUxLCA3NywgMC40KSIKK1BB
U1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSBoc2woMTIwZGVn
IDIwJSA1MCUgLyAuNSkgaCBzIGwgLyBhbHBoYSkiKSBpcyAicmdiYSgxMDIsIDE1MywgMTAyLCAw
LjUpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIGhz
bChmcm9tIHJlYmVjY2FwdXJwbGUgaCBzIGwpIGggcyBsKSIpIGlzICJyZ2IoMTAyLCA1MSwgMTUz
KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSBjb2xv
cihkaXNwbGF5LXAzIDAgMSAwKSBoIHMgbCAvIGFscGhhKSIpIGlzICJyZ2IoMCwgMjU1LCAwKSIK
K1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZWJlY2Nh
cHVycGxlIDAgMCUgMCUpIikgaXMgInJnYigwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgi
YmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZWJlY2NhcHVycGxlIDBkZWcgMCUgMCUpIikg
aXMgInJnYigwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIs
ICJoc2woZnJvbSByZWJlY2NhcHVycGxlIDAgMCUgMCUgLyAwKSIpIGlzICJyZ2JhKDAsIDAsIDAs
IDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJl
YmVjY2FwdXJwbGUgMGRlZyAwJSAwJSAvIDApIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNT
IGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1cnBs
ZSAwIHMgbCAvIGFscGhhKSIpIGlzICJyZ2IoMTUzLCA1MSwgNTEpIgorUEFTUyBjb21wdXRlZFN0
eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJlYmVjY2FwdXJwbGUgMGRlZyBzIGwg
LyBhbHBoYSkiKSBpcyAicmdiKDE1MywgNTEsIDUxKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFj
a2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZWJlY2NhcHVycGxlIGggMCUgbCAvIGFscGhhKSIp
IGlzICJyZ2IoMTAyLCAxMDIsIDEwMikiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQt
Y29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIHMgMCUgLyBhbHBoYSkiKSBpcyAicmdi
KDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChm
cm9tIHJlYmVjY2FwdXJwbGUgaCBzIGwgLyAwKSIpIGlzICJyZ2JhKDEwMiwgNTEsIDE1MywgMCki
CitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmdiKDEw
JSwgMjAlLCAzMCUsIDQwJSkgMCBzIGwgLyBhbHBoYSkiKSBpcyAicmdiYSg3NywgMjYsIDI2LCAw
LjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJn
YigxMCUsIDIwJSwgMzAlLCA0MCUpIDBkZWcgcyBsIC8gYWxwaGEpIikgaXMgInJnYmEoNzcsIDI2
LCAyNiwgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2wo
ZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIDAlIGwgLyBhbHBoYSkiKSBpcyAicmdiYSg1
MiwgNTIsIDUyLCAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
ImhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggcyAwJSAvIGFscGhhKSIpIGlzICJy
Z2JhKDAsIDAsIDAsIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3Ii
LCAiaHNsKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCBzIGwgLyAwKSIpIGlzICJyZ2Jh
KDI2LCA1MSwgNzcsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
ImhzbChmcm9tIHJlYmVjY2FwdXJwbGUgMjUgcyBsIC8gYWxwaGEpIikgaXMgInJnYigxNTMsIDk0
LCA1MSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20g
cmViZWNjYXB1cnBsZSAyNWRlZyBzIGwgLyBhbHBoYSkiKSBpcyAicmdiKDE1MywgOTQsIDUxKSIK
K1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZWJlY2Nh
cHVycGxlIGggMjUlIGwgLyBhbHBoYSkiKSBpcyAicmdiKDEwMiwgNzcsIDEyOCkiCitQQVNTIGNv
bXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1cnBsZSBo
IHMgMjUlIC8gYWxwaGEpIikgaXMgInJnYig2NCwgMzIsIDk2KSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZWJlY2NhcHVycGxlIGggcyBsIC8gLjI1
KSIpIGlzICJyZ2JhKDEwMiwgNTEsIDE1MywgMC4yNSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJh
Y2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgMjUgcyBs
IC8gYWxwaGEpIikgaXMgInJnYmEoNzcsIDQ3LCAyNiwgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAy
NWRlZyBzIGwgLyBhbHBoYSkiKSBpcyAicmdiYSg3NywgNDcsIDI2LCAwLjQpIgorUEFTUyBjb21w
dXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAl
LCA0MCUpIGggMjUlIGwgLyBhbHBoYSkiKSBpcyAicmdiYSgzOSwgNTEsIDY0LCAwLjQpIgorUEFT
UyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJnYigxMCUsIDIw
JSwgMzAlLCA0MCUpIGggcyAyNSUgLyBhbHBoYSkiKSBpcyAicmdiYSgzMiwgNjMsIDk1LCAwLjQp
IgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJnYigx
MCUsIDIwJSwgMzAlLCA0MCUpIGggcyBsIC8gLjI1KSIpIGlzICJyZ2JhKDI2LCA1MSwgNzcsIDAu
MjUpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJl
YmVjY2FwdXJwbGUgaCBsIHMpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVk
U3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIGFscGhh
IGwgLyBzKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNr
Z3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaCBsIGwgLyBsKSIpIGlzICJy
Z2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
ImhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaCBhbHBoYSBhbHBoYSAvIGFscGhhKSIpIGlzICJyZ2Jh
KDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhz
bChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggbCBzKSIpIGlzICJyZ2JhKDAsIDAsIDAs
IDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJn
YigxMCUsIDIwJSwgMzAlLCA0MCUpIGggYWxwaGEgbCAvIHMpIikgaXMgInJnYmEoMCwgMCwgMCwg
MCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmdi
KDEwJSwgMjAlLCAzMCUsIDQwJSkgaCBsIGwgLyBsKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgor
UEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJnYigxMCUs
IDIwJSwgMzAlLCA0MCUpIGggYWxwaGEgYWxwaGEgLyBhbHBoYSkiKSBpcyAicmdiYSgwLCAwLCAw
LCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSBy
ZWJlY2NhcHVycGxlIGggMTAlIDEwKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21w
dXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaCAx
MCAxMCUpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tn
cm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1cnBsZSAxMCUgcyBsKSIpIGlzICJyZ2Jh
KDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhz
bChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggMTAlIDEwKSIpIGlzICJyZ2JhKDAsIDAs
IDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9t
IHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggMTAgMTAlKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDAp
IgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJnYigx
MCUsIDIwJSwgMzAlLCA0MCUpIDEwJSBzIGwpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNT
IGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1cnBs
ZSBodWUgcyBsKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJi
YWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJlYmVjY2FwdXJwbGUgeCBzIGwpIikgaXMgInJn
YmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAi
aHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIGcgYikiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKKwor
aHdiKGZyb20gLi4uKQorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3
Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCB3IGIpIikgaXMgInJnYigxMDIsIDUxLCAxNTMpIgorUEFT
UyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJlYmVjY2FwdXJw
bGUgaCB3IGIgLyBhbHBoYSkiKSBpcyAicmdiKDEwMiwgNTEsIDE1MykiCitQQVNTIGNvbXB1dGVk
U3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQw
JSkgaCB3IGIgLyBhbHBoYSkiKSBpcyAicmdiYSgyNiwgNTEsIDc3LCAwLjQpIgorUEFTUyBjb21w
dXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIGhzbCgxMjBkZWcgMjAlIDUw
JSAvIC41KSBoIHcgYiAvIGFscGhhKSIpIGlzICJyZ2JhKDEwMiwgMTUzLCAxMDIsIDAuNSkiCitQ
QVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gaHdiKGZyb20g
cmViZWNjYXB1cnBsZSBoIHcgYikgaCB3IGIpIikgaXMgInJnYigxMDIsIDUxLCAxNTMpIgorUEFT
UyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIGNvbG9yKGRpc3Bs
YXktcDMgMCAxIDApIGggdyBiIC8gYWxwaGEpIikgaXMgInJnYigwLCAyNTUsIDApIgorUEFTUyBj
b21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJlYmVjY2FwdXJwbGUg
MCAwJSAwJSkiKSBpcyAicmdiKDI1NSwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tn
cm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmViZWNjYXB1cnBsZSAwZGVnIDAlIDAlKSIpIGlzICJy
Z2IoMjU1LCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJo
d2IoZnJvbSByZWJlY2NhcHVycGxlIDAgMCUgMCUgLyAwKSIpIGlzICJyZ2JhKDI1NSwgMCwgMCwg
MCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmVi
ZWNjYXB1cnBsZSAwZGVnIDAlIDAlIC8gMCkiKSBpcyAicmdiYSgyNTUsIDAsIDAsIDApIgorUEFT
UyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJlYmVjY2FwdXJw
bGUgMCB3IGIgLyBhbHBoYSkiKSBpcyAicmdiKDE1MywgNTEsIDUxKSIKK1BBU1MgY29tcHV0ZWRT
dHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSByZWJlY2NhcHVycGxlIDBkZWcgdyBi
IC8gYWxwaGEpIikgaXMgInJnYigxNTMsIDUxLCA1MSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJh
Y2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmViZWNjYXB1cnBsZSBoIDAlIGIgLyBhbHBoYSki
KSBpcyAicmdiKDc3LCAwLCAxNTMpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNv
bG9yIiwgImh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCB3IDAlIC8gYWxwaGEpIikgaXMgInJnYigx
NTMsIDUxLCAyNTUpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3
Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCB3IGIgLyAwKSIpIGlzICJyZ2JhKDEwMiwgNTEsIDE1Mywg
MCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmdi
KDEwJSwgMjAlLCAzMCUsIDQwJSkgMCB3IGIgLyBhbHBoYSkiKSBpcyAicmdiYSg3NywgMjYsIDI2
LCAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9t
IHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDBkZWcgdyBiIC8gYWxwaGEpIikgaXMgInJnYmEoNzcs
IDI2LCAyNiwgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJo
d2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIDAlIGIgLyBhbHBoYSkiKSBpcyAicmdi
YSgwLCAzOCwgNzcsIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3Ii
LCAiaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCB3IDAlIC8gYWxwaGEpIikgaXMg
InJnYmEoMjYsIDEzOCwgMjU1LCAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5k
LWNvbG9yIiwgImh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggdyBiIC8gMCkiKSBp
cyAicmdiYSgyNiwgNTEsIDc3LCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1j
b2xvciIsICJod2IoZnJvbSByZWJlY2NhcHVycGxlIDI1IHcgYiAvIGFscGhhKSIpIGlzICJyZ2Io
MTUzLCA5NCwgNTEpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3
Yihmcm9tIHJlYmVjY2FwdXJwbGUgMjVkZWcgdyBiIC8gYWxwaGEpIikgaXMgInJnYigxNTMsIDk0
LCA1MSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20g
cmViZWNjYXB1cnBsZSBoIDI1JSBiIC8gYWxwaGEpIikgaXMgInJnYigxMDgsIDY0LCAxNTMpIgor
UEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJlYmVjY2Fw
dXJwbGUgaCB3IDI1JSAvIGFscGhhKSIpIGlzICJyZ2IoMTIxLCA1MSwgMTkxKSIKK1BBU1MgY29t
cHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSByZWJlY2NhcHVycGxlIGgg
dyBiIC8gLjI1KSIpIGlzICJyZ2JhKDEwMiwgNTEsIDE1MywgMC4yNSkiCitQQVNTIGNvbXB1dGVk
U3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQw
JSkgMjUgdyBiIC8gYWxwaGEpIikgaXMgInJnYmEoNzcsIDQ3LCAyNiwgMC40KSIKK1BBU1MgY29t
cHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMw
JSwgNDAlKSAyNWRlZyB3IGIgLyBhbHBoYSkiKSBpcyAicmdiYSg3NywgNDcsIDI2LCAwLjQpIgor
UEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJnYigxMCUs
IDIwJSwgMzAlLCA0MCUpIGggMjUlIGIgLyBhbHBoYSkiKSBpcyAicmdiYSg2NCwgNzAsIDc3LCAw
LjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJn
YigxMCUsIDIwJSwgMzAlLCA0MCUpIGggdyAyNSUgLyBhbHBoYSkiKSBpcyAicmdiYSgyNiwgMTA3
LCAxOTEsIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdi
KGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCB3IGIgLyAuMjUpIikgaXMgInJnYmEoMjYs
IDUxLCA3NywgMC4yNSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAi
aHdiKGZyb20gcmViZWNjYXB1cnBsZSBoIGIgdykiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BB
U1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSByZWJlY2NhcHVy
cGxlIGggYWxwaGEgdyAvIGIpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVk
U3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmViZWNjYXB1cnBsZSBoIHcgdyAv
IHcpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91
bmQtY29sb3IiLCAiaHdiKGZyb20gcmViZWNjYXB1cnBsZSBoIGFscGhhIGFscGhhIC8gYWxwaGEp
IikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQt
Y29sb3IiLCAiaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCBiIHcpIikgaXMgInJn
YmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAi
aHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCBhbHBoYSB3IC8gYikiKSBpcyAicmdi
YSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJo
d2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHcgdyAvIHcpIikgaXMgInJnYmEoMCwg
MCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZy
b20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCBhbHBoYSBhbHBoYSAvIGFscGhhKSIpIGlzICJy
Z2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
Imh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCAxMCUgMTApIikgaXMgInJnYmEoMCwgMCwgMCwgMCki
CitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmViZWNj
YXB1cnBsZSBoIDEwIDEwJSkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRT
dHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSByZWJlY2NhcHVycGxlIDEwJSB3IGIp
IikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQt
Y29sb3IiLCAiaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCAxMCUgMTApIikgaXMg
InJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3Ii
LCAiaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCAxMCAxMCUpIikgaXMgInJnYmEo
MCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdi
KGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgMTAlIHcgYikiKSBpcyAicmdiYSgwLCAwLCAw
LCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSBy
ZWJlY2NhcHVycGxlIGh1ZSB3IGIpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1
dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmViZWNjYXB1cnBsZSB4IHcg
YikiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3Vu
ZC1jb2xvciIsICJod2IoZnJvbSByZWJlY2NhcHVycGxlIGggZyBiKSIpIGlzICJyZ2JhKDAsIDAs
IDAsIDApIgorCitsYWIoZnJvbSAuLi4pCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQt
Y29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCBhIGIpIikgaXMgImxhYigyNSUgMjAg
NTApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxh
YigyNSUgMjAgNTApIGwgYSBiIC8gYWxwaGEpIikgaXMgImxhYigyNSUgMjAgNTApIgorUEFTUyBj
b21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAgNTAg
LyA0MCUpIGwgYSBiIC8gYWxwaGEpIikgaXMgImxhYigyNSUgMjAgNTAgLyAwLjQpIgorUEFTUyBj
b21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYihmcm9tIGxhYigy
NSUgMjAgNTApIGwgYSBiKSBsIGEgYikiKSBpcyAibGFiKDI1JSAyMCA1MCkiCitQQVNTIGNvbXB1
dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gY29sb3IoZGlzcGxheS1wMyAw
IDAgMCkgbCBhIGIgLyBhbHBoYSkiKSBpcyAibGFiKDAlIDAgMCkiCitQQVNTIGNvbXB1dGVkU3R5
bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgMCUgMCAwKSIp
IGlzICJsYWIoMCUgMCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIs
ICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSAwJSAwIDAgLyAwKSIpIGlzICJsYWIoMCUgMCAwIC8g
MCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFi
KDI1JSAyMCA1MCkgMCUgYSBiIC8gYWxwaGEpIikgaXMgImxhYigwJSAyMCA1MCkiCitQQVNTIGNv
bXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCkg
bCAwIGIgLyBhbHBoYSkiKSBpcyAibGFiKDI1JSAwIDUwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgi
YmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGEgMCAvIGFscGhh
KSIpIGlzICJsYWIoMjUlIDIwIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNv
bG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAgNTApIGwgYSBiIC8gMCkiKSBpcyAibGFiKDI1JSAy
MCA1MCAvIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihm
cm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIDAlIGEgYiAvIGFscGhhKSIpIGlzICJsYWIoMCUgMjAg
NTAgLyAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihm
cm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIGwgMCBiIC8gYWxwaGEpIikgaXMgImxhYigyNSUgMCA1
MCAvIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZy
b20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCBhIDAgLyBhbHBoYSkiKSBpcyAibGFiKDI1JSAyMCAw
IC8gMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJv
bSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBsIGEgYiAvIDApIikgaXMgImxhYigyNSUgMjAgNTAgLyAw
KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIo
MjUlIDIwIDUwKSAzNSUgYSBiIC8gYWxwaGEpIikgaXMgImxhYigzNSUgMjAgNTApIgorUEFTUyBj
b21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAgNTAp
IGwgMzUgYiAvIGFscGhhKSIpIGlzICJsYWIoMjUlIDM1IDUwKSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGEgMzUgLyBh
bHBoYSkiKSBpcyAibGFiKDI1JSAyMCAzNSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91
bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCBhIGIgLyAuMzUpIikgaXMgImxh
YigyNSUgMjAgNTAgLyAwLjM1KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xv
ciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSAzNSUgYSBiIC8gYWxwaGEpIikgaXMg
ImxhYigzNSUgMjAgNTAgLyAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNv
bG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIGwgMzUgYiAvIGFscGhhKSIpIGlz
ICJsYWIoMjUlIDM1IDUwIC8gMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1j
b2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBsIGEgMzUgLyBhbHBoYSkiKSBp
cyAibGFiKDI1JSAyMCAzNSAvIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQt
Y29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCBhIGIgLyAuMzUpIikgaXMg
ImxhYigyNSUgMjAgNTAgLyAwLjM1KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1j
b2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGIgYSkiKSBpcyAicmdiYSgwLCAwLCAw
LCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBs
YWIoMjUlIDIwIDUwKSBsIGFscGhhIGEgLyBiKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFT
UyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAg
NTApIGwgYSBhIC8gYSkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGFscGhhIGFs
cGhhIC8gYWxwaGEpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUo
ImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCBiIGEp
IikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQt
Y29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCBhbHBoYSBhIC8gYikiKSBp
cyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xv
ciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBsIGEgYSAvIGEpIikgaXMgInJnYmEo
MCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFi
KGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCBhbHBoYSBhbHBoYSAvIGFscGhhKSIpIGlzICJy
Z2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
ImxhYihmcm9tIGxhYigyNSUgMjAgNTApIGwgMTAlIDEwKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDAp
IgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigy
NSUgMjAgNTApIGwgMTAgMTAlKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRl
ZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAgNTApIDEwIGEg
YikiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3Vu
ZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBsIDEwJSAxMCkiKSBpcyAi
cmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIs
ICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBsIDEwIDEwJSkiKSBpcyAicmdiYSgwLCAw
LCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJv
bSBsYWIoMjUlIDIwIDUwIC8gNDAlKSAxMCBhIGIpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQ
QVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAy
MCA1MCkgbGlnaHRuZXNzIGEgYikiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0
ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSB4IGEg
YikiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3Vu
ZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBoIGcgYikiKSBpcyAicmdiYSgwLCAw
LCAwLCAwKSIKKworbGNoKGZyb20gLi4uKQorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5k
LWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCkgbCBjIGgpIikgaXMgImxhYig3MCUgNDUg
MCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNo
KDcwJSA0NSAwKSBsIGMgaCAvIGFscGhhKSIpIGlzICJsYWIoNzAlIDQ1IDApIgorUEFTUyBjb21w
dXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCAvIDQw
JSkgbCBjIGgvIGFscGhhKSIpIGlzICJsYWIoNzAlIDQ1IDAgLyAwLjQpIgorUEFTUyBjb21wdXRl
ZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaChmcm9tIGxjaCg3MCUgNDUg
MCkgbCBjIGgpIGwgYyBoKSIpIGlzICJsYWIoNzAlIDQ1IDApIgorUEFTUyBjb21wdXRlZFN0eWxl
KCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGNvbG9yKGRpc3BsYXktcDMgMCAwIDApIGwg
YyBoIC8gYWxwaGEpIikgaXMgImxhYigwJSAwIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNr
Z3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCkgMCUgMCAwKSIpIGlzICJsYWIo
MCUgMCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJv
bSBsY2goNzAlIDQ1IDApIDAlIDAgMGRlZykiKSBpcyAibGFiKDAlIDAgMCkiCitQQVNTIGNvbXB1
dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAwKSAwJSAw
IDAgLyAwKSIpIGlzICJsYWIoMCUgMCAwIC8gMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tn
cm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAwKSAwJSAwIDBkZWcgLyAwKSIpIGlz
ICJsYWIoMCUgMCAwIC8gMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3Ii
LCAibGNoKGZyb20gbGNoKDcwJSA0NSAwKSAwJSBjIGggLyBhbHBoYSkiKSBpcyAibGFiKDAlIDQ1
IDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxj
aCg3MCUgNDUgMCkgbCAwIGggLyBhbHBoYSkiKSBpcyAibGFiKDcwJSAwIDApIgorUEFTUyBjb21w
dXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCkgbCBj
IDAgLyBhbHBoYSkiKSBpcyAibGFiKDcwJSA0NSAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFj
a2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDApIGwgYyAwZGVnIC8gYWxwaGEp
IikgaXMgImxhYig3MCUgNDUgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29s
b3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAwKSBsIGMgaCAvIDApIikgaXMgImxhYig3MCUgNDUg
MCAvIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9t
IGxjaCg3MCUgNDUgMCAvIDQwJSkgMCUgYyBoIC8gYWxwaGEpIikgaXMgImxhYigwJSA0NSAwIC8g
MC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBs
Y2goNzAlIDQ1IDAgLyA0MCUpIGwgMCBoIC8gYWxwaGEpIikgaXMgImxhYig3MCUgMCAwIC8gMC40
KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2go
NzAlIDQ1IDAgLyA0MCUpIGwgYyAwIC8gYWxwaGEpIikgaXMgImxhYig3MCUgNDUgMCAvIDAuNCki
CitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcw
JSA0NSAwIC8gNDAlKSBsIGMgMGRlZyAvIGFscGhhKSIpIGlzICJsYWIoNzAlIDQ1IDAgLyAwLjQp
IgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3
MCUgNDUgMCAvIDQwJSkgbCBjIGggLyAwKSIpIGlzICJsYWIoNzAlIDQ1IDAgLyAwKSIKK1BBU1Mg
Y29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDAp
IDI1JSBjIGggLyBhbHBoYSkiKSBpcyAibGFiKDI1JSA0NSAwKSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDApIGwgLTQ1IGggLyBh
bHBoYSkiKSBpcyAibGFiKDcwJSAwIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5k
LWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCkgbCBjIDQ1IC8gYWxwaGEpIikgaXMgImxh
Yig3MCUgMzEuODE5ODA1IDMxLjgxOTgwNSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91
bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAwKSBsIGMgNDVkZWcgLyBhbHBoYSkiKSBp
cyAibGFiKDcwJSAzMS44MTk4MDUgMzEuODE5ODA1KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFj
a2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDApIGwgYyBoIC8gLjI1KSIpIGlz
ICJsYWIoNzAlIDQ1IDAgLyAwLjI1KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1j
b2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDAgLyA0MCUpIDI1JSBjIGggLyBhbHBoYSkiKSBp
cyAibGFiKDI1JSA0NSAwIC8gMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1j
b2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDAgLyA0MCUpIGwgLTQ1IGggLyBhbHBoYSkiKSBp
cyAibGFiKDcwJSAwIDAgLyAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNv
bG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCAvIDQwJSkgbCBjIDQ1IC8gYWxwaGEpIikgaXMg
ImxhYig3MCUgMzEuODE5ODA1IDMxLjgxOTgwNSAvIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUo
ImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAwIC8gNDAlKSBsIGMgNDVk
ZWcgLyBhbHBoYSkiKSBpcyAibGFiKDcwJSAzMS44MTk4MDUgMzEuODE5ODA1IC8gMC40KSIKK1BB
U1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1
IDAgLyA0MCUpIGwgYyBoIC8gLjI1KSIpIGlzICJsYWIoNzAlIDQ1IDAgLyAwLjI1KSIKK1BBU1Mg
Y29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDAp
IGFscGhhIGMgaCAvIGwpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5
bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAwKSBhbHBoYSBjIGgg
LyBhbHBoYSkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFj
a2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDAgLyA0MCUpIGFscGhhIGMgaCAv
IGwpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91
bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAwIC8gNDAlKSBhbHBoYSBjIGggLyBhbHBo
YSkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3Vu
ZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDApIGwgMTAlIGgpIikgaXMgInJnYmEoMCwg
MCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZy
b20gbGNoKDcwJSA0NSAwKSBsIGMgMTAlKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBj
b21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCkg
MTAgYyBoKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNr
Z3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCAvIDQwJSkgbCAxMCUgaCkiKSBp
cyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xv
ciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDAgLyA0MCUpIGwgYyAxMCUpIikgaXMgInJnYmEoMCwg
MCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZy
b20gbGNoKDcwJSA0NSAwIC8gNDAlKSAxMCBjIGgpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQ
QVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0
NSAwKSBsaWdodG5lc3MgYyBoKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRl
ZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCkgeCBjIGgp
IikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQt
Y29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAwKSBsIGcgYikiKSBpcyAicmdiYSgwLCAwLCAw
LCAwKSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLXJlbGF0aXZlLWNvbG9yLXN5bnRh
eC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctcmVsYXRp
dmUtY29sb3Itc3ludGF4Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
c3MvcGFyc2luZy1yZWxhdGl2ZS1jb2xvci1zeW50YXguaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM4MiBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBD
U1NSZWxhdGl2ZUNvbG9yU3ludGF4RW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCB0aGUgcGFyc2luZyBv
ZiBDU1MgQ29sb3IgNSBSZWxhdGl2ZSBDb2xvciBTeW50YXguIik7CisKKyAgICBmdW5jdGlvbiBj
b21wdXRlZFN0eWxlKHByb3BlcnR5LCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHZhciBkaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChkaXYpOworICAgICAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkocHJvcGVydHksIHZh
bHVlKTsKKyAgICAgICAgdmFyIGNvbXB1dGVkVmFsdWUgPSBnZXRDb21wdXRlZFN0eWxlKGRpdiku
Z2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eSk7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQoZGl2KTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVkVmFsdWU7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gaW5uZXJTdHlsZShwcm9wZXJ0eSwgdmFsdWUpCisgICAgeworICAgICAgICB2YXIg
ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRpdi5zdHlsZS5z
ZXRQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUpOworICAgICAgICByZXR1cm4gZGl2LnN0eWxlLmdl
dFByb3BlcnR5VmFsdWUocHJvcGVydHkpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RDb21w
dXRlZFByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSwgZXhwZWN0ZWQpCisgICAgeworICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2NvbXB1dGVkU3R5bGUoIicgKyBwcm9wZXJ0eSArICciLCAi
JyArIHZhbHVlICsgJyIpJywgZXhwZWN0ZWQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RD
b21wdXRlZCh2YWx1ZSwgZXhwZWN0ZWQpCisgICAgeworICAgICAgICB0ZXN0Q29tcHV0ZWRQcm9w
ZXJ0eSgiYmFja2dyb3VuZC1jb2xvciIsIHZhbHVlLCBleHBlY3RlZCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gdGVzdElubmVyKHByb3BlcnR5LCB2YWx1ZSwgZXhwZWN0ZWQpCisgICAgeworICAg
ICAgICBpZiAoZXhwZWN0ZWQgPT09IG51bGwpCisgICAgICAgICAgICBleHBlY3RlZCA9ICIiOwor
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2lubmVyU3R5bGUoIicgKyBwcm9wZXJ0eSAr
ICciLCAiJyArIHZhbHVlICsgJyIpJywgZXhwZWN0ZWQpOworICAgIH0KKworCisgICAgZGVidWco
J3JnYihmcm9tIC4uLiknKTsKKworICAgIC8vIFRlc3Rpbmcgbm8gbW9kaWZpY2F0aW9ucy4KKyAg
ICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVjY2FwdXJwbGUgciBnIGIpYCwgYHJnYigxMDIs
IDUxLCAxNTMpYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIg
ZyBiIC8gYWxwaGEpYCwgYHJnYigxMDIsIDUxLCAxNTMpYCk7CisgICAgdGVzdENvbXB1dGVkKGBy
Z2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIGcgYiAvIGFscGhhKWAsIGByZ2JhKDI2
LCA1MSwgNzcsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIGhzbCgxMjBkZWcg
MjAlIDUwJSAvIC41KSByIGcgYiAvIGFscGhhKWAsIGByZ2JhKDEwMiwgMTUzLCAxMDIsIDAuNSlg
KTsKKworICAgIC8vIFRlc3QgbmVzdGluZyByZWxhdGl2ZSBjb2xvcnMuCisgICAgdGVzdENvbXB1
dGVkKGByZ2IoZnJvbSByZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgZyBiKSByIGcgYilgLCBgcmdi
KDEwMiwgNTEsIDE1MylgKTsKKworICAgIC8vIFRlc3Rpbmcgbm9uLXNSR0Igb3JpZ2luIGNvbG9y
cyB0byBzZWUgZ2FtdXQgY2xpcHBpbmcuCisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSBjb2xv
cihkaXNwbGF5LXAzIDAgMSAwKSByIGcgYiAvIGFscGhhKWAsIGByZ2IoMCwgMjU1LCAwKWApOwor
CisgICAgLy8gVGVzdGluZyByZXBsYWNlbWVudCB3aXRoIDAuCisgICAgdGVzdENvbXB1dGVkKGBy
Z2IoZnJvbSByZWJlY2NhcHVycGxlIDAgMCAwKWAsIGByZ2IoMCwgMCwgMClgKTsKKyAgICB0ZXN0
Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVjY2FwdXJwbGUgMCAwIDAgLyAwKWAsIGByZ2JhKDAsIDAs
IDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIDAgZyBi
IC8gYWxwaGEpYCwgYHJnYigwLCA1MSwgMTUzKWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZy
b20gcmViZWNjYXB1cnBsZSByIDAgYiAvIGFscGhhKWAsIGByZ2IoMTAyLCAwLCAxNTMpYCk7Cisg
ICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgZyAwIC8gYWxwaGEpYCwg
YHJnYigxMDIsIDUxLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmViZWNjYXB1
cnBsZSByIGcgYiAvIDApYCwgYHJnYmEoMTAyLCA1MSwgMTUzLCAwKWApOworICAgIHRlc3RDb21w
dXRlZChgcmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgMCBnIGIgLyBhbHBoYSlgLCBg
cmdiYSgwLCA1MSwgNzcsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJnYigx
MCUsIDIwJSwgMzAlLCA0MCUpIHIgMCBiIC8gYWxwaGEpYCwgYHJnYmEoMjYsIDAsIDc3LCAwLjQp
YCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBy
IGcgMCAvIGFscGhhKWAsIGByZ2JhKDI2LCA1MSwgMCwgMC40KWApOworICAgIHRlc3RDb21wdXRl
ZChgcmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgciBnIGIgLyAwKWAsIGByZ2JhKDI2
LCA1MSwgNzcsIDApYCk7CisKKyAgICAvLyBUZXN0aW5nIHJlcGxhY2VtZW50IHdpdGggYSBudW1i
ZXIuCisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIDI1IGcgYiAvIGFs
cGhhKWAsIGByZ2IoMjUsIDUxLCAxNTMpYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSBy
ZWJlY2NhcHVycGxlIHIgMjUgYiAvIGFscGhhKWAsIGByZ2IoMTAyLCAyNSwgMTUzKWApOworICAg
IHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmViZWNjYXB1cnBsZSByIGcgMjUgLyBhbHBoYSlgLCBg
cmdiKDEwMiwgNTEsIDI1KWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmViZWNjYXB1
cnBsZSByIGcgYiAvIC4yNSlgLCBgcmdiYSgxMDIsIDUxLCAxNTMsIDAuMjUpYCk7CisgICAgdGVz
dENvbXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAyNSBnIGIgLyBhbHBo
YSlgLCBgcmdiYSgyNSwgNTEsIDc3LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJv
bSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIDI1IGIgLyBhbHBoYSlgLCBgcmdiYSgyNiwgMjUs
IDc3LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMw
JSwgNDAlKSByIGcgMjUgLyBhbHBoYSlgLCBgcmdiYSgyNiwgNTEsIDI1LCAwLjQpYCk7CisgICAg
dGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIGcgYiAvIC4y
NSlgLCBgcmdiYSgyNiwgNTEsIDc3LCAwLjI1KWApOworCisgICAgLy8gVGVzdGluZyByZXBsYWNl
bWVudCB3aXRoIGEgcGVyY2VudGFnZS4KKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVj
Y2FwdXJwbGUgMjUlIGcgYiAvIGFscGhhKWAsIGByZ2IoNjQsIDUxLCAxNTMpYCk7CisgICAgdGVz
dENvbXB1dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgMjUlIGIgLyBhbHBoYSlgLCBgcmdi
KDEwMiwgNjQsIDE1MylgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVjY2FwdXJw
bGUgciBnIDI1JSAvIGFscGhhKWAsIGByZ2IoMTAyLCA1MSwgNjQpYCk7CisgICAgdGVzdENvbXB1
dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgZyBiIC8gMjUlKWAsIGByZ2JhKDEwMiwgNTEs
IDE1MywgMC4yNSlgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJnYigxMCUsIDIwJSwg
MzAlLCA0MCUpIDI1JSBnIGIgLyBhbHBoYSlgLCBgcmdiYSg2NCwgNTEsIDc3LCAwLjQpYCk7Cisg
ICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIDI1JSBi
IC8gYWxwaGEpYCwgYHJnYmEoMjYsIDY0LCA3NywgMC40KWApOworICAgIHRlc3RDb21wdXRlZChg
cmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgciBnIDI1JSAvIGFscGhhKWAsIGByZ2Jh
KDI2LCA1MSwgNjQsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJnYigxMCUs
IDIwJSwgMzAlLCA0MCUpIHIgZyBiIC8gMjUlKWAsIGByZ2JhKDI2LCA1MSwgNzcsIDAuMjUpYCk7
CisKKyAgICAvLyBUZXN0aW5nIHJlcGxhY2VtZW50IHdpdGggYSBudW1iZXIgZm9yIHIsIGcsIGIg
YnV0IHBlcmNlbnQgZm9yIGFscGhhLgorICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmViZWNj
YXB1cnBsZSAyNSBnIGIgLyAyNSUpYCwgYHJnYmEoMjUsIDUxLCAxNTMsIDAuMjUpYCk7CisgICAg
dGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgMjUgYiAvIDI1JSlgLCBgcmdi
YSgxMDIsIDI1LCAxNTMsIDAuMjUpYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJl
Y2NhcHVycGxlIHIgZyAyNSAvIDI1JSlgLCBgcmdiYSgxMDIsIDUxLCAyNSwgMC4yNSlgKTsKKyAg
ICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDI1IGcgYiAv
IDI1JSlgLCBgcmdiYSgyNSwgNTEsIDc3LCAwLjI1KWApOworICAgIHRlc3RDb21wdXRlZChgcmdi
KGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgciAyNSBiIC8gMjUlKWAsIGByZ2JhKDI2LCAy
NSwgNzcsIDAuMjUpYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUs
IDMwJSwgNDAlKSByIGcgMjUgLyAyNSUpYCwgYHJnYmEoMjYsIDUxLCAyNSwgMC4yNSlgKTsKKwor
ICAgIC8vIFRlc3RpbmcgcGVybXV0YXRpb24gKHVuY2xlYXIgaWYgdGhpcyBpcyBhbGxvd2VkIHBl
ci1zcGVjLCB3ZSBkaXNhbGxvdyBpdCkuCisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJl
Y2NhcHVycGxlIGcgYiByKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVk
KGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIGIgYWxwaGEgciAvIGcpYCwgYHJnYmEoMCwgMCwgMCwg
MClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVjY2FwdXJwbGUgciByIHIgLyBy
KWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJl
Y2NhcHVycGxlIGFscGhhIGFscGhhIGFscGhhIC8gYWxwaGEpYCwgYHJnYmEoMCwgMCwgMCwgMClg
KTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGcg
YiByKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSBy
Z2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBiIGFscGhhIHIgLyBnKWAsIGByZ2JhKDAsIDAsIDAsIDAp
YCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBy
IHIgciAvIHIpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihm
cm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGFscGhhIGFscGhhIGFscGhhIC8gYWxwaGEpYCwg
YHJnYmEoMCwgMCwgMCwgMClgKTsKKworICAgIC8vIFRlc3RpbmcgaW52YWxpZCBtaXhlcyBvZiBu
dW1iZXIgYW5kIHBlcmNlbnRhZ2UKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVjY2Fw
dXJwbGUgciAxMCUgMTApYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQo
YHJnYihmcm9tIHJlYmVjY2FwdXJwbGUgciAxMCAxMCUpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsK
KyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVjY2FwdXJwbGUgMCUgMTAgMTApYCwgYHJn
YmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJnYigxMCUsIDIw
JSwgMzAlLCA0MCUpIHIgMTAlIDEwKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENv
bXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIDEwIDEwJSlgLCBgcmdi
YSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmdiKDEwJSwgMjAl
LCAzMCUsIDQwJSkgMCUgMTAgMTApYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKworICAgIC8vIFRl
c3RpbmcgaW52YWxpZCBjb21wb25lbnQgbmFtZXMKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9t
IHJlYmVjY2FwdXJwbGUgcmVkIGcgYilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RD
b21wdXRlZChgcmdiKGZyb20gcmViZWNjYXB1cnBsZSBsIGcgYilgLCBgcmdiYSgwLCAwLCAwLCAw
KWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmViZWNjYXB1cnBsZSBoIGcgYilgLCBg
cmdiYSgwLCAwLCAwLCAwKWApOworCisgICAgZGVidWcoJycpOworICAgIGRlYnVnKCdoc2woZnJv
bSAuLi4pJyk7CisKKyAgICAvLyBUZXN0aW5nIG5vIG1vZGlmaWNhdGlvbnMuCisgICAgdGVzdENv
bXB1dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIGggcyBsKWAsIGByZ2IoMTAyLCA1MSwgMTUz
KWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIHMgbCAvIGFs
cGhhKWAsIGByZ2IoMTAyLCA1MSwgMTUzKWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20g
cmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCBzIGwgLyBhbHBoYSlgLCBgcmdiYSgyNiwgNTEsIDc3
LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSBoc2woMTIwZGVnIDIwJSA1MCUg
LyAuNSkgaCBzIGwgLyBhbHBoYSlgLCBgcmdiYSgxMDIsIDE1MywgMTAyLCAwLjUpYCk7CisKKyAg
ICAvLyBUZXN0IG5lc3RpbmcgcmVsYXRpdmUgY29sb3JzLgorICAgIHRlc3RDb21wdXRlZChgaHNs
KGZyb20gaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIHMgbCkgaCBzIGwpYCwgYHJnYigxMDIsIDUx
LCAxNTMpYCk7CisKKyAgICAvLyBUZXN0aW5nIG5vbi1zUkdCIG9yaWdpbiBjb2xvcnMgdG8gc2Vl
IGdhbXV0IGNsaXBwaW5nLgorICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gY29sb3IoZGlzcGxh
eS1wMyAwIDEgMCkgaCBzIGwgLyBhbHBoYSlgLCBgcmdiKDAsIDI1NSwgMClgKTsKKworICAgIC8v
IFRlc3RpbmcgcmVwbGFjZW1lbnQgd2l0aCAwLgorICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20g
cmViZWNjYXB1cnBsZSAwIDAlIDAlKWAsIGByZ2IoMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0
ZWQoYGhzbChmcm9tIHJlYmVjY2FwdXJwbGUgMGRlZyAwJSAwJSlgLCBgcmdiKDAsIDAsIDApYCk7
CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIDAgMCUgMCUgLyAwKWAs
IGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZWJlY2Nh
cHVycGxlIDBkZWcgMCUgMCUgLyAwKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENv
bXB1dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIDAgcyBsIC8gYWxwaGEpYCwgYHJnYigxNTMs
IDUxLCA1MSlgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJlYmVjY2FwdXJwbGUgMGRl
ZyBzIGwgLyBhbHBoYSlgLCBgcmdiKDE1MywgNTEsIDUxKWApOworICAgIHRlc3RDb21wdXRlZChg
aHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIDAlIGwgLyBhbHBoYSlgLCBgcmdiKDEwMiwgMTAyLCAx
MDIpYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIGggcyAwJSAv
IGFscGhhKWAsIGByZ2IoMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJl
YmVjY2FwdXJwbGUgaCBzIGwgLyAwKWAsIGByZ2JhKDEwMiwgNTEsIDE1MywgMClgKTsKKyAgICB0
ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDAgcyBsIC8gYWxw
aGEpYCwgYHJnYmEoNzcsIDI2LCAyNiwgMC40KWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZy
b20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgMGRlZyBzIGwgLyBhbHBoYSlgLCBgcmdiYSg3Nywg
MjYsIDI2LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZ2IoMTAlLCAyMCUs
IDMwJSwgNDAlKSBoIDAlIGwgLyBhbHBoYSlgLCBgcmdiYSg1MiwgNTIsIDUyLCAwLjQpYCk7Cisg
ICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHMgMCUg
LyBhbHBoYSlgLCBgcmdiYSgwLCAwLCAwLCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2wo
ZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHMgbCAvIDApYCwgYHJnYmEoMjYsIDUxLCA3
NywgMClgKTsKKworICAgIC8vIFRlc3RpbmcgcmVwbGFjZW1lbnQgd2l0aCBhIGNvbnN0YW50Lgor
ICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBsZSAyNSBzIGwgLyBhbHBoYSlg
LCBgcmdiKDE1MywgOTQsIDUxKWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNj
YXB1cnBsZSAyNWRlZyBzIGwgLyBhbHBoYSlgLCBgcmdiKDE1MywgOTQsIDUxKWApOworICAgIHRl
c3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIDI1JSBsIC8gYWxwaGEpYCwgYHJn
YigxMDIsIDc3LCAxMjgpYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZWJlY2NhcHVy
cGxlIGggcyAyNSUgLyBhbHBoYSlgLCBgcmdiKDY0LCAzMiwgOTYpYCk7CisgICAgdGVzdENvbXB1
dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIGggcyBsIC8gLjI1KWAsIGByZ2JhKDEwMiwgNTEs
IDE1MywgMC4yNSlgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJnYigxMCUsIDIwJSwg
MzAlLCA0MCUpIDI1IHMgbCAvIGFscGhhKWAsIGByZ2JhKDc3LCA0NywgMjYsIDAuNClgKTsKKyAg
ICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDI1ZGVnIHMg
bCAvIGFscGhhKWAsIGByZ2JhKDc3LCA0NywgMjYsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQo
YGhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggMjUlIGwgLyBhbHBoYSlgLCBgcmdi
YSgzOSwgNTEsIDY0LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZ2IoMTAl
LCAyMCUsIDMwJSwgNDAlKSBoIHMgMjUlIC8gYWxwaGEpYCwgYHJnYmEoMzIsIDYzLCA5NSwgMC40
KWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkg
aCBzIGwgLyAuMjUpYCwgYHJnYmEoMjYsIDUxLCA3NywgMC4yNSlgKTsKKworICAgIC8vIFRlc3Rp
bmcgcGVybXV0YXRpb24gKHVuY2xlYXIgaWYgdGhpcyBpcyBhbGxvd2VkIHBlci1zcGVjLCB3ZSBk
aXNhbGxvdyBpdCkuCisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIGgg
bCBzKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSBy
ZWJlY2NhcHVycGxlIGggYWxwaGEgbCAvIHMpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0
ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaCBsIGwgLyBsKWAsIGByZ2JhKDAs
IDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIGgg
YWxwaGEgYWxwaGEgLyBhbHBoYSlgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21w
dXRlZChgaHNsKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCBsIHMpYCwgYHJnYmEoMCwg
MCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAl
LCA0MCUpIGggYWxwaGEgbCAvIHMpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29t
cHV0ZWQoYGhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggbCBsIC8gbClgLCBgcmdi
YSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmdiKDEwJSwgMjAl
LCAzMCUsIDQwJSkgaCBhbHBoYSBhbHBoYSAvIGFscGhhKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7
CisKKyAgICAvLyBUZXN0aW5nIGludmFsaWQgdmFsdWVzLgorICAgIHRlc3RDb21wdXRlZChgaHNs
KGZyb20gcmViZWNjYXB1cnBsZSBoIDEwJSAxMClgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAg
IHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIDEwIDEwJSlgLCBgcmdiYSgw
LCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBsZSAx
MCUgcyBsKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJv
bSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIDEwJSAxMClgLCBgcmdiYSgwLCAwLCAwLCAwKWAp
OworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCAx
MCAxMCUpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9t
IHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDEwJSBzIGwpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsK
KworICAgIC8vIFRlc3RpbmcgaW52YWxpZCBjb21wb25lbnQgbmFtZXMKKyAgICB0ZXN0Q29tcHV0
ZWQoYGhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaHVlIHMgbClgLCBgcmdiYSgwLCAwLCAwLCAwKWAp
OworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBsZSB4IHMgbClgLCBgcmdi
YSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBs
ZSBoIGcgYilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworCisKKyAgICBkZWJ1ZygnJyk7CisgICAg
ZGVidWcoJ2h3Yihmcm9tIC4uLiknKTsKKworICAgIC8vIFRlc3Rpbmcgbm8gbW9kaWZpY2F0aW9u
cy4KKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCB3IGIpYCwgYHJn
YigxMDIsIDUxLCAxNTMpYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVy
cGxlIGggdyBiIC8gYWxwaGEpYCwgYHJnYigxMDIsIDUxLCAxNTMpYCk7CisgICAgdGVzdENvbXB1
dGVkKGBod2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHcgYiAvIGFscGhhKWAsIGBy
Z2JhKDI2LCA1MSwgNzcsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIGhzbCgx
MjBkZWcgMjAlIDUwJSAvIC41KSBoIHcgYiAvIGFscGhhKWAsIGByZ2JhKDEwMiwgMTUzLCAxMDIs
IDAuNSlgKTsKKworICAgIC8vIFRlc3QgbmVzdGluZyByZWxhdGl2ZSBjb2xvcnMuCisgICAgdGVz
dENvbXB1dGVkKGBod2IoZnJvbSBod2IoZnJvbSByZWJlY2NhcHVycGxlIGggdyBiKSBoIHcgYilg
LCBgcmdiKDEwMiwgNTEsIDE1MylgKTsKKworICAgIC8vIFRlc3Rpbmcgbm9uLXNSR0Igb3JpZ2lu
IGNvbG9ycyB0byBzZWUgZ2FtdXQgY2xpcHBpbmcuCisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJv
bSBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBoIHcgYiAvIGFscGhhKWAsIGByZ2IoMCwgMjU1LCAw
KWApOworCisgICAgLy8gVGVzdGluZyByZXBsYWNlbWVudCB3aXRoIDAuCisgICAgdGVzdENvbXB1
dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxlIDAgMCUgMCUpYCwgYHJnYigyNTUsIDAsIDApYCk7
CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxlIDBkZWcgMCUgMCUpYCwg
YHJnYigyNTUsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVy
cGxlIDAgMCUgMCUgLyAwKWAsIGByZ2JhKDI1NSwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0
ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgMGRlZyAwJSAwJSAvIDApYCwgYHJnYmEoMjU1LCAw
LCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmViZWNjYXB1cnBsZSAwIHcg
YiAvIGFscGhhKWAsIGByZ2IoMTUzLCA1MSwgNTEpYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2Io
ZnJvbSByZWJlY2NhcHVycGxlIDBkZWcgdyBiIC8gYWxwaGEpYCwgYHJnYigxNTMsIDUxLCA1MSlg
KTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCAwJSBiIC8gYWxw
aGEpYCwgYHJnYig3NywgMCwgMTUzKWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmVi
ZWNjYXB1cnBsZSBoIHcgMCUgLyBhbHBoYSlgLCBgcmdiKDE1MywgNTEsIDI1NSlgKTsKKyAgICB0
ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCB3IGIgLyAwKWAsIGByZ2JhKDEw
MiwgNTEsIDE1MywgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJnYigxMCUsIDIw
JSwgMzAlLCA0MCUpIDAgdyBiIC8gYWxwaGEpYCwgYHJnYmEoNzcsIDI2LCAyNiwgMC40KWApOwor
ICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgMGRlZyB3
IGIgLyBhbHBoYSlgLCBgcmdiYSg3NywgMjYsIDI2LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVk
KGBod2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIDAlIGIgLyBhbHBoYSlgLCBgcmdi
YSgwLCAzOCwgNzcsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJnYigxMCUs
IDIwJSwgMzAlLCA0MCUpIGggdyAwJSAvIGFscGhhKWAsIGByZ2JhKDI2LCAxMzgsIDI1NSwgMC40
KWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkg
aCB3IGIgLyAwKWAsIGByZ2JhKDI2LCA1MSwgNzcsIDApYCk7CisKKyAgICAvLyBUZXN0aW5nIHJl
cGxhY2VtZW50IHdpdGggYSBjb25zdGFudC4KKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJl
YmVjY2FwdXJwbGUgMjUgdyBiIC8gYWxwaGEpYCwgYHJnYigxNTMsIDk0LCA1MSlgKTsKKyAgICB0
ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgMjVkZWcgdyBiIC8gYWxwaGEpYCwg
YHJnYigxNTMsIDk0LCA1MSlgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJlYmVjY2Fw
dXJwbGUgaCAyNSUgYiAvIGFscGhhKWAsIGByZ2IoMTA4LCA2NCwgMTUzKWApOworICAgIHRlc3RD
b21wdXRlZChgaHdiKGZyb20gcmViZWNjYXB1cnBsZSBoIHcgMjUlIC8gYWxwaGEpYCwgYHJnYigx
MjEsIDUxLCAxOTEpYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxl
IGggdyBiIC8gLjI1KWAsIGByZ2JhKDEwMiwgNTEsIDE1MywgMC4yNSlgKTsKKyAgICB0ZXN0Q29t
cHV0ZWQoYGh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDI1IHcgYiAvIGFscGhhKWAs
IGByZ2JhKDc3LCA0NywgMjYsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJn
YigxMCUsIDIwJSwgMzAlLCA0MCUpIDI1ZGVnIHcgYiAvIGFscGhhKWAsIGByZ2JhKDc3LCA0Nywg
MjYsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAl
LCA0MCUpIGggMjUlIGIgLyBhbHBoYSlgLCBgcmdiYSg2NCwgNzAsIDc3LCAwLjQpYCk7CisgICAg
dGVzdENvbXB1dGVkKGBod2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHcgMjUlIC8g
YWxwaGEpYCwgYHJnYmEoMjYsIDEwNywgMTkxLCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBo
d2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHcgYiAvIC4yNSlgLCBgcmdiYSgyNiwg
NTEsIDc3LCAwLjI1KWApOworCisgICAgLy8gVGVzdGluZyBwZXJtdXRhdGlvbiAodW5jbGVhciBp
ZiB0aGlzIGlzIGFsbG93ZWQgcGVyLXNwZWMsIHdlIGRpc2FsbG93IGl0KS4KKyAgICB0ZXN0Q29t
cHV0ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCBiIHcpYCwgYHJnYmEoMCwgMCwgMCwgMClg
KTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCBhbHBoYSB3IC8g
YilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmVi
ZWNjYXB1cnBsZSBoIHcgdyAvIHcpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29t
cHV0ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCBhbHBoYSBhbHBoYSAvIGFscGhhKWAsIGBy
Z2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZ2IoMTAlLCAy
MCUsIDMwJSwgNDAlKSBoIGIgdylgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21w
dXRlZChgaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCBhbHBoYSB3IC8gYilgLCBg
cmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmdiKDEwJSwg
MjAlLCAzMCUsIDQwJSkgaCB3IHcgLyB3KWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVz
dENvbXB1dGVkKGBod2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIGFscGhhIGFscGhh
IC8gYWxwaGEpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKworICAgIC8vIFRlc3RpbmcgaW52YWxp
ZCB2YWx1ZXMuCisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxlIGggMTAl
IDEwKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSBy
ZWJlY2NhcHVycGxlIGggMTAgMTAlKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENv
bXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxlIDEwJSB3IGIpYCwgYHJnYmEoMCwgMCwgMCwg
MClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUp
IGggMTAlIDEwKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2Io
ZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIDEwIDEwJSlgLCBgcmdiYSgwLCAwLCAwLCAw
KWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkg
MTAlIHcgYilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworCisgICAgLy8gVGVzdGluZyBpbnZhbGlk
IGNvbXBvbmVudCBuYW1lcworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmViZWNjYXB1cnBs
ZSBodWUgdyBiKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2Io
ZnJvbSByZWJlY2NhcHVycGxlIHggdyBiKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVz
dENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxlIGggZyBiKWAsIGByZ2JhKDAsIDAsIDAs
IDApYCk7CisKKworICAgIGRlYnVnKCcnKTsKKyAgICBkZWJ1ZygnbGFiKGZyb20gLi4uKScpOwor
CisgICAgLy8gVGVzdGluZyBubyBtb2RpZmljYXRpb25zLgorICAgIHRlc3RDb21wdXRlZChgbGFi
KGZyb20gbGFiKDI1JSAyMCA1MCkgbCBhIGIpYCwgYGxhYigyNSUgMjAgNTApYCk7CisgICAgdGVz
dENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGEgYiAvIGFscGhhKWAsIGBsYWIo
MjUlIDIwIDUwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCAv
IDQwJSkgbCBhIGIgLyBhbHBoYSlgLCBgbGFiKDI1JSAyMCA1MCAvIDAuNClgKTsKKworICAgIC8v
IFRlc3QgbmVzdGluZyByZWxhdGl2ZSBjb2xvcnMuCisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJv
bSBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGEgYikgbCBhIGIpYCwgYGxhYigyNSUgMjAgNTAp
YCk7CisKKyAgICAvLyBUZXN0aW5nIG5vbi1sYWIgb3JpZ2luIHRvIHNlZSBjb252ZXJzaW9uLgor
ICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gY29sb3IoZGlzcGxheS1wMyAwIDAgMCkgbCBhIGIg
LyBhbHBoYSlgLCBgbGFiKDAlIDAgMClgKTsKKworICAgIC8vIFRlc3RpbmcgcmVwbGFjZW1lbnQg
d2l0aCAwLgorICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgMCUgMCAw
KWAsIGBsYWIoMCUgMCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAy
MCA1MCkgMCUgMCAwIC8gMClgLCBgbGFiKDAlIDAgMCAvIDApYCk7CisgICAgdGVzdENvbXB1dGVk
KGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSAwJSBhIGIgLyBhbHBoYSlgLCBgbGFiKDAlIDIwIDUw
KWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCAwIGIgLyBh
bHBoYSlgLCBgbGFiKDI1JSAwIDUwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFi
KDI1JSAyMCA1MCkgbCBhIDAgLyBhbHBoYSlgLCBgbGFiKDI1JSAyMCAwKWApOworICAgIHRlc3RD
b21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCBhIGIgLyAwKWAsIGBsYWIoMjUlIDIw
IDUwIC8gMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0
MCUpIDAlIGEgYiAvIGFscGhhKWAsIGBsYWIoMCUgMjAgNTAgLyAwLjQpYCk7CisgICAgdGVzdENv
bXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBsIDAgYiAvIGFscGhhKWAsIGBs
YWIoMjUlIDAgNTAgLyAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUl
IDIwIDUwIC8gNDAlKSBsIGEgMCAvIGFscGhhKWAsIGBsYWIoMjUlIDIwIDAgLyAwLjQpYCk7Cisg
ICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBsIGEgYiAvIDAp
YCwgYGxhYigyNSUgMjAgNTAgLyAwKWApOworCisgICAgLy8gVGVzdGluZyByZXBsYWNlbWVudCB3
aXRoIGEgY29uc3RhbnQuCisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUw
KSAzNSUgYSBiIC8gYWxwaGEpYCwgYGxhYigzNSUgMjAgNTApYCk7CisgICAgdGVzdENvbXB1dGVk
KGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIDM1IGIgLyBhbHBoYSlgLCBgbGFiKDI1JSAzNSA1
MClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTApIGwgYSAzNSAv
IGFscGhhKWAsIGBsYWIoMjUlIDIwIDM1KWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20g
bGFiKDI1JSAyMCA1MCkgbCBhIGIgLyAuMzUpYCwgYGxhYigyNSUgMjAgNTAgLyAwLjM1KWApOwor
ICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgMzUlIGEgYiAv
IGFscGhhKWAsIGBsYWIoMzUlIDIwIDUwIC8gMC40KWApOworICAgIHRlc3RDb21wdXRlZChgbGFi
KGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCAzNSBiIC8gYWxwaGEpYCwgYGxhYigyNSUgMzUg
NTAgLyAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8g
NDAlKSBsIGEgMzUgLyBhbHBoYSlgLCBgbGFiKDI1JSAyMCAzNSAvIDAuNClgKTsKKyAgICB0ZXN0
Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIGwgYSBiIC8gLjM1KWAsIGBs
YWIoMjUlIDIwIDUwIC8gMC4zNSlgKTsKKworICAgIC8vIFRlc3RpbmcgcGVybXV0YXRpb24gKHVu
Y2xlYXIgaWYgdGhpcyBpcyBhbGxvd2VkIHBlci1zcGVjLCB3ZSBkaXNhbGxvdyBpdCkuCisgICAg
dGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGIgYSlgLCBgcmdiYSgwLCAw
LCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCBh
bHBoYSBhIC8gYilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFi
KGZyb20gbGFiKDI1JSAyMCA1MCkgbCBhIGEgLyBhKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7Cisg
ICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGFscGhhIGFscGhhIC8g
YWxwaGEpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9t
IGxhYigyNSUgMjAgNTAgLyA0MCUpIGwgYiBhKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAg
dGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBsIGFscGhhIGEgLyBi
KWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIo
MjUlIDIwIDUwIC8gNDAlKSBsIGEgYSAvIGEpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0
ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIGwgYWxwaGEgYWxwaGEg
LyBhbHBoYSlgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworCisgICAgLy8gVGVzdGluZyBpbnZhbGlk
IHZhbHVlcy4KKyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTApIGwgMTAl
IDEwKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBs
YWIoMjUlIDIwIDUwKSBsIDEwIDEwJSlgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RD
b21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgMTAgYSBiKWAsIGByZ2JhKDAsIDAsIDAs
IDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBs
IDEwJSAxMClgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZy
b20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCAxMCAxMCUpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsK
KyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIDEwIGEgYilg
LCBgcmdiYSgwLCAwLCAwLCAwKWApOworCisgICAgLy8gVGVzdGluZyBpbnZhbGlkIGNvbXBvbmVu
dCBuYW1lcworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbGlnaHRu
ZXNzIGEgYilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZy
b20gbGFiKDI1JSAyMCA1MCkgeCBhIGIpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0
Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTApIGggZyBiKWAsIGByZ2JhKDAsIDAsIDAs
IDApYCk7CisKKworICAgIGRlYnVnKCcnKTsKKyAgICBkZWJ1ZygnbGNoKGZyb20gLi4uKScpOwor
CisgICAgLy8gVXNpbmcgbGNoKDcwJSA0NSAwKSBhcyBpdCBjb252ZXJ0cyBuaWNlbHkgdG8gbGFi
KDcwJSA0NSAwKSB3aXRob3V0IHByZWNpc2lvbiBjb25jZXJucyBpbiBtb3N0CisgICAgLy8gY2Fz
ZXMuCisKKyAgICAvLyBUZXN0aW5nIG5vIG1vZGlmaWNhdGlvbnMuCisgICAgdGVzdENvbXB1dGVk
KGBsY2goZnJvbSBsY2goNzAlIDQ1IDApIGwgYyBoKWAsIGBsYWIoNzAlIDQ1IDApYCk7CisgICAg
dGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDApIGwgYyBoIC8gYWxwaGEpYCwgYGxh
Yig3MCUgNDUgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMCAv
IDQwJSkgbCBjIGgvIGFscGhhKWAsIGBsYWIoNzAlIDQ1IDAgLyAwLjQpYCk7CisKKyAgICAvLyBU
ZXN0IG5lc3RpbmcgcmVsYXRpdmUgY29sb3JzLgorICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20g
bGNoKGZyb20gbGNoKDcwJSA0NSAwKSBsIGMgaCkgbCBjIGgpYCwgYGxhYig3MCUgNDUgMClgKTsK
KworICAgIC8vIFRlc3Rpbmcgbm9uLXNSR0Igb3JpZ2luIGNvbG9ycyB0byBzZWUgZ2FtdXQgY2xp
cHBpbmcuCisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBjb2xvcihkaXNwbGF5LXAzIDAgMCAw
KSBsIGMgaCAvIGFscGhhKWAsIGBsYWIoMCUgMCAwKWApOworCisgICAgLy8gVGVzdGluZyByZXBs
YWNlbWVudCB3aXRoIDAuCisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDAp
IDAlIDAgMClgLCBgbGFiKDAlIDAgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxj
aCg3MCUgNDUgMCkgMCUgMCAwZGVnKWAsIGBsYWIoMCUgMCAwKWApOworICAgIHRlc3RDb21wdXRl
ZChgbGNoKGZyb20gbGNoKDcwJSA0NSAwKSAwJSAwIDAgLyAwKWAsIGBsYWIoMCUgMCAwIC8gMClg
KTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMCkgMCUgMCAwZGVnIC8g
MClgLCBgbGFiKDAlIDAgMCAvIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2go
NzAlIDQ1IDApIDAlIGMgaCAvIGFscGhhKWAsIGBsYWIoMCUgNDUgMClgKTsKKyAgICB0ZXN0Q29t
cHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMCkgbCAwIGggLyBhbHBoYSlgLCBgbGFiKDcwJSAw
IDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDApIGwgYyAwIC8g
YWxwaGEpYCwgYGxhYig3MCUgNDUgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxj
aCg3MCUgNDUgMCkgbCBjIDBkZWcgLyBhbHBoYSlgLCBgbGFiKDcwJSA0NSAwKWApOworICAgIHRl
c3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAwKSBsIGMgaCAvIDApYCwgYGxhYig3MCUg
NDUgMCAvIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDAgLyA0
MCUpIDAlIGMgaCAvIGFscGhhKWAsIGBsYWIoMCUgNDUgMCAvIDAuNClgKTsKKyAgICB0ZXN0Q29t
cHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMCAvIDQwJSkgbCAwIGggLyBhbHBoYSlgLCBgbGFi
KDcwJSAwIDAgLyAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1
IDAgLyA0MCUpIGwgYyAwIC8gYWxwaGEpYCwgYGxhYig3MCUgNDUgMCAvIDAuNClgKTsKKyAgICB0
ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMCAvIDQwJSkgbCBjIDBkZWcgLyBhbHBo
YSlgLCBgbGFiKDcwJSA0NSAwIC8gMC40KWApOworICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20g
bGNoKDcwJSA0NSAwIC8gNDAlKSBsIGMgaCAvIDApYCwgYGxhYig3MCUgNDUgMCAvIDApYCk7CisK
KyAgICAvLyBUZXN0aW5nIHJlcGxhY2VtZW50IHdpdGggYSBjb25zdGFudC4KKyAgICB0ZXN0Q29t
cHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMCkgMjUlIGMgaCAvIGFscGhhKWAsIGBsYWIoMjUl
IDQ1IDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDApIGwgLTQ1
IGggLyBhbHBoYSlgLCBgbGFiKDcwJSAwIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJv
bSBsY2goNzAlIDQ1IDApIGwgYyA0NSAvIGFscGhhKWAsIGBsYWIoNzAlIDMxLjgxOTgwNSAzMS44
MTk4MDUpYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDApIGwgYyA0
NWRlZyAvIGFscGhhKWAsIGBsYWIoNzAlIDMxLjgxOTgwNSAzMS44MTk4MDUpYCk7CisgICAgdGVz
dENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDApIGwgYyBoIC8gLjI1KWAsIGBsYWIoNzAl
IDQ1IDAgLyAwLjI1KWApOworICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAw
IC8gNDAlKSAyNSUgYyBoIC8gYWxwaGEpYCwgYGxhYigyNSUgNDUgMCAvIDAuNClgKTsKKyAgICB0
ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMCAvIDQwJSkgbCAtNDUgaCAvIGFscGhh
KWAsIGBsYWIoNzAlIDAgMCAvIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxj
aCg3MCUgNDUgMCAvIDQwJSkgbCBjIDQ1IC8gYWxwaGEpYCwgYGxhYig3MCUgMzEuODE5ODA1IDMx
LjgxOTgwNSAvIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUg
MCAvIDQwJSkgbCBjIDQ1ZGVnIC8gYWxwaGEpYCwgYGxhYig3MCUgMzEuODE5ODA1IDMxLjgxOTgw
NSAvIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMCAvIDQw
JSkgbCBjIGggLyAuMjUpYCwgYGxhYig3MCUgNDUgMCAvIDAuMjUpYCk7CisKKyAgICAvLyBUZXN0
aW5nIHBlcm11dGF0aW9uICh1bmNsZWFyIGlmIHRoaXMgaXMgYWxsb3dlZCBwZXItc3BlYywgd2Ug
ZGlzYWxsb3cgaXQpLgorICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAwKSBh
bHBoYSBjIGggLyBsKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBs
Y2goZnJvbSBsY2goNzAlIDQ1IDApIGFscGhhIGMgaCAvIGFscGhhKWAsIGByZ2JhKDAsIDAsIDAs
IDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDAgLyA0MCUpIGFs
cGhhIGMgaCAvIGwpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxj
aChmcm9tIGxjaCg3MCUgNDUgMCAvIDQwJSkgYWxwaGEgYyBoIC8gYWxwaGEpYCwgYHJnYmEoMCwg
MCwgMCwgMClgKTsKKworICAgIC8vIFRlc3RpbmcgaW52YWxpZCB2YWx1ZXMuCisgICAgdGVzdENv
bXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDApIGwgMTAlIGgpYCwgYHJnYmEoMCwgMCwgMCwg
MClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMCkgbCBjIDEwJSlg
LCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcw
JSA0NSAwKSAxMCBjIGgpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQo
YGxjaChmcm9tIGxjaCg3MCUgNDUgMCAvIDQwJSkgbCAxMCUgaClgLCBgcmdiYSgwLCAwLCAwLCAw
KWApOworICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAwIC8gNDAlKSBsIGMg
MTAlKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBs
Y2goNzAlIDQ1IDAgLyA0MCUpIDEwIGMgaClgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworCisgICAg
Ly8gVGVzdGluZyBpbnZhbGlkIGNvbXBvbmVudCBuYW1lcworICAgIHRlc3RDb21wdXRlZChgbGNo
KGZyb20gbGNoKDcwJSA0NSAwKSBsaWdodG5lc3MgYyBoKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7
CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDApIHggYyBoKWAsIGByZ2Jh
KDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDAp
IGwgZyBiKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7Cis8L3NjcmlwdD4KKyAgICAKKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420775</attachid>
            <date>2021-02-17 18:01:15 -0800</date>
            <delta_ts>2021-02-18 20:57:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221880-20210217180114.patch</filename>
            <type>text/plain</type>
            <size>83074</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzMwNTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAyLTE3ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIENTUyBD
b2xvciA1IFJlbGF0aXZlIENvbG9yIFN5bnRheAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxODgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2Vz
RXhwZXJpbWVudGFsLnlhbWw6CisgICAgICAgIEFkZCBuZXcgZXhwZXJpbWVudGFsIHByZWZlcmVu
Y2UgZm9yIENTUyBDb2xvciA1IFJlbGF0aXZlIENvbG9yIFN5bnRheAorICAgICAgICB3aGljaCBp
cyBvZmYgYnkgZGVmYXVsdC4KKwogMjAyMS0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIER1bXBSZW5kZXJUcmVlJ3MgY3JlYXRlV2ViVmlld0FuZE9mZnNj
cmVlbldpbmRvdygpIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIKSW5kZXg6IFNvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4
cGVyaW1lbnRhbC55YW1sCShyZXZpc2lvbiAyNzMwMTMpCisrKyBTb3VyY2UvV1RGL1NjcmlwdHMv
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAkod29ya2luZyBjb3B5
KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjMsNiAr
MTYzLDE4IEBAIENTU1BhaW50aW5nQVBJRW5hYmxlZDoKICAgICAgICJFTkFCTEUoRVhQRVJJTUVO
VEFMX0ZFQVRVUkVTKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpKSI6IHRydWUK
ICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAKK0NTU1JlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkOgor
ICB0eXBlOiBib29sCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiQ1NTIFJlbGF0aXZlIENvbG9yIFN5
bnRheCIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIHN1cHBvcnQgZm9yIENT
UyBSZWxhdGl2ZSBDb2xvciBTeW50YXggZGVmaW5lZCBpbiBDU1MgQ29sb3IgNSIKKyAgZGVmYXVs
dFZhbHVlOgorICAgIFdlYktpdExlZ2FjeToKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2Vi
S2l0OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJDb3JlOgorICAgICAgZGVmYXVsdDog
ZmFsc2UKKwogQ1NTVHlwZWRPTUVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5SZWFkYWJs
ZU5hbWU6ICJDU1MgVHlwZWQgT00iCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzMwMTMpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3NyBA
QAorMjAyMS0wMi0xNyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBDU1MgQ29sb3IgNSBSZWxhdGl2ZSBDb2xvciBT
eW50YXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MTg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZHMgaW5pdGlhbCBzdXBwb3J0IGZvciBDU1MgQ29sb3IgNSBSZWxhdGl2ZSBDb2xvciBTeW50YXgg
LSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLTUvI3JlbGF0aXZlLWNvbG9ycyAK
KworICAgICAgICBUaGlzIGZlYXR1cmUgaXMgb2ZmIGJ5IGRlZmF1bHQgYW5kIGNhbiBiZSBlbmFi
bGVkIHZpYSB0aGUgQ1NTUmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQKKyAgICAgICAgZXhwZXJp
bWVudGFsIHByZWZlcmVuY2UgZmxhZy4KKworICAgICAgICBBcyB0aGlzIGlzIHRoZSBpbml0aWFs
IGNvbW1pdCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LCBpdCBpcyBub3QgeWV0IGNvbXBsZXRlLgor
ICAgICAgICBUaGlzIGFkZHMgYmFzaWMgcGFyc2luZyBhbmQgcmVzb2x1dGlvbiBmb3IgcmVsYXRp
dmUgcmdiKCksIGhzbCgpLCBod2IoKSwgbGFiKCkKKyAgICAgICAgYW5kIGxjaCgpLCBidXQgZG9l
cyBub3QgeWV0IGltcGxlbWVudCBzdXBwb3J0IGZvciBjYWxjKCkgZnVuY3Rpb25zIHRoYXQgY2Fu
IG9wZXJhdGUKKyAgICAgICAgb24gdGhlIGNoYW5uZWwga2V5d29yZHMgbm9yIGRvZXMgaXQgc3Vw
cG9ydCB1c2luZyBzeXN0ZW0ga2V5d29yZCBjb2xvcnMgYXMgdGhlCisgICAgICAgIG9yaWdpbiBv
ZiB0aGUgcmVsYXRpdmUgY29sb3JzLgorCisgICAgICAgIFNvbWUgYWRkaXRpb25hbCBjYXZlYXRl
cyBhYm91dCB0aGlzIGluaXRpYWwgaW1wbGVtZW50YXRpb24gdGhhdCBuZWVkIGZ1cnRoZXIgCisg
ICAgICAgIGNsYXJpZmljYXRpb24gZnJvbSB0aGUgc3BlYyBlZGl0b3JzOiAKKworICAgICAgICAx
LiBDdXJyZW50bHksIHdlIG9ubHkgYWxsb3cgdXNpbmcgdGhlIGNoYW5uZWwgY29ycmVzcG9uZGlu
ZyB0byB0byB0aGUgcG9zaXRpb24gb2YgdGhhdCBjaGFubmVsCisgICAgICAgIGluIHRoZSByZXBs
YWNlbWVudCBzeW50YXguIFRoaXMgbWVhbnMgeW91IGNhbid0IGRvOgorICAgICAgICAKKyAgICAg
ICAgICAgIHJnYihmcm9tIHJlZCBnIHIgYikKKyAgICAgICAgCisgICAgICAgIHRvIHBlcm11dGUg
dGhlIGNoYW5uZWxzLgorCisgICAgICAgIDIuIEZvciByZ2IoKSwgd2hpY2ggYWxsb3dzIHIsIGcs
IGFuZCBiIHRvIGJlIGFsbCBudW1iZXJzIG9yIGFsbCBwZXJjZW50YWdlcywKKyAgICAgICAgd2Ug
Y3VycmVudGx5IGRvbid0IGFzc3VtZSBlaXRoZXIgbnVtYmVyIG9yIHBlcmNlbnRhZ2UsIGFuZCB3
YWl0IHVudGlsIHNvbWUKKyAgICAgICAgY29uc3RhbnQgdmFsdWUgaXMgcHJvdmlkZWQgdG8gc2V0
IHRoZSB0eXBlLiBUaGF0IG1lYW5zIHRoYXQ6CisgICAgICAgIAorICAgICAgICAgICAgcmdiKGZy
b20gcmVkIHIgZyAxMCkKKworICAgICAgICB3aWxsIHRyZWF0IHIsIGFuZyBnIGFzIG51bWJlcnMs
IGJ1dDoKKyAgICAgICAgCisgICAgICAgICAgICByZ2IoZnJvbSByZWQgciBnIDEwJSkKKworICAg
ICAgICB3aWxsIHRyZWF0IHIgYW5kIGcgYXMgcGVyY2VudGFnZXMuIFRoaXMgaXMgbm90IGN1cnJl
bnRseSBvYnNlcnZhYmxlIG90aGVyIHRoYW4KKyAgICAgICAgdGhhdCB3ZSByZWplY3Qgc29tZXRo
aW5nIHRoYXQgbWl4ZXMgdGhlIHR3bywgc3VjaCBhcworICAgICAgICAKKyAgICAgICAgICAgIHJn
Yihmcm9tIHJlZCByIDEwIDEwJSkKKworICAgICAgICBidXQgd2lsbCBiZSBmdWxseSBvYnNlcnZh
YmxlIG9uY2UgcHJvY2Vzc2luZyB0aGUgY2hhbm5lbHMgdmlhIGNhbGMoKSBpcyBzdXBwb3J0ZWQu
CisKKyAgICAgICAgVGVzdDogZmFzdC9jc3MvcGFyc2luZy1yZWxhdGl2ZS1jb2xvci1zeW50YXgu
aHRtbAorCisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAgICogY3Nz
L3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9y
PT0pOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyQ29udGV4dEhhc2g6Omhhc2gpOgorICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZU9yaWdpbkNvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZU9wdGlvbmFsQWxwaGFPcklkZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUh1
ZU9ySWRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpj
b25zdW1lTnVtYmVyT3JJZGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnM6OmNvbnN1bWVQZXJjZW50T3JJZGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnM6OmV4dHJhY3RDaGFubmVsVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpyZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5u
ZWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1l
UmVsYXRpdmVSR0JDb21wb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzOjpwYXJzZVJlbGF0aXZlUkdCUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlUkdCUGFyYW1ldGVycyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlUmVsYXRpdmVIU0xQYXJh
bWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6cGFy
c2VIU0xQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVs
cGVyczo6bm9ybWFsaXplV2hpdGVuZXNzQmxhY2tuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Byb3BlcnR5UGFyc2VySGVscGVyczo6cGFyc2VSZWxhdGl2ZUhXQlBhcmFtZXRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZUhXQlBhcmFtZXRl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZVJl
bGF0aXZlTGFiUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnM6OnBhcnNlTGFiUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlUmVsYXRpdmVMQ0hQYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6cGFyc2VMQ0hQYXJhbWV0ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6cGFyc2VDb2xvckZ1
bmN0aW9uKToKKwogMjAyMS0wMi0xNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gQWRkIGFuIG92ZXJmbG93IGJ1dHRvbiB0aGF0J3Mgc2hvd24gd2hl
biBjb250cm9scyBhcmUgZHJvcHBlZCBzbyB0aGF0IGl0J3Mgc3RpbGwgcG9zc2libGUgdG8gdHJp
Z2dlciB0aGUgZHJvcHBlZCBidXR0b24ncyBhY3Rpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVLZXl3b3Jkcy5pbgkocmV2aXNpb24gMjczMDEzKQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyNjksNiArMTI2OSwy
NSBAQCBsYWIKIGxjaAogLy9jb2xvcgogCisvLyByZWxhdGl2ZSBjb2xvciBpZGVudGlmaWVycwor
Ly8gZnJvbQorcgorZworYgoraAorcworbAorLy8gaAordworLy8gYgorLy8gbAorYQorLy8gYgor
Ly8gbAorYworLy8gaAorLy8gYWxwaGEKKwogLy8gdHJhbnNmb3JtCiBtYXRyaXgKIG1hdHJpeDNk
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5j
cHAJKHJldmlzaW9uIDI3MzAxMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAgQ1NTUGFyc2Vy
Q29udGV4dDo6Q1NTUGFyc2VyQ29udGV4dChjb25zdAogICAgICwgbGVnYWN5T3ZlcmZsb3dTY3Jv
bGxpbmdUb3VjaEVuYWJsZWQgeyBzaG91bGRFbmFibGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1Rv
dWNoKGRvY3VtZW50KSB9CiAjZW5kaWYKICAgICAsIG92ZXJzY3JvbGxCZWhhdmlvckVuYWJsZWQg
eyBkb2N1bWVudC5zZXR0aW5ncygpLm92ZXJzY3JvbGxCZWhhdmlvckVuYWJsZWQoKSB9CisgICAg
LCByZWxhdGl2ZUNvbG9yU3ludGF4RW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzUmVs
YXRpdmVDb2xvclN5bnRheEVuYWJsZWQoKSB9CiAgICAgLCBzY3JvbGxCZWhhdmlvckVuYWJsZWQg
eyBkb2N1bWVudC5zZXR0aW5ncygpLkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQoKSB9
CiAgICAgLCBzcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQgeyBkb2N1bWVudC5zZXR0aW5ncygp
LnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZCgpIH0KICNpZiBFTkFCTEUoVEVYVF9BVVRPU0la
SU5HKQpAQCAtMTEzLDYgKzExNCw3IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NQYXJzZXJD
b250ZXh0JiAKICAgICAgICAgJiYgYS5sZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoRW5hYmxl
ZCA9PSBiLmxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hFbmFibGVkCiAjZW5kaWYKICAgICAg
ICAgJiYgYS5vdmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVkID09IGIub3ZlcnNjcm9sbEJlaGF2aW9y
RW5hYmxlZAorICAgICAgICAmJiBhLnJlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkID09IGIucmVs
YXRpdmVDb2xvclN5bnRheEVuYWJsZWQKICAgICAgICAgJiYgYS5zY3JvbGxCZWhhdmlvckVuYWJs
ZWQgPT0gYi5zY3JvbGxCZWhhdmlvckVuYWJsZWQKICAgICAgICAgJiYgYS5zcHJpbmdUaW1pbmdG
dW5jdGlvbkVuYWJsZWQgPT0gYi5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQKICNpZiBFTkFC
TEUoVEVYVF9BVVRPU0laSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJDb250ZXh0LmgJKHJldmlzaW9uIDI3MzAxMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3
IEBAIHB1YmxpYzoKICAgICBib29sIGxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hFbmFibGVk
IHsgZmFsc2UgfTsKICNlbmRpZgogICAgIGJvb2wgb3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZCB7
IGZhbHNlIH07CisgICAgYm9vbCByZWxhdGl2ZUNvbG9yU3ludGF4RW5hYmxlZCB7IGZhbHNlIH07
CiAgICAgYm9vbCBzY3JvbGxCZWhhdmlvckVuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgc3By
aW5nVGltaW5nRnVuY3Rpb25FbmFibGVkIHsgZmFsc2UgfTsKICNpZiBFTkFCTEUoVEVYVF9BVVRP
U0laSU5HKQpAQCAtMTAyLDMwICsxMDMsMzQgQEAgc3RydWN0IENTU1BhcnNlckNvbnRleHRIYXNo
IHsKICAgICAgICAgaWYgKCFrZXkuY2hhcnNldC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBoYXNo
IF49IFN0cmluZ0hhc2g6Omhhc2goa2V5LmNoYXJzZXQpOwogICAgICAgICB1bnNpZ25lZCBiaXRz
ID0ga2V5LmlzSFRNTERvY3VtZW50ICAgICAgICAgICAgICAgICAgPDwgMAotI2lmIEVOQUJMRShU
RVhUX0FVVE9TSVpJTkcpCi0gICAgICAgICAgICAmIGtleS50ZXh0QXV0b3NpemluZ0VuYWJsZWQg
ICAgICAgICAgICAgICAgICAgICA8PCAxCi0jZW5kaWYKKyAgICAgICAgICAgICYga2V5Lmhhc0Rv
Y3VtZW50U2VjdXJpdHlPcmlnaW4gICAgICAgICAgICAgICAgIDw8IDEKKyAgICAgICAgICAgICYg
a2V5LmlzQ29udGVudE9wYXF1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDIKKyAgICAg
ICAgICAgICYga2V5LnVzZVN5c3RlbUFwcGVhcmFuY2UgICAgICAgICAgICAgICAgICAgICAgIDw8
IDMKKyAgICAgICAgICAgICYga2V5LmFzcGVjdFJhdGlvRW5hYmxlZCAgICAgICAgICAgICAgICAg
ICAgICAgIDw8IDQKKyAgICAgICAgICAgICYga2V5LmNvbG9yRmlsdGVyRW5hYmxlZCAgICAgICAg
ICAgICAgICAgICAgICAgIDw8IDUKKyAgICAgICAgICAgICYga2V5LmNvbnN0YW50UHJvcGVydGll
c0VuYWJsZWQgICAgICAgICAgICAgICAgIDw8IDYKKyAgICAgICAgICAgICYga2V5LmRlZmVycmVk
Q1NTUGFyc2VyRW5hYmxlZCAgICAgICAgICAgICAgICAgIDw8IDcKKyAgICAgICAgICAgICYga2V5
LmVuZm9yY2VzQ1NTTUlNRVR5cGVJbk5vUXVpcmtzTW9kZSAgICAgICAgIDw8IDgKKyAgICAgICAg
ICAgICYga2V5LmluZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZCAgICAgIDw8IDkK
ICNpZiBFTkFCTEUoT1ZFUkZMT1dfU0NST0xMSU5HX1RPVUNIKQotICAgICAgICAgICAgJiBrZXku
bGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaEVuYWJsZWQgICAgICAgPDwgMgorICAgICAgICAg
ICAgJiBrZXkubGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaEVuYWJsZWQgICAgICAgPDwgMTAK
ICNlbmRpZgotICAgICAgICAgICAgJiBrZXkuZW5mb3JjZXNDU1NNSU1FVHlwZUluTm9RdWlya3NN
b2RlICAgICAgICAgPDwgMwotICAgICAgICAgICAgJiBrZXkudXNlTGVnYWN5QmFja2dyb3VuZFNp
emVTaG9ydGhhbmRCZWhhdmlvciAgPDwgNAotICAgICAgICAgICAgJiBrZXkuc3ByaW5nVGltaW5n
RnVuY3Rpb25FbmFibGVkICAgICAgICAgICAgICAgPDwgNQotICAgICAgICAgICAgJiBrZXkuY29u
c3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCAgICAgICAgICAgICAgICAgPDwgNgotICAgICAgICAgICAg
JiBrZXkuY29sb3JGaWx0ZXJFbmFibGVkICAgICAgICAgICAgICAgICAgICAgICAgPDwgNwotICAg
ICAgICAgICAgJiBrZXkuZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkICAgICAgICAgICAgICAgICAg
PDwgOAotICAgICAgICAgICAgJiBrZXkuaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiAgICAgICAg
ICAgICAgICAgPDwgOQotICAgICAgICAgICAgJiBrZXkudXNlU3lzdGVtQXBwZWFyYW5jZSAgICAg
ICAgICAgICAgICAgICAgICAgPDwgMTAKLSNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQot
ICAgICAgICAgICAgJiBrZXkuYXR0YWNobWVudEVuYWJsZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgMTEKKyAgICAgICAgICAgICYga2V5Lm92ZXJzY3JvbGxCZWhhdmlvckVuYWJsZWQgICAg
ICAgICAgICAgICAgIDw8IDExCisgICAgICAgICAgICAmIGtleS5yZWxhdGl2ZUNvbG9yU3ludGF4
RW5hYmxlZCAgICAgICAgICAgICAgICA8PCAxMgorICAgICAgICAgICAgJiBrZXkuc2Nyb2xsQmVo
YXZpb3JFbmFibGVkICAgICAgICAgICAgICAgICAgICAgPDwgMTMKKyAgICAgICAgICAgICYga2V5
LnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZCAgICAgICAgICAgICAgIDw8IDE0CisjaWYgRU5B
QkxFKFRFWFRfQVVUT1NJWklORykKKyAgICAgICAgICAgICYga2V5LnRleHRBdXRvc2l6aW5nRW5h
YmxlZCAgICAgICAgICAgICAgICAgICAgIDw8IDE1CiAjZW5kaWYKLSAgICAgICAgICAgICYga2V5
LnNjcm9sbEJlaGF2aW9yRW5hYmxlZCAgICAgICAgICAgICAgICAgICAgIDw8IDEyCi0gICAgICAg
ICAgICAmIGtleS5pbmRpdmlkdWFsVHJhbnNmb3JtUHJvcGVydGllc0VuYWJsZWQgICAgICA8PCAx
MwotICAgICAgICAgICAgJiBrZXkub3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZCAgICAgICAgICAg
ICAgICAgPDwgMTQKICNpZiBFTkFCTEUoQ1NTX1RSQU5TRk9STV9TVFlMRV9PUFRJTUlaRURfM0Qp
Ci0gICAgICAgICAgICAmIGtleS50cmFuc2Zvcm1TdHlsZU9wdGltaXplZDNERW5hYmxlZCAgICAg
ICAgICA8PCAxNQorICAgICAgICAgICAgJiBrZXkudHJhbnNmb3JtU3R5bGVPcHRpbWl6ZWQzREVu
YWJsZWQgICAgICAgICAgPDwgMTYKKyNlbmRpZgorICAgICAgICAgICAgJiBrZXkudXNlTGVnYWN5
QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciAgPDwgMTcKKyAgICAgICAgICAgICYga2V5
LmZvY3VzVmlzaWJsZUVuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgIDw8IDE4CisjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICAgICAgICAgICYga2V5LmF0dGFjaG1lbnRFbmFi
bGVkICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDE5CiAjZW5kaWYKLSAgICAgICAgICAgICYg
a2V5Lm1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDE2OyAvLyBL
ZWVwIHRoaXMgbGFzdC4KKyAgICAgICAgICAgICYga2V5Lm1vZGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IDIwOyAvLyBLZWVwIHRoaXMgbGFzdC4KICAgICAgICAgaGFz
aCBePSBXVEY6OmludEhhc2goYml0cyk7CiAgICAgICAgIHJldHVybiBoYXNoOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VySGVscGVycy5jcHAJKHJldmlzaW9uIDI3MzAxMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjkw
LDYgKzY5MCwyNyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVVcmwoQ1NTCiAg
ICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUodXJsLnRvU3Ry
aW5nKCksIENTU1VuaXRUeXBlOjpDU1NfVVJJKTsKIH0KIAorc3RhdGljIENvbG9yIGNvbnN1bWVP
cmlnaW5Db2xvcihDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250
ZXh0JiBjb250ZXh0KQoreworICAgIGF1dG8gdmFsdWUgPSBjb25zdW1lQ29sb3IoYXJncywgY29u
dGV4dCk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmICh2
YWx1ZS0+aXNSR0JDb2xvcigpKQorICAgICAgICByZXR1cm4gdmFsdWUtPmNvbG9yKCk7CisKKyAg
ICBBU1NFUlQodmFsdWUtPmlzVmFsdWVJRCgpKTsKKyAgICBhdXRvIGtleXdvcmQgPSB2YWx1ZS0+
dmFsdWVJRCgpOworCisgICAgLy8gRklYTUU6IFdlIGRvbid0IGhhdmUgZW5vdWdoIGNvbnRleHQg
aW4gdGhlIHBhcnNlciB0byByZXNvbHZpbmcgYSBzeXN0ZW0ga2V5d29yZAorICAgIC8vIGNvcnJl
Y3RseS4gV2Ugc2hvdWxkIHBhY2thZ2UgdXAgdGhlIHJlbGF0aXZlIGNvbG9yIHBhcmFtZXRlcnMg
YW5kIHJlc29sdmUgdGhlCisgICAgLy8gd2hvbGUgdGhpbmcgYXQgdGhlIGFwcHJvcHJpYXRlIHRp
bWUgd2hlbiB0aGUgb3JpZ2luIGNvbG9yIGlzIGEgc3lzdGVtIGtleXdvcmQuCisgICAgaWYgKFN0
eWxlQ29sb3I6OmlzU3lzdGVtQ29sb3Ioa2V5d29yZCkpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICByZXR1cm4gU3R5bGVDb2xvcjo6Y29sb3JGcm9tS2V5d29yZChrZXl3b3JkLCB7IH0pOwor
fQorCiBzdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lT3B0aW9uYWxBbHBoYShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1ZGluZ1do
aXRlc3BhY2UocmFuZ2UpKQpAQCAtNzAxLDYgKzcyMiwxNyBAQCBzdGF0aWMgT3B0aW9uYWw8ZG91
YmxlPiBjb25zdW1lT3B0aW9uYWxBCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAordGVt
cGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFu
dDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lT3B0aW9uYWxBbHBoYU9ySWRlbnQoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCit7CisgICAgaWYgKGF1dG8gYWxwaGEgPSBjb25zdW1lT3B0
aW9uYWxBbHBoYShyYW5nZSkpCisgICAgICAgIHJldHVybiB7ICphbHBoYSB9OworCisgICAgaWYg
KGF1dG8gaWRlbnQgPSBjb25zdW1lSWRlbnRSYXc8YWxsb3dlZElkZW50cy4uLj4ocmFuZ2UpKQor
ICAgICAgICByZXR1cm4geyAqaWRlbnQgfTsKKworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9
CisKIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVIdWUoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKGF1
dG8gYW5nbGUgPSBjb25zdW1lQW5nbGVSYXcocmFuZ2UsIGNvbnRleHQubW9kZSwgVW5pdGxlc3NR
dWlyazo6Rm9yYmlkLCBVbml0bGVzc1plcm9RdWlyazo6Rm9yYmlkKSkKQEAgLTcwOSwxMSArNzQx
LDgwIEBAIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVIdWUoQ1NTUGEKICAgICByZXR1
cm4gY29uc3VtZU51bWJlclJhdyhyYW5nZSk7CiB9CiAKK3RlbXBsYXRlPENTU1ZhbHVlSUQuLi4g
YWxsb3dlZElkZW50cz4gc3RhdGljIE9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlE
Pj4gY29uc3VtZUh1ZU9ySWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENT
U1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKGF1dG8gaHVlID0gY29uc3VtZUh1
ZShyYW5nZSwgY29udGV4dCkpCisgICAgICAgIHJldHVybiB7ICpodWUgfTsKKworICAgIGlmIChh
dXRvIGlkZW50ID0gY29uc3VtZUlkZW50UmF3PGFsbG93ZWRJZGVudHMuLi4+KHJhbmdlKSkKKyAg
ICAgICAgcmV0dXJuIHsgKmlkZW50IH07CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQor
CiBzdGF0aWMgZG91YmxlIG5vcm1hbGl6ZUh1ZShkb3VibGUgaHVlKQogewogICAgIHJldHVybiBz
dGQ6OmZtb2Qoc3RkOjpmbW9kKGh1ZSwgMzYwLjApICsgMzYwLjAsIDM2MC4wKTsKIH0KIAordGVt
cGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFu
dDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lTnVtYmVyT3JJZGVudChDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKK3sKKyAgICBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1lTnVtYmVyUmF3
KHJhbmdlKSkKKyAgICAgICAgcmV0dXJuIHsgKm51bWJlciB9OworCisgICAgaWYgKGF1dG8gaWRl
bnQgPSBjb25zdW1lSWRlbnRSYXc8YWxsb3dlZElkZW50cy4uLj4ocmFuZ2UpKQorICAgICAgICBy
ZXR1cm4geyAqaWRlbnQgfTsKKworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3RlbXBs
YXRlPENTU1ZhbHVlSUQuLi4gYWxsb3dlZElkZW50cz4gc3RhdGljIE9wdGlvbmFsPFZhcmlhbnQ8
ZG91YmxlLCBDU1NWYWx1ZUlEPj4gY29uc3VtZVBlcmNlbnRPcklkZW50KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQoreworICAgIGlmIChhdXRvIHBlcmNlbnQgPSBjb25zdW1lUGVyY2VudFJh
dyhyYW5nZSkpCisgICAgICAgIHJldHVybiB7ICpwZXJjZW50IH07CisKKyAgICBpZiAoYXV0byBp
ZGVudCA9IGNvbnN1bWVJZGVudFJhdzxhbGxvd2VkSWRlbnRzLi4uPihyYW5nZSkpCisgICAgICAg
IHJldHVybiB7ICppZGVudCB9OworCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordGVt
cGxhdGU8Q1NTVmFsdWVJRCBDMSwgQ1NTVmFsdWVJRCBDMiwgQ1NTVmFsdWVJRCBDMywgQ1NTVmFs
dWVJRCBBbHBoYUNoYW5uZWwsIHR5cGVuYW1lIENvbG9yVHlwZT4gc3RhdGljIGF1dG8gZXh0cmFj
dENoYW5uZWxWYWx1ZShDU1NWYWx1ZUlEIGNoYW5uZWwsIGNvbnN0IENvbG9yVHlwZSYgb3JpZ2lu
Q29sb3IpIC0+IHR5cGVuYW1lIENvbG9yVHlwZTo6Q29tcG9uZW50VHlwZQoreworICAgIGF1dG8g
Y29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKG9yaWdpbkNvbG9yKTsKKyAgICBzd2l0Y2gg
KGNoYW5uZWwpIHsKKyAgICBjYXNlIEMxOgorICAgICAgICByZXR1cm4gY29tcG9uZW50c1swXTsK
KyAgICBjYXNlIEMyOgorICAgICAgICByZXR1cm4gY29tcG9uZW50c1sxXTsKKyAgICBjYXNlIEMz
OgorICAgICAgICByZXR1cm4gY29tcG9uZW50c1syXTsKKyAgICBjYXNlIEFscGhhQ2hhbm5lbDoK
KyAgICAgICAgcmV0dXJuIGNvbXBvbmVudHNbM107CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3RlbXBsYXRl
PENTU1ZhbHVlSUQgQzEsIENTU1ZhbHVlSUQgQzIsIENTU1ZhbHVlSUQgQzMsIENTU1ZhbHVlSUQg
QWxwaGFDaGFubmVsLCB0eXBlbmFtZSBDb2xvclR5cGUsIHR5cGVuYW1lIFZhbHVlVHJhbnNmb3Jt
ZXI+IHN0YXRpYyBkZWNsdHlwZShhdXRvKSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWwoY29u
c3QgVmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+JiBwYXJzZWRDaGFubmVsLCBjb25zdCBDb2xv
clR5cGUmIG9yaWdpbkNvbG9yLCBWYWx1ZVRyYW5zZm9ybWVyJiYgdmFsdWVUcmFuc2Zvcm1lcikK
K3sKKyAgICByZXR1cm4gc3dpdGNoT24ocGFyc2VkQ2hhbm5lbCwKKyAgICAgICAgWyZdIChkb3Vi
bGUgdmFsdWUpIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZVRyYW5zZm9ybWVyKHZhbHVlKTsK
KyAgICAgICAgfSwKKyAgICAgICAgWyZdIChDU1NWYWx1ZUlEIGNoYW5uZWwpIHsKKyAgICAgICAg
ICAgIHJldHVybiBleHRyYWN0Q2hhbm5lbFZhbHVlPEMxLCBDMiwgQzMsIEFscGhhQ2hhbm5lbD4o
Y2hhbm5lbCwgb3JpZ2luQ29sb3IpOworICAgICAgICB9CisgICAgKTsKK30KKwordGVtcGxhdGU8
Q1NTVmFsdWVJRCBDMSwgQ1NTVmFsdWVJRCBDMiwgQ1NTVmFsdWVJRCBDMywgQ1NTVmFsdWVJRCBB
bHBoYUNoYW5uZWwsIHR5cGVuYW1lIENvbG9yVHlwZT4gc3RhdGljIGRlY2x0eXBlKGF1dG8pIHJl
c29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbChjb25zdCBWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJ
RD4mIHBhcnNlZENoYW5uZWwsIGNvbnN0IENvbG9yVHlwZSYgb3JpZ2luQ29sb3IpCit7CisgICAg
cmV0dXJuIHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDMSwgQzIsIEMzLCBBbHBoYUNoYW5u
ZWw+KHBhcnNlZENoYW5uZWwsIG9yaWdpbkNvbG9yLCBbXShhdXRvIHZhbHVlKSB7IHJldHVybiB2
YWx1ZTsgfSk7Cit9CisKIGVudW0gY2xhc3MgUkdCQ29tcG9uZW50VHlwZSB7IE51bWJlciwgUGVy
Y2VudGFnZSB9OwogCiBzdGF0aWMgdWludDhfdCBjbGFtcFJHQkNvbXBvbmVudChkb3VibGUgdmFs
dWUsIFJHQkNvbXBvbmVudFR5cGUgY29tcG9uZW50VHlwZSkKQEAgLTc0OCwxMSArODQ5LDExMCBA
QCBzdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lUkdCT3JIU0xPCiAgICAgcmV0dXJuIGNv
bnN1bWVOdW1iZXJPclBlcmNlbnREaXZpZGVkQnkxMDBSYXcoYXJncyk7CiB9CiAKLXN0YXRpYyBD
b2xvciBwYXJzZVJHQlBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0
IENTU1BhcnNlckNvbnRleHQmKQorc3RydWN0IFJlbGF0aXZlUkdCQ29tcG9uZW50IHsKKyAgICBW
YXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJRD4gdmFsdWU7CisgICAgT3B0aW9uYWw8UkdCQ29tcG9u
ZW50VHlwZT4gdHlwZTsKK307CisKK3RlbXBsYXRlPENTU1ZhbHVlSUQgQz4gc3RhdGljIE9wdGlv
bmFsPFJlbGF0aXZlUkdCQ29tcG9uZW50PiBjb25zdW1lUmVsYXRpdmVSR0JDb21wb25lbnQoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgYXJncywgT3B0aW9uYWw8UkdCQ29tcG9uZW50VHlwZT4gY29tcG9u
ZW50VHlwZSkKK3sKKyAgICBpZiAoIWNvbXBvbmVudFR5cGUpIHsKKyAgICAgICAgaWYgKGF1dG8g
bnVtYmVyID0gY29uc3VtZU51bWJlclJhdyhhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBSZWxh
dGl2ZVJHQkNvbXBvbmVudCB7ICpudW1iZXIsIFJHQkNvbXBvbmVudFR5cGU6Ok51bWJlciB9Owor
ICAgICAgICBpZiAoYXV0byBwZXJjZW50ID0gY29uc3VtZVBlcmNlbnRSYXcoYXJncykpCisgICAg
ICAgICAgICByZXR1cm4gUmVsYXRpdmVSR0JDb21wb25lbnQgeyAqcGVyY2VudCwgUkdCQ29tcG9u
ZW50VHlwZTo6UGVyY2VudGFnZSB9OworICAgICAgICBpZiAoYXV0byBjaGFubmVsID0gY29uc3Vt
ZUlkZW50UmF3PEM+KGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIFJlbGF0aXZlUkdCQ29tcG9u
ZW50IHsgKmNoYW5uZWwsIFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIH0KKworICAgIHN3aXRjaCAoKmNvbXBvbmVudFR5cGUpIHsKKyAgICBjYXNlIFJH
QkNvbXBvbmVudFR5cGU6Ok51bWJlcjogeworICAgICAgICBpZiAoYXV0byBudW1iZXIgPSBjb25z
dW1lTnVtYmVyUmF3KGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIFJlbGF0aXZlUkdCQ29tcG9u
ZW50IHsgKm51bWJlciwgUkdCQ29tcG9uZW50VHlwZTo6TnVtYmVyIH07CisgICAgICAgIGlmIChh
dXRvIGNoYW5uZWwgPSBjb25zdW1lSWRlbnRSYXc8Qz4oYXJncykpCisgICAgICAgICAgICByZXR1
cm4gUmVsYXRpdmVSR0JDb21wb25lbnQgeyAqY2hhbm5lbCwgUkdCQ29tcG9uZW50VHlwZTo6TnVt
YmVyIH07CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorICAgIGNhc2UgUkdC
Q29tcG9uZW50VHlwZTo6UGVyY2VudGFnZTogeworICAgICAgICBpZiAoYXV0byBwZXJjZW50ID0g
Y29uc3VtZVBlcmNlbnRSYXcoYXJncykpCisgICAgICAgICAgICByZXR1cm4gUmVsYXRpdmVSR0JD
b21wb25lbnQgeyAqcGVyY2VudCwgUkdCQ29tcG9uZW50VHlwZTo6UGVyY2VudGFnZSB9OworICAg
ICAgICBpZiAoYXV0byBjaGFubmVsID0gY29uc3VtZUlkZW50UmF3PEM+KGFyZ3MpKQorICAgICAg
ICAgICAgcmV0dXJuIFJlbGF0aXZlUkdCQ29tcG9uZW50IHsgKmNoYW5uZWwsIFJHQkNvbXBvbmVu
dFR5cGU6OlBlcmNlbnRhZ2UgfTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9
CisgICAgfQorfQorCitzdGF0aWMgQ29sb3IgcGFyc2VSZWxhdGl2ZVJHQlBhcmFtZXRlcnMoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkK
K3sKKyAgICBBU1NFUlQoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pOworICAgIGNv
bnN1bWVJZGVudFJhdyhhcmdzKTsKKworICAgIGF1dG8gb3JpZ2luQ29sb3IgPSBjb25zdW1lT3Jp
Z2luQ29sb3IoYXJncywgY29udGV4dCk7CisgICAgaWYgKCFvcmlnaW5Db2xvci5pc1ZhbGlkKCkp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBPcHRpb25hbDxSR0JDb21wb25lbnRUeXBlPiBj
b21wb25lbnRUeXBlOworICAgIGF1dG8gcmVkUmVzdWx0ID0gY29uc3VtZVJlbGF0aXZlUkdCQ29t
cG9uZW50PENTU1ZhbHVlUj4oYXJncywgY29tcG9uZW50VHlwZSk7CisgICAgaWYgKCFyZWRSZXN1
bHQpCisgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byByZWQgPSByZWRSZXN1bHQtPnZhbHVl
OworICAgIGNvbXBvbmVudFR5cGUgPSByZWRSZXN1bHQtPnR5cGU7CisKKyAgICBhdXRvIGdyZWVu
UmVzdWx0ID0gY29uc3VtZVJlbGF0aXZlUkdCQ29tcG9uZW50PENTU1ZhbHVlRz4oYXJncywgY29t
cG9uZW50VHlwZSk7CisgICAgaWYgKCFncmVlblJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICBhdXRvIGdyZWVuID0gZ3JlZW5SZXN1bHQtPnZhbHVlOworICAgIGNvbXBvbmVudFR5cGUg
PSBncmVlblJlc3VsdC0+dHlwZTsKKworICAgIGF1dG8gYmx1ZVJlc3VsdCA9IGNvbnN1bWVSZWxh
dGl2ZVJHQkNvbXBvbmVudDxDU1NWYWx1ZUI+KGFyZ3MsIGNvbXBvbmVudFR5cGUpOworICAgIGlm
ICghYmx1ZVJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIGJsdWUgPSBibHVl
UmVzdWx0LT52YWx1ZTsKKyAgICBjb21wb25lbnRUeXBlID0gYmx1ZVJlc3VsdC0+dHlwZTsKKwor
ICAgIGF1dG8gYWxwaGEgPSBjb25zdW1lT3B0aW9uYWxBbHBoYU9ySWRlbnQ8Q1NTVmFsdWVBbHBo
YT4oYXJncyk7CisgICAgaWYgKCFhbHBoYSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlm
ICghYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgLy8gQWZ0ZXIgcGFy
c2luZywgY29udmVydCBpZGVudGlmaWVycyB0byB2YWx1ZXMgZnJvbSB0aGUgb3JpZ2luIGNvbG9y
LgorCisgICAgLy8gRklYTUU6IERvIHdlIHdhbnQgdG8gYmVpbmcgZG9pbmcgdGhpcyBpbiB1aW50
OF90IHZhbHVlcz8gT3Igc2hvdWxkIHdlIHVzZSBoaWdoZXIgcHJlY2lzaW9uCisgICAgLy8gYW5k
IGNsYW1wIGF0IHRoZSBlbmQuIEl0IHdvbid0IG1ha2UgYSBkaWZmZXJlbmNlIHVudGlsIHdlIHN1
cHBvcnQgY2FsY3VsYXRpb25zIG9uIHRoZSBvcmlnaW5zCisgICAgLy8gY29tcG9uZW50cy4KKyAg
ICBhdXRvIG9yaWdpbkNvbG9yQXNTUkdCID0gb3JpZ2luQ29sb3IudG9TUkdCQUxvc3N5PHVpbnQ4
X3Q+KCk7CisKKyAgICBhdXRvIHJlc29sdmVkQ29tcG9uZW50VHlwZSA9IGNvbXBvbmVudFR5cGUu
dmFsdWVPcihSR0JDb21wb25lbnRUeXBlOjpQZXJjZW50YWdlKTsKKyAgICBhdXRvIGNoYW5uZWxS
ZXNvbHZlciA9IFtyZXNvbHZlZENvbXBvbmVudFR5cGVdKGF1dG8gdmFsdWUpIHsKKyAgICAgICAg
cmV0dXJuIGNsYW1wUkdCQ29tcG9uZW50KHZhbHVlLCByZXNvbHZlZENvbXBvbmVudFR5cGUpOwor
ICAgIH07CisKKyAgICBhdXRvIHJlc29sdmVkUmVkID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFu
bmVsPENTU1ZhbHVlUiwgQ1NTVmFsdWVHLCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KHJlZCwg
b3JpZ2luQ29sb3JBc1NSR0IsIGNoYW5uZWxSZXNvbHZlcik7CisgICAgYXV0byByZXNvbHZlZEdy
ZWVuID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlUiwgQ1NTVmFsdWVHLCBD
U1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KGdyZWVuLCBvcmlnaW5Db2xvckFzU1JHQiwgY2hhbm5l
bFJlc29sdmVyKTsKKyAgICBhdXRvIHJlc29sdmVkQmx1ZSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9y
Q2hhbm5lbDxDU1NWYWx1ZVIsIENTU1ZhbHVlRywgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPihi
bHVlLCBvcmlnaW5Db2xvckFzU1JHQiwgY2hhbm5lbFJlc29sdmVyKTsKKyAgICBhdXRvIHJlc29s
dmVkQWxwaGEgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVSLCBDU1NWYWx1
ZUcsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oKmFscGhhLCBvcmlnaW5Db2xvckFzU1JHQiwg
W10oYXV0byB2YWx1ZSkgeworICAgICAgICByZXR1cm4gY29udmVydEZsb2F0QWxwaGFUbzx1aW50
OF90Pih2YWx1ZSk7CisgICAgfSk7CisKKyAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyByZXNv
bHZlZFJlZCwgcmVzb2x2ZWRHcmVlbiwgcmVzb2x2ZWRCbHVlLCByZXNvbHZlZEFscGhhIH07Cit9
CisKK2VudW0gY2xhc3MgUkdCRnVuY3Rpb25Nb2RlIHsgUkdCLCBSR0JBIH07CisKK3RlbXBsYXRl
PFJHQkZ1bmN0aW9uTW9kZSBNb2RlPiBzdGF0aWMgQ29sb3IgcGFyc2VSR0JQYXJhbWV0ZXJzKENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0
KQogewogICAgIEFTU0VSVChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlUmdi
IHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVSZ2JhKTsKICAgICBhdXRv
IGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOwogCisgICAgaWYgY29uc3RleHByIChNb2Rl
ID09IFJHQkZ1bmN0aW9uTW9kZTo6UkdCKSB7CisgICAgICAgIGlmIChjb250ZXh0LnJlbGF0aXZl
Q29sb3JTeW50YXhFbmFibGVkICYmIGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVGcm9tKQor
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlUmVsYXRpdmVSR0JQYXJhbWV0ZXJzKGFyZ3MsIGNvbnRl
eHQpOworICAgIH0KKwogICAgIHN0cnVjdCBJbml0aWFsQ29tcG9uZW50IHsKICAgICAgICAgZG91
YmxlIHZhbHVlOwogICAgICAgICBSR0JDb21wb25lbnRUeXBlIHR5cGU7CkBAIC04MTEsMTEgKzEw
MTEsNjQgQEAgc3RhdGljIENvbG9yIHBhcnNlUkdCUGFyYW1ldGVycyhDU1NQYXJzZQogICAgIHJl
dHVybiBTUkdCQTx1aW50OF90PiB7IG5vcm1hbGl6ZWRSZWQsIG5vcm1hbGl6ZWRHcmVlbiwgbm9y
bWFsaXplZEJsdWUsIG5vcm1hbGl6ZWRBbHBoYSB9OwogfQogCi1zdGF0aWMgQ29sb3IgcGFyc2VI
U0xQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJD
b250ZXh0JiBjb250ZXh0KQorc3RhdGljIENvbG9yIHBhcnNlUmVsYXRpdmVIU0xQYXJhbWV0ZXJz
KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRl
eHQpCit7CisgICAgQVNTRVJUKGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVGcm9tKTsKKyAg
ICBjb25zdW1lSWRlbnRSYXcoYXJncyk7CisKKyAgICBhdXRvIG9yaWdpbkNvbG9yID0gY29uc3Vt
ZU9yaWdpbkNvbG9yKGFyZ3MsIGNvbnRleHQpOworICAgIGlmICghb3JpZ2luQ29sb3IuaXNWYWxp
ZCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBodWUgPSBjb25zdW1lSHVlT3JJ
ZGVudDxDU1NWYWx1ZUg+KGFyZ3MsIGNvbnRleHQpOworICAgIGlmICghaHVlKQorICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgYXV0byBzYXR1cmF0aW9uID0gY29uc3VtZVBlcmNlbnRPcklkZW50
PENTU1ZhbHVlUz4oYXJncyk7CisgICAgaWYgKCFzYXR1cmF0aW9uKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgYXV0byBsaWdodG5lc3MgPSBjb25zdW1lUGVyY2VudE9ySWRlbnQ8Q1NTVmFs
dWVMPihhcmdzKTsKKyAgICBpZiAoIWxpZ2h0bmVzcykKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIGF1dG8gYWxwaGEgPSBjb25zdW1lT3B0aW9uYWxBbHBoYU9ySWRlbnQ8Q1NTVmFsdWVBbHBo
YT4oYXJncyk7CisgICAgaWYgKCFhbHBoYSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlm
ICghYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgLy8gQWZ0ZXIgcGFy
c2luZywgY29udmVydCBpZGVudGlmaWVycyB0byB2YWx1ZXMgZnJvbSB0aGUgb3JpZ2luIGNvbG9y
LgorCisgICAgYXV0byBvcmlnaW5Db2xvckFzSFNMID0gb3JpZ2luQ29sb3IudG9Db2xvclR5cGVM
b3NzeTxIU0xBPGZsb2F0Pj4oKTsKKworICAgIGF1dG8gcmVzb2x2ZWRIdWUgPSByZXNvbHZlUmVs
YXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVILCBDU1NWYWx1ZVMsIENTU1ZhbHVlTCwgQ1NTVmFs
dWVBbHBoYT4oKmh1ZSwgb3JpZ2luQ29sb3JBc0hTTCwgW10oYXV0byBodWUpIHsKKyAgICAgICAg
cmV0dXJuIG5vcm1hbGl6ZUh1ZShodWUpOworICAgIH0pOworICAgIGF1dG8gcmVzb2x2ZWRTYXR1
cmF0aW9uID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlSCwgQ1NTVmFsdWVT
LCBDU1NWYWx1ZUwsIENTU1ZhbHVlQWxwaGE+KCpzYXR1cmF0aW9uLCBvcmlnaW5Db2xvckFzSFNM
LCBbXShhdXRvIHNhdHVyYXRpb24pIHsKKyAgICAgICAgcmV0dXJuIGNsYW1wVG8oc2F0dXJhdGlv
biwgMC4wLCAxMDAuMCk7CisgICAgfSk7CisgICAgYXV0byByZXNvbHZlZExpZ2h0bmVzcyA9IHJl
c29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUgsIENTU1ZhbHVlUywgQ1NTVmFsdWVM
LCBDU1NWYWx1ZUFscGhhPigqbGlnaHRuZXNzLCBvcmlnaW5Db2xvckFzSFNMLCBbXShhdXRvIGxp
Z2h0bmVzcykgeworICAgICAgICByZXR1cm4gY2xhbXBUbyhsaWdodG5lc3MsIDAuMCwgMTAwLjAp
OworICAgIH0pOworICAgIGF1dG8gcmVzb2x2ZWRBbHBoYSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9y
Q2hhbm5lbDxDU1NWYWx1ZUgsIENTU1ZhbHVlUywgQ1NTVmFsdWVMLCBDU1NWYWx1ZUFscGhhPigq
YWxwaGEsIG9yaWdpbkNvbG9yQXNIU0wpOworCisgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdC
QTx1aW50OF90Pj4oSFNMQTxmbG9hdD4geyBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRIdWUp
LCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRTYXR1cmF0aW9uKSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHJlc29sdmVkTGlnaHRuZXNzKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkQWxwaGEp
IH0pOworfQorCitlbnVtIGNsYXNzIEhTTEZ1bmN0aW9uTW9kZSB7IEhTTCwgSFNMQSB9OworCit0
ZW1wbGF0ZTxIU0xGdW5jdGlvbk1vZGUgTW9kZT4gc3RhdGljIENvbG9yIHBhcnNlSFNMUGFyYW1l
dGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCkKIHsKICAgICBBU1NFUlQocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NW
YWx1ZUhzbCB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlSHNsYSk7CiAg
ICAgYXV0byBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKIAorICAgIGlmIGNvbnN0ZXhw
ciAoTW9kZSA9PSBIU0xGdW5jdGlvbk1vZGU6OkhTTCkgeworICAgICAgICBpZiAoY29udGV4dC5y
ZWxhdGl2ZUNvbG9yU3ludGF4RW5hYmxlZCAmJiBhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVl
RnJvbSkKKyAgICAgICAgICAgIHJldHVybiBwYXJzZVJlbGF0aXZlSFNMUGFyYW1ldGVycyhhcmdz
LCBjb250ZXh0KTsKKyAgICB9CisKICAgICBhdXRvIGh1ZSA9IGNvbnN1bWVIdWUoYXJncywgY29u
dGV4dCk7CiAgICAgaWYgKCFodWUpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC04NDEsOSArMTA5
NCw5IEBAIHN0YXRpYyBDb2xvciBwYXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2UKICAgICAgICAg
cmV0dXJuIHsgfTsKIAogICAgIGF1dG8gbm9ybWFsaXplZEh1ZSA9IG5vcm1hbGl6ZUh1ZSgqaHVl
KTsKLSAgICBhdXRvIG5vcm1hbGl6ZWRTYXR1cmF0aW9uID0gY2xhbXBUbzxkb3VibGU+KCpzYXR1
cmF0aW9uLCAwLjAsIDEwMC4wKTsKLSAgICBhdXRvIG5vcm1hbGl6ZWRMaWdodG5lc3MgPSBjbGFt
cFRvPGRvdWJsZT4oKmxpZ2h0bmVzcywgMC4wLCAxMDAuMCk7Ci0gICAgYXV0byBub3JtYWxpemVk
QWxwaGEgPSBjbGFtcFRvPGRvdWJsZT4oKmFscGhhLCAwLjAsIDEuMCk7CisgICAgYXV0byBub3Jt
YWxpemVkU2F0dXJhdGlvbiA9IGNsYW1wVG8oKnNhdHVyYXRpb24sIDAuMCwgMTAwLjApOworICAg
IGF1dG8gbm9ybWFsaXplZExpZ2h0bmVzcyA9IGNsYW1wVG8oKmxpZ2h0bmVzcywgMC4wLCAxMDAu
MCk7CisgICAgYXV0byBub3JtYWxpemVkQWxwaGEgPSBjbGFtcFRvKCphbHBoYSwgMC4wLCAxLjAp
OwogCiAgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oSFNMQTxmbG9hdD4g
eyBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZEh1ZSksIHN0YXRpY19jYXN0PGZsb2F0Pihu
b3JtYWxpemVkU2F0dXJhdGlvbiksIHN0YXRpY19jYXN0PGZsb2F0Pihub3JtYWxpemVkTGlnaHRu
ZXNzKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRBbHBoYSkgfSk7CiB9CkBAIC04NTQs
MTIgKzExMDcsMTIgQEAgc3RydWN0IFdoaXRlbmVzc0JsYWNrbmVzcyB7CiB9Owogc3RhdGljIFdo
aXRlbmVzc0JsYWNrbmVzcyBub3JtYWxpemVXaGl0ZW5lc3NCbGFja25lc3MoZG91YmxlIHdoaXRl
bmVzcywgZG91YmxlIGJsYWNrbmVzcykKIHsKLSAgICBXaGl0ZW5lc3NCbGFja25lc3MgcmVzdWx0
OwotCiAgICAgLy8gICBWYWx1ZXMgb3V0c2lkZSBvZiB0aGVzZSByYW5nZXMgYXJlIG5vdCBpbnZh
bGlkLCBidXQgYXJlIGNsYW1wZWQgdG8gdGhlCiAgICAgLy8gICByYW5nZXMgZGVmaW5lZCBoZXJl
IGF0IGNvbXB1dGVkLXZhbHVlIHRpbWUuCi0gICAgcmVzdWx0LndoaXRlbmVzcyA9IGNsYW1wVG88
ZG91YmxlPih3aGl0ZW5lc3MsIDAsIDEwMCk7Ci0gICAgcmVzdWx0LmJsYWNrbmVzcyA9IGNsYW1w
VG88ZG91YmxlPihibGFja25lc3MsIDAsIDEwMCk7CisgICAgV2hpdGVuZXNzQmxhY2tuZXNzIHJl
c3VsdCB7CisgICAgICAgIGNsYW1wVG8od2hpdGVuZXNzLCAwLjAsIDEwMC4wKSwKKyAgICAgICAg
Y2xhbXBUbyhibGFja25lc3MsIDAuMCwgMTAwLjApCisgICAgfTsKIAogICAgIC8vICAgSWYgdGhl
IHN1bSBvZiB0aGVzZSB0d28gYXJndW1lbnRzIGlzIGdyZWF0ZXIgdGhhbiAxMDAlLCB0aGVuIGF0
CiAgICAgLy8gICBjb21wdXRlZC12YWx1ZSB0aW1lIHRoZXkgYXJlIGZ1cnRoZXIgbm9ybWFsaXpl
ZCB0byBhZGQgdXAgdG8gMTAwJSwgd2l0aApAQCAtODcyLDExICsxMTI1LDU4IEBAIHN0YXRpYyBX
aGl0ZW5lc3NCbGFja25lc3Mgbm9ybWFsaXplV2hpdGUKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CitzdGF0aWMgQ29sb3IgcGFyc2VSZWxhdGl2ZUhXQlBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBBU1NF
UlQoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pOworICAgIGNvbnN1bWVJZGVudFJh
dyhhcmdzKTsKKworICAgIGF1dG8gb3JpZ2luQ29sb3IgPSBjb25zdW1lT3JpZ2luQ29sb3IoYXJn
cywgY29udGV4dCk7CisgICAgaWYgKCFvcmlnaW5Db2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBhdXRvIGh1ZSA9IGNvbnN1bWVIdWVPcklkZW50PENTU1ZhbHVlSD4o
YXJncywgY29udGV4dCk7CisgICAgaWYgKCFodWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICBhdXRvIHdoaXRlbmVzcyA9IGNvbnN1bWVQZXJjZW50T3JJZGVudDxDU1NWYWx1ZVc+KGFyZ3Mp
OworICAgIGlmICghd2hpdGVuZXNzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBi
bGFja25lc3MgPSBjb25zdW1lUGVyY2VudE9ySWRlbnQ8Q1NTVmFsdWVCPihhcmdzKTsKKyAgICBp
ZiAoIWJsYWNrbmVzcykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gYWxwaGEgPSBj
b25zdW1lT3B0aW9uYWxBbHBoYU9ySWRlbnQ8Q1NTVmFsdWVBbHBoYT4oYXJncyk7CisgICAgaWYg
KCFhbHBoYSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmICghYXJncy5hdEVuZCgpKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgLy8gQWZ0ZXIgcGFyc2luZywgY29udmVydCBpZGVu
dGlmaWVycyB0byB2YWx1ZXMgZnJvbSB0aGUgb3JpZ2luIGNvbG9yLgorCisgICAgYXV0byBvcmln
aW5Db2xvckFzSFdCID0gb3JpZ2luQ29sb3IudG9Db2xvclR5cGVMb3NzeTxIV0JBPGZsb2F0Pj4o
KTsKKworICAgIGF1dG8gcmVzb2x2ZWRIdWUgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8
Q1NTVmFsdWVILCBDU1NWYWx1ZVcsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oKmh1ZSwgb3Jp
Z2luQ29sb3JBc0hXQiwgW10oYXV0byBodWUpIHsKKyAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZUh1
ZShodWUpOworICAgIH0pOworICAgIGF1dG8gcmVzb2x2ZWRXaGl0ZW5lc3MgPSByZXNvbHZlUmVs
YXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVILCBDU1NWYWx1ZVcsIENTU1ZhbHVlQiwgQ1NTVmFs
dWVBbHBoYT4oKndoaXRlbmVzcywgb3JpZ2luQ29sb3JBc0hXQik7CisgICAgYXV0byByZXNvbHZl
ZEJsYWNrbmVzcyA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUgsIENTU1Zh
bHVlVywgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPigqYmxhY2tuZXNzLCBvcmlnaW5Db2xvckFz
SFdCKTsKKyAgICBhdXRvIHJlc29sdmVkQWxwaGEgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5u
ZWw8Q1NTVmFsdWVILCBDU1NWYWx1ZVcsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oKmFscGhh
LCBvcmlnaW5Db2xvckFzSFdCKTsKKworICAgIGF1dG8gW25vcm1hbGl6ZWRXaGl0bmVzcywgbm9y
bWFsaXplZEJsYWNrbmVzc10gPSBub3JtYWxpemVXaGl0ZW5lc3NCbGFja25lc3MocmVzb2x2ZWRX
aGl0ZW5lc3MsIHJlc29sdmVkQmxhY2tuZXNzKTsKKworICAgIHJldHVybiBjb252ZXJ0Q29sb3I8
U1JHQkE8dWludDhfdD4+KEhXQkE8ZmxvYXQ+IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVk
SHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRXaGl0bmVzcyksIHN0YXRpY19jYXN0
PGZsb2F0Pihub3JtYWxpemVkQmxhY2tuZXNzKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVk
QWxwaGEpIH0pOworfQorCiBzdGF0aWMgQ29sb3IgcGFyc2VIV0JQYXJhbWV0ZXJzKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogewog
ICAgIEFTU0VSVChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlSHdiKTsKICAg
ICBhdXRvIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOwogCisgICAgaWYgKGNvbnRleHQu
cmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQgJiYgYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1
ZUZyb20pCisgICAgICAgIHJldHVybiBwYXJzZVJlbGF0aXZlSFdCUGFyYW1ldGVycyhhcmdzLCBj
b250ZXh0KTsKKwogICAgIGF1dG8gaHVlID0gY29uc3VtZUh1ZShhcmdzLCBjb250ZXh0KTsKICAg
ICBpZiAoIWh1ZSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTkwMiwxMSArMTIwMiw1NiBAQCBz
dGF0aWMgQ29sb3IgcGFyc2VIV0JQYXJhbWV0ZXJzKENTU1BhcnNlCiAgICAgcmV0dXJuIGNvbnZl
cnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oSFdCQTxmbG9hdD4geyBzdGF0aWNfY2FzdDxmbG9hdD4o
bm9ybWFsaXplZEh1ZSksIHN0YXRpY19jYXN0PGZsb2F0Pihub3JtYWxpemVkV2hpdG5lc3MpLCBz
dGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZEJsYWNrbmVzcyksIHN0YXRpY19jYXN0PGZsb2F0
PigqYWxwaGEpIH0pOwogfQogCi1zdGF0aWMgQ29sb3IgcGFyc2VMYWJQYXJhbWV0ZXJzKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JikKK3N0YXRpYyBD
b2xvciBwYXJzZVJlbGF0aXZlTGFiUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdz
LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIEFTU0VSVChhcmdzLnBl
ZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbSk7CisgICAgY29uc3VtZUlkZW50UmF3KGFyZ3MpOwor
CisgICAgYXV0byBvcmlnaW5Db2xvciA9IGNvbnN1bWVPcmlnaW5Db2xvcihhcmdzLCBjb250ZXh0
KTsKKyAgICBpZiAoIW9yaWdpbkNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgIGF1dG8gbGlnaHRuZXNzID0gY29uc3VtZVBlcmNlbnRPcklkZW50PENTU1ZhbHVlTD4o
YXJncyk7CisgICAgaWYgKCFsaWdodG5lc3MpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBh
dXRvIGFWYWx1ZSA9IGNvbnN1bWVOdW1iZXJPcklkZW50PENTU1ZhbHVlQT4oYXJncyk7CisgICAg
aWYgKCFhVmFsdWUpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGJWYWx1ZSA9IGNv
bnN1bWVOdW1iZXJPcklkZW50PENTU1ZhbHVlQj4oYXJncyk7CisgICAgaWYgKCFiVmFsdWUpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGFscGhhID0gY29uc3VtZU9wdGlvbmFsQWxw
aGFPcklkZW50PENTU1ZhbHVlQWxwaGE+KGFyZ3MpOworICAgIGlmICghYWxwaGEpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICBpZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIC8vIEFmdGVyIHBhcnNpbmcsIGNvbnZlcnQgaWRlbnRpZmllcnMgdG8gdmFsdWVz
IGZyb20gdGhlIG9yaWdpbiBjb2xvci4KKworICAgIGF1dG8gb3JpZ2luQ29sb3JBc0xhYiA9IG9y
aWdpbkNvbG9yLnRvQ29sb3JUeXBlTG9zc3k8TGFiPGZsb2F0Pj4oKTsKKworICAgIGF1dG8gcmVz
b2x2ZWRMaWdodG5lc3MgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVMLCBD
U1NWYWx1ZUEsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oKmxpZ2h0bmVzcywgb3JpZ2luQ29s
b3JBc0xhYiwgW10oYXV0byBsaWdodG5lc3MpIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KDAu
MCwgbGlnaHRuZXNzKTsKKyAgICB9KTsKKyAgICBhdXRvIHJlc29sdmVkQVZhbHVlID0gcmVzb2x2
ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlTCwgQ1NTVmFsdWVBLCBDU1NWYWx1ZUIsIENT
U1ZhbHVlQWxwaGE+KCphVmFsdWUsIG9yaWdpbkNvbG9yQXNMYWIpOworICAgIGF1dG8gcmVzb2x2
ZWRCVmFsdWUgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVMLCBDU1NWYWx1
ZUEsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oKmJWYWx1ZSwgb3JpZ2luQ29sb3JBc0xhYik7
CisgICAgYXV0byByZXNvbHZlZEFscGhhID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENT
U1ZhbHVlTCwgQ1NTVmFsdWVBLCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KCphbHBoYSwgb3Jp
Z2luQ29sb3JBc0xhYik7CisKKyAgICByZXR1cm4gTGFiPGZsb2F0PiB7IHN0YXRpY19jYXN0PGZs
b2F0PihyZXNvbHZlZExpZ2h0bmVzcyksIHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZEFWYWx1
ZSksIHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZEJWYWx1ZSksIHN0YXRpY19jYXN0PGZsb2F0
PihyZXNvbHZlZEFscGhhKSB9OworfQorCitzdGF0aWMgQ29sb3IgcGFyc2VMYWJQYXJhbWV0ZXJz
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250
ZXh0KQogewogICAgIEFTU0VSVChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVl
TGFiKTsKICAgICBhdXRvIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOwogCisgICAgaWYg
KGNvbnRleHQucmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQgJiYgYXJncy5wZWVrKCkuaWQoKSA9
PSBDU1NWYWx1ZUZyb20pCisgICAgICAgIHJldHVybiBwYXJzZVJlbGF0aXZlTGFiUGFyYW1ldGVy
cyhhcmdzLCBjb250ZXh0KTsKKwogICAgIGF1dG8gbGlnaHRuZXNzID0gY29uc3VtZVBlcmNlbnRS
YXcoYXJncyk7CiAgICAgaWYgKCFsaWdodG5lc3MpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC05
MzEsMTEgKzEyNzYsNTggQEAgc3RhdGljIENvbG9yIHBhcnNlTGFiUGFyYW1ldGVycyhDU1NQYXJz
ZQogICAgIHJldHVybiBMYWI8ZmxvYXQ+IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRM
aWdodG5lc3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4oKmFWYWx1ZSksIHN0YXRpY19jYXN0PGZsb2F0
PigqYlZhbHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KCphbHBoYSkgfTsKIH0KIAorc3RhdGljIENv
bG9yIHBhcnNlUmVsYXRpdmVMQ0hQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3Ms
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGFyZ3MucGVl
aygpLmlkKCkgPT0gQ1NTVmFsdWVGcm9tKTsKKyAgICBjb25zdW1lSWRlbnRSYXcoYXJncyk7CisK
KyAgICBhdXRvIG9yaWdpbkNvbG9yID0gY29uc3VtZU9yaWdpbkNvbG9yKGFyZ3MsIGNvbnRleHQp
OworICAgIGlmICghb3JpZ2luQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgYXV0byBsaWdodG5lc3MgPSBjb25zdW1lUGVyY2VudE9ySWRlbnQ8Q1NTVmFsdWVMPihh
cmdzKTsKKyAgICBpZiAoIWxpZ2h0bmVzcykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1
dG8gY2hyb21hID0gY29uc3VtZU51bWJlck9ySWRlbnQ8Q1NTVmFsdWVDPihhcmdzKTsKKyAgICBp
ZiAoIWNocm9tYSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gaHVlID0gY29uc3Vt
ZUh1ZU9ySWRlbnQ8Q1NTVmFsdWVIPihhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAoIWh1ZSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gYWxwaGEgPSBjb25zdW1lT3B0aW9uYWxBbHBo
YU9ySWRlbnQ8Q1NTVmFsdWVBbHBoYT4oYXJncyk7CisgICAgaWYgKCFhbHBoYSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIGlmICghYXJncy5hdEVuZCgpKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgYXV0byBvcmlnaW5Db2xvckFzTENIID0gb3JpZ2luQ29sb3IudG9Db2xvclR5cGVM
b3NzeTxMQ0hBPGZsb2F0Pj4oKTsKKworICAgIGF1dG8gcmVzb2x2ZWRMaWdodG5lc3MgPSByZXNv
bHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVMLCBDU1NWYWx1ZUMsIENTU1ZhbHVlSCwg
Q1NTVmFsdWVBbHBoYT4oKmxpZ2h0bmVzcywgb3JpZ2luQ29sb3JBc0xDSCwgW10oYXV0byBsaWdo
dG5lc3MpIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KDAuMCwgbGlnaHRuZXNzKTsKKyAgICB9
KTsKKyAgICBhdXRvIHJlc29sdmVkQ2hyb21hID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVs
PENTU1ZhbHVlTCwgQ1NTVmFsdWVDLCBDU1NWYWx1ZUgsIENTU1ZhbHVlQWxwaGE+KCpjaHJvbWEs
IG9yaWdpbkNvbG9yQXNMQ0gsIFtdKGF1dG8gY2hyb21hKSB7CisgICAgICAgIHJldHVybiBzdGQ6
Om1heCgwLjAsIGNocm9tYSk7CisgICAgfSk7CisgICAgYXV0byByZXNvbHZlZEh1ZSA9IHJlc29s
dmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUwsIENTU1ZhbHVlQywgQ1NTVmFsdWVILCBD
U1NWYWx1ZUFscGhhPigqaHVlLCBvcmlnaW5Db2xvckFzTENILCBbXShhdXRvIGh1ZSkgeworICAg
ICAgICByZXR1cm4gbm9ybWFsaXplSHVlKGh1ZSk7CisgICAgfSk7CisgICAgYXV0byByZXNvbHZl
ZEFscGhhID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlTCwgQ1NTVmFsdWVD
LCBDU1NWYWx1ZUgsIENTU1ZhbHVlQWxwaGE+KCphbHBoYSwgb3JpZ2luQ29sb3JBc0xDSCk7CisK
KyAgICByZXR1cm4gY29udmVydENvbG9yPExhYjxmbG9hdD4+KExDSEE8ZmxvYXQ+IHsgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkTGlnaHRuZXNzKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29s
dmVkQ2hyb21hKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkSHVlKSwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHJlc29sdmVkQWxwaGEpIH0pOworfQorCiBzdGF0aWMgQ29sb3IgcGFyc2VMQ0hQYXJh
bWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBjb250ZXh0KQogewogICAgIEFTU0VSVChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENT
U1ZhbHVlTGNoKTsKICAgICBhdXRvIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOwogCisg
ICAgaWYgKGNvbnRleHQucmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQgJiYgYXJncy5wZWVrKCku
aWQoKSA9PSBDU1NWYWx1ZUZyb20pCisgICAgICAgIHJldHVybiBwYXJzZVJlbGF0aXZlTENIUGFy
YW1ldGVycyhhcmdzLCBjb250ZXh0KTsKKwogICAgIGF1dG8gbGlnaHRuZXNzID0gY29uc3VtZVBl
cmNlbnRSYXcoYXJncyk7CiAgICAgaWYgKCFsaWdodG5lc3MpCiAgICAgICAgIHJldHVybiB7IH07
CkBAIC0xMTMxLDEyICsxNTIzLDE2IEBAIHN0YXRpYyBDb2xvciBwYXJzZUNvbG9yRnVuY3Rpb24o
Q1NTUGFyc2UKICAgICBDb2xvciBjb2xvcjsKICAgICBzd2l0Y2ggKGZ1bmN0aW9uSWQpIHsKICAg
ICBjYXNlIENTU1ZhbHVlUmdiOgorICAgICAgICBjb2xvciA9IHBhcnNlUkdCUGFyYW1ldGVyczxS
R0JGdW5jdGlvbk1vZGU6OlJHQj4oY29sb3JSYW5nZSwgY29udGV4dCk7CisgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ1NTVmFsdWVSZ2JhOgotICAgICAgICBjb2xvciA9IHBhcnNlUkdCUGFyYW1l
dGVycyhjb2xvclJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgY29sb3IgPSBwYXJzZVJHQlBhcmFt
ZXRlcnM8UkdCRnVuY3Rpb25Nb2RlOjpSR0JBPihjb2xvclJhbmdlLCBjb250ZXh0KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUhzbDoKKyAgICAgICAgY29sb3IgPSBwYXJzZUhT
TFBhcmFtZXRlcnM8SFNMRnVuY3Rpb25Nb2RlOjpIU0w+KGNvbG9yUmFuZ2UsIGNvbnRleHQpOwor
ICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlSHNsYToKLSAgICAgICAgY29sb3IgPSBw
YXJzZUhTTFBhcmFtZXRlcnMoY29sb3JSYW5nZSwgY29udGV4dCk7CisgICAgICAgIGNvbG9yID0g
cGFyc2VIU0xQYXJhbWV0ZXJzPEhTTEZ1bmN0aW9uTW9kZTo6SFNMQT4oY29sb3JSYW5nZSwgY29u
dGV4dCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVId2I6CiAgICAgICAgIGNv
bG9yID0gcGFyc2VIV0JQYXJhbWV0ZXJzKGNvbG9yUmFuZ2UsIGNvbnRleHQpOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjczMDEzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDItMTcgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgQ1NTIENvbG9yIDUg
UmVsYXRpdmUgQ29sb3IgU3ludGF4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjE4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvY3NzL3BhcnNpbmctcmVsYXRpdmUtY29sb3Itc3ludGF4LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvcGFyc2luZy1yZWxhdGl2ZS1j
b2xvci1zeW50YXguaHRtbDogQWRkZWQuCisgICAgICAgIEFkZCBiYXNpYyBwYXJzaW5nIGFuZCBj
b21wdXRlZCBzdHlsZSBjb21wdXRhdGlvbiB0ZXN0cyBmb3IgcmVsYXRpdmUgY29sb3Igc3ludGF4
LgorCisyMDIxLTAyLTE1ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBsYWIoKSBhbmQgbGNoKCkgYXJlIG5vdCBjbGFtcGluZyBvdXQgb2YgYmFuZHMgdmFsdWVzIGF0
IHBhcnNlIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMTk0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBtb2RlbCBsZXZlbCBhc3NlcnRpb25zIGNhdWdodCB0aGlzICh5YXkpLiBUaGUgc3Bl
YyByZXF1aXJlcyB0aGF0IHdlCisgICAgICAgIGNsYW1wIG5lZ2F0aXZlIGxpZ2h0bmVzcyB2YWx1
ZXMgdG8gMCBmb3IgbGFiKCksIGxjaCgpIGFuZCBjb2xvcihsYWIpCisgICAgICAgIGFuZCBuZWdh
dGl2ZSBjaHJvbWEgdmFsdWVzIHRvIDAgZm9yIGxjaCgpLgorCisgICAgICAgICogZmFzdC9jc3Mv
cGFyc2luZy1sYWItY29sb3JzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Nzcy9wYXJz
aW5nLWxhYi1jb2xvcnMuaHRtbDoKKwogMjAyMS0wMi0xNyAgUm9iZXJ0IEplbm5lciAgPGplbm5l
ckBhcHBsZS5jb20+CiAKICAgICAgICAgWyBCaWdTdXIgXSBwbGF0Zm9ybS9tYWMtYmlnc3VyL21l
ZGlhL21lZGlhLXdlYm0tbm8tZHVyYXRpb24uaHRtbCBpcyBjb25zdGFudGx5IHRleHQgZmFpbGlu
ZwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1yZWxhdGl2ZS1jb2xvci1zeW50
YXgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNp
bmctcmVsYXRpdmUtY29sb3Itc3ludGF4LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLXJlbGF0aXZlLWNvbG9yLXN5bnRheC1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNDkgQEAKK1Rlc3QgdGhlIHBhcnNpbmcg
b2YgQ1NTIENvbG9yIDUgUmVsYXRpdmUgQ29sb3IgU3ludGF4LgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworcmdiKGZyb20gLi4uKQorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3Jv
dW5kLWNvbG9yIiwgInJnYihmcm9tIHJlYmVjY2FwdXJwbGUgciBnIGIpIikgaXMgInJnYigxMDIs
IDUxLCAxNTMpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihm
cm9tIHJlYmVjY2FwdXJwbGUgciBnIGIgLyBhbHBoYSkiKSBpcyAicmdiKDEwMiwgNTEsIDE1Myki
CitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmdiKDEw
JSwgMjAlLCAzMCUsIDQwJSkgciBnIGIgLyBhbHBoYSkiKSBpcyAicmdiYSgyNiwgNTEsIDc3LCAw
LjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIGhz
bCgxMjBkZWcgMjAlIDUwJSAvIC41KSByIGcgYiAvIGFscGhhKSIpIGlzICJyZ2JhKDEwMiwgMTUz
LCAxMDIsIDAuNSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdi
KGZyb20gcmdiKGZyb20gcmViZWNjYXB1cnBsZSByIGcgYikgciBnIGIpIikgaXMgInJnYigxMDIs
IDUxLCAxNTMpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihm
cm9tIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIHIgZyBiIC8gYWxwaGEpIikgaXMgInJnYigwLCAy
NTUsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9t
IHJlYmVjY2FwdXJwbGUgMCAwIDApIikgaXMgInJnYigwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRT
dHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIDAgMCAwIC8g
MCkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3Vu
ZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIDAgZyBiIC8gYWxwaGEpIikgaXMgInJn
YigwLCA1MSwgMTUzKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJy
Z2IoZnJvbSByZWJlY2NhcHVycGxlIHIgMCBiIC8gYWxwaGEpIikgaXMgInJnYigxMDIsIDAsIDE1
MykiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmVi
ZWNjYXB1cnBsZSByIGcgMCAvIGFscGhhKSIpIGlzICJyZ2IoMTAyLCA1MSwgMCkiCitQQVNTIGNv
bXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmViZWNjYXB1cnBsZSBy
IGcgYiAvIDApIikgaXMgInJnYmEoMTAyLCA1MSwgMTUzLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAw
IGcgYiAvIGFscGhhKSIpIGlzICJyZ2JhKDAsIDUxLCA3NywgMC40KSIKK1BBU1MgY29tcHV0ZWRT
dHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAl
KSByIDAgYiAvIGFscGhhKSIpIGlzICJyZ2JhKDI2LCAwLCA3NywgMC40KSIKK1BBU1MgY29tcHV0
ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwg
NDAlKSByIGcgMCAvIGFscGhhKSIpIGlzICJyZ2JhKDI2LCA1MSwgMCwgMC40KSIKK1BBU1MgY29t
cHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMw
JSwgNDAlKSByIGcgYiAvIDApIikgaXMgInJnYmEoMjYsIDUxLCA3NywgMCkiCitQQVNTIGNvbXB1
dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmViZWNjYXB1cnBsZSAyNSBn
IGIgLyBhbHBoYSkiKSBpcyAicmdiKDI1LCA1MSwgMTUzKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgi
YmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgMjUgYiAvIGFscGhh
KSIpIGlzICJyZ2IoMTAyLCAyNSwgMTUzKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3Vu
ZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgZyAyNSAvIGFscGhhKSIpIGlzICJy
Z2IoMTAyLCA1MSwgMjUpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
InJnYihmcm9tIHJlYmVjY2FwdXJwbGUgciBnIGIgLyAuMjUpIikgaXMgInJnYmEoMTAyLCA1MSwg
MTUzLCAwLjI1KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2Io
ZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAyNSBnIGIgLyBhbHBoYSkiKSBpcyAicmdiYSgy
NSwgNTEsIDc3LCAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
InJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIHIgMjUgYiAvIGFscGhhKSIpIGlzICJy
Z2JhKDI2LCAyNSwgNzcsIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29s
b3IiLCAicmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgciBnIDI1IC8gYWxwaGEpIikg
aXMgInJnYmEoMjYsIDUxLCAyNSwgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3Vu
ZC1jb2xvciIsICJyZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIGcgYiAvIC4yNSki
KSBpcyAicmdiYSgyNiwgNTEsIDc3LCAwLjI1KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dy
b3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIDI1JSBnIGIgLyBhbHBoYSkiKSBp
cyAicmdiKDY0LCA1MSwgMTUzKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xv
ciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgMjUlIGIgLyBhbHBoYSkiKSBpcyAicmdiKDEw
MiwgNjQsIDE1MykiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdi
KGZyb20gcmViZWNjYXB1cnBsZSByIGcgMjUlIC8gYWxwaGEpIikgaXMgInJnYigxMDIsIDUxLCA2
NCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmVi
ZWNjYXB1cnBsZSByIGcgYiAvIDI1JSkiKSBpcyAicmdiYSgxMDIsIDUxLCAxNTMsIDAuMjUpIgor
UEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJnYigxMCUs
IDIwJSwgMzAlLCA0MCUpIDI1JSBnIGIgLyBhbHBoYSkiKSBpcyAicmdiYSg2NCwgNTEsIDc3LCAw
LjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJn
YigxMCUsIDIwJSwgMzAlLCA0MCUpIHIgMjUlIGIgLyBhbHBoYSkiKSBpcyAicmdiYSgyNiwgNjQs
IDc3LCAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihm
cm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIHIgZyAyNSUgLyBhbHBoYSkiKSBpcyAicmdiYSgy
NiwgNTEsIDY0LCAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
InJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIHIgZyBiIC8gMjUlKSIpIGlzICJyZ2Jh
KDI2LCA1MSwgNzcsIDAuMjUpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9y
IiwgInJnYihmcm9tIHJlYmVjY2FwdXJwbGUgMjUgZyBiIC8gMjUlKSIpIGlzICJyZ2JhKDI1LCA1
MSwgMTUzLCAwLjI1KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJy
Z2IoZnJvbSByZWJlY2NhcHVycGxlIHIgMjUgYiAvIDI1JSkiKSBpcyAicmdiYSgxMDIsIDI1LCAx
NTMsIDAuMjUpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihm
cm9tIHJlYmVjY2FwdXJwbGUgciBnIDI1IC8gMjUlKSIpIGlzICJyZ2JhKDEwMiwgNTEsIDI1LCAw
LjI1KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSBy
Z2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAyNSBnIGIgLyAyNSUpIikgaXMgInJnYmEoMjUsIDUxLCA3
NywgMC4yNSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZy
b20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgciAyNSBiIC8gMjUlKSIpIGlzICJyZ2JhKDI2LCAy
NSwgNzcsIDAuMjUpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJn
Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIHIgZyAyNSAvIDI1JSkiKSBpcyAicmdiYSgy
NiwgNTEsIDI1LCAwLjI1KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIs
ICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIGcgYiByKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgor
UEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJlYmVjY2Fw
dXJwbGUgYiBhbHBoYSByIC8gZykiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0
ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgciBy
IC8gcikiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dy
b3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIGFscGhhIGFscGhhIGFscGhhIC8g
YWxwaGEpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tn
cm91bmQtY29sb3IiLCAicmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgZyBiIHIpIikg
aXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29s
b3IiLCAicmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgYiBhbHBoYSByIC8gZykiKSBp
cyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xv
ciIsICJyZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIHIgciAvIHIpIikgaXMgInJn
YmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAi
cmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgYWxwaGEgYWxwaGEgYWxwaGEgLyBhbHBo
YSkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3Vu
ZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgMTAlIDEwKSIpIGlzICJyZ2JhKDAs
IDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihm
cm9tIHJlYmVjY2FwdXJwbGUgciAxMCAxMCUpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNT
IGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmViZWNjYXB1cnBs
ZSAwJSAxMCAxMCkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgi
YmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIDEw
JSAxMCkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dy
b3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIDEwIDEwJSki
KSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1j
b2xvciIsICJyZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAwJSAxMCAxMCkiKSBpcyAi
cmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIs
ICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIHJlZCBnIGIpIikgaXMgInJnYmEoMCwgMCwgMCwgMCki
CitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmViZWNj
YXB1cnBsZSBsIGcgYikiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIGggZyBiKSIpIGlz
ICJyZ2JhKDAsIDAsIDAsIDApIgorCitoc2woZnJvbSAuLi4pCitQQVNTIGNvbXB1dGVkU3R5bGUo
ImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIHMgbCkiKSBpcyAi
cmdiKDEwMiwgNTEsIDE1MykiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3Ii
LCAiaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIHMgbCAvIGFscGhhKSIpIGlzICJyZ2IoMTAyLCA1
MSwgMTUzKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJv
bSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHMgbCAvIGFscGhhKSIpIGlzICJyZ2JhKDI2LCA1
MSwgNzcsIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNs
KGZyb20gaHNsKDEyMGRlZyAyMCUgNTAlIC8gLjUpIGggcyBsIC8gYWxwaGEpIikgaXMgInJnYmEo
MTAyLCAxNTMsIDEwMiwgMC41KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xv
ciIsICJoc2woZnJvbSBoc2woZnJvbSByZWJlY2NhcHVycGxlIGggcyBsKSBoIHMgbCkiKSBpcyAi
cmdiKDEwMiwgNTEsIDE1MykiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3Ii
LCAiaHNsKGZyb20gY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgaCBzIGwgLyBhbHBoYSkiKSBpcyAi
cmdiKDAsIDI1NSwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAi
aHNsKGZyb20gcmViZWNjYXB1cnBsZSAwIDAlIDAlKSIpIGlzICJyZ2IoMCwgMCwgMCkiCitQQVNT
IGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1cnBs
ZSAwZGVnIDAlIDAlKSIpIGlzICJyZ2IoMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJh
Y2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1cnBsZSAwIDAlIDAlIC8gMCkiKSBp
cyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xv
ciIsICJoc2woZnJvbSByZWJlY2NhcHVycGxlIDBkZWcgMCUgMCUgLyAwKSIpIGlzICJyZ2JhKDAs
IDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChm
cm9tIHJlYmVjY2FwdXJwbGUgMCBzIGwgLyBhbHBoYSkiKSBpcyAicmdiKDE1MywgNTEsIDUxKSIK
K1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZWJlY2Nh
cHVycGxlIDBkZWcgcyBsIC8gYWxwaGEpIikgaXMgInJnYigxNTMsIDUxLCA1MSkiCitQQVNTIGNv
bXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1cnBsZSBo
IDAlIGwgLyBhbHBoYSkiKSBpcyAicmdiKDEwMiwgMTAyLCAxMDIpIgorUEFTUyBjb21wdXRlZFN0
eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaCBzIDAlIC8g
YWxwaGEpIikgaXMgInJnYigwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3Vu
ZC1jb2xvciIsICJoc2woZnJvbSByZWJlY2NhcHVycGxlIGggcyBsIC8gMCkiKSBpcyAicmdiYSgx
MDIsIDUxLCAxNTMsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
ImhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDAgcyBsIC8gYWxwaGEpIikgaXMgInJn
YmEoNzcsIDI2LCAyNiwgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xv
ciIsICJoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAwZGVnIHMgbCAvIGFscGhhKSIp
IGlzICJyZ2JhKDc3LCAyNiwgMjYsIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91
bmQtY29sb3IiLCAiaHNsKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCAwJSBsIC8gYWxw
aGEpIikgaXMgInJnYmEoNTIsIDUyLCA1MiwgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFj
a2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHMgMCUg
LyBhbHBoYSkiKSBpcyAicmdiYSgwLCAwLCAwLCAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJi
YWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggcyBs
IC8gMCkiKSBpcyAicmdiYSgyNiwgNTEsIDc3LCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFj
a2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZWJlY2NhcHVycGxlIDI1IHMgbCAvIGFscGhhKSIp
IGlzICJyZ2IoMTUzLCA5NCwgNTEpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNv
bG9yIiwgImhzbChmcm9tIHJlYmVjY2FwdXJwbGUgMjVkZWcgcyBsIC8gYWxwaGEpIikgaXMgInJn
YigxNTMsIDk0LCA1MSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAi
aHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIDI1JSBsIC8gYWxwaGEpIikgaXMgInJnYigxMDIsIDc3
LCAxMjgpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9t
IHJlYmVjY2FwdXJwbGUgaCBzIDI1JSAvIGFscGhhKSIpIGlzICJyZ2IoNjQsIDMyLCA5NikiCitQ
QVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1
cnBsZSBoIHMgbCAvIC4yNSkiKSBpcyAicmdiYSgxMDIsIDUxLCAxNTMsIDAuMjUpIgorUEFTUyBj
b21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJnYigxMCUsIDIwJSwg
MzAlLCA0MCUpIDI1IHMgbCAvIGFscGhhKSIpIGlzICJyZ2JhKDc3LCA0NywgMjYsIDAuNCkiCitQ
QVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmdiKDEwJSwg
MjAlLCAzMCUsIDQwJSkgMjVkZWcgcyBsIC8gYWxwaGEpIikgaXMgInJnYmEoNzcsIDQ3LCAyNiwg
MC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSBy
Z2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIDI1JSBsIC8gYWxwaGEpIikgaXMgInJnYmEoMzksIDUx
LCA2NCwgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2wo
ZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHMgMjUlIC8gYWxwaGEpIikgaXMgInJnYmEo
MzIsIDYzLCA5NSwgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIs
ICJoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHMgbCAvIC4yNSkiKSBpcyAicmdi
YSgyNiwgNTEsIDc3LCAwLjI1KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xv
ciIsICJoc2woZnJvbSByZWJlY2NhcHVycGxlIGggbCBzKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDAp
IgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJlYmVj
Y2FwdXJwbGUgaCBhbHBoYSBsIC8gcykiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29t
cHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZWJlY2NhcHVycGxlIGgg
bCBsIC8gbCkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFj
a2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZWJlY2NhcHVycGxlIGggYWxwaGEgYWxwaGEgLyBh
bHBoYSkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dy
b3VuZC1jb2xvciIsICJoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIGwgcykiKSBp
cyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xv
ciIsICJoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIGFscGhhIGwgLyBzKSIpIGlz
ICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9y
IiwgImhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggbCBsIC8gbCkiKSBpcyAicmdi
YSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJo
c2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIGFscGhhIGFscGhhIC8gYWxwaGEpIikg
aXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29s
b3IiLCAiaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIDEwJSAxMCkiKSBpcyAicmdiYSgwLCAwLCAw
LCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSBy
ZWJlY2NhcHVycGxlIGggMTAgMTAlKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21w
dXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJlYmVjY2FwdXJwbGUgMTAl
IHMgbCkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dy
b3VuZC1jb2xvciIsICJoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIDEwJSAxMCki
KSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1j
b2xvciIsICJoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIDEwIDEwJSkiKSBpcyAi
cmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIs
ICJoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAxMCUgcyBsKSIpIGlzICJyZ2JhKDAs
IDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChm
cm9tIHJlYmVjY2FwdXJwbGUgaHVlIHMgbCkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1Mg
Y29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZWJlY2NhcHVycGxl
IHggcyBsKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNr
Z3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaCBnIGIpIikgaXMgInJnYmEo
MCwgMCwgMCwgMCkiCisKK2h3Yihmcm9tIC4uLikKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dy
b3VuZC1jb2xvciIsICJod2IoZnJvbSByZWJlY2NhcHVycGxlIGggdyBiKSIpIGlzICJyZ2IoMTAy
LCA1MSwgMTUzKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2Io
ZnJvbSByZWJlY2NhcHVycGxlIGggdyBiIC8gYWxwaGEpIikgaXMgInJnYigxMDIsIDUxLCAxNTMp
IgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJnYigx
MCUsIDIwJSwgMzAlLCA0MCUpIGggdyBiIC8gYWxwaGEpIikgaXMgInJnYmEoMjYsIDUxLCA3Nywg
MC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSBo
c2woMTIwZGVnIDIwJSA1MCUgLyAuNSkgaCB3IGIgLyBhbHBoYSkiKSBpcyAicmdiYSgxMDIsIDE1
MywgMTAyLCAwLjUpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3
Yihmcm9tIGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCB3IGIpIGggdyBiKSIpIGlzICJyZ2IoMTAy
LCA1MSwgMTUzKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2Io
ZnJvbSBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBoIHcgYiAvIGFscGhhKSIpIGlzICJyZ2IoMCwg
MjU1LCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJv
bSByZWJlY2NhcHVycGxlIDAgMCUgMCUpIikgaXMgInJnYigyNTUsIDAsIDApIgorUEFTUyBjb21w
dXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgMGRl
ZyAwJSAwJSkiKSBpcyAicmdiKDI1NSwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tn
cm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmViZWNjYXB1cnBsZSAwIDAlIDAlIC8gMCkiKSBpcyAi
cmdiYSgyNTUsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9y
IiwgImh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgMGRlZyAwJSAwJSAvIDApIikgaXMgInJnYmEoMjU1
LCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2Io
ZnJvbSByZWJlY2NhcHVycGxlIDAgdyBiIC8gYWxwaGEpIikgaXMgInJnYigxNTMsIDUxLCA1MSki
CitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmViZWNj
YXB1cnBsZSAwZGVnIHcgYiAvIGFscGhhKSIpIGlzICJyZ2IoMTUzLCA1MSwgNTEpIgorUEFTUyBj
b21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJlYmVjY2FwdXJwbGUg
aCAwJSBiIC8gYWxwaGEpIikgaXMgInJnYig3NywgMCwgMTUzKSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSByZWJlY2NhcHVycGxlIGggdyAwJSAvIGFs
cGhhKSIpIGlzICJyZ2IoMTUzLCA1MSwgMjU1KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dy
b3VuZC1jb2xvciIsICJod2IoZnJvbSByZWJlY2NhcHVycGxlIGggdyBiIC8gMCkiKSBpcyAicmdi
YSgxMDIsIDUxLCAxNTMsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9y
IiwgImh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDAgdyBiIC8gYWxwaGEpIikgaXMg
InJnYmEoNzcsIDI2LCAyNiwgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1j
b2xvciIsICJod2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAwZGVnIHcgYiAvIGFscGhh
KSIpIGlzICJyZ2JhKDc3LCAyNiwgMjYsIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tn
cm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCAwJSBiIC8g
YWxwaGEpIikgaXMgInJnYmEoMCwgMzgsIDc3LCAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJi
YWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggdyAw
JSAvIGFscGhhKSIpIGlzICJyZ2JhKDI2LCAxMzgsIDI1NSwgMC40KSIKK1BBU1MgY29tcHV0ZWRT
dHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAl
KSBoIHcgYiAvIDApIikgaXMgInJnYmEoMjYsIDUxLCA3NywgMCkiCitQQVNTIGNvbXB1dGVkU3R5
bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmViZWNjYXB1cnBsZSAyNSB3IGIgLyBh
bHBoYSkiKSBpcyAicmdiKDE1MywgOTQsIDUxKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dy
b3VuZC1jb2xvciIsICJod2IoZnJvbSByZWJlY2NhcHVycGxlIDI1ZGVnIHcgYiAvIGFscGhhKSIp
IGlzICJyZ2IoMTUzLCA5NCwgNTEpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNv
bG9yIiwgImh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCAyNSUgYiAvIGFscGhhKSIpIGlzICJyZ2Io
MTA4LCA2NCwgMTUzKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJo
d2IoZnJvbSByZWJlY2NhcHVycGxlIGggdyAyNSUgLyBhbHBoYSkiKSBpcyAicmdiKDEyMSwgNTEs
IDE5MSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20g
cmViZWNjYXB1cnBsZSBoIHcgYiAvIC4yNSkiKSBpcyAicmdiYSgxMDIsIDUxLCAxNTMsIDAuMjUp
IgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJnYigx
MCUsIDIwJSwgMzAlLCA0MCUpIDI1IHcgYiAvIGFscGhhKSIpIGlzICJyZ2JhKDc3LCA0NywgMjYs
IDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20g
cmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgMjVkZWcgdyBiIC8gYWxwaGEpIikgaXMgInJnYmEoNzcs
IDQ3LCAyNiwgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJo
d2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIDI1JSBiIC8gYWxwaGEpIikgaXMgInJn
YmEoNjQsIDcwLCA3NywgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xv
ciIsICJod2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHcgMjUlIC8gYWxwaGEpIikg
aXMgInJnYmEoMjYsIDEwNywgMTkxLCAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3Jv
dW5kLWNvbG9yIiwgImh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggdyBiIC8gLjI1
KSIpIGlzICJyZ2JhKDI2LCA1MSwgNzcsIDAuMjUpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNr
Z3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCBiIHcpIikgaXMgInJnYmEo
MCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdi
KGZyb20gcmViZWNjYXB1cnBsZSBoIGFscGhhIHcgLyBiKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDAp
IgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJlYmVj
Y2FwdXJwbGUgaCB3IHcgLyB3KSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRl
ZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCBhbHBo
YSBhbHBoYSAvIGFscGhhKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0
eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUp
IGggYiB3KSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNr
Z3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggYWxwaGEg
dyAvIGIpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tn
cm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCB3IHcgLyB3
KSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5k
LWNvbG9yIiwgImh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggYWxwaGEgYWxwaGEg
LyBhbHBoYSkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFj
a2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSByZWJlY2NhcHVycGxlIGggMTAlIDEwKSIpIGlzICJy
Z2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
Imh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCAxMCAxMCUpIikgaXMgInJnYmEoMCwgMCwgMCwgMCki
CitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmViZWNj
YXB1cnBsZSAxMCUgdyBiKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0
eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUp
IGggMTAlIDEwKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJi
YWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggMTAg
MTAlKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3Jv
dW5kLWNvbG9yIiwgImh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDEwJSB3IGIpIikg
aXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29s
b3IiLCAiaHdiKGZyb20gcmViZWNjYXB1cnBsZSBodWUgdyBiKSIpIGlzICJyZ2JhKDAsIDAsIDAs
IDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJl
YmVjY2FwdXJwbGUgeCB3IGIpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVk
U3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmViZWNjYXB1cnBsZSBoIGcgYiki
KSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKKworbGFiKGZyb20gLi4uKQorUEFTUyBjb21wdXRlZFN0
eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAgNTApIGwgYSBiKSIp
IGlzICJsYWIoMjUlIDIwIDUwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xv
ciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGEgYiAvIGFscGhhKSIpIGlzICJsYWIoMjUl
IDIwIDUwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJv
bSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBsIGEgYiAvIGFscGhhKSIpIGlzICJsYWIoMjUlIDIwIDUw
IC8gMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJv
bSBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGEgYikgbCBhIGIpIikgaXMgImxhYigyNSUgMjAg
NTApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGNv
bG9yKGRpc3BsYXktcDMgMCAwIDApIGwgYSBiIC8gYWxwaGEpIikgaXMgImxhYigwJSAwIDApIgor
UEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigyNSUg
MjAgNTApIDAlIDAgMCkiKSBpcyAibGFiKDAlIDAgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJh
Y2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgMCUgMCAwIC8gMCkiKSBp
cyAibGFiKDAlIDAgMCAvIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9y
IiwgImxhYihmcm9tIGxhYigyNSUgMjAgNTApIDAlIGEgYiAvIGFscGhhKSIpIGlzICJsYWIoMCUg
MjAgNTApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9t
IGxhYigyNSUgMjAgNTApIGwgMCBiIC8gYWxwaGEpIikgaXMgImxhYigyNSUgMCA1MCkiCitQQVNT
IGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1
MCkgbCBhIDAgLyBhbHBoYSkiKSBpcyAibGFiKDI1JSAyMCAwKSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGEgYiAvIDAp
IikgaXMgImxhYigyNSUgMjAgNTAgLyAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3Vu
ZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSAwJSBhIGIgLyBhbHBoYSki
KSBpcyAibGFiKDAlIDIwIDUwIC8gMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3Vu
ZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBsIDAgYiAvIGFscGhhKSIp
IGlzICJsYWIoMjUlIDAgNTAgLyAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5k
LWNvbG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIGwgYSAwIC8gYWxwaGEpIikg
aXMgImxhYigyNSUgMjAgMCAvIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQt
Y29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCBhIGIgLyAwKSIpIGlzICJs
YWIoMjUlIDIwIDUwIC8gMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3Ii
LCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgMzUlIGEgYiAvIGFscGhhKSIpIGlzICJsYWIoMzUl
IDIwIDUwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJv
bSBsYWIoMjUlIDIwIDUwKSBsIDM1IGIgLyBhbHBoYSkiKSBpcyAibGFiKDI1JSAzNSA1MCkiCitQ
QVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAy
MCA1MCkgbCBhIDM1IC8gYWxwaGEpIikgaXMgImxhYigyNSUgMjAgMzUpIgorUEFTUyBjb21wdXRl
ZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAgNTApIGwgYSBi
IC8gLjM1KSIpIGlzICJsYWIoMjUlIDIwIDUwIC8gMC4zNSkiCitQQVNTIGNvbXB1dGVkU3R5bGUo
ImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgMzUlIGEg
YiAvIGFscGhhKSIpIGlzICJsYWIoMzUlIDIwIDUwIC8gMC40KSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBsIDM1
IGIgLyBhbHBoYSkiKSBpcyAibGFiKDI1JSAzNSA1MCAvIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5
bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCBh
IDM1IC8gYWxwaGEpIikgaXMgImxhYigyNSUgMjAgMzUgLyAwLjQpIgorUEFTUyBjb21wdXRlZFN0
eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIGwg
YSBiIC8gLjM1KSIpIGlzICJsYWIoMjUlIDIwIDUwIC8gMC4zNSkiCitQQVNTIGNvbXB1dGVkU3R5
bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCBiIGEpIikg
aXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29s
b3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCBhbHBoYSBhIC8gYikiKSBpcyAicmdiYSgw
LCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIo
ZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGEgYSAvIGEpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQ
QVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAy
MCA1MCkgbCBhbHBoYSBhbHBoYSAvIGFscGhhKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFT
UyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAg
NTAgLyA0MCUpIGwgYiBhKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0
eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIGwg
YWxwaGEgYSAvIGIpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUo
ImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCBhIGEg
LyBhKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3Jv
dW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIGwgYWxwaGEgYWxwaGEg
LyBhbHBoYSkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFj
a2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIDEwJSAxMCkiKSBpcyAi
cmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIs
ICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIDEwIDEwJSkiKSBpcyAicmdiYSgwLCAwLCAwLCAw
KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIo
MjUlIDIwIDUwKSAxMCBhIGIpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVk
U3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkg
bCAxMCUgMTApIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJh
Y2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCAxMCAxMCUp
IikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQt
Y29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgMTAgYSBiKSIpIGlzICJyZ2Jh
KDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxh
Yihmcm9tIGxhYigyNSUgMjAgNTApIGxpZ2h0bmVzcyBhIGIpIikgaXMgInJnYmEoMCwgMCwgMCwg
MCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFi
KDI1JSAyMCA1MCkgeCBhIGIpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVk
U3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgaCBnIGIp
IikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCisKK2xjaChmcm9tIC4uLikKK1BBU1MgY29tcHV0ZWRT
dHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDApIGwgYyBoKSIp
IGlzICJsYWIoNzAlIDQ1IDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9y
IiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCkgbCBjIGggLyBhbHBoYSkiKSBpcyAibGFiKDcwJSA0
NSAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBs
Y2goNzAlIDQ1IDAgLyA0MCUpIGwgYyBoLyBhbHBoYSkiKSBpcyAibGFiKDcwJSA0NSAwIC8gMC40
KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2go
ZnJvbSBsY2goNzAlIDQ1IDApIGwgYyBoKSBsIGMgaCkiKSBpcyAibGFiKDcwJSA0NSAwKSIKK1BB
U1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBjb2xvcihkaXNw
bGF5LXAzIDAgMCAwKSBsIGMgaCAvIGFscGhhKSIpIGlzICJsYWIoMCUgMCAwKSIKK1BBU1MgY29t
cHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDApIDAl
IDAgMCkiKSBpcyAibGFiKDAlIDAgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQt
Y29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAwKSAwJSAwIDBkZWcpIikgaXMgImxhYigwJSAw
IDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxj
aCg3MCUgNDUgMCkgMCUgMCAwIC8gMCkiKSBpcyAibGFiKDAlIDAgMCAvIDApIgorUEFTUyBjb21w
dXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCkgMCUg
MCAwZGVnIC8gMCkiKSBpcyAibGFiKDAlIDAgMCAvIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJi
YWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCkgMCUgYyBoIC8gYWxwaGEp
IikgaXMgImxhYigwJSA0NSAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xv
ciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDApIGwgMCBoIC8gYWxwaGEpIikgaXMgImxhYig3MCUg
MCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBs
Y2goNzAlIDQ1IDApIGwgYyAwIC8gYWxwaGEpIikgaXMgImxhYig3MCUgNDUgMCkiCitQQVNTIGNv
bXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAwKSBs
IGMgMGRlZyAvIGFscGhhKSIpIGlzICJsYWIoNzAlIDQ1IDApIgorUEFTUyBjb21wdXRlZFN0eWxl
KCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCkgbCBjIGggLyAwKSIp
IGlzICJsYWIoNzAlIDQ1IDAgLyAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1j
b2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDAgLyA0MCUpIDAlIGMgaCAvIGFscGhhKSIpIGlz
ICJsYWIoMCUgNDUgMCAvIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29s
b3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAwIC8gNDAlKSBsIDAgaCAvIGFscGhhKSIpIGlzICJs
YWIoNzAlIDAgMCAvIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3Ii
LCAibGNoKGZyb20gbGNoKDcwJSA0NSAwIC8gNDAlKSBsIGMgMCAvIGFscGhhKSIpIGlzICJsYWIo
NzAlIDQ1IDAgLyAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
ImxjaChmcm9tIGxjaCg3MCUgNDUgMCAvIDQwJSkgbCBjIDBkZWcgLyBhbHBoYSkiKSBpcyAibGFi
KDcwJSA0NSAwIC8gMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIs
ICJsY2goZnJvbSBsY2goNzAlIDQ1IDAgLyA0MCUpIGwgYyBoIC8gMCkiKSBpcyAibGFiKDcwJSA0
NSAwIC8gMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZy
b20gbGNoKDcwJSA0NSAwKSAyNSUgYyBoIC8gYWxwaGEpIikgaXMgImxhYigyNSUgNDUgMCkiCitQ
QVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0
NSAwKSBsIC00NSBoIC8gYWxwaGEpIikgaXMgImxhYig3MCUgMCAwKSIKK1BBU1MgY29tcHV0ZWRT
dHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDApIGwgYyA0NSAv
IGFscGhhKSIpIGlzICJsYWIoNzAlIDMxLjgxOTgwNSAzMS44MTk4MDUpIgorUEFTUyBjb21wdXRl
ZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCkgbCBjIDQ1
ZGVnIC8gYWxwaGEpIikgaXMgImxhYig3MCUgMzEuODE5ODA1IDMxLjgxOTgwNSkiCitQQVNTIGNv
bXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAwKSBs
IGMgaCAvIC4yNSkiKSBpcyAibGFiKDcwJSA0NSAwIC8gMC4yNSkiCitQQVNTIGNvbXB1dGVkU3R5
bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAwIC8gNDAlKSAyNSUg
YyBoIC8gYWxwaGEpIikgaXMgImxhYigyNSUgNDUgMCAvIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5
bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAwIC8gNDAlKSBsIC00
NSBoIC8gYWxwaGEpIikgaXMgImxhYig3MCUgMCAwIC8gMC40KSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDAgLyA0MCUpIGwgYyA0
NSAvIGFscGhhKSIpIGlzICJsYWIoNzAlIDMxLjgxOTgwNSAzMS44MTk4MDUgLyAwLjQpIgorUEFT
UyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUg
MCAvIDQwJSkgbCBjIDQ1ZGVnIC8gYWxwaGEpIikgaXMgImxhYig3MCUgMzEuODE5ODA1IDMxLjgx
OTgwNSAvIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNo
KGZyb20gbGNoKDcwJSA0NSAwIC8gNDAlKSBsIGMgaCAvIC4yNSkiKSBpcyAibGFiKDcwJSA0NSAw
IC8gMC4yNSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZy
b20gbGNoKDcwJSA0NSAwKSBhbHBoYSBjIGggLyBsKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgor
UEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUg
NDUgMCkgYWxwaGEgYyBoIC8gYWxwaGEpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNv
bXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAwIC8g
NDAlKSBhbHBoYSBjIGggLyBsKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRl
ZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCAvIDQwJSkg
YWxwaGEgYyBoIC8gYWxwaGEpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVk
U3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAwKSBsIDEwJSBo
KSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5k
LWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCkgbCBjIDEwJSkiKSBpcyAicmdiYSgwLCAw
LCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJv
bSBsY2goNzAlIDQ1IDApIDEwIGMgaCkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29t
cHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDAgLyA0
MCUpIGwgMTAlIGgpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUo
ImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAwIC8gNDAlKSBsIGMgMTAl
KSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5k
LWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCAvIDQwJSkgMTAgYyBoKSIpIGlzICJyZ2Jh
KDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxj
aChmcm9tIGxjaCg3MCUgNDUgMCkgbGlnaHRuZXNzIGMgaCkiKSBpcyAicmdiYSgwLCAwLCAwLCAw
KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2go
NzAlIDQ1IDApIHggYyBoKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0
eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMCkgbCBnIGIpIikg
aXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2luZy1yZWxh
dGl2ZS1jb2xvci1zeW50YXguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9wYXJzaW5nLXJlbGF0aXZlLWNvbG9yLXN5bnRheC5odG1sCShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctcmVsYXRpdmUtY29sb3Itc3ludGF4Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzODIgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsgQ1NTUmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQ9dHJ1ZSBdIC0tPgor
PGh0bWw+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRl
c3QgdGhlIHBhcnNpbmcgb2YgQ1NTIENvbG9yIDUgUmVsYXRpdmUgQ29sb3IgU3ludGF4LiIpOwor
CisgICAgZnVuY3Rpb24gY29tcHV0ZWRTdHlsZShwcm9wZXJ0eSwgdmFsdWUpCisgICAgeworICAg
ICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgICAgICAgZGl2LnN0eWxlLnNldFByb3Bl
cnR5KHByb3BlcnR5LCB2YWx1ZSk7CisgICAgICAgIHZhciBjb21wdXRlZFZhbHVlID0gZ2V0Q29t
cHV0ZWRTdHlsZShkaXYpLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHkpOworICAgICAgICBkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7CisgICAgICAgIHJldHVybiBjb21wdXRlZFZhbHVl
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGlubmVyU3R5bGUocHJvcGVydHksIHZhbHVlKQorICAg
IHsKKyAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
ICAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkocHJvcGVydHksIHZhbHVlKTsKKyAgICAgICAgcmV0
dXJuIGRpdi5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHByb3BlcnR5KTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiB0ZXN0Q29tcHV0ZWRQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUsIGV4cGVjdGVkKQor
ICAgIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdjb21wdXRlZFN0eWxlKCInICsg
cHJvcGVydHkgKyAnIiwgIicgKyB2YWx1ZSArICciKScsIGV4cGVjdGVkKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiB0ZXN0Q29tcHV0ZWQodmFsdWUsIGV4cGVjdGVkKQorICAgIHsKKyAgICAgICAg
dGVzdENvbXB1dGVkUHJvcGVydHkoImJhY2tncm91bmQtY29sb3IiLCB2YWx1ZSwgZXhwZWN0ZWQp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RJbm5lcihwcm9wZXJ0eSwgdmFsdWUsIGV4cGVj
dGVkKQorICAgIHsKKyAgICAgICAgaWYgKGV4cGVjdGVkID09PSBudWxsKQorICAgICAgICAgICAg
ZXhwZWN0ZWQgPSAiIjsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdpbm5lclN0eWxl
KCInICsgcHJvcGVydHkgKyAnIiwgIicgKyB2YWx1ZSArICciKScsIGV4cGVjdGVkKTsKKyAgICB9
CisKKworICAgIGRlYnVnKCdyZ2IoZnJvbSAuLi4pJyk7CisKKyAgICAvLyBUZXN0aW5nIG5vIG1v
ZGlmaWNhdGlvbnMuCisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIg
ZyBiKWAsIGByZ2IoMTAyLCA1MSwgMTUzKWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20g
cmViZWNjYXB1cnBsZSByIGcgYiAvIGFscGhhKWAsIGByZ2IoMTAyLCA1MSwgMTUzKWApOworICAg
IHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgciBnIGIgLyBh
bHBoYSlgLCBgcmdiYSgyNiwgNTEsIDc3LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2Io
ZnJvbSBoc2woMTIwZGVnIDIwJSA1MCUgLyAuNSkgciBnIGIgLyBhbHBoYSlgLCBgcmdiYSgxMDIs
IDE1MywgMTAyLCAwLjUpYCk7CisKKyAgICAvLyBUZXN0IG5lc3RpbmcgcmVsYXRpdmUgY29sb3Jz
LgorICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmdiKGZyb20gcmViZWNjYXB1cnBsZSByIGcg
YikgciBnIGIpYCwgYHJnYigxMDIsIDUxLCAxNTMpYCk7CisKKyAgICAvLyBUZXN0aW5nIG5vbi1z
UkdCIG9yaWdpbiBjb2xvcnMgdG8gc2VlIGdhbXV0IGNsaXBwaW5nLgorICAgIHRlc3RDb21wdXRl
ZChgcmdiKGZyb20gY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgciBnIGIgLyBhbHBoYSlgLCBgcmdi
KDAsIDI1NSwgMClgKTsKKworICAgIC8vIFRlc3RpbmcgcmVwbGFjZW1lbnQgd2l0aCAwLgorICAg
IHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmViZWNjYXB1cnBsZSAwIDAgMClgLCBgcmdiKDAsIDAs
IDApYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIDAgMCAwIC8g
MClgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmVi
ZWNjYXB1cnBsZSAwIGcgYiAvIGFscGhhKWAsIGByZ2IoMCwgNTEsIDE1MylgKTsKKyAgICB0ZXN0
Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVjY2FwdXJwbGUgciAwIGIgLyBhbHBoYSlgLCBgcmdiKDEw
MiwgMCwgMTUzKWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmViZWNjYXB1cnBsZSBy
IGcgMCAvIGFscGhhKWAsIGByZ2IoMTAyLCA1MSwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJn
Yihmcm9tIHJlYmVjY2FwdXJwbGUgciBnIGIgLyAwKWAsIGByZ2JhKDEwMiwgNTEsIDE1MywgMClg
KTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDAg
ZyBiIC8gYWxwaGEpYCwgYHJnYmEoMCwgNTEsIDc3LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVk
KGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIDAgYiAvIGFscGhhKWAsIGByZ2Jh
KDI2LCAwLCA3NywgMC40KWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmdiKDEwJSwg
MjAlLCAzMCUsIDQwJSkgciBnIDAgLyBhbHBoYSlgLCBgcmdiYSgyNiwgNTEsIDAsIDAuNClgKTsK
KyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIHIgZyBi
IC8gMClgLCBgcmdiYSgyNiwgNTEsIDc3LCAwKWApOworCisgICAgLy8gVGVzdGluZyByZXBsYWNl
bWVudCB3aXRoIGEgbnVtYmVyLgorICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmViZWNjYXB1
cnBsZSAyNSBnIGIgLyBhbHBoYSlgLCBgcmdiKDI1LCA1MSwgMTUzKWApOworICAgIHRlc3RDb21w
dXRlZChgcmdiKGZyb20gcmViZWNjYXB1cnBsZSByIDI1IGIgLyBhbHBoYSlgLCBgcmdiKDEwMiwg
MjUsIDE1MylgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVjY2FwdXJwbGUgciBn
IDI1IC8gYWxwaGEpYCwgYHJnYigxMDIsIDUxLCAyNSlgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJn
Yihmcm9tIHJlYmVjY2FwdXJwbGUgciBnIGIgLyAuMjUpYCwgYHJnYmEoMTAyLCA1MSwgMTUzLCAw
LjI1KWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQw
JSkgMjUgZyBiIC8gYWxwaGEpYCwgYHJnYmEoMjUsIDUxLCA3NywgMC40KWApOworICAgIHRlc3RD
b21wdXRlZChgcmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgciAyNSBiIC8gYWxwaGEp
YCwgYHJnYmEoMjYsIDI1LCA3NywgMC40KWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20g
cmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgciBnIDI1IC8gYWxwaGEpYCwgYHJnYmEoMjYsIDUxLCAy
NSwgMC40KWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUs
IDQwJSkgciBnIGIgLyAuMjUpYCwgYHJnYmEoMjYsIDUxLCA3NywgMC4yNSlgKTsKKworICAgIC8v
IFRlc3RpbmcgcmVwbGFjZW1lbnQgd2l0aCBhIHBlcmNlbnRhZ2UuCisgICAgdGVzdENvbXB1dGVk
KGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIDI1JSBnIGIgLyBhbHBoYSlgLCBgcmdiKDY0LCA1MSwg
MTUzKWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmViZWNjYXB1cnBsZSByIDI1JSBi
IC8gYWxwaGEpYCwgYHJnYigxMDIsIDY0LCAxNTMpYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2Io
ZnJvbSByZWJlY2NhcHVycGxlIHIgZyAyNSUgLyBhbHBoYSlgLCBgcmdiKDEwMiwgNTEsIDY0KWAp
OworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmViZWNjYXB1cnBsZSByIGcgYiAvIDI1JSlg
LCBgcmdiYSgxMDIsIDUxLCAxNTMsIDAuMjUpYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJv
bSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAyNSUgZyBiIC8gYWxwaGEpYCwgYHJnYmEoNjQsIDUx
LCA3NywgMC40KWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmdiKDEwJSwgMjAlLCAz
MCUsIDQwJSkgciAyNSUgYiAvIGFscGhhKWAsIGByZ2JhKDI2LCA2NCwgNzcsIDAuNClgKTsKKyAg
ICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIHIgZyAyNSUg
LyBhbHBoYSlgLCBgcmdiYSgyNiwgNTEsIDY0LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBy
Z2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIGcgYiAvIDI1JSlgLCBgcmdiYSgyNiwg
NTEsIDc3LCAwLjI1KWApOworCisgICAgLy8gVGVzdGluZyByZXBsYWNlbWVudCB3aXRoIGEgbnVt
YmVyIGZvciByLCBnLCBiIGJ1dCBwZXJjZW50IGZvciBhbHBoYS4KKyAgICB0ZXN0Q29tcHV0ZWQo
YHJnYihmcm9tIHJlYmVjY2FwdXJwbGUgMjUgZyBiIC8gMjUlKWAsIGByZ2JhKDI1LCA1MSwgMTUz
LCAwLjI1KWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmViZWNjYXB1cnBsZSByIDI1
IGIgLyAyNSUpYCwgYHJnYmEoMTAyLCAyNSwgMTUzLCAwLjI1KWApOworICAgIHRlc3RDb21wdXRl
ZChgcmdiKGZyb20gcmViZWNjYXB1cnBsZSByIGcgMjUgLyAyNSUpYCwgYHJnYmEoMTAyLCA1MSwg
MjUsIDAuMjUpYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMw
JSwgNDAlKSAyNSBnIGIgLyAyNSUpYCwgYHJnYmEoMjUsIDUxLCA3NywgMC4yNSlgKTsKKyAgICB0
ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIHIgMjUgYiAvIDI1
JSlgLCBgcmdiYSgyNiwgMjUsIDc3LCAwLjI1KWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZy
b20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgciBnIDI1IC8gMjUlKWAsIGByZ2JhKDI2LCA1MSwg
MjUsIDAuMjUpYCk7CisKKyAgICAvLyBUZXN0aW5nIHBlcm11dGF0aW9uICh1bmNsZWFyIGlmIHRo
aXMgaXMgYWxsb3dlZCBwZXItc3BlYywgd2UgZGlzYWxsb3cgaXQpLgorICAgIHRlc3RDb21wdXRl
ZChgcmdiKGZyb20gcmViZWNjYXB1cnBsZSBnIGIgcilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOwor
ICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmViZWNjYXB1cnBsZSBiIGFscGhhIHIgLyBnKWAs
IGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJlY2Nh
cHVycGxlIHIgciByIC8gcilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRl
ZChgcmdiKGZyb20gcmViZWNjYXB1cnBsZSBhbHBoYSBhbHBoYSBhbHBoYSAvIGFscGhhKWAsIGBy
Z2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAy
MCUsIDMwJSwgNDAlKSBnIGIgcilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21w
dXRlZChgcmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgYiBhbHBoYSByIC8gZylgLCBg
cmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmdiKDEwJSwg
MjAlLCAzMCUsIDQwJSkgciByIHIgLyByKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVz
dENvbXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBhbHBoYSBhbHBoYSBh
bHBoYSAvIGFscGhhKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisKKyAgICAvLyBUZXN0aW5nIGlu
dmFsaWQgbWl4ZXMgb2YgbnVtYmVyIGFuZCBwZXJjZW50YWdlCisgICAgdGVzdENvbXB1dGVkKGBy
Z2IoZnJvbSByZWJlY2NhcHVycGxlIHIgMTAlIDEwKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7Cisg
ICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgMTAgMTAlKWAsIGByZ2Jh
KDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxl
IDAlIDEwIDEwKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2Io
ZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIDEwJSAxMClgLCBgcmdiYSgwLCAwLCAwLCAw
KWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkg
ciAxMCAxMCUpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihm
cm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDAlIDEwIDEwKWAsIGByZ2JhKDAsIDAsIDAsIDAp
YCk7CisKKyAgICAvLyBUZXN0aW5nIGludmFsaWQgY29tcG9uZW50IG5hbWVzCisgICAgdGVzdENv
bXB1dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIHJlZCBnIGIpYCwgYHJnYmEoMCwgMCwgMCwg
MClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVjY2FwdXJwbGUgbCBnIGIpYCwg
YHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVjY2Fw
dXJwbGUgaCBnIGIpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKworICAgIGRlYnVnKCcnKTsKKyAg
ICBkZWJ1ZygnaHNsKGZyb20gLi4uKScpOworCisgICAgLy8gVGVzdGluZyBubyBtb2RpZmljYXRp
b25zLgorICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIHMgbClgLCBg
cmdiKDEwMiwgNTEsIDE1MylgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJlYmVjY2Fw
dXJwbGUgaCBzIGwgLyBhbHBoYSlgLCBgcmdiKDEwMiwgNTEsIDE1MylgKTsKKyAgICB0ZXN0Q29t
cHV0ZWQoYGhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggcyBsIC8gYWxwaGEpYCwg
YHJnYmEoMjYsIDUxLCA3NywgMC40KWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gaHNs
KDEyMGRlZyAyMCUgNTAlIC8gLjUpIGggcyBsIC8gYWxwaGEpYCwgYHJnYmEoMTAyLCAxNTMsIDEw
MiwgMC41KWApOworCisgICAgLy8gVGVzdCBuZXN0aW5nIHJlbGF0aXZlIGNvbG9ycy4KKyAgICB0
ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIGhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaCBzIGwpIGggcyBs
KWAsIGByZ2IoMTAyLCA1MSwgMTUzKWApOworCisgICAgLy8gVGVzdGluZyBub24tc1JHQiBvcmln
aW4gY29sb3JzIHRvIHNlZSBnYW11dCBjbGlwcGluZy4KKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChm
cm9tIGNvbG9yKGRpc3BsYXktcDMgMCAxIDApIGggcyBsIC8gYWxwaGEpYCwgYHJnYigwLCAyNTUs
IDApYCk7CisKKyAgICAvLyBUZXN0aW5nIHJlcGxhY2VtZW50IHdpdGggMC4KKyAgICB0ZXN0Q29t
cHV0ZWQoYGhzbChmcm9tIHJlYmVjY2FwdXJwbGUgMCAwJSAwJSlgLCBgcmdiKDAsIDAsIDApYCk7
CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIDBkZWcgMCUgMCUpYCwg
YHJnYigwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBs
ZSAwIDAlIDAlIC8gMClgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChg
aHNsKGZyb20gcmViZWNjYXB1cnBsZSAwZGVnIDAlIDAlIC8gMClgLCBgcmdiYSgwLCAwLCAwLCAw
KWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBsZSAwIHMgbCAvIGFs
cGhhKWAsIGByZ2IoMTUzLCA1MSwgNTEpYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSBy
ZWJlY2NhcHVycGxlIDBkZWcgcyBsIC8gYWxwaGEpYCwgYHJnYigxNTMsIDUxLCA1MSlgKTsKKyAg
ICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaCAwJSBsIC8gYWxwaGEpYCwg
YHJnYigxMDIsIDEwMiwgMTAyKWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNj
YXB1cnBsZSBoIHMgMCUgLyBhbHBoYSlgLCBgcmdiKDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1
dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIGggcyBsIC8gMClgLCBgcmdiYSgxMDIsIDUxLCAx
NTMsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwg
NDAlKSAwIHMgbCAvIGFscGhhKWAsIGByZ2JhKDc3LCAyNiwgMjYsIDAuNClgKTsKKyAgICB0ZXN0
Q29tcHV0ZWQoYGhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDBkZWcgcyBsIC8gYWxw
aGEpYCwgYHJnYmEoNzcsIDI2LCAyNiwgMC40KWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZy
b20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCAwJSBsIC8gYWxwaGEpYCwgYHJnYmEoNTIsIDUy
LCA1MiwgMC40KWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmdiKDEwJSwgMjAlLCAz
MCUsIDQwJSkgaCBzIDAlIC8gYWxwaGEpYCwgYHJnYmEoMCwgMCwgMCwgMC40KWApOworICAgIHRl
c3RDb21wdXRlZChgaHNsKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCBzIGwgLyAwKWAs
IGByZ2JhKDI2LCA1MSwgNzcsIDApYCk7CisKKyAgICAvLyBUZXN0aW5nIHJlcGxhY2VtZW50IHdp
dGggYSBjb25zdGFudC4KKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJlYmVjY2FwdXJwbGUg
MjUgcyBsIC8gYWxwaGEpYCwgYHJnYigxNTMsIDk0LCA1MSlgKTsKKyAgICB0ZXN0Q29tcHV0ZWQo
YGhzbChmcm9tIHJlYmVjY2FwdXJwbGUgMjVkZWcgcyBsIC8gYWxwaGEpYCwgYHJnYigxNTMsIDk0
LCA1MSlgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaCAyNSUg
bCAvIGFscGhhKWAsIGByZ2IoMTAyLCA3NywgMTI4KWApOworICAgIHRlc3RDb21wdXRlZChgaHNs
KGZyb20gcmViZWNjYXB1cnBsZSBoIHMgMjUlIC8gYWxwaGEpYCwgYHJnYig2NCwgMzIsIDk2KWAp
OworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIHMgbCAvIC4yNSlg
LCBgcmdiYSgxMDIsIDUxLCAxNTMsIDAuMjUpYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJv
bSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAyNSBzIGwgLyBhbHBoYSlgLCBgcmdiYSg3NywgNDcs
IDI2LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMw
JSwgNDAlKSAyNWRlZyBzIGwgLyBhbHBoYSlgLCBgcmdiYSg3NywgNDcsIDI2LCAwLjQpYCk7Cisg
ICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIDI1JSBs
IC8gYWxwaGEpYCwgYHJnYmEoMzksIDUxLCA2NCwgMC40KWApOworICAgIHRlc3RDb21wdXRlZChg
aHNsKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCBzIDI1JSAvIGFscGhhKWAsIGByZ2Jh
KDMyLCA2MywgOTUsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJnYigxMCUs
IDIwJSwgMzAlLCA0MCUpIGggcyBsIC8gLjI1KWAsIGByZ2JhKDI2LCA1MSwgNzcsIDAuMjUpYCk7
CisKKyAgICAvLyBUZXN0aW5nIHBlcm11dGF0aW9uICh1bmNsZWFyIGlmIHRoaXMgaXMgYWxsb3dl
ZCBwZXItc3BlYywgd2UgZGlzYWxsb3cgaXQpLgorICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20g
cmViZWNjYXB1cnBsZSBoIGwgcylgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21w
dXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIGFscGhhIGwgLyBzKWAsIGByZ2JhKDAsIDAs
IDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIGggbCBs
IC8gbClgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20g
cmViZWNjYXB1cnBsZSBoIGFscGhhIGFscGhhIC8gYWxwaGEpYCwgYHJnYmEoMCwgMCwgMCwgMClg
KTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGgg
bCBzKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSBy
Z2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIGFscGhhIGwgLyBzKWAsIGByZ2JhKDAsIDAsIDAsIDAp
YCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBo
IGwgbCAvIGwpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChm
cm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggYWxwaGEgYWxwaGEgLyBhbHBoYSlgLCBgcmdi
YSgwLCAwLCAwLCAwKWApOworCisgICAgLy8gVGVzdGluZyBpbnZhbGlkIHZhbHVlcy4KKyAgICB0
ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaCAxMCUgMTApYCwgYHJnYmEoMCwg
MCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaCAx
MCAxMCUpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9t
IHJlYmVjY2FwdXJwbGUgMTAlIHMgbClgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RD
b21wdXRlZChgaHNsKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCAxMCUgMTApYCwgYHJn
YmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJnYigxMCUsIDIw
JSwgMzAlLCA0MCUpIGggMTAgMTAlKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENv
bXB1dGVkKGBoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAxMCUgcyBsKWAsIGByZ2Jh
KDAsIDAsIDAsIDApYCk7CisKKyAgICAvLyBUZXN0aW5nIGludmFsaWQgY29tcG9uZW50IG5hbWVz
CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIGh1ZSBzIGwpYCwgYHJn
YmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJlYmVjY2FwdXJw
bGUgeCBzIGwpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChm
cm9tIHJlYmVjY2FwdXJwbGUgaCBnIGIpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKworCisgICAg
ZGVidWcoJycpOworICAgIGRlYnVnKCdod2IoZnJvbSAuLi4pJyk7CisKKyAgICAvLyBUZXN0aW5n
IG5vIG1vZGlmaWNhdGlvbnMuCisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVy
cGxlIGggdyBiKWAsIGByZ2IoMTAyLCA1MSwgMTUzKWApOworICAgIHRlc3RDb21wdXRlZChgaHdi
KGZyb20gcmViZWNjYXB1cnBsZSBoIHcgYiAvIGFscGhhKWAsIGByZ2IoMTAyLCA1MSwgMTUzKWAp
OworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCB3
IGIgLyBhbHBoYSlgLCBgcmdiYSgyNiwgNTEsIDc3LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVk
KGBod2IoZnJvbSBoc2woMTIwZGVnIDIwJSA1MCUgLyAuNSkgaCB3IGIgLyBhbHBoYSlgLCBgcmdi
YSgxMDIsIDE1MywgMTAyLCAwLjUpYCk7CisKKyAgICAvLyBUZXN0IG5lc3RpbmcgcmVsYXRpdmUg
Y29sb3JzLgorICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gaHdiKGZyb20gcmViZWNjYXB1cnBs
ZSBoIHcgYikgaCB3IGIpYCwgYHJnYigxMDIsIDUxLCAxNTMpYCk7CisKKyAgICAvLyBUZXN0aW5n
IG5vbi1zUkdCIG9yaWdpbiBjb2xvcnMgdG8gc2VlIGdhbXV0IGNsaXBwaW5nLgorICAgIHRlc3RD
b21wdXRlZChgaHdiKGZyb20gY29sb3IoZGlzcGxheS1wMyAwIDEgMCkgaCB3IGIgLyBhbHBoYSlg
LCBgcmdiKDAsIDI1NSwgMClgKTsKKworICAgIC8vIFRlc3RpbmcgcmVwbGFjZW1lbnQgd2l0aCAw
LgorICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmViZWNjYXB1cnBsZSAwIDAlIDAlKWAsIGBy
Z2IoMjU1LCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmViZWNjYXB1cnBs
ZSAwZGVnIDAlIDAlKWAsIGByZ2IoMjU1LCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHdi
KGZyb20gcmViZWNjYXB1cnBsZSAwIDAlIDAlIC8gMClgLCBgcmdiYSgyNTUsIDAsIDAsIDApYCk7
CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxlIDBkZWcgMCUgMCUgLyAw
KWAsIGByZ2JhKDI1NSwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJl
YmVjY2FwdXJwbGUgMCB3IGIgLyBhbHBoYSlgLCBgcmdiKDE1MywgNTEsIDUxKWApOworICAgIHRl
c3RDb21wdXRlZChgaHdiKGZyb20gcmViZWNjYXB1cnBsZSAwZGVnIHcgYiAvIGFscGhhKWAsIGBy
Z2IoMTUzLCA1MSwgNTEpYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVy
cGxlIGggMCUgYiAvIGFscGhhKWAsIGByZ2IoNzcsIDAsIDE1MylgKTsKKyAgICB0ZXN0Q29tcHV0
ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCB3IDAlIC8gYWxwaGEpYCwgYHJnYigxNTMsIDUx
LCAyNTUpYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxlIGggdyBi
IC8gMClgLCBgcmdiYSgxMDIsIDUxLCAxNTMsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2Io
ZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAwIHcgYiAvIGFscGhhKWAsIGByZ2JhKDc3LCAy
NiwgMjYsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJnYigxMCUsIDIwJSwg
MzAlLCA0MCUpIDBkZWcgdyBiIC8gYWxwaGEpYCwgYHJnYmEoNzcsIDI2LCAyNiwgMC40KWApOwor
ICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCAwJSBi
IC8gYWxwaGEpYCwgYHJnYmEoMCwgMzgsIDc3LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBo
d2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHcgMCUgLyBhbHBoYSlgLCBgcmdiYSgy
NiwgMTM4LCAyNTUsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJnYigxMCUs
IDIwJSwgMzAlLCA0MCUpIGggdyBiIC8gMClgLCBgcmdiYSgyNiwgNTEsIDc3LCAwKWApOworCisg
ICAgLy8gVGVzdGluZyByZXBsYWNlbWVudCB3aXRoIGEgY29uc3RhbnQuCisgICAgdGVzdENvbXB1
dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxlIDI1IHcgYiAvIGFscGhhKWAsIGByZ2IoMTUzLCA5
NCwgNTEpYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxlIDI1ZGVn
IHcgYiAvIGFscGhhKWAsIGByZ2IoMTUzLCA5NCwgNTEpYCk7CisgICAgdGVzdENvbXB1dGVkKGBo
d2IoZnJvbSByZWJlY2NhcHVycGxlIGggMjUlIGIgLyBhbHBoYSlgLCBgcmdiKDEwOCwgNjQsIDE1
MylgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCB3IDI1JSAv
IGFscGhhKWAsIGByZ2IoMTIxLCA1MSwgMTkxKWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZy
b20gcmViZWNjYXB1cnBsZSBoIHcgYiAvIC4yNSlgLCBgcmdiYSgxMDIsIDUxLCAxNTMsIDAuMjUp
YCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAy
NSB3IGIgLyBhbHBoYSlgLCBgcmdiYSg3NywgNDcsIDI2LCAwLjQpYCk7CisgICAgdGVzdENvbXB1
dGVkKGBod2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAyNWRlZyB3IGIgLyBhbHBoYSlg
LCBgcmdiYSg3NywgNDcsIDI2LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSBy
Z2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIDI1JSBiIC8gYWxwaGEpYCwgYHJnYmEoNjQsIDcwLCA3
NywgMC40KWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUs
IDQwJSkgaCB3IDI1JSAvIGFscGhhKWAsIGByZ2JhKDI2LCAxMDcsIDE5MSwgMC40KWApOworICAg
IHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCB3IGIgLyAu
MjUpYCwgYHJnYmEoMjYsIDUxLCA3NywgMC4yNSlgKTsKKworICAgIC8vIFRlc3RpbmcgcGVybXV0
YXRpb24gKHVuY2xlYXIgaWYgdGhpcyBpcyBhbGxvd2VkIHBlci1zcGVjLCB3ZSBkaXNhbGxvdyBp
dCkuCisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxlIGggYiB3KWAsIGBy
Z2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVy
cGxlIGggYWxwaGEgdyAvIGIpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0
ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCB3IHcgLyB3KWAsIGByZ2JhKDAsIDAsIDAsIDAp
YCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxlIGggYWxwaGEgYWxw
aGEgLyBhbHBoYSlgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHdi
KGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCBiIHcpYCwgYHJnYmEoMCwgMCwgMCwgMClg
KTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGgg
YWxwaGEgdyAvIGIpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3
Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggdyB3IC8gdylgLCBgcmdiYSgwLCAwLCAw
LCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQw
JSkgaCBhbHBoYSBhbHBoYSAvIGFscGhhKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisKKyAgICAv
LyBUZXN0aW5nIGludmFsaWQgdmFsdWVzLgorICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmVi
ZWNjYXB1cnBsZSBoIDEwJSAxMClgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21w
dXRlZChgaHdiKGZyb20gcmViZWNjYXB1cnBsZSBoIDEwIDEwJSlgLCBgcmdiYSgwLCAwLCAwLCAw
KWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmViZWNjYXB1cnBsZSAxMCUgdyBiKWAs
IGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZ2IoMTAl
LCAyMCUsIDMwJSwgNDAlKSBoIDEwJSAxMClgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRl
c3RDb21wdXRlZChgaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCAxMCAxMCUpYCwg
YHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJnYigxMCUs
IDIwJSwgMzAlLCA0MCUpIDEwJSB3IGIpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKworICAgIC8v
IFRlc3RpbmcgaW52YWxpZCBjb21wb25lbnQgbmFtZXMKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihm
cm9tIHJlYmVjY2FwdXJwbGUgaHVlIHcgYilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRl
c3RDb21wdXRlZChgaHdiKGZyb20gcmViZWNjYXB1cnBsZSB4IHcgYilgLCBgcmdiYSgwLCAwLCAw
LCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmViZWNjYXB1cnBsZSBoIGcgYilg
LCBgcmdiYSgwLCAwLCAwLCAwKWApOworCisKKyAgICBkZWJ1ZygnJyk7CisgICAgZGVidWcoJ2xh
Yihmcm9tIC4uLiknKTsKKworICAgIC8vIFRlc3Rpbmcgbm8gbW9kaWZpY2F0aW9ucy4KKyAgICB0
ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTApIGwgYSBiKWAsIGBsYWIoMjUlIDIw
IDUwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCBhIGIg
LyBhbHBoYSlgLCBgbGFiKDI1JSAyMCA1MClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9t
IGxhYigyNSUgMjAgNTAgLyA0MCUpIGwgYSBiIC8gYWxwaGEpYCwgYGxhYigyNSUgMjAgNTAgLyAw
LjQpYCk7CisKKyAgICAvLyBUZXN0IG5lc3RpbmcgcmVsYXRpdmUgY29sb3JzLgorICAgIHRlc3RD
b21wdXRlZChgbGFiKGZyb20gbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCBhIGIpIGwgYSBiKWAs
IGBsYWIoMjUlIDIwIDUwKWApOworCisgICAgLy8gVGVzdGluZyBub24tbGFiIG9yaWdpbiB0byBz
ZWUgY29udmVyc2lvbi4KKyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGNvbG9yKGRpc3BsYXkt
cDMgMCAwIDApIGwgYSBiIC8gYWxwaGEpYCwgYGxhYigwJSAwIDApYCk7CisKKyAgICAvLyBUZXN0
aW5nIHJlcGxhY2VtZW50IHdpdGggMC4KKyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigy
NSUgMjAgNTApIDAlIDAgMClgLCBgbGFiKDAlIDAgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxh
Yihmcm9tIGxhYigyNSUgMjAgNTApIDAlIDAgMCAvIDApYCwgYGxhYigwJSAwIDAgLyAwKWApOwor
ICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgMCUgYSBiIC8gYWxwaGEp
YCwgYGxhYigwJSAyMCA1MClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUg
MjAgNTApIGwgMCBiIC8gYWxwaGEpYCwgYGxhYigyNSUgMCA1MClgKTsKKyAgICB0ZXN0Q29tcHV0
ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTApIGwgYSAwIC8gYWxwaGEpYCwgYGxhYigyNSUgMjAg
MClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTApIGwgYSBiIC8g
MClgLCBgbGFiKDI1JSAyMCA1MCAvIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBs
YWIoMjUlIDIwIDUwIC8gNDAlKSAwJSBhIGIgLyBhbHBoYSlgLCBgbGFiKDAlIDIwIDUwIC8gMC40
KWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCAw
IGIgLyBhbHBoYSlgLCBgbGFiKDI1JSAwIDUwIC8gMC40KWApOworICAgIHRlc3RDb21wdXRlZChg
bGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCBhIDAgLyBhbHBoYSlgLCBgbGFiKDI1JSAy
MCAwIC8gMC40KWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCAv
IDQwJSkgbCBhIGIgLyAwKWAsIGBsYWIoMjUlIDIwIDUwIC8gMClgKTsKKworICAgIC8vIFRlc3Rp
bmcgcmVwbGFjZW1lbnQgd2l0aCBhIGNvbnN0YW50LgorICAgIHRlc3RDb21wdXRlZChgbGFiKGZy
b20gbGFiKDI1JSAyMCA1MCkgMzUlIGEgYiAvIGFscGhhKWAsIGBsYWIoMzUlIDIwIDUwKWApOwor
ICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCAzNSBiIC8gYWxwaGEp
YCwgYGxhYigyNSUgMzUgNTApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUl
IDIwIDUwKSBsIGEgMzUgLyBhbHBoYSlgLCBgbGFiKDI1JSAyMCAzNSlgKTsKKyAgICB0ZXN0Q29t
cHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTApIGwgYSBiIC8gLjM1KWAsIGBsYWIoMjUlIDIw
IDUwIC8gMC4zNSlgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTAg
LyA0MCUpIDM1JSBhIGIgLyBhbHBoYSlgLCBgbGFiKDM1JSAyMCA1MCAvIDAuNClgKTsKKyAgICB0
ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIGwgMzUgYiAvIGFscGhh
KWAsIGBsYWIoMjUlIDM1IDUwIC8gMC40KWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20g
bGFiKDI1JSAyMCA1MCAvIDQwJSkgbCBhIDM1IC8gYWxwaGEpYCwgYGxhYigyNSUgMjAgMzUgLyAw
LjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBs
IGEgYiAvIC4zNSlgLCBgbGFiKDI1JSAyMCA1MCAvIDAuMzUpYCk7CisKKyAgICAvLyBUZXN0aW5n
IHBlcm11dGF0aW9uICh1bmNsZWFyIGlmIHRoaXMgaXMgYWxsb3dlZCBwZXItc3BlYywgd2UgZGlz
YWxsb3cgaXQpLgorICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCBi
IGEpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxh
YigyNSUgMjAgNTApIGwgYWxwaGEgYSAvIGIpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0
ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTApIGwgYSBhIC8gYSlgLCBgcmdiYSgw
LCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkg
bCBhbHBoYSBhbHBoYSAvIGFscGhhKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENv
bXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBsIGIgYSlgLCBgcmdiYSgwLCAw
LCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQw
JSkgbCBhbHBoYSBhIC8gYilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRl
ZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCBhIGEgLyBhKWAsIGByZ2JhKDAsIDAs
IDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAl
KSBsIGFscGhhIGFscGhhIC8gYWxwaGEpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKworICAgIC8v
IFRlc3RpbmcgaW52YWxpZCB2YWx1ZXMuCisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIo
MjUlIDIwIDUwKSBsIDEwJSAxMClgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21w
dXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCAxMCAxMCUpYCwgYHJnYmEoMCwgMCwgMCwg
MClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTApIDEwIGEgYilg
LCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1
JSAyMCA1MCAvIDQwJSkgbCAxMCUgMTApYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0
Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIGwgMTAgMTAlKWAsIGByZ2Jh
KDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUw
IC8gNDAlKSAxMCBhIGIpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKworICAgIC8vIFRlc3Rpbmcg
aW52YWxpZCBjb21wb25lbnQgbmFtZXMKKyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigy
NSUgMjAgNTApIGxpZ2h0bmVzcyBhIGIpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0
Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTApIHggYSBiKWAsIGByZ2JhKDAsIDAsIDAs
IDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBoIGcgYilg
LCBgcmdiYSgwLCAwLCAwLCAwKWApOworCisKKyAgICBkZWJ1ZygnJyk7CisgICAgZGVidWcoJ2xj
aChmcm9tIC4uLiknKTsKKworICAgIC8vIFVzaW5nIGxjaCg3MCUgNDUgMCkgYXMgaXQgY29udmVy
dHMgbmljZWx5IHRvIGxhYig3MCUgNDUgMCkgd2l0aG91dCBwcmVjaXNpb24gY29uY2VybnMgaW4g
bW9zdAorICAgIC8vIGNhc2VzLgorCisgICAgLy8gVGVzdGluZyBubyBtb2RpZmljYXRpb25zLgor
ICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAwKSBsIGMgaClgLCBgbGFiKDcw
JSA0NSAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAwKSBsIGMg
aCAvIGFscGhhKWAsIGBsYWIoNzAlIDQ1IDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJv
bSBsY2goNzAlIDQ1IDAgLyA0MCUpIGwgYyBoLyBhbHBoYSlgLCBgbGFiKDcwJSA0NSAwIC8gMC40
KWApOworCisgICAgLy8gVGVzdCBuZXN0aW5nIHJlbGF0aXZlIGNvbG9ycy4KKyAgICB0ZXN0Q29t
cHV0ZWQoYGxjaChmcm9tIGxjaChmcm9tIGxjaCg3MCUgNDUgMCkgbCBjIGgpIGwgYyBoKWAsIGBs
YWIoNzAlIDQ1IDApYCk7CisKKyAgICAvLyBUZXN0aW5nIG5vbi1zUkdCIG9yaWdpbiBjb2xvcnMg
dG8gc2VlIGdhbXV0IGNsaXBwaW5nLgorICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gY29sb3Io
ZGlzcGxheS1wMyAwIDAgMCkgbCBjIGggLyBhbHBoYSlgLCBgbGFiKDAlIDAgMClgKTsKKworICAg
IC8vIFRlc3RpbmcgcmVwbGFjZW1lbnQgd2l0aCAwLgorICAgIHRlc3RDb21wdXRlZChgbGNoKGZy
b20gbGNoKDcwJSA0NSAwKSAwJSAwIDApYCwgYGxhYigwJSAwIDApYCk7CisgICAgdGVzdENvbXB1
dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDApIDAlIDAgMGRlZylgLCBgbGFiKDAlIDAgMClgKTsK
KyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMCkgMCUgMCAwIC8gMClgLCBg
bGFiKDAlIDAgMCAvIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1
IDApIDAlIDAgMGRlZyAvIDApYCwgYGxhYigwJSAwIDAgLyAwKWApOworICAgIHRlc3RDb21wdXRl
ZChgbGNoKGZyb20gbGNoKDcwJSA0NSAwKSAwJSBjIGggLyBhbHBoYSlgLCBgbGFiKDAlIDQ1IDAp
YCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDApIGwgMCBoIC8gYWxw
aGEpYCwgYGxhYig3MCUgMCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcw
JSA0NSAwKSBsIGMgMCAvIGFscGhhKWAsIGBsYWIoNzAlIDQ1IDApYCk7CisgICAgdGVzdENvbXB1
dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDApIGwgYyAwZGVnIC8gYWxwaGEpYCwgYGxhYig3MCUg
NDUgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMCkgbCBjIGgg
LyAwKWAsIGBsYWIoNzAlIDQ1IDAgLyAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20g
bGNoKDcwJSA0NSAwIC8gNDAlKSAwJSBjIGggLyBhbHBoYSlgLCBgbGFiKDAlIDQ1IDAgLyAwLjQp
YCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDAgLyA0MCUpIGwgMCBo
IC8gYWxwaGEpYCwgYGxhYig3MCUgMCAwIC8gMC40KWApOworICAgIHRlc3RDb21wdXRlZChgbGNo
KGZyb20gbGNoKDcwJSA0NSAwIC8gNDAlKSBsIGMgMCAvIGFscGhhKWAsIGBsYWIoNzAlIDQ1IDAg
LyAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDAgLyA0MCUp
IGwgYyAwZGVnIC8gYWxwaGEpYCwgYGxhYig3MCUgNDUgMCAvIDAuNClgKTsKKyAgICB0ZXN0Q29t
cHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMCAvIDQwJSkgbCBjIGggLyAwKWAsIGBsYWIoNzAl
IDQ1IDAgLyAwKWApOworCisgICAgLy8gVGVzdGluZyByZXBsYWNlbWVudCB3aXRoIGEgY29uc3Rh
bnQuCisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDApIDI1JSBjIGggLyBh
bHBoYSlgLCBgbGFiKDI1JSA0NSAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNo
KDcwJSA0NSAwKSBsIC00NSBoIC8gYWxwaGEpYCwgYGxhYig3MCUgMCAwKWApOworICAgIHRlc3RD
b21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAwKSBsIGMgNDUgLyBhbHBoYSlgLCBgbGFiKDcw
JSAzMS44MTk4MDUgMzEuODE5ODA1KWApOworICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNo
KDcwJSA0NSAwKSBsIGMgNDVkZWcgLyBhbHBoYSlgLCBgbGFiKDcwJSAzMS44MTk4MDUgMzEuODE5
ODA1KWApOworICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAwKSBsIGMgaCAv
IC4yNSlgLCBgbGFiKDcwJSA0NSAwIC8gMC4yNSlgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChm
cm9tIGxjaCg3MCUgNDUgMCAvIDQwJSkgMjUlIGMgaCAvIGFscGhhKWAsIGBsYWIoMjUlIDQ1IDAg
LyAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDAgLyA0MCUp
IGwgLTQ1IGggLyBhbHBoYSlgLCBgbGFiKDcwJSAwIDAgLyAwLjQpYCk7CisgICAgdGVzdENvbXB1
dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDAgLyA0MCUpIGwgYyA0NSAvIGFscGhhKWAsIGBsYWIo
NzAlIDMxLjgxOTgwNSAzMS44MTk4MDUgLyAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2go
ZnJvbSBsY2goNzAlIDQ1IDAgLyA0MCUpIGwgYyA0NWRlZyAvIGFscGhhKWAsIGBsYWIoNzAlIDMx
LjgxOTgwNSAzMS44MTk4MDUgLyAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBs
Y2goNzAlIDQ1IDAgLyA0MCUpIGwgYyBoIC8gLjI1KWAsIGBsYWIoNzAlIDQ1IDAgLyAwLjI1KWAp
OworCisgICAgLy8gVGVzdGluZyBwZXJtdXRhdGlvbiAodW5jbGVhciBpZiB0aGlzIGlzIGFsbG93
ZWQgcGVyLXNwZWMsIHdlIGRpc2FsbG93IGl0KS4KKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9t
IGxjaCg3MCUgNDUgMCkgYWxwaGEgYyBoIC8gbClgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAg
IHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAwKSBhbHBoYSBjIGggLyBhbHBoYSlg
LCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcw
JSA0NSAwIC8gNDAlKSBhbHBoYSBjIGggLyBsKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAg
dGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDAgLyA0MCUpIGFscGhhIGMgaCAvIGFs
cGhhKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisKKyAgICAvLyBUZXN0aW5nIGludmFsaWQgdmFs
dWVzLgorICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAwKSBsIDEwJSBoKWAs
IGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAl
IDQ1IDApIGwgYyAxMCUpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQo
YGxjaChmcm9tIGxjaCg3MCUgNDUgMCkgMTAgYyBoKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7Cisg
ICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDAgLyA0MCUpIGwgMTAlIGgpYCwg
YHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUg
NDUgMCAvIDQwJSkgbCBjIDEwJSlgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21w
dXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAwIC8gNDAlKSAxMCBjIGgpYCwgYHJnYmEoMCwgMCwg
MCwgMClgKTsKKworICAgIC8vIFRlc3RpbmcgaW52YWxpZCBjb21wb25lbnQgbmFtZXMKKyAgICB0
ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMCkgbGlnaHRuZXNzIGMgaClgLCBgcmdi
YSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAw
KSB4IGMgaClgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGNoKGZy
b20gbGNoKDcwJSA0NSAwKSBsIGcgYilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworPC9zY3JpcHQ+
CisgICAgCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420914</attachid>
            <date>2021-02-18 20:57:21 -0800</date>
            <delta_ts>2021-02-24 12:05:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221880-20210218205720.patch</filename>
            <type>text/plain</type>
            <size>82468</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzMxMjMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAyLTE4ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIENTUyBD
b2xvciA1IFJlbGF0aXZlIENvbG9yIFN5bnRheAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxODgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhw
ZXJpbWVudGFsLnlhbWw6CisgICAgICAgIEFkZCBuZXcgZXhwZXJpbWVudGFsIHByZWZlcmVuY2Ug
Zm9yIENTUyBDb2xvciA1IFJlbGF0aXZlIENvbG9yIFN5bnRheAorICAgICAgICB3aGljaCBpcyBv
ZmYgYnkgZGVmYXVsdC4KKwogMjAyMS0wMi0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgU2V0IEVOQUJMRV9WUDkgdG8gMSBvbiBJT1MKSW5kZXg6IFNvdXJj
ZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0V4cGVyaW1lbnRhbC55YW1sCShyZXZpc2lvbiAyNzMxMDIpCisrKyBTb3VyY2UvV1RGL1Nj
cmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDIwLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NjMsNiArMTYzLDE4IEBAIENTU1BhaW50aW5nQVBJRW5hYmxlZDoKICAgICAgICJFTkFCTEUoRVhQ
RVJJTUVOVEFMX0ZFQVRVUkVTKSAmJiAoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpKSI6
IHRydWUKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAKK0NTU1JlbGF0aXZlQ29sb3JTeW50YXhFbmFi
bGVkOgorICB0eXBlOiBib29sCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiQ1NTIFJlbGF0aXZlIENv
bG9yIFN5bnRheCIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIHN1cHBvcnQg
Zm9yIENTUyBSZWxhdGl2ZSBDb2xvciBTeW50YXggZGVmaW5lZCBpbiBDU1MgQ29sb3IgNSIKKyAg
ZGVmYXVsdFZhbHVlOgorICAgIFdlYktpdExlZ2FjeToKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisg
ICAgV2ViS2l0OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJDb3JlOgorICAgICAgZGVm
YXVsdDogZmFsc2UKKwogQ1NTVHlwZWRPTUVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5S
ZWFkYWJsZU5hbWU6ICJDU1MgVHlwZWQgT00iCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzMx
MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw3NyBAQAorMjAyMS0wMi0xOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBDU1MgQ29sb3IgNSBSZWxhdGl2ZSBD
b2xvciBTeW50YXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMTg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
IEFkZHMgaW5pdGlhbCBzdXBwb3J0IGZvciBDU1MgQ29sb3IgNSBSZWxhdGl2ZSBDb2xvciBTeW50
YXggLSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLTUvI3JlbGF0aXZlLWNvbG9y
cyAKKworICAgICAgICBUaGlzIGZlYXR1cmUgaXMgb2ZmIGJ5IGRlZmF1bHQgYW5kIGNhbiBiZSBl
bmFibGVkIHZpYSB0aGUgQ1NTUmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQKKyAgICAgICAgZXhw
ZXJpbWVudGFsIHByZWZlcmVuY2UgZmxhZy4KKworICAgICAgICBBcyB0aGlzIGlzIHRoZSBpbml0
aWFsIGNvbW1pdCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LCBpdCBpcyBub3QgeWV0IGNvbXBsZXRl
LgorICAgICAgICBUaGlzIGFkZHMgYmFzaWMgcGFyc2luZyBhbmQgcmVzb2x1dGlvbiBmb3IgcmVs
YXRpdmUgcmdiKCksIGhzbCgpLCBod2IoKSwgbGFiKCkKKyAgICAgICAgYW5kIGxjaCgpLCBidXQg
ZG9lcyBub3QgeWV0IGltcGxlbWVudCBzdXBwb3J0IGZvciBjYWxjKCkgZnVuY3Rpb25zIHRoYXQg
Y2FuIG9wZXJhdGUKKyAgICAgICAgb24gdGhlIGNoYW5uZWwga2V5d29yZHMgbm9yIGRvZXMgaXQg
c3VwcG9ydCB1c2luZyBzeXN0ZW0ga2V5d29yZCBjb2xvcnMgYXMgdGhlCisgICAgICAgIG9yaWdp
biBvZiB0aGUgcmVsYXRpdmUgY29sb3JzLgorCisgICAgICAgIFNvbWUgYWRkaXRpb25hbCBjYXZl
YXRzIGFib3V0IHRoaXMgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiB0aGF0IG5lZWQgZnVydGhlciAK
KyAgICAgICAgY2xhcmlmaWNhdGlvbiBmcm9tIHRoZSBzcGVjIGVkaXRvcnM6IAorCisgICAgICAg
IDEuIEN1cnJlbnRseSwgd2Ugb25seSBhbGxvdyB1c2luZyB0aGUgY2hhbm5lbCBjb3JyZXNwb25k
aW5nIHRvIHRvIHRoZSBwb3NpdGlvbiBvZiB0aGF0IGNoYW5uZWwKKyAgICAgICAgaW4gdGhlIHJl
cGxhY2VtZW50IHN5bnRheC4gVGhpcyBtZWFucyB5b3UgY2FuJ3QgZG86CisKKyAgICAgICAgICAg
IHJnYihmcm9tIHJlZCBnIHIgYikKKworICAgICAgICB0byBwZXJtdXRlIHRoZSBjaGFubmVscy4K
KworICAgICAgICAyLiBGb3IgcmdiKCksIHdoaWNoIGFsbG93cyByLCBnLCBhbmQgYiB0byBiZSBh
bGwgbnVtYmVycyBvciBhbGwgcGVyY2VudGFnZXMsCisgICAgICAgIHdlIGN1cnJlbnRseSBkb24n
dCBhc3N1bWUgZWl0aGVyIG51bWJlciBvciBwZXJjZW50YWdlLCBhbmQgd2FpdCB1bnRpbCBzb21l
CisgICAgICAgIGNvbnN0YW50IHZhbHVlIGlzIHByb3ZpZGVkIHRvIHNldCB0aGUgdHlwZS4gVGhh
dCBtZWFucyB0aGF0OgorCisgICAgICAgICAgICByZ2IoZnJvbSByZWQgciBnIDEwKQorCisgICAg
ICAgIHdpbGwgdHJlYXQgciwgYW5nIGcgYXMgbnVtYmVycywgYnV0OgorCisgICAgICAgICAgICBy
Z2IoZnJvbSByZWQgciBnIDEwJSkKKworICAgICAgICB3aWxsIHRyZWF0IHIgYW5kIGcgYXMgcGVy
Y2VudGFnZXMuIFRoaXMgaXMgbm90IGN1cnJlbnRseSBvYnNlcnZhYmxlIG90aGVyIHRoYW4KKyAg
ICAgICAgdGhhdCB3ZSByZWplY3Qgc29tZXRoaW5nIHRoYXQgbWl4ZXMgdGhlIHR3bywgc3VjaCBh
cworCisgICAgICAgICAgICByZ2IoZnJvbSByZWQgciAxMCAxMCUpCisKKyAgICAgICAgYnV0IHdp
bGwgYmUgZnVsbHkgb2JzZXJ2YWJsZSBvbmNlIHByb2Nlc3NpbmcgdGhlIGNoYW5uZWxzIHZpYSBj
YWxjKCkgaXMgc3VwcG9ydGVkLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL3BhcnNpbmctcmVs
YXRpdmUtY29sb3Itc3ludGF4Lmh0bWwKKworICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRz
LmluOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckNv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckNvbnRleHRIYXNoOjpoYXNoKToK
KyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVPcmlnaW5Db2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVP
cHRpb25hbEFscGhhT3JJZGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnM6OmNvbnN1bWVIdWVPcklkZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3Bl
cnR5UGFyc2VySGVscGVyczo6Y29uc3VtZU51bWJlck9ySWRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUGVyY2VudE9ySWRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpleHRyYWN0Q2hhbm5lbFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6cmVzb2x2
ZVJlbGF0aXZlQ29sb3JDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFy
c2VySGVscGVyczo6Y29uc3VtZVJlbGF0aXZlUkdCQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6cGFyc2VSZWxhdGl2ZVJHQlBhcmFtZXRlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZVJHQlBh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpw
YXJzZVJlbGF0aXZlSFNMUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM6OnBhcnNlSFNMUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6Om5vcm1hbGl6ZVdoaXRlbmVzc0JsYWNrbmVzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlUmVsYXRpdmVI
V0JQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVy
czo6cGFyc2VIV0JQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFy
c2VySGVscGVyczo6cGFyc2VSZWxhdGl2ZUxhYlBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZUxhYlBhcmFtZXRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZVJlbGF0aXZlTENIUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBh
cnNlTENIUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhl
bHBlcnM6OnBhcnNlQ29sb3JGdW5jdGlvbik6CisKIDIwMjEtMDItMTggIEthdGUgQ2hlbmV5ICA8
a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIG5v
biBhcHAtYm91bmQgcmVxdWVzdHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtl
eXdvcmRzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdv
cmRzLmluCShyZXZpc2lvbiAyNzMxMDIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVL
ZXl3b3Jkcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTI2OSw2ICsxMjY5LDI1IEBAIGxhYgogbGNo
CiAvL2NvbG9yCiAKKy8vIHJlbGF0aXZlIGNvbG9yIGlkZW50aWZpZXJzCisvLyBmcm9tCityCitn
CitiCitoCitzCitsCisvLyBoCit3CisvLyBiCisvLyBsCithCisvLyBiCisvLyBsCitjCisvLyBo
CisvLyBhbHBoYQorCiAvLyB0cmFuc2Zvcm0KIG1hdHJpeAogbWF0cml4M2QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcAkocmV2aXNpb24g
MjczMTAyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsNyBAQCBDU1NQYXJzZXJDb250ZXh0OjpDU1NQ
YXJzZXJDb250ZXh0KGNvbnN0CiAgICAgLCBsZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoRW5h
YmxlZCB7IHNob3VsZEVuYWJsZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2goZG9jdW1lbnQp
IH0KICNlbmRpZgogICAgICwgb3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZCB7IGRvY3VtZW50LnNl
dHRpbmdzKCkub3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZCgpIH0KKyAgICAsIHJlbGF0aXZlQ29s
b3JTeW50YXhFbmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5jc3NSZWxhdGl2ZUNvbG9yU3lu
dGF4RW5hYmxlZCgpIH0KICAgICAsIHNjcm9sbEJlaGF2aW9yRW5hYmxlZCB7IGRvY3VtZW50LnNl
dHRpbmdzKCkuQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCgpIH0KICAgICAsIHNwcmlu
Z1RpbWluZ0Z1bmN0aW9uRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuc3ByaW5nVGltaW5n
RnVuY3Rpb25FbmFibGVkKCkgfQogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC0xMTMs
NiArMTE0LDcgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIAogICAg
ICAgICAmJiBhLmxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hFbmFibGVkID09IGIubGVnYWN5
T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaEVuYWJsZWQKICNlbmRpZgogICAgICAgICAmJiBhLm92ZXJz
Y3JvbGxCZWhhdmlvckVuYWJsZWQgPT0gYi5vdmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVkCisgICAg
ICAgICYmIGEucmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQgPT0gYi5yZWxhdGl2ZUNvbG9yU3lu
dGF4RW5hYmxlZAogICAgICAgICAmJiBhLnNjcm9sbEJlaGF2aW9yRW5hYmxlZCA9PSBiLnNjcm9s
bEJlaGF2aW9yRW5hYmxlZAogICAgICAgICAmJiBhLnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxl
ZCA9PSBiLnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZAogI2lmIEVOQUJMRShURVhUX0FVVE9T
SVpJTkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRl
eHQuaAkocmV2aXNpb24gMjczMTAyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgbGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaEVuYWJsZWQgeyBmYWxzZSB9Owog
I2VuZGlmCiAgICAgYm9vbCBvdmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVkIHsgZmFsc2UgfTsKKyAg
ICBib29sIHJlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIHNj
cm9sbEJlaGF2aW9yRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBzcHJpbmdUaW1pbmdGdW5j
dGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC0x
MDIsMzAgKzEwMywzNCBAQCBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dEhhc2ggewogICAgICAgICBp
ZiAoIWtleS5jaGFyc2V0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGhhc2ggXj0gU3RyaW5nSGFz
aDo6aGFzaChrZXkuY2hhcnNldCk7CiAgICAgICAgIHVuc2lnbmVkIGJpdHMgPSBrZXkuaXNIVE1M
RG9jdW1lbnQgICAgICAgICAgICAgICAgICA8PCAwCi0jaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklO
RykKLSAgICAgICAgICAgICYga2V5LnRleHRBdXRvc2l6aW5nRW5hYmxlZCAgICAgICAgICAgICAg
ICAgICAgIDw8IDEKLSNlbmRpZgorICAgICAgICAgICAgJiBrZXkuaGFzRG9jdW1lbnRTZWN1cml0
eU9yaWdpbiAgICAgICAgICAgICAgICAgPDwgMQorICAgICAgICAgICAgJiBrZXkuaXNDb250ZW50
T3BhcXVlICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMgorICAgICAgICAgICAgJiBrZXku
dXNlU3lzdGVtQXBwZWFyYW5jZSAgICAgICAgICAgICAgICAgICAgICAgPDwgMworICAgICAgICAg
ICAgJiBrZXkuYXNwZWN0UmF0aW9FbmFibGVkICAgICAgICAgICAgICAgICAgICAgICAgPDwgNAor
ICAgICAgICAgICAgJiBrZXkuY29sb3JGaWx0ZXJFbmFibGVkICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgNQorICAgICAgICAgICAgJiBrZXkuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCAgICAg
ICAgICAgICAgICAgPDwgNgorICAgICAgICAgICAgJiBrZXkuZGVmZXJyZWRDU1NQYXJzZXJFbmFi
bGVkICAgICAgICAgICAgICAgICAgPDwgNworICAgICAgICAgICAgJiBrZXkuZW5mb3JjZXNDU1NN
SU1FVHlwZUluTm9RdWlya3NNb2RlICAgICAgICAgPDwgOAorICAgICAgICAgICAgJiBrZXkuaW5k
aXZpZHVhbFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkICAgICAgPDwgOQogI2lmIEVOQUJMRShP
VkVSRkxPV19TQ1JPTExJTkdfVE9VQ0gpCi0gICAgICAgICAgICAmIGtleS5sZWdhY3lPdmVyZmxv
d1Njcm9sbGluZ1RvdWNoRW5hYmxlZCAgICAgICA8PCAyCisgICAgICAgICAgICAmIGtleS5sZWdh
Y3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoRW5hYmxlZCAgICAgICA8PCAxMAogI2VuZGlmCi0gICAg
ICAgICAgICAmIGtleS5lbmZvcmNlc0NTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGUgICAgICAgICA8
PCAzCi0gICAgICAgICAgICAmIGtleS51c2VMZWdhY3lCYWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJl
aGF2aW9yICA8PCA0Ci0gICAgICAgICAgICAmIGtleS5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJs
ZWQgICAgICAgICAgICAgICA8PCA1Ci0gICAgICAgICAgICAmIGtleS5jb25zdGFudFByb3BlcnRp
ZXNFbmFibGVkICAgICAgICAgICAgICAgICA8PCA2Ci0gICAgICAgICAgICAmIGtleS5jb2xvckZp
bHRlckVuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICA8PCA3Ci0gICAgICAgICAgICAmIGtl
eS5kZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgICAgICAgICAgICAgICAgICA8PCA4Ci0gICAgICAg
ICAgICAmIGtleS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luICAgICAgICAgICAgICAgICA8PCA5
Ci0gICAgICAgICAgICAmIGtleS51c2VTeXN0ZW1BcHBlYXJhbmNlICAgICAgICAgICAgICAgICAg
ICAgICA8PCAxMAotI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgICAgICAgICAm
IGtleS5hdHRhY2htZW50RW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxMQorICAg
ICAgICAgICAgJiBrZXkub3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZCAgICAgICAgICAgICAgICAg
PDwgMTEKKyAgICAgICAgICAgICYga2V5LnJlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkICAgICAg
ICAgICAgICAgIDw8IDEyCisgICAgICAgICAgICAmIGtleS5zY3JvbGxCZWhhdmlvckVuYWJsZWQg
ICAgICAgICAgICAgICAgICAgICA8PCAxMworICAgICAgICAgICAgJiBrZXkuc3ByaW5nVGltaW5n
RnVuY3Rpb25FbmFibGVkICAgICAgICAgICAgICAgPDwgMTQKKyNpZiBFTkFCTEUoVEVYVF9BVVRP
U0laSU5HKQorICAgICAgICAgICAgJiBrZXkudGV4dEF1dG9zaXppbmdFbmFibGVkICAgICAgICAg
ICAgICAgICAgICAgPDwgMTUKICNlbmRpZgotICAgICAgICAgICAgJiBrZXkuc2Nyb2xsQmVoYXZp
b3JFbmFibGVkICAgICAgICAgICAgICAgICAgICAgPDwgMTIKLSAgICAgICAgICAgICYga2V5Lmlu
ZGl2aWR1YWxUcmFuc2Zvcm1Qcm9wZXJ0aWVzRW5hYmxlZCAgICAgIDw8IDEzCi0gICAgICAgICAg
ICAmIGtleS5vdmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVkICAgICAgICAgICAgICAgICA8PCAxNAog
I2lmIEVOQUJMRShDU1NfVFJBTlNGT1JNX1NUWUxFX09QVElNSVpFRF8zRCkKLSAgICAgICAgICAg
ICYga2V5LnRyYW5zZm9ybVN0eWxlT3B0aW1pemVkM0RFbmFibGVkICAgICAgICAgIDw8IDE1Cisg
ICAgICAgICAgICAmIGtleS50cmFuc2Zvcm1TdHlsZU9wdGltaXplZDNERW5hYmxlZCAgICAgICAg
ICA8PCAxNgorI2VuZGlmCisgICAgICAgICAgICAmIGtleS51c2VMZWdhY3lCYWNrZ3JvdW5kU2l6
ZVNob3J0aGFuZEJlaGF2aW9yICA8PCAxNworICAgICAgICAgICAgJiBrZXkuZm9jdXNWaXNpYmxl
RW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgPDwgMTgKKyNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQorICAgICAgICAgICAgJiBrZXkuYXR0YWNobWVudEVuYWJsZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgMTkKICNlbmRpZgotICAgICAgICAgICAgJiBrZXkubW9kZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMTY7IC8vIEtlZXAgdGhpcyBsYXN0
LgorICAgICAgICAgICAgJiBrZXkubW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgMjA7IC8vIEtlZXAgdGhpcyBsYXN0LgogICAgICAgICBoYXNoIF49IFdURjo6aW50
SGFzaChiaXRzKTsKICAgICAgICAgcmV0dXJuIGhhc2g7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNw
cAkocmV2aXNpb24gMjczMTAyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTAsNiArNjkwLDI3IEBA
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVVybChDU1MKICAgICByZXR1cm4gQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSh1cmwudG9TdHJpbmcoKSwgQ1NTVW5p
dFR5cGU6OkNTU19VUkkpOwogfQogCitzdGF0aWMgQ29sb3IgY29uc3VtZU9yaWdpbkNvbG9yKENT
U1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQp
Cit7CisgICAgYXV0byB2YWx1ZSA9IGNvbnN1bWVDb2xvcihhcmdzLCBjb250ZXh0KTsKKyAgICBp
ZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKHZhbHVlLT5pc1JHQkNv
bG9yKCkpCisgICAgICAgIHJldHVybiB2YWx1ZS0+Y29sb3IoKTsKKworICAgIEFTU0VSVCh2YWx1
ZS0+aXNWYWx1ZUlEKCkpOworICAgIGF1dG8ga2V5d29yZCA9IHZhbHVlLT52YWx1ZUlEKCk7CisK
KyAgICAvLyBGSVhNRTogV2UgZG9uJ3QgaGF2ZSBlbm91Z2ggY29udGV4dCBpbiB0aGUgcGFyc2Vy
IHRvIHJlc29sdmluZyBhIHN5c3RlbSBrZXl3b3JkCisgICAgLy8gY29ycmVjdGx5LiBXZSBzaG91
bGQgcGFja2FnZSB1cCB0aGUgcmVsYXRpdmUgY29sb3IgcGFyYW1ldGVycyBhbmQgcmVzb2x2ZSB0
aGUKKyAgICAvLyB3aG9sZSB0aGluZyBhdCB0aGUgYXBwcm9wcmlhdGUgdGltZSB3aGVuIHRoZSBv
cmlnaW4gY29sb3IgaXMgYSBzeXN0ZW0ga2V5d29yZC4KKyAgICBpZiAoU3R5bGVDb2xvcjo6aXNT
eXN0ZW1Db2xvcihrZXl3b3JkKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBT
dHlsZUNvbG9yOjpjb2xvckZyb21LZXl3b3JkKGtleXdvcmQsIHsgfSk7Cit9CisKIHN0YXRpYyBP
cHRpb25hbDxkb3VibGU+IGNvbnN1bWVPcHRpb25hbEFscGhhKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQogewogICAgIGlmICghY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5n
ZSkpCkBAIC03MDEsNiArNzIyLDE3IEBAIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVP
cHRpb25hbEEKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCit0ZW1wbGF0ZTxDU1NWYWx1
ZUlELi4uIGFsbG93ZWRJZGVudHM+IHN0YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NT
VmFsdWVJRD4+IGNvbnN1bWVPcHRpb25hbEFscGhhT3JJZGVudChDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKK3sKKyAgICBpZiAoYXV0byBhbHBoYSA9IGNvbnN1bWVPcHRpb25hbEFscGhhKHJh
bmdlKSkKKyAgICAgICAgcmV0dXJuIHsgKmFscGhhIH07CisKKyAgICBpZiAoYXV0byBpZGVudCA9
IGNvbnN1bWVJZGVudFJhdzxhbGxvd2VkSWRlbnRzLi4uPihyYW5nZSkpCisgICAgICAgIHJldHVy
biB7ICppZGVudCB9OworCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwogc3RhdGljIE9w
dGlvbmFsPGRvdWJsZT4gY29uc3VtZUh1ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoYXV0byBhbmdsZSA9IGNv
bnN1bWVBbmdsZVJhdyhyYW5nZSwgY29udGV4dC5tb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQs
IFVuaXRsZXNzWmVyb1F1aXJrOjpGb3JiaWQpKQpAQCAtNzA5LDExICs3NDEsODAgQEAgc3RhdGlj
IE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZUh1ZShDU1NQYQogICAgIHJldHVybiBjb25zdW1lTnVt
YmVyUmF3KHJhbmdlKTsKIH0KIAordGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRz
PiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lSHVl
T3JJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYgY29udGV4dCkKK3sKKyAgICBpZiAoYXV0byBodWUgPSBjb25zdW1lSHVlKHJhbmdlLCBjb250
ZXh0KSkKKyAgICAgICAgcmV0dXJuIHsgKmh1ZSB9OworCisgICAgaWYgKGF1dG8gaWRlbnQgPSBj
b25zdW1lSWRlbnRSYXc8YWxsb3dlZElkZW50cy4uLj4ocmFuZ2UpKQorICAgICAgICByZXR1cm4g
eyAqaWRlbnQgfTsKKworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKIHN0YXRpYyBkb3Vi
bGUgbm9ybWFsaXplSHVlKGRvdWJsZSBodWUpCiB7CiAgICAgcmV0dXJuIHN0ZDo6Zm1vZChzdGQ6
OmZtb2QoaHVlLCAzNjAuMCkgKyAzNjAuMCwgMzYwLjApOwogfQogCit0ZW1wbGF0ZTxDU1NWYWx1
ZUlELi4uIGFsbG93ZWRJZGVudHM+IHN0YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NT
VmFsdWVJRD4+IGNvbnN1bWVOdW1iZXJPcklkZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQoreworICAgIGlmIChhdXRvIG51bWJlciA9IGNvbnN1bWVOdW1iZXJSYXcocmFuZ2UpKQorICAg
ICAgICByZXR1cm4geyAqbnVtYmVyIH07CisKKyAgICBpZiAoYXV0byBpZGVudCA9IGNvbnN1bWVJ
ZGVudFJhdzxhbGxvd2VkSWRlbnRzLi4uPihyYW5nZSkpCisgICAgICAgIHJldHVybiB7ICppZGVu
dCB9OworCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordGVtcGxhdGU8Q1NTVmFsdWVJ
RC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1Zh
bHVlSUQ+PiBjb25zdW1lUGVyY2VudE9ySWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Up
Cit7CisgICAgaWYgKGF1dG8gcGVyY2VudCA9IGNvbnN1bWVQZXJjZW50UmF3KHJhbmdlKSkKKyAg
ICAgICAgcmV0dXJuIHsgKnBlcmNlbnQgfTsKKworICAgIGlmIChhdXRvIGlkZW50ID0gY29uc3Vt
ZUlkZW50UmF3PGFsbG93ZWRJZGVudHMuLi4+KHJhbmdlKSkKKyAgICAgICAgcmV0dXJuIHsgKmlk
ZW50IH07CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCit0ZW1wbGF0ZTxDU1NWYWx1
ZUlEIEMxLCBDU1NWYWx1ZUlEIEMyLCBDU1NWYWx1ZUlEIEMzLCBDU1NWYWx1ZUlEIEFscGhhQ2hh
bm5lbCwgdHlwZW5hbWUgQ29sb3JUeXBlPiBzdGF0aWMgYXV0byBleHRyYWN0Q2hhbm5lbFZhbHVl
KENTU1ZhbHVlSUQgY2hhbm5lbCwgY29uc3QgQ29sb3JUeXBlJiBvcmlnaW5Db2xvcikgLT4gdHlw
ZW5hbWUgQ29sb3JUeXBlOjpDb21wb25lbnRUeXBlCit7CisgICAgYXV0byBjb21wb25lbnRzID0g
YXNDb2xvckNvbXBvbmVudHMob3JpZ2luQ29sb3IpOworICAgIHN3aXRjaCAoY2hhbm5lbCkgewor
ICAgIGNhc2UgQzE6CisgICAgICAgIHJldHVybiBjb21wb25lbnRzWzBdOworICAgIGNhc2UgQzI6
CisgICAgICAgIHJldHVybiBjb21wb25lbnRzWzFdOworICAgIGNhc2UgQzM6CisgICAgICAgIHJl
dHVybiBjb21wb25lbnRzWzJdOworICAgIGNhc2UgQWxwaGFDaGFubmVsOgorICAgICAgICByZXR1
cm4gY29tcG9uZW50c1szXTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwordGVtcGxhdGU8Q1NTVmFsdWVJRCBD
MSwgQ1NTVmFsdWVJRCBDMiwgQ1NTVmFsdWVJRCBDMywgQ1NTVmFsdWVJRCBBbHBoYUNoYW5uZWws
IHR5cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgVmFsdWVUcmFuc2Zvcm1lcj4gc3RhdGljIGRl
Y2x0eXBlKGF1dG8pIHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbChjb25zdCBWYXJpYW50PGRv
dWJsZSwgQ1NTVmFsdWVJRD4mIHBhcnNlZENoYW5uZWwsIGNvbnN0IENvbG9yVHlwZSYgb3JpZ2lu
Q29sb3IsIFZhbHVlVHJhbnNmb3JtZXImJiB2YWx1ZVRyYW5zZm9ybWVyKQoreworICAgIHJldHVy
biBzd2l0Y2hPbihwYXJzZWRDaGFubmVsLAorICAgICAgICBbJl0gKGRvdWJsZSB2YWx1ZSkgewor
ICAgICAgICAgICAgcmV0dXJuIHZhbHVlVHJhbnNmb3JtZXIodmFsdWUpOworICAgICAgICB9LAor
ICAgICAgICBbJl0gKENTU1ZhbHVlSUQgY2hhbm5lbCkgeworICAgICAgICAgICAgcmV0dXJuIGV4
dHJhY3RDaGFubmVsVmFsdWU8QzEsIEMyLCBDMywgQWxwaGFDaGFubmVsPihjaGFubmVsLCBvcmln
aW5Db2xvcik7CisgICAgICAgIH0KKyAgICApOworfQorCit0ZW1wbGF0ZTxDU1NWYWx1ZUlEIEMx
LCBDU1NWYWx1ZUlEIEMyLCBDU1NWYWx1ZUlEIEMzLCBDU1NWYWx1ZUlEIEFscGhhQ2hhbm5lbCwg
dHlwZW5hbWUgQ29sb3JUeXBlPiBzdGF0aWMgZGVjbHR5cGUoYXV0bykgcmVzb2x2ZVJlbGF0aXZl
Q29sb3JDaGFubmVsKGNvbnN0IFZhcmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlEPiYgcGFyc2VkQ2hh
bm5lbCwgY29uc3QgQ29sb3JUeXBlJiBvcmlnaW5Db2xvcikKK3sKKyAgICByZXR1cm4gcmVzb2x2
ZVJlbGF0aXZlQ29sb3JDaGFubmVsPEMxLCBDMiwgQzMsIEFscGhhQ2hhbm5lbD4ocGFyc2VkQ2hh
bm5lbCwgb3JpZ2luQ29sb3IsIFtdKGF1dG8gdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9KTsKK30K
KwogZW51bSBjbGFzcyBSR0JDb21wb25lbnRUeXBlIHsgTnVtYmVyLCBQZXJjZW50YWdlIH07CiAK
IHN0YXRpYyB1aW50OF90IGNsYW1wUkdCQ29tcG9uZW50KGRvdWJsZSB2YWx1ZSwgUkdCQ29tcG9u
ZW50VHlwZSBjb21wb25lbnRUeXBlKQpAQCAtNzQ4LDExICs4NDksMTEwIEBAIHN0YXRpYyBPcHRp
b25hbDxkb3VibGU+IGNvbnN1bWVSR0JPckhTTE8KICAgICByZXR1cm4gY29uc3VtZU51bWJlck9y
UGVyY2VudERpdmlkZWRCeTEwMFJhdyhhcmdzKTsKIH0KIAotc3RhdGljIENvbG9yIHBhcnNlUkdC
UGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29u
dGV4dCYpCitzdHJ1Y3QgUmVsYXRpdmVSR0JDb21wb25lbnQgeworICAgIFZhcmlhbnQ8ZG91Ymxl
LCBDU1NWYWx1ZUlEPiB2YWx1ZTsKKyAgICBPcHRpb25hbDxSR0JDb21wb25lbnRUeXBlPiB0eXBl
OworfTsKKwordGVtcGxhdGU8Q1NTVmFsdWVJRCBDPiBzdGF0aWMgT3B0aW9uYWw8UmVsYXRpdmVS
R0JDb21wb25lbnQ+IGNvbnN1bWVSZWxhdGl2ZVJHQkNvbXBvbmVudChDU1NQYXJzZXJUb2tlblJh
bmdlJiBhcmdzLCBPcHRpb25hbDxSR0JDb21wb25lbnRUeXBlPiBjb21wb25lbnRUeXBlKQorewor
ICAgIGlmICghY29tcG9uZW50VHlwZSkgeworICAgICAgICBpZiAoYXV0byBudW1iZXIgPSBjb25z
dW1lTnVtYmVyUmF3KGFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIFJlbGF0aXZlUkdCQ29tcG9u
ZW50IHsgKm51bWJlciwgUkdCQ29tcG9uZW50VHlwZTo6TnVtYmVyIH07CisgICAgICAgIGlmIChh
dXRvIHBlcmNlbnQgPSBjb25zdW1lUGVyY2VudFJhdyhhcmdzKSkKKyAgICAgICAgICAgIHJldHVy
biBSZWxhdGl2ZVJHQkNvbXBvbmVudCB7ICpwZXJjZW50LCBSR0JDb21wb25lbnRUeXBlOjpQZXJj
ZW50YWdlIH07CisgICAgICAgIGlmIChhdXRvIGNoYW5uZWwgPSBjb25zdW1lSWRlbnRSYXc8Qz4o
YXJncykpCisgICAgICAgICAgICByZXR1cm4gUmVsYXRpdmVSR0JDb21wb25lbnQgeyAqY2hhbm5l
bCwgV1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQor
CisgICAgc3dpdGNoICgqY29tcG9uZW50VHlwZSkgeworICAgIGNhc2UgUkdCQ29tcG9uZW50VHlw
ZTo6TnVtYmVyOiB7CisgICAgICAgIGlmIChhdXRvIG51bWJlciA9IGNvbnN1bWVOdW1iZXJSYXco
YXJncykpCisgICAgICAgICAgICByZXR1cm4gUmVsYXRpdmVSR0JDb21wb25lbnQgeyAqbnVtYmVy
LCBSR0JDb21wb25lbnRUeXBlOjpOdW1iZXIgfTsKKyAgICAgICAgaWYgKGF1dG8gY2hhbm5lbCA9
IGNvbnN1bWVJZGVudFJhdzxDPihhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBSZWxhdGl2ZVJH
QkNvbXBvbmVudCB7ICpjaGFubmVsLCBSR0JDb21wb25lbnRUeXBlOjpOdW1iZXIgfTsKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisgICAgY2FzZSBSR0JDb21wb25lbnRUeXBl
OjpQZXJjZW50YWdlOiB7CisgICAgICAgIGlmIChhdXRvIHBlcmNlbnQgPSBjb25zdW1lUGVyY2Vu
dFJhdyhhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBSZWxhdGl2ZVJHQkNvbXBvbmVudCB7ICpw
ZXJjZW50LCBSR0JDb21wb25lbnRUeXBlOjpQZXJjZW50YWdlIH07CisgICAgICAgIGlmIChhdXRv
IGNoYW5uZWwgPSBjb25zdW1lSWRlbnRSYXc8Qz4oYXJncykpCisgICAgICAgICAgICByZXR1cm4g
UmVsYXRpdmVSR0JDb21wb25lbnQgeyAqY2hhbm5lbCwgUkdCQ29tcG9uZW50VHlwZTo6UGVyY2Vu
dGFnZSB9OworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKyAgICB9Cit9CisK
K3N0YXRpYyBDb2xvciBwYXJzZVJlbGF0aXZlUkdCUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJh
bmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIEFTU0VS
VChhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbSk7CisgICAgY29uc3VtZUlkZW50UmF3
KGFyZ3MpOworCisgICAgYXV0byBvcmlnaW5Db2xvciA9IGNvbnN1bWVPcmlnaW5Db2xvcihhcmdz
LCBjb250ZXh0KTsKKyAgICBpZiAoIW9yaWdpbkNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIE9wdGlvbmFsPFJHQkNvbXBvbmVudFR5cGU+IGNvbXBvbmVudFR5cGU7
CisgICAgYXV0byByZWRSZXN1bHQgPSBjb25zdW1lUmVsYXRpdmVSR0JDb21wb25lbnQ8Q1NTVmFs
dWVSPihhcmdzLCBjb21wb25lbnRUeXBlKTsKKyAgICBpZiAoIXJlZFJlc3VsdCkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICBhdXRvIHJlZCA9IHJlZFJlc3VsdC0+dmFsdWU7CisgICAgY29tcG9u
ZW50VHlwZSA9IHJlZFJlc3VsdC0+dHlwZTsKKworICAgIGF1dG8gZ3JlZW5SZXN1bHQgPSBjb25z
dW1lUmVsYXRpdmVSR0JDb21wb25lbnQ8Q1NTVmFsdWVHPihhcmdzLCBjb21wb25lbnRUeXBlKTsK
KyAgICBpZiAoIWdyZWVuUmVzdWx0KQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gZ3Jl
ZW4gPSBncmVlblJlc3VsdC0+dmFsdWU7CisgICAgY29tcG9uZW50VHlwZSA9IGdyZWVuUmVzdWx0
LT50eXBlOworCisgICAgYXV0byBibHVlUmVzdWx0ID0gY29uc3VtZVJlbGF0aXZlUkdCQ29tcG9u
ZW50PENTU1ZhbHVlQj4oYXJncywgY29tcG9uZW50VHlwZSk7CisgICAgaWYgKCFibHVlUmVzdWx0
KQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gYmx1ZSA9IGJsdWVSZXN1bHQtPnZhbHVl
OworICAgIGNvbXBvbmVudFR5cGUgPSBibHVlUmVzdWx0LT50eXBlOworCisgICAgYXV0byBhbHBo
YSA9IGNvbnN1bWVPcHRpb25hbEFscGhhT3JJZGVudDxDU1NWYWx1ZUFscGhhPihhcmdzKTsKKyAg
ICBpZiAoIWFscGhhKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKCFhcmdzLmF0RW5k
KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICAvLyBBZnRlciBwYXJzaW5nLCBjb252ZXJ0
IGlkZW50aWZpZXJzIHRvIHZhbHVlcyBmcm9tIHRoZSBvcmlnaW4gY29sb3IuCisKKyAgICAvLyBG
SVhNRTogRG8gd2Ugd2FudCB0byBiZWluZyBkb2luZyB0aGlzIGluIHVpbnQ4X3QgdmFsdWVzPyBP
ciBzaG91bGQgd2UgdXNlIAorICAgIC8vIGhpZ2hlciBwcmVjaXNpb24gYW5kIGNsYW1wIGF0IHRo
ZSBlbmQ/IEl0IHdvbid0IG1ha2UgYSBkaWZmZXJlbmNlIHVudGlsIHdlCisgICAgLy8gc3VwcG9y
dCBjYWxjdWxhdGlvbnMgb24gdGhlIG9yaWdpbidzIGNvbXBvbmVudHMuCisgICAgYXV0byBvcmln
aW5Db2xvckFzU1JHQiA9IG9yaWdpbkNvbG9yLnRvU1JHQkFMb3NzeTx1aW50OF90PigpOworCisg
ICAgYXV0byByZXNvbHZlZENvbXBvbmVudFR5cGUgPSBjb21wb25lbnRUeXBlLnZhbHVlT3IoUkdC
Q29tcG9uZW50VHlwZTo6UGVyY2VudGFnZSk7CisgICAgYXV0byBjaGFubmVsUmVzb2x2ZXIgPSBb
cmVzb2x2ZWRDb21wb25lbnRUeXBlXShhdXRvIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBjbGFt
cFJHQkNvbXBvbmVudCh2YWx1ZSwgcmVzb2x2ZWRDb21wb25lbnRUeXBlKTsKKyAgICB9OworCisg
ICAgYXV0byByZXNvbHZlZFJlZCA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1
ZVIsIENTU1ZhbHVlRywgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPihyZWQsIG9yaWdpbkNvbG9y
QXNTUkdCLCBjaGFubmVsUmVzb2x2ZXIpOworICAgIGF1dG8gcmVzb2x2ZWRHcmVlbiA9IHJlc29s
dmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZVIsIENTU1ZhbHVlRywgQ1NTVmFsdWVCLCBD
U1NWYWx1ZUFscGhhPihncmVlbiwgb3JpZ2luQ29sb3JBc1NSR0IsIGNoYW5uZWxSZXNvbHZlcik7
CisgICAgYXV0byByZXNvbHZlZEJsdWUgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NT
VmFsdWVSLCBDU1NWYWx1ZUcsIENTU1ZhbHVlQiwgQ1NTVmFsdWVBbHBoYT4oYmx1ZSwgb3JpZ2lu
Q29sb3JBc1NSR0IsIGNoYW5uZWxSZXNvbHZlcik7CisgICAgYXV0byByZXNvbHZlZEFscGhhID0g
cmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlUiwgQ1NTVmFsdWVHLCBDU1NWYWx1
ZUIsIENTU1ZhbHVlQWxwaGE+KCphbHBoYSwgb3JpZ2luQ29sb3JBc1NSR0IsIFtdKGF1dG8gdmFs
dWUpIHsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRGbG9hdEFscGhhVG88dWludDhfdD4odmFsdWUp
OworICAgIH0pOworCisgICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgcmVzb2x2ZWRSZWQsIHJl
c29sdmVkR3JlZW4sIHJlc29sdmVkQmx1ZSwgcmVzb2x2ZWRBbHBoYSB9OworfQorCitlbnVtIGNs
YXNzIFJHQkZ1bmN0aW9uTW9kZSB7IFJHQiwgUkdCQSB9OworCit0ZW1wbGF0ZTxSR0JGdW5jdGlv
bk1vZGUgTW9kZT4gc3RhdGljIENvbG9yIHBhcnNlUkdCUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBB
U1NFUlQocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVJnYiB8fCByYW5nZS5w
ZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlUmdiYSk7CiAgICAgYXV0byBhcmdzID0gY29u
c3VtZUZ1bmN0aW9uKHJhbmdlKTsKIAorICAgIGlmIGNvbnN0ZXhwciAoTW9kZSA9PSBSR0JGdW5j
dGlvbk1vZGU6OlJHQikgeworICAgICAgICBpZiAoY29udGV4dC5yZWxhdGl2ZUNvbG9yU3ludGF4
RW5hYmxlZCAmJiBhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbSkKKyAgICAgICAgICAg
IHJldHVybiBwYXJzZVJlbGF0aXZlUkdCUGFyYW1ldGVycyhhcmdzLCBjb250ZXh0KTsKKyAgICB9
CisKICAgICBzdHJ1Y3QgSW5pdGlhbENvbXBvbmVudCB7CiAgICAgICAgIGRvdWJsZSB2YWx1ZTsK
ICAgICAgICAgUkdCQ29tcG9uZW50VHlwZSB0eXBlOwpAQCAtODExLDExICsxMDExLDY0IEBAIHN0
YXRpYyBDb2xvciBwYXJzZVJHQlBhcmFtZXRlcnMoQ1NTUGFyc2UKICAgICByZXR1cm4gU1JHQkE8
dWludDhfdD4geyBub3JtYWxpemVkUmVkLCBub3JtYWxpemVkR3JlZW4sIG5vcm1hbGl6ZWRCbHVl
LCBub3JtYWxpemVkQWxwaGEgfTsKIH0KIAotc3RhdGljIENvbG9yIHBhcnNlSFNMUGFyYW1ldGVy
cyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29u
dGV4dCkKK3N0YXRpYyBDb2xvciBwYXJzZVJlbGF0aXZlSFNMUGFyYW1ldGVycyhDU1NQYXJzZXJU
b2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAg
IEFTU0VSVChhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbSk7CisgICAgY29uc3VtZUlk
ZW50UmF3KGFyZ3MpOworCisgICAgYXV0byBvcmlnaW5Db2xvciA9IGNvbnN1bWVPcmlnaW5Db2xv
cihhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAoIW9yaWdpbkNvbG9yLmlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gaHVlID0gY29uc3VtZUh1ZU9ySWRlbnQ8Q1NTVmFs
dWVIPihhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAoIWh1ZSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgIGF1dG8gc2F0dXJhdGlvbiA9IGNvbnN1bWVQZXJjZW50T3JJZGVudDxDU1NWYWx1ZVM+
KGFyZ3MpOworICAgIGlmICghc2F0dXJhdGlvbikKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGF1dG8gbGlnaHRuZXNzID0gY29uc3VtZVBlcmNlbnRPcklkZW50PENTU1ZhbHVlTD4oYXJncyk7
CisgICAgaWYgKCFsaWdodG5lc3MpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGFs
cGhhID0gY29uc3VtZU9wdGlvbmFsQWxwaGFPcklkZW50PENTU1ZhbHVlQWxwaGE+KGFyZ3MpOwor
ICAgIGlmICghYWxwaGEpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoIWFyZ3MuYXRF
bmQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIC8vIEFmdGVyIHBhcnNpbmcsIGNvbnZl
cnQgaWRlbnRpZmllcnMgdG8gdmFsdWVzIGZyb20gdGhlIG9yaWdpbiBjb2xvci4KKworICAgIGF1
dG8gb3JpZ2luQ29sb3JBc0hTTCA9IG9yaWdpbkNvbG9yLnRvQ29sb3JUeXBlTG9zc3k8SFNMQTxm
bG9hdD4+KCk7CisKKyAgICBhdXRvIHJlc29sdmVkSHVlID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JD
aGFubmVsPENTU1ZhbHVlSCwgQ1NTVmFsdWVTLCBDU1NWYWx1ZUwsIENTU1ZhbHVlQWxwaGE+KCpo
dWUsIG9yaWdpbkNvbG9yQXNIU0wsIFtdKGF1dG8gaHVlKSB7CisgICAgICAgIHJldHVybiBub3Jt
YWxpemVIdWUoaHVlKTsKKyAgICB9KTsKKyAgICBhdXRvIHJlc29sdmVkU2F0dXJhdGlvbiA9IHJl
c29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUgsIENTU1ZhbHVlUywgQ1NTVmFsdWVM
LCBDU1NWYWx1ZUFscGhhPigqc2F0dXJhdGlvbiwgb3JpZ2luQ29sb3JBc0hTTCwgW10oYXV0byBz
YXR1cmF0aW9uKSB7CisgICAgICAgIHJldHVybiBjbGFtcFRvKHNhdHVyYXRpb24sIDAuMCwgMTAw
LjApOworICAgIH0pOworICAgIGF1dG8gcmVzb2x2ZWRMaWdodG5lc3MgPSByZXNvbHZlUmVsYXRp
dmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVILCBDU1NWYWx1ZVMsIENTU1ZhbHVlTCwgQ1NTVmFsdWVB
bHBoYT4oKmxpZ2h0bmVzcywgb3JpZ2luQ29sb3JBc0hTTCwgW10oYXV0byBsaWdodG5lc3MpIHsK
KyAgICAgICAgcmV0dXJuIGNsYW1wVG8obGlnaHRuZXNzLCAwLjAsIDEwMC4wKTsKKyAgICB9KTsK
KyAgICBhdXRvIHJlc29sdmVkQWxwaGEgPSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NT
VmFsdWVILCBDU1NWYWx1ZVMsIENTU1ZhbHVlTCwgQ1NTVmFsdWVBbHBoYT4oKmFscGhhLCBvcmln
aW5Db2xvckFzSFNMKTsKKworICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+
KEhTTEE8ZmxvYXQ+IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkSHVlKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHJlc29sdmVkU2F0dXJhdGlvbiksIHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZl
ZExpZ2h0bmVzcyksIHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZEFscGhhKSB9KTsKK30KKwor
ZW51bSBjbGFzcyBIU0xGdW5jdGlvbk1vZGUgeyBIU0wsIEhTTEEgfTsKKwordGVtcGxhdGU8SFNM
RnVuY3Rpb25Nb2RlIE1vZGU+IHN0YXRpYyBDb2xvciBwYXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7
CiAgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVIc2wgfHwg
cmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUhzbGEpOwogICAgIGF1dG8gYXJn
cyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CiAKKyAgICBpZiBjb25zdGV4cHIgKE1vZGUgPT0g
SFNMRnVuY3Rpb25Nb2RlOjpIU0wpIHsKKyAgICAgICAgaWYgKGNvbnRleHQucmVsYXRpdmVDb2xv
clN5bnRheEVuYWJsZWQgJiYgYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUZyb20pCisgICAg
ICAgICAgICByZXR1cm4gcGFyc2VSZWxhdGl2ZUhTTFBhcmFtZXRlcnMoYXJncywgY29udGV4dCk7
CisgICAgfQorCiAgICAgYXV0byBodWUgPSBjb25zdW1lSHVlKGFyZ3MsIGNvbnRleHQpOwogICAg
IGlmICghaHVlKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtODQxLDkgKzEwOTQsOSBAQCBzdGF0
aWMgQ29sb3IgcGFyc2VIU0xQYXJhbWV0ZXJzKENTU1BhcnNlCiAgICAgICAgIHJldHVybiB7IH07
CiAKICAgICBhdXRvIG5vcm1hbGl6ZWRIdWUgPSBub3JtYWxpemVIdWUoKmh1ZSk7Ci0gICAgYXV0
byBub3JtYWxpemVkU2F0dXJhdGlvbiA9IGNsYW1wVG88ZG91YmxlPigqc2F0dXJhdGlvbiwgMC4w
LCAxMDAuMCk7Ci0gICAgYXV0byBub3JtYWxpemVkTGlnaHRuZXNzID0gY2xhbXBUbzxkb3VibGU+
KCpsaWdodG5lc3MsIDAuMCwgMTAwLjApOwotICAgIGF1dG8gbm9ybWFsaXplZEFscGhhID0gY2xh
bXBUbzxkb3VibGU+KCphbHBoYSwgMC4wLCAxLjApOworICAgIGF1dG8gbm9ybWFsaXplZFNhdHVy
YXRpb24gPSBjbGFtcFRvKCpzYXR1cmF0aW9uLCAwLjAsIDEwMC4wKTsKKyAgICBhdXRvIG5vcm1h
bGl6ZWRMaWdodG5lc3MgPSBjbGFtcFRvKCpsaWdodG5lc3MsIDAuMCwgMTAwLjApOworICAgIGF1
dG8gbm9ybWFsaXplZEFscGhhID0gY2xhbXBUbygqYWxwaGEsIDAuMCwgMS4wKTsKIAogICAgIHJl
dHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KEhTTEE8ZmxvYXQ+IHsgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRIdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZFNh
dHVyYXRpb24pLCBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZExpZ2h0bmVzcyksIHN0YXRp
Y19jYXN0PGZsb2F0Pihub3JtYWxpemVkQWxwaGEpIH0pOwogfQpAQCAtODU0LDEyICsxMTA3LDEy
IEBAIHN0cnVjdCBXaGl0ZW5lc3NCbGFja25lc3MgewogfTsKIHN0YXRpYyBXaGl0ZW5lc3NCbGFj
a25lc3Mgbm9ybWFsaXplV2hpdGVuZXNzQmxhY2tuZXNzKGRvdWJsZSB3aGl0ZW5lc3MsIGRvdWJs
ZSBibGFja25lc3MpCiB7Ci0gICAgV2hpdGVuZXNzQmxhY2tuZXNzIHJlc3VsdDsKLQogICAgIC8v
ICAgVmFsdWVzIG91dHNpZGUgb2YgdGhlc2UgcmFuZ2VzIGFyZSBub3QgaW52YWxpZCwgYnV0IGFy
ZSBjbGFtcGVkIHRvIHRoZQogICAgIC8vICAgcmFuZ2VzIGRlZmluZWQgaGVyZSBhdCBjb21wdXRl
ZC12YWx1ZSB0aW1lLgotICAgIHJlc3VsdC53aGl0ZW5lc3MgPSBjbGFtcFRvPGRvdWJsZT4od2hp
dGVuZXNzLCAwLCAxMDApOwotICAgIHJlc3VsdC5ibGFja25lc3MgPSBjbGFtcFRvPGRvdWJsZT4o
YmxhY2tuZXNzLCAwLCAxMDApOworICAgIFdoaXRlbmVzc0JsYWNrbmVzcyByZXN1bHQgeworICAg
ICAgICBjbGFtcFRvKHdoaXRlbmVzcywgMC4wLCAxMDAuMCksCisgICAgICAgIGNsYW1wVG8oYmxh
Y2tuZXNzLCAwLjAsIDEwMC4wKQorICAgIH07CiAKICAgICAvLyAgIElmIHRoZSBzdW0gb2YgdGhl
c2UgdHdvIGFyZ3VtZW50cyBpcyBncmVhdGVyIHRoYW4gMTAwJSwgdGhlbiBhdAogICAgIC8vICAg
Y29tcHV0ZWQtdmFsdWUgdGltZSB0aGV5IGFyZSBmdXJ0aGVyIG5vcm1hbGl6ZWQgdG8gYWRkIHVw
IHRvIDEwMCUsIHdpdGgKQEAgLTg3MiwxMSArMTEyNSw1OCBAQCBzdGF0aWMgV2hpdGVuZXNzQmxh
Y2tuZXNzIG5vcm1hbGl6ZVdoaXRlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIENv
bG9yIHBhcnNlUmVsYXRpdmVIV0JQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3Ms
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGFyZ3MucGVl
aygpLmlkKCkgPT0gQ1NTVmFsdWVGcm9tKTsKKyAgICBjb25zdW1lSWRlbnRSYXcoYXJncyk7CisK
KyAgICBhdXRvIG9yaWdpbkNvbG9yID0gY29uc3VtZU9yaWdpbkNvbG9yKGFyZ3MsIGNvbnRleHQp
OworICAgIGlmICghb3JpZ2luQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgYXV0byBodWUgPSBjb25zdW1lSHVlT3JJZGVudDxDU1NWYWx1ZUg+KGFyZ3MsIGNvbnRl
eHQpOworICAgIGlmICghaHVlKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byB3aGl0
ZW5lc3MgPSBjb25zdW1lUGVyY2VudE9ySWRlbnQ8Q1NTVmFsdWVXPihhcmdzKTsKKyAgICBpZiAo
IXdoaXRlbmVzcykKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gYmxhY2tuZXNzID0g
Y29uc3VtZVBlcmNlbnRPcklkZW50PENTU1ZhbHVlQj4oYXJncyk7CisgICAgaWYgKCFibGFja25l
c3MpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGFscGhhID0gY29uc3VtZU9wdGlv
bmFsQWxwaGFPcklkZW50PENTU1ZhbHVlQWxwaGE+KGFyZ3MpOworICAgIGlmICghYWxwaGEpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIC8vIEFmdGVyIHBhcnNpbmcsIGNvbnZlcnQgaWRlbnRpZmllcnMgdG8g
dmFsdWVzIGZyb20gdGhlIG9yaWdpbiBjb2xvci4KKworICAgIGF1dG8gb3JpZ2luQ29sb3JBc0hX
QiA9IG9yaWdpbkNvbG9yLnRvQ29sb3JUeXBlTG9zc3k8SFdCQTxmbG9hdD4+KCk7CisKKyAgICBh
dXRvIHJlc29sdmVkSHVlID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlSCwg
Q1NTVmFsdWVXLCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KCpodWUsIG9yaWdpbkNvbG9yQXNI
V0IsIFtdKGF1dG8gaHVlKSB7CisgICAgICAgIHJldHVybiBub3JtYWxpemVIdWUoaHVlKTsKKyAg
ICB9KTsKKyAgICBhdXRvIHJlc29sdmVkV2hpdGVuZXNzID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JD
aGFubmVsPENTU1ZhbHVlSCwgQ1NTVmFsdWVXLCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KCp3
aGl0ZW5lc3MsIG9yaWdpbkNvbG9yQXNIV0IpOworICAgIGF1dG8gcmVzb2x2ZWRCbGFja25lc3Mg
PSByZXNvbHZlUmVsYXRpdmVDb2xvckNoYW5uZWw8Q1NTVmFsdWVILCBDU1NWYWx1ZVcsIENTU1Zh
bHVlQiwgQ1NTVmFsdWVBbHBoYT4oKmJsYWNrbmVzcywgb3JpZ2luQ29sb3JBc0hXQik7CisgICAg
YXV0byByZXNvbHZlZEFscGhhID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVl
SCwgQ1NTVmFsdWVXLCBDU1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KCphbHBoYSwgb3JpZ2luQ29s
b3JBc0hXQik7CisKKyAgICBhdXRvIFtub3JtYWxpemVkV2hpdG5lc3MsIG5vcm1hbGl6ZWRCbGFj
a25lc3NdID0gbm9ybWFsaXplV2hpdGVuZXNzQmxhY2tuZXNzKHJlc29sdmVkV2hpdGVuZXNzLCBy
ZXNvbHZlZEJsYWNrbmVzcyk7CisKKyAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4
X3Q+PihIV0JBPGZsb2F0PiB7IHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZEh1ZSksIHN0YXRp
Y19jYXN0PGZsb2F0Pihub3JtYWxpemVkV2hpdG5lc3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4obm9y
bWFsaXplZEJsYWNrbmVzcyksIHN0YXRpY19jYXN0PGZsb2F0PihyZXNvbHZlZEFscGhhKSB9KTsK
K30KKwogc3RhdGljIENvbG9yIHBhcnNlSFdCUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBBU1NFUlQo
cmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUh3Yik7CiAgICAgYXV0byBhcmdz
ID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKIAorICAgIGlmIChjb250ZXh0LnJlbGF0aXZlQ29s
b3JTeW50YXhFbmFibGVkICYmIGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVGcm9tKQorICAg
ICAgICByZXR1cm4gcGFyc2VSZWxhdGl2ZUhXQlBhcmFtZXRlcnMoYXJncywgY29udGV4dCk7CisK
ICAgICBhdXRvIGh1ZSA9IGNvbnN1bWVIdWUoYXJncywgY29udGV4dCk7CiAgICAgaWYgKCFodWUp
CiAgICAgICAgIHJldHVybiB7IH07CkBAIC05MDIsMTEgKzEyMDIsNTYgQEAgc3RhdGljIENvbG9y
IHBhcnNlSFdCUGFyYW1ldGVycyhDU1NQYXJzZQogICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JH
QkE8dWludDhfdD4+KEhXQkE8ZmxvYXQ+IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG5vcm1hbGl6ZWRI
dWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4obm9ybWFsaXplZFdoaXRuZXNzKSwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KG5vcm1hbGl6ZWRCbGFja25lc3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4oKmFscGhhKSB9
KTsKIH0KIAotc3RhdGljIENvbG9yIHBhcnNlTGFiUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpCitzdGF0aWMgQ29sb3IgcGFyc2VS
ZWxhdGl2ZUxhYlBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBBU1NFUlQoYXJncy5wZWVrKCkuaWQoKSA9
PSBDU1NWYWx1ZUZyb20pOworICAgIGNvbnN1bWVJZGVudFJhdyhhcmdzKTsKKworICAgIGF1dG8g
b3JpZ2luQ29sb3IgPSBjb25zdW1lT3JpZ2luQ29sb3IoYXJncywgY29udGV4dCk7CisgICAgaWYg
KCFvcmlnaW5Db2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRv
IGxpZ2h0bmVzcyA9IGNvbnN1bWVQZXJjZW50T3JJZGVudDxDU1NWYWx1ZUw+KGFyZ3MpOworICAg
IGlmICghbGlnaHRuZXNzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBhVmFsdWUg
PSBjb25zdW1lTnVtYmVyT3JJZGVudDxDU1NWYWx1ZUE+KGFyZ3MpOworICAgIGlmICghYVZhbHVl
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBiVmFsdWUgPSBjb25zdW1lTnVtYmVy
T3JJZGVudDxDU1NWYWx1ZUI+KGFyZ3MpOworICAgIGlmICghYlZhbHVlKQorICAgICAgICByZXR1
cm4geyB9OworCisgICAgYXV0byBhbHBoYSA9IGNvbnN1bWVPcHRpb25hbEFscGhhT3JJZGVudDxD
U1NWYWx1ZUFscGhhPihhcmdzKTsKKyAgICBpZiAoIWFscGhhKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgaWYgKCFhcmdzLmF0RW5kKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICAv
LyBBZnRlciBwYXJzaW5nLCBjb252ZXJ0IGlkZW50aWZpZXJzIHRvIHZhbHVlcyBmcm9tIHRoZSBv
cmlnaW4gY29sb3IuCisKKyAgICBhdXRvIG9yaWdpbkNvbG9yQXNMYWIgPSBvcmlnaW5Db2xvci50
b0NvbG9yVHlwZUxvc3N5PExhYjxmbG9hdD4+KCk7CisKKyAgICBhdXRvIHJlc29sdmVkTGlnaHRu
ZXNzID0gcmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlTCwgQ1NTVmFsdWVBLCBD
U1NWYWx1ZUIsIENTU1ZhbHVlQWxwaGE+KCpsaWdodG5lc3MsIG9yaWdpbkNvbG9yQXNMYWIsIFtd
KGF1dG8gbGlnaHRuZXNzKSB7CisgICAgICAgIHJldHVybiBzdGQ6Om1heCgwLjAsIGxpZ2h0bmVz
cyk7CisgICAgfSk7CisgICAgYXV0byByZXNvbHZlZEFWYWx1ZSA9IHJlc29sdmVSZWxhdGl2ZUNv
bG9yQ2hhbm5lbDxDU1NWYWx1ZUwsIENTU1ZhbHVlQSwgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhh
PigqYVZhbHVlLCBvcmlnaW5Db2xvckFzTGFiKTsKKyAgICBhdXRvIHJlc29sdmVkQlZhbHVlID0g
cmVzb2x2ZVJlbGF0aXZlQ29sb3JDaGFubmVsPENTU1ZhbHVlTCwgQ1NTVmFsdWVBLCBDU1NWYWx1
ZUIsIENTU1ZhbHVlQWxwaGE+KCpiVmFsdWUsIG9yaWdpbkNvbG9yQXNMYWIpOworICAgIGF1dG8g
cmVzb2x2ZWRBbHBoYSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUwsIENT
U1ZhbHVlQSwgQ1NTVmFsdWVCLCBDU1NWYWx1ZUFscGhhPigqYWxwaGEsIG9yaWdpbkNvbG9yQXNM
YWIpOworCisgICAgcmV0dXJuIExhYjxmbG9hdD4geyBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2
ZWRMaWdodG5lc3MpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRBVmFsdWUpLCBzdGF0aWNf
Y2FzdDxmbG9hdD4ocmVzb2x2ZWRCVmFsdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzb2x2ZWRB
bHBoYSkgfTsKK30KKworc3RhdGljIENvbG9yIHBhcnNlTGFiUGFyYW1ldGVycyhDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsKICAg
ICBBU1NFUlQocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUxhYik7CiAgICAg
YXV0byBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKIAorICAgIGlmIChjb250ZXh0LnJl
bGF0aXZlQ29sb3JTeW50YXhFbmFibGVkICYmIGFyZ3MucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVG
cm9tKQorICAgICAgICByZXR1cm4gcGFyc2VSZWxhdGl2ZUxhYlBhcmFtZXRlcnMoYXJncywgY29u
dGV4dCk7CisKICAgICBhdXRvIGxpZ2h0bmVzcyA9IGNvbnN1bWVQZXJjZW50UmF3KGFyZ3MpOwog
ICAgIGlmICghbGlnaHRuZXNzKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtOTMxLDExICsxMjc2
LDU4IEBAIHN0YXRpYyBDb2xvciBwYXJzZUxhYlBhcmFtZXRlcnMoQ1NTUGFyc2UKICAgICByZXR1
cm4gTGFiPGZsb2F0PiB7IHN0YXRpY19jYXN0PGZsb2F0Pihub3JtYWxpemVkTGlnaHRuZXNzKSwg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KCphVmFsdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4oKmJWYWx1ZSks
IHN0YXRpY19jYXN0PGZsb2F0PigqYWxwaGEpIH07CiB9CiAKK3N0YXRpYyBDb2xvciBwYXJzZVJl
bGF0aXZlTENIUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIEFTU0VSVChhcmdzLnBlZWsoKS5pZCgpID09
IENTU1ZhbHVlRnJvbSk7CisgICAgY29uc3VtZUlkZW50UmF3KGFyZ3MpOworCisgICAgYXV0byBv
cmlnaW5Db2xvciA9IGNvbnN1bWVPcmlnaW5Db2xvcihhcmdzLCBjb250ZXh0KTsKKyAgICBpZiAo
IW9yaWdpbkNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8g
bGlnaHRuZXNzID0gY29uc3VtZVBlcmNlbnRPcklkZW50PENTU1ZhbHVlTD4oYXJncyk7CisgICAg
aWYgKCFsaWdodG5lc3MpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGNocm9tYSA9
IGNvbnN1bWVOdW1iZXJPcklkZW50PENTU1ZhbHVlQz4oYXJncyk7CisgICAgaWYgKCFjaHJvbWEp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGh1ZSA9IGNvbnN1bWVIdWVPcklkZW50
PENTU1ZhbHVlSD4oYXJncywgY29udGV4dCk7CisgICAgaWYgKCFodWUpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBhdXRvIGFscGhhID0gY29uc3VtZU9wdGlvbmFsQWxwaGFPcklkZW50PENT
U1ZhbHVlQWxwaGE+KGFyZ3MpOworICAgIGlmICghYWxwaGEpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICBpZiAoIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1
dG8gb3JpZ2luQ29sb3JBc0xDSCA9IG9yaWdpbkNvbG9yLnRvQ29sb3JUeXBlTG9zc3k8TENIQTxm
bG9hdD4+KCk7CisKKyAgICBhdXRvIHJlc29sdmVkTGlnaHRuZXNzID0gcmVzb2x2ZVJlbGF0aXZl
Q29sb3JDaGFubmVsPENTU1ZhbHVlTCwgQ1NTVmFsdWVDLCBDU1NWYWx1ZUgsIENTU1ZhbHVlQWxw
aGE+KCpsaWdodG5lc3MsIG9yaWdpbkNvbG9yQXNMQ0gsIFtdKGF1dG8gbGlnaHRuZXNzKSB7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om1heCgwLjAsIGxpZ2h0bmVzcyk7CisgICAgfSk7CisgICAgYXV0
byByZXNvbHZlZENocm9tYSA9IHJlc29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUws
IENTU1ZhbHVlQywgQ1NTVmFsdWVILCBDU1NWYWx1ZUFscGhhPigqY2hyb21hLCBvcmlnaW5Db2xv
ckFzTENILCBbXShhdXRvIGNocm9tYSkgeworICAgICAgICByZXR1cm4gc3RkOjptYXgoMC4wLCBj
aHJvbWEpOworICAgIH0pOworICAgIGF1dG8gcmVzb2x2ZWRIdWUgPSByZXNvbHZlUmVsYXRpdmVD
b2xvckNoYW5uZWw8Q1NTVmFsdWVMLCBDU1NWYWx1ZUMsIENTU1ZhbHVlSCwgQ1NTVmFsdWVBbHBo
YT4oKmh1ZSwgb3JpZ2luQ29sb3JBc0xDSCwgW10oYXV0byBodWUpIHsKKyAgICAgICAgcmV0dXJu
IG5vcm1hbGl6ZUh1ZShodWUpOworICAgIH0pOworICAgIGF1dG8gcmVzb2x2ZWRBbHBoYSA9IHJl
c29sdmVSZWxhdGl2ZUNvbG9yQ2hhbm5lbDxDU1NWYWx1ZUwsIENTU1ZhbHVlQywgQ1NTVmFsdWVI
LCBDU1NWYWx1ZUFscGhhPigqYWxwaGEsIG9yaWdpbkNvbG9yQXNMQ0gpOworCisgICAgcmV0dXJu
IExDSEE8ZmxvYXQ+IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkTGlnaHRuZXNzKSwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkQ2hyb21hKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29s
dmVkSHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc29sdmVkQWxwaGEpIH07Cit9CisKIHN0YXRp
YyBDb2xvciBwYXJzZUxDSFBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNv
bnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKHJhbmdlLnBlZWso
KS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVMY2gpOwogICAgIGF1dG8gYXJncyA9IGNvbnN1bWVG
dW5jdGlvbihyYW5nZSk7CiAKKyAgICBpZiAoY29udGV4dC5yZWxhdGl2ZUNvbG9yU3ludGF4RW5h
YmxlZCAmJiBhcmdzLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlRnJvbSkKKyAgICAgICAgcmV0dXJu
IHBhcnNlUmVsYXRpdmVMQ0hQYXJhbWV0ZXJzKGFyZ3MsIGNvbnRleHQpOworCiAgICAgYXV0byBs
aWdodG5lc3MgPSBjb25zdW1lUGVyY2VudFJhdyhhcmdzKTsKICAgICBpZiAoIWxpZ2h0bmVzcykK
ICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTExMzEsMTIgKzE1MjMsMTYgQEAgc3RhdGljIENvbG9y
IHBhcnNlQ29sb3JGdW5jdGlvbihDU1NQYXJzZQogICAgIENvbG9yIGNvbG9yOwogICAgIHN3aXRj
aCAoZnVuY3Rpb25JZCkgewogICAgIGNhc2UgQ1NTVmFsdWVSZ2I6CisgICAgICAgIGNvbG9yID0g
cGFyc2VSR0JQYXJhbWV0ZXJzPFJHQkZ1bmN0aW9uTW9kZTo6UkdCPihjb2xvclJhbmdlLCBjb250
ZXh0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZVJnYmE6Ci0gICAgICAgIGNv
bG9yID0gcGFyc2VSR0JQYXJhbWV0ZXJzKGNvbG9yUmFuZ2UsIGNvbnRleHQpOworICAgICAgICBj
b2xvciA9IHBhcnNlUkdCUGFyYW1ldGVyczxSR0JGdW5jdGlvbk1vZGU6OlJHQkE+KGNvbG9yUmFu
Z2UsIGNvbnRleHQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlSHNsOgorICAg
ICAgICBjb2xvciA9IHBhcnNlSFNMUGFyYW1ldGVyczxIU0xGdW5jdGlvbk1vZGU6OkhTTD4oY29s
b3JSYW5nZSwgY29udGV4dCk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVIc2xh
OgotICAgICAgICBjb2xvciA9IHBhcnNlSFNMUGFyYW1ldGVycyhjb2xvclJhbmdlLCBjb250ZXh0
KTsKKyAgICAgICAgY29sb3IgPSBwYXJzZUhTTFBhcmFtZXRlcnM8SFNMRnVuY3Rpb25Nb2RlOjpI
U0xBPihjb2xvclJhbmdlLCBjb250ZXh0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NW
YWx1ZUh3YjoKICAgICAgICAgY29sb3IgPSBwYXJzZUhXQlBhcmFtZXRlcnMoY29sb3JSYW5nZSwg
Y29udGV4dCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzMxMDIpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wMi0xOCAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGV4cGVyaW1lbnRhbCBzdXBw
b3J0IGZvciBDU1MgQ29sb3IgNSBSZWxhdGl2ZSBDb2xvciBTeW50YXgKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTg4MAorCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogZmFzdC9jc3MvcGFyc2luZy1yZWxhdGl2
ZS1jb2xvci1zeW50YXgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9w
YXJzaW5nLXJlbGF0aXZlLWNvbG9yLXN5bnRheC5odG1sOiBBZGRlZC4KKyAgICAgICAgQWRkIGJh
c2ljIHBhcnNpbmcgYW5kIGNvbXB1dGVkIHN0eWxlIGNvbXB1dGF0aW9uIHRlc3RzIGZvciByZWxh
dGl2ZSBjb2xvciBzeW50YXguCisKIDIwMjEtMDItMTggIEFtaXIgTWFyayBKciAgPGFtaXJfbWFy
a0BhcHBsZS5jb20+CiAKICAgICAgICAgW0JpZ1N1cl0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWNvdW50ZXItc3R5bGVzL3RpYmV0YW4vY3NzMy1jb3VudGVyLXN0eWxl
cy0xNTYuaHRtbCBpcyBjb25zaXN0ZW50bHkgZmFpbGluZwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcGFyc2luZy1yZWxhdGl2ZS1jb2xvci1zeW50YXgtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctcmVsYXRpdmUtY29sb3Itc3ludGF4
LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJz
aW5nLXJlbGF0aXZlLWNvbG9yLXN5bnRheC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwyNTAgQEAKK1Rlc3QgdGhlIHBhcnNpbmcgb2YgQ1NTIENvbG9yIDUgUmVsYXRpdmUg
Q29sb3IgU3ludGF4LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworcmdiKGZyb20g
Li4uKQorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJl
YmVjY2FwdXJwbGUgciBnIGIpIikgaXMgInJnYigxMDIsIDUxLCAxNTMpIgorUEFTUyBjb21wdXRl
ZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJlYmVjY2FwdXJwbGUgciBnIGIg
LyBhbHBoYSkiKSBpcyAicmdiKDEwMiwgNTEsIDE1MykiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJh
Y2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgciBnIGIg
LyBhbHBoYSkiKSBpcyAicmdiYSgyNiwgNTEsIDc3LCAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxl
KCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIGhzbCgxMjBkZWcgMjAlIDUwJSAvIC41KSBy
IGcgYiAvIGFscGhhKSIpIGlzICJyZ2JhKDEwMiwgMTUzLCAxMDIsIDAuNSkiCitQQVNTIGNvbXB1
dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmdiKGZyb20gcmViZWNjYXB1
cnBsZSByIGcgYikgciBnIGIpIikgaXMgInJnYigxMDIsIDUxLCAxNTMpIgorUEFTUyBjb21wdXRl
ZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIGNvbG9yKGRpc3BsYXktcDMgMCAx
IDApIHIgZyBiIC8gYWxwaGEpIikgaXMgInJnYigwLCAyNTUsIDApIgorUEFTUyBjb21wdXRlZFN0
eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJlYmVjY2FwdXJwbGUgMCAwIDApIikg
aXMgInJnYigwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIs
ICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIDAgMCAwIC8gMCkiKSBpcyAicmdiYSgwLCAwLCAwLCAw
KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJl
Y2NhcHVycGxlIDAgZyBiIC8gYWxwaGEpIikgaXMgInJnYigwLCA1MSwgMTUzKSIKK1BBU1MgY29t
cHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIg
MCBiIC8gYWxwaGEpIikgaXMgInJnYigxMDIsIDAsIDE1MykiCitQQVNTIGNvbXB1dGVkU3R5bGUo
ImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmViZWNjYXB1cnBsZSByIGcgMCAvIGFscGhh
KSIpIGlzICJyZ2IoMTAyLCA1MSwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQt
Y29sb3IiLCAicmdiKGZyb20gcmViZWNjYXB1cnBsZSByIGcgYiAvIDApIikgaXMgInJnYmEoMTAy
LCA1MSwgMTUzLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJy
Z2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAwIGcgYiAvIGFscGhhKSIpIGlzICJyZ2Jh
KDAsIDUxLCA3NywgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIs
ICJyZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIDAgYiAvIGFscGhhKSIpIGlzICJy
Z2JhKDI2LCAwLCA3NywgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xv
ciIsICJyZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIGcgMCAvIGFscGhhKSIpIGlz
ICJyZ2JhKDI2LCA1MSwgMCwgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1j
b2xvciIsICJyZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIGcgYiAvIDApIikgaXMg
InJnYmEoMjYsIDUxLCA3NywgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29s
b3IiLCAicmdiKGZyb20gcmViZWNjYXB1cnBsZSAyNSBnIGIgLyBhbHBoYSkiKSBpcyAicmdiKDI1
LCA1MSwgMTUzKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2Io
ZnJvbSByZWJlY2NhcHVycGxlIHIgMjUgYiAvIGFscGhhKSIpIGlzICJyZ2IoMTAyLCAyNSwgMTUz
KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJl
Y2NhcHVycGxlIHIgZyAyNSAvIGFscGhhKSIpIGlzICJyZ2IoMTAyLCA1MSwgMjUpIgorUEFTUyBj
b21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJlYmVjY2FwdXJwbGUg
ciBnIGIgLyAuMjUpIikgaXMgInJnYmEoMTAyLCA1MSwgMTUzLCAwLjI1KSIKK1BBU1MgY29tcHV0
ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwg
NDAlKSAyNSBnIGIgLyBhbHBoYSkiKSBpcyAicmdiYSgyNSwgNTEsIDc3LCAwLjQpIgorUEFTUyBj
b21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJnYigxMCUsIDIwJSwg
MzAlLCA0MCUpIHIgMjUgYiAvIGFscGhhKSIpIGlzICJyZ2JhKDI2LCAyNSwgNzcsIDAuNCkiCitQ
QVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmdiKDEwJSwg
MjAlLCAzMCUsIDQwJSkgciBnIDI1IC8gYWxwaGEpIikgaXMgInJnYmEoMjYsIDUxLCAyNSwgMC40
KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZ2Io
MTAlLCAyMCUsIDMwJSwgNDAlKSByIGcgYiAvIC4yNSkiKSBpcyAicmdiYSgyNiwgNTEsIDc3LCAw
LjI1KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSBy
ZWJlY2NhcHVycGxlIDI1JSBnIGIgLyBhbHBoYSkiKSBpcyAicmdiKDY0LCA1MSwgMTUzKSIKK1BB
U1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVy
cGxlIHIgMjUlIGIgLyBhbHBoYSkiKSBpcyAicmdiKDEwMiwgNjQsIDE1MykiCitQQVNTIGNvbXB1
dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmViZWNjYXB1cnBsZSByIGcg
MjUlIC8gYWxwaGEpIikgaXMgInJnYigxMDIsIDUxLCA2NCkiCitQQVNTIGNvbXB1dGVkU3R5bGUo
ImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmViZWNjYXB1cnBsZSByIGcgYiAvIDI1JSki
KSBpcyAicmdiYSgxMDIsIDUxLCAxNTMsIDAuMjUpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNr
Z3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDI1JSBnIGIg
LyBhbHBoYSkiKSBpcyAicmdiYSg2NCwgNTEsIDc3LCAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxl
KCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIHIg
MjUlIGIgLyBhbHBoYSkiKSBpcyAicmdiYSgyNiwgNjQsIDc3LCAwLjQpIgorUEFTUyBjb21wdXRl
ZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0
MCUpIHIgZyAyNSUgLyBhbHBoYSkiKSBpcyAicmdiYSgyNiwgNTEsIDY0LCAwLjQpIgorUEFTUyBj
b21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJnYigxMCUsIDIwJSwg
MzAlLCA0MCUpIHIgZyBiIC8gMjUlKSIpIGlzICJyZ2JhKDI2LCA1MSwgNzcsIDAuMjUpIgorUEFT
UyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJlYmVjY2FwdXJw
bGUgMjUgZyBiIC8gMjUlKSIpIGlzICJyZ2JhKDI1LCA1MSwgMTUzLCAwLjI1KSIKK1BBU1MgY29t
cHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIg
MjUgYiAvIDI1JSkiKSBpcyAicmdiYSgxMDIsIDI1LCAxNTMsIDAuMjUpIgorUEFTUyBjb21wdXRl
ZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJlYmVjY2FwdXJwbGUgciBnIDI1
IC8gMjUlKSIpIGlzICJyZ2JhKDEwMiwgNTEsIDI1LCAwLjI1KSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAy
NSBnIGIgLyAyNSUpIikgaXMgInJnYmEoMjUsIDUxLCA3NywgMC4yNSkiCitQQVNTIGNvbXB1dGVk
U3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQw
JSkgciAyNSBiIC8gMjUlKSIpIGlzICJyZ2JhKDI2LCAyNSwgNzcsIDAuMjUpIgorUEFTUyBjb21w
dXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAl
LCA0MCUpIHIgZyAyNSAvIDI1JSkiKSBpcyAicmdiYSgyNiwgNTEsIDI1LCAwLjI1KSIKK1BBU1Mg
Y29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxl
IGcgYiByKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNr
Z3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJlYmVjY2FwdXJwbGUgYiBhbHBoYSByIC8gZykiKSBp
cyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xv
ciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgciByIC8gcikiKSBpcyAicmdiYSgwLCAwLCAw
LCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSBy
ZWJlY2NhcHVycGxlIGFscGhhIGFscGhhIGFscGhhIC8gYWxwaGEpIikgaXMgInJnYmEoMCwgMCwg
MCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20g
cmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgZyBiIHIpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQ
QVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmdiKDEwJSwg
MjAlLCAzMCUsIDQwJSkgYiBhbHBoYSByIC8gZykiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BB
U1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZ2IoMTAlLCAy
MCUsIDMwJSwgNDAlKSByIHIgciAvIHIpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNv
bXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmdiKDEwJSwgMjAlLCAz
MCUsIDQwJSkgYWxwaGEgYWxwaGEgYWxwaGEgLyBhbHBoYSkiKSBpcyAicmdiYSgwLCAwLCAwLCAw
KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJl
Y2NhcHVycGxlIHIgMTAlIDEwKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRl
ZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgInJnYihmcm9tIHJlYmVjY2FwdXJwbGUgciAxMCAx
MCUpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91
bmQtY29sb3IiLCAicmdiKGZyb20gcmViZWNjYXB1cnBsZSAwJSAxMCAxMCkiKSBpcyAicmdiYSgw
LCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2Io
ZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIDEwJSAxMCkiKSBpcyAicmdiYSgwLCAwLCAw
LCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSBy
Z2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIDEwIDEwJSkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIK
K1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZ2IoMTAl
LCAyMCUsIDMwJSwgNDAlKSAwJSAxMCAxMCkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1Mg
Y29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJyZ2IoZnJvbSByZWJlY2NhcHVycGxl
IHJlZCBnIGIpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJh
Y2tncm91bmQtY29sb3IiLCAicmdiKGZyb20gcmViZWNjYXB1cnBsZSBsIGcgYikiKSBpcyAicmdi
YSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJy
Z2IoZnJvbSByZWJlY2NhcHVycGxlIGggZyBiKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorCito
c2woZnJvbSAuLi4pCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNs
KGZyb20gcmViZWNjYXB1cnBsZSBoIHMgbCkiKSBpcyAicmdiKDEwMiwgNTEsIDE1MykiCitQQVNT
IGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1cnBs
ZSBoIHMgbCAvIGFscGhhKSIpIGlzICJyZ2IoMTAyLCA1MSwgMTUzKSIKK1BBU1MgY29tcHV0ZWRT
dHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAl
KSBoIHMgbCAvIGFscGhhKSIpIGlzICJyZ2JhKDI2LCA1MSwgNzcsIDAuNCkiCitQQVNTIGNvbXB1
dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gaHNsKDEyMGRlZyAyMCUgNTAl
IC8gLjUpIGggcyBsIC8gYWxwaGEpIikgaXMgInJnYmEoMTAyLCAxNTMsIDEwMiwgMC41KSIKK1BB
U1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSBoc2woZnJvbSBy
ZWJlY2NhcHVycGxlIGggcyBsKSBoIHMgbCkiKSBpcyAicmdiKDEwMiwgNTEsIDE1MykiCitQQVNT
IGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gY29sb3IoZGlzcGxh
eS1wMyAwIDEgMCkgaCBzIGwgLyBhbHBoYSkiKSBpcyAicmdiKDAsIDI1NSwgMCkiCitQQVNTIGNv
bXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1cnBsZSAw
IDAlIDAlKSIpIGlzICJyZ2IoMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91
bmQtY29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1cnBsZSAwZGVnIDAlIDAlKSIpIGlzICJyZ2Io
MCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZy
b20gcmViZWNjYXB1cnBsZSAwIDAlIDAlIC8gMCkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BB
U1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZWJlY2NhcHVy
cGxlIDBkZWcgMCUgMCUgLyAwKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRl
ZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJlYmVjY2FwdXJwbGUgMCBzIGwg
LyBhbHBoYSkiKSBpcyAicmdiKDE1MywgNTEsIDUxKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFj
a2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZWJlY2NhcHVycGxlIDBkZWcgcyBsIC8gYWxwaGEp
IikgaXMgInJnYigxNTMsIDUxLCA1MSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQt
Y29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIDAlIGwgLyBhbHBoYSkiKSBpcyAicmdi
KDEwMiwgMTAyLCAxMDIpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
ImhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaCBzIDAlIC8gYWxwaGEpIikgaXMgInJnYigwLCAwLCAw
KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZWJl
Y2NhcHVycGxlIGggcyBsIC8gMCkiKSBpcyAicmdiYSgxMDIsIDUxLCAxNTMsIDApIgorUEFTUyBj
b21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJnYigxMCUsIDIwJSwg
MzAlLCA0MCUpIDAgcyBsIC8gYWxwaGEpIikgaXMgInJnYmEoNzcsIDI2LCAyNiwgMC40KSIKK1BB
U1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZ2IoMTAlLCAy
MCUsIDMwJSwgNDAlKSAwZGVnIHMgbCAvIGFscGhhKSIpIGlzICJyZ2JhKDc3LCAyNiwgMjYsIDAu
NCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmdi
KDEwJSwgMjAlLCAzMCUsIDQwJSkgaCAwJSBsIC8gYWxwaGEpIikgaXMgInJnYmEoNTIsIDUyLCA1
MiwgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJv
bSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHMgMCUgLyBhbHBoYSkiKSBpcyAicmdiYSgwLCAw
LCAwLCAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChm
cm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggcyBsIC8gMCkiKSBpcyAicmdiYSgyNiwgNTEs
IDc3LCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJv
bSByZWJlY2NhcHVycGxlIDI1IHMgbCAvIGFscGhhKSIpIGlzICJyZ2IoMTUzLCA5NCwgNTEpIgor
UEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJlYmVjY2Fw
dXJwbGUgMjVkZWcgcyBsIC8gYWxwaGEpIikgaXMgInJnYigxNTMsIDk0LCA1MSkiCitQQVNTIGNv
bXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1cnBsZSBo
IDI1JSBsIC8gYWxwaGEpIikgaXMgInJnYigxMDIsIDc3LCAxMjgpIgorUEFTUyBjb21wdXRlZFN0
eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaCBzIDI1JSAv
IGFscGhhKSIpIGlzICJyZ2IoNjQsIDMyLCA5NikiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tn
cm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIHMgbCAvIC4yNSkiKSBpcyAi
cmdiYSgxMDIsIDUxLCAxNTMsIDAuMjUpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5k
LWNvbG9yIiwgImhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDI1IHMgbCAvIGFscGhh
KSIpIGlzICJyZ2JhKDc3LCA0NywgMjYsIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tn
cm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgMjVkZWcgcyBs
IC8gYWxwaGEpIikgaXMgInJnYmEoNzcsIDQ3LCAyNiwgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBo
IDI1JSBsIC8gYWxwaGEpIikgaXMgInJnYmEoMzksIDUxLCA2NCwgMC40KSIKK1BBU1MgY29tcHV0
ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwg
NDAlKSBoIHMgMjUlIC8gYWxwaGEpIikgaXMgInJnYmEoMzIsIDYzLCA5NSwgMC40KSIKK1BBU1Mg
Y29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZ2IoMTAlLCAyMCUs
IDMwJSwgNDAlKSBoIHMgbCAvIC4yNSkiKSBpcyAicmdiYSgyNiwgNTEsIDc3LCAwLjI1KSIKK1BB
U1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZWJlY2NhcHVy
cGxlIGggbCBzKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJi
YWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaCBhbHBoYSBsIC8gcyki
KSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1j
b2xvciIsICJoc2woZnJvbSByZWJlY2NhcHVycGxlIGggbCBsIC8gbCkiKSBpcyAicmdiYSgwLCAw
LCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJv
bSByZWJlY2NhcHVycGxlIGggYWxwaGEgYWxwaGEgLyBhbHBoYSkiKSBpcyAicmdiYSgwLCAwLCAw
LCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSBy
Z2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIGwgcykiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BB
U1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZ2IoMTAlLCAy
MCUsIDMwJSwgNDAlKSBoIGFscGhhIGwgLyBzKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFT
UyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJnYigxMCUsIDIw
JSwgMzAlLCA0MCUpIGggbCBsIC8gbCkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29t
cHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMw
JSwgNDAlKSBoIGFscGhhIGFscGhhIC8gYWxwaGEpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQ
QVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHNsKGZyb20gcmViZWNjYXB1
cnBsZSBoIDEwJSAxMCkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZWJlY2NhcHVycGxlIGggMTAgMTAlKSIp
IGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNv
bG9yIiwgImhzbChmcm9tIHJlYmVjY2FwdXJwbGUgMTAlIHMgbCkiKSBpcyAicmdiYSgwLCAwLCAw
LCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSBy
Z2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIDEwJSAxMCkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIK
K1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZ2IoMTAl
LCAyMCUsIDMwJSwgNDAlKSBoIDEwIDEwJSkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1Mg
Y29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJoc2woZnJvbSByZ2IoMTAlLCAyMCUs
IDMwJSwgNDAlKSAxMCUgcyBsKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRl
ZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaHVlIHMg
bCkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3Vu
ZC1jb2xvciIsICJoc2woZnJvbSByZWJlY2NhcHVycGxlIHggcyBsKSIpIGlzICJyZ2JhKDAsIDAs
IDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImhzbChmcm9t
IHJlYmVjY2FwdXJwbGUgaCBnIGIpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCisKK2h3Yihmcm9t
IC4uLikKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSBy
ZWJlY2NhcHVycGxlIGggdyBiKSIpIGlzICJyZ2IoMTAyLCA1MSwgMTUzKSIKK1BBU1MgY29tcHV0
ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSByZWJlY2NhcHVycGxlIGggdyBi
IC8gYWxwaGEpIikgaXMgInJnYigxMDIsIDUxLCAxNTMpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJi
YWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggdyBi
IC8gYWxwaGEpIikgaXMgInJnYmEoMjYsIDUxLCA3NywgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSBoc2woMTIwZGVnIDIwJSA1MCUgLyAuNSkg
aCB3IGIgLyBhbHBoYSkiKSBpcyAicmdiYSgxMDIsIDE1MywgMTAyLCAwLjUpIgorUEFTUyBjb21w
dXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIGh3Yihmcm9tIHJlYmVjY2Fw
dXJwbGUgaCB3IGIpIGggdyBiKSIpIGlzICJyZ2IoMTAyLCA1MSwgMTUzKSIKK1BBU1MgY29tcHV0
ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSBjb2xvcihkaXNwbGF5LXAzIDAg
MSAwKSBoIHcgYiAvIGFscGhhKSIpIGlzICJyZ2IoMCwgMjU1LCAwKSIKK1BBU1MgY29tcHV0ZWRT
dHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSByZWJlY2NhcHVycGxlIDAgMCUgMCUp
IikgaXMgInJnYigyNTUsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNv
bG9yIiwgImh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgMGRlZyAwJSAwJSkiKSBpcyAicmdiKDI1NSwg
MCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20g
cmViZWNjYXB1cnBsZSAwIDAlIDAlIC8gMCkiKSBpcyAicmdiYSgyNTUsIDAsIDAsIDApIgorUEFT
UyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJlYmVjY2FwdXJw
bGUgMGRlZyAwJSAwJSAvIDApIikgaXMgInJnYmEoMjU1LCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0
ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSByZWJlY2NhcHVycGxlIDAgdyBi
IC8gYWxwaGEpIikgaXMgInJnYigxNTMsIDUxLCA1MSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJh
Y2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmViZWNjYXB1cnBsZSAwZGVnIHcgYiAvIGFscGhh
KSIpIGlzICJyZ2IoMTUzLCA1MSwgNTEpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5k
LWNvbG9yIiwgImh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCAwJSBiIC8gYWxwaGEpIikgaXMgInJn
Yig3NywgMCwgMTUzKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJo
d2IoZnJvbSByZWJlY2NhcHVycGxlIGggdyAwJSAvIGFscGhhKSIpIGlzICJyZ2IoMTUzLCA1MSwg
MjU1KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSBy
ZWJlY2NhcHVycGxlIGggdyBiIC8gMCkiKSBpcyAicmdiYSgxMDIsIDUxLCAxNTMsIDApIgorUEFT
UyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJnYigxMCUsIDIw
JSwgMzAlLCA0MCUpIDAgdyBiIC8gYWxwaGEpIikgaXMgInJnYmEoNzcsIDI2LCAyNiwgMC40KSIK
K1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSByZ2IoMTAl
LCAyMCUsIDMwJSwgNDAlKSAwZGVnIHcgYiAvIGFscGhhKSIpIGlzICJyZ2JhKDc3LCAyNiwgMjYs
IDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20g
cmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCAwJSBiIC8gYWxwaGEpIikgaXMgInJnYmEoMCwgMzgs
IDc3LCAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihm
cm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggdyAwJSAvIGFscGhhKSIpIGlzICJyZ2JhKDI2
LCAxMzgsIDI1NSwgMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIs
ICJod2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHcgYiAvIDApIikgaXMgInJnYmEo
MjYsIDUxLCA3NywgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAi
aHdiKGZyb20gcmViZWNjYXB1cnBsZSAyNSB3IGIgLyBhbHBoYSkiKSBpcyAicmdiKDE1MywgOTQs
IDUxKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSBy
ZWJlY2NhcHVycGxlIDI1ZGVnIHcgYiAvIGFscGhhKSIpIGlzICJyZ2IoMTUzLCA5NCwgNTEpIgor
UEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJlYmVjY2Fw
dXJwbGUgaCAyNSUgYiAvIGFscGhhKSIpIGlzICJyZ2IoMTA4LCA2NCwgMTUzKSIKK1BBU1MgY29t
cHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSByZWJlY2NhcHVycGxlIGgg
dyAyNSUgLyBhbHBoYSkiKSBpcyAicmdiKDEyMSwgNTEsIDE5MSkiCitQQVNTIGNvbXB1dGVkU3R5
bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmViZWNjYXB1cnBsZSBoIHcgYiAvIC4y
NSkiKSBpcyAicmdiYSgxMDIsIDUxLCAxNTMsIDAuMjUpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJi
YWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDI1IHcg
YiAvIGFscGhhKSIpIGlzICJyZ2JhKDc3LCA0NywgMjYsIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5
bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkg
MjVkZWcgdyBiIC8gYWxwaGEpIikgaXMgInJnYmEoNzcsIDQ3LCAyNiwgMC40KSIKK1BBU1MgY29t
cHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMw
JSwgNDAlKSBoIDI1JSBiIC8gYWxwaGEpIikgaXMgInJnYmEoNjQsIDcwLCA3NywgMC40KSIKK1BB
U1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJvbSByZ2IoMTAlLCAy
MCUsIDMwJSwgNDAlKSBoIHcgMjUlIC8gYWxwaGEpIikgaXMgInJnYmEoMjYsIDEwNywgMTkxLCAw
LjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJn
YigxMCUsIDIwJSwgMzAlLCA0MCUpIGggdyBiIC8gLjI1KSIpIGlzICJyZ2JhKDI2LCA1MSwgNzcs
IDAuMjUpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9t
IHJlYmVjY2FwdXJwbGUgaCBiIHcpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1
dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmViZWNjYXB1cnBsZSBoIGFs
cGhhIHcgLyBiKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJi
YWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCB3IHcgLyB3KSIpIGlz
ICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9y
IiwgImh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCBhbHBoYSBhbHBoYSAvIGFscGhhKSIpIGlzICJy
Z2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
Imh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggYiB3KSIpIGlzICJyZ2JhKDAsIDAs
IDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9t
IHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggYWxwaGEgdyAvIGIpIikgaXMgInJnYmEoMCwgMCwg
MCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20g
cmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCB3IHcgLyB3KSIpIGlzICJyZ2JhKDAsIDAsIDAsIDAp
IgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJnYigx
MCUsIDIwJSwgMzAlLCA0MCUpIGggYWxwaGEgYWxwaGEgLyBhbHBoYSkiKSBpcyAicmdiYSgwLCAw
LCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJod2IoZnJv
bSByZWJlY2NhcHVycGxlIGggMTAlIDEwKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBj
b21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJlYmVjY2FwdXJwbGUg
aCAxMCAxMCUpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJh
Y2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmViZWNjYXB1cnBsZSAxMCUgdyBiKSIpIGlzICJy
Z2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
Imh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggMTAlIDEwKSIpIGlzICJyZ2JhKDAs
IDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihm
cm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggMTAgMTAlKSIpIGlzICJyZ2JhKDAsIDAsIDAs
IDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJn
YigxMCUsIDIwJSwgMzAlLCA0MCUpIDEwJSB3IGIpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQ
QVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAiaHdiKGZyb20gcmViZWNjYXB1
cnBsZSBodWUgdyBiKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxl
KCJiYWNrZ3JvdW5kLWNvbG9yIiwgImh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgeCB3IGIpIikgaXMg
InJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3Ii
LCAiaHdiKGZyb20gcmViZWNjYXB1cnBsZSBoIGcgYikiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIK
KworbGFiKGZyb20gLi4uKQorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
ImxhYihmcm9tIGxhYigyNSUgMjAgNTApIGwgYSBiKSIpIGlzICJsYWIoMjUlIDIwIDUwKSIKK1BB
U1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIw
IDUwKSBsIGEgYiAvIGFscGhhKSIpIGlzICJsYWIoMjUlIDIwIDUwKSIKK1BBU1MgY29tcHV0ZWRT
dHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBs
IGEgYiAvIGFscGhhKSIpIGlzICJsYWIoMjUlIDIwIDUwIC8gMC40KSIKK1BBU1MgY29tcHV0ZWRT
dHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoZnJvbSBsYWIoMjUlIDIwIDUw
KSBsIGEgYikgbCBhIGIpIikgaXMgImxhYigyNSUgMjAgNTApIgorUEFTUyBjb21wdXRlZFN0eWxl
KCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGNvbG9yKGRpc3BsYXktcDMgMCAwIDApIGwg
YSBiIC8gYWxwaGEpIikgaXMgImxhYigwJSAwIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNr
Z3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAgNTApIDAlIDAgMCkiKSBpcyAibGFi
KDAlIDAgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZy
b20gbGFiKDI1JSAyMCA1MCkgMCUgMCAwIC8gMCkiKSBpcyAibGFiKDAlIDAgMCAvIDApIgorUEFT
UyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAg
NTApIDAlIGEgYiAvIGFscGhhKSIpIGlzICJsYWIoMCUgMjAgNTApIgorUEFTUyBjb21wdXRlZFN0
eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAgNTApIGwgMCBiIC8g
YWxwaGEpIikgaXMgImxhYigyNSUgMCA1MCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91
bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCBhIDAgLyBhbHBoYSkiKSBpcyAi
bGFiKDI1JSAyMCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJs
YWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGEgYiAvIDApIikgaXMgImxhYigyNSUgMjAgNTAgLyAw
KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIo
MjUlIDIwIDUwIC8gNDAlKSAwJSBhIGIgLyBhbHBoYSkiKSBpcyAibGFiKDAlIDIwIDUwIC8gMC40
KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIo
MjUlIDIwIDUwIC8gNDAlKSBsIDAgYiAvIGFscGhhKSIpIGlzICJsYWIoMjUlIDAgNTAgLyAwLjQp
IgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigy
NSUgMjAgNTAgLyA0MCUpIGwgYSAwIC8gYWxwaGEpIikgaXMgImxhYigyNSUgMjAgMCAvIDAuNCki
CitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1
JSAyMCA1MCAvIDQwJSkgbCBhIGIgLyAwKSIpIGlzICJsYWIoMjUlIDIwIDUwIC8gMCkiCitQQVNT
IGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1
MCkgMzUlIGEgYiAvIGFscGhhKSIpIGlzICJsYWIoMzUlIDIwIDUwKSIKK1BBU1MgY29tcHV0ZWRT
dHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIDM1IGIg
LyBhbHBoYSkiKSBpcyAibGFiKDI1JSAzNSA1MCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tn
cm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCBhIDM1IC8gYWxwaGEpIikg
aXMgImxhYigyNSUgMjAgMzUpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9y
IiwgImxhYihmcm9tIGxhYigyNSUgMjAgNTApIGwgYSBiIC8gLjM1KSIpIGlzICJsYWIoMjUlIDIw
IDUwIC8gMC4zNSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFi
KGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgMzUlIGEgYiAvIGFscGhhKSIpIGlzICJsYWIoMzUl
IDIwIDUwIC8gMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJs
YWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBsIDM1IGIgLyBhbHBoYSkiKSBpcyAibGFiKDI1
JSAzNSA1MCAvIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAi
bGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCBhIDM1IC8gYWxwaGEpIikgaXMgImxhYigy
NSUgMjAgMzUgLyAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
ImxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIGwgYSBiIC8gLjM1KSIpIGlzICJsYWIoMjUl
IDIwIDUwIC8gMC4zNSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAi
bGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCBiIGEpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQ
QVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAy
MCA1MCkgbCBhbHBoYSBhIC8gYikiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0
ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGEg
YSAvIGEpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tn
cm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCBhbHBoYSBhbHBoYSAvIGFs
cGhhKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3Jv
dW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIGwgYiBhKSIpIGlzICJy
Z2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
ImxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIGwgYWxwaGEgYSAvIGIpIikgaXMgInJnYmEo
MCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFi
KGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCBhIGEgLyBhKSIpIGlzICJyZ2JhKDAsIDAsIDAs
IDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxh
YigyNSUgMjAgNTAgLyA0MCUpIGwgYWxwaGEgYWxwaGEgLyBhbHBoYSkiKSBpcyAicmdiYSgwLCAw
LCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJv
bSBsYWIoMjUlIDIwIDUwKSBsIDEwJSAxMCkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1Mg
Y29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUw
KSBsIDEwIDEwJSkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgi
YmFja2dyb3VuZC1jb2xvciIsICJsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSAxMCBhIGIpIikgaXMg
InJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3Ii
LCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCAxMCUgMTApIikgaXMgInJnYmEoMCwg
MCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZy
b20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCAxMCAxMCUpIikgaXMgInJnYmEoMCwgMCwgMCwgMCki
CitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1
JSAyMCA1MCAvIDQwJSkgMTAgYSBiKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21w
dXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxhYihmcm9tIGxhYigyNSUgMjAgNTApIGxp
Z2h0bmVzcyBhIGIpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUo
ImJhY2tncm91bmQtY29sb3IiLCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgeCBhIGIpIikgaXMg
InJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3Ii
LCAibGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgaCBnIGIpIikgaXMgInJnYmEoMCwgMCwgMCwgMCki
CisKK2xjaChmcm9tIC4uLikKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIs
ICJsY2goZnJvbSBsY2goNzAlIDQ1IDMwKSBsIGMgaCkiKSBpcyAibGNoKDcwJSA0NSAzMCkiCitQ
QVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0
NSAzMCkgbCBjIGggLyBhbHBoYSkiKSBpcyAibGNoKDcwJSA0NSAzMCkiCitQQVNTIGNvbXB1dGVk
U3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAzMCAvIDQwJSkg
bCBjIGgvIGFscGhhKSIpIGlzICJsY2goNzAlIDQ1IDMwIC8gMC40KSIKK1BBU1MgY29tcHV0ZWRT
dHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goZnJvbSBsY2goNzAlIDQ1IDMw
KSBsIGMgaCkgbCBjIGgpIikgaXMgImxjaCg3MCUgNDUgMzApIgorUEFTUyBjb21wdXRlZFN0eWxl
KCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGNvbG9yKGRpc3BsYXktcDMgMCAwIDApIGwg
YyBoIC8gYWxwaGEpIikgaXMgImxjaCgwJSAwIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNr
Z3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGNvbG9yKGxhYiA3MCUgNDUgMzApIGwgYyBoIC8gYWxw
aGEpIikgaXMgImxjaCg3MCUgNTQuMDgzMjcgMzMuNjkwMDY3KSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDMwKSAwJSAwIDApIikg
aXMgImxjaCgwJSAwIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwg
ImxjaChmcm9tIGxjaCg3MCUgNDUgMzApIDAlIDAgMGRlZykiKSBpcyAibGNoKDAlIDAgMCkiCitQ
QVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0
NSAzMCkgMCUgMCAwIC8gMCkiKSBpcyAibGNoKDAlIDAgMCAvIDApIgorUEFTUyBjb21wdXRlZFN0
eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMzApIDAlIDAgMGRl
ZyAvIDApIikgaXMgImxjaCgwJSAwIDAgLyAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dy
b3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDMwKSAwJSBjIGggLyBhbHBoYSkiKSBp
cyAibGNoKDAlIDQ1IDMwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIs
ICJsY2goZnJvbSBsY2goNzAlIDQ1IDMwKSBsIDAgaCAvIGFscGhhKSIpIGlzICJsY2goNzAlIDAg
MzApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxj
aCg3MCUgNDUgMzApIGwgYyAwIC8gYWxwaGEpIikgaXMgImxjaCg3MCUgNDUgMCkiCitQQVNTIGNv
bXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAzMCkg
bCBjIDBkZWcgLyBhbHBoYSkiKSBpcyAibGNoKDcwJSA0NSAwKSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDMwKSBsIGMgaCAvIDAp
IikgaXMgImxjaCg3MCUgNDUgMzAgLyAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3Vu
ZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDMwIC8gNDAlKSAwJSBjIGggLyBhbHBoYSki
KSBpcyAibGNoKDAlIDQ1IDMwIC8gMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3Vu
ZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDMwIC8gNDAlKSBsIDAgaCAvIGFscGhhKSIp
IGlzICJsY2goNzAlIDAgMzAgLyAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5k
LWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMzAgLyA0MCUpIGwgYyAwIC8gYWxwaGEpIikg
aXMgImxjaCg3MCUgNDUgMCAvIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQt
Y29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAzMCAvIDQwJSkgbCBjIDBkZWcgLyBhbHBoYSki
KSBpcyAibGNoKDcwJSA0NSAwIC8gMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3Vu
ZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDMwIC8gNDAlKSBsIGMgaCAvIDApIikgaXMg
ImxjaCg3MCUgNDUgMzAgLyAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xv
ciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDMwKSAyNSUgYyBoIC8gYWxwaGEpIikgaXMgImxjaCgy
NSUgNDUgMzApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChm
cm9tIGxjaCg3MCUgNDUgMzApIGwgMjUgaCAvIGFscGhhKSIpIGlzICJsY2goNzAlIDI1IDMwKSIK
K1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAl
IDQ1IDMwKSBsIGMgMjUgLyBhbHBoYSkiKSBpcyAibGNoKDcwJSA0NSAyNSkiCitQQVNTIGNvbXB1
dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAzMCkgbCBj
IDI1ZGVnIC8gYWxwaGEpIikgaXMgImxjaCg3MCUgNDUgMjUpIgorUEFTUyBjb21wdXRlZFN0eWxl
KCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMzApIGwgYyBoIC8gLjI1
KSIpIGlzICJsY2goNzAlIDQ1IDMwIC8gMC4yNSkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tn
cm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAzMCAvIDQwJSkgMjUlIGMgaCAvIGFs
cGhhKSIpIGlzICJsY2goMjUlIDQ1IDMwIC8gMC40KSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFj
a2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDMwIC8gNDAlKSBsIDI1IGggLyBh
bHBoYSkiKSBpcyAibGNoKDcwJSAyNSAzMCAvIDAuNCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJh
Y2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAzMCAvIDQwJSkgbCBjIDI1IC8g
YWxwaGEpIikgaXMgImxjaCg3MCUgNDUgMjUgLyAwLjQpIgorUEFTUyBjb21wdXRlZFN0eWxlKCJi
YWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMzAgLyA0MCUpIGwgYyAyNWRl
ZyAvIGFscGhhKSIpIGlzICJsY2goNzAlIDQ1IDI1IC8gMC40KSIKK1BBU1MgY29tcHV0ZWRTdHls
ZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDMwIC8gNDAlKSBsIGMg
aCAvIC4yNSkiKSBpcyAibGNoKDcwJSA0NSAzMCAvIDAuMjUpIgorUEFTUyBjb21wdXRlZFN0eWxl
KCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMzApIGFscGhhIGMgaCAv
IGwpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91
bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAzMCkgYWxwaGEgYyBoIC8gYWxwaGEpIikg
aXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29s
b3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAzMCAvIDQwJSkgYWxwaGEgYyBoIC8gbCkiKSBpcyAi
cmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIs
ICJsY2goZnJvbSBsY2goNzAlIDQ1IDMwIC8gNDAlKSBhbHBoYSBjIGggLyBhbHBoYSkiKSBpcyAi
cmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIs
ICJsY2goZnJvbSBsY2goNzAlIDQ1IDMwKSBsIDEwJSBoKSIpIGlzICJyZ2JhKDAsIDAsIDAsIDAp
IgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwgImxjaChmcm9tIGxjaCg3
MCUgNDUgMzApIGwgYyAxMCUpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVk
U3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAzMCkgMTAgYyBo
KSIpIGlzICJyZ2JhKDAsIDAsIDAsIDApIgorUEFTUyBjb21wdXRlZFN0eWxlKCJiYWNrZ3JvdW5k
LWNvbG9yIiwgImxjaChmcm9tIGxjaCg3MCUgNDUgMzAgLyA0MCUpIGwgMTAlIGgpIikgaXMgInJn
YmEoMCwgMCwgMCwgMCkiCitQQVNTIGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAi
bGNoKGZyb20gbGNoKDcwJSA0NSAzMCAvIDQwJSkgbCBjIDEwJSkiKSBpcyAicmdiYSgwLCAwLCAw
LCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBs
Y2goNzAlIDQ1IDMwIC8gNDAlKSAxMCBjIGgpIikgaXMgInJnYmEoMCwgMCwgMCwgMCkiCitQQVNT
IGNvbXB1dGVkU3R5bGUoImJhY2tncm91bmQtY29sb3IiLCAibGNoKGZyb20gbGNoKDcwJSA0NSAz
MCkgbGlnaHRuZXNzIGMgaCkiKSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRT
dHlsZSgiYmFja2dyb3VuZC1jb2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDMwKSB4IGMgaCki
KSBpcyAicmdiYSgwLCAwLCAwLCAwKSIKK1BBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1j
b2xvciIsICJsY2goZnJvbSBsY2goNzAlIDQ1IDMwKSBsIGcgYikiKSBpcyAicmdiYSgwLCAwLCAw
LCAwKSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9wYXJzaW5nLXJlbGF0aXZlLWNvbG9yLXN5bnRh
eC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNpbmctcmVsYXRp
dmUtY29sb3Itc3ludGF4Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
c3MvcGFyc2luZy1yZWxhdGl2ZS1jb2xvci1zeW50YXguaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM4MCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBD
U1NSZWxhdGl2ZUNvbG9yU3ludGF4RW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCB0aGUgcGFyc2luZyBv
ZiBDU1MgQ29sb3IgNSBSZWxhdGl2ZSBDb2xvciBTeW50YXguIik7CisKKyAgICBmdW5jdGlvbiBj
b21wdXRlZFN0eWxlKHByb3BlcnR5LCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHZhciBkaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChkaXYpOworICAgICAgICBkaXYuc3R5bGUuc2V0UHJvcGVydHkocHJvcGVydHksIHZh
bHVlKTsKKyAgICAgICAgdmFyIGNvbXB1dGVkVmFsdWUgPSBnZXRDb21wdXRlZFN0eWxlKGRpdiku
Z2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eSk7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQoZGl2KTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVkVmFsdWU7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gaW5uZXJTdHlsZShwcm9wZXJ0eSwgdmFsdWUpCisgICAgeworICAgICAgICB2YXIg
ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRpdi5zdHlsZS5z
ZXRQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUpOworICAgICAgICByZXR1cm4gZGl2LnN0eWxlLmdl
dFByb3BlcnR5VmFsdWUocHJvcGVydHkpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RDb21w
dXRlZFByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSwgZXhwZWN0ZWQpCisgICAgeworICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2NvbXB1dGVkU3R5bGUoIicgKyBwcm9wZXJ0eSArICciLCAi
JyArIHZhbHVlICsgJyIpJywgZXhwZWN0ZWQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RD
b21wdXRlZCh2YWx1ZSwgZXhwZWN0ZWQpCisgICAgeworICAgICAgICB0ZXN0Q29tcHV0ZWRQcm9w
ZXJ0eSgiYmFja2dyb3VuZC1jb2xvciIsIHZhbHVlLCBleHBlY3RlZCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gdGVzdElubmVyKHByb3BlcnR5LCB2YWx1ZSwgZXhwZWN0ZWQpCisgICAgeworICAg
ICAgICBpZiAoZXhwZWN0ZWQgPT09IG51bGwpCisgICAgICAgICAgICBleHBlY3RlZCA9ICIiOwor
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2lubmVyU3R5bGUoIicgKyBwcm9wZXJ0eSAr
ICciLCAiJyArIHZhbHVlICsgJyIpJywgZXhwZWN0ZWQpOworICAgIH0KKworCisgICAgZGVidWco
J3JnYihmcm9tIC4uLiknKTsKKworICAgIC8vIFRlc3Rpbmcgbm8gbW9kaWZpY2F0aW9ucy4KKyAg
ICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVjY2FwdXJwbGUgciBnIGIpYCwgYHJnYigxMDIs
IDUxLCAxNTMpYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIg
ZyBiIC8gYWxwaGEpYCwgYHJnYigxMDIsIDUxLCAxNTMpYCk7CisgICAgdGVzdENvbXB1dGVkKGBy
Z2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIGcgYiAvIGFscGhhKWAsIGByZ2JhKDI2
LCA1MSwgNzcsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIGhzbCgxMjBkZWcg
MjAlIDUwJSAvIC41KSByIGcgYiAvIGFscGhhKWAsIGByZ2JhKDEwMiwgMTUzLCAxMDIsIDAuNSlg
KTsKKworICAgIC8vIFRlc3QgbmVzdGluZyByZWxhdGl2ZSBjb2xvcnMuCisgICAgdGVzdENvbXB1
dGVkKGByZ2IoZnJvbSByZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgZyBiKSByIGcgYilgLCBgcmdi
KDEwMiwgNTEsIDE1MylgKTsKKworICAgIC8vIFRlc3Rpbmcgbm9uLXNSR0Igb3JpZ2luIGNvbG9y
cyB0byBzZWUgZ2FtdXQgY2xpcHBpbmcuCisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSBjb2xv
cihkaXNwbGF5LXAzIDAgMSAwKSByIGcgYiAvIGFscGhhKWAsIGByZ2IoMCwgMjU1LCAwKWApOwor
CisgICAgLy8gVGVzdGluZyByZXBsYWNlbWVudCB3aXRoIDAuCisgICAgdGVzdENvbXB1dGVkKGBy
Z2IoZnJvbSByZWJlY2NhcHVycGxlIDAgMCAwKWAsIGByZ2IoMCwgMCwgMClgKTsKKyAgICB0ZXN0
Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVjY2FwdXJwbGUgMCAwIDAgLyAwKWAsIGByZ2JhKDAsIDAs
IDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIDAgZyBi
IC8gYWxwaGEpYCwgYHJnYigwLCA1MSwgMTUzKWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZy
b20gcmViZWNjYXB1cnBsZSByIDAgYiAvIGFscGhhKWAsIGByZ2IoMTAyLCAwLCAxNTMpYCk7Cisg
ICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgZyAwIC8gYWxwaGEpYCwg
YHJnYigxMDIsIDUxLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmViZWNjYXB1
cnBsZSByIGcgYiAvIDApYCwgYHJnYmEoMTAyLCA1MSwgMTUzLCAwKWApOworICAgIHRlc3RDb21w
dXRlZChgcmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgMCBnIGIgLyBhbHBoYSlgLCBg
cmdiYSgwLCA1MSwgNzcsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJnYigx
MCUsIDIwJSwgMzAlLCA0MCUpIHIgMCBiIC8gYWxwaGEpYCwgYHJnYmEoMjYsIDAsIDc3LCAwLjQp
YCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBy
IGcgMCAvIGFscGhhKWAsIGByZ2JhKDI2LCA1MSwgMCwgMC40KWApOworICAgIHRlc3RDb21wdXRl
ZChgcmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgciBnIGIgLyAwKWAsIGByZ2JhKDI2
LCA1MSwgNzcsIDApYCk7CisKKyAgICAvLyBUZXN0aW5nIHJlcGxhY2VtZW50IHdpdGggYSBudW1i
ZXIuCisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIDI1IGcgYiAvIGFs
cGhhKWAsIGByZ2IoMjUsIDUxLCAxNTMpYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSBy
ZWJlY2NhcHVycGxlIHIgMjUgYiAvIGFscGhhKWAsIGByZ2IoMTAyLCAyNSwgMTUzKWApOworICAg
IHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmViZWNjYXB1cnBsZSByIGcgMjUgLyBhbHBoYSlgLCBg
cmdiKDEwMiwgNTEsIDI1KWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmViZWNjYXB1
cnBsZSByIGcgYiAvIC4yNSlgLCBgcmdiYSgxMDIsIDUxLCAxNTMsIDAuMjUpYCk7CisgICAgdGVz
dENvbXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSAyNSBnIGIgLyBhbHBo
YSlgLCBgcmdiYSgyNSwgNTEsIDc3LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJv
bSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIDI1IGIgLyBhbHBoYSlgLCBgcmdiYSgyNiwgMjUs
IDc3LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMw
JSwgNDAlKSByIGcgMjUgLyBhbHBoYSlgLCBgcmdiYSgyNiwgNTEsIDI1LCAwLjQpYCk7CisgICAg
dGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIGcgYiAvIC4y
NSlgLCBgcmdiYSgyNiwgNTEsIDc3LCAwLjI1KWApOworCisgICAgLy8gVGVzdGluZyByZXBsYWNl
bWVudCB3aXRoIGEgcGVyY2VudGFnZS4KKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVj
Y2FwdXJwbGUgMjUlIGcgYiAvIGFscGhhKWAsIGByZ2IoNjQsIDUxLCAxNTMpYCk7CisgICAgdGVz
dENvbXB1dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgMjUlIGIgLyBhbHBoYSlgLCBgcmdi
KDEwMiwgNjQsIDE1MylgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVjY2FwdXJw
bGUgciBnIDI1JSAvIGFscGhhKWAsIGByZ2IoMTAyLCA1MSwgNjQpYCk7CisgICAgdGVzdENvbXB1
dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgZyBiIC8gMjUlKWAsIGByZ2JhKDEwMiwgNTEs
IDE1MywgMC4yNSlgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJnYigxMCUsIDIwJSwg
MzAlLCA0MCUpIDI1JSBnIGIgLyBhbHBoYSlgLCBgcmdiYSg2NCwgNTEsIDc3LCAwLjQpYCk7Cisg
ICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIDI1JSBi
IC8gYWxwaGEpYCwgYHJnYmEoMjYsIDY0LCA3NywgMC40KWApOworICAgIHRlc3RDb21wdXRlZChg
cmdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgciBnIDI1JSAvIGFscGhhKWAsIGByZ2Jh
KDI2LCA1MSwgNjQsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJnYigxMCUs
IDIwJSwgMzAlLCA0MCUpIHIgZyBiIC8gMjUlKWAsIGByZ2JhKDI2LCA1MSwgNzcsIDAuMjUpYCk7
CisKKyAgICAvLyBUZXN0aW5nIHJlcGxhY2VtZW50IHdpdGggYSBudW1iZXIgZm9yIHIsIGcsIGIg
YnV0IHBlcmNlbnQgZm9yIGFscGhhLgorICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmViZWNj
YXB1cnBsZSAyNSBnIGIgLyAyNSUpYCwgYHJnYmEoMjUsIDUxLCAxNTMsIDAuMjUpYCk7CisgICAg
dGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIHIgMjUgYiAvIDI1JSlgLCBgcmdi
YSgxMDIsIDI1LCAxNTMsIDAuMjUpYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJl
Y2NhcHVycGxlIHIgZyAyNSAvIDI1JSlgLCBgcmdiYSgxMDIsIDUxLCAyNSwgMC4yNSlgKTsKKyAg
ICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDI1IGcgYiAv
IDI1JSlgLCBgcmdiYSgyNSwgNTEsIDc3LCAwLjI1KWApOworICAgIHRlc3RDb21wdXRlZChgcmdi
KGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgciAyNSBiIC8gMjUlKWAsIGByZ2JhKDI2LCAy
NSwgNzcsIDAuMjUpYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUs
IDMwJSwgNDAlKSByIGcgMjUgLyAyNSUpYCwgYHJnYmEoMjYsIDUxLCAyNSwgMC4yNSlgKTsKKwor
ICAgIC8vIFRlc3RpbmcgcGVybXV0YXRpb24gKHVuY2xlYXIgaWYgdGhpcyBpcyBhbGxvd2VkIHBl
ci1zcGVjLCB3ZSBkaXNhbGxvdyBpdCkuCisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJl
Y2NhcHVycGxlIGcgYiByKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVk
KGByZ2IoZnJvbSByZWJlY2NhcHVycGxlIGIgYWxwaGEgciAvIGcpYCwgYHJnYmEoMCwgMCwgMCwg
MClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVjY2FwdXJwbGUgciByIHIgLyBy
KWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZWJl
Y2NhcHVycGxlIGFscGhhIGFscGhhIGFscGhhIC8gYWxwaGEpYCwgYHJnYmEoMCwgMCwgMCwgMClg
KTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGcg
YiByKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSBy
Z2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBiIGFscGhhIHIgLyBnKWAsIGByZ2JhKDAsIDAsIDAsIDAp
YCk7CisgICAgdGVzdENvbXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBy
IHIgciAvIHIpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihm
cm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGFscGhhIGFscGhhIGFscGhhIC8gYWxwaGEpYCwg
YHJnYmEoMCwgMCwgMCwgMClgKTsKKworICAgIC8vIFRlc3RpbmcgaW52YWxpZCBtaXhlcyBvZiBu
dW1iZXIgYW5kIHBlcmNlbnRhZ2UKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVjY2Fw
dXJwbGUgciAxMCUgMTApYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQo
YHJnYihmcm9tIHJlYmVjY2FwdXJwbGUgciAxMCAxMCUpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsK
KyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJlYmVjY2FwdXJwbGUgMCUgMTAgMTApYCwgYHJn
YmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9tIHJnYigxMCUsIDIw
JSwgMzAlLCA0MCUpIHIgMTAlIDEwKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENv
bXB1dGVkKGByZ2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSByIDEwIDEwJSlgLCBgcmdi
YSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmdiKDEwJSwgMjAl
LCAzMCUsIDQwJSkgMCUgMTAgMTApYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKworICAgIC8vIFRl
c3RpbmcgaW52YWxpZCBjb21wb25lbnQgbmFtZXMKKyAgICB0ZXN0Q29tcHV0ZWQoYHJnYihmcm9t
IHJlYmVjY2FwdXJwbGUgcmVkIGcgYilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RD
b21wdXRlZChgcmdiKGZyb20gcmViZWNjYXB1cnBsZSBsIGcgYilgLCBgcmdiYSgwLCAwLCAwLCAw
KWApOworICAgIHRlc3RDb21wdXRlZChgcmdiKGZyb20gcmViZWNjYXB1cnBsZSBoIGcgYilgLCBg
cmdiYSgwLCAwLCAwLCAwKWApOworCisgICAgZGVidWcoJycpOworICAgIGRlYnVnKCdoc2woZnJv
bSAuLi4pJyk7CisKKyAgICAvLyBUZXN0aW5nIG5vIG1vZGlmaWNhdGlvbnMuCisgICAgdGVzdENv
bXB1dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIGggcyBsKWAsIGByZ2IoMTAyLCA1MSwgMTUz
KWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIHMgbCAvIGFs
cGhhKWAsIGByZ2IoMTAyLCA1MSwgMTUzKWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20g
cmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCBzIGwgLyBhbHBoYSlgLCBgcmdiYSgyNiwgNTEsIDc3
LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSBoc2woMTIwZGVnIDIwJSA1MCUg
LyAuNSkgaCBzIGwgLyBhbHBoYSlgLCBgcmdiYSgxMDIsIDE1MywgMTAyLCAwLjUpYCk7CisKKyAg
ICAvLyBUZXN0IG5lc3RpbmcgcmVsYXRpdmUgY29sb3JzLgorICAgIHRlc3RDb21wdXRlZChgaHNs
KGZyb20gaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIHMgbCkgaCBzIGwpYCwgYHJnYigxMDIsIDUx
LCAxNTMpYCk7CisKKyAgICAvLyBUZXN0aW5nIG5vbi1zUkdCIG9yaWdpbiBjb2xvcnMgdG8gc2Vl
IGdhbXV0IGNsaXBwaW5nLgorICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gY29sb3IoZGlzcGxh
eS1wMyAwIDEgMCkgaCBzIGwgLyBhbHBoYSlgLCBgcmdiKDAsIDI1NSwgMClgKTsKKworICAgIC8v
IFRlc3RpbmcgcmVwbGFjZW1lbnQgd2l0aCAwLgorICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20g
cmViZWNjYXB1cnBsZSAwIDAlIDAlKWAsIGByZ2IoMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0
ZWQoYGhzbChmcm9tIHJlYmVjY2FwdXJwbGUgMGRlZyAwJSAwJSlgLCBgcmdiKDAsIDAsIDApYCk7
CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIDAgMCUgMCUgLyAwKWAs
IGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZWJlY2Nh
cHVycGxlIDBkZWcgMCUgMCUgLyAwKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENv
bXB1dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIDAgcyBsIC8gYWxwaGEpYCwgYHJnYigxNTMs
IDUxLCA1MSlgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJlYmVjY2FwdXJwbGUgMGRl
ZyBzIGwgLyBhbHBoYSlgLCBgcmdiKDE1MywgNTEsIDUxKWApOworICAgIHRlc3RDb21wdXRlZChg
aHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIDAlIGwgLyBhbHBoYSlgLCBgcmdiKDEwMiwgMTAyLCAx
MDIpYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIGggcyAwJSAv
IGFscGhhKWAsIGByZ2IoMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJl
YmVjY2FwdXJwbGUgaCBzIGwgLyAwKWAsIGByZ2JhKDEwMiwgNTEsIDE1MywgMClgKTsKKyAgICB0
ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDAgcyBsIC8gYWxw
aGEpYCwgYHJnYmEoNzcsIDI2LCAyNiwgMC40KWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZy
b20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgMGRlZyBzIGwgLyBhbHBoYSlgLCBgcmdiYSg3Nywg
MjYsIDI2LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZ2IoMTAlLCAyMCUs
IDMwJSwgNDAlKSBoIDAlIGwgLyBhbHBoYSlgLCBgcmdiYSg1MiwgNTIsIDUyLCAwLjQpYCk7Cisg
ICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHMgMCUg
LyBhbHBoYSlgLCBgcmdiYSgwLCAwLCAwLCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2wo
ZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHMgbCAvIDApYCwgYHJnYmEoMjYsIDUxLCA3
NywgMClgKTsKKworICAgIC8vIFRlc3RpbmcgcmVwbGFjZW1lbnQgd2l0aCBhIGNvbnN0YW50Lgor
ICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBsZSAyNSBzIGwgLyBhbHBoYSlg
LCBgcmdiKDE1MywgOTQsIDUxKWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNj
YXB1cnBsZSAyNWRlZyBzIGwgLyBhbHBoYSlgLCBgcmdiKDE1MywgOTQsIDUxKWApOworICAgIHRl
c3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIDI1JSBsIC8gYWxwaGEpYCwgYHJn
YigxMDIsIDc3LCAxMjgpYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZWJlY2NhcHVy
cGxlIGggcyAyNSUgLyBhbHBoYSlgLCBgcmdiKDY0LCAzMiwgOTYpYCk7CisgICAgdGVzdENvbXB1
dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIGggcyBsIC8gLjI1KWAsIGByZ2JhKDEwMiwgNTEs
IDE1MywgMC4yNSlgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJnYigxMCUsIDIwJSwg
MzAlLCA0MCUpIDI1IHMgbCAvIGFscGhhKWAsIGByZ2JhKDc3LCA0NywgMjYsIDAuNClgKTsKKyAg
ICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDI1ZGVnIHMg
bCAvIGFscGhhKWAsIGByZ2JhKDc3LCA0NywgMjYsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQo
YGhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggMjUlIGwgLyBhbHBoYSlgLCBgcmdi
YSgzOSwgNTEsIDY0LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZ2IoMTAl
LCAyMCUsIDMwJSwgNDAlKSBoIHMgMjUlIC8gYWxwaGEpYCwgYHJnYmEoMzIsIDYzLCA5NSwgMC40
KWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkg
aCBzIGwgLyAuMjUpYCwgYHJnYmEoMjYsIDUxLCA3NywgMC4yNSlgKTsKKworICAgIC8vIFRlc3Rp
bmcgcGVybXV0YXRpb24gKHVuY2xlYXIgaWYgdGhpcyBpcyBhbGxvd2VkIHBlci1zcGVjLCB3ZSBk
aXNhbGxvdyBpdCkuCisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIGgg
bCBzKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSBy
ZWJlY2NhcHVycGxlIGggYWxwaGEgbCAvIHMpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0
ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaCBsIGwgLyBsKWAsIGByZ2JhKDAs
IDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJvbSByZWJlY2NhcHVycGxlIGgg
YWxwaGEgYWxwaGEgLyBhbHBoYSlgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21w
dXRlZChgaHNsKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCBsIHMpYCwgYHJnYmEoMCwg
MCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAl
LCA0MCUpIGggYWxwaGEgbCAvIHMpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29t
cHV0ZWQoYGhzbChmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIGggbCBsIC8gbClgLCBgcmdi
YSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmdiKDEwJSwgMjAl
LCAzMCUsIDQwJSkgaCBhbHBoYSBhbHBoYSAvIGFscGhhKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7
CisKKyAgICAvLyBUZXN0aW5nIGludmFsaWQgdmFsdWVzLgorICAgIHRlc3RDb21wdXRlZChgaHNs
KGZyb20gcmViZWNjYXB1cnBsZSBoIDEwJSAxMClgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAg
IHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBsZSBoIDEwIDEwJSlgLCBgcmdiYSgw
LCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBsZSAx
MCUgcyBsKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBoc2woZnJv
bSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIDEwJSAxMClgLCBgcmdiYSgwLCAwLCAwLCAwKWAp
OworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCAx
MCAxMCUpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGhzbChmcm9t
IHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDEwJSBzIGwpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsK
KworICAgIC8vIFRlc3RpbmcgaW52YWxpZCBjb21wb25lbnQgbmFtZXMKKyAgICB0ZXN0Q29tcHV0
ZWQoYGhzbChmcm9tIHJlYmVjY2FwdXJwbGUgaHVlIHMgbClgLCBgcmdiYSgwLCAwLCAwLCAwKWAp
OworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBsZSB4IHMgbClgLCBgcmdi
YSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHNsKGZyb20gcmViZWNjYXB1cnBs
ZSBoIGcgYilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworCisKKyAgICBkZWJ1ZygnJyk7CisgICAg
ZGVidWcoJ2h3Yihmcm9tIC4uLiknKTsKKworICAgIC8vIFRlc3Rpbmcgbm8gbW9kaWZpY2F0aW9u
cy4KKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCB3IGIpYCwgYHJn
YigxMDIsIDUxLCAxNTMpYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVy
cGxlIGggdyBiIC8gYWxwaGEpYCwgYHJnYigxMDIsIDUxLCAxNTMpYCk7CisgICAgdGVzdENvbXB1
dGVkKGBod2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHcgYiAvIGFscGhhKWAsIGBy
Z2JhKDI2LCA1MSwgNzcsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIGhzbCgx
MjBkZWcgMjAlIDUwJSAvIC41KSBoIHcgYiAvIGFscGhhKWAsIGByZ2JhKDEwMiwgMTUzLCAxMDIs
IDAuNSlgKTsKKworICAgIC8vIFRlc3QgbmVzdGluZyByZWxhdGl2ZSBjb2xvcnMuCisgICAgdGVz
dENvbXB1dGVkKGBod2IoZnJvbSBod2IoZnJvbSByZWJlY2NhcHVycGxlIGggdyBiKSBoIHcgYilg
LCBgcmdiKDEwMiwgNTEsIDE1MylgKTsKKworICAgIC8vIFRlc3Rpbmcgbm9uLXNSR0Igb3JpZ2lu
IGNvbG9ycyB0byBzZWUgZ2FtdXQgY2xpcHBpbmcuCisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJv
bSBjb2xvcihkaXNwbGF5LXAzIDAgMSAwKSBoIHcgYiAvIGFscGhhKWAsIGByZ2IoMCwgMjU1LCAw
KWApOworCisgICAgLy8gVGVzdGluZyByZXBsYWNlbWVudCB3aXRoIDAuCisgICAgdGVzdENvbXB1
dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxlIDAgMCUgMCUpYCwgYHJnYigyNTUsIDAsIDApYCk7
CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxlIDBkZWcgMCUgMCUpYCwg
YHJnYigyNTUsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVy
cGxlIDAgMCUgMCUgLyAwKWAsIGByZ2JhKDI1NSwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0
ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgMGRlZyAwJSAwJSAvIDApYCwgYHJnYmEoMjU1LCAw
LCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmViZWNjYXB1cnBsZSAwIHcg
YiAvIGFscGhhKWAsIGByZ2IoMTUzLCA1MSwgNTEpYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2Io
ZnJvbSByZWJlY2NhcHVycGxlIDBkZWcgdyBiIC8gYWxwaGEpYCwgYHJnYigxNTMsIDUxLCA1MSlg
KTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCAwJSBiIC8gYWxw
aGEpYCwgYHJnYig3NywgMCwgMTUzKWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmVi
ZWNjYXB1cnBsZSBoIHcgMCUgLyBhbHBoYSlgLCBgcmdiKDE1MywgNTEsIDI1NSlgKTsKKyAgICB0
ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCB3IGIgLyAwKWAsIGByZ2JhKDEw
MiwgNTEsIDE1MywgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJnYigxMCUsIDIw
JSwgMzAlLCA0MCUpIDAgdyBiIC8gYWxwaGEpYCwgYHJnYmEoNzcsIDI2LCAyNiwgMC40KWApOwor
ICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgMGRlZyB3
IGIgLyBhbHBoYSlgLCBgcmdiYSg3NywgMjYsIDI2LCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVk
KGBod2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIDAlIGIgLyBhbHBoYSlgLCBgcmdi
YSgwLCAzOCwgNzcsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJnYigxMCUs
IDIwJSwgMzAlLCA0MCUpIGggdyAwJSAvIGFscGhhKWAsIGByZ2JhKDI2LCAxMzgsIDI1NSwgMC40
KWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkg
aCB3IGIgLyAwKWAsIGByZ2JhKDI2LCA1MSwgNzcsIDApYCk7CisKKyAgICAvLyBUZXN0aW5nIHJl
cGxhY2VtZW50IHdpdGggYSBjb25zdGFudC4KKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJl
YmVjY2FwdXJwbGUgMjUgdyBiIC8gYWxwaGEpYCwgYHJnYigxNTMsIDk0LCA1MSlgKTsKKyAgICB0
ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgMjVkZWcgdyBiIC8gYWxwaGEpYCwg
YHJnYigxNTMsIDk0LCA1MSlgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJlYmVjY2Fw
dXJwbGUgaCAyNSUgYiAvIGFscGhhKWAsIGByZ2IoMTA4LCA2NCwgMTUzKWApOworICAgIHRlc3RD
b21wdXRlZChgaHdiKGZyb20gcmViZWNjYXB1cnBsZSBoIHcgMjUlIC8gYWxwaGEpYCwgYHJnYigx
MjEsIDUxLCAxOTEpYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxl
IGggdyBiIC8gLjI1KWAsIGByZ2JhKDEwMiwgNTEsIDE1MywgMC4yNSlgKTsKKyAgICB0ZXN0Q29t
cHV0ZWQoYGh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUpIDI1IHcgYiAvIGFscGhhKWAs
IGByZ2JhKDc3LCA0NywgMjYsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJn
YigxMCUsIDIwJSwgMzAlLCA0MCUpIDI1ZGVnIHcgYiAvIGFscGhhKWAsIGByZ2JhKDc3LCA0Nywg
MjYsIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAl
LCA0MCUpIGggMjUlIGIgLyBhbHBoYSlgLCBgcmdiYSg2NCwgNzAsIDc3LCAwLjQpYCk7CisgICAg
dGVzdENvbXB1dGVkKGBod2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHcgMjUlIC8g
YWxwaGEpYCwgYHJnYmEoMjYsIDEwNywgMTkxLCAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBo
d2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIHcgYiAvIC4yNSlgLCBgcmdiYSgyNiwg
NTEsIDc3LCAwLjI1KWApOworCisgICAgLy8gVGVzdGluZyBwZXJtdXRhdGlvbiAodW5jbGVhciBp
ZiB0aGlzIGlzIGFsbG93ZWQgcGVyLXNwZWMsIHdlIGRpc2FsbG93IGl0KS4KKyAgICB0ZXN0Q29t
cHV0ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCBiIHcpYCwgYHJnYmEoMCwgMCwgMCwgMClg
KTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCBhbHBoYSB3IC8g
YilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmVi
ZWNjYXB1cnBsZSBoIHcgdyAvIHcpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29t
cHV0ZWQoYGh3Yihmcm9tIHJlYmVjY2FwdXJwbGUgaCBhbHBoYSBhbHBoYSAvIGFscGhhKWAsIGBy
Z2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZ2IoMTAlLCAy
MCUsIDMwJSwgNDAlKSBoIGIgdylgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21w
dXRlZChgaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkgaCBhbHBoYSB3IC8gYilgLCBg
cmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmdiKDEwJSwg
MjAlLCAzMCUsIDQwJSkgaCB3IHcgLyB3KWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVz
dENvbXB1dGVkKGBod2IoZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIGFscGhhIGFscGhh
IC8gYWxwaGEpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKworICAgIC8vIFRlc3RpbmcgaW52YWxp
ZCB2YWx1ZXMuCisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxlIGggMTAl
IDEwKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2IoZnJvbSBy
ZWJlY2NhcHVycGxlIGggMTAgMTAlKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENv
bXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxlIDEwJSB3IGIpYCwgYHJnYmEoMCwgMCwgMCwg
MClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGh3Yihmcm9tIHJnYigxMCUsIDIwJSwgMzAlLCA0MCUp
IGggMTAlIDEwKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2Io
ZnJvbSByZ2IoMTAlLCAyMCUsIDMwJSwgNDAlKSBoIDEwIDEwJSlgLCBgcmdiYSgwLCAwLCAwLCAw
KWApOworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmdiKDEwJSwgMjAlLCAzMCUsIDQwJSkg
MTAlIHcgYilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworCisgICAgLy8gVGVzdGluZyBpbnZhbGlk
IGNvbXBvbmVudCBuYW1lcworICAgIHRlc3RDb21wdXRlZChgaHdiKGZyb20gcmViZWNjYXB1cnBs
ZSBodWUgdyBiKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBod2Io
ZnJvbSByZWJlY2NhcHVycGxlIHggdyBiKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVz
dENvbXB1dGVkKGBod2IoZnJvbSByZWJlY2NhcHVycGxlIGggZyBiKWAsIGByZ2JhKDAsIDAsIDAs
IDApYCk7CisKKworICAgIGRlYnVnKCcnKTsKKyAgICBkZWJ1ZygnbGFiKGZyb20gLi4uKScpOwor
CisgICAgLy8gVGVzdGluZyBubyBtb2RpZmljYXRpb25zLgorICAgIHRlc3RDb21wdXRlZChgbGFi
KGZyb20gbGFiKDI1JSAyMCA1MCkgbCBhIGIpYCwgYGxhYigyNSUgMjAgNTApYCk7CisgICAgdGVz
dENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGEgYiAvIGFscGhhKWAsIGBsYWIo
MjUlIDIwIDUwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCAv
IDQwJSkgbCBhIGIgLyBhbHBoYSlgLCBgbGFiKDI1JSAyMCA1MCAvIDAuNClgKTsKKworICAgIC8v
IFRlc3QgbmVzdGluZyByZWxhdGl2ZSBjb2xvcnMuCisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJv
bSBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGEgYikgbCBhIGIpYCwgYGxhYigyNSUgMjAgNTAp
YCk7CisKKyAgICAvLyBUZXN0aW5nIG5vbi1sYWIgb3JpZ2luIHRvIHNlZSBjb252ZXJzaW9uLgor
ICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gY29sb3IoZGlzcGxheS1wMyAwIDAgMCkgbCBhIGIg
LyBhbHBoYSlgLCBgbGFiKDAlIDAgMClgKTsKKworICAgIC8vIFRlc3RpbmcgcmVwbGFjZW1lbnQg
d2l0aCAwLgorICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgMCUgMCAw
KWAsIGBsYWIoMCUgMCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAy
MCA1MCkgMCUgMCAwIC8gMClgLCBgbGFiKDAlIDAgMCAvIDApYCk7CisgICAgdGVzdENvbXB1dGVk
KGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSAwJSBhIGIgLyBhbHBoYSlgLCBgbGFiKDAlIDIwIDUw
KWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCAwIGIgLyBh
bHBoYSlgLCBgbGFiKDI1JSAwIDUwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFi
KDI1JSAyMCA1MCkgbCBhIDAgLyBhbHBoYSlgLCBgbGFiKDI1JSAyMCAwKWApOworICAgIHRlc3RD
b21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCBhIGIgLyAwKWAsIGBsYWIoMjUlIDIw
IDUwIC8gMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0
MCUpIDAlIGEgYiAvIGFscGhhKWAsIGBsYWIoMCUgMjAgNTAgLyAwLjQpYCk7CisgICAgdGVzdENv
bXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBsIDAgYiAvIGFscGhhKWAsIGBs
YWIoMjUlIDAgNTAgLyAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUl
IDIwIDUwIC8gNDAlKSBsIGEgMCAvIGFscGhhKWAsIGBsYWIoMjUlIDIwIDAgLyAwLjQpYCk7Cisg
ICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBsIGEgYiAvIDAp
YCwgYGxhYigyNSUgMjAgNTAgLyAwKWApOworCisgICAgLy8gVGVzdGluZyByZXBsYWNlbWVudCB3
aXRoIGEgY29uc3RhbnQuCisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUw
KSAzNSUgYSBiIC8gYWxwaGEpYCwgYGxhYigzNSUgMjAgNTApYCk7CisgICAgdGVzdENvbXB1dGVk
KGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIDM1IGIgLyBhbHBoYSlgLCBgbGFiKDI1JSAzNSA1
MClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTApIGwgYSAzNSAv
IGFscGhhKWAsIGBsYWIoMjUlIDIwIDM1KWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20g
bGFiKDI1JSAyMCA1MCkgbCBhIGIgLyAuMzUpYCwgYGxhYigyNSUgMjAgNTAgLyAwLjM1KWApOwor
ICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgMzUlIGEgYiAv
IGFscGhhKWAsIGBsYWIoMzUlIDIwIDUwIC8gMC40KWApOworICAgIHRlc3RDb21wdXRlZChgbGFi
KGZyb20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCAzNSBiIC8gYWxwaGEpYCwgYGxhYigyNSUgMzUg
NTAgLyAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8g
NDAlKSBsIGEgMzUgLyBhbHBoYSlgLCBgbGFiKDI1JSAyMCAzNSAvIDAuNClgKTsKKyAgICB0ZXN0
Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIGwgYSBiIC8gLjM1KWAsIGBs
YWIoMjUlIDIwIDUwIC8gMC4zNSlgKTsKKworICAgIC8vIFRlc3RpbmcgcGVybXV0YXRpb24gKHVu
Y2xlYXIgaWYgdGhpcyBpcyBhbGxvd2VkIHBlci1zcGVjLCB3ZSBkaXNhbGxvdyBpdCkuCisgICAg
dGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGIgYSlgLCBgcmdiYSgwLCAw
LCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbCBh
bHBoYSBhIC8gYilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFi
KGZyb20gbGFiKDI1JSAyMCA1MCkgbCBhIGEgLyBhKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7Cisg
ICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwKSBsIGFscGhhIGFscGhhIC8g
YWxwaGEpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9t
IGxhYigyNSUgMjAgNTAgLyA0MCUpIGwgYiBhKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAg
dGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBsIGFscGhhIGEgLyBi
KWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIo
MjUlIDIwIDUwIC8gNDAlKSBsIGEgYSAvIGEpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0
ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIGwgYWxwaGEgYWxwaGEg
LyBhbHBoYSlgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworCisgICAgLy8gVGVzdGluZyBpbnZhbGlk
IHZhbHVlcy4KKyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTApIGwgMTAl
IDEwKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBs
YWIoMjUlIDIwIDUwKSBsIDEwIDEwJSlgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RD
b21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgMTAgYSBiKWAsIGByZ2JhKDAsIDAsIDAs
IDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsYWIoZnJvbSBsYWIoMjUlIDIwIDUwIC8gNDAlKSBs
IDEwJSAxMClgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZy
b20gbGFiKDI1JSAyMCA1MCAvIDQwJSkgbCAxMCAxMCUpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsK
KyAgICB0ZXN0Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTAgLyA0MCUpIDEwIGEgYilg
LCBgcmdiYSgwLCAwLCAwLCAwKWApOworCisgICAgLy8gVGVzdGluZyBpbnZhbGlkIGNvbXBvbmVu
dCBuYW1lcworICAgIHRlc3RDb21wdXRlZChgbGFiKGZyb20gbGFiKDI1JSAyMCA1MCkgbGlnaHRu
ZXNzIGEgYilgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGFiKGZy
b20gbGFiKDI1JSAyMCA1MCkgeCBhIGIpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0
Q29tcHV0ZWQoYGxhYihmcm9tIGxhYigyNSUgMjAgNTApIGggZyBiKWAsIGByZ2JhKDAsIDAsIDAs
IDApYCk7CisKKworICAgIGRlYnVnKCcnKTsKKyAgICBkZWJ1ZygnbGNoKGZyb20gLi4uKScpOwor
CisgICAgLy8gVGVzdGluZyBubyBtb2RpZmljYXRpb25zLgorICAgIHRlc3RDb21wdXRlZChgbGNo
KGZyb20gbGNoKDcwJSA0NSAzMCkgbCBjIGgpYCwgYGxjaCg3MCUgNDUgMzApYCk7CisgICAgdGVz
dENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDMwKSBsIGMgaCAvIGFscGhhKWAsIGBsY2go
NzAlIDQ1IDMwKWApOworICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAzMCAv
IDQwJSkgbCBjIGgvIGFscGhhKWAsIGBsY2goNzAlIDQ1IDMwIC8gMC40KWApOworCisgICAgLy8g
VGVzdCBuZXN0aW5nIHJlbGF0aXZlIGNvbG9ycy4KKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9t
IGxjaChmcm9tIGxjaCg3MCUgNDUgMzApIGwgYyBoKSBsIGMgaClgLCBgbGNoKDcwJSA0NSAzMClg
KTsKKworICAgIC8vIFRlc3Rpbmcgbm9uLXNSR0Igb3JpZ2luIGNvbG9ycyB0byBzZWUgZ2FtdXQg
Y2xpcHBpbmcuCisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBjb2xvcihkaXNwbGF5LXAzIDAg
MCAwKSBsIGMgaCAvIGFscGhhKWAsIGBsY2goMCUgMCAwKWApOworICAgIHRlc3RDb21wdXRlZChg
bGNoKGZyb20gY29sb3IobGFiIDcwJSA0NSAzMCkgbCBjIGggLyBhbHBoYSlgLCBgbGNoKDcwJSA1
NC4wODMyNyAzMy42OTAwNjcpYCk7CisKKyAgICAvLyBUZXN0aW5nIHJlcGxhY2VtZW50IHdpdGgg
MC4KKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMzApIDAlIDAgMClgLCBg
bGNoKDAlIDAgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMzAp
IDAlIDAgMGRlZylgLCBgbGNoKDAlIDAgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9t
IGxjaCg3MCUgNDUgMzApIDAlIDAgMCAvIDApYCwgYGxjaCgwJSAwIDAgLyAwKWApOworICAgIHRl
c3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAzMCkgMCUgMCAwZGVnIC8gMClgLCBgbGNo
KDAlIDAgMCAvIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDMw
KSAwJSBjIGggLyBhbHBoYSlgLCBgbGNoKDAlIDQ1IDMwKWApOworICAgIHRlc3RDb21wdXRlZChg
bGNoKGZyb20gbGNoKDcwJSA0NSAzMCkgbCAwIGggLyBhbHBoYSlgLCBgbGNoKDcwJSAwIDMwKWAp
OworICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAzMCkgbCBjIDAgLyBhbHBo
YSlgLCBgbGNoKDcwJSA0NSAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcw
JSA0NSAzMCkgbCBjIDBkZWcgLyBhbHBoYSlgLCBgbGNoKDcwJSA0NSAwKWApOworICAgIHRlc3RD
b21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAzMCkgbCBjIGggLyAwKWAsIGBsY2goNzAlIDQ1
IDMwIC8gMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMzAgLyA0
MCUpIDAlIGMgaCAvIGFscGhhKWAsIGBsY2goMCUgNDUgMzAgLyAwLjQpYCk7CisgICAgdGVzdENv
bXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDMwIC8gNDAlKSBsIDAgaCAvIGFscGhhKWAsIGBs
Y2goNzAlIDAgMzAgLyAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAl
IDQ1IDMwIC8gNDAlKSBsIGMgMCAvIGFscGhhKWAsIGBsY2goNzAlIDQ1IDAgLyAwLjQpYCk7Cisg
ICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDMwIC8gNDAlKSBsIGMgMGRlZyAv
IGFscGhhKWAsIGBsY2goNzAlIDQ1IDAgLyAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2go
ZnJvbSBsY2goNzAlIDQ1IDMwIC8gNDAlKSBsIGMgaCAvIDApYCwgYGxjaCg3MCUgNDUgMzAgLyAw
KWApOworCisgICAgLy8gVGVzdGluZyByZXBsYWNlbWVudCB3aXRoIGEgY29uc3RhbnQuCisgICAg
dGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDMwKSAyNSUgYyBoIC8gYWxwaGEpYCwg
YGxjaCgyNSUgNDUgMzApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1
IDMwKSBsIDI1IGggLyBhbHBoYSlgLCBgbGNoKDcwJSAyNSAzMClgKTsKKyAgICB0ZXN0Q29tcHV0
ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMzApIGwgYyAyNSAvIGFscGhhKWAsIGBsY2goNzAlIDQ1
IDI1KWApOworICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAzMCkgbCBjIDI1
ZGVnIC8gYWxwaGEpYCwgYGxjaCg3MCUgNDUgMjUpYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2go
ZnJvbSBsY2goNzAlIDQ1IDMwKSBsIGMgaCAvIC4yNSlgLCBgbGNoKDcwJSA0NSAzMCAvIDAuMjUp
YCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDMwIC8gNDAlKSAyNSUg
YyBoIC8gYWxwaGEpYCwgYGxjaCgyNSUgNDUgMzAgLyAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVk
KGBsY2goZnJvbSBsY2goNzAlIDQ1IDMwIC8gNDAlKSBsIDI1IGggLyBhbHBoYSlgLCBgbGNoKDcw
JSAyNSAzMCAvIDAuNClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUg
MzAgLyA0MCUpIGwgYyAyNSAvIGFscGhhKWAsIGBsY2goNzAlIDQ1IDI1IC8gMC40KWApOworICAg
IHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAzMCAvIDQwJSkgbCBjIDI1ZGVnIC8g
YWxwaGEpYCwgYGxjaCg3MCUgNDUgMjUgLyAwLjQpYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2go
ZnJvbSBsY2goNzAlIDQ1IDMwIC8gNDAlKSBsIGMgaCAvIC4yNSlgLCBgbGNoKDcwJSA0NSAzMCAv
IDAuMjUpYCk7CisKKyAgICAvLyBUZXN0aW5nIHBlcm11dGF0aW9uICh1bmNsZWFyIGlmIHRoaXMg
aXMgYWxsb3dlZCBwZXItc3BlYywgd2UgZGlzYWxsb3cgaXQpLgorICAgIHRlc3RDb21wdXRlZChg
bGNoKGZyb20gbGNoKDcwJSA0NSAzMCkgYWxwaGEgYyBoIC8gbClgLCBgcmdiYSgwLCAwLCAwLCAw
KWApOworICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAzMCkgYWxwaGEgYyBo
IC8gYWxwaGEpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChm
cm9tIGxjaCg3MCUgNDUgMzAgLyA0MCUpIGFscGhhIGMgaCAvIGwpYCwgYHJnYmEoMCwgMCwgMCwg
MClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMzAgLyA0MCUpIGFs
cGhhIGMgaCAvIGFscGhhKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisKKyAgICAvLyBUZXN0aW5n
IGludmFsaWQgdmFsdWVzLgorICAgIHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAz
MCkgbCAxMCUgaClgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAgIHRlc3RDb21wdXRlZChgbGNo
KGZyb20gbGNoKDcwJSA0NSAzMCkgbCBjIDEwJSlgLCBgcmdiYSgwLCAwLCAwLCAwKWApOworICAg
IHRlc3RDb21wdXRlZChgbGNoKGZyb20gbGNoKDcwJSA0NSAzMCkgMTAgYyBoKWAsIGByZ2JhKDAs
IDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDMwIC8g
NDAlKSBsIDEwJSBoKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAgdGVzdENvbXB1dGVkKGBs
Y2goZnJvbSBsY2goNzAlIDQ1IDMwIC8gNDAlKSBsIGMgMTAlKWAsIGByZ2JhKDAsIDAsIDAsIDAp
YCk7CisgICAgdGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDMwIC8gNDAlKSAxMCBj
IGgpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKworICAgIC8vIFRlc3RpbmcgaW52YWxpZCBjb21w
b25lbnQgbmFtZXMKKyAgICB0ZXN0Q29tcHV0ZWQoYGxjaChmcm9tIGxjaCg3MCUgNDUgMzApIGxp
Z2h0bmVzcyBjIGgpYCwgYHJnYmEoMCwgMCwgMCwgMClgKTsKKyAgICB0ZXN0Q29tcHV0ZWQoYGxj
aChmcm9tIGxjaCg3MCUgNDUgMzApIHggYyBoKWAsIGByZ2JhKDAsIDAsIDAsIDApYCk7CisgICAg
dGVzdENvbXB1dGVkKGBsY2goZnJvbSBsY2goNzAlIDQ1IDMwKSBsIGcgYilgLCBgcmdiYSgwLCAw
LCAwLCAwKWApOworPC9zY3JpcHQ+CisgICAgCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421436</attachid>
            <date>2021-02-24 12:05:12 -0800</date>
            <delta_ts>2021-02-24 12:46:02 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-221880-20210224140511.patch</filename>
            <type>text/plain</type>
            <size>1740</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThkN2NjNTIwMjZmMGFh
ZjkzZmVlMjc5ZTZmMWEyYzZmN2FmYzc3My4uNzJmNTcwMTVjODUyZDcwM2I5YmY4YWNjOTNjZDg4
MmNlMjdkNTRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAyLTI0ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIFVucmV2aWV3
ZWQsIHNpbGVuY2UgLVdyZXR1cm4tdHlwZSB3YXJuaW5ncyBmcm9tIHIyNzMxMjcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTg4MAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzQ1MDk0NTI+CisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VySGVscGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnM6OmNvbnN1bWVSZWxhdGl2ZVJHQkNvbXBvbmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6Okh1ZUNvbG9yQWRqdXN0ZXI6OmZpeHVwQW5nbGVz
Rm9ySW50ZXJwb2xhdGlvbik6CisKIDIwMjEtMDItMjQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fp
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBJbiBwcm9jZXNzIERpc3BsYXlM
aXN0IGRpc3BsYXkgc2hvdWxkIGhhdmUgYSBoaWdoZXIgcHJlY2VkZW5jZSB0aGFuIEdQVVAgZGlz
cGxheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnMuY3BwCmluZGV4IDVlODJhNTc2ODRiOTkyZGFiMmY5Yjc0MTJlM2RjNTg1ZGJm
NDJlYmIuLjc3NzhmZmU1YmI3MGJmN2NjYTVhZDI4ZjAzMWNlYjRjOTdmNTBkODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVy
cy5jcHAKQEAgLTg4Miw2ICs4ODIsOCBAQCB0ZW1wbGF0ZTxDU1NWYWx1ZUlEIEM+IHN0YXRpYyBP
cHRpb25hbDxSZWxhdGl2ZVJHQkNvbXBvbmVudD4gY29uc3VtZVJlbGF0aXZlUkdCQwogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KICAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCiBzdGF0aWMgQ29sb3IgcGFyc2VSZWxhdGl2ZVJHQlBhcmFt
ZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCkKQEAgLTE1MjYsNiArMTUyOCw4IEBAIHN0cnVjdCBIdWVDb2xvckFkanVzdGVyIHsK
ICAgICAgICAgY2FzZSBUeXBlOjpTcGVjaWZpZWQ6CiAgICAgICAgICAgICByZXR1cm4geyB0aGV0
YTEsIHRoZXRhMiB9OwogICAgICAgICB9CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CiAKICAgICBIdWVDb2xvckFkanVzdGVyKGRvdWJsZSB2YWx1ZSA9IDAu
MCwgVHlwZSB0eXBlID0gVHlwZTo6U2hvcnRlcikK
</data>

          </attachment>
      

    </bug>

</bugzilla>