<?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>156013</bug_id>
          
          <creation_ts>2016-03-30 00:47:40 -0700</creation_ts>
          <short_desc>ES6: Implement String.prototype.split and RegExp.prototype[@@split].</short_desc>
          <delta_ts>2016-04-19 15:35:49 -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>JavaScriptCore</component>
          <version>WebKit Local 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>156557</dependson>
          <blocked>156331</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1179004</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-30 00:47:40 -0700</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179005</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-30 00:49:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/25435210&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179879</commentid>
    <comment_count>2</comment_count>
      <attachid>275415</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-01 10:31:59 -0700</bug_when>
    <thetext>Created attachment 275415
work in progress: still need tests an a real @isPureRegExp implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180986</commentid>
    <comment_count>3</comment_count>
      <attachid>275697</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-05 14:59:27 -0700</bug_when>
    <thetext>Created attachment 275697
work in progress: need to apply get_by_id_pure next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181404</commentid>
    <comment_count>4</comment_count>
      <attachid>275817</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-06 14:16:18 -0700</bug_when>
    <thetext>Created attachment 275817
proposed patch.

This patch should be correct.  Some layout tests may need to be rebased, and I&apos;ll do if needed that after I run them.

Note that hasObservableSideEffects() in the JS regexp split implementation checks a lot of stuff, and I have to call it twice for subclasses of RegExp because their species constructor does not match the RegExp one by definition.  Hence, there might be some perf implications here.  Will find out after @tryGetById gets some DFG love from Keith.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183080</commentid>
    <comment_count>5</comment_count>
      <attachid>276240</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-12 09:36:49 -0700</bug_when>
    <thetext>Created attachment 276240
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183081</commentid>
    <comment_count>6</comment_count>
      <attachid>276241</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-12 09:38:16 -0700</bug_when>
    <thetext>Created attachment 276241
x86_64 benchmark results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183082</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-12 09:39:15 -0700</bug_when>
    <thetext>Perf is neutral with this patch.  All JSC and layout tests pass on x86_64 with a release build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183083</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-12 09:39:49 -0700</bug_when>
    <thetext>Attachment 276240 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:8:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 1 in 80 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183093</commentid>
    <comment_count>9</comment_count>
      <attachid>276243</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-12 10:02:48 -0700</bug_when>
    <thetext>Created attachment 276243
proposed patch: with a better name for hasObservableSideEffectsForRegExpSplit().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183109</commentid>
    <comment_count>10</comment_count>
      <attachid>276243</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-04-12 10:46:38 -0700</bug_when>
    <thetext>Comment on attachment 276243
proposed patch: with a better name for hasObservableSideEffectsForRegExpSplit().

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

r=me with comments.

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:101
&gt; +    let builtinExec = @RegExp.prototype.@exec;

What&apos;s the advantage of having this on the RegExp prototype over the global object?

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:114
&gt; +    if (regexpExec !== @RegExp.prototype.@exec)

Ditto.

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:154
&gt; +    if (!(this instanceof @Object))

This is not correct and slow! I can do: foo = {}; foo.__proto__ = null;  split.call(foo,...) and I will get a type error when it should work fine. You should use the @isObject function, which is also much faster.

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:172
&gt; +    let unicodeMatching = flags.includes(&quot;u&quot;);

What happens here if someone deletes String.prototype.includes? Does this still work?

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:189
&gt; +    // 13. If limit is undefined, let lim be 232-1; else let lim be ? ToUint32(limit).

Is this supposed to be 2^32-1?

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:207
&gt; +        result[0] = str;

I think you need to use @putDirectByVal here. CreateDataProperty does not look at the prototype chain, which result[0] will do.

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:259
&gt; +                    result.push(nextCapture);

I don&apos;t think you can use push here since result might not be an array and push might be customized. You need to do @putDirectByVal.

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:274
&gt; +    result.push(remainingStr);

Ditto.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:652
&gt; +        // @substrInternal should not have any observable side effects (e.g. it should not call
&gt; +        // GetMethod(..., @@toPrimitive) on the thisValue). It is ok to use the default
&gt; +        // stringProtoFuncSubstr as the implementation of @substrInternal because @substrInternal
&gt; +        // will only be called by builtins, which will guarantee that we only pass it a string
&gt; +        // thisValue. As a result, stringProtoFuncSubstr will not need to call toString() on the
&gt; +        // thisValue, and there will be no observable side-effects.

Why is this comment here and not at the implementation of stringProtoFuncSubstr?

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1189
&gt;      JSValue separatorValue = exec-&gt;argument(0);

This can be uncheckedArgument since it&apos;s only called by us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183258</commentid>
    <comment_count>11</comment_count>
      <attachid>276243</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-12 14:56:37 -0700</bug_when>
    <thetext>Comment on attachment 276243
proposed patch: with a better name for hasObservableSideEffectsForRegExpSplit().

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

&gt;&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:101
&gt;&gt; +    let builtinExec = @RegExp.prototype.@exec;
&gt; 
&gt; What&apos;s the advantage of having this on the RegExp prototype over the global object?

This was a pre-existing idiom from the @@match implementation.  In the interest of not changing too many things at once, I&apos;ll leave it as is for now.  I&apos;ll do a follow up patch to bring this over to a global.

&gt;&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:114
&gt;&gt; +    if (regexpExec !== @RegExp.prototype.@exec)
&gt; 
&gt; Ditto.

Same as above.

&gt;&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:154
&gt;&gt; +    if (!(this instanceof @Object))
&gt; 
&gt; This is not correct and slow! I can do: foo = {}; foo.__proto__ = null;  split.call(foo,...) and I will get a type error when it should work fine. You should use the @isObject function, which is also much faster.

Thanks.  Fixed.

&gt;&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:172
&gt;&gt; +    let unicodeMatching = flags.includes(&quot;u&quot;);
&gt; 
&gt; What happens here if someone deletes String.prototype.includes? Does this still work?

Thanks.  Will fix and add a test case.

&gt;&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:189
&gt;&gt; +    // 13. If limit is undefined, let lim be 232-1; else let lim be ? ToUint32(limit).
&gt; 
&gt; Is this supposed to be 2^32-1?

Yes.  Fixed.

&gt;&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:207
&gt;&gt; +        result[0] = str;
&gt; 
&gt; I think you need to use @putDirectByVal here. CreateDataProperty does not look at the prototype chain, which result[0] will do.

Thanks.  Fixed.

&gt;&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:259
&gt;&gt; +                    result.push(nextCapture);
&gt; 
&gt; I don&apos;t think you can use push here since result might not be an array and push might be customized. You need to do @putDirectByVal.

Thanks. Fixed.

&gt;&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:274
&gt;&gt; +    result.push(remainingStr);
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:652
&gt;&gt; +        // thisValue, and there will be no observable side-effects.
&gt; 
&gt; Why is this comment here and not at the implementation of stringProtoFuncSubstr?

Because this is where we define @substrInternal, and this comment pertains to @substrInternal.

On further consideration, I think it&apos;s clearer to have an explicit builtinStringSubstrInternal() function and to move this comment there.  Plus I can add some asserts there.  I&apos;m going with that.

&gt;&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1189
&gt;&gt;      JSValue separatorValue = exec-&gt;argument(0);
&gt; 
&gt; This can be uncheckedArgument since it&apos;s only called by us.

Thanks.  Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183259</commentid>
    <comment_count>12</comment_count>
      <attachid>276281</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-12 14:57:32 -0700</bug_when>
    <thetext>Created attachment 276281
patch for landing (w/ Keith&apos;s feedback resolved).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183260</commentid>
    <comment_count>13</comment_count>
      <attachid>276282</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-12 14:58:02 -0700</bug_when>
    <thetext>Created attachment 276282
Diff between patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183265</commentid>
    <comment_count>14</comment_count>
      <attachid>276281</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-04-12 15:22:15 -0700</bug_when>
    <thetext>Comment on attachment 276281
patch for landing (w/ Keith&apos;s feedback resolved).

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

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:209
&gt; +        result.length = 1;

unneeded.

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:249
&gt; +                if (resultLength == limit) {
&gt; +                    result.length = resultLength;
&gt; +                    return result;
&gt; +                }

unneeded.

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:270
&gt; +                    if (resultLength == limit) {
&gt; +                        result.length = resultLength;
&gt; +                        return result;
&gt; +                    }

unneeded.

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:283
&gt; +    result.length = ++resultLength;

unneeded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183266</commentid>
    <comment_count>15</comment_count>
      <attachid>276281</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-04-12 15:23:29 -0700</bug_when>
    <thetext>Comment on attachment 276281
patch for landing (w/ Keith&apos;s feedback resolved).

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

&gt;&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:249
&gt;&gt; +                }
&gt; 
&gt; unneeded.

Whoops, this should just refer the length setting part.

&gt;&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:270
&gt;&gt; +                    }
&gt; 
&gt; unneeded.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183268</commentid>
    <comment_count>16</comment_count>
      <attachid>276285</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-12 15:35:07 -0700</bug_when>
    <thetext>Created attachment 276285
patch for landing 2: removed unneeded explicit setting of result.length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183269</commentid>
    <comment_count>17</comment_count>
      <attachid>276286</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-12 15:35:36 -0700</bug_when>
    <thetext>Created attachment 276286
Diff between patches 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183272</commentid>
    <comment_count>18</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-12 15:41:06 -0700</bug_when>
    <thetext>Thanks for all the reviews.  Landed in r199393: &lt;http://trac.webkit.org/r199393&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183318</commentid>
    <comment_count>19</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-12 18:33:11 -0700</bug_when>
    <thetext>Speculative rollout in r199400: &lt;http://trac.webkit.org/r199400&gt; to fix this failure: https://build.webkit.org/builders/Apple%20El%20Capitan%2032-bit%20JSC%20%28BuildAndTest%29/builds/2075</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183328</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-04-12 20:02:08 -0700</bug_when>
    <thetext>The rollout didn&apos;t fix 32-bit failures, still occurring with r199401.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183449</commentid>
    <comment_count>21</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-13 10:47:23 -0700</bug_when>
    <thetext>The crash issue was due to https://bugs.webkit.org/show_bug.cgi?id=156532, and is now fixed.

Re-landed r199393 in r199502: &lt;http://trac.webkit.org/r199502&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183554</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-13 14:56:34 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 156557</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185058</commentid>
    <comment_count>23</comment_count>
      <attachid>276732</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-19 10:15:52 -0700</bug_when>
    <thetext>Created attachment 276732
browser sunspider benchmark baseline on MBP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185059</commentid>
    <comment_count>24</comment_count>
      <attachid>276733</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-19 10:16:33 -0700</bug_when>
    <thetext>Created attachment 276733
browser sunspider benchmark new on MBP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185060</commentid>
    <comment_count>25</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-19 10:19:27 -0700</bug_when>
    <thetext>I&apos;ve benchmarked this patch (on rev 199568) many times on a MBP with the in browser sunspider, and the results show no regression.  Whatever perf regression appears on arewefastyet.com previously are probably due to interplay with other factors (maybe cache effects?).

I will re-land and monitor the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185065</commentid>
    <comment_count>26</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-19 10:25:41 -0700</bug_when>
    <thetext>Re-landed in r199731: &lt;http://trac.webkit.org/r199731&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185104</commentid>
    <comment_count>27</comment_count>
      <attachid>276742</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-19 12:05:06 -0700</bug_when>
    <thetext>Created attachment 276742
browser sunspider benchmark baseline on MacPro</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185105</commentid>
    <comment_count>28</comment_count>
      <attachid>276743</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-19 12:06:25 -0700</bug_when>
    <thetext>Created attachment 276743
browser sunspider benchmark new on MacPro

In browser Sunspider benchmark results on my MacPro agrees.  There&apos;s no perf regression here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185157</commentid>
    <comment_count>29</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-19 14:20:02 -0700</bug_when>
    <thetext>Strange.  http://arewefastyet.com/#machine=29&amp;view=breakdown&amp;suite=ss is still complaining that the time for ss-format-xparb has nearly doubled (likely due to this patch).  But locally, I can&apos;t replicate the issue at all.  Investigating ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185166</commentid>
    <comment_count>30</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-19 14:29:34 -0700</bug_when>
    <thetext>Command line sunspider run without warmup ...

                              base                      new                                        
Normal FTL on:
date-format-xparb        5.9714+-0.0932            5.8345+-0.2865          might be 1.0235x faster
FTL disable:
date-format-xparb        5.7622+-0.2792            5.6508+-0.1500          might be 1.0197x faster
DFG disable:
date-format-xparb       13.0135+-0.5711           12.5326+-0.3871          might be 1.0384x faster
Baseline JIT disabled:
date-format-xparb       20.2147+-0.3067           20.1280+-0.3900        

Based on the above, it does not look like there are any regressions at any tier level either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185191</commentid>
    <comment_count>31</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-19 15:35:49 -0700</bug_when>
    <thetext>All internal test bots also show no regression.  The arewefastyet bot is an anomaly.  Will ignore and move on to other things.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275415</attachid>
            <date>2016-04-01 10:31:59 -0700</date>
            <delta_ts>2016-04-05 14:59:27 -0700</delta_ts>
            <desc>work in progress: still need tests an a real @isPureRegExp implementation.</desc>
            <filename>bug-156013.patch</filename>
            <type>text/plain</type>
            <size>60758</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTg4OTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjA0NSw2ICsyMDQ1LDggQEAKIAkJRkUxQzBGRkYxQjE5
NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGRTFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9u
LmNwcCAqLzsgfTsKIAkJRkUyMENFOUQxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUIx
NUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovOyB9OwogCQlGRTIwQ0U5RTE1RjA0
QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3Au
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTMx
OEZERjFDQUM5ODI3MDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMxOEZE
RDFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAg
Ki87IH07CisJCUZFMzE4RkUwMUNBQzk4MkYwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVy
bmFsRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTMxOEZERTFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1
bmN0aW9ucy5oICovOyB9OwogCQlGRTM4NEVFNTFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJW
TS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4
NEVFMTFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgKi87IH07CiAJCUZFMzg0RUU2
MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xs
YXJWTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUZFMzg0RUU3MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNUHJvdG90eXBlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUzMUFEREI3
QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTQyODIsNiAr
NDI4NCw4IEBACiAJCUZFMUMwRkZFMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhjZXB0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyMENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50
Q0xvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRDTG9v
cC5jcHA7IHBhdGggPSBsbGludC9MTEludENMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRDTG9vcC5oOyBwYXRoID0gbGxpbnQvTExJ
bnRDTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTMxOEZERDFDQUM4QzUz
MDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rp
b25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUzMThGREUxQ0FDOEM1MzAw
REZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM4NEVFMTFBRERCN0FEMDA1NURFMkMgLyog
SlNEb2xsYXJWTS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Rv
bGxhclZNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODRFRTIxQUREQjdB
RDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNEb2xsYXJWTS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM4NEVFMzFB
RERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RvbGxhclZNUHJvdG90eXBlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1NTYsNiArNTU2MCw4IEBACiAJCQkJMEZFMDUwMEUxQUE5
MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50c09mZnNldC5oICovLAogCQkJCUE3MDQ0N0VC
MTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5jcHAgKi8sCiAJCQkJQTcwNDQ3RUMxN0Ew
QkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggKi8sCisJCQkJRkUzMThGREQxQ0FDOEM1MzAw
REZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwICovLAorCQkJCUZF
MzE4RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25z
LmggKi8sCiAJCQkJMkFEMkVERkExOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5o
ICovLAogCQkJCUJDMzM3QkVBMEUxQjAwQ0IwMDc2OTE4QSAvKiBFcnJvci5jcHAgKi8sCiAJCQkJ
QkMzMDQ2MDYwRTFGNDk3RjAwMzIzMkNGIC8qIEVycm9yLmggKi8sCkBAIC03OTA5LDYgKzc5MTUs
NyBAQAogCQkJCTUyQzA2MTFGMUFBNTFFMUMwMEI0QURCQSAvKiBSdW50aW1lVHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzIyQjMxQjkxNDA1NzdENzAwREI0NzVBIC8qIFNhbXBsaW5nQ291bnRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMjgxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3Bl
ZEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0
IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFMDUwMkIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJl
Z2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTg3MjYsNiArODczMyw3IEBACiAJ
CQkJRkU1MDY4NjcxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNzdBNDIzRDE3QTBCQkZEMDBBOERCODEgLyogREZHQWJzdHJhY3RI
ZWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVDMTk0MTcyNzZFNDYwMENFQUJGRCAvKiBE
RkdBYnN0cmFjdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMzE4RkRGMUNBQzk4Mjcw
MERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRDNFNDAxMUI2MThBQUYwMEM4MEUxRSAvKiBERkdBZGFwdGl2ZUluZmVycmVk
UHJvcGVydHlWYWx1ZVdhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxOEQzQ0Yx
QjU1QTZFMDAwMkM1QzlGIC8qIERGR0FkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjJERDgxMTFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRz
RWxpbWluYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9HbG9iYWxPYmplY3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwkocmV2aXNpb24gMTk4ODk3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTY0LDMgKzY1LDE4IEBAIGZ1bmN0aW9uIHNwZWNpZXNHZXR0ZXIoKQogewogICAg
IHJldHVybiB0aGlzOwogfQorCitmdW5jdGlvbiBzcGVjaWVzQ29uc3RydWN0b3Iob2JqLCBkZWZh
dWx0Q29uc3RydWN0b3IpCit7CisgICAgdmFyIGNvbnN0cnVjdG9yID0gb2JqLmNvbnN0cnVjdG9y
OworICAgIGlmIChjb25zdHJ1Y3RvciA9PT0gQHVuZGVmaW5lZCkKKyAgICAgICAgcmV0dXJuIGRl
ZmF1bHRDb25zdHJ1Y3RvcjsKKyAgICBpZiAoIUBpc09iamVjdChjb25zdHJ1Y3RvcikpCisgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJ8dGhpc3wuY29uc3RydWN0b3IgaXMgbm90IGFuIE9i
amVjdCBvciB1bmRlZmluZWQiKTsKKyAgICBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yW0BzeW1i
b2xTcGVjaWVzXTsKKyAgICBpZiAoY29uc3RydWN0b3IgPT0gbnVsbCkKKyAgICAgICAgcmV0dXJu
IGRlZmF1bHRDb25zdHJ1Y3RvcjsKKyAgICBpZiAoQGlzQ29uc3RydWN0b3IoY29uc3RydWN0b3Ip
KQorICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CisgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3Io
Inx0aGlzfC5jb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc10gaXMgbm90IGEgY29uc3RydWN0b3Ii
KTsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlUHJvdG90
eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9t
aXNlUHJvdG90eXBlLmpzCShyZXZpc2lvbiAxOTg4OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTYgKzM3
LDcgQEAgZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkKICAgICBpZiAoIUBp
c1Byb21pc2UodGhpcykpCiAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJ8dGhpc3wgaXMg
bm90IGEgb2JqZWN0Iik7CiAKLSAgICB2YXIgY29uc3RydWN0b3IgPSB0aGlzLmNvbnN0cnVjdG9y
OwotICAgIGlmIChjb25zdHJ1Y3RvciA9PT0gQHVuZGVmaW5lZCkKLSAgICAgICAgY29uc3RydWN0
b3IgPSBAUHJvbWlzZTsKLSAgICBlbHNlIGlmICghQGlzT2JqZWN0KGNvbnN0cnVjdG9yKSkKLSAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoInx0aGlzfC5jb25zdHJ1Y3RvciBpcyBub3QgYW4g
T2JqZWN0IG9yIHVuZGVmaW5lZCIpOwotICAgIGVsc2UgewotICAgICAgICBjb25zdHJ1Y3RvciA9
IGNvbnN0cnVjdG9yW0BzeW1ib2xTcGVjaWVzXTsKLSAgICAgICAgaWYgKGNvbnN0cnVjdG9yID09
IG51bGwpCi0gICAgICAgICAgICBjb25zdHJ1Y3RvciA9IEBQcm9taXNlOwotICAgIH0KKyAgICB2
YXIgY29uc3RydWN0b3IgPSBAc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsIEBQcm9taXNlKTsKIAog
ICAgIHZhciByZXN1bHRDYXBhYmlsaXR5ID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KGNvbnN0cnVj
dG9yKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlZ0V4cFByb3Rv
dHlwZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVn
RXhwUHJvdG90eXBlLmpzCShyZXZpc2lvbiAxOTg4OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvUmVnRXhwUHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMyAr
MjMsMTUgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLWZ1bmN0aW9uIGFkdmFuY2VTdHJpbmdJ
bmRleFVuaWNvZGUoc3RyaW5nLCBzdHJpbmdMZW5ndGgsIGluZGV4KQorZnVuY3Rpb24gYWR2YW5j
ZVN0cmluZ0luZGV4KHN0cmluZywgaW5kZXgsIHVuaWNvZGUpCiB7Ci0gICAgLy8gVGhpcyBmdW5j
dGlvbiBpbXBsZW1lbnRzIEFkdmFuY2VTdHJpbmdJbmRleCBkZXNjcmliZWQgaW4gRVM2IDIxLjIu
NS4yLjMsIHN0ZXBzIDYtMTEuCi0gICAgLy8gSXQgYXNzdW1lcyB0aGF0ICJ1bmljb2RlIiBpcyB0
cnVlIGZvciBpdHMgY2FsbGVycy4KKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgQWR2
YW5jZVN0cmluZ0luZGV4IGRlc2NyaWJlZCBpbiBFUzYgMjEuMi41LjIuMy4KICAgICAidXNlIHN0
cmljdCI7CiAKLSAgICBpZiAoaW5kZXggKyAxID49IHN0cmluZ0xlbmd0aCkKKyAgICBpZiAoIXVu
aWNvZGUpCisgICAgICAgIHJldHVybiBpbmRleCArIDE7CisKKyAgICBpZiAoaW5kZXggKyAxID49
IHN0cmluZy5sZW5ndGgpCiAgICAgICAgIHJldHVybiBpbmRleCArIDE7CiAKICAgICBsZXQgZmly
c3QgPSBzdHJpbmcuQGNoYXJDb2RlQXQoaW5kZXgpOwpAQCAtNTAsNyArNTIsNyBAQCBmdW5jdGlv
biBtYXRjaChzdHIpCiAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEBPYmplY3QpKQogICAgICAg
ICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVnRXhwLnByb3RvdHlwZS5AQG1hdGNoIHJlcXVpcmVz
IHRoYXQgfHRoaXN8IGJlIGFuIE9iamVjdCIpOwogCi0gICAgbGV0IHJlZ2V4cCA9IEBPYmplY3Qo
dGhpcyk7CisgICAgbGV0IHJlZ2V4cCA9IHRoaXM7CiAgICAgbGV0IHN0cmluZ0FyZyA9IEB0b1N0
cmluZyhzdHIpOwogCiAgICAgaWYgKCFyZWdleHAuZ2xvYmFsKQpAQCAtNzksMTIgKzgxLDggQEAg
ZnVuY3Rpb24gbWF0Y2goc3RyKQogCiAgICAgICAgICAgICBsZXQgcmVzdWx0U3RyaW5nID0gQHRv
U3RyaW5nKHJlc3VsdFswXSk7CiAKLSAgICAgICAgICAgIGlmICghcmVzdWx0U3RyaW5nLmxlbmd0
aCkgewotICAgICAgICAgICAgICAgIGlmICh1bmljb2RlKQotICAgICAgICAgICAgICAgICAgICBy
ZWdleHAubGFzdEluZGV4ID0gQGFkdmFuY2VTdHJpbmdJbmRleFVuaWNvZGUoc3RyaW5nQXJnLCBz
dHJpbmdMZW5ndGgsIHJlZ2V4cC5sYXN0SW5kZXgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgcmVnZXhwLmxhc3RJbmRleCsrOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKCFyZXN1bHRTdHJpbmcubGVuZ3RoKQorICAgICAgICAgICAgICAgIHJlZ2V4
cC5sYXN0SW5kZXggPSBAYWR2YW5jZVN0cmluZ0luZGV4KHN0cmluZ0FyZywgcmVnZXhwLmxhc3RJ
bmRleCwgdW5pY29kZSk7CiAKICAgICAgICAgICAgIHJlc3VsdExpc3QuQHB1c2gocmVzdWx0U3Ry
aW5nKTsKIApAQCAtOTUsMyArOTMsMTUxIEBAIGZ1bmN0aW9uIG1hdGNoKHN0cikKICAgICByZXR1
cm4gcmVnZXhwLkBtYXRjaChzdHJpbmdBcmcpOwogfQogCitmdW5jdGlvbiByZWdFeHBFeGVjKHJl
Z2V4cCwgc3RyKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAKKyAgICBsZXQgZXhlYyA9IHJl
Z2V4cC5leGVjOworICAgIGxldCBidWlsdGluRXhlYyA9IEBSZWdFeHAucHJvdG90eXBlLkBleGVj
OworICAgIGlmIChleGVjICE9PSBidWlsdGluRXhlYyAmJiBAaXNDYWxsYWJsZShleGVjKSkgewor
ICAgICAgICBsZXQgcmVzdWx0ID0gZXhlYyhzdHIpOworICAgICAgICBpZiAocmVzdWx0ICE9PSBu
dWxsICYmIEBpc09iamVjdChyZXN1bHQpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIlRoZSByZXN1bHQgb2YgYSBSZWdFeHAgZXhlYyBtdXN0IGJlIG51bGwgb3IgYW4gb2JqZWN0
Iik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcmV0dXJuIGJ1aWx0aW5F
eGVjLkBjYWxsKHJlZ2V4cCwgc3RyKTsKK30KKworLy8gRVMgMjEuMi41LjExIFJlZ0V4cC5wcm90
b3R5cGVbQEBzcGxpdF0oc3RyaW5nLCBsaW1pdCkKK2Z1bmN0aW9uIHNwbGl0KHN0cmluZywgbGlt
aXQpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgZnVuY3Rpb24gbWF4KGEsIGIpIHsKKyAg
ICAgICAgcmV0dXJuIGEgPiBiID8gYSA6IGI7CisgICAgfQorICAgIGZ1bmN0aW9uIG1pbihhLCBi
KSB7CisgICAgICAgIHJldHVybiBhIDwgYiA/IGEgOiBiOworICAgIH0KKworICAgIC8vIDEuIExl
dCByeCBiZSB0aGUgdGhpcyB2YWx1ZS4KKyAgICAvLyAyLiBJZiBUeXBlKHJ4KSBpcyBub3QgT2Jq
ZWN0LCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCisgICAgaWYgKCEodGhpcyBpbnN0YW5j
ZW9mIEBPYmplY3QpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVnRXhwLnByb3Rv
dHlwZS5AQHNwbGl0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGFuIE9iamVjdCIpOworICAgIGxl
dCByZWdleHAgPSB0aGlzOworCisgICAgLy8gMy4gTGV0IFMgYmUgPyBUb1N0cmluZyhzdHJpbmcp
LgorICAgIGxldCBzdHIgPSBAdG9TdHJpbmcoc3RyaW5nKTsKKworICAgIGlmIChAaXNQdXJlUmVn
RXhwKHJlZ2V4cCkpCisgICAgICAgIHJldHVybiBAcmVnRXhwU3BsaXROYXRpdmUuQGNhbGwocmVn
ZXhwLCBzdHIsIGxpbWl0KTsKKworICAgIC8vIDQuIExldCBDIGJlID8gU3BlY2llc0NvbnN0cnVj
dG9yKHJ4LCAlUmVnRXhwJSkuCisgICAgbGV0IGNvbnN0cnVjdG9yID0gQHNwZWNpZXNDb25zdHJ1
Y3RvcihyZWdleHAsIEBSZWdFeHApOworCisgICAgLy8gNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJp
bmcoPyBHZXQocngsICJmbGFncyIpKS4KKyAgICBsZXQgZmxhZ3MgPSBAdG9TdHJpbmcocmVnZXhw
LmZsYWdzKTsKKyAgICAvLyA2LiBJZiBmbGFncyBjb250YWlucyAidSIsIGxldCB1bmljb2RlTWF0
Y2hpbmcgYmUgdHJ1ZS4KKyAgICAvLyA3LiBFbHNlLCBsZXQgdW5pY29kZU1hdGNoaW5nIGJlIGZh
bHNlLgorICAgIGxldCB1bmljb2RlTWF0Y2hpbmcgPSBmbGFncy5pbmNsdWRlcygidSIpOworICAg
IC8vIDguIElmIGZsYWdzIGNvbnRhaW5zICJ5IiwgbGV0IG5ld0ZsYWdzIGJlIGZsYWdzLgorICAg
IC8vIDkuIEVsc2UsIGxldCBuZXdGbGFncyBiZSB0aGUgc3RyaW5nIHRoYXQgaXMgdGhlIGNvbmNh
dGVuYXRpb24gb2YgZmxhZ3MgYW5kICJ5Ii4KKyAgICBsZXQgbmV3RmxhZ3MgPSBmbGFncy5pbmNs
dWRlcygieSIpID8gZmxhZ3MgOiBmbGFncyArICJ5IjsKKworICAgIC8vIDEwLiBMZXQgc3BsaXR0
ZXIgYmUgPyBDb25zdHJ1Y3QoQywgwqsgcngsIG5ld0ZsYWdzIMK7KS4KKyAgICBsZXQgc3BsaXR0
ZXIgPSBuZXcgY29uc3RydWN0b3IocmVnZXhwLCBuZXdGbGFncyk7CisKKyAgICAvLyAxMS4gTGV0
IEEgYmUgQXJyYXlDcmVhdGUoMCkuCisgICAgLy8gMTIuIExldCBsZW5ndGhBIGJlIDAuCisgICAg
bGV0IHJlc3VsdCA9IFtdOworCisgICAgLy8gMTMuIElmIGxpbWl0IGlzIHVuZGVmaW5lZCwgbGV0
IGxpbSBiZSAyMzItMTsgZWxzZSBsZXQgbGltIGJlID8gVG9VaW50MzIobGltaXQpLgorICAgIGxp
bWl0ID0gKGxpbWl0ID09PSBAdW5kZWZpbmVkKSA/IDB4ZmZmZmZmZmYgOiBsaW1pdCA+Pj4gMDsK
KworICAgIC8vIDE2LiBJZiBsaW0gPSAwLCByZXR1cm4gQS4KKyAgICBpZiAoIWxpbWl0KQorICAg
ICAgICByZXR1cm4gcmVzdWx0OworCisgICAgLy8gMTQuIFtEZWZlcmVkIGZyb20gYWJvdmVdIExl
dCBzaXplIGJlIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gUy4KKyAgICBsZXQgc2l6ZSA9IHN0
ci5sZW5ndGg7CisKKyAgICAvLyAxNy4gSWYgc2l6ZSA9IDAsIHRoZW4KKyAgICBpZiAoIXNpemUp
IHsKKyAgICAgICAgLy8gYS4gTGV0IHogYmUgPyBSZWdFeHBFeGVjKHNwbGl0dGVyLCBTKS4KKyAg
ICAgICAgbGV0IHogPSBAcmVnRXhwRXhlYyhzcGxpdHRlciwgc3RyKTsKKyAgICAgICAgLy8gYi4g
SWYgeiBpcyBub3QgbnVsbCwgcmV0dXJuIEEuCisgICAgICAgIGlmICh6ICE9IG51bGwpCisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAvLyBjLiBQZXJmb3JtICEgQ3JlYXRlRGF0
YVByb3BlcnR5KEEsICIwIiwgUykuCisgICAgICAgIHJlc3VsdFswXSA9IHN0cjsKKyAgICAgICAg
Ly8gZC4gUmV0dXJuIEEuCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy8g
MTUuIFtEZWZlcmVkIGZyb20gYWJvdmVdIExldCBwIGJlIDAuCisgICAgbGV0IHBvc2l0aW9uID0g
MDsKKyAgICAvLyAxOC4gTGV0IHEgYmUgcC4KKyAgICBsZXQgbWF0Y2hQb3NpdGlvbiA9IDA7CisK
KyAgICAvLyAxOS4gUmVwZWF0LCB3aGlsZSBxIDwgc2l6ZQorICAgIHdoaWxlIChtYXRjaFBvc2l0
aW9uIDwgc2l6ZSkgeworICAgICAgICAvLyBhLiBQZXJmb3JtID8gU2V0KHNwbGl0dGVyLCAibGFz
dEluZGV4IiwgcSwgdHJ1ZSkuCisgICAgICAgIHNwbGl0dGVyLmxhc3RJbmRleCA9IG1hdGNoUG9z
aXRpb247CisgICAgICAgIC8vIGIuIExldCB6IGJlID8gUmVnRXhwRXhlYyhzcGxpdHRlciwgUyku
CisgICAgICAgIGxldCBtYXRjaGVzID0gQHJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIHN0cik7CisgICAg
ICAgIC8vIGMuIElmIHogaXMgbnVsbCwgbGV0IHEgYmUgQWR2YW5jZVN0cmluZ0luZGV4KFMsIHEs
IHVuaWNvZGVNYXRjaGluZykuCisgICAgICAgIGlmIChtYXRjaGVzID09PSBudWxsKQorICAgICAg
ICAgICAgbWF0Y2hQb3NpdGlvbiA9IEBhZHZhbmNlU3RyaW5nSW5kZXgoc3RyLCBtYXRjaFBvc2l0
aW9uLCB1bmljb2RlTWF0Y2hpbmcpOworICAgICAgICAvLyBkLiBFbHNlIHogaXMgbm90IG51bGws
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gaS4gTGV0IGUgYmUgPyBUb0xlbmd0aCg/
IEdldChzcGxpdHRlciwgImxhc3RJbmRleCIpKS4KKyAgICAgICAgICAgIGxldCBlbmRQb3NpdGlv
biA9IEB0b0xlbmd0aChzcGxpdHRlci5sYXN0SW5kZXgpOworICAgICAgICAgICAgLy8gaWkuIExl
dCBlIGJlIG1pbihlLCBzaXplKS4KKyAgICAgICAgICAgIGVuZFBvc2l0aW9uID0gbWluKGVuZFBv
c2l0aW9uLCBzaXplKTsKKyAgICAgICAgICAgIC8vIGlpaS4gSWYgZSA9IHAsIGxldCBxIGJlIEFk
dmFuY2VTdHJpbmdJbmRleChTLCBxLCB1bmljb2RlTWF0Y2hpbmcpLgorICAgICAgICAgICAgaWYg
KGVuZFBvc2l0aW9uID09PSBwb3NpdGlvbikKKyAgICAgICAgICAgICAgICBtYXRjaFBvc2l0aW9u
ID0gQGFkdmFuY2VTdHJpbmdJbmRleChzdHIsIG1hdGNoUG9zaXRpb24sIHVuaWNvZGVNYXRjaGlu
Zyk7CisgICAgICAgICAgICAvLyBpdi4gRWxzZSBlICE9IHAsCisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAvLyAxLiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0
aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgZWxlbWVudHMgYXQgaW5kaWNlcyBw
IChpbmNsdXNpdmUpIHRocm91Z2ggcSAoZXhjbHVzaXZlKS4KKyAgICAgICAgICAgICAgICBsZXQg
c3ViU3RyID0gc3RyLnN1YnN0cihwb3NpdGlvbiwgbWF0Y2hQb3NpdGlvbiAtIHBvc2l0aW9uKTsK
KyAgICAgICAgICAgICAgICAvLyAyLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICEg
VG9TdHJpbmcobGVuZ3RoQSksIFQpLgorICAgICAgICAgICAgICAgIC8vIDMuIExldCBsZW5ndGhB
IGJlIGxlbmd0aEEgKyAxLgorICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHN1YlN0cik7Cisg
ICAgICAgICAgICAgICAgLy8gNC4gSWYgbGVuZ3RoQSA9IGxpbSwgcmV0dXJuIEEuCisgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT0gbGltaXQpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgLy8gNS4gTGV0IHAgYmUgZS4KKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbiA9IGVuZFBvc2l0aW9uOworICAgICAgICAgICAgICAgIC8vIDYu
IExldCBudW1iZXJPZkNhcHR1cmVzIGJlID8gVG9MZW5ndGgoPyBHZXQoeiwgImxlbmd0aCIpKS4K
KyAgICAgICAgICAgICAgICAvLyA3LiBMZXQgbnVtYmVyT2ZDYXB0dXJlcyBiZSBtYXgobnVtYmVy
T2ZDYXB0dXJlcy0xLCAwKS4KKyAgICAgICAgICAgICAgICBsZXQgbnVtYmVyT2ZDYXB0dXJlcyA9
IG1heChtYXRjaGVzLmxlbmd0aCAtIDEsIDApOworICAgICAgICAgICAgICAgIC8vIDguIExldCBp
IGJlIDEuCisgICAgICAgICAgICAgICAgbGV0IGkgPSAxOworICAgICAgICAgICAgICAgIC8vIDku
IFJlcGVhdCwgd2hpbGUgaSA8PSBudW1iZXJPZkNhcHR1cmVzLAorICAgICAgICAgICAgICAgIHdo
aWxlIChpIDw9IG51bWJlck9mQ2FwdHVyZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gYS4g
TGV0IG5leHRDYXB0dXJlIGJlID8gR2V0KHosICEgVG9TdHJpbmcoaSkpLgorICAgICAgICAgICAg
ICAgICAgICBsZXQgbmV4dENhcHR1cmUgPSBtYXRjaGVzW2ldOworICAgICAgICAgICAgICAgICAg
ICAvLyBiLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICEgVG9TdHJpbmcobGVuZ3Ro
QSksIG5leHRDYXB0dXJlKS4KKyAgICAgICAgICAgICAgICAgICAgLy8gZC4gTGV0IGxlbmd0aEEg
YmUgbGVuZ3RoQSArIDEuCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5leHRDYXB0
dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gZS4gSWYgbGVuZ3RoQSA9IGxpbSwgcmV0dXJu
IEEuCisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09IGxpbWl0KQorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gYy4gTGV0IGkgYmUgaSArIDEuCisgICAgICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gMTAuIExldCBxIGJlIHAuCisgICAgICAgICAg
ICAgICAgbWF0Y2hQb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorICAgIC8vIDIwLiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0aGUg
c3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgZWxlbWVudHMgYXQgaW5kaWNlcyBwIChp
bmNsdXNpdmUpIHRocm91Z2ggc2l6ZSAoZXhjbHVzaXZlKS4KKyAgICBsZXQgcmVtYWluaW5nU3Ry
ID0gc3RyLnN1YnN0cihwb3NpdGlvbiwgc2l6ZSk7CisgICAgLy8gMjEuIFBlcmZvcm0gISBDcmVh
dGVEYXRhUHJvcGVydHkoQSwgISBUb1N0cmluZyhsZW5ndGhBKSwgVCkuCisgICAgcmVzdWx0LnB1
c2gocmVtYWluaW5nU3RyKTsKKyAgICAvLyAyMi4gUmV0dXJuIEEuCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3Rv
dHlwZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3Ry
aW5nUHJvdG90eXBlLmpzCShyZXZpc2lvbiAxOTg4OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgPHRoZXRhbGVj
cmFmdGVyQGdtYWlsLmNvbT4uCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTI0LDMgKzEyNSwyMiBAQCBmdW5jdGlvbiByZXBlYXQoY291bnQpCiAKICAgICByZXR1cm4gQHJl
cGVhdFNsb3dQYXRoKHN0cmluZywgY291bnQpOwogfQorCitmdW5jdGlvbiBzcGxpdChzZXBhcmF0
b3IsIGxpbWl0KQoreworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICAKKyAgICBpZiAodGhpcyA9PSBu
dWxsKSB7CisgICAgICAgIGlmICh0aGlzID09PSBudWxsKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoIlN0cmluZy5wcm90b3R5cGUuc3BsaXQgcmVxdWlyZXMgdGhhdCB8dGhpc3wg
bm90IGJlIG51bGwiKTsKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlN0cmluZy5wcm90
b3R5cGUuc3BsaXQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZCIpOworICAg
IH0KKyAgICAKKyAgICBpZiAoc2VwYXJhdG9yICE9IG51bGwpIHsKKyAgICAgICAgdmFyIHNwbGl0
dGVyID0gc2VwYXJhdG9yW0BzeW1ib2xTcGxpdF07CisgICAgICAgIGlmIChzcGxpdHRlciAhPSBA
dW5kZWZpbmVkKQorICAgICAgICAgICAgcmV0dXJuIHNwbGl0dGVyLkBjYWxsKHNlcGFyYXRvciwg
dGhpcywgbGltaXQpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gQHN0cmluZ1NwbGl0TmF0aXZl
LkBjYWxsKHRoaXMsIHNlcGFyYXRvciwgbGltaXQpOworfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmNwcAkocmV2aXNpb24gMTk4ODk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsNiAr
NTcsNyBAQCBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpCiAgICAgbV9z
eW1ib2xNYXRjaC5zZXQobV92bSwgU3ltYm9sOjpjcmVhdGUobV92bSwgc3RhdGljX2Nhc3Q8U3lt
Ym9sSW1wbCY+KCptX3ZtLnByb3BlcnR5TmFtZXMtPm1hdGNoU3ltYm9sLmltcGwoKSkpKTsKICAg
ICBtX3N5bWJvbFNlYXJjaC5zZXQobV92bSwgU3ltYm9sOjpjcmVhdGUobV92bSwgc3RhdGljX2Nh
c3Q8U3ltYm9sSW1wbCY+KCptX3ZtLnByb3BlcnR5TmFtZXMtPnNlYXJjaFN5bWJvbC5pbXBsKCkp
KSk7CiAgICAgbV9zeW1ib2xTcGVjaWVzLnNldChtX3ZtLCBTeW1ib2w6OmNyZWF0ZShtX3ZtLCBz
dGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKm1fdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJv
bC5pbXBsKCkpKSk7CisgICAgbV9zeW1ib2xTcGxpdC5zZXQobV92bSwgU3ltYm9sOjpjcmVhdGUo
bV92bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCptX3ZtLnByb3BlcnR5TmFtZXMtPnNwbGl0
U3ltYm9sLmltcGwoKSkpKTsKIH0KIAogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpFbWl0dGVyVHlw
ZSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Ojpsb29rdXAoY29uc3QgSWRlbnRpZmllciYgaWRl
bnQpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgJKHJldmlzaW9uIDE5ODg5NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OSw3IEBAIGNsYXNzIElkZW50aWZpZXI7CiAgICAg
bWFjcm8oc3ltYm9sTWF0Y2gpIFwKICAgICBtYWNybyhzeW1ib2xTZWFyY2gpIFwKICAgICBtYWNy
byhzeW1ib2xTcGVjaWVzKSBcCisgICAgbWFjcm8oc3ltYm9sU3BsaXQpIFwKIAogY2xhc3MgQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHJldmlzaW9uIDE5ODg5NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA3LCAyMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0yNzUsNyArMjc1LDYgQEAKICNkZWZpbmUgSlNDX0NPTU1PTl9Q
UklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0xfTk9UX0lNUExFTUVOVEVE
X1lFVChtYWNybylcCiAgICAgbWFjcm8oaXNDb25jYXRTcHJlYWRhYmxlKSBcCiAgICAgbWFjcm8o
cmVwbGFjZSkgXAotICAgIG1hY3JvKHNwbGl0KQogCiAjZGVmaW5lIEpTQ19DT01NT05fUFJJVkFU
RV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKG1hY3JvKSBcCiAgICAgbWFjcm8o
aGFzSW5zdGFuY2UpIFwKQEAgLTI4Myw2ICsyODIsNyBAQAogICAgIG1hY3JvKG1hdGNoKSBcCiAg
ICAgbWFjcm8oc2VhcmNoKSBcCiAgICAgbWFjcm8oc3BlY2llcykgXAorICAgIG1hY3JvKHNwbGl0
KSBcCiAgICAgbWFjcm8odG9QcmltaXRpdmUpIFwKICAgICBtYWNybyh0b1N0cmluZ1RhZykgXAog
ICAgIG1hY3JvKHVuc2NvcGFibGVzKQpAQCAtMzc2LDEzICszNzYsMTcgQEAKICAgICBtYWNybyhp
bnN0YW5jZU9mKSBcCiAgICAgbWFjcm8oaXNBcnJheSkgXAogICAgIG1hY3JvKGlzQXJyYXlDb25z
dHJ1Y3RvcikgXAorICAgIG1hY3JvKGlzQ2FsbGFibGUpIFwKKyAgICBtYWNybyhpc0NvbnN0cnVj
dG9yKSBcCisgICAgbWFjcm8oaXNQdXJlUmVnRXhwKSBcCiAgICAgbWFjcm8oaXNTZXQpIFwKICAg
ICBtYWNybyhpc01hcCkgXAogICAgIG1hY3JvKFNldEl0ZXJhdG9yKSBcCiAgICAgbWFjcm8oc2V0
SXRlcmF0b3JOZXh0KSBcCiAgICAgbWFjcm8oTWFwSXRlcmF0b3IpIFwKICAgICBtYWNybyhtYXBJ
dGVyYXRvck5leHQpIFwKLQorICAgIG1hY3JvKHJlZ0V4cFNwbGl0TmF0aXZlKSBcCisgICAgbWFj
cm8oc3RyaW5nU3BsaXROYXRpdmUpIFwKIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShy
ZXZpc2lvbiAxOTg4OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDksIDIwMTQtMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2FtZXJvbiBa
d2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDUs
NiArNDUsNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRGVidWdnZXJTY29w
ZS5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkVDTUFTY3JpcHRT
cGVjSW50ZXJuYWxGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVy
cm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgpAQCAtNTk0LDcg
KzU5NSw2IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXIKICAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnBy
b21pc2VSZWFjdGlvbkpvYlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5G
dW5jdGlvbih2bSwgcHJvbWlzZU9wZXJhdGlvbnNQcm9taXNlUmVhY3Rpb25Kb2JDb2RlR2VuZXJh
dG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnBy
b21pc2VSZXNvbHZlVGhlbmFibGVKb2JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVC
dWlsdGluRnVuY3Rpb24odm0sIHByb21pc2VPcGVyYXRpb25zUHJvbWlzZVJlc29sdmVUaGVuYWJs
ZUpvYkNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uUHJpdmF0ZU5hbWUoKSwgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKSkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hZHZh
bmNlU3RyaW5nSW5kZXhVbmljb2RlUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVp
bHRpbkZ1bmN0aW9uKHZtLCByZWdFeHBQcm90b3R5cGVBZHZhbmNlU3RyaW5nSW5kZXhVbmljb2Rl
Q29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5NYXBQcml2
YXRlTmFtZSwgbWFwQ29uc3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvclJlc3VtZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1
aWx0aW5GdW5jdGlvbih2bSwgZ2VuZXJhdG9yUHJvdG90eXBlR2VuZXJhdG9yUmVzdW1lQ29kZUdl
bmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS50aGlzVGltZVZhbHVlUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUaGlzVGltZVZhbHVlLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCkBAIC02MDMsNiArNjAzLDE5IEBAIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXIKICAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkRhdGVUaW1lRm9ybWF0
UHJpdmF0ZU5hbWUoKSwgaW50bC0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5EYXRl
VGltZUZvcm1hdCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLk51bWJl
ckZvcm1hdFByaXZhdGVOYW1lKCksIGludGwtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+TnVtYmVyRm9ybWF0KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogI2Vu
ZGlmIC8vIEVOQUJMRShJTlRMKQorCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5pc0NhbGxhYmxlUHJpdmF0ZU5hbWUsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMSwgU3RyaW5nKCksIGVzU3BlY0lzQ2FsbGFibGUsIE5vSW50cmluc2ljKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+aXNDb25zdHJ1Y3RvclByaXZhdGVOYW1lLCBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBlc1NwZWNJc0NvbnN0cnVjdG9yLCBOb0ludHJp
bnNpYyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmlzUHVyZVJlZ0V4cFByaXZhdGVOYW1lLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBlc1NwZWNJc1B1cmVSZWdF
eHAsIE5vSW50cmluc2ljKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
c3BlY2llc0NvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRp
bkZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3RTcGVjaWVzQ29uc3RydWN0b3JDb2RlR2VuZXJhdG9y
KHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKworICAgICAg
ICAvLyBSZWdFeHAucHJvdG90eXBlIGhlbHBlcnMuCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hZHZhbmNlU3RyaW5nSW5kZXhQcml2
YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlZ0V4cFBy
b3RvdHlwZUFkdmFuY2VTdHJpbmdJbmRleENvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhwRXhlY1ByaXZhdGVOYW1lKCks
IEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVnRXhwUHJvdG90eXBlUmVn
RXhwRXhlY0NvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
cmVnRXhwU3BsaXROYXRpdmVQcml2YXRlTmFtZSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlz
LCAyLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jU3BsaXROYXRpdmUpLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSksCisKKyAgICAgICAgLy8gU3RyaW5nLnByb3RvdHlwZSBoZWxw
ZXJzLgorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+c3RyaW5n
U3BsaXROYXRpdmVQcml2YXRlTmFtZSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBT
dHJpbmcoKSwgc3RyaW5nUHJvdG9GdW5jU3BsaXROYXRpdmUpLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSksCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2Jh
bHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9uIDE5ODg5
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAw
MCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNywgMjAwOCwgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDgsIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtOTMsNiArOTMsOCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwT2JqZWN0LCBt
X2xhc3RJbmRleElzV3JpdGFibGUpOwogICAgIH0KIAorICAgIHN0YXRpYyB1bnNpZ25lZCBhZHZh
bmNlU3RyaW5nVW5pY29kZShTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgY3VycmVu
dEluZGV4KTsKKwogcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ0V4cE9iamVj
dChWTSYsIFN0cnVjdHVyZSosIFJlZ0V4cCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mKTsKQEAgLTEwNCw3ICsxMDYsNiBAQCBwcm90ZWN0ZWQ6CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9y
JiwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgdW5zaWduZWQgYWR2YW5jZVN0cmluZ1VuaWNvZGUo
U3RyaW5nLCB1bnNpZ25lZCwgdW5zaWduZWQpOwogCiBwcml2YXRlOgogICAgIE1hdGNoUmVzdWx0
IG1hdGNoSW5saW5lKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMTk4ODk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNy0yMDA4LCAyMDE2
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAg
LTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgogI2luY2x1ZGUgIlJlZ0V4
cENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiUmVnRXhwTWF0Y2hlc0FycmF5LmgiCisjaW5jbHVk
ZSAiU3RyaW5nT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTgxLDYgKzgyLDcgQEAgdm9pZCBSZWdFeHBQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJgogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hdGNoUHJpdmF0ZU5hbWUo
KSwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hQcml2YXRlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSwgMSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPm1hdGNoU3ltYm9sLCByZWdFeHBQcm90b3R5cGVNYXRjaENvZGVH
ZW5lcmF0b3IsIERvbnRFbnVtKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zZWFyY2hTeW1ib2wsIHJlZ0V4cFByb3RvRnVuY1Nl
YXJjaCwgRG9udEVudW0sIDEpOworICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zcGxpdFN5bWJvbCwgcmVnRXhwUHJvdG90eXBlU3Bs
aXRDb2RlR2VuZXJhdG9yLCBEb250RW51bSk7CiAKICAgICBKU0Z1bmN0aW9uKiBleGVjRnVuY3Rp
b24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgdm0ucHJvcGVydHlO
YW1lcy0+ZXhlYy5zdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jRXhlYywgUmVnRXhwRXhlY0ludHJp
bnNpYyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmV4ZWNQcml2YXRlTmFtZSwgZXhlY0Z1bmN0aW9uLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSk7CkBAIC00MzQsNCArNDM2LDE2NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZ0V4cFByb3RvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQgPyBq
c051bWJlcihyZXN1bHQuc3RhcnQpIDoganNOdW1iZXIoLTEpKTsKIH0KIAorc3RhdGljIGlubGlu
ZSB1bnNpZ25lZCBhZHZhbmNlU3RyaW5nSW5kZXgoU3RyaW5nIHN0ciwgdW5zaWduZWQgc3RyU2l6
ZSwgdW5zaWduZWQgaW5kZXgsIGJvb2wgaXNVbmljb2RlKQoreworICAgIGlmICghaXNVbmljb2Rl
KQorICAgICAgICByZXR1cm4gKytpbmRleDsKKyAgICByZXR1cm4gUmVnRXhwT2JqZWN0OjphZHZh
bmNlU3RyaW5nVW5pY29kZShzdHIsIHN0clNpemUsIGluZGV4KTsKK30KKworLy8gRVMgMjEuMi41
LjExIFJlZ0V4cC5wcm90b3R5cGVbQEBzcGxpdF0oc3RyaW5nLCBsaW1pdCkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXROYXRpdmUoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisKKyAgICAvLyAxLiBbaGFuZGxlZCBi
eSBKUyBidWlsdGluXSBMZXQgcnggYmUgdGhlIHRoaXMgdmFsdWUuCisgICAgLy8gMi4gW2hhbmRs
ZWQgYnkgSlMgYnVpbHRpbl0gSWYgVHlwZShyeCkgaXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBl
RXJyb3IgZXhjZXB0aW9uLgorICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CisgICAgUmVnRXhwKiByZWdleHAgPSBhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdF
eHAoKTsKKworICAgIC8vIDMuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIExldCBTIGJlID8gVG9T
dHJpbmcoc3RyaW5nKS4KKyAgICBTdHJpbmcgaW5wdXQgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIEFTU0VSVCghaW5w
dXQuaXNOdWxsKCkpOworCisgICAgLy8gNC4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gTGV0IEMg
YmUgPyBTcGVjaWVzQ29uc3RydWN0b3IocngsICVSZWdFeHAlKS4KKyAgICAvLyA1LiBbaGFuZGxl
ZCBieSBKUyBidWlsdGluXSBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdz
IikpLgorICAgIC8vIDYuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIElmIGZsYWdzIGNvbnRhaW5z
ICJ1IiwgbGV0IHVuaWNvZGVNYXRjaGluZyBiZSB0cnVlLgorICAgIC8vIDcuIFtoYW5kbGVkIGJ5
IEpTIGJ1aWx0aW5dIEVsc2UsIGxldCB1bmljb2RlTWF0Y2hpbmcgYmUgZmFsc2UuCisgICAgLy8g
OC4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gSWYgZmxhZ3MgY29udGFpbnMgInkiLCBsZXQgbmV3
RmxhZ3MgYmUgZmxhZ3MuCisgICAgLy8gOS4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gRWxzZSwg
bGV0IG5ld0ZsYWdzIGJlIHRoZSBzdHJpbmcgdGhhdCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiBm
bGFncyBhbmQgInkiLgorICAgIC8vIDEwLiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBMZXQgc3Bs
aXR0ZXIgYmUgPyBDb25zdHJ1Y3QoQywgwqsgcngsIG5ld0ZsYWdzIMK7KS4KKyAgICAKKyAgICAv
LyAxMS4gTGV0IEEgYmUgQXJyYXlDcmVhdGUoMCkuCisgICAgLy8gMTIuIExldCBsZW5ndGhBIGJl
IDAuCisgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsK
KyAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGggPSAwOworICAgIAorICAgIC8vIDEzLiBJZiBsaW1p
dCBpcyB1bmRlZmluZWQsIGxldCBsaW0gYmUgMjMyLTE7IGVsc2UgbGV0IGxpbSBiZSA/IFRvVWlu
dDMyKGxpbWl0KS4KKyAgICBKU1ZhbHVlIGxpbWl0VmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsK
KyAgICB1bnNpZ25lZCBsaW1pdCA9IGxpbWl0VmFsdWUuaXNVbmRlZmluZWQoKSA/IDB4RkZGRkZG
RkZ1IDogbGltaXRWYWx1ZS50b1VJbnQzMihleGVjKTsKKyAgICAKKyAgICAvLyAxNC4gTGV0IHNp
emUgYmUgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBTLgorICAgIHVuc2lnbmVkIGlucHV0U2l6
ZSA9IGlucHV0Lmxlbmd0aCgpOworCisgICAgLy8gMTUuIExldCBwID0gMC4KKyAgICB1bnNpZ25l
ZCBwb3NpdGlvbiA9IDA7CisKKyAgICAvLyAxNi4gSWYgbGltID09IDAsIHJldHVybiBBLgorICAg
IGlmICghbGltaXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKwor
ICAgIC8vIDE3LiBJZiBzaXplID09IDAsIHRoZW4KKyAgICBpZiAoaW5wdXQuaXNFbXB0eSgpKSB7
CisgICAgICAgIC8vIGEuIExldCB6IGJlID8gUmVnRXhwRXhlYyhzcGxpdHRlciwgUykuCisgICAg
ICAgIC8vIGIuIElmIHogaXMgbm90IG51bGwsIHJldHVybiBBLgorICAgICAgICAvLyBjLiBQZXJm
b3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICIwIiwgUykuCisgICAgICAgIC8vIGQuIFJldHVy
biBBLgorICAgICAgICBpZiAoIXJlZ2V4cC0+bWF0Y2godm0sIGlucHV0LCAwKSkKKyAgICAgICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwganNTdHJpbmdXaXRoUmV1c2UoZXhl
YywgdGhpc1ZhbHVlLCBpbnB1dCkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CisgICAgfQorCisgICAgLy8gMTguIExldCBxID0gcC4KKyAgICB1bnNpZ25lZCBtYXRj
aFBvc2l0aW9uID0gcG9zaXRpb247CisgICAgLy8gMTkuIFJlcGVhdCwgd2hpbGUgcSA8IHNpemUK
KyAgICBib29sIHJlZ0V4cElzU3RpY2t5ID0gcmVnZXhwLT5zdGlja3koKTsKKyAgICBib29sIHJl
Z0V4cElzVW5pY29kZSA9IHJlZ2V4cC0+dW5pY29kZSgpOworICAgIHdoaWxlIChtYXRjaFBvc2l0
aW9uIDwgaW5wdXRTaXplKSB7CisgICAgICAgIFZlY3RvcjxpbnQsIDMyPiBvdmVjdG9yOworCisg
ICAgICAgIC8vIGEuIFBlcmZvcm0gPyBTZXQoc3BsaXR0ZXIsICJsYXN0SW5kZXgiLCBxLCB0cnVl
KS4KKyAgICAgICAgLy8gYi4gTGV0IHogYmUgPyBSZWdFeHBFeGVjKHNwbGl0dGVyLCBTKS4KKyAg
ICAgICAgaW50IG1wb3MgPSByZWdleHAtPm1hdGNoKHZtLCBpbnB1dCwgbWF0Y2hQb3NpdGlvbiwg
b3ZlY3Rvcik7CisKKyAgICAgICAgLy8gYy4gSWYgeiBpcyBudWxsLCBsZXQgcSBiZSBBZHZhbmNl
U3RyaW5nSW5kZXgoUywgcSwgdW5pY29kZU1hdGNoaW5nKS4KKyAgICAgICAgaWYgKG1wb3MgPCAw
KSB7CisgICAgICAgICAgICBpZiAoIXJlZ0V4cElzU3RpY2t5KQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgbWF0Y2hQb3NpdGlvbiA9IGFkdmFuY2VTdHJpbmdJbmRleChpbnB1
dCwgaW5wdXRTaXplLCBtYXRjaFBvc2l0aW9uLCByZWdFeHBJc1VuaWNvZGUpOworICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgfSBlbHNlIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bXBvcykgPj0gaW5wdXRTaXplKSB7CisgICAgICAgICAgICAvLyBUaGUgc3BlYyByZWRvZXMgdGhl
IFJlZ0V4cEV4ZWMgc3RhcnRpbmcgYXQgdGhlIG5leHQgY2hhcmFjdGVyIG9mIHRoZSBpbnB1dC4K
KyAgICAgICAgICAgIC8vIEJ1dCBpbiBvdXIgY2FzZSwgbXBvcyA8IDAgbWVhbnMgdGhhdCB0aGUg
bmF0aXZlIHJlZ2V4cCBhbHJlYWR5IHNlYXJjaGVkIGFsbCBwZXJtdXRhdGlvbnMKKyAgICAgICAg
ICAgIC8vIGFuZCBrbm93IHRoYXQgd2Ugd29uJ3QgYmUgYWJsZSB0byBmaW5kIGEgbWF0Y2ggZm9y
IHRoZSBzZXBhcmF0b3IgZXZlbiBpZiB3ZSByZWRvIHRoZQorICAgICAgICAgICAgLy8gUmVnRXhw
RXhlYyBzdGFydGluZyBhdCB0aGUgbmV4dCBjaGFyYWN0ZXIgb2YgdGhlIGlucHV0LiBTbywganVz
dCBiYWlsLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBkLiBF
bHNlLCB6IGlzIG5vdCBudWxsCisgICAgICAgIC8vICAgIGkuIExldCBlIGJlID8gVG9MZW5ndGgo
PyBHZXQoc3BsaXR0ZXIsICJsYXN0SW5kZXgiKSkuCisgICAgICAgIC8vICAgaWkuIExldCBlIGJl
IG1pbihlLCBzaXplKS4KKyAgICAgICAgbWF0Y2hQb3NpdGlvbiA9IG1wb3M7CisgICAgICAgIHVu
c2lnbmVkIG1hdGNoRW5kID0gb3ZlY3RvclsxXTsKKworICAgICAgICAvLyAgaWlpLiBJZiBlID0g
cCwgbGV0IHEgYmUgQWR2YW5jZVN0cmluZ0luZGV4KFMsIHEsIHVuaWNvZGVNYXRjaGluZykuCisg
ICAgICAgIGlmIChtYXRjaEVuZCA9PSBwb3NpdGlvbikgeworICAgICAgICAgICAgbWF0Y2hQb3Np
dGlvbiA9IGFkdmFuY2VTdHJpbmdJbmRleChpbnB1dCwgaW5wdXRTaXplLCBtYXRjaFBvc2l0aW9u
LCByZWdFeHBJc1VuaWNvZGUpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAg
ICAgICAgLy8gaWYgbWF0Y2hFbmQgPT0gMCB0aGVuIHBvc2l0aW9uIHNob3VsZCBhbHNvIGJlIHpl
cm8gYW5kIHRodXMgbWF0Y2hFbmQgc2hvdWxkIGVxdWFsIHBvc2l0aW9uLgorICAgICAgICBBU1NF
UlQobWF0Y2hFbmQpOworCisgICAgICAgIC8vICAgaXYuIEVsc2UgZSAhPSBwLAorICAgICAgICB7
CisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkNhcHR1cmVzID0gcmVnZXhwLT5udW1TdWJw
YXR0ZXJucygpOworICAgICAgICAgICAgdW5zaWduZWQgbmV3UmVzdWx0TGVuZ3RoID0gcmVzdWx0
TGVuZ3RoICsgbnVtYmVyT2ZDYXB0dXJlcyArIDE7CisgICAgICAgICAgICBpZiAobmV3UmVzdWx0
TGVuZ3RoIDwgbnVtYmVyT2ZDYXB0dXJlcyB8fCBuZXdSZXN1bHRMZW5ndGggPj0gTUFYX1NUT1JB
R0VfVkVDVE9SX0lOREVYKSB7CisgICAgICAgICAgICAgICAgLy8gTGV0J3MgY29uc2lkZXIgd2hh
dCdzIGJlc3QgZm9yIHVzZXJzIGhlcmUuIFdlJ3JlIGFib3V0IHRvIGluY3JlYXNlIHRoZSBsZW5n
dGggb2YKKyAgICAgICAgICAgICAgICAvLyB0aGUgc3BsaXQgYXJyYXkgYmV5b25kIHRoZSBtYXhp
bXVtIGxlbmd0aCB0aGF0IHdlIGNhbiBzdXBwb3J0IGVmZmljaWVudGx5LiBUaGlzCisgICAgICAg
ICAgICAgICAgLy8gd2lsbCBjYXVzZSB1cyB0byB1c2UgYSBIYXNoTWFwIGZvciB0aGUgbmV3IGVu
dHJpZXMgYWZ0ZXIgdGhpcyBwb2ludC4gVGhhdCdzIGdvaW5nCisgICAgICAgICAgICAgICAgLy8g
dG8gcmVzdWx0IGluIGEgdmVyeSBsb25nIHJ1bm5pbmcgdGltZSBvZiB0aGlzIGZ1bmN0aW9uIGFu
ZCB2ZXJ5IGxhcmdlIG1lbW9yeQorICAgICAgICAgICAgICAgIC8vIHVzYWdlLiBJbiBteSBleHBl
cmltZW50cywgSlNDIHdpbGwgc2l0IHNwaW5uaW5nIGZvciBtaW51dGVzIGFmdGVyIGdldHRpbmcg
aGVyZSBhbmQKKyAgICAgICAgICAgICAgICAvLyBpdCB3YXMgdXNpbmcgPjRHQiBvZiBtZW1vcnkg
YW5kIGV2ZW50dWFsbHkgZ3JldyB0byA4R0IuIEl0IGtlcHQgcnVubmluZyB3aXRob3V0CisgICAg
ICAgICAgICAgICAgLy8gZmluaXNoaW5nIHVudGlsIEkga2lsbGVkIGl0LiBUaGF0J3MgcHJvYmFi
bHkgbm90IHdoYXQgdGhlIHVzZXIgd2FudGVkLiBUaGUgdXNlciwKKyAgICAgICAgICAgICAgICAv
LyBvciB0aGUgcHJvZ3JhbSB0aGF0IHRoZSB1c2VyIGlzIHJ1bm5pbmcsIHByb2JhYmx5IG1hZGUg
YSBtaXN0YWtlIGJ5IGNhbGxpbmcgdGhpcworICAgICAgICAgICAgICAgIC8vIG1ldGhvZCBpbiBz
dWNoIGEgd2F5IHRoYXQgaXQgcmVzdWx0ZWQgaW4gc3VjaCBhbiBvYm5veGlvdXMgYXJyYXkuIFRo
ZXJlZm9yZSwgdG8KKyAgICAgICAgICAgICAgICAvLyBwcm90ZWN0IG91cnNlbHZlcywgd2UgYmFp
bCBhdCB0aGlzIHBvaW50LgorICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyAxLiBMZXQg
VCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGlu
ZyBvZiB0aGUgZWxlbWVudHMgYXQgaW5kaWNlcyBwIChpbmNsdXNpdmUpIHRocm91Z2ggcSAoZXhj
bHVzaXZlKS4KKyAgICAgICAgICAgIC8vIDIuIFBlcmZvcm0gISBDcmVhdGVEYXRhUHJvcGVydHko
QSwgISBUb1N0cmluZyhsZW5ndGhBKSwgVCkuCisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVj
dEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0aCwganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBp
bnB1dCwgcG9zaXRpb24sIG1hdGNoUG9zaXRpb24gLSBwb3NpdGlvbikpOworCisgICAgICAgICAg
ICAvLyAzLiBMZXQgbGVuZ3RoQSBiZSBsZW5ndGhBICsgMS4KKyAgICAgICAgICAgIC8vIDQuIElm
IGxlbmd0aEEgPSBsaW0sIHJldHVybiBBLgorICAgICAgICAgICAgaWYgKCsrcmVzdWx0TGVuZ3Ro
ID09IGxpbWl0KQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKKworICAgICAgICAgICAgLy8gNS4gTGV0IHAgYmUgZS4KKyAgICAgICAgICAgIHBvc2l0aW9u
ID0gbWF0Y2hFbmQ7CisKKyAgICAgICAgICAgIC8vIDYuIExldCBudW1iZXJPZkNhcHR1cmVzIGJl
ID8gVG9MZW5ndGgoPyBHZXQoeiwgImxlbmd0aCIpKS4KKyAgICAgICAgICAgIC8vIDcuIExldCBu
dW1iZXJPZkNhcHR1cmVzIGJlIG1heChudW1iZXJPZkNhcHR1cmVzLTEsIDApLgorICAgICAgICAg
ICAgLy8gOC4gTGV0IGkgYmUgMS4KKyAgICAgICAgICAgIC8vIDkuIFJlcGVhdCwgd2hpbGUgaSA8
PSBudW1iZXJPZkNhcHR1cmVzLAorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8
PSBudW1iZXJPZkNhcHR1cmVzOyArK2kpIHsKKyAgICAgICAgICAgICAgICAvLyBhLiBMZXQgbmV4
dENhcHR1cmUgYmUgPyBHZXQoeiwgISBUb1N0cmluZyhpKSkuCisgICAgICAgICAgICAgICAgLy8g
Yi4gUGVyZm9ybSAhIENyZWF0ZURhdGFQcm9wZXJ0eShBLCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBu
ZXh0Q2FwdHVyZSkuCisgICAgICAgICAgICAgICAgaW50IHN1YiA9IG92ZWN0b3JbaSAqIDJdOwor
ICAgICAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3Ro
LCBzdWIgPCAwID8ganNVbmRlZmluZWQoKSA6IGpzU3Vic3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwg
aW5wdXQsIHN1Yiwgb3ZlY3RvcltpICogMiArIDFdIC0gc3ViKSk7CisKKyAgICAgICAgICAgICAg
ICAvLyBjLiBMZXQgaSBiZSBpICsgMS4KKyAgICAgICAgICAgICAgICAvLyBkLiBMZXQgbGVuZ3Ro
QSBiZSBsZW5ndGhBICsgMS4KKyAgICAgICAgICAgICAgICAvLyBlLiBJZiBsZW5ndGhBID0gbGlt
LCByZXR1cm4gQS4KKyAgICAgICAgICAgICAgICBpZiAoKytyZXN1bHRMZW5ndGggPT0gbGltaXQp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gMTAuIExldCBxIGJlIHAuCisgICAgICAgICAg
ICBtYXRjaFBvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyAy
MC4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNv
bnNpc3Rpbmcgb2YgdGhlIGVsZW1lbnRzIGF0IGluZGljZXMgcCAoaW5jbHVzaXZlKSB0aHJvdWdo
IHNpemUgKGV4Y2x1c2l2ZSkuCisgICAgLy8gMjEuIFBlcmZvcm0gISBDcmVhdGVEYXRhUHJvcGVy
dHkoQSwgISBUb1N0cmluZyhsZW5ndGhBKSwgVCkuCisgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRl
eChleGVjLCByZXN1bHRMZW5ndGgrKywganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1
dCwgcG9zaXRpb24sIGlucHV0U2l6ZSAtIHBvc2l0aW9uKSk7CisgICAgCisgICAgLy8gMjIuIFJl
dHVybiBBLgorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuaAkocmV2aXNpb24gMTk4ODk3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4
LDggQEAgcHJpdmF0ZToKICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwPiBtX2VtcHR5UmVnRXhwOwog
fTsKIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTcGxpdE5h
dGl2ZShFeGVjU3RhdGUqKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBSZWdF
eHBQcm90b3R5cGVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmgJKHJldmlzaW9uIDE5ODg5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQotICogIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtODEsNiArODEsMjkgQEAg
aW5saW5lIFN0cmluZ09iamVjdCogYXNTdHJpbmdPYmplY3QoSlNWYQogCiBKU19FWFBPUlRfUFJJ
VkFURSBTdHJpbmdPYmplY3QqIGNvbnN0cnVjdFN0cmluZyhWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CiAKKy8vIEhlbHBlciBmb3IgcHJvZHVjaW5nIGEgSlNTdHJpbmcgZm9yICdzdHJp
bmcnLCB3aGVyZSAnc3RyaW5nJyB3YXMgYmVlbiBwcm9kdWNlZCBieQorLy8gY2FsbGluZyBUb1N0
cmluZyBvbiAnb3JpZ2luYWxWYWx1ZScuIEluIGNhc2VzIHdoZXJlICdvcmlnaW5hbFZhbHVlJyBh
bHJlYWR5IHdhcyBhCisvLyBzdHJpbmcgcHJpbWl0aXZlIHdlIGNhbiBqdXN0IHVzZSB0aGlzLCBv
dGhlcndpc2Ugd2UgbmVlZCB0byBhbGxvY2F0ZSBhIG5ldyBKU1N0cmluZy4KK3N0YXRpYyBpbmxp
bmUgSlNTdHJpbmcqIGpzU3RyaW5nV2l0aFJldXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBv
cmlnaW5hbFZhbHVlLCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBpZiAob3JpZ2luYWxW
YWx1ZS5pc1N0cmluZygpKSB7CisgICAgICAgIEFTU0VSVChhc1N0cmluZyhvcmlnaW5hbFZhbHVl
KS0+dmFsdWUoZXhlYykgPT0gc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIGFzU3RyaW5nKG9yaWdp
bmFsVmFsdWUpOworICAgIH0KKyAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgc3RyaW5nKTsKK30K
KworLy8gSGVscGVyIHRoYXQgdHJpZXMgdG8gdXNlIHRoZSBKU1N0cmluZyBzdWJzdHJpbmcgc2hh
cmluZyBtZWNoYW5pc20gaWYgJ29yaWdpbmFsVmFsdWUnIGlzIGEgSlNTdHJpbmcuCitzdGF0aWMg
aW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb3Jp
Z2luYWxWYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKQoreworICAgIGlmIChvcmlnaW5hbFZhbHVlLmlzU3RyaW5nKCkpIHsKKyAgICAg
ICAgQVNTRVJUKGFzU3RyaW5nKG9yaWdpbmFsVmFsdWUpLT52YWx1ZShleGVjKSA9PSBzdHJpbmcp
OworICAgICAgICByZXR1cm4ganNTdWJzdHJpbmcoZXhlYywgYXNTdHJpbmcob3JpZ2luYWxWYWx1
ZSksIG9mZnNldCwgbGVuZ3RoKTsKKyAgICB9CisgICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4ZWMs
IHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gU3RyaW5nT2JqZWN0X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk4ODk3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNC0yMDA4LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxl
LCBJbmMuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDE1IEpvcmRhbiBIYXJiYW5kIChsamhhcmJAZ21h
aWwuY29tKQogICoKQEAgLTcwLDcgKzcwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90bwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNQYWRTdGFydChFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jUmVwbGFjZShFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0KEV4ZWNTdGF0ZSopOworLy9FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0SW50ZXJuYWwoRXhlY1N0
YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0
cihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jU3Vic3RyaW5nKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZShFeGVjU3RhdGUqKTsKQEAgLTExMyw2ICsxMTMsNyBA
QCBjb25zdCBDbGFzc0luZm8gU3RyaW5nUHJvdG90eXBlOjpzX2luZm8gCiAgICAgbWF0Y2ggICAg
IEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgcmVwZWF0ICAgIEpTQnVpbHRp
biAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgc2VhcmNoICAgIEpTQnVpbHRpbiAgICBEb250
RW51bXxGdW5jdGlvbiAxCisgICAgc3BsaXQgICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5j
dGlvbiAxCiBAZW5kCiAqLwogCkBAIC0xMzksNyArMTQwLDYgQEAgdm9pZCBTdHJpbmdQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJgogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKCJwYWRTdGFydCIsIHN0cmluZ1Byb3RvRnVuY1BhZFN0YXJ0LCBEb250RW51bSwg
MSk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KCJyZXBsYWNlIiwgc3RyaW5nUHJvdG9GdW5jUmVwbGFjZSwgRG9udEVudW0sIDIsIFN0cmluZ1By
b3RvdHlwZVJlcGxhY2VJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKCJzbGljZSIsIHN0cmluZ1Byb3RvRnVuY1NsaWNlLCBEb250RW51bSwgMik7
Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInNwbGl0Iiwgc3Ry
aW5nUHJvdG9GdW5jU3BsaXQsIERvbnRFbnVtLCAyKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTigic3Vic3RyIiwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyLCBEb250
RW51bSwgMik7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInN1
YnN0cmluZyIsIHN0cmluZ1Byb3RvRnVuY1N1YnN0cmluZywgRG9udEVudW0sIDIpOwogICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJ0b0xvd2VyQ2FzZSIsIHN0cmlu
Z1Byb3RvRnVuY1RvTG93ZXJDYXNlLCBEb250RW51bSwgMCk7CkBAIC0xOTUsMjggKzE5NSw2IEBA
IGJvb2wgU3RyaW5nUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi0vLyBIZWxwZXIgZm9yIHByb2R1Y2luZyBhIEpTU3RyaW5nIGZvciAnc3RyaW5nJywgd2hl
cmUgJ3N0cmluZycgd2FzIGJlZW4gcHJvZHVjZWQgYnkKLS8vIGNhbGxpbmcgVG9TdHJpbmcgb24g
J29yaWdpbmFsVmFsdWUnLiBJbiBjYXNlcyB3aGVyZSAnb3JpZ2luYWxWYWx1ZScgYWxyZWFkeSB3
YXMgYQotLy8gc3RyaW5nIHByaW1pdGl2ZSB3ZSBjYW4ganVzdCB1c2UgdGhpcywgb3RoZXJ3aXNl
IHdlIG5lZWQgdG8gYWxsb2NhdGUgYSBuZXcgSlNTdHJpbmcuCi1zdGF0aWMgaW5saW5lIEpTU3Ry
aW5nKiBqc1N0cmluZ1dpdGhSZXVzZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb3JpZ2luYWxW
YWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgaWYgKG9yaWdpbmFsVmFsdWUuaXNT
dHJpbmcoKSkgewotICAgICAgICBBU1NFUlQoYXNTdHJpbmcob3JpZ2luYWxWYWx1ZSktPnZhbHVl
KGV4ZWMpID09IHN0cmluZyk7Ci0gICAgICAgIHJldHVybiBhc1N0cmluZyhvcmlnaW5hbFZhbHVl
KTsKLSAgICB9Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHN0cmluZyk7Ci19Ci0KLS8vIEhl
bHBlciB0aGF0IHRyaWVzIHRvIHVzZSB0aGUgSlNTdHJpbmcgc3Vic3RyaW5nIHNoYXJpbmcgbWVj
aGFuaXNtIGlmICdvcmlnaW5hbFZhbHVlJyBpcyBhIEpTU3RyaW5nLgotc3RhdGljIGlubGluZSBK
U1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9yaWdpbmFsVmFs
dWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKLXsKLSAgICBpZiAob3JpZ2luYWxWYWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIEFTU0VS
VChhc1N0cmluZyhvcmlnaW5hbFZhbHVlKS0+dmFsdWUoZXhlYykgPT0gc3RyaW5nKTsKLSAgICAg
ICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4ZWMsIGFzU3RyaW5nKG9yaWdpbmFsVmFsdWUpLCBvZmZz
ZXQsIGxlbmd0aCk7Ci0gICAgfQotICAgIHJldHVybiBqc1N1YnN0cmluZyhleGVjLCBzdHJpbmcs
IG9mZnNldCwgbGVuZ3RoKTsKLX0KLQogc3RhdGljIE5FVkVSX0lOTElORSBTdHJpbmcgc3Vic3Rp
dHV0ZUJhY2tyZWZlcmVuY2VzU2xvdyhTdHJpbmdWaWV3IHJlcGxhY2VtZW50LCBTdHJpbmdWaWV3
IHNvdXJjZSwgY29uc3QgaW50KiBvdmVjdG9yLCBSZWdFeHAqIHJlZywgc2l6ZV90IGkpCiB7CiAg
ICAgU3RyaW5nQnVpbGRlciBzdWJzdGl0dXRlZFJlcGxhY2VtZW50OwpAQCAtMTE3MCwxNjkgKzEx
NDgsNTggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBzcGxpdFN0cmluZ0J5TwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotLy8gRVMgNS4xIC0gMTUuNS40LjE0IFN0cmluZy5wcm90b3R5cGUu
c3BsaXQgKHNlcGFyYXRvciwgbGltaXQpCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY1NwbGl0KEV4ZWNTdGF0ZSogZXhlYykKKy8vIEVTIDIxLjEuMy4xNyBTdHJp
bmcucHJvdG90eXBlLnNwbGl0KHNlcGFyYXRvciwgbGltaXQpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0TmF0aXZlKEV4ZWNTdGF0ZSogZXhlYykKIHsK
LSAgICAvLyAxLiBDYWxsIENoZWNrT2JqZWN0Q29lcmNpYmxlIHBhc3NpbmcgdGhlIHRoaXMgdmFs
dWUgYXMgaXRzIGFyZ3VtZW50LgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7Ci0gICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBBU1NFUlQoY2hlY2tPYmplY3RD
b2VyY2libGUodGhpc1ZhbHVlKSk7CiAKLSAgICAvLyAyLiBMZXQgUyBiZSB0aGUgcmVzdWx0IG9m
IGNhbGxpbmcgVG9TdHJpbmcsIGdpdmluZyBpdCB0aGUgdGhpcyB2YWx1ZSBhcyBpdHMgYXJndW1l
bnQuCi0gICAgLy8gNi4gTGV0IHMgYmUgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIFMuCisg
ICAgLy8gMy4gTGV0IFMgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvU3RyaW5nLCBnaXZpbmcg
aXQgdGhlIHRoaXMgdmFsdWUgYXMgaXRzIGFyZ3VtZW50LgorICAgIC8vIDcuIExldCBzIGJlIHRo
ZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBTLgogICAgIFN0cmluZyBpbnB1dCA9IHRoaXNWYWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IEFTU0VSVCghaW5wdXQuaXNOdWxsKCkpOwogCi0gICAgLy8gMy4gTGV0IEEgYmUgYSBuZXcgYXJy
YXkgY3JlYXRlZCBhcyBpZiBieSB0aGUgZXhwcmVzc2lvbiBuZXcgQXJyYXkoKQorICAgIC8vIDQu
IExldCBBIGJlIGEgbmV3IGFycmF5IGNyZWF0ZWQgYXMgaWYgYnkgdGhlIGV4cHJlc3Npb24gbmV3
IEFycmF5KCkKICAgICAvLyAgICB3aGVyZSBBcnJheSBpcyB0aGUgc3RhbmRhcmQgYnVpbHQtaW4g
Y29uc3RydWN0b3Igd2l0aCB0aGF0IG5hbWUuCiAgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShleGVjLCAwKTsKIAotICAgIC8vIDQuIExldCBsZW5ndGhBIGJlIDAuCisg
ICAgLy8gNS4gTGV0IGxlbmd0aEEgYmUgMC4KICAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGggPSAw
OwogCi0gICAgLy8gNS4gSWYgbGltaXQgaXMgdW5kZWZpbmVkLCBsZXQgbGltID0gMl4zMi0xOyBl
bHNlIGxldCBsaW0gPSBUb1VpbnQzMihsaW1pdCkuCisgICAgLy8gNi4gSWYgbGltaXQgaXMgdW5k
ZWZpbmVkLCBsZXQgbGltID0gMl4zMi0xOyBlbHNlIGxldCBsaW0gPSBUb1VpbnQzMihsaW1pdCku
CiAgICAgSlNWYWx1ZSBsaW1pdFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgdW5zaWdu
ZWQgbGltaXQgPSBsaW1pdFZhbHVlLmlzVW5kZWZpbmVkKCkgPyAweEZGRkZGRkZGdSA6IGxpbWl0
VmFsdWUudG9VSW50MzIoZXhlYyk7CiAKLSAgICAvLyA3LiBMZXQgcCA9IDAuCisgICAgLy8gOC4g
TGV0IHAgPSAwLgogICAgIHNpemVfdCBwb3NpdGlvbiA9IDA7CiAKLSAgICAvLyA4LiBJZiBzZXBh
cmF0b3IgaXMgYSBSZWdFeHAgb2JqZWN0IChpdHMgW1tDbGFzc11dIGlzICJSZWdFeHAiKSwgbGV0
IFIgPSBzZXBhcmF0b3I7CisgICAgLy8gOS4gSWYgc2VwYXJhdG9yIGlzIGEgUmVnRXhwIG9iamVj
dCAoaXRzIFtbQ2xhc3NdXSBpcyAiUmVnRXhwIiksIGxldCBSID0gc2VwYXJhdG9yOwogICAgIC8v
ICAgIG90aGVyd2lzZSBsZXQgUiA9IFRvU3RyaW5nKHNlcGFyYXRvcikuCiAgICAgSlNWYWx1ZSBz
ZXBhcmF0b3JWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGlmIChzZXBhcmF0b3JWYWx1
ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpIHsKLSAgICAgICAgVk0qIHZtID0gJmV4
ZWMtPnZtKCk7Ci0gICAgICAgIFJlZ0V4cCogcmVnID0gYXNSZWdFeHBPYmplY3Qoc2VwYXJhdG9y
VmFsdWUpLT5yZWdFeHAoKTsKLQotICAgICAgICAvLyA5LiBJZiBsaW0gPT0gMCwgcmV0dXJuIEEu
Ci0gICAgICAgIGlmICghbGltaXQpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7Ci0KLSAgICAgICAgLy8gMTAuIElmIHNlcGFyYXRvciBpcyB1bmRlZmluZWQsIHRo
ZW4KLSAgICAgICAgaWYgKHNlcGFyYXRvclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAg
ICAgIC8vIGEuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qg
b2YgQSB3aXRoIGFyZ3VtZW50cyAiMCIsCi0gICAgICAgICAgICAvLyAgICBQcm9wZXJ0eSBEZXNj
cmlwdG9yIHtbW1ZhbHVlXV06IFMsIFtbV3JpdGFibGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06
IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IHRydWV9LCBhbmQgZmFsc2UuCi0gICAgICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIDAsIGpzU3RyaW5nV2l0aFJldXNlKGV4ZWMsIHRo
aXNWYWx1ZSwgaW5wdXQpKTsKLSAgICAgICAgICAgIC8vIGIuIFJldHVybiBBLgotICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gMTEuIElmIHMgPT0gMCwgdGhlbgotICAgICAgICBpZiAoaW5wdXQuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICAvLyBhLiBDYWxsIFNwbGl0TWF0Y2goUywgMCwgUikgYW5kIGxldCB6IGJlIGl0
cyBNYXRjaFJlc3VsdCByZXN1bHQuCi0gICAgICAgICAgICAvLyBiLiBJZiB6IGlzIG5vdCBmYWls
dXJlLCByZXR1cm4gQS4KLSAgICAgICAgICAgIC8vIGMuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJv
cGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50cyAiMCIsCi0gICAgICAg
ICAgICAvLyAgICBQcm9wZXJ0eSBEZXNjcmlwdG9yIHtbW1ZhbHVlXV06IFMsIFtbV3JpdGFibGVd
XTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IHRydWV9LCBh
bmQgZmFsc2UuCi0gICAgICAgICAgICAvLyBkLiBSZXR1cm4gQS4KLSAgICAgICAgICAgIGlmICgh
cmVnLT5tYXRjaCgqdm0sIGlucHV0LCAwKSkKLSAgICAgICAgICAgICAgICByZXN1bHQtPnB1dERp
cmVjdEluZGV4KGV4ZWMsIDAsIGpzU3RyaW5nV2l0aFJldXNlKGV4ZWMsIHRoaXNWYWx1ZSwgaW5w
dXQpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIDEyLiBMZXQgcSA9IHAuCi0gICAgICAgIHNpemVfdCBtYXRjaFBv
c2l0aW9uID0gMDsKLSAgICAgICAgLy8gMTMuIFJlcGVhdCwgd2hpbGUgcSAhPSBzCi0gICAgICAg
IHdoaWxlIChtYXRjaFBvc2l0aW9uIDwgaW5wdXQubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIC8v
IGEuIENhbGwgU3BsaXRNYXRjaChTLCBxLCBSKSBhbmQgbGV0IHogYmUgaXRzIE1hdGNoUmVzdWx0
IHJlc3VsdC4KLSAgICAgICAgICAgIFZlY3RvcjxpbnQsIDMyPiBvdmVjdG9yOwotICAgICAgICAg
ICAgaW50IG1wb3MgPSByZWctPm1hdGNoKCp2bSwgaW5wdXQsIG1hdGNoUG9zaXRpb24sIG92ZWN0
b3IpOwotCi0gICAgICAgICAgICAvLyBiLiBJZiB6IGlzIGEgZmFpbHVyZSB0aGVuIHdlIGNhbiBi
cmVhayBiZWNhdXNlIHRoZXJlIGFyZSBubyBtYXRjaGVzCi0gICAgICAgICAgICBpZiAobXBvcyA8
IDApCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBtYXRjaFBvc2l0aW9uID0g
bXBvczsKLQotICAgICAgICAgICAgLy8gaWYgdGhlIG1hdGNoIGlzIHRoZSBlbXB0eSBtYXRjaCBh
dCB0aGUgZW5kLCBicmVhay4KLSAgICAgICAgICAgIGlmIChtYXRjaFBvc2l0aW9uID49IGlucHV0
Lmxlbmd0aCgpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAvLyBjLiBF
bHNlLCB6IGlzIG5vdCBmYWlsdXJlCi0gICAgICAgICAgICAvLyBpLiB6IG11c3QgYmUgYSBTdGF0
ZS4gTGV0IGUgYmUgeidzIGVuZEluZGV4IGFuZCBsZXQgY2FwIGJlIHoncyBjYXB0dXJlcyBhcnJh
eS4KLSAgICAgICAgICAgIHNpemVfdCBtYXRjaEVuZCA9IG92ZWN0b3JbMV07Ci0KLSAgICAgICAg
ICAgIC8vIGlpLiBJZiBlID09IHAsIHRoZW4gbGV0IHEgPSBxICsgMS4KLSAgICAgICAgICAgIGlm
IChtYXRjaEVuZCA9PSBwb3NpdGlvbikgewotICAgICAgICAgICAgICAgICsrbWF0Y2hQb3NpdGlv
bjsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IC8vIGlpaS4gaWYgbWF0Y2hFbmQgPT0gMCB0aGVuIHBvc2l0aW9uIHNob3VsZCBhbHNvIGJlIHpl
cm8gYW5kIHRodXMgbWF0Y2hFbmQgc2hvdWxkIGVxdWFsIHBvc2l0aW9uLgotICAgICAgICAgICAg
QVNTRVJUKG1hdGNoRW5kKTsKLQotICAgICAgICAgICAgLy8gaWlpLiBFbHNlLCBlICE9IHAKLQot
ICAgICAgICAgICAgLy8gMS4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1
YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYXQgcG9zaXRpb25zIHAg
KGluY2x1c2l2ZSkKLSAgICAgICAgICAgIC8vICAgIHRocm91Z2ggcSAoZXhjbHVzaXZlKS4KLSAg
ICAgICAgICAgIC8vIDIuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBt
ZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50cyBUb1N0cmluZyhsZW5ndGhBKSwKLSAgICAgICAgICAg
IC8vICAgIFByb3BlcnR5IERlc2NyaXB0b3Ige1tbVmFsdWVdXTogVCwgW1tXcml0YWJsZV1dOiB0
cnVlLCBbW0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZX0sIGFuZCBm
YWxzZS4KLSAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVu
Z3RoLCBqc1N1YnN0cmluZyhleGVjLCB0aGlzVmFsdWUsIGlucHV0LCBwb3NpdGlvbiwgbWF0Y2hQ
b3NpdGlvbiAtIHBvc2l0aW9uKSk7Ci0KLSAgICAgICAgICAgIC8vIDMuIEluY3JlbWVudCBsZW5n
dGhBIGJ5IDEuCi0gICAgICAgICAgICAvLyA0LiBJZiBsZW5ndGhBID09IGxpbSwgcmV0dXJuIEEu
Ci0gICAgICAgICAgICArK3Jlc3VsdExlbmd0aDsKLSAgICAgICAgICAgIGlmIChyZXN1bHRMZW5n
dGggPT0gbGltaXQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwotICAgICAgICAgICAgaWYgKHJlc3VsdExlbmd0aCA+PSBNQVhfU1RPUkFHRV9WRUNUT1Jf
SU5ERVgpIHsKLSAgICAgICAgICAgICAgICAvLyBMZXQncyBjb25zaWRlciB3aGF0J3MgYmVzdCBm
b3IgdXNlcnMgaGVyZS4gV2UncmUgYWJvdXQgdG8gaW5jcmVhc2UgdGhlIGxlbmd0aCBvZgotICAg
ICAgICAgICAgICAgIC8vIHRoZSBzcGxpdCBhcnJheSBiZXlvbmQgdGhlIG1heGltdW0gbGVuZ3Ro
IHRoYXQgd2UgY2FuIHN1cHBvcnQgZWZmaWNpZW50bHkuIFRoaXMKLSAgICAgICAgICAgICAgICAv
LyB3aWxsIGNhdXNlIHVzIHRvIHVzZSBhIEhhc2hNYXAgZm9yIHRoZSBuZXcgZW50cmllcyBhZnRl
ciB0aGlzIHBvaW50LiBUaGF0J3MgZ29pbmcKLSAgICAgICAgICAgICAgICAvLyB0byByZXN1bHQg
aW4gYSB2ZXJ5IGxvbmcgcnVubmluZyB0aW1lIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHZlcnkgbGFy
Z2UgbWVtb3J5Ci0gICAgICAgICAgICAgICAgLy8gdXNhZ2UuIEluIG15IGV4cGVyaW1lbnRzLCBK
U0Mgd2lsbCBzaXQgc3Bpbm5pbmcgZm9yIG1pbnV0ZXMgYWZ0ZXIgZ2V0dGluZyBoZXJlIGFuZAot
ICAgICAgICAgICAgICAgIC8vIGl0IHdhcyB1c2luZyA+NEdCIG9mIG1lbW9yeSBhbmQgZXZlbnR1
YWxseSBncmV3IHRvIDhHQi4gSXQga2VwdCBydW5uaW5nIHdpdGhvdXQKLSAgICAgICAgICAgICAg
ICAvLyBmaW5pc2hpbmcgdW50aWwgSSBraWxsZWQgaXQuIFRoYXQncyBwcm9iYWJseSBub3Qgd2hh
dCB0aGUgdXNlciB3YW50ZWQuIFRoZSB1c2VyLAotICAgICAgICAgICAgICAgIC8vIG9yIHRoZSBw
cm9ncmFtIHRoYXQgdGhlIHVzZXIgaXMgcnVubmluZywgcHJvYmFibHkgbWFkZSBhIG1pc3Rha2Ug
YnkgY2FsbGluZyB0aGlzCi0gICAgICAgICAgICAgICAgLy8gbWV0aG9kIGluIHN1Y2ggYSB3YXkg
dGhhdCBpdCByZXN1bHRlZCBpbiBzdWNoIGFuIG9ibm94aW91cyBhcnJheS4gVGhlcmVmb3JlLCB0
bwotICAgICAgICAgICAgICAgIC8vIHByb3RlY3Qgb3Vyc2VsdmVzLCB3ZSBiYWlsIGF0IHRoaXMg
cG9pbnQuCi0gICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIDUuIExldCBwID0gZS4KLSAgICAgICAgICAgIC8v
IDguIExldCBxID0gcC4KLSAgICAgICAgICAgIHBvc2l0aW9uID0gbWF0Y2hFbmQ7Ci0gICAgICAg
ICAgICBtYXRjaFBvc2l0aW9uID0gbWF0Y2hFbmQ7Ci0KLSAgICAgICAgICAgIC8vIDYuIExldCBp
ID0gMC4KLSAgICAgICAgICAgIC8vIDcuIFJlcGVhdCwgd2hpbGUgaSBpcyBub3QgZXF1YWwgdG8g
dGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBjYXAuCi0gICAgICAgICAgICAvLyAgYSBMZXQgaSA9
IGkgKyAxLgotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSByZWctPm51bVN1
YnBhdHRlcm5zKCk7ICsraSkgewotICAgICAgICAgICAgICAgIC8vIGIgQ2FsbCB0aGUgW1tEZWZp
bmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBBIHdpdGggYXJndW1lbnRzCi0gICAg
ICAgICAgICAgICAgLy8gICBUb1N0cmluZyhsZW5ndGhBKSwgUHJvcGVydHkgRGVzY3JpcHRvciB7
W1tWYWx1ZV1dOiBjYXBbaV0sIFtbV3JpdGFibGVdXToKLSAgICAgICAgICAgICAgICAvLyAgIHRy
dWUsIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlfSwgYW5kIGZh
bHNlLgotICAgICAgICAgICAgICAgIGludCBzdWIgPSBvdmVjdG9yW2kgKiAyXTsKLSAgICAgICAg
ICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0aCwgc3ViIDwg
MCA/IGpzVW5kZWZpbmVkKCkgOiBqc1N1YnN0cmluZyhleGVjLCB0aGlzVmFsdWUsIGlucHV0LCBz
dWIsIG92ZWN0b3JbaSAqIDIgKyAxXSAtIHN1YikpOwotICAgICAgICAgICAgICAgIC8vIGMgSW5j
cmVtZW50IGxlbmd0aEEgYnkgMS4KLSAgICAgICAgICAgICAgICAvLyBkIElmIGxlbmd0aEEgPT0g
bGltLCByZXR1cm4gQS4KLSAgICAgICAgICAgICAgICBpZiAoKytyZXN1bHRMZW5ndGggPT0gbGlt
aXQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0gZWxzZSB7CisgICAgeyAvLyBGSVhNRTog
S2VlcGluZyB0aGlzIGluZGVudGF0aW9uIGhlcmUgdG8gbWluaW1pemUgdGhlIGRpZmYuICBXaWxs
IHVuaW5kZW50IGFuZCByZW1vdmUgdGhpcyBsYXRlci4KICAgICAgICAgU3RyaW5nIHNlcGFyYXRv
ciA9IHNlcGFyYXRvclZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgICAgICAvLyA5LiBJZiBsaW0gPT0gMCwgcmV0dXJu
IEEuCisgICAgICAgIC8vIDEwLiBJZiBsaW0gPT0gMCwgcmV0dXJuIEEuCiAgICAgICAgIGlmICgh
bGltaXQpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAKLSAg
ICAgICAgLy8gMTAuIElmIHNlcGFyYXRvciBpcyB1bmRlZmluZWQsIHRoZW4KLSAgICAgICAgSlNW
YWx1ZSBzZXBhcmF0b3JWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgICAgICAvLyAxMS4g
SWYgc2VwYXJhdG9yIGlzIHVuZGVmaW5lZCwgdGhlbgogICAgICAgICBpZiAoc2VwYXJhdG9yVmFs
dWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgLy8gYS4gIENhbGwgdGhlIFtbRGVmaW5l
T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50cyAiMCIsCi0g
ICAgICAgICAgICAvLyAgICAgUHJvcGVydHkgRGVzY3JpcHRvciB7W1tWYWx1ZV1dOiBTLCBbW1dy
aXRhYmxlXV06IHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0
cnVlfSwgYW5kIGZhbHNlLgogICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVj
LCAwLCBqc1N0cmluZ1dpdGhSZXVzZShleGVjLCB0aGlzVmFsdWUsIGlucHV0KSk7CiAgICAgICAg
ICAgICAvLyBiLiAgUmV0dXJuIEEuCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyAxMS4gSWYgcyA9PSAwLCB0aGVuCisg
ICAgICAgIC8vIDEyLiBJZiBzID09IDAsIHRoZW4KICAgICAgICAgaWYgKGlucHV0LmlzRW1wdHko
KSkgewotICAgICAgICAgICAgLy8gYS4gQ2FsbCBTcGxpdE1hdGNoKFMsIDAsIFIpIGFuZCBsZXQg
eiBiZSBpdHMgTWF0Y2hSZXN1bHQgcmVzdWx0LgotICAgICAgICAgICAgLy8gYi4gSWYgeiBpcyBu
b3QgZmFpbHVyZSwgcmV0dXJuIEEuCi0gICAgICAgICAgICAvLyBjLiBDYWxsIHRoZSBbW0RlZmlu
ZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVudHMgIjAiLAot
ICAgICAgICAgICAgLy8gICAgUHJvcGVydHkgRGVzY3JpcHRvciB7W1tWYWx1ZV1dOiBTLCBbW1dy
aXRhYmxlXV06IHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0
cnVlfSwgYW5kIGZhbHNlLgorICAgICAgICAgICAgLy8gYS4gTGV0IHogYmUgU3BsaXRNYXRjaChT
LCAwLCBSKSB3aGVyZSBTIGlzIGlucHV0LCBSIGlzIHNlcGFyYXRvci4KKyAgICAgICAgICAgIC8v
IGIuIElmIHogaXMgbm90IGZhbHNlLCByZXR1cm4gQS4KKyAgICAgICAgICAgIC8vIGMuIENhbGwg
Q3JlYXRlRGF0YVByb3BlcnR5KEEsICIwIiwgUykuCiAgICAgICAgICAgICAvLyBkLiBSZXR1cm4g
QS4KICAgICAgICAgICAgIGlmICghc2VwYXJhdG9yLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIDAsIGpzU3RyaW5nV2l0aFJldXNlKGV4ZWMs
IHRoaXNWYWx1ZSwgaW5wdXQpKTsKQEAgLTEzNzUsMTcgKzEyNDIsMTYgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAvLyAxMi4gTGV0IHEgPSBwLgorICAgICAgICAgICAgLy8gMTMuIExldCBx
ID0gcC4KICAgICAgICAgICAgIHNpemVfdCBtYXRjaFBvc2l0aW9uOwotICAgICAgICAgICAgLy8g
MTMuIFJlcGVhdCwgd2hpbGUgcSAhPSBzCi0gICAgICAgICAgICAvLyAgIGEuIENhbGwgU3BsaXRN
YXRjaChTLCBxLCBSKSBhbmQgbGV0IHogYmUgaXRzIE1hdGNoUmVzdWx0IHJlc3VsdC4KLSAgICAg
ICAgICAgIC8vICAgYi4gSWYgeiBpcyBmYWlsdXJlLCB0aGVuIGxldCBxID0gcSsxLgotICAgICAg
ICAgICAgLy8gICBjLiBFbHNlLCB6IGlzIG5vdCBmYWlsdXJlCisgICAgICAgICAgICAvLyAxNC4g
UmVwZWF0LCB3aGlsZSBxICE9IHMKKyAgICAgICAgICAgIC8vICAgYS4gbGV0IGUgYmUgU3BsaXRN
YXRjaChTLCBxLCBSKS4KKyAgICAgICAgICAgIC8vICAgYi4gSWYgZSBpcyBmYWlsdXJlLCB0aGVu
IGxldCBxID0gcSsxLgorICAgICAgICAgICAgLy8gICBjLiBFbHNlLCBlIGlzIGFuIGludGVnZXIg
aW5kZXggPD0gcy4KICAgICAgICAgICAgIHdoaWxlICgobWF0Y2hQb3NpdGlvbiA9IHN0cmluZ0lt
cGwtPmZpbmQoc2VwYXJhdG9ySW1wbCwgcG9zaXRpb24pKSAhPSBub3RGb3VuZCkgewogICAgICAg
ICAgICAgICAgIC8vIDEuIExldCBUIGJlIGEgU3RyaW5nIHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJz
dHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBjaGFyYWN0ZXJzIGF0IHBvc2l0aW9ucyBwIChp
bmNsdXNpdmUpCiAgICAgICAgICAgICAgICAgLy8gICAgdGhyb3VnaCBxIChleGNsdXNpdmUpLgot
ICAgICAgICAgICAgICAgIC8vIDIuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRl
cm5hbCBtZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50cyBUb1N0cmluZyhsZW5ndGhBKSwKLSAgICAg
ICAgICAgICAgICAvLyAgICBQcm9wZXJ0eSBEZXNjcmlwdG9yIHtbW1ZhbHVlXV06IFQsIFtbV3Jp
dGFibGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IHRy
dWV9LCBhbmQgZmFsc2UuCisgICAgICAgICAgICAgICAgLy8gMi4gQ2FsbCBDcmVhdGVEYXRhUHJv
cGVydHkoQSwgVG9TdHJpbmcobGVuZ3RoQSksIFQpLgogICAgICAgICAgICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoLCBqc1N1YnN0cmluZyhleGVjLCB0aGlz
VmFsdWUsIGlucHV0LCBwb3NpdGlvbiwgbWF0Y2hQb3NpdGlvbiAtIHBvc2l0aW9uKSk7CiAgICAg
ICAgICAgICAgICAgLy8gMy4gSW5jcmVtZW50IGxlbmd0aEEgYnkgMS4KICAgICAgICAgICAgICAg
ICAvLyA0LiBJZiBsZW5ndGhBID09IGxpbSwgcmV0dXJuIEEuCkBAIC0xMzkzLDE5ICsxMjU5LDE4
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogCiAgICAgICAgICAgICAg
ICAgLy8gNS4gTGV0IHAgPSBlLgotICAgICAgICAgICAgICAgIC8vIDguIExldCBxID0gcC4KKyAg
ICAgICAgICAgICAgICAvLyA2LiBMZXQgcSA9IHAuCiAgICAgICAgICAgICAgICAgcG9zaXRpb24g
PSBtYXRjaFBvc2l0aW9uICsgc2VwYXJhdG9yLmxlbmd0aCgpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgfQorICAgIH0gLy8gRklYTUU6IEtlZXBpbmcgdGhpcyBpbmRlbnRhdGlvbiBo
ZXJlIHRvIG1pbmltaXplIHRoZSBkaWZmLiAgV2lsbCB1bmluZGVudCBhbmQgcmVtb3ZlIHRoaXMg
bGF0ZXIuCiAKLSAgICAvLyAxNC4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhl
IHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYXQgcG9zaXRpb25z
IHAgKGluY2x1c2l2ZSkKKyAgICAvLyAxNS4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwg
dG8gdGhlIHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYXQgcG9z
aXRpb25zIHAgKGluY2x1c2l2ZSkKICAgICAvLyAgICAgdGhyb3VnaCBzIChleGNsdXNpdmUpLgot
ICAgIC8vIDE1LiBDYWxsIHRoZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9k
IG9mIEEgd2l0aCBhcmd1bWVudHMgVG9TdHJpbmcobGVuZ3RoQSksIFByb3BlcnR5IERlc2NyaXB0
b3IKLSAgICAvLyAgICAge1tbVmFsdWVdXTogVCwgW1tXcml0YWJsZV1dOiB0cnVlLCBbW0VudW1l
cmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZX0sIGFuZCBmYWxzZS4KKyAgICAv
LyAxNi4gQ2FsbCBDcmVhdGVEYXRhUHJvcGVydHkoQSwgVG9TdHJpbmcobGVuZ3RoQSksIFQpLgog
ICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoKyssIGpzU3Vic3Ry
aW5nKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQsIHBvc2l0aW9uLCBpbnB1dC5sZW5ndGgoKSAtIHBv
c2l0aW9uKSk7CiAKLSAgICAvLyAxNi4gUmV0dXJuIEEuCisgICAgLy8gMTcuIFJldHVybiBBLgog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHJldmlzaW9uIDE5
ODg5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5
OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykg
MjAwNywgMjAwOCwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMDgsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjMsNiArNjMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0CiAgICAgRXhlY1N0YXRlKiwgSlNT
dHJpbmcqIHRoaXNWYWx1ZSwgUmVnRXhwT2JqZWN0KiBzZWFyY2hWYWx1ZSwgSlNTdHJpbmcqIHJl
cGxhY2VWYWx1ZSk7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jUmVwZWF0Q2hhcmFjdGVyKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdE5hdGl2ZShFeGVjU3RhdGUqKTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwJKHJldmlz
aW9uIDE5ODg5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAkod29y
a2luZyBjb3B5KQpAQCAtMTAwNyw3ICsxMDA3LDcgQEAKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVy
bmFsX2dldF9jYWxsc19SZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zZWFyY2hdLmpzCiAgIGNtZDog
cnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfUmVnRXhw
LnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDog
cnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9jYWxsc19SZWdF
eHBfY29uc3RydWN0b3IuanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L1Byb3h5
X2ludGVybmFsX2dldF9jYWxsc19TdHJpbmcucHJvdG90eXBlLm1hdGNoLmpzCkBAIC0xMDE3LDcg
KzEwMTcsNyBAQAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX1N0cmluZy5w
cm90b3R5cGUuc2VhcmNoLmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L1By
b3h5X2ludGVybmFsX2dldF9jYWxsc19TdHJpbmcucHJvdG90eXBlLnNwbGl0LmpzCi0gIGNtZDog
cnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L1Byb3h5X2lu
dGVybmFsX2dldF9jYWxsc19TdHJpbmcucmF3LmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9jYWxsc19Ub1ByaW1pdGl2ZS5qcwpAQCAtMTA5
Myw3ICsxMDkzLDcgQEAKIC0gcGF0aDogZXM2L1JlZ0V4cC5wcm90b3R5cGVfcHJvcGVydGllc19S
ZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zZWFyY2hdLmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L1JlZ0V4cC5wcm90b3R5cGVfcHJvcGVydGllc19SZWdFeHAucHJvdG90eXBl
W1N5bWJvbC5zcGxpdF0uanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5v
cm1hbAogLSBwYXRoOiBlczYvUmVnRXhwLnByb3RvdHlwZV9wcm9wZXJ0aWVzX1JlZ0V4cFtTeW1i
b2wuc3BlY2llc10uanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUmVnRXhw
X2lzX3N1YmNsYXNzYWJsZV9jb3JyZWN0X3Byb3RvdHlwZV9jaGFpbi5qcwpAQCAtMTIxNSw5ICsx
MjE1LDkgQEAKIC0gcGF0aDogZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wuc3BlY2llc19l
eGlzdGVuY2UuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvd2VsbC1rbm93
bl9zeW1ib2xzX1N5bWJvbC5zcGVjaWVzX1JlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5q
cwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVz
Ni93ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9sLnNwbGl0LmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L3dlbGwta25vd25fc3ltYm9sc19T
eW1ib2wudG9QcmltaXRpdmUuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYv
d2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC50b1N0cmluZ1RhZy5qcwpJbmRleDogTGF5b3V0VGVz
dHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTk4ODk3KQorKysgTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3Bl
cnR5TmFtZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIFBB
U1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhFcnJvcikgaXMKIFBBU1MgZ2V0U29ydGVkT3du
UHJvcGVydHlOYW1lcyhFcnJvci5wcm90b3R5cGUpIGlzIFsnY29uc3RydWN0b3InLCAnbWVzc2Fn
ZScsICduYW1lJywgJ3RvU3RyaW5nJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhN
YXRoKSBpcyBbJ0UnLCdMTjEwJywnTE4yJywnTE9HMTBFJywnTE9HMkUnLCdQSScsJ1NRUlQxXzIn
LCdTUVJUMicsJ2FicycsJ2Fjb3MnLCdhY29zaCcsJ2FzaW4nLCdhc2luaCcsJ2F0YW4nLCdhdGFu
MicsJ2F0YW5oJywnY2JydCcsJ2NlaWwnLCdjbHozMicsJ2NvcycsJ2Nvc2gnLCdleHAnLCdleHBt
MScsJ2Zsb29yJywnZnJvdW5kJywnaHlwb3QnLCdpbXVsJywnbG9nJywnbG9nMTAnLCdsb2cxcCcs
J2xvZzInLCdtYXgnLCdtaW4nLCdwb3cnLCdyYW5kb20nLCdyb3VuZCcsJ3NpZ24nLCdzaW4nLCdz
aW5oJywnc3FydCcsJ3RhbicsJ3RhbmgnLCd0cnVuYyddCiBQQVNTIGdldFNvcnRlZE93blByb3Bl
cnR5TmFtZXMoSlNPTikgaXMgWydwYXJzZScsICdzdHJpbmdpZnknXQotUEFTUyBnZXRTb3J0ZWRP
d25Qcm9wZXJ0eU5hbWVzKFN5bWJvbCkgaXMgWydmb3InLCAnaGFzSW5zdGFuY2UnLCAnaXRlcmF0
b3InLCAna2V5Rm9yJywgJ2xlbmd0aCcsICdtYXRjaCcsICduYW1lJywgJ3Byb3RvdHlwZScsICdz
ZWFyY2gnLCAnc3BlY2llcycsICd0b1ByaW1pdGl2ZScsICd0b1N0cmluZ1RhZycsICd1bnNjb3Bh
YmxlcyddCitQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoU3ltYm9sKSBpcyBbJ2Zvcics
ICdoYXNJbnN0YW5jZScsICdpdGVyYXRvcicsICdrZXlGb3InLCAnbGVuZ3RoJywgJ21hdGNoJywg
J25hbWUnLCAncHJvdG90eXBlJywgJ3NlYXJjaCcsICdzcGVjaWVzJywgJ3NwbGl0JywgJ3RvUHJp
bWl0aXZlJywgJ3RvU3RyaW5nVGFnJywgJ3Vuc2NvcGFibGVzJ10KIFBBU1MgZ2V0U29ydGVkT3du
UHJvcGVydHlOYW1lcyhTeW1ib2wucHJvdG90eXBlKSBpcyBbJ2NvbnN0cnVjdG9yJywgJ3RvU3Ry
aW5nJywgJ3ZhbHVlT2YnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE1hcCkgaXMg
WydsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0
eU5hbWVzKE1hcC5wcm90b3R5cGUpIGlzIFsnY2xlYXInLCAnY29uc3RydWN0b3InLCAnZGVsZXRl
JywgJ2VudHJpZXMnLCAnZm9yRWFjaCcsICdnZXQnLCAnaGFzJywgJ2tleXMnLCAnc2V0JywgJ3Np
emUnLCAndmFsdWVzJ10KSW5kZXg6IExheW91dFRlc3RzL2pzL2RvbS9zdHJpbmctcHJvdG90eXBl
LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2Rv
bS9zdHJpbmctcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxOTg4
OTcpCisrKyBMYXlvdXRUZXN0cy9qcy9kb20vc3RyaW5nLXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTQsNyArMTQsNyBAQCBQQVNTIFN0cmluZy5w
cm90b3R5cGUubWF0Y2guY2FsbCh1bmRlZmluCiBQQVNTIFN0cmluZy5wcm90b3R5cGUucmVwbGFj
ZS5jYWxsKHVuZGVmaW5lZCwgLzIrLywgJy0nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgogUEFTUyBTdHJpbmcucHJvdG90eXBlLnNlYXJjaC5jYWxsKHVuZGVmaW5lZCwg
JzQnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBTdHJpbmcucHJvdG90eXBlLnNlYXJjaCBy
ZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkLgogUEFTUyBTdHJpbmcucHJvdG90
eXBlLnNsaWNlLmNhbGwodW5kZWZpbmVkLCAxLCAzKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBUeXBlIGVycm9yLgotUEFTUyBTdHJpbmcucHJvdG90eXBlLnNwbGl0LmNhbGwodW5kZWZpbmVk
LCAnMicpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIFN0cmlu
Zy5wcm90b3R5cGUuc3BsaXQuY2FsbCh1bmRlZmluZWQsICcyJykgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogU3RyaW5nLnByb3RvdHlwZS5zcGxpdCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3Qg
YmUgdW5kZWZpbmVkLgogUEFTUyBTdHJpbmcucHJvdG90eXBlLnNsaWNlLmNhbGwodW5kZWZpbmVk
LCAxLCAzKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBTdHJp
bmcucHJvdG90eXBlLnN1YnN0ci5jYWxsKHVuZGVmaW5lZCwgMSwgMykgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgU3RyaW5nLnByb3RvdHlwZS5zdWJzdHJpbmcu
Y2FsbCh1bmRlZmluZWQsIDEsIDMpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJy
b3IuCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3Bl
cnR5TmFtZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09i
amVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCShyZXZpc2lvbiAxOTg4OTcpCisrKyBMYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgdmFyIGV4cGVjdGVkUHJvcGVydHlOYW1lc1NldCA9
IHsKICAgICAiRXJyb3IucHJvdG90eXBlIjogIlsnY29uc3RydWN0b3InLCAnbWVzc2FnZScsICdu
YW1lJywgJ3RvU3RyaW5nJ10iLAogICAgICJNYXRoIjogIlsnRScsJ0xOMTAnLCdMTjInLCdMT0cx
MEUnLCdMT0cyRScsJ1BJJywnU1FSVDFfMicsJ1NRUlQyJywnYWJzJywnYWNvcycsJ2Fjb3NoJywn
YXNpbicsJ2FzaW5oJywnYXRhbicsJ2F0YW4yJywnYXRhbmgnLCdjYnJ0JywnY2VpbCcsJ2NsejMy
JywnY29zJywnY29zaCcsJ2V4cCcsJ2V4cG0xJywnZmxvb3InLCdmcm91bmQnLCdoeXBvdCcsJ2lt
dWwnLCdsb2cnLCdsb2cxMCcsJ2xvZzFwJywnbG9nMicsJ21heCcsJ21pbicsJ3BvdycsJ3JhbmRv
bScsJ3JvdW5kJywnc2lnbicsJ3NpbicsJ3NpbmgnLCdzcXJ0JywndGFuJywndGFuaCcsJ3RydW5j
J10iLAogICAgICJKU09OIjogIlsncGFyc2UnLCAnc3RyaW5naWZ5J10iLAotICAgICJTeW1ib2wi
OiAiWydmb3InLCAnaGFzSW5zdGFuY2UnLCAnaXRlcmF0b3InLCAna2V5Rm9yJywgJ2xlbmd0aCcs
ICdtYXRjaCcsICduYW1lJywgJ3Byb3RvdHlwZScsICdzZWFyY2gnLCAnc3BlY2llcycsICd0b1By
aW1pdGl2ZScsICd0b1N0cmluZ1RhZycsICd1bnNjb3BhYmxlcyddIiwKKyAgICAiU3ltYm9sIjog
IlsnZm9yJywgJ2hhc0luc3RhbmNlJywgJ2l0ZXJhdG9yJywgJ2tleUZvcicsICdsZW5ndGgnLCAn
bWF0Y2gnLCAnbmFtZScsICdwcm90b3R5cGUnLCAnc2VhcmNoJywgJ3NwZWNpZXMnLCAnc3BsaXQn
LCAndG9QcmltaXRpdmUnLCAndG9TdHJpbmdUYWcnLCAndW5zY29wYWJsZXMnXSIsCiAgICAgIlN5
bWJvbC5wcm90b3R5cGUiOiAiWydjb25zdHJ1Y3RvcicsICd0b1N0cmluZycsICd2YWx1ZU9mJ10i
LAogICAgICJNYXAiOiAiWydsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXSIsCiAgICAgIk1h
cC5wcm90b3R5cGUiOiAiWydjbGVhcicsICdjb25zdHJ1Y3RvcicsICdkZWxldGUnLCAnZW50cmll
cycsICdmb3JFYWNoJywgJ2dldCcsICdoYXMnLCAna2V5cycsICdzZXQnLCAnc2l6ZScsICd2YWx1
ZXMnXSIsCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9P
YmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTRfU3RyaW5nLnByb3RvdHlwZS5zcGxp
dC9TMTUuNS40LjE0X0ExX1QzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUu
NC8xNS41LjQuMTRfU3RyaW5nLnByb3RvdHlwZS5zcGxpdC9TMTUuNS40LjE0X0ExX1QzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTk4ODk3KQorKysgTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3Jt
YW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjE0X1N0cmlu
Zy5wcm90b3R5cGUuc3BsaXQvUzE1LjUuNC4xNF9BMV9UMy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiBTMTUuNS40LjE0X0ExX1QzCiAKLUZBSUwgVHlwZUVycm9y
OiBUeXBlIGVycm9yCitGQUlMIFR5cGVFcnJvcjogU3RyaW5nLnByb3RvdHlwZS5zcGxpdCByZXF1
aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkCiAKIFRFU1QgQ09NUExFVEUKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275697</attachid>
            <date>2016-04-05 14:59:27 -0700</date>
            <delta_ts>2016-04-06 14:16:18 -0700</delta_ts>
            <desc>work in progress: need to apply get_by_id_pure next.</desc>
            <filename>bug-156013.patch</filename>
            <type>text/plain</type>
            <size>89065</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5MDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBA
CisyMDE2LTA0LTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
UzY6IEltcGxlbWVudCBTdHJpbmcucHJvdG90eXBlLnNwbGl0IGFuZCBSZWdFeHAucHJvdG90eXBl
W0BAc3BsaXRdLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU2MDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJ1aWx0aW5zL0dsb2JhbE9iamVjdC5qczoKKyAgICAgICAgKHNwZWNpZXNHZXR0ZXIpOgorICAg
ICAgICAoc3BlY2llc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlUHJv
dG90eXBlLmpzOgorICAgICAgICAqIGJ1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qczoKKyAgICAg
ICAgKGFkdmFuY2VTdHJpbmdJbmRleCk6CisgICAgICAgIChtYXRjaCk6CisgICAgICAgIChyZWdF
eHBFeGVjKToKKyAgICAgICAgKG1heCk6CisgICAgICAgIChtaW4pOgorICAgICAgICAoc3BsaXQp
OgorICAgICAgICAoYWR2YW5jZVN0cmluZ0luZGV4VW5pY29kZSk6IERlbGV0ZWQuCisgICAgICAg
ICogYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzOgorICAgICAgICAocmVwZWF0KToKKyAgICAg
ICAgKHNwbGl0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnk6Omxvb2t1cCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6ZXNTcGVjSXNDYWxsYWJsZSk6CisgICAgICAgIChKU0M6OmVzU3BlY0lzQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoSlNDOjplc1NwZWNJc1Byb3h5KToKKyAgICAgICAgKEpTQzo6ZXNT
cGVjSXNSZWdFeHApOgorICAgICAgICAqIHJ1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1
bmN0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUv
UmVnRXhwT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6b2Zmc2V0T2ZMYXN0
SW5kZXhJc1dyaXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNFeGVjKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9G
dW5jU2VhcmNoKToKKyAgICAgICAgKEpTQzo6YWR2YW5jZVN0cmluZ0luZGV4KToKKyAgICAgICAg
KEpTQzo6cmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OmpzU3RyaW5nV2l0aFJldXNlKToKKyAgICAgICAgKEpTQzo6anNTdWJzdHJpbmcpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OnN1YnN0aXR1dGVC
YWNrcmVmZXJlbmNlc1Nsb3cpOgorICAgICAgICAoSlNDOjpzcGxpdFN0cmluZ0J5T25lQ2hhcmFj
dGVySW1wbCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdCk6CisgICAg
ICAgIChKU0M6OmpzU3RyaW5nV2l0aFJldXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6anNT
dWJzdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTcGxpdCk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaDoKKyAgICAgICAg
KiB0ZXN0cy9lczYueWFtbDoKKyAgICAgICAgKiB0ZXN0cy9lczYvUHJveHlfaW50ZXJuYWxfZ2V0
X2NhbGxzX1JlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5qczoKKyAgICAgICAgKHRlc3Qu
cC5uZXcuUHJveHkpOgorICAgICAgICAodGVzdC5nZXQgdmFyKToKKyAgICAgICAgKHRlc3QuKToK
KwogMjAxNi0wNC0wNSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZSBzaG91bGQgc3VwcG9ydCB0aGUgYWJpbGl0eSB0byBkbyBhIG5vbi1lZmZlY3Rm
dWwgZ2V0QnlJZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5
ODg5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQ1LDYgKzIwNDUsOCBAQAogCQlG
RTFDMEZGRjFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUMwRkZFMUIxOTRGRDEwMEI1M0ZDQSAv
KiBFeGNlcHRpb24uY3BwICovOyB9OwogCQlGRTIwQ0U5RDE1RjA0QTk1MDBERjM0MzAgLyogTExJ
bnRDTG9vcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTIwQ0U5QjE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgKi87IH07CiAJCUZF
MjBDRTlFMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyog
TExJbnRDTG9vcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUZFMzE4RkRGMUNBQzk4MjcwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFs
RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMzE4RkREMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVu
Y3Rpb25zLmNwcCAqLzsgfTsKKwkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0IC8qIEVDTUFTY3Jp
cHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMzE4RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3Bl
Y0ludGVybmFsRnVuY3Rpb25zLmggKi87IH07CiAJCUZFMzg0RUU1MUFEREI3QUQwMDU1REUyQyAv
KiBKU0RvbGxhclZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMzg0RUUxMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLzsgfTsK
IAkJRkUzODRFRTYxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUyMUFEREI3QUQwMDU1REUy
QyAvKiBKU0RvbGxhclZNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRkUzODRFRTcxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUz
ODRFRTMxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwICovOyB9OwpA
QCAtNDI4Miw2ICs0Mjg0LDggQEAKIAkJRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2Vw
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTIwQ0U5QjE1RjA0QTk1MDBERjM0
MzAgLyogTExJbnRDTG9vcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBMTEludENMb29wLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9v
cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENMb29wLmg7IHBhdGgg
PSBsbGludC9MTEludENMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzE4
RkREMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVDTUFTY3JpcHRTcGVjSW50
ZXJuYWxGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTMxOEZE
RTFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVu
Y3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUxMUFEREI3QUQw
MDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRG9sbGFyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM4
NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0RvbGxhclZNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFMzg0RUUzMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNUHJvdG90eXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9sbGFyVk1Qcm90b3R5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTU1Niw2ICs1NTYwLDggQEAKIAkJCQkw
RkUwNTAwRTFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmggKi8sCiAJ
CQkJQTcwNDQ3RUIxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmNwcCAqLywKIAkJCQlB
NzA0NDdFQzE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRleHQuaCAqLywKKwkJCQlGRTMxOEZE
RDFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAg
Ki8sCisJCQkJRkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJu
YWxGdW5jdGlvbnMuaCAqLywKIAkJCQkyQUQyRURGQTE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVy
YXRpb25Nb2RlLmggKi8sCiAJCQkJQkMzMzdCRUEwRTFCMDBDQjAwNzY5MThBIC8qIEVycm9yLmNw
cCAqLywKIAkJCQlCQzMwNDYwNjBFMUY0OTdGMDAzMjMyQ0YgLyogRXJyb3IuaCAqLywKQEAgLTc5
MDksNiArNzkxNSw3IEBACiAJCQkJNTJDMDYxMUYxQUE1MUUxQzAwQjRBREJBIC8qIFJ1bnRpbWVU
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3NUEgLyogU2Ft
cGxpbmdDb3VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyODFBQTkwOTU2MDBEMzNC
MzMgLyogU2NvcGVkQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTMxOEZFMDFDQUM5
ODJGMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1Rh
YmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2Nv
cGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAv
KiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtODcyNiw2ICs4
NzMzLDcgQEAKIAkJCQlGRTUwNjg2NzFBRTI1RTI4MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VE
dW1wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3N0E0MjNEMTdBMEJCRkQwMEE4REI4MSAvKiBE
RkdBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NUMxOTQxNzI3NkU0NjAw
Q0VBQkZEIC8qIERGR0Fic3RyYWN0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUzMThG
REYxQ0FDOTgyNzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEM0U0MDExQjYxOEFBRjAwQzgwRTFFIC8qIERGR0FkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjE4RDNDRjFCNTVBNkUwMDAyQzVDOUYgLyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkREODExMUFCM0Q4QkUwMEJCQjhFOCAvKiBE
RkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCShyZXZpc2lv
biAxOTg4OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT2JqZWN0
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsMyArNjUsMTggQEAgZnVuY3Rpb24gc3BlY2llc0dldHRl
cigpCiB7CiAgICAgcmV0dXJuIHRoaXM7CiB9CisKK2Z1bmN0aW9uIHNwZWNpZXNDb25zdHJ1Y3Rv
cihvYmosIGRlZmF1bHRDb25zdHJ1Y3RvcikKK3sKKyAgICB2YXIgY29uc3RydWN0b3IgPSBvYmou
Y29uc3RydWN0b3I7CisgICAgaWYgKGNvbnN0cnVjdG9yID09PSBAdW5kZWZpbmVkKQorICAgICAg
ICByZXR1cm4gZGVmYXVsdENvbnN0cnVjdG9yOworICAgIGlmICghQGlzT2JqZWN0KGNvbnN0cnVj
dG9yKSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoInx0aGlzfC5jb25zdHJ1Y3RvciBp
cyBub3QgYW4gT2JqZWN0IG9yIHVuZGVmaW5lZCIpOworICAgIGNvbnN0cnVjdG9yID0gY29uc3Ry
dWN0b3JbQHN5bWJvbFNwZWNpZXNdOworICAgIGlmIChjb25zdHJ1Y3RvciA9PSBudWxsKQorICAg
ICAgICByZXR1cm4gZGVmYXVsdENvbnN0cnVjdG9yOworICAgIGlmIChAaXNDb25zdHJ1Y3Rvcihj
b25zdHJ1Y3RvcikpCisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcigifHRoaXN8LmNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXSBpcyBub3QgYSBj
b25zdHJ1Y3RvciIpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1By
b21pc2VQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL1Byb21pc2VQcm90b3R5cGUuanMJKHJldmlzaW9uIDE5ODg5NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlUHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zNywxNiArMzcsNyBAQCBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKQog
ICAgIGlmICghQGlzUHJvbWlzZSh0aGlzKSkKICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3Io
Inx0aGlzfCBpcyBub3QgYSBvYmplY3QiKTsKIAotICAgIHZhciBjb25zdHJ1Y3RvciA9IHRoaXMu
Y29uc3RydWN0b3I7Ci0gICAgaWYgKGNvbnN0cnVjdG9yID09PSBAdW5kZWZpbmVkKQotICAgICAg
ICBjb25zdHJ1Y3RvciA9IEBQcm9taXNlOwotICAgIGVsc2UgaWYgKCFAaXNPYmplY3QoY29uc3Ry
dWN0b3IpKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigifHRoaXN8LmNvbnN0cnVjdG9y
IGlzIG5vdCBhbiBPYmplY3Qgb3IgdW5kZWZpbmVkIik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNv
bnN0cnVjdG9yID0gY29uc3RydWN0b3JbQHN5bWJvbFNwZWNpZXNdOwotICAgICAgICBpZiAoY29u
c3RydWN0b3IgPT0gbnVsbCkKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gQFByb21pc2U7Ci0g
ICAgfQorICAgIHZhciBjb25zdHJ1Y3RvciA9IEBzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgQFBy
b21pc2UpOwogCiAgICAgdmFyIHJlc3VsdENhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxp
dHkoY29uc3RydWN0b3IpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
UmVnRXhwUHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9SZWdFeHBQcm90b3R5cGUuanMJKHJldmlzaW9uIDE5ODg5NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWdFeHBQcm90b3R5cGUuanMJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDEzICsyMywxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotZnVuY3Rpb24gYWR2
YW5jZVN0cmluZ0luZGV4VW5pY29kZShzdHJpbmcsIHN0cmluZ0xlbmd0aCwgaW5kZXgpCitmdW5j
dGlvbiBhZHZhbmNlU3RyaW5nSW5kZXgoc3RyaW5nLCBpbmRleCwgdW5pY29kZSkKIHsKLSAgICAv
LyBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgQWR2YW5jZVN0cmluZ0luZGV4IGRlc2NyaWJlZCBp
biBFUzYgMjEuMi41LjIuMywgc3RlcHMgNi0xMS4KLSAgICAvLyBJdCBhc3N1bWVzIHRoYXQgInVu
aWNvZGUiIGlzIHRydWUgZm9yIGl0cyBjYWxsZXJzLgorICAgIC8vIFRoaXMgZnVuY3Rpb24gaW1w
bGVtZW50cyBBZHZhbmNlU3RyaW5nSW5kZXggZGVzY3JpYmVkIGluIEVTNiAyMS4yLjUuMi4zLgog
ICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlmIChpbmRleCArIDEgPj0gc3RyaW5nTGVuZ3RoKQor
ICAgIGlmICghdW5pY29kZSkKKyAgICAgICAgcmV0dXJuIGluZGV4ICsgMTsKKworICAgIGlmIChp
bmRleCArIDEgPj0gc3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGluZGV4ICsgMTsKIAog
ICAgIGxldCBmaXJzdCA9IHN0cmluZy5AY2hhckNvZGVBdChpbmRleCk7CkBAIC01MCw3ICs1Miw3
IEBAIGZ1bmN0aW9uIG1hdGNoKHN0cikKICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQE9iamVj
dCkpCiAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWdFeHAucHJvdG90eXBlLkBAbWF0
Y2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUgYW4gT2JqZWN0Iik7CiAKLSAgICBsZXQgcmVnZXhw
ID0gQE9iamVjdCh0aGlzKTsKKyAgICBsZXQgcmVnZXhwID0gdGhpczsKICAgICBsZXQgc3RyaW5n
QXJnID0gQHRvU3RyaW5nKHN0cik7CiAKICAgICBpZiAoIXJlZ2V4cC5nbG9iYWwpCkBAIC03OSwx
MiArODEsOCBAQCBmdW5jdGlvbiBtYXRjaChzdHIpCiAKICAgICAgICAgICAgIGxldCByZXN1bHRT
dHJpbmcgPSBAdG9TdHJpbmcocmVzdWx0WzBdKTsKIAotICAgICAgICAgICAgaWYgKCFyZXN1bHRT
dHJpbmcubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUpCi0gICAgICAgICAg
ICAgICAgICAgIHJlZ2V4cC5sYXN0SW5kZXggPSBAYWR2YW5jZVN0cmluZ0luZGV4VW5pY29kZShz
dHJpbmdBcmcsIHN0cmluZ0xlbmd0aCwgcmVnZXhwLmxhc3RJbmRleCk7Ci0gICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZWdleHAubGFzdEluZGV4Kys7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoIXJlc3VsdFN0cmluZy5sZW5ndGgpCisgICAgICAgICAg
ICAgICAgcmVnZXhwLmxhc3RJbmRleCA9IEBhZHZhbmNlU3RyaW5nSW5kZXgoc3RyaW5nQXJnLCBy
ZWdleHAubGFzdEluZGV4LCB1bmljb2RlKTsKIAogICAgICAgICAgICAgcmVzdWx0TGlzdC5AcHVz
aChyZXN1bHRTdHJpbmcpOwogCkBAIC05NSwzICs5MywxNjMgQEAgZnVuY3Rpb24gbWF0Y2goc3Ry
KQogICAgIHJldHVybiByZWdleHAuQG1hdGNoKHN0cmluZ0FyZyk7CiB9CiAKK2Z1bmN0aW9uIHJl
Z0V4cEV4ZWMocmVnZXhwLCBzdHIpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgbGV0IGV4
ZWMgPSByZWdleHAuZXhlYzsKKyAgICBsZXQgYnVpbHRpbkV4ZWMgPSBAUmVnRXhwLnByb3RvdHlw
ZS5AZXhlYzsKKyAgICBpZiAoZXhlYyAhPT0gYnVpbHRpbkV4ZWMgJiYgQGlzQ2FsbGFibGUoZXhl
YykpIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGV4ZWMuQGNhbGwocmVnZXhwLCBzdHIpOworICAg
ICAgICBpZiAocmVzdWx0ICE9PSBudWxsICYmICFAaXNPYmplY3QocmVzdWx0KSkKKyAgICAgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJUaGUgcmVzdWx0IG9mIGEgUmVnRXhwIGV4ZWMgbXVz
dCBiZSBudWxsIG9yIGFuIG9iamVjdCIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KyAgICByZXR1cm4gYnVpbHRpbkV4ZWMuQGNhbGwocmVnZXhwLCBzdHIpOworfQorCisvLyBFUyAy
MS4yLjUuMTEgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XShzdHJpbmcsIGxpbWl0KQorZnVuY3Rp
b24gc3BsaXQoc3RyaW5nLCBsaW1pdCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBmdW5j
dGlvbiBtYXgoYSwgYikgeworICAgICAgICByZXR1cm4gYSA+IGIgPyBhIDogYjsKKyAgICB9Cisg
ICAgZnVuY3Rpb24gbWluKGEsIGIpIHsKKyAgICAgICAgcmV0dXJuIGEgPCBiID8gYSA6IGI7Cisg
ICAgfQorCisgICAgLy8gMS4gTGV0IHJ4IGJlIHRoZSB0aGlzIHZhbHVlLgorICAgIC8vIDIuIElm
IFR5cGUocngpIGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KKyAg
ICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQE9iamVjdCkpCisgICAgICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKCJSZWdFeHAucHJvdG90eXBlLkBAc3BsaXQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUg
YW4gT2JqZWN0Iik7CisgICAgbGV0IHJlZ2V4cCA9IHRoaXM7CisKKyAgICAvLyAzLiBMZXQgUyBi
ZSA/IFRvU3RyaW5nKHN0cmluZykuCisgICAgbGV0IHN0ciA9IEB0b1N0cmluZyhzdHJpbmcpOwor
CisgICAgLy8gNC4gTGV0IEMgYmUgPyBTcGVjaWVzQ29uc3RydWN0b3IocngsICVSZWdFeHAlKS4K
KyAgICBsZXQgc3BlY2llc0NvbnN0cnVjdG9yID0gQHNwZWNpZXNDb25zdHJ1Y3RvcihyZWdleHAs
IEBSZWdFeHApOworCisgICAgLy8gRklYTUU6IG9uY2Ugd2UgaGF2ZSB0aGUgYWJpbGl0eSB0byBj
aGVjayB0aGF0IGZsYWdzIGlzIHRoZSBwcmltb2RpYWwgZmxhZ3MgZ2V0dGVyLCB0aGVuIHdlIGNh
biBtb3ZlCisgICAgLy8gdGhpcyBvcHRpbWl6YXRpb24gY2hlY2sgaGVyZS4KKyAgICAvLyBpZiAo
c3BlY2llc0NvbnN0cnVjdG9yID09PSBAUmVnRXhwICYmIHJlZ2V4cC5leGVjID09PSBAUmVnRXhw
LnByb3RvdHlwZS5AZXhlYyAmJiBAaXNSZWdFeHAocmVnZXhwKSkKKyAgICAvLyAgICAgcmV0dXJu
IEByZWdFeHBTcGxpdEZhc3QuQGNhbGwocmVnZXhwLCBzdHIsIGxpbWl0KTsKKworICAgIC8vIDUu
IExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisgICAgbGV0IGZs
YWdzID0gQHRvU3RyaW5nKHJlZ2V4cC5mbGFncyk7CisKKyAgICAvLyBGSVhNRTogb25jZSB3ZSBo
YXZlIHRoZSBhYmlsaXR5IHRvIGNoZWNrIHRoYXQgZmxhZ3MgaXMgdGhlIHByaW1vZGlhbCBmbGFn
cyBnZXR0ZXIsIHRoZW4gd2UgY2FuIG1vdmUKKyAgICAvLyB0aGlzIGFib3ZlIHRoZSByZWFkaW5n
IG9mIHRoZSBmbGFncy4KKyAgICBpZiAoc3BlY2llc0NvbnN0cnVjdG9yID09PSBAUmVnRXhwICYm
IHJlZ2V4cC5leGVjID09PSBAUmVnRXhwLnByb3RvdHlwZS5AZXhlYyAmJiBAaXNSZWdFeHAocmVn
ZXhwKSkKKyAgICAgICAgcmV0dXJuIEByZWdFeHBTcGxpdEZhc3QuQGNhbGwocmVnZXhwLCBzdHIs
IGxpbWl0KTsKKworICAgIC8vIDYuIElmIGZsYWdzIGNvbnRhaW5zICJ1IiwgbGV0IHVuaWNvZGVN
YXRjaGluZyBiZSB0cnVlLgorICAgIC8vIDcuIEVsc2UsIGxldCB1bmljb2RlTWF0Y2hpbmcgYmUg
ZmFsc2UuCisgICAgbGV0IHVuaWNvZGVNYXRjaGluZyA9IGZsYWdzLmluY2x1ZGVzKCJ1Iik7Cisg
ICAgLy8gOC4gSWYgZmxhZ3MgY29udGFpbnMgInkiLCBsZXQgbmV3RmxhZ3MgYmUgZmxhZ3MuCisg
ICAgLy8gOS4gRWxzZSwgbGV0IG5ld0ZsYWdzIGJlIHRoZSBzdHJpbmcgdGhhdCBpcyB0aGUgY29u
Y2F0ZW5hdGlvbiBvZiBmbGFncyBhbmQgInkiLgorICAgIGxldCBuZXdGbGFncyA9IGZsYWdzLmlu
Y2x1ZGVzKCJ5IikgPyBmbGFncyA6IGZsYWdzICsgInkiOworCisgICAgLy8gMTAuIExldCBzcGxp
dHRlciBiZSA/IENvbnN0cnVjdChDLCDCqyByeCwgbmV3RmxhZ3MgwrspLgorICAgIGxldCBzcGxp
dHRlciA9IG5ldyBzcGVjaWVzQ29uc3RydWN0b3IocmVnZXhwLCBuZXdGbGFncyk7CisKKyAgICAv
LyBXZSBuZWVkIHRvIGNoZWNrIGFnYWluIGZvciBSZWdFeHAgc3ViY2xhc3NlcyB0aGF0IHdpbGwg
ZmFpbCB0aGUgc3BlY2llc0NvbnN0cnVjdG9yIHRlc3QKKyAgICAvLyBidXQgY2FuIHN0aWxsIHVz
ZSB0aGUgZmFzdCBwYXRoIGFmdGVyIHdlIGludm9rZSB0aGUgY29uc3RydWN0b3IgYWJvdmUuCisg
ICAgaWYgKHJlZ2V4cC5leGVjID09PSBAUmVnRXhwLnByb3RvdHlwZS5AZXhlYyAmJiBAaXNSZWdF
eHAocmVnZXhwKSkKKyAgICAgICAgcmV0dXJuIEByZWdFeHBTcGxpdEZhc3QuQGNhbGwocmVnZXhw
LCBzdHIsIGxpbWl0KTsKKworICAgIC8vIDExLiBMZXQgQSBiZSBBcnJheUNyZWF0ZSgwKS4KKyAg
ICAvLyAxMi4gTGV0IGxlbmd0aEEgYmUgMC4KKyAgICBsZXQgcmVzdWx0ID0gW107CisKKyAgICAv
LyAxMy4gSWYgbGltaXQgaXMgdW5kZWZpbmVkLCBsZXQgbGltIGJlIDIzMi0xOyBlbHNlIGxldCBs
aW0gYmUgPyBUb1VpbnQzMihsaW1pdCkuCisgICAgbGltaXQgPSAobGltaXQgPT09IEB1bmRlZmlu
ZWQpID8gMHhmZmZmZmZmZiA6IGxpbWl0ID4+PiAwOworCisgICAgLy8gMTYuIElmIGxpbSA9IDAs
IHJldHVybiBBLgorICAgIGlmICghbGltaXQpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAg
ICAvLyAxNC4gW0RlZmVyZWQgZnJvbSBhYm92ZV0gTGV0IHNpemUgYmUgdGhlIG51bWJlciBvZiBl
bGVtZW50cyBpbiBTLgorICAgIGxldCBzaXplID0gc3RyLmxlbmd0aDsKKworICAgIC8vIDE3LiBJ
ZiBzaXplID0gMCwgdGhlbgorICAgIGlmICghc2l6ZSkgeworICAgICAgICAvLyBhLiBMZXQgeiBi
ZSA/IFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFMpLgorICAgICAgICBsZXQgeiA9IEByZWdFeHBFeGVj
KHNwbGl0dGVyLCBzdHIpOworICAgICAgICAvLyBiLiBJZiB6IGlzIG5vdCBudWxsLCByZXR1cm4g
QS4KKyAgICAgICAgaWYgKHogIT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgIC8vIGMuIFBlcmZvcm0gISBDcmVhdGVEYXRhUHJvcGVydHkoQSwgIjAiLCBTKS4KKyAg
ICAgICAgcmVzdWx0WzBdID0gc3RyOworICAgICAgICAvLyBkLiBSZXR1cm4gQS4KKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLyAxNS4gW0RlZmVyZWQgZnJvbSBhYm92ZV0g
TGV0IHAgYmUgMC4KKyAgICBsZXQgcG9zaXRpb24gPSAwOworICAgIC8vIDE4LiBMZXQgcSBiZSBw
LgorICAgIGxldCBtYXRjaFBvc2l0aW9uID0gMDsKKworICAgIC8vIDE5LiBSZXBlYXQsIHdoaWxl
IHEgPCBzaXplCisgICAgd2hpbGUgKG1hdGNoUG9zaXRpb24gPCBzaXplKSB7CisgICAgICAgIC8v
IGEuIFBlcmZvcm0gPyBTZXQoc3BsaXR0ZXIsICJsYXN0SW5kZXgiLCBxLCB0cnVlKS4KKyAgICAg
ICAgc3BsaXR0ZXIubGFzdEluZGV4ID0gbWF0Y2hQb3NpdGlvbjsKKyAgICAgICAgLy8gYi4gTGV0
IHogYmUgPyBSZWdFeHBFeGVjKHNwbGl0dGVyLCBTKS4KKyAgICAgICAgbGV0IG1hdGNoZXMgPSBA
cmVnRXhwRXhlYyhzcGxpdHRlciwgc3RyKTsKKyAgICAgICAgLy8gYy4gSWYgeiBpcyBudWxsLCBs
ZXQgcSBiZSBBZHZhbmNlU3RyaW5nSW5kZXgoUywgcSwgdW5pY29kZU1hdGNoaW5nKS4KKyAgICAg
ICAgaWYgKG1hdGNoZXMgPT09IG51bGwpCisgICAgICAgICAgICBtYXRjaFBvc2l0aW9uID0gQGFk
dmFuY2VTdHJpbmdJbmRleChzdHIsIG1hdGNoUG9zaXRpb24sIHVuaWNvZGVNYXRjaGluZyk7Cisg
ICAgICAgIC8vIGQuIEVsc2UgeiBpcyBub3QgbnVsbCwKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAvLyBpLiBMZXQgZSBiZSA/IFRvTGVuZ3RoKD8gR2V0KHNwbGl0dGVyLCAibGFzdEluZGV4
IikpLgorICAgICAgICAgICAgbGV0IGVuZFBvc2l0aW9uID0gQHRvTGVuZ3RoKHNwbGl0dGVyLmxh
c3RJbmRleCk7CisgICAgICAgICAgICAvLyBpaS4gTGV0IGUgYmUgbWluKGUsIHNpemUpLgorICAg
ICAgICAgICAgZW5kUG9zaXRpb24gPSBtaW4oZW5kUG9zaXRpb24sIHNpemUpOworICAgICAgICAg
ICAgLy8gaWlpLiBJZiBlID0gcCwgbGV0IHEgYmUgQWR2YW5jZVN0cmluZ0luZGV4KFMsIHEsIHVu
aWNvZGVNYXRjaGluZykuCisgICAgICAgICAgICBpZiAoZW5kUG9zaXRpb24gPT09IHBvc2l0aW9u
KQorICAgICAgICAgICAgICAgIG1hdGNoUG9zaXRpb24gPSBAYWR2YW5jZVN0cmluZ0luZGV4KHN0
ciwgbWF0Y2hQb3NpdGlvbiwgdW5pY29kZU1hdGNoaW5nKTsKKyAgICAgICAgICAgIC8vIGl2LiBF
bHNlIGUgIT0gcCwKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8vIDEuIExl
dCBUIGJlIGEgU3RyaW5nIHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0
aW5nIG9mIHRoZSBlbGVtZW50cyBhdCBpbmRpY2VzIHAgKGluY2x1c2l2ZSkgdGhyb3VnaCBxIChl
eGNsdXNpdmUpLgorICAgICAgICAgICAgICAgIGxldCBzdWJTdHIgPSBzdHIuc3Vic3RyKHBvc2l0
aW9uLCBtYXRjaFBvc2l0aW9uIC0gcG9zaXRpb24pOworICAgICAgICAgICAgICAgIC8vIDIuIFBl
cmZvcm0gISBDcmVhdGVEYXRhUHJvcGVydHkoQSwgISBUb1N0cmluZyhsZW5ndGhBKSwgVCkuCisg
ICAgICAgICAgICAgICAgLy8gMy4gTGV0IGxlbmd0aEEgYmUgbGVuZ3RoQSArIDEuCisgICAgICAg
ICAgICAgICAgcmVzdWx0LnB1c2goc3ViU3RyKTsKKyAgICAgICAgICAgICAgICAvLyA0LiBJZiBs
ZW5ndGhBID0gbGltLCByZXR1cm4gQS4KKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0
aCA9PSBsaW1pdCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAg
ICAgICAgICAvLyA1LiBMZXQgcCBiZSBlLgorICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gZW5k
UG9zaXRpb247CisgICAgICAgICAgICAgICAgLy8gNi4gTGV0IG51bWJlck9mQ2FwdHVyZXMgYmUg
PyBUb0xlbmd0aCg/IEdldCh6LCAibGVuZ3RoIikpLgorICAgICAgICAgICAgICAgIC8vIDcuIExl
dCBudW1iZXJPZkNhcHR1cmVzIGJlIG1heChudW1iZXJPZkNhcHR1cmVzLTEsIDApLgorICAgICAg
ICAgICAgICAgIGxldCBudW1iZXJPZkNhcHR1cmVzID0gbWF4KG1hdGNoZXMubGVuZ3RoIC0gMSwg
MCk7CisgICAgICAgICAgICAgICAgLy8gOC4gTGV0IGkgYmUgMS4KKyAgICAgICAgICAgICAgICBs
ZXQgaSA9IDE7CisgICAgICAgICAgICAgICAgLy8gOS4gUmVwZWF0LCB3aGlsZSBpIDw9IG51bWJl
ck9mQ2FwdHVyZXMsCisgICAgICAgICAgICAgICAgd2hpbGUgKGkgPD0gbnVtYmVyT2ZDYXB0dXJl
cykgeworICAgICAgICAgICAgICAgICAgICAvLyBhLiBMZXQgbmV4dENhcHR1cmUgYmUgPyBHZXQo
eiwgISBUb1N0cmluZyhpKSkuCisgICAgICAgICAgICAgICAgICAgIGxldCBuZXh0Q2FwdHVyZSA9
IG1hdGNoZXNbaV07CisgICAgICAgICAgICAgICAgICAgIC8vIGIuIFBlcmZvcm0gISBDcmVhdGVE
YXRhUHJvcGVydHkoQSwgISBUb1N0cmluZyhsZW5ndGhBKSwgbmV4dENhcHR1cmUpLgorICAgICAg
ICAgICAgICAgICAgICAvLyBkLiBMZXQgbGVuZ3RoQSBiZSBsZW5ndGhBICsgMS4KKyAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV4dENhcHR1cmUpOworICAgICAgICAgICAgICAgICAg
ICAvLyBlLiBJZiBsZW5ndGhBID0gbGltLCByZXR1cm4gQS4KKyAgICAgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdC5sZW5ndGggPT0gbGltaXQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgICAgICAgICAgICAgICAgICAvLyBjLiBMZXQgaSBiZSBpICsgMS4KKyAg
ICAgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAvLyAxMC4gTGV0IHEgYmUgcC4KKyAgICAgICAgICAgICAgICBtYXRjaFBvc2l0aW9uID0gcG9z
aXRpb247CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgLy8gMjAuIExldCBU
IGJlIGEgU3RyaW5nIHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5n
IG9mIHRoZSBlbGVtZW50cyBhdCBpbmRpY2VzIHAgKGluY2x1c2l2ZSkgdGhyb3VnaCBzaXplIChl
eGNsdXNpdmUpLgorICAgIGxldCByZW1haW5pbmdTdHIgPSBzdHIuc3Vic3RyKHBvc2l0aW9uLCBz
aXplKTsKKyAgICAvLyAyMS4gUGVyZm9ybSAhIENyZWF0ZURhdGFQcm9wZXJ0eShBLCAhIFRvU3Ry
aW5nKGxlbmd0aEEpLCBUKS4KKyAgICByZXN1bHQucHVzaChyZW1haW5pbmdTdHIpOworICAgIC8v
IDIyLiBSZXR1cm4gQS4KKyAgICByZXR1cm4gcmVzdWx0OworfQorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMJKHJldmlzaW9u
IDE5ODg5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5
cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDE1IEFuZHkgVmFuV2Fnb25lciA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPi4KICAqIENv
cHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Cisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjQsMyArMTI1LDIyIEBAIGZ1bmN0aW9u
IHJlcGVhdChjb3VudCkKIAogICAgIHJldHVybiBAcmVwZWF0U2xvd1BhdGgoc3RyaW5nLCBjb3Vu
dCk7CiB9CisKK2Z1bmN0aW9uIHNwbGl0KHNlcGFyYXRvciwgbGltaXQpCit7CisgICAgInVzZSBz
dHJpY3QiOworICAgIAorICAgIGlmICh0aGlzID09IG51bGwpIHsKKyAgICAgICAgaWYgKHRoaXMg
PT09IG51bGwpCisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiU3RyaW5nLnByb3Rv
dHlwZS5zcGxpdCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCIpOworICAgICAgICB0
aHJvdyBuZXcgQFR5cGVFcnJvcigiU3RyaW5nLnByb3RvdHlwZS5zcGxpdCByZXF1aXJlcyB0aGF0
IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7CisgICAgfQorICAgIAorICAgIGlmIChzZXBhcmF0
b3IgIT0gbnVsbCkgeworICAgICAgICB2YXIgc3BsaXR0ZXIgPSBzZXBhcmF0b3JbQHN5bWJvbFNw
bGl0XTsKKyAgICAgICAgaWYgKHNwbGl0dGVyICE9IEB1bmRlZmluZWQpCisgICAgICAgICAgICBy
ZXR1cm4gc3BsaXR0ZXIuQGNhbGwoc2VwYXJhdG9yLCB0aGlzLCBsaW1pdCk7CisgICAgfQorICAg
IAorICAgIHJldHVybiBAc3RyaW5nU3BsaXRGYXN0LkBjYWxsKHRoaXMsIHNlcGFyYXRvciwgbGlt
aXQpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMTk4ODk3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsNiArNTcsNyBAQCBCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5OjpCeXRlY29kZUludHJpCiAgICAgbV9zeW1ib2xNYXRjaC5zZXQobV92bSwgU3ltYm9s
OjpjcmVhdGUobV92bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCptX3ZtLnByb3BlcnR5TmFt
ZXMtPm1hdGNoU3ltYm9sLmltcGwoKSkpKTsKICAgICBtX3N5bWJvbFNlYXJjaC5zZXQobV92bSwg
U3ltYm9sOjpjcmVhdGUobV92bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCptX3ZtLnByb3Bl
cnR5TmFtZXMtPnNlYXJjaFN5bWJvbC5pbXBsKCkpKSk7CiAgICAgbV9zeW1ib2xTcGVjaWVzLnNl
dChtX3ZtLCBTeW1ib2w6OmNyZWF0ZShtX3ZtLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKm1f
dm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbC5pbXBsKCkpKSk7CisgICAgbV9zeW1ib2xT
cGxpdC5zZXQobV92bSwgU3ltYm9sOjpjcmVhdGUobV92bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1w
bCY+KCptX3ZtLnByb3BlcnR5TmFtZXMtPnNwbGl0U3ltYm9sLmltcGwoKSkpKTsKIH0KIAogQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjpFbWl0dGVyVHlwZSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
Ojpsb29rdXAoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmgJKHJldmlzaW9uIDE5ODg5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1
OSw3IEBAIGNsYXNzIElkZW50aWZpZXI7CiAgICAgbWFjcm8oc3ltYm9sTWF0Y2gpIFwKICAgICBt
YWNybyhzeW1ib2xTZWFyY2gpIFwKICAgICBtYWNybyhzeW1ib2xTcGVjaWVzKSBcCisgICAgbWFj
cm8oc3ltYm9sU3BsaXQpIFwKIAogY2xhc3MgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgJKHJldmlzaW9uIDE5ODg5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA5LCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNzUsNyAr
Mjc1LDYgQEAKICNkZWZpbmUgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VM
TF9LTk9XTl9TWU1CT0xfTk9UX0lNUExFTUVOVEVEX1lFVChtYWNybylcCiAgICAgbWFjcm8oaXND
b25jYXRTcHJlYWRhYmxlKSBcCiAgICAgbWFjcm8ocmVwbGFjZSkgXAotICAgIG1hY3JvKHNwbGl0
KQogCiAjZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05P
V05fU1lNQk9MKG1hY3JvKSBcCiAgICAgbWFjcm8oaGFzSW5zdGFuY2UpIFwKQEAgLTI4Myw2ICsy
ODIsNyBAQAogICAgIG1hY3JvKG1hdGNoKSBcCiAgICAgbWFjcm8oc2VhcmNoKSBcCiAgICAgbWFj
cm8oc3BlY2llcykgXAorICAgIG1hY3JvKHNwbGl0KSBcCiAgICAgbWFjcm8odG9QcmltaXRpdmUp
IFwKICAgICBtYWNybyh0b1N0cmluZ1RhZykgXAogICAgIG1hY3JvKHVuc2NvcGFibGVzKQpAQCAt
Mzc2LDEzICszNzYsMTggQEAKICAgICBtYWNybyhpbnN0YW5jZU9mKSBcCiAgICAgbWFjcm8oaXNB
cnJheSkgXAogICAgIG1hY3JvKGlzQXJyYXlDb25zdHJ1Y3RvcikgXAorICAgIG1hY3JvKGlzQ2Fs
bGFibGUpIFwKKyAgICBtYWNybyhpc0NvbnN0cnVjdG9yKSBcCisgICAgbWFjcm8oaXNQcm94eSkg
XAorICAgIG1hY3JvKGlzUmVnRXhwKSBcCiAgICAgbWFjcm8oaXNTZXQpIFwKICAgICBtYWNybyhp
c01hcCkgXAogICAgIG1hY3JvKFNldEl0ZXJhdG9yKSBcCiAgICAgbWFjcm8oc2V0SXRlcmF0b3JO
ZXh0KSBcCiAgICAgbWFjcm8oTWFwSXRlcmF0b3IpIFwKICAgICBtYWNybyhtYXBJdGVyYXRvck5l
eHQpIFwKLQorICAgIG1hY3JvKHJlZ0V4cFNwbGl0RmFzdCkgXAorICAgIG1hY3JvKHN0cmluZ1Nw
bGl0RmFzdCkgXAogCiBuYW1lc3BhY2UgSlNDIHsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50
ZXJuYWxGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFQ01BU2NyaXB0U3BlY0lu
dGVybmFsRnVuY3Rpb25zLmgiCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJD
b25zdHJ1Y3REYXRhLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJQcm94eU9iamVjdC5oIgorI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlc1NwZWNJc0NhbGxhYmxlKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBDYWxsVHlwZSBjYWxsVHlwZTsKKyAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihleGVjLT5hcmd1
bWVudCgwKS5pc0NhbGxhYmxlKGNhbGxUeXBlLCBjYWxsRGF0YSkpKTsKK30KKworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBlc1NwZWNJc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBib29sIGlzQ29uc3RydWN0b3IgPSBleGVjLT5hcmd1bWVudCgwKS5pc0NvbnN0cnVj
dG9yKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaXNDb25zdHJ1Y3Rv
cikpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVzU3BlY0lzUHJveHkoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIGJvb2wgaXNQcm94eSA9IGV4ZWMtPmFyZ3VtZW50KDApLmlu
aGVyaXRzKFByb3h5T2JqZWN0OjppbmZvKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNCb29sZWFuKGlzUHJveHkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBl
c1NwZWNJc1JlZ0V4cChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYm9vbCBpc1Byb3h5ID0gZXhl
Yy0+YXJndW1lbnQoMCkuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGlzUHJveHkpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3Bl
Y0ludGVybmFsRnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1
bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEVDTUFTY3JpcHRTcGVjSW50
ZXJuYWxGdW5jdGlvbnNfaAorI2RlZmluZSBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25z
X2gKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjSXNDYWxsYWJsZShFeGVjU3RhdGUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjSXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjSXNQcm94eShFeGVjU3RhdGUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjSXNSZWdFeHAoRXhlY1N0YXRl
Kik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRUNNQVNjcmlwdFNwZWNJbnRl
cm5hbEZ1bmN0aW9uc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxOTg4OTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDE0LTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMDksIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgi
CiAjaW5jbHVkZSAiRGVidWdnZXJTY29wZS5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5o
IgorI2luY2x1ZGUgIkVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCIKICNpbmNsdWRl
ICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJFcnJv
clByb3RvdHlwZS5oIgpAQCAtNTk0LDcgKzU5NSw2IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXIKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VSZWFjdGlvbkpvYlByaXZhdGVOYW1lKCksIEpT
RnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcHJvbWlzZU9wZXJhdGlvbnNQcm9t
aXNlUmVhY3Rpb25Kb2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VSZXNvbHZlVGhlbmFibGVKb2JQcml2YXRlTmFt
ZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHByb21pc2VPcGVyYXRp
b25zUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uUHJpdmF0ZU5hbWUoKSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0OjpjcmVhdGUo
dm0sIHRoaXMsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5hZHZhbmNlU3RyaW5nSW5kZXhVbmljb2RlUHJpdmF0ZU5hbWUo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWdFeHBQcm90b3R5cGVB
ZHZhbmNlU3RyaW5nSW5kZXhVbmljb2RlQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5NYXBQcml2YXRlTmFtZSwgbWFwQ29uc3RydWN0b3IsIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZVByaXZhdGVOYW1l
KCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgZ2VuZXJhdG9yUHJvdG90
eXBlR2VuZXJhdG9yUmVzdW1lQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50aGlzVGltZVZhbHVlUHJpdmF0ZU5hbWUoKSwgcHJp
dmF0ZUZ1bmNUaGlzVGltZVZhbHVlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSks
CkBAIC02MDMsNiArNjAzLDIwIEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXIKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLkRhdGVUaW1lRm9ybWF0UHJpdmF0ZU5hbWUoKSwgaW50bC0+Z2V0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5EYXRlVGltZUZvcm1hdCksIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLk51bWJlckZvcm1hdFByaXZhdGVOYW1lKCksIGludGwtPmdldERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+TnVtYmVyRm9ybWF0KSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCisgICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5pc0NhbGxhYmxlUHJpdmF0ZU5hbWUs
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGVzU3BlY0lzQ2FsbGFi
bGUsIE5vSW50cmluc2ljKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+aXNDb25zdHJ1Y3RvclBy
aXZhdGVOYW1lLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBlc1Nw
ZWNJc0NvbnN0cnVjdG9yLCBOb0ludHJpbnNpYyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmlz
UHJveHlQcml2YXRlTmFtZSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmco
KSwgZXNTcGVjSXNQcm94eSwgTm9JbnRyaW5zaWMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5p
c1JlZ0V4cFByaXZhdGVOYW1lLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmlu
ZygpLCBlc1NwZWNJc1JlZ0V4cCwgTm9JbnRyaW5zaWMpLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5zcGVjaWVzQ29uc3RydWN0b3JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0
aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdFNwZWNpZXNDb25zdHJ1
Y3RvckNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpLAorCisgICAgICAgIC8vIFJlZ0V4cC5wcm90b3R5cGUgaGVscGVycy4KKyAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFkdmFu
Y2VTdHJpbmdJbmRleFByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5j
dGlvbih2bSwgcmVnRXhwUHJvdG90eXBlQWR2YW5jZVN0cmluZ0luZGV4Q29kZUdlbmVyYXRvcih2
bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWdFeHBF
eGVjUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBy
ZWdFeHBQcm90b3R5cGVSZWdFeHBFeGVjQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5yZWdFeHBTcGxpdEZhc3RQcml2YXRlTmFtZSwgSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorCisgICAgICAgIC8vIFN0cmluZy5w
cm90b3R5cGUgaGVscGVycy4KKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPnN0cmluZ1NwbGl0RmFzdFByaXZhdGVOYW1lLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXMsIDIsIFN0cmluZygpLCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QpLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0
YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlz
aW9uIDE5ODg5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMp
IDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNywgMjAwOCwgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDgsIDIwMTIsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtOTMs
NiArOTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhw
T2JqZWN0LCBtX2xhc3RJbmRleElzV3JpdGFibGUpOwogICAgIH0KIAorICAgIHN0YXRpYyB1bnNp
Z25lZCBhZHZhbmNlU3RyaW5nVW5pY29kZShTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWdu
ZWQgY3VycmVudEluZGV4KTsKKwogcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJl
Z0V4cE9iamVjdChWTSYsIFN0cnVjdHVyZSosIFJlZ0V4cCopOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKQEAgLTEwNCw3ICsxMDYsNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlO
YW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgdW5zaWduZWQgYWR2YW5jZVN0cmlu
Z1VuaWNvZGUoU3RyaW5nLCB1bnNpZ25lZCwgdW5zaWduZWQpOwogCiBwcml2YXRlOgogICAgIE1h
dGNoUmVzdWx0IG1hdGNoSW5saW5lKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJp
bmcqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk4ODk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5A
a2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNy0y
MDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgogI2luY2x1
ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiUmVnRXhwTWF0Y2hlc0FycmF5Lmgi
CisjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVjdXJzaW9uQ2hl
Y2tlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTgxLDYgKzgyLDcgQEAgdm9pZCBSZWdFeHBQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJgogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hdGNoUHJp
dmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hQcml2YXRlLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSwgMSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPm1hdGNoU3ltYm9sLCByZWdFeHBQcm90b3R5cGVN
YXRjaENvZGVHZW5lcmF0b3IsIERvbnRFbnVtKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJ
VEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zZWFyY2hTeW1ib2wsIHJlZ0V4cFBy
b3RvRnVuY1NlYXJjaCwgRG9udEVudW0sIDEpOworICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJ
VEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zcGxpdFN5bWJvbCwgcmVnRXhwUHJv
dG90eXBlU3BsaXRDb2RlR2VuZXJhdG9yLCBEb250RW51bSk7CiAKICAgICBKU0Z1bmN0aW9uKiBl
eGVjRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgdm0u
cHJvcGVydHlOYW1lcy0+ZXhlYy5zdHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jRXhlYywgUmVnRXhw
RXhlY0ludHJpbnNpYyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmV4ZWNQcml2YXRlTmFtZSwgZXhlY0Z1bmN0aW9uLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSk7CkBAIC0xMTUsNyArMTE3LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0
OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkJ1aWx0aW4gUmVnRXhwIGV4ZWMgY2Fu
IG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpOwogICAgIEpTU3RyaW5nKiBzdHJp
bmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZ09yTnVsbChleGVjKTsKICAgICBpZiAoIXN0
cmluZykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTQzNCw0ICs0MzYsMTY4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJv
dG8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCA/IGpzTnVtYmVyKHJlc3VsdC5z
dGFydCkgOiBqc051bWJlcigtMSkpOwogfQogCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGFkdmFu
Y2VTdHJpbmdJbmRleChTdHJpbmcgc3RyLCB1bnNpZ25lZCBzdHJTaXplLCB1bnNpZ25lZCBpbmRl
eCwgYm9vbCBpc1VuaWNvZGUpCit7CisgICAgaWYgKCFpc1VuaWNvZGUpCisgICAgICAgIHJldHVy
biArK2luZGV4OworICAgIHJldHVybiBSZWdFeHBPYmplY3Q6OmFkdmFuY2VTdHJpbmdVbmljb2Rl
KHN0ciwgc3RyU2l6ZSwgaW5kZXgpOworfQorCisvLyBFUyAyMS4yLjUuMTEgUmVnRXhwLnByb3Rv
dHlwZVtAQHNwbGl0XShzdHJpbmcsIGxpbWl0KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisKKyAgICAvLyAxLiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBMZXQg
cnggYmUgdGhlIHRoaXMgdmFsdWUuCisgICAgLy8gMi4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0g
SWYgVHlwZShyeCkgaXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgUmVnRXhwKiBy
ZWdleHAgPSBhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKTsKKworICAgIC8vIDMu
IFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIExldCBTIGJlID8gVG9TdHJpbmcoc3RyaW5nKS4KKyAg
ICBTdHJpbmcgaW5wdXQgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIEFTU0VSVCghaW5wdXQuaXNOdWxsKCkpOworCisg
ICAgLy8gNC4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gTGV0IEMgYmUgPyBTcGVjaWVzQ29uc3Ry
dWN0b3IocngsICVSZWdFeHAlKS4KKyAgICAvLyA1LiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBM
ZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorICAgIC8vIDYuIFto
YW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIElmIGZsYWdzIGNvbnRhaW5zICJ1IiwgbGV0IHVuaWNvZGVN
YXRjaGluZyBiZSB0cnVlLgorICAgIC8vIDcuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIEVsc2Us
IGxldCB1bmljb2RlTWF0Y2hpbmcgYmUgZmFsc2UuCisgICAgLy8gOC4gW2hhbmRsZWQgYnkgSlMg
YnVpbHRpbl0gSWYgZmxhZ3MgY29udGFpbnMgInkiLCBsZXQgbmV3RmxhZ3MgYmUgZmxhZ3MuCisg
ICAgLy8gOS4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gRWxzZSwgbGV0IG5ld0ZsYWdzIGJlIHRo
ZSBzdHJpbmcgdGhhdCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiBmbGFncyBhbmQgInkiLgorICAg
IC8vIDEwLiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBMZXQgc3BsaXR0ZXIgYmUgPyBDb25zdHJ1
Y3QoQywgwqsgcngsIG5ld0ZsYWdzIMK7KS4KKyAgICAKKyAgICAvLyAxMS4gTGV0IEEgYmUgQXJy
YXlDcmVhdGUoMCkuCisgICAgLy8gMTIuIExldCBsZW5ndGhBIGJlIDAuCisgICAgSlNBcnJheSog
cmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICB1bnNpZ25lZCByZXN1
bHRMZW5ndGggPSAwOworICAgIAorICAgIC8vIDEzLiBJZiBsaW1pdCBpcyB1bmRlZmluZWQsIGxl
dCBsaW0gYmUgMjMyLTE7IGVsc2UgbGV0IGxpbSBiZSA/IFRvVWludDMyKGxpbWl0KS4KKyAgICBK
U1ZhbHVlIGxpbWl0VmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICB1bnNpZ25lZCBsaW1p
dCA9IGxpbWl0VmFsdWUuaXNVbmRlZmluZWQoKSA/IDB4RkZGRkZGRkZ1IDogbGltaXRWYWx1ZS50
b1VJbnQzMihleGVjKTsKKyAgICAKKyAgICAvLyAxNC4gTGV0IHNpemUgYmUgdGhlIG51bWJlciBv
ZiBlbGVtZW50cyBpbiBTLgorICAgIHVuc2lnbmVkIGlucHV0U2l6ZSA9IGlucHV0Lmxlbmd0aCgp
OworCisgICAgLy8gMTUuIExldCBwID0gMC4KKyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IDA7CisK
KyAgICAvLyAxNi4gSWYgbGltID09IDAsIHJldHVybiBBLgorICAgIGlmICghbGltaXQpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKworICAgIC8vIDE3LiBJZiBzaXpl
ID09IDAsIHRoZW4KKyAgICBpZiAoaW5wdXQuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIGEuIExl
dCB6IGJlID8gUmVnRXhwRXhlYyhzcGxpdHRlciwgUykuCisgICAgICAgIC8vIGIuIElmIHogaXMg
bm90IG51bGwsIHJldHVybiBBLgorICAgICAgICAvLyBjLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVBy
b3BlcnR5KEEsICIwIiwgUykuCisgICAgICAgIC8vIGQuIFJldHVybiBBLgorICAgICAgICBpZiAo
IXJlZ2V4cC0+bWF0Y2godm0sIGlucHV0LCAwKSkKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGly
ZWN0SW5kZXgoZXhlYywgMCwganNTdHJpbmdXaXRoUmV1c2UoZXhlYywgdGhpc1ZhbHVlLCBpbnB1
dCkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgfQorCisg
ICAgLy8gMTguIExldCBxID0gcC4KKyAgICB1bnNpZ25lZCBtYXRjaFBvc2l0aW9uID0gcG9zaXRp
b247CisgICAgLy8gMTkuIFJlcGVhdCwgd2hpbGUgcSA8IHNpemUKKyAgICBib29sIHJlZ0V4cElz
U3RpY2t5ID0gcmVnZXhwLT5zdGlja3koKTsKKyAgICBib29sIHJlZ0V4cElzVW5pY29kZSA9IHJl
Z2V4cC0+dW5pY29kZSgpOworICAgIHdoaWxlIChtYXRjaFBvc2l0aW9uIDwgaW5wdXRTaXplKSB7
CisgICAgICAgIFZlY3RvcjxpbnQsIDMyPiBvdmVjdG9yOworCisgICAgICAgIC8vIGEuIFBlcmZv
cm0gPyBTZXQoc3BsaXR0ZXIsICJsYXN0SW5kZXgiLCBxLCB0cnVlKS4KKyAgICAgICAgLy8gYi4g
TGV0IHogYmUgPyBSZWdFeHBFeGVjKHNwbGl0dGVyLCBTKS4KKyAgICAgICAgaW50IG1wb3MgPSBy
ZWdleHAtPm1hdGNoKHZtLCBpbnB1dCwgbWF0Y2hQb3NpdGlvbiwgb3ZlY3Rvcik7CisKKyAgICAg
ICAgLy8gYy4gSWYgeiBpcyBudWxsLCBsZXQgcSBiZSBBZHZhbmNlU3RyaW5nSW5kZXgoUywgcSwg
dW5pY29kZU1hdGNoaW5nKS4KKyAgICAgICAgaWYgKG1wb3MgPCAwKSB7CisgICAgICAgICAgICBp
ZiAoIXJlZ0V4cElzU3RpY2t5KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
bWF0Y2hQb3NpdGlvbiA9IGFkdmFuY2VTdHJpbmdJbmRleChpbnB1dCwgaW5wdXRTaXplLCBtYXRj
aFBvc2l0aW9uLCByZWdFeHBJc1VuaWNvZGUpOworICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgfQorICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1wb3MpID49IGlucHV0
U2l6ZSkgeworICAgICAgICAgICAgLy8gVGhlIHNwZWMgcmVkb2VzIHRoZSBSZWdFeHBFeGVjIHN0
YXJ0aW5nIGF0IHRoZSBuZXh0IGNoYXJhY3RlciBvZiB0aGUgaW5wdXQuCisgICAgICAgICAgICAv
LyBCdXQgaW4gb3VyIGNhc2UsIG1wb3MgPCAwIG1lYW5zIHRoYXQgdGhlIG5hdGl2ZSByZWdleHAg
YWxyZWFkeSBzZWFyY2hlZCBhbGwgcGVybXV0YXRpb25zCisgICAgICAgICAgICAvLyBhbmQga25v
dyB0aGF0IHdlIHdvbid0IGJlIGFibGUgdG8gZmluZCBhIG1hdGNoIGZvciB0aGUgc2VwYXJhdG9y
IGV2ZW4gaWYgd2UgcmVkbyB0aGUKKyAgICAgICAgICAgIC8vIFJlZ0V4cEV4ZWMgc3RhcnRpbmcg
YXQgdGhlIG5leHQgY2hhcmFjdGVyIG9mIHRoZSBpbnB1dC4gU28sIGp1c3QgYmFpbC4KKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gZC4gRWxzZSwgeiBpcyBub3Qg
bnVsbAorICAgICAgICAvLyAgICBpLiBMZXQgZSBiZSA/IFRvTGVuZ3RoKD8gR2V0KHNwbGl0dGVy
LCAibGFzdEluZGV4IikpLgorICAgICAgICAvLyAgIGlpLiBMZXQgZSBiZSBtaW4oZSwgc2l6ZSku
CisgICAgICAgIG1hdGNoUG9zaXRpb24gPSBtcG9zOworICAgICAgICB1bnNpZ25lZCBtYXRjaEVu
ZCA9IG92ZWN0b3JbMV07CisKKyAgICAgICAgLy8gIGlpaS4gSWYgZSA9IHAsIGxldCBxIGJlIEFk
dmFuY2VTdHJpbmdJbmRleChTLCBxLCB1bmljb2RlTWF0Y2hpbmcpLgorICAgICAgICBpZiAobWF0
Y2hFbmQgPT0gcG9zaXRpb24pIHsKKyAgICAgICAgICAgIG1hdGNoUG9zaXRpb24gPSBhZHZhbmNl
U3RyaW5nSW5kZXgoaW5wdXQsIGlucHV0U2l6ZSwgbWF0Y2hQb3NpdGlvbiwgcmVnRXhwSXNVbmlj
b2RlKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIC8vIGlmIG1h
dGNoRW5kID09IDAgdGhlbiBwb3NpdGlvbiBzaG91bGQgYWxzbyBiZSB6ZXJvIGFuZCB0aHVzIG1h
dGNoRW5kIHNob3VsZCBlcXVhbCBwb3NpdGlvbi4KKyAgICAgICAgQVNTRVJUKG1hdGNoRW5kKTsK
KworICAgICAgICAvLyAgIGl2LiBFbHNlIGUgIT0gcCwKKyAgICAgICAgeworICAgICAgICAgICAg
dW5zaWduZWQgbnVtYmVyT2ZDYXB0dXJlcyA9IHJlZ2V4cC0+bnVtU3VicGF0dGVybnMoKTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIG5ld1Jlc3VsdExlbmd0aCA9IHJlc3VsdExlbmd0aCArIG51bWJl
ck9mQ2FwdHVyZXMgKyAxOworICAgICAgICAgICAgaWYgKG5ld1Jlc3VsdExlbmd0aCA8IG51bWJl
ck9mQ2FwdHVyZXMgfHwgbmV3UmVzdWx0TGVuZ3RoID49IE1BWF9TVE9SQUdFX1ZFQ1RPUl9JTkRF
WCkgeworICAgICAgICAgICAgICAgIC8vIExldCdzIGNvbnNpZGVyIHdoYXQncyBiZXN0IGZvciB1
c2VycyBoZXJlLiBXZSdyZSBhYm91dCB0byBpbmNyZWFzZSB0aGUgbGVuZ3RoIG9mCisgICAgICAg
ICAgICAgICAgLy8gdGhlIHNwbGl0IGFycmF5IGJleW9uZCB0aGUgbWF4aW11bSBsZW5ndGggdGhh
dCB3ZSBjYW4gc3VwcG9ydCBlZmZpY2llbnRseS4gVGhpcworICAgICAgICAgICAgICAgIC8vIHdp
bGwgY2F1c2UgdXMgdG8gdXNlIGEgSGFzaE1hcCBmb3IgdGhlIG5ldyBlbnRyaWVzIGFmdGVyIHRo
aXMgcG9pbnQuIFRoYXQncyBnb2luZworICAgICAgICAgICAgICAgIC8vIHRvIHJlc3VsdCBpbiBh
IHZlcnkgbG9uZyBydW5uaW5nIHRpbWUgb2YgdGhpcyBmdW5jdGlvbiBhbmQgdmVyeSBsYXJnZSBt
ZW1vcnkKKyAgICAgICAgICAgICAgICAvLyB1c2FnZS4gSW4gbXkgZXhwZXJpbWVudHMsIEpTQyB3
aWxsIHNpdCBzcGlubmluZyBmb3IgbWludXRlcyBhZnRlciBnZXR0aW5nIGhlcmUgYW5kCisgICAg
ICAgICAgICAgICAgLy8gaXQgd2FzIHVzaW5nID40R0Igb2YgbWVtb3J5IGFuZCBldmVudHVhbGx5
IGdyZXcgdG8gOEdCLiBJdCBrZXB0IHJ1bm5pbmcgd2l0aG91dAorICAgICAgICAgICAgICAgIC8v
IGZpbmlzaGluZyB1bnRpbCBJIGtpbGxlZCBpdC4gVGhhdCdzIHByb2JhYmx5IG5vdCB3aGF0IHRo
ZSB1c2VyIHdhbnRlZC4gVGhlIHVzZXIsCisgICAgICAgICAgICAgICAgLy8gb3IgdGhlIHByb2dy
YW0gdGhhdCB0aGUgdXNlciBpcyBydW5uaW5nLCBwcm9iYWJseSBtYWRlIGEgbWlzdGFrZSBieSBj
YWxsaW5nIHRoaXMKKyAgICAgICAgICAgICAgICAvLyBtZXRob2QgaW4gc3VjaCBhIHdheSB0aGF0
IGl0IHJlc3VsdGVkIGluIHN1Y2ggYW4gb2Jub3hpb3VzIGFycmF5LiBUaGVyZWZvcmUsIHRvCisg
ICAgICAgICAgICAgICAgLy8gcHJvdGVjdCBvdXJzZWx2ZXMsIHdlIGJhaWwgYXQgdGhpcyBwb2lu
dC4KKyAgICAgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gMS4gTGV0IFQgYmUgYSBTdHJpbmcg
dmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGVsZW1l
bnRzIGF0IGluZGljZXMgcCAoaW5jbHVzaXZlKSB0aHJvdWdoIHEgKGV4Y2x1c2l2ZSkuCisgICAg
ICAgICAgICAvLyAyLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICEgVG9TdHJpbmco
bGVuZ3RoQSksIFQpLgorICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCBy
ZXN1bHRMZW5ndGgsIGpzU3Vic3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQsIHBvc2l0aW9u
LCBtYXRjaFBvc2l0aW9uIC0gcG9zaXRpb24pKTsKKworICAgICAgICAgICAgLy8gMy4gTGV0IGxl
bmd0aEEgYmUgbGVuZ3RoQSArIDEuCisgICAgICAgICAgICAvLyA0LiBJZiBsZW5ndGhBID0gbGlt
LCByZXR1cm4gQS4KKyAgICAgICAgICAgIGlmICgrK3Jlc3VsdExlbmd0aCA9PSBsaW1pdCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisKKyAgICAgICAg
ICAgIC8vIDUuIExldCBwIGJlIGUuCisgICAgICAgICAgICBwb3NpdGlvbiA9IG1hdGNoRW5kOwor
CisgICAgICAgICAgICAvLyA2LiBMZXQgbnVtYmVyT2ZDYXB0dXJlcyBiZSA/IFRvTGVuZ3RoKD8g
R2V0KHosICJsZW5ndGgiKSkuCisgICAgICAgICAgICAvLyA3LiBMZXQgbnVtYmVyT2ZDYXB0dXJl
cyBiZSBtYXgobnVtYmVyT2ZDYXB0dXJlcy0xLCAwKS4KKyAgICAgICAgICAgIC8vIDguIExldCBp
IGJlIDEuCisgICAgICAgICAgICAvLyA5LiBSZXBlYXQsIHdoaWxlIGkgPD0gbnVtYmVyT2ZDYXB0
dXJlcywKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gbnVtYmVyT2ZDYXB0
dXJlczsgKytpKSB7CisgICAgICAgICAgICAgICAgLy8gYS4gTGV0IG5leHRDYXB0dXJlIGJlID8g
R2V0KHosICEgVG9TdHJpbmcoaSkpLgorICAgICAgICAgICAgICAgIC8vIGIuIFBlcmZvcm0gISBD
cmVhdGVEYXRhUHJvcGVydHkoQSwgISBUb1N0cmluZyhsZW5ndGhBKSwgbmV4dENhcHR1cmUpLgor
ICAgICAgICAgICAgICAgIGludCBzdWIgPSBvdmVjdG9yW2kgKiAyXTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0aCwgc3ViIDwgMCA/IGpz
VW5kZWZpbmVkKCkgOiBqc1N1YnN0cmluZyhleGVjLCB0aGlzVmFsdWUsIGlucHV0LCBzdWIsIG92
ZWN0b3JbaSAqIDIgKyAxXSAtIHN1YikpOworCisgICAgICAgICAgICAgICAgLy8gYy4gTGV0IGkg
YmUgaSArIDEuCisgICAgICAgICAgICAgICAgLy8gZC4gTGV0IGxlbmd0aEEgYmUgbGVuZ3RoQSAr
IDEuCisgICAgICAgICAgICAgICAgLy8gZS4gSWYgbGVuZ3RoQSA9IGxpbSwgcmV0dXJuIEEuCisg
ICAgICAgICAgICAgICAgaWYgKCsrcmVzdWx0TGVuZ3RoID09IGxpbWl0KQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIDEwLiBMZXQgcSBiZSBwLgorICAgICAgICAgICAgbWF0Y2hQb3NpdGlv
biA9IHBvc2l0aW9uOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gMjAuIExldCBUIGJlIGEg
U3RyaW5nIHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRo
ZSBlbGVtZW50cyBhdCBpbmRpY2VzIHAgKGluY2x1c2l2ZSkgdGhyb3VnaCBzaXplIChleGNsdXNp
dmUpLgorICAgIC8vIDIxLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICEgVG9TdHJp
bmcobGVuZ3RoQSksIFQpLgorICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0
TGVuZ3RoKyssIGpzU3Vic3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQsIHBvc2l0aW9uLCBp
bnB1dFNpemUgLSBwb3NpdGlvbikpOworICAgIAorICAgIC8vIDIyLiBSZXR1cm4gQS4KKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmgJKHJldmlzaW9uIDE5ODg5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw4IEBAIHByaXZhdGU6
CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cD4gbV9lbXB0eVJlZ0V4cDsKIH07CiAKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSop
OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFJlZ0V4cFByb3RvdHlwZV9oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkocmV2
aXNpb24gMTk4ODk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAo
QykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDctMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC04MSw2ICs4MSwyOSBAQCBpbmxpbmUgU3RyaW5nT2Jq
ZWN0KiBhc1N0cmluZ09iamVjdChKU1ZhCiAKIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZ09iamVj
dCogY29uc3RydWN0U3RyaW5nKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAorLy8g
SGVscGVyIGZvciBwcm9kdWNpbmcgYSBKU1N0cmluZyBmb3IgJ3N0cmluZycsIHdoZXJlICdzdHJp
bmcnIHdhcyBiZWVuIHByb2R1Y2VkIGJ5CisvLyBjYWxsaW5nIFRvU3RyaW5nIG9uICdvcmlnaW5h
bFZhbHVlJy4gSW4gY2FzZXMgd2hlcmUgJ29yaWdpbmFsVmFsdWUnIGFscmVhZHkgd2FzIGEKKy8v
IHN0cmluZyBwcmltaXRpdmUgd2UgY2FuIGp1c3QgdXNlIHRoaXMsIG90aGVyd2lzZSB3ZSBuZWVk
IHRvIGFsbG9jYXRlIGEgbmV3IEpTU3RyaW5nLgorc3RhdGljIGlubGluZSBKU1N0cmluZyoganNT
dHJpbmdXaXRoUmV1c2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9yaWdpbmFsVmFsdWUsIGNv
bnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIGlmIChvcmlnaW5hbFZhbHVlLmlzU3RyaW5nKCkp
IHsKKyAgICAgICAgQVNTRVJUKGFzU3RyaW5nKG9yaWdpbmFsVmFsdWUpLT52YWx1ZShleGVjKSA9
PSBzdHJpbmcpOworICAgICAgICByZXR1cm4gYXNTdHJpbmcob3JpZ2luYWxWYWx1ZSk7CisgICAg
fQorICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBzdHJpbmcpOworfQorCisvLyBIZWxwZXIgdGhh
dCB0cmllcyB0byB1c2UgdGhlIEpTU3RyaW5nIHN1YnN0cmluZyBzaGFyaW5nIG1lY2hhbmlzbSBp
ZiAnb3JpZ2luYWxWYWx1ZScgaXMgYSBKU1N0cmluZy4KK3N0YXRpYyBpbmxpbmUgSlNTdHJpbmcq
IGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvcmlnaW5hbFZhbHVlLCBjb25z
dCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCit7Cisg
ICAgaWYgKG9yaWdpbmFsVmFsdWUuaXNTdHJpbmcoKSkgeworICAgICAgICBBU1NFUlQoYXNTdHJp
bmcob3JpZ2luYWxWYWx1ZSktPnZhbHVlKGV4ZWMpID09IHN0cmluZyk7CisgICAgICAgIHJldHVy
biBqc1N1YnN0cmluZyhleGVjLCBhc1N0cmluZyhvcmlnaW5hbFZhbHVlKSwgb2Zmc2V0LCBsZW5n
dGgpOworICAgIH0KKyAgICByZXR1cm4ganNTdWJzdHJpbmcoZXhlYywgc3RyaW5nLCBvZmZzZXQs
IGxlbmd0aCk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBTdHJpbmdP
YmplY3RfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxOTg4OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRl
bkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJp
Z2h0IChDKSAyMDA0LTIwMDgsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqICBDb3B5
cmlnaHQgKEMpIDIwMTUgSm9yZGFuIEhhcmJhbmQgKGxqaGFyYkBnbWFpbC5jb20pCiAgKgpAQCAt
NzAsNyArNzAsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1BhZFN0YXJ0KEV4ZWNT
dGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBs
YWNlKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNTbGljZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jU3BsaXQoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKEV4ZWNTdGF0ZSopOwogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZShFeGVjU3Rh
dGUqKTsKQEAgLTExMyw2ICsxMTIsNyBAQCBjb25zdCBDbGFzc0luZm8gU3RyaW5nUHJvdG90eXBl
OjpzX2luZm8gCiAgICAgbWF0Y2ggICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAx
CiAgICAgcmVwZWF0ICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgc2Vh
cmNoICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgc3BsaXQgICAgIEpT
QnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCiBAZW5kCiAqLwogCkBAIC0xMzksNyArMTM5
LDYgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJgogICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJwYWRTdGFydCIsIHN0cmluZ1Byb3Rv
RnVuY1BhZFN0YXJ0LCBEb250RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJyZXBsYWNlIiwgc3RyaW5nUHJvdG9GdW5jUmVwbGFj
ZSwgRG9udEVudW0sIDIsIFN0cmluZ1Byb3RvdHlwZVJlcGxhY2VJbnRyaW5zaWMpOwogICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJzbGljZSIsIHN0cmluZ1Byb3Rv
RnVuY1NsaWNlLCBEb250RW51bSwgMik7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VU
X1RSQU5TSVRJT04oInNwbGl0Iiwgc3RyaW5nUHJvdG9GdW5jU3BsaXQsIERvbnRFbnVtLCAyKTsK
ICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigic3Vic3RyIiwgc3Ry
aW5nUHJvdG9GdW5jU3Vic3RyLCBEb250RW51bSwgMik7CiAgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04oInN1YnN0cmluZyIsIHN0cmluZ1Byb3RvRnVuY1N1YnN0cmlu
ZywgRG9udEVudW0sIDIpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKCJ0b0xvd2VyQ2FzZSIsIHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlLCBEb250RW51bSwg
MCk7CkBAIC0xOTUsMjggKzE5NCw2IEBAIGJvb2wgU3RyaW5nUHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0vLyBIZWxwZXIgZm9yIHByb2R1Y2luZyBhIEpT
U3RyaW5nIGZvciAnc3RyaW5nJywgd2hlcmUgJ3N0cmluZycgd2FzIGJlZW4gcHJvZHVjZWQgYnkK
LS8vIGNhbGxpbmcgVG9TdHJpbmcgb24gJ29yaWdpbmFsVmFsdWUnLiBJbiBjYXNlcyB3aGVyZSAn
b3JpZ2luYWxWYWx1ZScgYWxyZWFkeSB3YXMgYQotLy8gc3RyaW5nIHByaW1pdGl2ZSB3ZSBjYW4g
anVzdCB1c2UgdGhpcywgb3RoZXJ3aXNlIHdlIG5lZWQgdG8gYWxsb2NhdGUgYSBuZXcgSlNTdHJp
bmcuCi1zdGF0aWMgaW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZ1dpdGhSZXVzZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgb3JpZ2luYWxWYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0g
ICAgaWYgKG9yaWdpbmFsVmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICBBU1NFUlQoYXNTdHJp
bmcob3JpZ2luYWxWYWx1ZSktPnZhbHVlKGV4ZWMpID09IHN0cmluZyk7Ci0gICAgICAgIHJldHVy
biBhc1N0cmluZyhvcmlnaW5hbFZhbHVlKTsKLSAgICB9Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIHN0cmluZyk7Ci19Ci0KLS8vIEhlbHBlciB0aGF0IHRyaWVzIHRvIHVzZSB0aGUgSlNTdHJp
bmcgc3Vic3RyaW5nIHNoYXJpbmcgbWVjaGFuaXNtIGlmICdvcmlnaW5hbFZhbHVlJyBpcyBhIEpT
U3RyaW5nLgotc3RhdGljIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIG9yaWdpbmFsVmFsdWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25l
ZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICBpZiAob3JpZ2luYWxWYWx1ZS5pc1N0
cmluZygpKSB7Ci0gICAgICAgIEFTU0VSVChhc1N0cmluZyhvcmlnaW5hbFZhbHVlKS0+dmFsdWUo
ZXhlYykgPT0gc3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4ZWMsIGFzU3Ry
aW5nKG9yaWdpbmFsVmFsdWUpLCBvZmZzZXQsIGxlbmd0aCk7Ci0gICAgfQotICAgIHJldHVybiBq
c1N1YnN0cmluZyhleGVjLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKTsKLX0KLQogc3RhdGljIE5F
VkVSX0lOTElORSBTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzU2xvdyhTdHJpbmdWaWV3
IHJlcGxhY2VtZW50LCBTdHJpbmdWaWV3IHNvdXJjZSwgY29uc3QgaW50KiBvdmVjdG9yLCBSZWdF
eHAqIHJlZywgc2l6ZV90IGkpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBzdWJzdGl0dXRlZFJlcGxh
Y2VtZW50OwpAQCAtMTE3MCwxNjkgKzExNDcsNTggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9v
bCBzcGxpdFN0cmluZ0J5TwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotLy8gRVMgNS4xIC0gMTUu
NS40LjE0IFN0cmluZy5wcm90b3R5cGUuc3BsaXQgKHNlcGFyYXRvciwgbGltaXQpCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0KEV4ZWNTdGF0ZSogZXhl
YykKKy8vIEVTIDIxLjEuMy4xNyBTdHJpbmcucHJvdG90eXBlLnNwbGl0KHNlcGFyYXRvciwgbGlt
aXQpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFz
dChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgLy8gMS4gQ2FsbCBDaGVja09iamVjdENvZXJjaWJs
ZSBwYXNzaW5nIHRoZSB0aGlzIHZhbHVlIGFzIGl0cyBhcmd1bWVudC4KICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwotICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2li
bGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cisg
ICAgQVNTRVJUKGNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpOwogCi0gICAgLy8gMi4g
TGV0IFMgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvU3RyaW5nLCBnaXZpbmcgaXQgdGhlIHRo
aXMgdmFsdWUgYXMgaXRzIGFyZ3VtZW50LgotICAgIC8vIDYuIExldCBzIGJlIHRoZSBudW1iZXIg
b2YgY2hhcmFjdGVycyBpbiBTLgorICAgIC8vIDMuIExldCBTIGJlIHRoZSByZXN1bHQgb2YgY2Fs
bGluZyBUb1N0cmluZywgZ2l2aW5nIGl0IHRoZSB0aGlzIHZhbHVlIGFzIGl0cyBhcmd1bWVudC4K
KyAgICAvLyA3LiBMZXQgcyBiZSB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gUy4KICAgICBT
dHJpbmcgaW5wdXQgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICBBU1NFUlQoIWlucHV0LmlzTnVsbCgpKTsKIAotICAgIC8v
IDMuIExldCBBIGJlIGEgbmV3IGFycmF5IGNyZWF0ZWQgYXMgaWYgYnkgdGhlIGV4cHJlc3Npb24g
bmV3IEFycmF5KCkKKyAgICAvLyA0LiBMZXQgQSBiZSBhIG5ldyBhcnJheSBjcmVhdGVkIGFzIGlm
IGJ5IHRoZSBleHByZXNzaW9uIG5ldyBBcnJheSgpCiAgICAgLy8gICAgd2hlcmUgQXJyYXkgaXMg
dGhlIHN0YW5kYXJkIGJ1aWx0LWluIGNvbnN0cnVjdG9yIHdpdGggdGhhdCBuYW1lLgogICAgIEpT
QXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CiAKLSAgICAvLyA0
LiBMZXQgbGVuZ3RoQSBiZSAwLgorICAgIC8vIDUuIExldCBsZW5ndGhBIGJlIDAuCiAgICAgdW5z
aWduZWQgcmVzdWx0TGVuZ3RoID0gMDsKIAotICAgIC8vIDUuIElmIGxpbWl0IGlzIHVuZGVmaW5l
ZCwgbGV0IGxpbSA9IDJeMzItMTsgZWxzZSBsZXQgbGltID0gVG9VaW50MzIobGltaXQpLgorICAg
IC8vIDYuIElmIGxpbWl0IGlzIHVuZGVmaW5lZCwgbGV0IGxpbSA9IDJeMzItMTsgZWxzZSBsZXQg
bGltID0gVG9VaW50MzIobGltaXQpLgogICAgIEpTVmFsdWUgbGltaXRWYWx1ZSA9IGV4ZWMtPmFy
Z3VtZW50KDEpOwogICAgIHVuc2lnbmVkIGxpbWl0ID0gbGltaXRWYWx1ZS5pc1VuZGVmaW5lZCgp
ID8gMHhGRkZGRkZGRnUgOiBsaW1pdFZhbHVlLnRvVUludDMyKGV4ZWMpOwogCi0gICAgLy8gNy4g
TGV0IHAgPSAwLgorICAgIC8vIDguIExldCBwID0gMC4KICAgICBzaXplX3QgcG9zaXRpb24gPSAw
OwogCi0gICAgLy8gOC4gSWYgc2VwYXJhdG9yIGlzIGEgUmVnRXhwIG9iamVjdCAoaXRzIFtbQ2xh
c3NdXSBpcyAiUmVnRXhwIiksIGxldCBSID0gc2VwYXJhdG9yOworICAgIC8vIDkuIElmIHNlcGFy
YXRvciBpcyBhIFJlZ0V4cCBvYmplY3QgKGl0cyBbW0NsYXNzXV0gaXMgIlJlZ0V4cCIpLCBsZXQg
UiA9IHNlcGFyYXRvcjsKICAgICAvLyAgICBvdGhlcndpc2UgbGV0IFIgPSBUb1N0cmluZyhzZXBh
cmF0b3IpLgogICAgIEpTVmFsdWUgc2VwYXJhdG9yVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsK
LSAgICBpZiAoc2VwYXJhdG9yVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKSB7
Ci0gICAgICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgICAgICBSZWdFeHAqIHJlZyA9IGFz
UmVnRXhwT2JqZWN0KHNlcGFyYXRvclZhbHVlKS0+cmVnRXhwKCk7Ci0KLSAgICAgICAgLy8gOS4g
SWYgbGltID09IDAsIHJldHVybiBBLgotICAgICAgICBpZiAoIWxpbWl0KQotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotCi0gICAgICAgIC8vIDEwLiBJZiBzZXBh
cmF0b3IgaXMgdW5kZWZpbmVkLCB0aGVuCi0gICAgICAgIGlmIChzZXBhcmF0b3JWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICAvLyBhLiBDYWxsIHRoZSBbW0RlZmluZU93blByb3Bl
cnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVudHMgIjAiLAotICAgICAgICAg
ICAgLy8gICAgUHJvcGVydHkgRGVzY3JpcHRvciB7W1tWYWx1ZV1dOiBTLCBbW1dyaXRhYmxlXV06
IHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlfSwgYW5k
IGZhbHNlLgotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCAwLCBqc1N0
cmluZ1dpdGhSZXVzZShleGVjLCB0aGlzVmFsdWUsIGlucHV0KSk7Ci0gICAgICAgICAgICAvLyBi
LiBSZXR1cm4gQS4KLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
LSAgICAgICAgfQotCi0gICAgICAgIC8vIDExLiBJZiBzID09IDAsIHRoZW4KLSAgICAgICAgaWYg
KGlucHV0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gYS4gQ2FsbCBTcGxpdE1hdGNoKFMs
IDAsIFIpIGFuZCBsZXQgeiBiZSBpdHMgTWF0Y2hSZXN1bHQgcmVzdWx0LgotICAgICAgICAgICAg
Ly8gYi4gSWYgeiBpcyBub3QgZmFpbHVyZSwgcmV0dXJuIEEuCi0gICAgICAgICAgICAvLyBjLiBD
YWxsIHRoZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBh
cmd1bWVudHMgIjAiLAotICAgICAgICAgICAgLy8gICAgUHJvcGVydHkgRGVzY3JpcHRvciB7W1tW
YWx1ZV1dOiBTLCBbW1dyaXRhYmxlXV06IHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0Nv
bmZpZ3VyYWJsZV1dOiB0cnVlfSwgYW5kIGZhbHNlLgotICAgICAgICAgICAgLy8gZC4gUmV0dXJu
IEEuCi0gICAgICAgICAgICBpZiAoIXJlZy0+bWF0Y2goKnZtLCBpbnB1dCwgMCkpCi0gICAgICAg
ICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCAwLCBqc1N0cmluZ1dpdGhSZXVz
ZShleGVjLCB0aGlzVmFsdWUsIGlucHV0KSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyAxMi4gTGV0IHEgPSBwLgot
ICAgICAgICBzaXplX3QgbWF0Y2hQb3NpdGlvbiA9IDA7Ci0gICAgICAgIC8vIDEzLiBSZXBlYXQs
IHdoaWxlIHEgIT0gcwotICAgICAgICB3aGlsZSAobWF0Y2hQb3NpdGlvbiA8IGlucHV0Lmxlbmd0
aCgpKSB7Ci0gICAgICAgICAgICAvLyBhLiBDYWxsIFNwbGl0TWF0Y2goUywgcSwgUikgYW5kIGxl
dCB6IGJlIGl0cyBNYXRjaFJlc3VsdCByZXN1bHQuCi0gICAgICAgICAgICBWZWN0b3I8aW50LCAz
Mj4gb3ZlY3RvcjsKLSAgICAgICAgICAgIGludCBtcG9zID0gcmVnLT5tYXRjaCgqdm0sIGlucHV0
LCBtYXRjaFBvc2l0aW9uLCBvdmVjdG9yKTsKLQotICAgICAgICAgICAgLy8gYi4gSWYgeiBpcyBh
IGZhaWx1cmUgdGhlbiB3ZSBjYW4gYnJlYWsgYmVjYXVzZSB0aGVyZSBhcmUgbm8gbWF0Y2hlcwot
ICAgICAgICAgICAgaWYgKG1wb3MgPCAwKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgbWF0Y2hQb3NpdGlvbiA9IG1wb3M7Ci0KLSAgICAgICAgICAgIC8vIGlmIHRoZSBtYXRj
aCBpcyB0aGUgZW1wdHkgbWF0Y2ggYXQgdGhlIGVuZCwgYnJlYWsuCi0gICAgICAgICAgICBpZiAo
bWF0Y2hQb3NpdGlvbiA+PSBpbnB1dC5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICBicmVhazsK
LQotICAgICAgICAgICAgLy8gYy4gRWxzZSwgeiBpcyBub3QgZmFpbHVyZQotICAgICAgICAgICAg
Ly8gaS4geiBtdXN0IGJlIGEgU3RhdGUuIExldCBlIGJlIHoncyBlbmRJbmRleCBhbmQgbGV0IGNh
cCBiZSB6J3MgY2FwdHVyZXMgYXJyYXkuCi0gICAgICAgICAgICBzaXplX3QgbWF0Y2hFbmQgPSBv
dmVjdG9yWzFdOwotCi0gICAgICAgICAgICAvLyBpaS4gSWYgZSA9PSBwLCB0aGVuIGxldCBxID0g
cSArIDEuCi0gICAgICAgICAgICBpZiAobWF0Y2hFbmQgPT0gcG9zaXRpb24pIHsKLSAgICAgICAg
ICAgICAgICArK21hdGNoUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAvLyBpaWkuIGlmIG1hdGNoRW5kID09IDAgdGhlbiBwb3Np
dGlvbiBzaG91bGQgYWxzbyBiZSB6ZXJvIGFuZCB0aHVzIG1hdGNoRW5kIHNob3VsZCBlcXVhbCBw
b3NpdGlvbi4KLSAgICAgICAgICAgIEFTU0VSVChtYXRjaEVuZCk7Ci0KLSAgICAgICAgICAgIC8v
IGlpaS4gRWxzZSwgZSAhPSBwCi0KLSAgICAgICAgICAgIC8vIDEuIExldCBUIGJlIGEgU3RyaW5n
IHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBjaGFy
YWN0ZXJzIGF0IHBvc2l0aW9ucyBwIChpbmNsdXNpdmUpCi0gICAgICAgICAgICAvLyAgICB0aHJv
dWdoIHEgKGV4Y2x1c2l2ZSkuCi0gICAgICAgICAgICAvLyAyLiBDYWxsIHRoZSBbW0RlZmluZU93
blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVudHMgVG9TdHJpbmco
bGVuZ3RoQSksCi0gICAgICAgICAgICAvLyAgICBQcm9wZXJ0eSBEZXNjcmlwdG9yIHtbW1ZhbHVl
XV06IFQsIFtbV3JpdGFibGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmln
dXJhYmxlXV06IHRydWV9LCBhbmQgZmFsc2UuCi0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVj
dEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0aCwganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBp
bnB1dCwgcG9zaXRpb24sIG1hdGNoUG9zaXRpb24gLSBwb3NpdGlvbikpOwotCi0gICAgICAgICAg
ICAvLyAzLiBJbmNyZW1lbnQgbGVuZ3RoQSBieSAxLgotICAgICAgICAgICAgLy8gNC4gSWYgbGVu
Z3RoQSA9PSBsaW0sIHJldHVybiBBLgotICAgICAgICAgICAgKytyZXN1bHRMZW5ndGg7Ci0gICAg
ICAgICAgICBpZiAocmVzdWx0TGVuZ3RoID09IGxpbWl0KQotICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLSAgICAgICAgICAgIGlmIChyZXN1bHRMZW5ndGgg
Pj0gTUFYX1NUT1JBR0VfVkVDVE9SX0lOREVYKSB7Ci0gICAgICAgICAgICAgICAgLy8gTGV0J3Mg
Y29uc2lkZXIgd2hhdCdzIGJlc3QgZm9yIHVzZXJzIGhlcmUuIFdlJ3JlIGFib3V0IHRvIGluY3Jl
YXNlIHRoZSBsZW5ndGggb2YKLSAgICAgICAgICAgICAgICAvLyB0aGUgc3BsaXQgYXJyYXkgYmV5
b25kIHRoZSBtYXhpbXVtIGxlbmd0aCB0aGF0IHdlIGNhbiBzdXBwb3J0IGVmZmljaWVudGx5LiBU
aGlzCi0gICAgICAgICAgICAgICAgLy8gd2lsbCBjYXVzZSB1cyB0byB1c2UgYSBIYXNoTWFwIGZv
ciB0aGUgbmV3IGVudHJpZXMgYWZ0ZXIgdGhpcyBwb2ludC4gVGhhdCdzIGdvaW5nCi0gICAgICAg
ICAgICAgICAgLy8gdG8gcmVzdWx0IGluIGEgdmVyeSBsb25nIHJ1bm5pbmcgdGltZSBvZiB0aGlz
IGZ1bmN0aW9uIGFuZCB2ZXJ5IGxhcmdlIG1lbW9yeQotICAgICAgICAgICAgICAgIC8vIHVzYWdl
LiBJbiBteSBleHBlcmltZW50cywgSlNDIHdpbGwgc2l0IHNwaW5uaW5nIGZvciBtaW51dGVzIGFm
dGVyIGdldHRpbmcgaGVyZSBhbmQKLSAgICAgICAgICAgICAgICAvLyBpdCB3YXMgdXNpbmcgPjRH
QiBvZiBtZW1vcnkgYW5kIGV2ZW50dWFsbHkgZ3JldyB0byA4R0IuIEl0IGtlcHQgcnVubmluZyB3
aXRob3V0Ci0gICAgICAgICAgICAgICAgLy8gZmluaXNoaW5nIHVudGlsIEkga2lsbGVkIGl0LiBU
aGF0J3MgcHJvYmFibHkgbm90IHdoYXQgdGhlIHVzZXIgd2FudGVkLiBUaGUgdXNlciwKLSAgICAg
ICAgICAgICAgICAvLyBvciB0aGUgcHJvZ3JhbSB0aGF0IHRoZSB1c2VyIGlzIHJ1bm5pbmcsIHBy
b2JhYmx5IG1hZGUgYSBtaXN0YWtlIGJ5IGNhbGxpbmcgdGhpcwotICAgICAgICAgICAgICAgIC8v
IG1ldGhvZCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQgcmVzdWx0ZWQgaW4gc3VjaCBhbiBvYm5veGlv
dXMgYXJyYXkuIFRoZXJlZm9yZSwgdG8KLSAgICAgICAgICAgICAgICAvLyBwcm90ZWN0IG91cnNl
bHZlcywgd2UgYmFpbCBhdCB0aGlzIHBvaW50LgotICAgICAgICAgICAgICAgIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihleGVjKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyA1LiBMZXQg
cCA9IGUuCi0gICAgICAgICAgICAvLyA4LiBMZXQgcSA9IHAuCi0gICAgICAgICAgICBwb3NpdGlv
biA9IG1hdGNoRW5kOwotICAgICAgICAgICAgbWF0Y2hQb3NpdGlvbiA9IG1hdGNoRW5kOwotCi0g
ICAgICAgICAgICAvLyA2LiBMZXQgaSA9IDAuCi0gICAgICAgICAgICAvLyA3LiBSZXBlYXQsIHdo
aWxlIGkgaXMgbm90IGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gY2FwLgotICAg
ICAgICAgICAgLy8gIGEgTGV0IGkgPSBpICsgMS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDE7IGkgPD0gcmVnLT5udW1TdWJwYXR0ZXJucygpOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICAvLyBiIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2Yg
QSB3aXRoIGFyZ3VtZW50cwotICAgICAgICAgICAgICAgIC8vICAgVG9TdHJpbmcobGVuZ3RoQSks
IFByb3BlcnR5IERlc2NyaXB0b3Ige1tbVmFsdWVdXTogY2FwW2ldLCBbW1dyaXRhYmxlXV06Ci0g
ICAgICAgICAgICAgICAgLy8gICB0cnVlLCBbW0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1
cmFibGVdXTogdHJ1ZX0sIGFuZCBmYWxzZS4KLSAgICAgICAgICAgICAgICBpbnQgc3ViID0gb3Zl
Y3RvcltpICogMl07Ci0gICAgICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVj
LCByZXN1bHRMZW5ndGgsIHN1YiA8IDAgPyBqc1VuZGVmaW5lZCgpIDoganNTdWJzdHJpbmcoZXhl
YywgdGhpc1ZhbHVlLCBpbnB1dCwgc3ViLCBvdmVjdG9yW2kgKiAyICsgMV0gLSBzdWIpKTsKLSAg
ICAgICAgICAgICAgICAvLyBjIEluY3JlbWVudCBsZW5ndGhBIGJ5IDEuCi0gICAgICAgICAgICAg
ICAgLy8gZCBJZiBsZW5ndGhBID09IGxpbSwgcmV0dXJuIEEuCi0gICAgICAgICAgICAgICAgaWYg
KCsrcmVzdWx0TGVuZ3RoID09IGxpbWl0KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVs
c2UgeworICAgIHsgLy8gRklYTUU6IEtlZXBpbmcgdGhpcyBpbmRlbnRhdGlvbiBoZXJlIHRvIG1p
bmltaXplIHRoZSBkaWZmLiBXaWxsIHVuaW5kZW50IGFuZCByZW1vdmUgdGhpcyBsYXRlci4KICAg
ICAgICAgU3RyaW5nIHNlcGFyYXRvciA9IHNlcGFyYXRvclZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgICAgICAvLyA5
LiBJZiBsaW0gPT0gMCwgcmV0dXJuIEEuCisgICAgICAgIC8vIDEwLiBJZiBsaW0gPT0gMCwgcmV0
dXJuIEEuCiAgICAgICAgIGlmICghbGltaXQpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiAKLSAgICAgICAgLy8gMTAuIElmIHNlcGFyYXRvciBpcyB1bmRlZmlu
ZWQsIHRoZW4KLSAgICAgICAgSlNWYWx1ZSBzZXBhcmF0b3JWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50
KDApOworICAgICAgICAvLyAxMS4gSWYgc2VwYXJhdG9yIGlzIHVuZGVmaW5lZCwgdGhlbgogICAg
ICAgICBpZiAoc2VwYXJhdG9yVmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgLy8g
YS4gIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgQSB3
aXRoIGFyZ3VtZW50cyAiMCIsCi0gICAgICAgICAgICAvLyAgICAgUHJvcGVydHkgRGVzY3JpcHRv
ciB7W1tWYWx1ZV1dOiBTLCBbW1dyaXRhYmxlXV06IHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVl
LCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlfSwgYW5kIGZhbHNlLgogICAgICAgICAgICAgcmVzdWx0
LT5wdXREaXJlY3RJbmRleChleGVjLCAwLCBqc1N0cmluZ1dpdGhSZXVzZShleGVjLCB0aGlzVmFs
dWUsIGlucHV0KSk7CiAgICAgICAgICAgICAvLyBiLiAgUmV0dXJuIEEuCiAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyAx
MS4gSWYgcyA9PSAwLCB0aGVuCisgICAgICAgIC8vIDEyLiBJZiBzID09IDAsIHRoZW4KICAgICAg
ICAgaWYgKGlucHV0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gYS4gQ2FsbCBTcGxpdE1h
dGNoKFMsIDAsIFIpIGFuZCBsZXQgeiBiZSBpdHMgTWF0Y2hSZXN1bHQgcmVzdWx0LgotICAgICAg
ICAgICAgLy8gYi4gSWYgeiBpcyBub3QgZmFpbHVyZSwgcmV0dXJuIEEuCi0gICAgICAgICAgICAv
LyBjLiBDYWxsIHRoZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEg
d2l0aCBhcmd1bWVudHMgIjAiLAotICAgICAgICAgICAgLy8gICAgUHJvcGVydHkgRGVzY3JpcHRv
ciB7W1tWYWx1ZV1dOiBTLCBbW1dyaXRhYmxlXV06IHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVl
LCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlfSwgYW5kIGZhbHNlLgorICAgICAgICAgICAgLy8gYS4g
TGV0IHogYmUgU3BsaXRNYXRjaChTLCAwLCBSKSB3aGVyZSBTIGlzIGlucHV0LCBSIGlzIHNlcGFy
YXRvci4KKyAgICAgICAgICAgIC8vIGIuIElmIHogaXMgbm90IGZhbHNlLCByZXR1cm4gQS4KKyAg
ICAgICAgICAgIC8vIGMuIENhbGwgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICIwIiwgUykuCiAgICAg
ICAgICAgICAvLyBkLiBSZXR1cm4gQS4KICAgICAgICAgICAgIGlmICghc2VwYXJhdG9yLmlzRW1w
dHkoKSkKICAgICAgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIDAsIGpz
U3RyaW5nV2l0aFJldXNlKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQpKTsKQEAgLTEzNzUsMTcgKzEy
NDEsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyAxMi4gTGV0IHEgPSBwLgorICAg
ICAgICAgICAgLy8gMTMuIExldCBxID0gcC4KICAgICAgICAgICAgIHNpemVfdCBtYXRjaFBvc2l0
aW9uOwotICAgICAgICAgICAgLy8gMTMuIFJlcGVhdCwgd2hpbGUgcSAhPSBzCi0gICAgICAgICAg
ICAvLyAgIGEuIENhbGwgU3BsaXRNYXRjaChTLCBxLCBSKSBhbmQgbGV0IHogYmUgaXRzIE1hdGNo
UmVzdWx0IHJlc3VsdC4KLSAgICAgICAgICAgIC8vICAgYi4gSWYgeiBpcyBmYWlsdXJlLCB0aGVu
IGxldCBxID0gcSsxLgotICAgICAgICAgICAgLy8gICBjLiBFbHNlLCB6IGlzIG5vdCBmYWlsdXJl
CisgICAgICAgICAgICAvLyAxNC4gUmVwZWF0LCB3aGlsZSBxICE9IHMKKyAgICAgICAgICAgIC8v
ICAgYS4gbGV0IGUgYmUgU3BsaXRNYXRjaChTLCBxLCBSKS4KKyAgICAgICAgICAgIC8vICAgYi4g
SWYgZSBpcyBmYWlsdXJlLCB0aGVuIGxldCBxID0gcSsxLgorICAgICAgICAgICAgLy8gICBjLiBF
bHNlLCBlIGlzIGFuIGludGVnZXIgaW5kZXggPD0gcy4KICAgICAgICAgICAgIHdoaWxlICgobWF0
Y2hQb3NpdGlvbiA9IHN0cmluZ0ltcGwtPmZpbmQoc2VwYXJhdG9ySW1wbCwgcG9zaXRpb24pKSAh
PSBub3RGb3VuZCkgewogICAgICAgICAgICAgICAgIC8vIDEuIExldCBUIGJlIGEgU3RyaW5nIHZh
bHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBjaGFyYWN0
ZXJzIGF0IHBvc2l0aW9ucyBwIChpbmNsdXNpdmUpCiAgICAgICAgICAgICAgICAgLy8gICAgdGhy
b3VnaCBxIChleGNsdXNpdmUpLgotICAgICAgICAgICAgICAgIC8vIDIuIENhbGwgdGhlIFtbRGVm
aW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50cyBUb1N0
cmluZyhsZW5ndGhBKSwKLSAgICAgICAgICAgICAgICAvLyAgICBQcm9wZXJ0eSBEZXNjcmlwdG9y
IHtbW1ZhbHVlXV06IFQsIFtbV3JpdGFibGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUs
IFtbQ29uZmlndXJhYmxlXV06IHRydWV9LCBhbmQgZmFsc2UuCisgICAgICAgICAgICAgICAgLy8g
Mi4gQ2FsbCBDcmVhdGVEYXRhUHJvcGVydHkoQSwgVG9TdHJpbmcobGVuZ3RoQSksIFQpLgogICAg
ICAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoLCBq
c1N1YnN0cmluZyhleGVjLCB0aGlzVmFsdWUsIGlucHV0LCBwb3NpdGlvbiwgbWF0Y2hQb3NpdGlv
biAtIHBvc2l0aW9uKSk7CiAgICAgICAgICAgICAgICAgLy8gMy4gSW5jcmVtZW50IGxlbmd0aEEg
YnkgMS4KICAgICAgICAgICAgICAgICAvLyA0LiBJZiBsZW5ndGhBID09IGxpbSwgcmV0dXJuIEEu
CkBAIC0xMzkzLDE5ICsxMjU4LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG8KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogCiAgICAgICAgICAgICAgICAgLy8gNS4gTGV0IHAgPSBlLgotICAgICAgICAgICAgICAg
IC8vIDguIExldCBxID0gcC4KKyAgICAgICAgICAgICAgICAvLyA2LiBMZXQgcSA9IHAuCiAgICAg
ICAgICAgICAgICAgcG9zaXRpb24gPSBtYXRjaFBvc2l0aW9uICsgc2VwYXJhdG9yLmxlbmd0aCgp
OwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQorICAgIH0gLy8gRklYTUU6IEtlZXBp
bmcgdGhpcyBpbmRlbnRhdGlvbiBoZXJlIHRvIG1pbmltaXplIHRoZSBkaWZmLiBXaWxsIHVuaW5k
ZW50IGFuZCByZW1vdmUgdGhpcyBsYXRlci4KIAotICAgIC8vIDE0LiBMZXQgVCBiZSBhIFN0cmlu
ZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgY2hh
cmFjdGVycyBhdCBwb3NpdGlvbnMgcCAoaW5jbHVzaXZlKQorICAgIC8vIDE1LiBMZXQgVCBiZSBh
IFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0
aGUgY2hhcmFjdGVycyBhdCBwb3NpdGlvbnMgcCAoaW5jbHVzaXZlKQogICAgIC8vICAgICB0aHJv
dWdoIHMgKGV4Y2x1c2l2ZSkuCi0gICAgLy8gMTUuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVy
dHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50cyBUb1N0cmluZyhsZW5ndGhB
KSwgUHJvcGVydHkgRGVzY3JpcHRvcgotICAgIC8vICAgICB7W1tWYWx1ZV1dOiBULCBbW1dyaXRh
YmxlXV06IHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVl
fSwgYW5kIGZhbHNlLgorICAgIC8vIDE2LiBDYWxsIENyZWF0ZURhdGFQcm9wZXJ0eShBLCBUb1N0
cmluZyhsZW5ndGhBKSwgVCkuCiAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1
bHRMZW5ndGgrKywganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgcG9zaXRpb24s
IGlucHV0Lmxlbmd0aCgpIC0gcG9zaXRpb24pKTsKIAotICAgIC8vIDE2LiBSZXR1cm4gQS4KKyAg
ICAvLyAxNy4gUmV0dXJuIEEuCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuaAkocmV2aXNpb24gMTk4ODk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcp
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCwgMjAxMywgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBA
IC02Myw2ICs2Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3QK
ICAgICBFeGVjU3RhdGUqLCBKU1N0cmluZyogdGhpc1ZhbHVlLCBSZWdFeHBPYmplY3QqIHNlYXJj
aFZhbHVlLCBKU1N0cmluZyogcmVwbGFjZVZhbHVlKTsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIoRXhlY1N0YXRlKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3Rh
dGUqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYueWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2LnlhbWwJKHJldmlzaW9uIDE5ODg5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9lczYueWFtbAkod29ya2luZyBjb3B5KQpAQCAtMTAwNyw3ICsxMDA3LDcgQEAKIC0gcGF0
aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9jYWxsc19SZWdFeHAucHJvdG90eXBlW1N5bWJvbC5z
ZWFyY2hdLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVzNi9Qcm94eV9pbnRlcm5h
bF9nZXRfY2FsbHNfUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVy
bmFsX2dldF9jYWxsc19SZWdFeHBfY29uc3RydWN0b3IuanMKICAgY21kOiBydW5FUzYgOmZhaWwK
IC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9jYWxsc19TdHJpbmcucHJvdG90eXBlLm1h
dGNoLmpzCkBAIC0xMDE3LDcgKzEwMTcsNyBAQAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxf
Z2V0X2NhbGxzX1N0cmluZy5wcm90b3R5cGUuc2VhcmNoLmpzCiAgIGNtZDogcnVuRVM2IDpub3Jt
YWwKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9jYWxsc19TdHJpbmcucHJvdG90eXBl
LnNwbGl0LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0g
cGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9jYWxsc19TdHJpbmcucmF3LmpzCiAgIGNtZDog
cnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9jYWxsc19Ub1By
aW1pdGl2ZS5qcwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAKIC0gcGF0aDogZXM2L1JlZ0V4cC5wcm90
b3R5cGVfcHJvcGVydGllc19SZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zZWFyY2hdLmpzCiAgIGNt
ZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L1JlZ0V4cC5wcm90b3R5cGVfcHJvcGVydGll
c19SZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUmVnRXhwLnByb3RvdHlwZV9wcm9w
ZXJ0aWVzX1JlZ0V4cFtTeW1ib2wuc3BlY2llc10uanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAog
LSBwYXRoOiBlczYvUmVnRXhwX2lzX3N1YmNsYXNzYWJsZV9jb3JyZWN0X3Byb3RvdHlwZV9jaGFp
bi5qcwpAQCAtMTIxNSw5ICsxMjE1LDkgQEAKIC0gcGF0aDogZXM2L3dlbGwta25vd25fc3ltYm9s
c19TeW1ib2wuc3BlY2llc19leGlzdGVuY2UuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBw
YXRoOiBlczYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC5zcGVjaWVzX1JlZ0V4cC5wcm90b3R5
cGVbU3ltYm9sLnNwbGl0XS5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9sLnNwbGl0LmpzCi0g
IGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L3dl
bGwta25vd25fc3ltYm9sc19TeW1ib2wudG9QcmltaXRpdmUuanMKICAgY21kOiBydW5FUzYgOm5v
cm1hbAogLSBwYXRoOiBlczYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC50b1N0cmluZ1RhZy5q
cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9Qcm94eV9pbnRlcm5hbF9n
ZXRfY2FsbHNfUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxz
X1JlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5qcwkocmV2aXNpb24gMTk4ODk3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNf
UmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEy
ICsxLDI0IEBACiBmdW5jdGlvbiB0ZXN0KCkgewogCi0vLyBSZWdFeHAucHJvdG90eXBlW1N5bWJv
bC5zcGxpdF0gLT4gR2V0IC0+IFtbR2V0XV0KLXZhciBnZXQgPSBbXTsKLXZhciBjb25zdHJ1Y3Rv
ciA9IEZ1bmN0aW9uKCk7Ci1jb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc10gPSBPYmplY3Q7Ci12
YXIgcCA9IG5ldyBQcm94eSh7IGNvbnN0cnVjdG9yOiBjb25zdHJ1Y3RvciwgZmxhZ3M6ICcnLCBl
eGVjOiBmdW5jdGlvbigpIHsgcmV0dXJuIG51bGw7IH0gfSwgeyBnZXQ6IGZ1bmN0aW9uKG8sIGsp
IHsgZ2V0LnB1c2goayk7IHJldHVybiBvW2tdOyB9fSk7Ci1SZWdFeHAucHJvdG90eXBlW1N5bWJv
bC5zcGxpdF0uY2FsbChwLCAiIik7Ci1yZXR1cm4gZ2V0ICsgJycgPT09ICJjb25zdHJ1Y3Rvcixm
bGFncyxleGVjIjsKKyAgICAvLyBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0gLT4gR2V0
IC0+IFtbR2V0XV0KKyAgICB2YXIgZ2V0ID0gW107CisgICAgdmFyIGNvbnN0cnVjdG9yID0gRnVu
Y3Rpb24oKTsKKyAgICBjb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc10gPSBPYmplY3Q7CisgICAg
dmFyIHAgPSBuZXcgUHJveHkoeworICAgICAgICBjb25zdHJ1Y3RvcjogY29uc3RydWN0b3IsCisg
ICAgICAgIGZsYWdzOiAnJywKKyAgICAgICAgZXhlYzogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0sIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlv
bihvLCBrKSB7CisgICAgICAgICAgICBnZXQucHVzaChrKTsKKyAgICAgICAgICAgIHJldHVybiBv
W2tdOworICAgICAgICB9CisgICAgfSk7CisgICAgUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3Bs
aXRdLmNhbGwocCwgIiIpOworICAgIHByaW50KCJnZXQ6IDwiICsgZ2V0ICsgIj4iKTsKKyAgICBy
ZXR1cm4gZ2V0ICsgJycgPT09ICJjb25zdHJ1Y3RvcixmbGFncyxleGVjIjsKICAgICAgIAogfQog
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxOTg4OTcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzNSBAQAorMjAxNi0wNC0wNSAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRVM2OiBJbXBsZW1lbnQgU3RyaW5nLnByb3RvdHlw
ZS5zcGxpdCBhbmQgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjAxMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvT2JqZWN0LWdldE93blByb3BlcnR5
TmFtZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2RvbS9zdHJpbmctcHJvdG90eXBlLXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICh2YWx1ZSk6CisgICAgICAgIChUZXN0UmVn
RXhwKToKKyAgICAgICAgKG9iai5TeW1ib2wuc3BlY2llcyk6CisgICAgICAgIChsZXQuaW5kZXgu
aW4uZmxhZ3MuVGVzdFJlZ0V4cC5wcm90b3R5cGUuZ2V0IGZsYWcpOgorICAgICAgICAobGV0Lmlu
ZGV4LmluLmZsYWdzLlRlc3RSZWdFeHApOgorICAgICAgICAoZ2V0IG9iaik6CisgICAgICAgIChs
ZXQuVGVzdFJlZ0V4cFByb3RvLmdldCBmbGFncyk6CisgICAgICAgIChsZXQuVGVzdFJlZ0V4cCk6
CisgICAgICAgIChSZWdFeHBCLnByb3RvdHlwZS5nZXQgZmxhZ3MpOgorICAgICAgICAoUmVnRXhw
Qik6CisgICAgICAgIChSZWdFeHBDKToKKyAgICAgICAgKEIpOgorICAgICAgICAoQyk6CisgICAg
ICAgIChsZXQuWCk6CisgICAgICAgIChwcm94eUV4ZWMpOgorICAgICAgICAoVGVzdFJlZ0V4cC5w
cm90b3R5cGUuZXhlYyk6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Q
cm9wZXJ0eU5hbWVzLmpzOgorICAgICAgICAqIHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZl
X09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xNF9TdHJpbmcucHJvdG90eXBlLnNw
bGl0L1MxNS41LjQuMTRfQTFfVDMtZXhwZWN0ZWQudHh0OgorCiAyMDE2LTAzLTMxICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IGFyaWEtaGlkZGVuPWZhbHNlIGNh
dXNlcyB2aWRlbyBmYWxsYmFjayBjb250ZW50IHRvIGJlIGV4cG9zZWQgdG8gQVggQVBJCkluZGV4
OiBMYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxOTg4OTcpCisrKyBMYXlvdXRUZXN0cy9qcy9PYmplY3Qt
Z2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcg
KzYxLDcgQEAgUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEVycm9yKSBpcwogUEFTUyBn
ZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEVycm9yLnByb3RvdHlwZSkgaXMgWydjb25zdHJ1Y3Rv
cicsICdtZXNzYWdlJywgJ25hbWUnLCAndG9TdHJpbmcnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9w
ZXJ0eU5hbWVzKE1hdGgpIGlzIFsnRScsJ0xOMTAnLCdMTjInLCdMT0cxMEUnLCdMT0cyRScsJ1BJ
JywnU1FSVDFfMicsJ1NRUlQyJywnYWJzJywnYWNvcycsJ2Fjb3NoJywnYXNpbicsJ2FzaW5oJywn
YXRhbicsJ2F0YW4yJywnYXRhbmgnLCdjYnJ0JywnY2VpbCcsJ2NsejMyJywnY29zJywnY29zaCcs
J2V4cCcsJ2V4cG0xJywnZmxvb3InLCdmcm91bmQnLCdoeXBvdCcsJ2ltdWwnLCdsb2cnLCdsb2cx
MCcsJ2xvZzFwJywnbG9nMicsJ21heCcsJ21pbicsJ3BvdycsJ3JhbmRvbScsJ3JvdW5kJywnc2ln
bicsJ3NpbicsJ3NpbmgnLCdzcXJ0JywndGFuJywndGFuaCcsJ3RydW5jJ10KIFBBU1MgZ2V0U29y
dGVkT3duUHJvcGVydHlOYW1lcyhKU09OKSBpcyBbJ3BhcnNlJywgJ3N0cmluZ2lmeSddCi1QQVNT
IGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoU3ltYm9sKSBpcyBbJ2ZvcicsICdoYXNJbnN0YW5j
ZScsICdpdGVyYXRvcicsICdrZXlGb3InLCAnbGVuZ3RoJywgJ21hdGNoJywgJ25hbWUnLCAncHJv
dG90eXBlJywgJ3NlYXJjaCcsICdzcGVjaWVzJywgJ3RvUHJpbWl0aXZlJywgJ3RvU3RyaW5nVGFn
JywgJ3Vuc2NvcGFibGVzJ10KK1BBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhTeW1ib2wp
IGlzIFsnZm9yJywgJ2hhc0luc3RhbmNlJywgJ2l0ZXJhdG9yJywgJ2tleUZvcicsICdsZW5ndGgn
LCAnbWF0Y2gnLCAnbmFtZScsICdwcm90b3R5cGUnLCAnc2VhcmNoJywgJ3NwZWNpZXMnLCAnc3Bs
aXQnLCAndG9QcmltaXRpdmUnLCAndG9TdHJpbmdUYWcnLCAndW5zY29wYWJsZXMnXQogUEFTUyBn
ZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFN5bWJvbC5wcm90b3R5cGUpIGlzIFsnY29uc3RydWN0
b3InLCAndG9TdHJpbmcnLCAndmFsdWVPZiddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFt
ZXMoTWFwKSBpcyBbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddCiBQQVNTIGdldFNvcnRl
ZE93blByb3BlcnR5TmFtZXMoTWFwLnByb3RvdHlwZSkgaXMgWydjbGVhcicsICdjb25zdHJ1Y3Rv
cicsICdkZWxldGUnLCAnZW50cmllcycsICdmb3JFYWNoJywgJ2dldCcsICdoYXMnLCAna2V5cycs
ICdzZXQnLCAnc2l6ZScsICd2YWx1ZXMnXQpJbmRleDogTGF5b3V0VGVzdHMvanMvZG9tL3N0cmlu
Zy1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvanMvZG9tL3N0cmluZy1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE5ODg5NykKKysrIExheW91dFRlc3RzL2pzL2RvbS9zdHJpbmctcHJvdG90eXBlLXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNCw3ICsxNCw3IEBAIFBB
U1MgU3RyaW5nLnByb3RvdHlwZS5tYXRjaC5jYWxsKHVuZGVmaW4KIFBBU1MgU3RyaW5nLnByb3Rv
dHlwZS5yZXBsYWNlLmNhbGwodW5kZWZpbmVkLCAvMisvLCAnLScpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIFN0cmluZy5wcm90b3R5cGUuc2VhcmNoLmNhbGwo
dW5kZWZpbmVkLCAnNCcpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFN0cmluZy5wcm90b3R5
cGUuc2VhcmNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQuCiBQQVNTIFN0
cmluZy5wcm90b3R5cGUuc2xpY2UuY2FsbCh1bmRlZmluZWQsIDEsIDMpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFN0cmluZy5wcm90b3R5cGUuc3BsaXQuY2Fs
bCh1bmRlZmluZWQsICcyJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4K
K1BBU1MgU3RyaW5nLnByb3RvdHlwZS5zcGxpdC5jYWxsKHVuZGVmaW5lZCwgJzInKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBTdHJpbmcucHJvdG90eXBlLnNwbGl0IHJlcXVpcmVzIHRoYXQg
fHRoaXN8IG5vdCBiZSB1bmRlZmluZWQuCiBQQVNTIFN0cmluZy5wcm90b3R5cGUuc2xpY2UuY2Fs
bCh1bmRlZmluZWQsIDEsIDMpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
CiBQQVNTIFN0cmluZy5wcm90b3R5cGUuc3Vic3RyLmNhbGwodW5kZWZpbmVkLCAxLCAzKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBTdHJpbmcucHJvdG90eXBl
LnN1YnN0cmluZy5jYWxsKHVuZGVmaW5lZCwgMSwgMykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdy
ZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVn
ZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Jl
Z3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcmVnZXhw
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRl
c3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXBy
b3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5qcwkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
MjIgQEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNn
KSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30K
KworLy8gUmVnRXhwIHdpdGggb3ZlcnJpZGRlbiBbQEBzcGVjaWVzXTogVGVzdGluZyBFUzYgMjEu
Mi41LjExOiA0LiBMZXQgQyBiZSA/IFNwZWNpZXNDb25zdHJ1Y3RvcihyeCwgJVJlZ0V4cCUpLgor
KGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgcGFzc2VkID0gZmFsc2U7CisgICAgbGV0IG9yaWdEZXNj
cmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAsIFN5bWJvbC5z
cGVjaWVzKTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLCBTeW1ib2wuc3BlY2ll
cywgeworICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwYXNzZWQgPSB0
cnVlOworICAgICAgICAgICAgcmV0dXJuIC8uLzsKKyAgICAgICAgfQorICAgIH0pOworICAgIGxl
dCBvYmogPSBuZXcgUmVnRXhwOworICAgIGxldCBlcnJvclN0cjsKKworICAgIGFzc2VydCghcGFz
c2VkLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gc3BlY2llcyBjb25zdHJ1Y3RvciIp
OworICAgIFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUi
KTsKKyAgICBhc3NlcnQocGFzc2VkLCAic3BlY2llcyBjb25zdHJ1Y3RvciBub3QgY2FsbGVkIGZv
ciBSZWdFeHAgd2l0aCBvdmVycmlkZGVuIFtAQHNwZWNpZXNdIik7CisKKyAgICBPYmplY3QuZGVm
aW5lUHJvcGVydHkoUmVnRXhwLCBTeW1ib2wuc3BlY2llcywgb3JpZ0Rlc2NyaXB0b3IpOworfSko
KTsKKworLy8gU3ViY2xhc3Mgd2l0aCBvdmVycmlkZGVuIFtAQHNwZWNpZXNdOiBUZXN0aW5nIEVT
NiAyMS4yLjUuMTE6IDQuIExldCBDIGJlID8gU3BlY2llc0NvbnN0cnVjdG9yKHJ4LCAlUmVnRXhw
JSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBwYXNzZWQgPSBmYWxzZTsKKyAgICBjbGFzcyBU
ZXN0UmVnRXhwIGV4dGVuZHMgUmVnRXhwIHsgfQorICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShU
ZXN0UmVnRXhwLCBTeW1ib2wuc3BlY2llcywgeworICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBwYXNzZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIC8uLzsKKyAg
ICAgICAgfQorICAgIH0pOworICAgIGxldCBvYmogPSBuZXcgVGVzdFJlZ0V4cDsKKyAgICBsZXQg
ZXJyb3JTdHI7CisKKyAgICBhc3NlcnQoIXBhc3NlZCwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVy
cmlkZGVuIHNwZWNpZXMgY29uc3RydWN0b3IiKTsKKyAgICBSZWdFeHAucHJvdG90eXBlW1N5bWJv
bC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAgYXNzZXJ0KHBhc3NlZCwgInNwZWNp
ZXMgY29uc3RydWN0b3Igbm90IGNhbGxlZCBmb3IgUmVnRXhwIHN1YmNsYXNzIHdpdGggb3ZlcnJp
ZGRlbiBbQEBzcGVjaWVzXSIpOworfSkoKTsKKworLy8gUmVnRXhwIHN1YmNsYXNzIHdpdGggY29u
c3RydWN0b3I6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNC4gTGV0IEMgYmUgPyBTcGVjaWVzQ29u
c3RydWN0b3IocngsICVSZWdFeHAlKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGNhbGxlZCA9
IDA7CisgICAgY2xhc3MgVGVzdFJlZ0V4cCBleHRlbmRzIFJlZ0V4cCB7CisgICAgICAgIGNvbnN0
cnVjdG9yKCkgeworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgIGNhbGxlZCsrOwor
ICAgICAgICB9CisgICAgfQorICAgIGxldCBvYmogPSBuZXcgVGVzdFJlZ0V4cDsKKworICAgIGFz
c2VydChjYWxsZWQgPT0gMSwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHNwZWNpZXMg
Y29uc3RydWN0b3IiKTsKKyAgICBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChv
YmosICJzcGxpdG1lIik7CisgICAgYXNzZXJ0KGNhbGxlZCA9PSAyLCAic3BlY2llcyBjb25zdHJ1
Y3RvciBub3QgY2FsbGVkIGZvciBSZWdFeHAgc3ViY2xhc3Mgd2l0aCBjb25zdHJ1Y3RvciIpOwor
fSkoKTsKKworLy8gQW4gb2JqZWN0IHdpdGggc3BlY2llcyBjb25zdHJ1Y3RvcjogVGVzdGluZyBF
UzYgMjEuMi41LjExOiA0LiBMZXQgQyBiZSA/IFNwZWNpZXNDb25zdHJ1Y3RvcihyeCwgJVJlZ0V4
cCUpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgcGFzc2VkID0gZmFsc2U7CisgICAgbGV0IG9i
aiA9IHsgY29uc3RydWN0b3I6IHt9IH07CisgICAgb2JqLmNvbnN0cnVjdG9yW1N5bWJvbC5zcGVj
aWVzXSA9IGZ1bmN0aW9uKCkgeworICAgICAgcGFzc2VkID0gdHJ1ZTsKKyAgICAgIHJldHVybiAv
Li87CisgICAgfTsKKworICAgIGFzc2VydCghcGFzc2VkLCAidW5leHBlY3RlZCBjYWxsIHRvIG92
ZXJyaWRkZW4gc3BlY2llcyBjb25zdHJ1Y3RvciIpOworICAgIFJlZ0V4cC5wcm90b3R5cGVbU3lt
Ym9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQocGFzc2VkLCAic3Bl
Y2llcyBjb25zdHJ1Y3RvciBub3QgY2FsbGVkIGZvciBvYmplY3Qgd2l0aCBjdXN0b20gc3BlY2ll
cyBjb25zdHJ1Y3RvciIpOworfSkoKTsKKworLy8gUmVnRXhwIG9iamVjdCB3aXRoIG92ZXJyaWRk
ZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJp
bmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZsYWdzID0g
WyAiZmxhZ3MiLCAiZ2xvYmFsIiwgImlnbm9yZUNhc2UiLCAibXVsdGlsaW5lIiwgInN0aWNreSIs
ICJ1bmljb2RlIiBdOworICAgIGxldCBmbGFnVmFsdWVzID0gWyAiIiwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlIF07CisgICAgZm9yIChsZXQgaW5kZXggaW4gZmxhZ3MpIHsKKyAg
ICAgICAgKGZ1bmN0aW9uKGZsYWcsIGZsYWdWYWx1ZSkgeworICAgICAgICAgICAgbGV0IHBhc3Nl
ZCA9IGZhbHNlOworICAgICAgICAgICAgbGV0IG9iaiA9IC8uLzsKKyAgICAgICAgICAgIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShvYmosIGZsYWcsIHsKKyAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICBhc3NlcnQoIXBhc3NlZCwgInVuZXhwZWN0ZWQgY2FsbCB0byBv
dmVycmlkZGVuIGdldHRlciIpOworICAgICAgICAgICAgUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wu
c3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgICAgICAgICAgYXNzZXJ0KHBhc3NlZCwg
Ik92ZXJyaWRkZW4gcmVnRXhwT2JqLiIgKyBmbGFnICsgIiBnZXR0ZXIgd2FzIG5vdCBjYWxsZWQi
KTsKKyAgICAgICAgfSkgKGZsYWdzW2luZGV4XSwgZmxhZ1ZhbHVlc1tpbmRleF0pOworICAgIH0K
K30pKCk7CisKKy8vIFJlZ0V4cC5wcm90b3R5cGUgd2l0aCBvdmVycmlkZGVuIGZsYWdzOiBUZXN0
aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAi
ZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBmbGFncyA9IFsgImZsYWdzIiwgImds
b2JhbCIsICJpZ25vcmVDYXNlIiwgIm11bHRpbGluZSIsICJzdGlja3kiLCAidW5pY29kZSIgXTsK
KyAgICBsZXQgZmxhZ1ZhbHVlcyA9IFsgIiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSBdOworICAgIGZvciAobGV0IGluZGV4IGluIGZsYWdzKSB7CisgICAgICAgIChmdW5jdGlv
bihmbGFnLCBmbGFnVmFsdWUpIHsKKyAgICAgICAgICAgIGxldCBwYXNzZWQgPSBmYWxzZTsKKyAg
ICAgICAgICAgIGxldCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgZmxhZyk7CisKKyAgICAgICAgICAgIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShSZWdFeHAucHJvdG90eXBlLCBmbGFnLCB7CisgICAgICAgICAgICAgICAgZ2V0
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZsYWdWYWx1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIGxldCBvYmogPSAvLi87CisKKyAgICAgICAgICAgIGFz
c2VydCghcGFzc2VkLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gZ2V0dGVyIik7Cisg
ICAgICAgICAgICBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxp
dG1lIik7CisgICAgICAgICAgICBhc3NlcnQocGFzc2VkLCAiT3ZlcnJpZGRlbiBSZWdFeHAucHJv
dG90eXBlLiIgKyBmbGFnICsgIiBnZXR0ZXIgd2FzIG5vdCBjYWxsZWQiKTsKKworICAgICAgICAg
ICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcsIG9yaWdEZXNj
cmlwdG9yKTsKKyAgICAgICAgfSkgKGZsYWdzW2luZGV4XSwgZmxhZ1ZhbHVlc1tpbmRleF0pOwor
ICAgIH0KK30pKCk7CisKKy8vIFJlZ0V4cCBzdWJjbGFzcyB3aXRoIG92ZXJyaWRkZW4gZmxhZ3M6
IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQo
cngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZsYWdzID0gWyAiZmxhZ3Mi
LCAiZ2xvYmFsIiwgImlnbm9yZUNhc2UiLCAibXVsdGlsaW5lIiwgInN0aWNreSIsICJ1bmljb2Rl
IiBdOworICAgIGxldCBmbGFnVmFsdWVzID0gWyAiIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlIF07CisgICAgZm9yIChsZXQgaW5kZXggaW4gZmxhZ3MpIHsKKyAgICAgICAgKGZ1
bmN0aW9uKGZsYWcsIGZsYWdWYWx1ZSkgeworICAgICAgICAgICAgbGV0IHBhc3NlZCA9IGZhbHNl
OworICAgICAgICAgICAgY2xhc3MgVGVzdFJlZ0V4cCBleHRlbmRzIFJlZ0V4cCB7IGdldCBbZmxh
Z10oKSB7IHBhc3NlZCA9IHRydWU7IHJldHVybiBmbGFnVmFsdWU7IH0gfTsKKyAgICAgICAgICAg
IGxldCBvYmogPSBuZXcgVGVzdFJlZ0V4cCgvLi8pOworCisgICAgICAgICAgICBhc3NlcnQoIXBh
c3NlZCwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIGdldHRlciIpOworICAgICAgICAg
ICAgUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOwor
ICAgICAgICAgICAgYXNzZXJ0KHBhc3NlZCwgIk92ZXJyaWRkZW4gUmVnRXhwLnByb3RvdHlwZS4i
ICsgZmxhZyArICIgZ2V0dGVyIHdhcyBub3QgY2FsbGVkIik7CisKKyAgICAgICAgfSkgKGZsYWdz
W2luZGV4XSwgZmxhZ1ZhbHVlc1tpbmRleF0pOworICAgIH0KK30pKCk7CisKKy8vIFJlZ0V4cCBz
dWJjbGFzcyB3aXRoIG92ZXJyaWRkZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4g
TGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAo
KSB7CisgICAgbGV0IGZsYWdzID0gWyAiZmxhZ3MiLCAiZ2xvYmFsIiwgImlnbm9yZUNhc2UiLCAi
bXVsdGlsaW5lIiwgInN0aWNreSIsICJ1bmljb2RlIiBdOworICAgIGxldCBmbGFnVmFsdWVzID0g
WyAiIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlIF07CisgICAgZm9yIChsZXQg
aW5kZXggaW4gZmxhZ3MpIHsKKyAgICAgICAgKGZ1bmN0aW9uKGZsYWcsIGZsYWdWYWx1ZSkgewor
ICAgICAgICAgICAgbGV0IHBhc3NlZCA9IGZhbHNlOworICAgICAgICAgICAgY2xhc3MgVGVzdFJl
Z0V4cCBleHRlbmRzIFJlZ0V4cCB7IH07CisgICAgICAgICAgICBsZXQgb2JqID0gbmV3IFRlc3RS
ZWdFeHAoLy4vKTsKKworICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgZmxh
ZywgeworICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgIHBhc3NlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbGFnVmFsdWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGFzc2Vy
dCghcGFzc2VkLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gZ2V0dGVyIik7CisgICAg
ICAgICAgICBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1l
Iik7CisgICAgICAgICAgICBhc3NlcnQocGFzc2VkLCAiT3ZlcnJpZGRlbiBzdWJjbGFzcyAiICsg
ZmxhZyArICIgZ2V0dGVyIHdhcyBub3QgY2FsbGVkIik7CisKKyAgICAgICAgfSkgKGZsYWdzW2lu
ZGV4XSwgZmxhZ1ZhbHVlc1tpbmRleF0pOworICAgIH0KK30pKCk7CisKKy8vIFByb3hpZWQgUmVn
RXhwOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8g
R2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBwYXNzZWQgPSBmYWxz
ZTsKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkoLy4vLCB7CisgICAgICAgIGdldDogZnVuY3Rp
b24ob2JqLCBwcm9wKSB7CisgICAgICAgICAgICBpZiAocHJvcCA9PT0gImZsYWdzIikKKyAgICAg
ICAgICAgICAgICBwYXNzZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIG9ialtwcm9wXTsK
KyAgICAgICAgfQorICAgIH0pOworICAgIGxldCBvYmogPSBwcm94eTsKKworICAgIGFzc2VydCgh
cGFzc2VkLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gZ2V0dGVyIik7CisgICAgUmVn
RXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgIGFz
c2VydChwYXNzZWQsICJQcm94eSBmbGFncyBnZXR0ZXIgd2FzIG5vdCBjYWxsZWQiKTsKK30pKCk7
CisKKy8vIEFueSBvYmplY3Qgd2l0aCBzcGVjaWVzIGNvbnN0cnVjdG9yOiBUZXN0aW5nIEVTNiAy
MS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSku
CisoZnVuY3Rpb24gKCkgeworICAgIGxldCBwYXNzZWQgPSBmYWxzZTsKKyAgICBsZXQgb2JqID0g
eyBjb25zdHJ1Y3Rvcjoge30gfTsKKyAgICBvYmouY29uc3RydWN0b3JbU3ltYm9sLnNwZWNpZXNd
ID0gZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gLy4vOworICAgIH07CisKKyAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkob2JqLCAiZmxhZ3MiLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBwYXNzZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICB9CisgICAgfSk7CisKKyAgICBhc3NlcnQoIXBhc3NlZCwgInVuZXhwZWN0ZWQgY2FsbCB0
byBvdmVycmlkZGVuIGdldHRlciIpOworICAgIFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0
XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQocGFzc2VkLCAiT3ZlcnJpZGRlbiBv
YmouZmxhZ3MgZ2V0dGVyIHdhcyBub3QgY2FsbGVkIik7Cit9KSgpOworCisvLyBBbnkgb2JqZWN0
IHdpdGggY3VzdG9tIHByb3RvdHlwZTogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxh
Z3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAg
ICBsZXQgcGFzc2VkID0gZmFsc2U7CisgICAgbGV0IFRlc3RSZWdFeHBQcm90byA9IHsKKyAgICAg
ICAgZ2V0IGZsYWdzKCkgeworICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAg
IHJldHVybiAiIjsKKyAgICAgICAgfSwKKyAgICAgICAgdG9TdHJpbmcoKSB7CisgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fcmVnZXgudG9TdHJpbmcoKTsKKyAgICAgICAgfSwKKyAgICB9CisgICAg
VGVzdFJlZ0V4cFByb3RvLl9fcHJvdG9fXyA9IFJlZ0V4cC5wcm90b3R5cGU7CisKKyAgICBsZXQg
VGVzdFJlZ0V4cCA9IGZ1bmN0aW9uKHJlZ2V4KSB7CisgICAgICAgIHRoaXMuX3JlZ2V4ID0gbmV3
IFJlZ0V4cChyZWdleCk7CisgICAgfQorICAgIFRlc3RSZWdFeHAucHJvdG90eXBlID0gVGVzdFJl
Z0V4cFByb3RvOworICAgIFRlc3RSZWdFeHBQcm90by5jb25zdHJ1Y3RvciA9IFRlc3RSZWdFeHA7
CisKKyAgICBsZXQgb2JqID0gbmV3IFRlc3RSZWdFeHAoLy4vKTsKKworICAgIGFzc2VydCghcGFz
c2VkLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gZ2V0dGVyIik7CisgICAgUmVnRXhw
LnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgIGFzc2Vy
dChwYXNzZWQsICJPdmVycmlkZGVuIGZsYWdzIGdldHRlciB3YXMgbm90IGNhbGxlZCIpOworCit9
KSgpOworCisvLyAyIGxldmVscyBvZiBzdWJjbGFzc2VzOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6
IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rp
b24gKCkgeworICAgIGxldCBwYXNzZWQgPSBmYWxzZTsKKworICAgIGNsYXNzIFJlZ0V4cEIgZXh0
ZW5kcyBSZWdFeHAgeworICAgICAgICBnZXQgZmxhZ3MoKSB7CisgICAgICAgICAgICBwYXNzZWQg
PSB0cnVlOworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisgICAgfQorICAgIGNs
YXNzIFJlZ0V4cEMgZXh0ZW5kcyBSZWdFeHBCIHsgfQorCisgICAgYXNzZXJ0KFJlZ0V4cEIuX19w
cm90b19fID09IFJlZ0V4cCk7CisgICAgYXNzZXJ0KFJlZ0V4cEMuX19wcm90b19fID09IFJlZ0V4
cEIpOworCisgICAgbGV0IG9iaiA9IG5ldyBSZWdFeHBDKCk7CisKKyAgICBhc3NlcnQoIXBhc3Nl
ZCwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIGdldHRlciIpOworICAgIFJlZ0V4cC5w
cm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQo
cGFzc2VkLCAiT3ZlcnJpZGRlbiBmbGFncyBnZXR0ZXIgd2FzIG5vdCBjYWxsZWQiKTsKK30pKCk7
CisKKy8vIDIgbGV2ZWxzIG9mIHN1YmNsYXNzZXMgd2l0aCBzdWJzdGl0dXRlZCBwcm90b3R5cGUg
YmVmb3JlIGluc3RhbnRpYXRpb246IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdz
IGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAg
bGV0IGZsYWdzV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGV4ZWNXYXNDYWxsZWQgPSBmYWxz
ZTsKKworICAgIGNsYXNzIEIgZXh0ZW5kcyBSZWdFeHAgeyB9CisgICAgY2xhc3MgQyBleHRlbmRz
IEIgeyB9CisKKyAgICBhc3NlcnQoQi5fX3Byb3RvX18gPT09IFJlZ0V4cCk7CisgICAgYXNzZXJ0
KEMuX19wcm90b19fID09PSBCKTsKKyAgICBhc3NlcnQoQi5wcm90b3R5cGUuX19wcm90b19fID09
PSBSZWdFeHAucHJvdG90eXBlKTsKKyAgICBhc3NlcnQoQy5wcm90b3R5cGUuX19wcm90b19fID09
PSBCLnByb3RvdHlwZSk7CisKKyAgICBsZXQgWCA9IGZ1bmN0aW9uICgpIHt9CisgICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KFgucHJvdG90eXBlLCAiZmxhZ3MiLCB7CisgICAgICAgIGdldDogZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBmbGFnc1dhc0NhbGxlZCA9IHRydWU7CisgICAgICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoWC5wcm90b3R5cGUsICJleGVjIiwgeworICAgICAgICB2YWx1ZTogZnVuY3Rpb24oc3RyKSB7
CisgICAgICAgICAgICBleGVjV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiAv
Li8uZXhlYyhzdHIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICAvLyBNb25rZXkgd2l0aCB0
aGUgcHJvdG90eXBlIGNoYWluIGJlZm9yZSBpbnN0YW50aWF0aW5nIEMuCisgICAgWC5fX3Byb3Rv
X18gPSBSZWdFeHA7CisgICAgWC5wcm90b3R5cGUuX19wcm90b19fID0gUmVnRXhwLnByb3RvdHlw
ZTsKKyAgICBDLl9fcHJvdG9fXyA9IFg7CisgICAgQy5wcm90b3R5cGUuX19wcm90b19fID0gWC5w
cm90b3R5cGU7CisKKyAgICBhc3NlcnQoWC5fX3Byb3RvX18gPT09IFJlZ0V4cCk7CisgICAgYXNz
ZXJ0KEMuX19wcm90b19fID09PSBYKTsKKyAgICBhc3NlcnQoWC5wcm90b3R5cGUuX19wcm90b19f
ID09PSBSZWdFeHAucHJvdG90eXBlKTsKKyAgICBhc3NlcnQoQy5wcm90b3R5cGUuX19wcm90b19f
ID09PSBYLnByb3RvdHlwZSk7CisKKyAgICBsZXQgb2JqID0gbmV3IEMoKTsKKworICAgIGFzc2Vy
dCghZmxhZ3NXYXNDYWxsZWQsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBnZXR0ZXIi
KTsKKyAgICBhc3NlcnQoIWV4ZWNXYXNDYWxsZWQsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJp
ZGRlbiBleGVjIik7CisgICAgUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2Jq
LCAic3BsaXRtZSIpOworICAgIGFzc2VydChmbGFnc1dhc0NhbGxlZCwgIk92ZXJyaWRkZW4gZmxh
Z3MgZ2V0dGVyIHdhcyBub3QgY2FsbGVkIik7CisgICAgYXNzZXJ0KGV4ZWNXYXNDYWxsZWQsICJP
dmVycmlkZGVuIGV4ZWMgd2FzIG5vdCBjYWxsZWQiKTsKK30pKCk7CisKKy8vIDIgbGV2ZWxzIG9m
IHN1YmNsYXNzZXMgd2l0aCBzdWJzdGl0dXRlZCBwcm90b3R5cGUgYWZ0ZXIgaW5zdGFudGlhdGlv
bjogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdl
dChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZmxhZ3NXYXNDYWxsZWQg
PSBmYWxzZTsKKyAgICBsZXQgZXhlY1dhc0NhbGxlZCA9IGZhbHNlOworCisgICAgY2xhc3MgQiBl
eHRlbmRzIFJlZ0V4cCB7IH0KKyAgICBjbGFzcyBDIGV4dGVuZHMgQiB7IH0KKworICAgIGFzc2Vy
dChCLl9fcHJvdG9fXyA9PT0gUmVnRXhwKTsKKyAgICBhc3NlcnQoQy5fX3Byb3RvX18gPT09IEIp
OworICAgIGFzc2VydChCLnByb3RvdHlwZS5fX3Byb3RvX18gPT09IFJlZ0V4cC5wcm90b3R5cGUp
OworICAgIGFzc2VydChDLnByb3RvdHlwZS5fX3Byb3RvX18gPT09IEIucHJvdG90eXBlKTsKKwor
ICAgIGxldCBYID0gZnVuY3Rpb24gKCkge30KKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoWC5w
cm90b3R5cGUsICJmbGFncyIsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGZsYWdzV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAg
ICAgfQorICAgIH0pOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShYLnByb3RvdHlwZSwgImV4
ZWMiLCB7CisgICAgICAgIHZhbHVlOiBmdW5jdGlvbihzdHIpIHsKKyAgICAgICAgICAgIGV4ZWNX
YXNDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIC8uLy5leGVjKHN0cik7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIC8vIEluc3RhbnRpYXRlIEMgYmVmb3JlIG1vbmtleWluZyB3
aXRoIHRoZSBwcm90b3R5cGUgY2hhaW4uCisgICAgbGV0IG9iaiA9IG5ldyBDKCk7CisKKyAgICBY
Ll9fcHJvdG9fXyA9IFJlZ0V4cDsKKyAgICBYLnByb3RvdHlwZS5fX3Byb3RvX18gPSBSZWdFeHAu
cHJvdG90eXBlOworICAgIEMuX19wcm90b19fID0gWDsKKyAgICBDLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBYLnByb3RvdHlwZTsKKworICAgIGFzc2VydChYLl9fcHJvdG9fXyA9PT0gUmVnRXhwKTsK
KyAgICBhc3NlcnQoQy5fX3Byb3RvX18gPT09IFgpOworICAgIGFzc2VydChYLnByb3RvdHlwZS5f
X3Byb3RvX18gPT09IFJlZ0V4cC5wcm90b3R5cGUpOworICAgIGFzc2VydChDLnByb3RvdHlwZS5f
X3Byb3RvX18gPT09IFgucHJvdG90eXBlKTsKKworICAgIGFzc2VydCghZmxhZ3NXYXNDYWxsZWQs
ICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBnZXR0ZXIiKTsKKyAgICBhc3NlcnQoIWV4
ZWNXYXNDYWxsZWQsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBleGVjIik7CisgICAg
UmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAg
IGFzc2VydChmbGFnc1dhc0NhbGxlZCwgIk92ZXJyaWRkZW4gZmxhZ3MgZ2V0dGVyIHdhcyBub3Qg
Y2FsbGVkIik7CisgICAgYXNzZXJ0KGV4ZWNXYXNDYWxsZWQsICJPdmVycmlkZGVuIGV4ZWMgd2Fz
IG5vdCBjYWxsZWQiKTsKK30pKCk7CisKKy8vIDIgbGV2ZWxzIG9mIHN1YmNsYXNzZXMgd2l0aCBw
cm94aWVkIHByb3RvdHlwZTogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUg
PyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQg
ZmxhZ3NXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgZXhlY1dhc0NhbGxlZCA9IGZhbHNlOwor
CisgICAgY2xhc3MgQiBleHRlbmRzIFJlZ0V4cCB7IH07CisKKyAgICBhc3NlcnQoQi5fX3Byb3Rv
X18gPT09IFJlZ0V4cCk7CisgICAgYXNzZXJ0KEIucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gUmVn
RXhwLnByb3RvdHlwZSk7CisKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkoUmVnRXhwLnByb3Rv
dHlwZSwgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKG9iaiwgcHJvcCkgeworICAgICAgICAgICAg
ZnVuY3Rpb24gcHJveHlFeGVjKHN0cikgeworICAgICAgICAgICAgICAgIGV4ZWNXYXNDYWxsZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiAvLi8uZXhlYyhzdHIpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAocHJvcCA9PT0gImZsYWdzIikKKyAgICAgICAgICAgICAg
ICBmbGFnc1dhc0NhbGxlZCA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChwcm9wID09PSAi
ZXhlYyIpCisgICAgICAgICAgICAgICAgcmV0dXJuIHByb3h5RXhlYzsKKyAgICAgICAgICAgIHJl
dHVybiBvYmpbcHJvcF07CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBCLnByb3RvdHlwZS5fX3By
b3RvX18gPSBwcm94eTsKKworICAgIC8vIEluc3RhbnRpYXRpbmcgQiBiZWZvcmUgbW9ua2V5IHdp
dGggdGhlIHByb3RvdHlwZSBjaGFpbi4KKyAgICBsZXQgb2JqID0gbmV3IEIoKTsKKworICAgIGFz
c2VydCghZmxhZ3NXYXNDYWxsZWQsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBnZXR0
ZXIiKTsKKyAgICBhc3NlcnQoIWV4ZWNXYXNDYWxsZWQsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3Zl
cnJpZGRlbiBleGVjIik7CisgICAgUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwo
b2JqLCAic3BsaXRtZSIpOworICAgIGFzc2VydChmbGFnc1dhc0NhbGxlZCwgIk92ZXJyaWRkZW4g
ZmxhZ3MgZ2V0dGVyIHdhcyBub3QgY2FsbGVkIik7CisgICAgYXNzZXJ0KGV4ZWNXYXNDYWxsZWQs
ICJPdmVycmlkZGVuIGV4ZWMgd2FzIG5vdCBjYWxsZWQiKTsKK30pKCk7CisKKy8vIFJlZ0V4cC5w
cm90b3R5cGUgd2l0aCBvdmVycmlkZGVuIGV4ZWM6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogMTku
Yi4gTGV0IHogYmUgPyBSZWdFeHBFeGVjKHNwbGl0dGVyLCBTKS4KKyhmdW5jdGlvbiAoKSB7Cisg
ICAgbGV0IHBhc3NlZCA9IGZhbHNlOworICAgIGxldCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgImV4ZWMiKTsKKworICAg
IGxldCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90
eXBlLCAiZXhlYyIpOworICAgIGxldCBvcmlnRXhlYyA9IGRlc2MudmFsdWU7CisKKyAgICBsZXQg
b2JqID0gLy4vOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWdFeHAucHJvdG90eXBlLCAi
ZXhlYyIsIHsKKyAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHN0cikgeworICAgICAgICAgICAgcGFz
c2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBvcmlnRXhlYy5jYWxsKHRoaXMsIHN0cik7
CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGFzc2VydCghcGFzc2VkLCAidW5leHBlY3RlZCBj
YWxsIHRvIG92ZXJyaWRkZW4gZXhlYyIpOworICAgIFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNw
bGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQocGFzc2VkLCAiT3ZlcnJpZGRl
biBSZWdFeHAucHJvdG90eXBlLmV4ZWMgd2FzIG5vdCBjYWxsZWQiKTsKKworICAgIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShSZWdFeHAucHJvdG90eXBlLCAiZXhlYyIsIG9yaWdEZXNjcmlwdG9yKTsK
K30pKCk7CisKKy8vIFJlZ0V4cCBzdWJjbGFzcyB3aXRoIG92ZXJyaWRkZW4gZXhlYzogVGVzdGlu
ZyBFUzYgMjEuMi41LjExOiAxOS5iLiBMZXQgeiBiZSA/IFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFMp
LgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgcGFzc2VkID0gZmFsc2U7CisgICAgY2xhc3MgVGVz
dFJlZ0V4cCBleHRlbmRzIFJlZ0V4cCB7CisgICAgICAgIGV4ZWMoc3RyKSB7CisgICAgICAgICAg
ICBwYXNzZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIFJlZ0V4cC5wcm90b3R5cGUuZXhl
Yy5jYWxsKHRoaXMsIHN0cik7CisgICAgICAgIH0KKyAgICB9OworICAgIGxldCBvYmogPSBuZXcg
VGVzdFJlZ0V4cCgvLi8pOworCisgICAgYXNzZXJ0KCFwYXNzZWQsICJ1bmV4cGVjdGVkIGNhbGwg
dG8gb3ZlcnJpZGRlbiBleGVjIik7CisgICAgUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRd
LmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgIGFzc2VydChwYXNzZWQsICJPdmVycmlkZGVuIHN1
YmNsYXNzIGV4ZWMgd2FzIG5vdCBjYWxsZWQiKTsKK30pKCk7CisKSW5kZXg6IExheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFt
ZXMuanMJKHJldmlzaW9uIDE5ODg5NykKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9P
YmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcwkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAs
NyBAQCB2YXIgZXhwZWN0ZWRQcm9wZXJ0eU5hbWVzU2V0ID0gewogICAgICJFcnJvci5wcm90b3R5
cGUiOiAiWydjb25zdHJ1Y3RvcicsICdtZXNzYWdlJywgJ25hbWUnLCAndG9TdHJpbmcnXSIsCiAg
ICAgIk1hdGgiOiAiWydFJywnTE4xMCcsJ0xOMicsJ0xPRzEwRScsJ0xPRzJFJywnUEknLCdTUVJU
MV8yJywnU1FSVDInLCdhYnMnLCdhY29zJywnYWNvc2gnLCdhc2luJywnYXNpbmgnLCdhdGFuJywn
YXRhbjInLCdhdGFuaCcsJ2NicnQnLCdjZWlsJywnY2x6MzInLCdjb3MnLCdjb3NoJywnZXhwJywn
ZXhwbTEnLCdmbG9vcicsJ2Zyb3VuZCcsJ2h5cG90JywnaW11bCcsJ2xvZycsJ2xvZzEwJywnbG9n
MXAnLCdsb2cyJywnbWF4JywnbWluJywncG93JywncmFuZG9tJywncm91bmQnLCdzaWduJywnc2lu
Jywnc2luaCcsJ3NxcnQnLCd0YW4nLCd0YW5oJywndHJ1bmMnXSIsCiAgICAgIkpTT04iOiAiWydw
YXJzZScsICdzdHJpbmdpZnknXSIsCi0gICAgIlN5bWJvbCI6ICJbJ2ZvcicsICdoYXNJbnN0YW5j
ZScsICdpdGVyYXRvcicsICdrZXlGb3InLCAnbGVuZ3RoJywgJ21hdGNoJywgJ25hbWUnLCAncHJv
dG90eXBlJywgJ3NlYXJjaCcsICdzcGVjaWVzJywgJ3RvUHJpbWl0aXZlJywgJ3RvU3RyaW5nVGFn
JywgJ3Vuc2NvcGFibGVzJ10iLAorICAgICJTeW1ib2wiOiAiWydmb3InLCAnaGFzSW5zdGFuY2Un
LCAnaXRlcmF0b3InLCAna2V5Rm9yJywgJ2xlbmd0aCcsICdtYXRjaCcsICduYW1lJywgJ3Byb3Rv
dHlwZScsICdzZWFyY2gnLCAnc3BlY2llcycsICdzcGxpdCcsICd0b1ByaW1pdGl2ZScsICd0b1N0
cmluZ1RhZycsICd1bnNjb3BhYmxlcyddIiwKICAgICAiU3ltYm9sLnByb3RvdHlwZSI6ICJbJ2Nv
bnN0cnVjdG9yJywgJ3RvU3RyaW5nJywgJ3ZhbHVlT2YnXSIsCiAgICAgIk1hcCI6ICJbJ2xlbmd0
aCcsICduYW1lJywgJ3Byb3RvdHlwZSddIiwKICAgICAiTWFwLnByb3RvdHlwZSI6ICJbJ2NsZWFy
JywgJ2NvbnN0cnVjdG9yJywgJ2RlbGV0ZScsICdlbnRyaWVzJywgJ2ZvckVhY2gnLCAnZ2V0Jywg
J2hhcycsICdrZXlzJywgJ3NldCcsICdzaXplJywgJ3ZhbHVlcyddIiwKSW5kZXg6IExheW91dFRl
c3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUu
NS40LzE1LjUuNC4xNF9TdHJpbmcucHJvdG90eXBlLnNwbGl0L1MxNS41LjQuMTRfQTFfVDMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2Uv
MTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xNF9TdHJpbmcucHJv
dG90eXBlLnNwbGl0L1MxNS41LjQuMTRfQTFfVDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxOTg4
OTcpCisrKyBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3Rz
LzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTRfU3RyaW5nLnByb3RvdHlwZS5zcGxpdC9TMTUu
NS40LjE0X0ExX1QzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IFMxNS41LjQuMTRfQTFfVDMKIAotRkFJTCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKK0ZBSUwgVHlw
ZUVycm9yOiBTdHJpbmcucHJvdG90eXBlLnNwbGl0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBi
ZSB1bmRlZmluZWQKIAogVEVTVCBDT01QTEVURQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275817</attachid>
            <date>2016-04-06 14:16:18 -0700</date>
            <delta_ts>2016-04-12 09:36:49 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-156013.patch</filename>
            <type>text/plain</type>
            <size>93545</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5MTA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBA
CisyMDE2LTA0LTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
UzY6IEltcGxlbWVudCBTdHJpbmcucHJvdG90eXBlLnNwbGl0IGFuZCBSZWdFeHAucHJvdG90eXBl
W0BAc3BsaXRdLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU2MDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJ1aWx0aW5zL0dsb2JhbE9iamVjdC5qczoKKyAgICAgICAgKHNwZWNpZXNDb25zdHJ1Y3Rvcik6
CisgICAgICAgICogYnVpbHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qczoKKyAgICAgICAgLSByZWZh
Y3RvcmVkIHRvIHVzZSB0aGUgQHNwZWNpZXNDb25zdHJ1Y3RvciBpbnRlcm5hbCBmdW5jdGlvbi4K
KworICAgICAgICAqIGJ1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qczoKKyAgICAgICAgKGFkdmFu
Y2VTdHJpbmdJbmRleCk6CisgICAgICAgIC0gcmVmYWN0b3JlZCBmcm9tIEBhZHZhbmNlU3RyaW5n
SW5kZXhVbmljb2RlKCkgdG8gYmUgbWF0Y2ggdGhlIHNwZWMuCisgICAgICAgICAgQmVuY2htYXJr
cyBzaG93IHRoYXQgdGhlcmUncyBubyBhZHZhbnRhZ2UgaW4gZG9pbmcgdGhlIHVuaWNvZGUgY2hl
Y2sgb3V0c2lkZQorICAgICAgICAgIG9mIHRoZSBhZHZhbmNlU3RyaW5nSW5kZXhVbmljb2RlIHBh
cnQuICBTbywgSSBzaW1wbGlmaWVkIHRoZSBjb2RlIHRvIG1hdGNoIHRoZQorICAgICAgICAgIHNw
ZWMgKGVzcGVjaWFsbHkgc2luY2UgQEBzcGxpdCBuZWVkcyB0byBjYWxsIGFkdmFuY2VTdHJpbmdJ
bmRleCBmcm9tIG1vcmUgdGhhbgorICAgICAgICAgIDEgbG9jYXRpb24pLgorICAgICAgICAobWF0
Y2gpOgorICAgICAgICAtIFJlbW92ZWQgYW4gdW5uZWNlc3NhcnkgY2FsbCB0byBAT2JqZWN0IGJl
Y2F1c2UgaXQgd2FzIGFscmVhZHkgcHJvdmVuIGFib3ZlLgorICAgICAgICAtIENoYW5nZWQgdG8g
dXNlIGFkdmFuY2VTdHJpbmdJbmRleCBpbnN0ZWFkIG9mIGFkdmFuY2VTdHJpbmdJbmRleFVuaWNv
ZGUuCisgICAgICAgICAgQWdhaW4sIHRoZXJlJ3Mgbm8gcGVyZiByZWdyZXNzaW9uIGZvciB0aGlz
LgorICAgICAgICAocmVnRXhwRXhlYyk6CisgICAgICAgIChtYXgpOgorICAgICAgICAobWluKToK
KyAgICAgICAgKHNwbGl0KToKKyAgICAgICAgKGFkdmFuY2VTdHJpbmdJbmRleFVuaWNvZGUpOiBE
ZWxldGVkLgorCisgICAgICAgICogYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzOgorICAgICAg
ICAoc3BsaXQpOgorICAgICAgICAtIE1vZGlmaWVkIHRvIHVzZSBSZWdFeHAucHJvdG90eXBlW0BA
c3BsaXRdLgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuaDoKKyAgICAgICAgLSBBZGRlZCB0aGUgQEBzcGxpdCBzeW1ib2wuCisKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9FQ01BU2Ny
aXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OmVzU3Bl
Y0lzQ2FsbGFibGUpOgorICAgICAgICAoSlNDOjplc1NwZWNJc0NvbnN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6ZXNTcGVjSXNSZWdFeHApOgorICAgICAgICAqIHJ1bnRpbWUvRUNNQVNjcmlwdFNw
ZWNJbnRlcm5hbEZ1bmN0aW9ucy5oOiBBZGRlZC4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisKKyAg
ICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAtIE1hZGUgYWR2YW5jZVN0
cmluZ1VuaWNvZGUoKSBwdWJsaWMgc28gdGhhdCBpdCBjYW4gYmUgcmUtdXNlZCBieSB0aGUgcmVn
ZXhwIHNwbGl0CisgICAgICAgICAgZmFzdCBwYXRoLgorCisgICAgICAgICogcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jRXhlYyk6CisgICAgICAgIChK
U0M6OmFkdmFuY2VTdHJpbmdJbmRleCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY1Nw
bGl0RmFzdCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaDoKKworICAgICAg
ICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OmpzU3RyaW5nV2l0aFJl
dXNlKToKKyAgICAgICAgKEpTQzo6anNTdWJzdHJpbmcpOgorICAgICAgICAtIEhvaXN0ZWQgc29t
ZSB1dGlsaXR5IGZ1bmN0aW9ucyBmcm9tIFN0cmluZ1Byb3RvdHlwZS5jcHAgc28gdGhhdCB0aGV5
IGNhbiBiZQorICAgICAgICAgIHJldXNlZCBieSB0aGUgcmVnZXhwIHNwbGl0IGZhc3QgcGF0aC4K
KworICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
U3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY1NwbGl0RmFzdCk6CisgICAgICAgIChKU0M6OmpzU3RyaW5nV2l0aFJldXNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6anNTdWJzdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpzdHJpbmdQcm90b0Z1bmNTcGxpdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuaDoKKworICAgICAgICAqIHRlc3RzL2VzNi55YW1sOgorCiAyMDE2LTA0LTA2
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ0V4
cCBjb25zdHJ1Y3RvciBzaG91bGQgdXNlIFN5bWJvbC5tYXRjaCBhbmQgb3RoZXIgcHJvcGVydGll
cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5OTEwNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQ5LDYgKzIwNDksOCBAQAogCQlGRTFDMEZGRjFC
MTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUMwRkZFMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRp
b24uY3BwICovOyB9OwogCQlGRTIwQ0U5RDE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTIwQ0U5
QjE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgKi87IH07CiAJCUZFMjBDRTlFMTVG
MDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9v
cC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZF
MzE4RkRGMUNBQzk4MjcwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25z
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzE4
RkREMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNw
cCAqLzsgfTsKKwkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50
ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMzE4RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFs
RnVuY3Rpb25zLmggKi87IH07CiAJCUZFMzg0RUU1MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxh
clZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
Mzg0RUUxMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLzsgfTsKIAkJRkUzODRF
RTYxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUyMUFEREI3QUQwMDU1REUyQyAvKiBKU0Rv
bGxhclZNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRkUzODRFRTcxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODRFRTMxQURE
QjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwICovOyB9OwpAQCAtNDI5MSw2
ICs0MjkzLDggQEAKIAkJRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTIwQ0U5QjE1RjA0QTk1MDBERjM0MzAgLyogTExJ
bnRDTG9vcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludENM
b29wLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENMb29wLmg7IHBhdGggPSBsbGludC9M
TEludENMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzE4RkREMUNBQzhD
NTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5j
dGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTMxOEZERTFDQUM4QzUz
MDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUxMUFEREI3QUQwMDU1REUyQyAv
KiBKU0RvbGxhclZNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RG9sbGFyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM4NEVFMjFBRERC
N0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0RvbGxhclZNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUz
MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTU2OSw2ICs1NTczLDggQEAKIAkJCQkwRkUwNTAwRTFB
QTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmggKi8sCiAJCQkJQTcwNDQ3
RUIxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmNwcCAqLywKIAkJCQlBNzA0NDdFQzE3
QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRleHQuaCAqLywKKwkJCQlGRTMxOEZERDFDQUM4QzUz
MDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAgKi8sCisJCQkJ
RkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlv
bnMuaCAqLywKIAkJCQkyQUQyRURGQTE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2Rl
LmggKi8sCiAJCQkJQkMzMzdCRUEwRTFCMDBDQjAwNzY5MThBIC8qIEVycm9yLmNwcCAqLywKIAkJ
CQlCQzMwNDYwNjBFMUY0OTdGMDAzMjMyQ0YgLyogRXJyb3IuaCAqLywKQEAgLTc5MjUsNiArNzkz
MSw3IEBACiAJCQkJNTJDMDYxMUYxQUE1MUUxQzAwQjRBREJBIC8qIFJ1bnRpbWVUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3NUEgLyogU2FtcGxpbmdDb3Vu
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyODFBQTkwOTU2MDBEMzNCMzMgLyogU2Nv
cGVkQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTMxOEZFMDFDQUM5ODJGMDBERkND
NTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtODc0Miw2ICs4NzQ5LDcgQEAK
IAkJCQlGRTUwNjg2NzFBRTI1RTI4MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3N0E0MjNEMTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFj
dEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NUMxOTQxNzI3NkU0NjAwQ0VBQkZEIC8q
IERGR0Fic3RyYWN0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUzMThGREYxQ0FDOTgy
NzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZEM0U0MDExQjYxOEFBRjAwQzgwRTFFIC8qIERGR0FkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjE4RDND
RjFCNTVBNkUwMDAyQzVDOUYgLyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMkREODExMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVu
dHNFbGltaW5hdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCShyZXZpc2lvbiAxOTkxMDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNjAsMyArNjEsMTggQEAgZnVuY3Rpb24gc3BlY2llc0dldHRlcigpCiB7CiAg
ICAgcmV0dXJuIHRoaXM7CiB9CisKK2Z1bmN0aW9uIHNwZWNpZXNDb25zdHJ1Y3RvcihvYmosIGRl
ZmF1bHRDb25zdHJ1Y3RvcikKK3sKKyAgICB2YXIgY29uc3RydWN0b3IgPSBvYmouY29uc3RydWN0
b3I7CisgICAgaWYgKGNvbnN0cnVjdG9yID09PSBAdW5kZWZpbmVkKQorICAgICAgICByZXR1cm4g
ZGVmYXVsdENvbnN0cnVjdG9yOworICAgIGlmICghQGlzT2JqZWN0KGNvbnN0cnVjdG9yKSkKKyAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoInx0aGlzfC5jb25zdHJ1Y3RvciBpcyBub3QgYW4g
T2JqZWN0IG9yIHVuZGVmaW5lZCIpOworICAgIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JbQHN5
bWJvbFNwZWNpZXNdOworICAgIGlmIChjb25zdHJ1Y3RvciA9PSBudWxsKQorICAgICAgICByZXR1
cm4gZGVmYXVsdENvbnN0cnVjdG9yOworICAgIGlmIChAaXNDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rv
cikpCisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB0aHJvdyBuZXcgQFR5cGVFcnJv
cigifHRoaXN8LmNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXSBpcyBub3QgYSBjb25zdHJ1Y3Rv
ciIpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VQcm90
b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1By
b21pc2VQcm90b3R5cGUuanMJKHJldmlzaW9uIDE5OTEwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9Qcm9taXNlUHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywxNiAr
MzcsNyBAQCBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKQogICAgIGlmICgh
QGlzUHJvbWlzZSh0aGlzKSkKICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoInx0aGlzfCBp
cyBub3QgYSBvYmplY3QiKTsKIAotICAgIHZhciBjb25zdHJ1Y3RvciA9IHRoaXMuY29uc3RydWN0
b3I7Ci0gICAgaWYgKGNvbnN0cnVjdG9yID09PSBAdW5kZWZpbmVkKQotICAgICAgICBjb25zdHJ1
Y3RvciA9IEBQcm9taXNlOwotICAgIGVsc2UgaWYgKCFAaXNPYmplY3QoY29uc3RydWN0b3IpKQot
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigifHRoaXN8LmNvbnN0cnVjdG9yIGlzIG5vdCBh
biBPYmplY3Qgb3IgdW5kZWZpbmVkIik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0cnVjdG9y
ID0gY29uc3RydWN0b3JbQHN5bWJvbFNwZWNpZXNdOwotICAgICAgICBpZiAoY29uc3RydWN0b3Ig
PT0gbnVsbCkKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gQFByb21pc2U7Ci0gICAgfQorICAg
IHZhciBjb25zdHJ1Y3RvciA9IEBzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgQFByb21pc2UpOwog
CiAgICAgdmFyIHJlc3VsdENhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoY29uc3Ry
dWN0b3IpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVnRXhwUHJv
dG90eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9S
ZWdFeHBQcm90b3R5cGUuanMJKHJldmlzaW9uIDE5OTEwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9SZWdFeHBQcm90b3R5cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEz
ICsyMywxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotZnVuY3Rpb24gYWR2YW5jZVN0cmlu
Z0luZGV4VW5pY29kZShzdHJpbmcsIHN0cmluZ0xlbmd0aCwgaW5kZXgpCitmdW5jdGlvbiBhZHZh
bmNlU3RyaW5nSW5kZXgoc3RyaW5nLCBpbmRleCwgdW5pY29kZSkKIHsKLSAgICAvLyBUaGlzIGZ1
bmN0aW9uIGltcGxlbWVudHMgQWR2YW5jZVN0cmluZ0luZGV4IGRlc2NyaWJlZCBpbiBFUzYgMjEu
Mi41LjIuMywgc3RlcHMgNi0xMS4KLSAgICAvLyBJdCBhc3N1bWVzIHRoYXQgInVuaWNvZGUiIGlz
IHRydWUgZm9yIGl0cyBjYWxsZXJzLgorICAgIC8vIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyBB
ZHZhbmNlU3RyaW5nSW5kZXggZGVzY3JpYmVkIGluIEVTNiAyMS4yLjUuMi4zLgogICAgICJ1c2Ug
c3RyaWN0IjsKIAotICAgIGlmIChpbmRleCArIDEgPj0gc3RyaW5nTGVuZ3RoKQorICAgIGlmICgh
dW5pY29kZSkKKyAgICAgICAgcmV0dXJuIGluZGV4ICsgMTsKKworICAgIGlmIChpbmRleCArIDEg
Pj0gc3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGluZGV4ICsgMTsKIAogICAgIGxldCBm
aXJzdCA9IHN0cmluZy5AY2hhckNvZGVBdChpbmRleCk7CkBAIC01MCw3ICs1Miw3IEBAIGZ1bmN0
aW9uIG1hdGNoKHN0cikKICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQE9iamVjdCkpCiAgICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWdFeHAucHJvdG90eXBlLkBAbWF0Y2ggcmVxdWly
ZXMgdGhhdCB8dGhpc3wgYmUgYW4gT2JqZWN0Iik7CiAKLSAgICBsZXQgcmVnZXhwID0gQE9iamVj
dCh0aGlzKTsKKyAgICBsZXQgcmVnZXhwID0gdGhpczsKICAgICBsZXQgc3RyaW5nQXJnID0gQHRv
U3RyaW5nKHN0cik7CiAKICAgICBpZiAoIXJlZ2V4cC5nbG9iYWwpCkBAIC03OSwxMiArODEsOCBA
QCBmdW5jdGlvbiBtYXRjaChzdHIpCiAKICAgICAgICAgICAgIGxldCByZXN1bHRTdHJpbmcgPSBA
dG9TdHJpbmcocmVzdWx0WzBdKTsKIAotICAgICAgICAgICAgaWYgKCFyZXN1bHRTdHJpbmcubGVu
Z3RoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUpCi0gICAgICAgICAgICAgICAgICAg
IHJlZ2V4cC5sYXN0SW5kZXggPSBAYWR2YW5jZVN0cmluZ0luZGV4VW5pY29kZShzdHJpbmdBcmcs
IHN0cmluZ0xlbmd0aCwgcmVnZXhwLmxhc3RJbmRleCk7Ci0gICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICByZWdleHAubGFzdEluZGV4Kys7Ci0gICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoIXJlc3VsdFN0cmluZy5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmVn
ZXhwLmxhc3RJbmRleCA9IEBhZHZhbmNlU3RyaW5nSW5kZXgoc3RyaW5nQXJnLCByZWdleHAubGFz
dEluZGV4LCB1bmljb2RlKTsKIAogICAgICAgICAgICAgcmVzdWx0TGlzdC5AcHVzaChyZXN1bHRT
dHJpbmcpOwogCkBAIC05NSwzICs5MywxOTIgQEAgZnVuY3Rpb24gbWF0Y2goc3RyKQogICAgIHJl
dHVybiByZWdleHAuQG1hdGNoKHN0cmluZ0FyZyk7CiB9CiAKK2Z1bmN0aW9uIHJlZ0V4cEV4ZWMo
cmVnZXhwLCBzdHIpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgbGV0IGV4ZWMgPSByZWdl
eHAuZXhlYzsKKyAgICBsZXQgYnVpbHRpbkV4ZWMgPSBAUmVnRXhwLnByb3RvdHlwZS5AZXhlYzsK
KyAgICBpZiAoZXhlYyAhPT0gYnVpbHRpbkV4ZWMgJiYgQGlzQ2FsbGFibGUoZXhlYykpIHsKKyAg
ICAgICAgbGV0IHJlc3VsdCA9IGV4ZWMuQGNhbGwocmVnZXhwLCBzdHIpOworICAgICAgICBpZiAo
cmVzdWx0ICE9PSBudWxsICYmICFAaXNPYmplY3QocmVzdWx0KSkKKyAgICAgICAgICAgIHRocm93
IG5ldyBAVHlwZUVycm9yKCJUaGUgcmVzdWx0IG9mIGEgUmVnRXhwIGV4ZWMgbXVzdCBiZSBudWxs
IG9yIGFuIG9iamVjdCIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1
cm4gYnVpbHRpbkV4ZWMuQGNhbGwocmVnZXhwLCBzdHIpOworfQorCisvLyBFUyAyMS4yLjUuMTEg
UmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XShzdHJpbmcsIGxpbWl0KQorZnVuY3Rpb24gc3BsaXQo
c3RyaW5nLCBsaW1pdCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBmdW5jdGlvbiBtYXgo
YSwgYikgeworICAgICAgICByZXR1cm4gYSA+IGIgPyBhIDogYjsKKyAgICB9CisgICAgZnVuY3Rp
b24gbWluKGEsIGIpIHsKKyAgICAgICAgcmV0dXJuIGEgPCBiID8gYSA6IGI7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzKHJlZ2V4cCkgeworICAgICAgICAv
LyBUaGlzIGlzIGFjY2Vzc2VkIGJ5IHRoZSBSZWdFeHBFeGVjIGludGVybmFsIGZ1bmN0aW9uLgor
ICAgICAgICBsZXQgcmVnZXhwRXhlYyA9IEB0cnlHZXRCeUlkKHJlZ2V4cCwgImV4ZWMiKTsKKyAg
ICAgICAgaWYgKHJlZ2V4cEV4ZWMgIT09IEBSZWdFeHAucHJvdG90eXBlLkBleGVjKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgLy8gVGhpcyBpcyBhY2Nlc3NlZCBieSBzdGVw
IDUgYmVsb3cuCisgICAgICAgIGxldCByZWdleHBGbGFncyA9IEB0cnlHZXRCeUlkKHJlZ2V4cCwg
ImZsYWdzIik7CisgICAgICAgIGlmIChyZWdleHBGbGFncyAhPT0gQHJlZ0V4cFByb3RvRmxhZ3NH
ZXR0ZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAvLyBUaGVzZSBhcmUg
YWNjZXNzZWQgYnkgdGhlIGJ1aWx0aW4gZmxhZ3MgZ2V0dGVyLgorICAgICAgICBsZXQgcmVnZXhw
R2xvYmFsID0gQHRyeUdldEJ5SWQocmVnZXhwLCAiZ2xvYmFsIik7CisgICAgICAgIGlmIChyZWdl
eHBHbG9iYWwgIT09IEByZWdFeHBQcm90b0dsb2JhbEdldHRlcikKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBsZXQgcmVnZXhwSWdub3JlQ2FzZSA9IEB0cnlHZXRCeUlkKHJlZ2V4
cCwgImlnbm9yZUNhc2UiKTsKKyAgICAgICAgaWYgKHJlZ2V4cElnbm9yZUNhc2UgIT09IEByZWdF
eHBQcm90b0lnbm9yZUNhc2VHZXR0ZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgbGV0IHJlZ2V4cE11bHRpbGluZSA9IEB0cnlHZXRCeUlkKHJlZ2V4cCwgIm11bHRpbGluZSIp
OworICAgICAgICBpZiAocmVnZXhwTXVsdGlsaW5lICE9PSBAcmVnRXhwUHJvdG9NdWx0aWxpbmVH
ZXR0ZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgbGV0IHJlZ2V4cFN0aWNr
eSA9IEB0cnlHZXRCeUlkKHJlZ2V4cCwgInN0aWNreSIpOworICAgICAgICBpZiAocmVnZXhwU3Rp
Y2t5ICE9PSBAcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgbGV0IHJlZ2V4cFVuaWNvZGUgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJ1bmlj
b2RlIik7CisgICAgICAgIGlmIChyZWdleHBVbmljb2RlICE9PSBAcmVnRXhwUHJvdG9Vbmljb2Rl
R2V0dGVyKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgLy8gVGhpcyBpcyBh
Y2Nlc3NlZCBieSB0aGUgUmVnRXhwIHNwZWNpZXMgY29uc3RydWN0b3IuCisgICAgICAgIGxldCBy
ZWdleHBTb3VyY2UgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJzb3VyY2UiKTsKKyAgICAgICAgaWYg
KHJlZ2V4cFNvdXJjZSAhPT0gQHJlZ0V4cFByb3RvU291cmNlR2V0dGVyKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAgICAgcmV0dXJuICFAaXNSZWdFeHAocmVnZXhwKTsKKyAgICB9
CisKKyAgICAvLyAxLiBMZXQgcnggYmUgdGhlIHRoaXMgdmFsdWUuCisgICAgLy8gMi4gSWYgVHlw
ZShyeCkgaXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgorICAgIGlm
ICghKHRoaXMgaW5zdGFuY2VvZiBAT2JqZWN0KSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoIlJlZ0V4cC5wcm90b3R5cGUuQEBzcGxpdCByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBhbiBP
YmplY3QiKTsKKyAgICBsZXQgcmVnZXhwID0gdGhpczsKKworICAgIC8vIDMuIExldCBTIGJlID8g
VG9TdHJpbmcoc3RyaW5nKS4KKyAgICBsZXQgc3RyID0gQHRvU3RyaW5nKHN0cmluZyk7CisKKyAg
ICAvLyA0LiBMZXQgQyBiZSA/IFNwZWNpZXNDb25zdHJ1Y3RvcihyeCwgJVJlZ0V4cCUpLgorICAg
IGxldCBzcGVjaWVzQ29uc3RydWN0b3IgPSBAc3BlY2llc0NvbnN0cnVjdG9yKHJlZ2V4cCwgQFJl
Z0V4cCk7CisKKyAgICBpZiAoc3BlY2llc0NvbnN0cnVjdG9yID09PSBAUmVnRXhwICYmICFoYXNP
YnNlcnZhYmxlU2lkZUVmZmVjdHMocmVnZXhwKSkKKyAgICAgICAgcmV0dXJuIEByZWdFeHBTcGxp
dEZhc3QuQGNhbGwocmVnZXhwLCBzdHIsIGxpbWl0KTsKKworICAgIC8vIDUuIExldCBmbGFncyBi
ZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisgICAgbGV0IGZsYWdzID0gQHRvU3Ry
aW5nKHJlZ2V4cC5mbGFncyk7CisKKyAgICAvLyA2LiBJZiBmbGFncyBjb250YWlucyAidSIsIGxl
dCB1bmljb2RlTWF0Y2hpbmcgYmUgdHJ1ZS4KKyAgICAvLyA3LiBFbHNlLCBsZXQgdW5pY29kZU1h
dGNoaW5nIGJlIGZhbHNlLgorICAgIGxldCB1bmljb2RlTWF0Y2hpbmcgPSBmbGFncy5pbmNsdWRl
cygidSIpOworICAgIC8vIDguIElmIGZsYWdzIGNvbnRhaW5zICJ5IiwgbGV0IG5ld0ZsYWdzIGJl
IGZsYWdzLgorICAgIC8vIDkuIEVsc2UsIGxldCBuZXdGbGFncyBiZSB0aGUgc3RyaW5nIHRoYXQg
aXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgZmxhZ3MgYW5kICJ5Ii4KKyAgICBsZXQgbmV3RmxhZ3Mg
PSBmbGFncy5pbmNsdWRlcygieSIpID8gZmxhZ3MgOiBmbGFncyArICJ5IjsKKworICAgIC8vIDEw
LiBMZXQgc3BsaXR0ZXIgYmUgPyBDb25zdHJ1Y3QoQywgwqsgcngsIG5ld0ZsYWdzIMK7KS4KKyAg
ICBsZXQgc3BsaXR0ZXIgPSBuZXcgc3BlY2llc0NvbnN0cnVjdG9yKHJlZ2V4cCwgbmV3RmxhZ3Mp
OworCisgICAgLy8gV2UgbmVlZCB0byBjaGVjayBhZ2FpbiBmb3IgUmVnRXhwIHN1YmNsYXNzZXMg
dGhhdCB3aWxsIGZhaWwgdGhlIHNwZWNpZXNDb25zdHJ1Y3RvciB0ZXN0CisgICAgLy8gYnV0IGNh
biBzdGlsbCB1c2UgdGhlIGZhc3QgcGF0aCBhZnRlciB3ZSBpbnZva2UgdGhlIGNvbnN0cnVjdG9y
IGFib3ZlLgorICAgIGlmICghaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzKHNwbGl0dGVyKSkKKyAg
ICAgICAgcmV0dXJuIEByZWdFeHBTcGxpdEZhc3QuQGNhbGwoc3BsaXR0ZXIsIHN0ciwgbGltaXQp
OworCisgICAgLy8gMTEuIExldCBBIGJlIEFycmF5Q3JlYXRlKDApLgorICAgIC8vIDEyLiBMZXQg
bGVuZ3RoQSBiZSAwLgorICAgIGxldCByZXN1bHQgPSBbXTsKKworICAgIC8vIDEzLiBJZiBsaW1p
dCBpcyB1bmRlZmluZWQsIGxldCBsaW0gYmUgMjMyLTE7IGVsc2UgbGV0IGxpbSBiZSA/IFRvVWlu
dDMyKGxpbWl0KS4KKyAgICBsaW1pdCA9IChsaW1pdCA9PT0gQHVuZGVmaW5lZCkgPyAweGZmZmZm
ZmZmIDogbGltaXQgPj4+IDA7CisKKyAgICAvLyAxNi4gSWYgbGltID0gMCwgcmV0dXJuIEEuCisg
ICAgaWYgKCFsaW1pdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgIC8vIDE0LiBbRGVm
ZXJlZCBmcm9tIGFib3ZlXSBMZXQgc2l6ZSBiZSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIFMu
CisgICAgbGV0IHNpemUgPSBzdHIubGVuZ3RoOworCisgICAgLy8gMTcuIElmIHNpemUgPSAwLCB0
aGVuCisgICAgaWYgKCFzaXplKSB7CisgICAgICAgIC8vIGEuIExldCB6IGJlID8gUmVnRXhwRXhl
YyhzcGxpdHRlciwgUykuCisgICAgICAgIGxldCB6ID0gQHJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIHN0
cik7CisgICAgICAgIC8vIGIuIElmIHogaXMgbm90IG51bGwsIHJldHVybiBBLgorICAgICAgICBp
ZiAoeiAhPSBudWxsKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgLy8gYy4g
UGVyZm9ybSAhIENyZWF0ZURhdGFQcm9wZXJ0eShBLCAiMCIsIFMpLgorICAgICAgICByZXN1bHRb
MF0gPSBzdHI7CisgICAgICAgIC8vIGQuIFJldHVybiBBLgorICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKworICAgIC8vIDE1LiBbRGVmZXJlZCBmcm9tIGFib3ZlXSBMZXQgcCBiZSAwLgor
ICAgIGxldCBwb3NpdGlvbiA9IDA7CisgICAgLy8gMTguIExldCBxIGJlIHAuCisgICAgbGV0IG1h
dGNoUG9zaXRpb24gPSAwOworCisgICAgLy8gMTkuIFJlcGVhdCwgd2hpbGUgcSA8IHNpemUKKyAg
ICB3aGlsZSAobWF0Y2hQb3NpdGlvbiA8IHNpemUpIHsKKyAgICAgICAgLy8gYS4gUGVyZm9ybSA/
IFNldChzcGxpdHRlciwgImxhc3RJbmRleCIsIHEsIHRydWUpLgorICAgICAgICBzcGxpdHRlci5s
YXN0SW5kZXggPSBtYXRjaFBvc2l0aW9uOworICAgICAgICAvLyBiLiBMZXQgeiBiZSA/IFJlZ0V4
cEV4ZWMoc3BsaXR0ZXIsIFMpLgorICAgICAgICBsZXQgbWF0Y2hlcyA9IEByZWdFeHBFeGVjKHNw
bGl0dGVyLCBzdHIpOworICAgICAgICAvLyBjLiBJZiB6IGlzIG51bGwsIGxldCBxIGJlIEFkdmFu
Y2VTdHJpbmdJbmRleChTLCBxLCB1bmljb2RlTWF0Y2hpbmcpLgorICAgICAgICBpZiAobWF0Y2hl
cyA9PT0gbnVsbCkKKyAgICAgICAgICAgIG1hdGNoUG9zaXRpb24gPSBAYWR2YW5jZVN0cmluZ0lu
ZGV4KHN0ciwgbWF0Y2hQb3NpdGlvbiwgdW5pY29kZU1hdGNoaW5nKTsKKyAgICAgICAgLy8gZC4g
RWxzZSB6IGlzIG5vdCBudWxsLAorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIGkuIExl
dCBlIGJlID8gVG9MZW5ndGgoPyBHZXQoc3BsaXR0ZXIsICJsYXN0SW5kZXgiKSkuCisgICAgICAg
ICAgICBsZXQgZW5kUG9zaXRpb24gPSBAdG9MZW5ndGgoc3BsaXR0ZXIubGFzdEluZGV4KTsKKyAg
ICAgICAgICAgIC8vIGlpLiBMZXQgZSBiZSBtaW4oZSwgc2l6ZSkuCisgICAgICAgICAgICBlbmRQ
b3NpdGlvbiA9IG1pbihlbmRQb3NpdGlvbiwgc2l6ZSk7CisgICAgICAgICAgICAvLyBpaWkuIElm
IGUgPSBwLCBsZXQgcSBiZSBBZHZhbmNlU3RyaW5nSW5kZXgoUywgcSwgdW5pY29kZU1hdGNoaW5n
KS4KKyAgICAgICAgICAgIGlmIChlbmRQb3NpdGlvbiA9PT0gcG9zaXRpb24pCisgICAgICAgICAg
ICAgICAgbWF0Y2hQb3NpdGlvbiA9IEBhZHZhbmNlU3RyaW5nSW5kZXgoc3RyLCBtYXRjaFBvc2l0
aW9uLCB1bmljb2RlTWF0Y2hpbmcpOworICAgICAgICAgICAgLy8gaXYuIEVsc2UgZSAhPSBwLAor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gMS4gTGV0IFQgYmUgYSBTdHJp
bmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGVs
ZW1lbnRzIGF0IGluZGljZXMgcCAoaW5jbHVzaXZlKSB0aHJvdWdoIHEgKGV4Y2x1c2l2ZSkuCisg
ICAgICAgICAgICAgICAgbGV0IHN1YlN0ciA9IHN0ci5zdWJzdHIocG9zaXRpb24sIG1hdGNoUG9z
aXRpb24gLSBwb3NpdGlvbik7CisgICAgICAgICAgICAgICAgLy8gMi4gUGVyZm9ybSAhIENyZWF0
ZURhdGFQcm9wZXJ0eShBLCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBUKS4KKyAgICAgICAgICAgICAg
ICAvLyAzLiBMZXQgbGVuZ3RoQSBiZSBsZW5ndGhBICsgMS4KKyAgICAgICAgICAgICAgICByZXN1
bHQucHVzaChzdWJTdHIpOworICAgICAgICAgICAgICAgIC8vIDQuIElmIGxlbmd0aEEgPSBsaW0s
IHJldHVybiBBLgorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09IGxpbWl0KQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIC8vIDUu
IExldCBwIGJlIGUuCisgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBlbmRQb3NpdGlvbjsKKyAg
ICAgICAgICAgICAgICAvLyA2LiBMZXQgbnVtYmVyT2ZDYXB0dXJlcyBiZSA/IFRvTGVuZ3RoKD8g
R2V0KHosICJsZW5ndGgiKSkuCisgICAgICAgICAgICAgICAgLy8gNy4gTGV0IG51bWJlck9mQ2Fw
dHVyZXMgYmUgbWF4KG51bWJlck9mQ2FwdHVyZXMtMSwgMCkuCisgICAgICAgICAgICAgICAgbGV0
IG51bWJlck9mQ2FwdHVyZXMgPSBtYXgobWF0Y2hlcy5sZW5ndGggLSAxLCAwKTsKKyAgICAgICAg
ICAgICAgICAvLyA4LiBMZXQgaSBiZSAxLgorICAgICAgICAgICAgICAgIGxldCBpID0gMTsKKyAg
ICAgICAgICAgICAgICAvLyA5LiBSZXBlYXQsIHdoaWxlIGkgPD0gbnVtYmVyT2ZDYXB0dXJlcywK
KyAgICAgICAgICAgICAgICB3aGlsZSAoaSA8PSBudW1iZXJPZkNhcHR1cmVzKSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIGEuIExldCBuZXh0Q2FwdHVyZSBiZSA/IEdldCh6LCAhIFRvU3RyaW5n
KGkpKS4KKyAgICAgICAgICAgICAgICAgICAgbGV0IG5leHRDYXB0dXJlID0gbWF0Y2hlc1tpXTsK
KyAgICAgICAgICAgICAgICAgICAgLy8gYi4gUGVyZm9ybSAhIENyZWF0ZURhdGFQcm9wZXJ0eShB
LCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBuZXh0Q2FwdHVyZSkuCisgICAgICAgICAgICAgICAgICAg
IC8vIGQuIExldCBsZW5ndGhBIGJlIGxlbmd0aEEgKyAxLgorICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQucHVzaChuZXh0Q2FwdHVyZSk7CisgICAgICAgICAgICAgICAgICAgIC8vIGUuIElmIGxl
bmd0aEEgPSBsaW0sIHJldHVybiBBLgorICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxl
bmd0aCA9PSBsaW1pdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIGMuIExldCBpIGJlIGkgKyAxLgorICAgICAgICAgICAgICAg
ICAgICBpKys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIDEwLiBMZXQg
cSBiZSBwLgorICAgICAgICAgICAgICAgIG1hdGNoUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAvLyAyMC4gTGV0IFQgYmUgYSBTdHJpbmcg
dmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGVsZW1l
bnRzIGF0IGluZGljZXMgcCAoaW5jbHVzaXZlKSB0aHJvdWdoIHNpemUgKGV4Y2x1c2l2ZSkuCisg
ICAgbGV0IHJlbWFpbmluZ1N0ciA9IHN0ci5zdWJzdHIocG9zaXRpb24sIHNpemUpOworICAgIC8v
IDIxLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICEgVG9TdHJpbmcobGVuZ3RoQSks
IFQpLgorICAgIHJlc3VsdC5wdXNoKHJlbWFpbmluZ1N0cik7CisgICAgLy8gMjIuIFJldHVybiBB
LgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwkocmV2aXNpb24gMTk5MTA2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBW
YW5XYWdvbmVyIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+LgogICogQ29weXJpZ2h0IChDKSAy
MDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTEyNCwzICsxMjUsMjIgQEAgZnVuY3Rpb24gcmVwZWF0KGNvdW50
KQogCiAgICAgcmV0dXJuIEByZXBlYXRTbG93UGF0aChzdHJpbmcsIGNvdW50KTsKIH0KKworZnVu
Y3Rpb24gc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisgICAg
CisgICAgaWYgKHRoaXMgPT0gbnVsbCkgeworICAgICAgICBpZiAodGhpcyA9PT0gbnVsbCkKKyAg
ICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJTdHJpbmcucHJvdG90eXBlLnNwbGl0IHJl
cXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7CisgICAgICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKCJTdHJpbmcucHJvdG90eXBlLnNwbGl0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBi
ZSB1bmRlZmluZWQiKTsKKyAgICB9CisgICAgCisgICAgaWYgKHNlcGFyYXRvciAhPSBudWxsKSB7
CisgICAgICAgIHZhciBzcGxpdHRlciA9IHNlcGFyYXRvcltAc3ltYm9sU3BsaXRdOworICAgICAg
ICBpZiAoc3BsaXR0ZXIgIT0gQHVuZGVmaW5lZCkKKyAgICAgICAgICAgIHJldHVybiBzcGxpdHRl
ci5AY2FsbChzZXBhcmF0b3IsIHRoaXMsIGxpbWl0KTsKKyAgICB9CisgICAgCisgICAgcmV0dXJu
IEBzdHJpbmdTcGxpdEZhc3QuQGNhbGwodGhpcywgc2VwYXJhdG9yLCBsaW1pdCk7Cit9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAxOTkxMDYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01Niw2ICs1Nyw3IEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVj
b2RlSW50cmkKICAgICBtX3N5bWJvbE1hdGNoLnNldChtX3ZtLCBTeW1ib2w6OmNyZWF0ZShtX3Zt
LCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKm1fdm0ucHJvcGVydHlOYW1lcy0+bWF0Y2hTeW1i
b2wuaW1wbCgpKSkpOwogICAgIG1fc3ltYm9sU2VhcmNoLnNldChtX3ZtLCBTeW1ib2w6OmNyZWF0
ZShtX3ZtLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKm1fdm0ucHJvcGVydHlOYW1lcy0+c2Vh
cmNoU3ltYm9sLmltcGwoKSkpKTsKICAgICBtX3N5bWJvbFNwZWNpZXMuc2V0KG1fdm0sIFN5bWJv
bDo6Y3JlYXRlKG1fdm0sIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqbV92bS5wcm9wZXJ0eU5h
bWVzLT5zcGVjaWVzU3ltYm9sLmltcGwoKSkpKTsKKyAgICBtX3N5bWJvbFNwbGl0LnNldChtX3Zt
LCBTeW1ib2w6OmNyZWF0ZShtX3ZtLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKm1fdm0ucHJv
cGVydHlOYW1lcy0+c3BsaXRTeW1ib2wuaW1wbCgpKSkpOwogfQogCiBCeXRlY29kZUludHJpbnNp
Y05vZGU6OkVtaXR0ZXJUeXBlIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cChjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAkocmV2
aXNpb24gMTk5MTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
Pi4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU5LDYgKzYwLDcgQEAgY2xhc3Mg
SWRlbnRpZmllcjsKICAgICBtYWNybyhzeW1ib2xNYXRjaCkgXAogICAgIG1hY3JvKHN5bWJvbFNl
YXJjaCkgXAogICAgIG1hY3JvKHN5bWJvbFNwZWNpZXMpIFwKKyAgICBtYWNybyhzeW1ib2xTcGxp
dCkgXAogCiBjbGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5IHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkocmV2aXNpb24g
MTk5MTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDksIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMxMCw3ICszMTAsNiBAQAogI2Rl
ZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJP
TF9OT1RfSU1QTEVNRU5URURfWUVUKG1hY3JvKVwKICAgICBtYWNybyhpc0NvbmNhdFNwcmVhZGFi
bGUpIFwKICAgICBtYWNybyhyZXBsYWNlKSBcCi0gICAgbWFjcm8oc3BsaXQpCiAKICNkZWZpbmUg
SlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0wobWFj
cm8pIFwKICAgICBtYWNybyhoYXNJbnN0YW5jZSkgXApAQCAtMzE4LDYgKzMxNyw3IEBACiAgICAg
bWFjcm8obWF0Y2gpIFwKICAgICBtYWNybyhzZWFyY2gpIFwKICAgICBtYWNybyhzcGVjaWVzKSBc
CisgICAgbWFjcm8oc3BsaXQpIFwKICAgICBtYWNybyh0b1ByaW1pdGl2ZSkgXAogICAgIG1hY3Jv
KHRvU3RyaW5nVGFnKSBcCiAgICAgbWFjcm8odW5zY29wYWJsZXMpCkBAIC00MTIsMTMgKzQxMiwy
NSBAQAogICAgIG1hY3JvKGluc3RhbmNlT2YpIFwKICAgICBtYWNybyhpc0FycmF5KSBcCiAgICAg
bWFjcm8oaXNBcnJheUNvbnN0cnVjdG9yKSBcCisgICAgbWFjcm8oaXNDYWxsYWJsZSkgXAorICAg
IG1hY3JvKGlzQ29uc3RydWN0b3IpIFwKKyAgICBtYWNybyhpc1Byb3h5KSBcCisgICAgbWFjcm8o
aXNSZWdFeHApIFwKICAgICBtYWNybyhpc1NldCkgXAogICAgIG1hY3JvKGlzTWFwKSBcCiAgICAg
bWFjcm8oU2V0SXRlcmF0b3IpIFwKICAgICBtYWNybyhzZXRJdGVyYXRvck5leHQpIFwKICAgICBt
YWNybyhNYXBJdGVyYXRvcikgXAogICAgIG1hY3JvKG1hcEl0ZXJhdG9yTmV4dCkgXAotCisgICAg
bWFjcm8ocmVnRXhwUHJvdG9GbGFnc0dldHRlcikgXAorICAgIG1hY3JvKHJlZ0V4cFByb3RvR2xv
YmFsR2V0dGVyKSBcCisgICAgbWFjcm8ocmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyKSBcCisg
ICAgbWFjcm8ocmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIpIFwKKyAgICBtYWNybyhyZWdFeHBQ
cm90b1N0aWNreUdldHRlcikgXAorICAgIG1hY3JvKHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcikg
XAorICAgIG1hY3JvKHJlZ0V4cFByb3RvU291cmNlR2V0dGVyKSBcCisgICAgbWFjcm8ocmVnRXhw
U3BsaXRGYXN0KSBcCisgICAgbWFjcm8oc3RyaW5nU3BsaXRGYXN0KSBcCiAKIG5hbWVzcGFjZSBK
U0MgewogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlw
dFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0lu
dGVybmFsRnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCIKKworI2lu
Y2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbnN0cnVjdERhdGEuaCIKKyNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIlByb3h5T2JqZWN0LmgiCisjaW5jbHVk
ZSAiUmVnRXhwT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGVzU3BlY0lzQ2FsbGFibGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIENh
bGxUeXBlIGNhbGxUeXBlOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGV4ZWMtPmFyZ3VtZW50KDApLmlzQ2FsbGFibGUoY2FsbFR5
cGUsIGNhbGxEYXRhKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVzU3Bl
Y0lzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGJvb2wgaXNDb25zdHJ1Y3Rv
ciA9IGV4ZWMtPmFyZ3VtZW50KDApLmlzQ29uc3RydWN0b3IoKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc0NvbnN0cnVjdG9yKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZXNTcGVjSXNQcm94eShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYm9v
bCBpc1Byb3h5ID0gZXhlYy0+YXJndW1lbnQoMCkuaW5oZXJpdHMoUHJveHlPYmplY3Q6OmluZm8o
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oaXNQcm94eSkpOworfQor
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVzU3BlY0lzUmVnRXhwKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBib29sIGlzUHJveHkgPSBleGVjLT5hcmd1bWVudCgwKS5pbmhlcml0cyhS
ZWdFeHBPYmplY3Q6OmluZm8oKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oaXNQcm94eSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0lu
dGVybmFsRnVuY3Rpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9uc19oCisjZGVmaW5l
IEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnNfaAorCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBl
c1NwZWNJc0NhbGxhYmxlKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBlc1NwZWNJc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBlc1NwZWNJc1Byb3h5KEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBlc1NwZWNJc1JlZ0V4cChFeGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJl
dmlzaW9uIDE5OTEwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSwgMjAxNC0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3
YXJpY2ggKGN3endhcmljaEB1d2F0ZXJsb28uY2EpCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00NSw2
ICs0NSw3IEBACiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJEZWJ1Z2dlclNjb3Bl
LmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiRUNNQVNjcmlwdFNw
ZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXJy
b3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkVycm9yUHJvdG90eXBlLmgiCkBAIC0yNTYsNiAr
MjU3LDE1IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnNldEdsb2JhbFRoaXMoVk0mIHYKICAgICBt
X2dsb2JhbFRoaXMuc2V0KHZtLCB0aGlzLCBnbG9iYWxUaGlzKTsKIH0KIAorCitzdGF0aWMgSlNP
YmplY3QqIGdldEdldHRlckJ5SWQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
KGJhc2UpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgYmFzZVZhbHVlLmdldFByb3BlcnR5
U2xvdChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgcmV0dXJuIHNsb3QuZ2V0UHVyZVJlc3VsdCgp
LnRvT2JqZWN0KGV4ZWMpOworfQorCiB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkK
IHsKICAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CkBAIC01
NDAsNiArNTUwLDE0IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXIK
ICAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY1RoaXNUaW1lVmFsdWUgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBkYXRlUHJvdG9GdW5jR2V0VGltZSk7CiAgICAg
SlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNJc0FycmF5Q29uc3RydWN0b3IgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBhcnJheUNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmNJ
c0FycmF5Q29uc3RydWN0b3IpOwogCisgICAgSlNPYmplY3QqIHJlZ0V4cFByb3RvRmxhZ3NHZXR0
ZXJPYmplY3QgPSBnZXRHZXR0ZXJCeUlkKGV4ZWMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2
bS5wcm9wZXJ0eU5hbWVzLT5mbGFncyk7CisgICAgSlNPYmplY3QqIHJlZ0V4cFByb3RvR2xvYmFs
R2V0dGVyT2JqZWN0ID0gZ2V0R2V0dGVyQnlJZChleGVjLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQo
KSwgdm0ucHJvcGVydHlOYW1lcy0+Z2xvYmFsKTsKKyAgICBKU09iamVjdCogcmVnRXhwUHJvdG9J
Z25vcmVDYXNlR2V0dGVyT2JqZWN0ID0gZ2V0R2V0dGVyQnlJZChleGVjLCBtX3JlZ0V4cFByb3Rv
dHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+aWdub3JlQ2FzZSk7CisgICAgSlNPYmplY3Qq
IHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyT2JqZWN0ID0gZ2V0R2V0dGVyQnlJZChleGVjLCBt
X3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+bXVsdGlsaW5lKTsKKyAg
ICBKU09iamVjdCogcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXJPYmplY3QgPSBnZXRHZXR0ZXJCeUlk
KGV4ZWMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdGlja3kp
OworICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXJPYmplY3QgPSBnZXRHZXR0
ZXJCeUlkKGV4ZWMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT51
bmljb2RlKTsKKyAgICBKU09iamVjdCogcmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXJPYmplY3QgPSBn
ZXRHZXR0ZXJCeUlkKGV4ZWMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5h
bWVzLT5zb3VyY2UpOworCiAgICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9
IHsKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNO
YU4oKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+SW5maW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KSwKQEAgLTU5Niw3ICs2MTQsNiBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVyCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5wcm9taXNlUmVhY3Rpb25Kb2JQcml2YXRlTmFtZSgpLCBKU0Z1
bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHByb21pc2VPcGVyYXRpb25zUHJvbWlz
ZVJlYWN0aW9uSm9iQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5wcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iUHJpdmF0ZU5hbWUo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBwcm9taXNlT3BlcmF0aW9u
c1Byb21pc2VSZXNvbHZlVGhlbmFibGVKb2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkluc3BlY3Rvckluc3RydW1lbnRhdGlv
blByaXZhdGVOYW1lKCksIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlKHZt
LCB0aGlzLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuYWR2YW5jZVN0cmluZ0luZGV4VW5pY29kZVByaXZhdGVOYW1lKCks
IEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVnRXhwUHJvdG90eXBlQWR2
YW5jZVN0cmluZ0luZGV4VW5pY29kZUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+TWFwUHJpdmF0ZU5hbWUsIG1hcENvbnN0cnVjdG9yLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVQcml2YXRlTmFtZSgp
LCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIGdlbmVyYXRvclByb3RvdHlw
ZUdlbmVyYXRvclJlc3VtZUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudGhpc1RpbWVWYWx1ZVByaXZhdGVOYW1lKCksIHByaXZh
dGVGdW5jVGhpc1RpbWVWYWx1ZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLApA
QCAtNjA1LDYgKzYyMiwyOCBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVyCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5EYXRlVGltZUZvcm1hdFByaXZhdGVOYW1lKCksIGludGwtPmdldERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+RGF0ZVRpbWVGb3JtYXQpLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5OdW1iZXJGb3JtYXRQcml2YXRlTmFtZSgpLCBpbnRsLT5nZXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPk51bWJlckZvcm1hdCksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKICNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+aXNDYWxsYWJsZVByaXZhdGVOYW1lLCBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBlc1NwZWNJc0NhbGxhYmxl
LCBOb0ludHJpbnNpYyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmlzQ29uc3RydWN0b3JQcml2
YXRlTmFtZSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwgZXNTcGVj
SXNDb25zdHJ1Y3RvciwgTm9JbnRyaW5zaWMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5pc1By
b3h5UHJpdmF0ZU5hbWUsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCks
IGVzU3BlY0lzUHJveHksIE5vSW50cmluc2ljKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+aXNS
ZWdFeHBQcml2YXRlTmFtZSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmco
KSwgZXNTcGVjSXNSZWdFeHAsIE5vSW50cmluc2ljKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuc3BlY2llc0NvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3RTcGVjaWVzQ29uc3RydWN0
b3JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KSwKKworICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+cmVn
RXhwUHJvdG9GbGFnc0dldHRlclByaXZhdGVOYW1lLCByZWdFeHBQcm90b0ZsYWdzR2V0dGVyT2Jq
ZWN0LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5yZWdFeHBQcm90b0dsb2JhbEdldHRlclByaXZh
dGVOYW1lLCByZWdFeHBQcm90b0dsb2JhbEdldHRlck9iamVjdCwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+cmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyUHJpdmF0ZU5hbWUsIHJlZ0V4cFByb3Rv
SWdub3JlQ2FzZUdldHRlck9iamVjdCwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
LAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+cmVnRXhwUHJv
dG9NdWx0aWxpbmVHZXR0ZXJQcml2YXRlTmFtZSwgcmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXJP
YmplY3QsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnJlZ0V4cFByb3RvU3RpY2t5R2V0dGVyUHJp
dmF0ZU5hbWUsIHJlZ0V4cFByb3RvU3RpY2t5R2V0dGVyT2JqZWN0LCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5yZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXJQcml2YXRlTmFtZSwgcmVnRXhwUHJvdG9V
bmljb2RlR2V0dGVyT2JqZWN0LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5yZWdFeHBQcm90b1Nv
dXJjZUdldHRlclByaXZhdGVOYW1lLCByZWdFeHBQcm90b1NvdXJjZUdldHRlck9iamVjdCwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorCisgICAgICAgIC8vIFJlZ0V4cC5wcm90
b3R5cGUgaGVscGVycy4KKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmFkdmFuY2VTdHJpbmdJbmRleFByaXZhdGVOYW1lKCksIEpTRnVu
Y3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVnRXhwUHJvdG90eXBlQWR2YW5jZVN0
cmluZ0luZGV4Q29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5yZWdFeHBFeGVjUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWdFeHBQcm90b3R5cGVSZWdFeHBFeGVjQ29kZUdlbmVy
YXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5yZWdFeHBTcGxpdEZhc3RQ
cml2YXRlTmFtZSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgcmVn
RXhwUHJvdG9GdW5jU3BsaXRGYXN0KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
LAorCisgICAgICAgIC8vIFN0cmluZy5wcm90b3R5cGUgaGVscGVycy4KKyAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnN0cmluZ1NwbGl0RmFzdFByaXZhdGVOYW1l
LCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBzdHJpbmdQcm90b0Z1
bmNTcGxpdEZhc3QpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgfTsK
ICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3Rh
dGljR2xvYmFscykpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9uIDE5OTEwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAxMiwgMjAxNiBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA3LTIwMDgsIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwpAQCAtOTMsNiArOTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwT2JqZWN0LCBtX2xhc3RJbmRleElzV3JpdGFibGUpOwog
ICAgIH0KIAorICAgIHN0YXRpYyB1bnNpZ25lZCBhZHZhbmNlU3RyaW5nVW5pY29kZShTdHJpbmcs
IHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgY3VycmVudEluZGV4KTsKKwogcHJvdGVjdGVkOgog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ0V4cE9iamVjdChWTSYsIFN0cnVjdHVyZSosIFJlZ0V4
cCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKQEAg
LTEwNCw3ICsxMDYsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7Ci0g
ICAgdW5zaWduZWQgYWR2YW5jZVN0cmluZ1VuaWNvZGUoU3RyaW5nLCB1bnNpZ25lZCwgdW5zaWdu
ZWQpOwogCiBwcml2YXRlOgogICAgIE1hdGNoUmVzdWx0IG1hdGNoSW5saW5lKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk5MTA2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDcsIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNy0yMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRl
ICJSZWdFeHBDYWNoZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiUmVnRXhwTWF0Y2hlc0FycmF5LmgiCisjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAjaW5j
bHVkZSAiU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTgx
LDYgKzgyLDcgQEAgdm9pZCBSZWdFeHBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJgogICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLm1hdGNoUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hQ
cml2YXRlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSwgMSk7CiAgICAgSlNDX0JV
SUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPm1hdGNo
U3ltYm9sLCByZWdFeHBQcm90b3R5cGVNYXRjaENvZGVHZW5lcmF0b3IsIERvbnRFbnVtKTsKICAg
ICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5zZWFyY2hTeW1ib2wsIHJlZ0V4cFByb3RvRnVuY1NlYXJjaCwgRG9udEVudW0sIDEpOworICAg
IEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5zcGxpdFN5bWJvbCwgcmVnRXhwUHJvdG90eXBlU3BsaXRDb2RlR2VuZXJhdG9yLCBEb250RW51
bSk7CiAKICAgICBKU0Z1bmN0aW9uKiBleGVjRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgMSwgdm0ucHJvcGVydHlOYW1lcy0+ZXhlYy5zdHJpbmcoKSwgcmVn
RXhwUHJvdG9GdW5jRXhlYywgUmVnRXhwRXhlY0ludHJpbnNpYyk7CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmV4ZWNQcml2YXRlTmFtZSwgZXhl
Y0Z1bmN0aW9uLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CkBAIC0xMTUsNyAr
MTE3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogewogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFs
dWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
IkJ1aWx0aW4gUmVnRXhwIGV4ZWMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVj
dCIpOwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZ09y
TnVsbChleGVjKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQzNCw0ICs0MzYsMTY3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCA/IGpzTnVtYmVyKHJlc3VsdC5zdGFydCkgOiBqc051bWJlcigtMSkpOwogfQogCitzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGFkdmFuY2VTdHJpbmdJbmRleChTdHJpbmcgc3RyLCB1bnNpZ25l
ZCBzdHJTaXplLCB1bnNpZ25lZCBpbmRleCwgYm9vbCBpc1VuaWNvZGUpCit7CisgICAgaWYgKCFp
c1VuaWNvZGUpCisgICAgICAgIHJldHVybiArK2luZGV4OworICAgIHJldHVybiBSZWdFeHBPYmpl
Y3Q6OmFkdmFuY2VTdHJpbmdVbmljb2RlKHN0ciwgc3RyU2l6ZSwgaW5kZXgpOworfQorCisvLyBF
UyAyMS4yLjUuMTEgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XShzdHJpbmcsIGxpbWl0KQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisKKyAgICAvLyAxLiBbaGFu
ZGxlZCBieSBKUyBidWlsdGluXSBMZXQgcnggYmUgdGhlIHRoaXMgdmFsdWUuCisgICAgLy8gMi4g
W2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gSWYgVHlwZShyeCkgaXMgbm90IE9iamVjdCwgdGhyb3cg
YSBUeXBlRXJyb3IgZXhjZXB0aW9uLgorICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgUmVnRXhwKiByZWdleHAgPSBhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUp
LT5yZWdFeHAoKTsKKworICAgIC8vIDMuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIExldCBTIGJl
ID8gVG9TdHJpbmcoc3RyaW5nKS4KKyAgICBTdHJpbmcgaW5wdXQgPSBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIEFTU0VS
VCghaW5wdXQuaXNOdWxsKCkpOworCisgICAgLy8gNC4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0g
TGV0IEMgYmUgPyBTcGVjaWVzQ29uc3RydWN0b3IocngsICVSZWdFeHAlKS4KKyAgICAvLyA1LiBb
aGFuZGxlZCBieSBKUyBidWlsdGluXSBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwg
ImZsYWdzIikpLgorICAgIC8vIDYuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIElmIGZsYWdzIGNv
bnRhaW5zICJ1IiwgbGV0IHVuaWNvZGVNYXRjaGluZyBiZSB0cnVlLgorICAgIC8vIDcuIFtoYW5k
bGVkIGJ5IEpTIGJ1aWx0aW5dIEVsc2UsIGxldCB1bmljb2RlTWF0Y2hpbmcgYmUgZmFsc2UuCisg
ICAgLy8gOC4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gSWYgZmxhZ3MgY29udGFpbnMgInkiLCBs
ZXQgbmV3RmxhZ3MgYmUgZmxhZ3MuCisgICAgLy8gOS4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0g
RWxzZSwgbGV0IG5ld0ZsYWdzIGJlIHRoZSBzdHJpbmcgdGhhdCBpcyB0aGUgY29uY2F0ZW5hdGlv
biBvZiBmbGFncyBhbmQgInkiLgorICAgIC8vIDEwLiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBM
ZXQgc3BsaXR0ZXIgYmUgPyBDb25zdHJ1Y3QoQywgwqsgcngsIG5ld0ZsYWdzIMK7KS4KKworICAg
IC8vIDExLiBMZXQgQSBiZSBBcnJheUNyZWF0ZSgwKS4KKyAgICAvLyAxMi4gTGV0IGxlbmd0aEEg
YmUgMC4KKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDAp
OworICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IDA7CisKKyAgICAvLyAxMy4gSWYgbGltaXQg
aXMgdW5kZWZpbmVkLCBsZXQgbGltIGJlIDIzMi0xOyBlbHNlIGxldCBsaW0gYmUgPyBUb1VpbnQz
MihsaW1pdCkuCisgICAgSlNWYWx1ZSBsaW1pdFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7Cisg
ICAgdW5zaWduZWQgbGltaXQgPSBsaW1pdFZhbHVlLmlzVW5kZWZpbmVkKCkgPyAweEZGRkZGRkZG
dSA6IGxpbWl0VmFsdWUudG9VSW50MzIoZXhlYyk7CisKKyAgICAvLyAxNC4gTGV0IHNpemUgYmUg
dGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBTLgorICAgIHVuc2lnbmVkIGlucHV0U2l6ZSA9IGlu
cHV0Lmxlbmd0aCgpOworCisgICAgLy8gMTUuIExldCBwID0gMC4KKyAgICB1bnNpZ25lZCBwb3Np
dGlvbiA9IDA7CisKKyAgICAvLyAxNi4gSWYgbGltID09IDAsIHJldHVybiBBLgorICAgIGlmICgh
bGltaXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKworICAgIC8v
IDE3LiBJZiBzaXplID09IDAsIHRoZW4KKyAgICBpZiAoaW5wdXQuaXNFbXB0eSgpKSB7CisgICAg
ICAgIC8vIGEuIExldCB6IGJlID8gUmVnRXhwRXhlYyhzcGxpdHRlciwgUykuCisgICAgICAgIC8v
IGIuIElmIHogaXMgbm90IG51bGwsIHJldHVybiBBLgorICAgICAgICAvLyBjLiBQZXJmb3JtICEg
Q3JlYXRlRGF0YVByb3BlcnR5KEEsICIwIiwgUykuCisgICAgICAgIC8vIGQuIFJldHVybiBBLgor
ICAgICAgICBpZiAoIXJlZ2V4cC0+bWF0Y2godm0sIGlucHV0LCAwKSkKKyAgICAgICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwganNTdHJpbmdXaXRoUmV1c2UoZXhlYywgdGhp
c1ZhbHVlLCBpbnB1dCkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CisgICAgfQorCisgICAgLy8gMTguIExldCBxID0gcC4KKyAgICB1bnNpZ25lZCBtYXRjaFBvc2l0
aW9uID0gcG9zaXRpb247CisgICAgLy8gMTkuIFJlcGVhdCwgd2hpbGUgcSA8IHNpemUKKyAgICBi
b29sIHJlZ0V4cElzU3RpY2t5ID0gcmVnZXhwLT5zdGlja3koKTsKKyAgICBib29sIHJlZ0V4cElz
VW5pY29kZSA9IHJlZ2V4cC0+dW5pY29kZSgpOworICAgIHdoaWxlIChtYXRjaFBvc2l0aW9uIDwg
aW5wdXRTaXplKSB7CisgICAgICAgIFZlY3RvcjxpbnQsIDMyPiBvdmVjdG9yOworCisgICAgICAg
IC8vIGEuIFBlcmZvcm0gPyBTZXQoc3BsaXR0ZXIsICJsYXN0SW5kZXgiLCBxLCB0cnVlKS4KKyAg
ICAgICAgLy8gYi4gTGV0IHogYmUgPyBSZWdFeHBFeGVjKHNwbGl0dGVyLCBTKS4KKyAgICAgICAg
aW50IG1wb3MgPSByZWdleHAtPm1hdGNoKHZtLCBpbnB1dCwgbWF0Y2hQb3NpdGlvbiwgb3ZlY3Rv
cik7CisKKyAgICAgICAgLy8gYy4gSWYgeiBpcyBudWxsLCBsZXQgcSBiZSBBZHZhbmNlU3RyaW5n
SW5kZXgoUywgcSwgdW5pY29kZU1hdGNoaW5nKS4KKyAgICAgICAgaWYgKG1wb3MgPCAwKSB7Cisg
ICAgICAgICAgICBpZiAoIXJlZ0V4cElzU3RpY2t5KQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgbWF0Y2hQb3NpdGlvbiA9IGFkdmFuY2VTdHJpbmdJbmRleChpbnB1dCwgaW5w
dXRTaXplLCBtYXRjaFBvc2l0aW9uLCByZWdFeHBJc1VuaWNvZGUpOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtcG9z
KSA+PSBpbnB1dFNpemUpIHsKKyAgICAgICAgICAgIC8vIFRoZSBzcGVjIHJlZG9lcyB0aGUgUmVn
RXhwRXhlYyBzdGFydGluZyBhdCB0aGUgbmV4dCBjaGFyYWN0ZXIgb2YgdGhlIGlucHV0LgorICAg
ICAgICAgICAgLy8gQnV0IGluIG91ciBjYXNlLCBtcG9zIDwgMCBtZWFucyB0aGF0IHRoZSBuYXRp
dmUgcmVnZXhwIGFscmVhZHkgc2VhcmNoZWQgYWxsIHBlcm11dGF0aW9ucworICAgICAgICAgICAg
Ly8gYW5kIGtub3cgdGhhdCB3ZSB3b24ndCBiZSBhYmxlIHRvIGZpbmQgYSBtYXRjaCBmb3IgdGhl
IHNlcGFyYXRvciBldmVuIGlmIHdlIHJlZG8gdGhlCisgICAgICAgICAgICAvLyBSZWdFeHBFeGVj
IHN0YXJ0aW5nIGF0IHRoZSBuZXh0IGNoYXJhY3RlciBvZiB0aGUgaW5wdXQuIFNvLCBqdXN0IGJh
aWwuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGQuIEVsc2Us
IHogaXMgbm90IG51bGwKKyAgICAgICAgLy8gICAgaS4gTGV0IGUgYmUgPyBUb0xlbmd0aCg/IEdl
dChzcGxpdHRlciwgImxhc3RJbmRleCIpKS4KKyAgICAgICAgLy8gICBpaS4gTGV0IGUgYmUgbWlu
KGUsIHNpemUpLgorICAgICAgICBtYXRjaFBvc2l0aW9uID0gbXBvczsKKyAgICAgICAgdW5zaWdu
ZWQgbWF0Y2hFbmQgPSBvdmVjdG9yWzFdOworCisgICAgICAgIC8vICBpaWkuIElmIGUgPSBwLCBs
ZXQgcSBiZSBBZHZhbmNlU3RyaW5nSW5kZXgoUywgcSwgdW5pY29kZU1hdGNoaW5nKS4KKyAgICAg
ICAgaWYgKG1hdGNoRW5kID09IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBtYXRjaFBvc2l0aW9u
ID0gYWR2YW5jZVN0cmluZ0luZGV4KGlucHV0LCBpbnB1dFNpemUsIG1hdGNoUG9zaXRpb24sIHJl
Z0V4cElzVW5pY29kZSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAg
ICAvLyBpZiBtYXRjaEVuZCA9PSAwIHRoZW4gcG9zaXRpb24gc2hvdWxkIGFsc28gYmUgemVybyBh
bmQgdGh1cyBtYXRjaEVuZCBzaG91bGQgZXF1YWwgcG9zaXRpb24uCisgICAgICAgIEFTU0VSVCht
YXRjaEVuZCk7CisKKyAgICAgICAgLy8gICBpdi4gRWxzZSBlICE9IHAsCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQ2FwdHVyZXMgPSByZWdleHAtPm51bVN1YnBhdHRl
cm5zKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBuZXdSZXN1bHRMZW5ndGggPSByZXN1bHRMZW5n
dGggKyBudW1iZXJPZkNhcHR1cmVzICsgMTsKKyAgICAgICAgICAgIGlmIChuZXdSZXN1bHRMZW5n
dGggPCBudW1iZXJPZkNhcHR1cmVzIHx8IG5ld1Jlc3VsdExlbmd0aCA+PSBNQVhfU1RPUkFHRV9W
RUNUT1JfSU5ERVgpIHsKKyAgICAgICAgICAgICAgICAvLyBMZXQncyBjb25zaWRlciB3aGF0J3Mg
YmVzdCBmb3IgdXNlcnMgaGVyZS4gV2UncmUgYWJvdXQgdG8gaW5jcmVhc2UgdGhlIGxlbmd0aCBv
ZgorICAgICAgICAgICAgICAgIC8vIHRoZSBzcGxpdCBhcnJheSBiZXlvbmQgdGhlIG1heGltdW0g
bGVuZ3RoIHRoYXQgd2UgY2FuIHN1cHBvcnQgZWZmaWNpZW50bHkuIFRoaXMKKyAgICAgICAgICAg
ICAgICAvLyB3aWxsIGNhdXNlIHVzIHRvIHVzZSBhIEhhc2hNYXAgZm9yIHRoZSBuZXcgZW50cmll
cyBhZnRlciB0aGlzIHBvaW50LiBUaGF0J3MgZ29pbmcKKyAgICAgICAgICAgICAgICAvLyB0byBy
ZXN1bHQgaW4gYSB2ZXJ5IGxvbmcgcnVubmluZyB0aW1lIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHZl
cnkgbGFyZ2UgbWVtb3J5CisgICAgICAgICAgICAgICAgLy8gdXNhZ2UuIEluIG15IGV4cGVyaW1l
bnRzLCBKU0Mgd2lsbCBzaXQgc3Bpbm5pbmcgZm9yIG1pbnV0ZXMgYWZ0ZXIgZ2V0dGluZyBoZXJl
IGFuZAorICAgICAgICAgICAgICAgIC8vIGl0IHdhcyB1c2luZyA+NEdCIG9mIG1lbW9yeSBhbmQg
ZXZlbnR1YWxseSBncmV3IHRvIDhHQi4gSXQga2VwdCBydW5uaW5nIHdpdGhvdXQKKyAgICAgICAg
ICAgICAgICAvLyBmaW5pc2hpbmcgdW50aWwgSSBraWxsZWQgaXQuIFRoYXQncyBwcm9iYWJseSBu
b3Qgd2hhdCB0aGUgdXNlciB3YW50ZWQuIFRoZSB1c2VyLAorICAgICAgICAgICAgICAgIC8vIG9y
IHRoZSBwcm9ncmFtIHRoYXQgdGhlIHVzZXIgaXMgcnVubmluZywgcHJvYmFibHkgbWFkZSBhIG1p
c3Rha2UgYnkgY2FsbGluZyB0aGlzCisgICAgICAgICAgICAgICAgLy8gbWV0aG9kIGluIHN1Y2gg
YSB3YXkgdGhhdCBpdCByZXN1bHRlZCBpbiBzdWNoIGFuIG9ibm94aW91cyBhcnJheS4gVGhlcmVm
b3JlLCB0bworICAgICAgICAgICAgICAgIC8vIHByb3RlY3Qgb3Vyc2VsdmVzLCB3ZSBiYWlsIGF0
IHRoaXMgcG9pbnQuCisgICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMp
OworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIDEuIExldCBUIGJlIGEgU3RyaW5nIHZh
bHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBlbGVtZW50
cyBhdCBpbmRpY2VzIHAgKGluY2x1c2l2ZSkgdGhyb3VnaCBxIChleGNsdXNpdmUpLgorICAgICAg
ICAgICAgLy8gMi4gUGVyZm9ybSAhIENyZWF0ZURhdGFQcm9wZXJ0eShBLCAhIFRvU3RyaW5nKGxl
bmd0aEEpLCBUKS4KKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVz
dWx0TGVuZ3RoLCBqc1N1YnN0cmluZyhleGVjLCB0aGlzVmFsdWUsIGlucHV0LCBwb3NpdGlvbiwg
bWF0Y2hQb3NpdGlvbiAtIHBvc2l0aW9uKSk7CisKKyAgICAgICAgICAgIC8vIDMuIExldCBsZW5n
dGhBIGJlIGxlbmd0aEEgKyAxLgorICAgICAgICAgICAgLy8gNC4gSWYgbGVuZ3RoQSA9IGxpbSwg
cmV0dXJuIEEuCisgICAgICAgICAgICBpZiAoKytyZXN1bHRMZW5ndGggPT0gbGltaXQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworCisgICAgICAgICAg
ICAvLyA1LiBMZXQgcCBiZSBlLgorICAgICAgICAgICAgcG9zaXRpb24gPSBtYXRjaEVuZDsKKwor
ICAgICAgICAgICAgLy8gNi4gTGV0IG51bWJlck9mQ2FwdHVyZXMgYmUgPyBUb0xlbmd0aCg/IEdl
dCh6LCAibGVuZ3RoIikpLgorICAgICAgICAgICAgLy8gNy4gTGV0IG51bWJlck9mQ2FwdHVyZXMg
YmUgbWF4KG51bWJlck9mQ2FwdHVyZXMtMSwgMCkuCisgICAgICAgICAgICAvLyA4LiBMZXQgaSBi
ZSAxLgorICAgICAgICAgICAgLy8gOS4gUmVwZWF0LCB3aGlsZSBpIDw9IG51bWJlck9mQ2FwdHVy
ZXMsCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bWJlck9mQ2FwdHVy
ZXM7ICsraSkgeworICAgICAgICAgICAgICAgIC8vIGEuIExldCBuZXh0Q2FwdHVyZSBiZSA/IEdl
dCh6LCAhIFRvU3RyaW5nKGkpKS4KKyAgICAgICAgICAgICAgICAvLyBiLiBQZXJmb3JtICEgQ3Jl
YXRlRGF0YVByb3BlcnR5KEEsICEgVG9TdHJpbmcobGVuZ3RoQSksIG5leHRDYXB0dXJlKS4KKyAg
ICAgICAgICAgICAgICBpbnQgc3ViID0gb3ZlY3RvcltpICogMl07CisgICAgICAgICAgICAgICAg
cmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgsIHN1YiA8IDAgPyBqc1Vu
ZGVmaW5lZCgpIDoganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgc3ViLCBvdmVj
dG9yW2kgKiAyICsgMV0gLSBzdWIpKTsKKworICAgICAgICAgICAgICAgIC8vIGMuIExldCBpIGJl
IGkgKyAxLgorICAgICAgICAgICAgICAgIC8vIGQuIExldCBsZW5ndGhBIGJlIGxlbmd0aEEgKyAx
LgorICAgICAgICAgICAgICAgIC8vIGUuIElmIGxlbmd0aEEgPSBsaW0sIHJldHVybiBBLgorICAg
ICAgICAgICAgICAgIGlmICgrK3Jlc3VsdExlbmd0aCA9PSBsaW1pdCkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyAxMC4gTGV0IHEgYmUgcC4KKyAgICAgICAgICAgIG1hdGNoUG9zaXRpb24g
PSBwb3NpdGlvbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIDIwLiBMZXQgVCBiZSBhIFN0
cmluZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUg
ZWxlbWVudHMgYXQgaW5kaWNlcyBwIChpbmNsdXNpdmUpIHRocm91Z2ggc2l6ZSAoZXhjbHVzaXZl
KS4KKyAgICAvLyAyMS4gUGVyZm9ybSAhIENyZWF0ZURhdGFQcm9wZXJ0eShBLCAhIFRvU3RyaW5n
KGxlbmd0aEEpLCBUKS4KKyAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExl
bmd0aCsrLCBqc1N1YnN0cmluZyhleGVjLCB0aGlzVmFsdWUsIGlucHV0LCBwb3NpdGlvbiwgaW5w
dXRTaXplIC0gcG9zaXRpb24pKTsKKworICAgIC8vIDIyLiBSZXR1cm4gQS4KKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHJl
dmlzaW9uIDE5OTEwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw4IEBAIHByaXZhdGU6CiAgICAg
V3JpdGVCYXJyaWVyPFJlZ0V4cD4gbV9lbXB0eVJlZ0V4cDsKIH07CiAKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSopOworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFJlZ0V4cFByb3RvdHlwZV9oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAkocmV2aXNpb24g
MTk5MTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQg
KEMpIDIwMDctMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCkBAIC04MSw2ICs4MSwyOSBAQCBpbmxpbmUgU3RyaW5nT2JqZWN0KiBh
c1N0cmluZ09iamVjdChKU1ZhCiAKIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZ09iamVjdCogY29u
c3RydWN0U3RyaW5nKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAorLy8gSGVscGVy
IGZvciBwcm9kdWNpbmcgYSBKU1N0cmluZyBmb3IgJ3N0cmluZycsIHdoZXJlICdzdHJpbmcnIHdh
cyBiZWVuIHByb2R1Y2VkIGJ5CisvLyBjYWxsaW5nIFRvU3RyaW5nIG9uICdvcmlnaW5hbFZhbHVl
Jy4gSW4gY2FzZXMgd2hlcmUgJ29yaWdpbmFsVmFsdWUnIGFscmVhZHkgd2FzIGEKKy8vIHN0cmlu
ZyBwcmltaXRpdmUgd2UgY2FuIGp1c3QgdXNlIHRoaXMsIG90aGVyd2lzZSB3ZSBuZWVkIHRvIGFs
bG9jYXRlIGEgbmV3IEpTU3RyaW5nLgorc3RhdGljIGlubGluZSBKU1N0cmluZyoganNTdHJpbmdX
aXRoUmV1c2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9yaWdpbmFsVmFsdWUsIGNvbnN0IFN0
cmluZyYgc3RyaW5nKQoreworICAgIGlmIChvcmlnaW5hbFZhbHVlLmlzU3RyaW5nKCkpIHsKKyAg
ICAgICAgQVNTRVJUKGFzU3RyaW5nKG9yaWdpbmFsVmFsdWUpLT52YWx1ZShleGVjKSA9PSBzdHJp
bmcpOworICAgICAgICByZXR1cm4gYXNTdHJpbmcob3JpZ2luYWxWYWx1ZSk7CisgICAgfQorICAg
IHJldHVybiBqc1N0cmluZyhleGVjLCBzdHJpbmcpOworfQorCisvLyBIZWxwZXIgdGhhdCB0cmll
cyB0byB1c2UgdGhlIEpTU3RyaW5nIHN1YnN0cmluZyBzaGFyaW5nIG1lY2hhbmlzbSBpZiAnb3Jp
Z2luYWxWYWx1ZScgaXMgYSBKU1N0cmluZy4KK3N0YXRpYyBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vi
c3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvcmlnaW5hbFZhbHVlLCBjb25zdCBTdHJp
bmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYg
KG9yaWdpbmFsVmFsdWUuaXNTdHJpbmcoKSkgeworICAgICAgICBBU1NFUlQoYXNTdHJpbmcob3Jp
Z2luYWxWYWx1ZSktPnZhbHVlKGV4ZWMpID09IHN0cmluZyk7CisgICAgICAgIHJldHVybiBqc1N1
YnN0cmluZyhleGVjLCBhc1N0cmluZyhvcmlnaW5hbFZhbHVlKSwgb2Zmc2V0LCBsZW5ndGgpOwor
ICAgIH0KKyAgICByZXR1cm4ganNTdWJzdHJpbmcoZXhlYywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0
aCk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBTdHJpbmdPYmplY3Rf
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAxOTkxMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUu
b3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAx
MywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDA0LTIwMDgsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqICBDb3B5cmlnaHQg
KEMpIDIwMTUgSm9yZGFuIEhhcmJhbmQgKGxqaGFyYkBnbWFpbC5jb20pCiAgKgpAQCAtNzAsNyAr
NzAsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1BhZFN0YXJ0KEV4ZWNTdGF0ZSop
OwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlKEV4
ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNT
bGljZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jU3BsaXQoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY1N1YnN0cihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZShFeGVjU3RhdGUqKTsK
QEAgLTExMyw2ICsxMTIsNyBAQCBjb25zdCBDbGFzc0luZm8gU3RyaW5nUHJvdG90eXBlOjpzX2lu
Zm8gCiAgICAgbWF0Y2ggICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAg
cmVwZWF0ICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgc2VhcmNoICAg
IEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCisgICAgc3BsaXQgICAgIEpTQnVpbHRp
biAgICBEb250RW51bXxGdW5jdGlvbiAxCiBAZW5kCiAqLwogCkBAIC0xMzksNyArMTM5LDYgQEAg
dm9pZCBTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJgogICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJwYWRTdGFydCIsIHN0cmluZ1Byb3RvRnVuY1Bh
ZFN0YXJ0LCBEb250RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKCJyZXBsYWNlIiwgc3RyaW5nUHJvdG9GdW5jUmVwbGFjZSwgRG9u
dEVudW0sIDIsIFN0cmluZ1Byb3RvdHlwZVJlcGxhY2VJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJzbGljZSIsIHN0cmluZ1Byb3RvRnVuY1Ns
aWNlLCBEb250RW51bSwgMik7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04oInNwbGl0Iiwgc3RyaW5nUHJvdG9GdW5jU3BsaXQsIERvbnRFbnVtLCAyKTsKICAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigic3Vic3RyIiwgc3RyaW5nUHJv
dG9GdW5jU3Vic3RyLCBEb250RW51bSwgMik7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04oInN1YnN0cmluZyIsIHN0cmluZ1Byb3RvRnVuY1N1YnN0cmluZywgRG9u
dEVudW0sIDIpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJ0
b0xvd2VyQ2FzZSIsIHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlLCBEb250RW51bSwgMCk7CkBA
IC0xOTUsMjggKzE5NCw2IEBAIGJvb2wgU3RyaW5nUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi0vLyBIZWxwZXIgZm9yIHByb2R1Y2luZyBhIEpTU3RyaW5n
IGZvciAnc3RyaW5nJywgd2hlcmUgJ3N0cmluZycgd2FzIGJlZW4gcHJvZHVjZWQgYnkKLS8vIGNh
bGxpbmcgVG9TdHJpbmcgb24gJ29yaWdpbmFsVmFsdWUnLiBJbiBjYXNlcyB3aGVyZSAnb3JpZ2lu
YWxWYWx1ZScgYWxyZWFkeSB3YXMgYQotLy8gc3RyaW5nIHByaW1pdGl2ZSB3ZSBjYW4ganVzdCB1
c2UgdGhpcywgb3RoZXJ3aXNlIHdlIG5lZWQgdG8gYWxsb2NhdGUgYSBuZXcgSlNTdHJpbmcuCi1z
dGF0aWMgaW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZ1dpdGhSZXVzZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgb3JpZ2luYWxWYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgaWYg
KG9yaWdpbmFsVmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICBBU1NFUlQoYXNTdHJpbmcob3Jp
Z2luYWxWYWx1ZSktPnZhbHVlKGV4ZWMpID09IHN0cmluZyk7Ci0gICAgICAgIHJldHVybiBhc1N0
cmluZyhvcmlnaW5hbFZhbHVlKTsKLSAgICB9Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHN0
cmluZyk7Ci19Ci0KLS8vIEhlbHBlciB0aGF0IHRyaWVzIHRvIHVzZSB0aGUgSlNTdHJpbmcgc3Vi
c3RyaW5nIHNoYXJpbmcgbWVjaGFuaXNtIGlmICdvcmlnaW5hbFZhbHVlJyBpcyBhIEpTU3RyaW5n
Lgotc3RhdGljIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIG9yaWdpbmFsVmFsdWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICBpZiAob3JpZ2luYWxWYWx1ZS5pc1N0cmluZygp
KSB7Ci0gICAgICAgIEFTU0VSVChhc1N0cmluZyhvcmlnaW5hbFZhbHVlKS0+dmFsdWUoZXhlYykg
PT0gc3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4ZWMsIGFzU3RyaW5nKG9y
aWdpbmFsVmFsdWUpLCBvZmZzZXQsIGxlbmd0aCk7Ci0gICAgfQotICAgIHJldHVybiBqc1N1YnN0
cmluZyhleGVjLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKTsKLX0KLQogc3RhdGljIE5FVkVSX0lO
TElORSBTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzU2xvdyhTdHJpbmdWaWV3IHJlcGxh
Y2VtZW50LCBTdHJpbmdWaWV3IHNvdXJjZSwgY29uc3QgaW50KiBvdmVjdG9yLCBSZWdFeHAqIHJl
Zywgc2l6ZV90IGkpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBzdWJzdGl0dXRlZFJlcGxhY2VtZW50
OwpAQCAtMTE4MSwxNjkgKzExNTgsNTggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBzcGxp
dFN0cmluZ0J5TwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotLy8gRVMgNS4xIC0gMTUuNS40LjE0
IFN0cmluZy5wcm90b3R5cGUuc3BsaXQgKHNlcGFyYXRvciwgbGltaXQpCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0KEV4ZWNTdGF0ZSogZXhlYykKKy8v
IEVTIDIxLjEuMy4xNyBTdHJpbmcucHJvdG90eXBlLnNwbGl0KHNlcGFyYXRvciwgbGltaXQpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVj
U3RhdGUqIGV4ZWMpCiB7Ci0gICAgLy8gMS4gQ2FsbCBDaGVja09iamVjdENvZXJjaWJsZSBwYXNz
aW5nIHRoZSB0aGlzIHZhbHVlIGFzIGl0cyBhcmd1bWVudC4KICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwotICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhp
c1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgQVNT
RVJUKGNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpOwogCi0gICAgLy8gMi4gTGV0IFMg
YmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvU3RyaW5nLCBnaXZpbmcgaXQgdGhlIHRoaXMgdmFs
dWUgYXMgaXRzIGFyZ3VtZW50LgotICAgIC8vIDYuIExldCBzIGJlIHRoZSBudW1iZXIgb2YgY2hh
cmFjdGVycyBpbiBTLgorICAgIC8vIDMuIExldCBTIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBU
b1N0cmluZywgZ2l2aW5nIGl0IHRoZSB0aGlzIHZhbHVlIGFzIGl0cyBhcmd1bWVudC4KKyAgICAv
LyA3LiBMZXQgcyBiZSB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gUy4KICAgICBTdHJpbmcg
aW5wdXQgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICBBU1NFUlQoIWlucHV0LmlzTnVsbCgpKTsKIAotICAgIC8vIDMuIExl
dCBBIGJlIGEgbmV3IGFycmF5IGNyZWF0ZWQgYXMgaWYgYnkgdGhlIGV4cHJlc3Npb24gbmV3IEFy
cmF5KCkKKyAgICAvLyA0LiBMZXQgQSBiZSBhIG5ldyBhcnJheSBjcmVhdGVkIGFzIGlmIGJ5IHRo
ZSBleHByZXNzaW9uIG5ldyBBcnJheSgpCiAgICAgLy8gICAgd2hlcmUgQXJyYXkgaXMgdGhlIHN0
YW5kYXJkIGJ1aWx0LWluIGNvbnN0cnVjdG9yIHdpdGggdGhhdCBuYW1lLgogICAgIEpTQXJyYXkq
IHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CiAKLSAgICAvLyA0LiBMZXQg
bGVuZ3RoQSBiZSAwLgorICAgIC8vIDUuIExldCBsZW5ndGhBIGJlIDAuCiAgICAgdW5zaWduZWQg
cmVzdWx0TGVuZ3RoID0gMDsKIAotICAgIC8vIDUuIElmIGxpbWl0IGlzIHVuZGVmaW5lZCwgbGV0
IGxpbSA9IDJeMzItMTsgZWxzZSBsZXQgbGltID0gVG9VaW50MzIobGltaXQpLgorICAgIC8vIDYu
IElmIGxpbWl0IGlzIHVuZGVmaW5lZCwgbGV0IGxpbSA9IDJeMzItMTsgZWxzZSBsZXQgbGltID0g
VG9VaW50MzIobGltaXQpLgogICAgIEpTVmFsdWUgbGltaXRWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50
KDEpOwogICAgIHVuc2lnbmVkIGxpbWl0ID0gbGltaXRWYWx1ZS5pc1VuZGVmaW5lZCgpID8gMHhG
RkZGRkZGRnUgOiBsaW1pdFZhbHVlLnRvVUludDMyKGV4ZWMpOwogCi0gICAgLy8gNy4gTGV0IHAg
PSAwLgorICAgIC8vIDguIExldCBwID0gMC4KICAgICBzaXplX3QgcG9zaXRpb24gPSAwOwogCi0g
ICAgLy8gOC4gSWYgc2VwYXJhdG9yIGlzIGEgUmVnRXhwIG9iamVjdCAoaXRzIFtbQ2xhc3NdXSBp
cyAiUmVnRXhwIiksIGxldCBSID0gc2VwYXJhdG9yOworICAgIC8vIDkuIElmIHNlcGFyYXRvciBp
cyBhIFJlZ0V4cCBvYmplY3QgKGl0cyBbW0NsYXNzXV0gaXMgIlJlZ0V4cCIpLCBsZXQgUiA9IHNl
cGFyYXRvcjsKICAgICAvLyAgICBvdGhlcndpc2UgbGV0IFIgPSBUb1N0cmluZyhzZXBhcmF0b3Ip
LgogICAgIEpTVmFsdWUgc2VwYXJhdG9yVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBp
ZiAoc2VwYXJhdG9yVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKSB7Ci0gICAg
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgICAgICBSZWdFeHAqIHJlZyA9IGFzUmVnRXhw
T2JqZWN0KHNlcGFyYXRvclZhbHVlKS0+cmVnRXhwKCk7Ci0KLSAgICAgICAgLy8gOS4gSWYgbGlt
ID09IDAsIHJldHVybiBBLgotICAgICAgICBpZiAoIWxpbWl0KQotICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotCi0gICAgICAgIC8vIDEwLiBJZiBzZXBhcmF0b3Ig
aXMgdW5kZWZpbmVkLCB0aGVuCi0gICAgICAgIGlmIChzZXBhcmF0b3JWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7Ci0gICAgICAgICAgICAvLyBhLiBDYWxsIHRoZSBbW0RlZmluZU93blByb3BlcnR5XV0g
aW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVudHMgIjAiLAotICAgICAgICAgICAgLy8g
ICAgUHJvcGVydHkgRGVzY3JpcHRvciB7W1tWYWx1ZV1dOiBTLCBbW1dyaXRhYmxlXV06IHRydWUs
IFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlfSwgYW5kIGZhbHNl
LgotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCAwLCBqc1N0cmluZ1dp
dGhSZXVzZShleGVjLCB0aGlzVmFsdWUsIGlucHV0KSk7Ci0gICAgICAgICAgICAvLyBiLiBSZXR1
cm4gQS4KLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIDExLiBJZiBzID09IDAsIHRoZW4KLSAgICAgICAgaWYgKGlucHV0
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gYS4gQ2FsbCBTcGxpdE1hdGNoKFMsIDAsIFIp
IGFuZCBsZXQgeiBiZSBpdHMgTWF0Y2hSZXN1bHQgcmVzdWx0LgotICAgICAgICAgICAgLy8gYi4g
SWYgeiBpcyBub3QgZmFpbHVyZSwgcmV0dXJuIEEuCi0gICAgICAgICAgICAvLyBjLiBDYWxsIHRo
ZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVu
dHMgIjAiLAotICAgICAgICAgICAgLy8gICAgUHJvcGVydHkgRGVzY3JpcHRvciB7W1tWYWx1ZV1d
OiBTLCBbW1dyaXRhYmxlXV06IHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3Vy
YWJsZV1dOiB0cnVlfSwgYW5kIGZhbHNlLgotICAgICAgICAgICAgLy8gZC4gUmV0dXJuIEEuCi0g
ICAgICAgICAgICBpZiAoIXJlZy0+bWF0Y2goKnZtLCBpbnB1dCwgMCkpCi0gICAgICAgICAgICAg
ICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCAwLCBqc1N0cmluZ1dpdGhSZXVzZShleGVj
LCB0aGlzVmFsdWUsIGlucHV0KSk7Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyAxMi4gTGV0IHEgPSBwLgotICAgICAg
ICBzaXplX3QgbWF0Y2hQb3NpdGlvbiA9IDA7Ci0gICAgICAgIC8vIDEzLiBSZXBlYXQsIHdoaWxl
IHEgIT0gcwotICAgICAgICB3aGlsZSAobWF0Y2hQb3NpdGlvbiA8IGlucHV0Lmxlbmd0aCgpKSB7
Ci0gICAgICAgICAgICAvLyBhLiBDYWxsIFNwbGl0TWF0Y2goUywgcSwgUikgYW5kIGxldCB6IGJl
IGl0cyBNYXRjaFJlc3VsdCByZXN1bHQuCi0gICAgICAgICAgICBWZWN0b3I8aW50LCAzMj4gb3Zl
Y3RvcjsKLSAgICAgICAgICAgIGludCBtcG9zID0gcmVnLT5tYXRjaCgqdm0sIGlucHV0LCBtYXRj
aFBvc2l0aW9uLCBvdmVjdG9yKTsKLQotICAgICAgICAgICAgLy8gYi4gSWYgeiBpcyBhIGZhaWx1
cmUgdGhlbiB3ZSBjYW4gYnJlYWsgYmVjYXVzZSB0aGVyZSBhcmUgbm8gbWF0Y2hlcwotICAgICAg
ICAgICAgaWYgKG1wb3MgPCAwKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
bWF0Y2hQb3NpdGlvbiA9IG1wb3M7Ci0KLSAgICAgICAgICAgIC8vIGlmIHRoZSBtYXRjaCBpcyB0
aGUgZW1wdHkgbWF0Y2ggYXQgdGhlIGVuZCwgYnJlYWsuCi0gICAgICAgICAgICBpZiAobWF0Y2hQ
b3NpdGlvbiA+PSBpbnB1dC5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICAgICAgLy8gYy4gRWxzZSwgeiBpcyBub3QgZmFpbHVyZQotICAgICAgICAgICAgLy8gaS4g
eiBtdXN0IGJlIGEgU3RhdGUuIExldCBlIGJlIHoncyBlbmRJbmRleCBhbmQgbGV0IGNhcCBiZSB6
J3MgY2FwdHVyZXMgYXJyYXkuCi0gICAgICAgICAgICBzaXplX3QgbWF0Y2hFbmQgPSBvdmVjdG9y
WzFdOwotCi0gICAgICAgICAgICAvLyBpaS4gSWYgZSA9PSBwLCB0aGVuIGxldCBxID0gcSArIDEu
Ci0gICAgICAgICAgICBpZiAobWF0Y2hFbmQgPT0gcG9zaXRpb24pIHsKLSAgICAgICAgICAgICAg
ICArK21hdGNoUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAvLyBpaWkuIGlmIG1hdGNoRW5kID09IDAgdGhlbiBwb3NpdGlvbiBz
aG91bGQgYWxzbyBiZSB6ZXJvIGFuZCB0aHVzIG1hdGNoRW5kIHNob3VsZCBlcXVhbCBwb3NpdGlv
bi4KLSAgICAgICAgICAgIEFTU0VSVChtYXRjaEVuZCk7Ci0KLSAgICAgICAgICAgIC8vIGlpaS4g
RWxzZSwgZSAhPSBwCi0KLSAgICAgICAgICAgIC8vIDEuIExldCBUIGJlIGEgU3RyaW5nIHZhbHVl
IGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBjaGFyYWN0ZXJz
IGF0IHBvc2l0aW9ucyBwIChpbmNsdXNpdmUpCi0gICAgICAgICAgICAvLyAgICB0aHJvdWdoIHEg
KGV4Y2x1c2l2ZSkuCi0gICAgICAgICAgICAvLyAyLiBDYWxsIHRoZSBbW0RlZmluZU93blByb3Bl
cnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVudHMgVG9TdHJpbmcobGVuZ3Ro
QSksCi0gICAgICAgICAgICAvLyAgICBQcm9wZXJ0eSBEZXNjcmlwdG9yIHtbW1ZhbHVlXV06IFQs
IFtbV3JpdGFibGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxl
XV06IHRydWV9LCBhbmQgZmFsc2UuCi0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4
KGV4ZWMsIHJlc3VsdExlbmd0aCwganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwg
cG9zaXRpb24sIG1hdGNoUG9zaXRpb24gLSBwb3NpdGlvbikpOwotCi0gICAgICAgICAgICAvLyAz
LiBJbmNyZW1lbnQgbGVuZ3RoQSBieSAxLgotICAgICAgICAgICAgLy8gNC4gSWYgbGVuZ3RoQSA9
PSBsaW0sIHJldHVybiBBLgotICAgICAgICAgICAgKytyZXN1bHRMZW5ndGg7Ci0gICAgICAgICAg
ICBpZiAocmVzdWx0TGVuZ3RoID09IGxpbWl0KQotICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKLSAgICAgICAgICAgIGlmIChyZXN1bHRMZW5ndGggPj0gTUFY
X1NUT1JBR0VfVkVDVE9SX0lOREVYKSB7Ci0gICAgICAgICAgICAgICAgLy8gTGV0J3MgY29uc2lk
ZXIgd2hhdCdzIGJlc3QgZm9yIHVzZXJzIGhlcmUuIFdlJ3JlIGFib3V0IHRvIGluY3JlYXNlIHRo
ZSBsZW5ndGggb2YKLSAgICAgICAgICAgICAgICAvLyB0aGUgc3BsaXQgYXJyYXkgYmV5b25kIHRo
ZSBtYXhpbXVtIGxlbmd0aCB0aGF0IHdlIGNhbiBzdXBwb3J0IGVmZmljaWVudGx5LiBUaGlzCi0g
ICAgICAgICAgICAgICAgLy8gd2lsbCBjYXVzZSB1cyB0byB1c2UgYSBIYXNoTWFwIGZvciB0aGUg
bmV3IGVudHJpZXMgYWZ0ZXIgdGhpcyBwb2ludC4gVGhhdCdzIGdvaW5nCi0gICAgICAgICAgICAg
ICAgLy8gdG8gcmVzdWx0IGluIGEgdmVyeSBsb25nIHJ1bm5pbmcgdGltZSBvZiB0aGlzIGZ1bmN0
aW9uIGFuZCB2ZXJ5IGxhcmdlIG1lbW9yeQotICAgICAgICAgICAgICAgIC8vIHVzYWdlLiBJbiBt
eSBleHBlcmltZW50cywgSlNDIHdpbGwgc2l0IHNwaW5uaW5nIGZvciBtaW51dGVzIGFmdGVyIGdl
dHRpbmcgaGVyZSBhbmQKLSAgICAgICAgICAgICAgICAvLyBpdCB3YXMgdXNpbmcgPjRHQiBvZiBt
ZW1vcnkgYW5kIGV2ZW50dWFsbHkgZ3JldyB0byA4R0IuIEl0IGtlcHQgcnVubmluZyB3aXRob3V0
Ci0gICAgICAgICAgICAgICAgLy8gZmluaXNoaW5nIHVudGlsIEkga2lsbGVkIGl0LiBUaGF0J3Mg
cHJvYmFibHkgbm90IHdoYXQgdGhlIHVzZXIgd2FudGVkLiBUaGUgdXNlciwKLSAgICAgICAgICAg
ICAgICAvLyBvciB0aGUgcHJvZ3JhbSB0aGF0IHRoZSB1c2VyIGlzIHJ1bm5pbmcsIHByb2JhYmx5
IG1hZGUgYSBtaXN0YWtlIGJ5IGNhbGxpbmcgdGhpcwotICAgICAgICAgICAgICAgIC8vIG1ldGhv
ZCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQgcmVzdWx0ZWQgaW4gc3VjaCBhbiBvYm5veGlvdXMgYXJy
YXkuIFRoZXJlZm9yZSwgdG8KLSAgICAgICAgICAgICAgICAvLyBwcm90ZWN0IG91cnNlbHZlcywg
d2UgYmFpbCBhdCB0aGlzIHBvaW50LgotICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyA1LiBMZXQgcCA9IGUu
Ci0gICAgICAgICAgICAvLyA4LiBMZXQgcSA9IHAuCi0gICAgICAgICAgICBwb3NpdGlvbiA9IG1h
dGNoRW5kOwotICAgICAgICAgICAgbWF0Y2hQb3NpdGlvbiA9IG1hdGNoRW5kOwotCi0gICAgICAg
ICAgICAvLyA2LiBMZXQgaSA9IDAuCi0gICAgICAgICAgICAvLyA3LiBSZXBlYXQsIHdoaWxlIGkg
aXMgbm90IGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gY2FwLgotICAgICAgICAg
ICAgLy8gIGEgTGV0IGkgPSBpICsgMS4KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7
IGkgPD0gcmVnLT5udW1TdWJwYXR0ZXJucygpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAvLyBi
IENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgQSB3aXRo
IGFyZ3VtZW50cwotICAgICAgICAgICAgICAgIC8vICAgVG9TdHJpbmcobGVuZ3RoQSksIFByb3Bl
cnR5IERlc2NyaXB0b3Ige1tbVmFsdWVdXTogY2FwW2ldLCBbW1dyaXRhYmxlXV06Ci0gICAgICAg
ICAgICAgICAgLy8gICB0cnVlLCBbW0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVd
XTogdHJ1ZX0sIGFuZCBmYWxzZS4KLSAgICAgICAgICAgICAgICBpbnQgc3ViID0gb3ZlY3Rvcltp
ICogMl07Ci0gICAgICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1
bHRMZW5ndGgsIHN1YiA8IDAgPyBqc1VuZGVmaW5lZCgpIDoganNTdWJzdHJpbmcoZXhlYywgdGhp
c1ZhbHVlLCBpbnB1dCwgc3ViLCBvdmVjdG9yW2kgKiAyICsgMV0gLSBzdWIpKTsKLSAgICAgICAg
ICAgICAgICAvLyBjIEluY3JlbWVudCBsZW5ndGhBIGJ5IDEuCi0gICAgICAgICAgICAgICAgLy8g
ZCBJZiBsZW5ndGhBID09IGxpbSwgcmV0dXJuIEEuCi0gICAgICAgICAgICAgICAgaWYgKCsrcmVz
dWx0TGVuZ3RoID09IGxpbWl0KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVsc2Ugewor
ICAgIHsgLy8gRklYTUU6IEtlZXBpbmcgdGhpcyBpbmRlbnRhdGlvbiBoZXJlIHRvIG1pbmltaXpl
IHRoZSBkaWZmLiBXaWxsIHVuaW5kZW50IGFuZCByZW1vdmUgdGhpcyBsYXRlci4KICAgICAgICAg
U3RyaW5nIHNlcGFyYXRvciA9IHNlcGFyYXRvclZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgICAgICAvLyA5LiBJZiBs
aW0gPT0gMCwgcmV0dXJuIEEuCisgICAgICAgIC8vIDEwLiBJZiBsaW0gPT0gMCwgcmV0dXJuIEEu
CiAgICAgICAgIGlmICghbGltaXQpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiAKLSAgICAgICAgLy8gMTAuIElmIHNlcGFyYXRvciBpcyB1bmRlZmluZWQsIHRo
ZW4KLSAgICAgICAgSlNWYWx1ZSBzZXBhcmF0b3JWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwor
ICAgICAgICAvLyAxMS4gSWYgc2VwYXJhdG9yIGlzIHVuZGVmaW5lZCwgdGhlbgogICAgICAgICBp
ZiAoc2VwYXJhdG9yVmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgLy8gYS4gIENh
bGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgQSB3aXRoIGFy
Z3VtZW50cyAiMCIsCi0gICAgICAgICAgICAvLyAgICAgUHJvcGVydHkgRGVzY3JpcHRvciB7W1tW
YWx1ZV1dOiBTLCBbW1dyaXRhYmxlXV06IHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0Nv
bmZpZ3VyYWJsZV1dOiB0cnVlfSwgYW5kIGZhbHNlLgogICAgICAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3RJbmRleChleGVjLCAwLCBqc1N0cmluZ1dpdGhSZXVzZShleGVjLCB0aGlzVmFsdWUsIGlu
cHV0KSk7CiAgICAgICAgICAgICAvLyBiLiAgUmV0dXJuIEEuCiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyAxMS4gSWYg
cyA9PSAwLCB0aGVuCisgICAgICAgIC8vIDEyLiBJZiBzID09IDAsIHRoZW4KICAgICAgICAgaWYg
KGlucHV0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gYS4gQ2FsbCBTcGxpdE1hdGNoKFMs
IDAsIFIpIGFuZCBsZXQgeiBiZSBpdHMgTWF0Y2hSZXN1bHQgcmVzdWx0LgotICAgICAgICAgICAg
Ly8gYi4gSWYgeiBpcyBub3QgZmFpbHVyZSwgcmV0dXJuIEEuCi0gICAgICAgICAgICAvLyBjLiBD
YWxsIHRoZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBh
cmd1bWVudHMgIjAiLAotICAgICAgICAgICAgLy8gICAgUHJvcGVydHkgRGVzY3JpcHRvciB7W1tW
YWx1ZV1dOiBTLCBbW1dyaXRhYmxlXV06IHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0Nv
bmZpZ3VyYWJsZV1dOiB0cnVlfSwgYW5kIGZhbHNlLgorICAgICAgICAgICAgLy8gYS4gTGV0IHog
YmUgU3BsaXRNYXRjaChTLCAwLCBSKSB3aGVyZSBTIGlzIGlucHV0LCBSIGlzIHNlcGFyYXRvci4K
KyAgICAgICAgICAgIC8vIGIuIElmIHogaXMgbm90IGZhbHNlLCByZXR1cm4gQS4KKyAgICAgICAg
ICAgIC8vIGMuIENhbGwgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICIwIiwgUykuCiAgICAgICAgICAg
ICAvLyBkLiBSZXR1cm4gQS4KICAgICAgICAgICAgIGlmICghc2VwYXJhdG9yLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIDAsIGpzU3RyaW5n
V2l0aFJldXNlKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQpKTsKQEAgLTEzODYsMTcgKzEyNTIsMTYg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyAxMi4gTGV0IHEgPSBwLgorICAgICAgICAg
ICAgLy8gMTMuIExldCBxID0gcC4KICAgICAgICAgICAgIHNpemVfdCBtYXRjaFBvc2l0aW9uOwot
ICAgICAgICAgICAgLy8gMTMuIFJlcGVhdCwgd2hpbGUgcSAhPSBzCi0gICAgICAgICAgICAvLyAg
IGEuIENhbGwgU3BsaXRNYXRjaChTLCBxLCBSKSBhbmQgbGV0IHogYmUgaXRzIE1hdGNoUmVzdWx0
IHJlc3VsdC4KLSAgICAgICAgICAgIC8vICAgYi4gSWYgeiBpcyBmYWlsdXJlLCB0aGVuIGxldCBx
ID0gcSsxLgotICAgICAgICAgICAgLy8gICBjLiBFbHNlLCB6IGlzIG5vdCBmYWlsdXJlCisgICAg
ICAgICAgICAvLyAxNC4gUmVwZWF0LCB3aGlsZSBxICE9IHMKKyAgICAgICAgICAgIC8vICAgYS4g
bGV0IGUgYmUgU3BsaXRNYXRjaChTLCBxLCBSKS4KKyAgICAgICAgICAgIC8vICAgYi4gSWYgZSBp
cyBmYWlsdXJlLCB0aGVuIGxldCBxID0gcSsxLgorICAgICAgICAgICAgLy8gICBjLiBFbHNlLCBl
IGlzIGFuIGludGVnZXIgaW5kZXggPD0gcy4KICAgICAgICAgICAgIHdoaWxlICgobWF0Y2hQb3Np
dGlvbiA9IHN0cmluZ0ltcGwtPmZpbmQoc2VwYXJhdG9ySW1wbCwgcG9zaXRpb24pKSAhPSBub3RG
b3VuZCkgewogICAgICAgICAgICAgICAgIC8vIDEuIExldCBUIGJlIGEgU3RyaW5nIHZhbHVlIGVx
dWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBjaGFyYWN0ZXJzIGF0
IHBvc2l0aW9ucyBwIChpbmNsdXNpdmUpCiAgICAgICAgICAgICAgICAgLy8gICAgdGhyb3VnaCBx
IChleGNsdXNpdmUpLgotICAgICAgICAgICAgICAgIC8vIDIuIENhbGwgdGhlIFtbRGVmaW5lT3du
UHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50cyBUb1N0cmluZyhs
ZW5ndGhBKSwKLSAgICAgICAgICAgICAgICAvLyAgICBQcm9wZXJ0eSBEZXNjcmlwdG9yIHtbW1Zh
bHVlXV06IFQsIFtbV3JpdGFibGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29u
ZmlndXJhYmxlXV06IHRydWV9LCBhbmQgZmFsc2UuCisgICAgICAgICAgICAgICAgLy8gMi4gQ2Fs
bCBDcmVhdGVEYXRhUHJvcGVydHkoQSwgVG9TdHJpbmcobGVuZ3RoQSksIFQpLgogICAgICAgICAg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoLCBqc1N1YnN0
cmluZyhleGVjLCB0aGlzVmFsdWUsIGlucHV0LCBwb3NpdGlvbiwgbWF0Y2hQb3NpdGlvbiAtIHBv
c2l0aW9uKSk7CiAgICAgICAgICAgICAgICAgLy8gMy4gSW5jcmVtZW50IGxlbmd0aEEgYnkgMS4K
ICAgICAgICAgICAgICAgICAvLyA0LiBJZiBsZW5ndGhBID09IGxpbSwgcmV0dXJuIEEuCkBAIC0x
NDA0LDE5ICsxMjY5LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG8KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
CiAgICAgICAgICAgICAgICAgLy8gNS4gTGV0IHAgPSBlLgotICAgICAgICAgICAgICAgIC8vIDgu
IExldCBxID0gcC4KKyAgICAgICAgICAgICAgICAvLyA2LiBMZXQgcSA9IHAuCiAgICAgICAgICAg
ICAgICAgcG9zaXRpb24gPSBtYXRjaFBvc2l0aW9uICsgc2VwYXJhdG9yLmxlbmd0aCgpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQorICAgIH0gLy8gRklYTUU6IEtlZXBpbmcgdGhp
cyBpbmRlbnRhdGlvbiBoZXJlIHRvIG1pbmltaXplIHRoZSBkaWZmLiBXaWxsIHVuaW5kZW50IGFu
ZCByZW1vdmUgdGhpcyBsYXRlci4KIAotICAgIC8vIDE0LiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1
ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgY2hhcmFjdGVy
cyBhdCBwb3NpdGlvbnMgcCAoaW5jbHVzaXZlKQorICAgIC8vIDE1LiBMZXQgVCBiZSBhIFN0cmlu
ZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgY2hh
cmFjdGVycyBhdCBwb3NpdGlvbnMgcCAoaW5jbHVzaXZlKQogICAgIC8vICAgICB0aHJvdWdoIHMg
KGV4Y2x1c2l2ZSkuCi0gICAgLy8gMTUuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBp
bnRlcm5hbCBtZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50cyBUb1N0cmluZyhsZW5ndGhBKSwgUHJv
cGVydHkgRGVzY3JpcHRvcgotICAgIC8vICAgICB7W1tWYWx1ZV1dOiBULCBbW1dyaXRhYmxlXV06
IHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlfSwgYW5k
IGZhbHNlLgorICAgIC8vIDE2LiBDYWxsIENyZWF0ZURhdGFQcm9wZXJ0eShBLCBUb1N0cmluZyhs
ZW5ndGhBKSwgVCkuCiAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5n
dGgrKywganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgcG9zaXRpb24sIGlucHV0
Lmxlbmd0aCgpIC0gcG9zaXRpb24pKTsKIAotICAgIC8vIDE2LiBSZXR1cm4gQS4KKyAgICAvLyAx
Ny4gUmV0dXJuIEEuCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
aAkocmV2aXNpb24gMTk5MTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAg
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCwgMjAxMywgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC02Niw2
ICs2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3QKIFN0cmlu
ZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwgU3Ry
aW5nVmlldyBzb3VyY2UsIGNvbnN0IGludCogb3ZlY3RvciwgUmVnRXhwKiByZWcpOwogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGVhdENoYXJhY3RlcihF
eGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
U3BsaXRGYXN0KEV4ZWNTdGF0ZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAkocmV2aXNpb24gMTk5MTA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA3LDcg
KzEwMDcsNyBAQAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX1JlZ0V4cC5w
cm90b3R5cGVbU3ltYm9sLnNlYXJjaF0uanMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDog
ZXM2L1Byb3h5X2ludGVybmFsX2dldF9jYWxsc19SZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxp
dF0uanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRo
OiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX1JlZ0V4cF9jb25zdHJ1Y3Rvci5qcwogICBj
bWQ6IHJ1bkVTNiA6ZmFpbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX1N0
cmluZy5wcm90b3R5cGUubWF0Y2guanMKQEAgLTEwMTcsNyArMTAxNyw3IEBACiAtIHBhdGg6IGVz
Ni9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfU3RyaW5nLnByb3RvdHlwZS5zZWFyY2guanMKICAg
Y21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxz
X1N0cmluZy5wcm90b3R5cGUuc3BsaXQuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX1N0cmlu
Zy5yYXcuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJu
YWxfZ2V0X2NhbGxzX1RvUHJpbWl0aXZlLmpzCkBAIC0xMDkzLDcgKzEwOTMsNyBAQAogLSBwYXRo
OiBlczYvUmVnRXhwLnByb3RvdHlwZV9wcm9wZXJ0aWVzX1JlZ0V4cC5wcm90b3R5cGVbU3ltYm9s
LnNlYXJjaF0uanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUmVnRXhwLnBy
b3RvdHlwZV9wcm9wZXJ0aWVzX1JlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9SZWdF
eHAucHJvdG90eXBlX3Byb3BlcnRpZXNfUmVnRXhwW1N5bWJvbC5zcGVjaWVzXS5qcwogICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9SZWdFeHBfaXNfc3ViY2xhc3NhYmxlX2NvcnJl
Y3RfcHJvdG90eXBlX2NoYWluLmpzCkBAIC0xMjE1LDkgKzEyMTUsOSBAQAogLSBwYXRoOiBlczYv
d2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC5zcGVjaWVzX2V4aXN0ZW5jZS5qcwogICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9sLnNwZWNp
ZXNfUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L3dlbGwta25vd25fc3ltYm9sc19T
eW1ib2wuc3BsaXQuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC50b1ByaW1pdGl2ZS5qcwog
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3lt
Ym9sLnRvU3RyaW5nVGFnLmpzCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTkxMDYpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxNi0wNC0w
NiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRVM2OiBJbXBsZW1l
bnQgU3RyaW5nLnByb3RvdHlwZS5zcGxpdCBhbmQgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjAxMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvT2Jq
ZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2RvbS9z
dHJpbmctcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorCisgICAgICAgICoganMv
cmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMuanM6IEFkZGVkLgorCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL09iamVj
dC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzOgorICAgICAgICAqIHNwdXRuaWsvQ29uZm9ybWFuY2Uv
MTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xNF9TdHJpbmcucHJv
dG90eXBlLnNwbGl0L1MxNS41LjQuMTRfQTFfVDMtZXhwZWN0ZWQudHh0OgorCiAyMDE2LTA0LTA2
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ0V4
cCBjb25zdHJ1Y3RvciBzaG91bGQgdXNlIFN5bWJvbC5tYXRjaCBhbmQgb3RoZXIgcHJvcGVydGll
cwpJbmRleDogTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0
eU5hbWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTk5MTA2KQorKysgTGF5b3V0VGVzdHMvanMv
T2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC02MSw3ICs2MSw3IEBAIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhFcnJvcikgaXMK
IFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhFcnJvci5wcm90b3R5cGUpIGlzIFsnY29u
c3RydWN0b3InLCAnbWVzc2FnZScsICduYW1lJywgJ3RvU3RyaW5nJ10KIFBBU1MgZ2V0U29ydGVk
T3duUHJvcGVydHlOYW1lcyhNYXRoKSBpcyBbJ0UnLCdMTjEwJywnTE4yJywnTE9HMTBFJywnTE9H
MkUnLCdQSScsJ1NRUlQxXzInLCdTUVJUMicsJ2FicycsJ2Fjb3MnLCdhY29zaCcsJ2FzaW4nLCdh
c2luaCcsJ2F0YW4nLCdhdGFuMicsJ2F0YW5oJywnY2JydCcsJ2NlaWwnLCdjbHozMicsJ2Nvcycs
J2Nvc2gnLCdleHAnLCdleHBtMScsJ2Zsb29yJywnZnJvdW5kJywnaHlwb3QnLCdpbXVsJywnbG9n
JywnbG9nMTAnLCdsb2cxcCcsJ2xvZzInLCdtYXgnLCdtaW4nLCdwb3cnLCdyYW5kb20nLCdyb3Vu
ZCcsJ3NpZ24nLCdzaW4nLCdzaW5oJywnc3FydCcsJ3RhbicsJ3RhbmgnLCd0cnVuYyddCiBQQVNT
IGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoSlNPTikgaXMgWydwYXJzZScsICdzdHJpbmdpZnkn
XQotUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFN5bWJvbCkgaXMgWydmb3InLCAnaGFz
SW5zdGFuY2UnLCAnaXRlcmF0b3InLCAna2V5Rm9yJywgJ2xlbmd0aCcsICdtYXRjaCcsICduYW1l
JywgJ3Byb3RvdHlwZScsICdzZWFyY2gnLCAnc3BlY2llcycsICd0b1ByaW1pdGl2ZScsICd0b1N0
cmluZ1RhZycsICd1bnNjb3BhYmxlcyddCitQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMo
U3ltYm9sKSBpcyBbJ2ZvcicsICdoYXNJbnN0YW5jZScsICdpdGVyYXRvcicsICdrZXlGb3InLCAn
bGVuZ3RoJywgJ21hdGNoJywgJ25hbWUnLCAncHJvdG90eXBlJywgJ3NlYXJjaCcsICdzcGVjaWVz
JywgJ3NwbGl0JywgJ3RvUHJpbWl0aXZlJywgJ3RvU3RyaW5nVGFnJywgJ3Vuc2NvcGFibGVzJ10K
IFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhTeW1ib2wucHJvdG90eXBlKSBpcyBbJ2Nv
bnN0cnVjdG9yJywgJ3RvU3RyaW5nJywgJ3ZhbHVlT2YnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9w
ZXJ0eU5hbWVzKE1hcCkgaXMgWydsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXQogUEFTUyBn
ZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE1hcC5wcm90b3R5cGUpIGlzIFsnY2xlYXInLCAnY29u
c3RydWN0b3InLCAnZGVsZXRlJywgJ2VudHJpZXMnLCAnZm9yRWFjaCcsICdnZXQnLCAnaGFzJywg
J2tleXMnLCAnc2V0JywgJ3NpemUnLCAndmFsdWVzJ10KSW5kZXg6IExheW91dFRlc3RzL2pzL2Rv
bS9zdHJpbmctcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2pzL2RvbS9zdHJpbmctcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxOTkxMDYpCisrKyBMYXlvdXRUZXN0cy9qcy9kb20vc3RyaW5nLXByb3Rv
dHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTQsNyArMTQs
NyBAQCBQQVNTIFN0cmluZy5wcm90b3R5cGUubWF0Y2guY2FsbCh1bmRlZmluCiBQQVNTIFN0cmlu
Zy5wcm90b3R5cGUucmVwbGFjZS5jYWxsKHVuZGVmaW5lZCwgLzIrLywgJy0nKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBTdHJpbmcucHJvdG90eXBlLnNlYXJj
aC5jYWxsKHVuZGVmaW5lZCwgJzQnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBTdHJpbmcu
cHJvdG90eXBlLnNlYXJjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkLgog
UEFTUyBTdHJpbmcucHJvdG90eXBlLnNsaWNlLmNhbGwodW5kZWZpbmVkLCAxLCAzKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyBTdHJpbmcucHJvdG90eXBlLnNw
bGl0LmNhbGwodW5kZWZpbmVkLCAnMicpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCitQQVNTIFN0cmluZy5wcm90b3R5cGUuc3BsaXQuY2FsbCh1bmRlZmluZWQsICcyJykg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogU3RyaW5nLnByb3RvdHlwZS5zcGxpdCByZXF1aXJl
cyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkLgogUEFTUyBTdHJpbmcucHJvdG90eXBlLnNs
aWNlLmNhbGwodW5kZWZpbmVkLCAxLCAzKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBl
IGVycm9yLgogUEFTUyBTdHJpbmcucHJvdG90eXBlLnN1YnN0ci5jYWxsKHVuZGVmaW5lZCwgMSwg
MykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgU3RyaW5nLnBy
b3RvdHlwZS5zdWJzdHJpbmcuY2FsbCh1bmRlZmluZWQsIDEsIDMpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4
cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAK
K0pTUmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJv
d24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1z
cGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3Jl
Z2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuanMJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDU0IEBACisvL0AgcnVuRGVmYXVsdAorCitmdW5jdGlvbiBhc3NlcnQodGVzdGVkVmFs
dWUsIG1zZykgeworICAgIGlmICghdGVzdGVkVmFsdWUpCisgICAgICAgIHRocm93IEVycm9yKG1z
Zyk7Cit9CisKKy8vIFJlZ0V4cCB3aXRoIG92ZXJyaWRkZW4gW0BAc3BlY2llc106IFRlc3Rpbmcg
RVM2IDIxLjIuNS4xMTogNC4gTGV0IEMgYmUgPyBTcGVjaWVzQ29uc3RydWN0b3IocngsICVSZWdF
eHAlKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IHBhc3NlZCA9IGZhbHNlOworICAgIGxldCBv
cmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLCBT
eW1ib2wuc3BlY2llcyk7CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cCwgU3ltYm9s
LnNwZWNpZXMsIHsKKyAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcGFz
c2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiAvLi87CisgICAgICAgIH0KKyAgICB9KTsK
KyAgICBsZXQgb2JqID0gbmV3IFJlZ0V4cDsKKyAgICBsZXQgZXJyb3JTdHI7CisKKyAgICBhc3Nl
cnQoIXBhc3NlZCwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHNwZWNpZXMgY29uc3Ry
dWN0b3IiKTsKKyAgICBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJz
cGxpdG1lIik7CisgICAgYXNzZXJ0KHBhc3NlZCwgInNwZWNpZXMgY29uc3RydWN0b3Igbm90IGNh
bGxlZCBmb3IgUmVnRXhwIHdpdGggb3ZlcnJpZGRlbiBbQEBzcGVjaWVzXSIpOworCisgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cCwgU3ltYm9sLnNwZWNpZXMsIG9yaWdEZXNjcmlwdG9y
KTsKK30pKCk7CisKKy8vIFN1YmNsYXNzIHdpdGggb3ZlcnJpZGRlbiBbQEBzcGVjaWVzXTogVGVz
dGluZyBFUzYgMjEuMi41LjExOiA0LiBMZXQgQyBiZSA/IFNwZWNpZXNDb25zdHJ1Y3RvcihyeCwg
JVJlZ0V4cCUpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgcGFzc2VkID0gZmFsc2U7CisgICAg
Y2xhc3MgVGVzdFJlZ0V4cCBleHRlbmRzIFJlZ0V4cCB7IH0KKyAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkoVGVzdFJlZ0V4cCwgU3ltYm9sLnNwZWNpZXMsIHsKKyAgICAgICAgdmFsdWU6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiAv
Li87CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0gbmV3IFRlc3RSZWdFeHA7Cisg
ICAgbGV0IGVycm9yU3RyOworCisgICAgYXNzZXJ0KCFwYXNzZWQsICJ1bmV4cGVjdGVkIGNhbGwg
dG8gb3ZlcnJpZGRlbiBzcGVjaWVzIGNvbnN0cnVjdG9yIik7CisgICAgUmVnRXhwLnByb3RvdHlw
ZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgIGFzc2VydChwYXNzZWQs
ICJzcGVjaWVzIGNvbnN0cnVjdG9yIG5vdCBjYWxsZWQgZm9yIFJlZ0V4cCBzdWJjbGFzcyB3aXRo
IG92ZXJyaWRkZW4gW0BAc3BlY2llc10iKTsKK30pKCk7CisKKy8vIFJlZ0V4cCBzdWJjbGFzcyB3
aXRoIGNvbnN0cnVjdG9yOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDQuIExldCBDIGJlID8gU3Bl
Y2llc0NvbnN0cnVjdG9yKHJ4LCAlUmVnRXhwJSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBj
YWxsZWQgPSAwOworICAgIGNsYXNzIFRlc3RSZWdFeHAgZXh0ZW5kcyBSZWdFeHAgeworICAgICAg
ICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgICAgIHN1cGVyKCk7CisgICAgICAgICAgICBjYWxs
ZWQrKzsKKyAgICAgICAgfQorICAgIH0KKyAgICBsZXQgb2JqID0gbmV3IFRlc3RSZWdFeHA7CisK
KyAgICBhc3NlcnQoY2FsbGVkID09IDEsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBz
cGVjaWVzIGNvbnN0cnVjdG9yIik7CisgICAgUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRd
LmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgIGFzc2VydChjYWxsZWQgPT0gMiwgInNwZWNpZXMg
Y29uc3RydWN0b3Igbm90IGNhbGxlZCBmb3IgUmVnRXhwIHN1YmNsYXNzIHdpdGggY29uc3RydWN0
b3IiKTsKK30pKCk7CisKKy8vIEFuIG9iamVjdCB3aXRoIHNwZWNpZXMgY29uc3RydWN0b3I6IFRl
c3RpbmcgRVM2IDIxLjIuNS4xMTogNC4gTGV0IEMgYmUgPyBTcGVjaWVzQ29uc3RydWN0b3Iocngs
ICVSZWdFeHAlKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IHBhc3NlZCA9IGZhbHNlOworICAg
IGxldCBvYmogPSB7IGNvbnN0cnVjdG9yOiB7fSB9OworICAgIG9iai5jb25zdHJ1Y3RvcltTeW1i
b2wuc3BlY2llc10gPSBmdW5jdGlvbigpIHsKKyAgICAgIHBhc3NlZCA9IHRydWU7CisgICAgICBy
ZXR1cm4gLy4vOworICAgIH07CisKKyAgICBhc3NlcnQoIXBhc3NlZCwgInVuZXhwZWN0ZWQgY2Fs
bCB0byBvdmVycmlkZGVuIHNwZWNpZXMgY29uc3RydWN0b3IiKTsKKyAgICBSZWdFeHAucHJvdG90
eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAgYXNzZXJ0KHBhc3Nl
ZCwgInNwZWNpZXMgY29uc3RydWN0b3Igbm90IGNhbGxlZCBmb3Igb2JqZWN0IHdpdGggY3VzdG9t
IHNwZWNpZXMgY29uc3RydWN0b3IiKTsKK30pKCk7CisKKy8vIFJlZ0V4cCBvYmplY3Qgd2l0aCBv
dmVycmlkZGVuIGZsYWdzOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/
IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBm
bGFncyA9IFsgImZsYWdzIiwgImdsb2JhbCIsICJpZ25vcmVDYXNlIiwgIm11bHRpbGluZSIsICJz
dGlja3kiLCAidW5pY29kZSIgXTsKKyAgICBsZXQgZmxhZ1ZhbHVlcyA9IFsgIiIsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSBdOworICAgIGZvciAobGV0IGluZGV4IGluIGZsYWdz
KSB7CisgICAgICAgIChmdW5jdGlvbihmbGFnLCBmbGFnVmFsdWUpIHsKKyAgICAgICAgICAgIGxl
dCBwYXNzZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGxldCBvYmogPSAvLi87CisgICAgICAgICAg
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBmbGFnLCB7CisgICAgICAgICAgICAgICAgZ2V0
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZsYWdWYWx1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgYXNzZXJ0KCFwYXNzZWQsICJ1bmV4cGVjdGVkIGNh
bGwgdG8gb3ZlcnJpZGRlbiBnZXR0ZXIiKTsKKyAgICAgICAgICAgIFJlZ0V4cC5wcm90b3R5cGVb
U3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICAgICAgICAgIGFzc2VydChw
YXNzZWQsICJPdmVycmlkZGVuIHJlZ0V4cE9iai4iICsgZmxhZyArICIgZ2V0dGVyIHdhcyBub3Qg
Y2FsbGVkIik7CisgICAgICAgIH0pIChmbGFnc1tpbmRleF0sIGZsYWdWYWx1ZXNbaW5kZXhdKTsK
KyAgICB9Cit9KSgpOworCisvLyBSZWdFeHAucHJvdG90eXBlIHdpdGggb3ZlcnJpZGRlbiBmbGFn
czogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdl
dChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZmxhZ3MgPSBbICJmbGFn
cyIsICJnbG9iYWwiLCAiaWdub3JlQ2FzZSIsICJtdWx0aWxpbmUiLCAic3RpY2t5IiwgInVuaWNv
ZGUiIF07CisgICAgbGV0IGZsYWdWYWx1ZXMgPSBbICIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UgXTsKKyAgICBmb3IgKGxldCBpbmRleCBpbiBmbGFncykgeworICAgICAgICAo
ZnVuY3Rpb24oZmxhZywgZmxhZ1ZhbHVlKSB7CisgICAgICAgICAgICBsZXQgcGFzc2VkID0gZmFs
c2U7CisgICAgICAgICAgICBsZXQgb3JpZ0Rlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcpOworCisgICAgICAgICAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLnByb3RvdHlwZSwgZmxhZywgeworICAgICAgICAgICAg
ICAgIGdldDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbGFnVmFsdWU7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBsZXQgb2JqID0gLy4vOworCisgICAgICAg
ICAgICBhc3NlcnQoIXBhc3NlZCwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIGdldHRl
ciIpOworICAgICAgICAgICAgUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2Jq
LCAic3BsaXRtZSIpOworICAgICAgICAgICAgYXNzZXJ0KHBhc3NlZCwgIk92ZXJyaWRkZW4gUmVn
RXhwLnByb3RvdHlwZS4iICsgZmxhZyArICIgZ2V0dGVyIHdhcyBub3QgY2FsbGVkIik7CisKKyAg
ICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWdFeHAucHJvdG90eXBlLCBmbGFnLCBv
cmlnRGVzY3JpcHRvcik7CisgICAgICAgIH0pIChmbGFnc1tpbmRleF0sIGZsYWdWYWx1ZXNbaW5k
ZXhdKTsKKyAgICB9Cit9KSgpOworCisvLyBSZWdFeHAgc3ViY2xhc3Mgd2l0aCBvdmVycmlkZGVu
IGZsYWdzOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5n
KD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBmbGFncyA9IFsg
ImZsYWdzIiwgImdsb2JhbCIsICJpZ25vcmVDYXNlIiwgIm11bHRpbGluZSIsICJzdGlja3kiLCAi
dW5pY29kZSIgXTsKKyAgICBsZXQgZmxhZ1ZhbHVlcyA9IFsgIiIsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSBdOworICAgIGZvciAobGV0IGluZGV4IGluIGZsYWdzKSB7CisgICAg
ICAgIChmdW5jdGlvbihmbGFnLCBmbGFnVmFsdWUpIHsKKyAgICAgICAgICAgIGxldCBwYXNzZWQg
PSBmYWxzZTsKKyAgICAgICAgICAgIGNsYXNzIFRlc3RSZWdFeHAgZXh0ZW5kcyBSZWdFeHAgeyBn
ZXQgW2ZsYWddKCkgeyBwYXNzZWQgPSB0cnVlOyByZXR1cm4gZmxhZ1ZhbHVlOyB9IH07CisgICAg
ICAgICAgICBsZXQgb2JqID0gbmV3IFRlc3RSZWdFeHAoLy4vKTsKKworICAgICAgICAgICAgYXNz
ZXJ0KCFwYXNzZWQsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBnZXR0ZXIiKTsKKyAg
ICAgICAgICAgIFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0
bWUiKTsKKyAgICAgICAgICAgIGFzc2VydChwYXNzZWQsICJPdmVycmlkZGVuIFJlZ0V4cC5wcm90
b3R5cGUuIiArIGZsYWcgKyAiIGdldHRlciB3YXMgbm90IGNhbGxlZCIpOworCisgICAgICAgIH0p
IChmbGFnc1tpbmRleF0sIGZsYWdWYWx1ZXNbaW5kZXhdKTsKKyAgICB9Cit9KSgpOworCisvLyBS
ZWdFeHAgc3ViY2xhc3Mgd2l0aCBvdmVycmlkZGVuIGZsYWdzOiBUZXN0aW5nIEVTNiAyMS4yLjUu
MTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVu
Y3Rpb24gKCkgeworICAgIGxldCBmbGFncyA9IFsgImZsYWdzIiwgImdsb2JhbCIsICJpZ25vcmVD
YXNlIiwgIm11bHRpbGluZSIsICJzdGlja3kiLCAidW5pY29kZSIgXTsKKyAgICBsZXQgZmxhZ1Zh
bHVlcyA9IFsgIiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSBdOworICAgIGZv
ciAobGV0IGluZGV4IGluIGZsYWdzKSB7CisgICAgICAgIChmdW5jdGlvbihmbGFnLCBmbGFnVmFs
dWUpIHsKKyAgICAgICAgICAgIGxldCBwYXNzZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGNsYXNz
IFRlc3RSZWdFeHAgZXh0ZW5kcyBSZWdFeHAgeyB9OworICAgICAgICAgICAgbGV0IG9iaiA9IG5l
dyBUZXN0UmVnRXhwKC8uLyk7CisKKyAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShv
YmosIGZsYWcsIHsKKyAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgICAgICBwYXNzZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmxh
Z1ZhbHVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBhc3NlcnQoIXBhc3NlZCwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIGdldHRlciIp
OworICAgICAgICAgICAgUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAi
c3BsaXRtZSIpOworICAgICAgICAgICAgYXNzZXJ0KHBhc3NlZCwgIk92ZXJyaWRkZW4gc3ViY2xh
c3MgIiArIGZsYWcgKyAiIGdldHRlciB3YXMgbm90IGNhbGxlZCIpOworCisgICAgICAgIH0pIChm
bGFnc1tpbmRleF0sIGZsYWdWYWx1ZXNbaW5kZXhdKTsKKyAgICB9Cit9KSgpOworCisvLyBBbnkg
b2JqZWN0IHdpdGggc3BlY2llcyBjb25zdHJ1Y3RvcjogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1
LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9u
ICgpIHsKKyAgICBsZXQgcGFzc2VkID0gZmFsc2U7CisgICAgbGV0IG9iaiA9IHsgY29uc3RydWN0
b3I6IHt9IH07CisgICAgb2JqLmNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXSA9IGZ1bmN0aW9u
KCkgeworICAgICAgcmV0dXJuIC8uLzsKKyAgICB9OworCisgICAgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KG9iaiwgImZsYWdzIiwgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAg
IH0pOworCisgICAgYXNzZXJ0KCFwYXNzZWQsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRl
biBnZXR0ZXIiKTsKKyAgICBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmos
ICJzcGxpdG1lIik7CisgICAgYXNzZXJ0KHBhc3NlZCwgIk92ZXJyaWRkZW4gb2JqLmZsYWdzIGdl
dHRlciB3YXMgbm90IGNhbGxlZCIpOworfSkoKTsKKworLy8gQW55IG9iamVjdCB3aXRoIGN1c3Rv
bSBwcm90b3R5cGU6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9T
dHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IHBhc3Nl
ZCA9IGZhbHNlOworICAgIGxldCBUZXN0UmVnRXhwUHJvdG8gPSB7CisgICAgICAgIGdldCBmbGFn
cygpIHsKKyAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gIiI7
CisgICAgICAgIH0sCisgICAgICAgIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX3JlZ2V4LnRvU3RyaW5nKCk7CisgICAgICAgIH0sCisgICAgICAgIGdldCBzb3VyY2UoKSB7
CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVnZXguc291cmNlOworICAgICAgICB9CisgICAg
fQorICAgIFRlc3RSZWdFeHBQcm90by5fX3Byb3RvX18gPSBSZWdFeHAucHJvdG90eXBlOworCisg
ICAgbGV0IFRlc3RSZWdFeHAgPSBmdW5jdGlvbihyZWdleCkgeworICAgICAgICB0aGlzLl9yZWdl
eCA9IG5ldyBSZWdFeHAocmVnZXgpOworICAgIH0KKyAgICBUZXN0UmVnRXhwLnByb3RvdHlwZSA9
IFRlc3RSZWdFeHBQcm90bzsKKyAgICBUZXN0UmVnRXhwUHJvdG8uY29uc3RydWN0b3IgPSBUZXN0
UmVnRXhwOworCisgICAgbGV0IG9iaiA9IG5ldyBUZXN0UmVnRXhwKC8uLyk7CisKKyAgICBhc3Nl
cnQoIXBhc3NlZCwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIGdldHRlciIpOworICAg
IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAg
ICBhc3NlcnQocGFzc2VkLCAiT3ZlcnJpZGRlbiBmbGFncyBnZXR0ZXIgd2FzIG5vdCBjYWxsZWQi
KTsKKworfSkoKTsKKworLy8gMiBsZXZlbHMgb2Ygc3ViY2xhc3NlczogVGVzdGluZyBFUzYgMjEu
Mi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgor
KGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgcGFzc2VkID0gZmFsc2U7CisKKyAgICBjbGFzcyBSZWdF
eHBCIGV4dGVuZHMgUmVnRXhwIHsKKyAgICAgICAgZ2V0IGZsYWdzKCkgeworICAgICAgICAgICAg
cGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAgIH0K
KyAgICBjbGFzcyBSZWdFeHBDIGV4dGVuZHMgUmVnRXhwQiB7IH0KKworICAgIGFzc2VydChSZWdF
eHBCLl9fcHJvdG9fXyA9PSBSZWdFeHApOworICAgIGFzc2VydChSZWdFeHBDLl9fcHJvdG9fXyA9
PSBSZWdFeHBCKTsKKworICAgIGxldCBvYmogPSBuZXcgUmVnRXhwQygpOworCisgICAgYXNzZXJ0
KCFwYXNzZWQsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBnZXR0ZXIiKTsKKyAgICBS
ZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAg
YXNzZXJ0KHBhc3NlZCwgIk92ZXJyaWRkZW4gZmxhZ3MgZ2V0dGVyIHdhcyBub3QgY2FsbGVkIik7
Cit9KSgpOworCisvLyAyIGxldmVscyBvZiBzdWJjbGFzc2VzIHdpdGggc3Vic3RpdHV0ZWQgcHJv
dG90eXBlIGJlZm9yZSBpbnN0YW50aWF0aW9uOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExl
dCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkg
eworICAgIGxldCBmbGFnc1dhc0NhbGxlZCA9IGZhbHNlOworICAgIGxldCBleGVjV2FzQ2FsbGVk
ID0gZmFsc2U7CisKKyAgICBjbGFzcyBCIGV4dGVuZHMgUmVnRXhwIHsgfQorICAgIGNsYXNzIEMg
ZXh0ZW5kcyBCIHsgfQorCisgICAgYXNzZXJ0KEIuX19wcm90b19fID09PSBSZWdFeHApOworICAg
IGFzc2VydChDLl9fcHJvdG9fXyA9PT0gQik7CisgICAgYXNzZXJ0KEIucHJvdG90eXBlLl9fcHJv
dG9fXyA9PT0gUmVnRXhwLnByb3RvdHlwZSk7CisgICAgYXNzZXJ0KEMucHJvdG90eXBlLl9fcHJv
dG9fXyA9PT0gQi5wcm90b3R5cGUpOworCisgICAgbGV0IFggPSBmdW5jdGlvbiAoKSB7fQorICAg
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShYLnByb3RvdHlwZSwgImZsYWdzIiwgeworICAgICAgICBn
ZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZmxhZ3NXYXNDYWxsZWQgPSB0cnVlOworICAg
ICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisgICAgfSk7CisgICAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KFgucHJvdG90eXBlLCAiZXhlYyIsIHsKKyAgICAgICAgdmFsdWU6IGZ1bmN0aW9u
KHN0cikgeworICAgICAgICAgICAgZXhlY1dhc0NhbGxlZCA9IHRydWU7CisgICAgICAgICAgICBy
ZXR1cm4gLy4vLmV4ZWMoc3RyKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgLy8gTW9ua2V5
IHdpdGggdGhlIHByb3RvdHlwZSBjaGFpbiBiZWZvcmUgaW5zdGFudGlhdGluZyBDLgorICAgIFgu
X19wcm90b19fID0gUmVnRXhwOworICAgIFgucHJvdG90eXBlLl9fcHJvdG9fXyA9IFJlZ0V4cC5w
cm90b3R5cGU7CisgICAgQy5fX3Byb3RvX18gPSBYOworICAgIEMucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFgucHJvdG90eXBlOworCisgICAgYXNzZXJ0KFguX19wcm90b19fID09PSBSZWdFeHApOwor
ICAgIGFzc2VydChDLl9fcHJvdG9fXyA9PT0gWCk7CisgICAgYXNzZXJ0KFgucHJvdG90eXBlLl9f
cHJvdG9fXyA9PT0gUmVnRXhwLnByb3RvdHlwZSk7CisgICAgYXNzZXJ0KEMucHJvdG90eXBlLl9f
cHJvdG9fXyA9PT0gWC5wcm90b3R5cGUpOworCisgICAgbGV0IG9iaiA9IG5ldyBDKCk7CisKKyAg
ICBhc3NlcnQoIWZsYWdzV2FzQ2FsbGVkLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4g
Z2V0dGVyIik7CisgICAgYXNzZXJ0KCFleGVjV2FzQ2FsbGVkLCAidW5leHBlY3RlZCBjYWxsIHRv
IG92ZXJyaWRkZW4gZXhlYyIpOworICAgIFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5j
YWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoZmxhZ3NXYXNDYWxsZWQsICJPdmVycmlk
ZGVuIGZsYWdzIGdldHRlciB3YXMgbm90IGNhbGxlZCIpOworICAgIGFzc2VydChleGVjV2FzQ2Fs
bGVkLCAiT3ZlcnJpZGRlbiBleGVjIHdhcyBub3QgY2FsbGVkIik7Cit9KSgpOworCisvLyAyIGxl
dmVscyBvZiBzdWJjbGFzc2VzIHdpdGggc3Vic3RpdHV0ZWQgcHJvdG90eXBlIGFmdGVyIGluc3Rh
bnRpYXRpb246IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJp
bmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZsYWdzV2Fz
Q2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGV4ZWNXYXNDYWxsZWQgPSBmYWxzZTsKKworICAgIGNs
YXNzIEIgZXh0ZW5kcyBSZWdFeHAgeyB9CisgICAgY2xhc3MgQyBleHRlbmRzIEIgeyB9CisKKyAg
ICBhc3NlcnQoQi5fX3Byb3RvX18gPT09IFJlZ0V4cCk7CisgICAgYXNzZXJ0KEMuX19wcm90b19f
ID09PSBCKTsKKyAgICBhc3NlcnQoQi5wcm90b3R5cGUuX19wcm90b19fID09PSBSZWdFeHAucHJv
dG90eXBlKTsKKyAgICBhc3NlcnQoQy5wcm90b3R5cGUuX19wcm90b19fID09PSBCLnByb3RvdHlw
ZSk7CisKKyAgICBsZXQgWCA9IGZ1bmN0aW9uICgpIHt9CisgICAgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KFgucHJvdG90eXBlLCAiZmxhZ3MiLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBmbGFnc1dhc0NhbGxlZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gIiI7
CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoWC5wcm90b3R5
cGUsICJleGVjIiwgeworICAgICAgICB2YWx1ZTogZnVuY3Rpb24oc3RyKSB7CisgICAgICAgICAg
ICBleGVjV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiAvLi8uZXhlYyhzdHIp
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICAvLyBJbnN0YW50aWF0ZSBDIGJlZm9yZSBtb25r
ZXlpbmcgd2l0aCB0aGUgcHJvdG90eXBlIGNoYWluLgorICAgIGxldCBvYmogPSBuZXcgQygpOwor
CisgICAgWC5fX3Byb3RvX18gPSBSZWdFeHA7CisgICAgWC5wcm90b3R5cGUuX19wcm90b19fID0g
UmVnRXhwLnByb3RvdHlwZTsKKyAgICBDLl9fcHJvdG9fXyA9IFg7CisgICAgQy5wcm90b3R5cGUu
X19wcm90b19fID0gWC5wcm90b3R5cGU7CisKKyAgICBhc3NlcnQoWC5fX3Byb3RvX18gPT09IFJl
Z0V4cCk7CisgICAgYXNzZXJ0KEMuX19wcm90b19fID09PSBYKTsKKyAgICBhc3NlcnQoWC5wcm90
b3R5cGUuX19wcm90b19fID09PSBSZWdFeHAucHJvdG90eXBlKTsKKyAgICBhc3NlcnQoQy5wcm90
b3R5cGUuX19wcm90b19fID09PSBYLnByb3RvdHlwZSk7CisKKyAgICBhc3NlcnQoIWZsYWdzV2Fz
Q2FsbGVkLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gZ2V0dGVyIik7CisgICAgYXNz
ZXJ0KCFleGVjV2FzQ2FsbGVkLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gZXhlYyIp
OworICAgIFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUi
KTsKKyAgICBhc3NlcnQoZmxhZ3NXYXNDYWxsZWQsICJPdmVycmlkZGVuIGZsYWdzIGdldHRlciB3
YXMgbm90IGNhbGxlZCIpOworICAgIGFzc2VydChleGVjV2FzQ2FsbGVkLCAiT3ZlcnJpZGRlbiBl
eGVjIHdhcyBub3QgY2FsbGVkIik7Cit9KSgpOworCisvLyAyIGxldmVscyBvZiBzdWJjbGFzc2Vz
IHdpdGggcHJveGllZCBwcm90b3R5cGU6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZs
YWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7Cisg
ICAgbGV0IGZsYWdzV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgbGV0IGV4ZWNXYXNDYWxsZWQgPSBm
YWxzZTsKKworICAgIGNsYXNzIEIgZXh0ZW5kcyBSZWdFeHAgeyB9OworCisgICAgYXNzZXJ0KEIu
X19wcm90b19fID09PSBSZWdFeHApOworICAgIGFzc2VydChCLnByb3RvdHlwZS5fX3Byb3RvX18g
PT09IFJlZ0V4cC5wcm90b3R5cGUpOworCisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KFJlZ0V4
cC5wcm90b3R5cGUsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbihvYmosIHByb3ApIHsKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHByb3h5RXhlYyhzdHIpIHsKKyAgICAgICAgICAgICAgICBleGVjV2Fz
Q2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLy4vLmV4ZWMoc3RyKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHByb3AgPT09ICJmbGFncyIpCisgICAgICAg
ICAgICAgICAgZmxhZ3NXYXNDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAocHJv
cCA9PT0gImV4ZWMiKQorICAgICAgICAgICAgICAgIHJldHVybiBwcm94eUV4ZWM7CisgICAgICAg
ICAgICByZXR1cm4gb2JqW3Byb3BdOworICAgICAgICB9CisgICAgfSk7CisgICAgQi5wcm90b3R5
cGUuX19wcm90b19fID0gcHJveHk7CisKKyAgICAvLyBJbnN0YW50aWF0aW5nIEIgYmVmb3JlIG1v
bmtleSB3aXRoIHRoZSBwcm90b3R5cGUgY2hhaW4uCisgICAgbGV0IG9iaiA9IG5ldyBCKCk7CisK
KyAgICBhc3NlcnQoIWZsYWdzV2FzQ2FsbGVkLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRk
ZW4gZ2V0dGVyIik7CisgICAgYXNzZXJ0KCFleGVjV2FzQ2FsbGVkLCAidW5leHBlY3RlZCBjYWxs
IHRvIG92ZXJyaWRkZW4gZXhlYyIpOworICAgIFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0
XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoZmxhZ3NXYXNDYWxsZWQsICJPdmVy
cmlkZGVuIGZsYWdzIGdldHRlciB3YXMgbm90IGNhbGxlZCIpOworICAgIGFzc2VydChleGVjV2Fz
Q2FsbGVkLCAiT3ZlcnJpZGRlbiBleGVjIHdhcyBub3QgY2FsbGVkIik7Cit9KSgpOworCisvLyBS
ZWdFeHAucHJvdG90eXBlIHdpdGggb3ZlcnJpZGRlbiBleGVjOiBUZXN0aW5nIEVTNiAyMS4yLjUu
MTE6IDE5LmIuIExldCB6IGJlID8gUmVnRXhwRXhlYyhzcGxpdHRlciwgUykuCisoZnVuY3Rpb24g
KCkgeworICAgIGxldCBwYXNzZWQgPSBmYWxzZTsKKyAgICBsZXQgb3JpZ0Rlc2NyaXB0b3IgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsICJleGVjIik7
CisKKyAgICBsZXQgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhw
LnByb3RvdHlwZSwgImV4ZWMiKTsKKyAgICBsZXQgb3JpZ0V4ZWMgPSBkZXNjLnZhbHVlOworCisg
ICAgbGV0IG9iaiA9IC8uLzsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLnByb3Rv
dHlwZSwgImV4ZWMiLCB7CisgICAgICAgIHZhbHVlOiBmdW5jdGlvbihzdHIpIHsKKyAgICAgICAg
ICAgIHBhc3NlZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gb3JpZ0V4ZWMuY2FsbCh0aGlz
LCBzdHIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhc3NlcnQoIXBhc3NlZCwgInVuZXhw
ZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIGV4ZWMiKTsKKyAgICBSZWdFeHAucHJvdG90eXBlW1N5
bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAgYXNzZXJ0KHBhc3NlZCwgIk92
ZXJyaWRkZW4gUmVnRXhwLnByb3RvdHlwZS5leGVjIHdhcyBub3QgY2FsbGVkIik7CisKKyAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLnByb3RvdHlwZSwgImV4ZWMiLCBvcmlnRGVzY3Jp
cHRvcik7Cit9KSgpOworCisvLyBSZWdFeHAgc3ViY2xhc3Mgd2l0aCBvdmVycmlkZGVuIGV4ZWM6
IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogMTkuYi4gTGV0IHogYmUgPyBSZWdFeHBFeGVjKHNwbGl0
dGVyLCBTKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IHBhc3NlZCA9IGZhbHNlOworICAgIGNs
YXNzIFRlc3RSZWdFeHAgZXh0ZW5kcyBSZWdFeHAgeworICAgICAgICBleGVjKHN0cikgeworICAg
ICAgICAgICAgcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBSZWdFeHAucHJvdG90
eXBlLmV4ZWMuY2FsbCh0aGlzLCBzdHIpOworICAgICAgICB9CisgICAgfTsKKyAgICBsZXQgb2Jq
ID0gbmV3IFRlc3RSZWdFeHAoLy4vKTsKKworICAgIGFzc2VydCghcGFzc2VkLCAidW5leHBlY3Rl
ZCBjYWxsIHRvIG92ZXJyaWRkZW4gZXhlYyIpOworICAgIFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9s
LnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQocGFzc2VkLCAiT3ZlcnJp
ZGRlbiBzdWJjbGFzcyBleGVjIHdhcyBub3QgY2FsbGVkIik7Cit9KSgpOworCisvLyBQcm94aWVk
IFJlZ0V4cCBvYnNlcnZpbmcgZXZlcnkgZ2V0LgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZ2V0
cyA9IFtdOworICAgIGxldCByZWdleHAgPSBuZXcgUmVnRXhwKC9pdC8pOworICAgIGxldCBwcm94
eSA9IG5ldyBQcm94eShyZWdleHAsIHsKKyAgICAgICAgZ2V0KG9iaiwgcHJvcCkgeworICAgICAg
ICAgICAgZ2V0cy5wdXNoKHByb3AudG9TdHJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm4gb2Jq
W3Byb3BdOworICAgICAgICB9CisgICAgfSk7CisKKyAgICByZXN1bHQgPSBSZWdFeHAucHJvdG90
eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChwcm94eSwgInNwbGl0bWUiKTsKKyAgICAvLyBOb3RlOiBA
QHNwbGl0IGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFJlZ0V4cCB1c2luZyBpdHMgQEBz
cGVjaWVzLCBhbmQgcGVyZm9ybXMKKyAgICAvLyB0aGUgc3BsaXQgb3BlcmF0aW9uIHdpdGggdGhh
dCBuZXcgaW5zdGFuY2UuIEhlbmNlLCB0aGUgcHJveHkgaXMgb25seSBhYmxlIHRvIG9ic2VydmUK
KyAgICAvLyBnZXRzIHVwIHRvIHRoZSBjcmVhdGlvbiBvZiB0aGUgbmV3IGluc3RhbmNlLgorICAg
IGFzc2VydChnZXRzLnRvU3RyaW5nKCkgPT0gImNvbnN0cnVjdG9yLGZsYWdzLFN5bWJvbChTeW1i
b2wubWF0Y2gpLHNvdXJjZSIsCisgICAgICAgICJQcm94eSBub3QgYWJsZSB0byBvYnNlcnZlIHNv
bWUgZ2V0cyIpOworICAgIGFzc2VydChyZXN1bHQudG9TdHJpbmcoKSA9PSAic3BsLG1lIiwgIlVu
ZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyBQcm94aWVkIFJlZ0V4cCAod2l0aG91dCBA
QG1hdGNoKSBvYnNlcnZpbmcgZXZlcnkgZ2V0LgorLy8gVGhpcyBpcyB0byBmb3JjZSB0aGUgUmVn
RXhwIEBzcGVjaWVzIGNvbnN0cnVjdG9yIHRvIGFjY2VzcyBzb3VyY2UuCisoZnVuY3Rpb24gKCkg
eworICAgIGxldCBnZXRzID0gW107CisgICAgbGV0IHJlZ2V4cCA9IG5ldyBSZWdFeHAoL2l0Lyk7
CisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHJlZ2V4cCwgeworICAgICAgICBnZXQob2JqLCBw
cm9wKSB7CisgICAgICAgICAgICBpZiAocHJvcCA9PSBTeW1ib2wubWF0Y2gpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGdldHMucHVzaChwcm9wLnRvU3Ry
aW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIG9ialtwcm9wXTsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwocHJv
eHksICJzcGxpdG1lIik7CisgICAgLy8gTm90ZTogQEBzcGxpdCBjcmVhdGVzIGEgbmV3IGluc3Rh
bmNlIG9mIHRoZSBSZWdFeHAgdXNpbmcgaXRzIEBAc3BlY2llcywgYW5kIHBlcmZvcm1zCisgICAg
Ly8gdGhlIHNwbGl0IG9wZXJhdGlvbiB3aXRoIHRoYXQgbmV3IGluc3RhbmNlLiBIZW5jZSwgdGhl
IHByb3h5IGlzIG9ubHkgYWJsZSB0byBvYnNlcnZlCisgICAgLy8gZ2V0cyB1cCB0byB0aGUgY3Jl
YXRpb24gb2YgdGhlIG5ldyBpbnN0YW5jZS4KKyAgICBhc3NlcnQoZ2V0cy50b1N0cmluZygpID09
ICJjb25zdHJ1Y3RvcixmbGFncyxTeW1ib2woU3ltYm9sLnRvUHJpbWl0aXZlKSx0b1N0cmluZyxz
b3VyY2UsZmxhZ3MiLAorICAgICAgICAiUHJveHkgbm90IGFibGUgdG8gb2JzZXJ2ZSBzb21lIGdl
dHMiKTsKKworICAgIC8vIFRoZSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFJlZ0V4cCB3b3VsZCBoYXZl
IGJlZW4gY29uc3RydWN0ZWQgd2l0aCB0aGUgcGF0dGVybiBmcm9tCisgICAgLy8gdGhlIHByb3h5
IHRvU3RyaW5nKCkgaS5lLiAiXC9sdFwvIiBpbnN0ZWFkIG9mIHNvdXJjZSwgYmVjYXVzZSB0aGUg
cHJveHkgaXMgYW4KKyAgICAvLyBvYmplY3Qgd2l0aG91dCBhIFtAQG1hdGNoXSBwcm9wZXJ0eS4K
KyAgICBhc3NlcnQocmVzdWx0LnRvU3RyaW5nKCkgPT0gInNwbGl0bWUiLCAiVW5leHBlY3RlZCBy
ZXN1bHQiKTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0
LWdldE93blByb3BlcnR5TmFtZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCShyZXZpc2lvbiAxOTkxMDYp
CisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFt
ZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgdmFyIGV4cGVjdGVkUHJvcGVy
dHlOYW1lc1NldCA9IHsKICAgICAiRXJyb3IucHJvdG90eXBlIjogIlsnY29uc3RydWN0b3InLCAn
bWVzc2FnZScsICduYW1lJywgJ3RvU3RyaW5nJ10iLAogICAgICJNYXRoIjogIlsnRScsJ0xOMTAn
LCdMTjInLCdMT0cxMEUnLCdMT0cyRScsJ1BJJywnU1FSVDFfMicsJ1NRUlQyJywnYWJzJywnYWNv
cycsJ2Fjb3NoJywnYXNpbicsJ2FzaW5oJywnYXRhbicsJ2F0YW4yJywnYXRhbmgnLCdjYnJ0Jywn
Y2VpbCcsJ2NsejMyJywnY29zJywnY29zaCcsJ2V4cCcsJ2V4cG0xJywnZmxvb3InLCdmcm91bmQn
LCdoeXBvdCcsJ2ltdWwnLCdsb2cnLCdsb2cxMCcsJ2xvZzFwJywnbG9nMicsJ21heCcsJ21pbics
J3BvdycsJ3JhbmRvbScsJ3JvdW5kJywnc2lnbicsJ3NpbicsJ3NpbmgnLCdzcXJ0JywndGFuJywn
dGFuaCcsJ3RydW5jJ10iLAogICAgICJKU09OIjogIlsncGFyc2UnLCAnc3RyaW5naWZ5J10iLAot
ICAgICJTeW1ib2wiOiAiWydmb3InLCAnaGFzSW5zdGFuY2UnLCAnaXRlcmF0b3InLCAna2V5Rm9y
JywgJ2xlbmd0aCcsICdtYXRjaCcsICduYW1lJywgJ3Byb3RvdHlwZScsICdzZWFyY2gnLCAnc3Bl
Y2llcycsICd0b1ByaW1pdGl2ZScsICd0b1N0cmluZ1RhZycsICd1bnNjb3BhYmxlcyddIiwKKyAg
ICAiU3ltYm9sIjogIlsnZm9yJywgJ2hhc0luc3RhbmNlJywgJ2l0ZXJhdG9yJywgJ2tleUZvcics
ICdsZW5ndGgnLCAnbWF0Y2gnLCAnbmFtZScsICdwcm90b3R5cGUnLCAnc2VhcmNoJywgJ3NwZWNp
ZXMnLCAnc3BsaXQnLCAndG9QcmltaXRpdmUnLCAndG9TdHJpbmdUYWcnLCAndW5zY29wYWJsZXMn
XSIsCiAgICAgIlN5bWJvbC5wcm90b3R5cGUiOiAiWydjb25zdHJ1Y3RvcicsICd0b1N0cmluZycs
ICd2YWx1ZU9mJ10iLAogICAgICJNYXAiOiAiWydsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUn
XSIsCiAgICAgIk1hcC5wcm90b3R5cGUiOiAiWydjbGVhcicsICdjb25zdHJ1Y3RvcicsICdkZWxl
dGUnLCAnZW50cmllcycsICdmb3JFYWNoJywgJ2dldCcsICdoYXMnLCAna2V5cycsICdzZXQnLCAn
c2l6ZScsICd2YWx1ZXMnXSIsCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNl
LzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTRfU3RyaW5nLnBy
b3RvdHlwZS5zcGxpdC9TMTUuNS40LjE0X0ExX1QzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVf
U3RyaW5nLzE1LjUuNC8xNS41LjQuMTRfU3RyaW5nLnByb3RvdHlwZS5zcGxpdC9TMTUuNS40LjE0
X0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTk5MTA2KQorKysgTGF5b3V0VGVzdHMvc3B1
dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUu
NS40LjE0X1N0cmluZy5wcm90b3R5cGUuc3BsaXQvUzE1LjUuNC4xNF9BMV9UMy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBTMTUuNS40LjE0X0ExX1QzCiAKLUZB
SUwgVHlwZUVycm9yOiBUeXBlIGVycm9yCitGQUlMIFR5cGVFcnJvcjogU3RyaW5nLnByb3RvdHlw
ZS5zcGxpdCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkCiAKIFRFU1QgQ09N
UExFVEUKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276240</attachid>
            <date>2016-04-12 09:36:49 -0700</date>
            <delta_ts>2016-04-12 10:02:48 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-156013.patch</filename>
            <type>text/plain</type>
            <size>160985</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5MzM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBA
CisyMDE2LTA0LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
UzY6IEltcGxlbWVudCBTdHJpbmcucHJvdG90eXBlLnNwbGl0IGFuZCBSZWdFeHAucHJvdG90eXBl
W0BAc3BsaXRdLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU2MDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dAorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzOgorICAg
ICAgICAoc3BlY2llc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlUHJv
dG90eXBlLmpzOgorICAgICAgICAtIHJlZmFjdG9yZWQgdG8gdXNlIHRoZSBAc3BlY2llc0NvbnN0
cnVjdG9yIGludGVybmFsIGZ1bmN0aW9uLgorCisgICAgICAgICogYnVpbHRpbnMvUmVnRXhwUHJv
dG90eXBlLmpzOgorICAgICAgICAoYWR2YW5jZVN0cmluZ0luZGV4KToKKyAgICAgICAgLSByZWZh
Y3RvcmVkIGZyb20gQGFkdmFuY2VTdHJpbmdJbmRleFVuaWNvZGUoKSB0byBiZSBtYXRjaCB0aGUg
c3BlYy4KKyAgICAgICAgICBCZW5jaG1hcmtzIHNob3cgdGhhdCB0aGVyZSdzIG5vIGFkdmFudGFn
ZSBpbiBkb2luZyB0aGUgdW5pY29kZSBjaGVjayBvdXRzaWRlCisgICAgICAgICAgb2YgdGhlIGFk
dmFuY2VTdHJpbmdJbmRleFVuaWNvZGUgcGFydC4gIFNvLCBJIHNpbXBsaWZpZWQgdGhlIGNvZGUg
dG8gbWF0Y2ggdGhlCisgICAgICAgICAgc3BlYyAoZXNwZWNpYWxseSBzaW5jZSBAQHNwbGl0IG5l
ZWRzIHRvIGNhbGwgYWR2YW5jZVN0cmluZ0luZGV4IGZyb20gbW9yZSB0aGFuCisgICAgICAgICAg
MSBsb2NhdGlvbikuCisgICAgICAgIChtYXRjaCk6CisgICAgICAgIC0gUmVtb3ZlZCBhbiB1bm5l
Y2Vzc2FyeSBjYWxsIHRvIEBPYmplY3QgYmVjYXVzZSBpdCB3YXMgYWxyZWFkeSBwcm92ZW4gYWJv
dmUuCisgICAgICAgIC0gQ2hhbmdlZCB0byB1c2UgYWR2YW5jZVN0cmluZ0luZGV4IGluc3RlYWQg
b2YgYWR2YW5jZVN0cmluZ0luZGV4VW5pY29kZS4KKyAgICAgICAgICBBZ2FpbiwgdGhlcmUncyBu
byBwZXJmIHJlZ3Jlc3Npb24gZm9yIHRoaXMuCisgICAgICAgIChyZWdFeHBFeGVjKToKKyAgICAg
ICAgKHNwbGl0KToKKyAgICAgICAgKGFkdmFuY2VTdHJpbmdJbmRleFVuaWNvZGUpOiBEZWxldGVk
LgorCisgICAgICAgICogYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzOgorICAgICAgICAoc3Bs
aXQpOgorICAgICAgICAtIE1vZGlmaWVkIHRvIHVzZSBSZWdFeHAucHJvdG90eXBlW0BAc3BsaXRd
LgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnku
aDoKKyAgICAgICAgLSBBZGRlZCB0aGUgQEBzcGxpdCBzeW1ib2wuCisKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9FQ01BU2NyaXB0U3Bl
Y0ludGVybmFsRnVuY3Rpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OmVzU3BlY0lzQ29u
c3RydWN0b3IpOgorICAgICAgICAoSlNDOjplc1NwZWNJc1JlZ0V4cCk6CisgICAgICAgICogcnVu
dGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmg6IEFkZGVkLgorCisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Ojppbml0KToKKworICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yOjpzZXREZXNjcmlwdG9yKToKKyAgICAg
ICAgLSBSZW1vdmVkIGFuIGFzc2VydCB0aGF0IGlzIG5vIGxvbmdlciB2YWxpZC4KKworICAgICAg
ICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgIC0gTWFkZSBhZHZhbmNlU3RyaW5n
VW5pY29kZSgpIHB1YmxpYyBzbyB0aGF0IGl0IGNhbiBiZSByZS11c2VkIGJ5IHRoZSByZWdleHAg
c3BsaXQKKyAgICAgICAgICBmYXN0IHBhdGguCisKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNFeGVjKToKKyAgICAgICAgKEpTQzo6
YWR2YW5jZVN0cmluZ0luZGV4KToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jU3BsaXRG
YXN0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oOgorCisgICAgICAgICog
cnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6anNTdHJpbmdXaXRoUmV1c2Up
OgorICAgICAgICAoSlNDOjpqc1N1YnN0cmluZyk6CisgICAgICAgIC0gSG9pc3RlZCBzb21lIHV0
aWxpdHkgZnVuY3Rpb25zIGZyb20gU3RyaW5nUHJvdG90eXBlLmNwcCBzbyB0aGF0IHRoZXkgY2Fu
IGJlCisgICAgICAgICAgcmV1c2VkIGJ5IHRoZSByZWdleHAgc3BsaXQgZmFzdCBwYXRoLgorCisg
ICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJp
bmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9G
dW5jU3BsaXRGYXN0KToKKyAgICAgICAgKEpTQzo6anNTdHJpbmdXaXRoUmV1c2UpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpqc1N1YnN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY1NwbGl0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5oOgorCisgICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisKIDIwMTYtMDQtMTEgIEJl
bmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQjMg
Y2FuIHVzZSB1bmRlZmluZWQgYml0cyBvciBub3QgZGVmaW5lZCByZXF1aXJlZCBiaXRzIHdoZW4g
c3BpbGxpbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDE5OTMzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNjM4LDYgKzYzOCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAg
ICAgcnVudGltZS9EaXJlY3RBcmd1bWVudHMuY3BwCiAgICAgcnVudGltZS9EaXJlY3RBcmd1bWVu
dHNPZmZzZXQuY3BwCiAgICAgcnVudGltZS9EdW1wQ29udGV4dC5jcHAKKyAgICBydW50aW1lL0VD
TUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwCiAgICAgcnVudGltZS9FcnJvci5jcHAK
ICAgICBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9FcnJvckhhbmRs
aW5nU2NvcGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTk5MzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIwNTMsNiArMjA1Myw4IEBACiAJ
CUZFMUMwRkZGMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNB
IC8qIEV4Y2VwdGlvbi5jcHAgKi87IH07CiAJCUZFMjBDRTlEMTVGMDRBOTUwMERGMzQzMCAvKiBM
TEludENMb29wLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAqLzsgfTsKIAkJ
RkUyMENFOUUxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBDRTlDMTVGMDRBOTUwMERGMzQzMCAv
KiBMTEludENMb29wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRkUzMThGREYxQ0FDOTgyNzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJu
YWxGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUzMThGREQxQ0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxG
dW5jdGlvbnMuY3BwICovOyB9OworCQlGRTMxOEZFMDFDQUM5ODJGMDBERkNDNTQgLyogRUNNQVNj
cmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRT
cGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLzsgfTsKIAkJRkUzODRFRTUxQUREQjdBRDAwNTVERTJD
IC8qIEpTRG9sbGFyVk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUzODRFRTExQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uY3BwICovOyB9
OwogCQlGRTM4NEVFNjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODRFRTIxQUREQjdBRDAwNTVE
RTJDIC8qIEpTRG9sbGFyVk0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGRTM4NEVFNzFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTVByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTM4NEVFMzFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTVByb3RvdHlwZS5jcHAgKi87IH07
CkBAIC00Mjk5LDYgKzQzMDEsOCBAQAogCQlGRTFDMEZGRTFCMTk0RkQxMDBCNTNGQ0EgLyogRXhj
ZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4Y2VwdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMjBDRTlCMTVGMDRBOTUwMERG
MzQzMCAvKiBMTEludENMb29wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IExMSW50Q0xvb3AuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRDTG9vcC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMjBDRTlDMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENM
b29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50Q0xvb3AuaDsgcGF0
aCA9IGxsaW50L0xMSW50Q0xvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUz
MThGREQxQ0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRUNNQVNjcmlwdFNwZWNJ
bnRlcm5hbEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzE4
RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxG
dW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODRFRTExQUREQjdB
RDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNEb2xsYXJWTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
Mzg0RUUyMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTRG9sbGFyVk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkUzODRFRTMxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2xsYXJWTVByb3RvdHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTc5LDYgKzU1ODMsOCBAQAogCQkJ
CTBGRTA1MDBFMUFBOTA5MTEwMEQzM0IzMyAvKiBEaXJlY3RBcmd1bWVudHNPZmZzZXQuaCAqLywK
IAkJCQlBNzA0NDdFQjE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRleHQuY3BwICovLAogCQkJ
CUE3MDQ0N0VDMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4dC5oICovLAorCQkJCUZFMzE4
RkREMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNw
cCAqLywKKwkJCQlGRTMxOEZERTFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRl
cm5hbEZ1bmN0aW9ucy5oICovLAogCQkJCTJBRDJFREZBMTk3OTlFMzgwMDRENjQ3OCAvKiBFbnVt
ZXJhdGlvbk1vZGUuaCAqLywKIAkJCQlCQzMzN0JFQTBFMUIwMENCMDA3NjkxOEEgLyogRXJyb3Iu
Y3BwICovLAogCQkJCUJDMzA0NjA2MEUxRjQ5N0YwMDMyMzJDRiAvKiBFcnJvci5oICovLApAQCAt
NzkzOSw2ICs3OTQ1LDcgQEAKIAkJCQk1MkMwNjExRjFBQTUxRTFDMDBCNEFEQkEgLyogUnVudGlt
ZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyMkIzMUI5MTQwNTc3RDcwMERCNDc1QSAvKiBT
YW1wbGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDI4MUFBOTA5NTYwMEQz
M0IzMyAvKiBTY29wZWRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMzE4RkUwMUNB
Qzk4MkYwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUwNTAyOTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRz
VGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDJCMUFBOTA5NTYwMEQzM0IzMyAvKiBT
Y29wZU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NTIxN0VFMjc0OTAwQUJCMjE3
IC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzU2LDYg
Kzg3NjMsNyBAQAogCQkJCUZFNTA2ODY3MUFFMjVFMjgwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJj
ZUR1bXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc3QTQyM0QxN0EwQkJGRDAwQThEQjgxIC8q
IERGR0Fic3RyYWN0SGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU1QzE5NDE3Mjc2RTQ2
MDBDRUFCRkQgLyogREZHQWJzdHJhY3RWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTMx
OEZERjFDQUM5ODI3MDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQzRTQwMTFCNjE4QUFGMDBDODBFMUUgLyogREZHQWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMThEM0NGMUI1NUE2RTAwMDJDNUM5RiAvKiBERkdBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyREQ4MTExQUIzRDhCRTAwQkJCOEU4IC8q
IERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9iYWxPYmplY3QuanMJKHJldmlz
aW9uIDE5OTMzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9iYWxPYmpl
Y3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC02MCwzICs2MSwxOCBAQCBmdW5jdGlvbiBzcGVjaWVzR2V0
dGVyKCkKIHsKICAgICByZXR1cm4gdGhpczsKIH0KKworZnVuY3Rpb24gc3BlY2llc0NvbnN0cnVj
dG9yKG9iaiwgZGVmYXVsdENvbnN0cnVjdG9yKQoreworICAgIHZhciBjb25zdHJ1Y3RvciA9IG9i
ai5jb25zdHJ1Y3RvcjsKKyAgICBpZiAoY29uc3RydWN0b3IgPT09IEB1bmRlZmluZWQpCisgICAg
ICAgIHJldHVybiBkZWZhdWx0Q29uc3RydWN0b3I7CisgICAgaWYgKCFAaXNPYmplY3QoY29uc3Ry
dWN0b3IpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigifHRoaXN8LmNvbnN0cnVjdG9y
IGlzIG5vdCBhbiBPYmplY3Qgb3IgdW5kZWZpbmVkIik7CisgICAgY29uc3RydWN0b3IgPSBjb25z
dHJ1Y3RvcltAc3ltYm9sU3BlY2llc107CisgICAgaWYgKGNvbnN0cnVjdG9yID09IG51bGwpCisg
ICAgICAgIHJldHVybiBkZWZhdWx0Q29uc3RydWN0b3I7CisgICAgaWYgKEBpc0NvbnN0cnVjdG9y
KGNvbnN0cnVjdG9yKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKCJ8dGhpc3wuY29uc3RydWN0b3JbU3ltYm9sLnNwZWNpZXNdIGlzIG5vdCBh
IGNvbnN0cnVjdG9yIik7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
UHJvbWlzZVByb3RvdHlwZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvUHJvbWlzZVByb3RvdHlwZS5qcwkocmV2aXNpb24gMTk5MzM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VQcm90b3R5cGUuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM3LDE2ICszNyw3IEBAIGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQp
CiAgICAgaWYgKCFAaXNQcm9taXNlKHRoaXMpKQogICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJv
cigifHRoaXN8IGlzIG5vdCBhIG9iamVjdCIpOwogCi0gICAgdmFyIGNvbnN0cnVjdG9yID0gdGhp
cy5jb25zdHJ1Y3RvcjsKLSAgICBpZiAoY29uc3RydWN0b3IgPT09IEB1bmRlZmluZWQpCi0gICAg
ICAgIGNvbnN0cnVjdG9yID0gQFByb21pc2U7Ci0gICAgZWxzZSBpZiAoIUBpc09iamVjdChjb25z
dHJ1Y3RvcikpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJ8dGhpc3wuY29uc3RydWN0
b3IgaXMgbm90IGFuIE9iamVjdCBvciB1bmRlZmluZWQiKTsKLSAgICBlbHNlIHsKLSAgICAgICAg
Y29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcltAc3ltYm9sU3BlY2llc107Ci0gICAgICAgIGlmIChj
b25zdHJ1Y3RvciA9PSBudWxsKQotICAgICAgICAgICAgY29uc3RydWN0b3IgPSBAUHJvbWlzZTsK
LSAgICB9CisgICAgdmFyIGNvbnN0cnVjdG9yID0gQHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCBA
UHJvbWlzZSk7CiAKICAgICB2YXIgcmVzdWx0Q2FwYWJpbGl0eSA9IEBuZXdQcm9taXNlQ2FwYWJp
bGl0eShjb25zdHJ1Y3Rvcik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9SZWdFeHBQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qcwkocmV2aXNpb24gMTk5MzM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qcwkod29ya2luZyBjb3B5
KQpAQCAtMjMsMTMgKzIzLDE1IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi1mdW5jdGlvbiBh
ZHZhbmNlU3RyaW5nSW5kZXhVbmljb2RlKHN0cmluZywgc3RyaW5nTGVuZ3RoLCBpbmRleCkKK2Z1
bmN0aW9uIGFkdmFuY2VTdHJpbmdJbmRleChzdHJpbmcsIGluZGV4LCB1bmljb2RlKQogewotICAg
IC8vIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyBBZHZhbmNlU3RyaW5nSW5kZXggZGVzY3JpYmVk
IGluIEVTNiAyMS4yLjUuMi4zLCBzdGVwcyA2LTExLgotICAgIC8vIEl0IGFzc3VtZXMgdGhhdCAi
dW5pY29kZSIgaXMgdHJ1ZSBmb3IgaXRzIGNhbGxlcnMuCisgICAgLy8gVGhpcyBmdW5jdGlvbiBp
bXBsZW1lbnRzIEFkdmFuY2VTdHJpbmdJbmRleCBkZXNjcmliZWQgaW4gRVM2IDIxLjIuNS4yLjMu
CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgaWYgKGluZGV4ICsgMSA+PSBzdHJpbmdMZW5ndGgp
CisgICAgaWYgKCF1bmljb2RlKQorICAgICAgICByZXR1cm4gaW5kZXggKyAxOworCisgICAgaWYg
KGluZGV4ICsgMSA+PSBzdHJpbmcubGVuZ3RoKQogICAgICAgICByZXR1cm4gaW5kZXggKyAxOwog
CiAgICAgbGV0IGZpcnN0ID0gc3RyaW5nLkBjaGFyQ29kZUF0KGluZGV4KTsKQEAgLTUwLDcgKzUy
LDcgQEAgZnVuY3Rpb24gbWF0Y2goc3RyKQogICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBAT2Jq
ZWN0KSkKICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlZ0V4cC5wcm90b3R5cGUuQEBt
YXRjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBhbiBPYmplY3QiKTsKIAotICAgIGxldCByZWdl
eHAgPSBAT2JqZWN0KHRoaXMpOworICAgIGxldCByZWdleHAgPSB0aGlzOwogICAgIGxldCBzdHJp
bmdBcmcgPSBAdG9TdHJpbmcoc3RyKTsKIAogICAgIGlmICghcmVnZXhwLmdsb2JhbCkKQEAgLTc5
LDEyICs4MSw4IEBAIGZ1bmN0aW9uIG1hdGNoKHN0cikKIAogICAgICAgICAgICAgbGV0IHJlc3Vs
dFN0cmluZyA9IEB0b1N0cmluZyhyZXN1bHRbMF0pOwogCi0gICAgICAgICAgICBpZiAoIXJlc3Vs
dFN0cmluZy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBpZiAodW5pY29kZSkKLSAgICAgICAg
ICAgICAgICAgICAgcmVnZXhwLmxhc3RJbmRleCA9IEBhZHZhbmNlU3RyaW5nSW5kZXhVbmljb2Rl
KHN0cmluZ0FyZywgc3RyaW5nTGVuZ3RoLCByZWdleHAubGFzdEluZGV4KTsKLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlZ2V4cC5sYXN0SW5kZXgrKzsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmICghcmVzdWx0U3RyaW5nLmxlbmd0aCkKKyAgICAgICAg
ICAgICAgICByZWdleHAubGFzdEluZGV4ID0gQGFkdmFuY2VTdHJpbmdJbmRleChzdHJpbmdBcmcs
IHJlZ2V4cC5sYXN0SW5kZXgsIHVuaWNvZGUpOwogCiAgICAgICAgICAgICByZXN1bHRMaXN0LkBw
dXNoKHJlc3VsdFN0cmluZyk7CiAKQEAgLTk1LDMgKzkzLDE4NiBAQCBmdW5jdGlvbiBtYXRjaChz
dHIpCiAgICAgcmV0dXJuIHJlZ2V4cC5AbWF0Y2goc3RyaW5nQXJnKTsKIH0KIAorZnVuY3Rpb24g
cmVnRXhwRXhlYyhyZWdleHAsIHN0cikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBsZXQg
ZXhlYyA9IHJlZ2V4cC5leGVjOworICAgIGxldCBidWlsdGluRXhlYyA9IEBSZWdFeHAucHJvdG90
eXBlLkBleGVjOworICAgIGlmIChleGVjICE9PSBidWlsdGluRXhlYyAmJiB0eXBlb2YgZXhlYyA9
PT0gImZ1bmN0aW9uIikgeworICAgICAgICBsZXQgcmVzdWx0ID0gZXhlYy5AY2FsbChyZWdleHAs
IHN0cik7CisgICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwgJiYgIUBpc09iamVjdChyZXN1bHQp
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlRoZSByZXN1bHQgb2YgYSBSZWdF
eHAgZXhlYyBtdXN0IGJlIG51bGwgb3IgYW4gb2JqZWN0Iik7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorICAgIHJldHVybiBidWlsdGluRXhlYy5AY2FsbChyZWdleHAsIHN0cik7Cit9
CisKK2Z1bmN0aW9uIGhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclNwbGl0KHJlZ2V4cCkgewor
ICAgIC8vIFRoaXMgaXMgYWNjZXNzZWQgYnkgdGhlIFJlZ0V4cEV4ZWMgaW50ZXJuYWwgZnVuY3Rp
b24uCisgICAgbGV0IHJlZ2V4cEV4ZWMgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJleGVjIik7Cisg
ICAgaWYgKHJlZ2V4cEV4ZWMgIT09IEBSZWdFeHAucHJvdG90eXBlLkBleGVjKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICAvLyBUaGlzIGlzIGFjY2Vzc2VkIGJ5IHN0ZXAgNSBiZWxv
dy4KKyAgICBsZXQgcmVnZXhwRmxhZ3MgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJmbGFncyIpOwor
ICAgIGlmIChyZWdleHBGbGFncyAhPT0gQHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIAorICAgIC8vIFRoZXNlIGFyZSBhY2Nlc3NlZCBieSB0aGUgYnVp
bHRpbiBmbGFncyBnZXR0ZXIuCisgICAgbGV0IHJlZ2V4cEdsb2JhbCA9IEB0cnlHZXRCeUlkKHJl
Z2V4cCwgImdsb2JhbCIpOworICAgIGlmIChyZWdleHBHbG9iYWwgIT09IEByZWdFeHBQcm90b0ds
b2JhbEdldHRlcikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgbGV0IHJlZ2V4cElnbm9yZUNh
c2UgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJpZ25vcmVDYXNlIik7CisgICAgaWYgKHJlZ2V4cEln
bm9yZUNhc2UgIT09IEByZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXIpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGxldCByZWdleHBNdWx0aWxpbmUgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJt
dWx0aWxpbmUiKTsKKyAgICBpZiAocmVnZXhwTXVsdGlsaW5lICE9PSBAcmVnRXhwUHJvdG9NdWx0
aWxpbmVHZXR0ZXIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGxldCByZWdleHBTdGlja3kg
PSBAdHJ5R2V0QnlJZChyZWdleHAsICJzdGlja3kiKTsKKyAgICBpZiAocmVnZXhwU3RpY2t5ICE9
PSBAcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGxl
dCByZWdleHBVbmljb2RlID0gQHRyeUdldEJ5SWQocmVnZXhwLCAidW5pY29kZSIpOworICAgIGlm
IChyZWdleHBVbmljb2RlICE9PSBAcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICAvLyBUaGlzIGlzIGFjY2Vzc2VkIGJ5IHRoZSBSZWdFeHAg
c3BlY2llcyBjb25zdHJ1Y3Rvci4KKyAgICBsZXQgcmVnZXhwU291cmNlID0gQHRyeUdldEJ5SWQo
cmVnZXhwLCAic291cmNlIik7CisgICAgaWYgKHJlZ2V4cFNvdXJjZSAhPT0gQHJlZ0V4cFByb3Rv
U291cmNlR2V0dGVyKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICByZXR1cm4gIUBp
c1JlZ0V4cChyZWdleHApOworfQorCisvLyBFUyAyMS4yLjUuMTEgUmVnRXhwLnByb3RvdHlwZVtA
QHNwbGl0XShzdHJpbmcsIGxpbWl0KQorZnVuY3Rpb24gc3BsaXQoc3RyaW5nLCBsaW1pdCkKK3sK
KyAgICAidXNlIHN0cmljdCI7CisKKyAgICAvLyAxLiBMZXQgcnggYmUgdGhlIHRoaXMgdmFsdWUu
CisgICAgLy8gMi4gSWYgVHlwZShyeCkgaXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJyb3Ig
ZXhjZXB0aW9uLgorICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBAT2JqZWN0KSkKKyAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlZ0V4cC5wcm90b3R5cGUuQEBzcGxpdCByZXF1aXJlcyB0
aGF0IHx0aGlzfCBiZSBhbiBPYmplY3QiKTsKKyAgICBsZXQgcmVnZXhwID0gdGhpczsKKworICAg
IC8vIDMuIExldCBTIGJlID8gVG9TdHJpbmcoc3RyaW5nKS4KKyAgICBsZXQgc3RyID0gQHRvU3Ry
aW5nKHN0cmluZyk7CisKKyAgICAvLyA0LiBMZXQgQyBiZSA/IFNwZWNpZXNDb25zdHJ1Y3Rvcihy
eCwgJVJlZ0V4cCUpLgorICAgIGxldCBzcGVjaWVzQ29uc3RydWN0b3IgPSBAc3BlY2llc0NvbnN0
cnVjdG9yKHJlZ2V4cCwgQFJlZ0V4cCk7CisKKyAgICBpZiAoc3BlY2llc0NvbnN0cnVjdG9yID09
PSBAUmVnRXhwICYmICFAaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzRm9yU3BsaXQocmVnZXhwKSkK
KyAgICAgICAgcmV0dXJuIEByZWdFeHBTcGxpdEZhc3QuQGNhbGwocmVnZXhwLCBzdHIsIGxpbWl0
KTsKKworICAgIC8vIDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3Mi
KSkuCisgICAgbGV0IGZsYWdzID0gQHRvU3RyaW5nKHJlZ2V4cC5mbGFncyk7CisKKyAgICAvLyA2
LiBJZiBmbGFncyBjb250YWlucyAidSIsIGxldCB1bmljb2RlTWF0Y2hpbmcgYmUgdHJ1ZS4KKyAg
ICAvLyA3LiBFbHNlLCBsZXQgdW5pY29kZU1hdGNoaW5nIGJlIGZhbHNlLgorICAgIGxldCB1bmlj
b2RlTWF0Y2hpbmcgPSBmbGFncy5pbmNsdWRlcygidSIpOworICAgIC8vIDguIElmIGZsYWdzIGNv
bnRhaW5zICJ5IiwgbGV0IG5ld0ZsYWdzIGJlIGZsYWdzLgorICAgIC8vIDkuIEVsc2UsIGxldCBu
ZXdGbGFncyBiZSB0aGUgc3RyaW5nIHRoYXQgaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgZmxhZ3Mg
YW5kICJ5Ii4KKyAgICBsZXQgbmV3RmxhZ3MgPSBmbGFncy5pbmNsdWRlcygieSIpID8gZmxhZ3Mg
OiBmbGFncyArICJ5IjsKKworICAgIC8vIDEwLiBMZXQgc3BsaXR0ZXIgYmUgPyBDb25zdHJ1Y3Qo
QywgwqsgcngsIG5ld0ZsYWdzIMK7KS4KKyAgICBsZXQgc3BsaXR0ZXIgPSBuZXcgc3BlY2llc0Nv
bnN0cnVjdG9yKHJlZ2V4cCwgbmV3RmxhZ3MpOworCisgICAgLy8gV2UgbmVlZCB0byBjaGVjayBh
Z2FpbiBmb3IgUmVnRXhwIHN1YmNsYXNzZXMgdGhhdCB3aWxsIGZhaWwgdGhlIHNwZWNpZXNDb25z
dHJ1Y3RvciB0ZXN0CisgICAgLy8gYnV0IGNhbiBzdGlsbCB1c2UgdGhlIGZhc3QgcGF0aCBhZnRl
ciB3ZSBpbnZva2UgdGhlIGNvbnN0cnVjdG9yIGFib3ZlLgorICAgIGlmICghQGhhc09ic2VydmFi
bGVTaWRlRWZmZWN0c0ZvclNwbGl0KHNwbGl0dGVyKSkKKyAgICAgICAgcmV0dXJuIEByZWdFeHBT
cGxpdEZhc3QuQGNhbGwoc3BsaXR0ZXIsIHN0ciwgbGltaXQpOworCisgICAgLy8gMTEuIExldCBB
IGJlIEFycmF5Q3JlYXRlKDApLgorICAgIC8vIDEyLiBMZXQgbGVuZ3RoQSBiZSAwLgorICAgIGxl
dCByZXN1bHQgPSBbXTsKKworICAgIC8vIDEzLiBJZiBsaW1pdCBpcyB1bmRlZmluZWQsIGxldCBs
aW0gYmUgMjMyLTE7IGVsc2UgbGV0IGxpbSBiZSA/IFRvVWludDMyKGxpbWl0KS4KKyAgICBsaW1p
dCA9IChsaW1pdCA9PT0gQHVuZGVmaW5lZCkgPyAweGZmZmZmZmZmIDogbGltaXQgPj4+IDA7CisK
KyAgICAvLyAxNi4gSWYgbGltID0gMCwgcmV0dXJuIEEuCisgICAgaWYgKCFsaW1pdCkKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKworICAgIC8vIDE0LiBbRGVmZXJlZCBmcm9tIGFib3ZlXSBMZXQg
c2l6ZSBiZSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIFMuCisgICAgbGV0IHNpemUgPSBzdHIu
bGVuZ3RoOworCisgICAgLy8gMTcuIElmIHNpemUgPSAwLCB0aGVuCisgICAgaWYgKCFzaXplKSB7
CisgICAgICAgIC8vIGEuIExldCB6IGJlID8gUmVnRXhwRXhlYyhzcGxpdHRlciwgUykuCisgICAg
ICAgIGxldCB6ID0gQHJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIHN0cik7CisgICAgICAgIC8vIGIuIElm
IHogaXMgbm90IG51bGwsIHJldHVybiBBLgorICAgICAgICBpZiAoeiAhPSBudWxsKQorICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgLy8gYy4gUGVyZm9ybSAhIENyZWF0ZURhdGFQ
cm9wZXJ0eShBLCAiMCIsIFMpLgorICAgICAgICByZXN1bHRbMF0gPSBzdHI7CisgICAgICAgIC8v
IGQuIFJldHVybiBBLgorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8vIDE1
LiBbRGVmZXJlZCBmcm9tIGFib3ZlXSBMZXQgcCBiZSAwLgorICAgIGxldCBwb3NpdGlvbiA9IDA7
CisgICAgLy8gMTguIExldCBxIGJlIHAuCisgICAgbGV0IG1hdGNoUG9zaXRpb24gPSAwOworCisg
ICAgLy8gMTkuIFJlcGVhdCwgd2hpbGUgcSA8IHNpemUKKyAgICB3aGlsZSAobWF0Y2hQb3NpdGlv
biA8IHNpemUpIHsKKyAgICAgICAgLy8gYS4gUGVyZm9ybSA/IFNldChzcGxpdHRlciwgImxhc3RJ
bmRleCIsIHEsIHRydWUpLgorICAgICAgICBzcGxpdHRlci5sYXN0SW5kZXggPSBtYXRjaFBvc2l0
aW9uOworICAgICAgICAvLyBiLiBMZXQgeiBiZSA/IFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFMpLgor
ICAgICAgICBsZXQgbWF0Y2hlcyA9IEByZWdFeHBFeGVjKHNwbGl0dGVyLCBzdHIpOworICAgICAg
ICAvLyBjLiBJZiB6IGlzIG51bGwsIGxldCBxIGJlIEFkdmFuY2VTdHJpbmdJbmRleChTLCBxLCB1
bmljb2RlTWF0Y2hpbmcpLgorICAgICAgICBpZiAobWF0Y2hlcyA9PT0gbnVsbCkKKyAgICAgICAg
ICAgIG1hdGNoUG9zaXRpb24gPSBAYWR2YW5jZVN0cmluZ0luZGV4KHN0ciwgbWF0Y2hQb3NpdGlv
biwgdW5pY29kZU1hdGNoaW5nKTsKKyAgICAgICAgLy8gZC4gRWxzZSB6IGlzIG5vdCBudWxsLAor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIGkuIExldCBlIGJlID8gVG9MZW5ndGgoPyBH
ZXQoc3BsaXR0ZXIsICJsYXN0SW5kZXgiKSkuCisgICAgICAgICAgICBsZXQgZW5kUG9zaXRpb24g
PSBAdG9MZW5ndGgoc3BsaXR0ZXIubGFzdEluZGV4KTsKKyAgICAgICAgICAgIC8vIGlpLiBMZXQg
ZSBiZSBtaW4oZSwgc2l6ZSkuCisgICAgICAgICAgICBlbmRQb3NpdGlvbiA9IChlbmRQb3NpdGlv
biA8PSBzaXplKSA/IGVuZFBvc2l0aW9uIDogc2l6ZTsKKyAgICAgICAgICAgIC8vIGlpaS4gSWYg
ZSA9IHAsIGxldCBxIGJlIEFkdmFuY2VTdHJpbmdJbmRleChTLCBxLCB1bmljb2RlTWF0Y2hpbmcp
LgorICAgICAgICAgICAgaWYgKGVuZFBvc2l0aW9uID09PSBwb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICBtYXRjaFBvc2l0aW9uID0gQGFkdmFuY2VTdHJpbmdJbmRleChzdHIsIG1hdGNoUG9zaXRp
b24sIHVuaWNvZGVNYXRjaGluZyk7CisgICAgICAgICAgICAvLyBpdi4gRWxzZSBlICE9IHAsCisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyAxLiBMZXQgVCBiZSBhIFN0cmlu
ZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgZWxl
bWVudHMgYXQgaW5kaWNlcyBwIChpbmNsdXNpdmUpIHRocm91Z2ggcSAoZXhjbHVzaXZlKS4KKyAg
ICAgICAgICAgICAgICBsZXQgc3ViU3RyID0gQHN1YnN0ckludGVybmFsLkBjYWxsKHN0ciwgcG9z
aXRpb24sIG1hdGNoUG9zaXRpb24gLSBwb3NpdGlvbik7CisgICAgICAgICAgICAgICAgLy8gMi4g
UGVyZm9ybSAhIENyZWF0ZURhdGFQcm9wZXJ0eShBLCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBUKS4K
KyAgICAgICAgICAgICAgICAvLyAzLiBMZXQgbGVuZ3RoQSBiZSBsZW5ndGhBICsgMS4KKyAgICAg
ICAgICAgICAgICByZXN1bHQucHVzaChzdWJTdHIpOworICAgICAgICAgICAgICAgIC8vIDQuIElm
IGxlbmd0aEEgPSBsaW0sIHJldHVybiBBLgorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVu
Z3RoID09IGxpbWl0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAg
ICAgICAgICAgIC8vIDUuIExldCBwIGJlIGUuCisgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBl
bmRQb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAvLyA2LiBMZXQgbnVtYmVyT2ZDYXB0dXJlcyBi
ZSA/IFRvTGVuZ3RoKD8gR2V0KHosICJsZW5ndGgiKSkuCisgICAgICAgICAgICAgICAgLy8gNy4g
TGV0IG51bWJlck9mQ2FwdHVyZXMgYmUgbWF4KG51bWJlck9mQ2FwdHVyZXMtMSwgMCkuCisgICAg
ICAgICAgICAgICAgbGV0IG51bWJlck9mQ2FwdHVyZXMgPSBtYXRjaGVzLmxlbmd0aCA+IDEgPyBt
YXRjaGVzLmxlbmd0aCAtIDEgOiAwOworCisgICAgICAgICAgICAgICAgLy8gOC4gTGV0IGkgYmUg
MS4KKyAgICAgICAgICAgICAgICBsZXQgaSA9IDE7CisgICAgICAgICAgICAgICAgLy8gOS4gUmVw
ZWF0LCB3aGlsZSBpIDw9IG51bWJlck9mQ2FwdHVyZXMsCisgICAgICAgICAgICAgICAgd2hpbGUg
KGkgPD0gbnVtYmVyT2ZDYXB0dXJlcykgeworICAgICAgICAgICAgICAgICAgICAvLyBhLiBMZXQg
bmV4dENhcHR1cmUgYmUgPyBHZXQoeiwgISBUb1N0cmluZyhpKSkuCisgICAgICAgICAgICAgICAg
ICAgIGxldCBuZXh0Q2FwdHVyZSA9IG1hdGNoZXNbaV07CisgICAgICAgICAgICAgICAgICAgIC8v
IGIuIFBlcmZvcm0gISBDcmVhdGVEYXRhUHJvcGVydHkoQSwgISBUb1N0cmluZyhsZW5ndGhBKSwg
bmV4dENhcHR1cmUpLgorICAgICAgICAgICAgICAgICAgICAvLyBkLiBMZXQgbGVuZ3RoQSBiZSBs
ZW5ndGhBICsgMS4KKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV4dENhcHR1cmUp
OworICAgICAgICAgICAgICAgICAgICAvLyBlLiBJZiBsZW5ndGhBID0gbGltLCByZXR1cm4gQS4K
KyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT0gbGltaXQpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgICAgICAvLyBj
LiBMZXQgaSBiZSBpICsgMS4KKyAgICAgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAvLyAxMC4gTGV0IHEgYmUgcC4KKyAgICAgICAgICAgICAg
ICBtYXRjaFBvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgLy8gMjAuIExldCBUIGJlIGEgU3RyaW5nIHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJz
dHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBlbGVtZW50cyBhdCBpbmRpY2VzIHAgKGluY2x1
c2l2ZSkgdGhyb3VnaCBzaXplIChleGNsdXNpdmUpLgorICAgIGxldCByZW1haW5pbmdTdHIgPSBA
c3Vic3RySW50ZXJuYWwuQGNhbGwoc3RyLCBwb3NpdGlvbiwgc2l6ZSk7CisgICAgLy8gMjEuIFBl
cmZvcm0gISBDcmVhdGVEYXRhUHJvcGVydHkoQSwgISBUb1N0cmluZyhsZW5ndGhBKSwgVCkuCisg
ICAgcmVzdWx0LnB1c2gocmVtYWluaW5nU3RyKTsKKyAgICAvLyAyMi4gUmV0dXJuIEEuCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L1N0cmluZ1Byb3RvdHlwZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzCShyZXZpc2lvbiAxOTkzMzgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjUsMyArMTI1LDIyIEBAIGZ1bmN0aW9uIHJlcGVhdChjb3VudCkKIAogICAgIHJldHVy
biBAcmVwZWF0U2xvd1BhdGgoc3RyaW5nLCBjb3VudCk7CiB9CisKK2Z1bmN0aW9uIHNwbGl0KHNl
cGFyYXRvciwgbGltaXQpCit7CisgICAgInVzZSBzdHJpY3QiOworICAgIAorICAgIGlmICh0aGlz
ID09IG51bGwpIHsKKyAgICAgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcigiU3RyaW5nLnByb3RvdHlwZS5zcGxpdCByZXF1aXJlcyB0aGF0IHx0
aGlzfCBub3QgYmUgbnVsbCIpOworICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiU3RyaW5n
LnByb3RvdHlwZS5zcGxpdCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7
CisgICAgfQorICAgIAorICAgIGlmIChzZXBhcmF0b3IgIT0gbnVsbCkgeworICAgICAgICB2YXIg
c3BsaXR0ZXIgPSBzZXBhcmF0b3JbQHN5bWJvbFNwbGl0XTsKKyAgICAgICAgaWYgKHNwbGl0dGVy
ICE9IEB1bmRlZmluZWQpCisgICAgICAgICAgICByZXR1cm4gc3BsaXR0ZXIuQGNhbGwoc2VwYXJh
dG9yLCB0aGlzLCBsaW1pdCk7CisgICAgfQorICAgIAorICAgIHJldHVybiBAc3RyaW5nU3BsaXRG
YXN0LkBjYWxsKHRoaXMsIHNlcGFyYXRvciwgbGltaXQpOworfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmNwcAkocmV2aXNpb24gMTk5MzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYs
NiArNTcsNyBAQCBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpCiAgICAg
bV9zeW1ib2xNYXRjaC5zZXQobV92bSwgU3ltYm9sOjpjcmVhdGUobV92bSwgc3RhdGljX2Nhc3Q8
U3ltYm9sSW1wbCY+KCptX3ZtLnByb3BlcnR5TmFtZXMtPm1hdGNoU3ltYm9sLmltcGwoKSkpKTsK
ICAgICBtX3N5bWJvbFNlYXJjaC5zZXQobV92bSwgU3ltYm9sOjpjcmVhdGUobV92bSwgc3RhdGlj
X2Nhc3Q8U3ltYm9sSW1wbCY+KCptX3ZtLnByb3BlcnR5TmFtZXMtPnNlYXJjaFN5bWJvbC5pbXBs
KCkpKSk7CiAgICAgbV9zeW1ib2xTcGVjaWVzLnNldChtX3ZtLCBTeW1ib2w6OmNyZWF0ZShtX3Zt
LCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKm1fdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5
bWJvbC5pbXBsKCkpKSk7CisgICAgbV9zeW1ib2xTcGxpdC5zZXQobV92bSwgU3ltYm9sOjpjcmVh
dGUobV92bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCptX3ZtLnByb3BlcnR5TmFtZXMtPnNw
bGl0U3ltYm9sLmltcGwoKSkpKTsKIH0KIAogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpFbWl0dGVy
VHlwZSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Ojpsb29rdXAoY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgJKHJldmlzaW9uIDE5OTMzOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01OSw2ICs2MCw3IEBAIGNsYXNzIElkZW50aWZpZXI7CiAg
ICAgbWFjcm8oc3ltYm9sTWF0Y2gpIFwKICAgICBtYWNybyhzeW1ib2xTZWFyY2gpIFwKICAgICBt
YWNybyhzeW1ib2xTcGVjaWVzKSBcCisgICAgbWFjcm8oc3ltYm9sU3BsaXQpIFwKIAogY2xhc3Mg
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMxMCw3ICszMTAsNiBAQAogI2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTF9OT1RfSU1QTEVNRU5URURfWUVUKG1hY3Jv
KVwKICAgICBtYWNybyhpc0NvbmNhdFNwcmVhZGFibGUpIFwKICAgICBtYWNybyhyZXBsYWNlKSBc
Ci0gICAgbWFjcm8oc3BsaXQpCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJ
RVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0wobWFjcm8pIFwKICAgICBtYWNybyhoYXNJbnN0YW5j
ZSkgXApAQCAtMzE4LDYgKzMxNyw3IEBACiAgICAgbWFjcm8obWF0Y2gpIFwKICAgICBtYWNybyhz
ZWFyY2gpIFwKICAgICBtYWNybyhzcGVjaWVzKSBcCisgICAgbWFjcm8oc3BsaXQpIFwKICAgICBt
YWNybyh0b1ByaW1pdGl2ZSkgXAogICAgIG1hY3JvKHRvU3RyaW5nVGFnKSBcCiAgICAgbWFjcm8o
dW5zY29wYWJsZXMpCkBAIC00MTIsNiArNDEyLDggQEAKICAgICBtYWNybyhpbnN0YW5jZU9mKSBc
CiAgICAgbWFjcm8oaXNBcnJheSkgXAogICAgIG1hY3JvKGlzQXJyYXlDb25zdHJ1Y3RvcikgXAor
ICAgIG1hY3JvKGlzQ29uc3RydWN0b3IpIFwKKyAgICBtYWNybyhpc1JlZ0V4cCkgXAogICAgIG1h
Y3JvKGlzU2V0KSBcCiAgICAgbWFjcm8oaXNNYXApIFwKICAgICBtYWNybyhyZWdFeHBDcmVhdGUp
IFwKQEAgLTQxOSw3ICs0MjEsMTYgQEAKICAgICBtYWNybyhzZXRJdGVyYXRvck5leHQpIFwKICAg
ICBtYWNybyhNYXBJdGVyYXRvcikgXAogICAgIG1hY3JvKG1hcEl0ZXJhdG9yTmV4dCkgXAotCisg
ICAgbWFjcm8ocmVnRXhwUHJvdG9GbGFnc0dldHRlcikgXAorICAgIG1hY3JvKHJlZ0V4cFByb3Rv
R2xvYmFsR2V0dGVyKSBcCisgICAgbWFjcm8ocmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyKSBc
CisgICAgbWFjcm8ocmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIpIFwKKyAgICBtYWNybyhyZWdF
eHBQcm90b1NvdXJjZUdldHRlcikgXAorICAgIG1hY3JvKHJlZ0V4cFByb3RvU3RpY2t5R2V0dGVy
KSBcCisgICAgbWFjcm8ocmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKSBcCisgICAgbWFjcm8ocmVn
RXhwU3BsaXRGYXN0KSBcCisgICAgbWFjcm8oc3RyaW5nU3BsaXRGYXN0KSBcCisgICAgbWFjcm8o
c3Vic3RySW50ZXJuYWwpIFwKIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0
U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRUNNQVNjcmlw
dFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5j
bHVkZSAiQ29uc3RydWN0RGF0YS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiUHJveHlPYmplY3QuaCIKKyNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjSXNDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYm9vbCBpc0NvbnN0cnVjdG9yID0gZXhl
Yy0+YXJndW1lbnQoMCkuaXNDb25zdHJ1Y3RvcigpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGlzQ29uc3RydWN0b3IpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBlc1NwZWNJc1JlZ0V4cChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYm9vbCBpc1Jl
Z0V4cCA9IGV4ZWMtPmFyZ3VtZW50KDApLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc1JlZ0V4cCkpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0VD
TUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3Bl
Y0ludGVybmFsRnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRUNNQVNj
cmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9uc19oCisjZGVmaW5lIEVDTUFTY3JpcHRTcGVjSW50ZXJu
YWxGdW5jdGlvbnNfaAorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorCituYW1lc3BhY2UgSlND
IHsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlc1NwZWNJc0NvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlc1NwZWNJc1JlZ0V4cChF
eGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFQ01BU2NyaXB0
U3BlY0ludGVybmFsRnVuY3Rpb25zX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRGVi
dWdnZXJTY29wZS5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkVD
TUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2lu
Y2x1ZGUgIkVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgpA
QCAtMjU2LDYgKzI1NywxNSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXRHbG9iYWxUaGlzKFZN
JiB2CiAgICAgbV9nbG9iYWxUaGlzLnNldCh2bSwgdGhpcywgZ2xvYmFsVGhpcyk7CiB9CiAKKwor
c3RhdGljIEpTT2JqZWN0KiBnZXRHZXR0ZXJCeUlkKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQoreworICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gSlNWYWx1ZShiYXNlKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIGJhc2VWYWx1ZS5n
ZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIHJldHVybiBzbG90LmdldFB1
cmVSZXN1bHQoKS50b09iamVjdChleGVjKTsKK30KKwogdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5p
dChWTSYgdm0pCiB7CiAgICAgQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2Nr
KCkpOwpAQCAtNTQwLDYgKzU1MCwxNCBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVyCiAgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUaGlzVGltZVZhbHVlID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZGF0ZVByb3RvRnVuY0dldFRp
bWUpOwogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSXNBcnJheUNvbnN0cnVjdG9yID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgYXJyYXlDb25zdHJ1Y3RvclBy
aXZhdGVGdW5jSXNBcnJheUNvbnN0cnVjdG9yKTsKIAorICAgIEpTT2JqZWN0KiByZWdFeHBQcm90
b0ZsYWdzR2V0dGVyT2JqZWN0ID0gZ2V0R2V0dGVyQnlJZChleGVjLCBtX3JlZ0V4cFByb3RvdHlw
ZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+ZmxhZ3MpOworICAgIEpTT2JqZWN0KiByZWdFeHBQ
cm90b0dsb2JhbEdldHRlck9iamVjdCA9IGdldEdldHRlckJ5SWQoZXhlYywgbV9yZWdFeHBQcm90
b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPmdsb2JhbCk7CisgICAgSlNPYmplY3QqIHJl
Z0V4cFByb3RvSWdub3JlQ2FzZUdldHRlck9iamVjdCA9IGdldEdldHRlckJ5SWQoZXhlYywgbV9y
ZWdFeHBQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPmlnbm9yZUNhc2UpOworICAg
IEpTT2JqZWN0KiByZWdFeHBQcm90b011bHRpbGluZUdldHRlck9iamVjdCA9IGdldEdldHRlckJ5
SWQoZXhlYywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPm11bHRp
bGluZSk7CisgICAgSlNPYmplY3QqIHJlZ0V4cFByb3RvU291cmNlR2V0dGVyT2JqZWN0ID0gZ2V0
R2V0dGVyQnlJZChleGVjLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1l
cy0+c291cmNlKTsKKyAgICBKU09iamVjdCogcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXJPYmplY3Qg
PSBnZXRHZXR0ZXJCeUlkKGV4ZWMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0
eU5hbWVzLT5zdGlja3kpOworICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b1VuaWNvZGVHZXR0ZXJP
YmplY3QgPSBnZXRHZXR0ZXJCeUlkKGV4ZWMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5w
cm9wZXJ0eU5hbWVzLT51bmljb2RlKTsKKyAgICAKICAgICBHbG9iYWxQcm9wZXJ0eUluZm8gc3Rh
dGljR2xvYmFsc1tdID0gewogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+TmFOLCBqc05hTigpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbmZpbml0eSwganNO
dW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLApAQCAtNTk2LDcgKzYxNCw2IEBAIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXIKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VSZWFjdGlvbkpvYlByaXZh
dGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcHJvbWlzZU9w
ZXJhdGlvbnNQcm9taXNlUmVhY3Rpb25Kb2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VSZXNvbHZlVGhlbmFibGVK
b2JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHBy
b21pc2VPcGVyYXRpb25zUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVHZW5lcmF0b3Iodm0p
LCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uUHJpdmF0ZU5hbWUoKSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0OjpjcmVhdGUodm0sIHRoaXMsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hZHZhbmNlU3RyaW5nSW5kZXhVbmljb2Rl
UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWdF
eHBQcm90b3R5cGVBZHZhbmNlU3RyaW5nSW5kZXhVbmljb2RlQ29kZUdlbmVyYXRvcih2bSksIHRo
aXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5NYXBQcml2YXRlTmFtZSwgbWFwQ29uc3RydWN0
b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3Vt
ZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgZ2Vu
ZXJhdG9yUHJvdG90eXBlR2VuZXJhdG9yUmVzdW1lQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50aGlzVGltZVZhbHVlUHJpdmF0
ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUaGlzVGltZVZhbHVlLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSksCkBAIC02MDYsNyArNjIzLDM0IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXIKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLk51bWJlckZvcm1hdFByaXZhdGVOYW1lKCksIGludGwtPmdl
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+TnVtYmVyRm9ybWF0KSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQogCisgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5pc0NvbnN0cnVjdG9yUHJpdmF0
ZU5hbWUsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGVzU3BlY0lz
Q29uc3RydWN0b3IsIE5vSW50cmluc2ljKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+aXNSZWdF
eHBQcml2YXRlTmFtZSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJpbmcoKSwg
ZXNTcGVjSXNSZWdFeHAsIE5vSW50cmluc2ljKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuc3BlY2llc0NvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6
Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3RTcGVjaWVzQ29uc3RydWN0b3JD
b2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKKworICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+cmVnRXhw
UHJvdG9GbGFnc0dldHRlclByaXZhdGVOYW1lLCByZWdFeHBQcm90b0ZsYWdzR2V0dGVyT2JqZWN0
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5yZWdFeHBQcm90b0dsb2JhbEdldHRlclByaXZhdGVO
YW1lLCByZWdFeHBQcm90b0dsb2JhbEdldHRlck9iamVjdCwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+cmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyUHJpdmF0ZU5hbWUsIHJlZ0V4cFByb3RvSWdu
b3JlQ2FzZUdldHRlck9iamVjdCwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAor
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+cmVnRXhwUHJvdG9N
dWx0aWxpbmVHZXR0ZXJQcml2YXRlTmFtZSwgcmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXJPYmpl
Y3QsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnJlZ0V4cFByb3RvU291cmNlR2V0dGVyUHJpdmF0
ZU5hbWUsIHJlZ0V4cFByb3RvU291cmNlR2V0dGVyT2JqZWN0LCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5yZWdFeHBQcm90b1N0aWNreUdldHRlclByaXZhdGVOYW1lLCByZWdFeHBQcm90b1N0aWNr
eUdldHRlck9iamVjdCwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+cmVnRXhwUHJvdG9Vbmljb2Rl
R2V0dGVyUHJpdmF0ZU5hbWUsIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlck9iamVjdCwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorCisgICAgICAgIC8vIFJlZ0V4cC5wcm90b3R5
cGUgaGVscGVycy4KICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PnJlZ0V4cENyZWF0ZVByaXZhdGVOYW1lLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIs
IFN0cmluZygpLCBlc1NwZWNSZWdFeHBDcmVhdGUsIE5vSW50cmluc2ljKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzRm9yU3Bs
aXRQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJl
Z0V4cFByb3RvdHlwZUhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclNwbGl0Q29kZUdlbmVyYXRv
cih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hZHZh
bmNlU3RyaW5nSW5kZXhQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVu
Y3Rpb24odm0sIHJlZ0V4cFByb3RvdHlwZUFkdmFuY2VTdHJpbmdJbmRleENvZGVHZW5lcmF0b3Io
dm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVnRXhw
RXhlY1ByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwg
cmVnRXhwUHJvdG90eXBlUmVnRXhwRXhlY0NvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+cmVnRXhwU3BsaXRGYXN0UHJpdmF0ZU5hbWUsIEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdCks
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKworICAgICAgICAvLyBTdHJpbmcu
cHJvdG90eXBlIGhlbHBlcnMuCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5zdHJpbmdTcGxpdEZhc3RQcml2YXRlTmFtZSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB0aGlzLCAyLCBTdHJpbmcoKSwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICAvLyBAc3Vic3RySW50ZXJuYWwgc2hv
dWxkIG5vdCBoYXZlIGFueSBvYnNlcnZhYmxlIHNpZGUgZWZmZWN0cyAoZS5nLiBpdCBzaG91bGQg
bm90IGNhbGwKKyAgICAgICAgLy8gR2V0TWV0aG9kKC4uLiwgQEB0b1ByaW1pdGl2ZSkgb24gdGhl
IHRoaXNWYWx1ZSkuIEl0IGlzIG9rIHRvIHVzZSB0aGUgZGVmYXVsdAorICAgICAgICAvLyBzdHJp
bmdQcm90b0Z1bmNTdWJzdHIgYXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIEBzdWJzdHJJbnRlcm5h
bCBiZWNhdXNlIEBzdWJzdHJJbnRlcm5hbAorICAgICAgICAvLyB3aWxsIG9ubHkgYmUgY2FsbGVk
IGJ5IGJ1aWx0aW5zLCB3aGljaCB3aWxsIGd1YXJhbnRlZSB0aGF0IHdlIG9ubHkgcGFzcyBpdCBh
IHN0cmluZworICAgICAgICAvLyB0aGlzVmFsdWUuIEFzIGEgcmVzdWx0LCBzdHJpbmdQcm90b0Z1
bmNTdWJzdHIgd2lsbCBub3QgbmVlZCB0byBjYWxsIHRvU3RyaW5nKCkgb24gdGhlCisgICAgICAg
IC8vIHRoaXNWYWx1ZSwgYW5kIHRoZXJlIHdpbGwgYmUgbm8gb2JzZXJ2YWJsZSBzaWRlLWVmZmVj
dHMuCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5zdWJzdHJJ
bnRlcm5hbFByaXZhdGVOYW1lLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmlu
ZygpLCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSksCiAgICAgfTsKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9B
UlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCShyZXZpc2lv
biAxOTkzMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2Ny
aXB0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDksIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTQsNyArMTE0LDYgQEAgSlNPYmplY3QqIFByb3Bl
cnR5RGVzY3JpcHRvcjo6c2V0dGVyT2JqZQogdm9pZCBQcm9wZXJ0eURlc2NyaXB0b3I6OnNldERl
c2NyaXB0b3IoSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NF
UlQodmFsdWUpOwotICAgIEFTU0VSVCh2YWx1ZS5pc0dldHRlclNldHRlcigpID09ICEhKGF0dHJp
YnV0ZXMgJiBBY2Nlc3NvcikpOwogCiAgICAgbV9hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsKICAg
ICBpZiAodmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0
ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwg
MjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA3LTIwMDgsIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtOTMsNiArOTMsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmVnRXhwT2JqZWN0LCBtX2xhc3RJbmRleElz
V3JpdGFibGUpOwogICAgIH0KIAorICAgIHN0YXRpYyB1bnNpZ25lZCBhZHZhbmNlU3RyaW5nVW5p
Y29kZShTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgY3VycmVudEluZGV4KTsKKwog
cHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZ0V4cE9iamVjdChWTSYsIFN0cnVj
dHVyZSosIFJlZ0V4cCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKQEAgLTEwNCw3ICsxMDYsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91
bGRUaHJvdyk7Ci0gICAgdW5zaWduZWQgYWR2YW5jZVN0cmluZ1VuaWNvZGUoU3RyaW5nLCB1bnNp
Z25lZCwgdW5zaWduZWQpOwogCiBwcml2YXRlOgogICAgIE1hdGNoUmVzdWx0IG1hdGNoSW5saW5l
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkocmV2aXNp
b24gMTk5MzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0
IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNy0yMDA4LCAyMDE2IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM5LDYgKzM5LDcg
QEAKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiUmVnRXhwTWF0Y2hlc0FycmF5LmgiCisjaW5jbHVkZSAiU3RyaW5nT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKQEAgLTgxLDYgKzgyLDcgQEAgdm9pZCBSZWdFeHBQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJgogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hdGNoUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJv
dG9GdW5jTWF0Y2hQcml2YXRlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSwgMSk7
CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPm1hdGNoU3ltYm9sLCByZWdFeHBQcm90b3R5cGVNYXRjaENvZGVHZW5lcmF0b3IsIERv
bnRFbnVtKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5zZWFyY2hTeW1ib2wsIHJlZ0V4cFByb3RvRnVuY1NlYXJjaCwgRG9udEVu
dW0sIDEpOworICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5zcGxpdFN5bWJvbCwgcmVnRXhwUHJvdG90eXBlU3BsaXRDb2RlR2VuZXJh
dG9yLCBEb250RW51bSk7CiAKICAgICBKU0Z1bmN0aW9uKiBleGVjRnVuY3Rpb24gPSBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgdm0ucHJvcGVydHlOYW1lcy0+ZXhlYy5z
dHJpbmcoKSwgcmVnRXhwUHJvdG9GdW5jRXhlYywgUmVnRXhwRXhlY0ludHJpbnNpYyk7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmV4ZWNQcml2
YXRlTmFtZSwgZXhlY0Z1bmN0aW9uLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7
CkBAIC0xMTUsNyArMTE3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90bwogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
aWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgIkJ1aWx0aW4gUmVnRXhwIGV4ZWMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEg
UmVnRXhwIG9iamVjdCIpOwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZ09yTnVsbChleGVjKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQzNCw0ICs0MzYsMTY3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCA/IGpzTnVtYmVyKHJlc3VsdC5zdGFydCkgOiBqc051bWJlcigtMSkp
OwogfQogCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGFkdmFuY2VTdHJpbmdJbmRleChTdHJpbmcg
c3RyLCB1bnNpZ25lZCBzdHJTaXplLCB1bnNpZ25lZCBpbmRleCwgYm9vbCBpc1VuaWNvZGUpCit7
CisgICAgaWYgKCFpc1VuaWNvZGUpCisgICAgICAgIHJldHVybiArK2luZGV4OworICAgIHJldHVy
biBSZWdFeHBPYmplY3Q6OmFkdmFuY2VTdHJpbmdVbmljb2RlKHN0ciwgc3RyU2l6ZSwgaW5kZXgp
OworfQorCisvLyBFUyAyMS4yLjUuMTEgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XShzdHJpbmcs
IGxpbWl0KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTcGxp
dEZhc3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisKKyAg
ICAvLyAxLiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBMZXQgcnggYmUgdGhlIHRoaXMgdmFsdWUu
CisgICAgLy8gMi4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gSWYgVHlwZShyeCkgaXMgbm90IE9i
amVjdCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgorICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgUmVnRXhwKiByZWdleHAgPSBhc1JlZ0V4cE9iamVj
dCh0aGlzVmFsdWUpLT5yZWdFeHAoKTsKKworICAgIC8vIDMuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0
aW5dIExldCBTIGJlID8gVG9TdHJpbmcoc3RyaW5nKS4KKyAgICBTdHJpbmcgaW5wdXQgPSBleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgaWYgKHZtLmV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgIEFTU0VSVCghaW5wdXQuaXNOdWxsKCkpOworCisgICAgLy8gNC4gW2hhbmRsZWQgYnkg
SlMgYnVpbHRpbl0gTGV0IEMgYmUgPyBTcGVjaWVzQ29uc3RydWN0b3IocngsICVSZWdFeHAlKS4K
KyAgICAvLyA1LiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBMZXQgZmxhZ3MgYmUgPyBUb1N0cmlu
Zyg/IEdldChyeCwgImZsYWdzIikpLgorICAgIC8vIDYuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5d
IElmIGZsYWdzIGNvbnRhaW5zICJ1IiwgbGV0IHVuaWNvZGVNYXRjaGluZyBiZSB0cnVlLgorICAg
IC8vIDcuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIEVsc2UsIGxldCB1bmljb2RlTWF0Y2hpbmcg
YmUgZmFsc2UuCisgICAgLy8gOC4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gSWYgZmxhZ3MgY29u
dGFpbnMgInkiLCBsZXQgbmV3RmxhZ3MgYmUgZmxhZ3MuCisgICAgLy8gOS4gW2hhbmRsZWQgYnkg
SlMgYnVpbHRpbl0gRWxzZSwgbGV0IG5ld0ZsYWdzIGJlIHRoZSBzdHJpbmcgdGhhdCBpcyB0aGUg
Y29uY2F0ZW5hdGlvbiBvZiBmbGFncyBhbmQgInkiLgorICAgIC8vIDEwLiBbaGFuZGxlZCBieSBK
UyBidWlsdGluXSBMZXQgc3BsaXR0ZXIgYmUgPyBDb25zdHJ1Y3QoQywgwqsgcngsIG5ld0ZsYWdz
IMK7KS4KKworICAgIC8vIDExLiBMZXQgQSBiZSBBcnJheUNyZWF0ZSgwKS4KKyAgICAvLyAxMi4g
TGV0IGxlbmd0aEEgYmUgMC4KKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFy
cmF5KGV4ZWMsIDApOworICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IDA7CisKKyAgICAvLyAx
My4gSWYgbGltaXQgaXMgdW5kZWZpbmVkLCBsZXQgbGltIGJlIDIzMi0xOyBlbHNlIGxldCBsaW0g
YmUgPyBUb1VpbnQzMihsaW1pdCkuCisgICAgSlNWYWx1ZSBsaW1pdFZhbHVlID0gZXhlYy0+YXJn
dW1lbnQoMSk7CisgICAgdW5zaWduZWQgbGltaXQgPSBsaW1pdFZhbHVlLmlzVW5kZWZpbmVkKCkg
PyAweEZGRkZGRkZGdSA6IGxpbWl0VmFsdWUudG9VSW50MzIoZXhlYyk7CisKKyAgICAvLyAxNC4g
TGV0IHNpemUgYmUgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBTLgorICAgIHVuc2lnbmVkIGlu
cHV0U2l6ZSA9IGlucHV0Lmxlbmd0aCgpOworCisgICAgLy8gMTUuIExldCBwID0gMC4KKyAgICB1
bnNpZ25lZCBwb3NpdGlvbiA9IDA7CisKKyAgICAvLyAxNi4gSWYgbGltID09IDAsIHJldHVybiBB
LgorICAgIGlmICghbGltaXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKKworICAgIC8vIDE3LiBJZiBzaXplID09IDAsIHRoZW4KKyAgICBpZiAoaW5wdXQuaXNFbXB0
eSgpKSB7CisgICAgICAgIC8vIGEuIExldCB6IGJlID8gUmVnRXhwRXhlYyhzcGxpdHRlciwgUyku
CisgICAgICAgIC8vIGIuIElmIHogaXMgbm90IG51bGwsIHJldHVybiBBLgorICAgICAgICAvLyBj
LiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICIwIiwgUykuCisgICAgICAgIC8vIGQu
IFJldHVybiBBLgorICAgICAgICBpZiAoIXJlZ2V4cC0+bWF0Y2godm0sIGlucHV0LCAwKSkKKyAg
ICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwganNTdHJpbmdXaXRoUmV1
c2UoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CisgICAgfQorCisgICAgLy8gMTguIExldCBxID0gcC4KKyAgICB1bnNpZ25l
ZCBtYXRjaFBvc2l0aW9uID0gcG9zaXRpb247CisgICAgLy8gMTkuIFJlcGVhdCwgd2hpbGUgcSA8
IHNpemUKKyAgICBib29sIHJlZ0V4cElzU3RpY2t5ID0gcmVnZXhwLT5zdGlja3koKTsKKyAgICBi
b29sIHJlZ0V4cElzVW5pY29kZSA9IHJlZ2V4cC0+dW5pY29kZSgpOworICAgIHdoaWxlIChtYXRj
aFBvc2l0aW9uIDwgaW5wdXRTaXplKSB7CisgICAgICAgIFZlY3RvcjxpbnQsIDMyPiBvdmVjdG9y
OworCisgICAgICAgIC8vIGEuIFBlcmZvcm0gPyBTZXQoc3BsaXR0ZXIsICJsYXN0SW5kZXgiLCBx
LCB0cnVlKS4KKyAgICAgICAgLy8gYi4gTGV0IHogYmUgPyBSZWdFeHBFeGVjKHNwbGl0dGVyLCBT
KS4KKyAgICAgICAgaW50IG1wb3MgPSByZWdleHAtPm1hdGNoKHZtLCBpbnB1dCwgbWF0Y2hQb3Np
dGlvbiwgb3ZlY3Rvcik7CisKKyAgICAgICAgLy8gYy4gSWYgeiBpcyBudWxsLCBsZXQgcSBiZSBB
ZHZhbmNlU3RyaW5nSW5kZXgoUywgcSwgdW5pY29kZU1hdGNoaW5nKS4KKyAgICAgICAgaWYgKG1w
b3MgPCAwKSB7CisgICAgICAgICAgICBpZiAoIXJlZ0V4cElzU3RpY2t5KQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgbWF0Y2hQb3NpdGlvbiA9IGFkdmFuY2VTdHJpbmdJbmRl
eChpbnB1dCwgaW5wdXRTaXplLCBtYXRjaFBvc2l0aW9uLCByZWdFeHBJc1VuaWNvZGUpOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtcG9zKSA+PSBpbnB1dFNpemUpIHsKKyAgICAgICAgICAgIC8vIFRoZSBzcGVjIHJl
ZG9lcyB0aGUgUmVnRXhwRXhlYyBzdGFydGluZyBhdCB0aGUgbmV4dCBjaGFyYWN0ZXIgb2YgdGhl
IGlucHV0LgorICAgICAgICAgICAgLy8gQnV0IGluIG91ciBjYXNlLCBtcG9zIDwgMCBtZWFucyB0
aGF0IHRoZSBuYXRpdmUgcmVnZXhwIGFscmVhZHkgc2VhcmNoZWQgYWxsIHBlcm11dGF0aW9ucwor
ICAgICAgICAgICAgLy8gYW5kIGtub3cgdGhhdCB3ZSB3b24ndCBiZSBhYmxlIHRvIGZpbmQgYSBt
YXRjaCBmb3IgdGhlIHNlcGFyYXRvciBldmVuIGlmIHdlIHJlZG8gdGhlCisgICAgICAgICAgICAv
LyBSZWdFeHBFeGVjIHN0YXJ0aW5nIGF0IHRoZSBuZXh0IGNoYXJhY3RlciBvZiB0aGUgaW5wdXQu
IFNvLCBqdXN0IGJhaWwuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIGQuIEVsc2UsIHogaXMgbm90IG51bGwKKyAgICAgICAgLy8gICAgaS4gTGV0IGUgYmUgPyBU
b0xlbmd0aCg/IEdldChzcGxpdHRlciwgImxhc3RJbmRleCIpKS4KKyAgICAgICAgLy8gICBpaS4g
TGV0IGUgYmUgbWluKGUsIHNpemUpLgorICAgICAgICBtYXRjaFBvc2l0aW9uID0gbXBvczsKKyAg
ICAgICAgdW5zaWduZWQgbWF0Y2hFbmQgPSBvdmVjdG9yWzFdOworCisgICAgICAgIC8vICBpaWku
IElmIGUgPSBwLCBsZXQgcSBiZSBBZHZhbmNlU3RyaW5nSW5kZXgoUywgcSwgdW5pY29kZU1hdGNo
aW5nKS4KKyAgICAgICAgaWYgKG1hdGNoRW5kID09IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBt
YXRjaFBvc2l0aW9uID0gYWR2YW5jZVN0cmluZ0luZGV4KGlucHV0LCBpbnB1dFNpemUsIG1hdGNo
UG9zaXRpb24sIHJlZ0V4cElzVW5pY29kZSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICAvLyBpZiBtYXRjaEVuZCA9PSAwIHRoZW4gcG9zaXRpb24gc2hvdWxkIGFs
c28gYmUgemVybyBhbmQgdGh1cyBtYXRjaEVuZCBzaG91bGQgZXF1YWwgcG9zaXRpb24uCisgICAg
ICAgIEFTU0VSVChtYXRjaEVuZCk7CisKKyAgICAgICAgLy8gICBpdi4gRWxzZSBlICE9IHAsCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQ2FwdHVyZXMgPSByZWdleHAt
Pm51bVN1YnBhdHRlcm5zKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBuZXdSZXN1bHRMZW5ndGgg
PSByZXN1bHRMZW5ndGggKyBudW1iZXJPZkNhcHR1cmVzICsgMTsKKyAgICAgICAgICAgIGlmIChu
ZXdSZXN1bHRMZW5ndGggPCBudW1iZXJPZkNhcHR1cmVzIHx8IG5ld1Jlc3VsdExlbmd0aCA+PSBN
QVhfU1RPUkFHRV9WRUNUT1JfSU5ERVgpIHsKKyAgICAgICAgICAgICAgICAvLyBMZXQncyBjb25z
aWRlciB3aGF0J3MgYmVzdCBmb3IgdXNlcnMgaGVyZS4gV2UncmUgYWJvdXQgdG8gaW5jcmVhc2Ug
dGhlIGxlbmd0aCBvZgorICAgICAgICAgICAgICAgIC8vIHRoZSBzcGxpdCBhcnJheSBiZXlvbmQg
dGhlIG1heGltdW0gbGVuZ3RoIHRoYXQgd2UgY2FuIHN1cHBvcnQgZWZmaWNpZW50bHkuIFRoaXMK
KyAgICAgICAgICAgICAgICAvLyB3aWxsIGNhdXNlIHVzIHRvIHVzZSBhIEhhc2hNYXAgZm9yIHRo
ZSBuZXcgZW50cmllcyBhZnRlciB0aGlzIHBvaW50LiBUaGF0J3MgZ29pbmcKKyAgICAgICAgICAg
ICAgICAvLyB0byByZXN1bHQgaW4gYSB2ZXJ5IGxvbmcgcnVubmluZyB0aW1lIG9mIHRoaXMgZnVu
Y3Rpb24gYW5kIHZlcnkgbGFyZ2UgbWVtb3J5CisgICAgICAgICAgICAgICAgLy8gdXNhZ2UuIElu
IG15IGV4cGVyaW1lbnRzLCBKU0Mgd2lsbCBzaXQgc3Bpbm5pbmcgZm9yIG1pbnV0ZXMgYWZ0ZXIg
Z2V0dGluZyBoZXJlIGFuZAorICAgICAgICAgICAgICAgIC8vIGl0IHdhcyB1c2luZyA+NEdCIG9m
IG1lbW9yeSBhbmQgZXZlbnR1YWxseSBncmV3IHRvIDhHQi4gSXQga2VwdCBydW5uaW5nIHdpdGhv
dXQKKyAgICAgICAgICAgICAgICAvLyBmaW5pc2hpbmcgdW50aWwgSSBraWxsZWQgaXQuIFRoYXQn
cyBwcm9iYWJseSBub3Qgd2hhdCB0aGUgdXNlciB3YW50ZWQuIFRoZSB1c2VyLAorICAgICAgICAg
ICAgICAgIC8vIG9yIHRoZSBwcm9ncmFtIHRoYXQgdGhlIHVzZXIgaXMgcnVubmluZywgcHJvYmFi
bHkgbWFkZSBhIG1pc3Rha2UgYnkgY2FsbGluZyB0aGlzCisgICAgICAgICAgICAgICAgLy8gbWV0
aG9kIGluIHN1Y2ggYSB3YXkgdGhhdCBpdCByZXN1bHRlZCBpbiBzdWNoIGFuIG9ibm94aW91cyBh
cnJheS4gVGhlcmVmb3JlLCB0bworICAgICAgICAgICAgICAgIC8vIHByb3RlY3Qgb3Vyc2VsdmVz
LCB3ZSBiYWlsIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIDEuIExldCBUIGJl
IGEgU3RyaW5nIHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5nIG9m
IHRoZSBlbGVtZW50cyBhdCBpbmRpY2VzIHAgKGluY2x1c2l2ZSkgdGhyb3VnaCBxIChleGNsdXNp
dmUpLgorICAgICAgICAgICAgLy8gMi4gUGVyZm9ybSAhIENyZWF0ZURhdGFQcm9wZXJ0eShBLCAh
IFRvU3RyaW5nKGxlbmd0aEEpLCBUKS4KKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5k
ZXgoZXhlYywgcmVzdWx0TGVuZ3RoLCBqc1N1YnN0cmluZyhleGVjLCB0aGlzVmFsdWUsIGlucHV0
LCBwb3NpdGlvbiwgbWF0Y2hQb3NpdGlvbiAtIHBvc2l0aW9uKSk7CisKKyAgICAgICAgICAgIC8v
IDMuIExldCBsZW5ndGhBIGJlIGxlbmd0aEEgKyAxLgorICAgICAgICAgICAgLy8gNC4gSWYgbGVu
Z3RoQSA9IGxpbSwgcmV0dXJuIEEuCisgICAgICAgICAgICBpZiAoKytyZXN1bHRMZW5ndGggPT0g
bGltaXQpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
CisgICAgICAgICAgICAvLyA1LiBMZXQgcCBiZSBlLgorICAgICAgICAgICAgcG9zaXRpb24gPSBt
YXRjaEVuZDsKKworICAgICAgICAgICAgLy8gNi4gTGV0IG51bWJlck9mQ2FwdHVyZXMgYmUgPyBU
b0xlbmd0aCg/IEdldCh6LCAibGVuZ3RoIikpLgorICAgICAgICAgICAgLy8gNy4gTGV0IG51bWJl
ck9mQ2FwdHVyZXMgYmUgbWF4KG51bWJlck9mQ2FwdHVyZXMtMSwgMCkuCisgICAgICAgICAgICAv
LyA4LiBMZXQgaSBiZSAxLgorICAgICAgICAgICAgLy8gOS4gUmVwZWF0LCB3aGlsZSBpIDw9IG51
bWJlck9mQ2FwdHVyZXMsCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51
bWJlck9mQ2FwdHVyZXM7ICsraSkgeworICAgICAgICAgICAgICAgIC8vIGEuIExldCBuZXh0Q2Fw
dHVyZSBiZSA/IEdldCh6LCAhIFRvU3RyaW5nKGkpKS4KKyAgICAgICAgICAgICAgICAvLyBiLiBQ
ZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICEgVG9TdHJpbmcobGVuZ3RoQSksIG5leHRD
YXB0dXJlKS4KKyAgICAgICAgICAgICAgICBpbnQgc3ViID0gb3ZlY3RvcltpICogMl07CisgICAg
ICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgsIHN1
YiA8IDAgPyBqc1VuZGVmaW5lZCgpIDoganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1
dCwgc3ViLCBvdmVjdG9yW2kgKiAyICsgMV0gLSBzdWIpKTsKKworICAgICAgICAgICAgICAgIC8v
IGMuIExldCBpIGJlIGkgKyAxLgorICAgICAgICAgICAgICAgIC8vIGQuIExldCBsZW5ndGhBIGJl
IGxlbmd0aEEgKyAxLgorICAgICAgICAgICAgICAgIC8vIGUuIElmIGxlbmd0aEEgPSBsaW0sIHJl
dHVybiBBLgorICAgICAgICAgICAgICAgIGlmICgrK3Jlc3VsdExlbmd0aCA9PSBsaW1pdCkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyAxMC4gTGV0IHEgYmUgcC4KKyAgICAgICAgICAgIG1h
dGNoUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIDIwLiBM
ZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lz
dGluZyBvZiB0aGUgZWxlbWVudHMgYXQgaW5kaWNlcyBwIChpbmNsdXNpdmUpIHRocm91Z2ggc2l6
ZSAoZXhjbHVzaXZlKS4KKyAgICAvLyAyMS4gUGVyZm9ybSAhIENyZWF0ZURhdGFQcm9wZXJ0eShB
LCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBUKS4KKyAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4
ZWMsIHJlc3VsdExlbmd0aCsrLCBqc1N1YnN0cmluZyhleGVjLCB0aGlzVmFsdWUsIGlucHV0LCBw
b3NpdGlvbiwgaW5wdXRTaXplIC0gcG9zaXRpb24pKTsKKworICAgIC8vIDIyLiBSZXR1cm4gQS4K
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmgJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw4IEBAIHBy
aXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cD4gbV9lbXB0eVJlZ0V4cDsKIH07CiAKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNT
dGF0ZSopOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFJlZ0V4cFByb3RvdHlw
ZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3Qu
aAkocmV2aXNpb24gMTk5MzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHly
aWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
ICBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC04MSw2ICs4MSwyOSBAQCBpbmxpbmUgU3Ry
aW5nT2JqZWN0KiBhc1N0cmluZ09iamVjdChKU1ZhCiAKIEpTX0VYUE9SVF9QUklWQVRFIFN0cmlu
Z09iamVjdCogY29uc3RydWN0U3RyaW5nKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
IAorLy8gSGVscGVyIGZvciBwcm9kdWNpbmcgYSBKU1N0cmluZyBmb3IgJ3N0cmluZycsIHdoZXJl
ICdzdHJpbmcnIHdhcyBiZWVuIHByb2R1Y2VkIGJ5CisvLyBjYWxsaW5nIFRvU3RyaW5nIG9uICdv
cmlnaW5hbFZhbHVlJy4gSW4gY2FzZXMgd2hlcmUgJ29yaWdpbmFsVmFsdWUnIGFscmVhZHkgd2Fz
IGEKKy8vIHN0cmluZyBwcmltaXRpdmUgd2UgY2FuIGp1c3QgdXNlIHRoaXMsIG90aGVyd2lzZSB3
ZSBuZWVkIHRvIGFsbG9jYXRlIGEgbmV3IEpTU3RyaW5nLgorc3RhdGljIGlubGluZSBKU1N0cmlu
ZyoganNTdHJpbmdXaXRoUmV1c2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9yaWdpbmFsVmFs
dWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIGlmIChvcmlnaW5hbFZhbHVlLmlzU3Ry
aW5nKCkpIHsKKyAgICAgICAgQVNTRVJUKGFzU3RyaW5nKG9yaWdpbmFsVmFsdWUpLT52YWx1ZShl
eGVjKSA9PSBzdHJpbmcpOworICAgICAgICByZXR1cm4gYXNTdHJpbmcob3JpZ2luYWxWYWx1ZSk7
CisgICAgfQorICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBzdHJpbmcpOworfQorCisvLyBIZWxw
ZXIgdGhhdCB0cmllcyB0byB1c2UgdGhlIEpTU3RyaW5nIHN1YnN0cmluZyBzaGFyaW5nIG1lY2hh
bmlzbSBpZiAnb3JpZ2luYWxWYWx1ZScgaXMgYSBKU1N0cmluZy4KK3N0YXRpYyBpbmxpbmUgSlNT
dHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvcmlnaW5hbFZhbHVl
LCBjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
Cit7CisgICAgaWYgKG9yaWdpbmFsVmFsdWUuaXNTdHJpbmcoKSkgeworICAgICAgICBBU1NFUlQo
YXNTdHJpbmcob3JpZ2luYWxWYWx1ZSktPnZhbHVlKGV4ZWMpID09IHN0cmluZyk7CisgICAgICAg
IHJldHVybiBqc1N1YnN0cmluZyhleGVjLCBhc1N0cmluZyhvcmlnaW5hbFZhbHVlKSwgb2Zmc2V0
LCBsZW5ndGgpOworICAgIH0KKyAgICByZXR1cm4ganNTdWJzdHJpbmcoZXhlYywgc3RyaW5nLCBv
ZmZzZXQsIGxlbmd0aCk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBT
dHJpbmdPYmplY3RfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxOTkzMzgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4g
KHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAq
ICBDb3B5cmlnaHQgKEMpIDIwMTUgSm9yZGFuIEhhcmJhbmQgKGxqaGFyYkBnbWFpbC5jb20pCiAg
KgpAQCAtNzAsOCArNzAsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1BhZFN0YXJ0
KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNSZXBsYWNlKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jU3BsaXQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKEV4ZWNTdGF0ZSopOwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZShF
eGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
VG9VcHBlckNhc2UoRXhlY1N0YXRlKik7CkBAIC0xMTMsNiArMTExLDcgQEAgY29uc3QgQ2xhc3NJ
bmZvIFN0cmluZ1Byb3RvdHlwZTo6c19pbmZvIAogICAgIG1hdGNoICAgICBKU0J1aWx0aW4gICAg
RG9udEVudW18RnVuY3Rpb24gMQogICAgIHJlcGVhdCAgICBKU0J1aWx0aW4gICAgRG9udEVudW18
RnVuY3Rpb24gMQogICAgIHNlYXJjaCAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24g
MQorICAgIHNwbGl0ICAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQogQGVuZAog
Ki8KIApAQCAtMTM5LDcgKzEzOCw2IEBAIHZvaWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigicGFk
U3RhcnQiLCBzdHJpbmdQcm90b0Z1bmNQYWRTdGFydCwgRG9udEVudW0sIDEpOwogICAgIEpTQ19O
QVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigicmVwbGFjZSIsIHN0
cmluZ1Byb3RvRnVuY1JlcGxhY2UsIERvbnRFbnVtLCAyLCBTdHJpbmdQcm90b3R5cGVSZXBsYWNl
SW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigi
c2xpY2UiLCBzdHJpbmdQcm90b0Z1bmNTbGljZSwgRG9udEVudW0sIDIpOwotICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJzcGxpdCIsIHN0cmluZ1Byb3RvRnVuY1Nw
bGl0LCBEb250RW51bSwgMik7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04oInN1YnN0ciIsIHN0cmluZ1Byb3RvRnVuY1N1YnN0ciwgRG9udEVudW0sIDIpOwogICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJzdWJzdHJpbmciLCBzdHJp
bmdQcm90b0Z1bmNTdWJzdHJpbmcsIERvbnRFbnVtLCAyKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTigidG9Mb3dlckNhc2UiLCBzdHJpbmdQcm90b0Z1bmNUb0xv
d2VyQ2FzZSwgRG9udEVudW0sIDApOwpAQCAtMTk1LDI4ICsxOTMsNiBAQCBib29sIFN0cmluZ1By
b3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLy8gSGVscGVy
IGZvciBwcm9kdWNpbmcgYSBKU1N0cmluZyBmb3IgJ3N0cmluZycsIHdoZXJlICdzdHJpbmcnIHdh
cyBiZWVuIHByb2R1Y2VkIGJ5Ci0vLyBjYWxsaW5nIFRvU3RyaW5nIG9uICdvcmlnaW5hbFZhbHVl
Jy4gSW4gY2FzZXMgd2hlcmUgJ29yaWdpbmFsVmFsdWUnIGFscmVhZHkgd2FzIGEKLS8vIHN0cmlu
ZyBwcmltaXRpdmUgd2UgY2FuIGp1c3QgdXNlIHRoaXMsIG90aGVyd2lzZSB3ZSBuZWVkIHRvIGFs
bG9jYXRlIGEgbmV3IEpTU3RyaW5nLgotc3RhdGljIGlubGluZSBKU1N0cmluZyoganNTdHJpbmdX
aXRoUmV1c2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9yaWdpbmFsVmFsdWUsIGNvbnN0IFN0
cmluZyYgc3RyaW5nKQotewotICAgIGlmIChvcmlnaW5hbFZhbHVlLmlzU3RyaW5nKCkpIHsKLSAg
ICAgICAgQVNTRVJUKGFzU3RyaW5nKG9yaWdpbmFsVmFsdWUpLT52YWx1ZShleGVjKSA9PSBzdHJp
bmcpOwotICAgICAgICByZXR1cm4gYXNTdHJpbmcob3JpZ2luYWxWYWx1ZSk7Ci0gICAgfQotICAg
IHJldHVybiBqc1N0cmluZyhleGVjLCBzdHJpbmcpOwotfQotCi0vLyBIZWxwZXIgdGhhdCB0cmll
cyB0byB1c2UgdGhlIEpTU3RyaW5nIHN1YnN0cmluZyBzaGFyaW5nIG1lY2hhbmlzbSBpZiAnb3Jp
Z2luYWxWYWx1ZScgaXMgYSBKU1N0cmluZy4KLXN0YXRpYyBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vi
c3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvcmlnaW5hbFZhbHVlLCBjb25zdCBTdHJp
bmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgaWYg
KG9yaWdpbmFsVmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICBBU1NFUlQoYXNTdHJpbmcob3Jp
Z2luYWxWYWx1ZSktPnZhbHVlKGV4ZWMpID09IHN0cmluZyk7Ci0gICAgICAgIHJldHVybiBqc1N1
YnN0cmluZyhleGVjLCBhc1N0cmluZyhvcmlnaW5hbFZhbHVlKSwgb2Zmc2V0LCBsZW5ndGgpOwot
ICAgIH0KLSAgICByZXR1cm4ganNTdWJzdHJpbmcoZXhlYywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0
aCk7Ci19Ci0KIHN0YXRpYyBORVZFUl9JTkxJTkUgU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVmZXJl
bmNlc1Nsb3coU3RyaW5nVmlldyByZXBsYWNlbWVudCwgU3RyaW5nVmlldyBzb3VyY2UsIGNvbnN0
IGludCogb3ZlY3RvciwgUmVnRXhwKiByZWcsIHNpemVfdCBpKQogewogICAgIFN0cmluZ0J1aWxk
ZXIgc3Vic3RpdHV0ZWRSZXBsYWNlbWVudDsKQEAgLTExODEsMTY5ICsxMTU3LDU4IEBAIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIGJvb2wgc3BsaXRTdHJpbmdCeU8KICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLS8vIEVTIDUuMSAtIDE1LjUuNC4xNCBTdHJpbmcucHJvdG90eXBlLnNwbGl0IChzZXBhcmF0
b3IsIGxpbWl0KQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNT
cGxpdChFeGVjU3RhdGUqIGV4ZWMpCisvLyBFUyAyMS4xLjMuMTcgU3RyaW5nLnByb3RvdHlwZS5z
cGxpdChzZXBhcmF0b3IsIGxpbWl0KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogewotICAgIC8vIDEuIENhbGwg
Q2hlY2tPYmplY3RDb2VyY2libGUgcGFzc2luZyB0aGUgdGhpcyB2YWx1ZSBhcyBpdHMgYXJndW1l
bnQuCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICBpZiAo
IWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpOworICAgIEFTU0VSVChjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFs
dWUpKTsKIAotICAgIC8vIDIuIExldCBTIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb1N0cmlu
ZywgZ2l2aW5nIGl0IHRoZSB0aGlzIHZhbHVlIGFzIGl0cyBhcmd1bWVudC4KLSAgICAvLyA2LiBM
ZXQgcyBiZSB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gUy4KKyAgICAvLyAzLiBMZXQgUyBi
ZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgVG9TdHJpbmcsIGdpdmluZyBpdCB0aGUgdGhpcyB2YWx1
ZSBhcyBpdHMgYXJndW1lbnQuCisgICAgLy8gNy4gTGV0IHMgYmUgdGhlIG51bWJlciBvZiBjaGFy
YWN0ZXJzIGluIFMuCiAgICAgU3RyaW5nIGlucHV0ID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgQVNTRVJUKCFpbnB1dC5p
c051bGwoKSk7CiAKLSAgICAvLyAzLiBMZXQgQSBiZSBhIG5ldyBhcnJheSBjcmVhdGVkIGFzIGlm
IGJ5IHRoZSBleHByZXNzaW9uIG5ldyBBcnJheSgpCisgICAgLy8gNC4gTGV0IEEgYmUgYSBuZXcg
YXJyYXkgY3JlYXRlZCBhcyBpZiBieSB0aGUgZXhwcmVzc2lvbiBuZXcgQXJyYXkoKQogICAgIC8v
ICAgIHdoZXJlIEFycmF5IGlzIHRoZSBzdGFuZGFyZCBidWlsdC1pbiBjb25zdHJ1Y3RvciB3aXRo
IHRoYXQgbmFtZS4KICAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4
ZWMsIDApOwogCi0gICAgLy8gNC4gTGV0IGxlbmd0aEEgYmUgMC4KKyAgICAvLyA1LiBMZXQgbGVu
Z3RoQSBiZSAwLgogICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IDA7CiAKLSAgICAvLyA1LiBJ
ZiBsaW1pdCBpcyB1bmRlZmluZWQsIGxldCBsaW0gPSAyXjMyLTE7IGVsc2UgbGV0IGxpbSA9IFRv
VWludDMyKGxpbWl0KS4KKyAgICAvLyA2LiBJZiBsaW1pdCBpcyB1bmRlZmluZWQsIGxldCBsaW0g
PSAyXjMyLTE7IGVsc2UgbGV0IGxpbSA9IFRvVWludDMyKGxpbWl0KS4KICAgICBKU1ZhbHVlIGxp
bWl0VmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsKICAgICB1bnNpZ25lZCBsaW1pdCA9IGxpbWl0
VmFsdWUuaXNVbmRlZmluZWQoKSA/IDB4RkZGRkZGRkZ1IDogbGltaXRWYWx1ZS50b1VJbnQzMihl
eGVjKTsKIAotICAgIC8vIDcuIExldCBwID0gMC4KKyAgICAvLyA4LiBMZXQgcCA9IDAuCiAgICAg
c2l6ZV90IHBvc2l0aW9uID0gMDsKIAotICAgIC8vIDguIElmIHNlcGFyYXRvciBpcyBhIFJlZ0V4
cCBvYmplY3QgKGl0cyBbW0NsYXNzXV0gaXMgIlJlZ0V4cCIpLCBsZXQgUiA9IHNlcGFyYXRvcjsK
KyAgICAvLyA5LiBJZiBzZXBhcmF0b3IgaXMgYSBSZWdFeHAgb2JqZWN0IChpdHMgW1tDbGFzc11d
IGlzICJSZWdFeHAiKSwgbGV0IFIgPSBzZXBhcmF0b3I7CiAgICAgLy8gICAgb3RoZXJ3aXNlIGxl
dCBSID0gVG9TdHJpbmcoc2VwYXJhdG9yKS4KICAgICBKU1ZhbHVlIHNlcGFyYXRvclZhbHVlID0g
ZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgaWYgKHNlcGFyYXRvclZhbHVlLmluaGVyaXRzKFJlZ0V4
cE9iamVjdDo6aW5mbygpKSkgewotICAgICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICAg
ICAgUmVnRXhwKiByZWcgPSBhc1JlZ0V4cE9iamVjdChzZXBhcmF0b3JWYWx1ZSktPnJlZ0V4cCgp
OwotCi0gICAgICAgIC8vIDkuIElmIGxpbSA9PSAwLCByZXR1cm4gQS4KLSAgICAgICAgaWYgKCFs
aW1pdCkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLQotICAg
ICAgICAvLyAxMC4gSWYgc2VwYXJhdG9yIGlzIHVuZGVmaW5lZCwgdGhlbgotICAgICAgICBpZiAo
c2VwYXJhdG9yVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICAgICAgLy8gYS4gQ2FsbCB0
aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBBIHdpdGggYXJndW1l
bnRzICIwIiwKLSAgICAgICAgICAgIC8vICAgIFByb3BlcnR5IERlc2NyaXB0b3Ige1tbVmFsdWVd
XTogUywgW1tXcml0YWJsZV1dOiB0cnVlLCBbW0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1
cmFibGVdXTogdHJ1ZX0sIGFuZCBmYWxzZS4KLSAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0
SW5kZXgoZXhlYywgMCwganNTdHJpbmdXaXRoUmV1c2UoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCkp
OwotICAgICAgICAgICAgLy8gYi4gUmV0dXJuIEEuCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyAxMS4gSWYgcyA9PSAw
LCB0aGVuCi0gICAgICAgIGlmIChpbnB1dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIC8vIGEu
IENhbGwgU3BsaXRNYXRjaChTLCAwLCBSKSBhbmQgbGV0IHogYmUgaXRzIE1hdGNoUmVzdWx0IHJl
c3VsdC4KLSAgICAgICAgICAgIC8vIGIuIElmIHogaXMgbm90IGZhaWx1cmUsIHJldHVybiBBLgot
ICAgICAgICAgICAgLy8gYy4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFs
IG1ldGhvZCBvZiBBIHdpdGggYXJndW1lbnRzICIwIiwKLSAgICAgICAgICAgIC8vICAgIFByb3Bl
cnR5IERlc2NyaXB0b3Ige1tbVmFsdWVdXTogUywgW1tXcml0YWJsZV1dOiB0cnVlLCBbW0VudW1l
cmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZX0sIGFuZCBmYWxzZS4KLSAgICAg
ICAgICAgIC8vIGQuIFJldHVybiBBLgotICAgICAgICAgICAgaWYgKCFyZWctPm1hdGNoKCp2bSwg
aW5wdXQsIDApKQotICAgICAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywg
MCwganNTdHJpbmdXaXRoUmV1c2UoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCkpOwotICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gMTIuIExldCBxID0gcC4KLSAgICAgICAgc2l6ZV90IG1hdGNoUG9zaXRpb24gPSAwOwotICAg
ICAgICAvLyAxMy4gUmVwZWF0LCB3aGlsZSBxICE9IHMKLSAgICAgICAgd2hpbGUgKG1hdGNoUG9z
aXRpb24gPCBpbnB1dC5sZW5ndGgoKSkgewotICAgICAgICAgICAgLy8gYS4gQ2FsbCBTcGxpdE1h
dGNoKFMsIHEsIFIpIGFuZCBsZXQgeiBiZSBpdHMgTWF0Y2hSZXN1bHQgcmVzdWx0LgotICAgICAg
ICAgICAgVmVjdG9yPGludCwgMzI+IG92ZWN0b3I7Ci0gICAgICAgICAgICBpbnQgbXBvcyA9IHJl
Zy0+bWF0Y2goKnZtLCBpbnB1dCwgbWF0Y2hQb3NpdGlvbiwgb3ZlY3Rvcik7Ci0KLSAgICAgICAg
ICAgIC8vIGIuIElmIHogaXMgYSBmYWlsdXJlIHRoZW4gd2UgY2FuIGJyZWFrIGJlY2F1c2UgdGhl
cmUgYXJlIG5vIG1hdGNoZXMKLSAgICAgICAgICAgIGlmIChtcG9zIDwgMCkKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIG1hdGNoUG9zaXRpb24gPSBtcG9zOwotCi0gICAgICAg
ICAgICAvLyBpZiB0aGUgbWF0Y2ggaXMgdGhlIGVtcHR5IG1hdGNoIGF0IHRoZSBlbmQsIGJyZWFr
LgotICAgICAgICAgICAgaWYgKG1hdGNoUG9zaXRpb24gPj0gaW5wdXQubGVuZ3RoKCkpCi0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIC8vIGMuIEVsc2UsIHogaXMgbm90IGZh
aWx1cmUKLSAgICAgICAgICAgIC8vIGkuIHogbXVzdCBiZSBhIFN0YXRlLiBMZXQgZSBiZSB6J3Mg
ZW5kSW5kZXggYW5kIGxldCBjYXAgYmUgeidzIGNhcHR1cmVzIGFycmF5LgotICAgICAgICAgICAg
c2l6ZV90IG1hdGNoRW5kID0gb3ZlY3RvclsxXTsKLQotICAgICAgICAgICAgLy8gaWkuIElmIGUg
PT0gcCwgdGhlbiBsZXQgcSA9IHEgKyAxLgotICAgICAgICAgICAgaWYgKG1hdGNoRW5kID09IHBv
c2l0aW9uKSB7Ci0gICAgICAgICAgICAgICAgKyttYXRjaFBvc2l0aW9uOwotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gaWlpLiBpZiBtYXRj
aEVuZCA9PSAwIHRoZW4gcG9zaXRpb24gc2hvdWxkIGFsc28gYmUgemVybyBhbmQgdGh1cyBtYXRj
aEVuZCBzaG91bGQgZXF1YWwgcG9zaXRpb24uCi0gICAgICAgICAgICBBU1NFUlQobWF0Y2hFbmQp
OwotCi0gICAgICAgICAgICAvLyBpaWkuIEVsc2UsIGUgIT0gcAotCi0gICAgICAgICAgICAvLyAx
LiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29u
c2lzdGluZyBvZiB0aGUgY2hhcmFjdGVycyBhdCBwb3NpdGlvbnMgcCAoaW5jbHVzaXZlKQotICAg
ICAgICAgICAgLy8gICAgdGhyb3VnaCBxIChleGNsdXNpdmUpLgotICAgICAgICAgICAgLy8gMi4g
Q2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBBIHdpdGgg
YXJndW1lbnRzIFRvU3RyaW5nKGxlbmd0aEEpLAotICAgICAgICAgICAgLy8gICAgUHJvcGVydHkg
RGVzY3JpcHRvciB7W1tWYWx1ZV1dOiBULCBbW1dyaXRhYmxlXV06IHRydWUsIFtbRW51bWVyYWJs
ZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlfSwgYW5kIGZhbHNlLgotICAgICAgICAg
ICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgsIGpzU3Vic3RyaW5n
KGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQsIHBvc2l0aW9uLCBtYXRjaFBvc2l0aW9uIC0gcG9zaXRp
b24pKTsKLQotICAgICAgICAgICAgLy8gMy4gSW5jcmVtZW50IGxlbmd0aEEgYnkgMS4KLSAgICAg
ICAgICAgIC8vIDQuIElmIGxlbmd0aEEgPT0gbGltLCByZXR1cm4gQS4KLSAgICAgICAgICAgICsr
cmVzdWx0TGVuZ3RoOwotICAgICAgICAgICAgaWYgKHJlc3VsdExlbmd0aCA9PSBsaW1pdCkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0gICAgICAgICAg
ICBpZiAocmVzdWx0TGVuZ3RoID49IE1BWF9TVE9SQUdFX1ZFQ1RPUl9JTkRFWCkgewotICAgICAg
ICAgICAgICAgIC8vIExldCdzIGNvbnNpZGVyIHdoYXQncyBiZXN0IGZvciB1c2VycyBoZXJlLiBX
ZSdyZSBhYm91dCB0byBpbmNyZWFzZSB0aGUgbGVuZ3RoIG9mCi0gICAgICAgICAgICAgICAgLy8g
dGhlIHNwbGl0IGFycmF5IGJleW9uZCB0aGUgbWF4aW11bSBsZW5ndGggdGhhdCB3ZSBjYW4gc3Vw
cG9ydCBlZmZpY2llbnRseS4gVGhpcwotICAgICAgICAgICAgICAgIC8vIHdpbGwgY2F1c2UgdXMg
dG8gdXNlIGEgSGFzaE1hcCBmb3IgdGhlIG5ldyBlbnRyaWVzIGFmdGVyIHRoaXMgcG9pbnQuIFRo
YXQncyBnb2luZwotICAgICAgICAgICAgICAgIC8vIHRvIHJlc3VsdCBpbiBhIHZlcnkgbG9uZyBy
dW5uaW5nIHRpbWUgb2YgdGhpcyBmdW5jdGlvbiBhbmQgdmVyeSBsYXJnZSBtZW1vcnkKLSAgICAg
ICAgICAgICAgICAvLyB1c2FnZS4gSW4gbXkgZXhwZXJpbWVudHMsIEpTQyB3aWxsIHNpdCBzcGlu
bmluZyBmb3IgbWludXRlcyBhZnRlciBnZXR0aW5nIGhlcmUgYW5kCi0gICAgICAgICAgICAgICAg
Ly8gaXQgd2FzIHVzaW5nID40R0Igb2YgbWVtb3J5IGFuZCBldmVudHVhbGx5IGdyZXcgdG8gOEdC
LiBJdCBrZXB0IHJ1bm5pbmcgd2l0aG91dAotICAgICAgICAgICAgICAgIC8vIGZpbmlzaGluZyB1
bnRpbCBJIGtpbGxlZCBpdC4gVGhhdCdzIHByb2JhYmx5IG5vdCB3aGF0IHRoZSB1c2VyIHdhbnRl
ZC4gVGhlIHVzZXIsCi0gICAgICAgICAgICAgICAgLy8gb3IgdGhlIHByb2dyYW0gdGhhdCB0aGUg
dXNlciBpcyBydW5uaW5nLCBwcm9iYWJseSBtYWRlIGEgbWlzdGFrZSBieSBjYWxsaW5nIHRoaXMK
LSAgICAgICAgICAgICAgICAvLyBtZXRob2QgaW4gc3VjaCBhIHdheSB0aGF0IGl0IHJlc3VsdGVk
IGluIHN1Y2ggYW4gb2Jub3hpb3VzIGFycmF5LiBUaGVyZWZvcmUsIHRvCi0gICAgICAgICAgICAg
ICAgLy8gcHJvdGVjdCBvdXJzZWx2ZXMsIHdlIGJhaWwgYXQgdGhpcyBwb2ludC4KLSAgICAgICAg
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgLy8gNS4gTGV0IHAgPSBlLgotICAgICAgICAgICAgLy8gOC4gTGV0IHEgPSBwLgot
ICAgICAgICAgICAgcG9zaXRpb24gPSBtYXRjaEVuZDsKLSAgICAgICAgICAgIG1hdGNoUG9zaXRp
b24gPSBtYXRjaEVuZDsKLQotICAgICAgICAgICAgLy8gNi4gTGV0IGkgPSAwLgotICAgICAgICAg
ICAgLy8gNy4gUmVwZWF0LCB3aGlsZSBpIGlzIG5vdCBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGVs
ZW1lbnRzIGluIGNhcC4KLSAgICAgICAgICAgIC8vICBhIExldCBpID0gaSArIDEuCi0gICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IHJlZy0+bnVtU3VicGF0dGVybnMoKTsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgLy8gYiBDYWxsIHRoZSBbW0RlZmluZU93blByb3BlcnR5XV0g
aW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVudHMKLSAgICAgICAgICAgICAgICAvLyAg
IFRvU3RyaW5nKGxlbmd0aEEpLCBQcm9wZXJ0eSBEZXNjcmlwdG9yIHtbW1ZhbHVlXV06IGNhcFtp
XSwgW1tXcml0YWJsZV1dOgotICAgICAgICAgICAgICAgIC8vICAgdHJ1ZSwgW1tFbnVtZXJhYmxl
XV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IHRydWV9LCBhbmQgZmFsc2UuCi0gICAgICAgICAg
ICAgICAgaW50IHN1YiA9IG92ZWN0b3JbaSAqIDJdOwotICAgICAgICAgICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoLCBzdWIgPCAwID8ganNVbmRlZmluZWQo
KSA6IGpzU3Vic3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQsIHN1Yiwgb3ZlY3RvcltpICog
MiArIDFdIC0gc3ViKSk7Ci0gICAgICAgICAgICAgICAgLy8gYyBJbmNyZW1lbnQgbGVuZ3RoQSBi
eSAxLgotICAgICAgICAgICAgICAgIC8vIGQgSWYgbGVuZ3RoQSA9PSBsaW0sIHJldHVybiBBLgot
ICAgICAgICAgICAgICAgIGlmICgrK3Jlc3VsdExlbmd0aCA9PSBsaW1pdCkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfSBlbHNlIHsKKyAgICB7IC8vIEZJWE1FOiBLZWVwaW5nIHRoaXMgaW5k
ZW50YXRpb24gaGVyZSB0byBtaW5pbWl6ZSB0aGUgZGlmZi4gV2lsbCB1bmluZGVudCBhbmQgcmVt
b3ZlIHRoaXMgbGF0ZXIuCiAgICAgICAgIFN0cmluZyBzZXBhcmF0b3IgPSBzZXBhcmF0b3JWYWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAKLSAgICAgICAgLy8gOS4gSWYgbGltID09IDAsIHJldHVybiBBLgorICAgICAgICAvLyAx
MC4gSWYgbGltID09IDAsIHJldHVybiBBLgogICAgICAgICBpZiAoIWxpbWl0KQogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogCi0gICAgICAgIC8vIDEwLiBJZiBz
ZXBhcmF0b3IgaXMgdW5kZWZpbmVkLCB0aGVuCi0gICAgICAgIEpTVmFsdWUgc2VwYXJhdG9yVmFs
dWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICAgICAgLy8gMTEuIElmIHNlcGFyYXRvciBpcyB1
bmRlZmluZWQsIHRoZW4KICAgICAgICAgaWYgKHNlcGFyYXRvclZhbHVlLmlzVW5kZWZpbmVkKCkp
IHsKICAgICAgICAgICAgIC8vIGEuICBDYWxsIHRoZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50
ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVudHMgIjAiLAotICAgICAgICAgICAgLy8gICAg
IFByb3BlcnR5IERlc2NyaXB0b3Ige1tbVmFsdWVdXTogUywgW1tXcml0YWJsZV1dOiB0cnVlLCBb
W0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZX0sIGFuZCBmYWxzZS4K
ICAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwganNTdHJpbmdXaXRo
UmV1c2UoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCkpOwogICAgICAgICAgICAgLy8gYi4gIFJldHVy
biBBLgogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgICAg
ICB9CiAKLSAgICAgICAgLy8gMTEuIElmIHMgPT0gMCwgdGhlbgorICAgICAgICAvLyAxMi4gSWYg
cyA9PSAwLCB0aGVuCiAgICAgICAgIGlmIChpbnB1dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
IC8vIGEuIENhbGwgU3BsaXRNYXRjaChTLCAwLCBSKSBhbmQgbGV0IHogYmUgaXRzIE1hdGNoUmVz
dWx0IHJlc3VsdC4KLSAgICAgICAgICAgIC8vIGIuIElmIHogaXMgbm90IGZhaWx1cmUsIHJldHVy
biBBLgotICAgICAgICAgICAgLy8gYy4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGlu
dGVybmFsIG1ldGhvZCBvZiBBIHdpdGggYXJndW1lbnRzICIwIiwKLSAgICAgICAgICAgIC8vICAg
IFByb3BlcnR5IERlc2NyaXB0b3Ige1tbVmFsdWVdXTogUywgW1tXcml0YWJsZV1dOiB0cnVlLCBb
W0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZX0sIGFuZCBmYWxzZS4K
KyAgICAgICAgICAgIC8vIGEuIExldCB6IGJlIFNwbGl0TWF0Y2goUywgMCwgUikgd2hlcmUgUyBp
cyBpbnB1dCwgUiBpcyBzZXBhcmF0b3IuCisgICAgICAgICAgICAvLyBiLiBJZiB6IGlzIG5vdCBm
YWxzZSwgcmV0dXJuIEEuCisgICAgICAgICAgICAvLyBjLiBDYWxsIENyZWF0ZURhdGFQcm9wZXJ0
eShBLCAiMCIsIFMpLgogICAgICAgICAgICAgLy8gZC4gUmV0dXJuIEEuCiAgICAgICAgICAgICBp
ZiAoIXNlcGFyYXRvci5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3RJbmRleChleGVjLCAwLCBqc1N0cmluZ1dpdGhSZXVzZShleGVjLCB0aGlzVmFsdWUsIGlucHV0
KSk7CkBAIC0xMzg2LDE3ICsxMjUxLDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG8KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8g
MTIuIExldCBxID0gcC4KKyAgICAgICAgICAgIC8vIDEzLiBMZXQgcSA9IHAuCiAgICAgICAgICAg
ICBzaXplX3QgbWF0Y2hQb3NpdGlvbjsKLSAgICAgICAgICAgIC8vIDEzLiBSZXBlYXQsIHdoaWxl
IHEgIT0gcwotICAgICAgICAgICAgLy8gICBhLiBDYWxsIFNwbGl0TWF0Y2goUywgcSwgUikgYW5k
IGxldCB6IGJlIGl0cyBNYXRjaFJlc3VsdCByZXN1bHQuCi0gICAgICAgICAgICAvLyAgIGIuIElm
IHogaXMgZmFpbHVyZSwgdGhlbiBsZXQgcSA9IHErMS4KLSAgICAgICAgICAgIC8vICAgYy4gRWxz
ZSwgeiBpcyBub3QgZmFpbHVyZQorICAgICAgICAgICAgLy8gMTQuIFJlcGVhdCwgd2hpbGUgcSAh
PSBzCisgICAgICAgICAgICAvLyAgIGEuIGxldCBlIGJlIFNwbGl0TWF0Y2goUywgcSwgUikuCisg
ICAgICAgICAgICAvLyAgIGIuIElmIGUgaXMgZmFpbHVyZSwgdGhlbiBsZXQgcSA9IHErMS4KKyAg
ICAgICAgICAgIC8vICAgYy4gRWxzZSwgZSBpcyBhbiBpbnRlZ2VyIGluZGV4IDw9IHMuCiAgICAg
ICAgICAgICB3aGlsZSAoKG1hdGNoUG9zaXRpb24gPSBzdHJpbmdJbXBsLT5maW5kKHNlcGFyYXRv
ckltcGwsIHBvc2l0aW9uKSkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgICAgICAvLyAxLiBM
ZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lz
dGluZyBvZiB0aGUgY2hhcmFjdGVycyBhdCBwb3NpdGlvbnMgcCAoaW5jbHVzaXZlKQogICAgICAg
ICAgICAgICAgIC8vICAgIHRocm91Z2ggcSAoZXhjbHVzaXZlKS4KLSAgICAgICAgICAgICAgICAv
LyAyLiBDYWxsIHRoZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEg
d2l0aCBhcmd1bWVudHMgVG9TdHJpbmcobGVuZ3RoQSksCi0gICAgICAgICAgICAgICAgLy8gICAg
UHJvcGVydHkgRGVzY3JpcHRvciB7W1tWYWx1ZV1dOiBULCBbW1dyaXRhYmxlXV06IHRydWUsIFtb
RW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlfSwgYW5kIGZhbHNlLgor
ICAgICAgICAgICAgICAgIC8vIDIuIENhbGwgQ3JlYXRlRGF0YVByb3BlcnR5KEEsIFRvU3RyaW5n
KGxlbmd0aEEpLCBUKS4KICAgICAgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4
ZWMsIHJlc3VsdExlbmd0aCwganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgcG9z
aXRpb24sIG1hdGNoUG9zaXRpb24gLSBwb3NpdGlvbikpOwogICAgICAgICAgICAgICAgIC8vIDMu
IEluY3JlbWVudCBsZW5ndGhBIGJ5IDEuCiAgICAgICAgICAgICAgICAgLy8gNC4gSWYgbGVuZ3Ro
QSA9PSBsaW0sIHJldHVybiBBLgpAQCAtMTQwNCwxOSArMTI2OCwxOCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIAogICAgICAgICAgICAgICAgIC8vIDUuIExldCBwID0g
ZS4KLSAgICAgICAgICAgICAgICAvLyA4LiBMZXQgcSA9IHAuCisgICAgICAgICAgICAgICAgLy8g
Ni4gTGV0IHEgPSBwLgogICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gbWF0Y2hQb3NpdGlvbiAr
IHNlcGFyYXRvci5sZW5ndGgoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KKyAg
ICB9IC8vIEZJWE1FOiBLZWVwaW5nIHRoaXMgaW5kZW50YXRpb24gaGVyZSB0byBtaW5pbWl6ZSB0
aGUgZGlmZi4gV2lsbCB1bmluZGVudCBhbmQgcmVtb3ZlIHRoaXMgbGF0ZXIuCiAKLSAgICAvLyAx
NC4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNv
bnNpc3Rpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYXQgcG9zaXRpb25zIHAgKGluY2x1c2l2ZSkKKyAg
ICAvLyAxNS4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBv
ZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYXQgcG9zaXRpb25zIHAgKGluY2x1c2l2
ZSkKICAgICAvLyAgICAgdGhyb3VnaCBzIChleGNsdXNpdmUpLgotICAgIC8vIDE1LiBDYWxsIHRo
ZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVu
dHMgVG9TdHJpbmcobGVuZ3RoQSksIFByb3BlcnR5IERlc2NyaXB0b3IKLSAgICAvLyAgICAge1tb
VmFsdWVdXTogVCwgW1tXcml0YWJsZV1dOiB0cnVlLCBbW0VudW1lcmFibGVdXTogdHJ1ZSwgW1tD
b25maWd1cmFibGVdXTogdHJ1ZX0sIGFuZCBmYWxzZS4KKyAgICAvLyAxNi4gQ2FsbCBDcmVhdGVE
YXRhUHJvcGVydHkoQSwgVG9TdHJpbmcobGVuZ3RoQSksIFQpLgogICAgIHJlc3VsdC0+cHV0RGly
ZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoKyssIGpzU3Vic3RyaW5nKGV4ZWMsIHRoaXNWYWx1
ZSwgaW5wdXQsIHBvc2l0aW9uLCBpbnB1dC5sZW5ndGgoKSAtIHBvc2l0aW9uKSk7CiAKLSAgICAv
LyAxNi4gUmV0dXJuIEEuCisgICAgLy8gMTcuIFJldHVybiBBLgogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0
ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMywg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDA3LTIwMDgsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwpAQCAtNjYsNiArNjYsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblN0CiBTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnQsIFN0cmluZ1ZpZXcgc291cmNlLCBjb25zdCBpbnQqIG92ZWN0
b3IsIFJlZ0V4cCogcmVnKTsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyKEV4ZWNTdGF0ZSopOwog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L2VzNi55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYu
eWFtbAkocmV2aXNpb24gMTk5MzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2Vz
Ni55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA3LDcgKzEwMDcsNyBAQAogLSBwYXRoOiBlczYv
UHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX1JlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNlYXJjaF0u
anMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9j
YWxsc19SZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0
X2NhbGxzX1JlZ0V4cF9jb25zdHJ1Y3Rvci5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfU3RyaW5nLnByb3RvdHlwZS5tYXRjaC5q
cwpAQCAtMTAxNyw3ICsxMDE3LDcgQEAKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9j
YWxsc19TdHJpbmcucHJvdG90eXBlLnNlYXJjaC5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfU3RyaW5nLnByb3RvdHlwZS5zcGxp
dC5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6
IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfU3RyaW5nLnJhdy5qcwogICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfVG9QcmltaXRp
dmUuanMKQEAgLTEwOTMsNyArMTA5Myw3IEBACiAtIHBhdGg6IGVzNi9SZWdFeHAucHJvdG90eXBl
X3Byb3BlcnRpZXNfUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc2VhcmNoXS5qcwogICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9SZWdFeHAucHJvdG90eXBlX3Byb3BlcnRpZXNfUmVn
RXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L1JlZ0V4cC5wcm90b3R5cGVfcHJvcGVydGll
c19SZWdFeHBbU3ltYm9sLnNwZWNpZXNdLmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0
aDogZXM2L1JlZ0V4cF9pc19zdWJjbGFzc2FibGVfY29ycmVjdF9wcm90b3R5cGVfY2hhaW4uanMK
QEAgLTEyMTUsOSArMTIxNSw5IEBACiAtIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3lt
Ym9sLnNwZWNpZXNfZXhpc3RlbmNlLmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDog
ZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wuc3BlY2llc19SZWdFeHAucHJvdG90eXBlW1N5
bWJvbC5zcGxpdF0uanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC5zcGxpdC5qcwotICBjbWQ6
IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi93ZWxsLWtu
b3duX3N5bWJvbHNfU3ltYm9sLnRvUHJpbWl0aXZlLmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wudG9TdHJpbmdUYWcuanMKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE5OTMzOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBACisyMDE2LTA0LTEyICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBFUzY6IEltcGxlbWVudCBTdHJpbmcucHJvdG90eXBlLnNw
bGl0IGFuZCBSZWdFeHAucHJvdG90eXBlW0BAc3BsaXRdLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1l
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvZG9tL3N0cmluZy1wcm90b3R5cGUtcHJvcGVy
dGllcy1leHBlY3RlZC50eHQ6CisKKyAgICAgICAgKiBqcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czIuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAtcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9i
YWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3JlZ2V4cC1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBq
cy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LWlnbm9yZUNhc2UuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAtcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBqcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMzLXN0aWNreS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVn
ZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czMtdW5pY29kZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3JlZ2V4cC1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi5qczogQWRkZWQuCisgICAgICAgICog
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtZmxhZ3MuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LWdsb2JhbC5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVn
ZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS5q
czogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kuanM6IEFkZGVkLgorICAgICAgICAqIGpz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLXVuaWNvZGUuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0
LmpzOiBBZGRlZC4KKworICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuanM6IEFkZGVkLgorICAgICAg
ICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1m
bGFncy5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5n
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNw
bGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMzLXN0aWNreS5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5p
Y29kZS5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5n
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQuanM6IEFkZGVkLgorICAg
ICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5n
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJp
bmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLWZsYWdzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFn
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMtZ2xvYmFsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3Ry
aW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLW11bHRpbGluZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpz
L3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMt
bXVsdGlsaW5lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmlj
b2RlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNz
L3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0Lmh0bWw6IEFk
ZGVkLgorCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5h
bWVzLmpzOgorICAgICAgICAqIHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMv
MTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xNF9TdHJpbmcucHJvdG90eXBlLnNwbGl0L1MxNS41
LjQuMTRfQTFfVDMtZXhwZWN0ZWQudHh0OgorCiAyMDE2LTA0LTExICBCcmVudCBGdWxnaGFtICA8
YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBXZWFrUHRycyB0byBhdm9pZCB1c2lu
ZyBkZWFsbG9jYXRlZCBXaWRnZXRzIGFuZCBTY3JvbGxhYmxlQXJlYXMKSW5kZXg6IExheW91dFRl
c3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE5OTMzOCkKKysrIExheW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9w
ZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBQ
QVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoRXJyb3IpIGlzCiBQQVNTIGdldFNvcnRlZE93
blByb3BlcnR5TmFtZXMoRXJyb3IucHJvdG90eXBlKSBpcyBbJ2NvbnN0cnVjdG9yJywgJ21lc3Nh
Z2UnLCAnbmFtZScsICd0b1N0cmluZyddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMo
TWF0aCkgaXMgWydFJywnTE4xMCcsJ0xOMicsJ0xPRzEwRScsJ0xPRzJFJywnUEknLCdTUVJUMV8y
JywnU1FSVDInLCdhYnMnLCdhY29zJywnYWNvc2gnLCdhc2luJywnYXNpbmgnLCdhdGFuJywnYXRh
bjInLCdhdGFuaCcsJ2NicnQnLCdjZWlsJywnY2x6MzInLCdjb3MnLCdjb3NoJywnZXhwJywnZXhw
bTEnLCdmbG9vcicsJ2Zyb3VuZCcsJ2h5cG90JywnaW11bCcsJ2xvZycsJ2xvZzEwJywnbG9nMXAn
LCdsb2cyJywnbWF4JywnbWluJywncG93JywncmFuZG9tJywncm91bmQnLCdzaWduJywnc2luJywn
c2luaCcsJ3NxcnQnLCd0YW4nLCd0YW5oJywndHJ1bmMnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT04pIGlzIFsncGFyc2UnLCAnc3RyaW5naWZ5J10KLVBBU1MgZ2V0U29ydGVk
T3duUHJvcGVydHlOYW1lcyhTeW1ib2wpIGlzIFsnZm9yJywgJ2hhc0luc3RhbmNlJywgJ2l0ZXJh
dG9yJywgJ2tleUZvcicsICdsZW5ndGgnLCAnbWF0Y2gnLCAnbmFtZScsICdwcm90b3R5cGUnLCAn
c2VhcmNoJywgJ3NwZWNpZXMnLCAndG9QcmltaXRpdmUnLCAndG9TdHJpbmdUYWcnLCAndW5zY29w
YWJsZXMnXQorUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFN5bWJvbCkgaXMgWydmb3In
LCAnaGFzSW5zdGFuY2UnLCAnaXRlcmF0b3InLCAna2V5Rm9yJywgJ2xlbmd0aCcsICdtYXRjaCcs
ICduYW1lJywgJ3Byb3RvdHlwZScsICdzZWFyY2gnLCAnc3BlY2llcycsICdzcGxpdCcsICd0b1By
aW1pdGl2ZScsICd0b1N0cmluZ1RhZycsICd1bnNjb3BhYmxlcyddCiBQQVNTIGdldFNvcnRlZE93
blByb3BlcnR5TmFtZXMoU3ltYm9sLnByb3RvdHlwZSkgaXMgWydjb25zdHJ1Y3RvcicsICd0b1N0
cmluZycsICd2YWx1ZU9mJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhNYXApIGlz
IFsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVy
dHlOYW1lcyhNYXAucHJvdG90eXBlKSBpcyBbJ2NsZWFyJywgJ2NvbnN0cnVjdG9yJywgJ2RlbGV0
ZScsICdlbnRyaWVzJywgJ2ZvckVhY2gnLCAnZ2V0JywgJ2hhcycsICdrZXlzJywgJ3NldCcsICdz
aXplJywgJ3ZhbHVlcyddCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9kb20vc3RyaW5nLXByb3RvdHlw
ZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9k
b20vc3RyaW5nLXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTk5
MzM4KQorKysgTGF5b3V0VGVzdHMvanMvZG9tL3N0cmluZy1wcm90b3R5cGUtcHJvcGVydGllcy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE0LDcgKzE0LDcgQEAgUEFTUyBTdHJpbmcu
cHJvdG90eXBlLm1hdGNoLmNhbGwodW5kZWZpbgogUEFTUyBTdHJpbmcucHJvdG90eXBlLnJlcGxh
Y2UuY2FsbCh1bmRlZmluZWQsIC8yKy8sICctJykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KIFBBU1MgU3RyaW5nLnByb3RvdHlwZS5zZWFyY2guY2FsbCh1bmRlZmluZWQs
ICc0JykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogU3RyaW5nLnByb3RvdHlwZS5zZWFyY2gg
cmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZC4KIFBBU1MgU3RyaW5nLnByb3Rv
dHlwZS5zbGljZS5jYWxsKHVuZGVmaW5lZCwgMSwgMykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KLVBBU1MgU3RyaW5nLnByb3RvdHlwZS5zcGxpdC5jYWxsKHVuZGVmaW5l
ZCwgJzInKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBTdHJp
bmcucHJvdG90eXBlLnNwbGl0LmNhbGwodW5kZWZpbmVkLCAnMicpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFN0cmluZy5wcm90b3R5cGUuc3BsaXQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90
IGJlIHVuZGVmaW5lZC4KIFBBU1MgU3RyaW5nLnByb3RvdHlwZS5zbGljZS5jYWxsKHVuZGVmaW5l
ZCwgMSwgMykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgU3Ry
aW5nLnByb3RvdHlwZS5zdWJzdHIuY2FsbCh1bmRlZmluZWQsIDEsIDMpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIFN0cmluZy5wcm90b3R5cGUuc3Vic3RyaW5n
LmNhbGwodW5kZWZpbmVkLCAxLCAzKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvcmVn
ZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jl
c3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcmVnZXhwLXBy
b3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1mbGFncworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAt
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czMtZmxhZ3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXBy
b3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUt
c3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2Jz
ZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9y
ZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUt
c3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEz
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
cmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9yZWdl
eHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNh
c2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVn
ZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4
cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9yZWdl
eHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4
OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMzLWlnbm9yZUNhc2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3Jl
Q2FzZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNw
bGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVs
dGlsaW5lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAt
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1z
cGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMtbXVsdGlsaW5lLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
cmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1zdGlja3ktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMtc3RpY2t5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3Rp
Y2t5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jl
c3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJv
d24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMtc3RpY2t5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Jl
Z2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMzLXN0aWNreS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
SW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzMy11bmljb2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czMtdW5pY29kZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MCBAQAorSlNSZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMzLXVuaWNvZGUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8g
ZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMy11bmljb2RlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXBy
b3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzNC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAor
SlNSZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJv
d24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHM0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEwIEBACitKU1JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRp
b24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czIKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8g
ZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0
cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdy
ZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMzLWZsYWdzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZs
YWdzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zdHJp
bmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncworCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1mbGFncy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3Mu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMy1mbGFncy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Jl
Z3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czMtZ2xvYmFsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LWdsb2JhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2Jh
bC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNz
L3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3du
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LWdsb2JhbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJp
bmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzMy1nbG9iYWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmlu
Zy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUt
c3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9y
ZUNhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNz
LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMzLW11bHRpbGluZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1t
dWx0aWxpbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0
aWxpbmUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVn
cmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0
aWxpbmUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9u
IHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1tdWx0aWxpbmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMt
bXVsdGlsaW5lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1z
cGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3ktZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1z
cGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0
cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1z
cGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5Lmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMzLXN0aWNreS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9y
ZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0cmlu
Zy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmct
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3N0cmluZy1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMtdW5pY29kZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3Ry
aW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMtdW5pY29kZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Jl
Z3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0
cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzNC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
NC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2Jz
ZXJ2YWJsZS1zaWRlLWVmZmVjdHM0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJ
bmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
dHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3RyaW5nLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cworCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNw
bGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
KwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czIuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzMi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACisvL0AgcnVu
RGVmYXVsdAorCitmdW5jdGlvbiBhc3NlcnQodGVzdGVkVmFsdWUsIG1zZykgeworICAgIGlmICgh
dGVzdGVkVmFsdWUpCisgICAgICAgIHRocm93IEVycm9yKG1zZyk7Cit9CisKKy8vIFJlZ0V4cCB3
aXRoIG92ZXJyaWRkZW4gW0BAc3BlY2llc106IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNC4gTGV0
IEMgYmUgPyBTcGVjaWVzQ29uc3RydWN0b3IocngsICVSZWdFeHAlKS4KKyhmdW5jdGlvbiAoKSB7
CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9yaWdEZXNjcmlwdG9yID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAsIFN5bWJvbC5zcGVjaWVzKTsKKyAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLCBTeW1ib2wuc3BlY2llcywgeworICAgICAgICB2
YWx1ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKFN5bWJvbC5zcGVj
aWVzLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIC9pdC87CisgICAgICAgIH0KKyAg
ICB9KTsKKyAgICBsZXQgb2JqID0gbmV3IFJlZ0V4cDsKKyAgICBsZXQgZXJyb3JTdHI7CisKKyAg
ICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBw
cm9wcyIpOworICAgIGxldCByZXN1bHQgPSBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0u
Y2FsbChvYmosICJzcGxpdG1lIik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJTeW1ib2woU3lt
Ym9sLnNwZWNpZXMpIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlv
biIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIp
OworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4
cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLmpzCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwyOCBAQAorLy9AIHJ1bkRlZmF1bHQKKworZnVuY3Rpb24gYXNzZXJ0KHRlc3Rl
ZFZhbHVlLCBtc2cpIHsKKyAgICBpZiAoIXRlc3RlZFZhbHVlKQorICAgICAgICB0aHJvdyBFcnJv
cihtc2cpOworfQorCisvLyBSZWdFeHAucHJvdG90eXBlIHdpdGggb3ZlcnJpZGRlbiBmbGFnczog
VGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChy
eCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZmxhZyA9ICJmbGFncyI7Cisg
ICAgbGV0IGZsYWdWYWx1ZSA9ICIiOworCisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0
IG9yaWdEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAu
cHJvdG90eXBlLCBmbGFnKTsKKworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWdFeHAucHJv
dG90eXBlLCBmbGFnLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBh
Y2Nlc3Nlcy5wdXNoKGZsYWcpOworICAgICAgICAgICAgcmV0dXJuIGZsYWdWYWx1ZTsKKyAgICAg
ICAgfQorICAgIH0pOworICAgIGxldCBvYmogPSAvaXQvOworCisgICAgYXNzZXJ0KGFjY2Vzc2Vz
ID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQg
cmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRt
ZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSBmbGFnLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8g
bm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwg
IlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czMtZ2xvYmFsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LWdsb2JhbC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWds
b2JhbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisvL0AgcnVuRGVmYXVsdAor
CitmdW5jdGlvbiBhc3NlcnQodGVzdGVkVmFsdWUsIG1zZykgeworICAgIGlmICghdGVzdGVkVmFs
dWUpCisgICAgICAgIHRocm93IEVycm9yKG1zZyk7Cit9CisKKy8vIFJlZ0V4cC5wcm90b3R5cGUg
d2l0aCBvdmVycmlkZGVuIGZsYWdzOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFn
cyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAg
IGxldCBmbGFnID0gImdsb2JhbCI7CisgICAgbGV0IGZsYWdWYWx1ZSA9IGZhbHNlOworCisgICAg
bGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9yaWdEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBlLCBmbGFnKTsKKworICAgIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShSZWdFeHAucHJvdG90eXBlLCBmbGFnLCB7CisgICAgICAgIGdldDog
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKGZsYWcpOworICAgICAgICAg
ICAgcmV0dXJuIGZsYWdWYWx1ZTsKKyAgICAgICAgfQorICAgIH0pOworICAgIGxldCBvYmogPSAv
aXQvOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92
ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1i
b2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSBm
bGFnLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAg
YXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOwpJ
bmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLmpzCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDI4IEBACisvL0AgcnVuRGVmYXVsdAorCitmdW5jdGlvbiBhc3NlcnQo
dGVzdGVkVmFsdWUsIG1zZykgeworICAgIGlmICghdGVzdGVkVmFsdWUpCisgICAgICAgIHRocm93
IEVycm9yKG1zZyk7Cit9CisKKy8vIFJlZ0V4cC5wcm90b3R5cGUgd2l0aCBvdmVycmlkZGVuIGZs
YWdzOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8g
R2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBmbGFnID0gImlnbm9y
ZUNhc2UiOworICAgIGxldCBmbGFnVmFsdWUgPSBmYWxzZTsKKworICAgIGxldCBhY2Nlc3NlcyA9
IFtdOworICAgIGxldCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgZmxhZyk7CisKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoUmVnRXhwLnByb3RvdHlwZSwgZmxhZywgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgIHJldHVybiBmbGFn
VmFsdWU7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0gL2l0LzsKKworICAgIGFz
c2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3Bz
Iik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxs
KG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxhZywgIlByb3BlcnR5
IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQg
PT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5kZXg6IExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
OCBAQAorLy9AIHJ1bkRlZmF1bHQKKworZnVuY3Rpb24gYXNzZXJ0KHRlc3RlZFZhbHVlLCBtc2cp
IHsKKyAgICBpZiAoIXRlc3RlZFZhbHVlKQorICAgICAgICB0aHJvdyBFcnJvcihtc2cpOworfQor
CisvLyBSZWdFeHAucHJvdG90eXBlIHdpdGggb3ZlcnJpZGRlbiBmbGFnczogVGVzdGluZyBFUzYg
MjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikp
LgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZmxhZyA9ICJtdWx0aWxpbmUiOworICAgIGxldCBm
bGFnVmFsdWUgPSBmYWxzZTsKKworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGxldCBvcmln
RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3Rv
dHlwZSwgZmxhZyk7CisKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLnByb3RvdHlw
ZSwgZmxhZywgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWNjZXNz
ZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgIHJldHVybiBmbGFnVmFsdWU7CisgICAgICAgIH0K
KyAgICB9KTsKKyAgICBsZXQgb2JqID0gL2l0LzsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAi
IiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3Vs
dCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsK
KyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxhZywgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBt
YXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4
cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LXN0aWNreS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlj
a3kuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3ku
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorLy9AIHJ1bkRlZmF1bHQKKworZnVu
Y3Rpb24gYXNzZXJ0KHRlc3RlZFZhbHVlLCBtc2cpIHsKKyAgICBpZiAoIXRlc3RlZFZhbHVlKQor
ICAgICAgICB0aHJvdyBFcnJvcihtc2cpOworfQorCisvLyBSZWdFeHAucHJvdG90eXBlIHdpdGgg
b3ZlcnJpZGRlbiBmbGFnczogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUg
PyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQg
ZmxhZyA9ICJzdGlja3kiOworICAgIGxldCBmbGFnVmFsdWUgPSBmYWxzZTsKKworICAgIGxldCBh
Y2Nlc3NlcyA9IFtdOworICAgIGxldCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgZmxhZyk7CisKKyAgICBPYmplY3QuZGVm
aW5lUHJvcGVydHkoUmVnRXhwLnByb3RvdHlwZSwgZmxhZywgeworICAgICAgICBnZXQ6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgIHJl
dHVybiBmbGFnVmFsdWU7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0gL2l0LzsK
KworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlk
ZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNw
bGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxhZywg
IlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2Vy
dChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5kZXg6
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2Jz
ZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyOCBAQAorLy9AIHJ1bkRlZmF1bHQKKworZnVuY3Rpb24gYXNzZXJ0KHRlc3RlZFZhbHVlLCBt
c2cpIHsKKyAgICBpZiAoIXRlc3RlZFZhbHVlKQorICAgICAgICB0aHJvdyBFcnJvcihtc2cpOwor
fQorCisvLyBSZWdFeHAucHJvdG90eXBlIHdpdGggb3ZlcnJpZGRlbiBmbGFnczogVGVzdGluZyBF
UzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdz
IikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZmxhZyA9ICJ1bmljb2RlIjsKKyAgICBsZXQg
ZmxhZ1ZhbHVlID0gZmFsc2U7CisKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb3Jp
Z0Rlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90
b3R5cGUsIGZsYWcpOworCisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5
cGUsIGZsYWcsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vz
c2VzLnB1c2goZmxhZyk7CisgICAgICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAgICB9
CisgICAgfSk7CisgICAgbGV0IG9iaiA9IC9pdC87CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0g
IiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1
bHQgPSBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7
CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09IGZsYWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3Qg
bWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5l
eHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
NC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9y
ZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC5qcwkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0LmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzIgQEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0ZWRW
YWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgRXJyb3Io
bXNnKTsKK30KKworLy8gUmVnRXhwLnByb3RvdHlwZSB3aXRoIG92ZXJyaWRkZW4gZXhlYzogVGVz
dGluZyBFUzYgMjEuMi41LjExOiAxOS5iLiBMZXQgeiBiZSA/IFJlZ0V4cEV4ZWMoc3BsaXR0ZXIs
IFMpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb3Jp
Z0Rlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90
b3R5cGUsICJleGVjIik7CisgICAgbGV0IG9yaWdFeGVjID0gb3JpZ0Rlc2NyaXB0b3IudmFsdWU7
CisKKyAgICBsZXQgb2JqID0gL2l0LzsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVnRXhw
LnByb3RvdHlwZSwgImV4ZWMiLCB7CisgICAgICAgIHZhbHVlOiBmdW5jdGlvbihzdHIpIHsKKyAg
ICAgICAgICAgIGFjY2Vzc2VzLnB1c2goImV4ZWMiKTsKKyAgICAgICAgICAgIHJldHVybiBvcmln
RXhlYy5jYWxsKHRoaXMsIHN0cik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIC8vIFRoZSBA
QHNwbGl0IHNsb3cgcGF0aCBzaG91bGQgY2FsbCBhbiBpbnRlcm5hbCB2ZXJzaW9uIG9mIHN1YnN0
ci4gTWFrZSBzdXJlIHRoYXQKKyAgICAvLyBpdCdzIG5vdCBjYWxsaW5nIHRoZSBwdWJsaWMgdmVy
c2lvbiB3aGljaCBjYW4gYmUgb3ZlcnJpZGRlbi4KKyAgICBTdHJpbmcucHJvdG90eXBlLnN1YnN0
ciA9IGZ1bmN0aW9uKHN0YXJ0LCBsZW5ndGgpIHsKKyAgICAgICAgdGhyb3cgRXJyb3IoIlNob3Vs
ZCBub3QgY2FsbCBvdmVycmlkZGVuIHN1YnN0ciIpOworICAgIH0KKworICAgIGFzc2VydChhY2Nl
c3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAg
bGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNw
bGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImV4ZWMsZXhlYyxleGVjLGV4ZWMsZXhl
YyxleGVjIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOwor
ICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSko
KTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MDcgQEAKKy8vQCBydW5E
ZWZhdWx0CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0
ZXN0ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8gU3ViY2xhc3Mg
d2l0aCBvdmVycmlkZGVuIFtAQHNwZWNpZXNdOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDQuIExl
dCBDIGJlID8gU3BlY2llc0NvbnN0cnVjdG9yKHJ4LCAlUmVnRXhwJSkuCisoZnVuY3Rpb24gKCkg
eworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGNsYXNzIFRlc3RSZWdFeHAgZXh0ZW5kcyBS
ZWdFeHAgeyB9CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFRlc3RSZWdFeHAsIFN5bWJvbC5z
cGVjaWVzLCB7CisgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vz
c2VzLnB1c2goU3ltYm9sLnNwZWNpZXMudG9TdHJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm4g
L2l0LzsKKyAgICAgICAgfQorICAgIH0pOworICAgIGxldCBvYmogPSBuZXcgVGVzdFJlZ0V4cDsK
KyAgICBsZXQgZXJyb3JTdHI7CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVj
dGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBSZWdFeHAu
cHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAgYXNzZXJ0
KGFjY2Vzc2VzID09ICJTeW1ib2woU3ltYm9sLnNwZWNpZXMpIiwgIlByb3BlcnR5IGFjY2Vzc2Vz
IGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxt
ZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKKworLy8gUmVnRXhwIHN1YmNsYXNzIHdp
dGggY29uc3RydWN0b3I6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNC4gTGV0IEMgYmUgPyBTcGVj
aWVzQ29uc3RydWN0b3IocngsICVSZWdFeHAlKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFj
Y2Vzc2VzID0gW107CisgICAgY2xhc3MgVGVzdFJlZ0V4cCBleHRlbmRzIFJlZ0V4cCB7CisgICAg
ICAgIGNvbnN0cnVjdG9yKHN0cikgeworICAgICAgICAgICAgc3VwZXIoc3RyKTsKKyAgICAgICAg
ICAgIGFjY2Vzc2VzLnB1c2goImNvbnN0cnVjdG9yIik7CisgICAgICAgIH0KKyAgICB9CisgICAg
bGV0IG9iaiA9IG5ldyBUZXN0UmVnRXhwKCJpdCIpOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09
ICJjb25zdHJ1Y3RvciIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOwor
ICAgIGxldCByZXN1bHQgPSBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmos
ICJzcGxpdG1lIik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJjb25zdHJ1Y3Rvcixjb25zdHJ1
Y3RvciIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAg
ICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7
CisKKy8vIEFuIG9iamVjdCB3aXRoIHNwZWNpZXMgY29uc3RydWN0b3I6IFRlc3RpbmcgRVM2IDIx
LjIuNS4xMTogNC4gTGV0IEMgYmUgPyBTcGVjaWVzQ29uc3RydWN0b3IocngsICVSZWdFeHAlKS4K
KyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9iaiA9IHsg
Y29uc3RydWN0b3I6IHt9IH07CisgICAgb2JqLmNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJjb25zdHJ1Y3RvciIpOworICAg
ICAgICByZXR1cm4gL2l0LzsKKyAgICB9OworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAi
dW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0g
UmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAg
IGFzc2VydChhY2Nlc3NlcyA9PSAiY29uc3RydWN0b3IiLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8g
bm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwg
IlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyBSZWdFeHAgb2JqZWN0IHdpdGggb3Zl
cnJpZGRlbiBmbGFnczogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBU
b1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZmxh
Z3MgPSBbICJmbGFncyIsICJnbG9iYWwiLCAiaWdub3JlQ2FzZSIsICJtdWx0aWxpbmUiLCAic3Rp
Y2t5IiwgInVuaWNvZGUiIF07CisgICAgbGV0IGZsYWdWYWx1ZXMgPSBbICIiLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UgXTsKKyAgICBmb3IgKGxldCBpbmRleCBpbiBmbGFncykg
eworICAgICAgICAoZnVuY3Rpb24oZmxhZywgZmxhZ1ZhbHVlKSB7CisgICAgICAgICAgICBsZXQg
YWNjZXNzZXMgPSBbXTsKKyAgICAgICAgICAgIGxldCBvYmogPSAvaXQvOworICAgICAgICAgICAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgZmxhZywgeworICAgICAgICAgICAgICAgIGdldDog
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goZmxhZyk7Cisg
ICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmbGFnVmFsdWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVy
cmlkZGVuIHByb3BzIik7CisgICAgICAgICAgICBsZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlw
ZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgICAgICAgICAgYXNzZXJ0
KGFjY2Vzc2VzID09IGZsYWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0
YXRpb24iKTsKKyAgICAgICAgICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVj
dGVkIHJlc3VsdCIpOworICAgICAgICB9KSAoZmxhZ3NbaW5kZXhdLCBmbGFnVmFsdWVzW2luZGV4
XSk7CisgICAgfQorfSkoKTsKKworLy8gUmVnRXhwIHN1YmNsYXNzIHdpdGggb3ZlcnJpZGRlbiBm
bGFncyBpbiBzdWJjbGFzcyBtZXRob2Q6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZs
YWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7Cisg
ICAgbGV0IGZsYWdzID0gWyAiZmxhZ3MiLCAiZ2xvYmFsIiwgImlnbm9yZUNhc2UiLCAibXVsdGls
aW5lIiwgInN0aWNreSIsICJ1bmljb2RlIiBdOworICAgIGxldCBmbGFnVmFsdWVzID0gWyAiIiwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlIF07CisgICAgZm9yIChsZXQgaW5kZXgg
aW4gZmxhZ3MpIHsKKyAgICAgICAgKGZ1bmN0aW9uKGZsYWcsIGZsYWdWYWx1ZSkgeworICAgICAg
ICAgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgICAgICAgICBjbGFzcyBUZXN0UmVnRXhwIGV4
dGVuZHMgUmVnRXhwIHsKKyAgICAgICAgICAgICAgICBnZXQgW2ZsYWddKCkgeworICAgICAgICAg
ICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKGZsYWcpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmxhZ1ZhbHVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAg
ICAgICBsZXQgb2JqID0gbmV3IFRlc3RSZWdFeHAoL2l0Lyk7CisKKyAgICAgICAgICAgIGFzc2Vy
dChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7
CisgICAgICAgICAgICBsZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRd
LmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgICAgICAgICAgYXNzZXJ0KGFjY2Vzc2VzID09IGZs
YWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICAg
ICAgICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOwor
CisgICAgICAgIH0pIChmbGFnc1tpbmRleF0sIGZsYWdWYWx1ZXNbaW5kZXhdKTsKKyAgICB9Cit9
KSgpOworCisvLyBSZWdFeHAgc3ViY2xhc3Mgd2l0aCBvdmVycmlkZGVuIGZsYWdzIHVzaW5nIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eTogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3Mg
YmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBs
ZXQgZmxhZ3MgPSBbICJmbGFncyIsICJnbG9iYWwiLCAiaWdub3JlQ2FzZSIsICJtdWx0aWxpbmUi
LCAic3RpY2t5IiwgInVuaWNvZGUiIF07CisgICAgbGV0IGZsYWdWYWx1ZXMgPSBbICIiLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UgXTsKKyAgICBmb3IgKGxldCBpbmRleCBpbiBm
bGFncykgeworICAgICAgICAoZnVuY3Rpb24oZmxhZywgZmxhZ1ZhbHVlKSB7CisgICAgICAgICAg
ICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICAgICAgICAgIGNsYXNzIFRlc3RSZWdFeHAgZXh0ZW5k
cyBSZWdFeHAgeyB9OworICAgICAgICAgICAgbGV0IG9iaiA9IG5ldyBUZXN0UmVnRXhwKC9pdC8p
OworCisgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBmbGFnLCB7CisgICAg
ICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYWNjZXNz
ZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZsYWdWYWx1ZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYXNzZXJ0KGFj
Y2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAg
ICAgICAgICAgIGxldCByZXN1bHQgPSBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2Fs
bChvYmosICJzcGxpdG1lIik7CisgICAgICAgICAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxhZywg
IlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgICAgICAg
ICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7CisKKyAg
ICAgICAgfSkgKGZsYWdzW2luZGV4XSwgZmxhZ1ZhbHVlc1tpbmRleF0pOworICAgIH0KK30pKCk7
CisKKy8vIEFueSBvYmplY3Qgd2l0aCBzcGVjaWVzIGNvbnN0cnVjdG9yOiBUZXN0aW5nIEVTNiAy
MS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSku
CisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGxldCBvYmogPSB7
IGNvbnN0cnVjdG9yOiB7fSB9OworICAgIG9iai5jb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc10g
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgYWNjZXNzZXMucHVzaCgiY29uc3RydWN0b3IiKTsKKyAg
ICAgICAgcmV0dXJuIC9pdC87CisgICAgfTsKKworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShv
YmosICJmbGFncyIsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFj
Y2Vzc2VzLnB1c2goImZsYWdzIik7CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0
byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVb
U3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMg
PT0gImZsYWdzLGNvbnN0cnVjdG9yIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBl
eHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVk
IHJlc3VsdCIpOworfSkoKTsKKworLy8gQW55IG9iamVjdCB3aXRoIGN1c3RvbSBwcm90b3R5cGU6
IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQo
cngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107Cisg
ICAgbGV0IFRlc3RSZWdFeHBQcm90byA9IHsKKyAgICAgICAgZ2V0IGZsYWdzKCkgeworICAgICAg
ICAgICAgYWNjZXNzZXMucHVzaCgiZmxhZ3MiKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAg
ICAgICAgfSwKKyAgICAgICAgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNo
KCJ0b1N0cmluZyIpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlZ2V4LnRvU3RyaW5nKCk7
CisgICAgICAgIH0sCisgICAgICAgIGdldCBzb3VyY2UoKSB7CisgICAgICAgICAgICBhY2Nlc3Nl
cy5wdXNoKCJzb3VyY2UiKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZWdleC5zb3VyY2U7
CisgICAgICAgIH0KKyAgICB9CisgICAgVGVzdFJlZ0V4cFByb3RvLl9fcHJvdG9fXyA9IFJlZ0V4
cC5wcm90b3R5cGU7CisKKyAgICBsZXQgVGVzdFJlZ0V4cCA9IGZ1bmN0aW9uKHJlZ2V4KSB7Cisg
ICAgICAgIGFjY2Vzc2VzLnB1c2goImNvbnN0cnVjdG9yIik7CisgICAgICAgIHRoaXMuX3JlZ2V4
ID0gbmV3IFJlZ0V4cChyZWdleCk7CisgICAgfQorICAgIFRlc3RSZWdFeHAucHJvdG90eXBlID0g
VGVzdFJlZ0V4cFByb3RvOworICAgIFRlc3RSZWdFeHBQcm90by5jb25zdHJ1Y3RvciA9IFRlc3RS
ZWdFeHA7CisKKyAgICBsZXQgb2JqID0gbmV3IFRlc3RSZWdFeHAoL2l0Lyk7CisKKyAgICBhc3Nl
cnQoYWNjZXNzZXMgPT0gImNvbnN0cnVjdG9yIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlk
ZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNw
bGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImNvbnN0
cnVjdG9yLGZsYWdzLHNvdXJjZSIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhw
ZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCBy
ZXN1bHQiKTsKK30pKCk7CisKKy8vIDIgbGV2ZWxzIG9mIHN1YmNsYXNzZXM6IFRlc3RpbmcgRVM2
IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIp
KS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisKKyAgICBjbGFzcyBS
ZWdFeHBCIGV4dGVuZHMgUmVnRXhwIHsKKyAgICAgICAgZ2V0IGZsYWdzKCkgeworICAgICAgICAg
ICAgYWNjZXNzZXMucHVzaCgiZmxhZ3MiKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBjbGFzcyBSZWdFeHBDIGV4dGVuZHMgUmVnRXhwQiB7IH0KKworICAg
IGFzc2VydChSZWdFeHBCLl9fcHJvdG9fXyA9PSBSZWdFeHApOworICAgIGFzc2VydChSZWdFeHBD
Ll9fcHJvdG9fXyA9PSBSZWdFeHBCKTsKKworICAgIGxldCBvYmogPSBuZXcgUmVnRXhwQygvaXQv
KTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVy
cmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9s
LnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImZs
YWdzIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAg
IGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsK
KworLy8gMiBsZXZlbHMgb2Ygc3ViY2xhc3NlcyB3aXRoIHN1YnN0aXR1dGVkIHByb3RvdHlwZSBi
ZWZvcmUgaW5zdGFudGlhdGlvbjogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3Mg
YmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBs
ZXQgYWNjZXNzZXMgPSBbXTsKKworICAgIGNsYXNzIEIgZXh0ZW5kcyBSZWdFeHAgeyB9CisgICAg
Y2xhc3MgQyBleHRlbmRzIEIgeyB9CisKKyAgICBhc3NlcnQoQi5fX3Byb3RvX18gPT09IFJlZ0V4
cCk7CisgICAgYXNzZXJ0KEMuX19wcm90b19fID09PSBCKTsKKyAgICBhc3NlcnQoQi5wcm90b3R5
cGUuX19wcm90b19fID09PSBSZWdFeHAucHJvdG90eXBlKTsKKyAgICBhc3NlcnQoQy5wcm90b3R5
cGUuX19wcm90b19fID09PSBCLnByb3RvdHlwZSk7CisKKyAgICBsZXQgWCA9IGZ1bmN0aW9uICgp
IHt9CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFgucHJvdG90eXBlLCAiZmxhZ3MiLCB7Cisg
ICAgICAgIGdldDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJmbGFn
cyIpOworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisgICAgfSk7CisgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KFgucHJvdG90eXBlLCAiZXhlYyIsIHsKKyAgICAgICAgdmFsdWU6
IGZ1bmN0aW9uKHN0cikgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgiZXhlYyIpOworICAg
ICAgICAgICAgdmFyIG1hdGNoUmVzdWx0ID0gL2l0L3kuZXhlYyhzdHIuc3Vic3RyKHRoaXMubGFz
dEluZGV4KSk7CisgICAgICAgICAgICBpZiAobWF0Y2hSZXN1bHQpCisgICAgICAgICAgICAgICAg
dGhpcy5sYXN0SW5kZXggKz0gMjsgLy8gbGVuZ3RoIG9mICJpdCIuCisgICAgICAgICAgICByZXR1
cm4gbWF0Y2hSZXN1bHQ7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIC8vIE1vbmtleSB3aXRo
IHRoZSBwcm90b3R5cGUgY2hhaW4gYmVmb3JlIGluc3RhbnRpYXRpbmcgQy4KKyAgICBYLl9fcHJv
dG9fXyA9IFJlZ0V4cDsKKyAgICBYLnByb3RvdHlwZS5fX3Byb3RvX18gPSBSZWdFeHAucHJvdG90
eXBlOworICAgIEMuX19wcm90b19fID0gWDsKKyAgICBDLnByb3RvdHlwZS5fX3Byb3RvX18gPSBY
LnByb3RvdHlwZTsKKworICAgIGFzc2VydChYLl9fcHJvdG9fXyA9PT0gUmVnRXhwKTsKKyAgICBh
c3NlcnQoQy5fX3Byb3RvX18gPT09IFgpOworICAgIGFzc2VydChYLnByb3RvdHlwZS5fX3Byb3Rv
X18gPT09IFJlZ0V4cC5wcm90b3R5cGUpOworICAgIGFzc2VydChDLnByb3RvdHlwZS5fX3Byb3Rv
X18gPT09IFgucHJvdG90eXBlKTsKKworICAgIGxldCBvYmogPSBuZXcgQzsKKworICAgIGFzc2Vy
dChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7
CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9i
aiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImZsYWdzLGV4ZWMsZXhlYyxl
eGVjLGV4ZWMsZXhlYyxleGVjIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBl
Y3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJl
c3VsdCIpOworfSkoKTsKKworLy8gMiBsZXZlbHMgb2Ygc3ViY2xhc3NlcyB3aXRoIHN1YnN0aXR1
dGVkIHByb3RvdHlwZSBhZnRlciBpbnN0YW50aWF0aW9uOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6
IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rp
b24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworCisgICAgY2xhc3MgQiBleHRlbmRzIFJl
Z0V4cCB7IH0KKyAgICBjbGFzcyBDIGV4dGVuZHMgQiB7IH0KKworICAgIGFzc2VydChCLl9fcHJv
dG9fXyA9PT0gUmVnRXhwKTsKKyAgICBhc3NlcnQoQy5fX3Byb3RvX18gPT09IEIpOworICAgIGFz
c2VydChCLnByb3RvdHlwZS5fX3Byb3RvX18gPT09IFJlZ0V4cC5wcm90b3R5cGUpOworICAgIGFz
c2VydChDLnByb3RvdHlwZS5fX3Byb3RvX18gPT09IEIucHJvdG90eXBlKTsKKworICAgIGxldCBY
ID0gZnVuY3Rpb24gKCkge30KKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoWC5wcm90b3R5cGUs
ICJmbGFncyIsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vz
c2VzLnB1c2goImZsYWdzIik7CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAg
ICB9KTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoWC5wcm90b3R5cGUsICJleGVjIiwgewor
ICAgICAgICB2YWx1ZTogZnVuY3Rpb24oc3RyKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNo
KCJleGVjIik7CisgICAgICAgICAgICB2YXIgbWF0Y2hSZXN1bHQgPSAvaXQveS5leGVjKHN0ci5z
dWJzdHIodGhpcy5sYXN0SW5kZXgpKTsKKyAgICAgICAgICAgIGlmIChtYXRjaFJlc3VsdCkKKyAg
ICAgICAgICAgICAgICB0aGlzLmxhc3RJbmRleCArPSAyOyAvLyBsZW5ndGggb2YgIml0Ii4KKyAg
ICAgICAgICAgIHJldHVybiBtYXRjaFJlc3VsdDsKKyAgICAgICAgfQorICAgIH0pOworCisgICAg
Ly8gSW5zdGFudGlhdGUgQyBiZWZvcmUgbW9ua2V5aW5nIHdpdGggdGhlIHByb3RvdHlwZSBjaGFp
bi4KKyAgICBsZXQgb2JqID0gbmV3IEMoKTsKKworICAgIFguX19wcm90b19fID0gUmVnRXhwOwor
ICAgIFgucHJvdG90eXBlLl9fcHJvdG9fXyA9IFJlZ0V4cC5wcm90b3R5cGU7CisgICAgQy5fX3By
b3RvX18gPSBYOworICAgIEMucHJvdG90eXBlLl9fcHJvdG9fXyA9IFgucHJvdG90eXBlOworCisg
ICAgYXNzZXJ0KFguX19wcm90b19fID09PSBSZWdFeHApOworICAgIGFzc2VydChDLl9fcHJvdG9f
XyA9PT0gWCk7CisgICAgYXNzZXJ0KFgucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gUmVnRXhwLnBy
b3RvdHlwZSk7CisgICAgYXNzZXJ0KEMucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gWC5wcm90b3R5
cGUpOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92
ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1i
b2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAi
ZmxhZ3MsZXhlYyxleGVjLGV4ZWMsZXhlYyxleGVjLGV4ZWMiLCAiUHJvcGVydHkgYWNjZXNzZXMg
ZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1l
IiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyAyIGxldmVscyBvZiBzdWJjbGFz
c2VzIHdpdGggcHJveGllZCBwcm90b3R5cGU6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0
IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7
CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisKKyAgICBjbGFzcyBCIGV4dGVuZHMgUmVnRXhwIHsg
fTsKKworICAgIGFzc2VydChCLl9fcHJvdG9fXyA9PT0gUmVnRXhwKTsKKyAgICBhc3NlcnQoQi5w
cm90b3R5cGUuX19wcm90b19fID09PSBSZWdFeHAucHJvdG90eXBlKTsKKworICAgIGxldCBwcm94
eSA9IG5ldyBQcm94eShSZWdFeHAucHJvdG90eXBlLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24o
b2JqLCBwcm9wKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKHByb3AudG9TdHJpbmcoKSk7
CisgICAgICAgICAgICBpZiAocHJvcCA9PT0gImV4ZWMiKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uKHN0cikgeworICAgICAgICAgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJp
bl9leGVjIik7CisgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaFJlc3VsdCA9IC9pdC95LmV4
ZWMoc3RyLnN1YnN0cih0aGlzLmxhc3RJbmRleCkpOworICAgICAgICAgICAgICAgICAgICBpZiAo
bWF0Y2hSZXN1bHQpCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RJbmRleCArPSAy
OyAvLyBsZW5ndGggb2YgIml0Ii4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoUmVz
dWx0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biBvYmpbcHJvcF07CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBCLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBwcm94eTsKKworICAgIGxldCBvYmogPSBuZXcgQigpOworCisgICAgYXNzZXJ0KGFjY2Vz
c2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBs
ZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3Bs
aXRtZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiZmxhZ3MsU3ltYm9sKFN5bWJvbC5tYXRj
aCksZXhlYyxpbl9leGVjLGV4ZWMsaW5fZXhlYyxleGVjLGluX2V4ZWMsZXhlYyxpbl9leGVjLGV4
ZWMsaW5fZXhlYyxleGVjLGluX2V4ZWMiLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNo
IGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0
ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyBSZWdFeHAgc3ViY2xhc3Mgd2l0aCBvdmVycmlkZGVu
IGV4ZWM6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogMTkuYi4gTGV0IHogYmUgPyBSZWdFeHBFeGVj
KHNwbGl0dGVyLCBTKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107Cisg
ICAgY2xhc3MgVGVzdFJlZ0V4cCBleHRlbmRzIFJlZ0V4cCB7CisgICAgICAgIGV4ZWMoc3RyKSB7
CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJleGVjIik7CisgICAgICAgICAgICByZXR1cm4g
UmVnRXhwLnByb3RvdHlwZS5leGVjLmNhbGwodGhpcywgc3RyKTsKKyAgICAgICAgfQorICAgIH07
CisgICAgbGV0IG9iaiA9IG5ldyBUZXN0UmVnRXhwKC9pdC8pOworCisgICAgYXNzZXJ0KGFjY2Vz
c2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBs
ZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3Bs
aXRtZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiZXhlYyxleGVjLGV4ZWMsZXhlYyxleGVj
LGV4ZWMiLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7Cisg
ICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgp
OworCisvLyBQcm94aWVkIFJlZ0V4cCBvYnNlcnZpbmcgZXZlcnkgZ2V0LgorKGZ1bmN0aW9uICgp
IHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgcmVnZXhwID0gbmV3IFJlZ0V4cCgv
aXQvKTsKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkocmVnZXhwLCB7CisgICAgICAgIGdldChv
YmosIHByb3ApIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2gocHJvcC50b1N0cmluZygpKTsK
KyAgICAgICAgICAgIHJldHVybiBvYmpbcHJvcF07CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHBy
b3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5j
YWxsKHByb3h5LCAic3BsaXRtZSIpOworICAgIC8vIE5vdGU6IEBAc3BsaXQgY3JlYXRlcyBhIG5l
dyBpbnN0YW5jZSBvZiB0aGUgUmVnRXhwIHVzaW5nIGl0cyBAQHNwZWNpZXMsIGFuZCBwZXJmb3Jt
cworICAgIC8vIHRoZSBzcGxpdCBvcGVyYXRpb24gd2l0aCB0aGF0IG5ldyBpbnN0YW5jZS4gSGVu
Y2UsIHRoZSBwcm94eSBpcyBvbmx5IGFibGUgdG8gb2JzZXJ2ZQorICAgIC8vIGdldHMgdXAgdG8g
dGhlIGNyZWF0aW9uIG9mIHRoZSBuZXcgaW5zdGFuY2UuCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09
ICJjb25zdHJ1Y3RvcixmbGFncyxTeW1ib2woU3ltYm9sLm1hdGNoKSxzb3VyY2UiLAorICAgICAg
ICAiUHJveHkgbm90IGFibGUgdG8gb2JzZXJ2ZSBzb21lIGdldHMiKTsKKyAgICBhc3NlcnQocmVz
dWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIFByb3hp
ZWQgUmVnRXhwICh3aXRob3V0IEBAbWF0Y2gpIG9ic2VydmluZyBldmVyeSBnZXQuCisvLyBUaGlz
IGlzIHRvIGZvcmNlIHRoZSBSZWdFeHAgQHNwZWNpZXMgY29uc3RydWN0b3IgdG8gYWNjZXNzIHNv
dXJjZS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IHJl
Z2V4cCA9IG5ldyBSZWdFeHAoL2l0Lyk7CisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHJlZ2V4
cCwgeworICAgICAgICBnZXQob2JqLCBwcm9wKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNo
KHByb3AudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBpZiAocHJvcCA9PSBTeW1ib2wubWF0Y2gp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHJldHVybiBv
YmpbcHJvcF07CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAi
IiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3Vs
dCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKHByb3h5LCAic3BsaXRtZSIp
OworICAgIC8vIE5vdGU6IEBAc3BsaXQgY3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgUmVn
RXhwIHVzaW5nIGl0cyBAQHNwZWNpZXMsIGFuZCBwZXJmb3JtcworICAgIC8vIHRoZSBzcGxpdCBv
cGVyYXRpb24gd2l0aCB0aGF0IG5ldyBpbnN0YW5jZS4gSGVuY2UsIHRoZSBwcm94eSBpcyBvbmx5
IGFibGUgdG8gb2JzZXJ2ZQorICAgIC8vIGdldHMgdXAgdG8gdGhlIGNyZWF0aW9uIG9mIHRoZSBu
ZXcgaW5zdGFuY2UuCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJjb25zdHJ1Y3RvcixmbGFncyxT
eW1ib2woU3ltYm9sLm1hdGNoKSxTeW1ib2woU3ltYm9sLnRvUHJpbWl0aXZlKSx0b1N0cmluZyxz
b3VyY2UsZmxhZ3MiLAorICAgICAgICAiUHJveHkgbm90IGFibGUgdG8gb2JzZXJ2ZSBzb21lIGdl
dHMiKTsKKyAgICAvLyBUaGUgbmV3IGluc3RhbmNlIG9mIHRoZSBSZWdFeHAgd291bGQgaGF2ZSBi
ZWVuIGNvbnN0cnVjdGVkIHdpdGggdGhlIHBhdHRlcm4gZnJvbQorICAgIC8vIHRoZSBwcm94eSB0
b1N0cmluZygpIGkuZS4gIlwvbHRcLyIgaW5zdGVhZCBvZiBzb3VyY2UsIGJlY2F1c2UgdGhlIHBy
b3h5IGlzIGFuCisgICAgLy8gb2JqZWN0IHdpdGhvdXQgYSBbQEBtYXRjaF0gcHJvcGVydHkuCisg
ICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsaXRtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSko
KTsKKworbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKC9p
dC8sICJzcGxpdG1lIik7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi5qcwkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjYgQEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNn
KSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30K
KworLy8gUmVnRXhwIHdpdGggb3ZlcnJpZGRlbiBbQEBzcGVjaWVzXTogVGVzdGluZyBFUzYgMjEu
Mi41LjExOiA0LiBMZXQgQyBiZSA/IFNwZWNpZXNDb25zdHJ1Y3RvcihyeCwgJVJlZ0V4cCUpLgor
KGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb3JpZ0Rlc2Ny
aXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cCwgU3ltYm9sLnNw
ZWNpZXMpOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWdFeHAsIFN5bWJvbC5zcGVjaWVz
LCB7CisgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1
c2goU3ltYm9sLnNwZWNpZXMudG9TdHJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm4gL2l0LzsK
KyAgICAgICAgfQorICAgIH0pOworCisgICAgbGV0IG9iaiA9IG5ldyBSZWdFeHA7CisgICAgbGV0
IGVycm9yU3RyOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxs
IHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0
KG9iaik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJTeW1ib2woU3ltYm9sLnNwZWNpZXMpIiwg
IlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2Vy
dChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5kZXg6
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2Jz
ZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBA
QAorLy9AIHJ1bkRlZmF1bHQKKworZnVuY3Rpb24gYXNzZXJ0KHRlc3RlZFZhbHVlLCBtc2cpIHsK
KyAgICBpZiAoIXRlc3RlZFZhbHVlKQorICAgICAgICB0aHJvdyBFcnJvcihtc2cpOworfQorCisv
LyBSZWdFeHAucHJvdG90eXBlIHdpdGggb3ZlcnJpZGRlbiBmbGFnczogVGVzdGluZyBFUzYgMjEu
Mi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgor
KGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZmxhZyA9ICJmbGFncyI7CisgICAgbGV0IGZsYWdWYWx1
ZSA9ICIiOworCisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9yaWdEZXNjcmlwdG9y
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBlLCBmbGFn
KTsKKworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWdFeHAucHJvdG90eXBlLCBmbGFnLCB7
CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKGZs
YWcpOworICAgICAgICAgICAgcmV0dXJuIGZsYWdWYWx1ZTsKKyAgICAgICAgfQorICAgIH0pOwor
ICAgIGxldCBvYmogPSAvaXQvOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBl
Y3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0
bWUiLnNwbGl0KG9iaik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09IGZsYWcsICJQcm9wZXJ0eSBh
Y2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09
ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMtZ2xvYmFsLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czMtZ2xvYmFsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8vQCBy
dW5EZWZhdWx0CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYg
KCF0ZXN0ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8gUmVnRXhw
LnByb3RvdHlwZSB3aXRoIG92ZXJyaWRkZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTog
NS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlv
biAoKSB7CisgICAgbGV0IGZsYWcgPSAiZ2xvYmFsIjsKKyAgICBsZXQgZmxhZ1ZhbHVlID0gZmFs
c2U7CisKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb3JpZ0Rlc2NyaXB0b3IgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcpOwor
CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcsIHsKKyAg
ICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goZmxhZyk7
CisgICAgICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAgICB9CisgICAgfSk7CisgICAg
bGV0IG9iaiA9IC9pdC87CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVk
IGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIu
c3BsaXQob2JqKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxhZywgIlByb3BlcnR5IGFjY2Vz
c2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNw
bCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMtaWdub3JlQ2FzZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBA
QAorLy9AIHJ1bkRlZmF1bHQKKworZnVuY3Rpb24gYXNzZXJ0KHRlc3RlZFZhbHVlLCBtc2cpIHsK
KyAgICBpZiAoIXRlc3RlZFZhbHVlKQorICAgICAgICB0aHJvdyBFcnJvcihtc2cpOworfQorCisv
LyBSZWdFeHAucHJvdG90eXBlIHdpdGggb3ZlcnJpZGRlbiBmbGFnczogVGVzdGluZyBFUzYgMjEu
Mi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgor
KGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZmxhZyA9ICJpZ25vcmVDYXNlIjsKKyAgICBsZXQgZmxh
Z1ZhbHVlID0gZmFsc2U7CisKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb3JpZ0Rl
c2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5
cGUsIGZsYWcpOworCisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5cGUs
IGZsYWcsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2Vz
LnB1c2goZmxhZyk7CisgICAgICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAgICB9Cisg
ICAgfSk7CisgICAgbGV0IG9iaiA9IC9pdC87CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIs
ICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQg
PSAic3BsaXRtZSIuc3BsaXQob2JqKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxhZywgIlBy
b3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChy
ZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5kZXg6IExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZS5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUuanMJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyOCBAQAorLy9AIHJ1bkRlZmF1bHQKKworZnVuY3Rpb24gYXNzZXJ0KHRlc3RlZFZhbHVl
LCBtc2cpIHsKKyAgICBpZiAoIXRlc3RlZFZhbHVlKQorICAgICAgICB0aHJvdyBFcnJvcihtc2cp
OworfQorCisvLyBSZWdFeHAucHJvdG90eXBlIHdpdGggb3ZlcnJpZGRlbiBmbGFnczogVGVzdGlu
ZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZs
YWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZmxhZyA9ICJtdWx0aWxpbmUiOworICAg
IGxldCBmbGFnVmFsdWUgPSBmYWxzZTsKKworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGxl
dCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhw
LnByb3RvdHlwZSwgZmxhZyk7CisKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLnBy
b3RvdHlwZSwgZmxhZywgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
YWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgIHJldHVybiBmbGFnVmFsdWU7CisgICAg
ICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0gL2l0LzsKKworICAgIGFzc2VydChhY2Nlc3Nl
cyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0
IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmopOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSBm
bGFnLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAg
YXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOwpJ
bmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5LmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreS5qcwkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDI4IEBACisvL0AgcnVuRGVmYXVsdAorCitmdW5jdGlvbiBhc3NlcnQodGVzdGVkVmFsdWUs
IG1zZykgeworICAgIGlmICghdGVzdGVkVmFsdWUpCisgICAgICAgIHRocm93IEVycm9yKG1zZyk7
Cit9CisKKy8vIFJlZ0V4cC5wcm90b3R5cGUgd2l0aCBvdmVycmlkZGVuIGZsYWdzOiBUZXN0aW5n
IEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxh
Z3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBmbGFnID0gInN0aWNreSI7CisgICAgbGV0
IGZsYWdWYWx1ZSA9IGZhbHNlOworCisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9y
aWdEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJv
dG90eXBlLCBmbGFnKTsKKworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWdFeHAucHJvdG90
eXBlLCBmbGFnLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nl
c3Nlcy5wdXNoKGZsYWcpOworICAgICAgICAgICAgcmV0dXJuIGZsYWdWYWx1ZTsKKyAgICAgICAg
fQorICAgIH0pOworICAgIGxldCBvYmogPSAvaXQvOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09
ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVz
dWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09IGZsYWcs
ICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3Nl
cnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CkluZGV4
OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNw
bGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUuanMJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjggQEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwg
bXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgRXJyb3IobXNnKTsK
K30KKworLy8gUmVnRXhwLnByb3RvdHlwZSB3aXRoIG92ZXJyaWRkZW4gZmxhZ3M6IFRlc3Rpbmcg
RVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFn
cyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZsYWcgPSAidW5pY29kZSI7CisgICAgbGV0
IGZsYWdWYWx1ZSA9IGZhbHNlOworCisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9y
aWdEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJv
dG90eXBlLCBmbGFnKTsKKworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWdFeHAucHJvdG90
eXBlLCBmbGFnLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nl
c3Nlcy5wdXNoKGZsYWcpOworICAgICAgICAgICAgcmV0dXJuIGZsYWdWYWx1ZTsKKyAgICAgICAg
fQorICAgIH0pOworICAgIGxldCBvYmogPSAvaXQvOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09
ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVz
dWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09IGZsYWcs
ICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3Nl
cnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CkluZGV4
OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNw
bGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzNC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHM0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8vQCBydW5EZWZhdWx0
CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRW
YWx1ZSkKKyAgICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8gUmVnRXhwLnByb3RvdHlw
ZSB3aXRoIG92ZXJyaWRkZW4gZXhlYzogVGVzdGluZyBFUzYgMjEuMi41LjExOiAxOS5iLiBMZXQg
eiBiZSA/IFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFMpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQg
YWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb3JpZ0Rlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsICJleGVjIik7CisgICAgbGV0IG9yaWdF
eGVjID0gb3JpZ0Rlc2NyaXB0b3IudmFsdWU7CisKKyAgICBsZXQgb2JqID0gL2l0LzsKKyAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLnByb3RvdHlwZSwgImV4ZWMiLCB7CisgICAgICAg
IHZhbHVlOiBmdW5jdGlvbihzdHIpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goImV4ZWMi
KTsKKyAgICAgICAgICAgIHJldHVybiBvcmlnRXhlYy5jYWxsKHRoaXMsIHN0cik7CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIC8vIFRoZSBAQHNwbGl0IHNsb3cgcGF0aCBzaG91bGQgY2FsbCBh
biBpbnRlcm5hbCB2ZXJzaW9uIG9mIHN1YnN0ci4gTWFrZSBzdXJlIHRoYXQKKyAgICAvLyBpdCdz
IG5vdCBjYWxsaW5nIHRoZSBwdWJsaWMgdmVyc2lvbiB3aGljaCBjYW4gYmUgb3ZlcnJpZGRlbi4K
KyAgICBTdHJpbmcucHJvdG90eXBlLnN1YnN0ciA9IGZ1bmN0aW9uKHN0YXJ0LCBsZW5ndGgpIHsK
KyAgICAgICAgdGhyb3cgRXJyb3IoIlNob3VsZCBub3QgY2FsbCBvdmVycmlkZGVuIHN1YnN0ciIp
OworICAgIH0KKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0
byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChv
YmopOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiZXhlYyxleGVjLGV4ZWMsZXhlYyxleGVjLGV4
ZWMiLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAg
YXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOwpJ
bmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3NSBAQAorLy9AIHJ1bkRlZmF1
bHQKKworZnVuY3Rpb24gYXNzZXJ0KHRlc3RlZFZhbHVlLCBtc2cpIHsKKyAgICBpZiAoIXRlc3Rl
ZFZhbHVlKQorICAgICAgICB0aHJvdyBFcnJvcihtc2cpOworfQorCisvLz09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CisvLyBUZXN0aW5nIHRoZSBzdHJpbmcgdGhhdCB3ZSdyZSBjYWxsaW5n
IHNwbGl0IG9uLgorCisvLyBQcm94aWVkIFN0cmluZyBzdWJjbGFzcy4KKyhmdW5jdGlvbiAoKSB7
CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgY2xhc3MgRXh0U3RyaW5nIGV4dGVuZHMgU3Ry
aW5nIHsgfQorICAgIHZhciBvYmogPSBuZXcgRXh0U3RyaW5nKCJzcGxpdG1lIik7CisgICAgdmFy
IHByb3h5ID0gbmV3IFByb3h5KG9iaiwgeworICAgICAgICBnZXQob2JqLCBwcm9wKSB7CisgICAg
ICAgICAgICBhY2Nlc3Nlcy5wdXNoKHByb3AudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBpZiAo
cHJvcCA9PT0gInRvU3RyaW5nIikgeworICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgiaW5fdG9TdHJpbmciKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG9iai50b1N0cmluZygpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBvYmpbcHJvcF07CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2Fs
bCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFN0cmluZy5wcm90b3R5
cGUuc3BsaXQuY2FsbChwcm94eSwgIml0Iik7ICAgIAorICAgIGFzc2VydChhY2Nlc3NlcyA9PSAi
U3ltYm9sKFN5bWJvbC50b1ByaW1pdGl2ZSksdG9TdHJpbmcsaW5fdG9TdHJpbmciLCAiUHJvcGVy
dHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3Vs
dCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyBPYmplY3Qg
dGhhdCBsb29rcyBsaWtlIGEgc3RyaW5nLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNz
ZXMgPSBbXTsKKyAgICB2YXIgb2JqID0geworICAgICAgICBbU3ltYm9sLnRvUHJpbWl0aXZlXSgp
IHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goU3ltYm9sLnRvUHJpbWl0aXZlLnRvU3RyaW5n
KCkpOworICAgICAgICAgICAgcmV0dXJuICJzcGxpdG1lIjsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVu
IHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFN0cmluZy5wcm90b3R5cGUuc3BsaXQuY2FsbChv
YmosICJpdCIpOyAgICAKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIlN5bWJvbChTeW1ib2wudG9Q
cmltaXRpdmUpIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIp
OworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOwor
fSkoKTsKKworLy8gT2JqZWN0IHRoYXQgbG9va3MgbGlrZSBhIHN0cmluZy4KKyhmdW5jdGlvbiAo
KSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgdmFyIG9iaiA9IHsKKyAgICAgICAgdG9T
dHJpbmcoKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJ0b1N0cmluZyIpOworICAgICAg
ICAgICAgcmV0dXJuICJzcGxpdG1lIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2VydChh
Y2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7Cisg
ICAgbGV0IHJlc3VsdCA9IFN0cmluZy5wcm90b3R5cGUuc3BsaXQuY2FsbChvYmosICJpdCIpOyAg
ICAKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gInRvU3RyaW5nIiwgIlByb3BlcnR5IGFjY2Vzc2Vz
IGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxt
ZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKKworLy89PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQorLy8gVGVzdGluZyB0aGUgcmVnZXhwIG9iamVjdCB0aGF0IHdlJ3JlIGNhbGxp
bmcgc3BsaXQgd2l0aC4KKworLy8gU3ViY2xhc3Mgd2l0aCBvdmVycmlkZGVuIFtAQHNwZWNpZXNd
OiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDQuIExldCBDIGJlID8gU3BlY2llc0NvbnN0cnVjdG9y
KHJ4LCAlUmVnRXhwJSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOwor
ICAgIGNsYXNzIFRlc3RSZWdFeHAgZXh0ZW5kcyBSZWdFeHAgeyB9CisgICAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KFRlc3RSZWdFeHAsIFN5bWJvbC5zcGVjaWVzLCB7CisgICAgICAgIHZhbHVlOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goU3ltYm9sLnNwZWNpZXMudG9T
dHJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm4gL2l0LzsKKyAgICAgICAgfQorICAgIH0pOwor
ICAgIGxldCBvYmogPSBuZXcgVGVzdFJlZ0V4cDsKKyAgICBsZXQgZXJyb3JTdHI7CisKKyAgICBh
c3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9w
cyIpOworICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQob2JqKTsKKyAgICBhc3NlcnQo
YWNjZXNzZXMgPT0gIlN5bWJvbChTeW1ib2wuc3BlY2llcykiLCAiUHJvcGVydHkgYWNjZXNzZXMg
ZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1l
IiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyBSZWdFeHAgc3ViY2xhc3Mgd2l0
aCBjb25zdHJ1Y3RvcjogVGVzdGluZyBFUzYgMjEuMi41LjExOiA0LiBMZXQgQyBiZSA/IFNwZWNp
ZXNDb25zdHJ1Y3RvcihyeCwgJVJlZ0V4cCUpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNj
ZXNzZXMgPSBbXTsKKyAgICBjbGFzcyBUZXN0UmVnRXhwIGV4dGVuZHMgUmVnRXhwIHsKKyAgICAg
ICAgY29uc3RydWN0b3Ioc3RyKSB7CisgICAgICAgICAgICBzdXBlcihzdHIpOworICAgICAgICAg
ICAgYWNjZXNzZXMucHVzaCgiY29uc3RydWN0b3IiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBs
ZXQgb2JqID0gbmV3IFRlc3RSZWdFeHAoIml0Iik7CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0g
ImNvbnN0cnVjdG9yIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7Cisg
ICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmopOworICAgIGFzc2VydChhY2Nlc3Nl
cyA9PSAiY29uc3RydWN0b3IsY29uc3RydWN0b3IiLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90
IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVu
ZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyBBbiBvYmplY3Qgd2l0aCBzcGVjaWVzIGNv
bnN0cnVjdG9yOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDQuIExldCBDIGJlID8gU3BlY2llc0Nv
bnN0cnVjdG9yKHJ4LCAlUmVnRXhwJSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3Nl
cyA9IFtdOworICAgIGxldCBvYmogPSB7IGNvbnN0cnVjdG9yOiB7fSB9OworICAgIG9iai5jb25z
dHJ1Y3RvcltTeW1ib2wuc3BlY2llc10gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgYWNjZXNzZXMu
cHVzaCgiY29uc3RydWN0b3IiKTsKKyAgICAgICAgcmV0dXJuIC9pdC87CisgICAgfTsKKyAgICBv
YmpbU3ltYm9sLnNwbGl0XSA9IGZ1bmN0aW9uKHN0ciwgbGltaXQpIHsKKyAgICAgICAgYWNjZXNz
ZXMucHVzaChTeW1ib2wuc3BsaXQudG9TdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBSZWdFeHAu
cHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbCh0aGlzLCBzdHIsIGxpbWl0KTsKKyAgICB9Owor
CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRk
ZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7CisgICAg
YXNzZXJ0KGFjY2Vzc2VzID09ICJTeW1ib2woU3ltYm9sLnNwbGl0KSxjb25zdHJ1Y3RvciIsICJQ
cm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQo
cmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIFJl
Z0V4cCBvYmplY3Qgd2l0aCBvdmVycmlkZGVuIGZsYWdzOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6
IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rp
b24gKCkgeworICAgIGxldCBmbGFncyA9IFsgImZsYWdzIiwgImdsb2JhbCIsICJpZ25vcmVDYXNl
IiwgIm11bHRpbGluZSIsICJzdGlja3kiLCAidW5pY29kZSIgXTsKKyAgICBsZXQgZmxhZ1ZhbHVl
cyA9IFsgIiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSBdOworICAgIGZvciAo
bGV0IGluZGV4IGluIGZsYWdzKSB7CisgICAgICAgIChmdW5jdGlvbihmbGFnLCBmbGFnVmFsdWUp
IHsKKyAgICAgICAgICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgICAgICAgICAgbGV0IG9iaiA9
IC9pdC87CisgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBmbGFnLCB7Cisg
ICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYWNj
ZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZsYWdWYWx1ZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5l
eHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICAgICAgICAgIGxldCByZXN1
bHQgPSAic3BsaXRtZSIuc3BsaXQob2JqKTsKKyAgICAgICAgICAgIGFzc2VydChhY2Nlc3NlcyA9
PSBmbGFnLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7Cisg
ICAgICAgICAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQi
KTsKKyAgICAgICAgfSkgKGZsYWdzW2luZGV4XSwgZmxhZ1ZhbHVlc1tpbmRleF0pOworICAgIH0K
K30pKCk7CisKKy8vIFJlZ0V4cCBzdWJjbGFzcyB3aXRoIG92ZXJyaWRkZW4gZmxhZ3MgaW4gc3Vi
Y2xhc3MgbWV0aG9kOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRv
U3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBmbGFn
cyA9IFsgImZsYWdzIiwgImdsb2JhbCIsICJpZ25vcmVDYXNlIiwgIm11bHRpbGluZSIsICJzdGlj
a3kiLCAidW5pY29kZSIgXTsKKyAgICBsZXQgZmxhZ1ZhbHVlcyA9IFsgIiIsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSBdOworICAgIGZvciAobGV0IGluZGV4IGluIGZsYWdzKSB7
CisgICAgICAgIChmdW5jdGlvbihmbGFnLCBmbGFnVmFsdWUpIHsKKyAgICAgICAgICAgIGxldCBh
Y2Nlc3NlcyA9IFtdOworICAgICAgICAgICAgY2xhc3MgVGVzdFJlZ0V4cCBleHRlbmRzIFJlZ0V4
cCB7CisgICAgICAgICAgICAgICAgZ2V0IFtmbGFnXSgpIHsKKyAgICAgICAgICAgICAgICAgICAg
YWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZsYWdWYWx1
ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICAgICAgbGV0IG9i
aiA9IG5ldyBUZXN0UmVnRXhwKC9pdC8pOworCisgICAgICAgICAgICBhc3NlcnQoYWNjZXNzZXMg
PT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgICAgICAg
ICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmopOworICAgICAgICAgICAgYXNzZXJ0
KGFjY2Vzc2VzID09IGZsYWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0
YXRpb24iKTsKKyAgICAgICAgICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVj
dGVkIHJlc3VsdCIpOworCisgICAgICAgIH0pIChmbGFnc1tpbmRleF0sIGZsYWdWYWx1ZXNbaW5k
ZXhdKTsKKyAgICB9Cit9KSgpOworCisvLyBSZWdFeHAgc3ViY2xhc3Mgd2l0aCBvdmVycmlkZGVu
IGZsYWdzIHVzaW5nIE9iamVjdC5kZWZpbmVQcm9wZXJ0eTogVGVzdGluZyBFUzYgMjEuMi41LjEx
OiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0
aW9uICgpIHsKKyAgICBsZXQgZmxhZ3MgPSBbICJmbGFncyIsICJnbG9iYWwiLCAiaWdub3JlQ2Fz
ZSIsICJtdWx0aWxpbmUiLCAic3RpY2t5IiwgInVuaWNvZGUiIF07CisgICAgbGV0IGZsYWdWYWx1
ZXMgPSBbICIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UgXTsKKyAgICBmb3Ig
KGxldCBpbmRleCBpbiBmbGFncykgeworICAgICAgICAoZnVuY3Rpb24oZmxhZywgZmxhZ1ZhbHVl
KSB7CisgICAgICAgICAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICAgICAgICAgIGNsYXNzIFRl
c3RSZWdFeHAgZXh0ZW5kcyBSZWdFeHAgeyB9OworICAgICAgICAgICAgbGV0IG9iaiA9IG5ldyBU
ZXN0UmVnRXhwKC9pdC8pOworCisgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2Jq
LCBmbGFnLCB7CisgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICAgICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZsYWdWYWx1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRk
ZW4gcHJvcHMiKTsKKyAgICAgICAgICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQob2Jq
KTsKKyAgICAgICAgICAgIGFzc2VydChhY2Nlc3NlcyA9PSBmbGFnLCAiUHJvcGVydHkgYWNjZXNz
ZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgICAgICAgICBhc3NlcnQocmVzdWx0
ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKKworICAgICAgICB9KSAoZmxhZ3Nb
aW5kZXhdLCBmbGFnVmFsdWVzW2luZGV4XSk7CisgICAgfQorfSkoKTsKKworLy8gQW55IG9iamVj
dCB3aXRoIHNwZWNpZXMgY29uc3RydWN0b3I6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0
IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7
CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9iaiA9IHsgY29uc3RydWN0b3I6IHt9
IH07CisgICAgb2JqLmNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXSA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJjb25zdHJ1Y3RvciIpOworICAgICAgICByZXR1cm4gL2l0
LzsKKyAgICB9OworICAgIG9ialtTeW1ib2wuc3BsaXRdID0gZnVuY3Rpb24oc3RyLCBsaW1pdCkg
eworICAgICAgICBhY2Nlc3Nlcy5wdXNoKFN5bWJvbC5zcGxpdC50b1N0cmluZygpKTsKKyAgICAg
ICAgcmV0dXJuIFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKHRoaXMsIHN0ciwg
bGltaXQpOworICAgIH07CisKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCAiZmxhZ3Mi
LCB7CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNo
KCJmbGFncyIpOworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisgICAgfSk7CisK
KyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRl
biBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQob2JqKTsKKyAgICBh
c3NlcnQoYWNjZXNzZXMgPT0gIlN5bWJvbChTeW1ib2wuc3BsaXQpLGZsYWdzLGNvbnN0cnVjdG9y
IiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFz
c2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKKwor
Ly8gQW55IG9iamVjdCB3aXRoIGN1c3RvbSBwcm90b3R5cGU6IFRlc3RpbmcgRVM2IDIxLjIuNS4x
MTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5j
dGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IFRlc3RSZWdFeHBQcm90
byA9IHsKKyAgICAgICAgZ2V0IGZsYWdzKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgi
ZmxhZ3MiKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfSwKKyAgICAgICAgdG9T
dHJpbmcoKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJ0b1N0cmluZyIpOworICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX3JlZ2V4LnRvU3RyaW5nKCk7CisgICAgICAgIH0sCisgICAgICAg
IGdldCBzb3VyY2UoKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJzb3VyY2UiKTsKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9yZWdleC5zb3VyY2U7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgVGVzdFJlZ0V4cFByb3RvLl9fcHJvdG9fXyA9IFJlZ0V4cC5wcm90b3R5cGU7CisKKyAgICBs
ZXQgVGVzdFJlZ0V4cCA9IGZ1bmN0aW9uKHJlZ2V4KSB7CisgICAgICAgIGFjY2Vzc2VzLnB1c2go
ImNvbnN0cnVjdG9yIik7CisgICAgICAgIHRoaXMuX3JlZ2V4ID0gbmV3IFJlZ0V4cChyZWdleCk7
CisgICAgfQorICAgIFRlc3RSZWdFeHAucHJvdG90eXBlID0gVGVzdFJlZ0V4cFByb3RvOworICAg
IFRlc3RSZWdFeHBQcm90by5jb25zdHJ1Y3RvciA9IFRlc3RSZWdFeHA7CisKKyAgICBsZXQgb2Jq
ID0gbmV3IFRlc3RSZWdFeHAoL2l0Lyk7CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImNvbnN0
cnVjdG9yIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0
IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmopOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAi
Y29uc3RydWN0b3IsZmxhZ3Msc291cmNlIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRj
aCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVj
dGVkIHJlc3VsdCIpOworfSkoKTsKKworLy8gMiBsZXZlbHMgb2Ygc3ViY2xhc3NlczogVGVzdGlu
ZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZs
YWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKworICAgIGNs
YXNzIFJlZ0V4cEIgZXh0ZW5kcyBSZWdFeHAgeworICAgICAgICBnZXQgZmxhZ3MoKSB7CisgICAg
ICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJmbGFncyIpOworICAgICAgICAgICAgcmV0dXJuICIiOwor
ICAgICAgICB9CisgICAgfQorICAgIGNsYXNzIFJlZ0V4cEMgZXh0ZW5kcyBSZWdFeHBCIHsgfQor
CisgICAgYXNzZXJ0KFJlZ0V4cEIuX19wcm90b19fID09IFJlZ0V4cCk7CisgICAgYXNzZXJ0KFJl
Z0V4cEMuX19wcm90b19fID09IFJlZ0V4cEIpOworCisgICAgbGV0IG9iaiA9IG5ldyBSZWdFeHBD
KC9pdC8pOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRv
IG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9i
aik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJmbGFncyIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBk
byBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUi
LCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIDIgbGV2ZWxzIG9mIHN1YmNsYXNz
ZXMgd2l0aCBzdWJzdGl0dXRlZCBwcm90b3R5cGUgYmVmb3JlIGluc3RhbnRpYXRpb246IFRlc3Rp
bmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJm
bGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisKKyAgICBj
bGFzcyBCIGV4dGVuZHMgUmVnRXhwIHsgfQorICAgIGNsYXNzIEMgZXh0ZW5kcyBCIHsgfQorCisg
ICAgYXNzZXJ0KEIuX19wcm90b19fID09PSBSZWdFeHApOworICAgIGFzc2VydChDLl9fcHJvdG9f
XyA9PT0gQik7CisgICAgYXNzZXJ0KEIucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gUmVnRXhwLnBy
b3RvdHlwZSk7CisgICAgYXNzZXJ0KEMucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gQi5wcm90b3R5
cGUpOworCisgICAgbGV0IFggPSBmdW5jdGlvbiAoKSB7fQorICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShYLnByb3RvdHlwZSwgImZsYWdzIiwgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgiZmxhZ3MiKTsKKyAgICAgICAgICAgIHJldHVybiAi
IjsKKyAgICAgICAgfQorICAgIH0pOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShYLnByb3Rv
dHlwZSwgImV4ZWMiLCB7CisgICAgICAgIHZhbHVlOiBmdW5jdGlvbihzdHIpIHsKKyAgICAgICAg
ICAgIGFjY2Vzc2VzLnB1c2goImV4ZWMiKTsKKyAgICAgICAgICAgIHZhciBtYXRjaFJlc3VsdCA9
IC9pdC95LmV4ZWMoc3RyLnN1YnN0cih0aGlzLmxhc3RJbmRleCkpOworICAgICAgICAgICAgaWYg
KG1hdGNoUmVzdWx0KQorICAgICAgICAgICAgICAgIHRoaXMubGFzdEluZGV4ICs9IDI7IC8vIGxl
bmd0aCBvZiAiaXQiLgorICAgICAgICAgICAgcmV0dXJuIG1hdGNoUmVzdWx0OworICAgICAgICB9
CisgICAgfSk7CisKKyAgICAvLyBNb25rZXkgd2l0aCB0aGUgcHJvdG90eXBlIGNoYWluIGJlZm9y
ZSBpbnN0YW50aWF0aW5nIEMuCisgICAgWC5fX3Byb3RvX18gPSBSZWdFeHA7CisgICAgWC5wcm90
b3R5cGUuX19wcm90b19fID0gUmVnRXhwLnByb3RvdHlwZTsKKyAgICBDLl9fcHJvdG9fXyA9IFg7
CisgICAgQy5wcm90b3R5cGUuX19wcm90b19fID0gWC5wcm90b3R5cGU7CisKKyAgICBhc3NlcnQo
WC5fX3Byb3RvX18gPT09IFJlZ0V4cCk7CisgICAgYXNzZXJ0KEMuX19wcm90b19fID09PSBYKTsK
KyAgICBhc3NlcnQoWC5wcm90b3R5cGUuX19wcm90b19fID09PSBSZWdFeHAucHJvdG90eXBlKTsK
KyAgICBhc3NlcnQoQy5wcm90b3R5cGUuX19wcm90b19fID09PSBYLnByb3RvdHlwZSk7CisKKyAg
ICBsZXQgb2JqID0gbmV3IEM7CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVj
dGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSAic3BsaXRt
ZSIuc3BsaXQob2JqKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImZsYWdzLGV4ZWMsZXhlYyxl
eGVjLGV4ZWMsZXhlYyxleGVjIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBl
Y3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJl
c3VsdCIpOworfSkoKTsKKworLy8gMiBsZXZlbHMgb2Ygc3ViY2xhc3NlcyB3aXRoIHN1YnN0aXR1
dGVkIHByb3RvdHlwZSBhZnRlciBpbnN0YW50aWF0aW9uOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6
IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rp
b24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworCisgICAgY2xhc3MgQiBleHRlbmRzIFJl
Z0V4cCB7IH0KKyAgICBjbGFzcyBDIGV4dGVuZHMgQiB7IH0KKworICAgIGFzc2VydChCLl9fcHJv
dG9fXyA9PT0gUmVnRXhwKTsKKyAgICBhc3NlcnQoQy5fX3Byb3RvX18gPT09IEIpOworICAgIGFz
c2VydChCLnByb3RvdHlwZS5fX3Byb3RvX18gPT09IFJlZ0V4cC5wcm90b3R5cGUpOworICAgIGFz
c2VydChDLnByb3RvdHlwZS5fX3Byb3RvX18gPT09IEIucHJvdG90eXBlKTsKKworICAgIGxldCBY
ID0gZnVuY3Rpb24gKCkge30KKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoWC5wcm90b3R5cGUs
ICJmbGFncyIsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vz
c2VzLnB1c2goImZsYWdzIik7CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAg
ICB9KTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoWC5wcm90b3R5cGUsICJleGVjIiwgewor
ICAgICAgICB2YWx1ZTogZnVuY3Rpb24oc3RyKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNo
KCJleGVjIik7CisgICAgICAgICAgICB2YXIgbWF0Y2hSZXN1bHQgPSAvaXQveS5leGVjKHN0ci5z
dWJzdHIodGhpcy5sYXN0SW5kZXgpKTsKKyAgICAgICAgICAgIGlmIChtYXRjaFJlc3VsdCkKKyAg
ICAgICAgICAgICAgICB0aGlzLmxhc3RJbmRleCArPSAyOyAvLyBsZW5ndGggb2YgIml0Ii4KKyAg
ICAgICAgICAgIHJldHVybiBtYXRjaFJlc3VsdDsKKyAgICAgICAgfQorICAgIH0pOworCisgICAg
Ly8gSW5zdGFudGlhdGUgQyBiZWZvcmUgbW9ua2V5aW5nIHdpdGggdGhlIHByb3RvdHlwZSBjaGFp
bi4KKyAgICBsZXQgb2JqID0gbmV3IEMoKTsKKworICAgIFguX19wcm90b19fID0gUmVnRXhwOwor
ICAgIFgucHJvdG90eXBlLl9fcHJvdG9fXyA9IFJlZ0V4cC5wcm90b3R5cGU7CisgICAgQy5fX3By
b3RvX18gPSBYOworICAgIEMucHJvdG90eXBlLl9fcHJvdG9fXyA9IFgucHJvdG90eXBlOworCisg
ICAgYXNzZXJ0KFguX19wcm90b19fID09PSBSZWdFeHApOworICAgIGFzc2VydChDLl9fcHJvdG9f
XyA9PT0gWCk7CisgICAgYXNzZXJ0KFgucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gUmVnRXhwLnBy
b3RvdHlwZSk7CisgICAgYXNzZXJ0KEMucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gWC5wcm90b3R5
cGUpOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92
ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7
CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJmbGFncyxleGVjLGV4ZWMsZXhlYyxleGVjLGV4ZWMs
ZXhlYyIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAg
ICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7
CisKKy8vIDIgbGV2ZWxzIG9mIHN1YmNsYXNzZXMgd2l0aCBwcm94aWVkIHByb3RvdHlwZTogVGVz
dGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwg
ImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKworICAg
IGNsYXNzIEIgZXh0ZW5kcyBSZWdFeHAgeyB9OworCisgICAgYXNzZXJ0KEIuX19wcm90b19fID09
PSBSZWdFeHApOworICAgIGFzc2VydChCLnByb3RvdHlwZS5fX3Byb3RvX18gPT09IFJlZ0V4cC5w
cm90b3R5cGUpOworCisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KFJlZ0V4cC5wcm90b3R5cGUs
IHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbihvYmosIHByb3ApIHsKKyAgICAgICAgICAgIGFjY2Vz
c2VzLnB1c2gocHJvcC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGlmIChwcm9wID09PSAiZXhl
YyIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oc3RyKSB7CisgICAgICAgICAg
ICAgICAgICAgIGFjY2Vzc2VzLnB1c2goImluX2V4ZWMiKTsKKyAgICAgICAgICAgICAgICAgICAg
dmFyIG1hdGNoUmVzdWx0ID0gL2l0L3kuZXhlYyhzdHIuc3Vic3RyKHRoaXMubGFzdEluZGV4KSk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaFJlc3VsdCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMubGFzdEluZGV4ICs9IDI7IC8vIGxlbmd0aCBvZiAiaXQiLgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbWF0Y2hSZXN1bHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG9ialtwcm9wXTsKKyAgICAgICAgfQorICAgIH0p
OworICAgIEIucHJvdG90eXBlLl9fcHJvdG9fXyA9IHByb3h5OworCisgICAgbGV0IG9iaiA9IG5l
dyBCKCk7CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8g
b3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQob2Jq
KTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIlN5bWJvbChTeW1ib2wuc3BsaXQpLGZsYWdzLFN5
bWJvbChTeW1ib2wubWF0Y2gpLGV4ZWMsaW5fZXhlYyxleGVjLGluX2V4ZWMsZXhlYyxpbl9leGVj
LGV4ZWMsaW5fZXhlYyxleGVjLGluX2V4ZWMsZXhlYyxpbl9leGVjIiwgIlByb3BlcnR5IGFjY2Vz
c2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNw
bCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKKworLy8gUmVnRXhwIHN1YmNsYXNz
IHdpdGggb3ZlcnJpZGRlbiBleGVjOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDE5LmIuIExldCB6
IGJlID8gUmVnRXhwRXhlYyhzcGxpdHRlciwgUykuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBh
Y2Nlc3NlcyA9IFtdOworICAgIGNsYXNzIFRlc3RSZWdFeHAgZXh0ZW5kcyBSZWdFeHAgeworICAg
ICAgICBleGVjKHN0cikgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgiZXhlYyIpOworICAg
ICAgICAgICAgcmV0dXJuIFJlZ0V4cC5wcm90b3R5cGUuZXhlYy5jYWxsKHRoaXMsIHN0cik7Cisg
ICAgICAgIH0KKyAgICB9OworICAgIGxldCBvYmogPSBuZXcgVGVzdFJlZ0V4cCgvaXQvKTsKKwor
ICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVu
IHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmopOworICAgIGFz
c2VydChhY2Nlc3NlcyA9PSAiZXhlYyxleGVjLGV4ZWMsZXhlYyxleGVjLGV4ZWMiLCAiUHJvcGVy
dHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3Vs
dCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyBQcm94aWVk
IFJlZ0V4cCBvYnNlcnZpbmcgZXZlcnkgZ2V0LgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNj
ZXNzZXMgPSBbXTsKKyAgICBsZXQgcmVnZXhwID0gbmV3IFJlZ0V4cCgvaXQvKTsKKyAgICBsZXQg
cHJveHkgPSBuZXcgUHJveHkocmVnZXhwLCB7CisgICAgICAgIGdldChvYmosIHByb3ApIHsKKyAg
ICAgICAgICAgIGFjY2Vzc2VzLnB1c2gocHJvcC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIHJl
dHVybiBvYmpbcHJvcF07CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGFzc2VydChhY2Nlc3Nl
cyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0
IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChwcm94eSk7CisgICAgLy8gTm90ZTogQEBzcGxpdCBj
cmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBSZWdFeHAgdXNpbmcgaXRzIEBAc3BlY2llcywg
YW5kIHBlcmZvcm1zCisgICAgLy8gdGhlIHNwbGl0IG9wZXJhdGlvbiB3aXRoIHRoYXQgbmV3IGlu
c3RhbmNlLiBIZW5jZSwgdGhlIHByb3h5IGlzIG9ubHkgYWJsZSB0byBvYnNlcnZlCisgICAgLy8g
Z2V0cyB1cCB0byB0aGUgY3JlYXRpb24gb2YgdGhlIG5ldyBpbnN0YW5jZS4KKyAgICBhc3NlcnQo
YWNjZXNzZXMgPT0gIlN5bWJvbChTeW1ib2wuc3BsaXQpLGNvbnN0cnVjdG9yLGZsYWdzLFN5bWJv
bChTeW1ib2wubWF0Y2gpLHNvdXJjZSIsCisgICAgICAgICJQcm94eSBub3QgYWJsZSB0byBvYnNl
cnZlIHNvbWUgZ2V0cyIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVj
dGVkIHJlc3VsdCIpOworfSkoKTsKKworLy8gUHJveGllZCBSZWdFeHAgKHdpdGhvdXQgQEBtYXRj
aCkgb2JzZXJ2aW5nIGV2ZXJ5IGdldC4KKy8vIFRoaXMgaXMgdG8gZm9yY2UgdGhlIFJlZ0V4cCBA
c3BlY2llcyBjb25zdHJ1Y3RvciB0byBhY2Nlc3Mgc291cmNlLgorKGZ1bmN0aW9uICgpIHsKKyAg
ICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgcmVnZXhwID0gbmV3IFJlZ0V4cCgvaXQvKTsK
KyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkocmVnZXhwLCB7CisgICAgICAgIGdldChvYmosIHBy
b3ApIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2gocHJvcC50b1N0cmluZygpKTsKKyAgICAg
ICAgICAgIGlmIChwcm9wID09IFN5bWJvbC5tYXRjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
dW5kZWZpbmVkOworICAgICAgICAgICAgcmV0dXJuIG9ialtwcm9wXTsKKyAgICAgICAgfQorICAg
IH0pOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92
ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KHByb3h5
KTsKKyAgICAvLyBOb3RlOiBAQHNwbGl0IGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFJl
Z0V4cCB1c2luZyBpdHMgQEBzcGVjaWVzLCBhbmQgcGVyZm9ybXMKKyAgICAvLyB0aGUgc3BsaXQg
b3BlcmF0aW9uIHdpdGggdGhhdCBuZXcgaW5zdGFuY2UuIEhlbmNlLCB0aGUgcHJveHkgaXMgb25s
eSBhYmxlIHRvIG9ic2VydmUKKyAgICAvLyBnZXRzIHVwIHRvIHRoZSBjcmVhdGlvbiBvZiB0aGUg
bmV3IGluc3RhbmNlLgorICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiU3ltYm9sKFN5bWJvbC5zcGxp
dCksY29uc3RydWN0b3IsZmxhZ3MsU3ltYm9sKFN5bWJvbC5tYXRjaCksU3ltYm9sKFN5bWJvbC50
b1ByaW1pdGl2ZSksdG9TdHJpbmcsc291cmNlLGZsYWdzIiwKKyAgICAgICAgIlByb3h5IG5vdCBh
YmxlIHRvIG9ic2VydmUgc29tZSBnZXRzIik7CisgICAgLy8gVGhlIG5ldyBpbnN0YW5jZSBvZiB0
aGUgUmVnRXhwIHdvdWxkIGhhdmUgYmVlbiBjb25zdHJ1Y3RlZCB3aXRoIHRoZSBwYXR0ZXJuIGZy
b20KKyAgICAvLyB0aGUgcHJveHkgdG9TdHJpbmcoKSBpLmUuICJcL2x0XC8iIGluc3RlYWQgb2Yg
c291cmNlLCBiZWNhdXNlIHRoZSBwcm94eSBpcyBhbgorICAgIC8vIG9iamVjdCB3aXRob3V0IGEg
W0BAbWF0Y2hdIHByb3BlcnR5LgorICAgIGFzc2VydChyZXN1bHQgPT0gInNwbGl0bWUiLCAiVW5l
eHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCShyZXZpc2lv
biAxOTkzMzgpCisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blBy
b3BlcnR5TmFtZXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgdmFyIGV4cGVj
dGVkUHJvcGVydHlOYW1lc1NldCA9IHsKICAgICAiRXJyb3IucHJvdG90eXBlIjogIlsnY29uc3Ry
dWN0b3InLCAnbWVzc2FnZScsICduYW1lJywgJ3RvU3RyaW5nJ10iLAogICAgICJNYXRoIjogIlsn
RScsJ0xOMTAnLCdMTjInLCdMT0cxMEUnLCdMT0cyRScsJ1BJJywnU1FSVDFfMicsJ1NRUlQyJywn
YWJzJywnYWNvcycsJ2Fjb3NoJywnYXNpbicsJ2FzaW5oJywnYXRhbicsJ2F0YW4yJywnYXRhbmgn
LCdjYnJ0JywnY2VpbCcsJ2NsejMyJywnY29zJywnY29zaCcsJ2V4cCcsJ2V4cG0xJywnZmxvb3In
LCdmcm91bmQnLCdoeXBvdCcsJ2ltdWwnLCdsb2cnLCdsb2cxMCcsJ2xvZzFwJywnbG9nMicsJ21h
eCcsJ21pbicsJ3BvdycsJ3JhbmRvbScsJ3JvdW5kJywnc2lnbicsJ3NpbicsJ3NpbmgnLCdzcXJ0
JywndGFuJywndGFuaCcsJ3RydW5jJ10iLAogICAgICJKU09OIjogIlsncGFyc2UnLCAnc3RyaW5n
aWZ5J10iLAotICAgICJTeW1ib2wiOiAiWydmb3InLCAnaGFzSW5zdGFuY2UnLCAnaXRlcmF0b3In
LCAna2V5Rm9yJywgJ2xlbmd0aCcsICdtYXRjaCcsICduYW1lJywgJ3Byb3RvdHlwZScsICdzZWFy
Y2gnLCAnc3BlY2llcycsICd0b1ByaW1pdGl2ZScsICd0b1N0cmluZ1RhZycsICd1bnNjb3BhYmxl
cyddIiwKKyAgICAiU3ltYm9sIjogIlsnZm9yJywgJ2hhc0luc3RhbmNlJywgJ2l0ZXJhdG9yJywg
J2tleUZvcicsICdsZW5ndGgnLCAnbWF0Y2gnLCAnbmFtZScsICdwcm90b3R5cGUnLCAnc2VhcmNo
JywgJ3NwZWNpZXMnLCAnc3BsaXQnLCAndG9QcmltaXRpdmUnLCAndG9TdHJpbmdUYWcnLCAndW5z
Y29wYWJsZXMnXSIsCiAgICAgIlN5bWJvbC5wcm90b3R5cGUiOiAiWydjb25zdHJ1Y3RvcicsICd0
b1N0cmluZycsICd2YWx1ZU9mJ10iLAogICAgICJNYXAiOiAiWydsZW5ndGgnLCAnbmFtZScsICdw
cm90b3R5cGUnXSIsCiAgICAgIk1hcC5wcm90b3R5cGUiOiAiWydjbGVhcicsICdjb25zdHJ1Y3Rv
cicsICdkZWxldGUnLCAnZW50cmllcycsICdmb3JFYWNoJywgJ2dldCcsICdoYXMnLCAna2V5cycs
ICdzZXQnLCAnc2l6ZScsICd2YWx1ZXMnXSIsCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0Nv
bmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTRf
U3RyaW5nLnByb3RvdHlwZS5zcGxpdC9TMTUuNS40LjE0X0ExX1QzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmpl
Y3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTRfU3RyaW5nLnByb3RvdHlwZS5zcGxpdC9T
MTUuNS40LjE0X0ExX1QzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTk5MzM4KQorKysgTGF5b3V0
VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8x
NS41LjQvMTUuNS40LjE0X1N0cmluZy5wcm90b3R5cGUuc3BsaXQvUzE1LjUuNC4xNF9BMV9UMy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBTMTUuNS40LjE0X0Ex
X1QzCiAKLUZBSUwgVHlwZUVycm9yOiBUeXBlIGVycm9yCitGQUlMIFR5cGVFcnJvcjogU3RyaW5n
LnByb3RvdHlwZS5zcGxpdCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkCiAK
IFRFU1QgQ09NUExFVEUKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>276241</attachid>
            <date>2016-04-12 09:38:16 -0700</date>
            <delta_ts>2016-04-12 09:38:16 -0700</delta_ts>
            <desc>x86_64 benchmark results.</desc>
            <filename>bench-result-x86_64.txt</filename>
            <type>text/plain</type>
            <size>72466</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">R2VuZXJhdGluZyBiZW5jaG1hcmsgcmVwb3J0IGF0IC9Wb2x1bWVzL0RhdGEvYmVuY2gvc3BsaXQv
YmFzZTY0X25ldzY0X1N1blNwaWRlckxvbmdTcGlkZXJWOFNwaWRlck9jdGFuZUtyYWtlbkpTUmVn
cmVzc0FzbUJlbmNoQ29tcHJlc3Npb25CZW5jaF9DaHJvbm9uXzIwMTYwNDExXzEzMTlfcmVwb3J0
LnR4dApBbmQgcmF3IGRhdGEgYXQgL1ZvbHVtZXMvRGF0YS9iZW5jaC9zcGxpdC9iYXNlNjRfbmV3
NjRfU3VuU3BpZGVyTG9uZ1NwaWRlclY4U3BpZGVyT2N0YW5lS3Jha2VuSlNSZWdyZXNzQXNtQmVu
Y2hDb21wcmVzc2lvbkJlbmNoX0Nocm9ub25fMjAxNjA0MTFfMTMxOS5qc29uCgpCZW5jaG1hcmsg
cmVwb3J0IGZvciBTdW5TcGlkZXIsIExvbmdTcGlkZXIsIFY4U3BpZGVyLCBPY3RhbmUsIEtyYWtl
biwgSlNSZWdyZXNzLCBBc21CZW5jaCwgYW5kIENvbXByZXNzaW9uQmVuY2ggb24gQ2hyb25vbiAo
TWFjQm9va1BybzExLDEpLgoKVk1zIHRlc3RlZDoKImJhc2U2NCIgYXQgL1ZvbHVtZXMvRGF0YS9i
ZW5jaC9zcGxpdC9iYXNlNjQvanNjCiJuZXc2NCIgYXQgL1ZvbHVtZXMvRGF0YS9iZW5jaC9zcGxp
dC9uZXc2NC9qc2MKCkNvbGxlY3RlZCA2IHNhbXBsZXMgcGVyIGJlbmNobWFyay9WTSwgd2l0aCA2
IFZNIGludm9jYXRpb25zIHBlciBiZW5jaG1hcmsuIEVtaXR0ZWQgYSBjYWxsIHRvIGdjKCkgYmV0
d2VlbiBzYW1wbGUgbWVhc3VyZW1lbnRzLgpVc2VkIDEgYmVuY2htYXJrIGl0ZXJhdGlvbiBwZXIg
Vk0gaW52b2NhdGlvbiBmb3Igd2FybS11cC4gVXNlZCB0aGUganNjLXNwZWNpZmljIHByZWNpc2VU
aW1lKCkgZnVuY3Rpb24gdG8gZ2V0IG1pY3Jvc2Vjb25kLWxldmVsCnRpbWluZy4gUmVwb3J0aW5n
IGJlbmNobWFyayBleGVjdXRpb24gdGltZXMgd2l0aCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMg
aW4gbWlsbGlzZWNvbmRzLgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJhc2U2NCAgICAgICAgICAgICAgICAgICAgbmV3NjQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKU3VuU3BpZGVyOgogICAzZC1jdWJlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4Ljk5MjUrLTQuMDMyNSAg
ICAgICAgICAgIDYuNzU3NistMC45NzYzICAgICAgICAgIG1pZ2h0IGJlIDEuMzMwN3ggZmFzdGVy
CiAgIDNkLW1vcnBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYu
NzM2MistMC4zMDE1ICAgICA/ICAgICAgNi45NTgwKy0wLjkxOTcgICAgICAgID8gbWlnaHQgYmUg
MS4wMzI5eCBzbG93ZXIKICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOS4zNDM1Ky0xLjM4MTkgICAgICAgICAgICA3Ljc2ODErLTEuMDU4NCAgICAg
ICAgICBtaWdodCBiZSAxLjIwMjh4IGZhc3RlcgogICBhY2Nlc3MtYmluYXJ5LXRyZWVzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjk3ODcrLTAuMTY2NSAgICAgPyAgICAgIDMuMTU4
MistMC4xNzY3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDYwMnggc2xvd2VyCiAgIGFjY2Vzcy1mYW5u
a3VjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuODM4MCstMS4yNTA4ICAg
ICAgICAgICAxMS4yNzIxKy0xLjU0NTEgICAgICAgICAgbWlnaHQgYmUgMS4wNTAyeCBmYXN0ZXIK
ICAgYWNjZXNzLW5ib2R5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy41
MzEyKy0wLjc0NzggICAgID8gICAgICAzLjgxNDcrLTEuMjk2OCAgICAgICAgPyBtaWdodCBiZSAx
LjA4MDN4IHNsb3dlcgogICBhY2Nlc3MtbnNpZXZlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzLjgyNDArLTAuMjExMyAgICAgPyAgICAgIDUuMjk2NCstMi40MTQzICAgICAg
ICA/IG1pZ2h0IGJlIDEuMzg1MXggc2xvd2VyCiAgIGJpdG9wcy0zYml0LWJpdHMtaW4tYnl0ZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEuNTA1MCstMC4xMDUwICAgICA/ICAgICAgMS41MTAw
Ky0wLjA0MjcgICAgICAgID8KICAgYml0b3BzLWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNC4yMDE5Ky0wLjc1NzcgICAgICAgICAgICA0LjA4NDErLTAuMjE0OSAg
ICAgICAgICBtaWdodCBiZSAxLjAyODh4IGZhc3RlcgogICBiaXRvcHMtYml0d2lzZS1hbmQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjYyMzcrLTAuMDcwMSAgICAgPyAgICAgIDIu
NjMxOSstMC4wOTYzICAgICAgICA/CiAgIGJpdG9wcy1uc2lldmUtYml0cyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUuMzY3MSstMC44NTEyICAgICAgICAgICAgNS4xMzg1Ky0wLjY1
NDUgICAgICAgICAgbWlnaHQgYmUgMS4wNDQ1eCBmYXN0ZXIKICAgY29udHJvbGZsb3ctcmVjdXJz
aXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy44NzE1Ky0wLjE4NTcgICAgID8gICAg
ICAzLjg5NjQrLTAuMTQwMCAgICAgICAgPwogICBjcnlwdG8tYWVzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1Ljg0NzIrLTEuNTMwNSAgICAgPyAgICAgIDYuNDQ3Myst
Mi4xNjYxICAgICAgICA/IG1pZ2h0IGJlIDEuMTAyNnggc2xvd2VyCiAgIGNyeXB0by1tZDUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMzQ3MSstMC4zOTkwICAgICA/
ICAgICAgMy43Nzg1Ky0xLjYzNDEgICAgICAgID8gbWlnaHQgYmUgMS4xMjg5eCBzbG93ZXIKICAg
Y3J5cHRvLXNoYTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy45NTY5
Ky0wLjUyMTAgICAgICAgICAgICAzLjY1MzArLTAuNDUwOCAgICAgICAgICBtaWdodCBiZSAxLjA4
MzJ4IGZhc3RlcgogICBkYXRlLWZvcm1hdC10b2Z0ZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA4LjYyMTYrLTAuMjU3MSAgICAgPyAgICAgIDkuNzczNistMS4zOTA1ICAgICAgICA/
IG1pZ2h0IGJlIDEuMTMzNnggc2xvd2VyCiAgIGRhdGUtZm9ybWF0LXhwYXJiICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDYuMjMxMystMC42OTQ1ICAgICAgICAgICAgNi4xNzY4Ky0w
LjYwNjcgICAgICAgIAogICBtYXRoLWNvcmRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzLjkzMTkrLTAuNDEyNSAgICAgICAgICAgIDMuNzEyMistMC4xMTI3ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDU5MnggZmFzdGVyCiAgIG1hdGgtcGFydGlhbC1zdW1zICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDYuMTg3MSstMC4xMjQwICAgICA/ICAgICAgNi42ODIw
Ky0wLjY4MDggICAgICAgID8gbWlnaHQgYmUgMS4wODAweCBzbG93ZXIKICAgbWF0aC1zcGVjdHJh
bC1ub3JtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi42NTY4Ky0wLjEyODAgICAg
ID8gICAgICAyLjgxNDUrLTAuNTMzMyAgICAgICAgPyBtaWdodCBiZSAxLjA1OTR4IHNsb3dlcgog
ICByZWdleHAtZG5hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4Ljcw
NTArLTAuOTA3MCAgICAgPyAgICAgIDkuMzE2OCstMS41MDI2ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDcwM3ggc2xvd2VyCiAgIHN0cmluZy1iYXNlNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDYuMTgyMystMC40MDg3ICAgICAgICAgICAgNS42NTg2Ky0wLjE5NjQgICAgICAg
ICAgbWlnaHQgYmUgMS4wOTI1eCBmYXN0ZXIKICAgc3RyaW5nLWZhc3RhICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOS4wMzg5Ky0wLjQ4NzAgICAgICAgICAgICA4LjYyMTAr
LTAuNjA3MyAgICAgICAgICBtaWdodCBiZSAxLjA0ODV4IGZhc3RlcgogICBzdHJpbmctdGFnY2xv
dWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjUwMTErLTAuNDI2MyAgICAg
PyAgICAgMTIuMDI3MistMC44OTk1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ1N3ggc2xvd2VyCiAg
IHN0cmluZy11bnBhY2stY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuOTc2
NystMC41NDM1ICAgICA/ICAgICAyNi42MjI4Ky0yLjc4ODUgICAgICAgID8gbWlnaHQgYmUgMS4x
MTA0eCBzbG93ZXIKICAgc3RyaW5nLXZhbGlkYXRlLWlucHV0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNS43Njc2Ky0wLjQ1OTkgICAgICAgICAgICA1LjY3MjcrLTAuMjI3MiAgICAgICAg
ICBtaWdodCBiZSAxLjAxNjd4IGZhc3RlcgoKICAgPGFyaXRobWV0aWM+ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNi41Njc5Ky0wLjE3MjIgICAgID8gICAgICA2LjY2MzIr
LTAuMjMzNiAgICAgICAgPyBtaWdodCBiZSAxLjAxNDV4IHNsb3dlcgoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NCAgICAgICAg
ICAgICAgICAgICAgbmV3NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
TG9uZ1NwaWRlcjoKICAgM2QtY3ViZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTEyNy45OTgxKy0xNC43MzQ0ICAgID8gICAxMTQwLjQwODMrLTEwLjQ3NTUgICAgICAg
PyBtaWdodCBiZSAxLjAxMTB4IHNsb3dlcgogICAzZC1tb3JwaCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgODI1Ljk3MzArLTcuNTY0OCAgICAgICAgICA4MjUuMDMzNist
MjguOTU1NSAgICAgICAKICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDg3Ny4zODY2Ky0xNy45MjE1ICAgID8gICAgODg1LjA2NDcrLTE5LjAxNzMgICAg
ICAgPwogICBhY2Nlc3MtYmluYXJ5LXRyZWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
MjQ0Ljc2NjkrLTE3LjU3ODAgICAgICAgIDEyMzMuODc1OSstMjcuMjI2NSAgICAgICAKICAgYWNj
ZXNzLWZhbm5rdWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM2MC41NDgwKy0x
Ny4yNTg5ICAgICAgICAgMzM1LjUzNTYrLTExLjY2OTUgICAgICAgICBtaWdodCBiZSAxLjA3NDV4
IGZhc3RlcgogICBhY2Nlc3MtbmJvZHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNzE5Ljc3NzErLTUuMTg0OSAgICAgICAgICA3MTQuODkyOCstNS42MzgzICAgICAgICAKICAg
YWNjZXNzLW5zaWV2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU3My44MTEw
Ky0zLjcxNTUgICAgID8gICAgNTc1LjI4MTcrLTQuNDAyMyAgICAgICAgPwogICBiaXRvcHMtM2Jp
dC1iaXRzLWluLWJ5dGUgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2LjU3NjcrLTEuNDA4NCAg
ICAgPyAgICAgNDcuNjA1MSstMC43NzU5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyMXggc2xvd2Vy
CiAgIGJpdG9wcy1iaXRzLWluLWJ5dGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTAu
NDk2OCstNi4yMDc3ICAgICAgICAgIDE1MC40ODUzKy0zLjAyMTkgICAgICAgIAogICBiaXRvcHMt
bnNpZXZlLWJpdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjM4LjYzODMrLTEyLjE2
MzEgICAgPyAgICA3MzcuMjA1NSstMjYzLjE0MzYgICAgICA/IG1pZ2h0IGJlIDEuMTU0M3ggc2xv
d2VyCiAgIGNvbnRyb2xmbG93LXJlY3Vyc2l2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA2
NDkuMTE2MCstNS4xODMxICAgICA/ICAgIDY0OS4zMTYxKy03Ljk5MjEgICAgICAgID8KICAgY3J5
cHRvLWFlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgyOS43MDU5Ky0x
MC44NDcyICAgID8gICAgODM0LjU2OTUrLTcuNzY3NCAgICAgICAgPwogICBjcnlwdG8tbWQ1ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzAyLjQ2NTUrLTkuMTI0NCAgICAg
ICAgICA2OTkuNDIwMCstMTAuMDcxOCAgICAgICAKICAgY3J5cHRvLXNoYTEgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDkyNy4zODQwKy0xOC4zODcxICAgICAgICAgOTE5Ljkz
ODQrLTMxLjU3MjYgICAgICAgCiAgIGRhdGUtZm9ybWF0LXRvZnRlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA2OTIuMDAzMistMTQuNTk0NSAgICA/ICAgIDcwNi45ODkxKy0xMi4xOTU3
ICAgICAgID8gbWlnaHQgYmUgMS4wMjE3eCBzbG93ZXIKICAgZGF0ZS1mb3JtYXQteHBhcmIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkzNi45ODA3Ky0xMDYuMjI5NyAgICAgICAgODk3
LjExNTkrLTMzLjExNDQgICAgICAgICBtaWdodCBiZSAxLjA0NDR4IGZhc3RlcgogICBoYXNoLW1h
cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEzLjYyMDMrLTMuMDg1
NSAgICAgPyAgICAyMTQuODcwMCstNi42ODIxICAgICAgICA/CiAgIG1hdGgtY29yZGljICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NzguOTg5NystMzYxLjA4NTkgICAgICAg
IDYxMS40MjQ1Ky05LjMwMTQgICAgICAgICAgbWlnaHQgYmUgMS4yNzQxeCBmYXN0ZXIKICAgbWF0
aC1wYXJ0aWFsLXN1bXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzOC4yMDc4Ky01
LjI5NDAgICAgICAgICAgNTM2LjM0ODArLTQuMTY3NyAgICAgICAgCiAgIG1hdGgtc3BlY3RyYWwt
bm9ybSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NzAuODgyMSstMzQuNzUwMyAgICA/
ICAgIDc3OS4yNzY1Ky04LjQzNDkgICAgICAgID8gbWlnaHQgYmUgMS4wMTA5eCBzbG93ZXIKICAg
c3RyaW5nLWJhc2U2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ3OC41NzMy
Ky03LjU3NzIgICAgICAgICAgNDc1LjY4NTErLTMuNjM4MCAgICAgICAgCiAgIHN0cmluZy1mYXN0
YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ODMuMDg5NCstOS4wODA0ICAg
ICAgICAgIDQ3Ny4xNzQyKy03LjYzMDYgICAgICAgICAgbWlnaHQgYmUgMS4wMTI0eCBmYXN0ZXIK
ICAgc3RyaW5nLXRhZ2Nsb3VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzNi45
ODI2Ky03Ljk2NDAgICAgID8gICAgMjQwLjczODYrLTQuNTIyNCAgICAgICAgPyBtaWdodCBiZSAx
LjAxNTh4IHNsb3dlcgoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDUzNC4xOTE0Ky01LjY4NzYgICAgICAgICAgNTMxLjEyMTArLTcuNDc4NSAgICAg
ICAgICBtaWdodCBiZSAxLjAwNTh4IGZhc3RlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NCAgICAgICAgICAgICAgICAgICAg
bmV3NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKVjhTcGlkZXI6CiAg
IGNyeXB0byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTQuOTYw
OCstMi4wOTIyICAgICA/ICAgICA1NS42MTU0Ky0yLjE0ODQgICAgICAgID8gbWlnaHQgYmUgMS4w
MTE5eCBzbG93ZXIKICAgZGVsdGFibHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA3Ni44ODAyKy0yLjE4ODYgICAgID8gICAgIDc4LjM0MjIrLTIuMTA0NCAgICAgICAg
PyBtaWdodCBiZSAxLjAxOTB4IHNsb3dlcgogICBlYXJsZXktYm95ZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDU1Ljg3ODArLTAuOTQwOCAgICAgPyAgICAgNjkuNDI3NCst
MzUuMjE2MyAgICAgICA/IG1pZ2h0IGJlIDEuMjQyNXggc2xvd2VyCiAgIHJheXRyYWNlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzYuOTc2OCstMC42NzQ4ICAgICA/
ICAgICAzOS4xNDUyKy0xLjgxNDEgICAgICAgID8gbWlnaHQgYmUgMS4wNTg2eCBzbG93ZXIKICAg
cmVnZXhwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4My40Mjkx
Ky0yOC40MDAxICAgICAgICAgIDc1Ljc2NzcrLTEuMjU1NyAgICAgICAgICBtaWdodCBiZSAxLjEw
MTF4IGZhc3RlcgogICByaWNoYXJkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDYxLjkyMDkrLTMuNjUyNyAgICAgICAgICAgNjEuMzYwNistMS43NzMyICAgICAgICAK
ICAgc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MC42
NjQyKy0yLjIyMDQgICAgID8gICAgIDUyLjQzNjMrLTUuMTc5OSAgICAgICAgPyBtaWdodCBiZSAx
LjAzNTB4IHNsb3dlcgoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1OC4wMjA2Ky0yLjYwNDYgICAgID8gICAgIDU5LjcyMjArLTMuOTc4OSAgICAg
ICAgPyBtaWdodCBiZSAxLjAyOTN4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NCAgICAgICAgICAgICAgICAgICAg
bmV3NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKT2N0YW5lOgogICBl
bmNyeXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI1Njcr
LTAuMDAxODcgICAgPyAgICAgMC4yMjU2OSstMC4wMDQwNSAgICAgICA/CiAgIGRlY3J5cHQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy45NjMwOSstMC4wMzAyOSAg
ICAgICAgICAzLjkzNjA2Ky0wLjAyMjI4ICAgICAgIAogICBkZWx0YWJsdWUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDAuMTkwNDErLTAuMDAzOTMgICAgPyAgICAgMC4x
OTQyNSstMC4wMjU5MiAgICAgICA/IG1pZ2h0IGJlIDEuMDIwMnggc2xvd2VyCiAgIGVhcmxleSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40MDk2OSstMC4wMDM0
MiAgICA/ICAgICAwLjQxMjAxKy0wLjAwNTIwICAgICAgID8KICAgYm95ZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjAxNDM2Ky0wLjA2MjI5ICAgIF4gICAg
IDYuOTIwMDcrLTAuMDI4NDMgICAgICAgXiBkZWZpbml0ZWx5IDEuMDEzNnggZmFzdGVyCiAgIG5h
dmllci1zdG9rZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgNi44MzM5Mist
MC4yMjYyMiAgICA/ICAgICA2Ljg5OTAxKy0wLjA2OTQxICAgICAgID8KICAgcmF5dHJhY2UgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgICAxLjEwOTYyKy0wLjAwNzI5ICAg
ID8gICAgIDEuMTExMzMrLTAuMDEyNTUgICAgICAgPwogICByaWNoYXJkcyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDAuMTE1ODYrLTAuMDAyNDYgICAgICAgICAgMC4x
MTU1MystMC4wMDI2MyAgICAgICAKICAgc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4MiAgICAgICAwLjYzNzAyKy0wLjAwNzE0ICAgID8gICAgIDAuNjQ4NjArLTAuMDIx
MTcgICAgICAgPyBtaWdodCBiZSAxLjAxODJ4IHNsb3dlcgogICByZWdleHAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgMjkuNzEwMzIrLTEzLjIyNTc5ICAgICAgICAy
NC43MjE0OSstMC40MjE5NyAgICAgICAgIG1pZ2h0IGJlIDEuMjAxOHggZmFzdGVyCiAgIHBkZmpz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICA1NC4zMjIzNSstMS40
MDQzOSAgICA/ICAgIDY3Ljg5ODYzKy0zMy4yMzE3MCAgICAgID8gbWlnaHQgYmUgMS4yNDk5eCBz
bG93ZXIKICAgbWFuZHJlZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAg
IDY0LjA4MjE0Ky0wLjcwNjU1ICAgID8gICAgNjQuNzA0MTkrLTIuMTc1NzcgICAgICAgPwogICBn
YmVtdSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgMzUuNDQ4MTAr
LTAuNTMyMzMgICAgICAgICAzNS4yOTQzMistMC4zMzE0OSAgICAgICAKICAgY2xvc3VyZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjcxNjU2Ky0wLjAxMTE3ICAg
ID8gICAgIDAuNzI4ODArLTAuMDE0MjAgICAgICAgPyBtaWdodCBiZSAxLjAxNzF4IHNsb3dlcgog
ICBqcXVlcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuNTgx
ODYrLTAuMTMyODcgICAgPyAgICAgOS44MzcwNCstMC4xMjk3NiAgICAgICA/IG1pZ2h0IGJlIDEu
MDI2Nnggc2xvd2VyCiAgIGJveDJkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eDIgICAgICAxMy42MzQwOSstMC4wNTQwMyAgICAgICAgIDEzLjUwODU5Ky0wLjExOTA5ICAgICAg
IAogICB6bGliICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICA1MDIu
MjU4OTArLTIxLjEzODg0ICAgICAgIDQ5OS4zOTI1MistNC44MTcyNCAgICAgICAKICAgdHlwZXNj
cmlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgOTA1LjM5MDk5Ky0xMC42
NzQ0MyAgID8gICA5MzEuMTExNDUrLTM1LjAyNzYzICAgICAgPyBtaWdodCBiZSAxLjAyODR4IHNs
b3dlcgoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA3LjMzODkwKy0wLjE4MzAyICAgID8gICAgIDcuMzg5NDYrLTAuMjA3OTYgICAgICAgPyBtaWdo
dCBiZSAxLjAwNjl4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NCAgICAgICAgICAgICAgICAgICAgbmV3NjQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKS3Jha2VuOgogICBhaS1hc3RhciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyNC44MTArLTMuNDkyICAg
ICAgICAgICAgMTI0LjQ1NCstNy41NTIgICAgICAgICAKICAgYXVkaW8tYmVhdC1kZXRlY3Rpb24g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTUuNjQxKy0xLjUyOSAgICAgID8gICAgICA1
Ny42NTQrLTQuNzU4ICAgICAgICAgPyBtaWdodCBiZSAxLjAzNjJ4IHNsb3dlcgogICBhdWRpby1k
ZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1My45MjUrLTIuNTI1
ICAgICAgPyAgICAgMTU1LjAwMistNC4xNzkgICAgICAgICA/CiAgIGF1ZGlvLWZmdCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzLjQyOSstMS4xMzIgICAgICAgICAg
ICAgNDIuNTk1Ky0xLjIyNyAgICAgICAgICAgbWlnaHQgYmUgMS4wMTk2eCBmYXN0ZXIKICAgYXVk
aW8tb3NjaWxsYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjUuMDE4Ky0y
Ljg3MiAgICAgID8gICAgICA2Ni43ODYrLTQuMTUxICAgICAgICAgPyBtaWdodCBiZSAxLjAyNzJ4
IHNsb3dlcgogICBpbWFnaW5nLWRhcmtyb29tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA4Mi4yNjcrLTIuNDI2ICAgICAgPyAgICAgIDgzLjM4OSstMS44MzcgICAgICAgICA/IG1p
Z2h0IGJlIDEuMDEzNnggc2xvd2VyCiAgIGltYWdpbmctZGVzYXR1cmF0ZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDgzLjkyNistMTAuNjEzICAgICAgICAgICAgODIuODg4Ky00LjYy
MiAgICAgICAgICAgbWlnaHQgYmUgMS4wMTI1eCBmYXN0ZXIKICAgaW1hZ2luZy1nYXVzc2lhbi1i
bHVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODUuNDIyKy03LjM0MSAgICAgID8gICAg
ICA4Ny43OTYrLTMuODM0ICAgICAgICAgPyBtaWdodCBiZSAxLjAyNzh4IHNsb3dlcgogICBqc29u
LXBhcnNlLWZpbmFuY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MS44NDYrLTMu
NTU3ICAgICAgPyAgICAgIDUzLjIxMSstMi4zNzkgICAgICAgICA/IG1pZ2h0IGJlIDEuMDI2M3gg
c2xvd2VyCiAgIGpzb24tc3RyaW5naWZ5LXRpbmRlcmJveCAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMzLjM0NCstMi42NzIgICAgICAgICAgICAgMzEuODA1Ky0yLjI0OSAgICAgICAgICAgbWln
aHQgYmUgMS4wNDg0eCBmYXN0ZXIKICAgc3RhbmZvcmQtY3J5cHRvLWFlcyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNTQuNTQyKy0zLjE1NyAgICAgID8gICAgICA2My4wNDArLTIxLjQ4
OCAgICAgICAgPyBtaWdodCBiZSAxLjE1NTh4IHNsb3dlcgogICBzdGFuZm9yZC1jcnlwdG8tY2Nt
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ni4zMTIrLTQuNDc1ICAgICAgPyAgICAg
IDQ5LjIyOCstMi4zNDAgICAgICAgICA/IG1pZ2h0IGJlIDEuMDYzMHggc2xvd2VyCiAgIHN0YW5m
b3JkLWNyeXB0by1wYmtkZjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM1Ljc4MCstMy44
ODAgICAgICA/ICAgICAxMzguOTY5Ky0zLjMxMSAgICAgICAgID8gbWlnaHQgYmUgMS4wMjM1eCBz
bG93ZXIKICAgc3RhbmZvcmQtY3J5cHRvLXNoYTI1Ni1pdGVyYXRpdmUgICAgICAgICAgICAgICAg
ICAgNTUuMjAzKy0xLjc3OSAgICAgICAgICAgICA1MS44MzMrLTEuODYzICAgICAgICAgICBtaWdo
dCBiZSAxLjA2NTB4IGZhc3RlcgoKICAgPGFyaXRobWV0aWM+ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNzYuNTMzKy0xLjA0MSAgICAgID8gICAgICA3Ny43NjErLTEuNjgx
ICAgICAgICAgPyBtaWdodCBiZSAxLjAxNjB4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NCAgICAgICAgICAgICAg
ICAgICAgbmV3NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKSlNSZWdy
ZXNzOgogICBhYmMtZm9yd2FyZC1sb29wLWVxdWFsICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMyLjI5ODkrLTEuNDU5MyAgICAgPyAgICAgMzYuMzk0NCstMTAuMjU0OCAgICAgICA/IG1pZ2h0
IGJlIDEuMTI2OHggc2xvd2VyCiAgIGFiYy1wb3N0Zml4LWJhY2t3YXJkLWxvb3AgICAgICAgICAg
ICAgICAgICAgICAgICAgNDYuNzI2OCstMTIuNTY4MyAgICAgICAgICA0MC4zNjUxKy0xLjcxMDkg
ICAgICAgICAgbWlnaHQgYmUgMS4xNTc2eCBmYXN0ZXIKICAgYWJjLXNpbXBsZS1iYWNrd2FyZC1s
b29wICAgICAgICAgICAgICAgICAgICAgICAgICAzMy4wNzk4Ky0xLjcxNDIgICAgICAgICAgIDMx
LjkzNjYrLTEuODY5NSAgICAgICAgICBtaWdodCBiZSAxLjAzNTh4IGZhc3RlcgogICBhYmMtc2lt
cGxlLWZvcndhcmQtbG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLjU4MTMrLTEuODI1
NyAgICAgPyAgICAgMzIuODQwOCstMS44NjgxICAgICAgICA/CiAgIGFiYy1za2lwcHktbG9vcCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjguNTk2OSstMS45Njc1ICAgICAgICAg
ICAyOC4xNDA4Ky0xLjM2NjYgICAgICAgICAgbWlnaHQgYmUgMS4wMTYyeCBmYXN0ZXIKICAgYWJz
LWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4yODc2Ky0w
LjQzMTEgICAgICAgICAgICAzLjIzNzIrLTAuMzgzNyAgICAgICAgICBtaWdodCBiZSAxLjAxNTV4
IGZhc3RlcgogICBhZGFwdC10by1kb3VibGUtZGl2aWRlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDE5LjEwMjYrLTAuNjEzOCAgICAgPyAgICAgMjAuMDY1OCstMC44NDcyICAgICAgICA/IG1p
Z2h0IGJlIDEuMDUwNHggc2xvd2VyCiAgIGFsaWFzZWQtYXJndW1lbnRzLWdldGJ5dmFsICAgICAg
ICAgICAgICAgICAgICAgICAgIDEuNDIyNSstMC4wOTIyICAgICA/ICAgICAgMS41NjMxKy0wLjM1
NjggICAgICAgID8gbWlnaHQgYmUgMS4wOTg4eCBzbG93ZXIKICAgYWxsb2NhdGUtYmlnLW9iamVj
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi44NDY4Ky0wLjA5NzYgICAgID8gICAg
ICAzLjIxMTcrLTAuNjU5MiAgICAgICAgPyBtaWdodCBiZSAxLjEyODJ4IHNsb3dlcgogICBhcmd1
bWVudHMtbmFtZWQtYW5kLXJlZmxlY3RpdmUgICAgICAgICAgICAgICAgICAgIDExLjA5NTMrLTAu
Njk0OSAgICAgICAgICAgMTAuNTgwNCstMC41MDY5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ4N3gg
ZmFzdGVyCiAgIGFyZ3VtZW50cy1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDkuNDYzMSstMS4xNDA0ICAgICAgICAgICAgOC41NjQwKy0wLjE0MDEgICAgICAgICAgbWln
aHQgYmUgMS4xMDUweCBmYXN0ZXIKICAgYXJndW1lbnRzLXN0cmljdC1tb2RlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0Ny45MjI4Ky0yLjAzMDggICAgID8gICAgIDQ4LjI5MDgrLTEuMTgy
NSAgICAgICAgPwogICBhcmd1bWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA4LjMxMTkrLTAuMzIwOCAgICAgPyAgICAgIDkuMDY0NSstMS41MzY3ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDkwNXggc2xvd2VyCiAgIGFyaXR5LW1pc21hdGNoLWlubGluaW5nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEuMTY3NistMC4wNjU1ICAgICA/ICAgICAgMS4zMDg3Ky0w
LjMzOTQgICAgICAgID8gbWlnaHQgYmUgMS4xMjA5eCBzbG93ZXIKICAgYXJyYXktYWNjZXNzLXBv
bHltb3JwaGljLXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgNS40NzkzKy0wLjkxMzIgICAgICAg
ICAgICA1LjQwNTArLTAuNTQzMyAgICAgICAgICBtaWdodCBiZSAxLjAxMzh4IGZhc3RlcgogICBh
cnJheS1ub25hcnJheS1wb2x5bW9yaHBpYy1hY2Nlc3MgICAgICAgICAgICAgICAgIDI5LjM0MTEr
LTAuOTc3NSAgICAgICAgICAgMjguNDI2MCstMC42NDU1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMy
MnggZmFzdGVyCiAgIGFycmF5LXByb3RvdHlwZS1ldmVyeSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOTUuODE0MCstMS41OTM3ICAgICA/ICAgICA5OC43NDQwKy00LjcwOTkgICAgICAgID8g
bWlnaHQgYmUgMS4wMzA2eCBzbG93ZXIKICAgYXJyYXktcHJvdG90eXBlLWZvckVhY2ggICAgICAg
ICAgICAgICAgICAgICAgICAgICA5OC40MTkxKy0zLjk5NDggICAgICAgICAgIDk3LjY3MTcrLTMu
ODQ4OSAgICAgICAgCiAgIGFycmF5LXByb3RvdHlwZS1tYXAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOTkuNzIwMCstMi4zOTgxICAgICAgICAgICA5Ny4xMDc1Ky00LjE3NzggICAgICAg
ICAgbWlnaHQgYmUgMS4wMjY5eCBmYXN0ZXIKICAgYXJyYXktcHJvdG90eXBlLXJlZHVjZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA5Ny4yMzM4Ky0zLjQ0NDAgICAgICAgICAgIDkyLjA5NzIr
LTMuMTQ2NSAgICAgICAgICBtaWdodCBiZSAxLjA1NTh4IGZhc3RlcgogICBhcnJheS1wcm90b3R5
cGUtcmVkdWNlUmlnaHQgICAgICAgICAgICAgICAgICAgICAgMTEzLjYxOTMrLTUuMTU1NiAgICAg
PyAgICAxMTMuNzE4OSstMS45OTUwICAgICAgICA/CiAgIGFycmF5LXByb3RvdHlwZS1zb21lICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOTcuNDcxNistMi43NDQ4ICAgICA/ICAgIDEwMC4y
NTgxKy0zLjAwNTQgICAgICAgID8gbWlnaHQgYmUgMS4wMjg2eCBzbG93ZXIKICAgYXJyYXktc3Bs
aWNlLWNvbnRpZ3VvdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAzMi4xNzUwKy0xLjc5OTAg
ICAgID8gICAgIDMyLjM0MDMrLTEuNTc3NCAgICAgICAgPwogICBhcnJheS13aXRoLWRvdWJsZS1h
ZGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjYyMTMrLTAuMjU5MyAgICAgPyAgICAg
IDQuNzgxOSstMC40NjUwICAgICAgICA/IG1pZ2h0IGJlIDEuMDM0OHggc2xvd2VyCiAgIGFycmF5
LXdpdGgtZG91YmxlLWluY3JlbWVudCAgICAgICAgICAgICAgICAgICAgICAgIDQuMjg3NCstMC41
Nzc1ICAgICA/ICAgICAgNC40NDQ1Ky0wLjUxOTUgICAgICAgID8gbWlnaHQgYmUgMS4wMzY3eCBz
bG93ZXIKICAgYXJyYXktd2l0aC1kb3VibGUtbXVsLWFkZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgNS42MTYyKy0wLjU5NjUgICAgICAgICAgICA1LjU0MjYrLTAuNDUwOSAgICAgICAgICBtaWdo
dCBiZSAxLjAxMzN4IGZhc3RlcgogICBhcnJheS13aXRoLWRvdWJsZS1zdW0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0LjAyOTkrLTAuMTA4MSAgICAgICAgICAgIDQuMDE2MCstMC4yNDE3
ICAgICAgICAKICAgYXJyYXktd2l0aC1pbnQzMi1hZGQtc3ViICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNi44NTE0Ky0wLjMyMTAgICAgICAgICAgICA2Ljc2MTQrLTAuMzc2MCAgICAgICAgICBt
aWdodCBiZSAxLjAxMzN4IGZhc3RlcgogICBhcnJheS13aXRoLWludDMyLW9yLWRvdWJsZS1zdW0g
ICAgICAgICAgICAgICAgICAgICA0LjQ1NzQrLTAuNTAxOCAgICAgICAgICAgIDQuMDYxMCstMC4x
MzA0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDk3NnggZmFzdGVyCiAgIEFycmF5QnVmZmVyLURhdGFW
aWV3LWFsbG9jLWxhcmdlLWxvbmctbGl2ZWQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1Ni43MjA3Ky0yLjA4NjIgICAgID8gICAgIDU2Ljgz
NDYrLTEuMDM3NCAgICAgICAgPwogICBBcnJheUJ1ZmZlci1EYXRhVmlldy1hbGxvYy1sb25nLWxp
dmVkICAgICAgICAgICAgIDIwLjQxMjQrLTEuMzI3NyAgICAgPyAgICAgMjEuNjkzMSstMS4xNTAx
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDYyN3ggc2xvd2VyCiAgIEFycmF5QnVmZmVyLUludDMyQXJy
YXktYnl0ZU9mZnNldCAgICAgICAgICAgICAgICAgIDQuNTEwNSstMC4xNjk0ICAgICA/ICAgICAg
NS4wNjc4Ky0wLjkwODcgICAgICAgID8gbWlnaHQgYmUgMS4xMjM2eCBzbG93ZXIKICAgQXJyYXlC
dWZmZXItSW50OEFycmF5LWFsbG9jLWxhcmdlLWxvbmctbGl2ZWQgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ni43MDgzKy0xLjQzOTYgICAg
ICAgICAgIDU1Ljg0MTQrLTEuODQwMSAgICAgICAgICBtaWdodCBiZSAxLjAxNTV4IGZhc3Rlcgog
ICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZC1idWZmZXIgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNy42Njg3Ky0x
LjY1NTYgICAgID8gICAgIDMwLjE0MTArLTIuNTQyMCAgICAgICAgPyBtaWdodCBiZSAxLjA4OTR4
IHNsb3dlcgogICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAg
ICAgIDE5Ljc1NTUrLTEuNzczMSAgICAgPyAgICAgMjEuMDY5NystMy40MjYzICAgICAgICA/IG1p
Z2h0IGJlIDEuMDY2NXggc2xvd2VyCiAgIEFycmF5QnVmZmVyLUludDhBcnJheS1hbGxvYyAgICAg
ICAgICAgICAgICAgICAgICAgMTcuMTA3OCstMS4yMjkwICAgICA/ICAgICAxOC4wNTg4Ky0xLjg3
MzcgICAgICAgID8gbWlnaHQgYmUgMS4wNTU2eCBzbG93ZXIKICAgYXJyb3dmdW5jdGlvbi1jYWxs
LWluLWNsYXNzLWNvbnN0cnVjdG9yICAgICAgICAgICA4OS42MTYzKy0xLjc3OTUgICAgICEgICAg
IDk0LjQzOTQrLTIuNjI0MSAgICAgICAgISBkZWZpbml0ZWx5IDEuMDUzOHggc2xvd2VyCiAgIGFy
cm93ZnVuY3Rpb24tY2FsbC1pbi1jbGFzcy1tZXRob2QgICAgICAgICAgICAgICAgMzQuNjgwNyst
MS44Mzg3ICAgICA/ICAgICAzNC42OTQwKy0yLjk5MjcgICAgICAgID8KICAgYXJyb3dmdW5jdGlv
bi1jYWxsLWluLWZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAxNS45MTYyKy0wLjM2NDMgICAg
ID8gICAgIDE2LjI3ODArLTEuMDUzMiAgICAgICAgPyBtaWdodCBiZSAxLjAyMjd4IHNsb3dlcgog
ICBhcnJvd2Z1bmN0aW9uLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjIy
MzcrLTEuMjA3NCAgICAgICAgICAgMTEuOTk1NCstMC41MTYzICAgICAgICAgIG1pZ2h0IGJlIDEu
MDE5MHggZmFzdGVyCiAgIGFzbWpzX2Jvb2xfYnVnICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDkuNzU5OCstMC41NDE4ICAgICA/ICAgICAxMS4yMjMyKy0zLjI2NjAgICAgICAg
ID8gbWlnaHQgYmUgMS4xNDk5eCBzbG93ZXIKICAgYXNzaWduLWN1c3RvbS1zZXR0ZXItcG9seW1v
cnBoaWMgICAgICAgICAgICAgICAgICAgMy40NTk3Ky0wLjE4NDEgICAgID8gICAgICAzLjU5Mzcr
LTAuNDcyOCAgICAgICAgPyBtaWdodCBiZSAxLjAzODd4IHNsb3dlcgogICBhc3NpZ24tY3VzdG9t
LXNldHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljk5OTArLTAuMTUzMyAgICAg
PyAgICAgIDUuMTQ5OSstMC4zNjU2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMwMnggc2xvd2VyCiAg
IGJhc2ljLXNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuNDkx
NSstNS44ODk0ICAgICA/ICAgICAxMy45NzU3Ky01LjIyMTkgICAgICAgID8gbWlnaHQgYmUgMS4w
MzU5eCBzbG93ZXIKICAgYmlnLWludC1tdWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNC4yMzU4Ky0wLjEzNDYgICAgID8gICAgICA0LjMxMzIrLTAuMTI0NCAgICAgICAg
PyBtaWdodCBiZSAxLjAxODN4IHNsb3dlcgogICBib29sZWFuLXRlc3QgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0LjIzOTcrLTAuMjk4NSAgICAgPyAgICAgIDQuMjU4OSst
MC40MTg4ICAgICAgICA/CiAgIGJyYW5jaC1mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUuMzc2NystMC4xODU1ICAgICA/ICAgICAgNi4wMzc3Ky0xLjgzNjAgICAg
ICAgID8gbWlnaHQgYmUgMS4xMjI5eCBzbG93ZXIKICAgYnJhbmNoLW9uLXN0cmluZy1hcy1ib29s
ZWFuICAgICAgICAgICAgICAgICAgICAgICAxNC40MzU2Ky0xLjA0MTggICAgID8gICAgIDE0Ljcx
NjArLTEuMDA4NiAgICAgICAgPyBtaWdodCBiZSAxLjAxOTR4IHNsb3dlcgogICBidWlsZC1sYXJn
ZS1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ5LjMzMTcrLTIuNjY4OCAg
ICAgPyAgICAgNDkuODYyNCstMS45MjIyICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwOHggc2xvd2Vy
CiAgIGJ5LXZhbC1nZW5lcmljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUu
MjUxOCstMC4yNTAyICAgICA/ICAgICAgNS42NTE1Ky0wLjY3OTQgICAgICAgID8gbWlnaHQgYmUg
MS4wNzYxeCBzbG93ZXIKICAgY2FsbC1zcHJlYWQtYXBwbHkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0NC42ODU0Ky0zLjUwMjEgICAgICAgICAgIDQzLjk4NDcrLTEuNzU4NiAgICAg
ICAgICBtaWdodCBiZSAxLjAxNTl4IGZhc3RlcgogICBjYWxsLXNwcmVhZC1jYWxsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQ3Ljc1MDgrLTEuNTIxNSAgICAgPyAgICAgNDguNDk0
OSstMS43ODgzICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1Nnggc2xvd2VyCiAgIGNhcHR1cmVkLWFz
c2lnbm1lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuODQ2NSstMC40MDgwICAg
ICAgICAgICAgMC41ODI2Ky0wLjA1MzcgICAgICAgICAgbWlnaHQgYmUgMS40NTI4eCBmYXN0ZXIK
ICAgY2FzdC1pbnQtdG8tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi41
NjU1Ky0wLjI4MTcgICAgICAgICAgICA2LjUyNjIrLTAuMjEwNyAgICAgICAgCiAgIGNlbGwtYXJn
dW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuOTA1MistMC42NzUy
ICAgICAgICAgICAgMy41ODA5Ky0wLjEyODcgICAgICAgICAgbWlnaHQgYmUgMS4wOTA2eCBmYXN0
ZXIKICAgY2ZnLXNpbXBsaWZ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
My43MDUwKy0wLjEzOTggICAgICAgICAgICAzLjcwNDArLTAuMjE3OCAgICAgICAgCiAgIGNoYWlu
LWdldHRlci1hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUuNjQ2NistMC44
MTcyICAgICAgICAgICAxNS4zNjQ1Ky0xLjI0MDYgICAgICAgICAgbWlnaHQgYmUgMS4wMTg0eCBm
YXN0ZXIKICAgY21wZXEtb2JqLXRvLW9iai1vdGhlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMS4zNzQ1Ky0wLjQ2MjQgICAgID8gICAgIDEyLjEwODErLTEuMjMyNSAgICAgICAgPyBtaWdo
dCBiZSAxLjA2NDV4IHNsb3dlcgogICBjb25zdGFudC10ZXN0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1Ljg5MzQrLTAuMDc3NyAgICAgPyAgICAgIDYuMDk4NCstMC4yNTg4
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM0OHggc2xvd2VyCiAgIGNyZWF0ZS1sb3RzLW9mLWZ1bmN0
aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuODE0NSstMC45NDIxICAgICA/ICAgICAx
Mi44NzU4Ky0xLjA0NzcgICAgICAgID8KICAgY3NlLW5ldy1hcnJheS1idWZmZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMi43MjM0Ky0wLjA4OTQgICAgID8gICAgICAyLjc5NzIrLTAu
MjA3MCAgICAgICAgPyBtaWdodCBiZSAxLjAyNzF4IHNsb3dlcgogICBjc2UtbmV3LWFycmF5ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjg0NzkrLTAuMTE4MiAgICAgICAg
ICAgIDIuODMzOSstMC4wNDExICAgICAgICAKICAgY3VzdG9tLXNldHRlci1nZXR0ZXItYXMtcHV0
LWdldC1ieS1pZCAgICAgICAgICAgICAgMC45MDE4Ky0wLjU2MTkgICAgICAgICAgICAwLjY4MDUr
LTAuMDIzNiAgICAgICAgICBtaWdodCBiZSAxLjMyNTJ4IGZhc3RlcgogICBEYXRhVmlldy1jdXN0
b20tcHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgIDY0LjQyMzErLTIuNzM5MyAgICAg
PyAgICAgNjQuNDgyMystMi41OTkwICAgICAgICA/CiAgIGRlbGF5LXRlYXItb2ZmLWFyZ3VtZW50
cy1zdHJpY3Rtb2RlICAgICAgICAgICAgICAgIDUuNTU3MystMC41OTA5ICAgICA/ICAgICAgNi41
MDY2Ky0wLjQ2NzIgICAgICAgID8gbWlnaHQgYmUgMS4xNzA4eCBzbG93ZXIKICAgZGVsdGFibHVl
LXZhcmFyZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1My4wODQxKy0xLjAyODIg
ICAgID8gICAgIDUzLjM2NjcrLTEuNDQ5MSAgICAgICAgPwogICBkZXN0cnVjdHVyaW5nLWFyZ3Vt
ZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgMjE0LjI5NTcrLTYuMDI4NyAgICAgPyAgICAy
MjEuNTMyOSstMTcuNTEwNiAgICAgICA/IG1pZ2h0IGJlIDEuMDMzOHggc2xvd2VyCiAgIGRlc3Ry
dWN0dXJpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNjY2MistMC4wODA4
ICAgICAgICAgICAgMC42NDIwKy0wLjA0NDkgICAgICAgICAgbWlnaHQgYmUgMS4wMzc3eCBmYXN0
ZXIKICAgZGVzdHJ1Y3R1cmluZy1zd2FwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ni4wNjA1Ky0wLjE5NDcgICAgICAgICAgICA1Ljg1NDMrLTAuMTk4OCAgICAgICAgICBtaWdodCBi
ZSAxLjAzNTJ4IGZhc3RlcgogICBkaXJlY3QtYXJndW1lbnRzLWdldGJ5dmFsICAgICAgICAgICAg
ICAgICAgICAgICAgICAxLjY3MDcrLTAuNDE3MSAgICAgICAgICAgIDEuNjE0OCstMC41NTUwICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDM0NnggZmFzdGVyCiAgIGRpdi1ib29sZWFuLWRvdWJsZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMjk5NCstMC4zNTk5ICAgICAgICAgICAgNS4x
Njc3Ky0wLjIxNzAgICAgICAgICAgbWlnaHQgYmUgMS4wMjU1eCBmYXN0ZXIKICAgZGl2LWJvb2xl
YW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC41ODEwKy0yLjIzNTQg
ICAgICAgICAgIDEwLjA5OTIrLTAuNzQ5NiAgICAgICAgICBtaWdodCBiZSAxLjA0Nzd4IGZhc3Rl
cgogICBkb3VibGUtZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAgICA1
LjY1MjArLTAuMjE5MiAgICAgICAgICAgIDUuNTczNystMC4yMTMxICAgICAgICAgIG1pZ2h0IGJl
IDEuMDE0MXggZmFzdGVyCiAgIGRvdWJsZS1wb2xsdXRpb24tZ2V0Ynl2YWwgICAgICAgICAgICAg
ICAgICAgICAgICAgMTEuMDY1MystMC41NDE4ICAgICAgICAgICAxMC45MTY5Ky0wLjUwMTAgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTM2eCBmYXN0ZXIKICAgZG91YmxlLXBvbGx1dGlvbi1wdXRieW9m
ZnNldCAgICAgICAgICAgICAgICAgICAgICAgNC42MzgyKy0wLjMwMTEgICAgID8gICAgICA0LjY4
MDQrLTAuNjAxNCAgICAgICAgPwogICBkb3VibGUtcmVhbC11c2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDM1LjcxMzUrLTIuMDI5MiAgICAgICAgICAgMzQuMzI5MCstMy4xMDM3
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQwM3ggZmFzdGVyCiAgIGRvdWJsZS10by1pbnQzMi10eXBl
ZC1hcnJheS1uby1pbmxpbmUgICAgICAgICAgICAgIDIuOTEzOCstMC4wNTQ4ICAgICA/ICAgICAg
Mi45NjUwKy0wLjExMjQgICAgICAgID8gbWlnaHQgYmUgMS4wMTc2eCBzbG93ZXIKICAgZG91Ymxl
LXRvLWludDMyLXR5cGVkLWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgMy4wNTU0Ky0wLjY3
MzIgICAgICAgICAgICAyLjYzMzArLTAuMzg1MyAgICAgICAgICBtaWdodCBiZSAxLjE2MDR4IGZh
c3RlcgogICBkb3VibGUtdG8tdWludDMyLXR5cGVkLWFycmF5LW5vLWlubGluZSAgICAgICAgICAg
ICAyLjk4MTArLTAuMDc1MiAgICAgPyAgICAgIDIuOTkxNSstMC4xNzE1ICAgICAgICA/CiAgIGRv
dWJsZS10by11aW50MzItdHlwZWQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgIDMuMTk0Mist
MC42NDgzICAgICAgICAgICAgMi43MTE5Ky0wLjIzODQgICAgICAgICAgbWlnaHQgYmUgMS4xNzc4
eCBmYXN0ZXIKICAgZWxpZGFibGUtbmV3LW9iamVjdC1kYWcgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzMi4wMTUxKy0xMi4zMjgwICAgICAgICAgIDI3LjQ3NjgrLTEuMzIyOCAgICAgICAgICBt
aWdodCBiZSAxLjE2NTJ4IGZhc3RlcgogICBlbGlkYWJsZS1uZXctb2JqZWN0LXJvZmxjb3B0ZXIg
ICAgICAgICAgICAgICAgICAgIDI5LjI3MDcrLTEuNTQ3OSAgICAgPyAgICAgMzEuODE5MCstNy4x
Mzc0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDg3MXggc2xvd2VyCiAgIGVsaWRhYmxlLW5ldy1vYmpl
Y3QtdGhlbi1jYWxsICAgICAgICAgICAgICAgICAgICAgMjIuODM4NystMC40Mzc4ICAgICAgICAg
ICAyMi43MjQzKy0wLjg4MjIgICAgICAgIAogICBlbGlkYWJsZS1uZXctb2JqZWN0LXRyZWUgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMxLjMzNDcrLTEwLjA4NzAgICAgICAgICAgMjguMjg1NCst
MS4xOTM0ICAgICAgICAgIG1pZ2h0IGJlIDEuMTA3OHggZmFzdGVyCiAgIGVtcHR5LXN0cmluZy1w
bHVzLWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMjIwNistMC40ODkyICAgICAg
ICAgICAgNS45NzYzKy0wLjEzMDYgICAgICAgICAgbWlnaHQgYmUgMS4wNDA5eCBmYXN0ZXIKICAg
ZW1zY3JpcHRlbi1jdWJlMmhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMi4zOTMw
Ky0zLjAxNzUgICAgID8gICAgIDMyLjcxMjgrLTAuOTMzMSAgICAgICAgPwogICBleGl0LWxlbmd0
aC1vbi1wbGFpbi1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgIDEzLjE0ODUrLTEuMTc4MyAg
ICAgPyAgICAgMTUuNDAzOSstOC45NDA5ICAgICAgICA/IG1pZ2h0IGJlIDEuMTcxNXggc2xvd2Vy
CiAgIGV4dGVybmFsLWFyZ3VtZW50cy1nZXRieXZhbCAgICAgICAgICAgICAgICAgICAgICAgIDEu
NDk5MSstMC4xMjEzICAgICAgICAgICAgMS40ODc4Ky0wLjA3MzAgICAgICAgIAogICBleHRlcm5h
bC1hcmd1bWVudHMtcHV0Ynl2YWwgICAgICAgICAgICAgICAgICAgICAgICAzLjU5MjQrLTAuOTYy
MCAgICAgICAgICAgIDIuODgwNCstMC4zMDcxICAgICAgICAgIG1pZ2h0IGJlIDEuMjQ3MnggZmFz
dGVyCiAgIGZpeGVkLXR5cGVkLWFycmF5LXN0b3JhZ2UtdmFyLWluZGV4ICAgICAgICAgICAgICAg
IDEuNDk4OSstMC4wMzMyICAgICA/ICAgICAgMS44MjcxKy0wLjU1OTEgICAgICAgID8gbWlnaHQg
YmUgMS4yMTkweCBzbG93ZXIKICAgZml4ZWQtdHlwZWQtYXJyYXktc3RvcmFnZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgMS4yMzIwKy0wLjA3NDggICAgICAgICAgICAxLjIwNzIrLTAuMDQzOSAg
ICAgICAgICBtaWdodCBiZSAxLjAyMDZ4IGZhc3RlcgogICBGbG9hdDMyQXJyYXktbWF0cml4LW11
bHQgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjA5NTgrLTIuNjUxNCAgICAgICAgICAgIDUu
OTMwMCstMC4yNDU3ICAgICAgICAgIG1pZ2h0IGJlIDEuMTk2NnggZmFzdGVyCiAgIEZsb2F0MzJB
cnJheS10by1GbG9hdDY0QXJyYXktc2V0ICAgICAgICAgICAgICAgICAgNTQuNTY5OSstMi41Nzg1
ICAgICAgICAgICA1NC4yMTM4Ky0yLjQzNDggICAgICAgIAogICBGbG9hdDY0QXJyYXktYWxsb2Mt
bG9uZy1saXZlZCAgICAgICAgICAgICAgICAgICAgIDgxLjg0NjkrLTEuMjY1MSAgICAgICAgICAg
ODEuNzE4NCstMi4xMTI2ICAgICAgICAKICAgRmxvYXQ2NEFycmF5LXRvLUludDE2QXJyYXktc2V0
ICAgICAgICAgICAgICAgICAgICA2Ni43NzQxKy0zLjA2OTMgICAgID8gICAgIDY3LjQwNzYrLTMu
MDAyNSAgICAgICAgPwogICBmb2xkLWRvdWJsZS10by1pbnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDE3LjI2MjcrLTAuODkwMCAgICAgICAgICAgMTYuODI0NystMS44MDQ5ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDI2MHggZmFzdGVyCiAgIGZvbGQtZ2V0LWJ5LWlkLXRvLW11bHRpLWdl
dC1ieS1vZmZzZXQtcmFyZS1pbnQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMS4xOTA4Ky0yLjY1NjEgICAgICAgICAgIDEwLjI4MDcrLTAu
NzAwMiAgICAgICAgICBtaWdodCBiZSAxLjA4ODV4IGZhc3RlcgogICBmb2xkLWdldC1ieS1pZC10
by1tdWx0aS1nZXQtYnktb2Zmc2V0ICAgICAgICAgICAgICA4LjIxOTQrLTAuNDg0NSAgICAgPyAg
ICAgIDguMjc3OCstMC40NzA3ICAgICAgICA/CiAgIGZvbGQtbXVsdGktZ2V0LWJ5LW9mZnNldC10
by1nZXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDYuNjUwOCstMi4xNDc5ICAgICAgICAgICAgNS45NjM1Ky0wLjI3NzAg
ICAgICAgICAgbWlnaHQgYmUgMS4xMTUyeCBmYXN0ZXIKICAgZm9sZC1tdWx0aS1nZXQtYnktb2Zm
c2V0LXRvLXBvbHktZ2V0LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA2LjEzNTUrLTAuODY5OSAgICAgPyAgICAgIDguMjMy
OCstNS45MzcxICAgICAgICA/IG1pZ2h0IGJlIDEuMzQxOHggc2xvd2VyCiAgIGZvbGQtbXVsdGkt
cHV0LWJ5LW9mZnNldC10by1wb2x5LXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC4wMDk2Ky0zLjQ1NDMgICAgICAg
ICAgICA1Ljg2MDIrLTAuMjA0NyAgICAgICAgICBtaWdodCBiZSAxLjM2Njh4IGZhc3RlcgogICBm
b2xkLW11bHRpLXB1dC1ieS1vZmZzZXQtdG8tcHV0LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjE4NjUrLTAuMTg4NSAg
ICAgPyAgICAgIDUuMjc3NistMC4zMjgxICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3Nnggc2xvd2Vy
CiAgIGZvbGQtbXVsdGktcHV0LWJ5LW9mZnNldC10by1yZXBsYWNlLW9yLXRyYW5zaXRpb24tcHV0
LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDE1LjMzODMrLTMuMDY0NSAgICAgICAgICAgMTIuNDA1MistMy43ODMzICAgICAg
ICAgIG1pZ2h0IGJlIDEuMjM2NHggZmFzdGVyCiAgIGZvbGQtcHV0LWJ5LWlkLXRvLW11bHRpLXB1
dC1ieS1vZmZzZXQgICAgICAgICAgICAgIDkuOTg0NystMC43Mjc4ICAgICAgICAgICAgOS41OTM4
Ky0wLjYwNDAgICAgICAgICAgbWlnaHQgYmUgMS4wNDA4eCBmYXN0ZXIKICAgZm9sZC1wdXQtYnkt
dmFsLXdpdGgtc3RyaW5nLXRvLW11bHRpLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS43Mjg2Ky0wLjU4NTkgICAg
ID8gICAgIDEwLjA5NTkrLTAuNDk1MiAgICAgICAgPyBtaWdodCBiZSAxLjAzNzh4IHNsb3dlcgog
ICBmb2xkLXB1dC1ieS12YWwtd2l0aC1zeW1ib2wtdG8tbXVsdGktcHV0LWJ5LW9mZnNldCAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5Ljk0
OTErLTEuMDkxMiAgICAgPyAgICAgMTEuNzY4NystMy41NjEwICAgICAgICA/IG1pZ2h0IGJlIDEu
MTgyOXggc2xvd2VyCiAgIGZvbGQtcHV0LXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDUuMjk4NistMC44NjEzICAgICAgICAgICAgNS4xMzE0Ky0wLjUwNDggICAgICAg
ICAgbWlnaHQgYmUgMS4wMzI2eCBmYXN0ZXIKICAgZm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50cmll
cyAgICAgICAgICAgICAgICAgICAgICAxMi43NjY5Ky0wLjc5NjAgICAgID8gICAgIDEzLjY4MTcr
LTAuNTA5MCAgICAgICAgPyBtaWdodCBiZSAxLjA3MTd4IHNsb3dlcgogICBmb3Itb2YtaXRlcmF0
ZS1hcnJheS1rZXlzICAgICAgICAgICAgICAgICAgICAgICAgICA0LjQ0MDIrLTAuMjczNCAgICAg
PyAgICAgIDQuNzYzOCstMC41MTQ3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDcyOXggc2xvd2VyCiAg
IGZvci1vZi1pdGVyYXRlLWFycmF5LXZhbHVlcyAgICAgICAgICAgICAgICAgICAgICAgIDQuNjY4
NystMC43MDk4ICAgICAgICAgICAgNC40NjEwKy0wLjc3MDcgICAgICAgICAgbWlnaHQgYmUgMS4w
NDY2eCBmYXN0ZXIKICAgZnJvdW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMy45NjYwKy0wLjQ4MjIgICAgID8gICAgIDE0LjA5MTErLTAuNjk3MiAgICAgICAg
PwogICBmdGwtbGlicmFyeS1pbmxpbmluZy1kYXRhdmlldyAgICAgICAgICAgICAgICAgICAgIDc3
Ljk2NDQrLTUuMjczNyAgICAgPyAgICAgODIuMTA3MystMy44NzQwICAgICAgICA/IG1pZ2h0IGJl
IDEuMDUzMXggc2xvd2VyCiAgIGZ0bC1saWJyYXJ5LWlubGluaW5nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzIuNTkyNSstMS40NDk5ICAgICAgICAgICAzMS44MDg3Ky0yLjA2MzAgICAg
ICAgICAgbWlnaHQgYmUgMS4wMjQ2eCBmYXN0ZXIKICAgZnRsLXBvbHltb3JwaGljLWJpdGFuZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIxNC4xMTQ5Ky01My40NDkwICAgICAgICAgMTkxLjI2
NjErLTMuODM1MiAgICAgICAgICBtaWdodCBiZSAxLjExOTV4IGZhc3RlcgogICBmdGwtcG9seW1v
cnBoaWMtYml0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTg5Ljg2MjcrLTYuMDEwMiAg
ICAgICAgICAxODkuMzYxNystMS42MTM3ICAgICAgICAKICAgZnRsLXBvbHltb3JwaGljLWJpdHhv
ciAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5MC4wNDEzKy02Ljk2MzQgICAgICAgICAgMTg4
LjM3NzYrLTMuMjg3OSAgICAgICAgCiAgIGZ0bC1wb2x5bW9ycGhpYy1kaXYgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2NjAuMzM4NSstNS41MDQzICAgICAgICAgIDY1My4yMjE0Ky00LjY3
MDIgICAgICAgICAgbWlnaHQgYmUgMS4wMTA5eCBmYXN0ZXIKICAgZnRsLXBvbHltb3JwaGljLWxz
aGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzNC40NTEyKy03LjAwNzUgICAgICAgICAg
MjMyLjYwMDUrLTYuMDkyMyAgICAgICAgCiAgIGZ0bC1wb2x5bW9ycGhpYy1tdWwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzNDMuNTk0NCstNS45NzQ5ICAgICAgICAgIDMzNi44MzA0Ky01
LjgzNzYgICAgICAgICAgbWlnaHQgYmUgMS4wMjAxeCBmYXN0ZXIKICAgZnRsLXBvbHltb3JwaGlj
LXJzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyOS43MzY2Ky02LjkwMTIgICAgID8g
ICAgMjMzLjU1ODcrLTEwLjExMzMgICAgICAgPyBtaWdodCBiZSAxLjAxNjZ4IHNsb3dlcgogICBm
dGwtcG9seW1vcnBoaWMtU3RyaW5nRnJvbUNoYXJDb2RlICAgICAgICAgICAgICAgIDYxLjY5Mjgr
LTUuMTE1MyAgICAgICAgICAgNTguODgzMystMi4zMjIyICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ3
N3ggZmFzdGVyCiAgIGZ0bC1wb2x5bW9ycGhpYy1zdWIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyNjUuNTY5NSstNC45NTA4ICAgICAgICAgIDI1OS43NDgzKy00Ljc3ODcgICAgICAgICAg
bWlnaHQgYmUgMS4wMjI0eCBmYXN0ZXIKICAgZnRsLXBvbHltb3JwaGljLXVyc2hpZnQgICAgICAg
ICAgICAgICAgICAgICAgICAgIDI1Mi44MzQxKy01LjE1ODcgICAgICAgICAgMjQ3LjY3MzErLTUu
ODIwNyAgICAgICAgICBtaWdodCBiZSAxLjAyMDh4IGZhc3RlcgogICBmdW5jdGlvbi1jYWxsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjcxNDcrLTAuODYzMiAgICAgICAg
ICAgMTQuNjE4MCstMC45MDQ0ICAgICAgICAKICAgZnVuY3Rpb24tZG90LWFwcGx5ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMi42NDQyKy0wLjE2NzYgICAgICAgICAgICAyLjU2MjMr
LTAuMDU0MiAgICAgICAgICBtaWdodCBiZSAxLjAzMjB4IGZhc3RlcgogICBmdW5jdGlvbi10ZXN0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjA4ODMrLTAuMTg5OCAgICAg
ICAgICAgIDQuMDAzNSstMC4xMTYwICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxMnggZmFzdGVyCiAg
IGZ1bmN0aW9uLXdpdGgtZXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjIuNzAy
MystMy4zODgwICAgICA/ICAgIDEyOS4yNTY4Ky00LjI2MDIgICAgICAgID8gbWlnaHQgYmUgMS4w
NTM0eCBzbG93ZXIKICAgZ2NzZS1wb2x5LWdldC1sZXNzLW9idmlvdXMgICAgICAgICAgICAgICAg
ICAgICAgICAxMi4yMTUzKy0wLjg4MTQgICAgID8gICAgIDEyLjUyODIrLTEuMDY0NCAgICAgICAg
PyBtaWdodCBiZSAxLjAyNTZ4IHNsb3dlcgogICBnY3NlLXBvbHktZ2V0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEyLjE0MzUrLTAuNTgwMSAgICAgPyAgICAgMTMuMzUxNCst
Mi45MTY0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDk5NXggc2xvd2VyCiAgIGdjc2UgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuOTM5OSstMC4xNzEzICAgICA/
ICAgICAgNC45NDEyKy0wLjM5MTUgICAgICAgID8KICAgZ2VuZXJhdG9yLWNyZWF0ZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4zMTgwKy0wLjUxNDIgICAgICAgICAgICAxLjA5
OTkrLTAuMjcxNyAgICAgICAgICBtaWdodCBiZSAxLjE5ODJ4IGZhc3RlcgogICBnZW5lcmF0b3It
ZmliICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM4LjEyNDIrLTUuMzg4NyAg
ICAgICAgICAxMzIuNjM0NystMi45Mzk4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQxNHggZmFzdGVy
CiAgIGdlbmVyYXRvci1mdW5jdGlvbi1jcmVhdGUgICAgICAgICAgICAgICAgICAgICAgICAgIDYu
MjUwMCstMi4yMDIzICAgICAgICAgICAgNC44NDEzKy0wLjMzODkgICAgICAgICAgbWlnaHQgYmUg
MS4yOTEweCBmYXN0ZXIKICAgZ2VuZXJhdG9yLXN1bnNwaWRlci1hY2Nlc3MtbnNpZXZlICAgICAg
ICAgICAgICAgICAgNy44NzQ2Ky0wLjk4MzMgICAgID8gICAgICA3Ljk3MjMrLTAuODI3OCAgICAg
ICAgPyBtaWdodCBiZSAxLjAxMjR4IHNsb3dlcgogICBnZW5lcmF0b3Itd2l0aC1zZXZlcmFsLXR5
cGVzICAgICAgICAgICAgICAgICAgICAgNDMzLjkzMTUrLTYuNjY4MyAgICAgICAgICA0MzEuNTcw
NCstNi44MjUzICAgICAgICAKICAgZ2V0LWJ5LWlkLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUt
ZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuMjMyOSstMC4xNTUzICAgICA/ICAgICAgMy41MjI4Ky0wLjUz
MTggICAgICAgID8gbWlnaHQgYmUgMS4wODk3eCBzbG93ZXIKICAgZ2V0LWJ5LWlkLWJpbW9ycGhp
Yy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS45OTY2Ky0wLjMyNTUgICAgID8gICAgICA2
LjIwMTQrLTAuMjMzOSAgICAgICAgPyBtaWdodCBiZSAxLjAzNDJ4IHNsb3dlcgogICBnZXQtYnkt
aWQtY2hhaW4tZnJvbS10cnktYmxvY2sgICAgICAgICAgICAgICAgICAgICAyLjUyNTYrLTAuMTQ4
NCAgICAgPyAgICAgIDIuNjExNystMC4zNjU1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM0MXggc2xv
d2VyCiAgIGdldC1ieS1pZC1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAgICAgICAgICAg
IDQuNDUwOCstMC41NDQyICAgICAgICAgICAgNC4zMzkxKy0wLjQ0NDMgICAgICAgICAgbWlnaHQg
YmUgMS4wMjU3eCBmYXN0ZXIKICAgZ2V0LWJ5LWlkLXByb3RvLW9yLXNlbGYgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMy4zMTc5Ky0xLjkxNzAgICAgICAgICAgIDExLjQ2NzErLTEuMTcxOCAg
ICAgICAgICBtaWdodCBiZSAxLjE2MTR4IGZhc3RlcgogICBnZXQtYnktaWQtcXVhZG1vcnBoaWMt
Y2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjkyNTcrLTAuMzA0MyAgICAgICAg
ICAgIDMuODE0MCstMC4yNTY4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI5M3ggZmFzdGVyCiAgIGdl
dC1ieS1pZC1zZWxmLW9yLXByb3RvICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNzY4Nyst
MS42MDE4ICAgICAgICAgICAxMi42MjEyKy0xLjkzMDcgICAgICAgICAgbWlnaHQgYmUgMS4wMTE3
eCBmYXN0ZXIKICAgZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNS42NTA5Ky0wLjMxMTcgICAgID8gICAgICA3LjMyMzErLTIuNzk3MyAgICAgICAgPyBt
aWdodCBiZSAxLjI5NTl4IHNsb3dlcgogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLWJpbW9ycGhp
Yy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMjUzMistMC41ODk1ICAgICAg
ICAgICAgNC45Mzg0Ky0wLjYzODkgICAgICAgICAgbWlnaHQgYmUgMS4wNjM3eCBmYXN0ZXIKICAg
Z2V0LWJ5LXZhbC13aXRoLXN0cmluZy1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0
aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTAuNTQzNistMi4wMTM1ICAgICA/ICAgICAxMi4zNzk0Ky0yLjIyMzEgICAgICAgID8gbWln
aHQgYmUgMS4xNzQxeCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmluZy1jaGFpbi1mcm9t
LXRyeS1ibG9jayAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyLjcyNDcrLTAuMzM3NyAgICAgPyAgICAgIDMuMTQ3NSstMS41MDE2ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMTU1Mnggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctY2hl
Y2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDcuODIyNSstMC41OTczICAgICA/ICAgICAgOS41NzYz
Ky0xLjI1MjYgICAgICAgID8gbWlnaHQgYmUgMS4yMjQyeCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13
aXRoLXN0cmluZy1wcm90by1vci1zZWxmICAgICAgICAgICAgICAxNS4xMTI0Ky0wLjk1MzMgICAg
ID8gICAgIDE1LjMzNTQrLTAuNTU1NSAgICAgICAgPyBtaWdodCBiZSAxLjAxNDh4IHNsb3dlcgog
ICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLXF1YWRtb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGlt
aW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNS40OTQ3Ky0wLjczNzQgICAgICAgICAgICA1LjI1OTgrLTAuOTUwNiAg
ICAgICAgICBtaWdodCBiZSAxLjA0NDd4IGZhc3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5n
LXNlbGYtb3ItcHJvdG8gICAgICAgICAgICAgIDE1LjI0ODIrLTAuNzUxMCAgICAgICAgICAgMTUu
MTYxMistMC44MjQ2ICAgICAgICAKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1iaW1vcnBoaWMt
Y2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjA0MjIrLTAuNTE3NiAgICAgPyAg
ICAgIDQuMDY4MCstMC41OTc4ICAgICAgICA/CiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtYmlt
b3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjEwMDcrLTAuODIxNyAgICAgPyAg
ICAgMTcuNDEyMCstNi43NjI5ICAgICAgICA/IG1pZ2h0IGJlIDEuMjM0OHggc2xvd2VyCiAgIGdl
dC1ieS12YWwtd2l0aC1zeW1ib2wtY2hhaW4tZnJvbS10cnktYmxvY2sgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi41ODM4Ky0wLjA5NzMg
ICAgID8gICAgICAyLjY0MzQrLTAuMTEzNCAgICAgICAgPyBtaWdodCBiZSAxLjAyMzF4IHNsb3dl
cgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEy
LjAwNzcrLTEuNDg2OCAgICAgPyAgICAgMTIuMzE2NystMS43MjE3ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDI1N3ggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtcHJvdG8tb3Itc2VsZiAg
ICAgICAgICAgICAgMTQuOTM5MistMC43OTY3ICAgICA/ICAgICAxNS4wOTkwKy0wLjQ5MDQgICAg
ICAgID8gbWlnaHQgYmUgMS4wMTA3eCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1x
dWFkbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODI0MSstMC4y
NjQ3ICAgICA/ICAgICAgNC45MDMxKy0wLjM3NTQgICAgICAgID8gbWlnaHQgYmUgMS4wMTY0eCBz
bG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1zZWxmLW9yLXByb3RvICAgICAgICAgICAg
ICAxNS40OTcyKy0wLjQ0OTggICAgICAgICAgIDE1LjA4MjYrLTEuNjc5OCAgICAgICAgICBtaWdo
dCBiZSAxLjAyNzV4IGZhc3RlcgogICBnZXRfY2FsbGVlX21vbm9tb3JwaGljICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjg1NzUrLTAuMTM3MiAgICAgICAgICAgIDIuODM3NCstMC4xMjcw
ICAgICAgICAKICAgZ2V0X2NhbGxlZV9wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNC4wOTM5Ky0wLjcxMDIgICAgID8gICAgICA0LjE3ODMrLTAuNDcwMCAgICAgICAgPyBt
aWdodCBiZSAxLjAyMDZ4IHNsb3dlcgogICBnZXR0ZXItbm8tYWN0aXZhdGlvbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzLjg3MjkrLTAuMTM3OSAgICAgPyAgICAgIDQuMTU3OSstMC42
NjE4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDczNnggc2xvd2VyCiAgIGdldHRlci1wcm90b3R5cGUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMTc0NystMC4xNjk5ICAgICAgICAg
ICAgNS45Njc2Ky0wLjE3MjggICAgICAgICAgbWlnaHQgYmUgMS4wMzQ3eCBmYXN0ZXIKICAgZ2V0
dGVyLXJpY2hhcmRzLXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICAgMTM5NS41MDcyKy0z
My45MzMwICAgID8gICAxNDMzLjgzNzErLTQ0LjI2NzAgICAgICAgPyBtaWdodCBiZSAxLjAyNzV4
IHNsb3dlcgogICBnZXR0ZXItcmljaGFyZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDk5LjIyODgrLTguNTUzNiAgICAgPyAgICAxMDMuOTY5MistMi41NTc2ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDQ3OHggc2xvd2VyCiAgIGdldHRlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQuNjQ0MCstMC40MjE4ICAgICAgICAgICAgNC4zOTg1Ky0wLjA5
NjcgICAgICAgICAgbWlnaHQgYmUgMS4wNTU4eCBmYXN0ZXIKICAgZ2xvYmFsLW9iamVjdC1hY2Nl
c3Mtd2l0aC1tdXRhdGluZy1zdHJ1Y3R1cmUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4yOTAwKy0wLjc2MjIgICAgID8gICAgICA2LjQz
NjQrLTAuNTQxNCAgICAgICAgPyBtaWdodCBiZSAxLjAyMzN4IHNsb3dlcgogICBnbG9iYWwtdmFy
LWNvbnN0LWluZmVyLWZpcmUtZnJvbS1vcHQgICAgICAgICAgICAgICAxLjI2ODArLTAuNDExNiAg
ICAgICAgICAgIDEuMDA1NSstMC4wNjkyICAgICAgICAgIG1pZ2h0IGJlIDEuMjYxMHggZmFzdGVy
CiAgIGdsb2JhbC12YXItY29uc3QtaW5mZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
OTYzMystMC4xOTM1ICAgICAgICAgICAgMC44ODc5Ky0wLjA4MzggICAgICAgICAgbWlnaHQgYmUg
MS4wODQ4eCBmYXN0ZXIKICAgaGFyZC1vdmVyZmxvdy1jaGVjay1lcXVhbCAgICAgICAgICAgICAg
ICAgICAgICAgICAzMS4yNTIwKy0wLjgwMTQgICAgID8gICAgIDMxLjM0MjQrLTEuMTgzMyAgICAg
ICAgPwogICBoYXJkLW92ZXJmbG93LWNoZWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMzLjA4ODUrLTEuMzQ0NSAgICAgICAgICAgMzEuODg3OCstMS40NDIyICAgICAgICAgIG1pZ2h0
IGJlIDEuMDM3N3ggZmFzdGVyCiAgIEhhc2hNYXAtcHV0LWdldC1pdGVyYXRlLWtleXMgICAgICAg
ICAgICAgICAgICAgICAgMzIuMDkzMystMC45NDE5ICAgICA/ICAgICAzMy45MTYzKy00LjQ3NDEg
ICAgICAgID8gbWlnaHQgYmUgMS4wNTY4eCBzbG93ZXIKICAgSGFzaE1hcC1wdXQtZ2V0LWl0ZXJh
dGUgICAgICAgICAgICAgICAgICAgICAgICAgICAzMi4yMTEzKy0xLjUzNDAgICAgID8gICAgIDM0
LjY0OTkrLTIuNDk1OSAgICAgICAgPyBtaWdodCBiZSAxLjA3NTd4IHNsb3dlcgogICBIYXNoTWFw
LXN0cmluZy1wdXQtZ2V0LWl0ZXJhdGUgICAgICAgICAgICAgICAgICAgIDM1Ljk4OTgrLTEuNDU1
NiAgICAgICAgICAgMzUuMTY1NistMS4zMDU3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIzNHggZmFz
dGVyCiAgIGhvaXN0LW1ha2Utcm9wZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDUuMTk4MistMC4yODQwICAgICA/ICAgICAgNS4zNjE3Ky0wLjc5MDAgICAgICAgID8gbWlnaHQg
YmUgMS4wMzE1eCBzbG93ZXIKICAgaG9pc3QtcG9seS1jaGVjay1zdHJ1Y3R1cmUtZWZmZWN0ZnVs
LWxvb3AgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNC4yMjk5Ky0wLjQ4NTggICAgICAgICAgICAzLjg3MDYrLTAuMDc0OSAgICAgICAgICBt
aWdodCBiZSAxLjA5Mjh4IGZhc3RlcgogICBob2lzdC1wb2x5LWNoZWNrLXN0cnVjdHVyZSAgICAg
ICAgICAgICAgICAgICAgICAgICAyLjc1ODgrLTAuMTcyMyAgICAgICAgICAgIDIuNzA2OCstMC4x
MTg1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5MnggZmFzdGVyCiAgIGltdWwtZG91YmxlLW9ubHkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODM1MCstMS4xMDY2ICAgICAgICAg
ICAgNC4yMDIzKy0wLjI1MTcgICAgICAgICAgbWlnaHQgYmUgMS4xNTA2eCBmYXN0ZXIKICAgaW11
bC1pbnQtb25seSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4zNzU4Ky0w
LjM3NzQgICAgID8gICAgICA2LjUyMDMrLTAuMzU2NSAgICAgICAgPyBtaWdodCBiZSAxLjAyMjd4
IHNsb3dlcgogICBpbXVsLW1peGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA0LjE3MzIrLTAuNTc3NSAgICAgICAgICAgIDQuMDM1NystMC4zMjE1ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDM0MXggZmFzdGVyCiAgIGluLWZvdXItY2FzZXMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMjEuMTU2MCstMS40MTM0ICAgICA/ICAgICAyMS42OTc2Ky0yLjAz
MDQgICAgICAgID8gbWlnaHQgYmUgMS4wMjU2eCBzbG93ZXIKICAgaW4tb25lLWNhc2UtZmFsc2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS40ODYwKy0xLjEyMjIgICAgID8gICAg
IDExLjU0NDMrLTEuMDYyMCAgICAgICAgPwogICBpbi1vbmUtY2FzZS10cnVlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDExLjMwNjcrLTAuNTkyOCAgICAgPyAgICAgMTEuNTI5MSst
MC45Nzc2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5N3ggc2xvd2VyCiAgIGluLXR3by1jYXNlcyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuMzQwOCstMC43ODQ4ICAgICA/
ICAgICAxNS4yMDQzKy05LjU3NTkgICAgICAgID8gbWlnaHQgYmUgMS4zNDA3eCBzbG93ZXIKICAg
aW5kZXhlZC1wcm9wZXJ0aWVzLWluLW9iamVjdHMgICAgICAgICAgICAgICAgICAgICAgMy45MzMx
Ky0wLjUxMDIgICAgICAgICAgICAzLjg0ODArLTAuNDE5OSAgICAgICAgICBtaWdodCBiZSAxLjAy
MjF4IGZhc3RlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tbW92LW5vLWlubGluZSAgICAg
ICAgICAgICA0LjQ1MDQrLTAuNjA2OSAgICAgICAgICAgIDQuNDI5NSstMC42NDA3ICAgICAgICAK
ICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLW1vdiAgICAgICAgICAgICAgICAgICAgICAxMC4x
NTMxKy0xLjc5NTggICAgID8gICAgIDEwLjM3MTkrLTIuNzcxMSAgICAgICAgPyBtaWdodCBiZSAx
LjAyMTZ4IHNsb3dlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tcHV0LXRvLXNjb3BlLW5v
LWlubGluZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEzLjg1MzcrLTAuNTgyOCAgICAgICAgICAgMTMuNzc3MystMC41Mjc3ICAgICAgICAK
ICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXB1dC10by1zY29wZSAgICAgICAgICAgICAzMS4z
NTM2Ky0xLjk5MzAgICAgICAgICAgIDMwLjQyNjgrLTEuMDU4MCAgICAgICAgICBtaWdodCBiZSAx
LjAzMDV4IGZhc3RlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tcmVlbnRlci1uby1pbmxp
bmUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA3MC42OTIzKy00LjEyMzYgICAgICAgICAgIDY5LjIxODMrLTMuMDc4MCAgICAgICAgICBtaWdo
dCBiZSAxLjAyMTN4IGZhc3RlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tcmVlbnRlciAg
ICAgICAgICAgICAgICAgIDMxLjM5MTIrLTEuMTg5OSAgICAgPyAgICAgMzEuNjgzMistMC45NjQy
ICAgICAgICA/CiAgIGluZmVyLWNvbnN0YW50LWdsb2JhbC1wcm9wZXJ0eSAgICAgICAgICAgICAg
ICAgICAgIDQuMjk0NSstMC4wOTQzICAgICA/ICAgICAgNC4zNzExKy0wLjE1MDggICAgICAgID8g
bWlnaHQgYmUgMS4wMTc4eCBzbG93ZXIKICAgaW5mZXItY29uc3RhbnQtcHJvcGVydHkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMy4xNjQ5Ky0wLjQzOTcgICAgICAgICAgICAyLjg3NjgrLTAu
MTAzOSAgICAgICAgICBtaWdodCBiZSAxLjEwMDF4IGZhc3RlcgogICBpbmZlci1vbmUtdGltZS1j
bG9zdXJlLXRlbi12YXJzICAgICAgICAgICAgICAgICAgICA5LjIxMDYrLTAuNzgyNCAgICAgICAg
ICAgIDguODI5MistMC4yMDIxICAgICAgICAgIG1pZ2h0IGJlIDEuMDQzMnggZmFzdGVyCiAgIGlu
ZmVyLW9uZS10aW1lLWNsb3N1cmUtdHdvLXZhcnMgICAgICAgICAgICAgICAgICAgIDguNDcxOSst
MC42MTAxICAgICAgICAgICAgOC40MjYwKy0wLjMyOTcgICAgICAgIAogICBpbmZlci1vbmUtdGlt
ZS1jbG9zdXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4Ljg4MTMrLTAuNjQ1MiAgICAg
ICAgICAgIDguNjAxOCstMS4yMDY3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMyNXggZmFzdGVyCiAg
IGluZmVyLW9uZS10aW1lLWRlZXAtY2xvc3VyZSAgICAgICAgICAgICAgICAgICAgICAgMTUuNDg3
NystMC43Mjk2ICAgICAgICAgICAxNS4yNzkyKy0wLjkyNDUgICAgICAgICAgbWlnaHQgYmUgMS4w
MTM2eCBmYXN0ZXIKICAgaW5saW5lLWFyZ3VtZW50cy1hY2Nlc3MgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNC40ODM2Ky0wLjE5MzAgICAgID8gICAgICA0LjcwNzYrLTAuNDIyMSAgICAgICAg
PyBtaWdodCBiZSAxLjA1MDB4IHNsb3dlcgogICBpbmxpbmUtYXJndW1lbnRzLWFsaWFzZWQtYWNj
ZXNzICAgICAgICAgICAgICAgICAgICA0LjYxNjQrLTAuNTAxNCAgICAgPyAgICAgIDQuNjY2MSst
MC4zMTM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwOHggc2xvd2VyCiAgIGlubGluZS1hcmd1bWVu
dHMtbG9jYWwtZXNjYXBlICAgICAgICAgICAgICAgICAgICAgIDUuMDkzMystMS4yOTk3ICAgICAg
ICAgICAgNC42MTc1Ky0wLjEyNzMgICAgICAgICAgbWlnaHQgYmUgMS4xMDMweCBmYXN0ZXIKICAg
aW5saW5lLWdldC1zY29wZWQtdmFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4wOTQ5
Ky0wLjIwMzIgICAgICAgICAgICAzLjAyMTErLTAuMTczMCAgICAgICAgICBtaWdodCBiZSAxLjAy
NDR4IGZhc3RlcgogICBpbmxpbmVkLXB1dC1ieS1pZC10cmFuc2l0aW9uICAgICAgICAgICAgICAg
ICAgICAgIDEyLjA1MTMrLTEuMDc5MCAgICAgPyAgICAgMTIuMTE4MystMC45NjQ4ICAgICAgICA/
CiAgIGlubGluZWQtcHV0LWJ5LXZhbC13aXRoLXN0cmluZy10cmFuc2l0aW9uICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTYuODU3MSstNC41
ODg4ICAgICA/ICAgICA1Ny45MDc5Ky05LjE2ODQgICAgICAgID8gbWlnaHQgYmUgMS4wMTg1eCBz
bG93ZXIKICAgaW5saW5lZC1wdXQtYnktdmFsLXdpdGgtc3ltYm9sLXRyYW5zaXRpb24gICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1My4zNzI3
Ky0xLjg5NTIgICAgID8gICAgIDU0LjI5OTErLTIuNTk5OCAgICAgICAgPyBtaWdodCBiZSAxLjAx
NzR4IHNsb3dlcgogICBpbnN0YW5jZW9mLWJvdW5kICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDI5LjQyMzcrLTEuNzI3MCAgICAgPyAgICAgMjkuNjQwMistMS45OTM2ICAgICAgICA/
CiAgIGludC1vci1vdGhlci1hYnMtdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDUu
MzMzNistMC4xNjM3ICAgICA/ICAgICAgNS40NDEwKy0wLjE5MTMgICAgICAgID8gbWlnaHQgYmUg
MS4wMjAxeCBzbG93ZXIKICAgaW50LW9yLW90aGVyLWFicy16ZXJvLXRoZW4tZ2V0LWJ5LXZhbCAg
ICAgICAgICAgICAyMS4wNzU4Ky0wLjk0NDcgICAgID8gICAgIDIxLjc5MjUrLTEuNDUzNiAgICAg
ICAgPyBtaWdodCBiZSAxLjAzNDB4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItYWRkLXRoZW4tZ2V0
LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA1LjI4NDMrLTAuMzg4MyAgICAgICAgICAgIDUuMTcw
NSstMC4xNDYwICAgICAgICAgIG1pZ2h0IGJlIDEuMDIyMHggZmFzdGVyCiAgIGludC1vci1vdGhl
ci1hZGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMDMxOSstMC4xMzAyICAg
ICA/ICAgICAgNi4xOTA5Ky0wLjIxOTIgICAgICAgID8gbWlnaHQgYmUgMS4wMjY0eCBzbG93ZXIK
ICAgaW50LW9yLW90aGVyLWRpdi10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNC43
NzkwKy0wLjM4NzIgICAgID8gICAgICA0LjgwMjcrLTAuMjk4MCAgICAgICAgPwogICBpbnQtb3It
b3RoZXItbWF4LXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA0LjY5MzIrLTAuMTIz
NyAgICAgPyAgICAgIDYuNDE2NystNC40NDE4ICAgICAgICA/IG1pZ2h0IGJlIDEuMzY3Mnggc2xv
d2VyCiAgIGludC1vci1vdGhlci1taW4tdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAg
IDQuODc2NCstMC41MzgwICAgICAgICAgICAgNC42OTE1Ky0wLjE3OTMgICAgICAgICAgbWlnaHQg
YmUgMS4wMzk0eCBmYXN0ZXIKICAgaW50LW9yLW90aGVyLW1vZC10aGVuLWdldC1ieS12YWwgICAg
ICAgICAgICAgICAgICAgNC4zNjQ1Ky0wLjA4MjEgICAgID8gICAgICA0LjQ1MzIrLTAuMTI0MiAg
ICAgICAgPyBtaWdodCBiZSAxLjAyMDN4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItbXVsLXRoZW4t
Z2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA0LjU4NTkrLTAuMTgwNCAgICAgICAgICAgIDQu
NTUzNCstMC4wNjcyICAgICAgICAKICAgaW50LW9yLW90aGVyLW5lZy10aGVuLWdldC1ieS12YWwg
ICAgICAgICAgICAgICAgICAgNS4zNTc1Ky0wLjE3OTQgICAgID8gICAgICA1LjQ4MjcrLTAuNDgy
NCAgICAgICAgPyBtaWdodCBiZSAxLjAyMzR4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItbmVnLXpl
cm8tdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgIDIyLjczODYrLTEuNzk5NSAgICAgICAgICAg
MjIuMzMzMystMS40OTQ3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4MXggZmFzdGVyCiAgIGludC1v
ci1vdGhlci1zdWItdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDUuNTgzNSstMC43
OTAwICAgICAgICAgICAgNS4xMzQ0Ky0wLjIwNjYgICAgICAgICAgbWlnaHQgYmUgMS4wODc1eCBm
YXN0ZXIKICAgaW50LW9yLW90aGVyLXN1YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNC40NTMyKy0wLjEyNzMgICAgID8gICAgICA0LjczMzIrLTAuNDk3NCAgICAgICAgPyBtaWdo
dCBiZSAxLjA2Mjl4IHNsb3dlcgogICBpbnQtb3ZlcmZsb3ctbG9jYWwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1LjA2ODgrLTAuMTQxMCAgICAgPyAgICAgIDUuMTg5MistMC4zOTc3
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIzOHggc2xvd2VyCiAgIEludDE2QXJyYXktYWxsb2MtbG9u
Zy1saXZlZCAgICAgICAgICAgICAgICAgICAgICAgNjAuMzk3MystMy4wMTMzICAgICAgICAgICA1
OS4zNDM3Ky0yLjE5MTYgICAgICAgICAgbWlnaHQgYmUgMS4wMTc4eCBmYXN0ZXIKICAgSW50MTZB
cnJheS1idWJibGUtc29ydC13aXRoLWJ5dGVMZW5ndGggICAgICAgICAgICAyNC42MDQ3Ky04Ljc3
NTYgICAgICAgICAgIDIxLjYwMjMrLTIuMzc0NCAgICAgICAgICBtaWdodCBiZSAxLjEzOTB4IGZh
c3RlcgogICBJbnQxNkFycmF5LWJ1YmJsZS1zb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIxLjA5NDMrLTEuMDkyNSAgICAgICAgICAgMTkuNzUwOCstMC44NTgzICAgICAgICAgIG1pZ2h0
IGJlIDEuMDY4MHggZmFzdGVyCiAgIEludDE2QXJyYXktbG9hZC1pbnQtbXVsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEuOTk1MCstMC4xNDk5ICAgICA/ICAgICAgMi4wODYxKy0wLjI3MTIg
ICAgICAgID8gbWlnaHQgYmUgMS4wNDU3eCBzbG93ZXIKICAgSW50MTZBcnJheS10by1JbnQzMkFy
cmF5LXNldCAgICAgICAgICAgICAgICAgICAgICA1Mi43NTk4Ky0yLjAwMTggICAgID8gICAgIDUz
Ljk4NDcrLTIuNTU3NSAgICAgICAgPyBtaWdodCBiZSAxLjAyMzJ4IHNsb3dlcgogICBJbnQzMkFy
cmF5LWFsbG9jLWxhcmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1Ljk3ODgrLTEuNDM2
MyAgICAgPyAgICAgMTcuNzU0MistMy42OTAwICAgICAgICA/IG1pZ2h0IGJlIDEuMTExMXggc2xv
d2VyCiAgIEludDMyQXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgICAgICAgICAgICAg
NjYuNjYxMistMi44MzU2ICAgICA/ICAgICA2Ny4xMzE3Ky0zLjE5ODQgICAgICAgID8KICAgSW50
MzJBcnJheS1hbGxvYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy43NTExKy0w
Ljg4MzYgICAgICAgICAgICAzLjM5OTkrLTAuMTUwNyAgICAgICAgICBtaWdodCBiZSAxLjEwMzN4
IGZhc3RlcgogICBJbnQzMkFycmF5LUludDhBcnJheS12aWV3LWFsbG9jICAgICAgICAgICAgICAg
ICAgICA5LjQwMDUrLTAuNTc0NiAgICAgPyAgICAgIDkuNTU3MistMC44NDcwICAgICAgICA/IG1p
Z2h0IGJlIDEuMDE2N3ggc2xvd2VyCiAgIGludDUyLXNwaWxsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDYuNDQyMystMC4xOTUxICAgICA/ICAgICAgNi45MTU5Ky0xLjI5
MjUgICAgICAgID8gbWlnaHQgYmUgMS4wNzM1eCBzbG93ZXIKICAgSW50OEFycmF5LWFsbG9jLWxv
bmctbGl2ZWQgICAgICAgICAgICAgICAgICAgICAgICA1My44MTUzKy0yLjE5MjggICAgICAgICAg
IDUyLjk5OTUrLTEuNzg2OSAgICAgICAgICBtaWdodCBiZSAxLjAxNTR4IGZhc3RlcgogICBJbnQ4
QXJyYXktbG9hZC13aXRoLWJ5dGVMZW5ndGggICAgICAgICAgICAgICAgICAgICA1LjA2ODYrLTIu
MzM4NSAgICAgICAgICAgIDQuNDQ2MCstMC4zNTE0ICAgICAgICAgIG1pZ2h0IGJlIDEuMTQwMHgg
ZmFzdGVyCiAgIEludDhBcnJheS1sb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQuNDQyOCstMC4xODM5ICAgICAgICAgICAgNC4zNDU1Ky0wLjM2NzMgICAgICAgICAgbWln
aHQgYmUgMS4wMjI0eCBmYXN0ZXIKICAgaW50ZWdlci1kaXZpZGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxNS45MTg1Ky0zLjM3MjUgICAgICAgICAgIDE0LjE2OTMrLTAuNjAx
NyAgICAgICAgICBtaWdodCBiZSAxLjEyMzV4IGZhc3RlcgogICBpbnRlZ2VyLW1vZHVsbyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjM2MTQrLTAuNzA0OCAgICAgICAgICAg
IDIuMjM1MSstMC4zOTA2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDU2NXggZmFzdGVyCiAgIGlzLWJv
b2xlYW4tZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMDM0MystMC4x
NzA5ICAgICA/ICAgICAgNS45NzcwKy0zLjc4ODUgICAgICAgID8gbWlnaHQgYmUgMS40ODE1eCBz
bG93ZXIKICAgaXMtYm9vbGVhbi1mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNC4zOTQ0Ky0xLjg4NDIgICAgICAgICAgICAzLjE3NjArLTAuNjU3OCAgICAgICAgICBtaWdo
dCBiZSAxLjM4MzZ4IGZhc3RlcgogICBpcy1mdW5jdGlvbi1mb2xkLXRyaWNreS1pbnRlcm5hbC1m
dW5jdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE2LjA5NzkrLTEuNzE3MyAgICAgICAgICAgMTQuOTUwNystMC43NzU0ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDc2N3ggZmFzdGVyCiAgIGlzLWZ1bmN0aW9uLWZvbGQtdHJpY2t5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQuMjc0OCstMC4wNDI3ICAgICA/ICAgICAgNC43NTI2Ky0w
LjYwMjYgICAgICAgID8gbWlnaHQgYmUgMS4xMTE4eCBzbG93ZXIKICAgaXMtZnVuY3Rpb24tZm9s
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4wNDY1Ky0wLjE5MTQgICAgICAg
ICAgICAyLjk1MjcrLTAuMTAwMiAgICAgICAgICBtaWdodCBiZSAxLjAzMTh4IGZhc3RlcgogICBp
cy1udW1iZXItZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjIyNjYr
LTAuMTI3NCAgICAgICAgICAgIDQuMTUwMCstMC4wOTU3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4
NXggZmFzdGVyCiAgIGlzLW51bWJlci1mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMuMDA0NistMC4xNDgyICAgICA/ICAgICAgMy4wNDAyKy0wLjA5MzAgICAgICAgID8g
bWlnaHQgYmUgMS4wMTE4eCBzbG93ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtZm9sZC1mdW5jdGlv
bnMgICAgICAgICAgICAgICAgICAgMy4wNTA1Ky0wLjIwNjMgICAgICAgICAgICAyLjkxNzcrLTAu
MDY4MiAgICAgICAgICBtaWdodCBiZSAxLjA0NTV4IGZhc3RlcgogICBpcy1vYmplY3Qtb3ItbnVs
bC1mb2xkLWxlc3MtdHJpY2t5ICAgICAgICAgICAgICAgICA0LjMxMTArLTAuMTQ4NiAgICAgPyAg
ICAgIDQuNTgxMistMC44MjUzICAgICAgICA/IG1pZ2h0IGJlIDEuMDYyN3ggc2xvd2VyCiAgIGlz
LW9iamVjdC1vci1udWxsLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAgICAgIDUuMTYyMist
MS40MDExICAgICAgICAgICAgNC43NjI4Ky0wLjM5MjEgICAgICAgICAgbWlnaHQgYmUgMS4wODM5
eCBmYXN0ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtZm9sZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMy4wMTI1Ky0wLjE1MjggICAgID8gICAgICAzLjE3MjYrLTAuNDE5MSAgICAgICAgPyBt
aWdodCBiZSAxLjA1MzJ4IHNsb3dlcgogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja2llci1mdW5j
dGlvbiAgICAgICAgICAgICAgICA0LjcxNjgrLTAuODkyNCAgICAgICAgICAgIDQuMjExNistMC4x
MzcwICAgICAgICAgIG1pZ2h0IGJlIDEuMTIwMHggZmFzdGVyCiAgIGlzLW9iamVjdC1vci1udWxs
LXRyaWNraWVyLWludGVybmFsLWZ1bmN0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuNDUwNistMS4yMTM4ICAgICA/ICAgICAxNC45
OTA0Ky0xLjUwMjcgICAgICAgID8gbWlnaHQgYmUgMS4wMzczeCBzbG93ZXIKICAgaXMtb2JqZWN0
LW9yLW51bGwtdHJpY2t5LWZ1bmN0aW9uICAgICAgICAgICAgICAgICAgNC40NjI0Ky0wLjUyMTgg
ICAgICAgICAgICA0LjQxNTArLTAuMTkxMiAgICAgICAgICBtaWdodCBiZSAxLjAxMDd4IGZhc3Rl
cgogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja3ktaW50ZXJuYWwtZnVuY3Rpb24gICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS40NzgwKy0w
LjM5MzQgICAgICAgICAgICA5LjM5MjMrLTAuNDUwNCAgICAgICAgCiAgIGlzLXN0cmluZy1mb2xk
LXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMzc2OCstMC40MjQ4ICAgICAg
ICAgICAgNC4wNzg5Ky0wLjEzOTcgICAgICAgICAgbWlnaHQgYmUgMS4wNzMxeCBmYXN0ZXIKICAg
aXMtc3RyaW5nLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi45MzQ4
Ky0wLjE3NzMgICAgICAgICAgICAyLjkyNTcrLTAuMTA1MSAgICAgICAgCiAgIGlzLXVuZGVmaW5l
ZC1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNjcwMSstMC4wODcxICAg
ICA/ICAgICAgMy42NzQ4Ky0wLjA2OTcgICAgICAgID8KICAgaXMtdW5kZWZpbmVkLWZvbGQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi45NDQyKy0wLjE0NjMgICAgID8gICAgICAz
LjEwMjkrLTAuMzM4MiAgICAgICAgPyBtaWdodCBiZSAxLjA1Mzl4IHNsb3dlcgogICBKU09OUC1u
ZWdhdGl2ZS0wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjM5NDgrLTAuMTMx
NiAgICAgICAgICAgIDAuMzgzNystMC4wNjIwICAgICAgICAgIG1pZ2h0IGJlIDEuMDI4OHggZmFz
dGVyCiAgIGxhcmdlLWludC1jYXB0dXJlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQuNDY1MCstMC4xODA4ICAgICA/ICAgICAgNC41MzUxKy0wLjEzNTYgICAgICAgID8gbWlnaHQg
YmUgMS4wMTU3eCBzbG93ZXIKICAgbGFyZ2UtaW50LW5lZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxNy4zODU2Ky0wLjg3NjEgICAgID8gICAgIDE3LjU5MzUrLTAuOTc4MCAg
ICAgICAgPyBtaWdodCBiZSAxLjAxMjB4IHNsb3dlcgogICBsYXJnZS1pbnQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjUwNzQrLTAuOTYwNCAgICAgICAgICAgMTUu
NjM2NSstMC41ODAwICAgICAgICAgIG1pZ2h0IGJlIDEuMDU1N3ggZmFzdGVyCiAgIGxvYWQtdmFy
YXJncy1lbGltaW5hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuOTk0MystMC44NjE3
ICAgICA/ICAgICAyNC4xMDk3Ky0xLjQ5ODQgICAgICAgID8KICAgbG9naWNhbC1ub3Qtd2VpcmQt
dHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy41NjQyKy0wLjU3NDIgICAgICAgICAg
ICAzLjQwNTcrLTAuMTg4NyAgICAgICAgICBtaWdodCBiZSAxLjA0NjV4IGZhc3RlcgogICBsb2dp
Y2FsLW5vdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjkwNDcrLTAu
NTIyNCAgICAgICAgICAgIDQuODE2MCstMC4xNDA3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4NHgg
ZmFzdGVyCiAgIGxvdHMtb2YtZmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTIuNjE3MystMS45Mjg3ICAgICAgICAgICAxMi4xODk2Ky0wLjgyMDggICAgICAgICAgbWln
aHQgYmUgMS4wMzUxeCBmYXN0ZXIKICAgbWFrZS1pbmRleGVkLXN0b3JhZ2UgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMy4yNTI1Ky0wLjEyMjIgICAgID8gICAgICAzLjgwMjIrLTEuMDYy
NyAgICAgICAgPyBtaWdodCBiZSAxLjE2OTB4IHNsb3dlcgogICBtYWtlLXJvcGUtY3NlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjE1OTcrLTAuMjk3MSAgICAgPyAgICAg
IDUuNDUwOCstMC41OTc0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU2NHggc2xvd2VyCiAgIG1hbnkt
Zm9yZWFjaC1jYWxscyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEuMzc1NCstMC42
MDMxICAgICAgICAgICAyMS4xNTc3Ky0xLjA3OTIgICAgICAgICAgbWlnaHQgYmUgMS4wMTAzeCBm
YXN0ZXIKICAgbWFueS1yZXBlYXQtc3RvcmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyMS40MzQ2Ky0xLjU4MjIgICAgID8gICAgIDIxLjk3MDkrLTAuODg5OSAgICAgICAgPyBtaWdo
dCBiZSAxLjAyNTB4IHNsb3dlcgogICBtYXAtZm9yLWVhY2ggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2LjE1NjErLTAuMTg4OCAgICAgPyAgICAgIDYuNDkwMSstMC43MzIx
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU0Mnggc2xvd2VyCiAgIG1hcC1mb3Itb2YgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAuNDI4MistMS4wMDg3ICAgICAgICAgICAy
MC4yODM4Ky0xLjE0MjUgICAgICAgIAogICBtYXJzYWdsaWEtbGFyZ2VyLWludHMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQwLjgxMTQrLTIuMTY1MCAgICAgPyAgICAgNDEuNjQ2OSstMi4w
OTY3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIwNXggc2xvd2VyCiAgIG1hcnNhZ2xpYS1vc3ItZW50
cnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQuMDAyNCstMS43NjQ3ICAgICA/ICAg
ICAyNC4xMTM5Ky0xLjE4NzEgICAgICAgID8KICAgbWF0aC1yYW5kb20gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyMC4yNzgwKy0xLjQzODYgICAgICAgICAgIDE5LjM4NTUr
LTAuNDc4NCAgICAgICAgICBtaWdodCBiZSAxLjA0NjB4IGZhc3RlcgogICBtYXRoLXRydW5jICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjUyMDYrLTAuOTA5MiAgICAg
PyAgICAgIDguOTk5NSstNC4zMzEzICAgICAgICA/IG1pZ2h0IGJlIDEuMTk2Nnggc2xvd2VyCiAg
IG1hdGgtd2l0aC1vdXQtb2YtYm91bmRzLWFycmF5LXZhbHVlcyAgICAgICAgICAgICAgNDAuMjQz
OCstMS42Njc3ICAgICAgICAgICAzOS4xMzMzKy0yLjY4MzMgICAgICAgICAgbWlnaHQgYmUgMS4w
Mjg0eCBmYXN0ZXIKICAgbWF4LWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMy4yOTgyKy0wLjcyMDggICAgICAgICAgICAzLjEzOTMrLTAuNDE4OSAgICAgICAg
ICBtaWdodCBiZSAxLjA1MDZ4IGZhc3RlcgogICBtZWdhbW9ycGhpYy1sb2FkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDI0LjU3MTUrLTQuMzEwNSAgICAgICAgICAgMjIuNTExMSst
MC45NDMyICAgICAgICAgIG1pZ2h0IGJlIDEuMDkxNXggZmFzdGVyCiAgIG1ldGhvZC1vbi1udW1i
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjIuNTY0NystMS4xMDk4ICAgICA/
ICAgICAyMy4yMzIzKy0yLjYyNzYgICAgICAgID8gbWlnaHQgYmUgMS4wMjk2eCBzbG93ZXIKICAg
bWluLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4wMjYw
Ky0wLjE4NzIgICAgICAgICAgICAyLjk3NzkrLTAuMDk5OCAgICAgICAgICBtaWdodCBiZSAxLjAx
NjJ4IGZhc3RlcgogICBtaW51cy1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzLjIzODgrLTAuMjU0NyAgICAgICAgICAgIDMuMTg0NCstMC4xODE4ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDE3MXggZmFzdGVyCiAgIG1pbnVzLWJvb2xlYW4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMuMDI2MSstMC42MzE2ICAgICAgICAgICAgMi42ODk2Ky0w
LjA1MDkgICAgICAgICAgbWlnaHQgYmUgMS4xMjUxeCBmYXN0ZXIKICAgbWlzYy1zdHJpY3QtZXEg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNy44NjUwKy0yLjA5NDMgICAgICAg
ICAgIDI2Ljg1NzIrLTEuMzkxNCAgICAgICAgICBtaWdodCBiZSAxLjAzNzV4IGZhc3RlcgogICBt
b2QtYm9vbGVhbi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjUyMTIr
LTAuNDcyMyAgICAgPyAgICAgMTIuNzk0NCstMC4zNzEwICAgICAgICA/IG1pZ2h0IGJlIDEuMDIx
OHggc2xvd2VyCiAgIG1vZC1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDkuNTgwNistMC41ODYyICAgICAgICAgICAgOS4zOTUyKy0wLjE5NzAgICAgICAgICAg
bWlnaHQgYmUgMS4wMTk3eCBmYXN0ZXIKICAgbXVsLWJvb2xlYW4tZG91YmxlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMy44MjUzKy0wLjc4ODYgICAgICAgICAgICAzLjU5NTArLTAu
MTE1MSAgICAgICAgICBtaWdodCBiZSAxLjA2NDF4IGZhc3RlcgogICBtdWwtYm9vbGVhbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjM3NDArLTAuMzc3NCAgICAgICAg
ICAgIDMuMzIwNCstMC4yOTkzICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2MnggZmFzdGVyCiAgIG5l
Zy1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTU0Nyst
MC4wNTczICAgICA/ICAgICAgMy4yMzU0Ky0wLjE3MjIgICAgICAgID8gbWlnaHQgYmUgMS4wMjU2
eCBzbG93ZXIKICAgbmVnYXRpdmUtemVyby1kaXZpZGUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC41MjIwKy0wLjE0NzkgICAgID8gICAgICAwLjU2MTUrLTAuMTY0NyAgICAgICAgPyBt
aWdodCBiZSAxLjA3NTZ4IHNsb3dlcgogICBuZWdhdGl2ZS16ZXJvLW1vZHVsbyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLjUxNjArLTAuMDk1OCAgICAgICAgICAgIDAuNTE0MistMC4w
ODYwICAgICAgICAKICAgbmVnYXRpdmUtemVyby1uZWdhdGUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC41MjkxKy0wLjIyNDEgICAgID8gICAgICAwLjcwNDQrLTAuNDQ1NyAgICAgICAg
PyBtaWdodCBiZSAxLjMzMTJ4IHNsb3dlcgogICBuZXN0ZWQtZnVuY3Rpb24tcGFyc2luZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQ0LjAzOTErLTEuNDU0NSAgICAgPyAgICAgNDcuMTM0OSst
My4yMTUwICAgICAgICA/IG1pZ2h0IGJlIDEuMDcwM3ggc2xvd2VyCiAgIG5ldy1hcnJheS1idWZm
ZXItZGVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTUuMjU2MCstMS40ODYxICAgICBe
ICAgIDExMS45OTM2Ky0xLjI3NzQgICAgICAgIF4gZGVmaW5pdGVseSAxLjAyOTF4IGZhc3Rlcgog
ICBuZXctYXJyYXktYnVmZmVyLXB1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3Ljky
NjYrLTAuNDAyNCAgICAgICAgICAgIDcuNjg2MystMC44MDM0ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDMxM3ggZmFzdGVyCiAgIG5ldy1hcnJheS1kZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTAuMDE5OCstMS4xNTU5ICAgICAgICAgICAgOS44MzAxKy0wLjQ2NjEgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTkzeCBmYXN0ZXIKICAgbmV3LWFycmF5LXB1c2ggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNC4zODY2Ky0wLjI1ODcgICAgICAgICAgICA0LjI2MDYr
LTAuMDUzNSAgICAgICAgICBtaWdodCBiZSAxLjAyOTZ4IGZhc3RlcgogICBuby1pbmxpbmUtY29u
c3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxLjU4OTYrLTEuMDUwMiAgICAg
PyAgICAgNDIuMDgxOSstMS4wMDAxICAgICAgICA/IG1pZ2h0IGJlIDEuMDExOHggc2xvd2VyCiAg
IG51bWJlci10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMjI1
MCstMC41Mzk0ICAgICAgICAgICAgNC4xMTQwKy0wLjEwMTYgICAgICAgICAgbWlnaHQgYmUgMS4w
MjcweCBmYXN0ZXIKICAgb2JqZWN0LWNsb3N1cmUtY2FsbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNi4wMTIwKy0wLjIzMDkgICAgID8gICAgICA2LjY4MDArLTAuNjY0NyAgICAgICAg
PyBtaWdodCBiZSAxLjExMTF4IHNsb3dlcgogICBvYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1i
b2xzLW9uLWxhcmdlLWFycmF5ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEuMDE4MystMC4xMjcyICAgICAgICAgICAgMC45NzAzKy0wLjA1
ODYgICAgICAgICAgbWlnaHQgYmUgMS4wNDk1eCBmYXN0ZXIKICAgb2JqZWN0LXRlc3QgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy44NzAwKy0wLjA1OTEgICAgID8gICAg
ICA1LjM4MjYrLTMuNjY1OSAgICAgICAgPyBtaWdodCBiZSAxLjM5MDl4IHNsb3dlcgogICBvYnZp
b3VzLXNpbmstcGF0aG9sb2d5LXRha2VuICAgICAgICAgICAgICAgICAgICAgMTYzLjcwNDMrLTUu
MTMyNyAgICAgICAgICAxNjEuNzkwMistNC41MTYzICAgICAgICAgIG1pZ2h0IGJlIDEuMDExOHgg
ZmFzdGVyCiAgIG9idmlvdXMtc2luay1wYXRob2xvZ3kgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjQuMDI3NSstMS4yOTc0ICAgICAgICAgICAyMy40NzQ3Ky0wLjk0MjUgICAgICAgICAgbWln
aHQgYmUgMS4wMjM1eCBmYXN0ZXIKICAgb2J2aW91c2x5LWVsaWRhYmxlLW5ldy1vYmplY3QgICAg
ICAgICAgICAgICAgICAgICAyMC44NzQzKy0wLjcyMjMgICAgID8gICAgIDIyLjA1NjgrLTIuMTI1
NyAgICAgICAgPyBtaWdodCBiZSAxLjA1Njd4IHNsb3dlcgogICBwbHVzLWJvb2xlYW4tYXJpdGgg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjkwMjArLTAuMzQ4OCAgICAgPyAgICAg
IDIuOTgwOCstMC4xNTMxICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3Mnggc2xvd2VyCiAgIHBsdXMt
Ym9vbGVhbi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDYxNCstMC4w
OTAwICAgICA/ICAgICAgMy44Nzg3Ky0xLjkzMTcgICAgICAgID8gbWlnaHQgYmUgMS4yNjcweCBz
bG93ZXIKICAgcGx1cy1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMi44MTE0Ky0wLjMyNTggICAgICAgICAgICAyLjc1NjYrLTAuMTYxMSAgICAgICAgICBtaWdo
dCBiZSAxLjAxOTl4IGZhc3RlcgogICBwb2x5LWNoYWluLWFjY2Vzcy1kaWZmZXJlbnQtcHJvdG90
eXBlcy1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMy40MTQ0Ky0wLjA5NjQgICAgID8gICAgICAzLjg5MjUrLTEuMjIxNiAgICAg
ICAgPyBtaWdodCBiZSAxLjE0MDB4IHNsb3dlcgogICBwb2x5LWNoYWluLWFjY2Vzcy1kaWZmZXJl
bnQtcHJvdG90eXBlcyAgICAgICAgICAgICAzLjQ0NzYrLTAuNDMxNSAgICAgICAgICAgIDMuNDEz
NystMC40NTEzICAgICAgICAKICAgcG9seS1jaGFpbi1hY2Nlc3Mtc2ltcGxlciAgICAgICAgICAg
ICAgICAgICAgICAgICAgMy41MDMyKy0wLjI5OTcgICAgID8gICAgICAzLjUyNTgrLTAuMjI4MyAg
ICAgICAgPwogICBwb2x5LWNoYWluLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzLjM5MDUrLTAuMjU4NCAgICAgICAgICAgIDMuMzE2OCstMC4xMDkyICAgICAgICAgIG1p
Z2h0IGJlIDEuMDIyMnggZmFzdGVyCiAgIHBvbHktc3RyaWN0ZXEgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNjguMjAyOSstMy41MzMwICAgICA/ICAgICA2OS44MjI2Ky0zLjQ3
ODIgICAgICAgID8gbWlnaHQgYmUgMS4wMjM3eCBzbG93ZXIKICAgcG9seW1vcnBoaWMtYXJyYXkt
Y2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS44NzAwKy0wLjMzMjEgICAgICAgICAg
ICAxLjYzNjErLTAuMDcwMiAgICAgICAgICBtaWdodCBiZSAxLjE0MzB4IGZhc3RlcgogICBwb2x5
bW9ycGhpYy1nZXQtYnktaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjU0OTUrLTAu
MTY5MiAgICAgICAgICAgIDIuNTMwMistMC4wODI5ICAgICAgICAKICAgcG9seW1vcnBoaWMtcHV0
LWJ5LWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNS43NzExKy0zLjI2ODAgICAgICAg
ICAgIDM1LjMwMzkrLTEuMjc3NiAgICAgICAgICBtaWdodCBiZSAxLjAxMzJ4IGZhc3RlcgogICBw
b2x5bW9ycGhpYy1wdXQtYnktdmFsLXdpdGgtc3RyaW5nICAgICAgICAgICAgICAgIDM3Ljk2MDAr
LTEuNTU2MSAgICAgICAgICAgMzYuNjc0NystMS42NDM4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM1
MHggZmFzdGVyCiAgIHBvbHltb3JwaGljLXB1dC1ieS12YWwtd2l0aC1zeW1ib2wgICAgICAgICAg
ICAgICAgMzYuNTM3MystMi40MDc3ICAgICA/ICAgICAzNy4yNjU1Ky0yLjA3MjggICAgICAgID8g
bWlnaHQgYmUgMS4wMTk5eCBzbG93ZXIKICAgcG9seW1vcnBoaWMtc3RydWN0dXJlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxNy4wNDM4Ky0wLjkzMzEgICAgICAgICAgIDE2Ljk5MjErLTAu
ODI4NSAgICAgICAgCiAgIHBvbHl2YXJpYW50LW1vbm9tb3JwaGljLWdldC1ieS1pZCAgICAgICAg
ICAgICAgICAgIDUuMTYzNSstMC44ODc1ICAgICAgICAgICAgNC44NjE2Ky0wLjI2ODYgICAgICAg
ICAgbWlnaHQgYmUgMS4wNjIxeCBmYXN0ZXIKICAgcHJvdG8tZ2V0dGVyLWFjY2VzcyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxNC45MzQxKy0wLjg3MDQgICAgID8gICAgIDE1LjU3Nzkr
LTEuMTgyNCAgICAgICAgPyBtaWdodCBiZSAxLjA0MzF4IHNsb3dlcgogICBwcm90b3R5cGUtYWNj
ZXNzLXdpdGgtbXV0YXRpbmctcHJvdG90eXBlICAgICAgICAgICA2LjE0MzkrLTAuNzk3NiAgICAg
ICAgICAgIDUuODE1NystMC4zNjE1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDU2NHggZmFzdGVyCiAg
IHB1dC1ieS1pZC1yZXBsYWNlLWFuZC10cmFuc2l0aW9uICAgICAgICAgICAgICAgICAgMTAuMDQ4
MystMS4xMjcxICAgICAgICAgICAgOS42NDYzKy0wLjkyODYgICAgICAgICAgbWlnaHQgYmUgMS4w
NDE3eCBmYXN0ZXIKICAgcHV0LWJ5LWlkLXNsaWdodGx5LXBvbHltb3JwaGljICAgICAgICAgICAg
ICAgICAgICAgMy4zODkzKy0wLjM3NDAgICAgID8gICAgICAzLjUxMjkrLTAuNDIzNiAgICAgICAg
PyBtaWdodCBiZSAxLjAzNjV4IHNsb3dlcgogICBwdXQtYnktaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDE0LjM0MjYrLTAuOTQyOCAgICAgPyAgICAgMTYuMTY5NCst
Mi44MzI0ICAgICAgICA/IG1pZ2h0IGJlIDEuMTI3NHggc2xvd2VyCiAgIHB1dC1ieS12YWwtZGly
ZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNTk2MSstMC4wOTc4ICAgICA/
ICAgICAgMC42MDEwKy0wLjE4NTMgICAgICAgID8KICAgcHV0LWJ5LXZhbC1sYXJnZS1pbmRleC1i
bGFuay1pbmRleGluZy10eXBlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDYuNjI0NistMC40MzA1ICAgICA/ICAgICAgNy45MDUyKy0yLjQz
MTEgICAgICAgID8gbWlnaHQgYmUgMS4xOTMzeCBzbG93ZXIKICAgcHV0LWJ5LXZhbC1tYWNoaW5l
LWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi45OTk4Ky0wLjE4MjUgICAgICAgICAg
ICAyLjk3NTcrLTAuMTAzNiAgICAgICAgCiAgIHB1dC1ieS12YWwtd2l0aC1zdHJpbmctcmVwbGFj
ZS1hbmQtdHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDE2LjY0NzgrLTAuODQ2OCAgICAgPyAgICAgMTYuNzg3OCstMS4wNTIy
ICAgICAgICA/CiAgIHB1dC1ieS12YWwtd2l0aC1zdHJpbmctc2xpZ2h0bHktcG9seW1vcnBoaWMg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NS4zODU4Ky0wLjcxODcgICAgICAgICAgICA1LjIzMTkrLTAuMjk2OCAgICAgICAgICBtaWdodCBi
ZSAxLjAyOTR4IGZhc3RlcgogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEzLjk5MjArLTAuOTUyOCAgICAgPyAgICAgMTMuOTk4MCstMC44NzY1ICAg
ICAgICA/CiAgIHB1dC1ieS12YWwtd2l0aC1zeW1ib2wtcmVwbGFjZS1hbmQtdHJhbnNpdGlvbiAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0
Ljk0MjYrLTAuODY0NCAgICAgPyAgICAgMTYuNjI1MystMy4zMTQwICAgICAgICA/IG1pZ2h0IGJl
IDEuMTEyNnggc2xvd2VyCiAgIHB1dC1ieS12YWwtd2l0aC1zeW1ib2wtc2xpZ2h0bHktcG9seW1v
cnBoaWMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNC4wMjIzKy0wLjI5MzUgICAgICAgICAgICAzLjk4OTkrLTAuMjcyNyAgICAgICAgCiAg
IHB1dC1ieS12YWwtd2l0aC1zeW1ib2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuNjI3
MistMC43NDE0ICAgICAgICAgICAxNC41OTk1Ky0xLjUzOTggICAgICAgIAogICByYXJlLW9zci1l
eGl0LW9uLWxvY2FsICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjUyODYrLTAuNzUzNiAg
ICAgICAgICAgMTYuMDgwOSstMC44NDk3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3OHggZmFzdGVy
CiAgIHJheXRyYWNlLXdpdGgtZW1wdHktdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgMTEu
MDM0OCstMC43NDI1ICAgICAgICAgICAxMC4wNDE3Ky0xLjU3NjkgICAgICAgICAgbWlnaHQgYmUg
MS4wOTg5eCBmYXN0ZXIKICAgcmF5dHJhY2Utd2l0aC10cnktY2F0Y2ggICAgICAgICAgICAgICAg
ICAgICAgICAgICAxNS41NDUyKy0yLjM4MTggICAgICAgICAgIDE0LjMyMDcrLTEuMjM2NyAgICAg
ICAgICBtaWdodCBiZSAxLjA4NTV4IGZhc3RlcgogICByZWdleHAtZXhlYyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQ4LjA2NzErLTEuMTQ5OSAgICAgPyAgICAgNDkuMzQw
OSstMi42ODg1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI2NXggc2xvd2VyCiAgIHJlZ2V4cC1sYXN0
LWluZGV4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNDQzMistMC42MTI5ICAg
ICAgICAgICAxMi4zMzU4Ky0wLjM2MjEgICAgICAgIAogICByZWdleHAtc2V0LWxhc3QtaW5kZXgg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjcwMjQrLTEuMTIwNiAgICAgICAgICAgMTMu
MTgyOCstMC4zMDYzICAgICAgICAgIG1pZ2h0IGJlIDEuMDM5NHggZmFzdGVyCiAgIHJlZ2lzdGVy
LXByZXNzdXJlLWZyb20tb3NyICAgICAgICAgICAgICAgICAgICAgICAgMjIuMTY4NystMS40MDU2
ICAgICAgICAgICAyMS43Mzc4Ky0xLjExMDcgICAgICAgICAgbWlnaHQgYmUgMS4wMTk4eCBmYXN0
ZXIKICAgcmVwZWF0LW11bHRpLWdldC1ieS1vZmZzZXQgICAgICAgICAgICAgICAgICAgICAgICAy
NC44Nzc4Ky0yLjI4MzUgICAgID8gICAgIDI1LjQ1MjgrLTEuNzg1MiAgICAgICAgPyBtaWdodCBi
ZSAxLjAyMzF4IHNsb3dlcgogICByaWNoYXJkcy1lbXB0eS10cnktY2F0Y2ggICAgICAgICAgICAg
ICAgICAgICAgICAgIDY4LjA3MTQrLTYuMjA3OCAgICAgICAgICAgNjcuNDU4MCstMS42NTM1ICAg
ICAgICAKICAgcmljaGFyZHMtdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMwNC42NjAwKy00LjYzMjUgICAgID8gICAgMzEzLjQ2NzUrLTI0Ljk5NTkgICAgICAgPyBtaWdo
dCBiZSAxLjAyODl4IHNsb3dlcgogICBzZXQtZm9yLWVhY2ggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0Ljg3NTUrLTAuMTYzNSAgICAgPyAgICAgIDUuMDExOCstMC4xNDU0
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI4MHggc2xvd2VyCiAgIHNldC1mb3Itb2YgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuNDg5MSstMC4zODg4ICAgICA/ICAgICAx
MC41MjI0Ky0wLjk4MjIgICAgICAgID8gbWlnaHQgYmUgMS4xMDg5eCBzbG93ZXIKICAgc2V0dGVy
LXByb3RvdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi40NjMyKy0xLjI3
NzQgICAgICAgICAgICA1LjkwNTkrLTAuMjgzNCAgICAgICAgICBtaWdodCBiZSAxLjA5NDR4IGZh
c3RlcgogICBzZXR0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA0LjE0NDErLTAuMTY1NyAgICAgPyAgICAgIDQuNDc1NCstMC41NjYzICAgICAgICA/IG1pZ2h0
IGJlIDEuMDgwMHggc2xvd2VyCiAgIHNpbXBsZS1hY3RpdmF0aW9uLWRlbW8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMzAuNDkxMystMS44NTg3ICAgICA/ICAgICAzMy4xMDU4Ky00LjgxNDAg
ICAgICAgID8gbWlnaHQgYmUgMS4wODU3eCBzbG93ZXIKICAgc2ltcGxlLWdldHRlci1hY2Nlc3Mg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMy4xNDM0Ky0xLjMxOTQgICAgID8gICAgIDIz
LjQ0MjArLTEuMDY1MiAgICAgICAgPyBtaWdodCBiZSAxLjAxMjl4IHNsb3dlcgogICBzaW1wbGUt
cG9seS1jYWxsLW5lc3RlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjI1MTUrLTAuMTc1
NiAgICAgPyAgICAgIDUuNDY1NistMC40MzUyICAgICAgICA/IG1pZ2h0IGJlIDEuMDQwOHggc2xv
d2VyCiAgIHNpbXBsZS1wb2x5LWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEuNzUzMistMC4xNTE5ICAgICA/ICAgICAgMS43Njk3Ky0wLjE2MDUgICAgICAgID8KICAgc2lt
cGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbCAgICAgICAgICAgICAgICAgICAgNC4xNTgyKy0w
LjIwNzMgICAgICAgICAgICA0LjE0MDErLTAuMTc2NSAgICAgICAgCiAgIHNpbXBsZS1yZWdleHAt
ZXhlYy1mb2xkaW5nICAgICAgICAgICAgICAgICAgICAgICAgMjMuMTQ2MCstMC43MTM5ICAgICA/
ICAgICAyMy42NDA2Ky0xLjQxOTkgICAgICAgID8gbWlnaHQgYmUgMS4wMjE0eCBzbG93ZXIKICAg
c2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbCAgICAgICAgICAgICAgICAgICAgMy44OTcw
Ky0wLjA4NzYgICAgID8gICAgICAzLjk4NjQrLTAuMDg0MiAgICAgICAgPyBtaWdodCBiZSAxLjAy
Mjl4IHNsb3dlcgogICBzaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZyAgICAgICAgICAgICAgICAg
ICAgICAgICA1LjI3MzIrLTAuMTM2OCAgICAgPyAgICAgIDUuNjUzMCstMC42NDI2ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDcyMHggc2xvd2VyCiAgIHNpbi1ib29sZWFuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDkuMDE3MystMC41ODA0ICAgICAgICAgICAgOC41OTU4Ky0w
LjM1MDIgICAgICAgICAgbWlnaHQgYmUgMS4wNDkweCBmYXN0ZXIKICAgc2luZ2xldG9uLXNjb3Bl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MC4yNTM3Ky0xLjQ0ODcgICAgID8g
ICAgIDgxLjQ0OTErLTMuNDgzMyAgICAgICAgPyBtaWdodCBiZSAxLjAxNDl4IHNsb3dlcgogICBz
aW5rLWZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjU2MDkr
LTEuMjk1NiAgICAgICAgICAgIDcuOTE2OCstMC44OTM3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDgx
NHggZmFzdGVyCiAgIHNpbmstaHVnZS1hY3RpdmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTcuMTY2NystMC45Mjc1ICAgICAgICAgICAxNi40MDg5Ky0xLjAwNjggICAgICAgICAg
bWlnaHQgYmUgMS4wNDYyeCBmYXN0ZXIKICAgc2lua2FibGUtbmV3LW9iamVjdC1kYWcgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1NC4yMjUzKy0yLjQ2NDIgICAgID8gICAgIDU1Ljc5MzUrLTQu
MjM1MCAgICAgICAgPyBtaWdodCBiZSAxLjAyODl4IHNsb3dlcgogICBzaW5rYWJsZS1uZXctb2Jq
ZWN0LXRha2VuICAgICAgICAgICAgICAgICAgICAgICAgIDQ1Ljk2NTcrLTEuNTExMyAgICAgPyAg
ICAgNDYuMjE3NSstMy4zNzY0ICAgICAgICA/CiAgIHNpbmthYmxlLW5ldy1vYmplY3QgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMjMuNzk2MistMC45NzUzICAgICA/ICAgICAyNC4wMTA3
Ky0yLjA1MzkgICAgICAgID8KICAgc2xvdy1hcnJheS1wcm9maWxlLWNvbnZlcmdlbmNlICAgICAg
ICAgICAgICAgICAgICAgMy4yODc4Ky0wLjM4NDYgICAgICAgICAgICAzLjE0NzkrLTAuMTA4MiAg
ICAgICAgICBtaWdodCBiZSAxLjA0NDV4IGZhc3RlcgogICBzbG93LWNvbnZlcmdlbmNlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjI4NzMrLTAuMzk2MiAgICAgICAgICAgIDMu
MTg0MistMC4xMTAwICAgICAgICAgIG1pZ2h0IGJlIDEuMDMyNHggZmFzdGVyCiAgIHNsb3ctdGVy
bmFyaWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcuNDY3MistMC4zMjc0
ICAgICA/ICAgICAxNy43Njk3Ky0xLjQ2OTggICAgICAgID8gbWlnaHQgYmUgMS4wMTczeCBzbG93
ZXIKICAgc29ydGluZy1iZW5jaG1hcmsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
NC4xMDkzKy0wLjk4MTQgICAgICAgICAgIDI0LjAzNjgrLTAuNjA3NyAgICAgICAgCiAgIHNwYXJz
ZS1jb25kaXRpb25hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNjQ5MystMC4z
ODkyICAgICAgICAgICAgMS41ODc0Ky0wLjExMzIgICAgICAgICAgbWlnaHQgYmUgMS4wMzkweCBm
YXN0ZXIKICAgc3BsaWNlLXRvLXJlbW92ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxNy42MDcwKy0wLjg5MTAgICAgID8gICAgIDE4LjQ2ODgrLTEuMDcwNCAgICAgICAgPyBtaWdo
dCBiZSAxLjA0ODl4IHNsb3dlcgogICBzdHJjYXQtY29uc3QgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA3LjYyODMrLTIuNjEzOSAgICAgICAgICAgIDYuMzA0OCstMC4yNDk1
ICAgICAgICAgIG1pZ2h0IGJlIDEuMjA5OXggZmFzdGVyCiAgIHN0cmNhdC1sZW5ndGgtY29uc3Qg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuOTM2NCstMC41NDk2ICAgICA/ICAgICAg
Ny4wMDg1Ky0wLjQ0NjQgICAgICAgID8gbWlnaHQgYmUgMS4wMTA0eCBzbG93ZXIKICAgc3RyaW5n
LWNoYXItY29kZS1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOC41MjkzKy0wLjk1
NjYgICAgID8gICAgIDE4LjczNDErLTAuNjYwNCAgICAgICAgPyBtaWdodCBiZSAxLjAxMTF4IHNs
b3dlcgogICBzdHJpbmctY29uY2F0LW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyLjc5NTUrLTAuMTk1NyAgICAgPyAgICAgIDIuOTQxMistMC4yNDU1ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDUyMXggc2xvd2VyCiAgIHN0cmluZy1jb25jYXQtcGFpci1vYmplY3QgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIuNjU5NSstMC4wNzMyICAgICA/ICAgICAgMi43MTMwKy0wLjE1ODkg
ICAgICAgID8gbWlnaHQgYmUgMS4wMjAxeCBzbG93ZXIKICAgc3RyaW5nLWNvbmNhdC1wYWlyLXNp
bXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgMy44NjU3Ky0wLjExOTMgICAgID8gICAgICAz
Ljk0MzYrLTAuMzA2MyAgICAgICAgPyBtaWdodCBiZSAxLjAyMDJ4IHNsb3dlcgogICBzdHJpbmct
Y29uY2F0LXNpbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjEwOTkrLTMuODU2
MyAgICAgICAgICAgMTMuMzEyNystMS4xOTYwICAgICAgICAgIG1pZ2h0IGJlIDEuMDU5OXggZmFz
dGVyCiAgIHN0cmluZy1jb25zLXJlcGVhdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDkuMDUzOSstMC45NTYyICAgICA/ICAgICAgOS4yNzk3Ky0wLjU5NzYgICAgICAgID8gbWlnaHQg
YmUgMS4wMjQ5eCBzbG93ZXIKICAgc3RyaW5nLWNvbnMtdG93ZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOS41MTE1Ky0wLjg0NjcgICAgID8gICAgICA5Ljc1ODQrLTAuOTE3MyAg
ICAgICAgPyBtaWdodCBiZSAxLjAyNjB4IHNsb3dlcgogICBzdHJpbmctZXF1YWxpdHkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjA1ODYrLTAuNzcxMyAgICAgPyAgICAgMjEu
MjY5MystMS4wNDcxICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwMHggc2xvd2VyCiAgIHN0cmluZy1m
cm9tLWNoYXItY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMTY0NSstMC4yNDQw
ICAgICAgICAgICAgOC4wMDU5Ky0wLjIxNTAgICAgICAgICAgbWlnaHQgYmUgMS4wMTk4eCBmYXN0
ZXIKICAgc3RyaW5nLWdldC1ieS12YWwtYmlnLWNoYXIgICAgICAgICAgICAgICAgICAgICAgICAg
Ni44ODA5Ky0yLjAyODggICAgICAgICAgICA2LjExMTUrLTAuMTgxNiAgICAgICAgICBtaWdodCBi
ZSAxLjEyNTl4IGZhc3RlcgogICBzdHJpbmctZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzLWluc2Fu
ZSAgICAgICAgICAgICA0LjQ3NjgrLTAuMTkwOCAgICAgPyAgICAgIDQuNjQwNCstMC41MzA2ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDM2NXggc2xvd2VyCiAgIHN0cmluZy1nZXQtYnktdmFsLW91dC1v
Zi1ib3VuZHMgICAgICAgICAgICAgICAgICAgIDUuODkzOCstMC4yODM0ICAgICA/ICAgICAgNS45
Mzc1Ky0wLjM4NDUgICAgICAgID8KICAgc3RyaW5nLWdldC1ieS12YWwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi42ODMwKy0wLjA3MzggICAgID8gICAgICAyLjcxMDUrLTAuMTE0
NSAgICAgICAgPyBtaWdodCBiZSAxLjAxMDN4IHNsb3dlcgogICBzdHJpbmctaGFzaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjUwMDQrLTAuMTI3NiAgICAgPyAgICAg
IDIuNTUwOCstMC4xMTgxICAgICAgICA/IG1pZ2h0IGJlIDEuMDIwMnggc2xvd2VyCiAgIHN0cmlu
Zy1sb25nLWlkZW50LWVxdWFsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgMTcuMjA1NystMC42
MDg1ICAgICA/ICAgICAxNy41NTc2Ky0xLjQxMDEgICAgICAgID8gbWlnaHQgYmUgMS4wMjA1eCBz
bG93ZXIKICAgc3RyaW5nLW91dC1vZi1ib3VuZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOC43MDQ4Ky0wLjYwMDQgICAgICAgICAgICA4LjQ5NTIrLTAuMzA1MiAgICAgICAgICBtaWdo
dCBiZSAxLjAyNDd4IGZhc3RlcgogICBzdHJpbmctcmVwZWF0LWFyaXRoICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDI4LjMzNzIrLTEuNDI3MCAgICAgPyAgICAgMjkuNDg4NSstMi4wMjA1
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQwNnggc2xvd2VyCiAgIHN0cmluZy1yZXBlYXQtbm90LXJl
c29sdmluZy1maXhlZCAgICAgICAgICAgICAgICAgIDQuMTM4NCstMC4zNjM1ICAgICAgICAgICAg
My45OTk1Ky0wLjMyMzYgICAgICAgICAgbWlnaHQgYmUgMS4wMzQ3eCBmYXN0ZXIKICAgc3RyaW5n
LXJlcGVhdC1ub3QtcmVzb2x2aW5nLW5vLWlubGluZSAgICAgICAgICAgICAgNy4wNzg4Ky0xLjUy
MTQgICAgICAgICAgICA2LjI0MTkrLTAuNzkyOCAgICAgICAgICBtaWdodCBiZSAxLjEzNDF4IGZh
c3RlcgogICBzdHJpbmctcmVwZWF0LW5vdC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICAg
ICA1Ljc4MjErLTAuNTkwMyAgICAgPyAgICAgIDYuNDU5MistMS45MDI3ICAgICAgICA/IG1pZ2h0
IGJlIDEuMTE3MXggc2xvd2VyCiAgIHN0cmluZy1yZXBlYXQtcmVzb2x2aW5nLWZpeGVkICAgICAg
ICAgICAgICAgICAgICAgMjYuNTg5NCstMS44MzA2ICAgICAgICAgICAyNi4zMjM3Ky0xLjg2NjIg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTAxeCBmYXN0ZXIKICAgc3RyaW5nLXJlcGVhdC1yZXNvbHZp
bmctbm8taW5saW5lICAgICAgICAgICAgICAgICAzNS40ODEwKy0xLjY4MzggICAgID8gICAgIDM1
Ljk1NjkrLTIuMzgxOCAgICAgICAgPyBtaWdodCBiZSAxLjAxMzR4IHNsb3dlcgogICBzdHJpbmct
cmVwZWF0LXJlc29sdmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIDMzLjcyMjQrLTAuOTI5
MCAgICAgPyAgICAgMzUuNTU0NCstMi40MzUxICAgICAgICA/IG1pZ2h0IGJlIDEuMDU0M3ggc2xv
d2VyCiAgIHN0cmluZy1yZXBlYXQtc2luZ2xlLW5vdC1yZXNvbHZpbmcgICAgICAgICAgICAgICAg
IDguMzE5MystMC4zNDI3ICAgICA/ICAgICAgOC43OTQzKy0wLjk3MjcgICAgICAgID8gbWlnaHQg
YmUgMS4wNTcxeCBzbG93ZXIKICAgc3RyaW5nLXJlcGVhdC1zaW5nbGUtcmVzb2x2aW5nICAgICAg
ICAgICAgICAgICAgICAgOS42MDAyKy0xLjE3MzkgICAgICAgICAgICA5LjMwMjUrLTAuODY1NSAg
ICAgICAgICBtaWdodCBiZSAxLjAzMjB4IGZhc3RlcgogICBzdHJpbmctcmVwZWF0LXNtYWxsLW5v
dC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICA0LjMwNjErLTAuMTY4MCAgICAgPyAgICAgIDQu
MzU2MSstMC4xODIxICAgICAgICA/IG1pZ2h0IGJlIDEuMDExNnggc2xvd2VyCiAgIHN0cmluZy1y
ZXBlYXQtc21hbGwtcmVzb2x2aW5nICAgICAgICAgICAgICAgICAgICAgMzYuMzUxOSstMS44OTEz
ICAgICA/ICAgICAzNy40MTk4Ky00LjM1NDEgICAgICAgID8gbWlnaHQgYmUgMS4wMjk0eCBzbG93
ZXIKICAgc3RyaW5nLXJlcGxhY2UtZW1wdHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OS4zMDc4Ky0wLjg2NzggICAgID8gICAgIDEwLjcyMDcrLTIuMzA5MSAgICAgICAgPyBtaWdodCBi
ZSAxLjE1MTh4IHNsb3dlcgogICBzdHJpbmctcmVwbGFjZS1nZW5lcmljICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDY5LjA1MDMrLTMuNjgyMCAgICAgPyAgICAgNzAuMTYyMSstMy45MzYxICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDE2MXggc2xvd2VyCiAgIHN0cmluZy1yZXBsYWNlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuNzU2MSstMy41NjQ3ICAgICAgICAgICAgOS4z
MzYyKy0wLjg1ODMgICAgICAgICAgbWlnaHQgYmUgMS4xNTIxeCBmYXN0ZXIKICAgc3RyaW5nLXJv
cGUtd2l0aC1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAyNS41MjI5Ky05LjM3NjUg
ICAgICAgICAgIDIyLjU2MjArLTEuMzQ1MSAgICAgICAgICBtaWdodCBiZSAxLjEzMTJ4IGZhc3Rl
cgogICBzdHJpbmctc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0
LjAxNjIrLTEuNDE3OSAgICAgPyAgICAgNDUuODkzMSstMS4xOTk3ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDQyNnggc2xvd2VyCiAgIHN0cmluZy10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMuOTAyOCstMC4wMTQxICAgICA/ICAgICAgNC4wNDk0Ky0wLjE1OTUgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzc2eCBzbG93ZXIKICAgc3RyaW5nLXRyYW5zY29kaW5nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyMS42OTUzKy0wLjk0MTcgICAgID8gICAgIDIyLjY2
MzErLTEuMDUxNiAgICAgICAgPyBtaWdodCBiZSAxLjA0NDZ4IHNsb3dlcgogICBzdHJpbmctdmFy
LWVxdWFsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM0LjkwNDcrLTEuNzY2OSAg
ICAgPyAgICAgMzQuOTQ4NCstMS41OTcxICAgICAgICA/CiAgIHN0cnVjdHVyZS1ob2lzdC1vdmVy
LXRyYW5zaXRpb25zICAgICAgICAgICAgICAgICAgIDIuODk1MSstMC4xNDk5ICAgICA/ICAgICAg
Mi45OTQzKy0wLjIwMDUgICAgICAgID8gbWlnaHQgYmUgMS4wMzQzeCBzbG93ZXIKICAgc3Vic3Ry
aW5nLWNvbmNhdC13ZWlyZCAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ny43NTAwKy0xLjI2
NDkgICAgID8gICAgIDUzLjE1MDgrLTE0LjI4NjIgICAgICAgPyBtaWdodCBiZSAxLjExMzF4IHNs
b3dlcgogICBzdWJzdHJpbmctY29uY2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDUzLjE3NzIrLTEuMTIzNiAgICAgICAgICAgNTIuOTg3NystMi45NzE4ICAgICAgICAKICAgc3Vi
c3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1OS43NzMxKy0z
LjI0ODcgICAgID8gICAgIDYxLjU2MjkrLTMuNDEwMCAgICAgICAgPyBtaWdodCBiZSAxLjAyOTl4
IHNsb3dlcgogICBzd2l0Y2gtY2hhci1jb25zdGFudCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzLjAyMjYrLTAuNjExMSAgICAgICAgICAgIDIuNzI4OSstMC4wOTAwICAgICAgICAgIG1p
Z2h0IGJlIDEuMTA3NnggZmFzdGVyCiAgIHN3aXRjaC1jaGFyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDYuMDQ0MistMC4xODkzICAgICA/ICAgICAgNi4zMjA5Ky0wLjc0
ODAgICAgICAgID8gbWlnaHQgYmUgMS4wNDU4eCBzbG93ZXIKICAgc3dpdGNoLWNvbnN0YW50ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41MjA4Ky0wLjIzNDcgICAgICAgICAg
ICA0LjQxNDcrLTAuMTc0NCAgICAgICAgICBtaWdodCBiZSAxLjAyNDB4IGZhc3RlcgogICBzd2l0
Y2gtc3RyaW5nLWJhc2ljLWJpZy12YXIgICAgICAgICAgICAgICAgICAgICAgIDE4LjQwMjErLTEu
MDMyMCAgICAgPyAgICAgMTguOTQ1NSstMS4zOTMyICAgICAgICA/IG1pZ2h0IGJlIDEuMDI5NXgg
c2xvd2VyCiAgIHN3aXRjaC1zdHJpbmctYmFzaWMtYmlnICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTguNDA5MystMC42NTE0ICAgICAgICAgICAxOC4zNDUwKy0wLjg5NDggICAgICAgIAogICBz
d2l0Y2gtc3RyaW5nLWJhc2ljLXZhciAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4LjcyOTkr
LTEuMjYzNSAgICAgICAgICAgMTguMzU1MCstMC45OTA3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIw
NHggZmFzdGVyCiAgIHN3aXRjaC1zdHJpbmctYmFzaWMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTYuMTk2MistMS4xMjUxICAgICA/ICAgICAxNi45MzcwKy0xLjU1MzggICAgICAgID8g
bWlnaHQgYmUgMS4wNDU3eCBzbG93ZXIKICAgc3dpdGNoLXN0cmluZy1iaWctbGVuZ3RoLXRvd2Vy
LXZhciAgICAgICAgICAgICAgICAyNS4zNDkyKy0xLjIwNjEgICAgID8gICAgIDI1LjU2ODcrLTAu
OTE1NiAgICAgICAgPwogICBzd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlci12YXIgICAgICAgICAg
ICAgICAgICAgIDE5LjA0ODArLTEuMjI2NiAgICAgICAgICAgMTguODk0MSstMC43MzYxICAgICAg
ICAKICAgc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXIgICAgICAgICAgICAgICAgICAgICAgICAx
NS44MjI1Ky0xLjU3MTQgICAgID8gICAgIDE1Ljg5ODErLTEuMTU3MSAgICAgICAgPwogICBzd2l0
Y2gtc3RyaW5nLXNob3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjI4ODErLTEu
NDk3OCAgICAgICAgICAgMTUuOTQwOCstMC41MDY4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxOHgg
ZmFzdGVyCiAgIHN3aXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDkuNDAxMystMC40NDY2ICAgICA/ICAgICAgOS40OTg3Ky0xLjA0MjggICAgICAgID8gbWln
aHQgYmUgMS4wMTA0eCBzbG93ZXIKICAgc3ltYm9sLXRvc3RyaW5ndGFnICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMy45NzQzKy0wLjE5NjcgICAgID8gICAgICA0LjIxOTIrLTAuNDg0
MSAgICAgICAgPyBtaWdodCBiZSAxLjA2MTZ4IHNsb3dlcgogICB0ZWFyLW9mZi1hcmd1bWVudHMt
c2ltcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAzLjc5NTcrLTAuMzEzMSAgICAgICAgICAg
IDMuNzA5MistMC40NTE1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIzM3ggZmFzdGVyCiAgIHRlYXIt
b2ZmLWFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMDM3NystMC4x
MjMyICAgICA/ICAgICAgNC40NDE0Ky0wLjYwNTMgICAgICAgID8gbWlnaHQgYmUgMS4xMDAweCBz
bG93ZXIKICAgdGVtcG9yYWwtc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxNi4wNTg1Ky0wLjU1MDEgICAgICAgICAgIDE1LjkxOTgrLTAuNzI5OCAgICAgICAgCiAgIHRv
LWludDMyLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTguNTQzOSst
MS4wODgwICAgICA/ICAgICAxOS4zMDQ2Ky0wLjc2MTMgICAgICAgID8gbWlnaHQgYmUgMS4wNDEw
eCBzbG93ZXIKICAgdHJ5LWNhdGNoLWdldC1ieS12YWwtY2xvbmVkLWFyZ3VtZW50cyAgICAgICAg
ICAgICAgNC4yODY1Ky0wLjA4NDAgICAgID8gICAgICA0LjQ2OTkrLTAuMjE0NyAgICAgICAgPyBt
aWdodCBiZSAxLjA0Mjh4IHNsb3dlcgogICB0cnktY2F0Y2gtZ2V0LWJ5LXZhbC1kaXJlY3QtYXJn
dW1lbnRzICAgICAgICAgICAgICAyLjc3ODArLTAuMjk0NSAgICAgICAgICAgIDIuNjg4MistMC4x
MDU0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMzNHggZmFzdGVyCiAgIHRyeS1jYXRjaC1nZXQtYnkt
dmFsLXNjb3BlZC1hcmd1bWVudHMgICAgICAgICAgICAgIDYuNzA5MCstMi43NjI1ICAgICAgICAg
ICAgNi42MDk5Ky0yLjMxNDAgICAgICAgICAgbWlnaHQgYmUgMS4wMTUweCBmYXN0ZXIKICAgdHlw
ZWQtYXJyYXktZ2V0LXNldC1ieS12YWwtcHJvZmlsaW5nICAgICAgICAgICAgICAyNi43NTUyKy0x
LjI1MTQgICAgID8gICAgIDI3LjUwNDkrLTEuMDE5MSAgICAgICAgPyBtaWdodCBiZSAxLjAyODB4
IHNsb3dlcgogICB1bmRlZmluZWQtcHJvcGVydHktYWNjZXNzICAgICAgICAgICAgICAgICAgICAg
ICAgMzkwLjQwNDkrLTIuOTUyNiAgICAgPyAgICAzOTMuMDY4MistMy4yODUyICAgICAgICA/CiAg
IHVuZGVmaW5lZC10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMjI0
OSstMC4xMjQ4ICAgICA/ICAgICAgNC43NzY5Ky0wLjk0NTUgICAgICAgID8gbWlnaHQgYmUgMS4x
MzA3eCBzbG93ZXIKICAgdW5wcm9maWxlZC1saWNtICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNy45OTY4Ky0wLjE0MDUgICAgID8gICAgICA4LjAzOTMrLTAuMzY4MCAgICAgICAg
PwogICB1bnR5cGVkLXN0cmluZy1mcm9tLWNoYXItY29kZSAgICAgICAgICAgICAgICAgICAgIDEz
LjgyMDgrLTEuMjg2NCAgICAgICAgICAgMTMuMjY3MSstMC41OTYzICAgICAgICAgIG1pZ2h0IGJl
IDEuMDQxN3ggZmFzdGVyCiAgIHY4LXJheXRyYWNlLXdpdGgtZW1wdHktdHJ5LWNhdGNoICAgICAg
ICAgICAgICAgICAgNTQuMzI1MystMi45NDg0ICAgICAgICAgICA1My40NTgzKy0zLjYyNzAgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTYyeCBmYXN0ZXIKICAgdjgtcmF5dHJhY2Utd2l0aC10cnktY2F0
Y2gtaGlnaC1mcmVxdWVuY3ktdGhyb3dzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1MTQuMDc0MSstOC4wMjIzICAgICA/ICAgIDUxOS4xOTMw
Ky03LjM0MzIgICAgICAgID8KICAgdjgtcmF5dHJhY2Utd2l0aC10cnktY2F0Y2ggICAgICAgICAg
ICAgICAgICAgICAgICA4MC44MTQ5Ky0yLjU4MjggICAgICAgICAgIDgwLjIzNTMrLTEuMzkwOSAg
ICAgICAgCiAgIHY4LXJlZ2V4cC1zZWFyY2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNjguMDc3MistMi41MjAyICAgICA/ICAgICA3MS45MDIwKy01LjcyNjggICAgICAgID8gbWln
aHQgYmUgMS4wNTYyeCBzbG93ZXIKICAgdmFyYXJncy1jYWxsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxNi45Mzc2Ky0wLjgyNzEgICAgID8gICAgIDE3LjAyMDcrLTEuMjQ2
NCAgICAgICAgPwogICB2YXJhcmdzLWNvbnN0cnVjdC1pbmxpbmUgICAgICAgICAgICAgICAgICAg
ICAgICAgIDI2LjEwMzkrLTEuMDcyNCAgICAgICAgICAgMjUuNjE1NCstMS4xNTMyICAgICAgICAg
IG1pZ2h0IGJlIDEuMDE5MXggZmFzdGVyCiAgIHZhcmFyZ3MtY29uc3RydWN0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMzIuMTE3OCstMS40NjE5ICAgICA/ICAgICAzMi44MTYzKy0x
LjA1NDYgICAgICAgID8gbWlnaHQgYmUgMS4wMjE3eCBzbG93ZXIKICAgdmFyYXJncy1pbmxpbmUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC42ODY0Ky0wLjU3NDMgICAgID8g
ICAgIDExLjY1MjgrLTAuODc5OSAgICAgICAgPyBtaWdodCBiZSAxLjA5MDR4IHNsb3dlcgogICB2
YXJhcmdzLXN0cmljdC1tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjc3OTcr
LTAuNDcyNyAgICAgPyAgICAgMTIuOTAxNCstMC44MTU4ICAgICAgICA/CiAgIHZhcmFyZ3MgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNzk3OSstMS4yMDAzICAg
ICAgICAgICAxMi41MzUyKy0wLjU0NTEgICAgICAgICAgbWlnaHQgYmUgMS4wMjEweCBmYXN0ZXIK
ICAgd2VpcmQtaW5saW5pbmctY29uc3QtcHJvcCAgICAgICAgICAgICAgICAgICAgICAgICAgMi45
MTQyKy0wLjIzMTIgICAgID8gICAgICAyLjkzOTErLTAuNDQ1NiAgICAgICAgPwoKICAgPGdlb21l
dHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC43NzQ3Ky0wLjA1
MjAgICAgID8gICAgIDEwLjc5NDcrLTAuMDYxMyAgICAgICAgPyBtaWdodCBiZSAxLjAwMTl4IHNs
b3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJhc2U2NCAgICAgICAgICAgICAgICAgICAgbmV3NjQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKQXNtQmVuY2g6CiAgIGJpZ2ZpYi5jcHAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA2MzQuNDU0MystMTEuNTI0MiAgICAgICAgIDYxNC42
MjQxKy0xNi41Mzg1ICAgICAgICAgbWlnaHQgYmUgMS4wMzIzeCBmYXN0ZXIKICAgY3JheS5jICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwNC4yMDgzKy04LjgwODAg
ICAgICAgICAgNTAyLjM5NDArLTUuMDYwOCAgICAgICAgCiAgIGRyeS5jICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1OTQuMjEwMCstMTguNDg0NyAgICA/ICAgIDYx
OC4xNDY1Ky03Ny4zMTQ1ICAgICAgID8gbWlnaHQgYmUgMS4wNDAzeCBzbG93ZXIKICAgRmxvYXRN
TS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMC41NTU1Ky0xNC4w
MjE5ICAgID8gICAxMDAyLjgzMTUrLTYuNTczMSAgICAgICAgPwogICBnY2MtbG9vcHMuY3BwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MTI0LjMyNjYrLTQyLjE2NzkgICAgICAg
IDUxMDcuNjg4MCstMjAuMzk4NCAgICAgICAKICAgbi1ib2R5LmMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTExNy45NTIxKy0xMC4yNjA4ICAgICAgICAxMTE1LjM5NzYr
LTkuMTgyNCAgICAgICAgCiAgIFF1aWNrc29ydC5jICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1NDcuMDM3NistNi44ODU4ICAgICAgICAgIDU0NC42MjM1Ky02Ljg4NjcgICAg
ICAgIAogICBzdGVwYW5vdl9jb250YWluZXIuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICA2
MDI1LjA1MTIrLTIyMTUuMDg4MSAgICAgIDUxMDMuMDcyOCstMzMuMTgxMSAgICAgICAgIG1pZ2h0
IGJlIDEuMTgwN3ggZmFzdGVyCiAgIFRvd2Vycy5jICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzNzEuNzg5NistMi44MTE0ICAgICA/ICAgIDM3NS40ODY1Ky0zLjkzMTEg
ICAgICAgID8KCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEwMjguNDk0NystMzIuNzkwMCAgICAgICAgMTAxMy44ODY2Ky0xMy41MzI0ICAgICAgICAg
bWlnaHQgYmUgMS4wMTQ0eCBmYXN0ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjQgICAgICAgICAgICAgICAgICAgIG5ldzY0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkNvbXByZXNzaW9uQmVuY2g6
CiAgIGh1ZmZtYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzYu
NDYyMCstMS40MjQ3ICAgICA/ICAgICAzNy42ODczKy0xLjg0ODggICAgICAgID8gbWlnaHQgYmUg
MS4wMzM2eCBzbG93ZXIKICAgYXJpdGhtZXRpYy1zaW1wbGUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDM1Ni43NDA1Ky0zLjkyOTEgICAgID8gICAgMzU4LjQ4NTkrLTcuMDcwNyAgICAg
ICAgPwogICBhcml0aG1ldGljLXByZWNpc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MzMyLjYzMTUrLTExLjkxMjggICAgPyAgICAzMzQuNjgwMystMy44NDA5ICAgICAgICA/CiAgIGFy
aXRobWV0aWMtY29tcGxleC1wcmVjaXNlICAgICAgICAgICAgICAgICAgICAgICAzMzIuMjE0OCst
Ni41OTkzICAgICAgICAgIDMzMS4yMTQ1Ky0zLjU3MDUgICAgICAgIAogICBhcml0aG1ldGljLXBy
ZWNpc2Utb3JkZXItMCAgICAgICAgICAgICAgICAgICAgICAgMzY1LjQyNjQrLTUuNTMzOSAgICAg
ICAgICAzNjIuOTkxMCstNS42Mzg2ICAgICAgICAKICAgYXJpdGhtZXRpYy1wcmVjaXNlLW9yZGVy
LTEgICAgICAgICAgICAgICAgICAgICAgIDQxMS45MjIyKy02LjkzMTggICAgID8gICAgNDE1LjI3
MDErLTkuNTQyOCAgICAgICAgPwogICBhcml0aG1ldGljLXByZWNpc2Utb3JkZXItMiAgICAgICAg
ICAgICAgICAgICAgICAgNDg1LjQ4NDUrLTEwLjA0NDYgICAgICAgICA0ODQuODc5MCstNS45NzQ0
ICAgICAgICAKICAgYXJpdGhtZXRpYy1zaW1wbGUtb3JkZXItMSAgICAgICAgICAgICAgICAgICAg
ICAgIDQyNy41MjI4Ky02LjIyNzQgICAgICAgICAgNDI2LjUxNDMrLTQuNTUwNCAgICAgICAgCiAg
IGFyaXRobWV0aWMtc2ltcGxlLW9yZGVyLTIgICAgICAgICAgICAgICAgICAgICAgICA1MjAuMDY1
MSstMTUuMTc0MiAgICAgICAgIDUwOC4xNDE2Ky01LjA5OTcgICAgICAgICAgbWlnaHQgYmUgMS4w
MjM1eCBmYXN0ZXIKICAgbHotc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDQ3OS4wNDk4Ky0yLjExNzAgICAgID8gICAgNDgzLjU2MTgrLTUuNjEyMiAgICAgICAg
PwoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMx
OS43NDE0Ky0yLjU4NDUgICAgID8gICAgMzIwLjU1NjIrLTIuNjkwOCAgICAgICAgPyBtaWdodCBi
ZSAxLjAwMjV4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJhc2U2NCAgICAgICAgICAgICAgICAgICAgbmV3NjQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKR2VvbWVhbiBvZiBwcmVmZXJyZWQgbWVh
bnM6CiAgIDxzY2FsZWQtcmVzdWx0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NjYuOTY4NCstMC42NDYwICAgICA/ICAgICA2Ny4zODY3Ky0wLjk2NzQgICAgICAgID8gbWlnaHQg
YmUgMS4wMDYyeCBzbG93ZXIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276243</attachid>
            <date>2016-04-12 10:02:48 -0700</date>
            <delta_ts>2016-04-12 14:57:32 -0700</delta_ts>
            <desc>proposed patch: with a better name for hasObservableSideEffectsForRegExpSplit().</desc>
            <filename>bug-156013.patch</filename>
            <type>text/plain</type>
            <size>161016</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5MzM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBA
CisyMDE2LTA0LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
UzY6IEltcGxlbWVudCBTdHJpbmcucHJvdG90eXBlLnNwbGl0IGFuZCBSZWdFeHAucHJvdG90eXBl
W0BAc3BsaXRdLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU2MDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ1aWx0aW5zL0dsb2JhbE9iamVjdC5qczoKKyAg
ICAgICAgKHNwZWNpZXNDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYnVpbHRpbnMvUHJvbWlzZVBy
b3RvdHlwZS5qczoKKyAgICAgICAgLSByZWZhY3RvcmVkIHRvIHVzZSB0aGUgQHNwZWNpZXNDb25z
dHJ1Y3RvciBpbnRlcm5hbCBmdW5jdGlvbi4KKworICAgICAgICAqIGJ1aWx0aW5zL1JlZ0V4cFBy
b3RvdHlwZS5qczoKKyAgICAgICAgKGFkdmFuY2VTdHJpbmdJbmRleCk6CisgICAgICAgIC0gcmVm
YWN0b3JlZCBmcm9tIEBhZHZhbmNlU3RyaW5nSW5kZXhVbmljb2RlKCkgdG8gYmUgbWF0Y2ggdGhl
IHNwZWMuCisgICAgICAgICAgQmVuY2htYXJrcyBzaG93IHRoYXQgdGhlcmUncyBubyBhZHZhbnRh
Z2UgaW4gZG9pbmcgdGhlIHVuaWNvZGUgY2hlY2sgb3V0c2lkZQorICAgICAgICAgIG9mIHRoZSBh
ZHZhbmNlU3RyaW5nSW5kZXhVbmljb2RlIHBhcnQuICBTbywgSSBzaW1wbGlmaWVkIHRoZSBjb2Rl
IHRvIG1hdGNoIHRoZQorICAgICAgICAgIHNwZWMgKGVzcGVjaWFsbHkgc2luY2UgQEBzcGxpdCBu
ZWVkcyB0byBjYWxsIGFkdmFuY2VTdHJpbmdJbmRleCBmcm9tIG1vcmUgdGhhbgorICAgICAgICAg
IDEgbG9jYXRpb24pLgorICAgICAgICAobWF0Y2gpOgorICAgICAgICAtIFJlbW92ZWQgYW4gdW5u
ZWNlc3NhcnkgY2FsbCB0byBAT2JqZWN0IGJlY2F1c2UgaXQgd2FzIGFscmVhZHkgcHJvdmVuIGFi
b3ZlLgorICAgICAgICAtIENoYW5nZWQgdG8gdXNlIGFkdmFuY2VTdHJpbmdJbmRleCBpbnN0ZWFk
IG9mIGFkdmFuY2VTdHJpbmdJbmRleFVuaWNvZGUuCisgICAgICAgICAgQWdhaW4sIHRoZXJlJ3Mg
bm8gcGVyZiByZWdyZXNzaW9uIGZvciB0aGlzLgorICAgICAgICAocmVnRXhwRXhlYyk6CisgICAg
ICAgIChzcGxpdCk6CisgICAgICAgIChhZHZhbmNlU3RyaW5nSW5kZXhVbmljb2RlKTogRGVsZXRl
ZC4KKworICAgICAgICAqIGJ1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qczoKKyAgICAgICAgKHNw
bGl0KToKKyAgICAgICAgLSBNb2RpZmllZCB0byB1c2UgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0
XS4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
Lmg6CisgICAgICAgIC0gQWRkZWQgdGhlIEBAc3BsaXQgc3ltYm9sLgorCisgICAgICAgICogcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvRUNNQVNjcmlwdFNw
ZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjplc1NwZWNJc0Nv
bnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6ZXNTcGVjSXNSZWdFeHApOgorICAgICAgICAqIHJ1
bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oOiBBZGRlZC4KKworICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6aW5pdCk6CisKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHA6
CisgICAgICAgIChKU0M6OlByb3BlcnR5RGVzY3JpcHRvcjo6c2V0RGVzY3JpcHRvcik6CisgICAg
ICAgIC0gUmVtb3ZlZCBhbiBhc3NlcnQgdGhhdCBpcyBubyBsb25nZXIgdmFsaWQuCisKKyAgICAg
ICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAtIE1hZGUgYWR2YW5jZVN0cmlu
Z1VuaWNvZGUoKSBwdWJsaWMgc28gdGhhdCBpdCBjYW4gYmUgcmUtdXNlZCBieSB0aGUgcmVnZXhw
IHNwbGl0CisgICAgICAgICAgZmFzdCBwYXRoLgorCisgICAgICAgICogcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jRXhlYyk6CisgICAgICAgIChKU0M6
OmFkdmFuY2VTdHJpbmdJbmRleCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY1NwbGl0
RmFzdCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaDoKKworICAgICAgICAq
IHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OmpzU3RyaW5nV2l0aFJldXNl
KToKKyAgICAgICAgKEpTQzo6anNTdWJzdHJpbmcpOgorICAgICAgICAtIEhvaXN0ZWQgc29tZSB1
dGlsaXR5IGZ1bmN0aW9ucyBmcm9tIFN0cmluZ1Byb3RvdHlwZS5jcHAgc28gdGhhdCB0aGV5IGNh
biBiZQorICAgICAgICAgIHJldXNlZCBieSB0aGUgcmVnZXhwIHNwbGl0IGZhc3QgcGF0aC4KKwor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3Rv
RnVuY1NwbGl0RmFzdCk6CisgICAgICAgIChKU0M6OmpzU3RyaW5nV2l0aFJldXNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6anNTdWJzdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpz
dHJpbmdQcm90b0Z1bmNTcGxpdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuaDoKKworICAgICAgICAqIHRlc3RzL2VzNi55YW1sOgorCiAyMDE2LTA0LTExICBC
ZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEIz
IGNhbiB1c2UgdW5kZWZpbmVkIGJpdHMgb3Igbm90IGRlZmluZWQgcmVxdWlyZWQgYml0cyB3aGVu
IHNwaWxsaW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAxOTkzMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTYzOCw2ICs2MzgsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIHJ1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcAogICAgIHJ1bnRpbWUvRGlyZWN0QXJndW1l
bnRzT2Zmc2V0LmNwcAogICAgIHJ1bnRpbWUvRHVtcENvbnRleHQuY3BwCisgICAgcnVudGltZS9F
Q01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcAogICAgIHJ1bnRpbWUvRXJyb3IuY3Bw
CiAgICAgcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvRXJyb3JIYW5k
bGluZ1Njb3BlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE5OTMzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUzLDYgKzIwNTMsOCBAQAog
CQlGRTFDMEZGRjFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUMwRkZFMUIxOTRGRDEwMEI1M0ZD
QSAvKiBFeGNlcHRpb24uY3BwICovOyB9OwogCQlGRTIwQ0U5RDE1RjA0QTk1MDBERjM0MzAgLyog
TExJbnRDTG9vcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTIwQ0U5QjE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgKi87IH07CiAJ
CUZFMjBDRTlFMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAg
LyogTExJbnRDTG9vcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUZFMzE4RkRGMUNBQzk4MjcwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVy
bmFsRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMzE4RkREMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFs
RnVuY3Rpb25zLmNwcCAqLzsgfTsKKwkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0IC8qIEVDTUFT
Y3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzE4RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0
U3BlY0ludGVybmFsRnVuY3Rpb25zLmggKi87IH07CiAJCUZFMzg0RUU1MUFEREI3QUQwMDU1REUy
QyAvKiBKU0RvbGxhclZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMzg0RUUxMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLzsg
fTsKIAkJRkUzODRFRTYxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUyMUFEREI3QUQwMDU1
REUyQyAvKiBKU0RvbGxhclZNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRkUzODRFRTcxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90
b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkUzODRFRTMxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwICovOyB9
OwpAQCAtNDI5OSw2ICs0MzAxLDggQEAKIAkJRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4
Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTIwQ0U5QjE1RjA0QTk1MDBE
RjM0MzAgLyogTExJbnRDTG9vcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBMTEludENMb29wLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRD
TG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENMb29wLmg7IHBh
dGggPSBsbGludC9MTEludENMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
MzE4RkREMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVDTUFTY3JpcHRTcGVj
SW50ZXJuYWxGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTMx
OEZERTFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFQ01BU2NyaXB0U3BlY0ludGVybmFs
RnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUxMUFEREI3
QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRG9sbGFyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0RvbGxhclZNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFMzg0RUUzMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNUHJvdG90eXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9sbGFyVk1Qcm90b3R5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTU3OSw2ICs1NTgzLDggQEAKIAkJ
CQkwRkUwNTAwRTFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmggKi8s
CiAJCQkJQTcwNDQ3RUIxN0EwQkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmNwcCAqLywKIAkJ
CQlBNzA0NDdFQzE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRleHQuaCAqLywKKwkJCQlGRTMx
OEZERDFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5j
cHAgKi8sCisJCQkJRkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50
ZXJuYWxGdW5jdGlvbnMuaCAqLywKIAkJCQkyQUQyRURGQTE5Nzk5RTM4MDA0RDY0NzggLyogRW51
bWVyYXRpb25Nb2RlLmggKi8sCiAJCQkJQkMzMzdCRUEwRTFCMDBDQjAwNzY5MThBIC8qIEVycm9y
LmNwcCAqLywKIAkJCQlCQzMwNDYwNjBFMUY0OTdGMDAzMjMyQ0YgLyogRXJyb3IuaCAqLywKQEAg
LTc5MzksNiArNzk0NSw3IEBACiAJCQkJNTJDMDYxMUYxQUE1MUUxQzAwQjRBREJBIC8qIFJ1bnRp
bWVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3NUEgLyog
U2FtcGxpbmdDb3VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyODFBQTkwOTU2MDBE
MzNCMzMgLyogU2NvcGVkQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTMxOEZFMDFD
QUM5ODJGMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50
c1RhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyog
U2NvcGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIx
NyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtODc1Niw2
ICs4NzYzLDcgQEAKIAkJCQlGRTUwNjg2NzFBRTI1RTI4MDAwOURBQjcgLyogRGVmZXJyZWRTb3Vy
Y2VEdW1wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3N0E0MjNEMTdBMEJCRkQwMEE4REI4MSAv
KiBERkdBYnN0cmFjdEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NUMxOTQxNzI3NkU0
NjAwQ0VBQkZEIC8qIERGR0Fic3RyYWN0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUz
MThGREYxQ0FDOTgyNzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEM0U0MDExQjYxOEFBRjAwQzgwRTFFIC8qIERGR0Fk
YXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjE4RDNDRjFCNTVBNkUwMDAyQzVDOUYgLyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRj
aHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkREODExMUFCM0Q4QkUwMEJCQjhFOCAv
KiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dsb2JhbE9iamVjdC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCShyZXZp
c2lvbiAxOTkzMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT2Jq
ZWN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAsMyArNjEsMTggQEAgZnVuY3Rpb24gc3BlY2llc0dl
dHRlcigpCiB7CiAgICAgcmV0dXJuIHRoaXM7CiB9CisKK2Z1bmN0aW9uIHNwZWNpZXNDb25zdHJ1
Y3RvcihvYmosIGRlZmF1bHRDb25zdHJ1Y3RvcikKK3sKKyAgICB2YXIgY29uc3RydWN0b3IgPSBv
YmouY29uc3RydWN0b3I7CisgICAgaWYgKGNvbnN0cnVjdG9yID09PSBAdW5kZWZpbmVkKQorICAg
ICAgICByZXR1cm4gZGVmYXVsdENvbnN0cnVjdG9yOworICAgIGlmICghQGlzT2JqZWN0KGNvbnN0
cnVjdG9yKSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoInx0aGlzfC5jb25zdHJ1Y3Rv
ciBpcyBub3QgYW4gT2JqZWN0IG9yIHVuZGVmaW5lZCIpOworICAgIGNvbnN0cnVjdG9yID0gY29u
c3RydWN0b3JbQHN5bWJvbFNwZWNpZXNdOworICAgIGlmIChjb25zdHJ1Y3RvciA9PSBudWxsKQor
ICAgICAgICByZXR1cm4gZGVmYXVsdENvbnN0cnVjdG9yOworICAgIGlmIChAaXNDb25zdHJ1Y3Rv
cihjb25zdHJ1Y3RvcikpCisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigifHRoaXN8LmNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXSBpcyBub3Qg
YSBjb25zdHJ1Y3RvciIpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L1Byb21pc2VQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL1Byb21pc2VQcm90b3R5cGUuanMJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNlUHJvdG90eXBlLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNywxNiArMzcsNyBAQCBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVk
KQogICAgIGlmICghQGlzUHJvbWlzZSh0aGlzKSkKICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJy
b3IoInx0aGlzfCBpcyBub3QgYSBvYmplY3QiKTsKIAotICAgIHZhciBjb25zdHJ1Y3RvciA9IHRo
aXMuY29uc3RydWN0b3I7Ci0gICAgaWYgKGNvbnN0cnVjdG9yID09PSBAdW5kZWZpbmVkKQotICAg
ICAgICBjb25zdHJ1Y3RvciA9IEBQcm9taXNlOwotICAgIGVsc2UgaWYgKCFAaXNPYmplY3QoY29u
c3RydWN0b3IpKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigifHRoaXN8LmNvbnN0cnVj
dG9yIGlzIG5vdCBhbiBPYmplY3Qgb3IgdW5kZWZpbmVkIik7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JbQHN5bWJvbFNwZWNpZXNdOwotICAgICAgICBpZiAo
Y29uc3RydWN0b3IgPT0gbnVsbCkKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gQFByb21pc2U7
Ci0gICAgfQorICAgIHZhciBjb25zdHJ1Y3RvciA9IEBzcGVjaWVzQ29uc3RydWN0b3IodGhpcywg
QFByb21pc2UpOwogCiAgICAgdmFyIHJlc3VsdENhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFi
aWxpdHkoY29uc3RydWN0b3IpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvUmVnRXhwUHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9SZWdFeHBQcm90b3R5cGUuanMJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWdFeHBQcm90b3R5cGUuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDEzICsyMywxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotZnVuY3Rpb24g
YWR2YW5jZVN0cmluZ0luZGV4VW5pY29kZShzdHJpbmcsIHN0cmluZ0xlbmd0aCwgaW5kZXgpCitm
dW5jdGlvbiBhZHZhbmNlU3RyaW5nSW5kZXgoc3RyaW5nLCBpbmRleCwgdW5pY29kZSkKIHsKLSAg
ICAvLyBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgQWR2YW5jZVN0cmluZ0luZGV4IGRlc2NyaWJl
ZCBpbiBFUzYgMjEuMi41LjIuMywgc3RlcHMgNi0xMS4KLSAgICAvLyBJdCBhc3N1bWVzIHRoYXQg
InVuaWNvZGUiIGlzIHRydWUgZm9yIGl0cyBjYWxsZXJzLgorICAgIC8vIFRoaXMgZnVuY3Rpb24g
aW1wbGVtZW50cyBBZHZhbmNlU3RyaW5nSW5kZXggZGVzY3JpYmVkIGluIEVTNiAyMS4yLjUuMi4z
LgogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlmIChpbmRleCArIDEgPj0gc3RyaW5nTGVuZ3Ro
KQorICAgIGlmICghdW5pY29kZSkKKyAgICAgICAgcmV0dXJuIGluZGV4ICsgMTsKKworICAgIGlm
IChpbmRleCArIDEgPj0gc3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGluZGV4ICsgMTsK
IAogICAgIGxldCBmaXJzdCA9IHN0cmluZy5AY2hhckNvZGVBdChpbmRleCk7CkBAIC01MCw3ICs1
Miw3IEBAIGZ1bmN0aW9uIG1hdGNoKHN0cikKICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQE9i
amVjdCkpCiAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWdFeHAucHJvdG90eXBlLkBA
bWF0Y2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUgYW4gT2JqZWN0Iik7CiAKLSAgICBsZXQgcmVn
ZXhwID0gQE9iamVjdCh0aGlzKTsKKyAgICBsZXQgcmVnZXhwID0gdGhpczsKICAgICBsZXQgc3Ry
aW5nQXJnID0gQHRvU3RyaW5nKHN0cik7CiAKICAgICBpZiAoIXJlZ2V4cC5nbG9iYWwpCkBAIC03
OSwxMiArODEsOCBAQCBmdW5jdGlvbiBtYXRjaChzdHIpCiAKICAgICAgICAgICAgIGxldCByZXN1
bHRTdHJpbmcgPSBAdG9TdHJpbmcocmVzdWx0WzBdKTsKIAotICAgICAgICAgICAgaWYgKCFyZXN1
bHRTdHJpbmcubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUpCi0gICAgICAg
ICAgICAgICAgICAgIHJlZ2V4cC5sYXN0SW5kZXggPSBAYWR2YW5jZVN0cmluZ0luZGV4VW5pY29k
ZShzdHJpbmdBcmcsIHN0cmluZ0xlbmd0aCwgcmVnZXhwLmxhc3RJbmRleCk7Ci0gICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZWdleHAubGFzdEluZGV4Kys7Ci0gICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXJlc3VsdFN0cmluZy5sZW5ndGgpCisgICAgICAg
ICAgICAgICAgcmVnZXhwLmxhc3RJbmRleCA9IEBhZHZhbmNlU3RyaW5nSW5kZXgoc3RyaW5nQXJn
LCByZWdleHAubGFzdEluZGV4LCB1bmljb2RlKTsKIAogICAgICAgICAgICAgcmVzdWx0TGlzdC5A
cHVzaChyZXN1bHRTdHJpbmcpOwogCkBAIC05NSwzICs5MywxODYgQEAgZnVuY3Rpb24gbWF0Y2go
c3RyKQogICAgIHJldHVybiByZWdleHAuQG1hdGNoKHN0cmluZ0FyZyk7CiB9CiAKK2Z1bmN0aW9u
IHJlZ0V4cEV4ZWMocmVnZXhwLCBzdHIpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgbGV0
IGV4ZWMgPSByZWdleHAuZXhlYzsKKyAgICBsZXQgYnVpbHRpbkV4ZWMgPSBAUmVnRXhwLnByb3Rv
dHlwZS5AZXhlYzsKKyAgICBpZiAoZXhlYyAhPT0gYnVpbHRpbkV4ZWMgJiYgdHlwZW9mIGV4ZWMg
PT09ICJmdW5jdGlvbiIpIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGV4ZWMuQGNhbGwocmVnZXhw
LCBzdHIpOworICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsICYmICFAaXNPYmplY3QocmVzdWx0
KSkKKyAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJUaGUgcmVzdWx0IG9mIGEgUmVn
RXhwIGV4ZWMgbXVzdCBiZSBudWxsIG9yIGFuIG9iamVjdCIpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICByZXR1cm4gYnVpbHRpbkV4ZWMuQGNhbGwocmVnZXhwLCBzdHIpOwor
fQorCitmdW5jdGlvbiBoYXNPYnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JSZWdFeHBTcGxpdChyZWdl
eHApIHsKKyAgICAvLyBUaGlzIGlzIGFjY2Vzc2VkIGJ5IHRoZSBSZWdFeHBFeGVjIGludGVybmFs
IGZ1bmN0aW9uLgorICAgIGxldCByZWdleHBFeGVjID0gQHRyeUdldEJ5SWQocmVnZXhwLCAiZXhl
YyIpOworICAgIGlmIChyZWdleHBFeGVjICE9PSBAUmVnRXhwLnByb3RvdHlwZS5AZXhlYykKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgLy8gVGhpcyBpcyBhY2Nlc3NlZCBieSBzdGVw
IDUgYmVsb3cuCisgICAgbGV0IHJlZ2V4cEZsYWdzID0gQHRyeUdldEJ5SWQocmVnZXhwLCAiZmxh
Z3MiKTsKKyAgICBpZiAocmVnZXhwRmxhZ3MgIT09IEByZWdFeHBQcm90b0ZsYWdzR2V0dGVyKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICAvLyBUaGVzZSBhcmUgYWNjZXNzZWQgYnkg
dGhlIGJ1aWx0aW4gZmxhZ3MgZ2V0dGVyLgorICAgIGxldCByZWdleHBHbG9iYWwgPSBAdHJ5R2V0
QnlJZChyZWdleHAsICJnbG9iYWwiKTsKKyAgICBpZiAocmVnZXhwR2xvYmFsICE9PSBAcmVnRXhw
UHJvdG9HbG9iYWxHZXR0ZXIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGxldCByZWdleHBJ
Z25vcmVDYXNlID0gQHRyeUdldEJ5SWQocmVnZXhwLCAiaWdub3JlQ2FzZSIpOworICAgIGlmIChy
ZWdleHBJZ25vcmVDYXNlICE9PSBAcmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBsZXQgcmVnZXhwTXVsdGlsaW5lID0gQHRyeUdldEJ5SWQocmVn
ZXhwLCAibXVsdGlsaW5lIik7CisgICAgaWYgKHJlZ2V4cE11bHRpbGluZSAhPT0gQHJlZ0V4cFBy
b3RvTXVsdGlsaW5lR2V0dGVyKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBsZXQgcmVnZXhw
U3RpY2t5ID0gQHRyeUdldEJ5SWQocmVnZXhwLCAic3RpY2t5Iik7CisgICAgaWYgKHJlZ2V4cFN0
aWNreSAhPT0gQHJlZ0V4cFByb3RvU3RpY2t5R2V0dGVyKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBsZXQgcmVnZXhwVW5pY29kZSA9IEB0cnlHZXRCeUlkKHJlZ2V4cCwgInVuaWNvZGUiKTsK
KyAgICBpZiAocmVnZXhwVW5pY29kZSAhPT0gQHJlZ0V4cFByb3RvVW5pY29kZUdldHRlcikKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgLy8gVGhpcyBpcyBhY2Nlc3NlZCBieSB0aGUg
UmVnRXhwIHNwZWNpZXMgY29uc3RydWN0b3IuCisgICAgbGV0IHJlZ2V4cFNvdXJjZSA9IEB0cnlH
ZXRCeUlkKHJlZ2V4cCwgInNvdXJjZSIpOworICAgIGlmIChyZWdleHBTb3VyY2UgIT09IEByZWdF
eHBQcm90b1NvdXJjZUdldHRlcikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0
dXJuICFAaXNSZWdFeHAocmVnZXhwKTsKK30KKworLy8gRVMgMjEuMi41LjExIFJlZ0V4cC5wcm90
b3R5cGVbQEBzcGxpdF0oc3RyaW5nLCBsaW1pdCkKK2Z1bmN0aW9uIHNwbGl0KHN0cmluZywgbGlt
aXQpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgLy8gMS4gTGV0IHJ4IGJlIHRoZSB0aGlz
IHZhbHVlLgorICAgIC8vIDIuIElmIFR5cGUocngpIGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlw
ZUVycm9yIGV4Y2VwdGlvbi4KKyAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQE9iamVjdCkpCisg
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWdFeHAucHJvdG90eXBlLkBAc3BsaXQgcmVx
dWlyZXMgdGhhdCB8dGhpc3wgYmUgYW4gT2JqZWN0Iik7CisgICAgbGV0IHJlZ2V4cCA9IHRoaXM7
CisKKyAgICAvLyAzLiBMZXQgUyBiZSA/IFRvU3RyaW5nKHN0cmluZykuCisgICAgbGV0IHN0ciA9
IEB0b1N0cmluZyhzdHJpbmcpOworCisgICAgLy8gNC4gTGV0IEMgYmUgPyBTcGVjaWVzQ29uc3Ry
dWN0b3IocngsICVSZWdFeHAlKS4KKyAgICBsZXQgc3BlY2llc0NvbnN0cnVjdG9yID0gQHNwZWNp
ZXNDb25zdHJ1Y3RvcihyZWdleHAsIEBSZWdFeHApOworCisgICAgaWYgKHNwZWNpZXNDb25zdHJ1
Y3RvciA9PT0gQFJlZ0V4cCAmJiAhQGhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclJlZ0V4cFNw
bGl0KHJlZ2V4cCkpCisgICAgICAgIHJldHVybiBAcmVnRXhwU3BsaXRGYXN0LkBjYWxsKHJlZ2V4
cCwgc3RyLCBsaW1pdCk7CisKKyAgICAvLyA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdl
dChyeCwgImZsYWdzIikpLgorICAgIGxldCBmbGFncyA9IEB0b1N0cmluZyhyZWdleHAuZmxhZ3Mp
OworCisgICAgLy8gNi4gSWYgZmxhZ3MgY29udGFpbnMgInUiLCBsZXQgdW5pY29kZU1hdGNoaW5n
IGJlIHRydWUuCisgICAgLy8gNy4gRWxzZSwgbGV0IHVuaWNvZGVNYXRjaGluZyBiZSBmYWxzZS4K
KyAgICBsZXQgdW5pY29kZU1hdGNoaW5nID0gZmxhZ3MuaW5jbHVkZXMoInUiKTsKKyAgICAvLyA4
LiBJZiBmbGFncyBjb250YWlucyAieSIsIGxldCBuZXdGbGFncyBiZSBmbGFncy4KKyAgICAvLyA5
LiBFbHNlLCBsZXQgbmV3RmxhZ3MgYmUgdGhlIHN0cmluZyB0aGF0IGlzIHRoZSBjb25jYXRlbmF0
aW9uIG9mIGZsYWdzIGFuZCAieSIuCisgICAgbGV0IG5ld0ZsYWdzID0gZmxhZ3MuaW5jbHVkZXMo
InkiKSA/IGZsYWdzIDogZmxhZ3MgKyAieSI7CisKKyAgICAvLyAxMC4gTGV0IHNwbGl0dGVyIGJl
ID8gQ29uc3RydWN0KEMsIMKrIHJ4LCBuZXdGbGFncyDCuykuCisgICAgbGV0IHNwbGl0dGVyID0g
bmV3IHNwZWNpZXNDb25zdHJ1Y3RvcihyZWdleHAsIG5ld0ZsYWdzKTsKKworICAgIC8vIFdlIG5l
ZWQgdG8gY2hlY2sgYWdhaW4gZm9yIFJlZ0V4cCBzdWJjbGFzc2VzIHRoYXQgd2lsbCBmYWlsIHRo
ZSBzcGVjaWVzQ29uc3RydWN0b3IgdGVzdAorICAgIC8vIGJ1dCBjYW4gc3RpbGwgdXNlIHRoZSBm
YXN0IHBhdGggYWZ0ZXIgd2UgaW52b2tlIHRoZSBjb25zdHJ1Y3RvciBhYm92ZS4KKyAgICBpZiAo
IUBoYXNPYnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JSZWdFeHBTcGxpdChzcGxpdHRlcikpCisgICAg
ICAgIHJldHVybiBAcmVnRXhwU3BsaXRGYXN0LkBjYWxsKHNwbGl0dGVyLCBzdHIsIGxpbWl0KTsK
KworICAgIC8vIDExLiBMZXQgQSBiZSBBcnJheUNyZWF0ZSgwKS4KKyAgICAvLyAxMi4gTGV0IGxl
bmd0aEEgYmUgMC4KKyAgICBsZXQgcmVzdWx0ID0gW107CisKKyAgICAvLyAxMy4gSWYgbGltaXQg
aXMgdW5kZWZpbmVkLCBsZXQgbGltIGJlIDIzMi0xOyBlbHNlIGxldCBsaW0gYmUgPyBUb1VpbnQz
MihsaW1pdCkuCisgICAgbGltaXQgPSAobGltaXQgPT09IEB1bmRlZmluZWQpID8gMHhmZmZmZmZm
ZiA6IGxpbWl0ID4+PiAwOworCisgICAgLy8gMTYuIElmIGxpbSA9IDAsIHJldHVybiBBLgorICAg
IGlmICghbGltaXQpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAvLyAxNC4gW0RlZmVy
ZWQgZnJvbSBhYm92ZV0gTGV0IHNpemUgYmUgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBTLgor
ICAgIGxldCBzaXplID0gc3RyLmxlbmd0aDsKKworICAgIC8vIDE3LiBJZiBzaXplID0gMCwgdGhl
bgorICAgIGlmICghc2l6ZSkgeworICAgICAgICAvLyBhLiBMZXQgeiBiZSA/IFJlZ0V4cEV4ZWMo
c3BsaXR0ZXIsIFMpLgorICAgICAgICBsZXQgeiA9IEByZWdFeHBFeGVjKHNwbGl0dGVyLCBzdHIp
OworICAgICAgICAvLyBiLiBJZiB6IGlzIG5vdCBudWxsLCByZXR1cm4gQS4KKyAgICAgICAgaWYg
KHogIT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIC8vIGMuIFBl
cmZvcm0gISBDcmVhdGVEYXRhUHJvcGVydHkoQSwgIjAiLCBTKS4KKyAgICAgICAgcmVzdWx0WzBd
ID0gc3RyOworICAgICAgICAvLyBkLiBSZXR1cm4gQS4KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKKyAgICAvLyAxNS4gW0RlZmVyZWQgZnJvbSBhYm92ZV0gTGV0IHAgYmUgMC4KKyAg
ICBsZXQgcG9zaXRpb24gPSAwOworICAgIC8vIDE4LiBMZXQgcSBiZSBwLgorICAgIGxldCBtYXRj
aFBvc2l0aW9uID0gMDsKKworICAgIC8vIDE5LiBSZXBlYXQsIHdoaWxlIHEgPCBzaXplCisgICAg
d2hpbGUgKG1hdGNoUG9zaXRpb24gPCBzaXplKSB7CisgICAgICAgIC8vIGEuIFBlcmZvcm0gPyBT
ZXQoc3BsaXR0ZXIsICJsYXN0SW5kZXgiLCBxLCB0cnVlKS4KKyAgICAgICAgc3BsaXR0ZXIubGFz
dEluZGV4ID0gbWF0Y2hQb3NpdGlvbjsKKyAgICAgICAgLy8gYi4gTGV0IHogYmUgPyBSZWdFeHBF
eGVjKHNwbGl0dGVyLCBTKS4KKyAgICAgICAgbGV0IG1hdGNoZXMgPSBAcmVnRXhwRXhlYyhzcGxp
dHRlciwgc3RyKTsKKyAgICAgICAgLy8gYy4gSWYgeiBpcyBudWxsLCBsZXQgcSBiZSBBZHZhbmNl
U3RyaW5nSW5kZXgoUywgcSwgdW5pY29kZU1hdGNoaW5nKS4KKyAgICAgICAgaWYgKG1hdGNoZXMg
PT09IG51bGwpCisgICAgICAgICAgICBtYXRjaFBvc2l0aW9uID0gQGFkdmFuY2VTdHJpbmdJbmRl
eChzdHIsIG1hdGNoUG9zaXRpb24sIHVuaWNvZGVNYXRjaGluZyk7CisgICAgICAgIC8vIGQuIEVs
c2UgeiBpcyBub3QgbnVsbCwKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBpLiBMZXQg
ZSBiZSA/IFRvTGVuZ3RoKD8gR2V0KHNwbGl0dGVyLCAibGFzdEluZGV4IikpLgorICAgICAgICAg
ICAgbGV0IGVuZFBvc2l0aW9uID0gQHRvTGVuZ3RoKHNwbGl0dGVyLmxhc3RJbmRleCk7CisgICAg
ICAgICAgICAvLyBpaS4gTGV0IGUgYmUgbWluKGUsIHNpemUpLgorICAgICAgICAgICAgZW5kUG9z
aXRpb24gPSAoZW5kUG9zaXRpb24gPD0gc2l6ZSkgPyBlbmRQb3NpdGlvbiA6IHNpemU7CisgICAg
ICAgICAgICAvLyBpaWkuIElmIGUgPSBwLCBsZXQgcSBiZSBBZHZhbmNlU3RyaW5nSW5kZXgoUywg
cSwgdW5pY29kZU1hdGNoaW5nKS4KKyAgICAgICAgICAgIGlmIChlbmRQb3NpdGlvbiA9PT0gcG9z
aXRpb24pCisgICAgICAgICAgICAgICAgbWF0Y2hQb3NpdGlvbiA9IEBhZHZhbmNlU3RyaW5nSW5k
ZXgoc3RyLCBtYXRjaFBvc2l0aW9uLCB1bmljb2RlTWF0Y2hpbmcpOworICAgICAgICAgICAgLy8g
aXYuIEVsc2UgZSAhPSBwLAorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8g
MS4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNv
bnNpc3Rpbmcgb2YgdGhlIGVsZW1lbnRzIGF0IGluZGljZXMgcCAoaW5jbHVzaXZlKSB0aHJvdWdo
IHEgKGV4Y2x1c2l2ZSkuCisgICAgICAgICAgICAgICAgbGV0IHN1YlN0ciA9IEBzdWJzdHJJbnRl
cm5hbC5AY2FsbChzdHIsIHBvc2l0aW9uLCBtYXRjaFBvc2l0aW9uIC0gcG9zaXRpb24pOworICAg
ICAgICAgICAgICAgIC8vIDIuIFBlcmZvcm0gISBDcmVhdGVEYXRhUHJvcGVydHkoQSwgISBUb1N0
cmluZyhsZW5ndGhBKSwgVCkuCisgICAgICAgICAgICAgICAgLy8gMy4gTGV0IGxlbmd0aEEgYmUg
bGVuZ3RoQSArIDEuCisgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3ViU3RyKTsKKyAgICAg
ICAgICAgICAgICAvLyA0LiBJZiBsZW5ndGhBID0gbGltLCByZXR1cm4gQS4KKyAgICAgICAgICAg
ICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PSBsaW1pdCkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICAvLyA1LiBMZXQgcCBiZSBlLgorICAgICAgICAg
ICAgICAgIHBvc2l0aW9uID0gZW5kUG9zaXRpb247CisgICAgICAgICAgICAgICAgLy8gNi4gTGV0
IG51bWJlck9mQ2FwdHVyZXMgYmUgPyBUb0xlbmd0aCg/IEdldCh6LCAibGVuZ3RoIikpLgorICAg
ICAgICAgICAgICAgIC8vIDcuIExldCBudW1iZXJPZkNhcHR1cmVzIGJlIG1heChudW1iZXJPZkNh
cHR1cmVzLTEsIDApLgorICAgICAgICAgICAgICAgIGxldCBudW1iZXJPZkNhcHR1cmVzID0gbWF0
Y2hlcy5sZW5ndGggPiAxID8gbWF0Y2hlcy5sZW5ndGggLSAxIDogMDsKKworICAgICAgICAgICAg
ICAgIC8vIDguIExldCBpIGJlIDEuCisgICAgICAgICAgICAgICAgbGV0IGkgPSAxOworICAgICAg
ICAgICAgICAgIC8vIDkuIFJlcGVhdCwgd2hpbGUgaSA8PSBudW1iZXJPZkNhcHR1cmVzLAorICAg
ICAgICAgICAgICAgIHdoaWxlIChpIDw9IG51bWJlck9mQ2FwdHVyZXMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gYS4gTGV0IG5leHRDYXB0dXJlIGJlID8gR2V0KHosICEgVG9TdHJpbmcoaSkp
LgorICAgICAgICAgICAgICAgICAgICBsZXQgbmV4dENhcHR1cmUgPSBtYXRjaGVzW2ldOworICAg
ICAgICAgICAgICAgICAgICAvLyBiLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICEg
VG9TdHJpbmcobGVuZ3RoQSksIG5leHRDYXB0dXJlKS4KKyAgICAgICAgICAgICAgICAgICAgLy8g
ZC4gTGV0IGxlbmd0aEEgYmUgbGVuZ3RoQSArIDEuCisgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC5wdXNoKG5leHRDYXB0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gZS4gSWYgbGVuZ3Ro
QSA9IGxpbSwgcmV0dXJuIEEuCisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3Ro
ID09IGxpbWl0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gYy4gTGV0IGkgYmUgaSArIDEuCisgICAgICAgICAgICAgICAgICAg
IGkrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gMTAuIExldCBxIGJl
IHAuCisgICAgICAgICAgICAgICAgbWF0Y2hQb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIC8vIDIwLiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1
ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgZWxlbWVudHMg
YXQgaW5kaWNlcyBwIChpbmNsdXNpdmUpIHRocm91Z2ggc2l6ZSAoZXhjbHVzaXZlKS4KKyAgICBs
ZXQgcmVtYWluaW5nU3RyID0gQHN1YnN0ckludGVybmFsLkBjYWxsKHN0ciwgcG9zaXRpb24sIHNp
emUpOworICAgIC8vIDIxLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICEgVG9TdHJp
bmcobGVuZ3RoQSksIFQpLgorICAgIHJlc3VsdC5wdXNoKHJlbWFpbmluZ1N0cik7CisgICAgLy8g
MjIuIFJldHVybiBBLgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlwZS5qcwkocmV2aXNpb24g
MTk5MzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlw
ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTI1LDMgKzEyNSwyMiBAQCBmdW5jdGlvbiByZXBlYXQo
Y291bnQpCiAKICAgICByZXR1cm4gQHJlcGVhdFNsb3dQYXRoKHN0cmluZywgY291bnQpOwogfQor
CitmdW5jdGlvbiBzcGxpdChzZXBhcmF0b3IsIGxpbWl0KQoreworICAgICJ1c2Ugc3RyaWN0IjsK
KyAgICAKKyAgICBpZiAodGhpcyA9PSBudWxsKSB7CisgICAgICAgIGlmICh0aGlzID09PSBudWxs
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlN0cmluZy5wcm90b3R5cGUuc3Bs
aXQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwiKTsKKyAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoIlN0cmluZy5wcm90b3R5cGUuc3BsaXQgcmVxdWlyZXMgdGhhdCB8dGhpc3wg
bm90IGJlIHVuZGVmaW5lZCIpOworICAgIH0KKyAgICAKKyAgICBpZiAoc2VwYXJhdG9yICE9IG51
bGwpIHsKKyAgICAgICAgdmFyIHNwbGl0dGVyID0gc2VwYXJhdG9yW0BzeW1ib2xTcGxpdF07Cisg
ICAgICAgIGlmIChzcGxpdHRlciAhPSBAdW5kZWZpbmVkKQorICAgICAgICAgICAgcmV0dXJuIHNw
bGl0dGVyLkBjYWxsKHNlcGFyYXRvciwgdGhpcywgbGltaXQpOworICAgIH0KKyAgICAKKyAgICBy
ZXR1cm4gQHN0cmluZ1NwbGl0RmFzdC5AY2FsbCh0aGlzLCBzZXBhcmF0b3IsIGxpbWl0KTsKK30K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
WXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTU2LDYgKzU3LDcgQEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6
Qnl0ZWNvZGVJbnRyaQogICAgIG1fc3ltYm9sTWF0Y2guc2V0KG1fdm0sIFN5bWJvbDo6Y3JlYXRl
KG1fdm0sIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqbV92bS5wcm9wZXJ0eU5hbWVzLT5tYXRj
aFN5bWJvbC5pbXBsKCkpKSk7CiAgICAgbV9zeW1ib2xTZWFyY2guc2V0KG1fdm0sIFN5bWJvbDo6
Y3JlYXRlKG1fdm0sIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqbV92bS5wcm9wZXJ0eU5hbWVz
LT5zZWFyY2hTeW1ib2wuaW1wbCgpKSkpOwogICAgIG1fc3ltYm9sU3BlY2llcy5zZXQobV92bSwg
U3ltYm9sOjpjcmVhdGUobV92bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCptX3ZtLnByb3Bl
cnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wuaW1wbCgpKSkpOworICAgIG1fc3ltYm9sU3BsaXQuc2V0
KG1fdm0sIFN5bWJvbDo6Y3JlYXRlKG1fdm0sIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqbV92
bS5wcm9wZXJ0eU5hbWVzLT5zcGxpdFN5bWJvbC5pbXBsKCkpKSk7CiB9CiAKIEJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6RW1pdHRlclR5cGUgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6bG9va3Vw
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5o
CShyZXZpc2lvbiAxOTkzMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTksNiArNjAsNyBAQCBj
bGFzcyBJZGVudGlmaWVyOwogICAgIG1hY3JvKHN5bWJvbE1hdGNoKSBcCiAgICAgbWFjcm8oc3lt
Ym9sU2VhcmNoKSBcCiAgICAgbWFjcm8oc3ltYm9sU3BlY2llcykgXAorICAgIG1hY3JvKHN5bWJv
bFNwbGl0KSBcCiAKIGNsYXNzIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCShyZXZp
c2lvbiAxOTkzMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNyArMzEwLDYgQEAKICNkZWZpbmUgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0xfTk9UX0lN
UExFTUVOVEVEX1lFVChtYWNybylcCiAgICAgbWFjcm8oaXNDb25jYXRTcHJlYWRhYmxlKSBcCiAg
ICAgbWFjcm8ocmVwbGFjZSkgXAotICAgIG1hY3JvKHNwbGl0KQogCiAjZGVmaW5lIEpTQ19DT01N
T05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKG1hY3JvKSBcCiAg
ICAgbWFjcm8oaGFzSW5zdGFuY2UpIFwKQEAgLTMxOCw2ICszMTcsNyBAQAogICAgIG1hY3JvKG1h
dGNoKSBcCiAgICAgbWFjcm8oc2VhcmNoKSBcCiAgICAgbWFjcm8oc3BlY2llcykgXAorICAgIG1h
Y3JvKHNwbGl0KSBcCiAgICAgbWFjcm8odG9QcmltaXRpdmUpIFwKICAgICBtYWNybyh0b1N0cmlu
Z1RhZykgXAogICAgIG1hY3JvKHVuc2NvcGFibGVzKQpAQCAtNDEyLDYgKzQxMiw4IEBACiAgICAg
bWFjcm8oaW5zdGFuY2VPZikgXAogICAgIG1hY3JvKGlzQXJyYXkpIFwKICAgICBtYWNybyhpc0Fy
cmF5Q29uc3RydWN0b3IpIFwKKyAgICBtYWNybyhpc0NvbnN0cnVjdG9yKSBcCisgICAgbWFjcm8o
aXNSZWdFeHApIFwKICAgICBtYWNybyhpc1NldCkgXAogICAgIG1hY3JvKGlzTWFwKSBcCiAgICAg
bWFjcm8ocmVnRXhwQ3JlYXRlKSBcCkBAIC00MTksNyArNDIxLDE2IEBACiAgICAgbWFjcm8oc2V0
SXRlcmF0b3JOZXh0KSBcCiAgICAgbWFjcm8oTWFwSXRlcmF0b3IpIFwKICAgICBtYWNybyhtYXBJ
dGVyYXRvck5leHQpIFwKLQorICAgIG1hY3JvKHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIpIFwKKyAg
ICBtYWNybyhyZWdFeHBQcm90b0dsb2JhbEdldHRlcikgXAorICAgIG1hY3JvKHJlZ0V4cFByb3Rv
SWdub3JlQ2FzZUdldHRlcikgXAorICAgIG1hY3JvKHJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVy
KSBcCisgICAgbWFjcm8ocmVnRXhwUHJvdG9Tb3VyY2VHZXR0ZXIpIFwKKyAgICBtYWNybyhyZWdF
eHBQcm90b1N0aWNreUdldHRlcikgXAorICAgIG1hY3JvKHJlZ0V4cFByb3RvVW5pY29kZUdldHRl
cikgXAorICAgIG1hY3JvKHJlZ0V4cFNwbGl0RmFzdCkgXAorICAgIG1hY3JvKHN0cmluZ1NwbGl0
RmFzdCkgXAorICAgIG1hY3JvKHN1YnN0ckludGVybmFsKSBcCiAKIG5hbWVzcGFjZSBKU0Mgewog
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJ
bnRlcm5hbEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFs
RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCIKKworI2luY2x1ZGUg
IkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbnN0cnVjdERhdGEuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIlByb3h5T2JqZWN0LmgiCisjaW5jbHVkZSAiUmVn
RXhwT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGVzU3BlY0lzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGJvb2wg
aXNDb25zdHJ1Y3RvciA9IGV4ZWMtPmFyZ3VtZW50KDApLmlzQ29uc3RydWN0b3IoKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc0NvbnN0cnVjdG9yKSk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjSXNSZWdFeHAoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIGJvb2wgaXNSZWdFeHAgPSBleGVjLT5hcmd1bWVudCgwKS5pbmhlcml0cyhSZWdF
eHBPYmplY3Q6OmluZm8oKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
aXNSZWdFeHApKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRl
cm5hbEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnNfaAorI2RlZmluZSBF
Q01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zX2gKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNT
cGVjSXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZXNTcGVjSXNSZWdFeHAoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9uc19oCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lv
biAxOTkzMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJEZWJ1Z2dl
ci5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVu
dHMuaCIKKyNpbmNsdWRlICJFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmgiCiAjaW5j
bHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
RXJyb3JQcm90b3R5cGUuaCIKQEAgLTI1Niw2ICsyNTcsMTUgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6c2V0R2xvYmFsVGhpcyhWTSYgdgogICAgIG1fZ2xvYmFsVGhpcy5zZXQodm0sIHRoaXMsIGds
b2JhbFRoaXMpOwogfQogCisKK3N0YXRpYyBKU09iamVjdCogZ2V0R2V0dGVyQnlJZChFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWUoYmFzZSk7CisgICAgUHJvcGVydHlTbG90IHNs
b3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
KTsKKyAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAg
ICByZXR1cm4gc2xvdC5nZXRQdXJlUmVzdWx0KCkudG9PYmplY3QoZXhlYyk7Cit9CisKIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogewogICAgIEFTU0VSVCh2bS5jdXJyZW50VGhy
ZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKQEAgLTU0MCw2ICs1NTAsMTQgQEAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcgogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5j
VGhpc1RpbWVWYWx1ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCks
IGRhdGVQcm90b0Z1bmNHZXRUaW1lKTsKICAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzQXJy
YXlDb25zdHJ1Y3RvciA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCks
IGFycmF5Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlDb25zdHJ1Y3Rvcik7CiAKKyAgICBK
U09iamVjdCogcmVnRXhwUHJvdG9GbGFnc0dldHRlck9iamVjdCA9IGdldEdldHRlckJ5SWQoZXhl
YywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPmZsYWdzKTsKKyAg
ICBKU09iamVjdCogcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXJPYmplY3QgPSBnZXRHZXR0ZXJCeUlk
KGV4ZWMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5nbG9iYWwp
OworICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXJPYmplY3QgPSBnZXRH
ZXR0ZXJCeUlkKGV4ZWMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVz
LT5pZ25vcmVDYXNlKTsKKyAgICBKU09iamVjdCogcmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXJP
YmplY3QgPSBnZXRHZXR0ZXJCeUlkKGV4ZWMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5w
cm9wZXJ0eU5hbWVzLT5tdWx0aWxpbmUpOworICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b1NvdXJj
ZUdldHRlck9iamVjdCA9IGdldEdldHRlckJ5SWQoZXhlYywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0
KCksIHZtLnByb3BlcnR5TmFtZXMtPnNvdXJjZSk7CisgICAgSlNPYmplY3QqIHJlZ0V4cFByb3Rv
U3RpY2t5R2V0dGVyT2JqZWN0ID0gZ2V0R2V0dGVyQnlJZChleGVjLCBtX3JlZ0V4cFByb3RvdHlw
ZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+c3RpY2t5KTsKKyAgICBKU09iamVjdCogcmVnRXhw
UHJvdG9Vbmljb2RlR2V0dGVyT2JqZWN0ID0gZ2V0R2V0dGVyQnlJZChleGVjLCBtX3JlZ0V4cFBy
b3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+dW5pY29kZSk7CisgICAgCiAgICAgR2xv
YmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNOYU4oKSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+SW5maW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5m
aW5pdHkoKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKQEAgLTU5Niw3ICs2
MTQsNiBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVyCiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9t
aXNlUmVhY3Rpb25Kb2JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVu
Y3Rpb24odm0sIHByb21pc2VPcGVyYXRpb25zUHJvbWlzZVJlYWN0aW9uSm9iQ29kZUdlbmVyYXRv
cih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wcm9t
aXNlUmVzb2x2ZVRoZW5hYmxlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVp
bHRpbkZ1bmN0aW9uKHZtLCBwcm9taXNlT3BlcmF0aW9uc1Byb21pc2VSZXNvbHZlVGhlbmFibGVK
b2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLkluc3BlY3Rvckluc3RydW1lbnRhdGlvblByaXZhdGVOYW1lKCksIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5
cGUuZ2V0KCkpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYWR2YW5j
ZVN0cmluZ0luZGV4VW5pY29kZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0
aW5GdW5jdGlvbih2bSwgcmVnRXhwUHJvdG90eXBlQWR2YW5jZVN0cmluZ0luZGV4VW5pY29kZUNv
ZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkp
LAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+TWFwUHJpdmF0
ZU5hbWUsIG1hcENvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSks
CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5nZW5lcmF0b3JSZXN1bWVQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWls
dGluRnVuY3Rpb24odm0sIGdlbmVyYXRvclByb3RvdHlwZUdlbmVyYXRvclJlc3VtZUNvZGVHZW5l
cmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
dGhpc1RpbWVWYWx1ZVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVGhpc1RpbWVWYWx1ZSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLApAQCAtNjA2LDcgKzYyMywzNCBAQCBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVyCiAgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5OdW1iZXJGb3JtYXRQcml2
YXRlTmFtZSgpLCBpbnRsLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPk51bWJlckZv
cm1hdCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICNlbmRpZiAvLyBFTkFC
TEUoSU5UTCkKIAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
aXNDb25zdHJ1Y3RvclByaXZhdGVOYW1lLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEs
IFN0cmluZygpLCBlc1NwZWNJc0NvbnN0cnVjdG9yLCBOb0ludHJpbnNpYyksIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmlzUmVnRXhwUHJpdmF0ZU5hbWUsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
dGhpcywgMSwgU3RyaW5nKCksIGVzU3BlY0lzUmVnRXhwLCBOb0ludHJpbnNpYyksIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNwZWNpZXNDb25zdHJ1Y3RvclByaXZhdGVO
YW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0
U3BlY2llc0NvbnN0cnVjdG9yQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSksCisKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPnJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXJQcml2YXRlTmFtZSwgcmVnRXhwUHJv
dG9GbGFnc0dldHRlck9iamVjdCwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAor
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+cmVnRXhwUHJvdG9H
bG9iYWxHZXR0ZXJQcml2YXRlTmFtZSwgcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXJPYmplY3QsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPnJlZ0V4cFByb3RvSWdub3JlQ2FzZUdldHRlclByaXZhdGVO
YW1lLCByZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXJPYmplY3QsIERvbnRFbnVtIHwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPnJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyUHJpdmF0ZU5hbWUsIHJlZ0V4cFByb3Rv
TXVsdGlsaW5lR2V0dGVyT2JqZWN0LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSks
CisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5yZWdFeHBQcm90
b1NvdXJjZUdldHRlclByaXZhdGVOYW1lLCByZWdFeHBQcm90b1NvdXJjZUdldHRlck9iamVjdCwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+cmVnRXhwUHJvdG9TdGlja3lHZXR0ZXJQcml2YXRlTmFt
ZSwgcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXJPYmplY3QsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PnJlZ0V4cFByb3RvVW5pY29kZUdldHRlclByaXZhdGVOYW1lLCByZWdFeHBQcm90b1VuaWNvZGVH
ZXR0ZXJPYmplY3QsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKworICAgICAg
ICAvLyBSZWdFeHAucHJvdG90eXBlIGhlbHBlcnMuCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5m
byh2bS5wcm9wZXJ0eU5hbWVzLT5yZWdFeHBDcmVhdGVQcml2YXRlTmFtZSwgSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgZXNTcGVjUmVnRXhwQ3JlYXRlLCBOb0ludHJp
bnNpYyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmhhc09ic2VydmFi
bGVTaWRlRWZmZWN0c0ZvclJlZ0V4cFNwbGl0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3Jl
YXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWdFeHBQcm90b3R5cGVIYXNPYnNlcnZhYmxlU2lkZUVm
ZmVjdHNGb3JSZWdFeHBTcGxpdENvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYWR2YW5jZVN0cmluZ0luZGV4UHJpdmF0ZU5hbWUo
KSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWdFeHBQcm90b3R5cGVB
ZHZhbmNlU3RyaW5nSW5kZXhDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cEV4ZWNQcml2YXRlTmFtZSgpLCBKU0Z1bmN0
aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlZ0V4cFByb3RvdHlwZVJlZ0V4cEV4ZWND
b2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnJlZ0V4cFNw
bGl0RmFzdFByaXZhdGVOYW1lLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmlu
ZygpLCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSksCisKKyAgICAgICAgLy8gU3RyaW5nLnByb3RvdHlwZSBoZWxwZXJzLgorICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+c3RyaW5nU3BsaXRGYXN0UHJp
dmF0ZU5hbWUsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIHN0cmlu
Z1Byb3RvRnVuY1NwbGl0RmFzdCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
KyAgICAgICAgLy8gQHN1YnN0ckludGVybmFsIHNob3VsZCBub3QgaGF2ZSBhbnkgb2JzZXJ2YWJs
ZSBzaWRlIGVmZmVjdHMgKGUuZy4gaXQgc2hvdWxkIG5vdCBjYWxsCisgICAgICAgIC8vIEdldE1l
dGhvZCguLi4sIEBAdG9QcmltaXRpdmUpIG9uIHRoZSB0aGlzVmFsdWUpLiBJdCBpcyBvayB0byB1
c2UgdGhlIGRlZmF1bHQKKyAgICAgICAgLy8gc3RyaW5nUHJvdG9GdW5jU3Vic3RyIGFzIHRoZSBp
bXBsZW1lbnRhdGlvbiBvZiBAc3Vic3RySW50ZXJuYWwgYmVjYXVzZSBAc3Vic3RySW50ZXJuYWwK
KyAgICAgICAgLy8gd2lsbCBvbmx5IGJlIGNhbGxlZCBieSBidWlsdGlucywgd2hpY2ggd2lsbCBn
dWFyYW50ZWUgdGhhdCB3ZSBvbmx5IHBhc3MgaXQgYSBzdHJpbmcKKyAgICAgICAgLy8gdGhpc1Zh
bHVlLiBBcyBhIHJlc3VsdCwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyIHdpbGwgbm90IG5lZWQgdG8g
Y2FsbCB0b1N0cmluZygpIG9uIHRoZQorICAgICAgICAvLyB0aGlzVmFsdWUsIGFuZCB0aGVyZSB3
aWxsIGJlIG5vIG9ic2VydmFibGUgc2lkZS1lZmZlY3RzLgorICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+c3Vic3RySW50ZXJuYWxQcml2YXRlTmFtZSwgSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgc3RyaW5nUHJvdG9GdW5jU3Vic3Ry
KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgIH07CiAgICAgYWRkU3Rh
dGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVOR1RIKHN0YXRpY0dsb2JhbHMp
KTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVz
Y3JpcHRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlEZXNjcmlwdG9yLmNwcAkocmV2aXNpb24gMTk5MzM4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTE0LDcgKzExNCw2IEBAIEpTT2JqZWN0KiBQcm9wZXJ0eURlc2NyaXB0b3I6OnNldHRlck9iamUK
IHZvaWQgUHJvcGVydHlEZXNjcmlwdG9yOjpzZXREZXNjcmlwdG9yKEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICBBU1NFUlQodmFs
dWUuaXNHZXR0ZXJTZXR0ZXIoKSA9PSAhIShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKIAogICAg
IG1fYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7CiAgICAgaWYgKHZhbHVlLmlzR2V0dGVyU2V0dGVy
KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5oCShyZXZpc2lvbiAxOTkzMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNy0yMDA4LCAyMDEy
LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKQEAgLTkzLDYgKzkzLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKFJlZ0V4cE9iamVjdCwgbV9sYXN0SW5kZXhJc1dyaXRhYmxlKTsKICAgICB9CiAKKyAgICBz
dGF0aWMgdW5zaWduZWQgYWR2YW5jZVN0cmluZ1VuaWNvZGUoU3RyaW5nLCB1bnNpZ25lZCBsZW5n
dGgsIHVuc2lnbmVkIGN1cnJlbnRJbmRleCk7CisKIHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRf
UFJJVkFURSBSZWdFeHBPYmplY3QoVk0mLCBTdHJ1Y3R1cmUqLCBSZWdFeHAqKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CkBAIC0xMDQsNyArMTA2LDYg
QEAgcHJvdGVjdGVkOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1l
cmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0R2VuZXJp
Y1Byb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYs
IEVudW1lcmF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0
IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwotICAgIHVuc2lnbmVkIGFk
dmFuY2VTdHJpbmdVbmljb2RlKFN0cmluZywgdW5zaWduZWQsIHVuc2lnbmVkKTsKIAogcHJpdmF0
ZToKICAgICBNYXRjaFJlc3VsdCBtYXRjaElubGluZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIEpTU3RyaW5nKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAy
MDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDMsIDIwMDctMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgog
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUu
aCIKICNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlJlZ0V4cE1hdGNo
ZXNBcnJheS5oIgorI2luY2x1ZGUgIlN0cmluZ09iamVjdC5oIgogI2luY2x1ZGUgIlN0cmluZ1Jl
Y3Vyc2lvbkNoZWNrZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04MSw2ICs4Miw3IEBAIHZv
aWQgUmVnRXhwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYKICAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5tYXRjaFByaXZhdGVOYW1lKCksIHJlZ0V4cFByb3RvRnVuY01hdGNoUHJpdmF0ZSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHksIDEpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5tYXRjaFN5bWJvbCwgcmVnRXhw
UHJvdG90eXBlTWF0Y2hDb2RlR2VuZXJhdG9yLCBEb250RW51bSk7CiAgICAgSlNDX05BVElWRV9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+c2VhcmNoU3ltYm9s
LCByZWdFeHBQcm90b0Z1bmNTZWFyY2gsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfQlVJTFRJTl9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+c3BsaXRTeW1ib2ws
IHJlZ0V4cFByb3RvdHlwZVNwbGl0Q29kZUdlbmVyYXRvciwgRG9udEVudW0pOwogCiAgICAgSlNG
dW5jdGlvbiogZXhlY0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIDEsIHZtLnByb3BlcnR5TmFtZXMtPmV4ZWMuc3RyaW5nKCksIHJlZ0V4cFByb3RvRnVuY0V4
ZWMsIFJlZ0V4cEV4ZWNJbnRyaW5zaWMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5leGVjUHJpdmF0ZU5hbWUsIGV4ZWNGdW5jdGlvbiwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwpAQCAtMTE1LDcgKzExNyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIHsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKFJl
Z0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJCdWlsdGluIFJlZ0V4
cCBleGVjIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKTsKICAgICBKU1N0
cmluZyogc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmdPck51bGwoZXhlYyk7CiAg
ICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CkBAIC00MzQsNCArNDM2LDE2NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHJlZ0V4cFByb3RvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQgPyBqc051bWJl
cihyZXN1bHQuc3RhcnQpIDoganNOdW1iZXIoLTEpKTsKIH0KIAorc3RhdGljIGlubGluZSB1bnNp
Z25lZCBhZHZhbmNlU3RyaW5nSW5kZXgoU3RyaW5nIHN0ciwgdW5zaWduZWQgc3RyU2l6ZSwgdW5z
aWduZWQgaW5kZXgsIGJvb2wgaXNVbmljb2RlKQoreworICAgIGlmICghaXNVbmljb2RlKQorICAg
ICAgICByZXR1cm4gKytpbmRleDsKKyAgICByZXR1cm4gUmVnRXhwT2JqZWN0OjphZHZhbmNlU3Ry
aW5nVW5pY29kZShzdHIsIHN0clNpemUsIGluZGV4KTsKK30KKworLy8gRVMgMjEuMi41LjExIFJl
Z0V4cC5wcm90b3R5cGVbQEBzcGxpdF0oc3RyaW5nLCBsaW1pdCkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworCisgICAgLy8gMS4gW2hhbmRsZWQgYnkgSlMgYnVp
bHRpbl0gTGV0IHJ4IGJlIHRoZSB0aGlzIHZhbHVlLgorICAgIC8vIDIuIFtoYW5kbGVkIGJ5IEpT
IGJ1aWx0aW5dIElmIFR5cGUocngpIGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlwZUVycm9yIGV4
Y2VwdGlvbi4KKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAg
IFJlZ0V4cCogcmVnZXhwID0gYXNSZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+cmVnRXhwKCk7CisK
KyAgICAvLyAzLiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBMZXQgUyBiZSA/IFRvU3RyaW5nKHN0
cmluZykuCisgICAgU3RyaW5nIGlucHV0ID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOworICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBBU1NFUlQoIWlucHV0LmlzTnVs
bCgpKTsKKworICAgIC8vIDQuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIExldCBDIGJlID8gU3Bl
Y2llc0NvbnN0cnVjdG9yKHJ4LCAlUmVnRXhwJSkuCisgICAgLy8gNS4gW2hhbmRsZWQgYnkgSlMg
YnVpbHRpbl0gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyAg
ICAvLyA2LiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBJZiBmbGFncyBjb250YWlucyAidSIsIGxl
dCB1bmljb2RlTWF0Y2hpbmcgYmUgdHJ1ZS4KKyAgICAvLyA3LiBbaGFuZGxlZCBieSBKUyBidWls
dGluXSBFbHNlLCBsZXQgdW5pY29kZU1hdGNoaW5nIGJlIGZhbHNlLgorICAgIC8vIDguIFtoYW5k
bGVkIGJ5IEpTIGJ1aWx0aW5dIElmIGZsYWdzIGNvbnRhaW5zICJ5IiwgbGV0IG5ld0ZsYWdzIGJl
IGZsYWdzLgorICAgIC8vIDkuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIEVsc2UsIGxldCBuZXdG
bGFncyBiZSB0aGUgc3RyaW5nIHRoYXQgaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgZmxhZ3MgYW5k
ICJ5Ii4KKyAgICAvLyAxMC4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gTGV0IHNwbGl0dGVyIGJl
ID8gQ29uc3RydWN0KEMsIMKrIHJ4LCBuZXdGbGFncyDCuykuCisKKyAgICAvLyAxMS4gTGV0IEEg
YmUgQXJyYXlDcmVhdGUoMCkuCisgICAgLy8gMTIuIExldCBsZW5ndGhBIGJlIDAuCisgICAgSlNB
cnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICB1bnNpZ25l
ZCByZXN1bHRMZW5ndGggPSAwOworCisgICAgLy8gMTMuIElmIGxpbWl0IGlzIHVuZGVmaW5lZCwg
bGV0IGxpbSBiZSAyMzItMTsgZWxzZSBsZXQgbGltIGJlID8gVG9VaW50MzIobGltaXQpLgorICAg
IEpTVmFsdWUgbGltaXRWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIHVuc2lnbmVkIGxp
bWl0ID0gbGltaXRWYWx1ZS5pc1VuZGVmaW5lZCgpID8gMHhGRkZGRkZGRnUgOiBsaW1pdFZhbHVl
LnRvVUludDMyKGV4ZWMpOworCisgICAgLy8gMTQuIExldCBzaXplIGJlIHRoZSBudW1iZXIgb2Yg
ZWxlbWVudHMgaW4gUy4KKyAgICB1bnNpZ25lZCBpbnB1dFNpemUgPSBpbnB1dC5sZW5ndGgoKTsK
KworICAgIC8vIDE1LiBMZXQgcCA9IDAuCisgICAgdW5zaWduZWQgcG9zaXRpb24gPSAwOworCisg
ICAgLy8gMTYuIElmIGxpbSA9PSAwLCByZXR1cm4gQS4KKyAgICBpZiAoIWxpbWl0KQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisKKyAgICAvLyAxNy4gSWYgc2l6ZSA9
PSAwLCB0aGVuCisgICAgaWYgKGlucHV0LmlzRW1wdHkoKSkgeworICAgICAgICAvLyBhLiBMZXQg
eiBiZSA/IFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFMpLgorICAgICAgICAvLyBiLiBJZiB6IGlzIG5v
dCBudWxsLCByZXR1cm4gQS4KKyAgICAgICAgLy8gYy4gUGVyZm9ybSAhIENyZWF0ZURhdGFQcm9w
ZXJ0eShBLCAiMCIsIFMpLgorICAgICAgICAvLyBkLiBSZXR1cm4gQS4KKyAgICAgICAgaWYgKCFy
ZWdleHAtPm1hdGNoKHZtLCBpbnB1dCwgMCkpCisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVj
dEluZGV4KGV4ZWMsIDAsIGpzU3RyaW5nV2l0aFJldXNlKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgIH0KKworICAg
IC8vIDE4LiBMZXQgcSA9IHAuCisgICAgdW5zaWduZWQgbWF0Y2hQb3NpdGlvbiA9IHBvc2l0aW9u
OworICAgIC8vIDE5LiBSZXBlYXQsIHdoaWxlIHEgPCBzaXplCisgICAgYm9vbCByZWdFeHBJc1N0
aWNreSA9IHJlZ2V4cC0+c3RpY2t5KCk7CisgICAgYm9vbCByZWdFeHBJc1VuaWNvZGUgPSByZWdl
eHAtPnVuaWNvZGUoKTsKKyAgICB3aGlsZSAobWF0Y2hQb3NpdGlvbiA8IGlucHV0U2l6ZSkgewor
ICAgICAgICBWZWN0b3I8aW50LCAzMj4gb3ZlY3RvcjsKKworICAgICAgICAvLyBhLiBQZXJmb3Jt
ID8gU2V0KHNwbGl0dGVyLCAibGFzdEluZGV4IiwgcSwgdHJ1ZSkuCisgICAgICAgIC8vIGIuIExl
dCB6IGJlID8gUmVnRXhwRXhlYyhzcGxpdHRlciwgUykuCisgICAgICAgIGludCBtcG9zID0gcmVn
ZXhwLT5tYXRjaCh2bSwgaW5wdXQsIG1hdGNoUG9zaXRpb24sIG92ZWN0b3IpOworCisgICAgICAg
IC8vIGMuIElmIHogaXMgbnVsbCwgbGV0IHEgYmUgQWR2YW5jZVN0cmluZ0luZGV4KFMsIHEsIHVu
aWNvZGVNYXRjaGluZykuCisgICAgICAgIGlmIChtcG9zIDwgMCkgeworICAgICAgICAgICAgaWYg
KCFyZWdFeHBJc1N0aWNreSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG1h
dGNoUG9zaXRpb24gPSBhZHZhbmNlU3RyaW5nSW5kZXgoaW5wdXQsIGlucHV0U2l6ZSwgbWF0Y2hQ
b3NpdGlvbiwgcmVnRXhwSXNVbmljb2RlKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obXBvcykgPj0gaW5wdXRTaXpl
KSB7CisgICAgICAgICAgICAvLyBUaGUgc3BlYyByZWRvZXMgdGhlIFJlZ0V4cEV4ZWMgc3RhcnRp
bmcgYXQgdGhlIG5leHQgY2hhcmFjdGVyIG9mIHRoZSBpbnB1dC4KKyAgICAgICAgICAgIC8vIEJ1
dCBpbiBvdXIgY2FzZSwgbXBvcyA8IDAgbWVhbnMgdGhhdCB0aGUgbmF0aXZlIHJlZ2V4cCBhbHJl
YWR5IHNlYXJjaGVkIGFsbCBwZXJtdXRhdGlvbnMKKyAgICAgICAgICAgIC8vIGFuZCBrbm93IHRo
YXQgd2Ugd29uJ3QgYmUgYWJsZSB0byBmaW5kIGEgbWF0Y2ggZm9yIHRoZSBzZXBhcmF0b3IgZXZl
biBpZiB3ZSByZWRvIHRoZQorICAgICAgICAgICAgLy8gUmVnRXhwRXhlYyBzdGFydGluZyBhdCB0
aGUgbmV4dCBjaGFyYWN0ZXIgb2YgdGhlIGlucHV0LiBTbywganVzdCBiYWlsLgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBkLiBFbHNlLCB6IGlzIG5vdCBudWxs
CisgICAgICAgIC8vICAgIGkuIExldCBlIGJlID8gVG9MZW5ndGgoPyBHZXQoc3BsaXR0ZXIsICJs
YXN0SW5kZXgiKSkuCisgICAgICAgIC8vICAgaWkuIExldCBlIGJlIG1pbihlLCBzaXplKS4KKyAg
ICAgICAgbWF0Y2hQb3NpdGlvbiA9IG1wb3M7CisgICAgICAgIHVuc2lnbmVkIG1hdGNoRW5kID0g
b3ZlY3RvclsxXTsKKworICAgICAgICAvLyAgaWlpLiBJZiBlID0gcCwgbGV0IHEgYmUgQWR2YW5j
ZVN0cmluZ0luZGV4KFMsIHEsIHVuaWNvZGVNYXRjaGluZykuCisgICAgICAgIGlmIChtYXRjaEVu
ZCA9PSBwb3NpdGlvbikgeworICAgICAgICAgICAgbWF0Y2hQb3NpdGlvbiA9IGFkdmFuY2VTdHJp
bmdJbmRleChpbnB1dCwgaW5wdXRTaXplLCBtYXRjaFBvc2l0aW9uLCByZWdFeHBJc1VuaWNvZGUp
OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgLy8gaWYgbWF0Y2hF
bmQgPT0gMCB0aGVuIHBvc2l0aW9uIHNob3VsZCBhbHNvIGJlIHplcm8gYW5kIHRodXMgbWF0Y2hF
bmQgc2hvdWxkIGVxdWFsIHBvc2l0aW9uLgorICAgICAgICBBU1NFUlQobWF0Y2hFbmQpOworCisg
ICAgICAgIC8vICAgaXYuIEVsc2UgZSAhPSBwLAorICAgICAgICB7CisgICAgICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZkNhcHR1cmVzID0gcmVnZXhwLT5udW1TdWJwYXR0ZXJucygpOworICAgICAg
ICAgICAgdW5zaWduZWQgbmV3UmVzdWx0TGVuZ3RoID0gcmVzdWx0TGVuZ3RoICsgbnVtYmVyT2ZD
YXB0dXJlcyArIDE7CisgICAgICAgICAgICBpZiAobmV3UmVzdWx0TGVuZ3RoIDwgbnVtYmVyT2ZD
YXB0dXJlcyB8fCBuZXdSZXN1bHRMZW5ndGggPj0gTUFYX1NUT1JBR0VfVkVDVE9SX0lOREVYKSB7
CisgICAgICAgICAgICAgICAgLy8gTGV0J3MgY29uc2lkZXIgd2hhdCdzIGJlc3QgZm9yIHVzZXJz
IGhlcmUuIFdlJ3JlIGFib3V0IHRvIGluY3JlYXNlIHRoZSBsZW5ndGggb2YKKyAgICAgICAgICAg
ICAgICAvLyB0aGUgc3BsaXQgYXJyYXkgYmV5b25kIHRoZSBtYXhpbXVtIGxlbmd0aCB0aGF0IHdl
IGNhbiBzdXBwb3J0IGVmZmljaWVudGx5LiBUaGlzCisgICAgICAgICAgICAgICAgLy8gd2lsbCBj
YXVzZSB1cyB0byB1c2UgYSBIYXNoTWFwIGZvciB0aGUgbmV3IGVudHJpZXMgYWZ0ZXIgdGhpcyBw
b2ludC4gVGhhdCdzIGdvaW5nCisgICAgICAgICAgICAgICAgLy8gdG8gcmVzdWx0IGluIGEgdmVy
eSBsb25nIHJ1bm5pbmcgdGltZSBvZiB0aGlzIGZ1bmN0aW9uIGFuZCB2ZXJ5IGxhcmdlIG1lbW9y
eQorICAgICAgICAgICAgICAgIC8vIHVzYWdlLiBJbiBteSBleHBlcmltZW50cywgSlNDIHdpbGwg
c2l0IHNwaW5uaW5nIGZvciBtaW51dGVzIGFmdGVyIGdldHRpbmcgaGVyZSBhbmQKKyAgICAgICAg
ICAgICAgICAvLyBpdCB3YXMgdXNpbmcgPjRHQiBvZiBtZW1vcnkgYW5kIGV2ZW50dWFsbHkgZ3Jl
dyB0byA4R0IuIEl0IGtlcHQgcnVubmluZyB3aXRob3V0CisgICAgICAgICAgICAgICAgLy8gZmlu
aXNoaW5nIHVudGlsIEkga2lsbGVkIGl0LiBUaGF0J3MgcHJvYmFibHkgbm90IHdoYXQgdGhlIHVz
ZXIgd2FudGVkLiBUaGUgdXNlciwKKyAgICAgICAgICAgICAgICAvLyBvciB0aGUgcHJvZ3JhbSB0
aGF0IHRoZSB1c2VyIGlzIHJ1bm5pbmcsIHByb2JhYmx5IG1hZGUgYSBtaXN0YWtlIGJ5IGNhbGxp
bmcgdGhpcworICAgICAgICAgICAgICAgIC8vIG1ldGhvZCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQg
cmVzdWx0ZWQgaW4gc3VjaCBhbiBvYm5veGlvdXMgYXJyYXkuIFRoZXJlZm9yZSwgdG8KKyAgICAg
ICAgICAgICAgICAvLyBwcm90ZWN0IG91cnNlbHZlcywgd2UgYmFpbCBhdCB0aGlzIHBvaW50Lgor
ICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyAxLiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0
aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgZWxlbWVudHMgYXQgaW5kaWNlcyBw
IChpbmNsdXNpdmUpIHRocm91Z2ggcSAoZXhjbHVzaXZlKS4KKyAgICAgICAgICAgIC8vIDIuIFBl
cmZvcm0gISBDcmVhdGVEYXRhUHJvcGVydHkoQSwgISBUb1N0cmluZyhsZW5ndGhBKSwgVCkuCisg
ICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0aCwganNT
dWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgcG9zaXRpb24sIG1hdGNoUG9zaXRpb24g
LSBwb3NpdGlvbikpOworCisgICAgICAgICAgICAvLyAzLiBMZXQgbGVuZ3RoQSBiZSBsZW5ndGhB
ICsgMS4KKyAgICAgICAgICAgIC8vIDQuIElmIGxlbmd0aEEgPSBsaW0sIHJldHVybiBBLgorICAg
ICAgICAgICAgaWYgKCsrcmVzdWx0TGVuZ3RoID09IGxpbWl0KQorICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKworICAgICAgICAgICAgLy8gNS4gTGV0IHAg
YmUgZS4KKyAgICAgICAgICAgIHBvc2l0aW9uID0gbWF0Y2hFbmQ7CisKKyAgICAgICAgICAgIC8v
IDYuIExldCBudW1iZXJPZkNhcHR1cmVzIGJlID8gVG9MZW5ndGgoPyBHZXQoeiwgImxlbmd0aCIp
KS4KKyAgICAgICAgICAgIC8vIDcuIExldCBudW1iZXJPZkNhcHR1cmVzIGJlIG1heChudW1iZXJP
ZkNhcHR1cmVzLTEsIDApLgorICAgICAgICAgICAgLy8gOC4gTGV0IGkgYmUgMS4KKyAgICAgICAg
ICAgIC8vIDkuIFJlcGVhdCwgd2hpbGUgaSA8PSBudW1iZXJPZkNhcHR1cmVzLAorICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBudW1iZXJPZkNhcHR1cmVzOyArK2kpIHsKKyAg
ICAgICAgICAgICAgICAvLyBhLiBMZXQgbmV4dENhcHR1cmUgYmUgPyBHZXQoeiwgISBUb1N0cmlu
ZyhpKSkuCisgICAgICAgICAgICAgICAgLy8gYi4gUGVyZm9ybSAhIENyZWF0ZURhdGFQcm9wZXJ0
eShBLCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBuZXh0Q2FwdHVyZSkuCisgICAgICAgICAgICAgICAg
aW50IHN1YiA9IG92ZWN0b3JbaSAqIDJdOworICAgICAgICAgICAgICAgIHJlc3VsdC0+cHV0RGly
ZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoLCBzdWIgPCAwID8ganNVbmRlZmluZWQoKSA6IGpz
U3Vic3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQsIHN1Yiwgb3ZlY3RvcltpICogMiArIDFd
IC0gc3ViKSk7CisKKyAgICAgICAgICAgICAgICAvLyBjLiBMZXQgaSBiZSBpICsgMS4KKyAgICAg
ICAgICAgICAgICAvLyBkLiBMZXQgbGVuZ3RoQSBiZSBsZW5ndGhBICsgMS4KKyAgICAgICAgICAg
ICAgICAvLyBlLiBJZiBsZW5ndGhBID0gbGltLCByZXR1cm4gQS4KKyAgICAgICAgICAgICAgICBp
ZiAoKytyZXN1bHRMZW5ndGggPT0gbGltaXQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
MTAuIExldCBxIGJlIHAuCisgICAgICAgICAgICBtYXRjaFBvc2l0aW9uID0gcG9zaXRpb247Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICAvLyAyMC4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1
YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGVsZW1lbnRzIGF0IGlu
ZGljZXMgcCAoaW5jbHVzaXZlKSB0aHJvdWdoIHNpemUgKGV4Y2x1c2l2ZSkuCisgICAgLy8gMjEu
IFBlcmZvcm0gISBDcmVhdGVEYXRhUHJvcGVydHkoQSwgISBUb1N0cmluZyhsZW5ndGhBKSwgVCku
CisgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgrKywganNTdWJz
dHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgcG9zaXRpb24sIGlucHV0U2l6ZSAtIHBvc2l0
aW9uKSk7CisKKyAgICAvLyAyMi4gUmV0dXJuIEEuCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCShyZXZpc2lvbiAxOTkzMzgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNTgsNiArNTgsOCBAQCBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxS
ZWdFeHA+IG1fZW1wdHlSZWdFeHA7CiB9OwogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqKTsKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBSZWdFeHBQcm90b3R5cGVfaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQ
b3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMDgs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwpAQCAtODEsNiArODEsMjkgQEAgaW5saW5lIFN0cmluZ09iamVjdCogYXNTdHJpbmdPYmplY3Qo
SlNWYQogCiBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmdPYmplY3QqIGNvbnN0cnVjdFN0cmluZyhW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKKy8vIEhlbHBlciBmb3IgcHJvZHVjaW5n
IGEgSlNTdHJpbmcgZm9yICdzdHJpbmcnLCB3aGVyZSAnc3RyaW5nJyB3YXMgYmVlbiBwcm9kdWNl
ZCBieQorLy8gY2FsbGluZyBUb1N0cmluZyBvbiAnb3JpZ2luYWxWYWx1ZScuIEluIGNhc2VzIHdo
ZXJlICdvcmlnaW5hbFZhbHVlJyBhbHJlYWR5IHdhcyBhCisvLyBzdHJpbmcgcHJpbWl0aXZlIHdl
IGNhbiBqdXN0IHVzZSB0aGlzLCBvdGhlcndpc2Ugd2UgbmVlZCB0byBhbGxvY2F0ZSBhIG5ldyBK
U1N0cmluZy4KK3N0YXRpYyBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nV2l0aFJldXNlKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBvcmlnaW5hbFZhbHVlLCBjb25zdCBTdHJpbmcmIHN0cmluZykK
K3sKKyAgICBpZiAob3JpZ2luYWxWYWx1ZS5pc1N0cmluZygpKSB7CisgICAgICAgIEFTU0VSVChh
c1N0cmluZyhvcmlnaW5hbFZhbHVlKS0+dmFsdWUoZXhlYykgPT0gc3RyaW5nKTsKKyAgICAgICAg
cmV0dXJuIGFzU3RyaW5nKG9yaWdpbmFsVmFsdWUpOworICAgIH0KKyAgICByZXR1cm4ganNTdHJp
bmcoZXhlYywgc3RyaW5nKTsKK30KKworLy8gSGVscGVyIHRoYXQgdHJpZXMgdG8gdXNlIHRoZSBK
U1N0cmluZyBzdWJzdHJpbmcgc2hhcmluZyBtZWNoYW5pc20gaWYgJ29yaWdpbmFsVmFsdWUnIGlz
IGEgSlNTdHJpbmcuCitzdGF0aWMgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgb3JpZ2luYWxWYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmIChvcmlnaW5hbFZhbHVl
LmlzU3RyaW5nKCkpIHsKKyAgICAgICAgQVNTRVJUKGFzU3RyaW5nKG9yaWdpbmFsVmFsdWUpLT52
YWx1ZShleGVjKSA9PSBzdHJpbmcpOworICAgICAgICByZXR1cm4ganNTdWJzdHJpbmcoZXhlYywg
YXNTdHJpbmcob3JpZ2luYWxWYWx1ZSksIG9mZnNldCwgbGVuZ3RoKTsKKyAgICB9CisgICAgcmV0
dXJuIGpzU3Vic3RyaW5nKGV4ZWMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpOworfQorCisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU3RyaW5nT2JqZWN0X2gKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkocmV2
aXNpb24gMTk5MzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJp
Z2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTMsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNC0yMDA4LCAy
MDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQg
KEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDE1IEpvcmRh
biBIYXJiYW5kIChsamhhcmJAZ21haWwuY29tKQogICoKQEAgLTcwLDggKzcwLDYgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNQYWRTdGFydChFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwbGFjZShFeGVjU3RhdGUqKTsKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRl
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NwbGl0KEV4
ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNT
dWJzdHIoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY1N1YnN0cmluZyhFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlKEV4ZWNTdGF0ZSopOwpA
QCAtMTEzLDYgKzExMSw3IEBAIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdQcm90b3R5cGU6OnNfaW5m
byAKICAgICBtYXRjaCAgICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgICBy
ZXBlYXQgICAgSlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgICBzZWFyY2ggICAg
SlNCdWlsdGluICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgICBzcGxpdCAgICAgSlNCdWlsdGlu
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKIEBlbmQKICovCiAKQEAgLTEzOSw3ICsxMzgsNiBAQCB2
b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mCiAgICAgSlNDX05BVElWRV9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInBhZFN0YXJ0Iiwgc3RyaW5nUHJvdG9GdW5jUGFk
U3RhcnQsIERvbnRFbnVtLCAxKTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04oInJlcGxhY2UiLCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlLCBEb250
RW51bSwgMiwgU3RyaW5nUHJvdG90eXBlUmVwbGFjZUludHJpbnNpYyk7CiAgICAgSlNDX05BVElW
RV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInNsaWNlIiwgc3RyaW5nUHJvdG9GdW5jU2xp
Y2UsIERvbnRFbnVtLCAyKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTigic3BsaXQiLCBzdHJpbmdQcm90b0Z1bmNTcGxpdCwgRG9udEVudW0sIDIpOwogICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJzdWJzdHIiLCBzdHJpbmdQcm90
b0Z1bmNTdWJzdHIsIERvbnRFbnVtLCAyKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhP
VVRfVFJBTlNJVElPTigic3Vic3RyaW5nIiwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nLCBEb250
RW51bSwgMik7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInRv
TG93ZXJDYXNlIiwgc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UsIERvbnRFbnVtLCAwKTsKQEAg
LTE5NSwyOCArMTkzLDYgQEAgYm9vbCBTdHJpbmdQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xv
dAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLS8vIEhlbHBlciBmb3IgcHJvZHVjaW5nIGEgSlNTdHJpbmcg
Zm9yICdzdHJpbmcnLCB3aGVyZSAnc3RyaW5nJyB3YXMgYmVlbiBwcm9kdWNlZCBieQotLy8gY2Fs
bGluZyBUb1N0cmluZyBvbiAnb3JpZ2luYWxWYWx1ZScuIEluIGNhc2VzIHdoZXJlICdvcmlnaW5h
bFZhbHVlJyBhbHJlYWR5IHdhcyBhCi0vLyBzdHJpbmcgcHJpbWl0aXZlIHdlIGNhbiBqdXN0IHVz
ZSB0aGlzLCBvdGhlcndpc2Ugd2UgbmVlZCB0byBhbGxvY2F0ZSBhIG5ldyBKU1N0cmluZy4KLXN0
YXRpYyBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nV2l0aFJldXNlKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBvcmlnaW5hbFZhbHVlLCBjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICBpZiAo
b3JpZ2luYWxWYWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIEFTU0VSVChhc1N0cmluZyhvcmln
aW5hbFZhbHVlKS0+dmFsdWUoZXhlYykgPT0gc3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIGFzU3Ry
aW5nKG9yaWdpbmFsVmFsdWUpOwotICAgIH0KLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgc3Ry
aW5nKTsKLX0KLQotLy8gSGVscGVyIHRoYXQgdHJpZXMgdG8gdXNlIHRoZSBKU1N0cmluZyBzdWJz
dHJpbmcgc2hhcmluZyBtZWNoYW5pc20gaWYgJ29yaWdpbmFsVmFsdWUnIGlzIGEgSlNTdHJpbmcu
Ci1zdGF0aWMgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgb3JpZ2luYWxWYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIGlmIChvcmlnaW5hbFZhbHVlLmlzU3RyaW5nKCkp
IHsKLSAgICAgICAgQVNTRVJUKGFzU3RyaW5nKG9yaWdpbmFsVmFsdWUpLT52YWx1ZShleGVjKSA9
PSBzdHJpbmcpOwotICAgICAgICByZXR1cm4ganNTdWJzdHJpbmcoZXhlYywgYXNTdHJpbmcob3Jp
Z2luYWxWYWx1ZSksIG9mZnNldCwgbGVuZ3RoKTsKLSAgICB9Ci0gICAgcmV0dXJuIGpzU3Vic3Ry
aW5nKGV4ZWMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpOwotfQotCiBzdGF0aWMgTkVWRVJfSU5M
SU5FIFN0cmluZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXNTbG93KFN0cmluZ1ZpZXcgcmVwbGFj
ZW1lbnQsIFN0cmluZ1ZpZXcgc291cmNlLCBjb25zdCBpbnQqIG92ZWN0b3IsIFJlZ0V4cCogcmVn
LCBzaXplX3QgaSkKIHsKICAgICBTdHJpbmdCdWlsZGVyIHN1YnN0aXR1dGVkUmVwbGFjZW1lbnQ7
CkBAIC0xMTgxLDE2OSArMTE1Nyw1OCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIHNwbGl0
U3RyaW5nQnlPCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0vLyBFUyA1LjEgLSAxNS41LjQuMTQg
U3RyaW5nLnByb3RvdHlwZS5zcGxpdCAoc2VwYXJhdG9yLCBsaW1pdCkKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXQoRXhlY1N0YXRlKiBleGVjKQorLy8g
RVMgMjEuMS4zLjE3IFN0cmluZy5wcm90b3R5cGUuc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEV4ZWNT
dGF0ZSogZXhlYykKIHsKLSAgICAvLyAxLiBDYWxsIENoZWNrT2JqZWN0Q29lcmNpYmxlIHBhc3Np
bmcgdGhlIHRoaXMgdmFsdWUgYXMgaXRzIGFyZ3VtZW50LgogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlz
VmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBBU1NF
UlQoY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSk7CiAKLSAgICAvLyAyLiBMZXQgUyBi
ZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgVG9TdHJpbmcsIGdpdmluZyBpdCB0aGUgdGhpcyB2YWx1
ZSBhcyBpdHMgYXJndW1lbnQuCi0gICAgLy8gNi4gTGV0IHMgYmUgdGhlIG51bWJlciBvZiBjaGFy
YWN0ZXJzIGluIFMuCisgICAgLy8gMy4gTGV0IFMgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRv
U3RyaW5nLCBnaXZpbmcgaXQgdGhlIHRoaXMgdmFsdWUgYXMgaXRzIGFyZ3VtZW50LgorICAgIC8v
IDcuIExldCBzIGJlIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBTLgogICAgIFN0cmluZyBp
bnB1dCA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIEFTU0VSVCghaW5wdXQuaXNOdWxsKCkpOwogCi0gICAgLy8gMy4gTGV0
IEEgYmUgYSBuZXcgYXJyYXkgY3JlYXRlZCBhcyBpZiBieSB0aGUgZXhwcmVzc2lvbiBuZXcgQXJy
YXkoKQorICAgIC8vIDQuIExldCBBIGJlIGEgbmV3IGFycmF5IGNyZWF0ZWQgYXMgaWYgYnkgdGhl
IGV4cHJlc3Npb24gbmV3IEFycmF5KCkKICAgICAvLyAgICB3aGVyZSBBcnJheSBpcyB0aGUgc3Rh
bmRhcmQgYnVpbHQtaW4gY29uc3RydWN0b3Igd2l0aCB0aGF0IG5hbWUuCiAgICAgSlNBcnJheSog
cmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKIAotICAgIC8vIDQuIExldCBs
ZW5ndGhBIGJlIDAuCisgICAgLy8gNS4gTGV0IGxlbmd0aEEgYmUgMC4KICAgICB1bnNpZ25lZCBy
ZXN1bHRMZW5ndGggPSAwOwogCi0gICAgLy8gNS4gSWYgbGltaXQgaXMgdW5kZWZpbmVkLCBsZXQg
bGltID0gMl4zMi0xOyBlbHNlIGxldCBsaW0gPSBUb1VpbnQzMihsaW1pdCkuCisgICAgLy8gNi4g
SWYgbGltaXQgaXMgdW5kZWZpbmVkLCBsZXQgbGltID0gMl4zMi0xOyBlbHNlIGxldCBsaW0gPSBU
b1VpbnQzMihsaW1pdCkuCiAgICAgSlNWYWx1ZSBsaW1pdFZhbHVlID0gZXhlYy0+YXJndW1lbnQo
MSk7CiAgICAgdW5zaWduZWQgbGltaXQgPSBsaW1pdFZhbHVlLmlzVW5kZWZpbmVkKCkgPyAweEZG
RkZGRkZGdSA6IGxpbWl0VmFsdWUudG9VSW50MzIoZXhlYyk7CiAKLSAgICAvLyA3LiBMZXQgcCA9
IDAuCisgICAgLy8gOC4gTGV0IHAgPSAwLgogICAgIHNpemVfdCBwb3NpdGlvbiA9IDA7CiAKLSAg
ICAvLyA4LiBJZiBzZXBhcmF0b3IgaXMgYSBSZWdFeHAgb2JqZWN0IChpdHMgW1tDbGFzc11dIGlz
ICJSZWdFeHAiKSwgbGV0IFIgPSBzZXBhcmF0b3I7CisgICAgLy8gOS4gSWYgc2VwYXJhdG9yIGlz
IGEgUmVnRXhwIG9iamVjdCAoaXRzIFtbQ2xhc3NdXSBpcyAiUmVnRXhwIiksIGxldCBSID0gc2Vw
YXJhdG9yOwogICAgIC8vICAgIG90aGVyd2lzZSBsZXQgUiA9IFRvU3RyaW5nKHNlcGFyYXRvciku
CiAgICAgSlNWYWx1ZSBzZXBhcmF0b3JWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGlm
IChzZXBhcmF0b3JWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpIHsKLSAgICAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgICAgIFJlZ0V4cCogcmVnID0gYXNSZWdFeHBP
YmplY3Qoc2VwYXJhdG9yVmFsdWUpLT5yZWdFeHAoKTsKLQotICAgICAgICAvLyA5LiBJZiBsaW0g
PT0gMCwgcmV0dXJuIEEuCi0gICAgICAgIGlmICghbGltaXQpCi0gICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0KLSAgICAgICAgLy8gMTAuIElmIHNlcGFyYXRvciBp
cyB1bmRlZmluZWQsIHRoZW4KLSAgICAgICAgaWYgKHNlcGFyYXRvclZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKLSAgICAgICAgICAgIC8vIGEuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBp
bnRlcm5hbCBtZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50cyAiMCIsCi0gICAgICAgICAgICAvLyAg
ICBQcm9wZXJ0eSBEZXNjcmlwdG9yIHtbW1ZhbHVlXV06IFMsIFtbV3JpdGFibGVdXTogdHJ1ZSwg
W1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IHRydWV9LCBhbmQgZmFsc2Uu
Ci0gICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIDAsIGpzU3RyaW5nV2l0
aFJldXNlKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQpKTsKLSAgICAgICAgICAgIC8vIGIuIFJldHVy
biBBLgotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gMTEuIElmIHMgPT0gMCwgdGhlbgotICAgICAgICBpZiAoaW5wdXQu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAvLyBhLiBDYWxsIFNwbGl0TWF0Y2goUywgMCwgUikg
YW5kIGxldCB6IGJlIGl0cyBNYXRjaFJlc3VsdCByZXN1bHQuCi0gICAgICAgICAgICAvLyBiLiBJ
ZiB6IGlzIG5vdCBmYWlsdXJlLCByZXR1cm4gQS4KLSAgICAgICAgICAgIC8vIGMuIENhbGwgdGhl
IFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50
cyAiMCIsCi0gICAgICAgICAgICAvLyAgICBQcm9wZXJ0eSBEZXNjcmlwdG9yIHtbW1ZhbHVlXV06
IFMsIFtbV3JpdGFibGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJh
YmxlXV06IHRydWV9LCBhbmQgZmFsc2UuCi0gICAgICAgICAgICAvLyBkLiBSZXR1cm4gQS4KLSAg
ICAgICAgICAgIGlmICghcmVnLT5tYXRjaCgqdm0sIGlucHV0LCAwKSkKLSAgICAgICAgICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIDAsIGpzU3RyaW5nV2l0aFJldXNlKGV4ZWMs
IHRoaXNWYWx1ZSwgaW5wdXQpKTsKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIDEyLiBMZXQgcSA9IHAuCi0gICAgICAg
IHNpemVfdCBtYXRjaFBvc2l0aW9uID0gMDsKLSAgICAgICAgLy8gMTMuIFJlcGVhdCwgd2hpbGUg
cSAhPSBzCi0gICAgICAgIHdoaWxlIChtYXRjaFBvc2l0aW9uIDwgaW5wdXQubGVuZ3RoKCkpIHsK
LSAgICAgICAgICAgIC8vIGEuIENhbGwgU3BsaXRNYXRjaChTLCBxLCBSKSBhbmQgbGV0IHogYmUg
aXRzIE1hdGNoUmVzdWx0IHJlc3VsdC4KLSAgICAgICAgICAgIFZlY3RvcjxpbnQsIDMyPiBvdmVj
dG9yOwotICAgICAgICAgICAgaW50IG1wb3MgPSByZWctPm1hdGNoKCp2bSwgaW5wdXQsIG1hdGNo
UG9zaXRpb24sIG92ZWN0b3IpOwotCi0gICAgICAgICAgICAvLyBiLiBJZiB6IGlzIGEgZmFpbHVy
ZSB0aGVuIHdlIGNhbiBicmVhayBiZWNhdXNlIHRoZXJlIGFyZSBubyBtYXRjaGVzCi0gICAgICAg
ICAgICBpZiAobXBvcyA8IDApCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBt
YXRjaFBvc2l0aW9uID0gbXBvczsKLQotICAgICAgICAgICAgLy8gaWYgdGhlIG1hdGNoIGlzIHRo
ZSBlbXB0eSBtYXRjaCBhdCB0aGUgZW5kLCBicmVhay4KLSAgICAgICAgICAgIGlmIChtYXRjaFBv
c2l0aW9uID49IGlucHV0Lmxlbmd0aCgpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgICAgICAvLyBjLiBFbHNlLCB6IGlzIG5vdCBmYWlsdXJlCi0gICAgICAgICAgICAvLyBpLiB6
IG11c3QgYmUgYSBTdGF0ZS4gTGV0IGUgYmUgeidzIGVuZEluZGV4IGFuZCBsZXQgY2FwIGJlIHon
cyBjYXB0dXJlcyBhcnJheS4KLSAgICAgICAgICAgIHNpemVfdCBtYXRjaEVuZCA9IG92ZWN0b3Jb
MV07Ci0KLSAgICAgICAgICAgIC8vIGlpLiBJZiBlID09IHAsIHRoZW4gbGV0IHEgPSBxICsgMS4K
LSAgICAgICAgICAgIGlmIChtYXRjaEVuZCA9PSBwb3NpdGlvbikgewotICAgICAgICAgICAgICAg
ICsrbWF0Y2hQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIC8vIGlpaS4gaWYgbWF0Y2hFbmQgPT0gMCB0aGVuIHBvc2l0aW9uIHNo
b3VsZCBhbHNvIGJlIHplcm8gYW5kIHRodXMgbWF0Y2hFbmQgc2hvdWxkIGVxdWFsIHBvc2l0aW9u
LgotICAgICAgICAgICAgQVNTRVJUKG1hdGNoRW5kKTsKLQotICAgICAgICAgICAgLy8gaWlpLiBF
bHNlLCBlICE9IHAKLQotICAgICAgICAgICAgLy8gMS4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUg
ZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGNoYXJhY3RlcnMg
YXQgcG9zaXRpb25zIHAgKGluY2x1c2l2ZSkKLSAgICAgICAgICAgIC8vICAgIHRocm91Z2ggcSAo
ZXhjbHVzaXZlKS4KLSAgICAgICAgICAgIC8vIDIuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVy
dHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50cyBUb1N0cmluZyhsZW5ndGhB
KSwKLSAgICAgICAgICAgIC8vICAgIFByb3BlcnR5IERlc2NyaXB0b3Ige1tbVmFsdWVdXTogVCwg
W1tXcml0YWJsZV1dOiB0cnVlLCBbW0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVd
XTogdHJ1ZX0sIGFuZCBmYWxzZS4KLSAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgo
ZXhlYywgcmVzdWx0TGVuZ3RoLCBqc1N1YnN0cmluZyhleGVjLCB0aGlzVmFsdWUsIGlucHV0LCBw
b3NpdGlvbiwgbWF0Y2hQb3NpdGlvbiAtIHBvc2l0aW9uKSk7Ci0KLSAgICAgICAgICAgIC8vIDMu
IEluY3JlbWVudCBsZW5ndGhBIGJ5IDEuCi0gICAgICAgICAgICAvLyA0LiBJZiBsZW5ndGhBID09
IGxpbSwgcmV0dXJuIEEuCi0gICAgICAgICAgICArK3Jlc3VsdExlbmd0aDsKLSAgICAgICAgICAg
IGlmIChyZXN1bHRMZW5ndGggPT0gbGltaXQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwotICAgICAgICAgICAgaWYgKHJlc3VsdExlbmd0aCA+PSBNQVhf
U1RPUkFHRV9WRUNUT1JfSU5ERVgpIHsKLSAgICAgICAgICAgICAgICAvLyBMZXQncyBjb25zaWRl
ciB3aGF0J3MgYmVzdCBmb3IgdXNlcnMgaGVyZS4gV2UncmUgYWJvdXQgdG8gaW5jcmVhc2UgdGhl
IGxlbmd0aCBvZgotICAgICAgICAgICAgICAgIC8vIHRoZSBzcGxpdCBhcnJheSBiZXlvbmQgdGhl
IG1heGltdW0gbGVuZ3RoIHRoYXQgd2UgY2FuIHN1cHBvcnQgZWZmaWNpZW50bHkuIFRoaXMKLSAg
ICAgICAgICAgICAgICAvLyB3aWxsIGNhdXNlIHVzIHRvIHVzZSBhIEhhc2hNYXAgZm9yIHRoZSBu
ZXcgZW50cmllcyBhZnRlciB0aGlzIHBvaW50LiBUaGF0J3MgZ29pbmcKLSAgICAgICAgICAgICAg
ICAvLyB0byByZXN1bHQgaW4gYSB2ZXJ5IGxvbmcgcnVubmluZyB0aW1lIG9mIHRoaXMgZnVuY3Rp
b24gYW5kIHZlcnkgbGFyZ2UgbWVtb3J5Ci0gICAgICAgICAgICAgICAgLy8gdXNhZ2UuIEluIG15
IGV4cGVyaW1lbnRzLCBKU0Mgd2lsbCBzaXQgc3Bpbm5pbmcgZm9yIG1pbnV0ZXMgYWZ0ZXIgZ2V0
dGluZyBoZXJlIGFuZAotICAgICAgICAgICAgICAgIC8vIGl0IHdhcyB1c2luZyA+NEdCIG9mIG1l
bW9yeSBhbmQgZXZlbnR1YWxseSBncmV3IHRvIDhHQi4gSXQga2VwdCBydW5uaW5nIHdpdGhvdXQK
LSAgICAgICAgICAgICAgICAvLyBmaW5pc2hpbmcgdW50aWwgSSBraWxsZWQgaXQuIFRoYXQncyBw
cm9iYWJseSBub3Qgd2hhdCB0aGUgdXNlciB3YW50ZWQuIFRoZSB1c2VyLAotICAgICAgICAgICAg
ICAgIC8vIG9yIHRoZSBwcm9ncmFtIHRoYXQgdGhlIHVzZXIgaXMgcnVubmluZywgcHJvYmFibHkg
bWFkZSBhIG1pc3Rha2UgYnkgY2FsbGluZyB0aGlzCi0gICAgICAgICAgICAgICAgLy8gbWV0aG9k
IGluIHN1Y2ggYSB3YXkgdGhhdCBpdCByZXN1bHRlZCBpbiBzdWNoIGFuIG9ibm94aW91cyBhcnJh
eS4gVGhlcmVmb3JlLCB0bwotICAgICAgICAgICAgICAgIC8vIHByb3RlY3Qgb3Vyc2VsdmVzLCB3
ZSBiYWlsIGF0IHRoaXMgcG9pbnQuCi0gICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGV4ZWMpOwotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIDUuIExldCBwID0gZS4K
LSAgICAgICAgICAgIC8vIDguIExldCBxID0gcC4KLSAgICAgICAgICAgIHBvc2l0aW9uID0gbWF0
Y2hFbmQ7Ci0gICAgICAgICAgICBtYXRjaFBvc2l0aW9uID0gbWF0Y2hFbmQ7Ci0KLSAgICAgICAg
ICAgIC8vIDYuIExldCBpID0gMC4KLSAgICAgICAgICAgIC8vIDcuIFJlcGVhdCwgd2hpbGUgaSBp
cyBub3QgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBjYXAuCi0gICAgICAgICAg
ICAvLyAgYSBMZXQgaSA9IGkgKyAxLgotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8PSByZWctPm51bVN1YnBhdHRlcm5zKCk7ICsraSkgewotICAgICAgICAgICAgICAgIC8vIGIg
Q2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBBIHdpdGgg
YXJndW1lbnRzCi0gICAgICAgICAgICAgICAgLy8gICBUb1N0cmluZyhsZW5ndGhBKSwgUHJvcGVy
dHkgRGVzY3JpcHRvciB7W1tWYWx1ZV1dOiBjYXBbaV0sIFtbV3JpdGFibGVdXToKLSAgICAgICAg
ICAgICAgICAvLyAgIHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1d
OiB0cnVlfSwgYW5kIGZhbHNlLgotICAgICAgICAgICAgICAgIGludCBzdWIgPSBvdmVjdG9yW2kg
KiAyXTsKLSAgICAgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3Vs
dExlbmd0aCwgc3ViIDwgMCA/IGpzVW5kZWZpbmVkKCkgOiBqc1N1YnN0cmluZyhleGVjLCB0aGlz
VmFsdWUsIGlucHV0LCBzdWIsIG92ZWN0b3JbaSAqIDIgKyAxXSAtIHN1YikpOwotICAgICAgICAg
ICAgICAgIC8vIGMgSW5jcmVtZW50IGxlbmd0aEEgYnkgMS4KLSAgICAgICAgICAgICAgICAvLyBk
IElmIGxlbmd0aEEgPT0gbGltLCByZXR1cm4gQS4KLSAgICAgICAgICAgICAgICBpZiAoKytyZXN1
bHRMZW5ndGggPT0gbGltaXQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0gZWxzZSB7Cisg
ICAgeyAvLyBGSVhNRTogS2VlcGluZyB0aGlzIGluZGVudGF0aW9uIGhlcmUgdG8gbWluaW1pemUg
dGhlIGRpZmYuIFdpbGwgdW5pbmRlbnQgYW5kIHJlbW92ZSB0aGlzIGxhdGVyLgogICAgICAgICBT
dHJpbmcgc2VwYXJhdG9yID0gc2VwYXJhdG9yVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgICAgIC8vIDkuIElmIGxp
bSA9PSAwLCByZXR1cm4gQS4KKyAgICAgICAgLy8gMTAuIElmIGxpbSA9PSAwLCByZXR1cm4gQS4K
ICAgICAgICAgaWYgKCFsaW1pdCkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIAotICAgICAgICAvLyAxMC4gSWYgc2VwYXJhdG9yIGlzIHVuZGVmaW5lZCwgdGhl
bgotICAgICAgICBKU1ZhbHVlIHNlcGFyYXRvclZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7Cisg
ICAgICAgIC8vIDExLiBJZiBzZXBhcmF0b3IgaXMgdW5kZWZpbmVkLCB0aGVuCiAgICAgICAgIGlm
IChzZXBhcmF0b3JWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICAvLyBhLiAgQ2Fs
bCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBBIHdpdGggYXJn
dW1lbnRzICIwIiwKLSAgICAgICAgICAgIC8vICAgICBQcm9wZXJ0eSBEZXNjcmlwdG9yIHtbW1Zh
bHVlXV06IFMsIFtbV3JpdGFibGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29u
ZmlndXJhYmxlXV06IHRydWV9LCBhbmQgZmFsc2UuCiAgICAgICAgICAgICByZXN1bHQtPnB1dERp
cmVjdEluZGV4KGV4ZWMsIDAsIGpzU3RyaW5nV2l0aFJldXNlKGV4ZWMsIHRoaXNWYWx1ZSwgaW5w
dXQpKTsKICAgICAgICAgICAgIC8vIGIuICBSZXR1cm4gQS4KICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIDExLiBJZiBz
ID09IDAsIHRoZW4KKyAgICAgICAgLy8gMTIuIElmIHMgPT0gMCwgdGhlbgogICAgICAgICBpZiAo
aW5wdXQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAvLyBhLiBDYWxsIFNwbGl0TWF0Y2goUywg
MCwgUikgYW5kIGxldCB6IGJlIGl0cyBNYXRjaFJlc3VsdCByZXN1bHQuCi0gICAgICAgICAgICAv
LyBiLiBJZiB6IGlzIG5vdCBmYWlsdXJlLCByZXR1cm4gQS4KLSAgICAgICAgICAgIC8vIGMuIENh
bGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgQSB3aXRoIGFy
Z3VtZW50cyAiMCIsCi0gICAgICAgICAgICAvLyAgICBQcm9wZXJ0eSBEZXNjcmlwdG9yIHtbW1Zh
bHVlXV06IFMsIFtbV3JpdGFibGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29u
ZmlndXJhYmxlXV06IHRydWV9LCBhbmQgZmFsc2UuCisgICAgICAgICAgICAvLyBhLiBMZXQgeiBi
ZSBTcGxpdE1hdGNoKFMsIDAsIFIpIHdoZXJlIFMgaXMgaW5wdXQsIFIgaXMgc2VwYXJhdG9yLgor
ICAgICAgICAgICAgLy8gYi4gSWYgeiBpcyBub3QgZmFsc2UsIHJldHVybiBBLgorICAgICAgICAg
ICAgLy8gYy4gQ2FsbCBDcmVhdGVEYXRhUHJvcGVydHkoQSwgIjAiLCBTKS4KICAgICAgICAgICAg
IC8vIGQuIFJldHVybiBBLgogICAgICAgICAgICAgaWYgKCFzZXBhcmF0b3IuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwganNTdHJpbmdX
aXRoUmV1c2UoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCkpOwpAQCAtMTM4NiwxNyArMTI1MSwxNiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIDEyLiBMZXQgcSA9IHAuCisgICAgICAgICAg
ICAvLyAxMy4gTGV0IHEgPSBwLgogICAgICAgICAgICAgc2l6ZV90IG1hdGNoUG9zaXRpb247Ci0g
ICAgICAgICAgICAvLyAxMy4gUmVwZWF0LCB3aGlsZSBxICE9IHMKLSAgICAgICAgICAgIC8vICAg
YS4gQ2FsbCBTcGxpdE1hdGNoKFMsIHEsIFIpIGFuZCBsZXQgeiBiZSBpdHMgTWF0Y2hSZXN1bHQg
cmVzdWx0LgotICAgICAgICAgICAgLy8gICBiLiBJZiB6IGlzIGZhaWx1cmUsIHRoZW4gbGV0IHEg
PSBxKzEuCi0gICAgICAgICAgICAvLyAgIGMuIEVsc2UsIHogaXMgbm90IGZhaWx1cmUKKyAgICAg
ICAgICAgIC8vIDE0LiBSZXBlYXQsIHdoaWxlIHEgIT0gcworICAgICAgICAgICAgLy8gICBhLiBs
ZXQgZSBiZSBTcGxpdE1hdGNoKFMsIHEsIFIpLgorICAgICAgICAgICAgLy8gICBiLiBJZiBlIGlz
IGZhaWx1cmUsIHRoZW4gbGV0IHEgPSBxKzEuCisgICAgICAgICAgICAvLyAgIGMuIEVsc2UsIGUg
aXMgYW4gaW50ZWdlciBpbmRleCA8PSBzLgogICAgICAgICAgICAgd2hpbGUgKChtYXRjaFBvc2l0
aW9uID0gc3RyaW5nSW1wbC0+ZmluZChzZXBhcmF0b3JJbXBsLCBwb3NpdGlvbikpICE9IG5vdEZv
dW5kKSB7CiAgICAgICAgICAgICAgICAgLy8gMS4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1
YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYXQg
cG9zaXRpb25zIHAgKGluY2x1c2l2ZSkKICAgICAgICAgICAgICAgICAvLyAgICB0aHJvdWdoIHEg
KGV4Y2x1c2l2ZSkuCi0gICAgICAgICAgICAgICAgLy8gMi4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Q
cm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBBIHdpdGggYXJndW1lbnRzIFRvU3RyaW5nKGxl
bmd0aEEpLAotICAgICAgICAgICAgICAgIC8vICAgIFByb3BlcnR5IERlc2NyaXB0b3Ige1tbVmFs
dWVdXTogVCwgW1tXcml0YWJsZV1dOiB0cnVlLCBbW0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25m
aWd1cmFibGVdXTogdHJ1ZX0sIGFuZCBmYWxzZS4KKyAgICAgICAgICAgICAgICAvLyAyLiBDYWxs
IENyZWF0ZURhdGFQcm9wZXJ0eShBLCBUb1N0cmluZyhsZW5ndGhBKSwgVCkuCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgsIGpzU3Vic3Ry
aW5nKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQsIHBvc2l0aW9uLCBtYXRjaFBvc2l0aW9uIC0gcG9z
aXRpb24pKTsKICAgICAgICAgICAgICAgICAvLyAzLiBJbmNyZW1lbnQgbGVuZ3RoQSBieSAxLgog
ICAgICAgICAgICAgICAgIC8vIDQuIElmIGxlbmd0aEEgPT0gbGltLCByZXR1cm4gQS4KQEAgLTE0
MDQsMTkgKzEyNjgsMTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
bwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAK
ICAgICAgICAgICAgICAgICAvLyA1LiBMZXQgcCA9IGUuCi0gICAgICAgICAgICAgICAgLy8gOC4g
TGV0IHEgPSBwLgorICAgICAgICAgICAgICAgIC8vIDYuIExldCBxID0gcC4KICAgICAgICAgICAg
ICAgICBwb3NpdGlvbiA9IG1hdGNoUG9zaXRpb24gKyBzZXBhcmF0b3IubGVuZ3RoKCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9CisgICAgfSAvLyBGSVhNRTogS2VlcGluZyB0aGlz
IGluZGVudGF0aW9uIGhlcmUgdG8gbWluaW1pemUgdGhlIGRpZmYuIFdpbGwgdW5pbmRlbnQgYW5k
IHJlbW92ZSB0aGlzIGxhdGVyLgogCi0gICAgLy8gMTQuIExldCBUIGJlIGEgU3RyaW5nIHZhbHVl
IGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBjaGFyYWN0ZXJz
IGF0IHBvc2l0aW9ucyBwIChpbmNsdXNpdmUpCisgICAgLy8gMTUuIExldCBUIGJlIGEgU3RyaW5n
IHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBjaGFy
YWN0ZXJzIGF0IHBvc2l0aW9ucyBwIChpbmNsdXNpdmUpCiAgICAgLy8gICAgIHRocm91Z2ggcyAo
ZXhjbHVzaXZlKS4KLSAgICAvLyAxNS4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGlu
dGVybmFsIG1ldGhvZCBvZiBBIHdpdGggYXJndW1lbnRzIFRvU3RyaW5nKGxlbmd0aEEpLCBQcm9w
ZXJ0eSBEZXNjcmlwdG9yCi0gICAgLy8gICAgIHtbW1ZhbHVlXV06IFQsIFtbV3JpdGFibGVdXTog
dHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IHRydWV9LCBhbmQg
ZmFsc2UuCisgICAgLy8gMTYuIENhbGwgQ3JlYXRlRGF0YVByb3BlcnR5KEEsIFRvU3RyaW5nKGxl
bmd0aEEpLCBUKS4KICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0
aCsrLCBqc1N1YnN0cmluZyhleGVjLCB0aGlzVmFsdWUsIGlucHV0LCBwb3NpdGlvbiwgaW5wdXQu
bGVuZ3RoKCkgLSBwb3NpdGlvbikpOwogCi0gICAgLy8gMTYuIFJldHVybiBBLgorICAgIC8vIDE3
LiBSZXR1cm4gQS4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5o
CShyZXZpc2lvbiAxOTkzMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNy0yMDA4LCAyMDEzLCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTY2LDYg
KzY2LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25TdAogU3RyaW5n
IHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50LCBTdHJp
bmdWaWV3IHNvdXJjZSwgY29uc3QgaW50KiBvdmVjdG9yLCBSZWdFeHAqIHJlZyk7CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVyKEV4
ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNT
cGxpdEZhc3QoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY1N1YnN0cihFeGVjU3RhdGUqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwJKHJldmlzaW9uIDE5OTMzOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAkod29ya2luZyBjb3B5KQpAQCAt
MTAwNyw3ICsxMDA3LDcgQEAKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9jYWxsc19S
ZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zZWFyY2hdLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAt
IHBhdGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfUmVnRXhwLnByb3RvdHlwZVtTeW1i
b2wuc3BsaXRdLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9jYWxsc19SZWdFeHBfY29uc3RydWN0b3Iu
anMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0
X2NhbGxzX1N0cmluZy5wcm90b3R5cGUubWF0Y2guanMKQEAgLTEwMTcsNyArMTAxNyw3IEBACiAt
IHBhdGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfU3RyaW5nLnByb3RvdHlwZS5zZWFy
Y2guanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxf
Z2V0X2NhbGxzX1N0cmluZy5wcm90b3R5cGUuc3BsaXQuanMKLSAgY21kOiBydW5FUzYgOmZhaWwK
KyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0X2Nh
bGxzX1N0cmluZy5yYXcuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJv
eHlfaW50ZXJuYWxfZ2V0X2NhbGxzX1RvUHJpbWl0aXZlLmpzCkBAIC0xMDkzLDcgKzEwOTMsNyBA
QAogLSBwYXRoOiBlczYvUmVnRXhwLnByb3RvdHlwZV9wcm9wZXJ0aWVzX1JlZ0V4cC5wcm90b3R5
cGVbU3ltYm9sLnNlYXJjaF0uanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYv
UmVnRXhwLnByb3RvdHlwZV9wcm9wZXJ0aWVzX1JlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0
XS5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6
IGVzNi9SZWdFeHAucHJvdG90eXBlX3Byb3BlcnRpZXNfUmVnRXhwW1N5bWJvbC5zcGVjaWVzXS5q
cwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9SZWdFeHBfaXNfc3ViY2xhc3Nh
YmxlX2NvcnJlY3RfcHJvdG90eXBlX2NoYWluLmpzCkBAIC0xMjE1LDkgKzEyMTUsOSBAQAogLSBw
YXRoOiBlczYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC5zcGVjaWVzX2V4aXN0ZW5jZS5qcwog
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3lt
Ym9sLnNwZWNpZXNfUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmpzCi0gIGNtZDogcnVu
RVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L3dlbGwta25vd25f
c3ltYm9sc19TeW1ib2wuc3BsaXQuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5F
UzYgOm5vcm1hbAogLSBwYXRoOiBlczYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC50b1ByaW1p
dGl2ZS5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5
bWJvbHNfU3ltYm9sLnRvU3RyaW5nVGFnLmpzCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTkzMzgpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3MiBAQAor
MjAxNi0wNC0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRVM2
OiBJbXBsZW1lbnQgU3RyaW5nLnByb3RvdHlwZS5zcGxpdCBhbmQgUmVnRXhwLnByb3RvdHlwZVtA
QHNwbGl0XS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NjAxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICoganMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGpzL2RvbS9zdHJpbmctcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorCisgICAg
ICAgICoganMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAt
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3JlZ2V4
cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMtZmxhZ3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdy
ZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICoganMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1nbG9iYWwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdl
eHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMtbXVsdGlsaW5lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMv
cmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1t
dWx0aWxpbmUuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3ktZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdy
ZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNv
ZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3JlZ2V4cC1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUuaHRtbDogQWRkZWQu
CisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mv
cmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQuaHRtbDogQWRk
ZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1z
cGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5qczogQWRkZWQuCisgICAgICAgICoganMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czIuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3Jl
Z2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwuanM6IEFkZGVkLgorICAgICAg
ICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMzLW11bHRpbGluZS5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMt
c3RpY2t5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdl
eHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC5qczogQWRkZWQuCisKKyAgICAgICAgKiBq
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi5qczogQWRk
ZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1z
cGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MuanM6IEFkZGVkLgorICAgICAgICAq
IGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMtaWdub3JlQ2FzZS5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGls
aW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmct
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kuanM6IEFkZGVk
LgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUuanM6IEFkZGVkLgorICAgICAgICAq
IGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHM0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJpbmct
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czIuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJp
bmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MuaHRtbDogQWRkZWQuCisgICAgICAgICog
anMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
My1nbG9iYWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3N0cmlu
Zy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMzLWlnbm9yZUNhc2UuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJp
bmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUt
c3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMzLXN0aWNreS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMtdW5pY29kZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3N0
cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzNC5odG1sOiBBZGRlZC4KKworICAgICAgICAqIGpzL3Njcmlw
dC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qczoKKyAgICAgICAgKiBzcHV0bmlr
L0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQu
MTRfU3RyaW5nLnByb3RvdHlwZS5zcGxpdC9TMTUuNS40LjE0X0ExX1QzLWV4cGVjdGVkLnR4dDoK
KwogMjAxNi0wNC0xMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVc2UgV2Vha1B0cnMgdG8gYXZvaWQgdXNpbmcgZGVhbGxvY2F0ZWQgV2lkZ2V0cyBhbmQg
U2Nyb2xsYWJsZUFyZWFzCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVy
dHlOYW1lcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvT2JqZWN0
LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxOTkzMzgpCisrKyBM
YXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5h
bWVzKEVycm9yKSBpcwogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEVycm9yLnByb3Rv
dHlwZSkgaXMgWydjb25zdHJ1Y3RvcicsICdtZXNzYWdlJywgJ25hbWUnLCAndG9TdHJpbmcnXQog
UEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE1hdGgpIGlzIFsnRScsJ0xOMTAnLCdMTjIn
LCdMT0cxMEUnLCdMT0cyRScsJ1BJJywnU1FSVDFfMicsJ1NRUlQyJywnYWJzJywnYWNvcycsJ2Fj
b3NoJywnYXNpbicsJ2FzaW5oJywnYXRhbicsJ2F0YW4yJywnYXRhbmgnLCdjYnJ0JywnY2VpbCcs
J2NsejMyJywnY29zJywnY29zaCcsJ2V4cCcsJ2V4cG0xJywnZmxvb3InLCdmcm91bmQnLCdoeXBv
dCcsJ2ltdWwnLCdsb2cnLCdsb2cxMCcsJ2xvZzFwJywnbG9nMicsJ21heCcsJ21pbicsJ3Bvdycs
J3JhbmRvbScsJ3JvdW5kJywnc2lnbicsJ3NpbicsJ3NpbmgnLCdzcXJ0JywndGFuJywndGFuaCcs
J3RydW5jJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhKU09OKSBpcyBbJ3BhcnNl
JywgJ3N0cmluZ2lmeSddCi1QQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoU3ltYm9sKSBp
cyBbJ2ZvcicsICdoYXNJbnN0YW5jZScsICdpdGVyYXRvcicsICdrZXlGb3InLCAnbGVuZ3RoJywg
J21hdGNoJywgJ25hbWUnLCAncHJvdG90eXBlJywgJ3NlYXJjaCcsICdzcGVjaWVzJywgJ3RvUHJp
bWl0aXZlJywgJ3RvU3RyaW5nVGFnJywgJ3Vuc2NvcGFibGVzJ10KK1BBU1MgZ2V0U29ydGVkT3du
UHJvcGVydHlOYW1lcyhTeW1ib2wpIGlzIFsnZm9yJywgJ2hhc0luc3RhbmNlJywgJ2l0ZXJhdG9y
JywgJ2tleUZvcicsICdsZW5ndGgnLCAnbWF0Y2gnLCAnbmFtZScsICdwcm90b3R5cGUnLCAnc2Vh
cmNoJywgJ3NwZWNpZXMnLCAnc3BsaXQnLCAndG9QcmltaXRpdmUnLCAndG9TdHJpbmdUYWcnLCAn
dW5zY29wYWJsZXMnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFN5bWJvbC5wcm90
b3R5cGUpIGlzIFsnY29uc3RydWN0b3InLCAndG9TdHJpbmcnLCAndmFsdWVPZiddCiBQQVNTIGdl
dFNvcnRlZE93blByb3BlcnR5TmFtZXMoTWFwKSBpcyBbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3Rv
dHlwZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoTWFwLnByb3RvdHlwZSkgaXMg
WydjbGVhcicsICdjb25zdHJ1Y3RvcicsICdkZWxldGUnLCAnZW50cmllcycsICdmb3JFYWNoJywg
J2dldCcsICdoYXMnLCAna2V5cycsICdzZXQnLCAnc2l6ZScsICd2YWx1ZXMnXQpJbmRleDogTGF5
b3V0VGVzdHMvanMvZG9tL3N0cmluZy1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZG9tL3N0cmluZy1wcm90b3R5cGUtcHJvcGVy
dGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5OTMzOCkKKysrIExheW91dFRlc3RzL2pzL2Rv
bS9zdHJpbmctcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xNCw3ICsxNCw3IEBAIFBBU1MgU3RyaW5nLnByb3RvdHlwZS5tYXRjaC5jYWxsKHVuZGVm
aW4KIFBBU1MgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlLmNhbGwodW5kZWZpbmVkLCAvMisvLCAn
LScpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIFN0cmluZy5w
cm90b3R5cGUuc2VhcmNoLmNhbGwodW5kZWZpbmVkLCAnNCcpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFN0cmluZy5wcm90b3R5cGUuc2VhcmNoIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBi
ZSB1bmRlZmluZWQuCiBQQVNTIFN0cmluZy5wcm90b3R5cGUuc2xpY2UuY2FsbCh1bmRlZmluZWQs
IDEsIDMpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIFN0cmlu
Zy5wcm90b3R5cGUuc3BsaXQuY2FsbCh1bmRlZmluZWQsICcyJykgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgU3RyaW5nLnByb3RvdHlwZS5zcGxpdC5jYWxsKHVu
ZGVmaW5lZCwgJzInKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBTdHJpbmcucHJvdG90eXBl
LnNwbGl0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQuCiBQQVNTIFN0cmlu
Zy5wcm90b3R5cGUuc2xpY2UuY2FsbCh1bmRlZmluZWQsIDEsIDMpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIFN0cmluZy5wcm90b3R5cGUuc3Vic3RyLmNhbGwo
dW5kZWZpbmVkLCAxLCAzKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgog
UEFTUyBTdHJpbmcucHJvdG90eXBlLnN1YnN0cmluZy5jYWxsKHVuZGVmaW5lZCwgMSwgMykgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KSW5kZXg6IExheW91dFRlc3RzL2pz
L3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhw
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czItZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNw
bGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMyCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
cmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1mbGFncy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
My1mbGFncy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mv
cmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtZmxhZ3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZs
YWdzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czMtZmxhZ3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLWdsb2JhbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMy1nbG9iYWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1n
bG9iYWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVn
cmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9i
YWwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRo
cm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMy1nbG9iYWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
cmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
KwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9y
ZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1p
Z25vcmVDYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVn
cmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzMy1tdWx0aWxpbmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMtbXVsdGlsaW5lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMt
bXVsdGlsaW5lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitK
U1JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMt
bXVsdGlsaW5lCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2Vw
dGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMzLW11bHRpbGluZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhw
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreS1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3ku
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreS5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9y
ZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNv
ZGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVn
ZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9yZWdleHAtcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMzLXVuaWNvZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0ic2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMzLXVuaWNvZGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHM0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhw
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9yZWdleHAtcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3JlZ2V4cC1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pz
L3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1z
cGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3N0
cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmct
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdy
ZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0cmluZy1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNw
bGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2Jz
ZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5n
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMzLWZsYWdzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3Mt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3RyaW5nLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3Ry
aW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVD
YXNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0
cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2Ut
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJp
bmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3Ry
aW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZQor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3du
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMy1pZ25vcmVDYXNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9y
ZUNhc2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1z
cGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11
bHRpbGluZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5n
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUt
c3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMzLW11bHRpbGluZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMtc3RpY2t5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMzLXN0aWNreS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0
aWNreS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdy
ZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNr
eQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhy
b3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMzLXN0aWNreS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
dHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1zdGlja3kuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgor
CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2Jz
ZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtdW5pY29kZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMzLXVuaWNvZGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTAgQEAKK0pTUmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzMy11bmljb2RlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5v
IGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czMtdW5pY29kZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAK
K0pTUmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
NAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhy
b3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzNC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxMCBAQAorSlNSZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0
aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLmpz
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVn
ZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwyNSBAQAorLy9AIHJ1bkRlZmF1bHQKKworZnVuY3Rpb24gYXNzZXJ0
KHRlc3RlZFZhbHVlLCBtc2cpIHsKKyAgICBpZiAoIXRlc3RlZFZhbHVlKQorICAgICAgICB0aHJv
dyBFcnJvcihtc2cpOworfQorCisvLyBSZWdFeHAgd2l0aCBvdmVycmlkZGVuIFtAQHNwZWNpZXNd
OiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDQuIExldCBDIGJlID8gU3BlY2llc0NvbnN0cnVjdG9y
KHJ4LCAlUmVnRXhwJSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOwor
ICAgIGxldCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
UmVnRXhwLCBTeW1ib2wuc3BlY2llcyk7CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4
cCwgU3ltYm9sLnNwZWNpZXMsIHsKKyAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgYWNjZXNzZXMucHVzaChTeW1ib2wuc3BlY2llcy50b1N0cmluZygpKTsKKyAgICAgICAg
ICAgIHJldHVybiAvaXQvOworICAgICAgICB9CisgICAgfSk7CisgICAgbGV0IG9iaiA9IG5ldyBS
ZWdFeHA7CisgICAgbGV0IGVycm9yU3RyOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAi
dW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0g
UmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAg
IGFzc2VydChhY2Nlc3NlcyA9PSAiU3ltYm9sKFN5bWJvbC5zcGVjaWVzKSIsICJQcm9wZXJ0eSBh
Y2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09
ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1mbGFncy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1mbGFncy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMzLWZsYWdzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8vQCBydW5E
ZWZhdWx0CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0
ZXN0ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8gUmVnRXhwLnBy
b3RvdHlwZSB3aXRoIG92ZXJyaWRkZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4g
TGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAo
KSB7CisgICAgbGV0IGZsYWcgPSAiZmxhZ3MiOworICAgIGxldCBmbGFnVmFsdWUgPSAiIjsKKwor
ICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGxldCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgZmxhZyk7CisKKyAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLnByb3RvdHlwZSwgZmxhZywgeworICAgICAgICBn
ZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAg
ICAgICAgIHJldHVybiBmbGFnVmFsdWU7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2Jq
ID0gL2l0LzsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0
byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVb
U3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMg
PT0gZmxhZywgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOwor
ICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSko
KTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwuanMJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNw
bGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwuanMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwyOCBAQAorLy9AIHJ1bkRlZmF1bHQKKworZnVuY3Rpb24gYXNzZXJ0KHRlc3RlZFZh
bHVlLCBtc2cpIHsKKyAgICBpZiAoIXRlc3RlZFZhbHVlKQorICAgICAgICB0aHJvdyBFcnJvciht
c2cpOworfQorCisvLyBSZWdFeHAucHJvdG90eXBlIHdpdGggb3ZlcnJpZGRlbiBmbGFnczogVGVz
dGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwg
ImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZmxhZyA9ICJnbG9iYWwiOworICAg
IGxldCBmbGFnVmFsdWUgPSBmYWxzZTsKKworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGxl
dCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhw
LnByb3RvdHlwZSwgZmxhZyk7CisKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLnBy
b3RvdHlwZSwgZmxhZywgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
YWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgIHJldHVybiBmbGFnVmFsdWU7CisgICAg
ICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0gL2l0LzsKKworICAgIGFzc2VydChhY2Nlc3Nl
cyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0
IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0
bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxhZywgIlByb3BlcnR5IGFjY2Vzc2VzIGRv
IG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIs
ICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMzLWlnbm9yZUNhc2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czMtaWdub3JlQ2FzZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMzLWlnbm9yZUNhc2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorLy9A
IHJ1bkRlZmF1bHQKKworZnVuY3Rpb24gYXNzZXJ0KHRlc3RlZFZhbHVlLCBtc2cpIHsKKyAgICBp
ZiAoIXRlc3RlZFZhbHVlKQorICAgICAgICB0aHJvdyBFcnJvcihtc2cpOworfQorCisvLyBSZWdF
eHAucHJvdG90eXBlIHdpdGggb3ZlcnJpZGRlbiBmbGFnczogVGVzdGluZyBFUzYgMjEuMi41LjEx
OiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0
aW9uICgpIHsKKyAgICBsZXQgZmxhZyA9ICJpZ25vcmVDYXNlIjsKKyAgICBsZXQgZmxhZ1ZhbHVl
ID0gZmFsc2U7CisKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb3JpZ0Rlc2NyaXB0
b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsIGZs
YWcpOworCisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcs
IHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2go
ZmxhZyk7CisgICAgICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAgICB9CisgICAgfSk7
CisgICAgbGV0IG9iaiA9IC9pdC87CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4
cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBSZWdF
eHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAgYXNz
ZXJ0KGFjY2Vzc2VzID09IGZsYWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhw
ZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCBy
ZXN1bHQiKTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxp
bmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
cmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5l
LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
cmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5l
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1
bmN0aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkK
KyAgICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8gUmVnRXhwLnByb3RvdHlwZSB3aXRo
IG92ZXJyaWRkZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJl
ID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0
IGZsYWcgPSAibXVsdGlsaW5lIjsKKyAgICBsZXQgZmxhZ1ZhbHVlID0gZmFsc2U7CisKKyAgICBs
ZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb3JpZ0Rlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcpOworCisgICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcsIHsKKyAgICAgICAgZ2V0OiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goZmxhZyk7CisgICAgICAgICAg
ICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAgICB9CisgICAgfSk7CisgICAgbGV0IG9iaiA9IC9p
dC87CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3Zl
cnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBSZWdFeHAucHJvdG90eXBlW1N5bWJv
bC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09IGZs
YWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBh
c3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5LmpzCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjggQEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwg
bXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgRXJyb3IobXNnKTsK
K30KKworLy8gUmVnRXhwLnByb3RvdHlwZSB3aXRoIG92ZXJyaWRkZW4gZmxhZ3M6IFRlc3Rpbmcg
RVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFn
cyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZsYWcgPSAic3RpY2t5IjsKKyAgICBsZXQg
ZmxhZ1ZhbHVlID0gZmFsc2U7CisKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb3Jp
Z0Rlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90
b3R5cGUsIGZsYWcpOworCisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5
cGUsIGZsYWcsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vz
c2VzLnB1c2goZmxhZyk7CisgICAgICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAgICB9
CisgICAgfSk7CisgICAgbGV0IG9iaiA9IC9pdC87CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0g
IiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1
bHQgPSBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7
CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09IGZsYWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3Qg
bWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5l
eHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
My11bmljb2RlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVu
aWNvZGUuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmlj
b2RlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8vQCBydW5EZWZhdWx0CisK
K2Z1bmN0aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1
ZSkKKyAgICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8gUmVnRXhwLnByb3RvdHlwZSB3
aXRoIG92ZXJyaWRkZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdz
IGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAg
bGV0IGZsYWcgPSAidW5pY29kZSI7CisgICAgbGV0IGZsYWdWYWx1ZSA9IGZhbHNlOworCisgICAg
bGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9yaWdEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBlLCBmbGFnKTsKKworICAgIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShSZWdFeHAucHJvdG90eXBlLCBmbGFnLCB7CisgICAgICAgIGdldDog
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKGZsYWcpOworICAgICAgICAg
ICAgcmV0dXJuIGZsYWdWYWx1ZTsKKyAgICAgICAgfQorICAgIH0pOworICAgIGxldCBvYmogPSAv
aXQvOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92
ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1i
b2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSBm
bGFnLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAg
YXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOwpJ
bmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czQuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzNC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACisvL0AgcnVuRGVm
YXVsdAorCitmdW5jdGlvbiBhc3NlcnQodGVzdGVkVmFsdWUsIG1zZykgeworICAgIGlmICghdGVz
dGVkVmFsdWUpCisgICAgICAgIHRocm93IEVycm9yKG1zZyk7Cit9CisKKy8vIFJlZ0V4cC5wcm90
b3R5cGUgd2l0aCBvdmVycmlkZGVuIGV4ZWM6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogMTkuYi4g
TGV0IHogYmUgPyBSZWdFeHBFeGVjKHNwbGl0dGVyLCBTKS4KKyhmdW5jdGlvbiAoKSB7CisgICAg
bGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9yaWdEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBlLCAiZXhlYyIpOworICAgIGxldCBv
cmlnRXhlYyA9IG9yaWdEZXNjcmlwdG9yLnZhbHVlOworCisgICAgbGV0IG9iaiA9IC9pdC87Cisg
ICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5cGUsICJleGVjIiwgeworICAg
ICAgICB2YWx1ZTogZnVuY3Rpb24oc3RyKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJl
eGVjIik7CisgICAgICAgICAgICByZXR1cm4gb3JpZ0V4ZWMuY2FsbCh0aGlzLCBzdHIpOworICAg
ICAgICB9CisgICAgfSk7CisKKyAgICAvLyBUaGUgQEBzcGxpdCBzbG93IHBhdGggc2hvdWxkIGNh
bGwgYW4gaW50ZXJuYWwgdmVyc2lvbiBvZiBzdWJzdHIuIE1ha2Ugc3VyZSB0aGF0CisgICAgLy8g
aXQncyBub3QgY2FsbGluZyB0aGUgcHVibGljIHZlcnNpb24gd2hpY2ggY2FuIGJlIG92ZXJyaWRk
ZW4uCisgICAgU3RyaW5nLnByb3RvdHlwZS5zdWJzdHIgPSBmdW5jdGlvbihzdGFydCwgbGVuZ3Ro
KSB7CisgICAgICAgIHRocm93IEVycm9yKCJTaG91bGQgbm90IGNhbGwgb3ZlcnJpZGRlbiBzdWJz
dHIiKTsKKyAgICB9CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNh
bGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBSZWdFeHAucHJvdG90
eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAgYXNzZXJ0KGFjY2Vz
c2VzID09ICJleGVjLGV4ZWMsZXhlYyxleGVjLGV4ZWMsZXhlYyIsICJQcm9wZXJ0eSBhY2Nlc3Nl
cyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGws
bWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuanMJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdl
eHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNDA3IEBACisvL0AgcnVuRGVmYXVsdAorCitmdW5jdGlvbiBhc3NlcnQo
dGVzdGVkVmFsdWUsIG1zZykgeworICAgIGlmICghdGVzdGVkVmFsdWUpCisgICAgICAgIHRocm93
IEVycm9yKG1zZyk7Cit9CisKKy8vIFN1YmNsYXNzIHdpdGggb3ZlcnJpZGRlbiBbQEBzcGVjaWVz
XTogVGVzdGluZyBFUzYgMjEuMi41LjExOiA0LiBMZXQgQyBiZSA/IFNwZWNpZXNDb25zdHJ1Y3Rv
cihyeCwgJVJlZ0V4cCUpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsK
KyAgICBjbGFzcyBUZXN0UmVnRXhwIGV4dGVuZHMgUmVnRXhwIHsgfQorICAgIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShUZXN0UmVnRXhwLCBTeW1ib2wuc3BlY2llcywgeworICAgICAgICB2YWx1ZTog
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKFN5bWJvbC5zcGVjaWVzLnRv
U3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIC9pdC87CisgICAgICAgIH0KKyAgICB9KTsK
KyAgICBsZXQgb2JqID0gbmV3IFRlc3RSZWdFeHA7CisgICAgbGV0IGVycm9yU3RyOworCisgICAg
YXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJv
cHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNh
bGwob2JqLCAic3BsaXRtZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiU3ltYm9sKFN5bWJv
bC5zcGVjaWVzKSIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24i
KTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsK
K30pKCk7CisKKy8vIFJlZ0V4cCBzdWJjbGFzcyB3aXRoIGNvbnN0cnVjdG9yOiBUZXN0aW5nIEVT
NiAyMS4yLjUuMTE6IDQuIExldCBDIGJlID8gU3BlY2llc0NvbnN0cnVjdG9yKHJ4LCAlUmVnRXhw
JSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGNsYXNzIFRl
c3RSZWdFeHAgZXh0ZW5kcyBSZWdFeHAgeworICAgICAgICBjb25zdHJ1Y3RvcihzdHIpIHsKKyAg
ICAgICAgICAgIHN1cGVyKHN0cik7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJjb25zdHJ1
Y3RvciIpOworICAgICAgICB9CisgICAgfQorICAgIGxldCBvYmogPSBuZXcgVGVzdFJlZ0V4cCgi
aXQiKTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiY29uc3RydWN0b3IiLCAidW5leHBlY3Rl
ZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gUmVnRXhwLnBy
b3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgIGFzc2VydChh
Y2Nlc3NlcyA9PSAiY29uc3RydWN0b3IsY29uc3RydWN0b3IiLCAiUHJvcGVydHkgYWNjZXNzZXMg
ZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1l
IiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyBBbiBvYmplY3Qgd2l0aCBzcGVj
aWVzIGNvbnN0cnVjdG9yOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDQuIExldCBDIGJlID8gU3Bl
Y2llc0NvbnN0cnVjdG9yKHJ4LCAlUmVnRXhwJSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBh
Y2Nlc3NlcyA9IFtdOworICAgIGxldCBvYmogPSB7IGNvbnN0cnVjdG9yOiB7fSB9OworICAgIG9i
ai5jb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc10gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgYWNj
ZXNzZXMucHVzaCgiY29uc3RydWN0b3IiKTsKKyAgICAgICAgcmV0dXJuIC9pdC87CisgICAgfTsK
KworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlk
ZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNw
bGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImNvbnN0
cnVjdG9yIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOwor
ICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSko
KTsKKworLy8gUmVnRXhwIG9iamVjdCB3aXRoIG92ZXJyaWRkZW4gZmxhZ3M6IFRlc3RpbmcgRVM2
IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIp
KS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZsYWdzID0gWyAiZmxhZ3MiLCAiZ2xvYmFsIiwg
Imlnbm9yZUNhc2UiLCAibXVsdGlsaW5lIiwgInN0aWNreSIsICJ1bmljb2RlIiBdOworICAgIGxl
dCBmbGFnVmFsdWVzID0gWyAiIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlIF07
CisgICAgZm9yIChsZXQgaW5kZXggaW4gZmxhZ3MpIHsKKyAgICAgICAgKGZ1bmN0aW9uKGZsYWcs
IGZsYWdWYWx1ZSkgeworICAgICAgICAgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgICAgICAg
ICBsZXQgb2JqID0gL2l0LzsKKyAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmos
IGZsYWcsIHsKKyAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgICAgICBhY2Nlc3Nlcy5wdXNoKGZsYWcpOworICAgICAgICAgICAgICAgICAgICBwYXNzZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhc3NlcnQoYWNjZXNzZXMg
PT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgICAgICAg
ICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwg
InNwbGl0bWUiKTsKKyAgICAgICAgICAgIGFzc2VydChhY2Nlc3NlcyA9PSBmbGFnLCAiUHJvcGVy
dHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgICAgICAgICBhc3Nl
cnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKKyAgICAgICAgfSkg
KGZsYWdzW2luZGV4XSwgZmxhZ1ZhbHVlc1tpbmRleF0pOworICAgIH0KK30pKCk7CisKKy8vIFJl
Z0V4cCBzdWJjbGFzcyB3aXRoIG92ZXJyaWRkZW4gZmxhZ3MgaW4gc3ViY2xhc3MgbWV0aG9kOiBU
ZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4
LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBmbGFncyA9IFsgImZsYWdzIiwg
Imdsb2JhbCIsICJpZ25vcmVDYXNlIiwgIm11bHRpbGluZSIsICJzdGlja3kiLCAidW5pY29kZSIg
XTsKKyAgICBsZXQgZmxhZ1ZhbHVlcyA9IFsgIiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSBdOworICAgIGZvciAobGV0IGluZGV4IGluIGZsYWdzKSB7CisgICAgICAgIChmdW5j
dGlvbihmbGFnLCBmbGFnVmFsdWUpIHsKKyAgICAgICAgICAgIGxldCBhY2Nlc3NlcyA9IFtdOwor
ICAgICAgICAgICAgY2xhc3MgVGVzdFJlZ0V4cCBleHRlbmRzIFJlZ0V4cCB7CisgICAgICAgICAg
ICAgICAgZ2V0IFtmbGFnXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgYWNjZXNzZXMucHVzaChm
bGFnKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZsYWdWYWx1ZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICAgICAgbGV0IG9iaiA9IG5ldyBUZXN0UmVn
RXhwKC9pdC8pOworCisgICAgICAgICAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVj
dGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgICAgICAgICAgbGV0IHJlc3VsdCA9
IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAg
ICAgICAgICAgIGFzc2VydChhY2Nlc3NlcyA9PSBmbGFnLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8g
bm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgICAgICAgICBhc3NlcnQocmVzdWx0ID09ICJz
cGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKKworICAgICAgICB9KSAoZmxhZ3NbaW5kZXhd
LCBmbGFnVmFsdWVzW2luZGV4XSk7CisgICAgfQorfSkoKTsKKworLy8gUmVnRXhwIHN1YmNsYXNz
IHdpdGggb3ZlcnJpZGRlbiBmbGFncyB1c2luZyBPYmplY3QuZGVmaW5lUHJvcGVydHk6IFRlc3Rp
bmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJm
bGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZsYWdzID0gWyAiZmxhZ3MiLCAiZ2xv
YmFsIiwgImlnbm9yZUNhc2UiLCAibXVsdGlsaW5lIiwgInN0aWNreSIsICJ1bmljb2RlIiBdOwor
ICAgIGxldCBmbGFnVmFsdWVzID0gWyAiIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlIF07CisgICAgZm9yIChsZXQgaW5kZXggaW4gZmxhZ3MpIHsKKyAgICAgICAgKGZ1bmN0aW9u
KGZsYWcsIGZsYWdWYWx1ZSkgeworICAgICAgICAgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAg
ICAgICAgICBjbGFzcyBUZXN0UmVnRXhwIGV4dGVuZHMgUmVnRXhwIHsgfTsKKyAgICAgICAgICAg
IGxldCBvYmogPSBuZXcgVGVzdFJlZ0V4cCgvaXQvKTsKKworICAgICAgICAgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KG9iaiwgZmxhZywgeworICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goZmxhZyk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmbGFnVmFsdWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQg
Y2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgICAgICAgICBsZXQgcmVzdWx0ID0gUmVn
RXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgICAg
ICAgICAgYXNzZXJ0KGFjY2Vzc2VzID09IGZsYWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3Qg
bWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICAgICAgICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxt
ZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworCisgICAgICAgIH0pIChmbGFnc1tpbmRleF0sIGZs
YWdWYWx1ZXNbaW5kZXhdKTsKKyAgICB9Cit9KSgpOworCisvLyBBbnkgb2JqZWN0IHdpdGggc3Bl
Y2llcyBjb25zdHJ1Y3RvcjogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUg
PyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQg
YWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb2JqID0geyBjb25zdHJ1Y3Rvcjoge30gfTsKKyAgICBv
YmouY29uc3RydWN0b3JbU3ltYm9sLnNwZWNpZXNdID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGFj
Y2Vzc2VzLnB1c2goImNvbnN0cnVjdG9yIik7CisgICAgICAgIHJldHVybiAvaXQvOworICAgIH07
CisKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCAiZmxhZ3MiLCB7CisgICAgICAgIGdl
dDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJmbGFncyIpOworICAg
ICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhc3NlcnQoYWNj
ZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAg
IGxldCByZXN1bHQgPSBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJz
cGxpdG1lIik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJmbGFncyxjb25zdHJ1Y3RvciIsICJQ
cm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQo
cmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIEFu
eSBvYmplY3Qgd2l0aCBjdXN0b20gcHJvdG90eXBlOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUu
IExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24g
KCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGxldCBUZXN0UmVnRXhwUHJvdG8gPSB7
CisgICAgICAgIGdldCBmbGFncygpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goImZsYWdz
Iik7CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0sCisgICAgICAgIHRvU3RyaW5n
KCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgidG9TdHJpbmciKTsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLl9yZWdleC50b1N0cmluZygpOworICAgICAgICB9LAorICAgICAgICBnZXQg
c291cmNlKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgic291cmNlIik7CisgICAgICAg
ICAgICByZXR1cm4gdGhpcy5fcmVnZXguc291cmNlOworICAgICAgICB9CisgICAgfQorICAgIFRl
c3RSZWdFeHBQcm90by5fX3Byb3RvX18gPSBSZWdFeHAucHJvdG90eXBlOworCisgICAgbGV0IFRl
c3RSZWdFeHAgPSBmdW5jdGlvbihyZWdleCkgeworICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJjb25z
dHJ1Y3RvciIpOworICAgICAgICB0aGlzLl9yZWdleCA9IG5ldyBSZWdFeHAocmVnZXgpOworICAg
IH0KKyAgICBUZXN0UmVnRXhwLnByb3RvdHlwZSA9IFRlc3RSZWdFeHBQcm90bzsKKyAgICBUZXN0
UmVnRXhwUHJvdG8uY29uc3RydWN0b3IgPSBUZXN0UmVnRXhwOworCisgICAgbGV0IG9iaiA9IG5l
dyBUZXN0UmVnRXhwKC9pdC8pOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJjb25zdHJ1Y3Rv
ciIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1
bHQgPSBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7
CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJjb25zdHJ1Y3RvcixmbGFncyxzb3VyY2UiLCAiUHJv
cGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJl
c3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyAyIGxl
dmVscyBvZiBzdWJjbGFzc2VzOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBi
ZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxl
dCBhY2Nlc3NlcyA9IFtdOworCisgICAgY2xhc3MgUmVnRXhwQiBleHRlbmRzIFJlZ0V4cCB7Cisg
ICAgICAgIGdldCBmbGFncygpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goImZsYWdzIik7
CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICB9CisgICAgY2xhc3MgUmVn
RXhwQyBleHRlbmRzIFJlZ0V4cEIgeyB9CisKKyAgICBhc3NlcnQoUmVnRXhwQi5fX3Byb3RvX18g
PT0gUmVnRXhwKTsKKyAgICBhc3NlcnQoUmVnRXhwQy5fX3Byb3RvX18gPT0gUmVnRXhwQik7CisK
KyAgICBsZXQgb2JqID0gbmV3IFJlZ0V4cEMoL2l0Lyk7CisKKyAgICBhc3NlcnQoYWNjZXNzZXMg
PT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCBy
ZXN1bHQgPSBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1l
Iik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJmbGFncyIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBk
byBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUi
LCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIDIgbGV2ZWxzIG9mIHN1YmNsYXNz
ZXMgd2l0aCBzdWJzdGl0dXRlZCBwcm90b3R5cGUgYmVmb3JlIGluc3RhbnRpYXRpb246IFRlc3Rp
bmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJm
bGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisKKyAgICBj
bGFzcyBCIGV4dGVuZHMgUmVnRXhwIHsgfQorICAgIGNsYXNzIEMgZXh0ZW5kcyBCIHsgfQorCisg
ICAgYXNzZXJ0KEIuX19wcm90b19fID09PSBSZWdFeHApOworICAgIGFzc2VydChDLl9fcHJvdG9f
XyA9PT0gQik7CisgICAgYXNzZXJ0KEIucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gUmVnRXhwLnBy
b3RvdHlwZSk7CisgICAgYXNzZXJ0KEMucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gQi5wcm90b3R5
cGUpOworCisgICAgbGV0IFggPSBmdW5jdGlvbiAoKSB7fQorICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShYLnByb3RvdHlwZSwgImZsYWdzIiwgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgiZmxhZ3MiKTsKKyAgICAgICAgICAgIHJldHVybiAi
IjsKKyAgICAgICAgfQorICAgIH0pOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShYLnByb3Rv
dHlwZSwgImV4ZWMiLCB7CisgICAgICAgIHZhbHVlOiBmdW5jdGlvbihzdHIpIHsKKyAgICAgICAg
ICAgIGFjY2Vzc2VzLnB1c2goImV4ZWMiKTsKKyAgICAgICAgICAgIHZhciBtYXRjaFJlc3VsdCA9
IC9pdC95LmV4ZWMoc3RyLnN1YnN0cih0aGlzLmxhc3RJbmRleCkpOworICAgICAgICAgICAgaWYg
KG1hdGNoUmVzdWx0KQorICAgICAgICAgICAgICAgIHRoaXMubGFzdEluZGV4ICs9IDI7IC8vIGxl
bmd0aCBvZiAiaXQiLgorICAgICAgICAgICAgcmV0dXJuIG1hdGNoUmVzdWx0OworICAgICAgICB9
CisgICAgfSk7CisKKyAgICAvLyBNb25rZXkgd2l0aCB0aGUgcHJvdG90eXBlIGNoYWluIGJlZm9y
ZSBpbnN0YW50aWF0aW5nIEMuCisgICAgWC5fX3Byb3RvX18gPSBSZWdFeHA7CisgICAgWC5wcm90
b3R5cGUuX19wcm90b19fID0gUmVnRXhwLnByb3RvdHlwZTsKKyAgICBDLl9fcHJvdG9fXyA9IFg7
CisgICAgQy5wcm90b3R5cGUuX19wcm90b19fID0gWC5wcm90b3R5cGU7CisKKyAgICBhc3NlcnQo
WC5fX3Byb3RvX18gPT09IFJlZ0V4cCk7CisgICAgYXNzZXJ0KEMuX19wcm90b19fID09PSBYKTsK
KyAgICBhc3NlcnQoWC5wcm90b3R5cGUuX19wcm90b19fID09PSBSZWdFeHAucHJvdG90eXBlKTsK
KyAgICBhc3NlcnQoQy5wcm90b3R5cGUuX19wcm90b19fID09PSBYLnByb3RvdHlwZSk7CisKKyAg
ICBsZXQgb2JqID0gbmV3IEM7CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVj
dGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBSZWdFeHAu
cHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAgYXNzZXJ0
KGFjY2Vzc2VzID09ICJmbGFncyxleGVjLGV4ZWMsZXhlYyxleGVjLGV4ZWMsZXhlYyIsICJQcm9w
ZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVz
dWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIDIgbGV2
ZWxzIG9mIHN1YmNsYXNzZXMgd2l0aCBzdWJzdGl0dXRlZCBwcm90b3R5cGUgYWZ0ZXIgaW5zdGFu
dGlhdGlvbjogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmlu
Zyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMg
PSBbXTsKKworICAgIGNsYXNzIEIgZXh0ZW5kcyBSZWdFeHAgeyB9CisgICAgY2xhc3MgQyBleHRl
bmRzIEIgeyB9CisKKyAgICBhc3NlcnQoQi5fX3Byb3RvX18gPT09IFJlZ0V4cCk7CisgICAgYXNz
ZXJ0KEMuX19wcm90b19fID09PSBCKTsKKyAgICBhc3NlcnQoQi5wcm90b3R5cGUuX19wcm90b19f
ID09PSBSZWdFeHAucHJvdG90eXBlKTsKKyAgICBhc3NlcnQoQy5wcm90b3R5cGUuX19wcm90b19f
ID09PSBCLnByb3RvdHlwZSk7CisKKyAgICBsZXQgWCA9IGZ1bmN0aW9uICgpIHt9CisgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KFgucHJvdG90eXBlLCAiZmxhZ3MiLCB7CisgICAgICAgIGdldDog
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJmbGFncyIpOworICAgICAg
ICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisgICAgfSk7CisgICAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KFgucHJvdG90eXBlLCAiZXhlYyIsIHsKKyAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHN0
cikgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgiZXhlYyIpOworICAgICAgICAgICAgdmFy
IG1hdGNoUmVzdWx0ID0gL2l0L3kuZXhlYyhzdHIuc3Vic3RyKHRoaXMubGFzdEluZGV4KSk7Cisg
ICAgICAgICAgICBpZiAobWF0Y2hSZXN1bHQpCisgICAgICAgICAgICAgICAgdGhpcy5sYXN0SW5k
ZXggKz0gMjsgLy8gbGVuZ3RoIG9mICJpdCIuCisgICAgICAgICAgICByZXR1cm4gbWF0Y2hSZXN1
bHQ7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIC8vIEluc3RhbnRpYXRlIEMgYmVmb3JlIG1v
bmtleWluZyB3aXRoIHRoZSBwcm90b3R5cGUgY2hhaW4uCisgICAgbGV0IG9iaiA9IG5ldyBDKCk7
CisKKyAgICBYLl9fcHJvdG9fXyA9IFJlZ0V4cDsKKyAgICBYLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBSZWdFeHAucHJvdG90eXBlOworICAgIEMuX19wcm90b19fID0gWDsKKyAgICBDLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBYLnByb3RvdHlwZTsKKworICAgIGFzc2VydChYLl9fcHJvdG9fXyA9PT0g
UmVnRXhwKTsKKyAgICBhc3NlcnQoQy5fX3Byb3RvX18gPT09IFgpOworICAgIGFzc2VydChYLnBy
b3RvdHlwZS5fX3Byb3RvX18gPT09IFJlZ0V4cC5wcm90b3R5cGUpOworICAgIGFzc2VydChDLnBy
b3RvdHlwZS5fX3Byb3RvX18gPT09IFgucHJvdG90eXBlKTsKKworICAgIGFzc2VydChhY2Nlc3Nl
cyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0
IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0
bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImZsYWdzLGV4ZWMsZXhlYyxleGVjLGV4ZWMs
ZXhlYyxleGVjIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIp
OworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOwor
fSkoKTsKKworLy8gMiBsZXZlbHMgb2Ygc3ViY2xhc3NlcyB3aXRoIHByb3hpZWQgcHJvdG90eXBl
OiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0
KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOwor
CisgICAgY2xhc3MgQiBleHRlbmRzIFJlZ0V4cCB7IH07CisKKyAgICBhc3NlcnQoQi5fX3Byb3Rv
X18gPT09IFJlZ0V4cCk7CisgICAgYXNzZXJ0KEIucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gUmVn
RXhwLnByb3RvdHlwZSk7CisKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkoUmVnRXhwLnByb3Rv
dHlwZSwgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKG9iaiwgcHJvcCkgeworICAgICAgICAgICAg
YWNjZXNzZXMucHVzaChwcm9wLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgaWYgKHByb3AgPT09
ICJleGVjIikgeworICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihzdHIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgiaW5fZXhlYyIpOworICAgICAgICAgICAgICAg
ICAgICB2YXIgbWF0Y2hSZXN1bHQgPSAvaXQveS5leGVjKHN0ci5zdWJzdHIodGhpcy5sYXN0SW5k
ZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoUmVzdWx0KQorICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5sYXN0SW5kZXggKz0gMjsgLy8gbGVuZ3RoIG9mICJpdCIuCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaFJlc3VsdDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gb2JqW3Byb3BdOworICAgICAgICB9Cisg
ICAgfSk7CisgICAgQi5wcm90b3R5cGUuX19wcm90b19fID0gcHJveHk7CisKKyAgICBsZXQgb2Jq
ID0gbmV3IEIoKTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2Fs
bCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5
cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNz
ZXMgPT0gImZsYWdzLFN5bWJvbChTeW1ib2wubWF0Y2gpLGV4ZWMsaW5fZXhlYyxleGVjLGluX2V4
ZWMsZXhlYyxpbl9leGVjLGV4ZWMsaW5fZXhlYyxleGVjLGluX2V4ZWMsZXhlYyxpbl9leGVjIiwg
IlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2Vy
dChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKKworLy8g
UmVnRXhwIHN1YmNsYXNzIHdpdGggb3ZlcnJpZGRlbiBleGVjOiBUZXN0aW5nIEVTNiAyMS4yLjUu
MTE6IDE5LmIuIExldCB6IGJlID8gUmVnRXhwRXhlYyhzcGxpdHRlciwgUykuCisoZnVuY3Rpb24g
KCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGNsYXNzIFRlc3RSZWdFeHAgZXh0ZW5k
cyBSZWdFeHAgeworICAgICAgICBleGVjKHN0cikgeworICAgICAgICAgICAgYWNjZXNzZXMucHVz
aCgiZXhlYyIpOworICAgICAgICAgICAgcmV0dXJuIFJlZ0V4cC5wcm90b3R5cGUuZXhlYy5jYWxs
KHRoaXMsIHN0cik7CisgICAgICAgIH0KKyAgICB9OworICAgIGxldCBvYmogPSBuZXcgVGVzdFJl
Z0V4cCgvaXQvKTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2Fs
bCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5
cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNz
ZXMgPT0gImV4ZWMsZXhlYyxleGVjLGV4ZWMsZXhlYyxleGVjIiwgIlByb3BlcnR5IGFjY2Vzc2Vz
IGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxt
ZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKKworLy8gUHJveGllZCBSZWdFeHAgb2Jz
ZXJ2aW5nIGV2ZXJ5IGdldC4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107
CisgICAgbGV0IHJlZ2V4cCA9IG5ldyBSZWdFeHAoL2l0Lyk7CisgICAgbGV0IHByb3h5ID0gbmV3
IFByb3h5KHJlZ2V4cCwgeworICAgICAgICBnZXQob2JqLCBwcm9wKSB7CisgICAgICAgICAgICBh
Y2Nlc3Nlcy5wdXNoKHByb3AudG9TdHJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm4gb2JqW3By
b3BdOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1
bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBS
ZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChwcm94eSwgInNwbGl0bWUiKTsKKyAg
ICAvLyBOb3RlOiBAQHNwbGl0IGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFJlZ0V4cCB1
c2luZyBpdHMgQEBzcGVjaWVzLCBhbmQgcGVyZm9ybXMKKyAgICAvLyB0aGUgc3BsaXQgb3BlcmF0
aW9uIHdpdGggdGhhdCBuZXcgaW5zdGFuY2UuIEhlbmNlLCB0aGUgcHJveHkgaXMgb25seSBhYmxl
IHRvIG9ic2VydmUKKyAgICAvLyBnZXRzIHVwIHRvIHRoZSBjcmVhdGlvbiBvZiB0aGUgbmV3IGlu
c3RhbmNlLgorICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiY29uc3RydWN0b3IsZmxhZ3MsU3ltYm9s
KFN5bWJvbC5tYXRjaCksc291cmNlIiwKKyAgICAgICAgIlByb3h5IG5vdCBhYmxlIHRvIG9ic2Vy
dmUgc29tZSBnZXRzIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0
ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyBQcm94aWVkIFJlZ0V4cCAod2l0aG91dCBAQG1hdGNo
KSBvYnNlcnZpbmcgZXZlcnkgZ2V0LgorLy8gVGhpcyBpcyB0byBmb3JjZSB0aGUgUmVnRXhwIEBz
cGVjaWVzIGNvbnN0cnVjdG9yIHRvIGFjY2VzcyBzb3VyY2UuCisoZnVuY3Rpb24gKCkgeworICAg
IGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGxldCByZWdleHAgPSBuZXcgUmVnRXhwKC9pdC8pOwor
ICAgIGxldCBwcm94eSA9IG5ldyBQcm94eShyZWdleHAsIHsKKyAgICAgICAgZ2V0KG9iaiwgcHJv
cCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaChwcm9wLnRvU3RyaW5nKCkpOworICAgICAg
ICAgICAgaWYgKHByb3AgPT0gU3ltYm9sLm1hdGNoKQorICAgICAgICAgICAgICAgIHJldHVybiB1
bmRlZmluZWQ7CisgICAgICAgICAgICByZXR1cm4gb2JqW3Byb3BdOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3Zl
cnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBSZWdFeHAucHJvdG90eXBlW1N5bWJv
bC5zcGxpdF0uY2FsbChwcm94eSwgInNwbGl0bWUiKTsKKyAgICAvLyBOb3RlOiBAQHNwbGl0IGNy
ZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFJlZ0V4cCB1c2luZyBpdHMgQEBzcGVjaWVzLCBh
bmQgcGVyZm9ybXMKKyAgICAvLyB0aGUgc3BsaXQgb3BlcmF0aW9uIHdpdGggdGhhdCBuZXcgaW5z
dGFuY2UuIEhlbmNlLCB0aGUgcHJveHkgaXMgb25seSBhYmxlIHRvIG9ic2VydmUKKyAgICAvLyBn
ZXRzIHVwIHRvIHRoZSBjcmVhdGlvbiBvZiB0aGUgbmV3IGluc3RhbmNlLgorICAgIGFzc2VydChh
Y2Nlc3NlcyA9PSAiY29uc3RydWN0b3IsZmxhZ3MsU3ltYm9sKFN5bWJvbC5tYXRjaCksU3ltYm9s
KFN5bWJvbC50b1ByaW1pdGl2ZSksdG9TdHJpbmcsc291cmNlLGZsYWdzIiwKKyAgICAgICAgIlBy
b3h5IG5vdCBhYmxlIHRvIG9ic2VydmUgc29tZSBnZXRzIik7CisgICAgLy8gVGhlIG5ldyBpbnN0
YW5jZSBvZiB0aGUgUmVnRXhwIHdvdWxkIGhhdmUgYmVlbiBjb25zdHJ1Y3RlZCB3aXRoIHRoZSBw
YXR0ZXJuIGZyb20KKyAgICAvLyB0aGUgcHJveHkgdG9TdHJpbmcoKSBpLmUuICJcL2x0XC8iIGlu
c3RlYWQgb2Ygc291cmNlLCBiZWNhdXNlIHRoZSBwcm94eSBpcyBhbgorICAgIC8vIG9iamVjdCB3
aXRob3V0IGEgW0BAbWF0Y2hdIHByb3BlcnR5LgorICAgIGFzc2VydChyZXN1bHQgPT0gInNwbGl0
bWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKK2xldCByZXN1bHQgPSBSZWdFeHAu
cHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbCgvaXQvLCAic3BsaXRtZSIpOwpJbmRleDogTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czIuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
Mi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI2IEBACisvL0AgcnVuRGVmYXVsdAorCitm
dW5jdGlvbiBhc3NlcnQodGVzdGVkVmFsdWUsIG1zZykgeworICAgIGlmICghdGVzdGVkVmFsdWUp
CisgICAgICAgIHRocm93IEVycm9yKG1zZyk7Cit9CisKKy8vIFJlZ0V4cCB3aXRoIG92ZXJyaWRk
ZW4gW0BAc3BlY2llc106IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNC4gTGV0IEMgYmUgPyBTcGVj
aWVzQ29uc3RydWN0b3IocngsICVSZWdFeHAlKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFj
Y2Vzc2VzID0gW107CisgICAgbGV0IG9yaWdEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihSZWdFeHAsIFN5bWJvbC5zcGVjaWVzKTsKKyAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkoUmVnRXhwLCBTeW1ib2wuc3BlY2llcywgeworICAgICAgICB2YWx1ZTogZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKFN5bWJvbC5zcGVjaWVzLnRvU3RyaW5n
KCkpOworICAgICAgICAgICAgcmV0dXJuIC9pdC87CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IGxldCBvYmogPSBuZXcgUmVnRXhwOworICAgIGxldCBlcnJvclN0cjsKKworICAgIGFzc2VydChh
Y2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7Cisg
ICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmopOworICAgIGFzc2VydChhY2Nlc3Nl
cyA9PSAiU3ltYm9sKFN5bWJvbC5zcGVjaWVzKSIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3Qg
bWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5l
eHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
My1mbGFncy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFn
cy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1bmN0
aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAg
ICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8gUmVnRXhwLnByb3RvdHlwZSB3aXRoIG92
ZXJyaWRkZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8g
VG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZs
YWcgPSAiZmxhZ3MiOworICAgIGxldCBmbGFnVmFsdWUgPSAiIjsKKworICAgIGxldCBhY2Nlc3Nl
cyA9IFtdOworICAgIGxldCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgZmxhZyk7CisKKyAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkoUmVnRXhwLnByb3RvdHlwZSwgZmxhZywgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgIHJldHVybiBm
bGFnVmFsdWU7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0gL2l0LzsKKworICAg
IGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHBy
b3BzIik7CisgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmopOworICAgIGFzc2Vy
dChhY2Nlc3NlcyA9PSBmbGFnLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVj
dGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVz
dWx0Iik7Cit9KSgpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmlu
Zy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC5qcwkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisvL0AgcnVuRGVmYXVsdAorCitmdW5jdGlvbiBhc3Nl
cnQodGVzdGVkVmFsdWUsIG1zZykgeworICAgIGlmICghdGVzdGVkVmFsdWUpCisgICAgICAgIHRo
cm93IEVycm9yKG1zZyk7Cit9CisKKy8vIFJlZ0V4cC5wcm90b3R5cGUgd2l0aCBvdmVycmlkZGVu
IGZsYWdzOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5n
KD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBmbGFnID0gImds
b2JhbCI7CisgICAgbGV0IGZsYWdWYWx1ZSA9IGZhbHNlOworCisgICAgbGV0IGFjY2Vzc2VzID0g
W107CisgICAgbGV0IG9yaWdEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihSZWdFeHAucHJvdG90eXBlLCBmbGFnKTsKKworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShSZWdFeHAucHJvdG90eXBlLCBmbGFnLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKGZsYWcpOworICAgICAgICAgICAgcmV0dXJuIGZsYWdW
YWx1ZTsKKyAgICAgICAgfQorICAgIH0pOworICAgIGxldCBvYmogPSAvaXQvOworCisgICAgYXNz
ZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMi
KTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7CisgICAgYXNzZXJ0KGFj
Y2Vzc2VzID09IGZsYWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRp
b24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQi
KTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJp
bmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmlu
Zy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UuanMJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJp
bmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1bmN0
aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAg
ICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8gUmVnRXhwLnByb3RvdHlwZSB3aXRoIG92
ZXJyaWRkZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8g
VG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZs
YWcgPSAiaWdub3JlQ2FzZSI7CisgICAgbGV0IGZsYWdWYWx1ZSA9IGZhbHNlOworCisgICAgbGV0
IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9yaWdEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBlLCBmbGFnKTsKKworICAgIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShSZWdFeHAucHJvdG90eXBlLCBmbGFnLCB7CisgICAgICAgIGdldDogZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKGZsYWcpOworICAgICAgICAgICAg
cmV0dXJuIGZsYWdWYWx1ZTsKKyAgICAgICAgfQorICAgIH0pOworICAgIGxldCBvYmogPSAvaXQv
OworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJy
aWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7Cisg
ICAgYXNzZXJ0KGFjY2Vzc2VzID09IGZsYWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0
Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBl
Y3RlZCByZXN1bHQiKTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1t
dWx0aWxpbmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVs
dGlsaW5lLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVs
dGlsaW5lLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8vQCBydW5EZWZhdWx0
CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRW
YWx1ZSkKKyAgICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8gUmVnRXhwLnByb3RvdHlw
ZSB3aXRoIG92ZXJyaWRkZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZs
YWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7Cisg
ICAgbGV0IGZsYWcgPSAibXVsdGlsaW5lIjsKKyAgICBsZXQgZmxhZ1ZhbHVlID0gZmFsc2U7CisK
KyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb3JpZ0Rlc2NyaXB0b3IgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcpOworCisgICAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcsIHsKKyAgICAgICAg
Z2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goZmxhZyk7CisgICAg
ICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAgICB9CisgICAgfSk7CisgICAgbGV0IG9i
aiA9IC9pdC87CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwg
dG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQo
b2JqKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxhZywgIlByb3BlcnR5IGFjY2Vzc2VzIGRv
IG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIs
ICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMzLXN0aWNreS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
My1zdGlja3kuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1z
dGlja3kuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorLy9AIHJ1bkRlZmF1bHQK
KworZnVuY3Rpb24gYXNzZXJ0KHRlc3RlZFZhbHVlLCBtc2cpIHsKKyAgICBpZiAoIXRlc3RlZFZh
bHVlKQorICAgICAgICB0aHJvdyBFcnJvcihtc2cpOworfQorCisvLyBSZWdFeHAucHJvdG90eXBl
IHdpdGggb3ZlcnJpZGRlbiBmbGFnczogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxh
Z3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAg
ICBsZXQgZmxhZyA9ICJzdGlja3kiOworICAgIGxldCBmbGFnVmFsdWUgPSBmYWxzZTsKKworICAg
IGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGxldCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgZmxhZyk7CisKKyAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLnByb3RvdHlwZSwgZmxhZywgeworICAgICAgICBnZXQ6
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAg
ICAgIHJldHVybiBmbGFnVmFsdWU7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0g
L2l0LzsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBv
dmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmop
OworICAgIGFzc2VydChhY2Nlc3NlcyA9PSBmbGFnLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90
IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVu
ZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMtdW5pY29kZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11
bmljb2RlLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5p
Y29kZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisvL0AgcnVuRGVmYXVsdAor
CitmdW5jdGlvbiBhc3NlcnQodGVzdGVkVmFsdWUsIG1zZykgeworICAgIGlmICghdGVzdGVkVmFs
dWUpCisgICAgICAgIHRocm93IEVycm9yKG1zZyk7Cit9CisKKy8vIFJlZ0V4cC5wcm90b3R5cGUg
d2l0aCBvdmVycmlkZGVuIGZsYWdzOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFn
cyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAg
IGxldCBmbGFnID0gInVuaWNvZGUiOworICAgIGxldCBmbGFnVmFsdWUgPSBmYWxzZTsKKworICAg
IGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGxldCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgZmxhZyk7CisKKyAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLnByb3RvdHlwZSwgZmxhZywgeworICAgICAgICBnZXQ6
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAg
ICAgIHJldHVybiBmbGFnVmFsdWU7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0g
L2l0LzsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBv
dmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmop
OworICAgIGFzc2VydChhY2Nlc3NlcyA9PSBmbGFnLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90
IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVu
ZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQuanMJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDMyIEBACisvL0AgcnVuRGVmYXVsdAorCitmdW5jdGlvbiBhc3NlcnQodGVzdGVk
VmFsdWUsIG1zZykgeworICAgIGlmICghdGVzdGVkVmFsdWUpCisgICAgICAgIHRocm93IEVycm9y
KG1zZyk7Cit9CisKKy8vIFJlZ0V4cC5wcm90b3R5cGUgd2l0aCBvdmVycmlkZGVuIGV4ZWM6IFRl
c3RpbmcgRVM2IDIxLjIuNS4xMTogMTkuYi4gTGV0IHogYmUgPyBSZWdFeHBFeGVjKHNwbGl0dGVy
LCBTKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9y
aWdEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJv
dG90eXBlLCAiZXhlYyIpOworICAgIGxldCBvcmlnRXhlYyA9IG9yaWdEZXNjcmlwdG9yLnZhbHVl
OworCisgICAgbGV0IG9iaiA9IC9pdC87CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4
cC5wcm90b3R5cGUsICJleGVjIiwgeworICAgICAgICB2YWx1ZTogZnVuY3Rpb24oc3RyKSB7Cisg
ICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJleGVjIik7CisgICAgICAgICAgICByZXR1cm4gb3Jp
Z0V4ZWMuY2FsbCh0aGlzLCBzdHIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICAvLyBUaGUg
QEBzcGxpdCBzbG93IHBhdGggc2hvdWxkIGNhbGwgYW4gaW50ZXJuYWwgdmVyc2lvbiBvZiBzdWJz
dHIuIE1ha2Ugc3VyZSB0aGF0CisgICAgLy8gaXQncyBub3QgY2FsbGluZyB0aGUgcHVibGljIHZl
cnNpb24gd2hpY2ggY2FuIGJlIG92ZXJyaWRkZW4uCisgICAgU3RyaW5nLnByb3RvdHlwZS5zdWJz
dHIgPSBmdW5jdGlvbihzdGFydCwgbGVuZ3RoKSB7CisgICAgICAgIHRocm93IEVycm9yKCJTaG91
bGQgbm90IGNhbGwgb3ZlcnJpZGRlbiBzdWJzdHIiKTsKKyAgICB9CisKKyAgICBhc3NlcnQoYWNj
ZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAg
IGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQob2JqKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMg
PT0gImV4ZWMsZXhlYyxleGVjLGV4ZWMsZXhlYyxleGVjIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRv
IG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIs
ICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5qcwkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0NzUgQEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0
ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgRXJy
b3IobXNnKTsKK30KKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gVGVzdGlu
ZyB0aGUgc3RyaW5nIHRoYXQgd2UncmUgY2FsbGluZyBzcGxpdCBvbi4KKworLy8gUHJveGllZCBT
dHJpbmcgc3ViY2xhc3MuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOwor
ICAgIGNsYXNzIEV4dFN0cmluZyBleHRlbmRzIFN0cmluZyB7IH0KKyAgICB2YXIgb2JqID0gbmV3
IEV4dFN0cmluZygic3BsaXRtZSIpOworICAgIHZhciBwcm94eSA9IG5ldyBQcm94eShvYmosIHsK
KyAgICAgICAgZ2V0KG9iaiwgcHJvcCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaChwcm9w
LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgaWYgKHByb3AgPT09ICJ0b1N0cmluZyIpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGFj
Y2Vzc2VzLnB1c2goImluX3RvU3RyaW5nIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBv
YmoudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm4gb2JqW3Byb3BdOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhc3NlcnQo
YWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOwor
ICAgIGxldCByZXN1bHQgPSBTdHJpbmcucHJvdG90eXBlLnNwbGl0LmNhbGwocHJveHksICJpdCIp
OyAgICAKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIlN5bWJvbChTeW1ib2wudG9QcmltaXRpdmUp
LHRvU3RyaW5nLGluX3RvU3RyaW5nIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBl
eHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVk
IHJlc3VsdCIpOworfSkoKTsKKworLy8gT2JqZWN0IHRoYXQgbG9va3MgbGlrZSBhIHN0cmluZy4K
KyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgdmFyIG9iaiA9IHsK
KyAgICAgICAgW1N5bWJvbC50b1ByaW1pdGl2ZV0oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5w
dXNoKFN5bWJvbC50b1ByaW1pdGl2ZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIHJldHVybiAi
c3BsaXRtZSI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIs
ICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQg
PSBTdHJpbmcucHJvdG90eXBlLnNwbGl0LmNhbGwob2JqLCAiaXQiKTsgICAgCisgICAgYXNzZXJ0
KGFjY2Vzc2VzID09ICJTeW1ib2woU3ltYm9sLnRvUHJpbWl0aXZlKSIsICJQcm9wZXJ0eSBhY2Nl
c3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJz
cGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIE9iamVjdCB0aGF0IGxv
b2tzIGxpa2UgYSBzdHJpbmcuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtd
OworICAgIHZhciBvYmogPSB7CisgICAgICAgIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgYWNj
ZXNzZXMucHVzaCgidG9TdHJpbmciKTsKKyAgICAgICAgICAgIHJldHVybiAic3BsaXRtZSI7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVk
IGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBTdHJpbmcucHJv
dG90eXBlLnNwbGl0LmNhbGwob2JqLCAiaXQiKTsgICAgCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09
ICJ0b1N0cmluZyIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24i
KTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsK
K30pKCk7CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFRlc3RpbmcgdGhl
IHJlZ2V4cCBvYmplY3QgdGhhdCB3ZSdyZSBjYWxsaW5nIHNwbGl0IHdpdGguCisKKy8vIFN1YmNs
YXNzIHdpdGggb3ZlcnJpZGRlbiBbQEBzcGVjaWVzXTogVGVzdGluZyBFUzYgMjEuMi41LjExOiA0
LiBMZXQgQyBiZSA/IFNwZWNpZXNDb25zdHJ1Y3RvcihyeCwgJVJlZ0V4cCUpLgorKGZ1bmN0aW9u
ICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBjbGFzcyBUZXN0UmVnRXhwIGV4dGVu
ZHMgUmVnRXhwIHsgfQorICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShUZXN0UmVnRXhwLCBTeW1i
b2wuc3BlY2llcywgeworICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBh
Y2Nlc3Nlcy5wdXNoKFN5bWJvbC5zcGVjaWVzLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgcmV0
dXJuIC9pdC87CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0gbmV3IFRlc3RSZWdF
eHA7CisgICAgbGV0IGVycm9yU3RyOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5l
eHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gInNw
bGl0bWUiLnNwbGl0KG9iaik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJTeW1ib2woU3ltYm9s
LnNwZWNpZXMpIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIp
OworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOwor
fSkoKTsKKworLy8gUmVnRXhwIHN1YmNsYXNzIHdpdGggY29uc3RydWN0b3I6IFRlc3RpbmcgRVM2
IDIxLjIuNS4xMTogNC4gTGV0IEMgYmUgPyBTcGVjaWVzQ29uc3RydWN0b3IocngsICVSZWdFeHAl
KS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgY2xhc3MgVGVz
dFJlZ0V4cCBleHRlbmRzIFJlZ0V4cCB7CisgICAgICAgIGNvbnN0cnVjdG9yKHN0cikgeworICAg
ICAgICAgICAgc3VwZXIoc3RyKTsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goImNvbnN0cnVj
dG9yIik7CisgICAgICAgIH0KKyAgICB9CisgICAgbGV0IG9iaiA9IG5ldyBUZXN0UmVnRXhwKCJp
dCIpOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJjb25zdHJ1Y3RvciIsICJ1bmV4cGVjdGVk
IGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIu
c3BsaXQob2JqKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImNvbnN0cnVjdG9yLGNvbnN0cnVj
dG9yIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAg
IGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsK
KworLy8gQW4gb2JqZWN0IHdpdGggc3BlY2llcyBjb25zdHJ1Y3RvcjogVGVzdGluZyBFUzYgMjEu
Mi41LjExOiA0LiBMZXQgQyBiZSA/IFNwZWNpZXNDb25zdHJ1Y3RvcihyeCwgJVJlZ0V4cCUpLgor
KGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb2JqID0geyBj
b25zdHJ1Y3Rvcjoge30gfTsKKyAgICBvYmouY29uc3RydWN0b3JbU3ltYm9sLnNwZWNpZXNdID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIGFjY2Vzc2VzLnB1c2goImNvbnN0cnVjdG9yIik7CisgICAg
ICAgIHJldHVybiAvaXQvOworICAgIH07CisgICAgb2JqW1N5bWJvbC5zcGxpdF0gPSBmdW5jdGlv
bihzdHIsIGxpbWl0KSB7CisgICAgICAgIGFjY2Vzc2VzLnB1c2goU3ltYm9sLnNwbGl0LnRvU3Ry
aW5nKCkpOworICAgICAgICByZXR1cm4gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNh
bGwodGhpcywgc3RyLCBsaW1pdCk7CisgICAgfTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAi
IiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3Vs
dCA9ICJzcGxpdG1lIi5zcGxpdChvYmopOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiU3ltYm9s
KFN5bWJvbC5zcGxpdCksY29uc3RydWN0b3IiLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1h
dGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhw
ZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyBSZWdFeHAgb2JqZWN0IHdpdGggb3ZlcnJpZGRl
biBmbGFnczogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmlu
Zyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZmxhZ3MgPSBb
ICJmbGFncyIsICJnbG9iYWwiLCAiaWdub3JlQ2FzZSIsICJtdWx0aWxpbmUiLCAic3RpY2t5Iiwg
InVuaWNvZGUiIF07CisgICAgbGV0IGZsYWdWYWx1ZXMgPSBbICIiLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UgXTsKKyAgICBmb3IgKGxldCBpbmRleCBpbiBmbGFncykgeworICAg
ICAgICAoZnVuY3Rpb24oZmxhZywgZmxhZ1ZhbHVlKSB7CisgICAgICAgICAgICBsZXQgYWNjZXNz
ZXMgPSBbXTsKKyAgICAgICAgICAgIGxldCBvYmogPSAvaXQvOworICAgICAgICAgICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KG9iaiwgZmxhZywgeworICAgICAgICAgICAgICAgIGdldDogZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goZmxhZyk7CisgICAgICAg
ICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
bGFnVmFsdWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVu
IHByb3BzIik7CisgICAgICAgICAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7
CisgICAgICAgICAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxhZywgIlByb3BlcnR5IGFjY2Vzc2Vz
IGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgICAgICAgICAgYXNzZXJ0KHJlc3VsdCA9
PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7CisgICAgICAgIH0pIChmbGFnc1tpbmRl
eF0sIGZsYWdWYWx1ZXNbaW5kZXhdKTsKKyAgICB9Cit9KSgpOworCisvLyBSZWdFeHAgc3ViY2xh
c3Mgd2l0aCBvdmVycmlkZGVuIGZsYWdzIGluIHN1YmNsYXNzIG1ldGhvZDogVGVzdGluZyBFUzYg
MjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikp
LgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZmxhZ3MgPSBbICJmbGFncyIsICJnbG9iYWwiLCAi
aWdub3JlQ2FzZSIsICJtdWx0aWxpbmUiLCAic3RpY2t5IiwgInVuaWNvZGUiIF07CisgICAgbGV0
IGZsYWdWYWx1ZXMgPSBbICIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UgXTsK
KyAgICBmb3IgKGxldCBpbmRleCBpbiBmbGFncykgeworICAgICAgICAoZnVuY3Rpb24oZmxhZywg
ZmxhZ1ZhbHVlKSB7CisgICAgICAgICAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICAgICAgICAg
IGNsYXNzIFRlc3RSZWdFeHAgZXh0ZW5kcyBSZWdFeHAgeworICAgICAgICAgICAgICAgIGdldCBb
ZmxhZ10oKSB7CisgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goZmxhZyk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmbGFnVmFsdWU7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIGxldCBvYmogPSBuZXcgVGVzdFJlZ0V4cCgvaXQvKTsK
KworICAgICAgICAgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRv
IG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICAgICAgICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIu
c3BsaXQob2JqKTsKKyAgICAgICAgICAgIGFzc2VydChhY2Nlc3NlcyA9PSBmbGFnLCAiUHJvcGVy
dHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgICAgICAgICBhc3Nl
cnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKKworICAgICAgICB9
KSAoZmxhZ3NbaW5kZXhdLCBmbGFnVmFsdWVzW2luZGV4XSk7CisgICAgfQorfSkoKTsKKworLy8g
UmVnRXhwIHN1YmNsYXNzIHdpdGggb3ZlcnJpZGRlbiBmbGFncyB1c2luZyBPYmplY3QuZGVmaW5l
UHJvcGVydHk6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJp
bmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZsYWdzID0g
WyAiZmxhZ3MiLCAiZ2xvYmFsIiwgImlnbm9yZUNhc2UiLCAibXVsdGlsaW5lIiwgInN0aWNreSIs
ICJ1bmljb2RlIiBdOworICAgIGxldCBmbGFnVmFsdWVzID0gWyAiIiwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlIF07CisgICAgZm9yIChsZXQgaW5kZXggaW4gZmxhZ3MpIHsKKyAg
ICAgICAgKGZ1bmN0aW9uKGZsYWcsIGZsYWdWYWx1ZSkgeworICAgICAgICAgICAgbGV0IGFjY2Vz
c2VzID0gW107CisgICAgICAgICAgICBjbGFzcyBUZXN0UmVnRXhwIGV4dGVuZHMgUmVnRXhwIHsg
fTsKKyAgICAgICAgICAgIGxldCBvYmogPSBuZXcgVGVzdFJlZ0V4cCgvaXQvKTsKKworICAgICAg
ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgZmxhZywgeworICAgICAgICAgICAgICAg
IGdldDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goZmxh
Zyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbGFnVmFsdWU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGFzc2VydChhY2Nlc3NlcyA9PSAi
IiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgICAgICAgICBs
ZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7CisgICAgICAgICAgICBhc3NlcnQoYWNj
ZXNzZXMgPT0gZmxhZywgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlv
biIpOworICAgICAgICAgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQg
cmVzdWx0Iik7CisKKyAgICAgICAgfSkgKGZsYWdzW2luZGV4XSwgZmxhZ1ZhbHVlc1tpbmRleF0p
OworICAgIH0KK30pKCk7CisKKy8vIEFueSBvYmplY3Qgd2l0aCBzcGVjaWVzIGNvbnN0cnVjdG9y
OiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0
KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOwor
ICAgIGxldCBvYmogPSB7IGNvbnN0cnVjdG9yOiB7fSB9OworICAgIG9iai5jb25zdHJ1Y3RvcltT
eW1ib2wuc3BlY2llc10gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgYWNjZXNzZXMucHVzaCgiY29u
c3RydWN0b3IiKTsKKyAgICAgICAgcmV0dXJuIC9pdC87CisgICAgfTsKKyAgICBvYmpbU3ltYm9s
LnNwbGl0XSA9IGZ1bmN0aW9uKHN0ciwgbGltaXQpIHsKKyAgICAgICAgYWNjZXNzZXMucHVzaChT
eW1ib2wuc3BsaXQudG9TdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBSZWdFeHAucHJvdG90eXBl
W1N5bWJvbC5zcGxpdF0uY2FsbCh0aGlzLCBzdHIsIGxpbWl0KTsKKyAgICB9OworCisgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgImZsYWdzIiwgeworICAgICAgICBnZXQ6IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgiZmxhZ3MiKTsKKyAgICAgICAgICAgIHJl
dHVybiAiIjsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIi
LCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0
ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJTeW1ib2wo
U3ltYm9sLnNwbGl0KSxmbGFncyxjb25zdHJ1Y3RvciIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBu
b3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAi
VW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIEFueSBvYmplY3Qgd2l0aCBjdXN0b20g
cHJvdG90eXBlOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3Ry
aW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3Nl
cyA9IFtdOworICAgIGxldCBUZXN0UmVnRXhwUHJvdG8gPSB7CisgICAgICAgIGdldCBmbGFncygp
IHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goImZsYWdzIik7CisgICAgICAgICAgICByZXR1
cm4gIiI7CisgICAgICAgIH0sCisgICAgICAgIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgYWNj
ZXNzZXMucHVzaCgidG9TdHJpbmciKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZWdleC50
b1N0cmluZygpOworICAgICAgICB9LAorICAgICAgICBnZXQgc291cmNlKCkgeworICAgICAgICAg
ICAgYWNjZXNzZXMucHVzaCgic291cmNlIik7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVn
ZXguc291cmNlOworICAgICAgICB9CisgICAgfQorICAgIFRlc3RSZWdFeHBQcm90by5fX3Byb3Rv
X18gPSBSZWdFeHAucHJvdG90eXBlOworCisgICAgbGV0IFRlc3RSZWdFeHAgPSBmdW5jdGlvbihy
ZWdleCkgeworICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJjb25zdHJ1Y3RvciIpOworICAgICAgICB0
aGlzLl9yZWdleCA9IG5ldyBSZWdFeHAocmVnZXgpOworICAgIH0KKyAgICBUZXN0UmVnRXhwLnBy
b3RvdHlwZSA9IFRlc3RSZWdFeHBQcm90bzsKKyAgICBUZXN0UmVnRXhwUHJvdG8uY29uc3RydWN0
b3IgPSBUZXN0UmVnRXhwOworCisgICAgbGV0IG9iaiA9IG5ldyBUZXN0UmVnRXhwKC9pdC8pOwor
CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJjb25zdHJ1Y3RvciIsICJ1bmV4cGVjdGVkIGNhbGwg
dG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQo
b2JqKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImNvbnN0cnVjdG9yLGZsYWdzLHNvdXJjZSIs
ICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3Nl
cnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8v
IDIgbGV2ZWxzIG9mIHN1YmNsYXNzZXM6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZs
YWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7Cisg
ICAgbGV0IGFjY2Vzc2VzID0gW107CisKKyAgICBjbGFzcyBSZWdFeHBCIGV4dGVuZHMgUmVnRXhw
IHsKKyAgICAgICAgZ2V0IGZsYWdzKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgiZmxh
Z3MiKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAgIH0KKyAgICBjbGFz
cyBSZWdFeHBDIGV4dGVuZHMgUmVnRXhwQiB7IH0KKworICAgIGFzc2VydChSZWdFeHBCLl9fcHJv
dG9fXyA9PSBSZWdFeHApOworICAgIGFzc2VydChSZWdFeHBDLl9fcHJvdG9fXyA9PSBSZWdFeHBC
KTsKKworICAgIGxldCBvYmogPSBuZXcgUmVnRXhwQygvaXQvKTsKKworICAgIGFzc2VydChhY2Nl
c3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAg
bGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmopOworICAgIGFzc2VydChhY2Nlc3NlcyA9
PSAiZmxhZ3MiLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7
CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9
KSgpOworCisvLyAyIGxldmVscyBvZiBzdWJjbGFzc2VzIHdpdGggc3Vic3RpdHV0ZWQgcHJvdG90
eXBlIGJlZm9yZSBpbnN0YW50aWF0aW9uOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBm
bGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgewor
ICAgIGxldCBhY2Nlc3NlcyA9IFtdOworCisgICAgY2xhc3MgQiBleHRlbmRzIFJlZ0V4cCB7IH0K
KyAgICBjbGFzcyBDIGV4dGVuZHMgQiB7IH0KKworICAgIGFzc2VydChCLl9fcHJvdG9fXyA9PT0g
UmVnRXhwKTsKKyAgICBhc3NlcnQoQy5fX3Byb3RvX18gPT09IEIpOworICAgIGFzc2VydChCLnBy
b3RvdHlwZS5fX3Byb3RvX18gPT09IFJlZ0V4cC5wcm90b3R5cGUpOworICAgIGFzc2VydChDLnBy
b3RvdHlwZS5fX3Byb3RvX18gPT09IEIucHJvdG90eXBlKTsKKworICAgIGxldCBYID0gZnVuY3Rp
b24gKCkge30KKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoWC5wcm90b3R5cGUsICJmbGFncyIs
IHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2go
ImZsYWdzIik7CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICB9KTsKKyAg
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkoWC5wcm90b3R5cGUsICJleGVjIiwgeworICAgICAgICB2
YWx1ZTogZnVuY3Rpb24oc3RyKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJleGVjIik7
CisgICAgICAgICAgICB2YXIgbWF0Y2hSZXN1bHQgPSAvaXQveS5leGVjKHN0ci5zdWJzdHIodGhp
cy5sYXN0SW5kZXgpKTsKKyAgICAgICAgICAgIGlmIChtYXRjaFJlc3VsdCkKKyAgICAgICAgICAg
ICAgICB0aGlzLmxhc3RJbmRleCArPSAyOyAvLyBsZW5ndGggb2YgIml0Ii4KKyAgICAgICAgICAg
IHJldHVybiBtYXRjaFJlc3VsdDsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgLy8gTW9ua2V5
IHdpdGggdGhlIHByb3RvdHlwZSBjaGFpbiBiZWZvcmUgaW5zdGFudGlhdGluZyBDLgorICAgIFgu
X19wcm90b19fID0gUmVnRXhwOworICAgIFgucHJvdG90eXBlLl9fcHJvdG9fXyA9IFJlZ0V4cC5w
cm90b3R5cGU7CisgICAgQy5fX3Byb3RvX18gPSBYOworICAgIEMucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFgucHJvdG90eXBlOworCisgICAgYXNzZXJ0KFguX19wcm90b19fID09PSBSZWdFeHApOwor
ICAgIGFzc2VydChDLl9fcHJvdG9fXyA9PT0gWCk7CisgICAgYXNzZXJ0KFgucHJvdG90eXBlLl9f
cHJvdG9fXyA9PT0gUmVnRXhwLnByb3RvdHlwZSk7CisgICAgYXNzZXJ0KEMucHJvdG90eXBlLl9f
cHJvdG9fXyA9PT0gWC5wcm90b3R5cGUpOworCisgICAgbGV0IG9iaiA9IG5ldyBDOworCisgICAg
YXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJv
cHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7CisgICAgYXNzZXJ0
KGFjY2Vzc2VzID09ICJmbGFncyxleGVjLGV4ZWMsZXhlYyxleGVjLGV4ZWMsZXhlYyIsICJQcm9w
ZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVz
dWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIDIgbGV2
ZWxzIG9mIHN1YmNsYXNzZXMgd2l0aCBzdWJzdGl0dXRlZCBwcm90b3R5cGUgYWZ0ZXIgaW5zdGFu
dGlhdGlvbjogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmlu
Zyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMg
PSBbXTsKKworICAgIGNsYXNzIEIgZXh0ZW5kcyBSZWdFeHAgeyB9CisgICAgY2xhc3MgQyBleHRl
bmRzIEIgeyB9CisKKyAgICBhc3NlcnQoQi5fX3Byb3RvX18gPT09IFJlZ0V4cCk7CisgICAgYXNz
ZXJ0KEMuX19wcm90b19fID09PSBCKTsKKyAgICBhc3NlcnQoQi5wcm90b3R5cGUuX19wcm90b19f
ID09PSBSZWdFeHAucHJvdG90eXBlKTsKKyAgICBhc3NlcnQoQy5wcm90b3R5cGUuX19wcm90b19f
ID09PSBCLnByb3RvdHlwZSk7CisKKyAgICBsZXQgWCA9IGZ1bmN0aW9uICgpIHt9CisgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KFgucHJvdG90eXBlLCAiZmxhZ3MiLCB7CisgICAgICAgIGdldDog
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJmbGFncyIpOworICAgICAg
ICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisgICAgfSk7CisgICAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KFgucHJvdG90eXBlLCAiZXhlYyIsIHsKKyAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHN0
cikgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgiZXhlYyIpOworICAgICAgICAgICAgdmFy
IG1hdGNoUmVzdWx0ID0gL2l0L3kuZXhlYyhzdHIuc3Vic3RyKHRoaXMubGFzdEluZGV4KSk7Cisg
ICAgICAgICAgICBpZiAobWF0Y2hSZXN1bHQpCisgICAgICAgICAgICAgICAgdGhpcy5sYXN0SW5k
ZXggKz0gMjsgLy8gbGVuZ3RoIG9mICJpdCIuCisgICAgICAgICAgICByZXR1cm4gbWF0Y2hSZXN1
bHQ7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIC8vIEluc3RhbnRpYXRlIEMgYmVmb3JlIG1v
bmtleWluZyB3aXRoIHRoZSBwcm90b3R5cGUgY2hhaW4uCisgICAgbGV0IG9iaiA9IG5ldyBDKCk7
CisKKyAgICBYLl9fcHJvdG9fXyA9IFJlZ0V4cDsKKyAgICBYLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBSZWdFeHAucHJvdG90eXBlOworICAgIEMuX19wcm90b19fID0gWDsKKyAgICBDLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBYLnByb3RvdHlwZTsKKworICAgIGFzc2VydChYLl9fcHJvdG9fXyA9PT0g
UmVnRXhwKTsKKyAgICBhc3NlcnQoQy5fX3Byb3RvX18gPT09IFgpOworICAgIGFzc2VydChYLnBy
b3RvdHlwZS5fX3Byb3RvX18gPT09IFJlZ0V4cC5wcm90b3R5cGUpOworICAgIGFzc2VydChDLnBy
b3RvdHlwZS5fX3Byb3RvX18gPT09IFgucHJvdG90eXBlKTsKKworICAgIGFzc2VydChhY2Nlc3Nl
cyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0
IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmopOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAi
ZmxhZ3MsZXhlYyxleGVjLGV4ZWMsZXhlYyxleGVjLGV4ZWMiLCAiUHJvcGVydHkgYWNjZXNzZXMg
ZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1l
IiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyAyIGxldmVscyBvZiBzdWJjbGFz
c2VzIHdpdGggcHJveGllZCBwcm90b3R5cGU6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0
IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7
CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisKKyAgICBjbGFzcyBCIGV4dGVuZHMgUmVnRXhwIHsg
fTsKKworICAgIGFzc2VydChCLl9fcHJvdG9fXyA9PT0gUmVnRXhwKTsKKyAgICBhc3NlcnQoQi5w
cm90b3R5cGUuX19wcm90b19fID09PSBSZWdFeHAucHJvdG90eXBlKTsKKworICAgIGxldCBwcm94
eSA9IG5ldyBQcm94eShSZWdFeHAucHJvdG90eXBlLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24o
b2JqLCBwcm9wKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKHByb3AudG9TdHJpbmcoKSk7
CisgICAgICAgICAgICBpZiAocHJvcCA9PT0gImV4ZWMiKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uKHN0cikgeworICAgICAgICAgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJp
bl9leGVjIik7CisgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaFJlc3VsdCA9IC9pdC95LmV4
ZWMoc3RyLnN1YnN0cih0aGlzLmxhc3RJbmRleCkpOworICAgICAgICAgICAgICAgICAgICBpZiAo
bWF0Y2hSZXN1bHQpCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RJbmRleCArPSAy
OyAvLyBsZW5ndGggb2YgIml0Ii4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoUmVz
dWx0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biBvYmpbcHJvcF07CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBCLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBwcm94eTsKKworICAgIGxldCBvYmogPSBuZXcgQigpOworCisgICAgYXNzZXJ0KGFjY2Vz
c2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBs
ZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09
ICJTeW1ib2woU3ltYm9sLnNwbGl0KSxmbGFncyxTeW1ib2woU3ltYm9sLm1hdGNoKSxleGVjLGlu
X2V4ZWMsZXhlYyxpbl9leGVjLGV4ZWMsaW5fZXhlYyxleGVjLGluX2V4ZWMsZXhlYyxpbl9leGVj
LGV4ZWMsaW5fZXhlYyIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRp
b24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQi
KTsKK30pKCk7CisKKy8vIFJlZ0V4cCBzdWJjbGFzcyB3aXRoIG92ZXJyaWRkZW4gZXhlYzogVGVz
dGluZyBFUzYgMjEuMi41LjExOiAxOS5iLiBMZXQgeiBiZSA/IFJlZ0V4cEV4ZWMoc3BsaXR0ZXIs
IFMpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBjbGFzcyBU
ZXN0UmVnRXhwIGV4dGVuZHMgUmVnRXhwIHsKKyAgICAgICAgZXhlYyhzdHIpIHsKKyAgICAgICAg
ICAgIGFjY2Vzc2VzLnB1c2goImV4ZWMiKTsKKyAgICAgICAgICAgIHJldHVybiBSZWdFeHAucHJv
dG90eXBlLmV4ZWMuY2FsbCh0aGlzLCBzdHIpOworICAgICAgICB9CisgICAgfTsKKyAgICBsZXQg
b2JqID0gbmV3IFRlc3RSZWdFeHAoL2l0Lyk7CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIs
ICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQg
PSAic3BsaXRtZSIuc3BsaXQob2JqKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImV4ZWMsZXhl
YyxleGVjLGV4ZWMsZXhlYyxleGVjIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBl
eHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVk
IHJlc3VsdCIpOworfSkoKTsKKworLy8gUHJveGllZCBSZWdFeHAgb2JzZXJ2aW5nIGV2ZXJ5IGdl
dC4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IHJlZ2V4
cCA9IG5ldyBSZWdFeHAoL2l0Lyk7CisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHJlZ2V4cCwg
eworICAgICAgICBnZXQob2JqLCBwcm9wKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKHBy
b3AudG9TdHJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm4gb2JqW3Byb3BdOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwg
dG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQo
cHJveHkpOworICAgIC8vIE5vdGU6IEBAc3BsaXQgY3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0
aGUgUmVnRXhwIHVzaW5nIGl0cyBAQHNwZWNpZXMsIGFuZCBwZXJmb3JtcworICAgIC8vIHRoZSBz
cGxpdCBvcGVyYXRpb24gd2l0aCB0aGF0IG5ldyBpbnN0YW5jZS4gSGVuY2UsIHRoZSBwcm94eSBp
cyBvbmx5IGFibGUgdG8gb2JzZXJ2ZQorICAgIC8vIGdldHMgdXAgdG8gdGhlIGNyZWF0aW9uIG9m
IHRoZSBuZXcgaW5zdGFuY2UuCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJTeW1ib2woU3ltYm9s
LnNwbGl0KSxjb25zdHJ1Y3RvcixmbGFncyxTeW1ib2woU3ltYm9sLm1hdGNoKSxzb3VyY2UiLAor
ICAgICAgICAiUHJveHkgbm90IGFibGUgdG8gb2JzZXJ2ZSBzb21lIGdldHMiKTsKKyAgICBhc3Nl
cnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8v
IFByb3hpZWQgUmVnRXhwICh3aXRob3V0IEBAbWF0Y2gpIG9ic2VydmluZyBldmVyeSBnZXQuCisv
LyBUaGlzIGlzIHRvIGZvcmNlIHRoZSBSZWdFeHAgQHNwZWNpZXMgY29uc3RydWN0b3IgdG8gYWNj
ZXNzIHNvdXJjZS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAg
bGV0IHJlZ2V4cCA9IG5ldyBSZWdFeHAoL2l0Lyk7CisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5
KHJlZ2V4cCwgeworICAgICAgICBnZXQob2JqLCBwcm9wKSB7CisgICAgICAgICAgICBhY2Nlc3Nl
cy5wdXNoKHByb3AudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBpZiAocHJvcCA9PSBTeW1ib2wu
bWF0Y2gpCisgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHJl
dHVybiBvYmpbcHJvcF07CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGFzc2VydChhY2Nlc3Nl
cyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0
IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChwcm94eSk7CisgICAgLy8gTm90ZTogQEBzcGxpdCBj
cmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBSZWdFeHAgdXNpbmcgaXRzIEBAc3BlY2llcywg
YW5kIHBlcmZvcm1zCisgICAgLy8gdGhlIHNwbGl0IG9wZXJhdGlvbiB3aXRoIHRoYXQgbmV3IGlu
c3RhbmNlLiBIZW5jZSwgdGhlIHByb3h5IGlzIG9ubHkgYWJsZSB0byBvYnNlcnZlCisgICAgLy8g
Z2V0cyB1cCB0byB0aGUgY3JlYXRpb24gb2YgdGhlIG5ldyBpbnN0YW5jZS4KKyAgICBhc3NlcnQo
YWNjZXNzZXMgPT0gIlN5bWJvbChTeW1ib2wuc3BsaXQpLGNvbnN0cnVjdG9yLGZsYWdzLFN5bWJv
bChTeW1ib2wubWF0Y2gpLFN5bWJvbChTeW1ib2wudG9QcmltaXRpdmUpLHRvU3RyaW5nLHNvdXJj
ZSxmbGFncyIsCisgICAgICAgICJQcm94eSBub3QgYWJsZSB0byBvYnNlcnZlIHNvbWUgZ2V0cyIp
OworICAgIC8vIFRoZSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFJlZ0V4cCB3b3VsZCBoYXZlIGJlZW4g
Y29uc3RydWN0ZWQgd2l0aCB0aGUgcGF0dGVybiBmcm9tCisgICAgLy8gdGhlIHByb3h5IHRvU3Ry
aW5nKCkgaS5lLiAiXC9sdFwvIiBpbnN0ZWFkIG9mIHNvdXJjZSwgYmVjYXVzZSB0aGUgcHJveHkg
aXMgYW4KKyAgICAvLyBvYmplY3Qgd2l0aG91dCBhIFtAQG1hdGNoXSBwcm9wZXJ0eS4KKyAgICBh
c3NlcnQocmVzdWx0ID09ICJzcGxpdG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOwpJ
bmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5h
bWVzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3Qt
Z2V0T3duUHJvcGVydHlOYW1lcy5qcwkocmV2aXNpb24gMTk5MzM4KQorKysgTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC03MCw3ICs3MCw3IEBAIHZhciBleHBlY3RlZFByb3BlcnR5TmFtZXNTZXQgPSB7CiAg
ICAgIkVycm9yLnByb3RvdHlwZSI6ICJbJ2NvbnN0cnVjdG9yJywgJ21lc3NhZ2UnLCAnbmFtZScs
ICd0b1N0cmluZyddIiwKICAgICAiTWF0aCI6ICJbJ0UnLCdMTjEwJywnTE4yJywnTE9HMTBFJywn
TE9HMkUnLCdQSScsJ1NRUlQxXzInLCdTUVJUMicsJ2FicycsJ2Fjb3MnLCdhY29zaCcsJ2FzaW4n
LCdhc2luaCcsJ2F0YW4nLCdhdGFuMicsJ2F0YW5oJywnY2JydCcsJ2NlaWwnLCdjbHozMicsJ2Nv
cycsJ2Nvc2gnLCdleHAnLCdleHBtMScsJ2Zsb29yJywnZnJvdW5kJywnaHlwb3QnLCdpbXVsJywn
bG9nJywnbG9nMTAnLCdsb2cxcCcsJ2xvZzInLCdtYXgnLCdtaW4nLCdwb3cnLCdyYW5kb20nLCdy
b3VuZCcsJ3NpZ24nLCdzaW4nLCdzaW5oJywnc3FydCcsJ3RhbicsJ3RhbmgnLCd0cnVuYyddIiwK
ICAgICAiSlNPTiI6ICJbJ3BhcnNlJywgJ3N0cmluZ2lmeSddIiwKLSAgICAiU3ltYm9sIjogIlsn
Zm9yJywgJ2hhc0luc3RhbmNlJywgJ2l0ZXJhdG9yJywgJ2tleUZvcicsICdsZW5ndGgnLCAnbWF0
Y2gnLCAnbmFtZScsICdwcm90b3R5cGUnLCAnc2VhcmNoJywgJ3NwZWNpZXMnLCAndG9QcmltaXRp
dmUnLCAndG9TdHJpbmdUYWcnLCAndW5zY29wYWJsZXMnXSIsCisgICAgIlN5bWJvbCI6ICJbJ2Zv
cicsICdoYXNJbnN0YW5jZScsICdpdGVyYXRvcicsICdrZXlGb3InLCAnbGVuZ3RoJywgJ21hdGNo
JywgJ25hbWUnLCAncHJvdG90eXBlJywgJ3NlYXJjaCcsICdzcGVjaWVzJywgJ3NwbGl0JywgJ3Rv
UHJpbWl0aXZlJywgJ3RvU3RyaW5nVGFnJywgJ3Vuc2NvcGFibGVzJ10iLAogICAgICJTeW1ib2wu
cHJvdG90eXBlIjogIlsnY29uc3RydWN0b3InLCAndG9TdHJpbmcnLCAndmFsdWVPZiddIiwKICAg
ICAiTWFwIjogIlsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10iLAogICAgICJNYXAucHJv
dG90eXBlIjogIlsnY2xlYXInLCAnY29uc3RydWN0b3InLCAnZGVsZXRlJywgJ2VudHJpZXMnLCAn
Zm9yRWFjaCcsICdnZXQnLCAnaGFzJywgJ2tleXMnLCAnc2V0JywgJ3NpemUnLCAndmFsdWVzJ10i
LApJbmRleDogTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0
cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjE0X1N0cmluZy5wcm90b3R5cGUuc3BsaXQvUzE1
LjUuNC4xNF9BMV9UMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3B1
dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUu
NS40LjE0X1N0cmluZy5wcm90b3R5cGUuc3BsaXQvUzE1LjUuNC4xNF9BMV9UMy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE5OTMzOCkKKysrIExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2Uv
MTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xNF9TdHJpbmcucHJv
dG90eXBlLnNwbGl0L1MxNS41LjQuMTRfQTFfVDMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogUzE1LjUuNC4xNF9BMV9UMwogCi1GQUlMIFR5cGVFcnJvcjogVHlw
ZSBlcnJvcgorRkFJTCBUeXBlRXJyb3I6IFN0cmluZy5wcm90b3R5cGUuc3BsaXQgcmVxdWlyZXMg
dGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZAogCiBURVNUIENPTVBMRVRFCiAK
</data>
<flag name="review"
          id="300538"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276281</attachid>
            <date>2016-04-12 14:57:32 -0700</date>
            <delta_ts>2016-04-12 15:35:07 -0700</delta_ts>
            <desc>patch for landing (w/ Keith&apos;s feedback resolved).</desc>
            <filename>bug-156013b.patch</filename>
            <type>text/plain</type>
            <size>166863</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5Mzg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDE2LTA0LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
UzY6IEltcGxlbWVudCBTdHJpbmcucHJvdG90eXBlLnNwbGl0IGFuZCBSZWdFeHAucHJvdG90eXBl
W0BAc3BsaXRdLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU2MDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9HbG9iYWxPYmplY3QuanM6CisgICAg
ICAgIChzcGVjaWVzQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJ1aWx0aW5zL1Byb21pc2VQcm90
b3R5cGUuanM6CisgICAgICAgIC0gcmVmYWN0b3JlZCB0byB1c2UgdGhlIEBzcGVjaWVzQ29uc3Ry
dWN0b3IgaW50ZXJuYWwgZnVuY3Rpb24uCisKKyAgICAgICAgKiBidWlsdGlucy9SZWdFeHBQcm90
b3R5cGUuanM6CisgICAgICAgIChhZHZhbmNlU3RyaW5nSW5kZXgpOgorICAgICAgICAtIHJlZmFj
dG9yZWQgZnJvbSBAYWR2YW5jZVN0cmluZ0luZGV4VW5pY29kZSgpIHRvIGJlIG1hdGNoIHRoZSBz
cGVjLgorICAgICAgICAgIEJlbmNobWFya3Mgc2hvdyB0aGF0IHRoZXJlJ3Mgbm8gYWR2YW50YWdl
IGluIGRvaW5nIHRoZSB1bmljb2RlIGNoZWNrIG91dHNpZGUKKyAgICAgICAgICBvZiB0aGUgYWR2
YW5jZVN0cmluZ0luZGV4VW5pY29kZSBwYXJ0LiAgU28sIEkgc2ltcGxpZmllZCB0aGUgY29kZSB0
byBtYXRjaCB0aGUKKyAgICAgICAgICBzcGVjIChlc3BlY2lhbGx5IHNpbmNlIEBAc3BsaXQgbmVl
ZHMgdG8gY2FsbCBhZHZhbmNlU3RyaW5nSW5kZXggZnJvbSBtb3JlIHRoYW4KKyAgICAgICAgICAx
IGxvY2F0aW9uKS4KKyAgICAgICAgKG1hdGNoKToKKyAgICAgICAgLSBSZW1vdmVkIGFuIHVubmVj
ZXNzYXJ5IGNhbGwgdG8gQE9iamVjdCBiZWNhdXNlIGl0IHdhcyBhbHJlYWR5IHByb3ZlbiBhYm92
ZS4KKyAgICAgICAgLSBDaGFuZ2VkIHRvIHVzZSBhZHZhbmNlU3RyaW5nSW5kZXggaW5zdGVhZCBv
ZiBhZHZhbmNlU3RyaW5nSW5kZXhVbmljb2RlLgorICAgICAgICAgIEFnYWluLCB0aGVyZSdzIG5v
IHBlcmYgcmVncmVzc2lvbiBmb3IgdGhpcy4KKyAgICAgICAgKHJlZ0V4cEV4ZWMpOgorICAgICAg
ICAoaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzRm9yUmVnRXhwU3BsaXQpOgorICAgICAgICAoc3Bs
aXQpOgorICAgICAgICAoYWR2YW5jZVN0cmluZ0luZGV4VW5pY29kZSk6IERlbGV0ZWQuCisKKyAg
ICAgICAgKiBidWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanM6CisgICAgICAgIChzcGxpdCk6Cisg
ICAgICAgIC0gTW9kaWZpZWQgdG8gdXNlIFJlZ0V4cC5wcm90b3R5cGVbQEBzcGxpdF0uCisKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgorICAgICAgICAt
IEFkZGVkIHRoZSBAQHNwbGl0IHN5bWJvbC4KKworICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5j
dGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6ZXNTcGVjSXNDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChKU0M6OmVzU3BlY0lzUmVnRXhwKToKKyAgICAgICAgKiBydW50aW1lL0VDTUFTY3Jp
cHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaDogQWRkZWQuCisKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0R2V0dGVyQnlJZCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKworICAgICAgICAqIHJ1bnRpbWUvUHJvcGVy
dHlEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yOjpzZXRE
ZXNjcmlwdG9yKToKKyAgICAgICAgLSBSZW1vdmVkIGFuIGFzc2VydCB0aGF0IGlzIG5vIGxvbmdl
ciB2YWxpZC4KKworICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgIC0g
TWFkZSBhZHZhbmNlU3RyaW5nVW5pY29kZSgpIHB1YmxpYyBzbyB0aGF0IGl0IGNhbiBiZSByZS11
c2VkIGJ5IHRoZSByZWdleHAgc3BsaXQKKyAgICAgICAgICBmYXN0IHBhdGguCisKKyAgICAgICAg
KiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNFeGVj
KToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jU2VhcmNoKToKKyAgICAgICAgKEpTQzo6
YWR2YW5jZVN0cmluZ0luZGV4KToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jU3BsaXRG
YXN0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oOgorCisgICAgICAgICog
cnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6anNTdHJpbmdXaXRoUmV1c2Up
OgorICAgICAgICAoSlNDOjpqc1N1YnN0cmluZyk6CisgICAgICAgIC0gSG9pc3RlZCBzb21lIHV0
aWxpdHkgZnVuY3Rpb25zIGZyb20gU3RyaW5nUHJvdG90eXBlLmNwcCBzbyB0aGF0IHRoZXkgY2Fu
IGJlCisgICAgICAgICAgcmV1c2VkIGJ5IHRoZSByZWdleHAgc3BsaXQgZmFzdCBwYXRoLgorCisg
ICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJp
bmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9G
dW5jU3BsaXRGYXN0KToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vic3RyKToKKyAg
ICAgICAgKEpTQzo6YnVpbHRpblN0cmluZ1N1YnN0ckludGVybmFsKToKKyAgICAgICAgKEpTQzo6
c3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKToKKyAgICAgICAgKEpTQzo6c3RyaW5nSW5jbHVkZXNJ
bXBsKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMpOgorICAgICAgICAo
SlNDOjpidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OmpzU3Ry
aW5nV2l0aFJldXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6anNTdWJzdHJpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTcGxpdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaDoKKworICAgICAgICAqIHRlc3RzL2VzNi55
YW1sOgorCiAyMDE2LTA0LTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcmVtb3ZlIEZJWE1FIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDU3IGFuZCByZXBsYWNlIGl0CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxOTkzMzgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYzOCw2ICs2MzgsNyBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvRGlyZWN0QXJndW1lbnRz
LmNwcAogICAgIHJ1bnRpbWUvRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmNwcAogICAgIHJ1bnRpbWUv
RHVtcENvbnRleHQuY3BwCisgICAgcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rp
b25zLmNwcAogICAgIHJ1bnRpbWUvRXJyb3IuY3BwCiAgICAgcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmNwcAogICAgIHJ1bnRpbWUvRXJyb3JIYW5kbGluZ1Njb3BlLmNwcApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDUzLDYgKzIwNTMsOCBAQAogCQlGRTFDMEZGRjFCMTk0RkQxMDBCNTNGQ0Eg
LyogRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMUMwRkZFMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3BwICovOyB9Owog
CQlGRTIwQ0U5RDE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTIwQ0U5QjE1RjA0QTk1MDBERjM0
MzAgLyogTExJbnRDTG9vcC5jcHAgKi87IH07CiAJCUZFMjBDRTlFMTVGMDRBOTUwMERGMzQzMCAv
KiBMTEludENMb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFMzE4RkRGMUNBQzk4Mjcw
MERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzE4RkREMUNBQzhDNTMwMERG
Q0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcCAqLzsgfTsKKwkJRkUz
MThGRTAxQ0FDOTgyRjAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzE4RkRF
MUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggKi87
IH07CiAJCUZFMzg0RUU1MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUxMUFEREI3QUQw
MDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLzsgfTsKIAkJRkUzODRFRTYxQUREQjdBRDAwNTVE
RTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMzg0RUUyMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUzODRFRTcxQURE
QjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODRFRTMxQUREQjdBRDAwNTVERTJDIC8q
IEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwICovOyB9OwpAQCAtNDI5OSw2ICs0MzAxLDggQEAKIAkJ
RkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTIwQ0U5QjE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludENMb29wLmNwcDsgcGF0aCA9
IGxsaW50L0xMSW50Q0xvb3AuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTIw
Q0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBMTEludENMb29wLmg7IHBhdGggPSBsbGludC9MTEludENMb29wLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzE4RkREMUNBQzhDNTMwMERGQ0M1NCAvKiBF
Q01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTMxOEZERTFDQUM4QzUzMDBERkNDNTQgLyogRUNN
QVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFMzg0RUUxMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9sbGFyVk0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyog
SlNEb2xsYXJWTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RvbGxhclZN
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUzMUFEREI3QUQwMDU1REUy
QyAvKiBKU0RvbGxhclZNUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNTU3OSw2ICs1NTgzLDggQEAKIAkJCQkwRkUwNTAwRTFBQTkwOTExMDBEMzNCMzMg
LyogRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmggKi8sCiAJCQkJQTcwNDQ3RUIxN0EwQkQ3MDAwRjU4
OThFIC8qIER1bXBDb250ZXh0LmNwcCAqLywKIAkJCQlBNzA0NDdFQzE3QTBCRDcwMDBGNTg5OEUg
LyogRHVtcENvbnRleHQuaCAqLywKKwkJCQlGRTMxOEZERDFDQUM4QzUzMDBERkNDNTQgLyogRUNN
QVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAgKi8sCisJCQkJRkUzMThGREUxQ0FDOEM1
MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLywKIAkJCQky
QUQyRURGQTE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2RlLmggKi8sCiAJCQkJQkMz
MzdCRUEwRTFCMDBDQjAwNzY5MThBIC8qIEVycm9yLmNwcCAqLywKIAkJCQlCQzMwNDYwNjBFMUY0
OTdGMDAzMjMyQ0YgLyogRXJyb3IuaCAqLywKQEAgLTc5MzksNiArNzk0NSw3IEBACiAJCQkJNTJD
MDYxMUYxQUE1MUUxQzAwQjRBREJBIC8qIFJ1bnRpbWVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3NUEgLyogU2FtcGxpbmdDb3VudGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkUwNTAyODFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGRTMxOEZFMDFDQUM5ODJGMDBERkNDNTQgLyogRUNNQVNjcmlw
dFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMjkxQUE5
MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovLApAQCAtODc1Niw2ICs4NzYzLDcgQEAKIAkJCQlGRTUwNjg2NzFB
RTI1RTI4MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE3N0E0MjNEMTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY1NUMxOTQxNzI3NkU0NjAwQ0VBQkZEIC8qIERGR0Fic3RyYWN0VmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUzMThGREYxQ0FDOTgyNzAwREZDQzU0IC8qIEVD
TUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZE
M0U0MDExQjYxOEFBRjAwQzgwRTFFIC8qIERGR0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVl
V2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjE4RDNDRjFCNTVBNkUwMDAyQzVD
OUYgLyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMkREODExMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0dsb2JhbE9iamVjdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCShyZXZpc2lvbiAxOTkzMzgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAs
MyArNjEsMTggQEAgZnVuY3Rpb24gc3BlY2llc0dldHRlcigpCiB7CiAgICAgcmV0dXJuIHRoaXM7
CiB9CisKK2Z1bmN0aW9uIHNwZWNpZXNDb25zdHJ1Y3RvcihvYmosIGRlZmF1bHRDb25zdHJ1Y3Rv
cikKK3sKKyAgICB2YXIgY29uc3RydWN0b3IgPSBvYmouY29uc3RydWN0b3I7CisgICAgaWYgKGNv
bnN0cnVjdG9yID09PSBAdW5kZWZpbmVkKQorICAgICAgICByZXR1cm4gZGVmYXVsdENvbnN0cnVj
dG9yOworICAgIGlmICghQGlzT2JqZWN0KGNvbnN0cnVjdG9yKSkKKyAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoInx0aGlzfC5jb25zdHJ1Y3RvciBpcyBub3QgYW4gT2JqZWN0IG9yIHVuZGVm
aW5lZCIpOworICAgIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JbQHN5bWJvbFNwZWNpZXNdOwor
ICAgIGlmIChjb25zdHJ1Y3RvciA9PSBudWxsKQorICAgICAgICByZXR1cm4gZGVmYXVsdENvbnN0
cnVjdG9yOworICAgIGlmIChAaXNDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcikpCisgICAgICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKKyAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigifHRoaXN8LmNvbnN0
cnVjdG9yW1N5bWJvbC5zcGVjaWVzXSBpcyBub3QgYSBjb25zdHJ1Y3RvciIpOworfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VQcm90b3R5cGUuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VQcm90b3R5cGUu
anMJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Q
cm9taXNlUHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywxNiArMzcsNyBAQCBmdW5jdGlv
biB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKQogICAgIGlmICghQGlzUHJvbWlzZSh0aGlz
KSkKICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoInx0aGlzfCBpcyBub3QgYSBvYmplY3Qi
KTsKIAotICAgIHZhciBjb25zdHJ1Y3RvciA9IHRoaXMuY29uc3RydWN0b3I7Ci0gICAgaWYgKGNv
bnN0cnVjdG9yID09PSBAdW5kZWZpbmVkKQotICAgICAgICBjb25zdHJ1Y3RvciA9IEBQcm9taXNl
OwotICAgIGVsc2UgaWYgKCFAaXNPYmplY3QoY29uc3RydWN0b3IpKQotICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigifHRoaXN8LmNvbnN0cnVjdG9yIGlzIG5vdCBhbiBPYmplY3Qgb3IgdW5k
ZWZpbmVkIik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3Jb
QHN5bWJvbFNwZWNpZXNdOwotICAgICAgICBpZiAoY29uc3RydWN0b3IgPT0gbnVsbCkKLSAgICAg
ICAgICAgIGNvbnN0cnVjdG9yID0gQFByb21pc2U7Ci0gICAgfQorICAgIHZhciBjb25zdHJ1Y3Rv
ciA9IEBzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgQFByb21pc2UpOwogCiAgICAgdmFyIHJlc3Vs
dENhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoY29uc3RydWN0b3IpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVnRXhwUHJvdG90eXBlLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWdFeHBQcm90b3R5cGUu
anMJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9S
ZWdFeHBQcm90b3R5cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEzICsyMywxNSBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCiAgKi8KIAotZnVuY3Rpb24gYWR2YW5jZVN0cmluZ0luZGV4VW5pY29kZShz
dHJpbmcsIHN0cmluZ0xlbmd0aCwgaW5kZXgpCitmdW5jdGlvbiBhZHZhbmNlU3RyaW5nSW5kZXgo
c3RyaW5nLCBpbmRleCwgdW5pY29kZSkKIHsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGltcGxlbWVu
dHMgQWR2YW5jZVN0cmluZ0luZGV4IGRlc2NyaWJlZCBpbiBFUzYgMjEuMi41LjIuMywgc3RlcHMg
Ni0xMS4KLSAgICAvLyBJdCBhc3N1bWVzIHRoYXQgInVuaWNvZGUiIGlzIHRydWUgZm9yIGl0cyBj
YWxsZXJzLgorICAgIC8vIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyBBZHZhbmNlU3RyaW5nSW5k
ZXggZGVzY3JpYmVkIGluIEVTNiAyMS4yLjUuMi4zLgogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAg
IGlmIChpbmRleCArIDEgPj0gc3RyaW5nTGVuZ3RoKQorICAgIGlmICghdW5pY29kZSkKKyAgICAg
ICAgcmV0dXJuIGluZGV4ICsgMTsKKworICAgIGlmIChpbmRleCArIDEgPj0gc3RyaW5nLmxlbmd0
aCkKICAgICAgICAgcmV0dXJuIGluZGV4ICsgMTsKIAogICAgIGxldCBmaXJzdCA9IHN0cmluZy5A
Y2hhckNvZGVBdChpbmRleCk7CkBAIC00NywxMCArNDksMTAgQEAgZnVuY3Rpb24gbWF0Y2goc3Ry
KQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBAT2Jq
ZWN0KSkKKyAgICBpZiAoIUBpc09iamVjdCh0aGlzKSkKICAgICAgICAgdGhyb3cgbmV3IEBUeXBl
RXJyb3IoIlJlZ0V4cC5wcm90b3R5cGUuQEBtYXRjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBh
biBPYmplY3QiKTsKIAotICAgIGxldCByZWdleHAgPSBAT2JqZWN0KHRoaXMpOworICAgIGxldCBy
ZWdleHAgPSB0aGlzOwogICAgIGxldCBzdHJpbmdBcmcgPSBAdG9TdHJpbmcoc3RyKTsKIAogICAg
IGlmICghcmVnZXhwLmdsb2JhbCkKQEAgLTc5LDEyICs4MSw4IEBAIGZ1bmN0aW9uIG1hdGNoKHN0
cikKIAogICAgICAgICAgICAgbGV0IHJlc3VsdFN0cmluZyA9IEB0b1N0cmluZyhyZXN1bHRbMF0p
OwogCi0gICAgICAgICAgICBpZiAoIXJlc3VsdFN0cmluZy5sZW5ndGgpIHsKLSAgICAgICAgICAg
ICAgICBpZiAodW5pY29kZSkKLSAgICAgICAgICAgICAgICAgICAgcmVnZXhwLmxhc3RJbmRleCA9
IEBhZHZhbmNlU3RyaW5nSW5kZXhVbmljb2RlKHN0cmluZ0FyZywgc3RyaW5nTGVuZ3RoLCByZWdl
eHAubGFzdEluZGV4KTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IHJlZ2V4cC5sYXN0SW5kZXgrKzsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghcmVz
dWx0U3RyaW5nLmxlbmd0aCkKKyAgICAgICAgICAgICAgICByZWdleHAubGFzdEluZGV4ID0gQGFk
dmFuY2VTdHJpbmdJbmRleChzdHJpbmdBcmcsIHJlZ2V4cC5sYXN0SW5kZXgsIHVuaWNvZGUpOwog
CiAgICAgICAgICAgICByZXN1bHRMaXN0LkBwdXNoKHJlc3VsdFN0cmluZyk7CiAKQEAgLTk1LDMg
KzkzLDE5NSBAQCBmdW5jdGlvbiBtYXRjaChzdHIpCiAgICAgcmV0dXJuIHJlZ2V4cC5AbWF0Y2go
c3RyaW5nQXJnKTsKIH0KIAorZnVuY3Rpb24gcmVnRXhwRXhlYyhyZWdleHAsIHN0cikKK3sKKyAg
ICAidXNlIHN0cmljdCI7CisKKyAgICBsZXQgZXhlYyA9IHJlZ2V4cC5leGVjOworICAgIGxldCBi
dWlsdGluRXhlYyA9IEBSZWdFeHAucHJvdG90eXBlLkBleGVjOworICAgIGlmIChleGVjICE9PSBi
dWlsdGluRXhlYyAmJiB0eXBlb2YgZXhlYyA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICBsZXQg
cmVzdWx0ID0gZXhlYy5AY2FsbChyZWdleHAsIHN0cik7CisgICAgICAgIGlmIChyZXN1bHQgIT09
IG51bGwgJiYgIUBpc09iamVjdChyZXN1bHQpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBl
RXJyb3IoIlRoZSByZXN1bHQgb2YgYSBSZWdFeHAgZXhlYyBtdXN0IGJlIG51bGwgb3IgYW4gb2Jq
ZWN0Iik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIHJldHVybiBidWlsdGlu
RXhlYy5AY2FsbChyZWdleHAsIHN0cik7Cit9CisKK2Z1bmN0aW9uIGhhc09ic2VydmFibGVTaWRl
RWZmZWN0c0ZvclJlZ0V4cFNwbGl0KHJlZ2V4cCkgeworICAgIC8vIFRoaXMgaXMgYWNjZXNzZWQg
YnkgdGhlIFJlZ0V4cEV4ZWMgaW50ZXJuYWwgZnVuY3Rpb24uCisgICAgbGV0IHJlZ2V4cEV4ZWMg
PSBAdHJ5R2V0QnlJZChyZWdleHAsICJleGVjIik7CisgICAgaWYgKHJlZ2V4cEV4ZWMgIT09IEBS
ZWdFeHAucHJvdG90eXBlLkBleGVjKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICAv
LyBUaGlzIGlzIGFjY2Vzc2VkIGJ5IHN0ZXAgNSBiZWxvdy4KKyAgICBsZXQgcmVnZXhwRmxhZ3Mg
PSBAdHJ5R2V0QnlJZChyZWdleHAsICJmbGFncyIpOworICAgIGlmIChyZWdleHBGbGFncyAhPT0g
QHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAg
IC8vIFRoZXNlIGFyZSBhY2Nlc3NlZCBieSB0aGUgYnVpbHRpbiBmbGFncyBnZXR0ZXIuCisgICAg
bGV0IHJlZ2V4cEdsb2JhbCA9IEB0cnlHZXRCeUlkKHJlZ2V4cCwgImdsb2JhbCIpOworICAgIGlm
IChyZWdleHBHbG9iYWwgIT09IEByZWdFeHBQcm90b0dsb2JhbEdldHRlcikKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgbGV0IHJlZ2V4cElnbm9yZUNhc2UgPSBAdHJ5R2V0QnlJZChyZWdleHAs
ICJpZ25vcmVDYXNlIik7CisgICAgaWYgKHJlZ2V4cElnbm9yZUNhc2UgIT09IEByZWdFeHBQcm90
b0lnbm9yZUNhc2VHZXR0ZXIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGxldCByZWdleHBN
dWx0aWxpbmUgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJtdWx0aWxpbmUiKTsKKyAgICBpZiAocmVn
ZXhwTXVsdGlsaW5lICE9PSBAcmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGxldCByZWdleHBTdGlja3kgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJz
dGlja3kiKTsKKyAgICBpZiAocmVnZXhwU3RpY2t5ICE9PSBAcmVnRXhwUHJvdG9TdGlja3lHZXR0
ZXIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGxldCByZWdleHBVbmljb2RlID0gQHRyeUdl
dEJ5SWQocmVnZXhwLCAidW5pY29kZSIpOworICAgIGlmIChyZWdleHBVbmljb2RlICE9PSBAcmVn
RXhwUHJvdG9Vbmljb2RlR2V0dGVyKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICAv
LyBUaGlzIGlzIGFjY2Vzc2VkIGJ5IHRoZSBSZWdFeHAgc3BlY2llcyBjb25zdHJ1Y3Rvci4KKyAg
ICBsZXQgcmVnZXhwU291cmNlID0gQHRyeUdldEJ5SWQocmVnZXhwLCAic291cmNlIik7CisgICAg
aWYgKHJlZ2V4cFNvdXJjZSAhPT0gQHJlZ0V4cFByb3RvU291cmNlR2V0dGVyKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICByZXR1cm4gIUBpc1JlZ0V4cChyZWdleHApOworfQorCisv
LyBFUyAyMS4yLjUuMTEgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XShzdHJpbmcsIGxpbWl0KQor
ZnVuY3Rpb24gc3BsaXQoc3RyaW5nLCBsaW1pdCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICAvLyAxLiBMZXQgcnggYmUgdGhlIHRoaXMgdmFsdWUuCisgICAgLy8gMi4gSWYgVHlwZShyeCkg
aXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgorICAgIGlmICghQGlz
T2JqZWN0KHRoaXMpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVnRXhwLnByb3Rv
dHlwZS5AQHNwbGl0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGFuIE9iamVjdCIpOworICAgIGxl
dCByZWdleHAgPSB0aGlzOworCisgICAgLy8gMy4gTGV0IFMgYmUgPyBUb1N0cmluZyhzdHJpbmcp
LgorICAgIGxldCBzdHIgPSBAdG9TdHJpbmcoc3RyaW5nKTsKKworICAgIC8vIDQuIExldCBDIGJl
ID8gU3BlY2llc0NvbnN0cnVjdG9yKHJ4LCAlUmVnRXhwJSkuCisgICAgbGV0IHNwZWNpZXNDb25z
dHJ1Y3RvciA9IEBzcGVjaWVzQ29uc3RydWN0b3IocmVnZXhwLCBAUmVnRXhwKTsKKworICAgIGlm
IChzcGVjaWVzQ29uc3RydWN0b3IgPT09IEBSZWdFeHAgJiYgIUBoYXNPYnNlcnZhYmxlU2lkZUVm
ZmVjdHNGb3JSZWdFeHBTcGxpdChyZWdleHApKQorICAgICAgICByZXR1cm4gQHJlZ0V4cFNwbGl0
RmFzdC5AY2FsbChyZWdleHAsIHN0ciwgbGltaXQpOworCisgICAgLy8gNS4gTGV0IGZsYWdzIGJl
ID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyAgICBsZXQgZmxhZ3MgPSBAdG9TdHJp
bmcocmVnZXhwLmZsYWdzKTsKKworICAgIC8vIDYuIElmIGZsYWdzIGNvbnRhaW5zICJ1IiwgbGV0
IHVuaWNvZGVNYXRjaGluZyBiZSB0cnVlLgorICAgIC8vIDcuIEVsc2UsIGxldCB1bmljb2RlTWF0
Y2hpbmcgYmUgZmFsc2UuCisgICAgbGV0IHVuaWNvZGVNYXRjaGluZyA9IEBzdHJpbmdJbmNsdWRl
c0ludGVybmFsLkBjYWxsKGZsYWdzLCAidSIpOworICAgIC8vIDguIElmIGZsYWdzIGNvbnRhaW5z
ICJ5IiwgbGV0IG5ld0ZsYWdzIGJlIGZsYWdzLgorICAgIC8vIDkuIEVsc2UsIGxldCBuZXdGbGFn
cyBiZSB0aGUgc3RyaW5nIHRoYXQgaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgZmxhZ3MgYW5kICJ5
Ii4KKyAgICBsZXQgbmV3RmxhZ3MgPSBAc3RyaW5nSW5jbHVkZXNJbnRlcm5hbC5AY2FsbChmbGFn
cywgInkiKSA/IGZsYWdzIDogZmxhZ3MgKyAieSI7CisKKyAgICAvLyAxMC4gTGV0IHNwbGl0dGVy
IGJlID8gQ29uc3RydWN0KEMsIMKrIHJ4LCBuZXdGbGFncyDCuykuCisgICAgbGV0IHNwbGl0dGVy
ID0gbmV3IHNwZWNpZXNDb25zdHJ1Y3RvcihyZWdleHAsIG5ld0ZsYWdzKTsKKworICAgIC8vIFdl
IG5lZWQgdG8gY2hlY2sgYWdhaW4gZm9yIFJlZ0V4cCBzdWJjbGFzc2VzIHRoYXQgd2lsbCBmYWls
IHRoZSBzcGVjaWVzQ29uc3RydWN0b3IgdGVzdAorICAgIC8vIGJ1dCBjYW4gc3RpbGwgdXNlIHRo
ZSBmYXN0IHBhdGggYWZ0ZXIgd2UgaW52b2tlIHRoZSBjb25zdHJ1Y3RvciBhYm92ZS4KKyAgICBp
ZiAoIUBoYXNPYnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JSZWdFeHBTcGxpdChzcGxpdHRlcikpCisg
ICAgICAgIHJldHVybiBAcmVnRXhwU3BsaXRGYXN0LkBjYWxsKHNwbGl0dGVyLCBzdHIsIGxpbWl0
KTsKKworICAgIC8vIDExLiBMZXQgQSBiZSBBcnJheUNyZWF0ZSgwKS4KKyAgICBsZXQgcmVzdWx0
ID0gW107CisgICAgLy8gMTIuIExldCBsZW5ndGhBIGJlIDAuCisgICAgbGV0IHJlc3VsdExlbmd0
aCA9IDA7CisKKyAgICAvLyAxMy4gSWYgbGltaXQgaXMgdW5kZWZpbmVkLCBsZXQgbGltIGJlIDJe
MzItMTsgZWxzZSBsZXQgbGltIGJlID8gVG9VaW50MzIobGltaXQpLgorICAgIGxpbWl0ID0gKGxp
bWl0ID09PSBAdW5kZWZpbmVkKSA/IDB4ZmZmZmZmZmYgOiBsaW1pdCA+Pj4gMDsKKworICAgIC8v
IDE2LiBJZiBsaW0gPSAwLCByZXR1cm4gQS4KKyAgICBpZiAoIWxpbWl0KQorICAgICAgICByZXR1
cm4gcmVzdWx0OworCisgICAgLy8gMTQuIFtEZWZlcmVkIGZyb20gYWJvdmVdIExldCBzaXplIGJl
IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gUy4KKyAgICBsZXQgc2l6ZSA9IHN0ci5sZW5ndGg7
CisKKyAgICAvLyAxNy4gSWYgc2l6ZSA9IDAsIHRoZW4KKyAgICBpZiAoIXNpemUpIHsKKyAgICAg
ICAgLy8gYS4gTGV0IHogYmUgPyBSZWdFeHBFeGVjKHNwbGl0dGVyLCBTKS4KKyAgICAgICAgbGV0
IHogPSBAcmVnRXhwRXhlYyhzcGxpdHRlciwgc3RyKTsKKyAgICAgICAgLy8gYi4gSWYgeiBpcyBu
b3QgbnVsbCwgcmV0dXJuIEEuCisgICAgICAgIGlmICh6ICE9IG51bGwpCisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICAvLyBjLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5
KEEsICIwIiwgUykuCisgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIDAsIHN0cik7Cisg
ICAgICAgIHJlc3VsdC5sZW5ndGggPSAxOworICAgICAgICAvLyBkLiBSZXR1cm4gQS4KKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLyAxNS4gW0RlZmVyZWQgZnJvbSBhYm92
ZV0gTGV0IHAgYmUgMC4KKyAgICBsZXQgcG9zaXRpb24gPSAwOworICAgIC8vIDE4LiBMZXQgcSBi
ZSBwLgorICAgIGxldCBtYXRjaFBvc2l0aW9uID0gMDsKKworICAgIC8vIDE5LiBSZXBlYXQsIHdo
aWxlIHEgPCBzaXplCisgICAgd2hpbGUgKG1hdGNoUG9zaXRpb24gPCBzaXplKSB7CisgICAgICAg
IC8vIGEuIFBlcmZvcm0gPyBTZXQoc3BsaXR0ZXIsICJsYXN0SW5kZXgiLCBxLCB0cnVlKS4KKyAg
ICAgICAgc3BsaXR0ZXIubGFzdEluZGV4ID0gbWF0Y2hQb3NpdGlvbjsKKyAgICAgICAgLy8gYi4g
TGV0IHogYmUgPyBSZWdFeHBFeGVjKHNwbGl0dGVyLCBTKS4KKyAgICAgICAgbGV0IG1hdGNoZXMg
PSBAcmVnRXhwRXhlYyhzcGxpdHRlciwgc3RyKTsKKyAgICAgICAgLy8gYy4gSWYgeiBpcyBudWxs
LCBsZXQgcSBiZSBBZHZhbmNlU3RyaW5nSW5kZXgoUywgcSwgdW5pY29kZU1hdGNoaW5nKS4KKyAg
ICAgICAgaWYgKG1hdGNoZXMgPT09IG51bGwpCisgICAgICAgICAgICBtYXRjaFBvc2l0aW9uID0g
QGFkdmFuY2VTdHJpbmdJbmRleChzdHIsIG1hdGNoUG9zaXRpb24sIHVuaWNvZGVNYXRjaGluZyk7
CisgICAgICAgIC8vIGQuIEVsc2UgeiBpcyBub3QgbnVsbCwKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAvLyBpLiBMZXQgZSBiZSA/IFRvTGVuZ3RoKD8gR2V0KHNwbGl0dGVyLCAibGFzdElu
ZGV4IikpLgorICAgICAgICAgICAgbGV0IGVuZFBvc2l0aW9uID0gQHRvTGVuZ3RoKHNwbGl0dGVy
Lmxhc3RJbmRleCk7CisgICAgICAgICAgICAvLyBpaS4gTGV0IGUgYmUgbWluKGUsIHNpemUpLgor
ICAgICAgICAgICAgZW5kUG9zaXRpb24gPSAoZW5kUG9zaXRpb24gPD0gc2l6ZSkgPyBlbmRQb3Np
dGlvbiA6IHNpemU7CisgICAgICAgICAgICAvLyBpaWkuIElmIGUgPSBwLCBsZXQgcSBiZSBBZHZh
bmNlU3RyaW5nSW5kZXgoUywgcSwgdW5pY29kZU1hdGNoaW5nKS4KKyAgICAgICAgICAgIGlmIChl
bmRQb3NpdGlvbiA9PT0gcG9zaXRpb24pCisgICAgICAgICAgICAgICAgbWF0Y2hQb3NpdGlvbiA9
IEBhZHZhbmNlU3RyaW5nSW5kZXgoc3RyLCBtYXRjaFBvc2l0aW9uLCB1bmljb2RlTWF0Y2hpbmcp
OworICAgICAgICAgICAgLy8gaXYuIEVsc2UgZSAhPSBwLAorICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgLy8gMS4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhl
IHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGVsZW1lbnRzIGF0IGluZGljZXMgcCAo
aW5jbHVzaXZlKSB0aHJvdWdoIHEgKGV4Y2x1c2l2ZSkuCisgICAgICAgICAgICAgICAgbGV0IHN1
YlN0ciA9IEBzdHJpbmdTdWJzdHJJbnRlcm5hbC5AY2FsbChzdHIsIHBvc2l0aW9uLCBtYXRjaFBv
c2l0aW9uIC0gcG9zaXRpb24pOworICAgICAgICAgICAgICAgIC8vIDIuIFBlcmZvcm0gISBDcmVh
dGVEYXRhUHJvcGVydHkoQSwgISBUb1N0cmluZyhsZW5ndGhBKSwgVCkuCisgICAgICAgICAgICAg
ICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgcmVzdWx0TGVuZ3RoLCBzdWJTdHIpOworICAgICAg
ICAgICAgICAgIC8vIDMuIExldCBsZW5ndGhBIGJlIGxlbmd0aEEgKyAxLgorICAgICAgICAgICAg
ICAgICsrcmVzdWx0TGVuZ3RoOworICAgICAgICAgICAgICAgIC8vIDQuIElmIGxlbmd0aEEgPSBs
aW0sIHJldHVybiBBLgorICAgICAgICAgICAgICAgIGlmIChyZXN1bHRMZW5ndGggPT0gbGltaXQp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdExlbmd0aDsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgLy8gNS4gTGV0IHAgYmUgZS4KKyAgICAgICAgICAgICAgICBwb3NpdGlvbiA9
IGVuZFBvc2l0aW9uOworICAgICAgICAgICAgICAgIC8vIDYuIExldCBudW1iZXJPZkNhcHR1cmVz
IGJlID8gVG9MZW5ndGgoPyBHZXQoeiwgImxlbmd0aCIpKS4KKyAgICAgICAgICAgICAgICAvLyA3
LiBMZXQgbnVtYmVyT2ZDYXB0dXJlcyBiZSBtYXgobnVtYmVyT2ZDYXB0dXJlcy0xLCAwKS4KKyAg
ICAgICAgICAgICAgICBsZXQgbnVtYmVyT2ZDYXB0dXJlcyA9IG1hdGNoZXMubGVuZ3RoID4gMSA/
IG1hdGNoZXMubGVuZ3RoIC0gMSA6IDA7CisKKyAgICAgICAgICAgICAgICAvLyA4LiBMZXQgaSBi
ZSAxLgorICAgICAgICAgICAgICAgIGxldCBpID0gMTsKKyAgICAgICAgICAgICAgICAvLyA5LiBS
ZXBlYXQsIHdoaWxlIGkgPD0gbnVtYmVyT2ZDYXB0dXJlcywKKyAgICAgICAgICAgICAgICB3aGls
ZSAoaSA8PSBudW1iZXJPZkNhcHR1cmVzKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGEuIExl
dCBuZXh0Q2FwdHVyZSBiZSA/IEdldCh6LCAhIFRvU3RyaW5nKGkpKS4KKyAgICAgICAgICAgICAg
ICAgICAgbGV0IG5leHRDYXB0dXJlID0gbWF0Y2hlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gYi4gUGVyZm9ybSAhIENyZWF0ZURhdGFQcm9wZXJ0eShBLCAhIFRvU3RyaW5nKGxlbmd0aEEp
LCBuZXh0Q2FwdHVyZSkuCisgICAgICAgICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1
bHQsIHJlc3VsdExlbmd0aCwgbmV4dENhcHR1cmUpOworICAgICAgICAgICAgICAgICAgICAvLyBk
LiBMZXQgbGVuZ3RoQSBiZSBsZW5ndGhBICsgMS4KKyAgICAgICAgICAgICAgICAgICAgKytyZXN1
bHRMZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIC8vIGUuIElmIGxlbmd0aEEgPSBsaW0sIHJl
dHVybiBBLgorICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0TGVuZ3RoID09IGxpbWl0KSB7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubGVuZ3RoID0gcmVzdWx0TGVuZ3RoOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBjLiBMZXQgaSBiZSBpICsgMS4KKyAgICAgICAg
ICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyAx
MC4gTGV0IHEgYmUgcC4KKyAgICAgICAgICAgICAgICBtYXRjaFBvc2l0aW9uID0gcG9zaXRpb247
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgLy8gMjAuIExldCBUIGJlIGEg
U3RyaW5nIHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRo
ZSBlbGVtZW50cyBhdCBpbmRpY2VzIHAgKGluY2x1c2l2ZSkgdGhyb3VnaCBzaXplIChleGNsdXNp
dmUpLgorICAgIGxldCByZW1haW5pbmdTdHIgPSBAc3RyaW5nU3Vic3RySW50ZXJuYWwuQGNhbGwo
c3RyLCBwb3NpdGlvbiwgc2l6ZSk7CisgICAgLy8gMjEuIFBlcmZvcm0gISBDcmVhdGVEYXRhUHJv
cGVydHkoQSwgISBUb1N0cmluZyhsZW5ndGhBKSwgVCkuCisgICAgQHB1dEJ5VmFsRGlyZWN0KHJl
c3VsdCwgcmVzdWx0TGVuZ3RoLCByZW1haW5pbmdTdHIpOworICAgIHJlc3VsdC5sZW5ndGggPSAr
K3Jlc3VsdExlbmd0aDsKKyAgICAvLyAyMi4gUmV0dXJuIEEuCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ1Byb3RvdHlw
ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5n
UHJvdG90eXBlLmpzCShyZXZpc2lvbiAxOTkzMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsMyArMTI1
LDIyIEBAIGZ1bmN0aW9uIHJlcGVhdChjb3VudCkKIAogICAgIHJldHVybiBAcmVwZWF0U2xvd1Bh
dGgoc3RyaW5nLCBjb3VudCk7CiB9CisKK2Z1bmN0aW9uIHNwbGl0KHNlcGFyYXRvciwgbGltaXQp
Cit7CisgICAgInVzZSBzdHJpY3QiOworICAgIAorICAgIGlmICh0aGlzID09IG51bGwpIHsKKyAg
ICAgICAgaWYgKHRoaXMgPT09IG51bGwpCisgICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJv
cigiU3RyaW5nLnByb3RvdHlwZS5zcGxpdCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVs
bCIpOworICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiU3RyaW5nLnByb3RvdHlwZS5zcGxp
dCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkIik7CisgICAgfQorICAgIAor
ICAgIGlmIChzZXBhcmF0b3IgIT0gbnVsbCkgeworICAgICAgICB2YXIgc3BsaXR0ZXIgPSBzZXBh
cmF0b3JbQHN5bWJvbFNwbGl0XTsKKyAgICAgICAgaWYgKHNwbGl0dGVyICE9IEB1bmRlZmluZWQp
CisgICAgICAgICAgICByZXR1cm4gc3BsaXR0ZXIuQGNhbGwoc2VwYXJhdG9yLCB0aGlzLCBsaW1p
dCk7CisgICAgfQorICAgIAorICAgIHJldHVybiBAc3RyaW5nU3BsaXRGYXN0LkBjYWxsKHRoaXMs
IHNlcGFyYXRvciwgbGltaXQpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAkocmV2
aXNpb24gMTk5MzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsNiArNTcsNyBAQCBCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpCiAgICAgbV9zeW1ib2xNYXRjaC5z
ZXQobV92bSwgU3ltYm9sOjpjcmVhdGUobV92bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCpt
X3ZtLnByb3BlcnR5TmFtZXMtPm1hdGNoU3ltYm9sLmltcGwoKSkpKTsKICAgICBtX3N5bWJvbFNl
YXJjaC5zZXQobV92bSwgU3ltYm9sOjpjcmVhdGUobV92bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1w
bCY+KCptX3ZtLnByb3BlcnR5TmFtZXMtPnNlYXJjaFN5bWJvbC5pbXBsKCkpKSk7CiAgICAgbV9z
eW1ib2xTcGVjaWVzLnNldChtX3ZtLCBTeW1ib2w6OmNyZWF0ZShtX3ZtLCBzdGF0aWNfY2FzdDxT
eW1ib2xJbXBsJj4oKm1fdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbC5pbXBsKCkpKSk7
CisgICAgbV9zeW1ib2xTcGxpdC5zZXQobV92bSwgU3ltYm9sOjpjcmVhdGUobV92bSwgc3RhdGlj
X2Nhc3Q8U3ltYm9sSW1wbCY+KCptX3ZtLnByb3BlcnR5TmFtZXMtPnNwbGl0U3ltYm9sLmltcGwo
KSkpKTsKIH0KIAogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpFbWl0dGVyVHlwZSBCeXRlY29kZUlu
dHJpbnNpY1JlZ2lzdHJ5Ojpsb29rdXAoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5LmgJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01OSw2ICs2MCw3IEBAIGNsYXNzIElkZW50aWZpZXI7CiAgICAgbWFjcm8oc3ltYm9s
TWF0Y2gpIFwKICAgICBtYWNybyhzeW1ib2xTZWFyY2gpIFwKICAgICBtYWNybyhzeW1ib2xTcGVj
aWVzKSBcCisgICAgbWFjcm8oc3ltYm9sU3BsaXQpIFwKIAogY2xhc3MgQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw3
ICszMTAsNiBAQAogI2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9X
RUxMX0tOT1dOX1NZTUJPTF9OT1RfSU1QTEVNRU5URURfWUVUKG1hY3JvKVwKICAgICBtYWNybyhp
c0NvbmNhdFNwcmVhZGFibGUpIFwKICAgICBtYWNybyhyZXBsYWNlKSBcCi0gICAgbWFjcm8oc3Bs
aXQpCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9L
Tk9XTl9TWU1CT0wobWFjcm8pIFwKICAgICBtYWNybyhoYXNJbnN0YW5jZSkgXApAQCAtMzE4LDYg
KzMxNyw3IEBACiAgICAgbWFjcm8obWF0Y2gpIFwKICAgICBtYWNybyhzZWFyY2gpIFwKICAgICBt
YWNybyhzcGVjaWVzKSBcCisgICAgbWFjcm8oc3BsaXQpIFwKICAgICBtYWNybyh0b1ByaW1pdGl2
ZSkgXAogICAgIG1hY3JvKHRvU3RyaW5nVGFnKSBcCiAgICAgbWFjcm8odW5zY29wYWJsZXMpCkBA
IC00MTIsNiArNDEyLDggQEAKICAgICBtYWNybyhpbnN0YW5jZU9mKSBcCiAgICAgbWFjcm8oaXNB
cnJheSkgXAogICAgIG1hY3JvKGlzQXJyYXlDb25zdHJ1Y3RvcikgXAorICAgIG1hY3JvKGlzQ29u
c3RydWN0b3IpIFwKKyAgICBtYWNybyhpc1JlZ0V4cCkgXAogICAgIG1hY3JvKGlzU2V0KSBcCiAg
ICAgbWFjcm8oaXNNYXApIFwKICAgICBtYWNybyhyZWdFeHBDcmVhdGUpIFwKQEAgLTQxOSw3ICs0
MjEsMTcgQEAKICAgICBtYWNybyhzZXRJdGVyYXRvck5leHQpIFwKICAgICBtYWNybyhNYXBJdGVy
YXRvcikgXAogICAgIG1hY3JvKG1hcEl0ZXJhdG9yTmV4dCkgXAotCisgICAgbWFjcm8ocmVnRXhw
UHJvdG9GbGFnc0dldHRlcikgXAorICAgIG1hY3JvKHJlZ0V4cFByb3RvR2xvYmFsR2V0dGVyKSBc
CisgICAgbWFjcm8ocmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyKSBcCisgICAgbWFjcm8ocmVn
RXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIpIFwKKyAgICBtYWNybyhyZWdFeHBQcm90b1NvdXJjZUdl
dHRlcikgXAorICAgIG1hY3JvKHJlZ0V4cFByb3RvU3RpY2t5R2V0dGVyKSBcCisgICAgbWFjcm8o
cmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyKSBcCisgICAgbWFjcm8ocmVnRXhwU3BsaXRGYXN0KSBc
CisgICAgbWFjcm8oc3RyaW5nSW5jbHVkZXNJbnRlcm5hbCkgXAorICAgIG1hY3JvKHN0cmluZ1Nw
bGl0RmFzdCkgXAorICAgIG1hY3JvKHN0cmluZ1N1YnN0ckludGVybmFsKSBcCiAKIG5hbWVzcGFj
ZSBKU0MgewogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNj
cmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3Bl
Y0ludGVybmFsRnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCIKKwor
I2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbnN0cnVjdERhdGEuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIlByb3h5T2JqZWN0LmgiCisjaW5j
bHVkZSAiUmVnRXhwT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGVzU3BlY0lzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIGJvb2wgaXNDb25zdHJ1Y3RvciA9IGV4ZWMtPmFyZ3VtZW50KDApLmlzQ29uc3RydWN0b3Io
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc0NvbnN0cnVjdG9yKSk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVjSXNSZWdFeHAoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIGJvb2wgaXNSZWdFeHAgPSBleGVjLT5hcmd1bWVudCgwKS5pbmhl
cml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4oaXNSZWdFeHApKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlw
dFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnNfaAor
I2RlZmluZSBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zX2gKKworI2luY2x1ZGUgIkpT
Q0pTVmFsdWUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZXNTcGVjSXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZXNTcGVjSXNSZWdFeHAoRXhlY1N0YXRlKik7CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9uc19oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CShyZXZpc2lvbiAxOTkzMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRl
ICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKICNpbmNsdWRlICJEaXJl
Y3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25z
LmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckNvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKQEAgLTI1Niw2ICsyNTcsMTUgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6c2V0R2xvYmFsVGhpcyhWTSYgdgogICAgIG1fZ2xvYmFsVGhpcy5zZXQodm0s
IHRoaXMsIGdsb2JhbFRoaXMpOwogfQogCisKK3N0YXRpYyBKU09iamVjdCogZ2V0R2V0dGVyQnlJ
ZChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkKK3sKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWUoYmFzZSk7CisgICAgUHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKKyAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBz
bG90KTsKKyAgICByZXR1cm4gc2xvdC5nZXRQdXJlUmVzdWx0KCkudG9PYmplY3QoZXhlYyk7Cit9
CisKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogewogICAgIEFTU0VSVCh2bS5j
dXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKQEAgLTU0MCw2ICs1NTAsMTQgQEAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcgogICAgIEpTRnVuY3Rpb24qIHBy
aXZhdGVGdW5jVGhpc1RpbWVWYWx1ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwg
U3RyaW5nKCksIGRhdGVQcm90b0Z1bmNHZXRUaW1lKTsKICAgICBKU0Z1bmN0aW9uKiBwcml2YXRl
RnVuY0lzQXJyYXlDb25zdHJ1Y3RvciA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwg
U3RyaW5nKCksIGFycmF5Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlDb25zdHJ1Y3Rvcik7
CiAKKyAgICBKU09iamVjdCogcmVnRXhwUHJvdG9GbGFnc0dldHRlck9iamVjdCA9IGdldEdldHRl
ckJ5SWQoZXhlYywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPmZs
YWdzKTsKKyAgICBKU09iamVjdCogcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXJPYmplY3QgPSBnZXRH
ZXR0ZXJCeUlkKGV4ZWMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9wZXJ0eU5hbWVz
LT5nbG9iYWwpOworICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXJPYmpl
Y3QgPSBnZXRHZXR0ZXJCeUlkKGV4ZWMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5pZ25vcmVDYXNlKTsKKyAgICBKU09iamVjdCogcmVnRXhwUHJvdG9NdWx0aWxp
bmVHZXR0ZXJPYmplY3QgPSBnZXRHZXR0ZXJCeUlkKGV4ZWMsIG1fcmVnRXhwUHJvdG90eXBlLmdl
dCgpLCB2bS5wcm9wZXJ0eU5hbWVzLT5tdWx0aWxpbmUpOworICAgIEpTT2JqZWN0KiByZWdFeHBQ
cm90b1NvdXJjZUdldHRlck9iamVjdCA9IGdldEdldHRlckJ5SWQoZXhlYywgbV9yZWdFeHBQcm90
b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPnNvdXJjZSk7CisgICAgSlNPYmplY3QqIHJl
Z0V4cFByb3RvU3RpY2t5R2V0dGVyT2JqZWN0ID0gZ2V0R2V0dGVyQnlJZChleGVjLCBtX3JlZ0V4
cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+c3RpY2t5KTsKKyAgICBKU09iamVj
dCogcmVnRXhwUHJvdG9Vbmljb2RlR2V0dGVyT2JqZWN0ID0gZ2V0R2V0dGVyQnlJZChleGVjLCBt
X3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+dW5pY29kZSk7CisgICAg
CiAgICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKICAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPk5hTiwganNOYU4oKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+SW5maW5pdHksIGpzTnVtYmVyKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6aW5maW5pdHkoKSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKQEAg
LTU5Niw3ICs2MTQsNiBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5wcm9taXNlUmVhY3Rpb25Kb2JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVC
dWlsdGluRnVuY3Rpb24odm0sIHByb21pc2VPcGVyYXRpb25zUHJvbWlzZVJlYWN0aW9uSm9iQ29k
ZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSks
CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5wcm9taXNlUmVzb2x2ZVRoZW5hYmxlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6
Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBwcm9taXNlT3BlcmF0aW9uc1Byb21pc2VSZXNvbHZl
VGhlbmFibGVKb2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLkluc3BlY3Rvckluc3RydW1lbnRhdGlvblByaXZhdGVOYW1lKCks
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAot
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuYWR2YW5jZVN0cmluZ0luZGV4VW5pY29kZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNy
ZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcmVnRXhwUHJvdG90eXBlQWR2YW5jZVN0cmluZ0luZGV4
VW5pY29kZUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
TWFwUHJpdmF0ZU5hbWUsIG1hcENvbnN0cnVjdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpj
cmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIGdlbmVyYXRvclByb3RvdHlwZUdlbmVyYXRvclJlc3Vt
ZUNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkudGhpc1RpbWVWYWx1ZVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVGhpc1RpbWVW
YWx1ZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLApAQCAtNjA2LDcgKzYyMywy
OSBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVyCiAgICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5OdW1iZXJG
b3JtYXRQcml2YXRlTmFtZSgpLCBpbnRsLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pk51bWJlckZvcm1hdCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICNlbmRp
ZiAvLyBFTkFCTEUoSU5UTCkKIAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+aXNDb25zdHJ1Y3RvclByaXZhdGVOYW1lLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IHRoaXMsIDEsIFN0cmluZygpLCBlc1NwZWNJc0NvbnN0cnVjdG9yLCBOb0ludHJpbnNpYyksIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPmlzUmVnRXhwUHJpdmF0ZU5hbWUsIEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGVzU3BlY0lzUmVnRXhwLCBOb0ludHJpbnNpYyks
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNwZWNpZXNDb25zdHJ1Y3Rv
clByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgZ2xv
YmFsT2JqZWN0U3BlY2llc0NvbnN0cnVjdG9yQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250
RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPnJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXJQcml2YXRlTmFtZSwg
cmVnRXhwUHJvdG9GbGFnc0dldHRlck9iamVjdCwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+cmVn
RXhwUHJvdG9HbG9iYWxHZXR0ZXJQcml2YXRlTmFtZSwgcmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXJP
YmplY3QsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnJlZ0V4cFByb3RvSWdub3JlQ2FzZUdldHRl
clByaXZhdGVOYW1lLCByZWdFeHBQcm90b0lnbm9yZUNhc2VHZXR0ZXJPYmplY3QsIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPnJlZ0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyUHJpdmF0ZU5hbWUsIHJl
Z0V4cFByb3RvTXVsdGlsaW5lR2V0dGVyT2JqZWN0LCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5y
ZWdFeHBQcm90b1NvdXJjZUdldHRlclByaXZhdGVOYW1lLCByZWdFeHBQcm90b1NvdXJjZUdldHRl
ck9iamVjdCwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+cmVnRXhwUHJvdG9TdGlja3lHZXR0ZXJQ
cml2YXRlTmFtZSwgcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXJPYmplY3QsIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPnJlZ0V4cFByb3RvVW5pY29kZUdldHRlclByaXZhdGVOYW1lLCByZWdFeHBQcm90
b1VuaWNvZGVHZXR0ZXJPYmplY3QsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwK
KworICAgICAgICAvLyBSZWdFeHAucHJvdG90eXBlIGhlbHBlcnMuCiAgICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5yZWdFeHBDcmVhdGVQcml2YXRlTmFtZSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgZXNTcGVjUmVnRXhwQ3JlYXRl
LCBOb0ludHJpbnNpYyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmhh
c09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclJlZ0V4cFNwbGl0UHJpdmF0ZU5hbWUoKSwgSlNGdW5j
dGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWdFeHBQcm90b3R5cGVIYXNPYnNlcnZh
YmxlU2lkZUVmZmVjdHNGb3JSZWdFeHBTcGxpdENvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYWR2YW5jZVN0cmluZ0luZGV4UHJp
dmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCByZWdFeHBQ
cm90b3R5cGVBZHZhbmNlU3RyaW5nSW5kZXhDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlZ0V4cEV4ZWNQcml2YXRlTmFtZSgp
LCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlZ0V4cFByb3RvdHlwZVJl
Z0V4cEV4ZWNDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PnJlZ0V4cFNwbGl0RmFzdFByaXZhdGVOYW1lLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMs
IDIsIFN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCisKKyAgICAgICAgLy8gU3RyaW5nLnByb3RvdHlwZSBoZWxwZXJz
LgorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+c3RyaW5nSW5j
bHVkZXNJbnRlcm5hbFByaXZhdGVOYW1lLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEs
IFN0cmluZygpLCBidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbCksIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPnN0cmluZ1NwbGl0RmFzdFByaXZhdGVOYW1lLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHRoaXMsIDIsIFN0cmluZygpLCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QpLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2
bS5wcm9wZXJ0eU5hbWVzLT5zdHJpbmdTdWJzdHJJbnRlcm5hbFByaXZhdGVOYW1lLCBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIHRoaXMsIDIsIFN0cmluZygpLCBidWlsdGluU3RyaW5nU3Vic3RySW50
ZXJuYWwpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgfTsKICAgICBh
ZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xv
YmFscykpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlEZXNjcmlwdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCShyZXZpc2lvbiAxOTkzMzgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xMTQsNyArMTE0LDYgQEAgSlNPYmplY3QqIFByb3BlcnR5RGVzY3JpcHRvcjo6c2V0dGVy
T2JqZQogdm9pZCBQcm9wZXJ0eURlc2NyaXB0b3I6OnNldERlc2NyaXB0b3IoSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQodmFsdWUpOwotICAgIEFTU0VS
VCh2YWx1ZS5pc0dldHRlclNldHRlcigpID09ICEhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwog
CiAgICAgbV9hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsKICAgICBpZiAodmFsdWUuaXNHZXR0ZXJT
ZXR0ZXIoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmgJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
ICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQot
ICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAxMiwgMjAxNiBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDgs
IDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtOTMsNiArOTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoUmVnRXhwT2JqZWN0LCBtX2xhc3RJbmRleElzV3JpdGFibGUpOwogICAgIH0KIAor
ICAgIHN0YXRpYyB1bnNpZ25lZCBhZHZhbmNlU3RyaW5nVW5pY29kZShTdHJpbmcsIHVuc2lnbmVk
IGxlbmd0aCwgdW5zaWduZWQgY3VycmVudEluZGV4KTsKKwogcHJvdGVjdGVkOgogICAgIEpTX0VY
UE9SVF9QUklWQVRFIFJlZ0V4cE9iamVjdChWTSYsIFN0cnVjdHVyZSosIFJlZ0V4cCopOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKQEAgLTEwNCw3ICsx
MDYsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRH
ZW5lcmljUHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
Y29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7Ci0gICAgdW5zaWdu
ZWQgYWR2YW5jZVN0cmluZ1VuaWNvZGUoU3RyaW5nLCB1bnNpZ25lZCwgdW5zaWduZWQpOwogCiBw
cml2YXRlOgogICAgIE1hdGNoUmVzdWx0IG1hdGNoSW5saW5lKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgSlNTdHJpbmcqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk5MzM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkg
UG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIw
MDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNy0yMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJSZWdFeHBD
YWNoZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiUmVnRXhw
TWF0Y2hlc0FycmF5LmgiCisjaW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3Ry
aW5nUmVjdXJzaW9uQ2hlY2tlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTgxLDYgKzgyLDcg
QEAgdm9pZCBSZWdFeHBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJgogICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLm1hdGNoUHJpdmF0ZU5hbWUoKSwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hQcml2YXRlLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSwgMSk7CiAgICAgSlNDX0JVSUxUSU5fRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPm1hdGNoU3ltYm9sLCBy
ZWdFeHBQcm90b3R5cGVNYXRjaENvZGVHZW5lcmF0b3IsIERvbnRFbnVtKTsKICAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zZWFyY2hT
eW1ib2wsIHJlZ0V4cFByb3RvRnVuY1NlYXJjaCwgRG9udEVudW0sIDEpOworICAgIEpTQ19CVUlM
VElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zcGxpdFN5
bWJvbCwgcmVnRXhwUHJvdG90eXBlU3BsaXRDb2RlR2VuZXJhdG9yLCBEb250RW51bSk7CiAKICAg
ICBKU0Z1bmN0aW9uKiBleGVjRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgMSwgdm0ucHJvcGVydHlOYW1lcy0+ZXhlYy5zdHJpbmcoKSwgcmVnRXhwUHJvdG9G
dW5jRXhlYywgUmVnRXhwRXhlY0ludHJpbnNpYyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmV4ZWNQcml2YXRlTmFtZSwgZXhlY0Z1bmN0aW9u
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CkBAIC0xMTUsNyArMTE3LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogewogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJp
dHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkJ1aWx0aW4g
UmVnRXhwIGV4ZWMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpOwogICAg
IEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZ09yTnVsbChleGVj
KTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKQEAgLTQzNCw0ICs0MzYsMTY3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCA/IGpz
TnVtYmVyKHJlc3VsdC5zdGFydCkgOiBqc051bWJlcigtMSkpOwogfQogCitzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGFkdmFuY2VTdHJpbmdJbmRleChTdHJpbmcgc3RyLCB1bnNpZ25lZCBzdHJTaXpl
LCB1bnNpZ25lZCBpbmRleCwgYm9vbCBpc1VuaWNvZGUpCit7CisgICAgaWYgKCFpc1VuaWNvZGUp
CisgICAgICAgIHJldHVybiArK2luZGV4OworICAgIHJldHVybiBSZWdFeHBPYmplY3Q6OmFkdmFu
Y2VTdHJpbmdVbmljb2RlKHN0ciwgc3RyU2l6ZSwgaW5kZXgpOworfQorCisvLyBFUyAyMS4yLjUu
MTEgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XShzdHJpbmcsIGxpbWl0KQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisKKyAgICAvLyAxLiBbaGFuZGxlZCBieSBK
UyBidWlsdGluXSBMZXQgcnggYmUgdGhlIHRoaXMgdmFsdWUuCisgICAgLy8gMi4gW2hhbmRsZWQg
YnkgSlMgYnVpbHRpbl0gSWYgVHlwZShyeCkgaXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJy
b3IgZXhjZXB0aW9uLgorICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CisgICAgUmVnRXhwKiByZWdleHAgPSBhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAo
KTsKKworICAgIC8vIDMuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIExldCBTIGJlID8gVG9TdHJp
bmcoc3RyaW5nKS4KKyAgICBTdHJpbmcgaW5wdXQgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIEFTU0VSVCghaW5wdXQu
aXNOdWxsKCkpOworCisgICAgLy8gNC4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gTGV0IEMgYmUg
PyBTcGVjaWVzQ29uc3RydWN0b3IocngsICVSZWdFeHAlKS4KKyAgICAvLyA1LiBbaGFuZGxlZCBi
eSBKUyBidWlsdGluXSBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikp
LgorICAgIC8vIDYuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIElmIGZsYWdzIGNvbnRhaW5zICJ1
IiwgbGV0IHVuaWNvZGVNYXRjaGluZyBiZSB0cnVlLgorICAgIC8vIDcuIFtoYW5kbGVkIGJ5IEpT
IGJ1aWx0aW5dIEVsc2UsIGxldCB1bmljb2RlTWF0Y2hpbmcgYmUgZmFsc2UuCisgICAgLy8gOC4g
W2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gSWYgZmxhZ3MgY29udGFpbnMgInkiLCBsZXQgbmV3Rmxh
Z3MgYmUgZmxhZ3MuCisgICAgLy8gOS4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gRWxzZSwgbGV0
IG5ld0ZsYWdzIGJlIHRoZSBzdHJpbmcgdGhhdCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiBmbGFn
cyBhbmQgInkiLgorICAgIC8vIDEwLiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBMZXQgc3BsaXR0
ZXIgYmUgPyBDb25zdHJ1Y3QoQywgwqsgcngsIG5ld0ZsYWdzIMK7KS4KKworICAgIC8vIDExLiBM
ZXQgQSBiZSBBcnJheUNyZWF0ZSgwKS4KKyAgICAvLyAxMi4gTGV0IGxlbmd0aEEgYmUgMC4KKyAg
ICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIHVu
c2lnbmVkIHJlc3VsdExlbmd0aCA9IDA7CisKKyAgICAvLyAxMy4gSWYgbGltaXQgaXMgdW5kZWZp
bmVkLCBsZXQgbGltIGJlIDJeMzItMTsgZWxzZSBsZXQgbGltIGJlID8gVG9VaW50MzIobGltaXQp
LgorICAgIEpTVmFsdWUgbGltaXRWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIHVuc2ln
bmVkIGxpbWl0ID0gbGltaXRWYWx1ZS5pc1VuZGVmaW5lZCgpID8gMHhGRkZGRkZGRnUgOiBsaW1p
dFZhbHVlLnRvVUludDMyKGV4ZWMpOworCisgICAgLy8gMTQuIExldCBzaXplIGJlIHRoZSBudW1i
ZXIgb2YgZWxlbWVudHMgaW4gUy4KKyAgICB1bnNpZ25lZCBpbnB1dFNpemUgPSBpbnB1dC5sZW5n
dGgoKTsKKworICAgIC8vIDE1LiBMZXQgcCA9IDAuCisgICAgdW5zaWduZWQgcG9zaXRpb24gPSAw
OworCisgICAgLy8gMTYuIElmIGxpbSA9PSAwLCByZXR1cm4gQS4KKyAgICBpZiAoIWxpbWl0KQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisKKyAgICAvLyAxNy4gSWYg
c2l6ZSA9PSAwLCB0aGVuCisgICAgaWYgKGlucHV0LmlzRW1wdHkoKSkgeworICAgICAgICAvLyBh
LiBMZXQgeiBiZSA/IFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFMpLgorICAgICAgICAvLyBiLiBJZiB6
IGlzIG5vdCBudWxsLCByZXR1cm4gQS4KKyAgICAgICAgLy8gYy4gUGVyZm9ybSAhIENyZWF0ZURh
dGFQcm9wZXJ0eShBLCAiMCIsIFMpLgorICAgICAgICAvLyBkLiBSZXR1cm4gQS4KKyAgICAgICAg
aWYgKCFyZWdleHAtPm1hdGNoKHZtLCBpbnB1dCwgMCkpCisgICAgICAgICAgICByZXN1bHQtPnB1
dERpcmVjdEluZGV4KGV4ZWMsIDAsIGpzU3RyaW5nV2l0aFJldXNlKGV4ZWMsIHRoaXNWYWx1ZSwg
aW5wdXQpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgIH0K
KworICAgIC8vIDE4LiBMZXQgcSA9IHAuCisgICAgdW5zaWduZWQgbWF0Y2hQb3NpdGlvbiA9IHBv
c2l0aW9uOworICAgIC8vIDE5LiBSZXBlYXQsIHdoaWxlIHEgPCBzaXplCisgICAgYm9vbCByZWdF
eHBJc1N0aWNreSA9IHJlZ2V4cC0+c3RpY2t5KCk7CisgICAgYm9vbCByZWdFeHBJc1VuaWNvZGUg
PSByZWdleHAtPnVuaWNvZGUoKTsKKyAgICB3aGlsZSAobWF0Y2hQb3NpdGlvbiA8IGlucHV0U2l6
ZSkgeworICAgICAgICBWZWN0b3I8aW50LCAzMj4gb3ZlY3RvcjsKKworICAgICAgICAvLyBhLiBQ
ZXJmb3JtID8gU2V0KHNwbGl0dGVyLCAibGFzdEluZGV4IiwgcSwgdHJ1ZSkuCisgICAgICAgIC8v
IGIuIExldCB6IGJlID8gUmVnRXhwRXhlYyhzcGxpdHRlciwgUykuCisgICAgICAgIGludCBtcG9z
ID0gcmVnZXhwLT5tYXRjaCh2bSwgaW5wdXQsIG1hdGNoUG9zaXRpb24sIG92ZWN0b3IpOworCisg
ICAgICAgIC8vIGMuIElmIHogaXMgbnVsbCwgbGV0IHEgYmUgQWR2YW5jZVN0cmluZ0luZGV4KFMs
IHEsIHVuaWNvZGVNYXRjaGluZykuCisgICAgICAgIGlmIChtcG9zIDwgMCkgeworICAgICAgICAg
ICAgaWYgKCFyZWdFeHBJc1N0aWNreSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIG1hdGNoUG9zaXRpb24gPSBhZHZhbmNlU3RyaW5nSW5kZXgoaW5wdXQsIGlucHV0U2l6ZSwg
bWF0Y2hQb3NpdGlvbiwgcmVnRXhwSXNVbmljb2RlKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obXBvcykgPj0gaW5w
dXRTaXplKSB7CisgICAgICAgICAgICAvLyBUaGUgc3BlYyByZWRvZXMgdGhlIFJlZ0V4cEV4ZWMg
c3RhcnRpbmcgYXQgdGhlIG5leHQgY2hhcmFjdGVyIG9mIHRoZSBpbnB1dC4KKyAgICAgICAgICAg
IC8vIEJ1dCBpbiBvdXIgY2FzZSwgbXBvcyA8IDAgbWVhbnMgdGhhdCB0aGUgbmF0aXZlIHJlZ2V4
cCBhbHJlYWR5IHNlYXJjaGVkIGFsbCBwZXJtdXRhdGlvbnMKKyAgICAgICAgICAgIC8vIGFuZCBr
bm93IHRoYXQgd2Ugd29uJ3QgYmUgYWJsZSB0byBmaW5kIGEgbWF0Y2ggZm9yIHRoZSBzZXBhcmF0
b3IgZXZlbiBpZiB3ZSByZWRvIHRoZQorICAgICAgICAgICAgLy8gUmVnRXhwRXhlYyBzdGFydGlu
ZyBhdCB0aGUgbmV4dCBjaGFyYWN0ZXIgb2YgdGhlIGlucHV0LiBTbywganVzdCBiYWlsLgorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBkLiBFbHNlLCB6IGlzIG5v
dCBudWxsCisgICAgICAgIC8vICAgIGkuIExldCBlIGJlID8gVG9MZW5ndGgoPyBHZXQoc3BsaXR0
ZXIsICJsYXN0SW5kZXgiKSkuCisgICAgICAgIC8vICAgaWkuIExldCBlIGJlIG1pbihlLCBzaXpl
KS4KKyAgICAgICAgbWF0Y2hQb3NpdGlvbiA9IG1wb3M7CisgICAgICAgIHVuc2lnbmVkIG1hdGNo
RW5kID0gb3ZlY3RvclsxXTsKKworICAgICAgICAvLyAgaWlpLiBJZiBlID0gcCwgbGV0IHEgYmUg
QWR2YW5jZVN0cmluZ0luZGV4KFMsIHEsIHVuaWNvZGVNYXRjaGluZykuCisgICAgICAgIGlmICht
YXRjaEVuZCA9PSBwb3NpdGlvbikgeworICAgICAgICAgICAgbWF0Y2hQb3NpdGlvbiA9IGFkdmFu
Y2VTdHJpbmdJbmRleChpbnB1dCwgaW5wdXRTaXplLCBtYXRjaFBvc2l0aW9uLCByZWdFeHBJc1Vu
aWNvZGUpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgLy8gaWYg
bWF0Y2hFbmQgPT0gMCB0aGVuIHBvc2l0aW9uIHNob3VsZCBhbHNvIGJlIHplcm8gYW5kIHRodXMg
bWF0Y2hFbmQgc2hvdWxkIGVxdWFsIHBvc2l0aW9uLgorICAgICAgICBBU1NFUlQobWF0Y2hFbmQp
OworCisgICAgICAgIC8vICAgaXYuIEVsc2UgZSAhPSBwLAorICAgICAgICB7CisgICAgICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZkNhcHR1cmVzID0gcmVnZXhwLT5udW1TdWJwYXR0ZXJucygpOwor
ICAgICAgICAgICAgdW5zaWduZWQgbmV3UmVzdWx0TGVuZ3RoID0gcmVzdWx0TGVuZ3RoICsgbnVt
YmVyT2ZDYXB0dXJlcyArIDE7CisgICAgICAgICAgICBpZiAobmV3UmVzdWx0TGVuZ3RoIDwgbnVt
YmVyT2ZDYXB0dXJlcyB8fCBuZXdSZXN1bHRMZW5ndGggPj0gTUFYX1NUT1JBR0VfVkVDVE9SX0lO
REVYKSB7CisgICAgICAgICAgICAgICAgLy8gTGV0J3MgY29uc2lkZXIgd2hhdCdzIGJlc3QgZm9y
IHVzZXJzIGhlcmUuIFdlJ3JlIGFib3V0IHRvIGluY3JlYXNlIHRoZSBsZW5ndGggb2YKKyAgICAg
ICAgICAgICAgICAvLyB0aGUgc3BsaXQgYXJyYXkgYmV5b25kIHRoZSBtYXhpbXVtIGxlbmd0aCB0
aGF0IHdlIGNhbiBzdXBwb3J0IGVmZmljaWVudGx5LiBUaGlzCisgICAgICAgICAgICAgICAgLy8g
d2lsbCBjYXVzZSB1cyB0byB1c2UgYSBIYXNoTWFwIGZvciB0aGUgbmV3IGVudHJpZXMgYWZ0ZXIg
dGhpcyBwb2ludC4gVGhhdCdzIGdvaW5nCisgICAgICAgICAgICAgICAgLy8gdG8gcmVzdWx0IGlu
IGEgdmVyeSBsb25nIHJ1bm5pbmcgdGltZSBvZiB0aGlzIGZ1bmN0aW9uIGFuZCB2ZXJ5IGxhcmdl
IG1lbW9yeQorICAgICAgICAgICAgICAgIC8vIHVzYWdlLiBJbiBteSBleHBlcmltZW50cywgSlND
IHdpbGwgc2l0IHNwaW5uaW5nIGZvciBtaW51dGVzIGFmdGVyIGdldHRpbmcgaGVyZSBhbmQKKyAg
ICAgICAgICAgICAgICAvLyBpdCB3YXMgdXNpbmcgPjRHQiBvZiBtZW1vcnkgYW5kIGV2ZW50dWFs
bHkgZ3JldyB0byA4R0IuIEl0IGtlcHQgcnVubmluZyB3aXRob3V0CisgICAgICAgICAgICAgICAg
Ly8gZmluaXNoaW5nIHVudGlsIEkga2lsbGVkIGl0LiBUaGF0J3MgcHJvYmFibHkgbm90IHdoYXQg
dGhlIHVzZXIgd2FudGVkLiBUaGUgdXNlciwKKyAgICAgICAgICAgICAgICAvLyBvciB0aGUgcHJv
Z3JhbSB0aGF0IHRoZSB1c2VyIGlzIHJ1bm5pbmcsIHByb2JhYmx5IG1hZGUgYSBtaXN0YWtlIGJ5
IGNhbGxpbmcgdGhpcworICAgICAgICAgICAgICAgIC8vIG1ldGhvZCBpbiBzdWNoIGEgd2F5IHRo
YXQgaXQgcmVzdWx0ZWQgaW4gc3VjaCBhbiBvYm5veGlvdXMgYXJyYXkuIFRoZXJlZm9yZSwgdG8K
KyAgICAgICAgICAgICAgICAvLyBwcm90ZWN0IG91cnNlbHZlcywgd2UgYmFpbCBhdCB0aGlzIHBv
aW50LgorICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyAxLiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVh
bCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgZWxlbWVudHMgYXQgaW5k
aWNlcyBwIChpbmNsdXNpdmUpIHRocm91Z2ggcSAoZXhjbHVzaXZlKS4KKyAgICAgICAgICAgIC8v
IDIuIFBlcmZvcm0gISBDcmVhdGVEYXRhUHJvcGVydHkoQSwgISBUb1N0cmluZyhsZW5ndGhBKSwg
VCkuCisgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0
aCwganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgcG9zaXRpb24sIG1hdGNoUG9z
aXRpb24gLSBwb3NpdGlvbikpOworCisgICAgICAgICAgICAvLyAzLiBMZXQgbGVuZ3RoQSBiZSBs
ZW5ndGhBICsgMS4KKyAgICAgICAgICAgIC8vIDQuIElmIGxlbmd0aEEgPSBsaW0sIHJldHVybiBB
LgorICAgICAgICAgICAgaWYgKCsrcmVzdWx0TGVuZ3RoID09IGxpbWl0KQorICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKworICAgICAgICAgICAgLy8gNS4g
TGV0IHAgYmUgZS4KKyAgICAgICAgICAgIHBvc2l0aW9uID0gbWF0Y2hFbmQ7CisKKyAgICAgICAg
ICAgIC8vIDYuIExldCBudW1iZXJPZkNhcHR1cmVzIGJlID8gVG9MZW5ndGgoPyBHZXQoeiwgImxl
bmd0aCIpKS4KKyAgICAgICAgICAgIC8vIDcuIExldCBudW1iZXJPZkNhcHR1cmVzIGJlIG1heChu
dW1iZXJPZkNhcHR1cmVzLTEsIDApLgorICAgICAgICAgICAgLy8gOC4gTGV0IGkgYmUgMS4KKyAg
ICAgICAgICAgIC8vIDkuIFJlcGVhdCwgd2hpbGUgaSA8PSBudW1iZXJPZkNhcHR1cmVzLAorICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBudW1iZXJPZkNhcHR1cmVzOyArK2kp
IHsKKyAgICAgICAgICAgICAgICAvLyBhLiBMZXQgbmV4dENhcHR1cmUgYmUgPyBHZXQoeiwgISBU
b1N0cmluZyhpKSkuCisgICAgICAgICAgICAgICAgLy8gYi4gUGVyZm9ybSAhIENyZWF0ZURhdGFQ
cm9wZXJ0eShBLCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBuZXh0Q2FwdHVyZSkuCisgICAgICAgICAg
ICAgICAgaW50IHN1YiA9IG92ZWN0b3JbaSAqIDJdOworICAgICAgICAgICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoLCBzdWIgPCAwID8ganNVbmRlZmluZWQo
KSA6IGpzU3Vic3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQsIHN1Yiwgb3ZlY3RvcltpICog
MiArIDFdIC0gc3ViKSk7CisKKyAgICAgICAgICAgICAgICAvLyBjLiBMZXQgaSBiZSBpICsgMS4K
KyAgICAgICAgICAgICAgICAvLyBkLiBMZXQgbGVuZ3RoQSBiZSBsZW5ndGhBICsgMS4KKyAgICAg
ICAgICAgICAgICAvLyBlLiBJZiBsZW5ndGhBID0gbGltLCByZXR1cm4gQS4KKyAgICAgICAgICAg
ICAgICBpZiAoKytyZXN1bHRMZW5ndGggPT0gbGltaXQpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gMTAuIExldCBxIGJlIHAuCisgICAgICAgICAgICBtYXRjaFBvc2l0aW9uID0gcG9zaXRp
b247CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyAyMC4gTGV0IFQgYmUgYSBTdHJpbmcgdmFs
dWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGVsZW1lbnRz
IGF0IGluZGljZXMgcCAoaW5jbHVzaXZlKSB0aHJvdWdoIHNpemUgKGV4Y2x1c2l2ZSkuCisgICAg
Ly8gMjEuIFBlcmZvcm0gISBDcmVhdGVEYXRhUHJvcGVydHkoQSwgISBUb1N0cmluZyhsZW5ndGhB
KSwgVCkuCisgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgrKywg
anNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgcG9zaXRpb24sIGlucHV0U2l6ZSAt
IHBvc2l0aW9uKSk7CisKKyAgICAvLyAyMi4gUmV0dXJuIEEuCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCShyZXZpc2lvbiAx
OTkzMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsOCBAQCBwcml2YXRlOgogICAgIFdyaXRlQmFy
cmllcjxSZWdFeHA+IG1fZW1wdHlSZWdFeHA7CiB9OwogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqKTsKKwogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBSZWdFeHBQcm90b3R5cGVfaApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDE5OTMzOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNywgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3
LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtODEsNiArODEsMjkgQEAgaW5saW5lIFN0cmluZ09iamVjdCogYXNTdHJpbmdP
YmplY3QoSlNWYQogCiBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmdPYmplY3QqIGNvbnN0cnVjdFN0
cmluZyhWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKKy8vIEhlbHBlciBmb3IgcHJv
ZHVjaW5nIGEgSlNTdHJpbmcgZm9yICdzdHJpbmcnLCB3aGVyZSAnc3RyaW5nJyB3YXMgYmVlbiBw
cm9kdWNlZCBieQorLy8gY2FsbGluZyBUb1N0cmluZyBvbiAnb3JpZ2luYWxWYWx1ZScuIEluIGNh
c2VzIHdoZXJlICdvcmlnaW5hbFZhbHVlJyBhbHJlYWR5IHdhcyBhCisvLyBzdHJpbmcgcHJpbWl0
aXZlIHdlIGNhbiBqdXN0IHVzZSB0aGlzLCBvdGhlcndpc2Ugd2UgbmVlZCB0byBhbGxvY2F0ZSBh
IG5ldyBKU1N0cmluZy4KK3N0YXRpYyBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nV2l0aFJldXNl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvcmlnaW5hbFZhbHVlLCBjb25zdCBTdHJpbmcmIHN0
cmluZykKK3sKKyAgICBpZiAob3JpZ2luYWxWYWx1ZS5pc1N0cmluZygpKSB7CisgICAgICAgIEFT
U0VSVChhc1N0cmluZyhvcmlnaW5hbFZhbHVlKS0+dmFsdWUoZXhlYykgPT0gc3RyaW5nKTsKKyAg
ICAgICAgcmV0dXJuIGFzU3RyaW5nKG9yaWdpbmFsVmFsdWUpOworICAgIH0KKyAgICByZXR1cm4g
anNTdHJpbmcoZXhlYywgc3RyaW5nKTsKK30KKworLy8gSGVscGVyIHRoYXQgdHJpZXMgdG8gdXNl
IHRoZSBKU1N0cmluZyBzdWJzdHJpbmcgc2hhcmluZyBtZWNoYW5pc20gaWYgJ29yaWdpbmFsVmFs
dWUnIGlzIGEgSlNTdHJpbmcuCitzdGF0aWMgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb3JpZ2luYWxWYWx1ZSwgY29uc3QgU3RyaW5nJiBzdHJp
bmcsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmIChvcmlnaW5h
bFZhbHVlLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgQVNTRVJUKGFzU3RyaW5nKG9yaWdpbmFsVmFs
dWUpLT52YWx1ZShleGVjKSA9PSBzdHJpbmcpOworICAgICAgICByZXR1cm4ganNTdWJzdHJpbmco
ZXhlYywgYXNTdHJpbmcob3JpZ2luYWxWYWx1ZSksIG9mZnNldCwgbGVuZ3RoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4ZWMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpOworfQor
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU3RyaW5nT2JqZWN0X2gKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMTk5MzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAg
Q29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTMsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNC0y
MDA4LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5
cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDE1
IEpvcmRhbiBIYXJiYW5kIChsamhhcmJAZ21haWwuY29tKQogICoKQEAgLTcwLDcgKzcwLDYgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNQYWRTdGFydChFeGVjU3RhdGUqKTsKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwbGFjZShFeGVjU3RhdGUq
KTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU2xpY2UoRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1Nw
bGl0KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNTdWJzdHIoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY1N1YnN0cmluZyhFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoRXhlY1N0YXRlKik7CkBAIC0xMTMs
NiArMTEyLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFN0cmluZ1Byb3RvdHlwZTo6c19pbmZvIAogICAg
IG1hdGNoICAgICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQogICAgIHJlcGVhdCAg
ICBKU0J1aWx0aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQogICAgIHNlYXJjaCAgICBKU0J1aWx0
aW4gICAgRG9udEVudW18RnVuY3Rpb24gMQorICAgIHNwbGl0ICAgICBKU0J1aWx0aW4gICAgRG9u
dEVudW18RnVuY3Rpb24gMQogQGVuZAogKi8KIApAQCAtMTM5LDcgKzEzOSw2IEBAIHZvaWQgU3Ry
aW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTigicGFkU3RhcnQiLCBzdHJpbmdQcm90b0Z1bmNQYWRTdGFydCwg
RG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTigicmVwbGFjZSIsIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2UsIERvbnRFbnVtLCAy
LCBTdHJpbmdQcm90b3R5cGVSZXBsYWNlSW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTigic2xpY2UiLCBzdHJpbmdQcm90b0Z1bmNTbGljZSwgRG9u
dEVudW0sIDIpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJz
cGxpdCIsIHN0cmluZ1Byb3RvRnVuY1NwbGl0LCBEb250RW51bSwgMik7CiAgICAgSlNDX05BVElW
RV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInN1YnN0ciIsIHN0cmluZ1Byb3RvRnVuY1N1
YnN0ciwgRG9udEVudW0sIDIpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKCJzdWJzdHJpbmciLCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmcsIERvbnRFbnVtLCAy
KTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigidG9Mb3dlckNh
c2UiLCBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZSwgRG9udEVudW0sIDApOwpAQCAtMTk1LDI4
ICsxOTQsNiBAQCBib29sIFN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotLy8gSGVscGVyIGZvciBwcm9kdWNpbmcgYSBKU1N0cmluZyBmb3IgJ3N0
cmluZycsIHdoZXJlICdzdHJpbmcnIHdhcyBiZWVuIHByb2R1Y2VkIGJ5Ci0vLyBjYWxsaW5nIFRv
U3RyaW5nIG9uICdvcmlnaW5hbFZhbHVlJy4gSW4gY2FzZXMgd2hlcmUgJ29yaWdpbmFsVmFsdWUn
IGFscmVhZHkgd2FzIGEKLS8vIHN0cmluZyBwcmltaXRpdmUgd2UgY2FuIGp1c3QgdXNlIHRoaXMs
IG90aGVyd2lzZSB3ZSBuZWVkIHRvIGFsbG9jYXRlIGEgbmV3IEpTU3RyaW5nLgotc3RhdGljIGlu
bGluZSBKU1N0cmluZyoganNTdHJpbmdXaXRoUmV1c2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IG9yaWdpbmFsVmFsdWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIGlmIChvcmlnaW5h
bFZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgQVNTRVJUKGFzU3RyaW5nKG9yaWdpbmFsVmFs
dWUpLT52YWx1ZShleGVjKSA9PSBzdHJpbmcpOwotICAgICAgICByZXR1cm4gYXNTdHJpbmcob3Jp
Z2luYWxWYWx1ZSk7Ci0gICAgfQotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBzdHJpbmcpOwot
fQotCi0vLyBIZWxwZXIgdGhhdCB0cmllcyB0byB1c2UgdGhlIEpTU3RyaW5nIHN1YnN0cmluZyBz
aGFyaW5nIG1lY2hhbmlzbSBpZiAnb3JpZ2luYWxWYWx1ZScgaXMgYSBKU1N0cmluZy4KLXN0YXRp
YyBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBv
cmlnaW5hbFZhbHVlLCBjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCi17Ci0gICAgaWYgKG9yaWdpbmFsVmFsdWUuaXNTdHJpbmcoKSkgewotICAg
ICAgICBBU1NFUlQoYXNTdHJpbmcob3JpZ2luYWxWYWx1ZSktPnZhbHVlKGV4ZWMpID09IHN0cmlu
Zyk7Ci0gICAgICAgIHJldHVybiBqc1N1YnN0cmluZyhleGVjLCBhc1N0cmluZyhvcmlnaW5hbFZh
bHVlKSwgb2Zmc2V0LCBsZW5ndGgpOwotICAgIH0KLSAgICByZXR1cm4ganNTdWJzdHJpbmcoZXhl
Yywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCk7Ci19Ci0KIHN0YXRpYyBORVZFUl9JTkxJTkUgU3Ry
aW5nIHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlc1Nsb3coU3RyaW5nVmlldyByZXBsYWNlbWVudCwg
U3RyaW5nVmlldyBzb3VyY2UsIGNvbnN0IGludCogb3ZlY3RvciwgUmVnRXhwKiByZWcsIHNpemVf
dCBpKQogewogICAgIFN0cmluZ0J1aWxkZXIgc3Vic3RpdHV0ZWRSZXBsYWNlbWVudDsKQEAgLTEx
ODEsMTY5ICsxMTU4LDU4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgc3BsaXRTdHJpbmdC
eU8KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLS8vIEVTIDUuMSAtIDE1LjUuNC4xNCBTdHJpbmcu
cHJvdG90eXBlLnNwbGl0IChzZXBhcmF0b3IsIGxpbWl0KQotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdChFeGVjU3RhdGUqIGV4ZWMpCisvLyBFUyAyMS4x
LjMuMTcgU3RyaW5nLnByb3RvdHlwZS5zcGxpdChzZXBhcmF0b3IsIGxpbWl0KQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBl
eGVjKQogewotICAgIC8vIDEuIENhbGwgQ2hlY2tPYmplY3RDb2VyY2libGUgcGFzc2luZyB0aGUg
dGhpcyB2YWx1ZSBhcyBpdHMgYXJndW1lbnQuCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKLSAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEFTU0VSVChjaGVj
a09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKTsKIAotICAgIC8vIDIuIExldCBTIGJlIHRoZSBy
ZXN1bHQgb2YgY2FsbGluZyBUb1N0cmluZywgZ2l2aW5nIGl0IHRoZSB0aGlzIHZhbHVlIGFzIGl0
cyBhcmd1bWVudC4KLSAgICAvLyA2LiBMZXQgcyBiZSB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMg
aW4gUy4KKyAgICAvLyAzLiBMZXQgUyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgVG9TdHJpbmcs
IGdpdmluZyBpdCB0aGUgdGhpcyB2YWx1ZSBhcyBpdHMgYXJndW1lbnQuCisgICAgLy8gNy4gTGV0
IHMgYmUgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIFMuCiAgICAgU3RyaW5nIGlucHV0ID0g
dGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgQVNTRVJUKCFpbnB1dC5pc051bGwoKSk7CiAKLSAgICAvLyAzLiBMZXQgQSBiZSBh
IG5ldyBhcnJheSBjcmVhdGVkIGFzIGlmIGJ5IHRoZSBleHByZXNzaW9uIG5ldyBBcnJheSgpCisg
ICAgLy8gNC4gTGV0IEEgYmUgYSBuZXcgYXJyYXkgY3JlYXRlZCBhcyBpZiBieSB0aGUgZXhwcmVz
c2lvbiBuZXcgQXJyYXkoKQogICAgIC8vICAgIHdoZXJlIEFycmF5IGlzIHRoZSBzdGFuZGFyZCBi
dWlsdC1pbiBjb25zdHJ1Y3RvciB3aXRoIHRoYXQgbmFtZS4KICAgICBKU0FycmF5KiByZXN1bHQg
PSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwogCi0gICAgLy8gNC4gTGV0IGxlbmd0aEEg
YmUgMC4KKyAgICAvLyA1LiBMZXQgbGVuZ3RoQSBiZSAwLgogICAgIHVuc2lnbmVkIHJlc3VsdExl
bmd0aCA9IDA7CiAKLSAgICAvLyA1LiBJZiBsaW1pdCBpcyB1bmRlZmluZWQsIGxldCBsaW0gPSAy
XjMyLTE7IGVsc2UgbGV0IGxpbSA9IFRvVWludDMyKGxpbWl0KS4KLSAgICBKU1ZhbHVlIGxpbWl0
VmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICAvLyA2LiBJZiBsaW1pdCBpcyB1bmRlZmlu
ZWQsIGxldCBsaW0gPSAyXjMyLTE7IGVsc2UgbGV0IGxpbSA9IFRvVWludDMyKGxpbWl0KS4KKyAg
ICBKU1ZhbHVlIGxpbWl0VmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICB1
bnNpZ25lZCBsaW1pdCA9IGxpbWl0VmFsdWUuaXNVbmRlZmluZWQoKSA/IDB4RkZGRkZGRkZ1IDog
bGltaXRWYWx1ZS50b1VJbnQzMihleGVjKTsKIAotICAgIC8vIDcuIExldCBwID0gMC4KKyAgICAv
LyA4LiBMZXQgcCA9IDAuCiAgICAgc2l6ZV90IHBvc2l0aW9uID0gMDsKIAotICAgIC8vIDguIElm
IHNlcGFyYXRvciBpcyBhIFJlZ0V4cCBvYmplY3QgKGl0cyBbW0NsYXNzXV0gaXMgIlJlZ0V4cCIp
LCBsZXQgUiA9IHNlcGFyYXRvcjsKKyAgICAvLyA5LiBJZiBzZXBhcmF0b3IgaXMgYSBSZWdFeHAg
b2JqZWN0IChpdHMgW1tDbGFzc11dIGlzICJSZWdFeHAiKSwgbGV0IFIgPSBzZXBhcmF0b3I7CiAg
ICAgLy8gICAgb3RoZXJ3aXNlIGxldCBSID0gVG9TdHJpbmcoc2VwYXJhdG9yKS4KLSAgICBKU1Zh
bHVlIHNlcGFyYXRvclZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgaWYgKHNlcGFyYXRv
clZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkgewotICAgICAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKLSAgICAgICAgUmVnRXhwKiByZWcgPSBhc1JlZ0V4cE9iamVjdChzZXBh
cmF0b3JWYWx1ZSktPnJlZ0V4cCgpOwotCi0gICAgICAgIC8vIDkuIElmIGxpbSA9PSAwLCByZXR1
cm4gQS4KLSAgICAgICAgaWYgKCFsaW1pdCkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKLQotICAgICAgICAvLyAxMC4gSWYgc2VwYXJhdG9yIGlzIHVuZGVmaW5l
ZCwgdGhlbgotICAgICAgICBpZiAoc2VwYXJhdG9yVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAg
ICAgICAgICAgLy8gYS4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1l
dGhvZCBvZiBBIHdpdGggYXJndW1lbnRzICIwIiwKLSAgICAgICAgICAgIC8vICAgIFByb3BlcnR5
IERlc2NyaXB0b3Ige1tbVmFsdWVdXTogUywgW1tXcml0YWJsZV1dOiB0cnVlLCBbW0VudW1lcmFi
bGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZX0sIGFuZCBmYWxzZS4KLSAgICAgICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwganNTdHJpbmdXaXRoUmV1c2UoZXhl
YywgdGhpc1ZhbHVlLCBpbnB1dCkpOwotICAgICAgICAgICAgLy8gYi4gUmV0dXJuIEEuCi0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyAxMS4gSWYgcyA9PSAwLCB0aGVuCi0gICAgICAgIGlmIChpbnB1dC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIC8vIGEuIENhbGwgU3BsaXRNYXRjaChTLCAwLCBSKSBhbmQgbGV0IHog
YmUgaXRzIE1hdGNoUmVzdWx0IHJlc3VsdC4KLSAgICAgICAgICAgIC8vIGIuIElmIHogaXMgbm90
IGZhaWx1cmUsIHJldHVybiBBLgotICAgICAgICAgICAgLy8gYy4gQ2FsbCB0aGUgW1tEZWZpbmVP
d25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBBIHdpdGggYXJndW1lbnRzICIwIiwKLSAg
ICAgICAgICAgIC8vICAgIFByb3BlcnR5IERlc2NyaXB0b3Ige1tbVmFsdWVdXTogUywgW1tXcml0
YWJsZV1dOiB0cnVlLCBbW0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVdXTogdHJ1
ZX0sIGFuZCBmYWxzZS4KLSAgICAgICAgICAgIC8vIGQuIFJldHVybiBBLgotICAgICAgICAgICAg
aWYgKCFyZWctPm1hdGNoKCp2bSwgaW5wdXQsIDApKQotICAgICAgICAgICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwganNTdHJpbmdXaXRoUmV1c2UoZXhlYywgdGhpc1ZhbHVl
LCBpbnB1dCkpOwotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gMTIuIExldCBxID0gcC4KLSAgICAgICAgc2l6ZV90IG1h
dGNoUG9zaXRpb24gPSAwOwotICAgICAgICAvLyAxMy4gUmVwZWF0LCB3aGlsZSBxICE9IHMKLSAg
ICAgICAgd2hpbGUgKG1hdGNoUG9zaXRpb24gPCBpbnB1dC5sZW5ndGgoKSkgewotICAgICAgICAg
ICAgLy8gYS4gQ2FsbCBTcGxpdE1hdGNoKFMsIHEsIFIpIGFuZCBsZXQgeiBiZSBpdHMgTWF0Y2hS
ZXN1bHQgcmVzdWx0LgotICAgICAgICAgICAgVmVjdG9yPGludCwgMzI+IG92ZWN0b3I7Ci0gICAg
ICAgICAgICBpbnQgbXBvcyA9IHJlZy0+bWF0Y2goKnZtLCBpbnB1dCwgbWF0Y2hQb3NpdGlvbiwg
b3ZlY3Rvcik7Ci0KLSAgICAgICAgICAgIC8vIGIuIElmIHogaXMgYSBmYWlsdXJlIHRoZW4gd2Ug
Y2FuIGJyZWFrIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG1hdGNoZXMKLSAgICAgICAgICAgIGlmICht
cG9zIDwgMCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIG1hdGNoUG9zaXRp
b24gPSBtcG9zOwotCi0gICAgICAgICAgICAvLyBpZiB0aGUgbWF0Y2ggaXMgdGhlIGVtcHR5IG1h
dGNoIGF0IHRoZSBlbmQsIGJyZWFrLgotICAgICAgICAgICAgaWYgKG1hdGNoUG9zaXRpb24gPj0g
aW5wdXQubGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIC8v
IGMuIEVsc2UsIHogaXMgbm90IGZhaWx1cmUKLSAgICAgICAgICAgIC8vIGkuIHogbXVzdCBiZSBh
IFN0YXRlLiBMZXQgZSBiZSB6J3MgZW5kSW5kZXggYW5kIGxldCBjYXAgYmUgeidzIGNhcHR1cmVz
IGFycmF5LgotICAgICAgICAgICAgc2l6ZV90IG1hdGNoRW5kID0gb3ZlY3RvclsxXTsKLQotICAg
ICAgICAgICAgLy8gaWkuIElmIGUgPT0gcCwgdGhlbiBsZXQgcSA9IHEgKyAxLgotICAgICAgICAg
ICAgaWYgKG1hdGNoRW5kID09IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICAgICAgKyttYXRjaFBv
c2l0aW9uOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgLy8gaWlpLiBpZiBtYXRjaEVuZCA9PSAwIHRoZW4gcG9zaXRpb24gc2hvdWxkIGFsc28g
YmUgemVybyBhbmQgdGh1cyBtYXRjaEVuZCBzaG91bGQgZXF1YWwgcG9zaXRpb24uCi0gICAgICAg
ICAgICBBU1NFUlQobWF0Y2hFbmQpOwotCi0gICAgICAgICAgICAvLyBpaWkuIEVsc2UsIGUgIT0g
cAotCi0gICAgICAgICAgICAvLyAxLiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0
aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgY2hhcmFjdGVycyBhdCBwb3NpdGlv
bnMgcCAoaW5jbHVzaXZlKQotICAgICAgICAgICAgLy8gICAgdGhyb3VnaCBxIChleGNsdXNpdmUp
LgotICAgICAgICAgICAgLy8gMi4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVy
bmFsIG1ldGhvZCBvZiBBIHdpdGggYXJndW1lbnRzIFRvU3RyaW5nKGxlbmd0aEEpLAotICAgICAg
ICAgICAgLy8gICAgUHJvcGVydHkgRGVzY3JpcHRvciB7W1tWYWx1ZV1dOiBULCBbW1dyaXRhYmxl
XV06IHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlfSwg
YW5kIGZhbHNlLgotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1
bHRMZW5ndGgsIGpzU3Vic3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQsIHBvc2l0aW9uLCBt
YXRjaFBvc2l0aW9uIC0gcG9zaXRpb24pKTsKLQotICAgICAgICAgICAgLy8gMy4gSW5jcmVtZW50
IGxlbmd0aEEgYnkgMS4KLSAgICAgICAgICAgIC8vIDQuIElmIGxlbmd0aEEgPT0gbGltLCByZXR1
cm4gQS4KLSAgICAgICAgICAgICsrcmVzdWx0TGVuZ3RoOwotICAgICAgICAgICAgaWYgKHJlc3Vs
dExlbmd0aCA9PSBsaW1pdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0TGVuZ3RoID49IE1BWF9TVE9SQUdFX1ZF
Q1RPUl9JTkRFWCkgewotICAgICAgICAgICAgICAgIC8vIExldCdzIGNvbnNpZGVyIHdoYXQncyBi
ZXN0IGZvciB1c2VycyBoZXJlLiBXZSdyZSBhYm91dCB0byBpbmNyZWFzZSB0aGUgbGVuZ3RoIG9m
Ci0gICAgICAgICAgICAgICAgLy8gdGhlIHNwbGl0IGFycmF5IGJleW9uZCB0aGUgbWF4aW11bSBs
ZW5ndGggdGhhdCB3ZSBjYW4gc3VwcG9ydCBlZmZpY2llbnRseS4gVGhpcwotICAgICAgICAgICAg
ICAgIC8vIHdpbGwgY2F1c2UgdXMgdG8gdXNlIGEgSGFzaE1hcCBmb3IgdGhlIG5ldyBlbnRyaWVz
IGFmdGVyIHRoaXMgcG9pbnQuIFRoYXQncyBnb2luZwotICAgICAgICAgICAgICAgIC8vIHRvIHJl
c3VsdCBpbiBhIHZlcnkgbG9uZyBydW5uaW5nIHRpbWUgb2YgdGhpcyBmdW5jdGlvbiBhbmQgdmVy
eSBsYXJnZSBtZW1vcnkKLSAgICAgICAgICAgICAgICAvLyB1c2FnZS4gSW4gbXkgZXhwZXJpbWVu
dHMsIEpTQyB3aWxsIHNpdCBzcGlubmluZyBmb3IgbWludXRlcyBhZnRlciBnZXR0aW5nIGhlcmUg
YW5kCi0gICAgICAgICAgICAgICAgLy8gaXQgd2FzIHVzaW5nID40R0Igb2YgbWVtb3J5IGFuZCBl
dmVudHVhbGx5IGdyZXcgdG8gOEdCLiBJdCBrZXB0IHJ1bm5pbmcgd2l0aG91dAotICAgICAgICAg
ICAgICAgIC8vIGZpbmlzaGluZyB1bnRpbCBJIGtpbGxlZCBpdC4gVGhhdCdzIHByb2JhYmx5IG5v
dCB3aGF0IHRoZSB1c2VyIHdhbnRlZC4gVGhlIHVzZXIsCi0gICAgICAgICAgICAgICAgLy8gb3Ig
dGhlIHByb2dyYW0gdGhhdCB0aGUgdXNlciBpcyBydW5uaW5nLCBwcm9iYWJseSBtYWRlIGEgbWlz
dGFrZSBieSBjYWxsaW5nIHRoaXMKLSAgICAgICAgICAgICAgICAvLyBtZXRob2QgaW4gc3VjaCBh
IHdheSB0aGF0IGl0IHJlc3VsdGVkIGluIHN1Y2ggYW4gb2Jub3hpb3VzIGFycmF5LiBUaGVyZWZv
cmUsIHRvCi0gICAgICAgICAgICAgICAgLy8gcHJvdGVjdCBvdXJzZWx2ZXMsIHdlIGJhaWwgYXQg
dGhpcyBwb2ludC4KLSAgICAgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gNS4gTGV0IHAgPSBlLgotICAgICAgICAg
ICAgLy8gOC4gTGV0IHEgPSBwLgotICAgICAgICAgICAgcG9zaXRpb24gPSBtYXRjaEVuZDsKLSAg
ICAgICAgICAgIG1hdGNoUG9zaXRpb24gPSBtYXRjaEVuZDsKLQotICAgICAgICAgICAgLy8gNi4g
TGV0IGkgPSAwLgotICAgICAgICAgICAgLy8gNy4gUmVwZWF0LCB3aGlsZSBpIGlzIG5vdCBlcXVh
bCB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGNhcC4KLSAgICAgICAgICAgIC8vICBhIExl
dCBpID0gaSArIDEuCi0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IHJlZy0+
bnVtU3VicGF0dGVybnMoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgLy8gYiBDYWxsIHRoZSBb
W0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVudHMK
LSAgICAgICAgICAgICAgICAvLyAgIFRvU3RyaW5nKGxlbmd0aEEpLCBQcm9wZXJ0eSBEZXNjcmlw
dG9yIHtbW1ZhbHVlXV06IGNhcFtpXSwgW1tXcml0YWJsZV1dOgotICAgICAgICAgICAgICAgIC8v
ICAgdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IHRydWV9LCBh
bmQgZmFsc2UuCi0gICAgICAgICAgICAgICAgaW50IHN1YiA9IG92ZWN0b3JbaSAqIDJdOwotICAg
ICAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoLCBz
dWIgPCAwID8ganNVbmRlZmluZWQoKSA6IGpzU3Vic3RyaW5nKGV4ZWMsIHRoaXNWYWx1ZSwgaW5w
dXQsIHN1Yiwgb3ZlY3RvcltpICogMiArIDFdIC0gc3ViKSk7Ci0gICAgICAgICAgICAgICAgLy8g
YyBJbmNyZW1lbnQgbGVuZ3RoQSBieSAxLgotICAgICAgICAgICAgICAgIC8vIGQgSWYgbGVuZ3Ro
QSA9PSBsaW0sIHJldHVybiBBLgotICAgICAgICAgICAgICAgIGlmICgrK3Jlc3VsdExlbmd0aCA9
PSBsaW1pdCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKKyAgICBKU1ZhbHVl
IHNlcGFyYXRvclZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgeyAvLyBG
SVhNRTogS2VlcGluZyB0aGlzIGluZGVudGF0aW9uIGhlcmUgdG8gbWluaW1pemUgdGhlIGRpZmYu
IFdpbGwgdW5pbmRlbnQgYW5kIHJlbW92ZSB0aGlzIGxhdGVyLgogICAgICAgICBTdHJpbmcgc2Vw
YXJhdG9yID0gc2VwYXJhdG9yVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgICAgIC8vIDkuIElmIGxpbSA9PSAwLCBy
ZXR1cm4gQS4KKyAgICAgICAgLy8gMTAuIElmIGxpbSA9PSAwLCByZXR1cm4gQS4KICAgICAgICAg
aWYgKCFsaW1pdCkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IAotICAgICAgICAvLyAxMC4gSWYgc2VwYXJhdG9yIGlzIHVuZGVmaW5lZCwgdGhlbgotICAgICAg
ICBKU1ZhbHVlIHNlcGFyYXRvclZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgICAgIC8v
IDExLiBJZiBzZXBhcmF0b3IgaXMgdW5kZWZpbmVkLCB0aGVuCiAgICAgICAgIGlmIChzZXBhcmF0
b3JWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICAvLyBhLiAgQ2FsbCB0aGUgW1tE
ZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBBIHdpdGggYXJndW1lbnRzICIw
IiwKLSAgICAgICAgICAgIC8vICAgICBQcm9wZXJ0eSBEZXNjcmlwdG9yIHtbW1ZhbHVlXV06IFMs
IFtbV3JpdGFibGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxl
XV06IHRydWV9LCBhbmQgZmFsc2UuCiAgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4
KGV4ZWMsIDAsIGpzU3RyaW5nV2l0aFJldXNlKGV4ZWMsIHRoaXNWYWx1ZSwgaW5wdXQpKTsKICAg
ICAgICAgICAgIC8vIGIuICBSZXR1cm4gQS4KICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIDExLiBJZiBzID09IDAsIHRo
ZW4KKyAgICAgICAgLy8gMTIuIElmIHMgPT0gMCwgdGhlbgogICAgICAgICBpZiAoaW5wdXQuaXNF
bXB0eSgpKSB7Ci0gICAgICAgICAgICAvLyBhLiBDYWxsIFNwbGl0TWF0Y2goUywgMCwgUikgYW5k
IGxldCB6IGJlIGl0cyBNYXRjaFJlc3VsdCByZXN1bHQuCi0gICAgICAgICAgICAvLyBiLiBJZiB6
IGlzIG5vdCBmYWlsdXJlLCByZXR1cm4gQS4KLSAgICAgICAgICAgIC8vIGMuIENhbGwgdGhlIFtb
RGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50cyAi
MCIsCi0gICAgICAgICAgICAvLyAgICBQcm9wZXJ0eSBEZXNjcmlwdG9yIHtbW1ZhbHVlXV06IFMs
IFtbV3JpdGFibGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxl
XV06IHRydWV9LCBhbmQgZmFsc2UuCisgICAgICAgICAgICAvLyBhLiBMZXQgeiBiZSBTcGxpdE1h
dGNoKFMsIDAsIFIpIHdoZXJlIFMgaXMgaW5wdXQsIFIgaXMgc2VwYXJhdG9yLgorICAgICAgICAg
ICAgLy8gYi4gSWYgeiBpcyBub3QgZmFsc2UsIHJldHVybiBBLgorICAgICAgICAgICAgLy8gYy4g
Q2FsbCBDcmVhdGVEYXRhUHJvcGVydHkoQSwgIjAiLCBTKS4KICAgICAgICAgICAgIC8vIGQuIFJl
dHVybiBBLgogICAgICAgICAgICAgaWYgKCFzZXBhcmF0b3IuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwganNTdHJpbmdXaXRoUmV1c2Uo
ZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCkpOwpAQCAtMTM4NiwxNyArMTI1MiwxNiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIC8vIDEyLiBMZXQgcSA9IHAuCisgICAgICAgICAgICAvLyAxMy4g
TGV0IHEgPSBwLgogICAgICAgICAgICAgc2l6ZV90IG1hdGNoUG9zaXRpb247Ci0gICAgICAgICAg
ICAvLyAxMy4gUmVwZWF0LCB3aGlsZSBxICE9IHMKLSAgICAgICAgICAgIC8vICAgYS4gQ2FsbCBT
cGxpdE1hdGNoKFMsIHEsIFIpIGFuZCBsZXQgeiBiZSBpdHMgTWF0Y2hSZXN1bHQgcmVzdWx0Lgot
ICAgICAgICAgICAgLy8gICBiLiBJZiB6IGlzIGZhaWx1cmUsIHRoZW4gbGV0IHEgPSBxKzEuCi0g
ICAgICAgICAgICAvLyAgIGMuIEVsc2UsIHogaXMgbm90IGZhaWx1cmUKKyAgICAgICAgICAgIC8v
IDE0LiBSZXBlYXQsIHdoaWxlIHEgIT0gcworICAgICAgICAgICAgLy8gICBhLiBsZXQgZSBiZSBT
cGxpdE1hdGNoKFMsIHEsIFIpLgorICAgICAgICAgICAgLy8gICBiLiBJZiBlIGlzIGZhaWx1cmUs
IHRoZW4gbGV0IHEgPSBxKzEuCisgICAgICAgICAgICAvLyAgIGMuIEVsc2UsIGUgaXMgYW4gaW50
ZWdlciBpbmRleCA8PSBzLgogICAgICAgICAgICAgd2hpbGUgKChtYXRjaFBvc2l0aW9uID0gc3Ry
aW5nSW1wbC0+ZmluZChzZXBhcmF0b3JJbXBsLCBwb3NpdGlvbikpICE9IG5vdEZvdW5kKSB7CiAg
ICAgICAgICAgICAgICAgLy8gMS4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhl
IHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYXQgcG9zaXRpb25z
IHAgKGluY2x1c2l2ZSkKICAgICAgICAgICAgICAgICAvLyAgICB0aHJvdWdoIHEgKGV4Y2x1c2l2
ZSkuCi0gICAgICAgICAgICAgICAgLy8gMi4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1d
IGludGVybmFsIG1ldGhvZCBvZiBBIHdpdGggYXJndW1lbnRzIFRvU3RyaW5nKGxlbmd0aEEpLAot
ICAgICAgICAgICAgICAgIC8vICAgIFByb3BlcnR5IERlc2NyaXB0b3Ige1tbVmFsdWVdXTogVCwg
W1tXcml0YWJsZV1dOiB0cnVlLCBbW0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVd
XTogdHJ1ZX0sIGFuZCBmYWxzZS4KKyAgICAgICAgICAgICAgICAvLyAyLiBDYWxsIENyZWF0ZURh
dGFQcm9wZXJ0eShBLCBUb1N0cmluZyhsZW5ndGhBKSwgVCkuCiAgICAgICAgICAgICAgICAgcmVz
dWx0LT5wdXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgsIGpzU3Vic3RyaW5nKGV4ZWMs
IHRoaXNWYWx1ZSwgaW5wdXQsIHBvc2l0aW9uLCBtYXRjaFBvc2l0aW9uIC0gcG9zaXRpb24pKTsK
ICAgICAgICAgICAgICAgICAvLyAzLiBJbmNyZW1lbnQgbGVuZ3RoQSBieSAxLgogICAgICAgICAg
ICAgICAgIC8vIDQuIElmIGxlbmd0aEEgPT0gbGltLCByZXR1cm4gQS4KQEAgLTE0MDQsMTkgKzEy
NjksMTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAKICAgICAgICAg
ICAgICAgICAvLyA1LiBMZXQgcCA9IGUuCi0gICAgICAgICAgICAgICAgLy8gOC4gTGV0IHEgPSBw
LgorICAgICAgICAgICAgICAgIC8vIDYuIExldCBxID0gcC4KICAgICAgICAgICAgICAgICBwb3Np
dGlvbiA9IG1hdGNoUG9zaXRpb24gKyBzZXBhcmF0b3IubGVuZ3RoKCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICB9CisgICAgfSAvLyBGSVhNRTogS2VlcGluZyB0aGlzIGluZGVudGF0
aW9uIGhlcmUgdG8gbWluaW1pemUgdGhlIGRpZmYuIFdpbGwgdW5pbmRlbnQgYW5kIHJlbW92ZSB0
aGlzIGxhdGVyLgogCi0gICAgLy8gMTQuIExldCBUIGJlIGEgU3RyaW5nIHZhbHVlIGVxdWFsIHRv
IHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBjaGFyYWN0ZXJzIGF0IHBvc2l0
aW9ucyBwIChpbmNsdXNpdmUpCisgICAgLy8gMTUuIExldCBUIGJlIGEgU3RyaW5nIHZhbHVlIGVx
dWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25zaXN0aW5nIG9mIHRoZSBjaGFyYWN0ZXJzIGF0
IHBvc2l0aW9ucyBwIChpbmNsdXNpdmUpCiAgICAgLy8gICAgIHRocm91Z2ggcyAoZXhjbHVzaXZl
KS4KLSAgICAvLyAxNS4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1l
dGhvZCBvZiBBIHdpdGggYXJndW1lbnRzIFRvU3RyaW5nKGxlbmd0aEEpLCBQcm9wZXJ0eSBEZXNj
cmlwdG9yCi0gICAgLy8gICAgIHtbW1ZhbHVlXV06IFQsIFtbV3JpdGFibGVdXTogdHJ1ZSwgW1tF
bnVtZXJhYmxlXV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IHRydWV9LCBhbmQgZmFsc2UuCisg
ICAgLy8gMTYuIENhbGwgQ3JlYXRlRGF0YVByb3BlcnR5KEEsIFRvU3RyaW5nKGxlbmd0aEEpLCBU
KS4KICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0aCsrLCBqc1N1
YnN0cmluZyhleGVjLCB0aGlzVmFsdWUsIGlucHV0LCBwb3NpdGlvbiwgaW5wdXQubGVuZ3RoKCkg
LSBwb3NpdGlvbikpOwogCi0gICAgLy8gMTYuIFJldHVybiBBLgorICAgIC8vIDE3LiBSZXR1cm4g
QS4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKQEAgLTE0NTksNiAr
MTMyMywyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N1YnN0cmluZyhleGVjLCB1U3RyaW5nLCBzdWJzdHJp
bmdTdGFydCwgc3Vic3RyaW5nTGVuZ3RoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYnVpbHRpblN0cmluZ1N1YnN0ckludGVybmFsKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICAvLyBAc3Vic3RySW50ZXJuYWwgc2hvdWxkIG5vdCBoYXZlIGFueSBvYnNlcnZhYmxlIHNpZGUg
ZWZmZWN0cyAoZS5nLiBpdCBzaG91bGQgbm90IGNhbGwKKyAgICAvLyBHZXRNZXRob2QoLi4uLCBA
QHRvUHJpbWl0aXZlKSBvbiB0aGUgdGhpc1ZhbHVlKS4KKworICAgIC8vIEl0IGlzIG9rIHRvIHVz
ZSB0aGUgZGVmYXVsdCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIgYXMgdGhlIGltcGxlbWVudGF0aW9u
IG9mCisgICAgLy8gQHN1YnN0ckludGVybmFsIGJlY2F1c2UgQHN1YnN0ckludGVybmFsIHdpbGwg
b25seSBiZSBjYWxsZWQgYnkgYnVpbHRpbnMsIHdoaWNoIHdpbGwKKyAgICAvLyBndWFyYW50ZWUg
dGhhdCB3ZSBvbmx5IHBhc3MgaXQgYSBzdHJpbmcgdGhpc1ZhbHVlLiBBcyBhIHJlc3VsdCwgc3Ry
aW5nUHJvdG9GdW5jU3Vic3RyCisgICAgLy8gd2lsbCBub3QgbmVlZCB0byBjYWxsIHRvU3RyaW5n
KCkgb24gdGhlIHRoaXNWYWx1ZSwgYW5kIHRoZXJlIHdpbGwgYmUgbm8gb2JzZXJ2YWJsZQorICAg
IC8vIHNpZGUtZWZmZWN0cy4KKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBBU1NFUlQodGhpc1ZhbHVlLmlzU3RyaW5n
KCkpOworI2VuZGlmCisgICAgcmV0dXJuIHN0cmluZ1Byb3RvRnVuY1N1YnN0cihleGVjKTsKK30K
KwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmco
RXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CkBAIC0xOTk1LDYgKzE4NzYsMjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90bwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHN0cmlu
Z1RvU2VhcmNoSW4uaGFzSW5maXhFbmRpbmdBdChzZWFyY2hTdHJpbmcsIHN0ZDo6bWluKGVuZCwg
bGVuZ3RoKSkpKTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nSW5jbHVkZXNJbXBsKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBTdHJpbmcgc3RyaW5nVG9T
ZWFyY2hJbiwgU3RyaW5nIHNlYXJjaFN0cmluZywgSlNWYWx1ZSBwb3NpdGlvbkFyZykKK3sKKyAg
ICB1bnNpZ25lZCBzdGFydCA9IDA7CisgICAgaWYgKHBvc2l0aW9uQXJnLmlzSW50MzIoKSkKKyAg
ICAgICAgc3RhcnQgPSBzdGQ6Om1heCgwLCBwb3NpdGlvbkFyZy5hc0ludDMyKCkpOworICAgIGVs
c2UgeworICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmdUb1NlYXJjaEluLmxlbmd0aCgp
OworICAgICAgICBzdGFydCA9IGNsYW1wQW5kVHJ1bmNhdGVUb1Vuc2lnbmVkKHBvc2l0aW9uQXJn
LnRvSW50ZWdlcihleGVjKSwgMCwgbGVuZ3RoKTsKKyAgICAgICAgaWYgKHZtLmV4Y2VwdGlvbigp
KQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzdHJpbmdUb1NlYXJj
aEluLmNvbnRhaW5zKHNlYXJjaFN0cmluZywgdHJ1ZSwgc3RhcnQpKSk7Cit9CisKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMoRXhlY1N0YXRlKiBl
eGVjKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CkBAIC0y
MDE4LDE3ICsxOTE0LDI4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG8KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAg
IEpTVmFsdWUgcG9zaXRpb25BcmcgPSBleGVjLT5hcmd1bWVudCgxKTsKLSAgICB1bnNpZ25lZCBz
dGFydCA9IDA7Ci0gICAgaWYgKHBvc2l0aW9uQXJnLmlzSW50MzIoKSkKLSAgICAgICAgc3RhcnQg
PSBzdGQ6Om1heCgwLCBwb3NpdGlvbkFyZy5hc0ludDMyKCkpOwotICAgIGVsc2UgewotICAgICAg
ICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmdUb1NlYXJjaEluLmxlbmd0aCgpOwotICAgICAgICBz
dGFydCA9IGNsYW1wQW5kVHJ1bmNhdGVUb1Vuc2lnbmVkKHBvc2l0aW9uQXJnLnRvSW50ZWdlcihl
eGVjKSwgMCwgbGVuZ3RoKTsKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICB9CiAK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzdHJpbmdUb1NlYXJjaEluLmNv
bnRhaW5zKHNlYXJjaFN0cmluZywgdHJ1ZSwgc3RhcnQpKSk7CisgICAgcmV0dXJuIHN0cmluZ0lu
Y2x1ZGVzSW1wbCh2bSwgZXhlYywgc3RyaW5nVG9TZWFyY2hJbiwgc2VhcmNoU3RyaW5nLCBwb3Np
dGlvbkFyZyk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmlu
Z0luY2x1ZGVzSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgQVNTRVJUKGNoZWNrT2JqZWN0Q29lcmNpYmxl
KHRoaXNWYWx1ZSkpOworCisgICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAg
IEpTVmFsdWUgYTAgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgSlNWYWx1ZSBwb3NpdGlv
bkFyZyA9IGV4ZWMtPmFyZ3VtZW50KDEpOworCisgICAgcmV0dXJuIHN0cmluZ0luY2x1ZGVzSW1w
bCh2bSwgZXhlYywgc3RyaW5nVG9TZWFyY2hJbiwgc2VhcmNoU3RyaW5nLCBwb3NpdGlvbkFyZyk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0
b3IoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4g
KHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMywgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3
LTIwMDgsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwpAQCAtNjYsNiArNjYsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25TdAogU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50LCBTdHJpbmdWaWV3IHNvdXJjZSwgY29uc3QgaW50KiBvdmVjdG9y
LCBSZWdFeHAqIHJlZyk7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jUmVwZWF0Q2hhcmFjdGVyKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKik7CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmluZ1N1YnN0ckludGVybmFsKEV4ZWNTdGF0
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nSW5jbHVkZXNJ
bnRlcm5hbChFeGVjU3RhdGUqKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9lczYueWFtbAkod29ya2luZyBjb3B5KQpAQCAtMTAwNyw3ICsx
MDA3LDcgQEAKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9jYWxsc19SZWdFeHAucHJv
dG90eXBlW1N5bWJvbC5zZWFyY2hdLmpzCiAgIGNtZDogcnVuRVM2IDpmYWlsCiAtIHBhdGg6IGVz
Ni9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRd
LmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDog
ZXM2L1Byb3h5X2ludGVybmFsX2dldF9jYWxsc19SZWdFeHBfY29uc3RydWN0b3IuanMKICAgY21k
OiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX1N0
cmluZy5wcm90b3R5cGUubWF0Y2guanMKQEAgLTEwMTcsNyArMTAxNyw3IEBACiAtIHBhdGg6IGVz
Ni9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfU3RyaW5nLnByb3RvdHlwZS5zZWFyY2guanMKICAg
Y21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxz
X1N0cmluZy5wcm90b3R5cGUuc3BsaXQuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBy
dW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX1N0cmlu
Zy5yYXcuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJu
YWxfZ2V0X2NhbGxzX1RvUHJpbWl0aXZlLmpzCkBAIC0xMDkzLDcgKzEwOTMsNyBAQAogLSBwYXRo
OiBlczYvUmVnRXhwLnByb3RvdHlwZV9wcm9wZXJ0aWVzX1JlZ0V4cC5wcm90b3R5cGVbU3ltYm9s
LnNlYXJjaF0uanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUmVnRXhwLnBy
b3RvdHlwZV9wcm9wZXJ0aWVzX1JlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5qcwotICBj
bWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9SZWdF
eHAucHJvdG90eXBlX3Byb3BlcnRpZXNfUmVnRXhwW1N5bWJvbC5zcGVjaWVzXS5qcwogICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9SZWdFeHBfaXNfc3ViY2xhc3NhYmxlX2NvcnJl
Y3RfcHJvdG90eXBlX2NoYWluLmpzCkBAIC0xMjE1LDkgKzEyMTUsOSBAQAogLSBwYXRoOiBlczYv
d2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC5zcGVjaWVzX2V4aXN0ZW5jZS5qcwogICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9sLnNwZWNp
ZXNfUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmpzCi0gIGNtZDogcnVuRVM2IDpmYWls
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L3dlbGwta25vd25fc3ltYm9sc19T
eW1ib2wuc3BsaXQuanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC50b1ByaW1pdGl2ZS5qcwog
ICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3lt
Ym9sLnRvU3RyaW5nVGFnLmpzCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTkzMzgpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3NCBAQAorMjAxNi0wNC0x
MiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRVM2OiBJbXBsZW1l
bnQgU3RyaW5nLnByb3RvdHlwZS5zcGxpdCBhbmQgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjAxMwor
CisgICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1pbGxlci4KKworICAgICAgICAqIGpzL09iamVj
dC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9kb20vc3Ry
aW5nLXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKworICAgICAgICAqIGpzL3Jl
Z3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1z
cGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9y
ZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LWZsYWdzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAt
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpz
L3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMt
Z2xvYmFsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBq
cy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LW11bHRpbGluZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVn
ZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICoganMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzMy1zdGlja3kuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAt
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3JlZ2V4cC1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0Lmh0bWw6IEFkZGVkLgorCisgICAg
ICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0cy5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIu
anM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMzLWlnbm9yZUNhc2UuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LW11bHRpbGluZS5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
cmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzNC5qczogQWRkZWQuCisKKyAgICAgICAgKiBqcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmct
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi5qczogQWRkZWQuCisgICAg
ICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMzLWdsb2JhbC5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3Jl
Q2FzZS5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5n
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kuanM6IEFkZGVkLgorICAgICAg
ICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHM0LmpzOiBBZGRlZC4KKworICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICoganMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdy
ZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2Jh
bC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMtaWdub3JlQ2FzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpz
L3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMt
aWdub3JlQ2FzZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMtc3RpY2t5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJp
bmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kuaHRtbDog
QWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICoganMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMy11bmljb2RlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXBy
b3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHM0Lmh0bWw6IEFkZGVkLgorCisgICAgICAgICoganMvc2NyaXB0LXRlc3Rz
L09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzOgorICAgICAgICAqIHNwdXRuaWsvQ29uZm9y
bWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9TdHJpbmcvMTUuNS40LzE1LjUuNC4xNF9TdHJp
bmcucHJvdG90eXBlLnNwbGl0L1MxNS41LjQuMTRfQTFfVDMtZXhwZWN0ZWQudHh0OgorCiAyMDE2
LTA0LTExICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBXZWFrUHRycyB0byBhdm9pZCB1c2luZyBkZWFsbG9jYXRlZCBXaWRnZXRzIGFuZCBTY3JvbGxh
YmxlQXJlYXMKSW5kZXg6IExheW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVz
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3du
UHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5OTMzOCkKKysrIExheW91dFRl
c3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNjEsNyArNjEsNyBAQCBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoRXJy
b3IpIGlzCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoRXJyb3IucHJvdG90eXBlKSBp
cyBbJ2NvbnN0cnVjdG9yJywgJ21lc3NhZ2UnLCAnbmFtZScsICd0b1N0cmluZyddCiBQQVNTIGdl
dFNvcnRlZE93blByb3BlcnR5TmFtZXMoTWF0aCkgaXMgWydFJywnTE4xMCcsJ0xOMicsJ0xPRzEw
RScsJ0xPRzJFJywnUEknLCdTUVJUMV8yJywnU1FSVDInLCdhYnMnLCdhY29zJywnYWNvc2gnLCdh
c2luJywnYXNpbmgnLCdhdGFuJywnYXRhbjInLCdhdGFuaCcsJ2NicnQnLCdjZWlsJywnY2x6MzIn
LCdjb3MnLCdjb3NoJywnZXhwJywnZXhwbTEnLCdmbG9vcicsJ2Zyb3VuZCcsJ2h5cG90JywnaW11
bCcsJ2xvZycsJ2xvZzEwJywnbG9nMXAnLCdsb2cyJywnbWF4JywnbWluJywncG93JywncmFuZG9t
Jywncm91bmQnLCdzaWduJywnc2luJywnc2luaCcsJ3NxcnQnLCd0YW4nLCd0YW5oJywndHJ1bmMn
XQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEpTT04pIGlzIFsncGFyc2UnLCAnc3Ry
aW5naWZ5J10KLVBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhTeW1ib2wpIGlzIFsnZm9y
JywgJ2hhc0luc3RhbmNlJywgJ2l0ZXJhdG9yJywgJ2tleUZvcicsICdsZW5ndGgnLCAnbWF0Y2gn
LCAnbmFtZScsICdwcm90b3R5cGUnLCAnc2VhcmNoJywgJ3NwZWNpZXMnLCAndG9QcmltaXRpdmUn
LCAndG9TdHJpbmdUYWcnLCAndW5zY29wYWJsZXMnXQorUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0
eU5hbWVzKFN5bWJvbCkgaXMgWydmb3InLCAnaGFzSW5zdGFuY2UnLCAnaXRlcmF0b3InLCAna2V5
Rm9yJywgJ2xlbmd0aCcsICdtYXRjaCcsICduYW1lJywgJ3Byb3RvdHlwZScsICdzZWFyY2gnLCAn
c3BlY2llcycsICdzcGxpdCcsICd0b1ByaW1pdGl2ZScsICd0b1N0cmluZ1RhZycsICd1bnNjb3Bh
YmxlcyddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoU3ltYm9sLnByb3RvdHlwZSkg
aXMgWydjb25zdHJ1Y3RvcicsICd0b1N0cmluZycsICd2YWx1ZU9mJ10KIFBBU1MgZ2V0U29ydGVk
T3duUHJvcGVydHlOYW1lcyhNYXApIGlzIFsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10K
IFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhNYXAucHJvdG90eXBlKSBpcyBbJ2NsZWFy
JywgJ2NvbnN0cnVjdG9yJywgJ2RlbGV0ZScsICdlbnRyaWVzJywgJ2ZvckVhY2gnLCAnZ2V0Jywg
J2hhcycsICdrZXlzJywgJ3NldCcsICdzaXplJywgJ3ZhbHVlcyddCkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9kb20vc3RyaW5nLXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9kb20vc3RyaW5nLXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTk5MzM4KQorKysgTGF5b3V0VGVzdHMvanMvZG9tL3N0cmlu
Zy1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE0
LDcgKzE0LDcgQEAgUEFTUyBTdHJpbmcucHJvdG90eXBlLm1hdGNoLmNhbGwodW5kZWZpbgogUEFT
UyBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UuY2FsbCh1bmRlZmluZWQsIC8yKy8sICctJykgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgU3RyaW5nLnByb3RvdHlw
ZS5zZWFyY2guY2FsbCh1bmRlZmluZWQsICc0JykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
U3RyaW5nLnByb3RvdHlwZS5zZWFyY2ggcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVm
aW5lZC4KIFBBU1MgU3RyaW5nLnByb3RvdHlwZS5zbGljZS5jYWxsKHVuZGVmaW5lZCwgMSwgMykg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgU3RyaW5nLnByb3Rv
dHlwZS5zcGxpdC5jYWxsKHVuZGVmaW5lZCwgJzInKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBUeXBlIGVycm9yLgorUEFTUyBTdHJpbmcucHJvdG90eXBlLnNwbGl0LmNhbGwodW5kZWZpbmVk
LCAnMicpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFN0cmluZy5wcm90b3R5cGUuc3BsaXQg
cmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZC4KIFBBU1MgU3RyaW5nLnByb3Rv
dHlwZS5zbGljZS5jYWxsKHVuZGVmaW5lZCwgMSwgMykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvci4KIFBBU1MgU3RyaW5nLnByb3RvdHlwZS5zdWJzdHIuY2FsbCh1bmRlZmlu
ZWQsIDEsIDMpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIFN0
cmluZy5wcm90b3R5cGUuc3Vic3RyaW5nLmNhbGwodW5kZWZpbmVkLCAxLCAzKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2Jz
ZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEwIEBACitKU1JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czIKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhj
ZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1z
cGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4
cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNz
LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMzLWZsYWdzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVn
ZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9yZWdleHAt
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzMy1mbGFncy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
cmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
My1mbGFncy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jl
c3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRl
c3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czMtZ2xvYmFsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWds
b2JhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3Jl
Z2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbAorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzMy1nbG9iYWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWds
b2JhbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAt
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1nbG9iYWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4
OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMtaWdub3JlQ2FzZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMzLWlnbm9yZUNhc2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTAgQEAKK0pTUmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1pZ25vcmVDYXNlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNh
c2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBv
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LW11bHRpbGluZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0
aWxpbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxp
bmUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVz
cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxp
bmUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRo
cm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzMy1tdWx0aWxpbmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVs
dGlsaW5lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3ktZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4
cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLXN0aWNreS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdy
ZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3JlZ2V4cC1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVn
ZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUt
c3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pz
L3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMt
dW5pY29kZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhw
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNw
bGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMt
dW5pY29kZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jl
c3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRl
c3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
cmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4
cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzNC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHM0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRl
eDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdl
eHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJ
bmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3RyaW5nLXBy
b3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUt
c3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2Jz
ZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtZmxhZ3MtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTAgQEAKK0pTUmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1mbGFncworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBu
byBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMtZmxhZ3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNw
bGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMzLWdsb2JhbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmct
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1nbG9iYWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVz
cy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmlu
Zy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXBy
b3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMzLWlnbm9yZUNhc2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWln
bm9yZUNhc2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3Ry
aW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5l
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVs
dGlsaW5lLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVz
cy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMy1zdGlja3ktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3Rp
Y2t5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5LWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3Ry
aW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5CisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLXN0aWNreS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3Rp
Y2t5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0ic2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMzLXN0aWNreS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtdW5pY29kZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzMy11bmljb2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMtdW5pY29kZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAor
SlNSZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LXVuaWNvZGUKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0
aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMtdW5pY29kZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11
bmljb2RlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzNC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdy
ZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0CisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHM0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
dHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0
cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJp
bmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBA
CitKU1JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhy
b3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUt
c3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
cmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIuanMJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDI1IEBACisvL0AgcnVuRGVmYXVsdAorCitmdW5jdGlvbiBhc3NlcnQodGVzdGVk
VmFsdWUsIG1zZykgeworICAgIGlmICghdGVzdGVkVmFsdWUpCisgICAgICAgIHRocm93IEVycm9y
KG1zZyk7Cit9CisKKy8vIFJlZ0V4cCB3aXRoIG92ZXJyaWRkZW4gW0BAc3BlY2llc106IFRlc3Rp
bmcgRVM2IDIxLjIuNS4xMTogNC4gTGV0IEMgYmUgPyBTcGVjaWVzQ29uc3RydWN0b3IocngsICVS
ZWdFeHAlKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0
IG9yaWdEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAs
IFN5bWJvbC5zcGVjaWVzKTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLCBTeW1i
b2wuc3BlY2llcywgeworICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBh
Y2Nlc3Nlcy5wdXNoKFN5bWJvbC5zcGVjaWVzLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgcmV0
dXJuIC9pdC95OworICAgICAgICB9CisgICAgfSk7CisgICAgbGV0IG9iaiA9IG5ldyBSZWdFeHA7
CisgICAgbGV0IGVycm9yU3RyOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBl
Y3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gUmVnRXhw
LnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgIGFzc2Vy
dChhY2Nlc3NlcyA9PSAiU3ltYm9sKFN5bWJvbC5zcGVjaWVzKSIsICJQcm9wZXJ0eSBhY2Nlc3Nl
cyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGws
bWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1mbGFncy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMy1mbGFncy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LWZsYWdzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8vQCBydW5EZWZhdWx0
CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRW
YWx1ZSkKKyAgICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8gUmVnRXhwLnByb3RvdHlw
ZSB3aXRoIG92ZXJyaWRkZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZs
YWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7Cisg
ICAgbGV0IGZsYWcgPSAiZmxhZ3MiOworICAgIGxldCBmbGFnVmFsdWUgPSAiIjsKKworICAgIGxl
dCBhY2Nlc3NlcyA9IFtdOworICAgIGxldCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgZmxhZyk7CisKKyAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoUmVnRXhwLnByb3RvdHlwZSwgZmxhZywgeworICAgICAgICBnZXQ6IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAg
IHJldHVybiBmbGFnVmFsdWU7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0gL2l0
LzsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVy
cmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9s
LnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxh
ZywgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFz
c2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5k
ZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUt
c3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwuanMJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyOCBAQAorLy9AIHJ1bkRlZmF1bHQKKworZnVuY3Rpb24gYXNzZXJ0KHRlc3RlZFZhbHVlLCBt
c2cpIHsKKyAgICBpZiAoIXRlc3RlZFZhbHVlKQorICAgICAgICB0aHJvdyBFcnJvcihtc2cpOwor
fQorCisvLyBSZWdFeHAucHJvdG90eXBlIHdpdGggb3ZlcnJpZGRlbiBmbGFnczogVGVzdGluZyBF
UzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdz
IikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZmxhZyA9ICJnbG9iYWwiOworICAgIGxldCBm
bGFnVmFsdWUgPSBmYWxzZTsKKworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGxldCBvcmln
RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3Rv
dHlwZSwgZmxhZyk7CisKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLnByb3RvdHlw
ZSwgZmxhZywgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWNjZXNz
ZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgIHJldHVybiBmbGFnVmFsdWU7CisgICAgICAgIH0K
KyAgICB9KTsKKyAgICBsZXQgb2JqID0gL2l0LzsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAi
IiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3Vs
dCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsK
KyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxhZywgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBt
YXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4
cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LWlnbm9yZUNhc2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMt
aWdub3JlQ2FzZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LWlnbm9yZUNhc2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorLy9AIHJ1bkRl
ZmF1bHQKKworZnVuY3Rpb24gYXNzZXJ0KHRlc3RlZFZhbHVlLCBtc2cpIHsKKyAgICBpZiAoIXRl
c3RlZFZhbHVlKQorICAgICAgICB0aHJvdyBFcnJvcihtc2cpOworfQorCisvLyBSZWdFeHAucHJv
dG90eXBlIHdpdGggb3ZlcnJpZGRlbiBmbGFnczogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBM
ZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgp
IHsKKyAgICBsZXQgZmxhZyA9ICJpZ25vcmVDYXNlIjsKKyAgICBsZXQgZmxhZ1ZhbHVlID0gZmFs
c2U7CisKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb3JpZ0Rlc2NyaXB0b3IgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcpOwor
CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcsIHsKKyAg
ICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goZmxhZyk7
CisgICAgICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAgICB9CisgICAgfSk7CisgICAg
bGV0IG9iaiA9IC9pdC87CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVk
IGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBSZWdFeHAucHJv
dG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAgYXNzZXJ0KGFj
Y2Vzc2VzID09IGZsYWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRp
b24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQi
KTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdl
eHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhw
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLmpzCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhw
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1bmN0aW9u
IGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAgICAg
ICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8gUmVnRXhwLnByb3RvdHlwZSB3aXRoIG92ZXJy
aWRkZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9T
dHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZsYWcg
PSAibXVsdGlsaW5lIjsKKyAgICBsZXQgZmxhZ1ZhbHVlID0gZmFsc2U7CisKKyAgICBsZXQgYWNj
ZXNzZXMgPSBbXTsKKyAgICBsZXQgb3JpZ0Rlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcpOworCisgICAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goZmxhZyk7CisgICAgICAgICAgICByZXR1
cm4gZmxhZ1ZhbHVlOworICAgICAgICB9CisgICAgfSk7CisgICAgbGV0IG9iaiA9IC9pdC87CisK
KyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRl
biBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxp
dF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09IGZsYWcsICJQ
cm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQo
cmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjgg
QEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7
CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKwor
Ly8gUmVnRXhwLnByb3RvdHlwZSB3aXRoIG92ZXJyaWRkZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIx
LjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4K
KyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZsYWcgPSAic3RpY2t5IjsKKyAgICBsZXQgZmxhZ1Zh
bHVlID0gZmFsc2U7CisKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb3JpZ0Rlc2Ny
aXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUs
IGZsYWcpOworCisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5cGUsIGZs
YWcsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1
c2goZmxhZyk7CisgICAgICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAgICB9CisgICAg
fSk7CisgICAgbGV0IG9iaiA9IC9pdC87CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1
bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBS
ZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAg
YXNzZXJ0KGFjY2Vzc2VzID09IGZsYWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2gg
ZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3Rl
ZCByZXN1bHQiKTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmlj
b2RlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUu
anMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9y
ZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1bmN0
aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAg
ICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8gUmVnRXhwLnByb3RvdHlwZSB3aXRoIG92
ZXJyaWRkZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8g
VG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZs
YWcgPSAidW5pY29kZSI7CisgICAgbGV0IGZsYWdWYWx1ZSA9IGZhbHNlOworCisgICAgbGV0IGFj
Y2Vzc2VzID0gW107CisgICAgbGV0IG9yaWdEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBlLCBmbGFnKTsKKworICAgIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShSZWdFeHAucHJvdG90eXBlLCBmbGFnLCB7CisgICAgICAgIGdldDogZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKGZsYWcpOworICAgICAgICAgICAgcmV0
dXJuIGZsYWdWYWx1ZTsKKyAgICAgICAgfQorICAgIH0pOworICAgIGxldCBvYmogPSAvaXQvOwor
CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRk
ZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3Bs
aXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSBmbGFnLCAi
UHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0
KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOwpJbmRleDog
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czQuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzNC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisvL0AgcnVuRGVmYXVsdAor
CitmdW5jdGlvbiBhc3NlcnQodGVzdGVkVmFsdWUsIG1zZykgeworICAgIGlmICghdGVzdGVkVmFs
dWUpCisgICAgICAgIHRocm93IEVycm9yKG1zZyk7Cit9CisKKy8vIFJlZ0V4cC5wcm90b3R5cGUg
d2l0aCBvdmVycmlkZGVuIGV4ZWM6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogMTkuYi4gTGV0IHog
YmUgPyBSZWdFeHBFeGVjKHNwbGl0dGVyLCBTKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFj
Y2Vzc2VzID0gW107CisgICAgbGV0IG9yaWdEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBlLCAiZXhlYyIpOworICAgIGxldCBvcmlnRXhl
YyA9IG9yaWdEZXNjcmlwdG9yLnZhbHVlOworCisgICAgbGV0IG9iaiA9IC9pdC87CisgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5cGUsICJleGVjIiwgeworICAgICAgICB2
YWx1ZTogZnVuY3Rpb24oc3RyKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJleGVjIik7
CisgICAgICAgICAgICByZXR1cm4gb3JpZ0V4ZWMuY2FsbCh0aGlzLCBzdHIpOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICAvLyBUaGUgQEBzcGxpdCBzbG93IHBhdGggc2hvdWxkIG9ubHkgY2Fs
bCB0aGUgaW50ZXJuYWwgdmVyc2lvbiBvZiBzdWJzdHIuIE1ha2Ugc3VyZQorICAgIC8vIHRoYXQg
aXQncyBub3QgY2FsbGluZyB0aGUgcHVibGljIHZlcnNpb24gd2hpY2ggY2FuIGJlIG92ZXJyaWRk
ZW4uCisgICAgU3RyaW5nLnByb3RvdHlwZS5zdWJzdHIgPSBmdW5jdGlvbihzdGFydCwgbGVuZ3Ro
KSB7CisgICAgICAgIHRocm93IEVycm9yKCJTaG91bGQgbm90IGNhbGwgb3ZlcnJpZGRlbiBzdWJz
dHIiKTsKKyAgICB9CisKKyAgICAvLyBUaGUgQEBzcGxpdCBzbG93IHBhdGggc2hvdWxkIG9ubHkg
Y2FsbCB0aGUgaW50ZXJuYWwgdmVyc2lvbiBvZiBpbmNsdWRlcy4gTWFrZSBzdXJlCisgICAgLy8g
dGhhdCBpdCdzIG5vdCBjYWxsaW5nIHRoZSBwdWJsaWMgdmVyc2lvbiB3aGljaCBjYW4gYmUgb3Zl
cnJpZGRlbi4KKyAgICBTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzID0gZnVuY3Rpb24ocGF0dGVy
bikgeworICAgICAgICB0aHJvdyBFcnJvcigiU2hvdWxkIG5vdCBjYWxsIG92ZXJyaWRkZW4gaW5j
bHVkZXMiKTsKKyAgICB9CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVk
IGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBSZWdFeHAucHJv
dG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAgYXNzZXJ0KGFj
Y2Vzc2VzID09ICJleGVjLGV4ZWMsZXhlYyxleGVjLGV4ZWMsZXhlYyIsICJQcm9wZXJ0eSBhY2Nl
c3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJz
cGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMu
anMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9y
ZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDA2IEBACisvL0AgcnVuRGVmYXVsdAorCitmdW5jdGlvbiBhc3Nl
cnQodGVzdGVkVmFsdWUsIG1zZykgeworICAgIGlmICghdGVzdGVkVmFsdWUpCisgICAgICAgIHRo
cm93IEVycm9yKG1zZyk7Cit9CisKKy8vIFN1YmNsYXNzIHdpdGggb3ZlcnJpZGRlbiBbQEBzcGVj
aWVzXTogVGVzdGluZyBFUzYgMjEuMi41LjExOiA0LiBMZXQgQyBiZSA/IFNwZWNpZXNDb25zdHJ1
Y3RvcihyeCwgJVJlZ0V4cCUpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBb
XTsKKyAgICBjbGFzcyBUZXN0UmVnRXhwIGV4dGVuZHMgUmVnRXhwIHsgfQorICAgIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShUZXN0UmVnRXhwLCBTeW1ib2wuc3BlY2llcywgeworICAgICAgICB2YWx1
ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKFN5bWJvbC5zcGVjaWVz
LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIC9pdC95OworICAgICAgICB9CisgICAg
fSk7CisgICAgbGV0IG9iaiA9IG5ldyBUZXN0UmVnRXhwKC9pdC8pOworICAgIGxldCBlcnJvclN0
cjsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVy
cmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9s
LnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIlN5
bWJvbChTeW1ib2wuc3BlY2llcykiLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4
cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQg
cmVzdWx0Iik7Cit9KSgpOworCisvLyBSZWdFeHAgc3ViY2xhc3Mgd2l0aCBjb25zdHJ1Y3Rvcjog
VGVzdGluZyBFUzYgMjEuMi41LjExOiA0LiBMZXQgQyBiZSA/IFNwZWNpZXNDb25zdHJ1Y3Rvcihy
eCwgJVJlZ0V4cCUpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAg
ICBjbGFzcyBUZXN0UmVnRXhwIGV4dGVuZHMgUmVnRXhwIHsKKyAgICAgICAgY29uc3RydWN0b3Io
c3RyLCBmbGFncykgeworICAgICAgICAgICAgc3VwZXIoc3RyLCBmbGFncyk7CisgICAgICAgICAg
ICBhY2Nlc3Nlcy5wdXNoKCJjb25zdHJ1Y3RvciIpOworICAgICAgICB9CisgICAgfQorICAgIGxl
dCBvYmogPSBuZXcgVGVzdFJlZ0V4cCgiaXQiKTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAi
Y29uc3RydWN0b3IiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAg
ICBsZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAi
c3BsaXRtZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiY29uc3RydWN0b3IsY29uc3RydWN0
b3IiLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAg
YXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOwor
CisvLyBBbiBvYmplY3Qgd2l0aCBzcGVjaWVzIGNvbnN0cnVjdG9yOiBUZXN0aW5nIEVTNiAyMS4y
LjUuMTE6IDQuIExldCBDIGJlID8gU3BlY2llc0NvbnN0cnVjdG9yKHJ4LCAlUmVnRXhwJSkuCiso
ZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGxldCBvYmogPSB7IGNv
bnN0cnVjdG9yOiB7fSB9OworICAgIG9iai5jb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc10gPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgYWNjZXNzZXMucHVzaCgiY29uc3RydWN0b3IiKTsKKyAgICAg
ICAgcmV0dXJuIC9pdC95OworICAgIH07CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1
bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBS
ZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAg
YXNzZXJ0KGFjY2Vzc2VzID09ICJjb25zdHJ1Y3RvciIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBu
b3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAi
VW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIFJlZ0V4cCBvYmplY3Qgd2l0aCBvdmVy
cmlkZGVuIGZsYWdzOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRv
U3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBmbGFn
cyA9IFsgImZsYWdzIiwgImdsb2JhbCIsICJpZ25vcmVDYXNlIiwgIm11bHRpbGluZSIsICJzdGlj
a3kiLCAidW5pY29kZSIgXTsKKyAgICBsZXQgZmxhZ1ZhbHVlcyA9IFsgIiIsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSBdOworICAgIGZvciAobGV0IGluZGV4IGluIGZsYWdzKSB7
CisgICAgICAgIChmdW5jdGlvbihmbGFnLCBmbGFnVmFsdWUpIHsKKyAgICAgICAgICAgIGxldCBh
Y2Nlc3NlcyA9IFtdOworICAgICAgICAgICAgbGV0IG9iaiA9IC9pdC87CisgICAgICAgICAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBmbGFnLCB7CisgICAgICAgICAgICAgICAgZ2V0OiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAg
ICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZsYWdWYWx1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJy
aWRkZW4gcHJvcHMiKTsKKyAgICAgICAgICAgIGxldCByZXN1bHQgPSBSZWdFeHAucHJvdG90eXBl
W1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAgICAgICAgICBhc3NlcnQo
YWNjZXNzZXMgPT0gZmxhZywgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3Rh
dGlvbiIpOworICAgICAgICAgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0
ZWQgcmVzdWx0Iik7CisgICAgICAgIH0pIChmbGFnc1tpbmRleF0sIGZsYWdWYWx1ZXNbaW5kZXhd
KTsKKyAgICB9Cit9KSgpOworCisvLyBSZWdFeHAgc3ViY2xhc3Mgd2l0aCBvdmVycmlkZGVuIGZs
YWdzIGluIHN1YmNsYXNzIG1ldGhvZDogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxh
Z3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAg
ICBsZXQgZmxhZ3MgPSBbICJmbGFncyIsICJnbG9iYWwiLCAiaWdub3JlQ2FzZSIsICJtdWx0aWxp
bmUiLCAic3RpY2t5IiwgInVuaWNvZGUiIF07CisgICAgbGV0IGZsYWdWYWx1ZXMgPSBbICIiLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UgXTsKKyAgICBmb3IgKGxldCBpbmRleCBp
biBmbGFncykgeworICAgICAgICAoZnVuY3Rpb24oZmxhZywgZmxhZ1ZhbHVlKSB7CisgICAgICAg
ICAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICAgICAgICAgIGNsYXNzIFRlc3RSZWdFeHAgZXh0
ZW5kcyBSZWdFeHAgeworICAgICAgICAgICAgICAgIGdldCBbZmxhZ10oKSB7CisgICAgICAgICAg
ICAgICAgICAgIGFjY2Vzc2VzLnB1c2goZmxhZyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmbGFnVmFsdWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgIGxldCBvYmogPSBuZXcgVGVzdFJlZ0V4cCgvaXQvKTsKKworICAgICAgICAgICAgYXNzZXJ0
KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsK
KyAgICAgICAgICAgIGxldCByZXN1bHQgPSBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0u
Y2FsbChvYmosICJzcGxpdG1lIik7CisgICAgICAgICAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxh
ZywgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgICAg
ICAgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7CisK
KyAgICAgICAgfSkgKGZsYWdzW2luZGV4XSwgZmxhZ1ZhbHVlc1tpbmRleF0pOworICAgIH0KK30p
KCk7CisKKy8vIFJlZ0V4cCBzdWJjbGFzcyB3aXRoIG92ZXJyaWRkZW4gZmxhZ3MgdXNpbmcgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5OiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBi
ZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxl
dCBmbGFncyA9IFsgImZsYWdzIiwgImdsb2JhbCIsICJpZ25vcmVDYXNlIiwgIm11bHRpbGluZSIs
ICJzdGlja3kiLCAidW5pY29kZSIgXTsKKyAgICBsZXQgZmxhZ1ZhbHVlcyA9IFsgIiIsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSBdOworICAgIGZvciAobGV0IGluZGV4IGluIGZs
YWdzKSB7CisgICAgICAgIChmdW5jdGlvbihmbGFnLCBmbGFnVmFsdWUpIHsKKyAgICAgICAgICAg
IGxldCBhY2Nlc3NlcyA9IFtdOworICAgICAgICAgICAgY2xhc3MgVGVzdFJlZ0V4cCBleHRlbmRz
IFJlZ0V4cCB7IH07CisgICAgICAgICAgICBsZXQgb2JqID0gbmV3IFRlc3RSZWdFeHAoL2l0Lyk7
CisKKyAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGZsYWcsIHsKKyAgICAg
ICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBhY2Nlc3Nl
cy5wdXNoKGZsYWcpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhc3NlcnQoYWNj
ZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAg
ICAgICAgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxs
KG9iaiwgInNwbGl0bWUiKTsKKyAgICAgICAgICAgIGFzc2VydChhY2Nlc3NlcyA9PSBmbGFnLCAi
UHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgICAgICAg
ICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKKworICAg
ICAgICB9KSAoZmxhZ3NbaW5kZXhdLCBmbGFnVmFsdWVzW2luZGV4XSk7CisgICAgfQorfSkoKTsK
KworLy8gQW55IG9iamVjdCB3aXRoIHNwZWNpZXMgY29uc3RydWN0b3I6IFRlc3RpbmcgRVM2IDIx
LjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4K
KyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9iaiA9IHsg
Y29uc3RydWN0b3I6IHt9IH07CisgICAgb2JqLmNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJjb25zdHJ1Y3RvciIpOworICAg
ICAgICByZXR1cm4gL2l0L3k7CisgICAgfTsKKworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShv
YmosICJmbGFncyIsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFj
Y2Vzc2VzLnB1c2goImZsYWdzIik7CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0
byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVb
U3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMg
PT0gImZsYWdzLGNvbnN0cnVjdG9yIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBl
eHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVk
IHJlc3VsdCIpOworfSkoKTsKKworLy8gQW55IG9iamVjdCB3aXRoIGN1c3RvbSBwcm90b3R5cGU6
IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQo
cngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107Cisg
ICAgbGV0IFRlc3RSZWdFeHBQcm90byA9IHsKKyAgICAgICAgZ2V0IGZsYWdzKCkgeworICAgICAg
ICAgICAgYWNjZXNzZXMucHVzaCgiZmxhZ3MiKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAg
ICAgICAgfSwKKyAgICAgICAgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNo
KCJ0b1N0cmluZyIpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlZ2V4LnRvU3RyaW5nKCk7
CisgICAgICAgIH0sCisgICAgICAgIGdldCBzb3VyY2UoKSB7CisgICAgICAgICAgICBhY2Nlc3Nl
cy5wdXNoKCJzb3VyY2UiKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZWdleC5zb3VyY2U7
CisgICAgICAgIH0KKyAgICB9CisgICAgVGVzdFJlZ0V4cFByb3RvLl9fcHJvdG9fXyA9IFJlZ0V4
cC5wcm90b3R5cGU7CisKKyAgICBsZXQgVGVzdFJlZ0V4cCA9IGZ1bmN0aW9uKHJlZ2V4KSB7Cisg
ICAgICAgIGFjY2Vzc2VzLnB1c2goImNvbnN0cnVjdG9yIik7CisgICAgICAgIHRoaXMuX3JlZ2V4
ID0gbmV3IFJlZ0V4cChyZWdleCk7CisgICAgfQorICAgIFRlc3RSZWdFeHAucHJvdG90eXBlID0g
VGVzdFJlZ0V4cFByb3RvOworICAgIFRlc3RSZWdFeHBQcm90by5jb25zdHJ1Y3RvciA9IFRlc3RS
ZWdFeHA7CisKKyAgICBsZXQgb2JqID0gbmV3IFRlc3RSZWdFeHAoL2l0Lyk7CisKKyAgICBhc3Nl
cnQoYWNjZXNzZXMgPT0gImNvbnN0cnVjdG9yIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlk
ZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNw
bGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImNvbnN0
cnVjdG9yLGZsYWdzLHNvdXJjZSIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhw
ZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCBy
ZXN1bHQiKTsKK30pKCk7CisKKy8vIDIgbGV2ZWxzIG9mIHN1YmNsYXNzZXM6IFRlc3RpbmcgRVM2
IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIp
KS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisKKyAgICBjbGFzcyBS
ZWdFeHBCIGV4dGVuZHMgUmVnRXhwIHsKKyAgICAgICAgZ2V0IGZsYWdzKCkgeworICAgICAgICAg
ICAgYWNjZXNzZXMucHVzaCgiZmxhZ3MiKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBjbGFzcyBSZWdFeHBDIGV4dGVuZHMgUmVnRXhwQiB7IH0KKworICAg
IGFzc2VydChSZWdFeHBCLl9fcHJvdG9fXyA9PSBSZWdFeHApOworICAgIGFzc2VydChSZWdFeHBD
Ll9fcHJvdG9fXyA9PSBSZWdFeHBCKTsKKworICAgIGxldCBvYmogPSBuZXcgUmVnRXhwQygvaXQv
KTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVy
cmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9s
LnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImZs
YWdzIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAg
IGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsK
KworLy8gMiBsZXZlbHMgb2Ygc3ViY2xhc3NlcyB3aXRoIHN1YnN0aXR1dGVkIHByb3RvdHlwZSBi
ZWZvcmUgaW5zdGFudGlhdGlvbjogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3Mg
YmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBs
ZXQgYWNjZXNzZXMgPSBbXTsKKworICAgIGNsYXNzIEIgZXh0ZW5kcyBSZWdFeHAgeyB9CisgICAg
Y2xhc3MgQyBleHRlbmRzIEIgeyB9CisKKyAgICBhc3NlcnQoQi5fX3Byb3RvX18gPT09IFJlZ0V4
cCk7CisgICAgYXNzZXJ0KEMuX19wcm90b19fID09PSBCKTsKKyAgICBhc3NlcnQoQi5wcm90b3R5
cGUuX19wcm90b19fID09PSBSZWdFeHAucHJvdG90eXBlKTsKKyAgICBhc3NlcnQoQy5wcm90b3R5
cGUuX19wcm90b19fID09PSBCLnByb3RvdHlwZSk7CisKKyAgICBsZXQgWCA9IGZ1bmN0aW9uICgp
IHt9CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFgucHJvdG90eXBlLCAiZmxhZ3MiLCB7Cisg
ICAgICAgIGdldDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJmbGFn
cyIpOworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisgICAgfSk7CisgICAgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KFgucHJvdG90eXBlLCAiZXhlYyIsIHsKKyAgICAgICAgdmFsdWU6
IGZ1bmN0aW9uKHN0cikgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgiZXhlYyIpOworICAg
ICAgICAgICAgdmFyIG1hdGNoUmVzdWx0ID0gL2l0L3kuZXhlYyhzdHIuc3Vic3RyKHRoaXMubGFz
dEluZGV4KSk7CisgICAgICAgICAgICBpZiAobWF0Y2hSZXN1bHQpCisgICAgICAgICAgICAgICAg
dGhpcy5sYXN0SW5kZXggKz0gMjsgLy8gbGVuZ3RoIG9mICJpdCIuCisgICAgICAgICAgICByZXR1
cm4gbWF0Y2hSZXN1bHQ7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIC8vIE1vbmtleSB3aXRo
IHRoZSBwcm90b3R5cGUgY2hhaW4gYmVmb3JlIGluc3RhbnRpYXRpbmcgQy4KKyAgICBYLl9fcHJv
dG9fXyA9IFJlZ0V4cDsKKyAgICBYLnByb3RvdHlwZS5fX3Byb3RvX18gPSBSZWdFeHAucHJvdG90
eXBlOworICAgIEMuX19wcm90b19fID0gWDsKKyAgICBDLnByb3RvdHlwZS5fX3Byb3RvX18gPSBY
LnByb3RvdHlwZTsKKworICAgIGFzc2VydChYLl9fcHJvdG9fXyA9PT0gUmVnRXhwKTsKKyAgICBh
c3NlcnQoQy5fX3Byb3RvX18gPT09IFgpOworICAgIGFzc2VydChYLnByb3RvdHlwZS5fX3Byb3Rv
X18gPT09IFJlZ0V4cC5wcm90b3R5cGUpOworICAgIGFzc2VydChDLnByb3RvdHlwZS5fX3Byb3Rv
X18gPT09IFgucHJvdG90eXBlKTsKKworICAgIGxldCBvYmogPSBuZXcgQzsKKworICAgIGFzc2Vy
dChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7
CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9i
aiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImZsYWdzLGV4ZWMsZXhlYyxl
eGVjLGV4ZWMsZXhlYyxleGVjIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBl
Y3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJl
c3VsdCIpOworfSkoKTsKKworLy8gMiBsZXZlbHMgb2Ygc3ViY2xhc3NlcyB3aXRoIHN1YnN0aXR1
dGVkIHByb3RvdHlwZSBhZnRlciBpbnN0YW50aWF0aW9uOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6
IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rp
b24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworCisgICAgY2xhc3MgQiBleHRlbmRzIFJl
Z0V4cCB7IH0KKyAgICBjbGFzcyBDIGV4dGVuZHMgQiB7IH0KKworICAgIGFzc2VydChCLl9fcHJv
dG9fXyA9PT0gUmVnRXhwKTsKKyAgICBhc3NlcnQoQy5fX3Byb3RvX18gPT09IEIpOworICAgIGFz
c2VydChCLnByb3RvdHlwZS5fX3Byb3RvX18gPT09IFJlZ0V4cC5wcm90b3R5cGUpOworICAgIGFz
c2VydChDLnByb3RvdHlwZS5fX3Byb3RvX18gPT09IEIucHJvdG90eXBlKTsKKworICAgIGxldCBY
ID0gZnVuY3Rpb24gKCkge30KKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoWC5wcm90b3R5cGUs
ICJmbGFncyIsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vz
c2VzLnB1c2goImZsYWdzIik7CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAg
ICB9KTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoWC5wcm90b3R5cGUsICJleGVjIiwgewor
ICAgICAgICB2YWx1ZTogZnVuY3Rpb24oc3RyKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNo
KCJleGVjIik7CisgICAgICAgICAgICB2YXIgbWF0Y2hSZXN1bHQgPSAvaXQveS5leGVjKHN0ci5z
dWJzdHIodGhpcy5sYXN0SW5kZXgpKTsKKyAgICAgICAgICAgIGlmIChtYXRjaFJlc3VsdCkKKyAg
ICAgICAgICAgICAgICB0aGlzLmxhc3RJbmRleCArPSAyOyAvLyBsZW5ndGggb2YgIml0Ii4KKyAg
ICAgICAgICAgIHJldHVybiBtYXRjaFJlc3VsdDsKKyAgICAgICAgfQorICAgIH0pOworCisgICAg
Ly8gSW5zdGFudGlhdGUgQyBiZWZvcmUgbW9ua2V5aW5nIHdpdGggdGhlIHByb3RvdHlwZSBjaGFp
bi4KKyAgICBsZXQgb2JqID0gbmV3IEMoKTsKKworICAgIFguX19wcm90b19fID0gUmVnRXhwOwor
ICAgIFgucHJvdG90eXBlLl9fcHJvdG9fXyA9IFJlZ0V4cC5wcm90b3R5cGU7CisgICAgQy5fX3By
b3RvX18gPSBYOworICAgIEMucHJvdG90eXBlLl9fcHJvdG9fXyA9IFgucHJvdG90eXBlOworCisg
ICAgYXNzZXJ0KFguX19wcm90b19fID09PSBSZWdFeHApOworICAgIGFzc2VydChDLl9fcHJvdG9f
XyA9PT0gWCk7CisgICAgYXNzZXJ0KFgucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gUmVnRXhwLnBy
b3RvdHlwZSk7CisgICAgYXNzZXJ0KEMucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gWC5wcm90b3R5
cGUpOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92
ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1i
b2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAi
ZmxhZ3MsZXhlYyxleGVjLGV4ZWMsZXhlYyxleGVjLGV4ZWMiLCAiUHJvcGVydHkgYWNjZXNzZXMg
ZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1l
IiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyAyIGxldmVscyBvZiBzdWJjbGFz
c2VzIHdpdGggcHJveGllZCBwcm90b3R5cGU6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0
IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7
CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisKKyAgICBjbGFzcyBCIGV4dGVuZHMgUmVnRXhwIHsg
fTsKKworICAgIGFzc2VydChCLl9fcHJvdG9fXyA9PT0gUmVnRXhwKTsKKyAgICBhc3NlcnQoQi5w
cm90b3R5cGUuX19wcm90b19fID09PSBSZWdFeHAucHJvdG90eXBlKTsKKworICAgIGxldCBwcm94
eSA9IG5ldyBQcm94eShSZWdFeHAucHJvdG90eXBlLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24o
b2JqLCBwcm9wKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKHByb3AudG9TdHJpbmcoKSk7
CisgICAgICAgICAgICBpZiAocHJvcCA9PT0gImV4ZWMiKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uKHN0cikgeworICAgICAgICAgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJp
bl9leGVjIik7CisgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaFJlc3VsdCA9IC9pdC95LmV4
ZWMoc3RyLnN1YnN0cih0aGlzLmxhc3RJbmRleCkpOworICAgICAgICAgICAgICAgICAgICBpZiAo
bWF0Y2hSZXN1bHQpCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RJbmRleCArPSAy
OyAvLyBsZW5ndGggb2YgIml0Ii4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoUmVz
dWx0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biBvYmpbcHJvcF07CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBCLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBwcm94eTsKKworICAgIGxldCBvYmogPSBuZXcgQigpOworCisgICAgYXNzZXJ0KGFjY2Vz
c2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBs
ZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3Bs
aXRtZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiZmxhZ3MsU3ltYm9sKFN5bWJvbC5tYXRj
aCksZXhlYyxpbl9leGVjLGV4ZWMsaW5fZXhlYyxleGVjLGluX2V4ZWMsZXhlYyxpbl9leGVjLGV4
ZWMsaW5fZXhlYyxleGVjLGluX2V4ZWMiLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNo
IGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0
ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyBSZWdFeHAgc3ViY2xhc3Mgd2l0aCBvdmVycmlkZGVu
IGV4ZWM6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogMTkuYi4gTGV0IHogYmUgPyBSZWdFeHBFeGVj
KHNwbGl0dGVyLCBTKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107Cisg
ICAgY2xhc3MgVGVzdFJlZ0V4cCBleHRlbmRzIFJlZ0V4cCB7CisgICAgICAgIGV4ZWMoc3RyKSB7
CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJleGVjIik7CisgICAgICAgICAgICByZXR1cm4g
UmVnRXhwLnByb3RvdHlwZS5leGVjLmNhbGwodGhpcywgc3RyKTsKKyAgICAgICAgfQorICAgIH07
CisgICAgbGV0IG9iaiA9IG5ldyBUZXN0UmVnRXhwKC9pdC8pOworCisgICAgYXNzZXJ0KGFjY2Vz
c2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBs
ZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3Bs
aXRtZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiZXhlYyxleGVjLGV4ZWMsZXhlYyxleGVj
LGV4ZWMiLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7Cisg
ICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgp
OworCisvLyBQcm94aWVkIFJlZ0V4cCBvYnNlcnZpbmcgZXZlcnkgZ2V0LgorKGZ1bmN0aW9uICgp
IHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgcmVnZXhwID0gbmV3IFJlZ0V4cCgv
aXQvKTsKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkocmVnZXhwLCB7CisgICAgICAgIGdldChv
YmosIHByb3ApIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2gocHJvcC50b1N0cmluZygpKTsK
KyAgICAgICAgICAgIHJldHVybiBvYmpbcHJvcF07CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHBy
b3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5j
YWxsKHByb3h5LCAic3BsaXRtZSIpOworICAgIC8vIE5vdGU6IEBAc3BsaXQgY3JlYXRlcyBhIG5l
dyBpbnN0YW5jZSBvZiB0aGUgUmVnRXhwIHVzaW5nIGl0cyBAQHNwZWNpZXMsIGFuZCBwZXJmb3Jt
cworICAgIC8vIHRoZSBzcGxpdCBvcGVyYXRpb24gd2l0aCB0aGF0IG5ldyBpbnN0YW5jZS4gSGVu
Y2UsIHRoZSBwcm94eSBpcyBvbmx5IGFibGUgdG8gb2JzZXJ2ZQorICAgIC8vIGdldHMgdXAgdG8g
dGhlIGNyZWF0aW9uIG9mIHRoZSBuZXcgaW5zdGFuY2UuCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09
ICJjb25zdHJ1Y3RvcixmbGFncyxTeW1ib2woU3ltYm9sLm1hdGNoKSxzb3VyY2UiLAorICAgICAg
ICAiUHJveHkgbm90IGFibGUgdG8gb2JzZXJ2ZSBzb21lIGdldHMiKTsKKyAgICBhc3NlcnQocmVz
dWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIFByb3hp
ZWQgUmVnRXhwICh3aXRob3V0IEBAbWF0Y2gpIG9ic2VydmluZyBldmVyeSBnZXQuCisvLyBUaGlz
IGlzIHRvIGZvcmNlIHRoZSBSZWdFeHAgQHNwZWNpZXMgY29uc3RydWN0b3IgdG8gYWNjZXNzIHNv
dXJjZS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IHJl
Z2V4cCA9IG5ldyBSZWdFeHAoL2l0Lyk7CisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHJlZ2V4
cCwgeworICAgICAgICBnZXQob2JqLCBwcm9wKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNo
KHByb3AudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBpZiAocHJvcCA9PSBTeW1ib2wubWF0Y2gp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHJldHVybiBv
YmpbcHJvcF07CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAi
IiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3Vs
dCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKHByb3h5LCAic3BsaXRtZSIp
OworICAgIC8vIE5vdGU6IEBAc3BsaXQgY3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgUmVn
RXhwIHVzaW5nIGl0cyBAQHNwZWNpZXMsIGFuZCBwZXJmb3JtcworICAgIC8vIHRoZSBzcGxpdCBv
cGVyYXRpb24gd2l0aCB0aGF0IG5ldyBpbnN0YW5jZS4gSGVuY2UsIHRoZSBwcm94eSBpcyBvbmx5
IGFibGUgdG8gb2JzZXJ2ZQorICAgIC8vIGdldHMgdXAgdG8gdGhlIGNyZWF0aW9uIG9mIHRoZSBu
ZXcgaW5zdGFuY2UuCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJjb25zdHJ1Y3RvcixmbGFncyxT
eW1ib2woU3ltYm9sLm1hdGNoKSxTeW1ib2woU3ltYm9sLnRvUHJpbWl0aXZlKSx0b1N0cmluZyxz
b3VyY2UsZmxhZ3MiLAorICAgICAgICAiUHJveHkgbm90IGFibGUgdG8gb2JzZXJ2ZSBzb21lIGdl
dHMiKTsKKyAgICAvLyBUaGUgbmV3IGluc3RhbmNlIG9mIHRoZSBSZWdFeHAgd291bGQgaGF2ZSBi
ZWVuIGNvbnN0cnVjdGVkIHdpdGggdGhlIHBhdHRlcm4gZnJvbQorICAgIC8vIHRoZSBwcm94eSB0
b1N0cmluZygpIGkuZS4gIlwvbHRcLyIgaW5zdGVhZCBvZiBzb3VyY2UsIGJlY2F1c2UgdGhlIHBy
b3h5IGlzIGFuCisgICAgLy8gb2JqZWN0IHdpdGhvdXQgYSBbQEBtYXRjaF0gcHJvcGVydHkuCisg
ICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsaXRtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSko
KTsKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXBy
b3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMi5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI2IEBACisvL0Ag
cnVuRGVmYXVsdAorCitmdW5jdGlvbiBhc3NlcnQodGVzdGVkVmFsdWUsIG1zZykgeworICAgIGlm
ICghdGVzdGVkVmFsdWUpCisgICAgICAgIHRocm93IEVycm9yKG1zZyk7Cit9CisKKy8vIFJlZ0V4
cCB3aXRoIG92ZXJyaWRkZW4gW0BAc3BlY2llc106IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNC4g
TGV0IEMgYmUgPyBTcGVjaWVzQ29uc3RydWN0b3IocngsICVSZWdFeHAlKS4KKyhmdW5jdGlvbiAo
KSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9yaWdEZXNjcmlwdG9yID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAsIFN5bWJvbC5zcGVjaWVzKTsKKyAg
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLCBTeW1ib2wuc3BlY2llcywgeworICAgICAg
ICB2YWx1ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKFN5bWJvbC5z
cGVjaWVzLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIC9pdC95OworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBsZXQgb2JqID0gbmV3IFJlZ0V4cDsKKyAgICBsZXQgZXJyb3JTdHI7
CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJp
ZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQob2JqKTsKKyAg
ICBhc3NlcnQoYWNjZXNzZXMgPT0gIlN5bWJvbChTeW1ib2wuc3BlY2llcykiLCAiUHJvcGVydHkg
YWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9
PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOwpJbmRleDogTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMtZmxhZ3MuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzMy1mbGFncy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisvL0AgcnVu
RGVmYXVsdAorCitmdW5jdGlvbiBhc3NlcnQodGVzdGVkVmFsdWUsIG1zZykgeworICAgIGlmICgh
dGVzdGVkVmFsdWUpCisgICAgICAgIHRocm93IEVycm9yKG1zZyk7Cit9CisKKy8vIFJlZ0V4cC5w
cm90b3R5cGUgd2l0aCBvdmVycmlkZGVuIGZsYWdzOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUu
IExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24g
KCkgeworICAgIGxldCBmbGFnID0gImZsYWdzIjsKKyAgICBsZXQgZmxhZ1ZhbHVlID0gIiI7CisK
KyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb3JpZ0Rlc2NyaXB0b3IgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcpOworCisgICAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcsIHsKKyAgICAgICAg
Z2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goZmxhZyk7CisgICAg
ICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAgICB9CisgICAgfSk7CisgICAgbGV0IG9i
aiA9IC9pdC87CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwg
dG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQo
b2JqKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxhZywgIlByb3BlcnR5IGFjY2Vzc2VzIGRv
IG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIs
ICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMzLWdsb2JhbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
My1nbG9iYWwuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1n
bG9iYWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorLy9AIHJ1bkRlZmF1bHQK
KworZnVuY3Rpb24gYXNzZXJ0KHRlc3RlZFZhbHVlLCBtc2cpIHsKKyAgICBpZiAoIXRlc3RlZFZh
bHVlKQorICAgICAgICB0aHJvdyBFcnJvcihtc2cpOworfQorCisvLyBSZWdFeHAucHJvdG90eXBl
IHdpdGggb3ZlcnJpZGRlbiBmbGFnczogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxh
Z3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAg
ICBsZXQgZmxhZyA9ICJnbG9iYWwiOworICAgIGxldCBmbGFnVmFsdWUgPSBmYWxzZTsKKworICAg
IGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGxldCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgZmxhZyk7CisKKyAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLnByb3RvdHlwZSwgZmxhZywgeworICAgICAgICBnZXQ6
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAg
ICAgIHJldHVybiBmbGFnVmFsdWU7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0g
L2l0LzsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBv
dmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmop
OworICAgIGFzc2VydChhY2Nlc3NlcyA9PSBmbGFnLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90
IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVu
ZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMtaWdub3JlQ2FzZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
My1pZ25vcmVDYXNlLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMtaWdub3JlQ2FzZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisvL0AgcnVu
RGVmYXVsdAorCitmdW5jdGlvbiBhc3NlcnQodGVzdGVkVmFsdWUsIG1zZykgeworICAgIGlmICgh
dGVzdGVkVmFsdWUpCisgICAgICAgIHRocm93IEVycm9yKG1zZyk7Cit9CisKKy8vIFJlZ0V4cC5w
cm90b3R5cGUgd2l0aCBvdmVycmlkZGVuIGZsYWdzOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUu
IExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24g
KCkgeworICAgIGxldCBmbGFnID0gImlnbm9yZUNhc2UiOworICAgIGxldCBmbGFnVmFsdWUgPSBm
YWxzZTsKKworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGxldCBvcmlnRGVzY3JpcHRvciA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgZmxhZyk7
CisKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLnByb3RvdHlwZSwgZmxhZywgewor
ICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaChmbGFn
KTsKKyAgICAgICAgICAgIHJldHVybiBmbGFnVmFsdWU7CisgICAgICAgIH0KKyAgICB9KTsKKyAg
ICBsZXQgb2JqID0gL2l0LzsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0
ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1l
Ii5zcGxpdChvYmopOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSBmbGFnLCAiUHJvcGVydHkgYWNj
ZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAi
c3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOwpJbmRleDogTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLW11bHRpbGluZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLW11bHRpbGluZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBA
CisvL0AgcnVuRGVmYXVsdAorCitmdW5jdGlvbiBhc3NlcnQodGVzdGVkVmFsdWUsIG1zZykgewor
ICAgIGlmICghdGVzdGVkVmFsdWUpCisgICAgICAgIHRocm93IEVycm9yKG1zZyk7Cit9CisKKy8v
IFJlZ0V4cC5wcm90b3R5cGUgd2l0aCBvdmVycmlkZGVuIGZsYWdzOiBUZXN0aW5nIEVTNiAyMS4y
LjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCiso
ZnVuY3Rpb24gKCkgeworICAgIGxldCBmbGFnID0gIm11bHRpbGluZSI7CisgICAgbGV0IGZsYWdW
YWx1ZSA9IGZhbHNlOworCisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9yaWdEZXNj
cmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBl
LCBmbGFnKTsKKworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWdFeHAucHJvdG90eXBlLCBm
bGFnLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5w
dXNoKGZsYWcpOworICAgICAgICAgICAgcmV0dXJuIGZsYWdWYWx1ZTsKKyAgICAgICAgfQorICAg
IH0pOworICAgIGxldCBvYmogPSAvaXQvOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAi
dW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0g
InNwbGl0bWUiLnNwbGl0KG9iaik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09IGZsYWcsICJQcm9w
ZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVz
dWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CkluZGV4OiBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtc3RpY2t5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAK
Ky8vQCBydW5EZWZhdWx0CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7Cisg
ICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8g
UmVnRXhwLnByb3RvdHlwZSB3aXRoIG92ZXJyaWRkZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIxLjIu
NS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhm
dW5jdGlvbiAoKSB7CisgICAgbGV0IGZsYWcgPSAic3RpY2t5IjsKKyAgICBsZXQgZmxhZ1ZhbHVl
ID0gZmFsc2U7CisKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb3JpZ0Rlc2NyaXB0
b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsIGZs
YWcpOworCisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcs
IHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2go
ZmxhZyk7CisgICAgICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAgICB9CisgICAgfSk7
CisgICAgbGV0IG9iaiA9IC9pdC87CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4
cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSAic3Bs
aXRtZSIuc3BsaXQob2JqKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxhZywgIlByb3BlcnR5
IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQg
PT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5kZXg6IExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtdW5pY29kZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLXVuaWNvZGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAor
Ly9AIHJ1bkRlZmF1bHQKKworZnVuY3Rpb24gYXNzZXJ0KHRlc3RlZFZhbHVlLCBtc2cpIHsKKyAg
ICBpZiAoIXRlc3RlZFZhbHVlKQorICAgICAgICB0aHJvdyBFcnJvcihtc2cpOworfQorCisvLyBS
ZWdFeHAucHJvdG90eXBlIHdpdGggb3ZlcnJpZGRlbiBmbGFnczogVGVzdGluZyBFUzYgMjEuMi41
LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1
bmN0aW9uICgpIHsKKyAgICBsZXQgZmxhZyA9ICJ1bmljb2RlIjsKKyAgICBsZXQgZmxhZ1ZhbHVl
ID0gZmFsc2U7CisKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb3JpZ0Rlc2NyaXB0
b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsIGZs
YWcpOworCisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcs
IHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2go
ZmxhZyk7CisgICAgICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAgICB9CisgICAgfSk7
CisgICAgbGV0IG9iaiA9IC9pdC87CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4
cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSAic3Bs
aXRtZSIuc3BsaXQob2JqKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxhZywgIlByb3BlcnR5
IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQg
PT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5kZXg6IExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHM0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHM0LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLy9AIHJ1bkRlZmF1bHQKKworZnVuY3Rp
b24gYXNzZXJ0KHRlc3RlZFZhbHVlLCBtc2cpIHsKKyAgICBpZiAoIXRlc3RlZFZhbHVlKQorICAg
ICAgICB0aHJvdyBFcnJvcihtc2cpOworfQorCisvLyBSZWdFeHAucHJvdG90eXBlIHdpdGggb3Zl
cnJpZGRlbiBleGVjOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDE5LmIuIExldCB6IGJlID8gUmVn
RXhwRXhlYyhzcGxpdHRlciwgUykuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9
IFtdOworICAgIGxldCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgImV4ZWMiKTsKKyAgICBsZXQgb3JpZ0V4ZWMgPSBvcmln
RGVzY3JpcHRvci52YWx1ZTsKKworICAgIGxldCBvYmogPSAvaXQvOworICAgIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShSZWdFeHAucHJvdG90eXBlLCAiZXhlYyIsIHsKKyAgICAgICAgdmFsdWU6IGZ1
bmN0aW9uKHN0cikgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgiZXhlYyIpOworICAgICAg
ICAgICAgcmV0dXJuIG9yaWdFeGVjLmNhbGwodGhpcywgc3RyKTsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgLy8gVGhlIEBAc3BsaXQgc2xvdyBwYXRoIHNob3VsZCBjYWxsIGFuIGludGVybmFs
IHZlcnNpb24gb2Ygc3Vic3RyLiBNYWtlIHN1cmUgdGhhdAorICAgIC8vIGl0J3Mgbm90IGNhbGxp
bmcgdGhlIHB1YmxpYyB2ZXJzaW9uIHdoaWNoIGNhbiBiZSBvdmVycmlkZGVuLgorICAgIFN0cmlu
Zy5wcm90b3R5cGUuc3Vic3RyID0gZnVuY3Rpb24oc3RhcnQsIGxlbmd0aCkgeworICAgICAgICB0
aHJvdyBFcnJvcigiU2hvdWxkIG5vdCBjYWxsIG92ZXJyaWRkZW4gc3Vic3RyIik7CisgICAgfQor
CisgICAgLy8gVGhlIEBAc3BsaXQgc2xvdyBwYXRoIHNob3VsZCBvbmx5IGNhbGwgdGhlIGludGVy
bmFsIHZlcnNpb24gb2YgaW5jbHVkZXMuIE1ha2Ugc3VyZQorICAgIC8vIHRoYXQgaXQncyBub3Qg
Y2FsbGluZyB0aGUgcHVibGljIHZlcnNpb24gd2hpY2ggY2FuIGJlIG92ZXJyaWRkZW4uCisgICAg
U3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyA9IGZ1bmN0aW9uKHBhdHRlcm4pIHsKKyAgICAgICAg
dGhyb3cgRXJyb3IoIlNob3VsZCBub3QgY2FsbCBvdmVycmlkZGVuIGluY2x1ZGVzIik7CisgICAg
fQorCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJy
aWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7Cisg
ICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJleGVjLGV4ZWMsZXhlYyxleGVjLGV4ZWMsZXhlYyIsICJQ
cm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQo
cmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEwIEBACisvL0AgcnVuRGVmYXVsdAorCitm
dW5jdGlvbiBhc3NlcnQodGVzdGVkVmFsdWUsIG1zZykgeworICAgIGlmICghdGVzdGVkVmFsdWUp
CisgICAgICAgIHRocm93IEVycm9yKG1zZyk7Cit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KKy8vIFRlc3RpbmcgdGhlIHN0cmluZyB0aGF0IHdlJ3JlIGNhbGxpbmcgc3BsaXQg
b24uCisKKy8vIFByb3hpZWQgU3RyaW5nIHN1YmNsYXNzLgorKGZ1bmN0aW9uICgpIHsKKyAgICBs
ZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBjbGFzcyBFeHRTdHJpbmcgZXh0ZW5kcyBTdHJpbmcgeyB9
CisgICAgdmFyIG9iaiA9IG5ldyBFeHRTdHJpbmcoInNwbGl0bWUiKTsKKyAgICB2YXIgcHJveHkg
PSBuZXcgUHJveHkob2JqLCB7CisgICAgICAgIGdldChvYmosIHByb3ApIHsKKyAgICAgICAgICAg
IGFjY2Vzc2VzLnB1c2gocHJvcC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGlmIChwcm9wID09
PSAidG9TdHJpbmciKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJpbl90b1N0cmluZyIpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gb2JqLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG9ialtwcm9wXTsKKyAgICAgICAgfQorICAg
IH0pOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92
ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gU3RyaW5nLnByb3RvdHlwZS5zcGxp
dC5jYWxsKHByb3h5LCAiaXQiKTsgICAgCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJTeW1ib2wo
U3ltYm9sLnRvUHJpbWl0aXZlKSx0b1N0cmluZyxpbl90b1N0cmluZyIsICJQcm9wZXJ0eSBhY2Nl
c3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJz
cGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIE9iamVjdCB0aGF0IGxv
b2tzIGxpa2UgYSBzdHJpbmcuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtd
OworICAgIHZhciBvYmogPSB7CisgICAgICAgIFtTeW1ib2wudG9QcmltaXRpdmVdKCkgeworICAg
ICAgICAgICAgYWNjZXNzZXMucHVzaChTeW1ib2wudG9QcmltaXRpdmUudG9TdHJpbmcoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gInNwbGl0bWUiOworICAgICAgICB9CisgICAgfQorCisgICAgYXNz
ZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMi
KTsKKyAgICBsZXQgcmVzdWx0ID0gU3RyaW5nLnByb3RvdHlwZS5zcGxpdC5jYWxsKG9iaiwgIml0
Iik7ICAgIAorICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiU3ltYm9sKFN5bWJvbC50b1ByaW1pdGl2
ZSkiLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAg
YXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOwor
CisvLyBPYmplY3QgdGhhdCBsb29rcyBsaWtlIGEgc3RyaW5nLgorKGZ1bmN0aW9uICgpIHsKKyAg
ICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICB2YXIgb2JqID0geworICAgICAgICB0b1N0cmluZygp
IHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goInRvU3RyaW5nIik7CisgICAgICAgICAgICBy
ZXR1cm4gInNwbGl0bWUiOworICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0KGFjY2Vzc2Vz
ID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQg
cmVzdWx0ID0gU3RyaW5nLnByb3RvdHlwZS5zcGxpdC5jYWxsKG9iaiwgIml0Iik7ICAgIAorICAg
IGFzc2VydChhY2Nlc3NlcyA9PSAidG9TdHJpbmciLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90
IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVu
ZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyBTdHJpbmcgc3ViY2xhc3Mgd2l0aCBvdmVy
cmlkZGVuIEBAc3BsaXQuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOwor
ICAgIGNsYXNzIEV4dFN0cmluZyBleHRlbmRzIFN0cmluZyB7CisgICAgICAgIFtTeW1ib2wuc3Bs
aXRdIChzdHIpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goIlN5bWJvbChTeW1ib2wuc3Bs
aXQpIik7CisgICAgICAgICAgICByZXR1cm4gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRd
LmNhbGwoL2l0Lywgc3RyKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB2YXIgb2JqID0gbmV3
IEV4dFN0cmluZzsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2Fs
bCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxp
dChvYmopOyAgICAKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIlN5bWJvbChTeW1ib2wuc3BsaXQp
IiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFz
c2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKKwor
CisvLyBPYmplY3Qgd2l0aCBvdmVycmlkZGVuIEBAc2VhcmNoLgorKGZ1bmN0aW9uICgpIHsKKyAg
ICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICB2YXIgb2JqID0geworICAgICAgICBbU3ltYm9sLnNw
bGl0XSAoc3RyKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJTeW1ib2woU3ltYm9sLnNw
bGl0KSIpOworICAgICAgICAgICAgcmV0dXJuIFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0
XS5jYWxsKC9pdC8sIHN0cik7CisgICAgICAgIH0sCisgICAgfQorCisgICAgYXNzZXJ0KGFjY2Vz
c2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBs
ZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7ICAgIAorICAgIGFzc2VydChhY2Nlc3Nl
cyA9PSAiU3ltYm9sKFN5bWJvbC5zcGxpdCkiLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1h
dGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhw
ZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CisvLyBUZXN0aW5nIHRoZSByZWdleHAgb2JqZWN0IHRoYXQgd2UncmUgY2FsbGluZyBzcGxpdCB3
aXRoLgorCisvLyBTdWJjbGFzcyB3aXRoIG92ZXJyaWRkZW4gW0BAc3BlY2llc106IFRlc3Rpbmcg
RVM2IDIxLjIuNS4xMTogNC4gTGV0IEMgYmUgPyBTcGVjaWVzQ29uc3RydWN0b3IocngsICVSZWdF
eHAlKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgY2xhc3Mg
VGVzdFJlZ0V4cCBleHRlbmRzIFJlZ0V4cCB7IH0KKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHko
VGVzdFJlZ0V4cCwgU3ltYm9sLnNwZWNpZXMsIHsKKyAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgYWNjZXNzZXMucHVzaChTeW1ib2wuc3BlY2llcy50b1N0cmluZygpKTsK
KyAgICAgICAgICAgIHJldHVybiAvaXQveTsKKyAgICAgICAgfQorICAgIH0pOworICAgIGxldCBv
YmogPSBuZXcgVGVzdFJlZ0V4cDsKKyAgICBsZXQgZXJyb3JTdHI7CisKKyAgICBhc3NlcnQoYWNj
ZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAg
IGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQob2JqKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMg
PT0gIlN5bWJvbChTeW1ib2wuc3BlY2llcykiLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1h
dGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhw
ZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyBSZWdFeHAgc3ViY2xhc3Mgd2l0aCBjb25zdHJ1
Y3RvcjogVGVzdGluZyBFUzYgMjEuMi41LjExOiA0LiBMZXQgQyBiZSA/IFNwZWNpZXNDb25zdHJ1
Y3RvcihyeCwgJVJlZ0V4cCUpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBb
XTsKKyAgICBjbGFzcyBUZXN0UmVnRXhwIGV4dGVuZHMgUmVnRXhwIHsKKyAgICAgICAgY29uc3Ry
dWN0b3Ioc3RyLCBmbGFncykgeworICAgICAgICAgICAgc3VwZXIoc3RyLCBmbGFncyk7CisgICAg
ICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJjb25zdHJ1Y3RvciIpOworICAgICAgICB9CisgICAgfQor
ICAgIGxldCBvYmogPSBuZXcgVGVzdFJlZ0V4cCgiaXQiKTsKKworICAgIGFzc2VydChhY2Nlc3Nl
cyA9PSAiY29uc3RydWN0b3IiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMi
KTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7CisgICAgYXNzZXJ0KGFj
Y2Vzc2VzID09ICJjb25zdHJ1Y3Rvcixjb25zdHJ1Y3RvciIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBk
byBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUi
LCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIEFuIG9iamVjdCB3aXRoIHNwZWNp
ZXMgY29uc3RydWN0b3I6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNC4gTGV0IEMgYmUgPyBTcGVj
aWVzQ29uc3RydWN0b3IocngsICVSZWdFeHAlKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFj
Y2Vzc2VzID0gW107CisgICAgbGV0IG9iaiA9IHsgY29uc3RydWN0b3I6IHt9IH07CisgICAgb2Jq
LmNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBhY2Nl
c3Nlcy5wdXNoKCJjb25zdHJ1Y3RvciIpOworICAgICAgICByZXR1cm4gL2l0L3k7CisgICAgfTsK
KyAgICBvYmpbU3ltYm9sLnNwbGl0XSA9IGZ1bmN0aW9uKHN0ciwgbGltaXQpIHsKKyAgICAgICAg
YWNjZXNzZXMucHVzaChTeW1ib2wuc3BsaXQudG9TdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBS
ZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbCh0aGlzLCBzdHIsIGxpbWl0KTsKKyAg
ICB9OworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92
ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7
CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJTeW1ib2woU3ltYm9sLnNwbGl0KSxjb25zdHJ1Y3Rv
ciIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBh
c3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisK
Ky8vIFJlZ0V4cCBvYmplY3Qgd2l0aCBvdmVycmlkZGVuIGZsYWdzOiBUZXN0aW5nIEVTNiAyMS4y
LjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCiso
ZnVuY3Rpb24gKCkgeworICAgIGxldCBmbGFncyA9IFsgImZsYWdzIiwgImdsb2JhbCIsICJpZ25v
cmVDYXNlIiwgIm11bHRpbGluZSIsICJzdGlja3kiLCAidW5pY29kZSIgXTsKKyAgICBsZXQgZmxh
Z1ZhbHVlcyA9IFsgIiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSBdOworICAg
IGZvciAobGV0IGluZGV4IGluIGZsYWdzKSB7CisgICAgICAgIChmdW5jdGlvbihmbGFnLCBmbGFn
VmFsdWUpIHsKKyAgICAgICAgICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgICAgICAgICAgbGV0
IG9iaiA9IC9pdC87CisgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBmbGFn
LCB7CisgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAg
ICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZsYWdWYWx1ZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIi
LCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICAgICAgICAgIGxl
dCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQob2JqKTsKKyAgICAgICAgICAgIGFzc2VydChhY2Nl
c3NlcyA9PSBmbGFnLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9u
Iik7CisgICAgICAgICAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCBy
ZXN1bHQiKTsKKyAgICAgICAgfSkgKGZsYWdzW2luZGV4XSwgZmxhZ1ZhbHVlc1tpbmRleF0pOwor
ICAgIH0KK30pKCk7CisKKy8vIFJlZ0V4cCBzdWJjbGFzcyB3aXRoIG92ZXJyaWRkZW4gZmxhZ3Mg
aW4gc3ViY2xhc3MgbWV0aG9kOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBi
ZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxl
dCBmbGFncyA9IFsgImZsYWdzIiwgImdsb2JhbCIsICJpZ25vcmVDYXNlIiwgIm11bHRpbGluZSIs
ICJzdGlja3kiLCAidW5pY29kZSIgXTsKKyAgICBsZXQgZmxhZ1ZhbHVlcyA9IFsgIiIsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSBdOworICAgIGZvciAobGV0IGluZGV4IGluIGZs
YWdzKSB7CisgICAgICAgIChmdW5jdGlvbihmbGFnLCBmbGFnVmFsdWUpIHsKKyAgICAgICAgICAg
IGxldCBhY2Nlc3NlcyA9IFtdOworICAgICAgICAgICAgY2xhc3MgVGVzdFJlZ0V4cCBleHRlbmRz
IFJlZ0V4cCB7CisgICAgICAgICAgICAgICAgZ2V0IFtmbGFnXSgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZs
YWdWYWx1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICAgICAg
bGV0IG9iaiA9IG5ldyBUZXN0UmVnRXhwKC9pdC8pOworCisgICAgICAgICAgICBhc3NlcnQoYWNj
ZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAg
ICAgICAgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmopOworICAgICAgICAgICAg
YXNzZXJ0KGFjY2Vzc2VzID09IGZsYWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2gg
ZXhwZWN0YXRpb24iKTsKKyAgICAgICAgICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJV
bmV4cGVjdGVkIHJlc3VsdCIpOworCisgICAgICAgIH0pIChmbGFnc1tpbmRleF0sIGZsYWdWYWx1
ZXNbaW5kZXhdKTsKKyAgICB9Cit9KSgpOworCisvLyBSZWdFeHAgc3ViY2xhc3Mgd2l0aCBvdmVy
cmlkZGVuIGZsYWdzIHVzaW5nIE9iamVjdC5kZWZpbmVQcm9wZXJ0eTogVGVzdGluZyBFUzYgMjEu
Mi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgor
KGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZmxhZ3MgPSBbICJmbGFncyIsICJnbG9iYWwiLCAiaWdu
b3JlQ2FzZSIsICJtdWx0aWxpbmUiLCAic3RpY2t5IiwgInVuaWNvZGUiIF07CisgICAgbGV0IGZs
YWdWYWx1ZXMgPSBbICIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UgXTsKKyAg
ICBmb3IgKGxldCBpbmRleCBpbiBmbGFncykgeworICAgICAgICAoZnVuY3Rpb24oZmxhZywgZmxh
Z1ZhbHVlKSB7CisgICAgICAgICAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICAgICAgICAgIGNs
YXNzIFRlc3RSZWdFeHAgZXh0ZW5kcyBSZWdFeHAgeyB9OworICAgICAgICAgICAgbGV0IG9iaiA9
IG5ldyBUZXN0UmVnRXhwKC9pdC8pOworCisgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkob2JqLCBmbGFnLCB7CisgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZsYWdWYWx1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKwor
ICAgICAgICAgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92
ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICAgICAgICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3Bs
aXQob2JqKTsKKyAgICAgICAgICAgIGFzc2VydChhY2Nlc3NlcyA9PSBmbGFnLCAiUHJvcGVydHkg
YWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgICAgICAgICBhc3NlcnQo
cmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKKworICAgICAgICB9KSAo
ZmxhZ3NbaW5kZXhdLCBmbGFnVmFsdWVzW2luZGV4XSk7CisgICAgfQorfSkoKTsKKworLy8gQW55
IG9iamVjdCB3aXRoIHNwZWNpZXMgY29uc3RydWN0b3I6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTog
NS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlv
biAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9iaiA9IHsgY29uc3RydWN0
b3I6IHt9IH07CisgICAgb2JqLmNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXSA9IGZ1bmN0aW9u
KCkgeworICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJjb25zdHJ1Y3RvciIpOworICAgICAgICByZXR1
cm4gL2l0L3k7CisgICAgfTsKKyAgICBvYmpbU3ltYm9sLnNwbGl0XSA9IGZ1bmN0aW9uKHN0ciwg
bGltaXQpIHsKKyAgICAgICAgYWNjZXNzZXMucHVzaChTeW1ib2wuc3BsaXQudG9TdHJpbmcoKSk7
CisgICAgICAgIHJldHVybiBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbCh0aGlz
LCBzdHIsIGxpbWl0KTsKKyAgICB9OworCisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwg
ImZsYWdzIiwgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWNjZXNz
ZXMucHVzaCgiZmxhZ3MiKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAg
IH0pOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92
ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7
CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJTeW1ib2woU3ltYm9sLnNwbGl0KSxmbGFncyxjb25z
dHJ1Y3RvciIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsK
KyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30p
KCk7CisKKy8vIEFueSBvYmplY3Qgd2l0aCBjdXN0b20gcHJvdG90eXBlOiBUZXN0aW5nIEVTNiAy
MS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSku
CisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGxldCBUZXN0UmVn
RXhwUHJvdG8gPSB7CisgICAgICAgIGdldCBmbGFncygpIHsKKyAgICAgICAgICAgIGFjY2Vzc2Vz
LnB1c2goImZsYWdzIik7CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0sCisgICAg
ICAgIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgidG9TdHJpbmciKTsK
KyAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZWdleC50b1N0cmluZygpOworICAgICAgICB9LAor
ICAgICAgICBnZXQgc291cmNlKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgic291cmNl
Iik7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVnZXguc291cmNlOworICAgICAgICB9Cisg
ICAgfQorICAgIFRlc3RSZWdFeHBQcm90by5fX3Byb3RvX18gPSBSZWdFeHAucHJvdG90eXBlOwor
CisgICAgbGV0IFRlc3RSZWdFeHAgPSBmdW5jdGlvbihyZWdleCkgeworICAgICAgICBhY2Nlc3Nl
cy5wdXNoKCJjb25zdHJ1Y3RvciIpOworICAgICAgICB0aGlzLl9yZWdleCA9IG5ldyBSZWdFeHAo
cmVnZXgpOworICAgIH0KKyAgICBUZXN0UmVnRXhwLnByb3RvdHlwZSA9IFRlc3RSZWdFeHBQcm90
bzsKKyAgICBUZXN0UmVnRXhwUHJvdG8uY29uc3RydWN0b3IgPSBUZXN0UmVnRXhwOworCisgICAg
bGV0IG9iaiA9IG5ldyBUZXN0UmVnRXhwKC9pdC8pOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09
ICJjb25zdHJ1Y3RvciIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOwor
ICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQob2JqKTsKKyAgICBhc3NlcnQoYWNjZXNz
ZXMgPT0gImNvbnN0cnVjdG9yLGZsYWdzLHNvdXJjZSIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBu
b3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAi
VW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIDIgbGV2ZWxzIG9mIHN1YmNsYXNzZXM6
IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQo
cngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisK
KyAgICBjbGFzcyBSZWdFeHBCIGV4dGVuZHMgUmVnRXhwIHsKKyAgICAgICAgZ2V0IGZsYWdzKCkg
eworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgiZmxhZ3MiKTsKKyAgICAgICAgICAgIHJldHVy
biAiIjsKKyAgICAgICAgfQorICAgIH0KKyAgICBjbGFzcyBSZWdFeHBDIGV4dGVuZHMgUmVnRXhw
QiB7IH0KKworICAgIGFzc2VydChSZWdFeHBCLl9fcHJvdG9fXyA9PSBSZWdFeHApOworICAgIGFz
c2VydChSZWdFeHBDLl9fcHJvdG9fXyA9PSBSZWdFeHBCKTsKKworICAgIGxldCBvYmogPSBuZXcg
UmVnRXhwQygvaXQvKTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQg
Y2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5z
cGxpdChvYmopOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiZmxhZ3MiLCAiUHJvcGVydHkgYWNj
ZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAi
c3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyAyIGxldmVscyBvZiBz
dWJjbGFzc2VzIHdpdGggc3Vic3RpdHV0ZWQgcHJvdG90eXBlIGJlZm9yZSBpbnN0YW50aWF0aW9u
OiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0
KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOwor
CisgICAgY2xhc3MgQiBleHRlbmRzIFJlZ0V4cCB7IH0KKyAgICBjbGFzcyBDIGV4dGVuZHMgQiB7
IH0KKworICAgIGFzc2VydChCLl9fcHJvdG9fXyA9PT0gUmVnRXhwKTsKKyAgICBhc3NlcnQoQy5f
X3Byb3RvX18gPT09IEIpOworICAgIGFzc2VydChCLnByb3RvdHlwZS5fX3Byb3RvX18gPT09IFJl
Z0V4cC5wcm90b3R5cGUpOworICAgIGFzc2VydChDLnByb3RvdHlwZS5fX3Byb3RvX18gPT09IEIu
cHJvdG90eXBlKTsKKworICAgIGxldCBYID0gZnVuY3Rpb24gKCkge30KKyAgICBPYmplY3QuZGVm
aW5lUHJvcGVydHkoWC5wcm90b3R5cGUsICJmbGFncyIsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goImZsYWdzIik7CisgICAgICAgICAgICBy
ZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHko
WC5wcm90b3R5cGUsICJleGVjIiwgeworICAgICAgICB2YWx1ZTogZnVuY3Rpb24oc3RyKSB7Cisg
ICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJleGVjIik7CisgICAgICAgICAgICB2YXIgbWF0Y2hS
ZXN1bHQgPSAvaXQveS5leGVjKHN0ci5zdWJzdHIodGhpcy5sYXN0SW5kZXgpKTsKKyAgICAgICAg
ICAgIGlmIChtYXRjaFJlc3VsdCkKKyAgICAgICAgICAgICAgICB0aGlzLmxhc3RJbmRleCArPSAy
OyAvLyBsZW5ndGggb2YgIml0Ii4KKyAgICAgICAgICAgIHJldHVybiBtYXRjaFJlc3VsdDsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgLy8gTW9ua2V5IHdpdGggdGhlIHByb3RvdHlwZSBjaGFp
biBiZWZvcmUgaW5zdGFudGlhdGluZyBDLgorICAgIFguX19wcm90b19fID0gUmVnRXhwOworICAg
IFgucHJvdG90eXBlLl9fcHJvdG9fXyA9IFJlZ0V4cC5wcm90b3R5cGU7CisgICAgQy5fX3Byb3Rv
X18gPSBYOworICAgIEMucHJvdG90eXBlLl9fcHJvdG9fXyA9IFgucHJvdG90eXBlOworCisgICAg
YXNzZXJ0KFguX19wcm90b19fID09PSBSZWdFeHApOworICAgIGFzc2VydChDLl9fcHJvdG9fXyA9
PT0gWCk7CisgICAgYXNzZXJ0KFgucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gUmVnRXhwLnByb3Rv
dHlwZSk7CisgICAgYXNzZXJ0KEMucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gWC5wcm90b3R5cGUp
OworCisgICAgbGV0IG9iaiA9IG5ldyBDOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAi
dW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0g
InNwbGl0bWUiLnNwbGl0KG9iaik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJmbGFncyxleGVj
LGV4ZWMsZXhlYyxleGVjLGV4ZWMsZXhlYyIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0
Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBl
Y3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIDIgbGV2ZWxzIG9mIHN1YmNsYXNzZXMgd2l0aCBz
dWJzdGl0dXRlZCBwcm90b3R5cGUgYWZ0ZXIgaW5zdGFudGlhdGlvbjogVGVzdGluZyBFUzYgMjEu
Mi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgor
KGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKworICAgIGNsYXNzIEIgZXh0
ZW5kcyBSZWdFeHAgeyB9CisgICAgY2xhc3MgQyBleHRlbmRzIEIgeyB9CisKKyAgICBhc3NlcnQo
Qi5fX3Byb3RvX18gPT09IFJlZ0V4cCk7CisgICAgYXNzZXJ0KEMuX19wcm90b19fID09PSBCKTsK
KyAgICBhc3NlcnQoQi5wcm90b3R5cGUuX19wcm90b19fID09PSBSZWdFeHAucHJvdG90eXBlKTsK
KyAgICBhc3NlcnQoQy5wcm90b3R5cGUuX19wcm90b19fID09PSBCLnByb3RvdHlwZSk7CisKKyAg
ICBsZXQgWCA9IGZ1bmN0aW9uICgpIHt9CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFgucHJv
dG90eXBlLCAiZmxhZ3MiLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBhY2Nlc3Nlcy5wdXNoKCJmbGFncyIpOworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAg
ICB9CisgICAgfSk7CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFgucHJvdG90eXBlLCAiZXhl
YyIsIHsKKyAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKHN0cikgeworICAgICAgICAgICAgYWNjZXNz
ZXMucHVzaCgiZXhlYyIpOworICAgICAgICAgICAgdmFyIG1hdGNoUmVzdWx0ID0gL2l0L3kuZXhl
YyhzdHIuc3Vic3RyKHRoaXMubGFzdEluZGV4KSk7CisgICAgICAgICAgICBpZiAobWF0Y2hSZXN1
bHQpCisgICAgICAgICAgICAgICAgdGhpcy5sYXN0SW5kZXggKz0gMjsgLy8gbGVuZ3RoIG9mICJp
dCIuCisgICAgICAgICAgICByZXR1cm4gbWF0Y2hSZXN1bHQ7CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIC8vIEluc3RhbnRpYXRlIEMgYmVmb3JlIG1vbmtleWluZyB3aXRoIHRoZSBwcm90b3R5
cGUgY2hhaW4uCisgICAgbGV0IG9iaiA9IG5ldyBDKCk7CisKKyAgICBYLl9fcHJvdG9fXyA9IFJl
Z0V4cDsKKyAgICBYLnByb3RvdHlwZS5fX3Byb3RvX18gPSBSZWdFeHAucHJvdG90eXBlOworICAg
IEMuX19wcm90b19fID0gWDsKKyAgICBDLnByb3RvdHlwZS5fX3Byb3RvX18gPSBYLnByb3RvdHlw
ZTsKKworICAgIGFzc2VydChYLl9fcHJvdG9fXyA9PT0gUmVnRXhwKTsKKyAgICBhc3NlcnQoQy5f
X3Byb3RvX18gPT09IFgpOworICAgIGFzc2VydChYLnByb3RvdHlwZS5fX3Byb3RvX18gPT09IFJl
Z0V4cC5wcm90b3R5cGUpOworICAgIGFzc2VydChDLnByb3RvdHlwZS5fX3Byb3RvX18gPT09IFgu
cHJvdG90eXBlKTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2Fs
bCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxp
dChvYmopOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiZmxhZ3MsZXhlYyxleGVjLGV4ZWMsZXhl
YyxleGVjLGV4ZWMiLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9u
Iik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7
Cit9KSgpOworCisvLyAyIGxldmVscyBvZiBzdWJjbGFzc2VzIHdpdGggcHJveGllZCBwcm90b3R5
cGU6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBH
ZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107
CisKKyAgICBjbGFzcyBCIGV4dGVuZHMgUmVnRXhwIHsgfTsKKworICAgIGFzc2VydChCLl9fcHJv
dG9fXyA9PT0gUmVnRXhwKTsKKyAgICBhc3NlcnQoQi5wcm90b3R5cGUuX19wcm90b19fID09PSBS
ZWdFeHAucHJvdG90eXBlKTsKKworICAgIGxldCBwcm94eSA9IG5ldyBQcm94eShSZWdFeHAucHJv
dG90eXBlLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24ob2JqLCBwcm9wKSB7CisgICAgICAgICAg
ICBhY2Nlc3Nlcy5wdXNoKHByb3AudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBpZiAocHJvcCA9
PT0gImV4ZWMiKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cikgeworICAg
ICAgICAgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJpbl9leGVjIik7CisgICAgICAgICAgICAg
ICAgICAgIHZhciBtYXRjaFJlc3VsdCA9IC9pdC95LmV4ZWMoc3RyLnN1YnN0cih0aGlzLmxhc3RJ
bmRleCkpOworICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hSZXN1bHQpCisgICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLmxhc3RJbmRleCArPSAyOyAvLyBsZW5ndGggb2YgIml0Ii4KKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoUmVzdWx0OworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBvYmpbcHJvcF07CisgICAgICAgIH0K
KyAgICB9KTsKKyAgICBCLnByb3RvdHlwZS5fX3Byb3RvX18gPSBwcm94eTsKKworICAgIGxldCBv
YmogPSBuZXcgQigpOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBj
YWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNw
bGl0KG9iaik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJTeW1ib2woU3ltYm9sLnNwbGl0KSxm
bGFncyxTeW1ib2woU3ltYm9sLm1hdGNoKSxleGVjLGluX2V4ZWMsZXhlYyxpbl9leGVjLGV4ZWMs
aW5fZXhlYyxleGVjLGluX2V4ZWMsZXhlYyxpbl9leGVjLGV4ZWMsaW5fZXhlYyIsICJQcm9wZXJ0
eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0
ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIFJlZ0V4cCBz
dWJjbGFzcyB3aXRoIG92ZXJyaWRkZW4gZXhlYzogVGVzdGluZyBFUzYgMjEuMi41LjExOiAxOS5i
LiBMZXQgeiBiZSA/IFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFMpLgorKGZ1bmN0aW9uICgpIHsKKyAg
ICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBjbGFzcyBUZXN0UmVnRXhwIGV4dGVuZHMgUmVnRXhw
IHsKKyAgICAgICAgZXhlYyhzdHIpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goImV4ZWMi
KTsKKyAgICAgICAgICAgIHJldHVybiBSZWdFeHAucHJvdG90eXBlLmV4ZWMuY2FsbCh0aGlzLCBz
dHIpOworICAgICAgICB9CisgICAgfTsKKyAgICBsZXQgb2JqID0gbmV3IFRlc3RSZWdFeHAoL2l0
Lyk7CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3Zl
cnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQob2JqKTsK
KyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImV4ZWMsZXhlYyxleGVjLGV4ZWMsZXhlYyxleGVjIiwg
IlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2Vy
dChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKKworLy8g
UHJveGllZCBSZWdFeHAgb2JzZXJ2aW5nIGV2ZXJ5IGdldC4KKyhmdW5jdGlvbiAoKSB7CisgICAg
bGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IHJlZ2V4cCA9IG5ldyBSZWdFeHAoL2l0Lyk7Cisg
ICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHJlZ2V4cCwgeworICAgICAgICBnZXQob2JqLCBwcm9w
KSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKHByb3AudG9TdHJpbmcoKSk7CisgICAgICAg
ICAgICByZXR1cm4gb2JqW3Byb3BdOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhc3NlcnQo
YWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOwor
ICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQocHJveHkpOworICAgIC8vIE5vdGU6IEBA
c3BsaXQgY3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgUmVnRXhwIHVzaW5nIGl0cyBAQHNw
ZWNpZXMsIGFuZCBwZXJmb3JtcworICAgIC8vIHRoZSBzcGxpdCBvcGVyYXRpb24gd2l0aCB0aGF0
IG5ldyBpbnN0YW5jZS4gSGVuY2UsIHRoZSBwcm94eSBpcyBvbmx5IGFibGUgdG8gb2JzZXJ2ZQor
ICAgIC8vIGdldHMgdXAgdG8gdGhlIGNyZWF0aW9uIG9mIHRoZSBuZXcgaW5zdGFuY2UuCisgICAg
YXNzZXJ0KGFjY2Vzc2VzID09ICJTeW1ib2woU3ltYm9sLnNwbGl0KSxjb25zdHJ1Y3RvcixmbGFn
cyxTeW1ib2woU3ltYm9sLm1hdGNoKSxzb3VyY2UiLAorICAgICAgICAiUHJveHkgbm90IGFibGUg
dG8gb2JzZXJ2ZSBzb21lIGdldHMiKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAi
VW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIFByb3hpZWQgUmVnRXhwICh3aXRob3V0
IEBAbWF0Y2gpIG9ic2VydmluZyBldmVyeSBnZXQuCisvLyBUaGlzIGlzIHRvIGZvcmNlIHRoZSBS
ZWdFeHAgQHNwZWNpZXMgY29uc3RydWN0b3IgdG8gYWNjZXNzIHNvdXJjZS4KKyhmdW5jdGlvbiAo
KSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IHJlZ2V4cCA9IG5ldyBSZWdFeHAo
L2l0Lyk7CisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KHJlZ2V4cCwgeworICAgICAgICBnZXQo
b2JqLCBwcm9wKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKHByb3AudG9TdHJpbmcoKSk7
CisgICAgICAgICAgICBpZiAocHJvcCA9PSBTeW1ib2wubWF0Y2gpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHJldHVybiBvYmpbcHJvcF07CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2Fs
bCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxp
dChwcm94eSk7CisgICAgLy8gTm90ZTogQEBzcGxpdCBjcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9m
IHRoZSBSZWdFeHAgdXNpbmcgaXRzIEBAc3BlY2llcywgYW5kIHBlcmZvcm1zCisgICAgLy8gdGhl
IHNwbGl0IG9wZXJhdGlvbiB3aXRoIHRoYXQgbmV3IGluc3RhbmNlLiBIZW5jZSwgdGhlIHByb3h5
IGlzIG9ubHkgYWJsZSB0byBvYnNlcnZlCisgICAgLy8gZ2V0cyB1cCB0byB0aGUgY3JlYXRpb24g
b2YgdGhlIG5ldyBpbnN0YW5jZS4KKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIlN5bWJvbChTeW1i
b2wuc3BsaXQpLGNvbnN0cnVjdG9yLGZsYWdzLFN5bWJvbChTeW1ib2wubWF0Y2gpLFN5bWJvbChT
eW1ib2wudG9QcmltaXRpdmUpLHRvU3RyaW5nLHNvdXJjZSxmbGFncyIsCisgICAgICAgICJQcm94
eSBub3QgYWJsZSB0byBvYnNlcnZlIHNvbWUgZ2V0cyIpOworICAgIC8vIFRoZSBuZXcgaW5zdGFu
Y2Ugb2YgdGhlIFJlZ0V4cCB3b3VsZCBoYXZlIGJlZW4gY29uc3RydWN0ZWQgd2l0aCB0aGUgcGF0
dGVybiBmcm9tCisgICAgLy8gdGhlIHByb3h5IHRvU3RyaW5nKCkgaS5lLiAiXC9sdFwvIiBpbnN0
ZWFkIG9mIHNvdXJjZSwgYmVjYXVzZSB0aGUgcHJveHkgaXMgYW4KKyAgICAvLyBvYmplY3Qgd2l0
aG91dCBhIFtAQG1hdGNoXSBwcm9wZXJ0eS4KKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGxpdG1l
IiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcwko
cmV2aXNpb24gMTk5MzM4KQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1n
ZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHZh
ciBleHBlY3RlZFByb3BlcnR5TmFtZXNTZXQgPSB7CiAgICAgIkVycm9yLnByb3RvdHlwZSI6ICJb
J2NvbnN0cnVjdG9yJywgJ21lc3NhZ2UnLCAnbmFtZScsICd0b1N0cmluZyddIiwKICAgICAiTWF0
aCI6ICJbJ0UnLCdMTjEwJywnTE4yJywnTE9HMTBFJywnTE9HMkUnLCdQSScsJ1NRUlQxXzInLCdT
UVJUMicsJ2FicycsJ2Fjb3MnLCdhY29zaCcsJ2FzaW4nLCdhc2luaCcsJ2F0YW4nLCdhdGFuMics
J2F0YW5oJywnY2JydCcsJ2NlaWwnLCdjbHozMicsJ2NvcycsJ2Nvc2gnLCdleHAnLCdleHBtMScs
J2Zsb29yJywnZnJvdW5kJywnaHlwb3QnLCdpbXVsJywnbG9nJywnbG9nMTAnLCdsb2cxcCcsJ2xv
ZzInLCdtYXgnLCdtaW4nLCdwb3cnLCdyYW5kb20nLCdyb3VuZCcsJ3NpZ24nLCdzaW4nLCdzaW5o
Jywnc3FydCcsJ3RhbicsJ3RhbmgnLCd0cnVuYyddIiwKICAgICAiSlNPTiI6ICJbJ3BhcnNlJywg
J3N0cmluZ2lmeSddIiwKLSAgICAiU3ltYm9sIjogIlsnZm9yJywgJ2hhc0luc3RhbmNlJywgJ2l0
ZXJhdG9yJywgJ2tleUZvcicsICdsZW5ndGgnLCAnbWF0Y2gnLCAnbmFtZScsICdwcm90b3R5cGUn
LCAnc2VhcmNoJywgJ3NwZWNpZXMnLCAndG9QcmltaXRpdmUnLCAndG9TdHJpbmdUYWcnLCAndW5z
Y29wYWJsZXMnXSIsCisgICAgIlN5bWJvbCI6ICJbJ2ZvcicsICdoYXNJbnN0YW5jZScsICdpdGVy
YXRvcicsICdrZXlGb3InLCAnbGVuZ3RoJywgJ21hdGNoJywgJ25hbWUnLCAncHJvdG90eXBlJywg
J3NlYXJjaCcsICdzcGVjaWVzJywgJ3NwbGl0JywgJ3RvUHJpbWl0aXZlJywgJ3RvU3RyaW5nVGFn
JywgJ3Vuc2NvcGFibGVzJ10iLAogICAgICJTeW1ib2wucHJvdG90eXBlIjogIlsnY29uc3RydWN0
b3InLCAndG9TdHJpbmcnLCAndmFsdWVPZiddIiwKICAgICAiTWFwIjogIlsnbGVuZ3RoJywgJ25h
bWUnLCAncHJvdG90eXBlJ10iLAogICAgICJNYXAucHJvdG90eXBlIjogIlsnY2xlYXInLCAnY29u
c3RydWN0b3InLCAnZGVsZXRlJywgJ2VudHJpZXMnLCAnZm9yRWFjaCcsICdnZXQnLCAnaGFzJywg
J2tleXMnLCAnc2V0JywgJ3NpemUnLCAndmFsdWVzJ10iLApJbmRleDogTGF5b3V0VGVzdHMvc3B1
dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUu
NS40LjE0X1N0cmluZy5wcm90b3R5cGUuc3BsaXQvUzE1LjUuNC4xNF9BMV9UMy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRp
dmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjE0X1N0cmluZy5wcm90b3R5cGUu
c3BsaXQvUzE1LjUuNC4xNF9BMV9UMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5OTMzOCkKKysr
IExheW91dFRlc3RzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuNV9T
dHJpbmcvMTUuNS40LzE1LjUuNC4xNF9TdHJpbmcucHJvdG90eXBlLnNwbGl0L1MxNS41LjQuMTRf
QTFfVDMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogUzE1LjUu
NC4xNF9BMV9UMwogCi1GQUlMIFR5cGVFcnJvcjogVHlwZSBlcnJvcgorRkFJTCBUeXBlRXJyb3I6
IFN0cmluZy5wcm90b3R5cGUuc3BsaXQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVm
aW5lZAogCiBURVNUIENPTVBMRVRFCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>276282</attachid>
            <date>2016-04-12 14:58:02 -0700</date>
            <delta_ts>2016-04-12 15:35:36 -0700</delta_ts>
            <desc>Diff between patches.</desc>
            <filename>patch-diff.txt</filename>
            <type>text/plain</type>
            <size>14230</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">M2MzCjwgLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5OTMz
OCkKLS0tCj4gLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5
OTM4OSkKNWM1CjwgQEAgLTEsMyArMSw4MSBAQAotLS0KPiBAQCAtMSwzICsxLDkxIEBACjExYzEx
CjwgKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCi0tLQo+ICsgICAgICAgIFJl
dmlld2VkIGJ5IEtlaXRoIE1pbGxlci4KMzFhMzIKPiArICAgICAgICAoaGFzT2JzZXJ2YWJsZVNp
ZGVFZmZlY3RzRm9yUmVnRXhwU3BsaXQpOgo0MGE0Mgo+ICsgICAgICAgIChKU0M6OkJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cCk6CjUwYTUzCj4gKyAgICAgICAgKEpTQzo6Z2V0R2V0
dGVyQnlJZCk6CjYzYTY3Cj4gKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jU2VhcmNoKToK
NzZhODEsODYKPiArICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTdWJzdHIpOgo+ICsgICAg
ICAgIChKU0M6OmJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbCk6Cj4gKyAgICAgICAgKEpTQzo6
c3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKToKPiArICAgICAgICAoSlNDOjpzdHJpbmdJbmNsdWRl
c0ltcGwpOgo+ICsgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzKToKPiArICAg
ICAgICAoSlNDOjpidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbCk6Cjg0Yzk0CjwgIDIwMTYt
MDQtMTEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+Ci0tLQo+ICAyMDE2
LTA0LTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+Cjg2Yzk2CjwgICAgICAgICAg
W0pTQ10gQjMgY2FuIHVzZSB1bmRlZmluZWQgYml0cyBvciBub3QgZGVmaW5lZCByZXF1aXJlZCBi
aXRzIHdoZW4gc3BpbGxpbmcKLS0tCj4gICAgICAgICAgVW5yZXZpZXdlZCwgcmVtb3ZlIEZJWE1F
IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDU3IGFuZCBy
ZXBsYWNlIGl0CjIyOSwyMzBjMjM5LDI0NAo8IEBAIC01MCw3ICs1Miw3IEBAIGZ1bmN0aW9uIG1h
dGNoKHN0cikKPCAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBAT2JqZWN0KSkKLS0tCj4gQEAg
LTQ3LDEwICs0OSwxMCBAQCBmdW5jdGlvbiBtYXRjaChzdHIpCj4gIHsKPiAgICAgICJ1c2Ugc3Ry
aWN0IjsKPiAgCj4gLSAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQE9iamVjdCkpCj4gKyAgICBp
ZiAoIUBpc09iamVjdCh0aGlzKSkKMjUzYzI2Nwo8IEBAIC05NSwzICs5MywxODYgQEAgZnVuY3Rp
b24gbWF0Y2goc3RyKQotLS0KPiBAQCAtOTUsMyArOTMsMTk1IEBAIGZ1bmN0aW9uIG1hdGNoKHN0
cikKMzE1YzMyOQo8ICsgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEBPYmplY3QpKQotLS0KPiAr
ICAgIGlmICghQGlzT2JqZWN0KHRoaXMpKQozMzNjMzQ3CjwgKyAgICBsZXQgdW5pY29kZU1hdGNo
aW5nID0gZmxhZ3MuaW5jbHVkZXMoInUiKTsKLS0tCj4gKyAgICBsZXQgdW5pY29kZU1hdGNoaW5n
ID0gQHN0cmluZ0luY2x1ZGVzSW50ZXJuYWwuQGNhbGwoZmxhZ3MsICJ1Iik7CjMzNmMzNTAKPCAr
ICAgIGxldCBuZXdGbGFncyA9IGZsYWdzLmluY2x1ZGVzKCJ5IikgPyBmbGFncyA6IGZsYWdzICsg
InkiOwotLS0KPiArICAgIGxldCBuZXdGbGFncyA9IEBzdHJpbmdJbmNsdWRlc0ludGVybmFsLkBj
YWxsKGZsYWdzLCAieSIpID8gZmxhZ3MgOiBmbGFncyArICJ5IjsKMzQ3ZDM2MAo8ICsgICAgLy8g
MTIuIExldCBsZW5ndGhBIGJlIDAuCjM0OGEzNjIsMzYzCj4gKyAgICAvLyAxMi4gTGV0IGxlbmd0
aEEgYmUgMC4KPiArICAgIGxldCByZXN1bHRMZW5ndGggPSAwOwozNTBjMzY1CjwgKyAgICAvLyAx
My4gSWYgbGltaXQgaXMgdW5kZWZpbmVkLCBsZXQgbGltIGJlIDIzMi0xOyBlbHNlIGxldCBsaW0g
YmUgPyBUb1VpbnQzMihsaW1pdCkuCi0tLQo+ICsgICAgLy8gMTMuIElmIGxpbWl0IGlzIHVuZGVm
aW5lZCwgbGV0IGxpbSBiZSAyXjMyLTE7IGVsc2UgbGV0IGxpbSBiZSA/IFRvVWludDMyKGxpbWl0
KS4KMzY4YzM4MywzODQKPCArICAgICAgICByZXN1bHRbMF0gPSBzdHI7Ci0tLQo+ICsgICAgICAg
IEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIDAsIHN0cik7Cj4gKyAgICAgICAgcmVzdWx0Lmxlbmd0
aCA9IDE7CjM5OWM0MTUKPCArICAgICAgICAgICAgICAgIGxldCBzdWJTdHIgPSBAc3Vic3RySW50
ZXJuYWwuQGNhbGwoc3RyLCBwb3NpdGlvbiwgbWF0Y2hQb3NpdGlvbiAtIHBvc2l0aW9uKTsKLS0t
Cj4gKyAgICAgICAgICAgICAgICBsZXQgc3ViU3RyID0gQHN0cmluZ1N1YnN0ckludGVybmFsLkBj
YWxsKHN0ciwgcG9zaXRpb24sIG1hdGNoUG9zaXRpb24gLSBwb3NpdGlvbik7CjQwMGE0MTcKPiAr
ICAgICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHQsIHJlc3VsdExlbmd0aCwgc3Vi
U3RyKTsKNDAyYzQxOQo8ICsgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc3ViU3RyKTsKLS0t
Cj4gKyAgICAgICAgICAgICAgICArK3Jlc3VsdExlbmd0aDsKNDA0YzQyMSw0MjIKPCArICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09IGxpbWl0KQotLS0KPiArICAgICAgICAgICAg
ICAgIGlmIChyZXN1bHRMZW5ndGggPT0gbGltaXQpIHsKPiArICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQubGVuZ3RoID0gcmVzdWx0TGVuZ3RoOwo0MDVhNDI0Cj4gKyAgICAgICAgICAgICAgICB9
CjQxOGE0MzgKPiArICAgICAgICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBy
ZXN1bHRMZW5ndGgsIG5leHRDYXB0dXJlKTsKNDIwYzQ0MAo8ICsgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5wdXNoKG5leHRDYXB0dXJlKTsKLS0tCj4gKyAgICAgICAgICAgICAgICAgICAgKyty
ZXN1bHRMZW5ndGg7CjQyMmM0NDIsNDQzCjwgKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dC5sZW5ndGggPT0gbGltaXQpCi0tLQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRM
ZW5ndGggPT0gbGltaXQpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lmxlbmd0
aCA9IHJlc3VsdExlbmd0aDsKNDIzYTQ0NQo+ICsgICAgICAgICAgICAgICAgICAgIH0KNDMzYzQ1
NQo8ICsgICAgbGV0IHJlbWFpbmluZ1N0ciA9IEBzdWJzdHJJbnRlcm5hbC5AY2FsbChzdHIsIHBv
c2l0aW9uLCBzaXplKTsKLS0tCj4gKyAgICBsZXQgcmVtYWluaW5nU3RyID0gQHN0cmluZ1N1YnN0
ckludGVybmFsLkBjYWxsKHN0ciwgcG9zaXRpb24sIHNpemUpOwo0MzVjNDU3LDQ1OAo8ICsgICAg
cmVzdWx0LnB1c2gocmVtYWluaW5nU3RyKTsKLS0tCj4gKyAgICBAcHV0QnlWYWxEaXJlY3QocmVz
dWx0LCByZXN1bHRMZW5ndGgsIHJlbWFpbmluZ1N0cik7Cj4gKyAgICByZXN1bHQubGVuZ3RoID0g
KytyZXN1bHRMZW5ndGg7CjUzNGM1NTcKPCBAQCAtNDE5LDcgKzQyMSwxNiBAQAotLS0KPiBAQCAt
NDE5LDcgKzQyMSwxNyBAQAo1NDZhNTcwCj4gKyAgICBtYWNybyhzdHJpbmdJbmNsdWRlc0ludGVy
bmFsKSBcCjU0OGM1NzIKPCArICAgIG1hY3JvKHN1YnN0ckludGVybmFsKSBcCi0tLQo+ICsgICAg
bWFjcm8oc3RyaW5nU3Vic3RySW50ZXJuYWwpIFwKNzAwYzcyNAo8IEBAIC02MDYsNyArNjIzLDM0
IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXIKLS0tCj4gQEAgLTYw
Niw3ICs2MjMsMjkgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Blcgo3
MjNhNzQ4Cj4gKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnN0
cmluZ0luY2x1ZGVzSW50ZXJuYWxQcml2YXRlTmFtZSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzLCAxLCBTdHJpbmcoKSwgYnVpbHRpblN0cmluZ0luY2x1ZGVzSW50ZXJuYWwpLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCjcyNSw3MzFjNzUwCjwgKyAgICAgICAgLy8gQHN1
YnN0ckludGVybmFsIHNob3VsZCBub3QgaGF2ZSBhbnkgb2JzZXJ2YWJsZSBzaWRlIGVmZmVjdHMg
KGUuZy4gaXQgc2hvdWxkIG5vdCBjYWxsCjwgKyAgICAgICAgLy8gR2V0TWV0aG9kKC4uLiwgQEB0
b1ByaW1pdGl2ZSkgb24gdGhlIHRoaXNWYWx1ZSkuIEl0IGlzIG9rIHRvIHVzZSB0aGUgZGVmYXVs
dAo8ICsgICAgICAgIC8vIHN0cmluZ1Byb3RvRnVuY1N1YnN0ciBhcyB0aGUgaW1wbGVtZW50YXRp
b24gb2YgQHN1YnN0ckludGVybmFsIGJlY2F1c2UgQHN1YnN0ckludGVybmFsCjwgKyAgICAgICAg
Ly8gd2lsbCBvbmx5IGJlIGNhbGxlZCBieSBidWlsdGlucywgd2hpY2ggd2lsbCBndWFyYW50ZWUg
dGhhdCB3ZSBvbmx5IHBhc3MgaXQgYSBzdHJpbmcKPCArICAgICAgICAvLyB0aGlzVmFsdWUuIEFz
IGEgcmVzdWx0LCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIgd2lsbCBub3QgbmVlZCB0byBjYWxsIHRv
U3RyaW5nKCkgb24gdGhlCjwgKyAgICAgICAgLy8gdGhpc1ZhbHVlLCBhbmQgdGhlcmUgd2lsbCBi
ZSBubyBvYnNlcnZhYmxlIHNpZGUtZWZmZWN0cy4KPCArICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+c3Vic3RySW50ZXJuYWxQcml2YXRlTmFtZSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyKSwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotLS0KPiArICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+c3RyaW5nU3Vic3RySW50ZXJuYWxQcml2YXRl
TmFtZSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAyLCBTdHJpbmcoKSwgYnVpbHRpblN0
cmluZ1N1YnN0ckludGVybmFsKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAo4
NjBjODc5CjwgKyAgICAvLyAxMy4gSWYgbGltaXQgaXMgdW5kZWZpbmVkLCBsZXQgbGltIGJlIDIz
Mi0xOyBlbHNlIGxldCBsaW0gYmUgPyBUb1VpbnQzMihsaW1pdCkuCi0tLQo+ICsgICAgLy8gMTMu
IElmIGxpbWl0IGlzIHVuZGVmaW5lZCwgbGV0IGxpbSBiZSAyXjMyLTE7IGVsc2UgbGV0IGxpbSBi
ZSA/IFRvVWludDMyKGxpbWl0KS4KMTA1NWMxMDc0CjwgQEAgLTcwLDggKzcwLDYgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwotLS0KPiBAQCAtNzAsNyArNzAsNiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCjEwNjBjMTA3OQo8IC1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cihFeGVjU3Rh
dGUqKTsKLS0tCj4gIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
U3Vic3RyKEV4ZWNTdGF0ZSopOwoxMDYzLDEwNjRjMTA4Mgo8ICBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlKEV4ZWNTdGF0ZSopOwo8IEBAIC0x
MTMsNiArMTExLDcgQEAgY29uc3QgQ2xhc3NJbmZvIFN0cmluZ1Byb3RvdHlwZTo6c19pbmZvIAot
LS0KPiBAQCAtMTEzLDYgKzExMiw3IEBAIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdQcm90b3R5cGU6
OnNfaW5mbyAKMTA3MmMxMDkwCjwgQEAgLTEzOSw3ICsxMzgsNiBAQCB2b2lkIFN0cmluZ1Byb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mCi0tLQo+IEBAIC0xMzksNyArMTM5LDYgQEAgdm9pZCBT
dHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJgoxMDgwYzEwOTgKPCBAQCAtMTk1LDI4
ICsxOTMsNiBAQCBib29sIFN0cmluZ1Byb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90Ci0tLQo+
IEBAIC0xOTUsMjggKzE5NCw2IEBAIGJvb2wgU3RyaW5nUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0
eVNsb3QKMTEwOWMxMTI3CjwgQEAgLTExODEsMTY5ICsxMTU3LDU4IEBAIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIGJvb2wgc3BsaXRTdHJpbmdCeU8KLS0tCj4gQEAgLTExODEsMTY5ICsxMTU4LDU4IEBA
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgc3BsaXRTdHJpbmdCeU8KMTE0MmExMTYxCj4gLSAg
ICBKU1ZhbHVlIGxpbWl0VmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsKMTE0NGMxMTYzCjwgICAg
ICBKU1ZhbHVlIGxpbWl0VmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsKLS0tCj4gKyAgICBKU1Zh
bHVlIGxpbWl0VmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKMTE1NGMxMTczCjwg
ICAgICBKU1ZhbHVlIHNlcGFyYXRvclZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0tLQo+IC0g
ICAgSlNWYWx1ZSBzZXBhcmF0b3JWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwoxMjYxYTEyODEK
PiArICAgIEpTVmFsdWUgc2VwYXJhdG9yVmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgw
KTsKMTI5NmMxMzE2CjwgQEAgLTEzODYsMTcgKzEyNTEsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90bwotLS0KPiBAQCAtMTM4NiwxNyArMTI1MiwxNiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCjEzMjBjMTM0MAo8IEBAIC0xNDA0
LDE5ICsxMjY4LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8K
LS0tCj4gQEAgLTE0MDQsMTkgKzEyNjksMTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90bwoxMzQ0YTEzNjUsMTQ0OQo+IEBAIC0xNDU5LDYgKzEzMjMsMjMgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwo+ICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1N1YnN0cmluZyhleGVjLCB1U3RyaW5nLCBzdWJzdHJpbmdTdGFydCwgc3Vi
c3RyaW5nTGVuZ3RoKSk7Cj4gIH0KPiAgCj4gK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YnVpbHRpblN0cmluZ1N1YnN0ckludGVybmFsKEV4ZWNTdGF0ZSogZXhlYykKPiArewo+ICsgICAg
Ly8gQHN1YnN0ckludGVybmFsIHNob3VsZCBub3QgaGF2ZSBhbnkgb2JzZXJ2YWJsZSBzaWRlIGVm
ZmVjdHMgKGUuZy4gaXQgc2hvdWxkIG5vdCBjYWxsCj4gKyAgICAvLyBHZXRNZXRob2QoLi4uLCBA
QHRvUHJpbWl0aXZlKSBvbiB0aGUgdGhpc1ZhbHVlKS4KPiArCj4gKyAgICAvLyBJdCBpcyBvayB0
byB1c2UgdGhlIGRlZmF1bHQgc3RyaW5nUHJvdG9GdW5jU3Vic3RyIGFzIHRoZSBpbXBsZW1lbnRh
dGlvbiBvZgo+ICsgICAgLy8gQHN1YnN0ckludGVybmFsIGJlY2F1c2UgQHN1YnN0ckludGVybmFs
IHdpbGwgb25seSBiZSBjYWxsZWQgYnkgYnVpbHRpbnMsIHdoaWNoIHdpbGwKPiArICAgIC8vIGd1
YXJhbnRlZSB0aGF0IHdlIG9ubHkgcGFzcyBpdCBhIHN0cmluZyB0aGlzVmFsdWUuIEFzIGEgcmVz
dWx0LCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIKPiArICAgIC8vIHdpbGwgbm90IG5lZWQgdG8gY2Fs
bCB0b1N0cmluZygpIG9uIHRoZSB0aGlzVmFsdWUsIGFuZCB0aGVyZSB3aWxsIGJlIG5vIG9ic2Vy
dmFibGUKPiArICAgIC8vIHNpZGUtZWZmZWN0cy4KPiArI2lmICFBU1NFUlRfRElTQUJMRUQKPiAr
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Cj4gKyAgICBBU1NFUlQo
dGhpc1ZhbHVlLmlzU3RyaW5nKCkpOwo+ICsjZW5kaWYKPiArICAgIHJldHVybiBzdHJpbmdQcm90
b0Z1bmNTdWJzdHIoZXhlYyk7Cj4gK30KPiArCj4gIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKPiAgewo+ICAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKPiBAQCAtMTk5NSw2ICsxODc2
LDIxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KPiAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHN0cmluZ1RvU2VhcmNoSW4uaGFzSW5maXhF
bmRpbmdBdChzZWFyY2hTdHJpbmcsIHN0ZDo6bWluKGVuZCwgbGVuZ3RoKSkpKTsKPiAgfQo+ICAK
PiArc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nSW5jbHVkZXNJbXBs
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiwgU3RyaW5n
IHNlYXJjaFN0cmluZywgSlNWYWx1ZSBwb3NpdGlvbkFyZykKPiArewo+ICsgICAgdW5zaWduZWQg
c3RhcnQgPSAwOwo+ICsgICAgaWYgKHBvc2l0aW9uQXJnLmlzSW50MzIoKSkKPiArICAgICAgICBz
dGFydCA9IHN0ZDo6bWF4KDAsIHBvc2l0aW9uQXJnLmFzSW50MzIoKSk7Cj4gKyAgICBlbHNlIHsK
PiArICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmdUb1NlYXJjaEluLmxlbmd0aCgpOwo+
ICsgICAgICAgIHN0YXJ0ID0gY2xhbXBBbmRUcnVuY2F0ZVRvVW5zaWduZWQocG9zaXRpb25Bcmcu
dG9JbnRlZ2VyKGV4ZWMpLCAwLCBsZW5ndGgpOwo+ICsgICAgICAgIGlmICh2bS5leGNlcHRpb24o
KSkKPiArICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
PiArICAgIH0KPiArCj4gKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzdHJp
bmdUb1NlYXJjaEluLmNvbnRhaW5zKHNlYXJjaFN0cmluZywgdHJ1ZSwgc3RhcnQpKSk7Cj4gK30K
PiArCj4gIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5jbHVk
ZXMoRXhlY1N0YXRlKiBleGVjKQo+ICB7Cj4gICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwo+IEBAIC0yMDE4LDE3ICsxOTE0LDI4IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KPiAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwo+ICAKPiAgICAgIEpTVmFsdWUgcG9zaXRpb25BcmcgPSBleGVjLT5h
cmd1bWVudCgxKTsKPiAtICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKPiAtICAgIGlmIChwb3NpdGlv
bkFyZy5pc0ludDMyKCkpCj4gLSAgICAgICAgc3RhcnQgPSBzdGQ6Om1heCgwLCBwb3NpdGlvbkFy
Zy5hc0ludDMyKCkpOwo+IC0gICAgZWxzZSB7Cj4gLSAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0g
c3RyaW5nVG9TZWFyY2hJbi5sZW5ndGgoKTsKPiAtICAgICAgICBzdGFydCA9IGNsYW1wQW5kVHJ1
bmNhdGVUb1Vuc2lnbmVkKHBvc2l0aW9uQXJnLnRvSW50ZWdlcihleGVjKSwgMCwgbGVuZ3RoKTsK
PiAtICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCj4gLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cj4gLSAgICB9Cj4gIAo+IC0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oc3RyaW5nVG9TZWFyY2hJbi5jb250YWlucyhz
ZWFyY2hTdHJpbmcsIHRydWUsIHN0YXJ0KSkpOwo+ICsgICAgcmV0dXJuIHN0cmluZ0luY2x1ZGVz
SW1wbCh2bSwgZXhlYywgc3RyaW5nVG9TZWFyY2hJbiwgc2VhcmNoU3RyaW5nLCBwb3NpdGlvbkFy
Zyk7Cj4gK30KPiArCj4gK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmlu
Z0luY2x1ZGVzSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjKQo+ICt7Cj4gKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwo+ICsgICAgQVNTRVJUKGNoZWNrT2JqZWN0Q29l
cmNpYmxlKHRoaXNWYWx1ZSkpOwo+ICsKPiArICAgIFN0cmluZyBzdHJpbmdUb1NlYXJjaEluID0g
dGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKPiArICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKPiArICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwo+ICsKPiArICAgIEpTVmFsdWUgYTAgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgw
KTsKPiArICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cj4gKyAgICBTdHJpbmcgc2VhcmNoU3RyaW5n
ID0gYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwo+ICsgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQo+ICsgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Cj4gKwo+ICsgICAgSlNWYWx1ZSBwb3NpdGlvbkFyZyA9IGV4ZWMtPmFyZ3VtZW50KDEpOwo+
ICsKPiArICAgIHJldHVybiBzdHJpbmdJbmNsdWRlc0ltcGwodm0sIGV4ZWMsIHN0cmluZ1RvU2Vh
cmNoSW4sIHNlYXJjaFN0cmluZywgcG9zaXRpb25BcmcpOwo+ICB9Cj4gIAo+ICBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhl
YykKMTM1N2MxNDYyCjwgQEAgLTY2LDYgKzY2LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25TdAotLS0KPiBAQCAtNjYsNiArNjYsMTAgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25TdAoxMzYyYzE0NjcsMTQ2OQo8ICtFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cihFeGVjU3RhdGUqKTsKLS0tCj4g
Kwo+ICtFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRl
cm5hbChFeGVjU3RhdGUqKTsKPiArRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGlu
U3RyaW5nSW5jbHVkZXNJbnRlcm5hbChFeGVjU3RhdGUqKTsKMTQxM2MxNTIwCjwgQEAgLTEsMyAr
MSw3MiBAQAotLS0KPiBAQCAtMSwzICsxLDc0IEBACjE0MTljMTUyNgo8ICsgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgotLS0KPiArICAgICAgICBSZXZpZXdlZCBieSBLZWl0aCBN
aWxsZXIuCjE0NDFhMTU0OQo+ICsKMTQ2MGExNTY5Cj4gKwoyMTI1YzIyMzQKPCArICAgICAgICAg
ICAgcmV0dXJuIC9pdC87Ci0tLQo+ICsgICAgICAgICAgICByZXR1cm4gL2l0L3k7CjIzMzhjMjQ0
Nwo8IEBAIC0wLDAgKzEsMzIgQEAKLS0tCj4gQEAgLTAsMCArMSwzOCBAQAoyMzYwLDIzNjFjMjQ2
OSwyNDcwCjwgKyAgICAvLyBUaGUgQEBzcGxpdCBzbG93IHBhdGggc2hvdWxkIGNhbGwgYW4gaW50
ZXJuYWwgdmVyc2lvbiBvZiBzdWJzdHIuIE1ha2Ugc3VyZSB0aGF0CjwgKyAgICAvLyBpdCdzIG5v
dCBjYWxsaW5nIHRoZSBwdWJsaWMgdmVyc2lvbiB3aGljaCBjYW4gYmUgb3ZlcnJpZGRlbi4KLS0t
Cj4gKyAgICAvLyBUaGUgQEBzcGxpdCBzbG93IHBhdGggc2hvdWxkIG9ubHkgY2FsbCB0aGUgaW50
ZXJuYWwgdmVyc2lvbiBvZiBzdWJzdHIuIE1ha2Ugc3VyZQo+ICsgICAgLy8gdGhhdCBpdCdzIG5v
dCBjYWxsaW5nIHRoZSBwdWJsaWMgdmVyc2lvbiB3aGljaCBjYW4gYmUgb3ZlcnJpZGRlbi4KMjM2
NWEyNDc1LDI0ODAKPiArICAgIC8vIFRoZSBAQHNwbGl0IHNsb3cgcGF0aCBzaG91bGQgb25seSBj
YWxsIHRoZSBpbnRlcm5hbCB2ZXJzaW9uIG9mIGluY2x1ZGVzLiBNYWtlIHN1cmUKPiArICAgIC8v
IHRoYXQgaXQncyBub3QgY2FsbGluZyB0aGUgcHVibGljIHZlcnNpb24gd2hpY2ggY2FuIGJlIG92
ZXJyaWRkZW4uCj4gKyAgICBTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzID0gZnVuY3Rpb24ocGF0
dGVybikgewo+ICsgICAgICAgIHRocm93IEVycm9yKCJTaG91bGQgbm90IGNhbGwgb3ZlcnJpZGRl
biBpbmNsdWRlcyIpOwo+ICsgICAgfQo+ICsKMjM3NWMyNDkwCjwgQEAgLTAsMCArMSw0MDcgQEAK
LS0tCj4gQEAgLTAsMCArMSw0MDYgQEAKMjM5MGMyNTA1CjwgKyAgICAgICAgICAgIHJldHVybiAv
aXQvOwotLS0KPiArICAgICAgICAgICAgcmV0dXJuIC9pdC95OwoyMzkzYzI1MDgKPCArICAgIGxl
dCBvYmogPSBuZXcgVGVzdFJlZ0V4cDsKLS0tCj4gKyAgICBsZXQgb2JqID0gbmV3IFRlc3RSZWdF
eHAoL2l0Lyk7CjI0MDYsMjQwN2MyNTIxLDI1MjIKPCArICAgICAgICBjb25zdHJ1Y3RvcihzdHIp
IHsKPCArICAgICAgICAgICAgc3VwZXIoc3RyKTsKLS0tCj4gKyAgICAgICAgY29uc3RydWN0b3Io
c3RyLCBmbGFncykgewo+ICsgICAgICAgICAgICBzdXBlcihzdHIsIGZsYWdzKTsKMjQyNWMyNTQw
CjwgKyAgICAgICAgcmV0dXJuIC9pdC87Ci0tLQo+ICsgICAgICAgIHJldHVybiAvaXQveTsKMjUx
NGMyNjI5CjwgKyAgICAgICAgcmV0dXJuIC9pdC87Ci0tLQo+ICsgICAgICAgIHJldHVybiAvaXQv
eTsKMjc4MmQyODk2CjwgK2xldCByZXN1bHQgPSBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxp
dF0uY2FsbCgvaXQvLCAic3BsaXRtZSIpOwoyODAyYzI5MTYKPCArICAgICAgICAgICAgcmV0dXJu
IC9pdC87Ci0tLQo+ICsgICAgICAgICAgICByZXR1cm4gL2l0L3k7CjMwMTZjMzEzMAo8IEBAIC0w
LDAgKzEsMzIgQEAKLS0tCj4gQEAgLTAsMCArMSwzOCBAQAozMDQzYTMxNTgsMzE2Mwo+ICsgICAg
Ly8gVGhlIEBAc3BsaXQgc2xvdyBwYXRoIHNob3VsZCBvbmx5IGNhbGwgdGhlIGludGVybmFsIHZl
cnNpb24gb2YgaW5jbHVkZXMuIE1ha2Ugc3VyZQo+ICsgICAgLy8gdGhhdCBpdCdzIG5vdCBjYWxs
aW5nIHRoZSBwdWJsaWMgdmVyc2lvbiB3aGljaCBjYW4gYmUgb3ZlcnJpZGRlbi4KPiArICAgIFN0
cmluZy5wcm90b3R5cGUuaW5jbHVkZXMgPSBmdW5jdGlvbihwYXR0ZXJuKSB7Cj4gKyAgICAgICAg
dGhyb3cgRXJyb3IoIlNob3VsZCBub3QgY2FsbCBvdmVycmlkZGVuIGluY2x1ZGVzIik7Cj4gKyAg
ICB9Cj4gKwozMDUzYzMxNzMKPCBAQCAtMCwwICsxLDQ3NSBAQAotLS0KPiBAQCAtMCwwICsxLDUx
MCBAQAozMTE5YTMyNDAsMzI3NAo+ICsvLyBTdHJpbmcgc3ViY2xhc3Mgd2l0aCBvdmVycmlkZGVu
IEBAc3BsaXQuCj4gKyhmdW5jdGlvbiAoKSB7Cj4gKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKPiAr
ICAgIGNsYXNzIEV4dFN0cmluZyBleHRlbmRzIFN0cmluZyB7Cj4gKyAgICAgICAgW1N5bWJvbC5z
cGxpdF0gKHN0cikgewo+ICsgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJTeW1ib2woU3ltYm9s
LnNwbGl0KSIpOwo+ICsgICAgICAgICAgICByZXR1cm4gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wu
c3BsaXRdLmNhbGwoL2l0Lywgc3RyKTsKPiArICAgICAgICB9Cj4gKyAgICB9Owo+ICsKPiArICAg
IHZhciBvYmogPSBuZXcgRXh0U3RyaW5nOwo+ICsKPiArICAgIGFzc2VydChhY2Nlc3NlcyA9PSAi
IiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7Cj4gKyAgICBsZXQgcmVz
dWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7ICAgIAo+ICsgICAgYXNzZXJ0KGFjY2Vzc2VzID09
ICJTeW1ib2woU3ltYm9sLnNwbGl0KSIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2gg
ZXhwZWN0YXRpb24iKTsKPiArICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVj
dGVkIHJlc3VsdCIpOwo+ICt9KSgpOwo+ICsKPiArCj4gKy8vIE9iamVjdCB3aXRoIG92ZXJyaWRk
ZW4gQEBzZWFyY2guCj4gKyhmdW5jdGlvbiAoKSB7Cj4gKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsK
PiArICAgIHZhciBvYmogPSB7Cj4gKyAgICAgICAgW1N5bWJvbC5zcGxpdF0gKHN0cikgewo+ICsg
ICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJTeW1ib2woU3ltYm9sLnNwbGl0KSIpOwo+ICsgICAg
ICAgICAgICByZXR1cm4gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwoL2l0Lywg
c3RyKTsKPiArICAgICAgICB9LAo+ICsgICAgfQo+ICsKPiArICAgIGFzc2VydChhY2Nlc3NlcyA9
PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7Cj4gKyAgICBsZXQg
cmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7ICAgIAo+ICsgICAgYXNzZXJ0KGFjY2Vzc2Vz
ID09ICJTeW1ib2woU3ltYm9sLnNwbGl0KSIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0
Y2ggZXhwZWN0YXRpb24iKTsKPiArICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4
cGVjdGVkIHJlc3VsdCIpOwo+ICt9KSgpOwo+ICsKMzEzMGMzMjg1CjwgKyAgICAgICAgICAgIHJl
dHVybiAvaXQvOwotLS0KPiArICAgICAgICAgICAgcmV0dXJuIC9pdC95OwozMTQ2LDMxNDdjMzMw
MSwzMzAyCjwgKyAgICAgICAgY29uc3RydWN0b3Ioc3RyKSB7CjwgKyAgICAgICAgICAgIHN1cGVy
KHN0cik7Ci0tLQo+ICsgICAgICAgIGNvbnN0cnVjdG9yKHN0ciwgZmxhZ3MpIHsKPiArICAgICAg
ICAgICAgc3VwZXIoc3RyLCBmbGFncyk7CjMxNjVjMzMyMAo8ICsgICAgICAgIHJldHVybiAvaXQv
OwotLS0KPiArICAgICAgICByZXR1cm4gL2l0L3k7CjMyNThjMzQxMwo8ICsgICAgICAgIHJldHVy
biAvaXQvOwotLS0KPiArICAgICAgICByZXR1cm4gL2l0L3k7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276285</attachid>
            <date>2016-04-12 15:35:07 -0700</date>
            <delta_ts>2016-04-12 15:35:07 -0700</delta_ts>
            <desc>patch for landing 2: removed unneeded explicit setting of result.length.</desc>
            <filename>bug-156013c.patch</filename>
            <type>text/plain</type>
            <size>166556</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5Mzg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDE2LTA0LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
UzY6IEltcGxlbWVudCBTdHJpbmcucHJvdG90eXBlLnNwbGl0IGFuZCBSZWdFeHAucHJvdG90eXBl
W0BAc3BsaXRdLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU2MDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9HbG9iYWxPYmplY3QuanM6CisgICAg
ICAgIChzcGVjaWVzQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJ1aWx0aW5zL1Byb21pc2VQcm90
b3R5cGUuanM6CisgICAgICAgIC0gcmVmYWN0b3JlZCB0byB1c2UgdGhlIEBzcGVjaWVzQ29uc3Ry
dWN0b3IgaW50ZXJuYWwgZnVuY3Rpb24uCisKKyAgICAgICAgKiBidWlsdGlucy9SZWdFeHBQcm90
b3R5cGUuanM6CisgICAgICAgIChhZHZhbmNlU3RyaW5nSW5kZXgpOgorICAgICAgICAtIHJlZmFj
dG9yZWQgZnJvbSBAYWR2YW5jZVN0cmluZ0luZGV4VW5pY29kZSgpIHRvIGJlIG1hdGNoIHRoZSBz
cGVjLgorICAgICAgICAgIEJlbmNobWFya3Mgc2hvdyB0aGF0IHRoZXJlJ3Mgbm8gYWR2YW50YWdl
IGluIGRvaW5nIHRoZSB1bmljb2RlIGNoZWNrIG91dHNpZGUKKyAgICAgICAgICBvZiB0aGUgYWR2
YW5jZVN0cmluZ0luZGV4VW5pY29kZSBwYXJ0LiAgU28sIEkgc2ltcGxpZmllZCB0aGUgY29kZSB0
byBtYXRjaCB0aGUKKyAgICAgICAgICBzcGVjIChlc3BlY2lhbGx5IHNpbmNlIEBAc3BsaXQgbmVl
ZHMgdG8gY2FsbCBhZHZhbmNlU3RyaW5nSW5kZXggZnJvbSBtb3JlIHRoYW4KKyAgICAgICAgICAx
IGxvY2F0aW9uKS4KKyAgICAgICAgKG1hdGNoKToKKyAgICAgICAgLSBSZW1vdmVkIGFuIHVubmVj
ZXNzYXJ5IGNhbGwgdG8gQE9iamVjdCBiZWNhdXNlIGl0IHdhcyBhbHJlYWR5IHByb3ZlbiBhYm92
ZS4KKyAgICAgICAgLSBDaGFuZ2VkIHRvIHVzZSBhZHZhbmNlU3RyaW5nSW5kZXggaW5zdGVhZCBv
ZiBhZHZhbmNlU3RyaW5nSW5kZXhVbmljb2RlLgorICAgICAgICAgIEFnYWluLCB0aGVyZSdzIG5v
IHBlcmYgcmVncmVzc2lvbiBmb3IgdGhpcy4KKyAgICAgICAgKHJlZ0V4cEV4ZWMpOgorICAgICAg
ICAoaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3RzRm9yUmVnRXhwU3BsaXQpOgorICAgICAgICAoc3Bs
aXQpOgorICAgICAgICAoYWR2YW5jZVN0cmluZ0luZGV4VW5pY29kZSk6IERlbGV0ZWQuCisKKyAg
ICAgICAgKiBidWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanM6CisgICAgICAgIChzcGxpdCk6Cisg
ICAgICAgIC0gTW9kaWZpZWQgdG8gdXNlIFJlZ0V4cC5wcm90b3R5cGVbQEBzcGxpdF0uCisKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgorICAgICAgICAt
IEFkZGVkIHRoZSBAQHNwbGl0IHN5bWJvbC4KKworICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5j
dGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6ZXNTcGVjSXNDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChKU0M6OmVzU3BlY0lzUmVnRXhwKToKKyAgICAgICAgKiBydW50aW1lL0VDTUFTY3Jp
cHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaDogQWRkZWQuCisKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0R2V0dGVyQnlJZCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKworICAgICAgICAqIHJ1bnRpbWUvUHJvcGVy
dHlEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlEZXNjcmlwdG9yOjpzZXRE
ZXNjcmlwdG9yKToKKyAgICAgICAgLSBSZW1vdmVkIGFuIGFzc2VydCB0aGF0IGlzIG5vIGxvbmdl
ciB2YWxpZC4KKworICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6CisgICAgICAgIC0g
TWFkZSBhZHZhbmNlU3RyaW5nVW5pY29kZSgpIHB1YmxpYyBzbyB0aGF0IGl0IGNhbiBiZSByZS11
c2VkIGJ5IHRoZSByZWdleHAgc3BsaXQKKyAgICAgICAgICBmYXN0IHBhdGguCisKKyAgICAgICAg
KiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNFeGVj
KToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jU2VhcmNoKToKKyAgICAgICAgKEpTQzo6
YWR2YW5jZVN0cmluZ0luZGV4KToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jU3BsaXRG
YXN0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oOgorCisgICAgICAgICog
cnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6anNTdHJpbmdXaXRoUmV1c2Up
OgorICAgICAgICAoSlNDOjpqc1N1YnN0cmluZyk6CisgICAgICAgIC0gSG9pc3RlZCBzb21lIHV0
aWxpdHkgZnVuY3Rpb25zIGZyb20gU3RyaW5nUHJvdG90eXBlLmNwcCBzbyB0aGF0IHRoZXkgY2Fu
IGJlCisgICAgICAgICAgcmV1c2VkIGJ5IHRoZSByZWdleHAgc3BsaXQgZmFzdCBwYXRoLgorCisg
ICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJp
bmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9G
dW5jU3BsaXRGYXN0KToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vic3RyKToKKyAg
ICAgICAgKEpTQzo6YnVpbHRpblN0cmluZ1N1YnN0ckludGVybmFsKToKKyAgICAgICAgKEpTQzo6
c3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKToKKyAgICAgICAgKEpTQzo6c3RyaW5nSW5jbHVkZXNJ
bXBsKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMpOgorICAgICAgICAo
SlNDOjpidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OmpzU3Ry
aW5nV2l0aFJldXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6anNTdWJzdHJpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTcGxpdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaDoKKworICAgICAgICAqIHRlc3RzL2VzNi55
YW1sOgorCiAyMDE2LTA0LTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcmVtb3ZlIEZJWE1FIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NDU3IGFuZCByZXBsYWNlIGl0CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxOTkzMzgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYzOCw2ICs2MzgsNyBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvRGlyZWN0QXJndW1lbnRz
LmNwcAogICAgIHJ1bnRpbWUvRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmNwcAogICAgIHJ1bnRpbWUv
RHVtcENvbnRleHQuY3BwCisgICAgcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rp
b25zLmNwcAogICAgIHJ1bnRpbWUvRXJyb3IuY3BwCiAgICAgcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmNwcAogICAgIHJ1bnRpbWUvRXJyb3JIYW5kbGluZ1Njb3BlLmNwcApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDUzLDYgKzIwNTMsOCBAQAogCQlGRTFDMEZGRjFCMTk0RkQxMDBCNTNGQ0Eg
LyogRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMUMwRkZFMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3BwICovOyB9Owog
CQlGRTIwQ0U5RDE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTIwQ0U5QjE1RjA0QTk1MDBERjM0
MzAgLyogTExJbnRDTG9vcC5jcHAgKi87IH07CiAJCUZFMjBDRTlFMTVGMDRBOTUwMERGMzQzMCAv
KiBMTEludENMb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFMzE4RkRGMUNBQzk4Mjcw
MERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzE4RkREMUNBQzhDNTMwMERG
Q0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcCAqLzsgfTsKKwkJRkUz
MThGRTAxQ0FDOTgyRjAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzE4RkRF
MUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggKi87
IH07CiAJCUZFMzg0RUU1MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUxMUFEREI3QUQw
MDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLzsgfTsKIAkJRkUzODRFRTYxQUREQjdBRDAwNTVE
RTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMzg0RUUyMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUzODRFRTcxQURE
QjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODRFRTMxQUREQjdBRDAwNTVERTJDIC8q
IEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwICovOyB9OwpAQCAtNDI5OSw2ICs0MzAxLDggQEAKIAkJ
RkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTIwQ0U5QjE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludENMb29wLmNwcDsgcGF0aCA9
IGxsaW50L0xMSW50Q0xvb3AuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTIw
Q0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBMTEludENMb29wLmg7IHBhdGggPSBsbGludC9MTEludENMb29wLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzE4RkREMUNBQzhDNTMwMERGQ0M1NCAvKiBF
Q01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTMxOEZERTFDQUM4QzUzMDBERkNDNTQgLyogRUNN
QVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFMzg0RUUxMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9sbGFyVk0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyog
SlNEb2xsYXJWTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RvbGxhclZN
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUzMUFEREI3QUQwMDU1REUy
QyAvKiBKU0RvbGxhclZNUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNTU3OSw2ICs1NTgzLDggQEAKIAkJCQkwRkUwNTAwRTFBQTkwOTExMDBEMzNCMzMg
LyogRGlyZWN0QXJndW1lbnRzT2Zmc2V0LmggKi8sCiAJCQkJQTcwNDQ3RUIxN0EwQkQ3MDAwRjU4
OThFIC8qIER1bXBDb250ZXh0LmNwcCAqLywKIAkJCQlBNzA0NDdFQzE3QTBCRDcwMDBGNTg5OEUg
LyogRHVtcENvbnRleHQuaCAqLywKKwkJCQlGRTMxOEZERDFDQUM4QzUzMDBERkNDNTQgLyogRUNN
QVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAgKi8sCisJCQkJRkUzMThGREUxQ0FDOEM1
MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLywKIAkJCQky
QUQyRURGQTE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVyYXRpb25Nb2RlLmggKi8sCiAJCQkJQkMz
MzdCRUEwRTFCMDBDQjAwNzY5MThBIC8qIEVycm9yLmNwcCAqLywKIAkJCQlCQzMwNDYwNjBFMUY0
OTdGMDAzMjMyQ0YgLyogRXJyb3IuaCAqLywKQEAgLTc5MzksNiArNzk0NSw3IEBACiAJCQkJNTJD
MDYxMUYxQUE1MUUxQzAwQjRBREJBIC8qIFJ1bnRpbWVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3NUEgLyogU2FtcGxpbmdDb3VudGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkUwNTAyODFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGRTMxOEZFMDFDQUM5ODJGMDBERkNDNTQgLyogRUNNQVNjcmlw
dFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMjkxQUE5
MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovLApAQCAtODc1Niw2ICs4NzYzLDcgQEAKIAkJCQlGRTUwNjg2NzFB
RTI1RTI4MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE3N0E0MjNEMTdBMEJCRkQwMEE4REI4MSAvKiBERkdBYnN0cmFjdEhlYXAuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY1NUMxOTQxNzI3NkU0NjAwQ0VBQkZEIC8qIERGR0Fic3RyYWN0VmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUzMThGREYxQ0FDOTgyNzAwREZDQzU0IC8qIEVD
TUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZE
M0U0MDExQjYxOEFBRjAwQzgwRTFFIC8qIERGR0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVl
V2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjE4RDNDRjFCNTVBNkUwMDAyQzVD
OUYgLyogREZHQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMkREODExMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0dsb2JhbE9iamVjdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCShyZXZpc2lvbiAxOTkzMzgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT2JqZWN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAs
MyArNjEsMTggQEAgZnVuY3Rpb24gc3BlY2llc0dldHRlcigpCiB7CiAgICAgcmV0dXJuIHRoaXM7
CiB9CisKK2Z1bmN0aW9uIHNwZWNpZXNDb25zdHJ1Y3RvcihvYmosIGRlZmF1bHRDb25zdHJ1Y3Rv
cikKK3sKKyAgICB2YXIgY29uc3RydWN0b3IgPSBvYmouY29uc3RydWN0b3I7CisgICAgaWYgKGNv
bnN0cnVjdG9yID09PSBAdW5kZWZpbmVkKQorICAgICAgICByZXR1cm4gZGVmYXVsdENvbnN0cnVj
dG9yOworICAgIGlmICghQGlzT2JqZWN0KGNvbnN0cnVjdG9yKSkKKyAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoInx0aGlzfC5jb25zdHJ1Y3RvciBpcyBub3QgYW4gT2JqZWN0IG9yIHVuZGVm
aW5lZCIpOworICAgIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JbQHN5bWJvbFNwZWNpZXNdOwor
ICAgIGlmIChjb25zdHJ1Y3RvciA9PSBudWxsKQorICAgICAgICByZXR1cm4gZGVmYXVsdENvbnN0
cnVjdG9yOworICAgIGlmIChAaXNDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcikpCisgICAgICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKKyAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigifHRoaXN8LmNvbnN0
cnVjdG9yW1N5bWJvbC5zcGVjaWVzXSBpcyBub3QgYSBjb25zdHJ1Y3RvciIpOworfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VQcm90b3R5cGUuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VQcm90b3R5cGUu
anMJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Q
cm9taXNlUHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywxNiArMzcsNyBAQCBmdW5jdGlv
biB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKQogICAgIGlmICghQGlzUHJvbWlzZSh0aGlz
KSkKICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoInx0aGlzfCBpcyBub3QgYSBvYmplY3Qi
KTsKIAotICAgIHZhciBjb25zdHJ1Y3RvciA9IHRoaXMuY29uc3RydWN0b3I7Ci0gICAgaWYgKGNv
bnN0cnVjdG9yID09PSBAdW5kZWZpbmVkKQotICAgICAgICBjb25zdHJ1Y3RvciA9IEBQcm9taXNl
OwotICAgIGVsc2UgaWYgKCFAaXNPYmplY3QoY29uc3RydWN0b3IpKQotICAgICAgICB0aHJvdyBu
ZXcgQFR5cGVFcnJvcigifHRoaXN8LmNvbnN0cnVjdG9yIGlzIG5vdCBhbiBPYmplY3Qgb3IgdW5k
ZWZpbmVkIik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3Jb
QHN5bWJvbFNwZWNpZXNdOwotICAgICAgICBpZiAoY29uc3RydWN0b3IgPT0gbnVsbCkKLSAgICAg
ICAgICAgIGNvbnN0cnVjdG9yID0gQFByb21pc2U7Ci0gICAgfQorICAgIHZhciBjb25zdHJ1Y3Rv
ciA9IEBzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgQFByb21pc2UpOwogCiAgICAgdmFyIHJlc3Vs
dENhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoY29uc3RydWN0b3IpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUmVnRXhwUHJvdG90eXBlLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWdFeHBQcm90b3R5cGUu
anMJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9S
ZWdFeHBQcm90b3R5cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEzICsyMywxNSBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCiAgKi8KIAotZnVuY3Rpb24gYWR2YW5jZVN0cmluZ0luZGV4VW5pY29kZShz
dHJpbmcsIHN0cmluZ0xlbmd0aCwgaW5kZXgpCitmdW5jdGlvbiBhZHZhbmNlU3RyaW5nSW5kZXgo
c3RyaW5nLCBpbmRleCwgdW5pY29kZSkKIHsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGltcGxlbWVu
dHMgQWR2YW5jZVN0cmluZ0luZGV4IGRlc2NyaWJlZCBpbiBFUzYgMjEuMi41LjIuMywgc3RlcHMg
Ni0xMS4KLSAgICAvLyBJdCBhc3N1bWVzIHRoYXQgInVuaWNvZGUiIGlzIHRydWUgZm9yIGl0cyBj
YWxsZXJzLgorICAgIC8vIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyBBZHZhbmNlU3RyaW5nSW5k
ZXggZGVzY3JpYmVkIGluIEVTNiAyMS4yLjUuMi4zLgogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAg
IGlmIChpbmRleCArIDEgPj0gc3RyaW5nTGVuZ3RoKQorICAgIGlmICghdW5pY29kZSkKKyAgICAg
ICAgcmV0dXJuIGluZGV4ICsgMTsKKworICAgIGlmIChpbmRleCArIDEgPj0gc3RyaW5nLmxlbmd0
aCkKICAgICAgICAgcmV0dXJuIGluZGV4ICsgMTsKIAogICAgIGxldCBmaXJzdCA9IHN0cmluZy5A
Y2hhckNvZGVBdChpbmRleCk7CkBAIC00NywxMCArNDksMTAgQEAgZnVuY3Rpb24gbWF0Y2goc3Ry
KQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBAT2Jq
ZWN0KSkKKyAgICBpZiAoIUBpc09iamVjdCh0aGlzKSkKICAgICAgICAgdGhyb3cgbmV3IEBUeXBl
RXJyb3IoIlJlZ0V4cC5wcm90b3R5cGUuQEBtYXRjaCByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBh
biBPYmplY3QiKTsKIAotICAgIGxldCByZWdleHAgPSBAT2JqZWN0KHRoaXMpOworICAgIGxldCBy
ZWdleHAgPSB0aGlzOwogICAgIGxldCBzdHJpbmdBcmcgPSBAdG9TdHJpbmcoc3RyKTsKIAogICAg
IGlmICghcmVnZXhwLmdsb2JhbCkKQEAgLTc5LDEyICs4MSw4IEBAIGZ1bmN0aW9uIG1hdGNoKHN0
cikKIAogICAgICAgICAgICAgbGV0IHJlc3VsdFN0cmluZyA9IEB0b1N0cmluZyhyZXN1bHRbMF0p
OwogCi0gICAgICAgICAgICBpZiAoIXJlc3VsdFN0cmluZy5sZW5ndGgpIHsKLSAgICAgICAgICAg
ICAgICBpZiAodW5pY29kZSkKLSAgICAgICAgICAgICAgICAgICAgcmVnZXhwLmxhc3RJbmRleCA9
IEBhZHZhbmNlU3RyaW5nSW5kZXhVbmljb2RlKHN0cmluZ0FyZywgc3RyaW5nTGVuZ3RoLCByZWdl
eHAubGFzdEluZGV4KTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IHJlZ2V4cC5sYXN0SW5kZXgrKzsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghcmVz
dWx0U3RyaW5nLmxlbmd0aCkKKyAgICAgICAgICAgICAgICByZWdleHAubGFzdEluZGV4ID0gQGFk
dmFuY2VTdHJpbmdJbmRleChzdHJpbmdBcmcsIHJlZ2V4cC5sYXN0SW5kZXgsIHVuaWNvZGUpOwog
CiAgICAgICAgICAgICByZXN1bHRMaXN0LkBwdXNoKHJlc3VsdFN0cmluZyk7CiAKQEAgLTk1LDMg
KzkzLDE4NyBAQCBmdW5jdGlvbiBtYXRjaChzdHIpCiAgICAgcmV0dXJuIHJlZ2V4cC5AbWF0Y2go
c3RyaW5nQXJnKTsKIH0KIAorZnVuY3Rpb24gcmVnRXhwRXhlYyhyZWdleHAsIHN0cikKK3sKKyAg
ICAidXNlIHN0cmljdCI7CisKKyAgICBsZXQgZXhlYyA9IHJlZ2V4cC5leGVjOworICAgIGxldCBi
dWlsdGluRXhlYyA9IEBSZWdFeHAucHJvdG90eXBlLkBleGVjOworICAgIGlmIChleGVjICE9PSBi
dWlsdGluRXhlYyAmJiB0eXBlb2YgZXhlYyA9PT0gImZ1bmN0aW9uIikgeworICAgICAgICBsZXQg
cmVzdWx0ID0gZXhlYy5AY2FsbChyZWdleHAsIHN0cik7CisgICAgICAgIGlmIChyZXN1bHQgIT09
IG51bGwgJiYgIUBpc09iamVjdChyZXN1bHQpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBl
RXJyb3IoIlRoZSByZXN1bHQgb2YgYSBSZWdFeHAgZXhlYyBtdXN0IGJlIG51bGwgb3IgYW4gb2Jq
ZWN0Iik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIHJldHVybiBidWlsdGlu
RXhlYy5AY2FsbChyZWdleHAsIHN0cik7Cit9CisKK2Z1bmN0aW9uIGhhc09ic2VydmFibGVTaWRl
RWZmZWN0c0ZvclJlZ0V4cFNwbGl0KHJlZ2V4cCkgeworICAgIC8vIFRoaXMgaXMgYWNjZXNzZWQg
YnkgdGhlIFJlZ0V4cEV4ZWMgaW50ZXJuYWwgZnVuY3Rpb24uCisgICAgbGV0IHJlZ2V4cEV4ZWMg
PSBAdHJ5R2V0QnlJZChyZWdleHAsICJleGVjIik7CisgICAgaWYgKHJlZ2V4cEV4ZWMgIT09IEBS
ZWdFeHAucHJvdG90eXBlLkBleGVjKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICAv
LyBUaGlzIGlzIGFjY2Vzc2VkIGJ5IHN0ZXAgNSBiZWxvdy4KKyAgICBsZXQgcmVnZXhwRmxhZ3Mg
PSBAdHJ5R2V0QnlJZChyZWdleHAsICJmbGFncyIpOworICAgIGlmIChyZWdleHBGbGFncyAhPT0g
QHJlZ0V4cFByb3RvRmxhZ3NHZXR0ZXIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAg
IC8vIFRoZXNlIGFyZSBhY2Nlc3NlZCBieSB0aGUgYnVpbHRpbiBmbGFncyBnZXR0ZXIuCisgICAg
bGV0IHJlZ2V4cEdsb2JhbCA9IEB0cnlHZXRCeUlkKHJlZ2V4cCwgImdsb2JhbCIpOworICAgIGlm
IChyZWdleHBHbG9iYWwgIT09IEByZWdFeHBQcm90b0dsb2JhbEdldHRlcikKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgbGV0IHJlZ2V4cElnbm9yZUNhc2UgPSBAdHJ5R2V0QnlJZChyZWdleHAs
ICJpZ25vcmVDYXNlIik7CisgICAgaWYgKHJlZ2V4cElnbm9yZUNhc2UgIT09IEByZWdFeHBQcm90
b0lnbm9yZUNhc2VHZXR0ZXIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGxldCByZWdleHBN
dWx0aWxpbmUgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJtdWx0aWxpbmUiKTsKKyAgICBpZiAocmVn
ZXhwTXVsdGlsaW5lICE9PSBAcmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0ZXIpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGxldCByZWdleHBTdGlja3kgPSBAdHJ5R2V0QnlJZChyZWdleHAsICJz
dGlja3kiKTsKKyAgICBpZiAocmVnZXhwU3RpY2t5ICE9PSBAcmVnRXhwUHJvdG9TdGlja3lHZXR0
ZXIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGxldCByZWdleHBVbmljb2RlID0gQHRyeUdl
dEJ5SWQocmVnZXhwLCAidW5pY29kZSIpOworICAgIGlmIChyZWdleHBVbmljb2RlICE9PSBAcmVn
RXhwUHJvdG9Vbmljb2RlR2V0dGVyKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICAv
LyBUaGlzIGlzIGFjY2Vzc2VkIGJ5IHRoZSBSZWdFeHAgc3BlY2llcyBjb25zdHJ1Y3Rvci4KKyAg
ICBsZXQgcmVnZXhwU291cmNlID0gQHRyeUdldEJ5SWQocmVnZXhwLCAic291cmNlIik7CisgICAg
aWYgKHJlZ2V4cFNvdXJjZSAhPT0gQHJlZ0V4cFByb3RvU291cmNlR2V0dGVyKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICByZXR1cm4gIUBpc1JlZ0V4cChyZWdleHApOworfQorCisv
LyBFUyAyMS4yLjUuMTEgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XShzdHJpbmcsIGxpbWl0KQor
ZnVuY3Rpb24gc3BsaXQoc3RyaW5nLCBsaW1pdCkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAg
ICAvLyAxLiBMZXQgcnggYmUgdGhlIHRoaXMgdmFsdWUuCisgICAgLy8gMi4gSWYgVHlwZShyeCkg
aXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgorICAgIGlmICghQGlz
T2JqZWN0KHRoaXMpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVnRXhwLnByb3Rv
dHlwZS5AQHNwbGl0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGFuIE9iamVjdCIpOworICAgIGxl
dCByZWdleHAgPSB0aGlzOworCisgICAgLy8gMy4gTGV0IFMgYmUgPyBUb1N0cmluZyhzdHJpbmcp
LgorICAgIGxldCBzdHIgPSBAdG9TdHJpbmcoc3RyaW5nKTsKKworICAgIC8vIDQuIExldCBDIGJl
ID8gU3BlY2llc0NvbnN0cnVjdG9yKHJ4LCAlUmVnRXhwJSkuCisgICAgbGV0IHNwZWNpZXNDb25z
dHJ1Y3RvciA9IEBzcGVjaWVzQ29uc3RydWN0b3IocmVnZXhwLCBAUmVnRXhwKTsKKworICAgIGlm
IChzcGVjaWVzQ29uc3RydWN0b3IgPT09IEBSZWdFeHAgJiYgIUBoYXNPYnNlcnZhYmxlU2lkZUVm
ZmVjdHNGb3JSZWdFeHBTcGxpdChyZWdleHApKQorICAgICAgICByZXR1cm4gQHJlZ0V4cFNwbGl0
RmFzdC5AY2FsbChyZWdleHAsIHN0ciwgbGltaXQpOworCisgICAgLy8gNS4gTGV0IGZsYWdzIGJl
ID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyAgICBsZXQgZmxhZ3MgPSBAdG9TdHJp
bmcocmVnZXhwLmZsYWdzKTsKKworICAgIC8vIDYuIElmIGZsYWdzIGNvbnRhaW5zICJ1IiwgbGV0
IHVuaWNvZGVNYXRjaGluZyBiZSB0cnVlLgorICAgIC8vIDcuIEVsc2UsIGxldCB1bmljb2RlTWF0
Y2hpbmcgYmUgZmFsc2UuCisgICAgbGV0IHVuaWNvZGVNYXRjaGluZyA9IEBzdHJpbmdJbmNsdWRl
c0ludGVybmFsLkBjYWxsKGZsYWdzLCAidSIpOworICAgIC8vIDguIElmIGZsYWdzIGNvbnRhaW5z
ICJ5IiwgbGV0IG5ld0ZsYWdzIGJlIGZsYWdzLgorICAgIC8vIDkuIEVsc2UsIGxldCBuZXdGbGFn
cyBiZSB0aGUgc3RyaW5nIHRoYXQgaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgZmxhZ3MgYW5kICJ5
Ii4KKyAgICBsZXQgbmV3RmxhZ3MgPSBAc3RyaW5nSW5jbHVkZXNJbnRlcm5hbC5AY2FsbChmbGFn
cywgInkiKSA/IGZsYWdzIDogZmxhZ3MgKyAieSI7CisKKyAgICAvLyAxMC4gTGV0IHNwbGl0dGVy
IGJlID8gQ29uc3RydWN0KEMsIMKrIHJ4LCBuZXdGbGFncyDCuykuCisgICAgbGV0IHNwbGl0dGVy
ID0gbmV3IHNwZWNpZXNDb25zdHJ1Y3RvcihyZWdleHAsIG5ld0ZsYWdzKTsKKworICAgIC8vIFdl
IG5lZWQgdG8gY2hlY2sgYWdhaW4gZm9yIFJlZ0V4cCBzdWJjbGFzc2VzIHRoYXQgd2lsbCBmYWls
IHRoZSBzcGVjaWVzQ29uc3RydWN0b3IgdGVzdAorICAgIC8vIGJ1dCBjYW4gc3RpbGwgdXNlIHRo
ZSBmYXN0IHBhdGggYWZ0ZXIgd2UgaW52b2tlIHRoZSBjb25zdHJ1Y3RvciBhYm92ZS4KKyAgICBp
ZiAoIUBoYXNPYnNlcnZhYmxlU2lkZUVmZmVjdHNGb3JSZWdFeHBTcGxpdChzcGxpdHRlcikpCisg
ICAgICAgIHJldHVybiBAcmVnRXhwU3BsaXRGYXN0LkBjYWxsKHNwbGl0dGVyLCBzdHIsIGxpbWl0
KTsKKworICAgIC8vIDExLiBMZXQgQSBiZSBBcnJheUNyZWF0ZSgwKS4KKyAgICAvLyAxMi4gTGV0
IGxlbmd0aEEgYmUgMC4KKyAgICBsZXQgcmVzdWx0ID0gW107CisKKyAgICAvLyAxMy4gSWYgbGlt
aXQgaXMgdW5kZWZpbmVkLCBsZXQgbGltIGJlIDJeMzItMTsgZWxzZSBsZXQgbGltIGJlID8gVG9V
aW50MzIobGltaXQpLgorICAgIGxpbWl0ID0gKGxpbWl0ID09PSBAdW5kZWZpbmVkKSA/IDB4ZmZm
ZmZmZmYgOiBsaW1pdCA+Pj4gMDsKKworICAgIC8vIDE2LiBJZiBsaW0gPSAwLCByZXR1cm4gQS4K
KyAgICBpZiAoIWxpbWl0KQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgLy8gMTQuIFtE
ZWZlcmVkIGZyb20gYWJvdmVdIExldCBzaXplIGJlIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4g
Uy4KKyAgICBsZXQgc2l6ZSA9IHN0ci5sZW5ndGg7CisKKyAgICAvLyAxNy4gSWYgc2l6ZSA9IDAs
IHRoZW4KKyAgICBpZiAoIXNpemUpIHsKKyAgICAgICAgLy8gYS4gTGV0IHogYmUgPyBSZWdFeHBF
eGVjKHNwbGl0dGVyLCBTKS4KKyAgICAgICAgbGV0IHogPSBAcmVnRXhwRXhlYyhzcGxpdHRlciwg
c3RyKTsKKyAgICAgICAgLy8gYi4gSWYgeiBpcyBub3QgbnVsbCwgcmV0dXJuIEEuCisgICAgICAg
IGlmICh6ICE9IG51bGwpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAvLyBj
LiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICIwIiwgUykuCisgICAgICAgIEBwdXRC
eVZhbERpcmVjdChyZXN1bHQsIDAsIHN0cik7CisgICAgICAgIC8vIGQuIFJldHVybiBBLgorICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8vIDE1LiBbRGVmZXJlZCBmcm9tIGFi
b3ZlXSBMZXQgcCBiZSAwLgorICAgIGxldCBwb3NpdGlvbiA9IDA7CisgICAgLy8gMTguIExldCBx
IGJlIHAuCisgICAgbGV0IG1hdGNoUG9zaXRpb24gPSAwOworCisgICAgLy8gMTkuIFJlcGVhdCwg
d2hpbGUgcSA8IHNpemUKKyAgICB3aGlsZSAobWF0Y2hQb3NpdGlvbiA8IHNpemUpIHsKKyAgICAg
ICAgLy8gYS4gUGVyZm9ybSA/IFNldChzcGxpdHRlciwgImxhc3RJbmRleCIsIHEsIHRydWUpLgor
ICAgICAgICBzcGxpdHRlci5sYXN0SW5kZXggPSBtYXRjaFBvc2l0aW9uOworICAgICAgICAvLyBi
LiBMZXQgeiBiZSA/IFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFMpLgorICAgICAgICBsZXQgbWF0Y2hl
cyA9IEByZWdFeHBFeGVjKHNwbGl0dGVyLCBzdHIpOworICAgICAgICAvLyBjLiBJZiB6IGlzIG51
bGwsIGxldCBxIGJlIEFkdmFuY2VTdHJpbmdJbmRleChTLCBxLCB1bmljb2RlTWF0Y2hpbmcpLgor
ICAgICAgICBpZiAobWF0Y2hlcyA9PT0gbnVsbCkKKyAgICAgICAgICAgIG1hdGNoUG9zaXRpb24g
PSBAYWR2YW5jZVN0cmluZ0luZGV4KHN0ciwgbWF0Y2hQb3NpdGlvbiwgdW5pY29kZU1hdGNoaW5n
KTsKKyAgICAgICAgLy8gZC4gRWxzZSB6IGlzIG5vdCBudWxsLAorICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIGkuIExldCBlIGJlID8gVG9MZW5ndGgoPyBHZXQoc3BsaXR0ZXIsICJsYXN0
SW5kZXgiKSkuCisgICAgICAgICAgICBsZXQgZW5kUG9zaXRpb24gPSBAdG9MZW5ndGgoc3BsaXR0
ZXIubGFzdEluZGV4KTsKKyAgICAgICAgICAgIC8vIGlpLiBMZXQgZSBiZSBtaW4oZSwgc2l6ZSku
CisgICAgICAgICAgICBlbmRQb3NpdGlvbiA9IChlbmRQb3NpdGlvbiA8PSBzaXplKSA/IGVuZFBv
c2l0aW9uIDogc2l6ZTsKKyAgICAgICAgICAgIC8vIGlpaS4gSWYgZSA9IHAsIGxldCBxIGJlIEFk
dmFuY2VTdHJpbmdJbmRleChTLCBxLCB1bmljb2RlTWF0Y2hpbmcpLgorICAgICAgICAgICAgaWYg
KGVuZFBvc2l0aW9uID09PSBwb3NpdGlvbikKKyAgICAgICAgICAgICAgICBtYXRjaFBvc2l0aW9u
ID0gQGFkdmFuY2VTdHJpbmdJbmRleChzdHIsIG1hdGNoUG9zaXRpb24sIHVuaWNvZGVNYXRjaGlu
Zyk7CisgICAgICAgICAgICAvLyBpdi4gRWxzZSBlICE9IHAsCisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAvLyAxLiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0
aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgZWxlbWVudHMgYXQgaW5kaWNlcyBw
IChpbmNsdXNpdmUpIHRocm91Z2ggcSAoZXhjbHVzaXZlKS4KKyAgICAgICAgICAgICAgICBsZXQg
c3ViU3RyID0gQHN0cmluZ1N1YnN0ckludGVybmFsLkBjYWxsKHN0ciwgcG9zaXRpb24sIG1hdGNo
UG9zaXRpb24gLSBwb3NpdGlvbik7CisgICAgICAgICAgICAgICAgLy8gMi4gUGVyZm9ybSAhIENy
ZWF0ZURhdGFQcm9wZXJ0eShBLCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBUKS4KKyAgICAgICAgICAg
ICAgICAvLyAzLiBMZXQgbGVuZ3RoQSBiZSBsZW5ndGhBICsgMS4KKyAgICAgICAgICAgICAgICBA
cHV0QnlWYWxEaXJlY3QocmVzdWx0LCByZXN1bHQubGVuZ3RoLCBzdWJTdHIpOworICAgICAgICAg
ICAgICAgIC8vIDQuIElmIGxlbmd0aEEgPSBsaW0sIHJldHVybiBBLgorICAgICAgICAgICAgICAg
IGlmIChyZXN1bHQubGVuZ3RoID09IGxpbWl0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworCisgICAgICAgICAgICAgICAgLy8gNS4gTGV0IHAgYmUgZS4KKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbiA9IGVuZFBvc2l0aW9uOworICAgICAgICAgICAgICAgIC8vIDYuIExldCBu
dW1iZXJPZkNhcHR1cmVzIGJlID8gVG9MZW5ndGgoPyBHZXQoeiwgImxlbmd0aCIpKS4KKyAgICAg
ICAgICAgICAgICAvLyA3LiBMZXQgbnVtYmVyT2ZDYXB0dXJlcyBiZSBtYXgobnVtYmVyT2ZDYXB0
dXJlcy0xLCAwKS4KKyAgICAgICAgICAgICAgICBsZXQgbnVtYmVyT2ZDYXB0dXJlcyA9IG1hdGNo
ZXMubGVuZ3RoID4gMSA/IG1hdGNoZXMubGVuZ3RoIC0gMSA6IDA7CisKKyAgICAgICAgICAgICAg
ICAvLyA4LiBMZXQgaSBiZSAxLgorICAgICAgICAgICAgICAgIGxldCBpID0gMTsKKyAgICAgICAg
ICAgICAgICAvLyA5LiBSZXBlYXQsIHdoaWxlIGkgPD0gbnVtYmVyT2ZDYXB0dXJlcywKKyAgICAg
ICAgICAgICAgICB3aGlsZSAoaSA8PSBudW1iZXJPZkNhcHR1cmVzKSB7CisgICAgICAgICAgICAg
ICAgICAgIC8vIGEuIExldCBuZXh0Q2FwdHVyZSBiZSA/IEdldCh6LCAhIFRvU3RyaW5nKGkpKS4K
KyAgICAgICAgICAgICAgICAgICAgbGV0IG5leHRDYXB0dXJlID0gbWF0Y2hlc1tpXTsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gYi4gUGVyZm9ybSAhIENyZWF0ZURhdGFQcm9wZXJ0eShBLCAhIFRv
U3RyaW5nKGxlbmd0aEEpLCBuZXh0Q2FwdHVyZSkuCisgICAgICAgICAgICAgICAgICAgIC8vIGQu
IExldCBsZW5ndGhBIGJlIGxlbmd0aEEgKyAxLgorICAgICAgICAgICAgICAgICAgICBAcHV0QnlW
YWxEaXJlY3QocmVzdWx0LCByZXN1bHQubGVuZ3RoLCBuZXh0Q2FwdHVyZSk7CisgICAgICAgICAg
ICAgICAgICAgIC8vIGUuIElmIGxlbmd0aEEgPSBsaW0sIHJldHVybiBBLgorICAgICAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PSBsaW1pdCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIC8vIGMuIExldCBpIGJlIGkg
KyAxLgorICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIC8vIDEwLiBMZXQgcSBiZSBwLgorICAgICAgICAgICAgICAgIG1hdGNoUG9zaXRp
b24gPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAvLyAy
MC4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNv
bnNpc3Rpbmcgb2YgdGhlIGVsZW1lbnRzIGF0IGluZGljZXMgcCAoaW5jbHVzaXZlKSB0aHJvdWdo
IHNpemUgKGV4Y2x1c2l2ZSkuCisgICAgbGV0IHJlbWFpbmluZ1N0ciA9IEBzdHJpbmdTdWJzdHJJ
bnRlcm5hbC5AY2FsbChzdHIsIHBvc2l0aW9uLCBzaXplKTsKKyAgICAvLyAyMS4gUGVyZm9ybSAh
IENyZWF0ZURhdGFQcm9wZXJ0eShBLCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBUKS4KKyAgICBAcHV0
QnlWYWxEaXJlY3QocmVzdWx0LCByZXN1bHQubGVuZ3RoLCByZW1haW5pbmdTdHIpOworICAgIC8v
IDIyLiBSZXR1cm4gQS4KKyAgICByZXR1cm4gcmVzdWx0OworfQorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5cGUuanMJKHJldmlzaW9u
IDE5OTMzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdQcm90b3R5
cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTEyNSwzICsxMjUsMjIgQEAgZnVuY3Rpb24gcmVwZWF0
KGNvdW50KQogCiAgICAgcmV0dXJuIEByZXBlYXRTbG93UGF0aChzdHJpbmcsIGNvdW50KTsKIH0K
KworZnVuY3Rpb24gc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCkKK3sKKyAgICAidXNlIHN0cmljdCI7
CisgICAgCisgICAgaWYgKHRoaXMgPT0gbnVsbCkgeworICAgICAgICBpZiAodGhpcyA9PT0gbnVs
bCkKKyAgICAgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJTdHJpbmcucHJvdG90eXBlLnNw
bGl0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIik7CisgICAgICAgIHRocm93IG5l
dyBAVHlwZUVycm9yKCJTdHJpbmcucHJvdG90eXBlLnNwbGl0IHJlcXVpcmVzIHRoYXQgfHRoaXN8
IG5vdCBiZSB1bmRlZmluZWQiKTsKKyAgICB9CisgICAgCisgICAgaWYgKHNlcGFyYXRvciAhPSBu
dWxsKSB7CisgICAgICAgIHZhciBzcGxpdHRlciA9IHNlcGFyYXRvcltAc3ltYm9sU3BsaXRdOwor
ICAgICAgICBpZiAoc3BsaXR0ZXIgIT0gQHVuZGVmaW5lZCkKKyAgICAgICAgICAgIHJldHVybiBz
cGxpdHRlci5AY2FsbChzZXBhcmF0b3IsIHRoaXMsIGxpbWl0KTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIEBzdHJpbmdTcGxpdEZhc3QuQGNhbGwodGhpcywgc2VwYXJhdG9yLCBsaW1pdCk7Cit9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCShyZXZpc2lvbiAxOTkzMzgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01Niw2ICs1Nyw3IEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
OkJ5dGVjb2RlSW50cmkKICAgICBtX3N5bWJvbE1hdGNoLnNldChtX3ZtLCBTeW1ib2w6OmNyZWF0
ZShtX3ZtLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKm1fdm0ucHJvcGVydHlOYW1lcy0+bWF0
Y2hTeW1ib2wuaW1wbCgpKSkpOwogICAgIG1fc3ltYm9sU2VhcmNoLnNldChtX3ZtLCBTeW1ib2w6
OmNyZWF0ZShtX3ZtLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKm1fdm0ucHJvcGVydHlOYW1l
cy0+c2VhcmNoU3ltYm9sLmltcGwoKSkpKTsKICAgICBtX3N5bWJvbFNwZWNpZXMuc2V0KG1fdm0s
IFN5bWJvbDo6Y3JlYXRlKG1fdm0sIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqbV92bS5wcm9w
ZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLmltcGwoKSkpKTsKKyAgICBtX3N5bWJvbFNwbGl0LnNl
dChtX3ZtLCBTeW1ib2w6OmNyZWF0ZShtX3ZtLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKm1f
dm0ucHJvcGVydHlOYW1lcy0+c3BsaXRTeW1ib2wuaW1wbCgpKSkpOwogfQogCiBCeXRlY29kZUlu
dHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBlIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6Omxvb2t1
cChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnku
aAkocmV2aXNpb24gMTk5MzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU5LDYgKzYwLDcgQEAg
Y2xhc3MgSWRlbnRpZmllcjsKICAgICBtYWNybyhzeW1ib2xNYXRjaCkgXAogICAgIG1hY3JvKHN5
bWJvbFNlYXJjaCkgXAogICAgIG1hY3JvKHN5bWJvbFNwZWNpZXMpIFwKKyAgICBtYWNybyhzeW1i
b2xTcGxpdCkgXAogCiBjbGFzcyBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkocmV2
aXNpb24gMTk5MzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEwLDcgKzMxMCw2IEBACiAjZGVmaW5lIEpT
Q19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MX05PVF9J
TVBMRU1FTlRFRF9ZRVQobWFjcm8pXAogICAgIG1hY3JvKGlzQ29uY2F0U3ByZWFkYWJsZSkgXAog
ICAgIG1hY3JvKHJlcGxhY2UpIFwKLSAgICBtYWNybyhzcGxpdCkKIAogI2RlZmluZSBKU0NfQ09N
TU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChtYWNybykgXAog
ICAgIG1hY3JvKGhhc0luc3RhbmNlKSBcCkBAIC0zMTgsNiArMzE3LDcgQEAKICAgICBtYWNybyht
YXRjaCkgXAogICAgIG1hY3JvKHNlYXJjaCkgXAogICAgIG1hY3JvKHNwZWNpZXMpIFwKKyAgICBt
YWNybyhzcGxpdCkgXAogICAgIG1hY3JvKHRvUHJpbWl0aXZlKSBcCiAgICAgbWFjcm8odG9TdHJp
bmdUYWcpIFwKICAgICBtYWNybyh1bnNjb3BhYmxlcykKQEAgLTQxMiw2ICs0MTIsOCBAQAogICAg
IG1hY3JvKGluc3RhbmNlT2YpIFwKICAgICBtYWNybyhpc0FycmF5KSBcCiAgICAgbWFjcm8oaXNB
cnJheUNvbnN0cnVjdG9yKSBcCisgICAgbWFjcm8oaXNDb25zdHJ1Y3RvcikgXAorICAgIG1hY3Jv
KGlzUmVnRXhwKSBcCiAgICAgbWFjcm8oaXNTZXQpIFwKICAgICBtYWNybyhpc01hcCkgXAogICAg
IG1hY3JvKHJlZ0V4cENyZWF0ZSkgXApAQCAtNDE5LDcgKzQyMSwxNyBAQAogICAgIG1hY3JvKHNl
dEl0ZXJhdG9yTmV4dCkgXAogICAgIG1hY3JvKE1hcEl0ZXJhdG9yKSBcCiAgICAgbWFjcm8obWFw
SXRlcmF0b3JOZXh0KSBcCi0KKyAgICBtYWNybyhyZWdFeHBQcm90b0ZsYWdzR2V0dGVyKSBcCisg
ICAgbWFjcm8ocmVnRXhwUHJvdG9HbG9iYWxHZXR0ZXIpIFwKKyAgICBtYWNybyhyZWdFeHBQcm90
b0lnbm9yZUNhc2VHZXR0ZXIpIFwKKyAgICBtYWNybyhyZWdFeHBQcm90b011bHRpbGluZUdldHRl
cikgXAorICAgIG1hY3JvKHJlZ0V4cFByb3RvU291cmNlR2V0dGVyKSBcCisgICAgbWFjcm8ocmVn
RXhwUHJvdG9TdGlja3lHZXR0ZXIpIFwKKyAgICBtYWNybyhyZWdFeHBQcm90b1VuaWNvZGVHZXR0
ZXIpIFwKKyAgICBtYWNybyhyZWdFeHBTcGxpdEZhc3QpIFwKKyAgICBtYWNybyhzdHJpbmdJbmNs
dWRlc0ludGVybmFsKSBcCisgICAgbWFjcm8oc3RyaW5nU3BsaXRGYXN0KSBcCisgICAgbWFjcm8o
c3RyaW5nU3Vic3RySW50ZXJuYWwpIFwKIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01B
U2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRUNN
QVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgi
CisjaW5jbHVkZSAiQ29uc3RydWN0RGF0YS5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCisjaW5jbHVkZSAiUHJveHlPYmplY3QuaCIKKyNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXNTcGVj
SXNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYm9vbCBpc0NvbnN0cnVjdG9y
ID0gZXhlYy0+YXJndW1lbnQoMCkuaXNDb25zdHJ1Y3RvcigpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGlzQ29uc3RydWN0b3IpKTsKK30KKworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBlc1NwZWNJc1JlZ0V4cChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYm9v
bCBpc1JlZ0V4cCA9IGV4ZWMtPmFyZ3VtZW50KDApLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5m
bygpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihpc1JlZ0V4cCkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0VDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25z
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FQ01BU2Ny
aXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
RUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9uc19oCisjZGVmaW5lIEVDTUFTY3JpcHRTcGVj
SW50ZXJuYWxGdW5jdGlvbnNfaAorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlc1NwZWNJc0NvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlc1NwZWNJc1Jl
Z0V4cChFeGVjU3RhdGUqKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFQ01B
U2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDE5OTMzOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVk
ZSAiRGVidWdnZXJTY29wZS5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgorI2luY2x1
ZGUgIkVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJFcnJvci5o
IgogI2luY2x1ZGUgIkVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJFcnJvclByb3RvdHlw
ZS5oIgpAQCAtMjU2LDYgKzI1NywxNSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXRHbG9iYWxU
aGlzKFZNJiB2CiAgICAgbV9nbG9iYWxUaGlzLnNldCh2bSwgdGhpcywgZ2xvYmFsVGhpcyk7CiB9
CiAKKworc3RhdGljIEpTT2JqZWN0KiBnZXRHZXR0ZXJCeUlkKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQoreworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZShiYXNlKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIGJhc2VW
YWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIHJldHVybiBzbG90
LmdldFB1cmVSZXN1bHQoKS50b09iamVjdChleGVjKTsKK30KKwogdm9pZCBKU0dsb2JhbE9iamVj
dDo6aW5pdChWTSYgdm0pCiB7CiAgICAgQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdB
UElMb2NrKCkpOwpAQCAtNTQwLDYgKzU1MCwxNCBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVyCiAgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNUaGlzVGltZVZhbHVl
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgZGF0ZVByb3RvRnVu
Y0dldFRpbWUpOwogICAgIEpTRnVuY3Rpb24qIHByaXZhdGVGdW5jSXNBcnJheUNvbnN0cnVjdG9y
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCBTdHJpbmcoKSwgYXJyYXlDb25zdHJ1
Y3RvclByaXZhdGVGdW5jSXNBcnJheUNvbnN0cnVjdG9yKTsKIAorICAgIEpTT2JqZWN0KiByZWdF
eHBQcm90b0ZsYWdzR2V0dGVyT2JqZWN0ID0gZ2V0R2V0dGVyQnlJZChleGVjLCBtX3JlZ0V4cFBy
b3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVydHlOYW1lcy0+ZmxhZ3MpOworICAgIEpTT2JqZWN0KiBy
ZWdFeHBQcm90b0dsb2JhbEdldHRlck9iamVjdCA9IGdldEdldHRlckJ5SWQoZXhlYywgbV9yZWdF
eHBQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPmdsb2JhbCk7CisgICAgSlNPYmpl
Y3QqIHJlZ0V4cFByb3RvSWdub3JlQ2FzZUdldHRlck9iamVjdCA9IGdldEdldHRlckJ5SWQoZXhl
YywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMtPmlnbm9yZUNhc2Up
OworICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b011bHRpbGluZUdldHRlck9iamVjdCA9IGdldEdl
dHRlckJ5SWQoZXhlYywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCksIHZtLnByb3BlcnR5TmFtZXMt
Pm11bHRpbGluZSk7CisgICAgSlNPYmplY3QqIHJlZ0V4cFByb3RvU291cmNlR2V0dGVyT2JqZWN0
ID0gZ2V0R2V0dGVyQnlJZChleGVjLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwgdm0ucHJvcGVy
dHlOYW1lcy0+c291cmNlKTsKKyAgICBKU09iamVjdCogcmVnRXhwUHJvdG9TdGlja3lHZXR0ZXJP
YmplY3QgPSBnZXRHZXR0ZXJCeUlkKGV4ZWMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpLCB2bS5w
cm9wZXJ0eU5hbWVzLT5zdGlja3kpOworICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b1VuaWNvZGVH
ZXR0ZXJPYmplY3QgPSBnZXRHZXR0ZXJCeUlkKGV4ZWMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgp
LCB2bS5wcm9wZXJ0eU5hbWVzLT51bmljb2RlKTsKKyAgICAKICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8gc3RhdGljR2xvYmFsc1tdID0gewogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+TmFOLCBqc05hTigpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25s
eSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbmZpbml0
eSwganNOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLApAQCAtNTk2LDcgKzYxNCw2IEBAIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXIKICAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VSZWFjdGlvbkpv
YlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgcHJv
bWlzZU9wZXJhdGlvbnNQcm9taXNlUmVhY3Rpb25Kb2JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyks
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByb21pc2VSZXNvbHZlVGhl
bmFibGVKb2JQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24o
dm0sIHByb21pc2VPcGVyYXRpb25zUHJvbWlzZVJlc29sdmVUaGVuYWJsZUpvYkNvZGVHZW5lcmF0
b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uUHJpdmF0ZU5hbWUoKSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hZHZhbmNlU3RyaW5nSW5kZXhV
bmljb2RlUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZt
LCByZWdFeHBQcm90b3R5cGVBZHZhbmNlU3RyaW5nSW5kZXhVbmljb2RlQ29kZUdlbmVyYXRvcih2
bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEds
b2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5NYXBQcml2YXRlTmFtZSwgbWFwQ29u
c3RydWN0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
clJlc3VtZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2
bSwgZ2VuZXJhdG9yUHJvdG90eXBlR2VuZXJhdG9yUmVzdW1lQ29kZUdlbmVyYXRvcih2bSksIHRo
aXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50aGlzVGltZVZhbHVl
UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUaGlzVGltZVZhbHVlLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSksCkBAIC02MDYsNyArNjIzLDI5IEBAIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXIKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLk51bWJlckZvcm1hdFByaXZhdGVOYW1lKCksIGlu
dGwtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+TnVtYmVyRm9ybWF0KSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQogCisg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5pc0NvbnN0cnVjdG9y
UHJpdmF0ZU5hbWUsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGVz
U3BlY0lzQ29uc3RydWN0b3IsIE5vSW50cmluc2ljKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwg
UmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
aXNSZWdFeHBQcml2YXRlTmFtZSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJp
bmcoKSwgZXNTcGVjSXNSZWdFeHAsIE5vSW50cmluc2ljKSwgRG9udEVudW0gfCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuc3BlY2llc0NvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSwgSlNGdW5j
dGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3RTcGVjaWVzQ29uc3Ry
dWN0b3JDb2RlR2VuZXJhdG9yKHZtKSwgdGhpcyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5KSwKKworICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
cmVnRXhwUHJvdG9GbGFnc0dldHRlclByaXZhdGVOYW1lLCByZWdFeHBQcm90b0ZsYWdzR2V0dGVy
T2JqZWN0LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5yZWdFeHBQcm90b0dsb2JhbEdldHRlclBy
aXZhdGVOYW1lLCByZWdFeHBQcm90b0dsb2JhbEdldHRlck9iamVjdCwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVy
dHlOYW1lcy0+cmVnRXhwUHJvdG9JZ25vcmVDYXNlR2V0dGVyUHJpdmF0ZU5hbWUsIHJlZ0V4cFBy
b3RvSWdub3JlQ2FzZUdldHRlck9iamVjdCwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9u
bHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+cmVnRXhw
UHJvdG9NdWx0aWxpbmVHZXR0ZXJQcml2YXRlTmFtZSwgcmVnRXhwUHJvdG9NdWx0aWxpbmVHZXR0
ZXJPYmplY3QsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnJlZ0V4cFByb3RvU291cmNlR2V0dGVy
UHJpdmF0ZU5hbWUsIHJlZ0V4cFByb3RvU291cmNlR2V0dGVyT2JqZWN0LCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5yZWdFeHBQcm90b1N0aWNreUdldHRlclByaXZhdGVOYW1lLCByZWdFeHBQcm90
b1N0aWNreUdldHRlck9iamVjdCwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAor
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+cmVnRXhwUHJvdG9V
bmljb2RlR2V0dGVyUHJpdmF0ZU5hbWUsIHJlZ0V4cFByb3RvVW5pY29kZUdldHRlck9iamVjdCwg
RG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorCisgICAgICAgIC8vIFJlZ0V4cC5w
cm90b3R5cGUgaGVscGVycy4KICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5
TmFtZXMtPnJlZ0V4cENyZWF0ZVByaXZhdGVOYW1lLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRo
aXMsIDIsIFN0cmluZygpLCBlc1NwZWNSZWdFeHBDcmVhdGUsIE5vSW50cmluc2ljKSwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFzT2JzZXJ2YWJsZVNpZGVFZmZlY3Rz
Rm9yUmVnRXhwU3BsaXRQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVu
Y3Rpb24odm0sIHJlZ0V4cFByb3RvdHlwZUhhc09ic2VydmFibGVTaWRlRWZmZWN0c0ZvclJlZ0V4
cFNwbGl0Q29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5hZHZhbmNlU3RyaW5nSW5kZXhQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9u
OjpjcmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIHJlZ0V4cFByb3RvdHlwZUFkdmFuY2VTdHJpbmdJ
bmRleENvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpLAorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkucmVnRXhwRXhlY1ByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1
aWx0aW5GdW5jdGlvbih2bSwgcmVnRXhwUHJvdG90eXBlUmVnRXhwRXhlY0NvZGVHZW5lcmF0b3Io
dm0pLCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAorICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+cmVnRXhwU3BsaXRGYXN0UHJpdmF0
ZU5hbWUsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIHJlZ0V4cFBy
b3RvRnVuY1NwbGl0RmFzdCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKwor
ICAgICAgICAvLyBTdHJpbmcucHJvdG90eXBlIGhlbHBlcnMuCisgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5zdHJpbmdJbmNsdWRlc0ludGVybmFsUHJpdmF0ZU5h
bWUsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGJ1aWx0aW5TdHJp
bmdJbmNsdWRlc0ludGVybmFsKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAor
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+c3RyaW5nU3BsaXRG
YXN0UHJpdmF0ZU5hbWUsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCks
IHN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPnN0cmlu
Z1N1YnN0ckludGVybmFsUHJpdmF0ZU5hbWUsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywg
MiwgU3RyaW5nKCksIGJ1aWx0aW5TdHJpbmdTdWJzdHJJbnRlcm5hbCksIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICB9OwogICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGlj
R2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRv
ci5jcHAJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5RGVzY3JpcHRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNCw3ICsxMTQsNiBAQCBK
U09iamVjdCogUHJvcGVydHlEZXNjcmlwdG9yOjpzZXR0ZXJPYmplCiB2b2lkIFByb3BlcnR5RGVz
Y3JpcHRvcjo6c2V0RGVzY3JpcHRvcihKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQogewogICAgIEFTU0VSVCh2YWx1ZSk7Ci0gICAgQVNTRVJUKHZhbHVlLmlzR2V0dGVyU2V0dGVy
KCkgPT0gISEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAKICAgICBtX2F0dHJpYnV0ZXMgPSBh
dHRyaWJ1dGVzOwogICAgIGlmICh2YWx1ZS5pc0dldHRlclNldHRlcigpKSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMTk5
MzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0y
MDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA3LCAyMDA4LCAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDctMjAwOCwgMjAxMiwgMjAxNiBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC05Myw2ICs5Myw4
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSZWdFeHBPYmplY3Qs
IG1fbGFzdEluZGV4SXNXcml0YWJsZSk7CiAgICAgfQogCisgICAgc3RhdGljIHVuc2lnbmVkIGFk
dmFuY2VTdHJpbmdVbmljb2RlKFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBjdXJy
ZW50SW5kZXgpOworCiBwcm90ZWN0ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVnRXhwT2Jq
ZWN0KFZNJiwgU3RydWN0dXJlKiwgUmVnRXhwKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYpOwpAQCAtMTA0LDcgKzEwNiw2IEBAIHByb3RlY3RlZDoKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHNob3VsZFRocm93KTsKLSAgICB1bnNpZ25lZCBhZHZhbmNlU3RyaW5nVW5pY29k
ZShTdHJpbmcsIHVuc2lnbmVkLCB1bnNpZ25lZCk7CiAKIHByaXZhdGU6CiAgICAgTWF0Y2hSZXN1
bHQgbWF0Y2hJbmxpbmUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5
cGUuY3BwCShyZXZpc2lvbiAxOTkzMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDgsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIlJlZ0V4cENhY2hlLmgiCiAjaW5jbHVkZSAiUmVn
RXhwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKKyNpbmNs
dWRlICJTdHJpbmdPYmplY3QuaCIKICNpbmNsdWRlICJTdHJpbmdSZWN1cnNpb25DaGVja2VyLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODEsNiArODIsNyBAQCB2b2lkIFJlZ0V4cFByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mCiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWF0Y2hQcml2YXRlTmFt
ZSgpLCByZWdFeHBQcm90b0Z1bmNNYXRjaFByaXZhdGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5LCAxKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04odm0ucHJvcGVydHlOYW1lcy0+bWF0Y2hTeW1ib2wsIHJlZ0V4cFByb3RvdHlwZU1hdGNoQ29k
ZUdlbmVyYXRvciwgRG9udEVudW0pOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnNlYXJjaFN5bWJvbCwgcmVnRXhwUHJvdG9GdW5j
U2VhcmNoLCBEb250RW51bSwgMSk7CisgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnNwbGl0U3ltYm9sLCByZWdFeHBQcm90b3R5cGVT
cGxpdENvZGVHZW5lcmF0b3IsIERvbnRFbnVtKTsKIAogICAgIEpTRnVuY3Rpb24qIGV4ZWNGdW5j
dGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCB2bS5wcm9wZXJ0
eU5hbWVzLT5leGVjLnN0cmluZygpLCByZWdFeHBQcm90b0Z1bmNFeGVjLCBSZWdFeHBFeGVjSW50
cmluc2ljKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+ZXhlY1ByaXZhdGVOYW1lLCBleGVjRnVuY3Rpb24sIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KTsKQEAgLTExNSw3ICsxMTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZ0V4cFByb3RvCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8o
KSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiQnVpbHRpbiBSZWdFeHAgZXhlYyBjYW4gb25seSBi
ZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Iik7CiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nT3JOdWxsKGV4ZWMpOwogICAgIGlmICghc3RyaW5nKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDM0LDQg
KzQzNiwxNjcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0ID8ganNOdW1iZXIocmVzdWx0LnN0YXJ0KSA6
IGpzTnVtYmVyKC0xKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgYWR2YW5jZVN0cmlu
Z0luZGV4KFN0cmluZyBzdHIsIHVuc2lnbmVkIHN0clNpemUsIHVuc2lnbmVkIGluZGV4LCBib29s
IGlzVW5pY29kZSkKK3sKKyAgICBpZiAoIWlzVW5pY29kZSkKKyAgICAgICAgcmV0dXJuICsraW5k
ZXg7CisgICAgcmV0dXJuIFJlZ0V4cE9iamVjdDo6YWR2YW5jZVN0cmluZ1VuaWNvZGUoc3RyLCBz
dHJTaXplLCBpbmRleCk7Cit9CisKKy8vIEVTIDIxLjIuNS4xMSBSZWdFeHAucHJvdG90eXBlW0BA
c3BsaXRdKHN0cmluZywgbGltaXQpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4
cFByb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKworICAgIC8vIDEuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIExldCByeCBiZSB0
aGUgdGhpcyB2YWx1ZS4KKyAgICAvLyAyLiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBJZiBUeXBl
KHJ4KSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBSZWdFeHAqIHJlZ2V4cCA9
IGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4cCgpOworCisgICAgLy8gMy4gW2hhbmRs
ZWQgYnkgSlMgYnVpbHRpbl0gTGV0IFMgYmUgPyBUb1N0cmluZyhzdHJpbmcpLgorICAgIFN0cmlu
ZyBpbnB1dCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
KyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgQVNTRVJUKCFpbnB1dC5pc051bGwoKSk7CisKKyAgICAvLyA0
LiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBMZXQgQyBiZSA/IFNwZWNpZXNDb25zdHJ1Y3Rvcihy
eCwgJVJlZ0V4cCUpLgorICAgIC8vIDUuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIExldCBmbGFn
cyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisgICAgLy8gNi4gW2hhbmRsZWQg
YnkgSlMgYnVpbHRpbl0gSWYgZmxhZ3MgY29udGFpbnMgInUiLCBsZXQgdW5pY29kZU1hdGNoaW5n
IGJlIHRydWUuCisgICAgLy8gNy4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gRWxzZSwgbGV0IHVu
aWNvZGVNYXRjaGluZyBiZSBmYWxzZS4KKyAgICAvLyA4LiBbaGFuZGxlZCBieSBKUyBidWlsdGlu
XSBJZiBmbGFncyBjb250YWlucyAieSIsIGxldCBuZXdGbGFncyBiZSBmbGFncy4KKyAgICAvLyA5
LiBbaGFuZGxlZCBieSBKUyBidWlsdGluXSBFbHNlLCBsZXQgbmV3RmxhZ3MgYmUgdGhlIHN0cmlu
ZyB0aGF0IGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIGZsYWdzIGFuZCAieSIuCisgICAgLy8gMTAu
IFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIExldCBzcGxpdHRlciBiZSA/IENvbnN0cnVjdChDLCDC
qyByeCwgbmV3RmxhZ3MgwrspLgorCisgICAgLy8gMTEuIExldCBBIGJlIEFycmF5Q3JlYXRlKDAp
LgorICAgIC8vIDEyLiBMZXQgbGVuZ3RoQSBiZSAwLgorICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNv
bnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CisgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0g
MDsKKworICAgIC8vIDEzLiBJZiBsaW1pdCBpcyB1bmRlZmluZWQsIGxldCBsaW0gYmUgMl4zMi0x
OyBlbHNlIGxldCBsaW0gYmUgPyBUb1VpbnQzMihsaW1pdCkuCisgICAgSlNWYWx1ZSBsaW1pdFZh
bHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgdW5zaWduZWQgbGltaXQgPSBsaW1pdFZhbHVl
LmlzVW5kZWZpbmVkKCkgPyAweEZGRkZGRkZGdSA6IGxpbWl0VmFsdWUudG9VSW50MzIoZXhlYyk7
CisKKyAgICAvLyAxNC4gTGV0IHNpemUgYmUgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBTLgor
ICAgIHVuc2lnbmVkIGlucHV0U2l6ZSA9IGlucHV0Lmxlbmd0aCgpOworCisgICAgLy8gMTUuIExl
dCBwID0gMC4KKyAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IDA7CisKKyAgICAvLyAxNi4gSWYgbGlt
ID09IDAsIHJldHVybiBBLgorICAgIGlmICghbGltaXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKKworICAgIC8vIDE3LiBJZiBzaXplID09IDAsIHRoZW4KKyAgICBp
ZiAoaW5wdXQuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIGEuIExldCB6IGJlID8gUmVnRXhwRXhl
YyhzcGxpdHRlciwgUykuCisgICAgICAgIC8vIGIuIElmIHogaXMgbm90IG51bGwsIHJldHVybiBB
LgorICAgICAgICAvLyBjLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICIwIiwgUyku
CisgICAgICAgIC8vIGQuIFJldHVybiBBLgorICAgICAgICBpZiAoIXJlZ2V4cC0+bWF0Y2godm0s
IGlucHV0LCAwKSkKKyAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwg
anNTdHJpbmdXaXRoUmV1c2UoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgfQorCisgICAgLy8gMTguIExldCBxID0g
cC4KKyAgICB1bnNpZ25lZCBtYXRjaFBvc2l0aW9uID0gcG9zaXRpb247CisgICAgLy8gMTkuIFJl
cGVhdCwgd2hpbGUgcSA8IHNpemUKKyAgICBib29sIHJlZ0V4cElzU3RpY2t5ID0gcmVnZXhwLT5z
dGlja3koKTsKKyAgICBib29sIHJlZ0V4cElzVW5pY29kZSA9IHJlZ2V4cC0+dW5pY29kZSgpOwor
ICAgIHdoaWxlIChtYXRjaFBvc2l0aW9uIDwgaW5wdXRTaXplKSB7CisgICAgICAgIFZlY3Rvcjxp
bnQsIDMyPiBvdmVjdG9yOworCisgICAgICAgIC8vIGEuIFBlcmZvcm0gPyBTZXQoc3BsaXR0ZXIs
ICJsYXN0SW5kZXgiLCBxLCB0cnVlKS4KKyAgICAgICAgLy8gYi4gTGV0IHogYmUgPyBSZWdFeHBF
eGVjKHNwbGl0dGVyLCBTKS4KKyAgICAgICAgaW50IG1wb3MgPSByZWdleHAtPm1hdGNoKHZtLCBp
bnB1dCwgbWF0Y2hQb3NpdGlvbiwgb3ZlY3Rvcik7CisKKyAgICAgICAgLy8gYy4gSWYgeiBpcyBu
dWxsLCBsZXQgcSBiZSBBZHZhbmNlU3RyaW5nSW5kZXgoUywgcSwgdW5pY29kZU1hdGNoaW5nKS4K
KyAgICAgICAgaWYgKG1wb3MgPCAwKSB7CisgICAgICAgICAgICBpZiAoIXJlZ0V4cElzU3RpY2t5
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgbWF0Y2hQb3NpdGlvbiA9IGFk
dmFuY2VTdHJpbmdJbmRleChpbnB1dCwgaW5wdXRTaXplLCBtYXRjaFBvc2l0aW9uLCByZWdFeHBJ
c1VuaWNvZGUpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihtcG9zKSA+PSBpbnB1dFNpemUpIHsKKyAgICAgICAgICAg
IC8vIFRoZSBzcGVjIHJlZG9lcyB0aGUgUmVnRXhwRXhlYyBzdGFydGluZyBhdCB0aGUgbmV4dCBj
aGFyYWN0ZXIgb2YgdGhlIGlucHV0LgorICAgICAgICAgICAgLy8gQnV0IGluIG91ciBjYXNlLCBt
cG9zIDwgMCBtZWFucyB0aGF0IHRoZSBuYXRpdmUgcmVnZXhwIGFscmVhZHkgc2VhcmNoZWQgYWxs
IHBlcm11dGF0aW9ucworICAgICAgICAgICAgLy8gYW5kIGtub3cgdGhhdCB3ZSB3b24ndCBiZSBh
YmxlIHRvIGZpbmQgYSBtYXRjaCBmb3IgdGhlIHNlcGFyYXRvciBldmVuIGlmIHdlIHJlZG8gdGhl
CisgICAgICAgICAgICAvLyBSZWdFeHBFeGVjIHN0YXJ0aW5nIGF0IHRoZSBuZXh0IGNoYXJhY3Rl
ciBvZiB0aGUgaW5wdXQuIFNvLCBqdXN0IGJhaWwuCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIGQuIEVsc2UsIHogaXMgbm90IG51bGwKKyAgICAgICAgLy8gICAg
aS4gTGV0IGUgYmUgPyBUb0xlbmd0aCg/IEdldChzcGxpdHRlciwgImxhc3RJbmRleCIpKS4KKyAg
ICAgICAgLy8gICBpaS4gTGV0IGUgYmUgbWluKGUsIHNpemUpLgorICAgICAgICBtYXRjaFBvc2l0
aW9uID0gbXBvczsKKyAgICAgICAgdW5zaWduZWQgbWF0Y2hFbmQgPSBvdmVjdG9yWzFdOworCisg
ICAgICAgIC8vICBpaWkuIElmIGUgPSBwLCBsZXQgcSBiZSBBZHZhbmNlU3RyaW5nSW5kZXgoUywg
cSwgdW5pY29kZU1hdGNoaW5nKS4KKyAgICAgICAgaWYgKG1hdGNoRW5kID09IHBvc2l0aW9uKSB7
CisgICAgICAgICAgICBtYXRjaFBvc2l0aW9uID0gYWR2YW5jZVN0cmluZ0luZGV4KGlucHV0LCBp
bnB1dFNpemUsIG1hdGNoUG9zaXRpb24sIHJlZ0V4cElzVW5pY29kZSk7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAvLyBpZiBtYXRjaEVuZCA9PSAwIHRoZW4gcG9z
aXRpb24gc2hvdWxkIGFsc28gYmUgemVybyBhbmQgdGh1cyBtYXRjaEVuZCBzaG91bGQgZXF1YWwg
cG9zaXRpb24uCisgICAgICAgIEFTU0VSVChtYXRjaEVuZCk7CisKKyAgICAgICAgLy8gICBpdi4g
RWxzZSBlICE9IHAsCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQ2Fw
dHVyZXMgPSByZWdleHAtPm51bVN1YnBhdHRlcm5zKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBu
ZXdSZXN1bHRMZW5ndGggPSByZXN1bHRMZW5ndGggKyBudW1iZXJPZkNhcHR1cmVzICsgMTsKKyAg
ICAgICAgICAgIGlmIChuZXdSZXN1bHRMZW5ndGggPCBudW1iZXJPZkNhcHR1cmVzIHx8IG5ld1Jl
c3VsdExlbmd0aCA+PSBNQVhfU1RPUkFHRV9WRUNUT1JfSU5ERVgpIHsKKyAgICAgICAgICAgICAg
ICAvLyBMZXQncyBjb25zaWRlciB3aGF0J3MgYmVzdCBmb3IgdXNlcnMgaGVyZS4gV2UncmUgYWJv
dXQgdG8gaW5jcmVhc2UgdGhlIGxlbmd0aCBvZgorICAgICAgICAgICAgICAgIC8vIHRoZSBzcGxp
dCBhcnJheSBiZXlvbmQgdGhlIG1heGltdW0gbGVuZ3RoIHRoYXQgd2UgY2FuIHN1cHBvcnQgZWZm
aWNpZW50bHkuIFRoaXMKKyAgICAgICAgICAgICAgICAvLyB3aWxsIGNhdXNlIHVzIHRvIHVzZSBh
IEhhc2hNYXAgZm9yIHRoZSBuZXcgZW50cmllcyBhZnRlciB0aGlzIHBvaW50LiBUaGF0J3MgZ29p
bmcKKyAgICAgICAgICAgICAgICAvLyB0byByZXN1bHQgaW4gYSB2ZXJ5IGxvbmcgcnVubmluZyB0
aW1lIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHZlcnkgbGFyZ2UgbWVtb3J5CisgICAgICAgICAgICAg
ICAgLy8gdXNhZ2UuIEluIG15IGV4cGVyaW1lbnRzLCBKU0Mgd2lsbCBzaXQgc3Bpbm5pbmcgZm9y
IG1pbnV0ZXMgYWZ0ZXIgZ2V0dGluZyBoZXJlIGFuZAorICAgICAgICAgICAgICAgIC8vIGl0IHdh
cyB1c2luZyA+NEdCIG9mIG1lbW9yeSBhbmQgZXZlbnR1YWxseSBncmV3IHRvIDhHQi4gSXQga2Vw
dCBydW5uaW5nIHdpdGhvdXQKKyAgICAgICAgICAgICAgICAvLyBmaW5pc2hpbmcgdW50aWwgSSBr
aWxsZWQgaXQuIFRoYXQncyBwcm9iYWJseSBub3Qgd2hhdCB0aGUgdXNlciB3YW50ZWQuIFRoZSB1
c2VyLAorICAgICAgICAgICAgICAgIC8vIG9yIHRoZSBwcm9ncmFtIHRoYXQgdGhlIHVzZXIgaXMg
cnVubmluZywgcHJvYmFibHkgbWFkZSBhIG1pc3Rha2UgYnkgY2FsbGluZyB0aGlzCisgICAgICAg
ICAgICAgICAgLy8gbWV0aG9kIGluIHN1Y2ggYSB3YXkgdGhhdCBpdCByZXN1bHRlZCBpbiBzdWNo
IGFuIG9ibm94aW91cyBhcnJheS4gVGhlcmVmb3JlLCB0bworICAgICAgICAgICAgICAgIC8vIHBy
b3RlY3Qgb3Vyc2VsdmVzLCB3ZSBiYWlsIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIDEuIExldCBUIGJlIGEgU3RyaW5nIHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2Yg
UyBjb25zaXN0aW5nIG9mIHRoZSBlbGVtZW50cyBhdCBpbmRpY2VzIHAgKGluY2x1c2l2ZSkgdGhy
b3VnaCBxIChleGNsdXNpdmUpLgorICAgICAgICAgICAgLy8gMi4gUGVyZm9ybSAhIENyZWF0ZURh
dGFQcm9wZXJ0eShBLCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBUKS4KKyAgICAgICAgICAgIHJlc3Vs
dC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoLCBqc1N1YnN0cmluZyhleGVjLCB0
aGlzVmFsdWUsIGlucHV0LCBwb3NpdGlvbiwgbWF0Y2hQb3NpdGlvbiAtIHBvc2l0aW9uKSk7CisK
KyAgICAgICAgICAgIC8vIDMuIExldCBsZW5ndGhBIGJlIGxlbmd0aEEgKyAxLgorICAgICAgICAg
ICAgLy8gNC4gSWYgbGVuZ3RoQSA9IGxpbSwgcmV0dXJuIEEuCisgICAgICAgICAgICBpZiAoKyty
ZXN1bHRMZW5ndGggPT0gbGltaXQpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOworCisgICAgICAgICAgICAvLyA1LiBMZXQgcCBiZSBlLgorICAgICAgICAg
ICAgcG9zaXRpb24gPSBtYXRjaEVuZDsKKworICAgICAgICAgICAgLy8gNi4gTGV0IG51bWJlck9m
Q2FwdHVyZXMgYmUgPyBUb0xlbmd0aCg/IEdldCh6LCAibGVuZ3RoIikpLgorICAgICAgICAgICAg
Ly8gNy4gTGV0IG51bWJlck9mQ2FwdHVyZXMgYmUgbWF4KG51bWJlck9mQ2FwdHVyZXMtMSwgMCku
CisgICAgICAgICAgICAvLyA4LiBMZXQgaSBiZSAxLgorICAgICAgICAgICAgLy8gOS4gUmVwZWF0
LCB3aGlsZSBpIDw9IG51bWJlck9mQ2FwdHVyZXMsCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAxOyBpIDw9IG51bWJlck9mQ2FwdHVyZXM7ICsraSkgeworICAgICAgICAgICAgICAgIC8v
IGEuIExldCBuZXh0Q2FwdHVyZSBiZSA/IEdldCh6LCAhIFRvU3RyaW5nKGkpKS4KKyAgICAgICAg
ICAgICAgICAvLyBiLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEsICEgVG9TdHJpbmco
bGVuZ3RoQSksIG5leHRDYXB0dXJlKS4KKyAgICAgICAgICAgICAgICBpbnQgc3ViID0gb3ZlY3Rv
cltpICogMl07CisgICAgICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCBy
ZXN1bHRMZW5ndGgsIHN1YiA8IDAgPyBqc1VuZGVmaW5lZCgpIDoganNTdWJzdHJpbmcoZXhlYywg
dGhpc1ZhbHVlLCBpbnB1dCwgc3ViLCBvdmVjdG9yW2kgKiAyICsgMV0gLSBzdWIpKTsKKworICAg
ICAgICAgICAgICAgIC8vIGMuIExldCBpIGJlIGkgKyAxLgorICAgICAgICAgICAgICAgIC8vIGQu
IExldCBsZW5ndGhBIGJlIGxlbmd0aEEgKyAxLgorICAgICAgICAgICAgICAgIC8vIGUuIElmIGxl
bmd0aEEgPSBsaW0sIHJldHVybiBBLgorICAgICAgICAgICAgICAgIGlmICgrK3Jlc3VsdExlbmd0
aCA9PSBsaW1pdCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyAxMC4gTGV0IHEgYmUgcC4K
KyAgICAgICAgICAgIG1hdGNoUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIDIwLiBMZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3Ry
aW5nIG9mIFMgY29uc2lzdGluZyBvZiB0aGUgZWxlbWVudHMgYXQgaW5kaWNlcyBwIChpbmNsdXNp
dmUpIHRocm91Z2ggc2l6ZSAoZXhjbHVzaXZlKS4KKyAgICAvLyAyMS4gUGVyZm9ybSAhIENyZWF0
ZURhdGFQcm9wZXJ0eShBLCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBUKS4KKyAgICByZXN1bHQtPnB1
dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0aCsrLCBqc1N1YnN0cmluZyhleGVjLCB0aGlz
VmFsdWUsIGlucHV0LCBwb3NpdGlvbiwgaW5wdXRTaXplIC0gcG9zaXRpb24pKTsKKworICAgIC8v
IDIyLiBSZXR1cm4gQS4KKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHJldmlzaW9uIDE5OTMzOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OCw2ICs1OCw4IEBAIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cD4gbV9lbXB0eVJl
Z0V4cDsKIH07CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5j
U3BsaXRGYXN0KEV4ZWNTdGF0ZSopOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IFJlZ0V4cFByb3RvdHlwZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdPYmplY3QuaAkocmV2aXNpb24gMTk5MzM4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtk
ZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCwgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC04MSw2ICs4MSwy
OSBAQCBpbmxpbmUgU3RyaW5nT2JqZWN0KiBhc1N0cmluZ09iamVjdChKU1ZhCiAKIEpTX0VYUE9S
VF9QUklWQVRFIFN0cmluZ09iamVjdCogY29uc3RydWN0U3RyaW5nKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlKTsKIAorLy8gSGVscGVyIGZvciBwcm9kdWNpbmcgYSBKU1N0cmluZyBmb3Ig
J3N0cmluZycsIHdoZXJlICdzdHJpbmcnIHdhcyBiZWVuIHByb2R1Y2VkIGJ5CisvLyBjYWxsaW5n
IFRvU3RyaW5nIG9uICdvcmlnaW5hbFZhbHVlJy4gSW4gY2FzZXMgd2hlcmUgJ29yaWdpbmFsVmFs
dWUnIGFscmVhZHkgd2FzIGEKKy8vIHN0cmluZyBwcmltaXRpdmUgd2UgY2FuIGp1c3QgdXNlIHRo
aXMsIG90aGVyd2lzZSB3ZSBuZWVkIHRvIGFsbG9jYXRlIGEgbmV3IEpTU3RyaW5nLgorc3RhdGlj
IGlubGluZSBKU1N0cmluZyoganNTdHJpbmdXaXRoUmV1c2UoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIG9yaWdpbmFsVmFsdWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIGlmIChvcmln
aW5hbFZhbHVlLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgQVNTRVJUKGFzU3RyaW5nKG9yaWdpbmFs
VmFsdWUpLT52YWx1ZShleGVjKSA9PSBzdHJpbmcpOworICAgICAgICByZXR1cm4gYXNTdHJpbmco
b3JpZ2luYWxWYWx1ZSk7CisgICAgfQorICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBzdHJpbmcp
OworfQorCisvLyBIZWxwZXIgdGhhdCB0cmllcyB0byB1c2UgdGhlIEpTU3RyaW5nIHN1YnN0cmlu
ZyBzaGFyaW5nIG1lY2hhbmlzbSBpZiAnb3JpZ2luYWxWYWx1ZScgaXMgYSBKU1N0cmluZy4KK3N0
YXRpYyBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBvcmlnaW5hbFZhbHVlLCBjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCit7CisgICAgaWYgKG9yaWdpbmFsVmFsdWUuaXNTdHJpbmcoKSkgewor
ICAgICAgICBBU1NFUlQoYXNTdHJpbmcob3JpZ2luYWxWYWx1ZSktPnZhbHVlKGV4ZWMpID09IHN0
cmluZyk7CisgICAgICAgIHJldHVybiBqc1N1YnN0cmluZyhleGVjLCBhc1N0cmluZyhvcmlnaW5h
bFZhbHVlKSwgb2Zmc2V0LCBsZW5ndGgpOworICAgIH0KKyAgICByZXR1cm4ganNTdWJzdHJpbmco
ZXhlYywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvLyBTdHJpbmdPYmplY3RfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxOTkzMzgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAw
MSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTMsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBN
b2JpbGUsIEluYy4KICAqICBDb3B5cmlnaHQgKEMpIDIwMTUgSm9yZGFuIEhhcmJhbmQgKGxqaGFy
YkBnbWFpbC5jb20pCiAgKgpAQCAtNzAsNyArNzAsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY1BhZFN0YXJ0KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXQoRXhlY1N0YXRlKik7CiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cihFeGVjU3RhdGUq
KTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5n
KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNUb0xvd2VyQ2FzZShFeGVjU3RhdGUqKTsKQEAgLTExMyw2ICsxMTIsNyBAQCBjb25zdCBDbGFz
c0luZm8gU3RyaW5nUHJvdG90eXBlOjpzX2luZm8gCiAgICAgbWF0Y2ggICAgIEpTQnVpbHRpbiAg
ICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgcmVwZWF0ICAgIEpTQnVpbHRpbiAgICBEb250RW51
bXxGdW5jdGlvbiAxCiAgICAgc2VhcmNoICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlv
biAxCisgICAgc3BsaXQgICAgIEpTQnVpbHRpbiAgICBEb250RW51bXxGdW5jdGlvbiAxCiBAZW5k
CiAqLwogCkBAIC0xMzksNyArMTM5LDYgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJgogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJw
YWRTdGFydCIsIHN0cmluZ1Byb3RvRnVuY1BhZFN0YXJ0LCBEb250RW51bSwgMSk7CiAgICAgSlND
X05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJyZXBsYWNlIiwg
c3RyaW5nUHJvdG9GdW5jUmVwbGFjZSwgRG9udEVudW0sIDIsIFN0cmluZ1Byb3RvdHlwZVJlcGxh
Y2VJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KCJzbGljZSIsIHN0cmluZ1Byb3RvRnVuY1NsaWNlLCBEb250RW51bSwgMik7Ci0gICAgSlNDX05B
VElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInNwbGl0Iiwgc3RyaW5nUHJvdG9GdW5j
U3BsaXQsIERvbnRFbnVtLCAyKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTigic3Vic3RyIiwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyLCBEb250RW51bSwgMik7CiAg
ICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInN1YnN0cmluZyIsIHN0
cmluZ1Byb3RvRnVuY1N1YnN0cmluZywgRG9udEVudW0sIDIpOwogICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJ0b0xvd2VyQ2FzZSIsIHN0cmluZ1Byb3RvRnVuY1Rv
TG93ZXJDYXNlLCBEb250RW51bSwgMCk7CkBAIC0xOTUsMjggKzE5NCw2IEBAIGJvb2wgU3RyaW5n
UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0vLyBIZWxw
ZXIgZm9yIHByb2R1Y2luZyBhIEpTU3RyaW5nIGZvciAnc3RyaW5nJywgd2hlcmUgJ3N0cmluZycg
d2FzIGJlZW4gcHJvZHVjZWQgYnkKLS8vIGNhbGxpbmcgVG9TdHJpbmcgb24gJ29yaWdpbmFsVmFs
dWUnLiBJbiBjYXNlcyB3aGVyZSAnb3JpZ2luYWxWYWx1ZScgYWxyZWFkeSB3YXMgYQotLy8gc3Ry
aW5nIHByaW1pdGl2ZSB3ZSBjYW4ganVzdCB1c2UgdGhpcywgb3RoZXJ3aXNlIHdlIG5lZWQgdG8g
YWxsb2NhdGUgYSBuZXcgSlNTdHJpbmcuCi1zdGF0aWMgaW5saW5lIEpTU3RyaW5nKiBqc1N0cmlu
Z1dpdGhSZXVzZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgb3JpZ2luYWxWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgaWYgKG9yaWdpbmFsVmFsdWUuaXNTdHJpbmcoKSkgewot
ICAgICAgICBBU1NFUlQoYXNTdHJpbmcob3JpZ2luYWxWYWx1ZSktPnZhbHVlKGV4ZWMpID09IHN0
cmluZyk7Ci0gICAgICAgIHJldHVybiBhc1N0cmluZyhvcmlnaW5hbFZhbHVlKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHN0cmluZyk7Ci19Ci0KLS8vIEhlbHBlciB0aGF0IHRy
aWVzIHRvIHVzZSB0aGUgSlNTdHJpbmcgc3Vic3RyaW5nIHNoYXJpbmcgbWVjaGFuaXNtIGlmICdv
cmlnaW5hbFZhbHVlJyBpcyBhIEpTU3RyaW5nLgotc3RhdGljIGlubGluZSBKU1N0cmluZyoganNT
dWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG9yaWdpbmFsVmFsdWUsIGNvbnN0IFN0
cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICBp
ZiAob3JpZ2luYWxWYWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIEFTU0VSVChhc1N0cmluZyhv
cmlnaW5hbFZhbHVlKS0+dmFsdWUoZXhlYykgPT0gc3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIGpz
U3Vic3RyaW5nKGV4ZWMsIGFzU3RyaW5nKG9yaWdpbmFsVmFsdWUpLCBvZmZzZXQsIGxlbmd0aCk7
Ci0gICAgfQotICAgIHJldHVybiBqc1N1YnN0cmluZyhleGVjLCBzdHJpbmcsIG9mZnNldCwgbGVu
Z3RoKTsKLX0KLQogc3RhdGljIE5FVkVSX0lOTElORSBTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZl
cmVuY2VzU2xvdyhTdHJpbmdWaWV3IHJlcGxhY2VtZW50LCBTdHJpbmdWaWV3IHNvdXJjZSwgY29u
c3QgaW50KiBvdmVjdG9yLCBSZWdFeHAqIHJlZywgc2l6ZV90IGkpCiB7CiAgICAgU3RyaW5nQnVp
bGRlciBzdWJzdGl0dXRlZFJlcGxhY2VtZW50OwpAQCAtMTE4MSwxNjkgKzExNTgsNTggQEAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgYm9vbCBzcGxpdFN0cmluZ0J5TwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotLy8gRVMgNS4xIC0gMTUuNS40LjE0IFN0cmluZy5wcm90b3R5cGUuc3BsaXQgKHNlcGFy
YXRvciwgbGltaXQpCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y1NwbGl0KEV4ZWNTdGF0ZSogZXhlYykKKy8vIEVTIDIxLjEuMy4xNyBTdHJpbmcucHJvdG90eXBl
LnNwbGl0KHNlcGFyYXRvciwgbGltaXQpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY1NwbGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgLy8gMS4gQ2Fs
bCBDaGVja09iamVjdENvZXJjaWJsZSBwYXNzaW5nIHRoZSB0aGlzIHZhbHVlIGFzIGl0cyBhcmd1
bWVudC4KICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwotICAgIGlm
ICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgQVNTRVJUKGNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNW
YWx1ZSkpOwogCi0gICAgLy8gMi4gTGV0IFMgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvU3Ry
aW5nLCBnaXZpbmcgaXQgdGhlIHRoaXMgdmFsdWUgYXMgaXRzIGFyZ3VtZW50LgotICAgIC8vIDYu
IExldCBzIGJlIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBTLgorICAgIC8vIDMuIExldCBT
IGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb1N0cmluZywgZ2l2aW5nIGl0IHRoZSB0aGlzIHZh
bHVlIGFzIGl0cyBhcmd1bWVudC4KKyAgICAvLyA3LiBMZXQgcyBiZSB0aGUgbnVtYmVyIG9mIGNo
YXJhY3RlcnMgaW4gUy4KICAgICBTdHJpbmcgaW5wdXQgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBBU1NFUlQoIWlucHV0
LmlzTnVsbCgpKTsKIAotICAgIC8vIDMuIExldCBBIGJlIGEgbmV3IGFycmF5IGNyZWF0ZWQgYXMg
aWYgYnkgdGhlIGV4cHJlc3Npb24gbmV3IEFycmF5KCkKKyAgICAvLyA0LiBMZXQgQSBiZSBhIG5l
dyBhcnJheSBjcmVhdGVkIGFzIGlmIGJ5IHRoZSBleHByZXNzaW9uIG5ldyBBcnJheSgpCiAgICAg
Ly8gICAgd2hlcmUgQXJyYXkgaXMgdGhlIHN0YW5kYXJkIGJ1aWx0LWluIGNvbnN0cnVjdG9yIHdp
dGggdGhhdCBuYW1lLgogICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXko
ZXhlYywgMCk7CiAKLSAgICAvLyA0LiBMZXQgbGVuZ3RoQSBiZSAwLgorICAgIC8vIDUuIExldCBs
ZW5ndGhBIGJlIDAuCiAgICAgdW5zaWduZWQgcmVzdWx0TGVuZ3RoID0gMDsKIAotICAgIC8vIDUu
IElmIGxpbWl0IGlzIHVuZGVmaW5lZCwgbGV0IGxpbSA9IDJeMzItMTsgZWxzZSBsZXQgbGltID0g
VG9VaW50MzIobGltaXQpLgotICAgIEpTVmFsdWUgbGltaXRWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50
KDEpOworICAgIC8vIDYuIElmIGxpbWl0IGlzIHVuZGVmaW5lZCwgbGV0IGxpbSA9IDJeMzItMTsg
ZWxzZSBsZXQgbGltID0gVG9VaW50MzIobGltaXQpLgorICAgIEpTVmFsdWUgbGltaXRWYWx1ZSA9
IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIHVuc2lnbmVkIGxpbWl0ID0gbGltaXRW
YWx1ZS5pc1VuZGVmaW5lZCgpID8gMHhGRkZGRkZGRnUgOiBsaW1pdFZhbHVlLnRvVUludDMyKGV4
ZWMpOwogCi0gICAgLy8gNy4gTGV0IHAgPSAwLgorICAgIC8vIDguIExldCBwID0gMC4KICAgICBz
aXplX3QgcG9zaXRpb24gPSAwOwogCi0gICAgLy8gOC4gSWYgc2VwYXJhdG9yIGlzIGEgUmVnRXhw
IG9iamVjdCAoaXRzIFtbQ2xhc3NdXSBpcyAiUmVnRXhwIiksIGxldCBSID0gc2VwYXJhdG9yOwor
ICAgIC8vIDkuIElmIHNlcGFyYXRvciBpcyBhIFJlZ0V4cCBvYmplY3QgKGl0cyBbW0NsYXNzXV0g
aXMgIlJlZ0V4cCIpLCBsZXQgUiA9IHNlcGFyYXRvcjsKICAgICAvLyAgICBvdGhlcndpc2UgbGV0
IFIgPSBUb1N0cmluZyhzZXBhcmF0b3IpLgotICAgIEpTVmFsdWUgc2VwYXJhdG9yVmFsdWUgPSBl
eGVjLT5hcmd1bWVudCgwKTsKLSAgICBpZiAoc2VwYXJhdG9yVmFsdWUuaW5oZXJpdHMoUmVnRXhw
T2JqZWN0OjppbmZvKCkpKSB7Ci0gICAgICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgICAg
ICBSZWdFeHAqIHJlZyA9IGFzUmVnRXhwT2JqZWN0KHNlcGFyYXRvclZhbHVlKS0+cmVnRXhwKCk7
Ci0KLSAgICAgICAgLy8gOS4gSWYgbGltID09IDAsIHJldHVybiBBLgotICAgICAgICBpZiAoIWxp
bWl0KQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotCi0gICAg
ICAgIC8vIDEwLiBJZiBzZXBhcmF0b3IgaXMgdW5kZWZpbmVkLCB0aGVuCi0gICAgICAgIGlmIChz
ZXBhcmF0b3JWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICAvLyBhLiBDYWxsIHRo
ZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVu
dHMgIjAiLAotICAgICAgICAgICAgLy8gICAgUHJvcGVydHkgRGVzY3JpcHRvciB7W1tWYWx1ZV1d
OiBTLCBbW1dyaXRhYmxlXV06IHRydWUsIFtbRW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3Vy
YWJsZV1dOiB0cnVlfSwgYW5kIGZhbHNlLgotICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJ
bmRleChleGVjLCAwLCBqc1N0cmluZ1dpdGhSZXVzZShleGVjLCB0aGlzVmFsdWUsIGlucHV0KSk7
Ci0gICAgICAgICAgICAvLyBiLiBSZXR1cm4gQS4KLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIDExLiBJZiBzID09IDAs
IHRoZW4KLSAgICAgICAgaWYgKGlucHV0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gYS4g
Q2FsbCBTcGxpdE1hdGNoKFMsIDAsIFIpIGFuZCBsZXQgeiBiZSBpdHMgTWF0Y2hSZXN1bHQgcmVz
dWx0LgotICAgICAgICAgICAgLy8gYi4gSWYgeiBpcyBub3QgZmFpbHVyZSwgcmV0dXJuIEEuCi0g
ICAgICAgICAgICAvLyBjLiBDYWxsIHRoZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwg
bWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVudHMgIjAiLAotICAgICAgICAgICAgLy8gICAgUHJvcGVy
dHkgRGVzY3JpcHRvciB7W1tWYWx1ZV1dOiBTLCBbW1dyaXRhYmxlXV06IHRydWUsIFtbRW51bWVy
YWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlfSwgYW5kIGZhbHNlLgotICAgICAg
ICAgICAgLy8gZC4gUmV0dXJuIEEuCi0gICAgICAgICAgICBpZiAoIXJlZy0+bWF0Y2goKnZtLCBp
bnB1dCwgMCkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChleGVjLCAw
LCBqc1N0cmluZ1dpdGhSZXVzZShleGVjLCB0aGlzVmFsdWUsIGlucHV0KSk7Ci0gICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0gICAgICAgIH0KLQotICAgICAgICAv
LyAxMi4gTGV0IHEgPSBwLgotICAgICAgICBzaXplX3QgbWF0Y2hQb3NpdGlvbiA9IDA7Ci0gICAg
ICAgIC8vIDEzLiBSZXBlYXQsIHdoaWxlIHEgIT0gcwotICAgICAgICB3aGlsZSAobWF0Y2hQb3Np
dGlvbiA8IGlucHV0Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAvLyBhLiBDYWxsIFNwbGl0TWF0
Y2goUywgcSwgUikgYW5kIGxldCB6IGJlIGl0cyBNYXRjaFJlc3VsdCByZXN1bHQuCi0gICAgICAg
ICAgICBWZWN0b3I8aW50LCAzMj4gb3ZlY3RvcjsKLSAgICAgICAgICAgIGludCBtcG9zID0gcmVn
LT5tYXRjaCgqdm0sIGlucHV0LCBtYXRjaFBvc2l0aW9uLCBvdmVjdG9yKTsKLQotICAgICAgICAg
ICAgLy8gYi4gSWYgeiBpcyBhIGZhaWx1cmUgdGhlbiB3ZSBjYW4gYnJlYWsgYmVjYXVzZSB0aGVy
ZSBhcmUgbm8gbWF0Y2hlcwotICAgICAgICAgICAgaWYgKG1wb3MgPCAwKQotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgbWF0Y2hQb3NpdGlvbiA9IG1wb3M7Ci0KLSAgICAgICAg
ICAgIC8vIGlmIHRoZSBtYXRjaCBpcyB0aGUgZW1wdHkgbWF0Y2ggYXQgdGhlIGVuZCwgYnJlYWsu
Ci0gICAgICAgICAgICBpZiAobWF0Y2hQb3NpdGlvbiA+PSBpbnB1dC5sZW5ndGgoKSkKLSAgICAg
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgLy8gYy4gRWxzZSwgeiBpcyBub3QgZmFp
bHVyZQotICAgICAgICAgICAgLy8gaS4geiBtdXN0IGJlIGEgU3RhdGUuIExldCBlIGJlIHoncyBl
bmRJbmRleCBhbmQgbGV0IGNhcCBiZSB6J3MgY2FwdHVyZXMgYXJyYXkuCi0gICAgICAgICAgICBz
aXplX3QgbWF0Y2hFbmQgPSBvdmVjdG9yWzFdOwotCi0gICAgICAgICAgICAvLyBpaS4gSWYgZSA9
PSBwLCB0aGVuIGxldCBxID0gcSArIDEuCi0gICAgICAgICAgICBpZiAobWF0Y2hFbmQgPT0gcG9z
aXRpb24pIHsKLSAgICAgICAgICAgICAgICArK21hdGNoUG9zaXRpb247Ci0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBpaWkuIGlmIG1hdGNo
RW5kID09IDAgdGhlbiBwb3NpdGlvbiBzaG91bGQgYWxzbyBiZSB6ZXJvIGFuZCB0aHVzIG1hdGNo
RW5kIHNob3VsZCBlcXVhbCBwb3NpdGlvbi4KLSAgICAgICAgICAgIEFTU0VSVChtYXRjaEVuZCk7
Ci0KLSAgICAgICAgICAgIC8vIGlpaS4gRWxzZSwgZSAhPSBwCi0KLSAgICAgICAgICAgIC8vIDEu
IExldCBUIGJlIGEgU3RyaW5nIHZhbHVlIGVxdWFsIHRvIHRoZSBzdWJzdHJpbmcgb2YgUyBjb25z
aXN0aW5nIG9mIHRoZSBjaGFyYWN0ZXJzIGF0IHBvc2l0aW9ucyBwIChpbmNsdXNpdmUpCi0gICAg
ICAgICAgICAvLyAgICB0aHJvdWdoIHEgKGV4Y2x1c2l2ZSkuCi0gICAgICAgICAgICAvLyAyLiBD
YWxsIHRoZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBh
cmd1bWVudHMgVG9TdHJpbmcobGVuZ3RoQSksCi0gICAgICAgICAgICAvLyAgICBQcm9wZXJ0eSBE
ZXNjcmlwdG9yIHtbW1ZhbHVlXV06IFQsIFtbV3JpdGFibGVdXTogdHJ1ZSwgW1tFbnVtZXJhYmxl
XV06IHRydWUsIFtbQ29uZmlndXJhYmxlXV06IHRydWV9LCBhbmQgZmFsc2UuCi0gICAgICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIHJlc3VsdExlbmd0aCwganNTdWJzdHJpbmco
ZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgcG9zaXRpb24sIG1hdGNoUG9zaXRpb24gLSBwb3NpdGlv
bikpOwotCi0gICAgICAgICAgICAvLyAzLiBJbmNyZW1lbnQgbGVuZ3RoQSBieSAxLgotICAgICAg
ICAgICAgLy8gNC4gSWYgbGVuZ3RoQSA9PSBsaW0sIHJldHVybiBBLgotICAgICAgICAgICAgKyty
ZXN1bHRMZW5ndGg7Ci0gICAgICAgICAgICBpZiAocmVzdWx0TGVuZ3RoID09IGxpbWl0KQotICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKLSAgICAgICAgICAg
IGlmIChyZXN1bHRMZW5ndGggPj0gTUFYX1NUT1JBR0VfVkVDVE9SX0lOREVYKSB7Ci0gICAgICAg
ICAgICAgICAgLy8gTGV0J3MgY29uc2lkZXIgd2hhdCdzIGJlc3QgZm9yIHVzZXJzIGhlcmUuIFdl
J3JlIGFib3V0IHRvIGluY3JlYXNlIHRoZSBsZW5ndGggb2YKLSAgICAgICAgICAgICAgICAvLyB0
aGUgc3BsaXQgYXJyYXkgYmV5b25kIHRoZSBtYXhpbXVtIGxlbmd0aCB0aGF0IHdlIGNhbiBzdXBw
b3J0IGVmZmljaWVudGx5LiBUaGlzCi0gICAgICAgICAgICAgICAgLy8gd2lsbCBjYXVzZSB1cyB0
byB1c2UgYSBIYXNoTWFwIGZvciB0aGUgbmV3IGVudHJpZXMgYWZ0ZXIgdGhpcyBwb2ludC4gVGhh
dCdzIGdvaW5nCi0gICAgICAgICAgICAgICAgLy8gdG8gcmVzdWx0IGluIGEgdmVyeSBsb25nIHJ1
bm5pbmcgdGltZSBvZiB0aGlzIGZ1bmN0aW9uIGFuZCB2ZXJ5IGxhcmdlIG1lbW9yeQotICAgICAg
ICAgICAgICAgIC8vIHVzYWdlLiBJbiBteSBleHBlcmltZW50cywgSlNDIHdpbGwgc2l0IHNwaW5u
aW5nIGZvciBtaW51dGVzIGFmdGVyIGdldHRpbmcgaGVyZSBhbmQKLSAgICAgICAgICAgICAgICAv
LyBpdCB3YXMgdXNpbmcgPjRHQiBvZiBtZW1vcnkgYW5kIGV2ZW50dWFsbHkgZ3JldyB0byA4R0Iu
IEl0IGtlcHQgcnVubmluZyB3aXRob3V0Ci0gICAgICAgICAgICAgICAgLy8gZmluaXNoaW5nIHVu
dGlsIEkga2lsbGVkIGl0LiBUaGF0J3MgcHJvYmFibHkgbm90IHdoYXQgdGhlIHVzZXIgd2FudGVk
LiBUaGUgdXNlciwKLSAgICAgICAgICAgICAgICAvLyBvciB0aGUgcHJvZ3JhbSB0aGF0IHRoZSB1
c2VyIGlzIHJ1bm5pbmcsIHByb2JhYmx5IG1hZGUgYSBtaXN0YWtlIGJ5IGNhbGxpbmcgdGhpcwot
ICAgICAgICAgICAgICAgIC8vIG1ldGhvZCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQgcmVzdWx0ZWQg
aW4gc3VjaCBhbiBvYm5veGlvdXMgYXJyYXkuIFRoZXJlZm9yZSwgdG8KLSAgICAgICAgICAgICAg
ICAvLyBwcm90ZWN0IG91cnNlbHZlcywgd2UgYmFpbCBhdCB0aGlzIHBvaW50LgotICAgICAgICAg
ICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAvLyA1LiBMZXQgcCA9IGUuCi0gICAgICAgICAgICAvLyA4LiBMZXQgcSA9IHAuCi0g
ICAgICAgICAgICBwb3NpdGlvbiA9IG1hdGNoRW5kOwotICAgICAgICAgICAgbWF0Y2hQb3NpdGlv
biA9IG1hdGNoRW5kOwotCi0gICAgICAgICAgICAvLyA2LiBMZXQgaSA9IDAuCi0gICAgICAgICAg
ICAvLyA3LiBSZXBlYXQsIHdoaWxlIGkgaXMgbm90IGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZWxl
bWVudHMgaW4gY2FwLgotICAgICAgICAgICAgLy8gIGEgTGV0IGkgPSBpICsgMS4KLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gcmVnLT5udW1TdWJwYXR0ZXJucygpOyArK2kp
IHsKLSAgICAgICAgICAgICAgICAvLyBiIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBp
bnRlcm5hbCBtZXRob2Qgb2YgQSB3aXRoIGFyZ3VtZW50cwotICAgICAgICAgICAgICAgIC8vICAg
VG9TdHJpbmcobGVuZ3RoQSksIFByb3BlcnR5IERlc2NyaXB0b3Ige1tbVmFsdWVdXTogY2FwW2ld
LCBbW1dyaXRhYmxlXV06Ci0gICAgICAgICAgICAgICAgLy8gICB0cnVlLCBbW0VudW1lcmFibGVd
XTogdHJ1ZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZX0sIGFuZCBmYWxzZS4KLSAgICAgICAgICAg
ICAgICBpbnQgc3ViID0gb3ZlY3RvcltpICogMl07Ci0gICAgICAgICAgICAgICAgcmVzdWx0LT5w
dXREaXJlY3RJbmRleChleGVjLCByZXN1bHRMZW5ndGgsIHN1YiA8IDAgPyBqc1VuZGVmaW5lZCgp
IDoganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgc3ViLCBvdmVjdG9yW2kgKiAy
ICsgMV0gLSBzdWIpKTsKLSAgICAgICAgICAgICAgICAvLyBjIEluY3JlbWVudCBsZW5ndGhBIGJ5
IDEuCi0gICAgICAgICAgICAgICAgLy8gZCBJZiBsZW5ndGhBID09IGxpbSwgcmV0dXJuIEEuCi0g
ICAgICAgICAgICAgICAgaWYgKCsrcmVzdWx0TGVuZ3RoID09IGxpbWl0KQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9IGVsc2UgeworICAgIEpTVmFsdWUgc2VwYXJhdG9yVmFsdWUgPSBleGVj
LT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICB7IC8vIEZJWE1FOiBLZWVwaW5nIHRoaXMgaW5k
ZW50YXRpb24gaGVyZSB0byBtaW5pbWl6ZSB0aGUgZGlmZi4gV2lsbCB1bmluZGVudCBhbmQgcmVt
b3ZlIHRoaXMgbGF0ZXIuCiAgICAgICAgIFN0cmluZyBzZXBhcmF0b3IgPSBzZXBhcmF0b3JWYWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAKLSAgICAgICAgLy8gOS4gSWYgbGltID09IDAsIHJldHVybiBBLgorICAgICAgICAvLyAx
MC4gSWYgbGltID09IDAsIHJldHVybiBBLgogICAgICAgICBpZiAoIWxpbWl0KQogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogCi0gICAgICAgIC8vIDEwLiBJZiBz
ZXBhcmF0b3IgaXMgdW5kZWZpbmVkLCB0aGVuCi0gICAgICAgIEpTVmFsdWUgc2VwYXJhdG9yVmFs
dWUgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICAgICAgLy8gMTEuIElmIHNlcGFyYXRvciBpcyB1
bmRlZmluZWQsIHRoZW4KICAgICAgICAgaWYgKHNlcGFyYXRvclZhbHVlLmlzVW5kZWZpbmVkKCkp
IHsKICAgICAgICAgICAgIC8vIGEuICBDYWxsIHRoZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50
ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVudHMgIjAiLAotICAgICAgICAgICAgLy8gICAg
IFByb3BlcnR5IERlc2NyaXB0b3Ige1tbVmFsdWVdXTogUywgW1tXcml0YWJsZV1dOiB0cnVlLCBb
W0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZX0sIGFuZCBmYWxzZS4K
ICAgICAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgMCwganNTdHJpbmdXaXRo
UmV1c2UoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCkpOwogICAgICAgICAgICAgLy8gYi4gIFJldHVy
biBBLgogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgICAg
ICB9CiAKLSAgICAgICAgLy8gMTEuIElmIHMgPT0gMCwgdGhlbgorICAgICAgICAvLyAxMi4gSWYg
cyA9PSAwLCB0aGVuCiAgICAgICAgIGlmIChpbnB1dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
IC8vIGEuIENhbGwgU3BsaXRNYXRjaChTLCAwLCBSKSBhbmQgbGV0IHogYmUgaXRzIE1hdGNoUmVz
dWx0IHJlc3VsdC4KLSAgICAgICAgICAgIC8vIGIuIElmIHogaXMgbm90IGZhaWx1cmUsIHJldHVy
biBBLgotICAgICAgICAgICAgLy8gYy4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGlu
dGVybmFsIG1ldGhvZCBvZiBBIHdpdGggYXJndW1lbnRzICIwIiwKLSAgICAgICAgICAgIC8vICAg
IFByb3BlcnR5IERlc2NyaXB0b3Ige1tbVmFsdWVdXTogUywgW1tXcml0YWJsZV1dOiB0cnVlLCBb
W0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVdXTogdHJ1ZX0sIGFuZCBmYWxzZS4K
KyAgICAgICAgICAgIC8vIGEuIExldCB6IGJlIFNwbGl0TWF0Y2goUywgMCwgUikgd2hlcmUgUyBp
cyBpbnB1dCwgUiBpcyBzZXBhcmF0b3IuCisgICAgICAgICAgICAvLyBiLiBJZiB6IGlzIG5vdCBm
YWxzZSwgcmV0dXJuIEEuCisgICAgICAgICAgICAvLyBjLiBDYWxsIENyZWF0ZURhdGFQcm9wZXJ0
eShBLCAiMCIsIFMpLgogICAgICAgICAgICAgLy8gZC4gUmV0dXJuIEEuCiAgICAgICAgICAgICBp
ZiAoIXNlcGFyYXRvci5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3RJbmRleChleGVjLCAwLCBqc1N0cmluZ1dpdGhSZXVzZShleGVjLCB0aGlzVmFsdWUsIGlucHV0
KSk7CkBAIC0xMzg2LDE3ICsxMjUyLDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG8KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8g
MTIuIExldCBxID0gcC4KKyAgICAgICAgICAgIC8vIDEzLiBMZXQgcSA9IHAuCiAgICAgICAgICAg
ICBzaXplX3QgbWF0Y2hQb3NpdGlvbjsKLSAgICAgICAgICAgIC8vIDEzLiBSZXBlYXQsIHdoaWxl
IHEgIT0gcwotICAgICAgICAgICAgLy8gICBhLiBDYWxsIFNwbGl0TWF0Y2goUywgcSwgUikgYW5k
IGxldCB6IGJlIGl0cyBNYXRjaFJlc3VsdCByZXN1bHQuCi0gICAgICAgICAgICAvLyAgIGIuIElm
IHogaXMgZmFpbHVyZSwgdGhlbiBsZXQgcSA9IHErMS4KLSAgICAgICAgICAgIC8vICAgYy4gRWxz
ZSwgeiBpcyBub3QgZmFpbHVyZQorICAgICAgICAgICAgLy8gMTQuIFJlcGVhdCwgd2hpbGUgcSAh
PSBzCisgICAgICAgICAgICAvLyAgIGEuIGxldCBlIGJlIFNwbGl0TWF0Y2goUywgcSwgUikuCisg
ICAgICAgICAgICAvLyAgIGIuIElmIGUgaXMgZmFpbHVyZSwgdGhlbiBsZXQgcSA9IHErMS4KKyAg
ICAgICAgICAgIC8vICAgYy4gRWxzZSwgZSBpcyBhbiBpbnRlZ2VyIGluZGV4IDw9IHMuCiAgICAg
ICAgICAgICB3aGlsZSAoKG1hdGNoUG9zaXRpb24gPSBzdHJpbmdJbXBsLT5maW5kKHNlcGFyYXRv
ckltcGwsIHBvc2l0aW9uKSkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgICAgICAvLyAxLiBM
ZXQgVCBiZSBhIFN0cmluZyB2YWx1ZSBlcXVhbCB0byB0aGUgc3Vic3RyaW5nIG9mIFMgY29uc2lz
dGluZyBvZiB0aGUgY2hhcmFjdGVycyBhdCBwb3NpdGlvbnMgcCAoaW5jbHVzaXZlKQogICAgICAg
ICAgICAgICAgIC8vICAgIHRocm91Z2ggcSAoZXhjbHVzaXZlKS4KLSAgICAgICAgICAgICAgICAv
LyAyLiBDYWxsIHRoZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEg
d2l0aCBhcmd1bWVudHMgVG9TdHJpbmcobGVuZ3RoQSksCi0gICAgICAgICAgICAgICAgLy8gICAg
UHJvcGVydHkgRGVzY3JpcHRvciB7W1tWYWx1ZV1dOiBULCBbW1dyaXRhYmxlXV06IHRydWUsIFtb
RW51bWVyYWJsZV1dOiB0cnVlLCBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlfSwgYW5kIGZhbHNlLgor
ICAgICAgICAgICAgICAgIC8vIDIuIENhbGwgQ3JlYXRlRGF0YVByb3BlcnR5KEEsIFRvU3RyaW5n
KGxlbmd0aEEpLCBUKS4KICAgICAgICAgICAgICAgICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4
ZWMsIHJlc3VsdExlbmd0aCwganNTdWJzdHJpbmcoZXhlYywgdGhpc1ZhbHVlLCBpbnB1dCwgcG9z
aXRpb24sIG1hdGNoUG9zaXRpb24gLSBwb3NpdGlvbikpOwogICAgICAgICAgICAgICAgIC8vIDMu
IEluY3JlbWVudCBsZW5ndGhBIGJ5IDEuCiAgICAgICAgICAgICAgICAgLy8gNC4gSWYgbGVuZ3Ro
QSA9PSBsaW0sIHJldHVybiBBLgpAQCAtMTQwNCwxOSArMTI2OSwxOCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIAogICAgICAgICAgICAgICAgIC8vIDUuIExldCBwID0g
ZS4KLSAgICAgICAgICAgICAgICAvLyA4LiBMZXQgcSA9IHAuCisgICAgICAgICAgICAgICAgLy8g
Ni4gTGV0IHEgPSBwLgogICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gbWF0Y2hQb3NpdGlvbiAr
IHNlcGFyYXRvci5sZW5ndGgoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KKyAg
ICB9IC8vIEZJWE1FOiBLZWVwaW5nIHRoaXMgaW5kZW50YXRpb24gaGVyZSB0byBtaW5pbWl6ZSB0
aGUgZGlmZi4gV2lsbCB1bmluZGVudCBhbmQgcmVtb3ZlIHRoaXMgbGF0ZXIuCiAKLSAgICAvLyAx
NC4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNv
bnNpc3Rpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYXQgcG9zaXRpb25zIHAgKGluY2x1c2l2ZSkKKyAg
ICAvLyAxNS4gTGV0IFQgYmUgYSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBv
ZiBTIGNvbnNpc3Rpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYXQgcG9zaXRpb25zIHAgKGluY2x1c2l2
ZSkKICAgICAvLyAgICAgdGhyb3VnaCBzIChleGNsdXNpdmUpLgotICAgIC8vIDE1LiBDYWxsIHRo
ZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIEEgd2l0aCBhcmd1bWVu
dHMgVG9TdHJpbmcobGVuZ3RoQSksIFByb3BlcnR5IERlc2NyaXB0b3IKLSAgICAvLyAgICAge1tb
VmFsdWVdXTogVCwgW1tXcml0YWJsZV1dOiB0cnVlLCBbW0VudW1lcmFibGVdXTogdHJ1ZSwgW1tD
b25maWd1cmFibGVdXTogdHJ1ZX0sIGFuZCBmYWxzZS4KKyAgICAvLyAxNi4gQ2FsbCBDcmVhdGVE
YXRhUHJvcGVydHkoQSwgVG9TdHJpbmcobGVuZ3RoQSksIFQpLgogICAgIHJlc3VsdC0+cHV0RGly
ZWN0SW5kZXgoZXhlYywgcmVzdWx0TGVuZ3RoKyssIGpzU3Vic3RyaW5nKGV4ZWMsIHRoaXNWYWx1
ZSwgaW5wdXQsIHBvc2l0aW9uLCBpbnB1dC5sZW5ndGgoKSAtIHBvc2l0aW9uKSk7CiAKLSAgICAv
LyAxNi4gUmV0dXJuIEEuCisgICAgLy8gMTcuIFJldHVybiBBLgogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KIApAQCAtMTQ1OSw2ICsxMzIzLDIzIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzU3Vic3RyaW5nKGV4ZWMsIHVTdHJpbmcsIHN1YnN0cmluZ1N0YXJ0LCBzdWJzdHJpbmdMZW5n
dGgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nU3Vi
c3RySW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIEBzdWJzdHJJbnRlcm5hbCBz
aG91bGQgbm90IGhhdmUgYW55IG9ic2VydmFibGUgc2lkZSBlZmZlY3RzIChlLmcuIGl0IHNob3Vs
ZCBub3QgY2FsbAorICAgIC8vIEdldE1ldGhvZCguLi4sIEBAdG9QcmltaXRpdmUpIG9uIHRoZSB0
aGlzVmFsdWUpLgorCisgICAgLy8gSXQgaXMgb2sgdG8gdXNlIHRoZSBkZWZhdWx0IHN0cmluZ1By
b3RvRnVuY1N1YnN0ciBhcyB0aGUgaW1wbGVtZW50YXRpb24gb2YKKyAgICAvLyBAc3Vic3RySW50
ZXJuYWwgYmVjYXVzZSBAc3Vic3RySW50ZXJuYWwgd2lsbCBvbmx5IGJlIGNhbGxlZCBieSBidWls
dGlucywgd2hpY2ggd2lsbAorICAgIC8vIGd1YXJhbnRlZSB0aGF0IHdlIG9ubHkgcGFzcyBpdCBh
IHN0cmluZyB0aGlzVmFsdWUuIEFzIGEgcmVzdWx0LCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIKKyAg
ICAvLyB3aWxsIG5vdCBuZWVkIHRvIGNhbGwgdG9TdHJpbmcoKSBvbiB0aGUgdGhpc1ZhbHVlLCBh
bmQgdGhlcmUgd2lsbCBiZSBubyBvYnNlcnZhYmxlCisgICAgLy8gc2lkZS1lZmZlY3RzLgorI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOworICAgIEFTU0VSVCh0aGlzVmFsdWUuaXNTdHJpbmcoKSk7CisjZW5kaWYKKyAgICByZXR1
cm4gc3RyaW5nUHJvdG9GdW5jU3Vic3RyKGV4ZWMpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKQEAgLTE5OTUsNiArMTg3
NiwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oc3RyaW5nVG9TZWFyY2hJbi5oYXNJbmZpeEVu
ZGluZ0F0KHNlYXJjaFN0cmluZywgc3RkOjptaW4oZW5kLCBsZW5ndGgpKSkpOwogfQogCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdJbmNsdWRlc0ltcGwoVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMsIFN0cmluZyBzdHJpbmdUb1NlYXJjaEluLCBTdHJpbmcgc2VhcmNo
U3RyaW5nLCBKU1ZhbHVlIHBvc2l0aW9uQXJnKQoreworICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsK
KyAgICBpZiAocG9zaXRpb25BcmcuaXNJbnQzMigpKQorICAgICAgICBzdGFydCA9IHN0ZDo6bWF4
KDAsIHBvc2l0aW9uQXJnLmFzSW50MzIoKSk7CisgICAgZWxzZSB7CisgICAgICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHN0cmluZ1RvU2VhcmNoSW4ubGVuZ3RoKCk7CisgICAgICAgIHN0YXJ0ID0gY2xh
bXBBbmRUcnVuY2F0ZVRvVW5zaWduZWQocG9zaXRpb25BcmcudG9JbnRlZ2VyKGV4ZWMpLCAwLCBs
ZW5ndGgpOworICAgICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKHN0cmluZ1RvU2VhcmNoSW4uY29udGFpbnMoc2VhcmNoU3Ry
aW5nLCB0cnVlLCBzdGFydCkpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKQEAgLTIwMTgsMTcgKzE5MTQsMjggQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgSlNWYWx1ZSBwb3NpdGlvbkFyZyA9
IGV4ZWMtPmFyZ3VtZW50KDEpOwotICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKLSAgICBpZiAocG9z
aXRpb25BcmcuaXNJbnQzMigpKQotICAgICAgICBzdGFydCA9IHN0ZDo6bWF4KDAsIHBvc2l0aW9u
QXJnLmFzSW50MzIoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0
cmluZ1RvU2VhcmNoSW4ubGVuZ3RoKCk7Ci0gICAgICAgIHN0YXJ0ID0gY2xhbXBBbmRUcnVuY2F0
ZVRvVW5zaWduZWQocG9zaXRpb25BcmcudG9JbnRlZ2VyKGV4ZWMpLCAwLCBsZW5ndGgpOwotICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIH0KIAotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKHN0cmluZ1RvU2VhcmNoSW4uY29udGFpbnMoc2VhcmNoU3RyaW5nLCB0
cnVlLCBzdGFydCkpKTsKKyAgICByZXR1cm4gc3RyaW5nSW5jbHVkZXNJbXBsKHZtLCBleGVjLCBz
dHJpbmdUb1NlYXJjaEluLCBzZWFyY2hTdHJpbmcsIHBvc2l0aW9uQXJnKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbChFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKKyAgICBBU1NFUlQoY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSk7CisKKyAgICBT
dHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgU3RyaW5n
IHNlYXJjaFN0cmluZyA9IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisKKyAgICBKU1ZhbHVlIHBvc2l0aW9uQXJnID0gZXhlYy0+YXJndW1lbnQo
MSk7CisKKyAgICByZXR1cm4gc3RyaW5nSW5jbHVkZXNJbXBsKHZtLCBleGVjLCBzdHJpbmdUb1Nl
YXJjaEluLCBzZWFyY2hTdHJpbmcsIHBvc2l0aW9uQXJnKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
aAkocmV2aXNpb24gMTk5MzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAg
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCwgMjAxMywgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC02Niw2
ICs2NiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0CiBTdHJp
bmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIFN0
cmluZ1ZpZXcgc291cmNlLCBjb25zdCBpbnQqIG92ZWN0b3IsIFJlZ0V4cCogcmVnKTsKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIo
RXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y1NwbGl0RmFzdChFeGVjU3RhdGUqKTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBi
dWlsdGluU3RyaW5nU3Vic3RySW50ZXJuYWwoRXhlY1N0YXRlKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGJ1aWx0aW5TdHJpbmdJbmNsdWRlc0ludGVybmFsKEV4ZWNTdGF0ZSopOwog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L2VzNi55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYu
eWFtbAkocmV2aXNpb24gMTk5MzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2Vz
Ni55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA3LDcgKzEwMDcsNyBAQAogLSBwYXRoOiBlczYv
UHJveHlfaW50ZXJuYWxfZ2V0X2NhbGxzX1JlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNlYXJjaF0u
anMKICAgY21kOiBydW5FUzYgOmZhaWwKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9j
YWxsc19SZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uanMKLSAgY21kOiBydW5FUzYgOmZh
aWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfaW50ZXJuYWxfZ2V0
X2NhbGxzX1JlZ0V4cF9jb25zdHJ1Y3Rvci5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBh
dGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfU3RyaW5nLnByb3RvdHlwZS5tYXRjaC5q
cwpAQCAtMTAxNyw3ICsxMDE3LDcgQEAKIC0gcGF0aDogZXM2L1Byb3h5X2ludGVybmFsX2dldF9j
YWxsc19TdHJpbmcucHJvdG90eXBlLnNlYXJjaC5qcwogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAt
IHBhdGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfU3RyaW5nLnByb3RvdHlwZS5zcGxp
dC5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6
IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfU3RyaW5nLnJhdy5qcwogICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9Qcm94eV9pbnRlcm5hbF9nZXRfY2FsbHNfVG9QcmltaXRp
dmUuanMKQEAgLTEwOTMsNyArMTA5Myw3IEBACiAtIHBhdGg6IGVzNi9SZWdFeHAucHJvdG90eXBl
X3Byb3BlcnRpZXNfUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc2VhcmNoXS5qcwogICBjbWQ6IHJ1
bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi9SZWdFeHAucHJvdG90eXBlX3Byb3BlcnRpZXNfUmVn
RXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmpzCi0gIGNtZDogcnVuRVM2IDpmYWlsCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L1JlZ0V4cC5wcm90b3R5cGVfcHJvcGVydGll
c19SZWdFeHBbU3ltYm9sLnNwZWNpZXNdLmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0
aDogZXM2L1JlZ0V4cF9pc19zdWJjbGFzc2FibGVfY29ycmVjdF9wcm90b3R5cGVfY2hhaW4uanMK
QEAgLTEyMTUsOSArMTIxNSw5IEBACiAtIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3lt
Ym9sLnNwZWNpZXNfZXhpc3RlbmNlLmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDog
ZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wuc3BlY2llc19SZWdFeHAucHJvdG90eXBlW1N5
bWJvbC5zcGxpdF0uanMKLSAgY21kOiBydW5FUzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1h
bAogLSBwYXRoOiBlczYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC5zcGxpdC5qcwotICBjbWQ6
IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi93ZWxsLWtu
b3duX3N5bWJvbHNfU3ltYm9sLnRvUHJpbWl0aXZlLmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwK
IC0gcGF0aDogZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wudG9TdHJpbmdUYWcuanMKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE5OTMzOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDE2LTA0LTEyICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBFUzY6IEltcGxlbWVudCBTdHJpbmcucHJvdG90eXBlLnNw
bGl0IGFuZCBSZWdFeHAucHJvdG90eXBlW0BAc3BsaXRdLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
S2VpdGggTWlsbGVyLgorCisgICAgICAgICoganMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2RvbS9zdHJpbmctcHJvdG90eXBlLXByb3BlcnRp
ZXMtZXhwZWN0ZWQudHh0OgorCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICoganMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFs
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwuaHRtbDogQWRkZWQuCisg
ICAgICAgICoganMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1pZ25vcmVDYXNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMv
cmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1p
Z25vcmVDYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUuaHRtbDogQWRkZWQuCisgICAgICAgICog
anMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
My1zdGlja3ktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3JlZ2V4
cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBqcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMzLXVuaWNvZGUuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAtcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czQuaHRtbDogQWRkZWQuCisKKyAgICAgICAgKiBqcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi5qczogQWRkZWQuCisgICAgICAgICog
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtZmxhZ3MuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LWdsb2JhbC5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVn
ZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS5q
czogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kuanM6IEFkZGVkLgorICAgICAgICAqIGpz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLXVuaWNvZGUuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0
LmpzOiBBZGRlZC4KKworICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuanM6IEFkZGVkLgorICAgICAg
ICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1m
bGFncy5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5n
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNw
bGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUuanM6IEFkZGVkLgorICAgICAgICAqIGpzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRl
LWVmZmVjdHMzLXN0aWNreS5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5p
Y29kZS5qczogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5n
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQuanM6IEFkZGVkLgorCisg
ICAgICAgICoganMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJp
bmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3N0
cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtZmxhZ3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9y
ZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZs
YWdzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1z
cGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICoganMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzMy1nbG9iYWwuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9z
dHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJpbmctcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
anMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
My1tdWx0aWxpbmUuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3ktZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2Jz
ZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9y
ZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVu
aWNvZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3N0cmluZy1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUuaHRtbDogQWRk
ZWQuCisgICAgICAgICoganMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jl
c3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQuaHRtbDog
QWRkZWQuCisKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5
TmFtZXMuanM6CisgICAgICAgICogc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0
cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjE0X1N0cmluZy5wcm90b3R5cGUuc3BsaXQvUzE1
LjUuNC4xNF9BMV9UMy1leHBlY3RlZC50eHQ6CisKIDIwMTYtMDQtMTEgIEJyZW50IEZ1bGdoYW0g
IDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFdlYWtQdHJzIHRvIGF2b2lkIHVz
aW5nIGRlYWxsb2NhdGVkIFdpZGdldHMgYW5kIFNjcm9sbGFibGVBcmVhcwpJbmRleDogTGF5b3V0
VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTk5MzM4KQorKysgTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blBy
b3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBA
IFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhFcnJvcikgaXMKIFBBU1MgZ2V0U29ydGVk
T3duUHJvcGVydHlOYW1lcyhFcnJvci5wcm90b3R5cGUpIGlzIFsnY29uc3RydWN0b3InLCAnbWVz
c2FnZScsICduYW1lJywgJ3RvU3RyaW5nJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1l
cyhNYXRoKSBpcyBbJ0UnLCdMTjEwJywnTE4yJywnTE9HMTBFJywnTE9HMkUnLCdQSScsJ1NRUlQx
XzInLCdTUVJUMicsJ2FicycsJ2Fjb3MnLCdhY29zaCcsJ2FzaW4nLCdhc2luaCcsJ2F0YW4nLCdh
dGFuMicsJ2F0YW5oJywnY2JydCcsJ2NlaWwnLCdjbHozMicsJ2NvcycsJ2Nvc2gnLCdleHAnLCdl
eHBtMScsJ2Zsb29yJywnZnJvdW5kJywnaHlwb3QnLCdpbXVsJywnbG9nJywnbG9nMTAnLCdsb2cx
cCcsJ2xvZzInLCdtYXgnLCdtaW4nLCdwb3cnLCdyYW5kb20nLCdyb3VuZCcsJ3NpZ24nLCdzaW4n
LCdzaW5oJywnc3FydCcsJ3RhbicsJ3RhbmgnLCd0cnVuYyddCiBQQVNTIGdldFNvcnRlZE93blBy
b3BlcnR5TmFtZXMoSlNPTikgaXMgWydwYXJzZScsICdzdHJpbmdpZnknXQotUEFTUyBnZXRTb3J0
ZWRPd25Qcm9wZXJ0eU5hbWVzKFN5bWJvbCkgaXMgWydmb3InLCAnaGFzSW5zdGFuY2UnLCAnaXRl
cmF0b3InLCAna2V5Rm9yJywgJ2xlbmd0aCcsICdtYXRjaCcsICduYW1lJywgJ3Byb3RvdHlwZScs
ICdzZWFyY2gnLCAnc3BlY2llcycsICd0b1ByaW1pdGl2ZScsICd0b1N0cmluZ1RhZycsICd1bnNj
b3BhYmxlcyddCitQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoU3ltYm9sKSBpcyBbJ2Zv
cicsICdoYXNJbnN0YW5jZScsICdpdGVyYXRvcicsICdrZXlGb3InLCAnbGVuZ3RoJywgJ21hdGNo
JywgJ25hbWUnLCAncHJvdG90eXBlJywgJ3NlYXJjaCcsICdzcGVjaWVzJywgJ3NwbGl0JywgJ3Rv
UHJpbWl0aXZlJywgJ3RvU3RyaW5nVGFnJywgJ3Vuc2NvcGFibGVzJ10KIFBBU1MgZ2V0U29ydGVk
T3duUHJvcGVydHlOYW1lcyhTeW1ib2wucHJvdG90eXBlKSBpcyBbJ2NvbnN0cnVjdG9yJywgJ3Rv
U3RyaW5nJywgJ3ZhbHVlT2YnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE1hcCkg
aXMgWydsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9w
ZXJ0eU5hbWVzKE1hcC5wcm90b3R5cGUpIGlzIFsnY2xlYXInLCAnY29uc3RydWN0b3InLCAnZGVs
ZXRlJywgJ2VudHJpZXMnLCAnZm9yRWFjaCcsICdnZXQnLCAnaGFzJywgJ2tleXMnLCAnc2V0Jywg
J3NpemUnLCAndmFsdWVzJ10KSW5kZXg6IExheW91dFRlc3RzL2pzL2RvbS9zdHJpbmctcHJvdG90
eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pz
L2RvbS9zdHJpbmctcHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAx
OTkzMzgpCisrKyBMYXlvdXRUZXN0cy9qcy9kb20vc3RyaW5nLXByb3RvdHlwZS1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTQsNyArMTQsNyBAQCBQQVNTIFN0cmlu
Zy5wcm90b3R5cGUubWF0Y2guY2FsbCh1bmRlZmluCiBQQVNTIFN0cmluZy5wcm90b3R5cGUucmVw
bGFjZS5jYWxsKHVuZGVmaW5lZCwgLzIrLywgJy0nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBUeXBlIGVycm9yLgogUEFTUyBTdHJpbmcucHJvdG90eXBlLnNlYXJjaC5jYWxsKHVuZGVmaW5l
ZCwgJzQnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBTdHJpbmcucHJvdG90eXBlLnNlYXJj
aCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkLgogUEFTUyBTdHJpbmcucHJv
dG90eXBlLnNsaWNlLmNhbGwodW5kZWZpbmVkLCAxLCAzKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yLgotUEFTUyBTdHJpbmcucHJvdG90eXBlLnNwbGl0LmNhbGwodW5kZWZp
bmVkLCAnMicpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIFN0
cmluZy5wcm90b3R5cGUuc3BsaXQuY2FsbCh1bmRlZmluZWQsICcyJykgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogU3RyaW5nLnByb3RvdHlwZS5zcGxpdCByZXF1aXJlcyB0aGF0IHx0aGlzfCBu
b3QgYmUgdW5kZWZpbmVkLgogUEFTUyBTdHJpbmcucHJvdG90eXBlLnNsaWNlLmNhbGwodW5kZWZp
bmVkLCAxLCAzKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyBT
dHJpbmcucHJvdG90eXBlLnN1YnN0ci5jYWxsKHVuZGVmaW5lZCwgMSwgMykgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgU3RyaW5nLnByb3RvdHlwZS5zdWJzdHJp
bmcuY2FsbCh1bmRlZmluZWQsIDEsIDMpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9y
ZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhw
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVn
cmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9yZWdleHAt
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXBy
b3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1z
cGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4
cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1mbGFncy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNz
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAt
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3Jl
Z2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jl
c3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3Jl
Q2FzZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9y
ZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVn
ZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3Jl
Z2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UK
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93
bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czMtaWdub3JlQ2FzZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25v
cmVDYXNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUt
c3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZQorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1t
dWx0aWxpbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4
cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZS5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMy1tdWx0aWxpbmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLXN0aWNreS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMy1zdGlja3ktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1z
dGlja3ktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVn
cmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlj
a3kKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRo
cm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMy1zdGlja3kuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
cmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
KwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy11bmljb2RlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEwIEBACitKU1JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czMtdW5pY29kZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBu
byBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMzLXVuaWNvZGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAt
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHM0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBA
CitKU1JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRo
cm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2Jz
ZXJ2YWJsZS1zaWRlLWVmZmVjdHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTAgQEAKK0pTUmVncmVzcy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2Vw
dGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXBy
b3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBu
byBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Jl
Z3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czMtZmxhZ3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMt
ZmxhZ3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3N0
cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLWZsYWdzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFn
cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0ic2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHMzLWZsYWdzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
cmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzMy1nbG9iYWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMtZ2xvYmFsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xv
YmFsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jl
c3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFs
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJv
d24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMtZ2xvYmFsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0
cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
SW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNl
cnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxl
LXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3Ry
aW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlw
ZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdu
b3JlQ2FzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jl
c3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czMtbXVsdGlsaW5lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LW11bHRpbGluZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11
bHRpbGluZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNS
ZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11
bHRpbGluZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRp
b24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLW11bHRpbGluZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
My1tdWx0aWxpbmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNreS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3ktZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3ktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3Ry
aW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2Rl
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmlu
Zy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3RyaW5nLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZQorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMy11bmljb2RlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
dHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2RlLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMy11bmljb2RlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
cmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lk
ZS1lZmZlY3RzNC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1z
cGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHM0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgor
CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2Jz
ZXJ2YWJsZS1zaWRlLWVmZmVjdHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9zdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3N0cmluZy1wcm90b3R5cGUt
c3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMi5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKy8vQCBy
dW5EZWZhdWx0CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYg
KCF0ZXN0ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8gUmVnRXhw
IHdpdGggb3ZlcnJpZGRlbiBbQEBzcGVjaWVzXTogVGVzdGluZyBFUzYgMjEuMi41LjExOiA0LiBM
ZXQgQyBiZSA/IFNwZWNpZXNDb25zdHJ1Y3RvcihyeCwgJVJlZ0V4cCUpLgorKGZ1bmN0aW9uICgp
IHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb3JpZ0Rlc2NyaXB0b3IgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cCwgU3ltYm9sLnNwZWNpZXMpOworICAg
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWdFeHAsIFN5bWJvbC5zcGVjaWVzLCB7CisgICAgICAg
IHZhbHVlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goU3ltYm9sLnNw
ZWNpZXMudG9TdHJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm4gL2l0L3k7CisgICAgICAgIH0K
KyAgICB9KTsKKyAgICBsZXQgb2JqID0gbmV3IFJlZ0V4cDsKKyAgICBsZXQgZXJyb3JTdHI7CisK
KyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRl
biBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxp
dF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJTeW1ib2wo
U3ltYm9sLnNwZWNpZXMpIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3Rh
dGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3Vs
dCIpOworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3Jl
Z2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLmpzCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyOCBAQAorLy9AIHJ1bkRlZmF1bHQKKworZnVuY3Rpb24gYXNzZXJ0KHRl
c3RlZFZhbHVlLCBtc2cpIHsKKyAgICBpZiAoIXRlc3RlZFZhbHVlKQorICAgICAgICB0aHJvdyBF
cnJvcihtc2cpOworfQorCisvLyBSZWdFeHAucHJvdG90eXBlIHdpdGggb3ZlcnJpZGRlbiBmbGFn
czogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdl
dChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZmxhZyA9ICJmbGFncyI7
CisgICAgbGV0IGZsYWdWYWx1ZSA9ICIiOworCisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAg
bGV0IG9yaWdEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdF
eHAucHJvdG90eXBlLCBmbGFnKTsKKworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWdFeHAu
cHJvdG90eXBlLCBmbGFnLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBhY2Nlc3Nlcy5wdXNoKGZsYWcpOworICAgICAgICAgICAgcmV0dXJuIGZsYWdWYWx1ZTsKKyAg
ICAgICAgfQorICAgIH0pOworICAgIGxldCBvYmogPSAvaXQvOworCisgICAgYXNzZXJ0KGFjY2Vz
c2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBs
ZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3Bs
aXRtZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSBmbGFnLCAiUHJvcGVydHkgYWNjZXNzZXMg
ZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1l
IiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czMtZ2xvYmFsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMzLWdsb2JhbC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LWdsb2JhbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisvL0AgcnVuRGVmYXVs
dAorCitmdW5jdGlvbiBhc3NlcnQodGVzdGVkVmFsdWUsIG1zZykgeworICAgIGlmICghdGVzdGVk
VmFsdWUpCisgICAgICAgIHRocm93IEVycm9yKG1zZyk7Cit9CisKKy8vIFJlZ0V4cC5wcm90b3R5
cGUgd2l0aCBvdmVycmlkZGVuIGZsYWdzOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBm
bGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgewor
ICAgIGxldCBmbGFnID0gImdsb2JhbCI7CisgICAgbGV0IGZsYWdWYWx1ZSA9IGZhbHNlOworCisg
ICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9yaWdEZXNjcmlwdG9yID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBlLCBmbGFnKTsKKworICAgIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShSZWdFeHAucHJvdG90eXBlLCBmbGFnLCB7CisgICAgICAgIGdl
dDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKGZsYWcpOworICAgICAg
ICAgICAgcmV0dXJuIGZsYWdWYWx1ZTsKKyAgICAgICAgfQorICAgIH0pOworICAgIGxldCBvYmog
PSAvaXQvOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRv
IG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtT
eW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9
PSBmbGFnLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7Cisg
ICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgp
OwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLmpzCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtaWdub3JlQ2FzZS5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisvL0AgcnVuRGVmYXVsdAorCitmdW5jdGlvbiBhc3Nl
cnQodGVzdGVkVmFsdWUsIG1zZykgeworICAgIGlmICghdGVzdGVkVmFsdWUpCisgICAgICAgIHRo
cm93IEVycm9yKG1zZyk7Cit9CisKKy8vIFJlZ0V4cC5wcm90b3R5cGUgd2l0aCBvdmVycmlkZGVu
IGZsYWdzOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5n
KD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBmbGFnID0gImln
bm9yZUNhc2UiOworICAgIGxldCBmbGFnVmFsdWUgPSBmYWxzZTsKKworICAgIGxldCBhY2Nlc3Nl
cyA9IFtdOworICAgIGxldCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgZmxhZyk7CisKKyAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkoUmVnRXhwLnByb3RvdHlwZSwgZmxhZywgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgIHJldHVybiBm
bGFnVmFsdWU7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0gL2l0LzsKKworICAg
IGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHBy
b3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5j
YWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxhZywgIlByb3Bl
cnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1
bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5kZXg6IExheW91
dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2Jz
ZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZS5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwyOCBAQAorLy9AIHJ1bkRlZmF1bHQKKworZnVuY3Rpb24gYXNzZXJ0KHRlc3RlZFZhbHVlLCBt
c2cpIHsKKyAgICBpZiAoIXRlc3RlZFZhbHVlKQorICAgICAgICB0aHJvdyBFcnJvcihtc2cpOwor
fQorCisvLyBSZWdFeHAucHJvdG90eXBlIHdpdGggb3ZlcnJpZGRlbiBmbGFnczogVGVzdGluZyBF
UzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdz
IikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZmxhZyA9ICJtdWx0aWxpbmUiOworICAgIGxl
dCBmbGFnVmFsdWUgPSBmYWxzZTsKKworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGxldCBv
cmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnBy
b3RvdHlwZSwgZmxhZyk7CisKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVnRXhwLnByb3Rv
dHlwZSwgZmxhZywgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWNj
ZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgIHJldHVybiBmbGFnVmFsdWU7CisgICAgICAg
IH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0gL2l0LzsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9
PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJl
c3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUi
KTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxhZywgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5v
dCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJV
bmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMzLXN0aWNreS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1z
dGlja3kuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlj
a3kuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorLy9AIHJ1bkRlZmF1bHQKKwor
ZnVuY3Rpb24gYXNzZXJ0KHRlc3RlZFZhbHVlLCBtc2cpIHsKKyAgICBpZiAoIXRlc3RlZFZhbHVl
KQorICAgICAgICB0aHJvdyBFcnJvcihtc2cpOworfQorCisvLyBSZWdFeHAucHJvdG90eXBlIHdp
dGggb3ZlcnJpZGRlbiBmbGFnczogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3Mg
YmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBs
ZXQgZmxhZyA9ICJzdGlja3kiOworICAgIGxldCBmbGFnVmFsdWUgPSBmYWxzZTsKKworICAgIGxl
dCBhY2Nlc3NlcyA9IFtdOworICAgIGxldCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgZmxhZyk7CisKKyAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoUmVnRXhwLnByb3RvdHlwZSwgZmxhZywgeworICAgICAgICBnZXQ6IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAg
IHJldHVybiBmbGFnVmFsdWU7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0gL2l0
LzsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVy
cmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9s
LnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxh
ZywgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFz
c2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5k
ZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUt
c3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS5qcwkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyOCBAQAorLy9AIHJ1bkRlZmF1bHQKKworZnVuY3Rpb24gYXNzZXJ0KHRlc3RlZFZhbHVl
LCBtc2cpIHsKKyAgICBpZiAoIXRlc3RlZFZhbHVlKQorICAgICAgICB0aHJvdyBFcnJvcihtc2cp
OworfQorCisvLyBSZWdFeHAucHJvdG90eXBlIHdpdGggb3ZlcnJpZGRlbiBmbGFnczogVGVzdGlu
ZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZs
YWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgZmxhZyA9ICJ1bmljb2RlIjsKKyAgICBs
ZXQgZmxhZ1ZhbHVlID0gZmFsc2U7CisKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQg
b3JpZ0Rlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5w
cm90b3R5cGUsIGZsYWcpOworCisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90
b3R5cGUsIGZsYWcsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFj
Y2Vzc2VzLnB1c2goZmxhZyk7CisgICAgICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAg
ICB9CisgICAgfSk7CisgICAgbGV0IG9iaiA9IC9pdC87CisKKyAgICBhc3NlcnQoYWNjZXNzZXMg
PT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCBy
ZXN1bHQgPSBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1l
Iik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09IGZsYWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBu
b3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAi
VW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzNC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9yZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC5qcwkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1w
cm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0LmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzggQEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0
ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgRXJy
b3IobXNnKTsKK30KKworLy8gUmVnRXhwLnByb3RvdHlwZSB3aXRoIG92ZXJyaWRkZW4gZXhlYzog
VGVzdGluZyBFUzYgMjEuMi41LjExOiAxOS5iLiBMZXQgeiBiZSA/IFJlZ0V4cEV4ZWMoc3BsaXR0
ZXIsIFMpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQg
b3JpZ0Rlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5w
cm90b3R5cGUsICJleGVjIik7CisgICAgbGV0IG9yaWdFeGVjID0gb3JpZ0Rlc2NyaXB0b3IudmFs
dWU7CisKKyAgICBsZXQgb2JqID0gL2l0LzsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVn
RXhwLnByb3RvdHlwZSwgImV4ZWMiLCB7CisgICAgICAgIHZhbHVlOiBmdW5jdGlvbihzdHIpIHsK
KyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goImV4ZWMiKTsKKyAgICAgICAgICAgIHJldHVybiBv
cmlnRXhlYy5jYWxsKHRoaXMsIHN0cik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIC8vIFRo
ZSBAQHNwbGl0IHNsb3cgcGF0aCBzaG91bGQgb25seSBjYWxsIHRoZSBpbnRlcm5hbCB2ZXJzaW9u
IG9mIHN1YnN0ci4gTWFrZSBzdXJlCisgICAgLy8gdGhhdCBpdCdzIG5vdCBjYWxsaW5nIHRoZSBw
dWJsaWMgdmVyc2lvbiB3aGljaCBjYW4gYmUgb3ZlcnJpZGRlbi4KKyAgICBTdHJpbmcucHJvdG90
eXBlLnN1YnN0ciA9IGZ1bmN0aW9uKHN0YXJ0LCBsZW5ndGgpIHsKKyAgICAgICAgdGhyb3cgRXJy
b3IoIlNob3VsZCBub3QgY2FsbCBvdmVycmlkZGVuIHN1YnN0ciIpOworICAgIH0KKworICAgIC8v
IFRoZSBAQHNwbGl0IHNsb3cgcGF0aCBzaG91bGQgb25seSBjYWxsIHRoZSBpbnRlcm5hbCB2ZXJz
aW9uIG9mIGluY2x1ZGVzLiBNYWtlIHN1cmUKKyAgICAvLyB0aGF0IGl0J3Mgbm90IGNhbGxpbmcg
dGhlIHB1YmxpYyB2ZXJzaW9uIHdoaWNoIGNhbiBiZSBvdmVycmlkZGVuLgorICAgIFN0cmluZy5w
cm90b3R5cGUuaW5jbHVkZXMgPSBmdW5jdGlvbihwYXR0ZXJuKSB7CisgICAgICAgIHRocm93IEVy
cm9yKCJTaG91bGQgbm90IGNhbGwgb3ZlcnJpZGRlbiBpbmNsdWRlcyIpOworICAgIH0KKworICAg
IGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHBy
b3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5j
YWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImV4ZWMsZXhlYyxl
eGVjLGV4ZWMsZXhlYyxleGVjIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBl
Y3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJl
c3VsdCIpOworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3Rv
dHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5qcwkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtc3BsaXQt
b2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MDYg
QEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7
CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKwor
Ly8gU3ViY2xhc3Mgd2l0aCBvdmVycmlkZGVuIFtAQHNwZWNpZXNdOiBUZXN0aW5nIEVTNiAyMS4y
LjUuMTE6IDQuIExldCBDIGJlID8gU3BlY2llc0NvbnN0cnVjdG9yKHJ4LCAlUmVnRXhwJSkuCiso
ZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGNsYXNzIFRlc3RSZWdF
eHAgZXh0ZW5kcyBSZWdFeHAgeyB9CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFRlc3RSZWdF
eHAsIFN5bWJvbC5zcGVjaWVzLCB7CisgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGFjY2Vzc2VzLnB1c2goU3ltYm9sLnNwZWNpZXMudG9TdHJpbmcoKSk7CisgICAgICAg
ICAgICByZXR1cm4gL2l0L3k7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0gbmV3
IFRlc3RSZWdFeHAoL2l0Lyk7CisgICAgbGV0IGVycm9yU3RyOworCisgICAgYXNzZXJ0KGFjY2Vz
c2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBs
ZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3Bs
aXRtZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiU3ltYm9sKFN5bWJvbC5zcGVjaWVzKSIs
ICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3Nl
cnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8v
IFJlZ0V4cCBzdWJjbGFzcyB3aXRoIGNvbnN0cnVjdG9yOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6
IDQuIExldCBDIGJlID8gU3BlY2llc0NvbnN0cnVjdG9yKHJ4LCAlUmVnRXhwJSkuCisoZnVuY3Rp
b24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGNsYXNzIFRlc3RSZWdFeHAgZXh0
ZW5kcyBSZWdFeHAgeworICAgICAgICBjb25zdHJ1Y3RvcihzdHIsIGZsYWdzKSB7CisgICAgICAg
ICAgICBzdXBlcihzdHIsIGZsYWdzKTsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goImNvbnN0
cnVjdG9yIik7CisgICAgICAgIH0KKyAgICB9CisgICAgbGV0IG9iaiA9IG5ldyBUZXN0UmVnRXhw
KCJpdCIpOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJjb25zdHJ1Y3RvciIsICJ1bmV4cGVj
dGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBSZWdFeHAu
cHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAgYXNzZXJ0
KGFjY2Vzc2VzID09ICJjb25zdHJ1Y3Rvcixjb25zdHJ1Y3RvciIsICJQcm9wZXJ0eSBhY2Nlc3Nl
cyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGws
bWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIEFuIG9iamVjdCB3aXRoIHNw
ZWNpZXMgY29uc3RydWN0b3I6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNC4gTGV0IEMgYmUgPyBT
cGVjaWVzQ29uc3RydWN0b3IocngsICVSZWdFeHAlKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0
IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9iaiA9IHsgY29uc3RydWN0b3I6IHt9IH07CisgICAg
b2JqLmNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBh
Y2Nlc3Nlcy5wdXNoKCJjb25zdHJ1Y3RvciIpOworICAgICAgICByZXR1cm4gL2l0L3k7CisgICAg
fTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVy
cmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9s
LnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImNv
bnN0cnVjdG9yIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIp
OworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOwor
fSkoKTsKKworLy8gUmVnRXhwIG9iamVjdCB3aXRoIG92ZXJyaWRkZW4gZmxhZ3M6IFRlc3Rpbmcg
RVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFn
cyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZsYWdzID0gWyAiZmxhZ3MiLCAiZ2xvYmFs
IiwgImlnbm9yZUNhc2UiLCAibXVsdGlsaW5lIiwgInN0aWNreSIsICJ1bmljb2RlIiBdOworICAg
IGxldCBmbGFnVmFsdWVzID0gWyAiIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
IF07CisgICAgZm9yIChsZXQgaW5kZXggaW4gZmxhZ3MpIHsKKyAgICAgICAgKGZ1bmN0aW9uKGZs
YWcsIGZsYWdWYWx1ZSkgeworICAgICAgICAgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgICAg
ICAgICBsZXQgb2JqID0gL2l0LzsKKyAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShv
YmosIGZsYWcsIHsKKyAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKGZsYWcpOworICAgICAgICAgICAgICAgICAgICBwYXNz
ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhc3NlcnQoYWNjZXNz
ZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgICAg
ICAgICAgbGV0IHJlc3VsdCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9i
aiwgInNwbGl0bWUiKTsKKyAgICAgICAgICAgIGFzc2VydChhY2Nlc3NlcyA9PSBmbGFnLCAiUHJv
cGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgICAgICAgICBh
c3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKKyAgICAgICAg
fSkgKGZsYWdzW2luZGV4XSwgZmxhZ1ZhbHVlc1tpbmRleF0pOworICAgIH0KK30pKCk7CisKKy8v
IFJlZ0V4cCBzdWJjbGFzcyB3aXRoIG92ZXJyaWRkZW4gZmxhZ3MgaW4gc3ViY2xhc3MgbWV0aG9k
OiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0
KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBmbGFncyA9IFsgImZsYWdz
IiwgImdsb2JhbCIsICJpZ25vcmVDYXNlIiwgIm11bHRpbGluZSIsICJzdGlja3kiLCAidW5pY29k
ZSIgXTsKKyAgICBsZXQgZmxhZ1ZhbHVlcyA9IFsgIiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSBdOworICAgIGZvciAobGV0IGluZGV4IGluIGZsYWdzKSB7CisgICAgICAgIChm
dW5jdGlvbihmbGFnLCBmbGFnVmFsdWUpIHsKKyAgICAgICAgICAgIGxldCBhY2Nlc3NlcyA9IFtd
OworICAgICAgICAgICAgY2xhc3MgVGVzdFJlZ0V4cCBleHRlbmRzIFJlZ0V4cCB7CisgICAgICAg
ICAgICAgICAgZ2V0IFtmbGFnXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgYWNjZXNzZXMucHVz
aChmbGFnKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZsYWdWYWx1ZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICAgICAgbGV0IG9iaiA9IG5ldyBUZXN0
UmVnRXhwKC9pdC8pOworCisgICAgICAgICAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4
cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgICAgICAgICAgbGV0IHJlc3Vs
dCA9IFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKG9iaiwgInNwbGl0bWUiKTsK
KyAgICAgICAgICAgIGFzc2VydChhY2Nlc3NlcyA9PSBmbGFnLCAiUHJvcGVydHkgYWNjZXNzZXMg
ZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgICAgICAgICBhc3NlcnQocmVzdWx0ID09
ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKKworICAgICAgICB9KSAoZmxhZ3NbaW5k
ZXhdLCBmbGFnVmFsdWVzW2luZGV4XSk7CisgICAgfQorfSkoKTsKKworLy8gUmVnRXhwIHN1YmNs
YXNzIHdpdGggb3ZlcnJpZGRlbiBmbGFncyB1c2luZyBPYmplY3QuZGVmaW5lUHJvcGVydHk6IFRl
c3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngs
ICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZsYWdzID0gWyAiZmxhZ3MiLCAi
Z2xvYmFsIiwgImlnbm9yZUNhc2UiLCAibXVsdGlsaW5lIiwgInN0aWNreSIsICJ1bmljb2RlIiBd
OworICAgIGxldCBmbGFnVmFsdWVzID0gWyAiIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlIF07CisgICAgZm9yIChsZXQgaW5kZXggaW4gZmxhZ3MpIHsKKyAgICAgICAgKGZ1bmN0
aW9uKGZsYWcsIGZsYWdWYWx1ZSkgeworICAgICAgICAgICAgbGV0IGFjY2Vzc2VzID0gW107Cisg
ICAgICAgICAgICBjbGFzcyBUZXN0UmVnRXhwIGV4dGVuZHMgUmVnRXhwIHsgfTsKKyAgICAgICAg
ICAgIGxldCBvYmogPSBuZXcgVGVzdFJlZ0V4cCgvaXQvKTsKKworICAgICAgICAgICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KG9iaiwgZmxhZywgeworICAgICAgICAgICAgICAgIGdldDogZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goZmxhZyk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmbGFnVmFsdWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0
ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgICAgICAgICBsZXQgcmVzdWx0ID0g
UmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAg
ICAgICAgICAgYXNzZXJ0KGFjY2Vzc2VzID09IGZsYWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBu
b3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICAgICAgICAgIGFzc2VydChyZXN1bHQgPT0gInNw
bCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworCisgICAgICAgIH0pIChmbGFnc1tpbmRleF0s
IGZsYWdWYWx1ZXNbaW5kZXhdKTsKKyAgICB9Cit9KSgpOworCisvLyBBbnkgb2JqZWN0IHdpdGgg
c3BlY2llcyBjb25zdHJ1Y3RvcjogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3Mg
YmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBs
ZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb2JqID0geyBjb25zdHJ1Y3Rvcjoge30gfTsKKyAg
ICBvYmouY29uc3RydWN0b3JbU3ltYm9sLnNwZWNpZXNdID0gZnVuY3Rpb24oKSB7CisgICAgICAg
IGFjY2Vzc2VzLnB1c2goImNvbnN0cnVjdG9yIik7CisgICAgICAgIHJldHVybiAvaXQveTsKKyAg
ICB9OworCisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgImZsYWdzIiwgeworICAgICAg
ICBnZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgiZmxhZ3MiKTsK
KyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgYXNzZXJ0
KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsK
KyAgICBsZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2Jq
LCAic3BsaXRtZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiZmxhZ3MsY29uc3RydWN0b3Ii
LCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNz
ZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisv
LyBBbnkgb2JqZWN0IHdpdGggY3VzdG9tIHByb3RvdHlwZTogVGVzdGluZyBFUzYgMjEuMi41LjEx
OiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0
aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgVGVzdFJlZ0V4cFByb3Rv
ID0geworICAgICAgICBnZXQgZmxhZ3MoKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJm
bGFncyIpOworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9LAorICAgICAgICB0b1N0
cmluZygpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goInRvU3RyaW5nIik7CisgICAgICAg
ICAgICByZXR1cm4gdGhpcy5fcmVnZXgudG9TdHJpbmcoKTsKKyAgICAgICAgfSwKKyAgICAgICAg
Z2V0IHNvdXJjZSgpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goInNvdXJjZSIpOworICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX3JlZ2V4LnNvdXJjZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBUZXN0UmVnRXhwUHJvdG8uX19wcm90b19fID0gUmVnRXhwLnByb3RvdHlwZTsKKworICAgIGxl
dCBUZXN0UmVnRXhwID0gZnVuY3Rpb24ocmVnZXgpIHsKKyAgICAgICAgYWNjZXNzZXMucHVzaCgi
Y29uc3RydWN0b3IiKTsKKyAgICAgICAgdGhpcy5fcmVnZXggPSBuZXcgUmVnRXhwKHJlZ2V4KTsK
KyAgICB9CisgICAgVGVzdFJlZ0V4cC5wcm90b3R5cGUgPSBUZXN0UmVnRXhwUHJvdG87CisgICAg
VGVzdFJlZ0V4cFByb3RvLmNvbnN0cnVjdG9yID0gVGVzdFJlZ0V4cDsKKworICAgIGxldCBvYmog
PSBuZXcgVGVzdFJlZ0V4cCgvaXQvKTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiY29uc3Ry
dWN0b3IiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQg
cmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRt
ZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiY29uc3RydWN0b3IsZmxhZ3Msc291cmNlIiwg
IlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2Vy
dChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKKworLy8g
MiBsZXZlbHMgb2Ygc3ViY2xhc3NlczogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxh
Z3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAg
ICBsZXQgYWNjZXNzZXMgPSBbXTsKKworICAgIGNsYXNzIFJlZ0V4cEIgZXh0ZW5kcyBSZWdFeHAg
eworICAgICAgICBnZXQgZmxhZ3MoKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJmbGFn
cyIpOworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisgICAgfQorICAgIGNsYXNz
IFJlZ0V4cEMgZXh0ZW5kcyBSZWdFeHBCIHsgfQorCisgICAgYXNzZXJ0KFJlZ0V4cEIuX19wcm90
b19fID09IFJlZ0V4cCk7CisgICAgYXNzZXJ0KFJlZ0V4cEMuX19wcm90b19fID09IFJlZ0V4cEIp
OworCisgICAgbGV0IG9iaiA9IG5ldyBSZWdFeHBDKC9pdC8pOworCisgICAgYXNzZXJ0KGFjY2Vz
c2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBs
ZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3Bs
aXRtZSIpOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiZmxhZ3MiLCAiUHJvcGVydHkgYWNjZXNz
ZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3Bs
LG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyAyIGxldmVscyBvZiBzdWJj
bGFzc2VzIHdpdGggc3Vic3RpdHV0ZWQgcHJvdG90eXBlIGJlZm9yZSBpbnN0YW50aWF0aW9uOiBU
ZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0KHJ4
LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworCisg
ICAgY2xhc3MgQiBleHRlbmRzIFJlZ0V4cCB7IH0KKyAgICBjbGFzcyBDIGV4dGVuZHMgQiB7IH0K
KworICAgIGFzc2VydChCLl9fcHJvdG9fXyA9PT0gUmVnRXhwKTsKKyAgICBhc3NlcnQoQy5fX3By
b3RvX18gPT09IEIpOworICAgIGFzc2VydChCLnByb3RvdHlwZS5fX3Byb3RvX18gPT09IFJlZ0V4
cC5wcm90b3R5cGUpOworICAgIGFzc2VydChDLnByb3RvdHlwZS5fX3Byb3RvX18gPT09IEIucHJv
dG90eXBlKTsKKworICAgIGxldCBYID0gZnVuY3Rpb24gKCkge30KKyAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkoWC5wcm90b3R5cGUsICJmbGFncyIsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goImZsYWdzIik7CisgICAgICAgICAgICByZXR1
cm4gIiI7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoWC5w
cm90b3R5cGUsICJleGVjIiwgeworICAgICAgICB2YWx1ZTogZnVuY3Rpb24oc3RyKSB7CisgICAg
ICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJleGVjIik7CisgICAgICAgICAgICB2YXIgbWF0Y2hSZXN1
bHQgPSAvaXQveS5leGVjKHN0ci5zdWJzdHIodGhpcy5sYXN0SW5kZXgpKTsKKyAgICAgICAgICAg
IGlmIChtYXRjaFJlc3VsdCkKKyAgICAgICAgICAgICAgICB0aGlzLmxhc3RJbmRleCArPSAyOyAv
LyBsZW5ndGggb2YgIml0Ii4KKyAgICAgICAgICAgIHJldHVybiBtYXRjaFJlc3VsdDsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgLy8gTW9ua2V5IHdpdGggdGhlIHByb3RvdHlwZSBjaGFpbiBi
ZWZvcmUgaW5zdGFudGlhdGluZyBDLgorICAgIFguX19wcm90b19fID0gUmVnRXhwOworICAgIFgu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFJlZ0V4cC5wcm90b3R5cGU7CisgICAgQy5fX3Byb3RvX18g
PSBYOworICAgIEMucHJvdG90eXBlLl9fcHJvdG9fXyA9IFgucHJvdG90eXBlOworCisgICAgYXNz
ZXJ0KFguX19wcm90b19fID09PSBSZWdFeHApOworICAgIGFzc2VydChDLl9fcHJvdG9fXyA9PT0g
WCk7CisgICAgYXNzZXJ0KFgucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gUmVnRXhwLnByb3RvdHlw
ZSk7CisgICAgYXNzZXJ0KEMucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gWC5wcm90b3R5cGUpOwor
CisgICAgbGV0IG9iaiA9IG5ldyBDOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5l
eHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gUmVn
RXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwob2JqLCAic3BsaXRtZSIpOworICAgIGFz
c2VydChhY2Nlc3NlcyA9PSAiZmxhZ3MsZXhlYyxleGVjLGV4ZWMsZXhlYyxleGVjLGV4ZWMiLCAi
UHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0
KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyAy
IGxldmVscyBvZiBzdWJjbGFzc2VzIHdpdGggc3Vic3RpdHV0ZWQgcHJvdG90eXBlIGFmdGVyIGlu
c3RhbnRpYXRpb246IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9T
dHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vz
c2VzID0gW107CisKKyAgICBjbGFzcyBCIGV4dGVuZHMgUmVnRXhwIHsgfQorICAgIGNsYXNzIEMg
ZXh0ZW5kcyBCIHsgfQorCisgICAgYXNzZXJ0KEIuX19wcm90b19fID09PSBSZWdFeHApOworICAg
IGFzc2VydChDLl9fcHJvdG9fXyA9PT0gQik7CisgICAgYXNzZXJ0KEIucHJvdG90eXBlLl9fcHJv
dG9fXyA9PT0gUmVnRXhwLnByb3RvdHlwZSk7CisgICAgYXNzZXJ0KEMucHJvdG90eXBlLl9fcHJv
dG9fXyA9PT0gQi5wcm90b3R5cGUpOworCisgICAgbGV0IFggPSBmdW5jdGlvbiAoKSB7fQorICAg
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShYLnByb3RvdHlwZSwgImZsYWdzIiwgeworICAgICAgICBn
ZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgiZmxhZ3MiKTsKKyAg
ICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAgIH0pOworICAgIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShYLnByb3RvdHlwZSwgImV4ZWMiLCB7CisgICAgICAgIHZhbHVlOiBmdW5jdGlv
bihzdHIpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goImV4ZWMiKTsKKyAgICAgICAgICAg
IHZhciBtYXRjaFJlc3VsdCA9IC9pdC95LmV4ZWMoc3RyLnN1YnN0cih0aGlzLmxhc3RJbmRleCkp
OworICAgICAgICAgICAgaWYgKG1hdGNoUmVzdWx0KQorICAgICAgICAgICAgICAgIHRoaXMubGFz
dEluZGV4ICs9IDI7IC8vIGxlbmd0aCBvZiAiaXQiLgorICAgICAgICAgICAgcmV0dXJuIG1hdGNo
UmVzdWx0OworICAgICAgICB9CisgICAgfSk7CisKKyAgICAvLyBJbnN0YW50aWF0ZSBDIGJlZm9y
ZSBtb25rZXlpbmcgd2l0aCB0aGUgcHJvdG90eXBlIGNoYWluLgorICAgIGxldCBvYmogPSBuZXcg
QygpOworCisgICAgWC5fX3Byb3RvX18gPSBSZWdFeHA7CisgICAgWC5wcm90b3R5cGUuX19wcm90
b19fID0gUmVnRXhwLnByb3RvdHlwZTsKKyAgICBDLl9fcHJvdG9fXyA9IFg7CisgICAgQy5wcm90
b3R5cGUuX19wcm90b19fID0gWC5wcm90b3R5cGU7CisKKyAgICBhc3NlcnQoWC5fX3Byb3RvX18g
PT09IFJlZ0V4cCk7CisgICAgYXNzZXJ0KEMuX19wcm90b19fID09PSBYKTsKKyAgICBhc3NlcnQo
WC5wcm90b3R5cGUuX19wcm90b19fID09PSBSZWdFeHAucHJvdG90eXBlKTsKKyAgICBhc3NlcnQo
Qy5wcm90b3R5cGUuX19wcm90b19fID09PSBYLnByb3RvdHlwZSk7CisKKyAgICBhc3NlcnQoYWNj
ZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAg
IGxldCByZXN1bHQgPSBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJz
cGxpdG1lIik7CisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJmbGFncyxleGVjLGV4ZWMsZXhlYyxl
eGVjLGV4ZWMsZXhlYyIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRp
b24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQi
KTsKK30pKCk7CisKKy8vIDIgbGV2ZWxzIG9mIHN1YmNsYXNzZXMgd2l0aCBwcm94aWVkIHByb3Rv
dHlwZTogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/
IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBb
XTsKKworICAgIGNsYXNzIEIgZXh0ZW5kcyBSZWdFeHAgeyB9OworCisgICAgYXNzZXJ0KEIuX19w
cm90b19fID09PSBSZWdFeHApOworICAgIGFzc2VydChCLnByb3RvdHlwZS5fX3Byb3RvX18gPT09
IFJlZ0V4cC5wcm90b3R5cGUpOworCisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KFJlZ0V4cC5w
cm90b3R5cGUsIHsKKyAgICAgICAgZ2V0OiBmdW5jdGlvbihvYmosIHByb3ApIHsKKyAgICAgICAg
ICAgIGFjY2Vzc2VzLnB1c2gocHJvcC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGlmIChwcm9w
ID09PSAiZXhlYyIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oc3RyKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goImluX2V4ZWMiKTsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIG1hdGNoUmVzdWx0ID0gL2l0L3kuZXhlYyhzdHIuc3Vic3RyKHRoaXMubGFz
dEluZGV4KSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaFJlc3VsdCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMubGFzdEluZGV4ICs9IDI7IC8vIGxlbmd0aCBvZiAiaXQiLgor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hSZXN1bHQ7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG9ialtwcm9wXTsKKyAgICAgICAg
fQorICAgIH0pOworICAgIEIucHJvdG90eXBlLl9fcHJvdG9fXyA9IHByb3h5OworCisgICAgbGV0
IG9iaiA9IG5ldyBCKCk7CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVk
IGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBSZWdFeHAucHJv
dG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAgYXNzZXJ0KGFj
Y2Vzc2VzID09ICJmbGFncyxTeW1ib2woU3ltYm9sLm1hdGNoKSxleGVjLGluX2V4ZWMsZXhlYyxp
bl9leGVjLGV4ZWMsaW5fZXhlYyxleGVjLGluX2V4ZWMsZXhlYyxpbl9leGVjLGV4ZWMsaW5fZXhl
YyIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBh
c3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisK
Ky8vIFJlZ0V4cCBzdWJjbGFzcyB3aXRoIG92ZXJyaWRkZW4gZXhlYzogVGVzdGluZyBFUzYgMjEu
Mi41LjExOiAxOS5iLiBMZXQgeiBiZSA/IFJlZ0V4cEV4ZWMoc3BsaXR0ZXIsIFMpLgorKGZ1bmN0
aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBjbGFzcyBUZXN0UmVnRXhwIGV4
dGVuZHMgUmVnRXhwIHsKKyAgICAgICAgZXhlYyhzdHIpIHsKKyAgICAgICAgICAgIGFjY2Vzc2Vz
LnB1c2goImV4ZWMiKTsKKyAgICAgICAgICAgIHJldHVybiBSZWdFeHAucHJvdG90eXBlLmV4ZWMu
Y2FsbCh0aGlzLCBzdHIpOworICAgICAgICB9CisgICAgfTsKKyAgICBsZXQgb2JqID0gbmV3IFRl
c3RSZWdFeHAoL2l0Lyk7CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVk
IGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBSZWdFeHAucHJv
dG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbChvYmosICJzcGxpdG1lIik7CisgICAgYXNzZXJ0KGFj
Y2Vzc2VzID09ICJleGVjLGV4ZWMsZXhlYyxleGVjLGV4ZWMsZXhlYyIsICJQcm9wZXJ0eSBhY2Nl
c3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJz
cGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIFByb3hpZWQgUmVnRXhw
IG9ic2VydmluZyBldmVyeSBnZXQuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9
IFtdOworICAgIGxldCByZWdleHAgPSBuZXcgUmVnRXhwKC9pdC8pOworICAgIGxldCBwcm94eSA9
IG5ldyBQcm94eShyZWdleHAsIHsKKyAgICAgICAgZ2V0KG9iaiwgcHJvcCkgeworICAgICAgICAg
ICAgYWNjZXNzZXMucHVzaChwcm9wLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIG9i
altwcm9wXTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIi
LCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0
ID0gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwocHJveHksICJzcGxpdG1lIik7
CisgICAgLy8gTm90ZTogQEBzcGxpdCBjcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBSZWdF
eHAgdXNpbmcgaXRzIEBAc3BlY2llcywgYW5kIHBlcmZvcm1zCisgICAgLy8gdGhlIHNwbGl0IG9w
ZXJhdGlvbiB3aXRoIHRoYXQgbmV3IGluc3RhbmNlLiBIZW5jZSwgdGhlIHByb3h5IGlzIG9ubHkg
YWJsZSB0byBvYnNlcnZlCisgICAgLy8gZ2V0cyB1cCB0byB0aGUgY3JlYXRpb24gb2YgdGhlIG5l
dyBpbnN0YW5jZS4KKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImNvbnN0cnVjdG9yLGZsYWdzLFN5
bWJvbChTeW1ib2wubWF0Y2gpLHNvdXJjZSIsCisgICAgICAgICJQcm94eSBub3QgYWJsZSB0byBv
YnNlcnZlIHNvbWUgZ2V0cyIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4
cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKKworLy8gUHJveGllZCBSZWdFeHAgKHdpdGhvdXQgQEBt
YXRjaCkgb2JzZXJ2aW5nIGV2ZXJ5IGdldC4KKy8vIFRoaXMgaXMgdG8gZm9yY2UgdGhlIFJlZ0V4
cCBAc3BlY2llcyBjb25zdHJ1Y3RvciB0byBhY2Nlc3Mgc291cmNlLgorKGZ1bmN0aW9uICgpIHsK
KyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgcmVnZXhwID0gbmV3IFJlZ0V4cCgvaXQv
KTsKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkocmVnZXhwLCB7CisgICAgICAgIGdldChvYmos
IHByb3ApIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2gocHJvcC50b1N0cmluZygpKTsKKyAg
ICAgICAgICAgIGlmIChwcm9wID09IFN5bWJvbC5tYXRjaCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdW5kZWZpbmVkOworICAgICAgICAgICAgcmV0dXJuIG9ialtwcm9wXTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRv
IG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gUmVnRXhwLnByb3RvdHlwZVtT
eW1ib2wuc3BsaXRdLmNhbGwocHJveHksICJzcGxpdG1lIik7CisgICAgLy8gTm90ZTogQEBzcGxp
dCBjcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBSZWdFeHAgdXNpbmcgaXRzIEBAc3BlY2ll
cywgYW5kIHBlcmZvcm1zCisgICAgLy8gdGhlIHNwbGl0IG9wZXJhdGlvbiB3aXRoIHRoYXQgbmV3
IGluc3RhbmNlLiBIZW5jZSwgdGhlIHByb3h5IGlzIG9ubHkgYWJsZSB0byBvYnNlcnZlCisgICAg
Ly8gZ2V0cyB1cCB0byB0aGUgY3JlYXRpb24gb2YgdGhlIG5ldyBpbnN0YW5jZS4KKyAgICBhc3Nl
cnQoYWNjZXNzZXMgPT0gImNvbnN0cnVjdG9yLGZsYWdzLFN5bWJvbChTeW1ib2wubWF0Y2gpLFN5
bWJvbChTeW1ib2wudG9QcmltaXRpdmUpLHRvU3RyaW5nLHNvdXJjZSxmbGFncyIsCisgICAgICAg
ICJQcm94eSBub3QgYWJsZSB0byBvYnNlcnZlIHNvbWUgZ2V0cyIpOworICAgIC8vIFRoZSBuZXcg
aW5zdGFuY2Ugb2YgdGhlIFJlZ0V4cCB3b3VsZCBoYXZlIGJlZW4gY29uc3RydWN0ZWQgd2l0aCB0
aGUgcGF0dGVybiBmcm9tCisgICAgLy8gdGhlIHByb3h5IHRvU3RyaW5nKCkgaS5lLiAiXC9sdFwv
IiBpbnN0ZWFkIG9mIHNvdXJjZSwgYmVjYXVzZSB0aGUgcHJveHkgaXMgYW4KKyAgICAvLyBvYmpl
Y3Qgd2l0aG91dCBhIFtAQG1hdGNoXSBwcm9wZXJ0eS4KKyAgICBhc3NlcnQocmVzdWx0ID09ICJz
cGxpdG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMi5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRl
c3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjYgQEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1bmN0aW9u
IGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAgICAg
ICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8gUmVnRXhwIHdpdGggb3ZlcnJpZGRlbiBbQEBz
cGVjaWVzXTogVGVzdGluZyBFUzYgMjEuMi41LjExOiA0LiBMZXQgQyBiZSA/IFNwZWNpZXNDb25z
dHJ1Y3RvcihyeCwgJVJlZ0V4cCUpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMg
PSBbXTsKKyAgICBsZXQgb3JpZ0Rlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKFJlZ0V4cCwgU3ltYm9sLnNwZWNpZXMpOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShSZWdFeHAsIFN5bWJvbC5zcGVjaWVzLCB7CisgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goU3ltYm9sLnNwZWNpZXMudG9TdHJpbmcoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gL2l0L3k7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGxldCBv
YmogPSBuZXcgUmVnRXhwOworICAgIGxldCBlcnJvclN0cjsKKworICAgIGFzc2VydChhY2Nlc3Nl
cyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0
IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmopOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAi
U3ltYm9sKFN5bWJvbC5zcGVjaWVzKSIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2gg
ZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3Rl
ZCByZXN1bHQiKTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFn
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9z
dHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncy5qcwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmlu
Zy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWZsYWdzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1bmN0aW9uIGFz
c2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAgICAgICAg
dGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8gUmVnRXhwLnByb3RvdHlwZSB3aXRoIG92ZXJyaWRk
ZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJp
bmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZsYWcgPSAi
ZmxhZ3MiOworICAgIGxldCBmbGFnVmFsdWUgPSAiIjsKKworICAgIGxldCBhY2Nlc3NlcyA9IFtd
OworICAgIGxldCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoUmVnRXhwLnByb3RvdHlwZSwgZmxhZyk7CisKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHko
UmVnRXhwLnByb3RvdHlwZSwgZmxhZywgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgIHJldHVybiBmbGFnVmFs
dWU7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0gL2l0LzsKKworICAgIGFzc2Vy
dChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7
CisgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmopOworICAgIGFzc2VydChhY2Nl
c3NlcyA9PSBmbGFnLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9u
Iik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7
Cit9KSgpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5n
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZ2xvYmFsLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC5qcwkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbC5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDI4IEBACisvL0AgcnVuRGVmYXVsdAorCitmdW5jdGlvbiBhc3NlcnQodGVz
dGVkVmFsdWUsIG1zZykgeworICAgIGlmICghdGVzdGVkVmFsdWUpCisgICAgICAgIHRocm93IEVy
cm9yKG1zZyk7Cit9CisKKy8vIFJlZ0V4cC5wcm90b3R5cGUgd2l0aCBvdmVycmlkZGVuIGZsYWdz
OiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/IFRvU3RyaW5nKD8gR2V0
KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBmbGFnID0gImdsb2JhbCI7
CisgICAgbGV0IGZsYWdWYWx1ZSA9IGZhbHNlOworCisgICAgbGV0IGFjY2Vzc2VzID0gW107Cisg
ICAgbGV0IG9yaWdEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihS
ZWdFeHAucHJvdG90eXBlLCBmbGFnKTsKKworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWdF
eHAucHJvdG90eXBlLCBmbGFnLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBhY2Nlc3Nlcy5wdXNoKGZsYWcpOworICAgICAgICAgICAgcmV0dXJuIGZsYWdWYWx1ZTsK
KyAgICAgICAgfQorICAgIH0pOworICAgIGxldCBvYmogPSAvaXQvOworCisgICAgYXNzZXJ0KGFj
Y2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMiKTsKKyAg
ICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7CisgICAgYXNzZXJ0KGFjY2Vzc2Vz
ID09IGZsYWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsK
KyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30p
KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9yZUNhc2UuanMJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1bmN0aW9uIGFz
c2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAgICAgICAg
dGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8gUmVnRXhwLnByb3RvdHlwZSB3aXRoIG92ZXJyaWRk
ZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJp
bmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZsYWcgPSAi
aWdub3JlQ2FzZSI7CisgICAgbGV0IGZsYWdWYWx1ZSA9IGZhbHNlOworCisgICAgbGV0IGFjY2Vz
c2VzID0gW107CisgICAgbGV0IG9yaWdEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBlLCBmbGFnKTsKKworICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShSZWdFeHAucHJvdG90eXBlLCBmbGFnLCB7CisgICAgICAgIGdldDogZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKGZsYWcpOworICAgICAgICAgICAgcmV0dXJu
IGZsYWdWYWx1ZTsKKyAgICAgICAgfQorICAgIH0pOworICAgIGxldCBvYmogPSAvaXQvOworCisg
ICAgYXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4g
cHJvcHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7CisgICAgYXNz
ZXJ0KGFjY2Vzc2VzID09IGZsYWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhw
ZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCBy
ZXN1bHQiKTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxp
bmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5l
LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5l
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1
bmN0aW9uIGFzc2VydCh0ZXN0ZWRWYWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkK
KyAgICAgICAgdGhyb3cgRXJyb3IobXNnKTsKK30KKworLy8gUmVnRXhwLnByb3RvdHlwZSB3aXRo
IG92ZXJyaWRkZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJl
ID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0
IGZsYWcgPSAibXVsdGlsaW5lIjsKKyAgICBsZXQgZmxhZ1ZhbHVlID0gZmFsc2U7CisKKyAgICBs
ZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQgb3JpZ0Rlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcpOworCisgICAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5cGUsIGZsYWcsIHsKKyAgICAgICAgZ2V0OiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goZmxhZyk7CisgICAgICAgICAg
ICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAgICB9CisgICAgfSk7CisgICAgbGV0IG9iaiA9IC9p
dC87CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3Zl
cnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQob2JqKTsK
KyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxhZywgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBt
YXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4
cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMz
LXN0aWNreS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlj
a3kuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3ku
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorLy9AIHJ1bkRlZmF1bHQKKworZnVu
Y3Rpb24gYXNzZXJ0KHRlc3RlZFZhbHVlLCBtc2cpIHsKKyAgICBpZiAoIXRlc3RlZFZhbHVlKQor
ICAgICAgICB0aHJvdyBFcnJvcihtc2cpOworfQorCisvLyBSZWdFeHAucHJvdG90eXBlIHdpdGgg
b3ZlcnJpZGRlbiBmbGFnczogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUg
PyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQg
ZmxhZyA9ICJzdGlja3kiOworICAgIGxldCBmbGFnVmFsdWUgPSBmYWxzZTsKKworICAgIGxldCBh
Y2Nlc3NlcyA9IFtdOworICAgIGxldCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgZmxhZyk7CisKKyAgICBPYmplY3QuZGVm
aW5lUHJvcGVydHkoUmVnRXhwLnByb3RvdHlwZSwgZmxhZywgeworICAgICAgICBnZXQ6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgIHJl
dHVybiBmbGFnVmFsdWU7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0gL2l0LzsK
KworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlk
ZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmopOworICAg
IGFzc2VydChhY2Nlc3NlcyA9PSBmbGFnLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNo
IGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0
ZWQgcmVzdWx0Iik7Cit9KSgpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5p
Y29kZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9zdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11bmljb2Rl
LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZS5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisvL0AgcnVuRGVmYXVsdAorCitmdW5j
dGlvbiBhc3NlcnQodGVzdGVkVmFsdWUsIG1zZykgeworICAgIGlmICghdGVzdGVkVmFsdWUpCisg
ICAgICAgIHRocm93IEVycm9yKG1zZyk7Cit9CisKKy8vIFJlZ0V4cC5wcm90b3R5cGUgd2l0aCBv
dmVycmlkZGVuIGZsYWdzOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBiZSA/
IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBm
bGFnID0gInVuaWNvZGUiOworICAgIGxldCBmbGFnVmFsdWUgPSBmYWxzZTsKKworICAgIGxldCBh
Y2Nlc3NlcyA9IFtdOworICAgIGxldCBvcmlnRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgZmxhZyk7CisKKyAgICBPYmplY3QuZGVm
aW5lUHJvcGVydHkoUmVnRXhwLnByb3RvdHlwZSwgZmxhZywgeworICAgICAgICBnZXQ6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaChmbGFnKTsKKyAgICAgICAgICAgIHJl
dHVybiBmbGFnVmFsdWU7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBsZXQgb2JqID0gL2l0LzsK
KworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlk
ZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmopOworICAg
IGFzc2VydChhY2Nlc3NlcyA9PSBmbGFnLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8gbm90IG1hdGNo
IGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0
ZWQgcmVzdWx0Iik7Cit9KSgpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5n
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM4IEBACisvL0AgcnVuRGVmYXVsdAorCitmdW5jdGlvbiBhc3NlcnQodGVzdGVkVmFsdWUs
IG1zZykgeworICAgIGlmICghdGVzdGVkVmFsdWUpCisgICAgICAgIHRocm93IEVycm9yKG1zZyk7
Cit9CisKKy8vIFJlZ0V4cC5wcm90b3R5cGUgd2l0aCBvdmVycmlkZGVuIGV4ZWM6IFRlc3Rpbmcg
RVM2IDIxLjIuNS4xMTogMTkuYi4gTGV0IHogYmUgPyBSZWdFeHBFeGVjKHNwbGl0dGVyLCBTKS4K
KyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IG9yaWdEZXNj
cmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBl
LCAiZXhlYyIpOworICAgIGxldCBvcmlnRXhlYyA9IG9yaWdEZXNjcmlwdG9yLnZhbHVlOworCisg
ICAgbGV0IG9iaiA9IC9pdC87CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZ0V4cC5wcm90
b3R5cGUsICJleGVjIiwgeworICAgICAgICB2YWx1ZTogZnVuY3Rpb24oc3RyKSB7CisgICAgICAg
ICAgICBhY2Nlc3Nlcy5wdXNoKCJleGVjIik7CisgICAgICAgICAgICByZXR1cm4gb3JpZ0V4ZWMu
Y2FsbCh0aGlzLCBzdHIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICAvLyBUaGUgQEBzcGxp
dCBzbG93IHBhdGggc2hvdWxkIGNhbGwgYW4gaW50ZXJuYWwgdmVyc2lvbiBvZiBzdWJzdHIuIE1h
a2Ugc3VyZSB0aGF0CisgICAgLy8gaXQncyBub3QgY2FsbGluZyB0aGUgcHVibGljIHZlcnNpb24g
d2hpY2ggY2FuIGJlIG92ZXJyaWRkZW4uCisgICAgU3RyaW5nLnByb3RvdHlwZS5zdWJzdHIgPSBm
dW5jdGlvbihzdGFydCwgbGVuZ3RoKSB7CisgICAgICAgIHRocm93IEVycm9yKCJTaG91bGQgbm90
IGNhbGwgb3ZlcnJpZGRlbiBzdWJzdHIiKTsKKyAgICB9CisKKyAgICAvLyBUaGUgQEBzcGxpdCBz
bG93IHBhdGggc2hvdWxkIG9ubHkgY2FsbCB0aGUgaW50ZXJuYWwgdmVyc2lvbiBvZiBpbmNsdWRl
cy4gTWFrZSBzdXJlCisgICAgLy8gdGhhdCBpdCdzIG5vdCBjYWxsaW5nIHRoZSBwdWJsaWMgdmVy
c2lvbiB3aGljaCBjYW4gYmUgb3ZlcnJpZGRlbi4KKyAgICBTdHJpbmcucHJvdG90eXBlLmluY2x1
ZGVzID0gZnVuY3Rpb24ocGF0dGVybikgeworICAgICAgICB0aHJvdyBFcnJvcigiU2hvdWxkIG5v
dCBjYWxsIG92ZXJyaWRkZW4gaW5jbHVkZXMiKTsKKyAgICB9CisKKyAgICBhc3NlcnQoYWNjZXNz
ZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxl
dCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQob2JqKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0g
ImV4ZWMsZXhlYyxleGVjLGV4ZWMsZXhlYyxleGVjIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5v
dCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJV
bmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cy5qcwkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1wcm90
b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMuanMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1MTAgQEAKKy8vQCBydW5EZWZhdWx0CisKK2Z1bmN0aW9uIGFzc2VydCh0ZXN0ZWRW
YWx1ZSwgbXNnKSB7CisgICAgaWYgKCF0ZXN0ZWRWYWx1ZSkKKyAgICAgICAgdGhyb3cgRXJyb3Io
bXNnKTsKK30KKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gVGVzdGluZyB0
aGUgc3RyaW5nIHRoYXQgd2UncmUgY2FsbGluZyBzcGxpdCBvbi4KKworLy8gUHJveGllZCBTdHJp
bmcgc3ViY2xhc3MuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAg
IGNsYXNzIEV4dFN0cmluZyBleHRlbmRzIFN0cmluZyB7IH0KKyAgICB2YXIgb2JqID0gbmV3IEV4
dFN0cmluZygic3BsaXRtZSIpOworICAgIHZhciBwcm94eSA9IG5ldyBQcm94eShvYmosIHsKKyAg
ICAgICAgZ2V0KG9iaiwgcHJvcCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaChwcm9wLnRv
U3RyaW5nKCkpOworICAgICAgICAgICAgaWYgKHByb3AgPT09ICJ0b1N0cmluZyIpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGFjY2Vz
c2VzLnB1c2goImluX3RvU3RyaW5nIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBvYmou
dG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICByZXR1cm4gb2JqW3Byb3BdOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhc3NlcnQoYWNj
ZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAg
IGxldCByZXN1bHQgPSBTdHJpbmcucHJvdG90eXBlLnNwbGl0LmNhbGwocHJveHksICJpdCIpOyAg
ICAKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIlN5bWJvbChTeW1ib2wudG9QcmltaXRpdmUpLHRv
U3RyaW5nLGluX3RvU3RyaW5nIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBl
Y3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJl
c3VsdCIpOworfSkoKTsKKworLy8gT2JqZWN0IHRoYXQgbG9va3MgbGlrZSBhIHN0cmluZy4KKyhm
dW5jdGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgdmFyIG9iaiA9IHsKKyAg
ICAgICAgW1N5bWJvbC50b1ByaW1pdGl2ZV0oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNo
KFN5bWJvbC50b1ByaW1pdGl2ZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIHJldHVybiAic3Bs
aXRtZSI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1
bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBT
dHJpbmcucHJvdG90eXBlLnNwbGl0LmNhbGwob2JqLCAiaXQiKTsgICAgCisgICAgYXNzZXJ0KGFj
Y2Vzc2VzID09ICJTeW1ib2woU3ltYm9sLnRvUHJpbWl0aXZlKSIsICJQcm9wZXJ0eSBhY2Nlc3Nl
cyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGws
bWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIE9iamVjdCB0aGF0IGxvb2tz
IGxpa2UgYSBzdHJpbmcuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOwor
ICAgIHZhciBvYmogPSB7CisgICAgICAgIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgYWNjZXNz
ZXMucHVzaCgidG9TdHJpbmciKTsKKyAgICAgICAgICAgIHJldHVybiAic3BsaXRtZSI7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNh
bGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSBTdHJpbmcucHJvdG90
eXBlLnNwbGl0LmNhbGwob2JqLCAiaXQiKTsgICAgCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJ0
b1N0cmluZyIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsK
KyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30p
KCk7CisKKy8vIFN0cmluZyBzdWJjbGFzcyB3aXRoIG92ZXJyaWRkZW4gQEBzcGxpdC4KKyhmdW5j
dGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisgICAgY2xhc3MgRXh0U3RyaW5nIGV4
dGVuZHMgU3RyaW5nIHsKKyAgICAgICAgW1N5bWJvbC5zcGxpdF0gKHN0cikgeworICAgICAgICAg
ICAgYWNjZXNzZXMucHVzaCgiU3ltYm9sKFN5bWJvbC5zcGxpdCkiKTsKKyAgICAgICAgICAgIHJl
dHVybiBSZWdFeHAucHJvdG90eXBlW1N5bWJvbC5zcGxpdF0uY2FsbCgvaXQvLCBzdHIpOworICAg
ICAgICB9CisgICAgfTsKKworICAgIHZhciBvYmogPSBuZXcgRXh0U3RyaW5nOworCisgICAgYXNz
ZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMi
KTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7ICAgIAorICAgIGFzc2Vy
dChhY2Nlc3NlcyA9PSAiU3ltYm9sKFN5bWJvbC5zcGxpdCkiLCAiUHJvcGVydHkgYWNjZXNzZXMg
ZG8gbm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1l
IiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisKKy8vIE9iamVjdCB3aXRoIG92ZXJy
aWRkZW4gQEBzZWFyY2guCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOwor
ICAgIHZhciBvYmogPSB7CisgICAgICAgIFtTeW1ib2wuc3BsaXRdIChzdHIpIHsKKyAgICAgICAg
ICAgIGFjY2Vzc2VzLnB1c2goIlN5bWJvbChTeW1ib2wuc3BsaXQpIik7CisgICAgICAgICAgICBy
ZXR1cm4gUmVnRXhwLnByb3RvdHlwZVtTeW1ib2wuc3BsaXRdLmNhbGwoL2l0Lywgc3RyKTsKKyAg
ICAgICAgfSwKKyAgICB9CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVk
IGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIu
c3BsaXQob2JqKTsgICAgCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJTeW1ib2woU3ltYm9sLnNw
bGl0KSIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAg
ICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7
CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFRlc3RpbmcgdGhlIHJlZ2V4
cCBvYmplY3QgdGhhdCB3ZSdyZSBjYWxsaW5nIHNwbGl0IHdpdGguCisKKy8vIFN1YmNsYXNzIHdp
dGggb3ZlcnJpZGRlbiBbQEBzcGVjaWVzXTogVGVzdGluZyBFUzYgMjEuMi41LjExOiA0LiBMZXQg
QyBiZSA/IFNwZWNpZXNDb25zdHJ1Y3RvcihyeCwgJVJlZ0V4cCUpLgorKGZ1bmN0aW9uICgpIHsK
KyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBjbGFzcyBUZXN0UmVnRXhwIGV4dGVuZHMgUmVn
RXhwIHsgfQorICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShUZXN0UmVnRXhwLCBTeW1ib2wuc3Bl
Y2llcywgeworICAgICAgICB2YWx1ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nl
cy5wdXNoKFN5bWJvbC5zcGVjaWVzLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIC9p
dC95OworICAgICAgICB9CisgICAgfSk7CisgICAgbGV0IG9iaiA9IG5ldyBUZXN0UmVnRXhwOwor
ICAgIGxldCBlcnJvclN0cjsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0
ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1l
Ii5zcGxpdChvYmopOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiU3ltYm9sKFN5bWJvbC5zcGVj
aWVzKSIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAg
ICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7
CisKKy8vIFJlZ0V4cCBzdWJjbGFzcyB3aXRoIGNvbnN0cnVjdG9yOiBUZXN0aW5nIEVTNiAyMS4y
LjUuMTE6IDQuIExldCBDIGJlID8gU3BlY2llc0NvbnN0cnVjdG9yKHJ4LCAlUmVnRXhwJSkuCiso
ZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOworICAgIGNsYXNzIFRlc3RSZWdF
eHAgZXh0ZW5kcyBSZWdFeHAgeworICAgICAgICBjb25zdHJ1Y3RvcihzdHIsIGZsYWdzKSB7Cisg
ICAgICAgICAgICBzdXBlcihzdHIsIGZsYWdzKTsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2go
ImNvbnN0cnVjdG9yIik7CisgICAgICAgIH0KKyAgICB9CisgICAgbGV0IG9iaiA9IG5ldyBUZXN0
UmVnRXhwKCJpdCIpOworCisgICAgYXNzZXJ0KGFjY2Vzc2VzID09ICJjb25zdHJ1Y3RvciIsICJ1
bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSAi
c3BsaXRtZSIuc3BsaXQob2JqKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImNvbnN0cnVjdG9y
LGNvbnN0cnVjdG9yIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlv
biIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIp
OworfSkoKTsKKworLy8gQW4gb2JqZWN0IHdpdGggc3BlY2llcyBjb25zdHJ1Y3RvcjogVGVzdGlu
ZyBFUzYgMjEuMi41LjExOiA0LiBMZXQgQyBiZSA/IFNwZWNpZXNDb25zdHJ1Y3RvcihyeCwgJVJl
Z0V4cCUpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAgICBsZXQg
b2JqID0geyBjb25zdHJ1Y3Rvcjoge30gfTsKKyAgICBvYmouY29uc3RydWN0b3JbU3ltYm9sLnNw
ZWNpZXNdID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGFjY2Vzc2VzLnB1c2goImNvbnN0cnVjdG9y
Iik7CisgICAgICAgIHJldHVybiAvaXQveTsKKyAgICB9OworICAgIG9ialtTeW1ib2wuc3BsaXRd
ID0gZnVuY3Rpb24oc3RyLCBsaW1pdCkgeworICAgICAgICBhY2Nlc3Nlcy5wdXNoKFN5bWJvbC5z
cGxpdC50b1N0cmluZygpKTsKKyAgICAgICAgcmV0dXJuIFJlZ0V4cC5wcm90b3R5cGVbU3ltYm9s
LnNwbGl0XS5jYWxsKHRoaXMsIHN0ciwgbGltaXQpOworICAgIH07CisKKyAgICBhc3NlcnQoYWNj
ZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAg
IGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQob2JqKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMg
PT0gIlN5bWJvbChTeW1ib2wuc3BsaXQpLGNvbnN0cnVjdG9yIiwgIlByb3BlcnR5IGFjY2Vzc2Vz
IGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxt
ZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKKworLy8gUmVnRXhwIG9iamVjdCB3aXRo
IG92ZXJyaWRkZW4gZmxhZ3M6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJl
ID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0
IGZsYWdzID0gWyAiZmxhZ3MiLCAiZ2xvYmFsIiwgImlnbm9yZUNhc2UiLCAibXVsdGlsaW5lIiwg
InN0aWNreSIsICJ1bmljb2RlIiBdOworICAgIGxldCBmbGFnVmFsdWVzID0gWyAiIiwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlIF07CisgICAgZm9yIChsZXQgaW5kZXggaW4gZmxh
Z3MpIHsKKyAgICAgICAgKGZ1bmN0aW9uKGZsYWcsIGZsYWdWYWx1ZSkgeworICAgICAgICAgICAg
bGV0IGFjY2Vzc2VzID0gW107CisgICAgICAgICAgICBsZXQgb2JqID0gL2l0LzsKKyAgICAgICAg
ICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGZsYWcsIHsKKyAgICAgICAgICAgICAgICBn
ZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKGZsYWcp
OworICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8g
b3ZlcnJpZGRlbiBwcm9wcyIpOworICAgICAgICAgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5z
cGxpdChvYmopOworICAgICAgICAgICAgYXNzZXJ0KGFjY2Vzc2VzID09IGZsYWcsICJQcm9wZXJ0
eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICAgICAgICAgIGFzc2Vy
dChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworICAgICAgICB9KSAo
ZmxhZ3NbaW5kZXhdLCBmbGFnVmFsdWVzW2luZGV4XSk7CisgICAgfQorfSkoKTsKKworLy8gUmVn
RXhwIHN1YmNsYXNzIHdpdGggb3ZlcnJpZGRlbiBmbGFncyBpbiBzdWJjbGFzcyBtZXRob2Q6IFRl
c3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngs
ICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGZsYWdzID0gWyAiZmxhZ3MiLCAi
Z2xvYmFsIiwgImlnbm9yZUNhc2UiLCAibXVsdGlsaW5lIiwgInN0aWNreSIsICJ1bmljb2RlIiBd
OworICAgIGxldCBmbGFnVmFsdWVzID0gWyAiIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlIF07CisgICAgZm9yIChsZXQgaW5kZXggaW4gZmxhZ3MpIHsKKyAgICAgICAgKGZ1bmN0
aW9uKGZsYWcsIGZsYWdWYWx1ZSkgeworICAgICAgICAgICAgbGV0IGFjY2Vzc2VzID0gW107Cisg
ICAgICAgICAgICBjbGFzcyBUZXN0UmVnRXhwIGV4dGVuZHMgUmVnRXhwIHsKKyAgICAgICAgICAg
ICAgICBnZXQgW2ZsYWddKCkgeworICAgICAgICAgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKGZs
YWcpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBsZXQgb2JqID0gbmV3IFRlc3RSZWdF
eHAoL2l0Lyk7CisKKyAgICAgICAgICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhwZWN0
ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgICAgICAgICBsZXQgcmVzdWx0ID0g
InNwbGl0bWUiLnNwbGl0KG9iaik7CisgICAgICAgICAgICBhc3NlcnQoYWNjZXNzZXMgPT0gZmxh
ZywgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgICAg
ICAgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwgIlVuZXhwZWN0ZWQgcmVzdWx0Iik7CisK
KyAgICAgICAgfSkgKGZsYWdzW2luZGV4XSwgZmxhZ1ZhbHVlc1tpbmRleF0pOworICAgIH0KK30p
KCk7CisKKy8vIFJlZ0V4cCBzdWJjbGFzcyB3aXRoIG92ZXJyaWRkZW4gZmxhZ3MgdXNpbmcgT2Jq
ZWN0LmRlZmluZVByb3BlcnR5OiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBi
ZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxl
dCBmbGFncyA9IFsgImZsYWdzIiwgImdsb2JhbCIsICJpZ25vcmVDYXNlIiwgIm11bHRpbGluZSIs
ICJzdGlja3kiLCAidW5pY29kZSIgXTsKKyAgICBsZXQgZmxhZ1ZhbHVlcyA9IFsgIiIsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSBdOworICAgIGZvciAobGV0IGluZGV4IGluIGZs
YWdzKSB7CisgICAgICAgIChmdW5jdGlvbihmbGFnLCBmbGFnVmFsdWUpIHsKKyAgICAgICAgICAg
IGxldCBhY2Nlc3NlcyA9IFtdOworICAgICAgICAgICAgY2xhc3MgVGVzdFJlZ0V4cCBleHRlbmRz
IFJlZ0V4cCB7IH07CisgICAgICAgICAgICBsZXQgb2JqID0gbmV3IFRlc3RSZWdFeHAoL2l0Lyk7
CisKKyAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGZsYWcsIHsKKyAgICAg
ICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBhY2Nlc3Nl
cy5wdXNoKGZsYWcpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmxhZ1ZhbHVlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBhc3NlcnQoYWNj
ZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAg
ICAgICAgICAgbGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmopOworICAgICAgICAgICAg
YXNzZXJ0KGFjY2Vzc2VzID09IGZsYWcsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2gg
ZXhwZWN0YXRpb24iKTsKKyAgICAgICAgICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJV
bmV4cGVjdGVkIHJlc3VsdCIpOworCisgICAgICAgIH0pIChmbGFnc1tpbmRleF0sIGZsYWdWYWx1
ZXNbaW5kZXhdKTsKKyAgICB9Cit9KSgpOworCisvLyBBbnkgb2JqZWN0IHdpdGggc3BlY2llcyBj
b25zdHJ1Y3RvcjogVGVzdGluZyBFUzYgMjEuMi41LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0
cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNz
ZXMgPSBbXTsKKyAgICBsZXQgb2JqID0geyBjb25zdHJ1Y3Rvcjoge30gfTsKKyAgICBvYmouY29u
c3RydWN0b3JbU3ltYm9sLnNwZWNpZXNdID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGFjY2Vzc2Vz
LnB1c2goImNvbnN0cnVjdG9yIik7CisgICAgICAgIHJldHVybiAvaXQveTsKKyAgICB9OworICAg
IG9ialtTeW1ib2wuc3BsaXRdID0gZnVuY3Rpb24oc3RyLCBsaW1pdCkgeworICAgICAgICBhY2Nl
c3Nlcy5wdXNoKFN5bWJvbC5zcGxpdC50b1N0cmluZygpKTsKKyAgICAgICAgcmV0dXJuIFJlZ0V4
cC5wcm90b3R5cGVbU3ltYm9sLnNwbGl0XS5jYWxsKHRoaXMsIHN0ciwgbGltaXQpOworICAgIH07
CisKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCAiZmxhZ3MiLCB7CisgICAgICAgIGdl
dDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJmbGFncyIpOworICAg
ICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhc3NlcnQoYWNj
ZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9wcyIpOworICAg
IGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQob2JqKTsKKyAgICBhc3NlcnQoYWNjZXNzZXMg
PT0gIlN5bWJvbChTeW1ib2wuc3BsaXQpLGZsYWdzLGNvbnN0cnVjdG9yIiwgIlByb3BlcnR5IGFj
Y2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0g
InNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsKKworLy8gQW55IG9iamVjdCB3
aXRoIGN1c3RvbSBwcm90b3R5cGU6IFRlc3RpbmcgRVM2IDIxLjIuNS4xMTogNS4gTGV0IGZsYWdz
IGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5jdGlvbiAoKSB7CisgICAg
bGV0IGFjY2Vzc2VzID0gW107CisgICAgbGV0IFRlc3RSZWdFeHBQcm90byA9IHsKKyAgICAgICAg
Z2V0IGZsYWdzKCkgeworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgiZmxhZ3MiKTsKKyAgICAg
ICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfSwKKyAgICAgICAgdG9TdHJpbmcoKSB7CisgICAg
ICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJ0b1N0cmluZyIpOworICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX3JlZ2V4LnRvU3RyaW5nKCk7CisgICAgICAgIH0sCisgICAgICAgIGdldCBzb3VyY2UoKSB7
CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJzb3VyY2UiKTsKKyAgICAgICAgICAgIHJldHVy
biB0aGlzLl9yZWdleC5zb3VyY2U7CisgICAgICAgIH0KKyAgICB9CisgICAgVGVzdFJlZ0V4cFBy
b3RvLl9fcHJvdG9fXyA9IFJlZ0V4cC5wcm90b3R5cGU7CisKKyAgICBsZXQgVGVzdFJlZ0V4cCA9
IGZ1bmN0aW9uKHJlZ2V4KSB7CisgICAgICAgIGFjY2Vzc2VzLnB1c2goImNvbnN0cnVjdG9yIik7
CisgICAgICAgIHRoaXMuX3JlZ2V4ID0gbmV3IFJlZ0V4cChyZWdleCk7CisgICAgfQorICAgIFRl
c3RSZWdFeHAucHJvdG90eXBlID0gVGVzdFJlZ0V4cFByb3RvOworICAgIFRlc3RSZWdFeHBQcm90
by5jb25zdHJ1Y3RvciA9IFRlc3RSZWdFeHA7CisKKyAgICBsZXQgb2JqID0gbmV3IFRlc3RSZWdF
eHAoL2l0Lyk7CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImNvbnN0cnVjdG9yIiwgInVuZXhw
ZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9ICJzcGxp
dG1lIi5zcGxpdChvYmopOworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiY29uc3RydWN0b3IsZmxh
Z3Msc291cmNlIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIp
OworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOwor
fSkoKTsKKworLy8gMiBsZXZlbHMgb2Ygc3ViY2xhc3NlczogVGVzdGluZyBFUzYgMjEuMi41LjEx
OiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1bmN0
aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKworICAgIGNsYXNzIFJlZ0V4cEIgZXh0
ZW5kcyBSZWdFeHAgeworICAgICAgICBnZXQgZmxhZ3MoKSB7CisgICAgICAgICAgICBhY2Nlc3Nl
cy5wdXNoKCJmbGFncyIpOworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisgICAg
fQorICAgIGNsYXNzIFJlZ0V4cEMgZXh0ZW5kcyBSZWdFeHBCIHsgfQorCisgICAgYXNzZXJ0KFJl
Z0V4cEIuX19wcm90b19fID09IFJlZ0V4cCk7CisgICAgYXNzZXJ0KFJlZ0V4cEMuX19wcm90b19f
ID09IFJlZ0V4cEIpOworCisgICAgbGV0IG9iaiA9IG5ldyBSZWdFeHBDKC9pdC8pOworCisgICAg
YXNzZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJv
cHMiKTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7CisgICAgYXNzZXJ0
KGFjY2Vzc2VzID09ICJmbGFncyIsICJQcm9wZXJ0eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhw
ZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCBy
ZXN1bHQiKTsKK30pKCk7CisKKy8vIDIgbGV2ZWxzIG9mIHN1YmNsYXNzZXMgd2l0aCBzdWJzdGl0
dXRlZCBwcm90b3R5cGUgYmVmb3JlIGluc3RhbnRpYXRpb246IFRlc3RpbmcgRVM2IDIxLjIuNS4x
MTogNS4gTGV0IGZsYWdzIGJlID8gVG9TdHJpbmcoPyBHZXQocngsICJmbGFncyIpKS4KKyhmdW5j
dGlvbiAoKSB7CisgICAgbGV0IGFjY2Vzc2VzID0gW107CisKKyAgICBjbGFzcyBCIGV4dGVuZHMg
UmVnRXhwIHsgfQorICAgIGNsYXNzIEMgZXh0ZW5kcyBCIHsgfQorCisgICAgYXNzZXJ0KEIuX19w
cm90b19fID09PSBSZWdFeHApOworICAgIGFzc2VydChDLl9fcHJvdG9fXyA9PT0gQik7CisgICAg
YXNzZXJ0KEIucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gUmVnRXhwLnByb3RvdHlwZSk7CisgICAg
YXNzZXJ0KEMucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gQi5wcm90b3R5cGUpOworCisgICAgbGV0
IFggPSBmdW5jdGlvbiAoKSB7fQorICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShYLnByb3RvdHlw
ZSwgImZsYWdzIiwgeworICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWNj
ZXNzZXMucHVzaCgiZmxhZ3MiKTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQor
ICAgIH0pOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShYLnByb3RvdHlwZSwgImV4ZWMiLCB7
CisgICAgICAgIHZhbHVlOiBmdW5jdGlvbihzdHIpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1
c2goImV4ZWMiKTsKKyAgICAgICAgICAgIHZhciBtYXRjaFJlc3VsdCA9IC9pdC95LmV4ZWMoc3Ry
LnN1YnN0cih0aGlzLmxhc3RJbmRleCkpOworICAgICAgICAgICAgaWYgKG1hdGNoUmVzdWx0KQor
ICAgICAgICAgICAgICAgIHRoaXMubGFzdEluZGV4ICs9IDI7IC8vIGxlbmd0aCBvZiAiaXQiLgor
ICAgICAgICAgICAgcmV0dXJuIG1hdGNoUmVzdWx0OworICAgICAgICB9CisgICAgfSk7CisKKyAg
ICAvLyBNb25rZXkgd2l0aCB0aGUgcHJvdG90eXBlIGNoYWluIGJlZm9yZSBpbnN0YW50aWF0aW5n
IEMuCisgICAgWC5fX3Byb3RvX18gPSBSZWdFeHA7CisgICAgWC5wcm90b3R5cGUuX19wcm90b19f
ID0gUmVnRXhwLnByb3RvdHlwZTsKKyAgICBDLl9fcHJvdG9fXyA9IFg7CisgICAgQy5wcm90b3R5
cGUuX19wcm90b19fID0gWC5wcm90b3R5cGU7CisKKyAgICBhc3NlcnQoWC5fX3Byb3RvX18gPT09
IFJlZ0V4cCk7CisgICAgYXNzZXJ0KEMuX19wcm90b19fID09PSBYKTsKKyAgICBhc3NlcnQoWC5w
cm90b3R5cGUuX19wcm90b19fID09PSBSZWdFeHAucHJvdG90eXBlKTsKKyAgICBhc3NlcnQoQy5w
cm90b3R5cGUuX19wcm90b19fID09PSBYLnByb3RvdHlwZSk7CisKKyAgICBsZXQgb2JqID0gbmV3
IEM7CisKKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3Zl
cnJpZGRlbiBwcm9wcyIpOworICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQob2JqKTsK
KyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gImZsYWdzLGV4ZWMsZXhlYyxleGVjLGV4ZWMsZXhlYyxl
eGVjIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRjaCBleHBlY3RhdGlvbiIpOworICAg
IGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOworfSkoKTsK
KworLy8gMiBsZXZlbHMgb2Ygc3ViY2xhc3NlcyB3aXRoIHN1YnN0aXR1dGVkIHByb3RvdHlwZSBh
ZnRlciBpbnN0YW50aWF0aW9uOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDUuIExldCBmbGFncyBi
ZSA/IFRvU3RyaW5nKD8gR2V0KHJ4LCAiZmxhZ3MiKSkuCisoZnVuY3Rpb24gKCkgeworICAgIGxl
dCBhY2Nlc3NlcyA9IFtdOworCisgICAgY2xhc3MgQiBleHRlbmRzIFJlZ0V4cCB7IH0KKyAgICBj
bGFzcyBDIGV4dGVuZHMgQiB7IH0KKworICAgIGFzc2VydChCLl9fcHJvdG9fXyA9PT0gUmVnRXhw
KTsKKyAgICBhc3NlcnQoQy5fX3Byb3RvX18gPT09IEIpOworICAgIGFzc2VydChCLnByb3RvdHlw
ZS5fX3Byb3RvX18gPT09IFJlZ0V4cC5wcm90b3R5cGUpOworICAgIGFzc2VydChDLnByb3RvdHlw
ZS5fX3Byb3RvX18gPT09IEIucHJvdG90eXBlKTsKKworICAgIGxldCBYID0gZnVuY3Rpb24gKCkg
e30KKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoWC5wcm90b3R5cGUsICJmbGFncyIsIHsKKyAg
ICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2goImZsYWdz
Iik7CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkoWC5wcm90b3R5cGUsICJleGVjIiwgeworICAgICAgICB2YWx1ZTog
ZnVuY3Rpb24oc3RyKSB7CisgICAgICAgICAgICBhY2Nlc3Nlcy5wdXNoKCJleGVjIik7CisgICAg
ICAgICAgICB2YXIgbWF0Y2hSZXN1bHQgPSAvaXQveS5leGVjKHN0ci5zdWJzdHIodGhpcy5sYXN0
SW5kZXgpKTsKKyAgICAgICAgICAgIGlmIChtYXRjaFJlc3VsdCkKKyAgICAgICAgICAgICAgICB0
aGlzLmxhc3RJbmRleCArPSAyOyAvLyBsZW5ndGggb2YgIml0Ii4KKyAgICAgICAgICAgIHJldHVy
biBtYXRjaFJlc3VsdDsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgLy8gSW5zdGFudGlhdGUg
QyBiZWZvcmUgbW9ua2V5aW5nIHdpdGggdGhlIHByb3RvdHlwZSBjaGFpbi4KKyAgICBsZXQgb2Jq
ID0gbmV3IEMoKTsKKworICAgIFguX19wcm90b19fID0gUmVnRXhwOworICAgIFgucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFJlZ0V4cC5wcm90b3R5cGU7CisgICAgQy5fX3Byb3RvX18gPSBYOworICAg
IEMucHJvdG90eXBlLl9fcHJvdG9fXyA9IFgucHJvdG90eXBlOworCisgICAgYXNzZXJ0KFguX19w
cm90b19fID09PSBSZWdFeHApOworICAgIGFzc2VydChDLl9fcHJvdG9fXyA9PT0gWCk7CisgICAg
YXNzZXJ0KFgucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gUmVnRXhwLnByb3RvdHlwZSk7CisgICAg
YXNzZXJ0KEMucHJvdG90eXBlLl9fcHJvdG9fXyA9PT0gWC5wcm90b3R5cGUpOworCisgICAgYXNz
ZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMi
KTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KG9iaik7CisgICAgYXNzZXJ0KGFj
Y2Vzc2VzID09ICJmbGFncyxleGVjLGV4ZWMsZXhlYyxleGVjLGV4ZWMsZXhlYyIsICJQcm9wZXJ0
eSBhY2Nlc3NlcyBkbyBub3QgbWF0Y2ggZXhwZWN0YXRpb24iKTsKKyAgICBhc3NlcnQocmVzdWx0
ID09ICJzcGwsbWUiLCAiVW5leHBlY3RlZCByZXN1bHQiKTsKK30pKCk7CisKKy8vIDIgbGV2ZWxz
IG9mIHN1YmNsYXNzZXMgd2l0aCBwcm94aWVkIHByb3RvdHlwZTogVGVzdGluZyBFUzYgMjEuMi41
LjExOiA1LiBMZXQgZmxhZ3MgYmUgPyBUb1N0cmluZyg/IEdldChyeCwgImZsYWdzIikpLgorKGZ1
bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKworICAgIGNsYXNzIEIgZXh0ZW5k
cyBSZWdFeHAgeyB9OworCisgICAgYXNzZXJ0KEIuX19wcm90b19fID09PSBSZWdFeHApOworICAg
IGFzc2VydChCLnByb3RvdHlwZS5fX3Byb3RvX18gPT09IFJlZ0V4cC5wcm90b3R5cGUpOworCisg
ICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KFJlZ0V4cC5wcm90b3R5cGUsIHsKKyAgICAgICAgZ2V0
OiBmdW5jdGlvbihvYmosIHByb3ApIHsKKyAgICAgICAgICAgIGFjY2Vzc2VzLnB1c2gocHJvcC50
b1N0cmluZygpKTsKKyAgICAgICAgICAgIGlmIChwcm9wID09PSAiZXhlYyIpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb24oc3RyKSB7CisgICAgICAgICAgICAgICAgICAgIGFjY2Vz
c2VzLnB1c2goImluX2V4ZWMiKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoUmVzdWx0
ID0gL2l0L3kuZXhlYyhzdHIuc3Vic3RyKHRoaXMubGFzdEluZGV4KSk7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChtYXRjaFJlc3VsdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFz
dEluZGV4ICs9IDI7IC8vIGxlbmd0aCBvZiAiaXQiLgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbWF0Y2hSZXN1bHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuIG9ialtwcm9wXTsKKyAgICAgICAgfQorICAgIH0pOworICAgIEIucHJvdG90
eXBlLl9fcHJvdG9fXyA9IHByb3h5OworCisgICAgbGV0IG9iaiA9IG5ldyBCKCk7CisKKyAgICBh
c3NlcnQoYWNjZXNzZXMgPT0gIiIsICJ1bmV4cGVjdGVkIGNhbGwgdG8gb3ZlcnJpZGRlbiBwcm9w
cyIpOworICAgIGxldCByZXN1bHQgPSAic3BsaXRtZSIuc3BsaXQob2JqKTsKKyAgICBhc3NlcnQo
YWNjZXNzZXMgPT0gIlN5bWJvbChTeW1ib2wuc3BsaXQpLGZsYWdzLFN5bWJvbChTeW1ib2wubWF0
Y2gpLGV4ZWMsaW5fZXhlYyxleGVjLGluX2V4ZWMsZXhlYyxpbl9leGVjLGV4ZWMsaW5fZXhlYyxl
eGVjLGluX2V4ZWMsZXhlYyxpbl9leGVjIiwgIlByb3BlcnR5IGFjY2Vzc2VzIGRvIG5vdCBtYXRj
aCBleHBlY3RhdGlvbiIpOworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVj
dGVkIHJlc3VsdCIpOworfSkoKTsKKworLy8gUmVnRXhwIHN1YmNsYXNzIHdpdGggb3ZlcnJpZGRl
biBleGVjOiBUZXN0aW5nIEVTNiAyMS4yLjUuMTE6IDE5LmIuIExldCB6IGJlID8gUmVnRXhwRXhl
YyhzcGxpdHRlciwgUykuCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBhY2Nlc3NlcyA9IFtdOwor
ICAgIGNsYXNzIFRlc3RSZWdFeHAgZXh0ZW5kcyBSZWdFeHAgeworICAgICAgICBleGVjKHN0cikg
eworICAgICAgICAgICAgYWNjZXNzZXMucHVzaCgiZXhlYyIpOworICAgICAgICAgICAgcmV0dXJu
IFJlZ0V4cC5wcm90b3R5cGUuZXhlYy5jYWxsKHRoaXMsIHN0cik7CisgICAgICAgIH0KKyAgICB9
OworICAgIGxldCBvYmogPSBuZXcgVGVzdFJlZ0V4cCgvaXQvKTsKKworICAgIGFzc2VydChhY2Nl
c3NlcyA9PSAiIiwgInVuZXhwZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAg
bGV0IHJlc3VsdCA9ICJzcGxpdG1lIi5zcGxpdChvYmopOworICAgIGFzc2VydChhY2Nlc3NlcyA9
PSAiZXhlYyxleGVjLGV4ZWMsZXhlYyxleGVjLGV4ZWMiLCAiUHJvcGVydHkgYWNjZXNzZXMgZG8g
bm90IG1hdGNoIGV4cGVjdGF0aW9uIik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAic3BsLG1lIiwg
IlVuZXhwZWN0ZWQgcmVzdWx0Iik7Cit9KSgpOworCisvLyBQcm94aWVkIFJlZ0V4cCBvYnNlcnZp
bmcgZXZlcnkgZ2V0LgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMgPSBbXTsKKyAg
ICBsZXQgcmVnZXhwID0gbmV3IFJlZ0V4cCgvaXQvKTsKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJv
eHkocmVnZXhwLCB7CisgICAgICAgIGdldChvYmosIHByb3ApIHsKKyAgICAgICAgICAgIGFjY2Vz
c2VzLnB1c2gocHJvcC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIHJldHVybiBvYmpbcHJvcF07
CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiIiwgInVuZXhw
ZWN0ZWQgY2FsbCB0byBvdmVycmlkZGVuIHByb3BzIik7CisgICAgbGV0IHJlc3VsdCA9ICJzcGxp
dG1lIi5zcGxpdChwcm94eSk7CisgICAgLy8gTm90ZTogQEBzcGxpdCBjcmVhdGVzIGEgbmV3IGlu
c3RhbmNlIG9mIHRoZSBSZWdFeHAgdXNpbmcgaXRzIEBAc3BlY2llcywgYW5kIHBlcmZvcm1zCisg
ICAgLy8gdGhlIHNwbGl0IG9wZXJhdGlvbiB3aXRoIHRoYXQgbmV3IGluc3RhbmNlLiBIZW5jZSwg
dGhlIHByb3h5IGlzIG9ubHkgYWJsZSB0byBvYnNlcnZlCisgICAgLy8gZ2V0cyB1cCB0byB0aGUg
Y3JlYXRpb24gb2YgdGhlIG5ldyBpbnN0YW5jZS4KKyAgICBhc3NlcnQoYWNjZXNzZXMgPT0gIlN5
bWJvbChTeW1ib2wuc3BsaXQpLGNvbnN0cnVjdG9yLGZsYWdzLFN5bWJvbChTeW1ib2wubWF0Y2gp
LHNvdXJjZSIsCisgICAgICAgICJQcm94eSBub3QgYWJsZSB0byBvYnNlcnZlIHNvbWUgZ2V0cyIp
OworICAgIGFzc2VydChyZXN1bHQgPT0gInNwbCxtZSIsICJVbmV4cGVjdGVkIHJlc3VsdCIpOwor
fSkoKTsKKworLy8gUHJveGllZCBSZWdFeHAgKHdpdGhvdXQgQEBtYXRjaCkgb2JzZXJ2aW5nIGV2
ZXJ5IGdldC4KKy8vIFRoaXMgaXMgdG8gZm9yY2UgdGhlIFJlZ0V4cCBAc3BlY2llcyBjb25zdHJ1
Y3RvciB0byBhY2Nlc3Mgc291cmNlLgorKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgYWNjZXNzZXMg
PSBbXTsKKyAgICBsZXQgcmVnZXhwID0gbmV3IFJlZ0V4cCgvaXQvKTsKKyAgICBsZXQgcHJveHkg
PSBuZXcgUHJveHkocmVnZXhwLCB7CisgICAgICAgIGdldChvYmosIHByb3ApIHsKKyAgICAgICAg
ICAgIGFjY2Vzc2VzLnB1c2gocHJvcC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGlmIChwcm9w
ID09IFN5bWJvbC5tYXRjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAg
ICAgICAgICAgcmV0dXJuIG9ialtwcm9wXTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgYXNz
ZXJ0KGFjY2Vzc2VzID09ICIiLCAidW5leHBlY3RlZCBjYWxsIHRvIG92ZXJyaWRkZW4gcHJvcHMi
KTsKKyAgICBsZXQgcmVzdWx0ID0gInNwbGl0bWUiLnNwbGl0KHByb3h5KTsKKyAgICAvLyBOb3Rl
OiBAQHNwbGl0IGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFJlZ0V4cCB1c2luZyBpdHMg
QEBzcGVjaWVzLCBhbmQgcGVyZm9ybXMKKyAgICAvLyB0aGUgc3BsaXQgb3BlcmF0aW9uIHdpdGgg
dGhhdCBuZXcgaW5zdGFuY2UuIEhlbmNlLCB0aGUgcHJveHkgaXMgb25seSBhYmxlIHRvIG9ic2Vy
dmUKKyAgICAvLyBnZXRzIHVwIHRvIHRoZSBjcmVhdGlvbiBvZiB0aGUgbmV3IGluc3RhbmNlLgor
ICAgIGFzc2VydChhY2Nlc3NlcyA9PSAiU3ltYm9sKFN5bWJvbC5zcGxpdCksY29uc3RydWN0b3Is
ZmxhZ3MsU3ltYm9sKFN5bWJvbC5tYXRjaCksU3ltYm9sKFN5bWJvbC50b1ByaW1pdGl2ZSksdG9T
dHJpbmcsc291cmNlLGZsYWdzIiwKKyAgICAgICAgIlByb3h5IG5vdCBhYmxlIHRvIG9ic2VydmUg
c29tZSBnZXRzIik7CisgICAgLy8gVGhlIG5ldyBpbnN0YW5jZSBvZiB0aGUgUmVnRXhwIHdvdWxk
IGhhdmUgYmVlbiBjb25zdHJ1Y3RlZCB3aXRoIHRoZSBwYXR0ZXJuIGZyb20KKyAgICAvLyB0aGUg
cHJveHkgdG9TdHJpbmcoKSBpLmUuICJcL2x0XC8iIGluc3RlYWQgb2Ygc291cmNlLCBiZWNhdXNl
IHRoZSBwcm94eSBpcyBhbgorICAgIC8vIG9iamVjdCB3aXRob3V0IGEgW0BAbWF0Y2hdIHByb3Bl
cnR5LgorICAgIGFzc2VydChyZXN1bHQgPT0gInNwbGl0bWUiLCAiVW5leHBlY3RlZCByZXN1bHQi
KTsKK30pKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93
blByb3BlcnR5TmFtZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCShyZXZpc2lvbiAxOTkzMzgpCisrKyBM
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgdmFyIGV4cGVjdGVkUHJvcGVydHlOYW1l
c1NldCA9IHsKICAgICAiRXJyb3IucHJvdG90eXBlIjogIlsnY29uc3RydWN0b3InLCAnbWVzc2Fn
ZScsICduYW1lJywgJ3RvU3RyaW5nJ10iLAogICAgICJNYXRoIjogIlsnRScsJ0xOMTAnLCdMTjIn
LCdMT0cxMEUnLCdMT0cyRScsJ1BJJywnU1FSVDFfMicsJ1NRUlQyJywnYWJzJywnYWNvcycsJ2Fj
b3NoJywnYXNpbicsJ2FzaW5oJywnYXRhbicsJ2F0YW4yJywnYXRhbmgnLCdjYnJ0JywnY2VpbCcs
J2NsejMyJywnY29zJywnY29zaCcsJ2V4cCcsJ2V4cG0xJywnZmxvb3InLCdmcm91bmQnLCdoeXBv
dCcsJ2ltdWwnLCdsb2cnLCdsb2cxMCcsJ2xvZzFwJywnbG9nMicsJ21heCcsJ21pbicsJ3Bvdycs
J3JhbmRvbScsJ3JvdW5kJywnc2lnbicsJ3NpbicsJ3NpbmgnLCdzcXJ0JywndGFuJywndGFuaCcs
J3RydW5jJ10iLAogICAgICJKU09OIjogIlsncGFyc2UnLCAnc3RyaW5naWZ5J10iLAotICAgICJT
eW1ib2wiOiAiWydmb3InLCAnaGFzSW5zdGFuY2UnLCAnaXRlcmF0b3InLCAna2V5Rm9yJywgJ2xl
bmd0aCcsICdtYXRjaCcsICduYW1lJywgJ3Byb3RvdHlwZScsICdzZWFyY2gnLCAnc3BlY2llcycs
ICd0b1ByaW1pdGl2ZScsICd0b1N0cmluZ1RhZycsICd1bnNjb3BhYmxlcyddIiwKKyAgICAiU3lt
Ym9sIjogIlsnZm9yJywgJ2hhc0luc3RhbmNlJywgJ2l0ZXJhdG9yJywgJ2tleUZvcicsICdsZW5n
dGgnLCAnbWF0Y2gnLCAnbmFtZScsICdwcm90b3R5cGUnLCAnc2VhcmNoJywgJ3NwZWNpZXMnLCAn
c3BsaXQnLCAndG9QcmltaXRpdmUnLCAndG9TdHJpbmdUYWcnLCAndW5zY29wYWJsZXMnXSIsCiAg
ICAgIlN5bWJvbC5wcm90b3R5cGUiOiAiWydjb25zdHJ1Y3RvcicsICd0b1N0cmluZycsICd2YWx1
ZU9mJ10iLAogICAgICJNYXAiOiAiWydsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXSIsCiAg
ICAgIk1hcC5wcm90b3R5cGUiOiAiWydjbGVhcicsICdjb25zdHJ1Y3RvcicsICdkZWxldGUnLCAn
ZW50cmllcycsICdmb3JFYWNoJywgJ2dldCcsICdoYXMnLCAna2V5cycsICdzZXQnLCAnc2l6ZScs
ICd2YWx1ZXMnXSIsCkluZGV4OiBMYXlvdXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05h
dGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5nLzE1LjUuNC8xNS41LjQuMTRfU3RyaW5nLnByb3RvdHlw
ZS5zcGxpdC9TMTUuNS40LjE0X0ExX1QzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9zcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjVfU3RyaW5n
LzE1LjUuNC8xNS41LjQuMTRfU3RyaW5nLnByb3RvdHlwZS5zcGxpdC9TMTUuNS40LjE0X0ExX1Qz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTk5MzM4KQorKysgTGF5b3V0VGVzdHMvc3B1dG5pay9D
b25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS41X1N0cmluZy8xNS41LjQvMTUuNS40LjE0
X1N0cmluZy5wcm90b3R5cGUuc3BsaXQvUzE1LjUuNC4xNF9BMV9UMy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBTMTUuNS40LjE0X0ExX1QzCiAKLUZBSUwgVHlw
ZUVycm9yOiBUeXBlIGVycm9yCitGQUlMIFR5cGVFcnJvcjogU3RyaW5nLnByb3RvdHlwZS5zcGxp
dCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkCiAKIFRFU1QgQ09NUExFVEUK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>276286</attachid>
            <date>2016-04-12 15:35:36 -0700</date>
            <delta_ts>2016-04-12 15:35:36 -0700</delta_ts>
            <desc>Diff between patches 2.</desc>
            <filename>patch-diff.txt</filename>
            <type>text/plain</type>
            <size>1215</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">MjY3YzI2Nwo8IEBAIC05NSwzICs5MywxOTUgQEAgZnVuY3Rpb24gbWF0Y2goc3RyKQotLS0KPiBA
QCAtOTUsMyArOTMsMTg3IEBAIGZ1bmN0aW9uIG1hdGNoKHN0cikKMzYxZDM2MAo8ICsgICAgbGV0
IHJlc3VsdCA9IFtdOwozNjNjMzYyCjwgKyAgICBsZXQgcmVzdWx0TGVuZ3RoID0gMDsKLS0tCj4g
KyAgICBsZXQgcmVzdWx0ID0gW107CjM4NGQzODIKPCArICAgICAgICByZXN1bHQubGVuZ3RoID0g
MTsKNDE3ZDQxNAo8ICsgICAgICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgcmVz
dWx0TGVuZ3RoLCBzdWJTdHIpOwo0MTljNDE2CjwgKyAgICAgICAgICAgICAgICArK3Jlc3VsdExl
bmd0aDsKLS0tCj4gKyAgICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCByZXN1
bHQubGVuZ3RoLCBzdWJTdHIpOwo0MjEsNDIyYzQxOAo8ICsgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdExlbmd0aCA9PSBsaW1pdCkgewo8ICsgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5sZW5n
dGggPSByZXN1bHRMZW5ndGg7Ci0tLQo+ICsgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5n
dGggPT0gbGltaXQpCjQyNGM0MjAKPCArICAgICAgICAgICAgICAgIH0KLS0tCj4gKwo0MzhkNDMz
CjwgKyAgICAgICAgICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgcmVzdWx0TGVu
Z3RoLCBuZXh0Q2FwdHVyZSk7CjQ0MGM0MzUKPCArICAgICAgICAgICAgICAgICAgICArK3Jlc3Vs
dExlbmd0aDsKLS0tCj4gKyAgICAgICAgICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3Vs
dCwgcmVzdWx0Lmxlbmd0aCwgbmV4dENhcHR1cmUpOwo0NDIsNDQzYzQzNwo8ICsgICAgICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHRMZW5ndGggPT0gbGltaXQpIHsKPCArICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0Lmxlbmd0aCA9IHJlc3VsdExlbmd0aDsKLS0tCj4gKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT0gbGltaXQpCjQ0NWQ0MzgKPCArICAgICAgICAg
ICAgICAgICAgICB9CjQ1Nyw0NThjNDUwCjwgKyAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCBy
ZXN1bHRMZW5ndGgsIHJlbWFpbmluZ1N0cik7CjwgKyAgICByZXN1bHQubGVuZ3RoID0gKytyZXN1
bHRMZW5ndGg7Ci0tLQo+ICsgICAgQHB1dEJ5VmFsRGlyZWN0KHJlc3VsdCwgcmVzdWx0Lmxlbmd0
aCwgcmVtYWluaW5nU3RyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>276732</attachid>
            <date>2016-04-19 10:15:52 -0700</date>
            <delta_ts>2016-04-19 10:15:52 -0700</delta_ts>
            <desc>browser sunspider benchmark baseline on MBP</desc>
            <filename>base-sunspider.txt</filename>
            <type>text/plain</type>
            <size>1635</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkVTVUxUUyAobWVh
bnMgYW5kIDk1JSBjb25maWRlbmNlIGludGVydmFscykKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KVG90YWw6ICAgICAgICAgICAgICAgICAxMTcuMm1zICsvLSAy
LjUlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIDNkOiAg
ICAgICAgICAgICAgICAgICAxNS44bXMgKy8tIDMuNiUKICAgIGN1YmU6ICAgICAgICAgICAgICAg
IDUuMG1zICsvLSAwLjAlCiAgICBtb3JwaDogICAgICAgICAgICAgICA1LjFtcyArLy0gNC40JQog
ICAgcmF5dHJhY2U6ICAgICAgICAgICAgNS43bXMgKy8tIDguNSUKCiAgYWNjZXNzOiAgICAgICAg
ICAgICAgIDEyLjRtcyArLy0gNC45JQogICAgYmluYXJ5LXRyZWVzOiAgICAgICAgMi4wbXMgKy8t
IDAuMCUKICAgIGZhbm5rdWNoOiAgICAgICAgICAgIDUuM21zICsvLSA5LjElCiAgICBuYm9keTog
ICAgICAgICAgICAgICAyLjBtcyArLy0gMC4wJQogICAgbnNpZXZlOiAgICAgICAgICAgICAgMy4x
bXMgKy8tIDcuMyUKCiAgYml0b3BzOiAgICAgICAgICAgICAgICA4LjRtcyArLy0gNS45JQogICAg
M2JpdC1iaXRzLWluLWJ5dGU6ICAgMS4xbXMgKy8tIDIwLjUlCiAgICBiaXRzLWluLWJ5dGU6ICAg
ICAgICAyLjNtcyArLy0gMTUuMCUKICAgIGJpdHdpc2UtYW5kOiAgICAgICAgIDIuMG1zICsvLSAw
LjAlCiAgICBuc2lldmUtYml0czogICAgICAgICAzLjBtcyArLy0gMC4wJQoKICBjb250cm9sZmxv
dzogICAgICAgICAgIDIuMG1zICsvLSAwLjAlCiAgICByZWN1cnNpdmU6ICAgICAgICAgICAyLjBt
cyArLy0gMC4wJQoKICBjcnlwdG86ICAgICAgICAgICAgICAgIDguMm1zICsvLSA1LjUlCiAgICBh
ZXM6ICAgICAgICAgICAgICAgICA0LjBtcyArLy0gMC4wJQogICAgbWQ1OiAgICAgICAgICAgICAg
ICAgMi4xbXMgKy8tIDEwLjglCiAgICBzaGExOiAgICAgICAgICAgICAgICAyLjFtcyArLy0gMTAu
OCUKCiAgZGF0ZTogICAgICAgICAgICAgICAgIDExLjltcyArLy0gNS4zJQogICAgZm9ybWF0LXRv
ZnRlOiAgICAgICAgNi42bXMgKy8tIDUuNiUKICAgIGZvcm1hdC14cGFyYjogICAgICAgIDUuM21z
ICsvLSA2LjUlCgogIG1hdGg6ICAgICAgICAgICAgICAgICAgOS42bXMgKy8tIDUuMiUKICAgIGNv
cmRpYzogICAgICAgICAgICAgIDIuN21zICsvLSAxMi44JQogICAgcGFydGlhbC1zdW1zOiAgICAg
ICAgNC45bXMgKy8tIDQuNiUKICAgIHNwZWN0cmFsLW5vcm06ICAgICAgIDIuMG1zICsvLSAwLjAl
CgogIHJlZ2V4cDogICAgICAgICAgICAgICAgNS43bXMgKy8tIDguNSUKICAgIGRuYTogICAgICAg
ICAgICAgICAgIDUuN21zICsvLSA4LjUlCgogIHN0cmluZzogICAgICAgICAgICAgICA0My4ybXMg
Ky8tIDIuOCUKICAgIGJhc2U2NDogICAgICAgICAgICAgIDQuNm1zICsvLSA4LjAlCiAgICBmYXN0
YTogICAgICAgICAgICAgICA1LjdtcyArLy0gNi4xJQogICAgdGFnY2xvdWQ6ICAgICAgICAgICAg
OC40bXMgKy8tIDQuNCUKICAgIHVucGFjay1jb2RlOiAgICAgICAgMTkuMW1zICsvLSAyLjElCiAg
ICB2YWxpZGF0ZS1pbnB1dDogICAgICA1LjRtcyArLy0gMjIuNyUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>276733</attachid>
            <date>2016-04-19 10:16:33 -0700</date>
            <delta_ts>2016-04-19 12:05:23 -0700</delta_ts>
            <desc>browser sunspider benchmark new on MBP</desc>
            <filename>new-sunspider.txt</filename>
            <type>text/plain</type>
            <size>1638</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkVTVUxUUyAobWVh
bnMgYW5kIDk1JSBjb25maWRlbmNlIGludGVydmFscykKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KVG90YWw6ICAgICAgICAgICAgICAgICAxMTcuNW1zICsvLSAy
LjElCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIDNkOiAg
ICAgICAgICAgICAgICAgICAxNS41bXMgKy8tIDMuMyUKICAgIGN1YmU6ICAgICAgICAgICAgICAg
IDUuMG1zICsvLSAwLjAlCiAgICBtb3JwaDogICAgICAgICAgICAgICA1LjNtcyArLy0gNi41JQog
ICAgcmF5dHJhY2U6ICAgICAgICAgICAgNS4ybXMgKy8tIDguNyUKCiAgYWNjZXNzOiAgICAgICAg
ICAgICAgIDEyLjZtcyArLy0gNi4xJQogICAgYmluYXJ5LXRyZWVzOiAgICAgICAgMi4ybXMgKy8t
IDIwLjUlCiAgICBmYW5ua3VjaDogICAgICAgICAgICA1LjNtcyArLy0gNi41JQogICAgbmJvZHk6
ICAgICAgICAgICAgICAgMi4xbXMgKy8tIDEwLjglCiAgICBuc2lldmU6ICAgICAgICAgICAgICAz
LjBtcyArLy0gMC4wJQoKICBiaXRvcHM6ICAgICAgICAgICAgICAgIDguMm1zICsvLSAzLjclCiAg
ICAzYml0LWJpdHMtaW4tYnl0ZTogICAxLjBtcyArLy0gMC4wJQogICAgYml0cy1pbi1ieXRlOiAg
ICAgICAgMi4xbXMgKy8tIDEwLjglCiAgICBiaXR3aXNlLWFuZDogICAgICAgICAyLjFtcyArLy0g
MTAuOCUKICAgIG5zaWV2ZS1iaXRzOiAgICAgICAgIDMuMG1zICsvLSAwLjAlCgogIGNvbnRyb2xm
bG93OiAgICAgICAgICAgMi4wbXMgKy8tIDAuMCUKICAgIHJlY3Vyc2l2ZTogICAgICAgICAgIDIu
MG1zICsvLSAwLjAlCgogIGNyeXB0bzogICAgICAgICAgICAgICAgOC4ybXMgKy8tIDUuNSUKICAg
IGFlczogICAgICAgICAgICAgICAgIDQuMm1zICsvLSAxMC44JQogICAgbWQ1OiAgICAgICAgICAg
ICAgICAgMi4wbXMgKy8tIDAuMCUKICAgIHNoYTE6ICAgICAgICAgICAgICAgIDIuMG1zICsvLSAw
LjAlCgogIGRhdGU6ICAgICAgICAgICAgICAgICAxMi4wbXMgKy8tIDQuOSUKICAgIGZvcm1hdC10
b2Z0ZTogICAgICAgIDcuM21zICsvLSA0LjclCiAgICBmb3JtYXQteHBhcmI6ICAgICAgICA0Ljdt
cyArLy0gMTAuMyUKCiAgbWF0aDogICAgICAgICAgICAgICAgICA5LjNtcyArLy0gNy4zJQogICAg
Y29yZGljOiAgICAgICAgICAgICAgMi40bXMgKy8tIDE1LjQlCiAgICBwYXJ0aWFsLXN1bXM6ICAg
ICAgICA0LjltcyArLy0gOC4zJQogICAgc3BlY3RyYWwtbm9ybTogICAgICAgMi4wbXMgKy8tIDAu
MCUKCiAgcmVnZXhwOiAgICAgICAgICAgICAgICA1LjhtcyArLy0gNy44JQogICAgZG5hOiAgICAg
ICAgICAgICAgICAgNS44bXMgKy8tIDcuOCUKCiAgc3RyaW5nOiAgICAgICAgICAgICAgIDQzLjlt
cyArLy0gMy42JQogICAgYmFzZTY0OiAgICAgICAgICAgICAgNS4wbXMgKy8tIDkuNSUKICAgIGZh
c3RhOiAgICAgICAgICAgICAgIDYuMG1zICsvLSAxNC45JQogICAgdGFnY2xvdWQ6ICAgICAgICAg
ICAgOC44bXMgKy8tIDcuNSUKICAgIHVucGFjay1jb2RlOiAgICAgICAgMTkuNW1zICsvLSA0LjMl
CiAgICB2YWxpZGF0ZS1pbnB1dDogICAgICA0LjZtcyArLy0gMTAuOSUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>276742</attachid>
            <date>2016-04-19 12:05:06 -0700</date>
            <delta_ts>2016-04-19 12:05:06 -0700</delta_ts>
            <desc>browser sunspider benchmark baseline on MacPro</desc>
            <filename>base-macpro-sunspider.txt</filename>
            <type>text/plain</type>
            <size>1634</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkVTVUxUUyAobWVh
bnMgYW5kIDk1JSBjb25maWRlbmNlIGludGVydmFscykKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KVG90YWw6ICAgICAgICAgICAgICAgICAxMzguOW1zICsvLSAx
LjMlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIDNkOiAg
ICAgICAgICAgICAgICAgICAyMS4ybXMgKy8tIDYuNyUKICAgIGN1YmU6ICAgICAgICAgICAgICAg
IDcuMm1zICsvLSAxMy45JQogICAgbW9ycGg6ICAgICAgICAgICAgICAgNy4xbXMgKy8tIDE0LjYl
CiAgICByYXl0cmFjZTogICAgICAgICAgICA2LjltcyArLy0gMy4zJQoKICBhY2Nlc3M6ICAgICAg
ICAgICAgICAgMTUuMm1zICsvLSA1LjglCiAgICBiaW5hcnktdHJlZXM6ICAgICAgICAyLjNtcyAr
Ly0gMjkuNSUKICAgIGZhbm5rdWNoOiAgICAgICAgICAgIDYuNG1zICsvLSA1LjglCiAgICBuYm9k
eTogICAgICAgICAgICAgICAzLjBtcyArLy0gMC4wJQogICAgbnNpZXZlOiAgICAgICAgICAgICAg
My41bXMgKy8tIDEwLjglCgogIGJpdG9wczogICAgICAgICAgICAgICAgOS4wbXMgKy8tIDAuMCUK
ICAgIDNiaXQtYml0cy1pbi1ieXRlOiAgIDEuMG1zICsvLSAwLjAlCiAgICBiaXRzLWluLWJ5dGU6
ICAgICAgICAzLjBtcyArLy0gMC4wJQogICAgYml0d2lzZS1hbmQ6ICAgICAgICAgMi4wbXMgKy8t
IDAuMCUKICAgIG5zaWV2ZS1iaXRzOiAgICAgICAgIDMuMG1zICsvLSAwLjAlCgogIGNvbnRyb2xm
bG93OiAgICAgICAgICAgMi4wbXMgKy8tIDAuMCUKICAgIHJlY3Vyc2l2ZTogICAgICAgICAgIDIu
MG1zICsvLSAwLjAlCgogIGNyeXB0bzogICAgICAgICAgICAgICAxMS4wbXMgKy8tIDAuMCUKICAg
IGFlczogICAgICAgICAgICAgICAgIDUuMG1zICsvLSAwLjAlCiAgICBtZDU6ICAgICAgICAgICAg
ICAgICAzLjBtcyArLy0gMC4wJQogICAgc2hhMTogICAgICAgICAgICAgICAgMy4wbXMgKy8tIDAu
MCUKCiAgZGF0ZTogICAgICAgICAgICAgICAgIDE2LjFtcyArLy0gMS40JQogICAgZm9ybWF0LXRv
ZnRlOiAgICAgICAxMC4xbXMgKy8tIDIuMiUKICAgIGZvcm1hdC14cGFyYjogICAgICAgIDYuMG1z
ICsvLSAwLjAlCgogIG1hdGg6ICAgICAgICAgICAgICAgICAxMC43bXMgKy8tIDMuMiUKICAgIGNv
cmRpYzogICAgICAgICAgICAgIDMuMG1zICsvLSAwLjAlCiAgICBwYXJ0aWFsLXN1bXM6ICAgICAg
ICA1LjdtcyArLy0gNi4xJQogICAgc3BlY3RyYWwtbm9ybTogICAgICAgMi4wbXMgKy8tIDAuMCUK
CiAgcmVnZXhwOiAgICAgICAgICAgICAgICA2LjNtcyArLy0gNS41JQogICAgZG5hOiAgICAgICAg
ICAgICAgICAgNi4zbXMgKy8tIDUuNSUKCiAgc3RyaW5nOiAgICAgICAgICAgICAgIDQ3LjRtcyAr
Ly0gMy43JQogICAgYmFzZTY0OiAgICAgICAgICAgICAgNS4xbXMgKy8tIDQuNCUKICAgIGZhc3Rh
OiAgICAgICAgICAgICAgIDYuM21zICsvLSA1LjUlCiAgICB0YWdjbG91ZDogICAgICAgICAgICA5
LjJtcyArLy0gMy4zJQogICAgdW5wYWNrLWNvZGU6ICAgICAgICAyMS43bXMgKy8tIDUuOCUKICAg
IHZhbGlkYXRlLWlucHV0OiAgICAgIDUuMW1zICsvLSA0LjQlCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>276743</attachid>
            <date>2016-04-19 12:06:25 -0700</date>
            <delta_ts>2016-04-19 12:06:25 -0700</delta_ts>
            <desc>browser sunspider benchmark new on MacPro</desc>
            <filename>new-macpro-sunspider.txt</filename>
            <type>text/plain</type>
            <size>1633</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkVTVUxUUyAobWVh
bnMgYW5kIDk1JSBjb25maWRlbmNlIGludGVydmFscykKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KVG90YWw6ICAgICAgICAgICAgICAgICAxMzkuMG1zICsvLSAy
LjMlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIDNkOiAg
ICAgICAgICAgICAgICAgICAxOS44bXMgKy8tIDMuMyUKICAgIGN1YmU6ICAgICAgICAgICAgICAg
IDYuN21zICsvLSA1LjIlCiAgICBtb3JwaDogICAgICAgICAgICAgICA2LjFtcyArLy0gOC42JQog
ICAgcmF5dHJhY2U6ICAgICAgICAgICAgNy4wbXMgKy8tIDAuMCUKCiAgYWNjZXNzOiAgICAgICAg
ICAgICAgIDE0LjhtcyArLy0gMy44JQogICAgYmluYXJ5LXRyZWVzOiAgICAgICAgMi4wbXMgKy8t
IDAuMCUKICAgIGZhbm5rdWNoOiAgICAgICAgICAgIDYuNG1zICsvLSA1LjglCiAgICBuYm9keTog
ICAgICAgICAgICAgICAzLjBtcyArLy0gMC4wJQogICAgbnNpZXZlOiAgICAgICAgICAgICAgMy40
bXMgKy8tIDEwLjklCgogIGJpdG9wczogICAgICAgICAgICAgICAgOS4xbXMgKy8tIDIuNSUKICAg
IDNiaXQtYml0cy1pbi1ieXRlOiAgIDEuMG1zICsvLSAwLjAlCiAgICBiaXRzLWluLWJ5dGU6ICAg
ICAgICAzLjFtcyArLy0gNy4zJQogICAgYml0d2lzZS1hbmQ6ICAgICAgICAgMi4wbXMgKy8tIDAu
MCUKICAgIG5zaWV2ZS1iaXRzOiAgICAgICAgIDMuMG1zICsvLSAwLjAlCgogIGNvbnRyb2xmbG93
OiAgICAgICAgICAgMi4xbXMgKy8tIDEwLjglCiAgICByZWN1cnNpdmU6ICAgICAgICAgICAyLjFt
cyArLy0gMTAuOCUKCiAgY3J5cHRvOiAgICAgICAgICAgICAgIDExLjBtcyArLy0gMC4wJQogICAg
YWVzOiAgICAgICAgICAgICAgICAgNS4xbXMgKy8tIDQuNCUKICAgIG1kNTogICAgICAgICAgICAg
ICAgIDMuMG1zICsvLSAwLjAlCiAgICBzaGExOiAgICAgICAgICAgICAgICAyLjltcyArLy0gNy44
JQoKICBkYXRlOiAgICAgICAgICAgICAgICAgMTYuNW1zICsvLSAyLjMlCiAgICBmb3JtYXQtdG9m
dGU6ICAgICAgIDEwLjVtcyArLy0gMy42JQogICAgZm9ybWF0LXhwYXJiOiAgICAgICAgNi4wbXMg
Ky8tIDAuMCUKCiAgbWF0aDogICAgICAgICAgICAgICAgIDEwLjZtcyArLy0gMy41JQogICAgY29y
ZGljOiAgICAgICAgICAgICAgMy4wbXMgKy8tIDAuMCUKICAgIHBhcnRpYWwtc3VtczogICAgICAg
IDUuNm1zICsvLSA2LjYlCiAgICBzcGVjdHJhbC1ub3JtOiAgICAgICAyLjBtcyArLy0gMC4wJQoK
ICByZWdleHA6ICAgICAgICAgICAgICAgIDYuM21zICsvLSA1LjUlCiAgICBkbmE6ICAgICAgICAg
ICAgICAgICA2LjNtcyArLy0gNS41JQoKICBzdHJpbmc6ICAgICAgICAgICAgICAgNDguOG1zICsv
LSA1LjIlCiAgICBiYXNlNjQ6ICAgICAgICAgICAgICA1LjBtcyArLy0gMC4wJQogICAgZmFzdGE6
ICAgICAgICAgICAgICAgNi4zbXMgKy8tIDUuNSUKICAgIHRhZ2Nsb3VkOiAgICAgICAgICAgIDku
Mm1zICsvLSAzLjMlCiAgICB1bnBhY2stY29kZTogICAgICAgIDIyLjltcyArLy0gOS4xJQogICAg
dmFsaWRhdGUtaW5wdXQ6ICAgICAgNS40bXMgKy8tIDYuOCUKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>