<?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>64202</bug_id>
          
          <creation_ts>2011-07-08 14:12:41 -0700</creation_ts>
          <short_desc>Enh: Improve handling of RegExp in the form of /.*blah.*/</short_desc>
          <delta_ts>2011-07-13 16:05:45 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>434300</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-07-08 14:12:41 -0700</bug_when>
    <thetext>The current regular expression code handles REs in the form of /.*blah.*/ by greedily matching all characters with the first &quot;.*&quot; and then back tracking to find the &quot;blah&quot;. Without capturing parens anywhere in the RE, we can look for the &quot;blah&quot; and then process the leading and trailing &quot;.*&quot;.  This should provide a big win for these types of REs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434928</commentid>
    <comment_count>1</comment_count>
      <attachid>100311</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-07-11 09:29:21 -0700</bug_when>
    <thetext>Created attachment 100311
Proposed patch

Proposed enhancement to both the Yarr interpreter and JIT to handle expressions in the form of /[^].*[?]&lt;sub-expr&gt;.*[$]/[m].  The terms in between the leading and trailing .*&apos;s cannot capture and also this enhancement is limited to single alternative expressions.  Process the inner terms and then look for the beginning of the string and end of the string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435253</commentid>
    <comment_count>2</comment_count>
      <attachid>100374</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-07-11 15:52:16 -0700</bug_when>
    <thetext>Created attachment 100374
Updated patch to fix win compilation error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436113</commentid>
    <comment_count>3</comment_count>
      <attachid>100374</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-12 17:35:26 -0700</bug_when>
    <thetext>Comment on attachment 100374
Updated patch to fix win compilation error.

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

&gt; Source/JavaScriptCore/yarr/YarrInterpreter.cpp:1074
&gt; +        if (pattern-&gt;m_multiline) {

These two if statements could be merged &amp; save a repeating the match assign &amp; return true.

if (!pattern-&gt;m_multiline &amp;&amp; ((term.anchors.m_bol &amp;&amp; matchBegin) || (term.anchors.m_eol &amp;&amp; matchEnd != input.end())))
    return false;

&gt; Source/JavaScriptCore/yarr/YarrInterpreter.cpp:1379
&gt; +            BACKTRACK();

I don&apos;t think we should ever be able to backtrack into here; I think this should be ASSERT_NOT_REACHED()?

&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:1011
&gt; +        saveStartIndex.append(branch32(Equal, matchPos, Imm32(m_checked)));

Please modify per our discussion, /.*\n\d+.*/ &quot;abc\n123&quot;.

&gt; Source/JavaScriptCore/yarr/YarrPattern.cpp:716
&gt; +        for (size_t alt = 0; alt &lt; alternatives.size(); ++alt) {

We shouldn&apos;t need a for-loop here, given the above guard!   possibly should switch the check to &quot;if (alternatives.size() != 1) return;&quot; (I don&apos;t think we ever have 0 alternatives, but just to be safe!), then drop the loop &amp; just work over alternatives[0].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436537</commentid>
    <comment_count>4</comment_count>
      <attachid>100690</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-07-13 11:20:16 -0700</bug_when>
    <thetext>Created attachment 100690
Patch with suggested updates</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436553</commentid>
    <comment_count>5</comment_count>
      <attachid>100694</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-07-13 11:30:23 -0700</bug_when>
    <thetext>Created attachment 100694
Previous patch with regex JIT turned back on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436740</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-07-13 16:05:45 -0700</bug_when>
    <thetext>Committed r90962: &lt;http://trac.webkit.org/changeset/90962&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100311</attachid>
            <date>2011-07-11 09:29:21 -0700</date>
            <delta_ts>2011-07-11 15:52:16 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>64202.patch</filename>
            <type>text/plain</type>
            <size>37384</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTA3NTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAK
KzIwMTEtMDctMTEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MjAyCisgICAgICAg
IEVuaDogSW1wcm92ZSBoYW5kbGluZyBvZiBSZWdFeHAgaW4gdGhlIGZvcm0gb2YgLy4qYmxhaC4q
LworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IGNvZGUgdG8gYm90aCB0aGUgWWFyciBpbnRlcnByZXRlciBhbmQgSklUIHRvIGhhbmRsZQorICAg
ICAgICB0aGVzZSBleHByZXNzaW9ucyBhIGxpdHRsZSBkaWZmZXJlbnRseS4gIEZpcnN0IG9mZiwg
dGhlIHRlcm1zCisgICAgICAgIGluIGJldHdlZW4gdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIC4q
J3MgY2Fubm90IGNhcHR1cmUgYW5kCisgICAgICAgIGFsc28gdGhpcyBlbmhhbmNlbWVudCBpcyBs
aW1pdGVkIHRvIHNpbmdsZSBhbHRlcm5hdGl2ZSBleHByZXNzaW9ucy4KKyAgICAgICAgSWYgYW4g
ZXhwcmVzc2lvbiBpcyBvZiB0aGUgcmlnaHQgZm9ybSB3aXRoIHRoZSBhZm9yZW1lbnRpb25lZAor
ICAgICAgICByZXN0cmljdGlvbnMsIHdlIHByb2Nlc3MgdGhlIGlubmVyIHRlcm1zIGFuZCB0aGVu
IGxvb2sgZm9yIHRoZQorICAgICAgICBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBhbmQgZW5kIG9m
IHRoZSBzdHJpbmcuICBUaGVyZSBpcyBoYW5kbGluZyAKKyAgICAgICAgZm9yIG11bHRpbGluZSBl
eHByZXNzaW9ucyB0byBhbGxvdyB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgdG8gYmUgCisgICAgICAg
IHJpZ2h0IGFmdGVyIGFuZCByaWdodCBiZWZvcmUgbmV3bGluZXMuCisKKyAgICAgICAgVGhpcyBl
bmhhbmNlbWVudCBzcGVlZHMgdXAgZXhwcmVzc2lvbnMgb2YgdGhpcyB0eXBlIDEyeCBvbgorICAg
ICAgICBhIE1hY0Jvb2tQcm8uCisKKyAgICAgICAgQ2xlYW5lZCB1cCAnY2FzZScgc3RhdGVtZW50
IGluZGVudGF0aW9uLgorCisgICAgICAgIEEgbmV3IHNldCBvZiB0ZXN0cyB3YXMgYWRkZWQgYXMg
TGF5b3V0VGVzdHMvZmFzdC9yZWdleC9kb3RzdGFyLmh0bWwKKworICAgICAgICAqIHlhcnIvWWFy
ckludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6OklucHV0
U3RyZWFtOjplbmQpOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6bWF0Y2hEb3RT
dGFyRW5jbG9zdXJlKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6Om1hdGNoRGlz
anVuY3Rpb24pOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmFzc2VydGlvbkRv
dFN0YXJFbmNsb3N1cmUpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmVtaXRE
aXNqdW5jdGlvbik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuaDoKKyAgICAgICAg
KEpTQzo6WWFycjo6Qnl0ZVRlcm06OkRvdFN0YXJFbmNsb3N1cmUpOgorICAgICAgICAqIHlhcnIv
WWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmdlbmVyYXRl
RG90U3RhckVuY2xvc3VyZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmJh
Y2t0cmFja0RvdFN0YXJFbmNsb3N1cmUpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJh
dG9yOjpnZW5lcmF0ZVRlcm0pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpi
YWNrdHJhY2tUZXJtKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6c2V0dXBBbHRlcm5hdGl2ZU9mZnNl
dHMpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpjb250YWlu
c0NhcHR1cmluZ1Rlcm1zKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1
Y3Rvcjo6b3B0aW1pemVEb3RTdGFyV3JhcHBlZEV4cHJlc3Npb25zKToKKyAgICAgICAgKEpTQzo6
WWFycjo6WWFyclBhdHRlcm46OmNvbXBpbGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4u
aDoKKyAgICAgICAgKEpTQzo6WWFycjo6UGF0dGVyblRlcm06OlBhdHRlcm5UZXJtKToKKwogMjAx
MS0wNy0xMSAgR2Fib3IgTG9raSAgPGxva2lAd2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdGhl
IGNvbmRpdGlvbiBvZiB0aGUgb3B0aW1pemVkIGNvZGUgaW4gZG91YmxlVHJhbnNmZXIKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAkocmV2
aXNpb24gOTA2OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNiArMjQzLDExIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBwb3MgPT0gbGVuZ3RoOwogICAgICAgICB9CiAKKyAgICAgICAgdW5zaWdu
ZWQgZW5kKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDsKKyAgICAgICAg
fQorCiAgICAgICAgIGJvb2wgY2hlY2tJbnB1dChpbnQgY291bnQpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmICgocG9zICsgY291bnQpIDw9IGxlbmd0aCkgewpAQCAtMTA0NCw2ICsxMDQ5LDQz
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTUmVnRXhwRXJyb3JOb01hdGNoOwogICAgIH0K
IAorICAgIGJvb2wgbWF0Y2hEb3RTdGFyRW5jbG9zdXJlKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5j
dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0odGVybSk7
CisgICAgICAgIHVuc2lnbmVkIG1hdGNoQmVnaW4gPSBjb250ZXh0LT5tYXRjaEJlZ2luOworICAg
IAorICAgICAgICBpZiAobWF0Y2hCZWdpbikgeworICAgICAgICAgICAgZm9yIChtYXRjaEJlZ2lu
LS07IHRydWU7IG1hdGNoQmVnaW4tLSkgeworICAgICAgICAgICAgICAgIGlmICh0ZXN0Q2hhcmFj
dGVyQ2xhc3MocGF0dGVybi0+bmV3bGluZUNoYXJhY3RlckNsYXNzLCBpbnB1dC5yZXJlYWQobWF0
Y2hCZWdpbikpKSB7CisgICAgICAgICAgICAgICAgICAgICsrbWF0Y2hCZWdpbjsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
aWYgKCFtYXRjaEJlZ2luKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIG1hdGNoRW5kID0gaW5wdXQuZ2V0UG9z
KCk7CisgICAgCisgICAgICAgIGZvciAoOyAobWF0Y2hFbmQgIT0gaW5wdXQuZW5kKCkpCisgICAg
ICAgICAgICAgJiYgKCF0ZXN0Q2hhcmFjdGVyQ2xhc3MocGF0dGVybi0+bmV3bGluZUNoYXJhY3Rl
ckNsYXNzLCBpbnB1dC5yZXJlYWQobWF0Y2hFbmQpKSk7IG1hdGNoRW5kKyspIHsgfQorICAgICAg
ICAKKyAgICAgICAgaWYgKHBhdHRlcm4tPm1fbXVsdGlsaW5lKSB7CisgICAgICAgICAgICBjb250
ZXh0LT5tYXRjaEJlZ2luID0gbWF0Y2hCZWdpbjsKKyAgICAgICAgICAgIGNvbnRleHQtPm1hdGNo
RW5kID0gbWF0Y2hFbmQ7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICgodGVybS5hbmNob3JzLm1fYm9sICYmIG1hdGNoQmVnaW4pIAorICAgICAgICAg
ICAgfHwgKCh0ZXJtLmFuY2hvcnMubV9lb2wgJiYgKG1hdGNoRW5kICE9IGlucHV0LmVuZCgpKSkp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnRleHQtPm1hdGNoQmVn
aW4gPSBtYXRjaEJlZ2luOworICAgICAgICBjb250ZXh0LT5tYXRjaEVuZCA9IG1hdGNoRW5kOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICNkZWZpbmUgTUFUQ0hfTkVYVCgpIHsgKytj
b250ZXh0LT50ZXJtOyBnb3RvIG1hdGNoQWdhaW47IH0KICNkZWZpbmUgQkFDS1RSQUNLKCkgeyAt
LWNvbnRleHQtPnRlcm07IGdvdG8gYmFja3RyYWNrOyB9CiAjZGVmaW5lIGN1cnJlbnRUZXJtKCkg
KGRpc2p1bmN0aW9uLT50ZXJtc1tjb250ZXh0LT50ZXJtXSkKQEAgLTEyMDMsOSArMTI0NSwxNCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwogICAgICAgICAgICAgQkFD
S1RSQUNLKCk7CiAKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVVbmNoZWNrSW5wdXQ6
Ci0gICAgICAgICAgICAgICAgaW5wdXQudW5jaGVja0lucHV0KGN1cnJlbnRUZXJtKCkuY2hlY2tJ
bnB1dENvdW50KTsKLSAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgIGNhc2Ug
Qnl0ZVRlcm06OlR5cGVVbmNoZWNrSW5wdXQ6CisgICAgICAgICAgICBpbnB1dC51bmNoZWNrSW5w
dXQoY3VycmVudFRlcm0oKS5jaGVja0lucHV0Q291bnQpOworICAgICAgICAgICAgTUFUQ0hfTkVY
VCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlRG90U3Rh
ckVuY2xvc3VyZToKKyAgICAgICAgICAgIGlmIChtYXRjaERvdFN0YXJFbmNsb3N1cmUoY3VycmVu
dFRlcm0oKSwgY29udGV4dCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwTWF0Y2g7
CisgICAgICAgICAgICBCQUNLVFJBQ0soKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFdlIHNo
b3VsZCBuZXZlciBmYWxsLXRocm91Z2ggdG8gaGVyZS4KQEAgLTEyNDIsOTEgKzEyODksOTQgQEAg
cHVibGljOgogICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQm9keUFsdGVybmF0aXZlRW5kOgog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICAgICAgICAgIGNhc2UgQnl0
ZVRlcm06OlR5cGVBbHRlcm5hdGl2ZUJlZ2luOgotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6
VHlwZUFsdGVybmF0aXZlRGlzanVuY3Rpb246IHsKLSAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0
ID0gY3VycmVudFRlcm0oKS5hbHRlcm5hdGl2ZS5uZXh0OwotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnRlcm0gKz0gb2Zmc2V0OwotICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPiAwKQotICAg
ICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7Ci0gICAgICAgICAgICAgICAgQkFDS1RSQUNL
KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQWx0ZXJu
YXRpdmVFbmQ6IHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmFja3RyYWNr
IGJhY2sgaW50byBhbiBhbHRlcm5hdGl2ZSBvZiB0aGUgbWFpbiBib2R5IG9mIHRoZSByZWdleC4K
LSAgICAgICAgICAgICAgICBCYWNrVHJhY2tJbmZvQWx0ZXJuYXRpdmUqIGJhY2tUcmFjayA9IHJl
aW50ZXJwcmV0X2Nhc3Q8QmFja1RyYWNrSW5mb0FsdGVybmF0aXZlKj4oY29udGV4dC0+ZnJhbWUg
KyBjdXJyZW50VGVybSgpLmZyYW1lTG9jYXRpb24pOwotICAgICAgICAgICAgICAgIHVuc2lnbmVk
IG9mZnNldCA9IGJhY2tUcmFjay0+b2Zmc2V0OwotICAgICAgICAgICAgICAgIGNvbnRleHQtPnRl
cm0gLT0gb2Zmc2V0OwotICAgICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQXNzZXJ0aW9uQk9MOgotICAgICAg
ICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUFzc2VydGlvbkVPTDoKLSAgICAgICAgICAgIGNhc2Ug
Qnl0ZVRlcm06OlR5cGVBc3NlcnRpb25Xb3JkQm91bmRhcnk6Ci0gICAgICAgICAgICAgICAgQkFD
S1RSQUNLKCk7Ci0KLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFj
dGVyT25jZToKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVy
Rml4ZWQ6Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3Rlckdy
ZWVkeToKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyTm9u
R3JlZWR5OgotICAgICAgICAgICAgICAgIGlmIChiYWNrdHJhY2tQYXR0ZXJuQ2hhcmFjdGVyKGN1
cnJlbnRUZXJtKCksIGNvbnRleHQpKQotICAgICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7
Ci0gICAgICAgICAgICAgICAgQkFDS1RSQUNLKCk7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyT25jZToKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRl
cm06OlR5cGVQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJGaXhlZDoKLSAgICAgICAgICAgIGNhc2UgQnl0
ZVRlcm06OlR5cGVQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJHcmVlZHk6Ci0gICAgICAgICAgICBjYXNl
IEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyTm9uR3JlZWR5OgotICAgICAgICAg
ICAgICAgIGlmIChiYWNrdHJhY2tQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXIoY3VycmVudFRlcm0oKSwg
Y29udGV4dCkpCi0gICAgICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKLSAgICAgICAgICAg
ICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVDaGFyYWN0
ZXJDbGFzczoKLSAgICAgICAgICAgICAgICBpZiAoYmFja3RyYWNrQ2hhcmFjdGVyQ2xhc3MoY3Vy
cmVudFRlcm0oKSwgY29udGV4dCkpCi0gICAgICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsK
LSAgICAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06
OlR5cGVCYWNrUmVmZXJlbmNlOgotICAgICAgICAgICAgICAgIGlmIChiYWNrdHJhY2tCYWNrUmVm
ZXJlbmNlKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQotICAgICAgICAgICAgICAgICAgICBNQVRD
SF9ORVhUKCk7Ci0gICAgICAgICAgICAgICAgQkFDS1RSQUNLKCk7Ci0gICAgICAgICAgICBjYXNl
IEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuOiB7Ci0gICAgICAgICAgICAgICAg
SlNSZWdFeHBSZXN1bHQgcmVzdWx0ID0gYmFja3RyYWNrUGFyZW50aGVzZXMoY3VycmVudFRlcm0o
KSwgY29udGV4dCk7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVBbHRlcm5hdGl2ZUJlZ2lu
OgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQWx0ZXJuYXRpdmVEaXNqdW5jdGlvbjogewor
ICAgICAgICAgICAgaW50IG9mZnNldCA9IGN1cnJlbnRUZXJtKCkuYWx0ZXJuYXRpdmUubmV4dDsK
KyAgICAgICAgICAgIGNvbnRleHQtPnRlcm0gKz0gb2Zmc2V0OworICAgICAgICAgICAgaWYgKG9m
ZnNldCA+IDApCisgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOworICAgICAgICAgICAgQkFD
S1RSQUNLKCk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUFsdGVybmF0
aXZlRW5kOiB7CisgICAgICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmFja3RyYWNrIGJhY2sg
aW50byBhbiBhbHRlcm5hdGl2ZSBvZiB0aGUgbWFpbiBib2R5IG9mIHRoZSByZWdleC4KKyAgICAg
ICAgICAgIEJhY2tUcmFja0luZm9BbHRlcm5hdGl2ZSogYmFja1RyYWNrID0gcmVpbnRlcnByZXRf
Y2FzdDxCYWNrVHJhY2tJbmZvQWx0ZXJuYXRpdmUqPihjb250ZXh0LT5mcmFtZSArIGN1cnJlbnRU
ZXJtKCkuZnJhbWVMb2NhdGlvbik7CisgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBiYWNr
VHJhY2stPm9mZnNldDsKKyAgICAgICAgICAgIGNvbnRleHQtPnRlcm0gLT0gb2Zmc2V0OworICAg
ICAgICAgICAgQkFDS1RSQUNLKCk7CisgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQgPT0gSlNSZWdFeHBNYXRjaCkgewotICAgICAgICAgICAgICAgICAgICBNQVRDSF9ORVhU
KCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgIT0gSlNSZWdFeHBOb01hdGNo
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBjYXNlIEJ5dGVU
ZXJtOjpUeXBlQXNzZXJ0aW9uQk9MOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQXNzZXJ0
aW9uRU9MOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQXNzZXJ0aW9uV29yZEJvdW5kYXJ5
OgorICAgICAgICAgICAgQkFDS1RSQUNLKCk7CiAKLSAgICAgICAgICAgICAgICBCQUNLVFJBQ0so
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRo
ZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW46Ci0gICAgICAgICAgICAgICAgaWYgKGJhY2t0cmFja1Bh
cmVudGhlc2VzT25jZUJlZ2luKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQotICAgICAgICAgICAg
ICAgICAgICBNQVRDSF9ORVhUKCk7Ci0gICAgICAgICAgICAgICAgQkFDS1RSQUNLKCk7Ci0gICAg
ICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZDoK
LSAgICAgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGFyZW50aGVzZXNPbmNlRW5kKGN1cnJlbnRU
ZXJtKCksIGNvbnRleHQpKQotICAgICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7Ci0gICAg
ICAgICAgICAgICAgQkFDS1RSQUNLKCk7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBl
UGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxCZWdpbjoKLSAgICAgICAgICAgICAgICBpZiAo
YmFja3RyYWNrUGFyZW50aGVzZXNUZXJtaW5hbEJlZ2luKGN1cnJlbnRUZXJtKCksIGNvbnRleHQp
KQotICAgICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7Ci0gICAgICAgICAgICAgICAgQkFD
S1RSQUNLKCk7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJw
YXR0ZXJuVGVybWluYWxFbmQ6Ci0gICAgICAgICAgICAgICAgaWYgKGJhY2t0cmFja1BhcmVudGhl
c2VzVGVybWluYWxFbmQoY3VycmVudFRlcm0oKSwgY29udGV4dCkpCi0gICAgICAgICAgICAgICAg
ICAgIE1BVENIX05FWFQoKTsKLSAgICAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAg
ICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW46Ci0gICAg
ICAgICAgICAgICAgaWYgKGJhY2t0cmFja1BhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbihjdXJy
ZW50VGVybSgpLCBjb250ZXh0KSkKLSAgICAgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwot
ICAgICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6
VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb25FbmQ6Ci0gICAgICAgICAgICAgICAgaWYgKGJhY2t0
cmFja1BhcmVudGhldGljYWxBc3NlcnRpb25FbmQoY3VycmVudFRlcm0oKSwgY29udGV4dCkpCi0g
ICAgICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKLSAgICAgICAgICAgICAgICBCQUNLVFJB
Q0soKTsKLQotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUNoZWNrSW5wdXQ6Ci0gICAg
ICAgICAgICAgICAgaW5wdXQudW5jaGVja0lucHV0KGN1cnJlbnRUZXJtKCkuY2hlY2tJbnB1dENv
dW50KTsKLSAgICAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLQotICAgICAgICAgICAgY2FzZSBC
eXRlVGVybTo6VHlwZVVuY2hlY2tJbnB1dDoKLSAgICAgICAgICAgICAgICBpbnB1dC5jaGVja0lu
cHV0KGN1cnJlbnRUZXJtKCkuY2hlY2tJbnB1dENvdW50KTsKLSAgICAgICAgICAgICAgICBCQUNL
VFJBQ0soKTsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJPbmNl
OgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3RlckZpeGVkOgorICAg
ICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3RlckdyZWVkeToKKyAgICAgICAg
Y2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJOb25HcmVlZHk6CisgICAgICAgICAg
ICBpZiAoYmFja3RyYWNrUGF0dGVybkNoYXJhY3RlcihjdXJyZW50VGVybSgpLCBjb250ZXh0KSkK
KyAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICBCQUNLVFJBQ0soKTsK
KyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DYXNlZENoYXJhY3Rlck9uY2U6Cisg
ICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJGaXhlZDoKKyAg
ICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DYXNlZENoYXJhY3RlckdyZWVkeToKKyAg
ICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DYXNlZENoYXJhY3Rlck5vbkdyZWVkeToK
KyAgICAgICAgICAgIGlmIChiYWNrdHJhY2tQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXIoY3VycmVudFRl
cm0oKSwgY29udGV4dCkpCisgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOworICAgICAgICAg
ICAgQkFDS1RSQUNLKCk7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVDaGFyYWN0ZXJDbGFz
czoKKyAgICAgICAgICAgIGlmIChiYWNrdHJhY2tDaGFyYWN0ZXJDbGFzcyhjdXJyZW50VGVybSgp
LCBjb250ZXh0KSkKKyAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICBC
QUNLVFJBQ0soKTsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUJhY2tSZWZlcmVuY2U6Cisg
ICAgICAgICAgICBpZiAoYmFja3RyYWNrQmFja1JlZmVyZW5jZShjdXJyZW50VGVybSgpLCBjb250
ZXh0KSkKKyAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICBCQUNLVFJB
Q0soKTsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybjog
eworICAgICAgICAgICAgSlNSZWdFeHBSZXN1bHQgcmVzdWx0ID0gYmFja3RyYWNrUGFyZW50aGVz
ZXMoY3VycmVudFRlcm0oKSwgY29udGV4dCk7CisKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0g
SlNSZWdFeHBNYXRjaCkgeworICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAocmVzdWx0ICE9IEpTUmVnRXhwTm9NYXRjaCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworCisgICAgICAgICAgICBCQUNLVFJBQ0soKTsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2lu
OgorICAgICAgICAgICAgaWYgKGJhY2t0cmFja1BhcmVudGhlc2VzT25jZUJlZ2luKGN1cnJlbnRU
ZXJtKCksIGNvbnRleHQpKQorICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKKyAgICAgICAg
ICAgIEJBQ0tUUkFDSygpOworICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNT
dWJwYXR0ZXJuT25jZUVuZDoKKyAgICAgICAgICAgIGlmIChiYWNrdHJhY2tQYXJlbnRoZXNlc09u
Y2VFbmQoY3VycmVudFRlcm0oKSwgY29udGV4dCkpCisgICAgICAgICAgICAgICAgTUFUQ0hfTkVY
VCgpOworICAgICAgICAgICAgQkFDS1RSQUNLKCk7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5
cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luOgorICAgICAgICAgICAgaWYgKGJh
Y2t0cmFja1BhcmVudGhlc2VzVGVybWluYWxCZWdpbihjdXJyZW50VGVybSgpLCBjb250ZXh0KSkK
KyAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICBCQUNLVFJBQ0soKTsK
KyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFs
RW5kOgorICAgICAgICAgICAgaWYgKGJhY2t0cmFja1BhcmVudGhlc2VzVGVybWluYWxFbmQoY3Vy
cmVudFRlcm0oKSwgY29udGV4dCkpCisgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOworICAg
ICAgICAgICAgQkFDS1RSQUNLKCk7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRo
ZXRpY2FsQXNzZXJ0aW9uQmVnaW46CisgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGFyZW50aGV0
aWNhbEFzc2VydGlvbkJlZ2luKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQorICAgICAgICAgICAg
ICAgIE1BVENIX05FWFQoKTsKKyAgICAgICAgICAgIEJBQ0tUUkFDSygpOworICAgICAgICBjYXNl
IEJ5dGVUZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZDoKKyAgICAgICAgICAgIGlm
IChiYWNrdHJhY2tQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kKGN1cnJlbnRUZXJtKCksIGNvbnRl
eHQpKQorICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKKyAgICAgICAgICAgIEJBQ0tUUkFD
SygpOworCisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVDaGVja0lucHV0OgorICAgICAgICAg
ICAgaW5wdXQudW5jaGVja0lucHV0KGN1cnJlbnRUZXJtKCkuY2hlY2tJbnB1dENvdW50KTsKKyAg
ICAgICAgICAgIEJBQ0tUUkFDSygpOworCisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVVbmNo
ZWNrSW5wdXQ6CisgICAgICAgICAgICBpbnB1dC5jaGVja0lucHV0KGN1cnJlbnRUZXJtKCkuY2hl
Y2tJbnB1dENvdW50KTsKKyAgICAgICAgICAgIEJBQ0tUUkFDSygpOworCisgICAgICAgIGNhc2Ug
Qnl0ZVRlcm06OlR5cGVEb3RTdGFyRW5jbG9zdXJlOgorICAgICAgICAgICAgQkFDS1RSQUNLKCk7
CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE1NTksNiAr
MTYwOSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tlbmRU
ZXJtXS5hdG9tLnF1YW50aXR5VHlwZSA9IHF1YW50aXR5VHlwZTsKICAgICB9CiAKKyAgICB2b2lk
IGFzc2VydGlvbkRvdFN0YXJFbmNsb3N1cmUoYm9vbCBib2xBbmNob3JlZCwgYm9vbCBlb2xBbmNo
b3JlZCkKKyAgICB7CisgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0
ZVRlcm06OkRvdFN0YXJFbmNsb3N1cmUoYm9sQW5jaG9yZWQsIGVvbEFuY2hvcmVkKSk7CisgICAg
fQorCiAgICAgdW5zaWduZWQgcG9wUGFyZW50aGVzZXNTdGFjaygpCiAgICAgewogICAgICAgICBB
U1NFUlQobV9wYXJlbnRoZXNlc1N0YWNrLnNpemUoKSk7CkBAIC0xODM4LDYgKzE4OTMsMTAgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06
OlR5cGVEb3RTdGFyRW5jbG9zdXJlOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnRpb25Eb3RT
dGFyRW5jbG9zdXJlKHRlcm0uYW5jaG9ycy5ib2xBbmNob3IsIHRlcm0uYW5jaG9ycy5lb2xBbmNo
b3IpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJJbnRlcnByZXRlci5oCShyZXZpc2lvbiA5MDY5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3
IEBAIHN0cnVjdCBCeXRlVGVybSB7CiAgICAgICAgIFR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9u
RW5kLAogICAgICAgICBUeXBlQ2hlY2tJbnB1dCwKICAgICAgICAgVHlwZVVuY2hlY2tJbnB1dCwK
KyAgICAgICAgVHlwZURvdFN0YXJFbmNsb3N1cmUsCiAgICAgfSB0eXBlOwogICAgIHVuaW9uIHsK
ICAgICAgICAgc3RydWN0IHsKQEAgLTk1LDYgKzk2LDEwIEBAIHN0cnVjdCBCeXRlVGVybSB7CiAg
ICAgICAgICAgICBpbnQgZW5kOwogICAgICAgICAgICAgYm9vbCBvbmNlVGhyb3VnaDsKICAgICAg
ICAgfSBhbHRlcm5hdGl2ZTsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGJvb2wgbV9i
b2wgOiAxOworICAgICAgICAgICAgYm9vbCBtX2VvbCA6IDE7CisgICAgICAgIH0gYW5jaG9yczsK
ICAgICAgICAgdW5zaWduZWQgY2hlY2tJbnB1dENvdW50OwogICAgIH07CiAgICAgdW5zaWduZWQg
ZnJhbWVMb2NhdGlvbjsKQEAgLTI5NSw2ICszMDAsMTQgQEAgc3RydWN0IEJ5dGVUZXJtIHsKICAg
ICB7CiAgICAgICAgIHJldHVybiBCeXRlVGVybShUeXBlU3VicGF0dGVybkVuZCk7CiAgICAgfQor
ICAgIAorICAgIHN0YXRpYyBCeXRlVGVybSBEb3RTdGFyRW5jbG9zdXJlKGJvb2wgYm9sQW5jaG9y
LCBib29sIGVvbEFuY2hvcikKKyAgICB7CisgICAgICAgIEJ5dGVUZXJtIHRlcm0oVHlwZURvdFN0
YXJFbmNsb3N1cmUpOworICAgICAgICB0ZXJtLmFuY2hvcnMubV9ib2wgPSBib2xBbmNob3I7Cisg
ICAgICAgIHRlcm0uYW5jaG9ycy5tX2VvbCA9IGVvbEFuY2hvcjsKKyAgICAgICAgcmV0dXJuIHRl
cm07CisgICAgfQogCiAgICAgYm9vbCBpbnZlcnQoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCShyZXZpc2lvbiA5MDY5MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OTUsNiArOTk1
LDYwIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAgICAg
bV9iYWNrdHJhY2tpbmdTdGF0ZS5mYWxsdGhyb3VnaCgpOwogICAgIH0KIAorICAgIHZvaWQgZ2Vu
ZXJhdGVEb3RTdGFyRW5jbG9zdXJlKHNpemVfdCBvcEluZGV4KQorICAgIHsKKyAgICAgICAgWWFy
ck9wJiBvcCA9IG1fb3BzW29wSW5kZXhdOworICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9w
Lm1fdGVybTsKKworICAgICAgICBjb25zdCBSZWdpc3RlcklEIGNoYXJhY3RlciA9IHJlZ1QwOwor
ICAgICAgICBjb25zdCBSZWdpc3RlcklEIG1hdGNoUG9zID0gcmVnVDE7CisKKyAgICAgICAgSnVt
cExpc3QgZm91bmRCZWdpbm5pbmdOZXdMaW5lOworICAgICAgICBKdW1wTGlzdCBzYXZlU3RhcnRJ
bmRleDsKKyAgICAgICAgSnVtcExpc3QgZm91bmRFbmRpbmdOZXdMaW5lOworCisgICAgICAgIG1v
dmUoaW5kZXgsIG1hdGNoUG9zKTsKKyAgICAgICAgc2F2ZVN0YXJ0SW5kZXguYXBwZW5kKGJyYW5j
aDMyKEVxdWFsLCBtYXRjaFBvcywgSW1tMzIobV9jaGVja2VkKSkpOworCisgICAgICAgIExhYmVs
IGZpbmRCT0xMb29wKHRoaXMpOworICAgICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIG1hdGNo
UG9zKTsKKyAgICAgICAgbG9hZDE2KEJhc2VJbmRleChpbnB1dCwgbWF0Y2hQb3MsIFRpbWVzVHdv
LCAtKG1fY2hlY2tlZCAqIHNpemVvZihVQ2hhcikpKSwgY2hhcmFjdGVyKTsKKyAgICAgICAgbWF0
Y2hDaGFyYWN0ZXJDbGFzcyhjaGFyYWN0ZXIsIGZvdW5kQmVnaW5uaW5nTmV3TGluZSwgbV9wYXR0
ZXJuLm5ld2xpbmVDaGFyYWN0ZXJDbGFzcygpKTsKKyAgICAgICAgYnJhbmNoMzIoTm90RXF1YWws
IG1hdGNoUG9zLCBJbW0zMihtX2NoZWNrZWQpKS5saW5rVG8oZmluZEJPTExvb3AsIHRoaXMpOwor
ICAgICAgICBzYXZlU3RhcnRJbmRleC5hcHBlbmQoanVtcCgpKTsKKworICAgICAgICBmb3VuZEJl
Z2lubmluZ05ld0xpbmUubGluayh0aGlzKTsKKyAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEp
LCBtYXRjaFBvcyk7IC8vIEFkdmFuY2UgcGFzdCBuZXdsaW5lCisgICAgICAgIHNhdmVTdGFydElu
ZGV4LmxpbmsodGhpcyk7CisKKyAgICAgICAgaWYgKCFtX3BhdHRlcm4ubV9tdWx0aWxpbmUgJiYg
dGVybS0+YW5jaG9ycy5ib2xBbmNob3IpCisgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChi
cmFuY2gzMihOb3RFcXVhbCwgbWF0Y2hQb3MsIEltbTMyKG1fY2hlY2tlZCkpKTsKKworICAgICAg
ICBzdWIzMihUcnVzdGVkSW1tMzIobV9jaGVja2VkKSwgbWF0Y2hQb3MpOworICAgICAgICBzdG9y
ZTMyKG1hdGNoUG9zLCBBZGRyZXNzKG91dHB1dCkpOworCisgICAgICAgIG1vdmUoaW5kZXgsIG1h
dGNoUG9zKTsKKworICAgICAgICBMYWJlbCBmaW5kRU9MTG9vcCh0aGlzKTsgICAgICAgIAorICAg
ICAgICBmb3VuZEVuZGluZ05ld0xpbmUuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBtYXRjaFBvcywg
bGVuZ3RoKSk7CisgICAgICAgIGxvYWQxNihCYXNlSW5kZXgoaW5wdXQsIG1hdGNoUG9zLCBUaW1l
c1R3bywgMCksIGNoYXJhY3Rlcik7CisgICAgICAgIG1hdGNoQ2hhcmFjdGVyQ2xhc3MoY2hhcmFj
dGVyLCBmb3VuZEVuZGluZ05ld0xpbmUsIG1fcGF0dGVybi5uZXdsaW5lQ2hhcmFjdGVyQ2xhc3Mo
KSk7CisgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgbWF0Y2hQb3MpOworICAgICAgICBq
dW1wKGZpbmRFT0xMb29wKTsKKworICAgICAgICBmb3VuZEVuZGluZ05ld0xpbmUubGluayh0aGlz
KTsKKworICAgICAgICBpZiAoIW1fcGF0dGVybi5tX211bHRpbGluZSAmJiB0ZXJtLT5hbmNob3Jz
LmVvbEFuY2hvcikKKyAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGJyYW5jaDMyKE5vdEVx
dWFsLCBtYXRjaFBvcywgbGVuZ3RoKSk7CisKKyAgICAgICAgbW92ZShtYXRjaFBvcywgaW5kZXgp
OworICAgIH0KKworICAgIHZvaWQgYmFja3RyYWNrRG90U3RhckVuY2xvc3VyZShzaXplX3Qgb3BJ
bmRleCkKKyAgICB7CisgICAgICAgIGJhY2t0cmFja1Rlcm1EZWZhdWx0KG9wSW5kZXgpOworICAg
IH0KKyAgICAKICAgICAvLyBDb2RlIGdlbmVyYXRpb24vYmFja3RyYWNraW5nIGZvciBzaW1wbGUg
dGVybXMKICAgICAvLyAocGF0dGVybiBjaGFyYWN0ZXJzLCBjaGFyYWN0ZXIgY2xhc3NlcywgYW5k
IGFzc2VydGlvbnMpLgogICAgIC8vIFRoZXNlIG1ldGhvZHMgZmFybSBvdXQgd29yayB0byB0aGUg
c2V0IG9mIGZ1bmN0aW9ucyBhYm92ZS4KQEAgLTEwNTksNiArMTExMyw5IEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6
VHlwZUJhY2tSZWZlcmVuY2U6CiAgICAgICAgICAgICBtX3Nob3VsZEZhbGxCYWNrID0gdHJ1ZTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlRG90U3Rh
ckVuY2xvc3VyZToKKyAgICAgICAgICAgIGdlbmVyYXRlRG90U3RhckVuY2xvc3VyZShvcEluZGV4
KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogICAgIHZvaWQgYmFja3Ry
YWNrVGVybShzaXplX3Qgb3BJbmRleCkKQEAgLTExMTksNiArMTE3NiwxMSBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06
OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm46CiAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5
cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisKKyAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZURvdFN0YXJFbmNsb3N1cmU6Cisg
ICAgICAgICAgICBiYWNrdHJhY2tEb3RTdGFyRW5jbG9zdXJlKG9wSW5kZXgpOworICAgICAgICAg
ICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZUJhY2tSZWZlcmVuY2U6
CiAgICAgICAgICAgICBtX3Nob3VsZEZhbGxCYWNrID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFr
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAkocmV2
aXNpb24gOTA2OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU4Miw2ICs1ODIsMTEgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIHRlcm0uZnJhbWVMb2NhdGlvbiA9IGN1cnJlbnRDYWxsRnJhbWVTaXplOwogICAgICAg
ICAgICAgICAgIGN1cnJlbnRDYWxsRnJhbWVTaXplID0gc2V0dXBEaXNqdW5jdGlvbk9mZnNldHMo
dGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVudENhbGxGcmFtZVNpemUgKyBZYXJy
U3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uLCBjdXJyZW50
SW5wdXRQb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNh
c2UgUGF0dGVyblRlcm06OlR5cGVEb3RTdGFyRW5jbG9zdXJlOgorICAgICAgICAgICAgICAgIGFs
dGVybmF0aXZlLT5tX2hhc0ZpeGVkU2l6ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIHRlcm0u
aW5wdXRQb3NpdGlvbiA9IGluaXRpYWxJbnB1dFBvc2l0aW9uOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTY3NSw2ICs2ODAsODggQEAgcHVi
bGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCBjb250YWluc0NhcHR1cmluZ1Rlcm1z
KFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUsIHNpemVfdCBmaXJzdFRlcm1JbmRleCwg
c2l6ZV90IGxhc3RUZXJtSW5kZXgpCisgICAgeworICAgICAgICBWZWN0b3I8UGF0dGVyblRlcm0+
JiB0ZXJtcyA9IGFsdGVybmF0aXZlLT5tX3Rlcm1zOworCisgICAgICAgIGZvciAoc2l6ZV90IHRl
cm1JbmRleCA9IGZpcnN0VGVybUluZGV4OyB0ZXJtSW5kZXggPD0gbGFzdFRlcm1JbmRleDsgKyt0
ZXJtSW5kZXgpIHsKKyAgICAgICAgICAgIFBhdHRlcm5UZXJtJiB0ZXJtID0gdGVybXNbdGVybUlu
ZGV4XTsKKworICAgICAgICAgICAgaWYgKHRlcm0ubV9jYXB0dXJlKQorICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgICAgICAgICBpZiAodGVybS50eXBlID09IFBhdHRlcm5UZXJt
OjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuKSB7CisgICAgICAgICAgICAgICAgUGF0dGVybkRp
c2p1bmN0aW9uKiBuZXN0ZWREaXNqdW5jdGlvbiA9IHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rp
b247CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhbHQgPSAwOyBhbHQgPCBuZXN0ZWRE
aXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXMuc2l6ZSgpOyArK2FsdCkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoY29udGFpbnNDYXB0dXJpbmdUZXJtcyhuZXN0ZWREaXNqdW5jdGlvbi0+bV9h
bHRlcm5hdGl2ZXNbYWx0XSwgMCwgbmVzdGVkRGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzW2Fs
dF0tPm1fdGVybXMuc2l6ZSgpIC0gMSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gVGhpcyBvcHRpbWl6YXRpb24gaWRl
bnRpZmllcyBhbHRlcm5hdGl2ZXMgaW4gdGhlIGZvcm0gb2YgCisgICAgLy8gW15dLipbP108ZXhw
cmVzc2lvbj4uKlskXSBmb3IgZXhwcmVzc2lvbnMgdGhhdCBkb24ndCBoYXZlIGFueSAKKyAgICAv
LyBjYXB0dXJpbmcgdGVybXMuIFRoZSBhbHRlcm5hdGl2ZSBpcyBjaGFuZ2VkIHRvIDxleHByZXNz
aW9uPiAKKyAgICAvLyBmb2xsb3dlZCBieSBwcm9jZXNzaW5nIG9mIHRoZSBkb3Qgc3RhcnMgdG8g
ZmluZCBhbmQgYWRqdXN0IHRoZSAKKyAgICAvLyBiZWdpbm5pbmcgYW5kIHRoZSBlbmQgb2YgdGhl
IG1hdGNoLgorICAgIHZvaWQgb3B0aW1pemVEb3RTdGFyV3JhcHBlZEV4cHJlc3Npb25zKCkKKyAg
ICB7CisgICAgICAgIFZlY3RvcjxQYXR0ZXJuQWx0ZXJuYXRpdmUqPiYgYWx0ZXJuYXRpdmVzID0g
bV9wYXR0ZXJuLm1fYm9keS0+bV9hbHRlcm5hdGl2ZXM7CisgICAgICAgIGlmIChhbHRlcm5hdGl2
ZXMuc2l6ZSgpID4gMSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKHNpemVf
dCBhbHQgPSAwOyBhbHQgPCBhbHRlcm5hdGl2ZXMuc2l6ZSgpOyArK2FsdCkgeworICAgICAgICAg
ICAgVmVjdG9yPFBhdHRlcm5UZXJtPiYgdGVybXMgPSBhbHRlcm5hdGl2ZXNbYWx0XS0+bV90ZXJt
czsKKyAgICAgICAgICAgIGlmICh0ZXJtcy5zaXplKCkgPj0gMykgeworICAgICAgICAgICAgICAg
IGJvb2wgc3RhcnRzV2l0aEJPTCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJvb2wgZW5kc1dp
dGhFT0wgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBzaXplX3QgdGVybUluZGV4LCBmaXJzdEV4
cHJlc3Npb25UZXJtLCBsYXN0RXhwcmVzc2lvblRlcm07CisKKyAgICAgICAgICAgICAgICB0ZXJt
SW5kZXggPSAwOworICAgICAgICAgICAgICAgIGlmICh0ZXJtc1t0ZXJtSW5kZXhdLnR5cGUgPT0g
UGF0dGVyblRlcm06OlR5cGVBc3NlcnRpb25CT0wpIHsKKyAgICAgICAgICAgICAgICAgICAgc3Rh
cnRzV2l0aEJPTCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICsrdGVybUluZGV4OworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBQYXR0ZXJu
VGVybSYgZmlyc3ROb25BbmNob3JUZXJtID0gdGVybXNbdGVybUluZGV4XTsKKyAgICAgICAgICAg
ICAgICBpZiAoKGZpcnN0Tm9uQW5jaG9yVGVybS50eXBlICE9IFBhdHRlcm5UZXJtOjpUeXBlQ2hh
cmFjdGVyQ2xhc3MpIHx8IChmaXJzdE5vbkFuY2hvclRlcm0uY2hhcmFjdGVyQ2xhc3MgIT0gbV9w
YXR0ZXJuLm5ld2xpbmVDaGFyYWN0ZXJDbGFzcygpKSB8fCAhKChmaXJzdE5vbkFuY2hvclRlcm0u
cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJHcmVlZHkpIHx8IChmaXJzdE5vbkFuY2hvclRlcm0u
cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJOb25HcmVlZHkpKSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZmlyc3RFeHByZXNz
aW9uVGVybSA9IHRlcm1JbmRleCArIDE7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgdGVybUluZGV4ID0gdGVybXMuc2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAgICBpZiAodGVy
bXNbdGVybUluZGV4XS50eXBlID09IFBhdHRlcm5UZXJtOjpUeXBlQXNzZXJ0aW9uRU9MKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGVuZHNXaXRoRU9MID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgLS10ZXJtSW5kZXg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIFBhdHRlcm5UZXJtJiBsYXN0Tm9uQW5jaG9yVGVybSA9IHRlcm1zW3Rlcm1J
bmRleF07CisgICAgICAgICAgICAgICAgaWYgKChsYXN0Tm9uQW5jaG9yVGVybS50eXBlICE9IFBh
dHRlcm5UZXJtOjpUeXBlQ2hhcmFjdGVyQ2xhc3MpIHx8IChsYXN0Tm9uQW5jaG9yVGVybS5jaGFy
YWN0ZXJDbGFzcyAhPSBtX3BhdHRlcm4ubmV3bGluZUNoYXJhY3RlckNsYXNzKCkpIHx8IChsYXN0
Tm9uQW5jaG9yVGVybS5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllckdyZWVkeSkpCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGxh
c3RFeHByZXNzaW9uVGVybSA9IHRlcm1JbmRleCAtIDE7CisKKyAgICAgICAgICAgICAgICBpZiAo
Zmlyc3RFeHByZXNzaW9uVGVybSA+IGxhc3RFeHByZXNzaW9uVGVybSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRhaW5zQ2FwdHVyaW5nVGVy
bXMoYWx0ZXJuYXRpdmVzW2FsdF0sIGZpcnN0RXhwcmVzc2lvblRlcm0sIGxhc3RFeHByZXNzaW9u
VGVybSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh0ZXJtSW5kZXggPSB0ZXJtcy5zaXpl
KCkgLSAxOyB0ZXJtSW5kZXggPiBsYXN0RXhwcmVzc2lvblRlcm07IC0tdGVybUluZGV4KQorICAg
ICAgICAgICAgICAgICAgICAgICAgdGVybXMucmVtb3ZlKHRlcm1JbmRleCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgZm9yICh0ZXJtSW5kZXggPSBmaXJzdEV4cHJlc3Npb25UZXJtOyB0ZXJtSW5k
ZXggPiAwOyAtLXRlcm1JbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlcm1zLnJlbW92
ZSh0ZXJtSW5kZXggLSAxKTsKKworICAgICAgICAgICAgICAgICAgICB0ZXJtcy5hcHBlbmQoUGF0
dGVyblRlcm0oc3RhcnRzV2l0aEJPTCwgZW5kc1dpdGhFT0wpKTsKKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgIG1fcGF0dGVybi5tX2NvbnRhaW5zQk9MID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiBw
cml2YXRlOgogICAgIFlhcnJQYXR0ZXJuJiBtX3BhdHRlcm47CiAgICAgUGF0dGVybkFsdGVybmF0
aXZlKiBtX2FsdGVybmF0aXZlOwpAQCAtNzA4LDYgKzc5NSw3IEBAIGNvbnN0IGNoYXIqIFlhcnJQ
YXR0ZXJuOjpjb21waWxlKGNvbnN0IFUKICAgICB9CiAKICAgICBjb25zdHJ1Y3Rvci5jaGVja0Zv
clRlcm1pbmFsUGFyZW50aGVzZXMoKTsKKyAgICBjb25zdHJ1Y3Rvci5vcHRpbWl6ZURvdFN0YXJX
cmFwcGVkRXhwcmVzc2lvbnMoKTsKICAgICBjb25zdHJ1Y3Rvci5vcHRpbWl6ZUJPTCgpOwogICAg
ICAgICAKICAgICBjb25zdHJ1Y3Rvci5zZXR1cE9mZnNldHMoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAkocmV2aXNpb24gOTA2OTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2
ICs5Niw3IEBAIHN0cnVjdCBQYXR0ZXJuVGVybSB7CiAgICAgICAgIFR5cGVGb3J3YXJkUmVmZXJl
bmNlLAogICAgICAgICBUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuLAogICAgICAgICBUeXBlUGFy
ZW50aGV0aWNhbEFzc2VydGlvbiwKKyAgICAgICAgVHlwZURvdFN0YXJFbmNsb3N1cmUsCiAgICAg
fSB0eXBlOwogICAgIGJvb2wgbV9jYXB0dXJlIDoxOwogICAgIGJvb2wgbV9pbnZlcnQgOjE7CkBA
IC0xMTAsNiArMTExLDEwIEBAIHN0cnVjdCBQYXR0ZXJuVGVybSB7CiAgICAgICAgICAgICBib29s
IGlzQ29weTsKICAgICAgICAgICAgIGJvb2wgaXNUZXJtaW5hbDsKICAgICAgICAgfSBwYXJlbnRo
ZXNlczsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGJvb2wgYm9sQW5jaG9yIDogMTsK
KyAgICAgICAgICAgIGJvb2wgZW9sQW5jaG9yIDogMTsKKyAgICAgICAgfSBhbmNob3JzOwogICAg
IH07CiAgICAgUXVhbnRpZmllclR5cGUgcXVhbnRpdHlUeXBlOwogICAgIHVuc2lnbmVkIHF1YW50
aXR5Q291bnQ7CkBAIC0xNjgsNiArMTczLDE3IEBAIHN0cnVjdCBQYXR0ZXJuVGVybSB7CiAgICAg
ICAgIHF1YW50aXR5Q291bnQgPSAxOwogICAgIH0KIAorICAgIFBhdHRlcm5UZXJtKGJvb2wgYm9s
QW5jaG9yLCBib29sIGVvbEFuY2hvcikKKyAgICAgICAgOiB0eXBlKFR5cGVEb3RTdGFyRW5jbG9z
dXJlKQorICAgICAgICAsIG1fY2FwdHVyZShmYWxzZSkKKyAgICAgICAgLCBtX2ludmVydChmYWxz
ZSkKKyAgICB7CisgICAgICAgIGFuY2hvcnMuYm9sQW5jaG9yID0gYm9sQW5jaG9yOworICAgICAg
ICBhbmNob3JzLmVvbEFuY2hvciA9IGVvbEFuY2hvcjsKKyAgICAgICAgcXVhbnRpdHlUeXBlID0g
UXVhbnRpZmllckZpeGVkQ291bnQ7CisgICAgICAgIHF1YW50aXR5Q291bnQgPSAxOworICAgIH0K
KyAgICAKICAgICBzdGF0aWMgUGF0dGVyblRlcm0gRm9yd2FyZFJlZmVyZW5jZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gUGF0dGVyblRlcm0oVHlwZUZvcndhcmRSZWZlcmVuY2UpOwpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gOTA3NTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNy0xMSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2Zm
QGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjQyMDIKKyAgICAgICAgRW5oOiBJbXByb3ZlIGhhbmRsaW5nIG9mIFJlZ0V4cCBpbiB0
aGUgZm9ybSBvZiAvLipibGFoLiovCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTmV3IHRlc3RzIHRvIHN1cHBvcnQgLy4qPGV4cHJlc3Npb24+LiovIGVu
aGFuY2VtZW50LgorCisgICAgICAgICogZmFzdC9yZWdleC9kb3RzdGFyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9yZWdleC9kb3RzdGFyLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL2RvdHN0YXIuanM6IEFkZGVkLgorCiAyMDExLTA3
LTExICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuIFVwZGF0ZSBDaHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9ucy4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvcmVnZXgvZG90c3Rhci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9yZWdleC9kb3RzdGFyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvcmVnZXgvZG90c3Rhci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTE3IEBACitUaGlzIHBhZ2UgdGVzdHMgaGFuZGxpbmcgb2YgcGFyZW50aGVz
ZXMgc3ViZXhwcmVzc2lvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IHJlZ2V4cDEuZXhlYygndGVzdCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwMS5leGVjKCdibGFoJykg
aXMgWydibGFoJ10KK1BBU1MgcmVnZXhwMS5leGVjKCcxYmxhaCcpIGlzIFsnMWJsYWgnXQorUEFT
UyByZWdleHAxLmV4ZWMoJ2JsYWgxJykgaXMgWydibGFoMSddCitQQVNTIHJlZ2V4cDEuZXhlYygn
YmxhaCBibGFoIGJsYWgnKSBpcyBbJ2JsYWggYmxhaCBibGFoJ10KK1BBU1MgcmVnZXhwMS5leGVj
KCdibGFoXG5zZWNvbmQnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHAxLmV4ZWMoJ2ZpcnN0XG5i
bGFoJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwMS5leGVjKCdmaXJzdFxuYmxhaFxudGhpcmQn
KSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHAxLmV4ZWMoJ2ZpcnN0XG5ibGFoMlxuYmxhaDMnKSBp
cyBbJ2JsYWgyJ10KK1BBU1MgcmVnZXhwMi5leGVjKCd0ZXN0JykgaXMgbnVsbAorUEFTUyByZWdl
eHAyLmV4ZWMoJ2JsYWgnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHAyLmV4ZWMoJzFibGFoJykg
aXMgWycxYmxhaCddCitQQVNTIHJlZ2V4cDIuZXhlYygnYmxhaDEnKSBpcyBbJ2JsYWgxJ10KK1BB
U1MgcmVnZXhwMi5leGVjKCdibGFoIGJsYWggYmxhaCcpIGlzIFsnYmxhaCBibGFoIGJsYWgnXQor
UEFTUyByZWdleHAyLmV4ZWMoJ2JsYWhcbnNlY29uZCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4
cDIuZXhlYygnZmlyc3RcbmJsYWgnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDIuZXhlYygnZmlyc3Rc
bmJsYWhcbnRoaXJkJykgaXMgbnVsbAorUEFTUyByZWdleHAyLmV4ZWMoJ2ZpcnN0XG5ibGFoMlxu
YmxhaDMnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDMuZXhlYygndGVzdCcpIGlzIG51bGwKK1BBU1Mg
cmVnZXhwMy5leGVjKCdibGFoJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwMy5leGVjKCcxYmxh
aCcpIGlzIFsnMWJsYWgnXQorUEFTUyByZWdleHAzLmV4ZWMoJ2JsYWgxJykgaXMgWydibGFoMSdd
CitQQVNTIHJlZ2V4cDMuZXhlYygnYmxhaCBibGFoIGJsYWgnKSBpcyBbJ2JsYWggYmxhaCBibGFo
J10KK1BBU1MgcmVnZXhwMy5leGVjKCdibGFoXG5zZWNvbmQnKSBpcyBudWxsCitQQVNTIHJlZ2V4
cDMuZXhlYygnZmlyc3RcbmJsYWgnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHAzLmV4ZWMoJ2Zp
cnN0XG5ibGFoXG50aGlyZCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwMy5leGVjKCdmaXJzdFxuYmxh
aDJcbmJsYWgzJykgaXMgWydibGFoMyddCitQQVNTIHJlZ2V4cDQuZXhlYygndGVzdCcpIGlzIG51
bGwKK1BBU1MgcmVnZXhwNC5leGVjKCdibGFoJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwNC5l
eGVjKCcxYmxhaCcpIGlzIFsnMWJsYWgnXQorUEFTUyByZWdleHA0LmV4ZWMoJ2JsYWgxJykgaXMg
WydibGFoMSddCitQQVNTIHJlZ2V4cDQuZXhlYygnYmxhaCBibGFoIGJsYWgnKSBpcyBbJ2JsYWgg
YmxhaCBibGFoJ10KK1BBU1MgcmVnZXhwNC5leGVjKCdibGFoXG5zZWNvbmQnKSBpcyBudWxsCitQ
QVNTIHJlZ2V4cDQuZXhlYygnZmlyc3RcbmJsYWgnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDQuZXhl
YygnZmlyc3RcbmJsYWhcbnRoaXJkJykgaXMgbnVsbAorUEFTUyByZWdleHA0LmV4ZWMoJ2ZpcnN0
XG5ibGFoMlxuYmxhaDMnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDUuZXhlYygndGVzdCcpIGlzIG51
bGwKK1BBU1MgcmVnZXhwNS5leGVjKCdibGFoJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwNS5l
eGVjKCcxYmxhaCcpIGlzIFsnMWJsYWgnXQorUEFTUyByZWdleHA1LmV4ZWMoJ2JsYWgxJykgaXMg
WydibGFoMSddCitQQVNTIHJlZ2V4cDUuZXhlYygnYmxhaCBibGFoIGJsYWgnKSBpcyBbJ2JsYWgg
YmxhaCBibGFoJ10KK1BBU1MgcmVnZXhwNS5leGVjKCdibGFoXG5zZWNvbmQnKSBpcyBbJ2JsYWgn
XQorUEFTUyByZWdleHA1LmV4ZWMoJ2ZpcnN0XG5ibGFoJykgaXMgWydibGFoJ10KK1BBU1MgcmVn
ZXhwNS5leGVjKCdmaXJzdFxuYmxhaFxudGhpcmQnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHA1
LmV4ZWMoJ2ZpcnN0XG5ibGFoMlxuYmxhaDMnKSBpcyBbJ2JsYWgyJ10KK1BBU1MgcmVnZXhwNi5l
eGVjKCd0ZXN0JykgaXMgbnVsbAorUEFTUyByZWdleHA2LmV4ZWMoJ2JsYWgnKSBpcyBbJ2JsYWgn
XQorUEFTUyByZWdleHA2LmV4ZWMoJzFibGFoJykgaXMgWycxYmxhaCddCitQQVNTIHJlZ2V4cDYu
ZXhlYygnYmxhaDEnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHA2LmV4ZWMoJ2JsYWggYmxhaCBi
bGFoJykgaXMgWydibGFoIGJsYWggYmxhaCddCitQQVNTIHJlZ2V4cDYuZXhlYygnYmxhaFxuc2Vj
b25kJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwNi5leGVjKCdmaXJzdFxuYmxhaCcpIGlzIFsn
YmxhaCddCitQQVNTIHJlZ2V4cDYuZXhlYygnZmlyc3RcbmJsYWhcbnRoaXJkJykgaXMgWydibGFo
J10KK1BBU1MgcmVnZXhwNi5leGVjKCdmaXJzdFxuYmxhaDJcbmJsYWgzJykgaXMgWydibGFoJ10K
K1BBU1MgcmVnZXhwNy5leGVjKCd0ZXN0JykgaXMgbnVsbAorUEFTUyByZWdleHA3LmV4ZWMoJ2Js
YWgnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHA3LmV4ZWMoJzFibGFoJykgaXMgWycxYmxhaCdd
CitQQVNTIHJlZ2V4cDcuZXhlYygnYmxhaDEnKSBpcyBbJ2JsYWgxJ10KK1BBU1MgcmVnZXhwNy5l
eGVjKCdibGFoIGJsYWggYmxhaCcpIGlzIFsnYmxhaCBibGFoIGJsYWgnXQorUEFTUyByZWdleHA3
LmV4ZWMoJ2JsYWhcbnNlY29uZCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwNy5leGVjKCdmaXJzdFxu
YmxhaCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwNy5leGVjKCdmaXJzdFxuYmxhaFxudGhpcmQnKSBp
cyBudWxsCitQQVNTIHJlZ2V4cDcuZXhlYygnZmlyc3RcbmJsYWgyXG5ibGFoMycpIGlzIG51bGwK
K1BBU1MgcmVnZXhwOC5leGVjKCd0ZXN0JykgaXMgbnVsbAorUEFTUyByZWdleHA4LmV4ZWMoJ2Js
YWgnKSBpcyBbJ2JsYWgnLCcnXQorUEFTUyByZWdleHA4LmV4ZWMoJzFibGFoJykgaXMgWycxYmxh
aCcsJzEnXQorUEFTUyByZWdleHA4LmV4ZWMoJ2JsYWgxJykgaXMgWydibGFoMScsJyddCitQQVNT
IHJlZ2V4cDguZXhlYygnYmxhaCBibGFoIGJsYWgnKSBpcyBbJ2JsYWggYmxhaCBibGFoJywnYmxh
aCBibGFoICddCitQQVNTIHJlZ2V4cDguZXhlYygnYmxhaFxuc2Vjb25kJykgaXMgbnVsbAorUEFT
UyByZWdleHA4LmV4ZWMoJ2ZpcnN0XG5ibGFoJykgaXMgbnVsbAorUEFTUyByZWdleHA4LmV4ZWMo
J2ZpcnN0XG5ibGFoXG50aGlyZCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwOC5leGVjKCdmaXJzdFxu
YmxhaDJcbmJsYWgzJykgaXMgbnVsbAorUEFTUyByZWdleHA5LmV4ZWMoJ3Rlc3QnKSBpcyBudWxs
CitQQVNTIHJlZ2V4cDkuZXhlYygnYmxhaCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4cDkuZXhl
YygnMWJsYWgnKSBpcyBbJzFibGFoJ10KK1BBU1MgcmVnZXhwOS5leGVjKCdibGFoMScpIGlzIFsn
YmxhaDEnXQorUEFTUyByZWdleHA5LmV4ZWMoJ2JsYWggYmxhaCBibGFoJykgaXMgWydibGFoIGJs
YWggYmxhaCddCitQQVNTIHJlZ2V4cDkuZXhlYygnYmxhaFxuc2Vjb25kJykgaXMgWydibGFoJ10K
K1BBU1MgcmVnZXhwOS5leGVjKCdmaXJzdFxuYmxhaCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4
cDkuZXhlYygnZmlyc3RcbmJsYWhcbnRoaXJkJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwOS5l
eGVjKCdmaXJzdFxuYmxhaDJcbmJsYWgzJykgaXMgWydibGFoMiddCitQQVNTIHJlZ2V4cDEwLmV4
ZWMoJ3Rlc3QnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDEwLmV4ZWMoJ2JsYWgnKSBpcyBbJ2JsYWgn
XQorUEFTUyByZWdleHAxMC5leGVjKCcxYmxhaCcpIGlzIFsnMWJsYWgnXQorUEFTUyByZWdleHAx
MC5leGVjKCdibGFoMScpIGlzIFsnYmxhaDEnXQorUEFTUyByZWdleHAxMC5leGVjKCdibGFoIGJs
YWggYmxhaCcpIGlzIFsnYmxhaCBibGFoIGJsYWgnXQorUEFTUyByZWdleHAxMC5leGVjKCdibGFo
XG5zZWNvbmQnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHAxMC5leGVjKCdmaXJzdFxuYmxhaCcp
IGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4cDEwLmV4ZWMoJ2ZpcnN0XG5ibGFoXG50aGlyZCcpIGlz
IFsnYmxhaCddCitQQVNTIHJlZ2V4cDEwLmV4ZWMoJ2ZpcnN0XG5ibGFoMlxuYmxhaDMnKSBpcyBb
J2JsYWgyJ10KK1BBU1MgcmVnZXhwMTEuZXhlYygndGVzdCcpIGlzIG51bGwKK1BBU1MgcmVnZXhw
MTEuZXhlYygnYmxhaCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4cDExLmV4ZWMoJzFibGFoJykg
aXMgWycxYmxhaCddCitQQVNTIHJlZ2V4cDExLmV4ZWMoJ2JsYWgxJykgaXMgWydibGFoMSddCitQ
QVNTIHJlZ2V4cDExLmV4ZWMoJ2JsYWggYmxhaCBibGFoJykgaXMgWydibGFoIGJsYWggYmxhaCdd
CitQQVNTIHJlZ2V4cDExLmV4ZWMoJ2JsYWhcbnNlY29uZCcpIGlzIG51bGwKK1BBU1MgcmVnZXhw
MTEuZXhlYygnZmlyc3RcbmJsYWgnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHAxMS5leGVjKCdm
aXJzdFxuYmxhaFxudGhpcmQnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDExLmV4ZWMoJ2ZpcnN0XG5i
bGFoMlxuYmxhaDMnKSBpcyBbJ2JsYWgzJ10KK1BBU1MgcmVnZXhwMTIuZXhlYygndGVzdCcpIGlz
IG51bGwKK1BBU1MgcmVnZXhwMTIuZXhlYygnYmxhaCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4
cDEyLmV4ZWMoJzFibGFoJykgaXMgWycxYmxhaCddCitQQVNTIHJlZ2V4cDEyLmV4ZWMoJ2JsYWgx
JykgaXMgWydibGFoMSddCitQQVNTIHJlZ2V4cDEyLmV4ZWMoJ2JsYWggYmxhaCBibGFoJykgaXMg
WydibGFoIGJsYWggYmxhaCddCitQQVNTIHJlZ2V4cDEyLmV4ZWMoJ2JsYWhcbnNlY29uZCcpIGlz
IG51bGwKK1BBU1MgcmVnZXhwMTIuZXhlYygnZmlyc3RcbmJsYWgnKSBpcyBbJ2JsYWgnXQorUEFT
UyByZWdleHAxMi5leGVjKCdmaXJzdFxuYmxhaFxudGhpcmQnKSBpcyBudWxsCitQQVNTIHJlZ2V4
cDEyLmV4ZWMoJ2ZpcnN0XG5ibGFoMlxuYmxhaDMnKSBpcyBbJ2JsYWgzJ10KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L3JlZ2V4L2RvdHN0YXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3JlZ2V4L2RvdHN0YXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVn
ZXgvZG90c3Rhci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2RvdHN0YXIuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZWdleC9z
Y3JpcHQtdGVzdHMvZG90c3Rhci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Jl
Z2V4L3NjcmlwdC10ZXN0cy9kb3RzdGFyLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9yZWdleC9zY3JpcHQtdGVzdHMvZG90c3Rhci5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMzYgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHBhZ2UgdGVzdHMgaGFuZGxpbmcgb2YgcGFyZW50
aGVzZXMgc3ViZXhwcmVzc2lvbnMuIik7CisKK3ZhciByZWdleHAxID0gLy4qYmxhaC4qLzsKK3No
b3VsZEJlTnVsbCgicmVnZXhwMS5leGVjKCd0ZXN0JykiKTsKK3Nob3VsZEJlKCJyZWdleHAxLmV4
ZWMoJ2JsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEuZXhlYygnMWJsYWgn
KSIsICJbJzFibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAxLmV4ZWMoJ2JsYWgxJykiLCAiWydi
bGFoMSddIik7CitzaG91bGRCZSgicmVnZXhwMS5leGVjKCdibGFoIGJsYWggYmxhaCcpIiwgIlsn
YmxhaCBibGFoIGJsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEuZXhlYygnYmxhaFxcbnNlY29u
ZCcpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwMS5leGVjKCdmaXJzdFxcbmJsYWgn
KSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEuZXhlYygnZmlyc3RcXG5ibGFoXFxu
dGhpcmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEuZXhlYygnZmlyc3RcXG5i
bGFoMlxcbmJsYWgzJykiLCAiWydibGFoMiddIik7CisKK3ZhciByZWdleHAyID0gL14uKmJsYWgu
Ki87CitzaG91bGRCZU51bGwoInJlZ2V4cDIuZXhlYygndGVzdCcpIik7CitzaG91bGRCZSgicmVn
ZXhwMi5leGVjKCdibGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAyLmV4ZWMo
JzFibGFoJykiLCAiWycxYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwMi5leGVjKCdibGFoMScp
IiwgIlsnYmxhaDEnXSIpOworc2hvdWxkQmUoInJlZ2V4cDIuZXhlYygnYmxhaCBibGFoIGJsYWgn
KSIsICJbJ2JsYWggYmxhaCBibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAyLmV4ZWMoJ2JsYWhc
XG5zZWNvbmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHAyLmV4ZWMoJ2Zp
cnN0XFxuYmxhaCcpIik7CitzaG91bGRCZU51bGwoInJlZ2V4cDIuZXhlYygnZmlyc3RcXG5ibGFo
XFxudGhpcmQnKSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHAyLmV4ZWMoJ2ZpcnN0XFxuYmxhaDJc
XG5ibGFoMycpIik7CisKK3ZhciByZWdleHAzID0gLy4qYmxhaC4qJC87CitzaG91bGRCZU51bGwo
InJlZ2V4cDMuZXhlYygndGVzdCcpIik7CitzaG91bGRCZSgicmVnZXhwMy5leGVjKCdibGFoJyki
LCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAzLmV4ZWMoJzFibGFoJykiLCAiWycxYmxh
aCddIik7CitzaG91bGRCZSgicmVnZXhwMy5leGVjKCdibGFoMScpIiwgIlsnYmxhaDEnXSIpOwor
c2hvdWxkQmUoInJlZ2V4cDMuZXhlYygnYmxhaCBibGFoIGJsYWgnKSIsICJbJ2JsYWggYmxhaCBi
bGFoJ10iKTsKK3Nob3VsZEJlTnVsbCgicmVnZXhwMy5leGVjKCdibGFoXFxuc2Vjb25kJykiKTsK
K3Nob3VsZEJlKCJyZWdleHAzLmV4ZWMoJ2ZpcnN0XFxuYmxhaCcpIiwgIlsnYmxhaCddIik7Citz
aG91bGRCZU51bGwoInJlZ2V4cDMuZXhlYygnZmlyc3RcXG5ibGFoXFxudGhpcmQnKSIpOworc2hv
dWxkQmUoInJlZ2V4cDMuZXhlYygnZmlyc3RcXG5ibGFoMlxcbmJsYWgzJykiLCAiWydibGFoMydd
Iik7CisKK3ZhciByZWdleHA0ID0gL14uKmJsYWguKiQvOworc2hvdWxkQmVOdWxsKCJyZWdleHA0
LmV4ZWMoJ3Rlc3QnKSIpOworc2hvdWxkQmUoInJlZ2V4cDQuZXhlYygnYmxhaCcpIiwgIlsnYmxh
aCddIik7CitzaG91bGRCZSgicmVnZXhwNC5leGVjKCcxYmxhaCcpIiwgIlsnMWJsYWgnXSIpOwor
c2hvdWxkQmUoInJlZ2V4cDQuZXhlYygnYmxhaDEnKSIsICJbJ2JsYWgxJ10iKTsKK3Nob3VsZEJl
KCJyZWdleHA0LmV4ZWMoJ2JsYWggYmxhaCBibGFoJykiLCAiWydibGFoIGJsYWggYmxhaCddIik7
CitzaG91bGRCZU51bGwoInJlZ2V4cDQuZXhlYygnYmxhaFxcbnNlY29uZCcpIik7CitzaG91bGRC
ZU51bGwoInJlZ2V4cDQuZXhlYygnZmlyc3RcXG5ibGFoJykiKTsKK3Nob3VsZEJlTnVsbCgicmVn
ZXhwNC5leGVjKCdmaXJzdFxcbmJsYWhcXG50aGlyZCcpIik7CitzaG91bGRCZU51bGwoInJlZ2V4
cDQuZXhlYygnZmlyc3RcXG5ibGFoMlxcbmJsYWgzJykiKTsKKwordmFyIHJlZ2V4cDUgPSAvLio/
YmxhaC4qLzsKK3Nob3VsZEJlTnVsbCgicmVnZXhwNS5leGVjKCd0ZXN0JykiKTsKK3Nob3VsZEJl
KCJyZWdleHA1LmV4ZWMoJ2JsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDUu
ZXhlYygnMWJsYWgnKSIsICJbJzFibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA1LmV4ZWMoJ2Js
YWgxJykiLCAiWydibGFoMSddIik7CitzaG91bGRCZSgicmVnZXhwNS5leGVjKCdibGFoIGJsYWgg
YmxhaCcpIiwgIlsnYmxhaCBibGFoIGJsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDUuZXhlYygn
YmxhaFxcbnNlY29uZCcpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwNS5leGVjKCdm
aXJzdFxcbmJsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDUuZXhlYygnZmly
c3RcXG5ibGFoXFxudGhpcmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDUuZXhl
YygnZmlyc3RcXG5ibGFoMlxcbmJsYWgzJykiLCAiWydibGFoMiddIik7CisKK3ZhciByZWdleHA2
ID0gLy4qYmxhaC4qPy87CitzaG91bGRCZU51bGwoInJlZ2V4cDYuZXhlYygndGVzdCcpIik7Citz
aG91bGRCZSgicmVnZXhwNi5leGVjKCdibGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJy
ZWdleHA2LmV4ZWMoJzFibGFoJykiLCAiWycxYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwNi5l
eGVjKCdibGFoMScpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwNi5leGVjKCdibGFo
IGJsYWggYmxhaCcpIiwgIlsnYmxhaCBibGFoIGJsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDYu
ZXhlYygnYmxhaFxcbnNlY29uZCcpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwNi5l
eGVjKCdmaXJzdFxcbmJsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDYuZXhl
YygnZmlyc3RcXG5ibGFoXFxudGhpcmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4
cDYuZXhlYygnZmlyc3RcXG5ibGFoMlxcbmJsYWgzJykiLCAiWydibGFoJ10iKTsKKwordmFyIHJl
Z2V4cDcgPSAvXi4qP2JsYWguKj8kLzsKK3Nob3VsZEJlTnVsbCgicmVnZXhwNy5leGVjKCd0ZXN0
JykiKTsKK3Nob3VsZEJlKCJyZWdleHA3LmV4ZWMoJ2JsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hv
dWxkQmUoInJlZ2V4cDcuZXhlYygnMWJsYWgnKSIsICJbJzFibGFoJ10iKTsKK3Nob3VsZEJlKCJy
ZWdleHA3LmV4ZWMoJ2JsYWgxJykiLCAiWydibGFoMSddIik7CitzaG91bGRCZSgicmVnZXhwNy5l
eGVjKCdibGFoIGJsYWggYmxhaCcpIiwgIlsnYmxhaCBibGFoIGJsYWgnXSIpOworc2hvdWxkQmVO
dWxsKCJyZWdleHA3LmV4ZWMoJ2JsYWhcXG5zZWNvbmQnKSIpOworc2hvdWxkQmVOdWxsKCJyZWdl
eHA3LmV4ZWMoJ2ZpcnN0XFxuYmxhaCcpIik7CitzaG91bGRCZU51bGwoInJlZ2V4cDcuZXhlYygn
Zmlyc3RcXG5ibGFoXFxudGhpcmQnKSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHA3LmV4ZWMoJ2Zp
cnN0XFxuYmxhaDJcXG5ibGFoMycpIik7CisKK3ZhciByZWdleHA4ID0gL14oLiopYmxhaC4qJC87
CitzaG91bGRCZU51bGwoInJlZ2V4cDguZXhlYygndGVzdCcpIik7CitzaG91bGRCZSgicmVnZXhw
OC5leGVjKCdibGFoJykiLCAiWydibGFoJywnJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA4LmV4ZWMo
JzFibGFoJykiLCAiWycxYmxhaCcsJzEnXSIpOworc2hvdWxkQmUoInJlZ2V4cDguZXhlYygnYmxh
aDEnKSIsICJbJ2JsYWgxJywnJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA4LmV4ZWMoJ2JsYWggYmxh
aCBibGFoJykiLCAiWydibGFoIGJsYWggYmxhaCcsJ2JsYWggYmxhaCAnXSIpOworc2hvdWxkQmVO
dWxsKCJyZWdleHA4LmV4ZWMoJ2JsYWhcXG5zZWNvbmQnKSIpOworc2hvdWxkQmVOdWxsKCJyZWdl
eHA4LmV4ZWMoJ2ZpcnN0XFxuYmxhaCcpIik7CitzaG91bGRCZU51bGwoInJlZ2V4cDguZXhlYygn
Zmlyc3RcXG5ibGFoXFxudGhpcmQnKSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHA4LmV4ZWMoJ2Zp
cnN0XFxuYmxhaDJcXG5ibGFoMycpIik7CisKK3ZhciByZWdleHA5ID0gLy4qYmxhaC4qL207Citz
aG91bGRCZU51bGwoInJlZ2V4cDkuZXhlYygndGVzdCcpIik7CitzaG91bGRCZSgicmVnZXhwOS5l
eGVjKCdibGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA5LmV4ZWMoJzFibGFo
JykiLCAiWycxYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwOS5leGVjKCdibGFoMScpIiwgIlsn
YmxhaDEnXSIpOworc2hvdWxkQmUoInJlZ2V4cDkuZXhlYygnYmxhaCBibGFoIGJsYWgnKSIsICJb
J2JsYWggYmxhaCBibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA5LmV4ZWMoJ2JsYWhcXG5zZWNv
bmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDkuZXhlYygnZmlyc3RcXG5ibGFo
JykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA5LmV4ZWMoJ2ZpcnN0XFxuYmxhaFxc
bnRoaXJkJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA5LmV4ZWMoJ2ZpcnN0XFxu
YmxhaDJcXG5ibGFoMycpIiwgIlsnYmxhaDInXSIpOworCit2YXIgcmVnZXhwMTAgPSAvXi4qYmxh
aC4qL207CitzaG91bGRCZU51bGwoInJlZ2V4cDEwLmV4ZWMoJ3Rlc3QnKSIpOworc2hvdWxkQmUo
InJlZ2V4cDEwLmV4ZWMoJ2JsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEw
LmV4ZWMoJzFibGFoJykiLCAiWycxYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwMTAuZXhlYygn
YmxhaDEnKSIsICJbJ2JsYWgxJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAxMC5leGVjKCdibGFoIGJs
YWggYmxhaCcpIiwgIlsnYmxhaCBibGFoIGJsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEwLmV4
ZWMoJ2JsYWhcXG5zZWNvbmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEwLmV4
ZWMoJ2ZpcnN0XFxuYmxhaCcpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwMTAuZXhl
YygnZmlyc3RcXG5ibGFoXFxudGhpcmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4
cDEwLmV4ZWMoJ2ZpcnN0XFxuYmxhaDJcXG5ibGFoMycpIiwgIlsnYmxhaDInXSIpOworCit2YXIg
cmVnZXhwMTEgPSAvLiooPzpibGFoKS4qJC87CitzaG91bGRCZU51bGwoInJlZ2V4cDExLmV4ZWMo
J3Rlc3QnKSIpOworc2hvdWxkQmUoInJlZ2V4cDExLmV4ZWMoJ2JsYWgnKSIsICJbJ2JsYWgnXSIp
Oworc2hvdWxkQmUoInJlZ2V4cDExLmV4ZWMoJzFibGFoJykiLCAiWycxYmxhaCddIik7CitzaG91
bGRCZSgicmVnZXhwMTEuZXhlYygnYmxhaDEnKSIsICJbJ2JsYWgxJ10iKTsKK3Nob3VsZEJlKCJy
ZWdleHAxMS5leGVjKCdibGFoIGJsYWggYmxhaCcpIiwgIlsnYmxhaCBibGFoIGJsYWgnXSIpOwor
c2hvdWxkQmVOdWxsKCJyZWdleHAxMS5leGVjKCdibGFoXFxuc2Vjb25kJykiKTsKK3Nob3VsZEJl
KCJyZWdleHAxMS5leGVjKCdmaXJzdFxcbmJsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmVO
dWxsKCJyZWdleHAxMS5leGVjKCdmaXJzdFxcbmJsYWhcXG50aGlyZCcpIik7CitzaG91bGRCZSgi
cmVnZXhwMTEuZXhlYygnZmlyc3RcXG5ibGFoMlxcbmJsYWgzJykiLCAiWydibGFoMyddIik7CisK
K3ZhciByZWdleHAxMiA9IC8uKig/OmJsYWh8YnV6enxiYW5nKS4qJC87CitzaG91bGRCZU51bGwo
InJlZ2V4cDEyLmV4ZWMoJ3Rlc3QnKSIpOworc2hvdWxkQmUoInJlZ2V4cDEyLmV4ZWMoJ2JsYWgn
KSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEyLmV4ZWMoJzFibGFoJykiLCAiWycx
YmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwMTIuZXhlYygnYmxhaDEnKSIsICJbJ2JsYWgxJ10i
KTsKK3Nob3VsZEJlKCJyZWdleHAxMi5leGVjKCdibGFoIGJsYWggYmxhaCcpIiwgIlsnYmxhaCBi
bGFoIGJsYWgnXSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHAxMi5leGVjKCdibGFoXFxuc2Vjb25k
JykiKTsKK3Nob3VsZEJlKCJyZWdleHAxMi5leGVjKCdmaXJzdFxcbmJsYWgnKSIsICJbJ2JsYWgn
XSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHAxMi5leGVjKCdmaXJzdFxcbmJsYWhcXG50aGlyZCcp
Iik7CitzaG91bGRCZSgicmVnZXhwMTIuZXhlYygnZmlyc3RcXG5ibGFoMlxcbmJsYWgzJykiLCAi
WydibGFoMyddIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100374</attachid>
            <date>2011-07-11 15:52:16 -0700</date>
            <delta_ts>2011-07-13 11:20:16 -0700</delta_ts>
            <desc>Updated patch to fix win compilation error.</desc>
            <filename>64202-2.patch</filename>
            <type>text/plain</type>
            <size>37406</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTA3NTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAK
KzIwMTEtMDctMTEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MjAyCisgICAgICAg
IEVuaDogSW1wcm92ZSBoYW5kbGluZyBvZiBSZWdFeHAgaW4gdGhlIGZvcm0gb2YgLy4qYmxhaC4q
LworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IGNvZGUgdG8gYm90aCB0aGUgWWFyciBpbnRlcnByZXRlciBhbmQgSklUIHRvIGhhbmRsZQorICAg
ICAgICB0aGVzZSBleHByZXNzaW9ucyBhIGxpdHRsZSBkaWZmZXJlbnRseS4gIEZpcnN0IG9mZiwg
dGhlIHRlcm1zCisgICAgICAgIGluIGJldHdlZW4gdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIC4q
J3MgY2Fubm90IGNhcHR1cmUgYW5kCisgICAgICAgIGFsc28gdGhpcyBlbmhhbmNlbWVudCBpcyBs
aW1pdGVkIHRvIHNpbmdsZSBhbHRlcm5hdGl2ZSBleHByZXNzaW9ucy4KKyAgICAgICAgSWYgYW4g
ZXhwcmVzc2lvbiBpcyBvZiB0aGUgcmlnaHQgZm9ybSB3aXRoIHRoZSBhZm9yZW1lbnRpb25lZAor
ICAgICAgICByZXN0cmljdGlvbnMsIHdlIHByb2Nlc3MgdGhlIGlubmVyIHRlcm1zIGFuZCB0aGVu
IGxvb2sgZm9yIHRoZQorICAgICAgICBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBhbmQgZW5kIG9m
IHRoZSBzdHJpbmcuICBUaGVyZSBpcyBoYW5kbGluZyAKKyAgICAgICAgZm9yIG11bHRpbGluZSBl
eHByZXNzaW9ucyB0byBhbGxvdyB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgdG8gYmUgCisgICAgICAg
IHJpZ2h0IGFmdGVyIGFuZCByaWdodCBiZWZvcmUgbmV3bGluZXMuCisKKyAgICAgICAgVGhpcyBl
bmhhbmNlbWVudCBzcGVlZHMgdXAgZXhwcmVzc2lvbnMgb2YgdGhpcyB0eXBlIDEyeCBvbgorICAg
ICAgICBhIE1hY0Jvb2tQcm8uCisKKyAgICAgICAgQ2xlYW5lZCB1cCAnY2FzZScgc3RhdGVtZW50
IGluZGVudGF0aW9uLgorCisgICAgICAgIEEgbmV3IHNldCBvZiB0ZXN0cyB3YXMgYWRkZWQgYXMg
TGF5b3V0VGVzdHMvZmFzdC9yZWdleC9kb3RzdGFyLmh0bWwKKworICAgICAgICAqIHlhcnIvWWFy
ckludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6OklucHV0
U3RyZWFtOjplbmQpOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6bWF0Y2hEb3RT
dGFyRW5jbG9zdXJlKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6Om1hdGNoRGlz
anVuY3Rpb24pOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmFzc2VydGlvbkRv
dFN0YXJFbmNsb3N1cmUpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmVtaXRE
aXNqdW5jdGlvbik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuaDoKKyAgICAgICAg
KEpTQzo6WWFycjo6Qnl0ZVRlcm06OkRvdFN0YXJFbmNsb3N1cmUpOgorICAgICAgICAqIHlhcnIv
WWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmdlbmVyYXRl
RG90U3RhckVuY2xvc3VyZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmJh
Y2t0cmFja0RvdFN0YXJFbmNsb3N1cmUpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJh
dG9yOjpnZW5lcmF0ZVRlcm0pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpi
YWNrdHJhY2tUZXJtKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6c2V0dXBBbHRlcm5hdGl2ZU9mZnNl
dHMpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpjb250YWlu
c0NhcHR1cmluZ1Rlcm1zKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1
Y3Rvcjo6b3B0aW1pemVEb3RTdGFyV3JhcHBlZEV4cHJlc3Npb25zKToKKyAgICAgICAgKEpTQzo6
WWFycjo6WWFyclBhdHRlcm46OmNvbXBpbGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4u
aDoKKyAgICAgICAgKEpTQzo6WWFycjo6UGF0dGVyblRlcm06OlBhdHRlcm5UZXJtKToKKwogMjAx
MS0wNy0xMSAgR2Fib3IgTG9raSAgPGxva2lAd2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdGhl
IGNvbmRpdGlvbiBvZiB0aGUgb3B0aW1pemVkIGNvZGUgaW4gZG91YmxlVHJhbnNmZXIKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAkocmV2
aXNpb24gOTA2OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNiArMjQzLDExIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBwb3MgPT0gbGVuZ3RoOwogICAgICAgICB9CiAKKyAgICAgICAgdW5zaWdu
ZWQgZW5kKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDsKKyAgICAgICAg
fQorCiAgICAgICAgIGJvb2wgY2hlY2tJbnB1dChpbnQgY291bnQpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmICgocG9zICsgY291bnQpIDw9IGxlbmd0aCkgewpAQCAtMTA0NCw2ICsxMDQ5LDQz
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTUmVnRXhwRXJyb3JOb01hdGNoOwogICAgIH0K
IAorICAgIGJvb2wgbWF0Y2hEb3RTdGFyRW5jbG9zdXJlKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5j
dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0odGVybSk7
CisgICAgICAgIHVuc2lnbmVkIG1hdGNoQmVnaW4gPSBjb250ZXh0LT5tYXRjaEJlZ2luOworICAg
IAorICAgICAgICBpZiAobWF0Y2hCZWdpbikgeworICAgICAgICAgICAgZm9yIChtYXRjaEJlZ2lu
LS07IHRydWU7IG1hdGNoQmVnaW4tLSkgeworICAgICAgICAgICAgICAgIGlmICh0ZXN0Q2hhcmFj
dGVyQ2xhc3MocGF0dGVybi0+bmV3bGluZUNoYXJhY3RlckNsYXNzLCBpbnB1dC5yZXJlYWQobWF0
Y2hCZWdpbikpKSB7CisgICAgICAgICAgICAgICAgICAgICsrbWF0Y2hCZWdpbjsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
aWYgKCFtYXRjaEJlZ2luKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIG1hdGNoRW5kID0gaW5wdXQuZ2V0UG9z
KCk7CisgICAgCisgICAgICAgIGZvciAoOyAobWF0Y2hFbmQgIT0gaW5wdXQuZW5kKCkpCisgICAg
ICAgICAgICAgJiYgKCF0ZXN0Q2hhcmFjdGVyQ2xhc3MocGF0dGVybi0+bmV3bGluZUNoYXJhY3Rl
ckNsYXNzLCBpbnB1dC5yZXJlYWQobWF0Y2hFbmQpKSk7IG1hdGNoRW5kKyspIHsgfQorICAgICAg
ICAKKyAgICAgICAgaWYgKHBhdHRlcm4tPm1fbXVsdGlsaW5lKSB7CisgICAgICAgICAgICBjb250
ZXh0LT5tYXRjaEJlZ2luID0gbWF0Y2hCZWdpbjsKKyAgICAgICAgICAgIGNvbnRleHQtPm1hdGNo
RW5kID0gbWF0Y2hFbmQ7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICgodGVybS5hbmNob3JzLm1fYm9sICYmIG1hdGNoQmVnaW4pIAorICAgICAgICAg
ICAgfHwgKCh0ZXJtLmFuY2hvcnMubV9lb2wgJiYgKG1hdGNoRW5kICE9IGlucHV0LmVuZCgpKSkp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnRleHQtPm1hdGNoQmVn
aW4gPSBtYXRjaEJlZ2luOworICAgICAgICBjb250ZXh0LT5tYXRjaEVuZCA9IG1hdGNoRW5kOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICNkZWZpbmUgTUFUQ0hfTkVYVCgpIHsgKytj
b250ZXh0LT50ZXJtOyBnb3RvIG1hdGNoQWdhaW47IH0KICNkZWZpbmUgQkFDS1RSQUNLKCkgeyAt
LWNvbnRleHQtPnRlcm07IGdvdG8gYmFja3RyYWNrOyB9CiAjZGVmaW5lIGN1cnJlbnRUZXJtKCkg
KGRpc2p1bmN0aW9uLT50ZXJtc1tjb250ZXh0LT50ZXJtXSkKQEAgLTEyMDMsOSArMTI0NSwxNCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwogICAgICAgICAgICAgQkFD
S1RSQUNLKCk7CiAKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVVbmNoZWNrSW5wdXQ6
Ci0gICAgICAgICAgICAgICAgaW5wdXQudW5jaGVja0lucHV0KGN1cnJlbnRUZXJtKCkuY2hlY2tJ
bnB1dENvdW50KTsKLSAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgIGNhc2Ug
Qnl0ZVRlcm06OlR5cGVVbmNoZWNrSW5wdXQ6CisgICAgICAgICAgICBpbnB1dC51bmNoZWNrSW5w
dXQoY3VycmVudFRlcm0oKS5jaGVja0lucHV0Q291bnQpOworICAgICAgICAgICAgTUFUQ0hfTkVY
VCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlRG90U3Rh
ckVuY2xvc3VyZToKKyAgICAgICAgICAgIGlmIChtYXRjaERvdFN0YXJFbmNsb3N1cmUoY3VycmVu
dFRlcm0oKSwgY29udGV4dCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTUmVnRXhwTWF0Y2g7
CisgICAgICAgICAgICBCQUNLVFJBQ0soKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFdlIHNo
b3VsZCBuZXZlciBmYWxsLXRocm91Z2ggdG8gaGVyZS4KQEAgLTEyNDIsOTEgKzEyODksOTQgQEAg
cHVibGljOgogICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQm9keUFsdGVybmF0aXZlRW5kOgog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICAgICAgICAgIGNhc2UgQnl0
ZVRlcm06OlR5cGVBbHRlcm5hdGl2ZUJlZ2luOgotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6
VHlwZUFsdGVybmF0aXZlRGlzanVuY3Rpb246IHsKLSAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0
ID0gY3VycmVudFRlcm0oKS5hbHRlcm5hdGl2ZS5uZXh0OwotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnRlcm0gKz0gb2Zmc2V0OwotICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPiAwKQotICAg
ICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7Ci0gICAgICAgICAgICAgICAgQkFDS1RSQUNL
KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQWx0ZXJu
YXRpdmVFbmQ6IHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmFja3RyYWNr
IGJhY2sgaW50byBhbiBhbHRlcm5hdGl2ZSBvZiB0aGUgbWFpbiBib2R5IG9mIHRoZSByZWdleC4K
LSAgICAgICAgICAgICAgICBCYWNrVHJhY2tJbmZvQWx0ZXJuYXRpdmUqIGJhY2tUcmFjayA9IHJl
aW50ZXJwcmV0X2Nhc3Q8QmFja1RyYWNrSW5mb0FsdGVybmF0aXZlKj4oY29udGV4dC0+ZnJhbWUg
KyBjdXJyZW50VGVybSgpLmZyYW1lTG9jYXRpb24pOwotICAgICAgICAgICAgICAgIHVuc2lnbmVk
IG9mZnNldCA9IGJhY2tUcmFjay0+b2Zmc2V0OwotICAgICAgICAgICAgICAgIGNvbnRleHQtPnRl
cm0gLT0gb2Zmc2V0OwotICAgICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQXNzZXJ0aW9uQk9MOgotICAgICAg
ICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUFzc2VydGlvbkVPTDoKLSAgICAgICAgICAgIGNhc2Ug
Qnl0ZVRlcm06OlR5cGVBc3NlcnRpb25Xb3JkQm91bmRhcnk6Ci0gICAgICAgICAgICAgICAgQkFD
S1RSQUNLKCk7Ci0KLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFj
dGVyT25jZToKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVy
Rml4ZWQ6Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3Rlckdy
ZWVkeToKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyTm9u
R3JlZWR5OgotICAgICAgICAgICAgICAgIGlmIChiYWNrdHJhY2tQYXR0ZXJuQ2hhcmFjdGVyKGN1
cnJlbnRUZXJtKCksIGNvbnRleHQpKQotICAgICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7
Ci0gICAgICAgICAgICAgICAgQkFDS1RSQUNLKCk7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyT25jZToKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRl
cm06OlR5cGVQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJGaXhlZDoKLSAgICAgICAgICAgIGNhc2UgQnl0
ZVRlcm06OlR5cGVQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJHcmVlZHk6Ci0gICAgICAgICAgICBjYXNl
IEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyTm9uR3JlZWR5OgotICAgICAgICAg
ICAgICAgIGlmIChiYWNrdHJhY2tQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXIoY3VycmVudFRlcm0oKSwg
Y29udGV4dCkpCi0gICAgICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKLSAgICAgICAgICAg
ICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVDaGFyYWN0
ZXJDbGFzczoKLSAgICAgICAgICAgICAgICBpZiAoYmFja3RyYWNrQ2hhcmFjdGVyQ2xhc3MoY3Vy
cmVudFRlcm0oKSwgY29udGV4dCkpCi0gICAgICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsK
LSAgICAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06
OlR5cGVCYWNrUmVmZXJlbmNlOgotICAgICAgICAgICAgICAgIGlmIChiYWNrdHJhY2tCYWNrUmVm
ZXJlbmNlKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQotICAgICAgICAgICAgICAgICAgICBNQVRD
SF9ORVhUKCk7Ci0gICAgICAgICAgICAgICAgQkFDS1RSQUNLKCk7Ci0gICAgICAgICAgICBjYXNl
IEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuOiB7Ci0gICAgICAgICAgICAgICAg
SlNSZWdFeHBSZXN1bHQgcmVzdWx0ID0gYmFja3RyYWNrUGFyZW50aGVzZXMoY3VycmVudFRlcm0o
KSwgY29udGV4dCk7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVBbHRlcm5hdGl2ZUJlZ2lu
OgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQWx0ZXJuYXRpdmVEaXNqdW5jdGlvbjogewor
ICAgICAgICAgICAgaW50IG9mZnNldCA9IGN1cnJlbnRUZXJtKCkuYWx0ZXJuYXRpdmUubmV4dDsK
KyAgICAgICAgICAgIGNvbnRleHQtPnRlcm0gKz0gb2Zmc2V0OworICAgICAgICAgICAgaWYgKG9m
ZnNldCA+IDApCisgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOworICAgICAgICAgICAgQkFD
S1RSQUNLKCk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUFsdGVybmF0
aXZlRW5kOiB7CisgICAgICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmFja3RyYWNrIGJhY2sg
aW50byBhbiBhbHRlcm5hdGl2ZSBvZiB0aGUgbWFpbiBib2R5IG9mIHRoZSByZWdleC4KKyAgICAg
ICAgICAgIEJhY2tUcmFja0luZm9BbHRlcm5hdGl2ZSogYmFja1RyYWNrID0gcmVpbnRlcnByZXRf
Y2FzdDxCYWNrVHJhY2tJbmZvQWx0ZXJuYXRpdmUqPihjb250ZXh0LT5mcmFtZSArIGN1cnJlbnRU
ZXJtKCkuZnJhbWVMb2NhdGlvbik7CisgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBiYWNr
VHJhY2stPm9mZnNldDsKKyAgICAgICAgICAgIGNvbnRleHQtPnRlcm0gLT0gb2Zmc2V0OworICAg
ICAgICAgICAgQkFDS1RSQUNLKCk7CisgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQgPT0gSlNSZWdFeHBNYXRjaCkgewotICAgICAgICAgICAgICAgICAgICBNQVRDSF9ORVhU
KCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgIT0gSlNSZWdFeHBOb01hdGNo
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBjYXNlIEJ5dGVU
ZXJtOjpUeXBlQXNzZXJ0aW9uQk9MOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQXNzZXJ0
aW9uRU9MOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQXNzZXJ0aW9uV29yZEJvdW5kYXJ5
OgorICAgICAgICAgICAgQkFDS1RSQUNLKCk7CiAKLSAgICAgICAgICAgICAgICBCQUNLVFJBQ0so
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRo
ZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW46Ci0gICAgICAgICAgICAgICAgaWYgKGJhY2t0cmFja1Bh
cmVudGhlc2VzT25jZUJlZ2luKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQotICAgICAgICAgICAg
ICAgICAgICBNQVRDSF9ORVhUKCk7Ci0gICAgICAgICAgICAgICAgQkFDS1RSQUNLKCk7Ci0gICAg
ICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZDoK
LSAgICAgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGFyZW50aGVzZXNPbmNlRW5kKGN1cnJlbnRU
ZXJtKCksIGNvbnRleHQpKQotICAgICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7Ci0gICAg
ICAgICAgICAgICAgQkFDS1RSQUNLKCk7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBl
UGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxCZWdpbjoKLSAgICAgICAgICAgICAgICBpZiAo
YmFja3RyYWNrUGFyZW50aGVzZXNUZXJtaW5hbEJlZ2luKGN1cnJlbnRUZXJtKCksIGNvbnRleHQp
KQotICAgICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7Ci0gICAgICAgICAgICAgICAgQkFD
S1RSQUNLKCk7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJw
YXR0ZXJuVGVybWluYWxFbmQ6Ci0gICAgICAgICAgICAgICAgaWYgKGJhY2t0cmFja1BhcmVudGhl
c2VzVGVybWluYWxFbmQoY3VycmVudFRlcm0oKSwgY29udGV4dCkpCi0gICAgICAgICAgICAgICAg
ICAgIE1BVENIX05FWFQoKTsKLSAgICAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAg
ICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW46Ci0gICAg
ICAgICAgICAgICAgaWYgKGJhY2t0cmFja1BhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbihjdXJy
ZW50VGVybSgpLCBjb250ZXh0KSkKLSAgICAgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwot
ICAgICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6
VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb25FbmQ6Ci0gICAgICAgICAgICAgICAgaWYgKGJhY2t0
cmFja1BhcmVudGhldGljYWxBc3NlcnRpb25FbmQoY3VycmVudFRlcm0oKSwgY29udGV4dCkpCi0g
ICAgICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKLSAgICAgICAgICAgICAgICBCQUNLVFJB
Q0soKTsKLQotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUNoZWNrSW5wdXQ6Ci0gICAg
ICAgICAgICAgICAgaW5wdXQudW5jaGVja0lucHV0KGN1cnJlbnRUZXJtKCkuY2hlY2tJbnB1dENv
dW50KTsKLSAgICAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLQotICAgICAgICAgICAgY2FzZSBC
eXRlVGVybTo6VHlwZVVuY2hlY2tJbnB1dDoKLSAgICAgICAgICAgICAgICBpbnB1dC5jaGVja0lu
cHV0KGN1cnJlbnRUZXJtKCkuY2hlY2tJbnB1dENvdW50KTsKLSAgICAgICAgICAgICAgICBCQUNL
VFJBQ0soKTsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJPbmNl
OgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3RlckZpeGVkOgorICAg
ICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3RlckdyZWVkeToKKyAgICAgICAg
Y2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJOb25HcmVlZHk6CisgICAgICAgICAg
ICBpZiAoYmFja3RyYWNrUGF0dGVybkNoYXJhY3RlcihjdXJyZW50VGVybSgpLCBjb250ZXh0KSkK
KyAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICBCQUNLVFJBQ0soKTsK
KyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DYXNlZENoYXJhY3Rlck9uY2U6Cisg
ICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJGaXhlZDoKKyAg
ICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DYXNlZENoYXJhY3RlckdyZWVkeToKKyAg
ICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DYXNlZENoYXJhY3Rlck5vbkdyZWVkeToK
KyAgICAgICAgICAgIGlmIChiYWNrdHJhY2tQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXIoY3VycmVudFRl
cm0oKSwgY29udGV4dCkpCisgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOworICAgICAgICAg
ICAgQkFDS1RSQUNLKCk7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVDaGFyYWN0ZXJDbGFz
czoKKyAgICAgICAgICAgIGlmIChiYWNrdHJhY2tDaGFyYWN0ZXJDbGFzcyhjdXJyZW50VGVybSgp
LCBjb250ZXh0KSkKKyAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICBC
QUNLVFJBQ0soKTsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUJhY2tSZWZlcmVuY2U6Cisg
ICAgICAgICAgICBpZiAoYmFja3RyYWNrQmFja1JlZmVyZW5jZShjdXJyZW50VGVybSgpLCBjb250
ZXh0KSkKKyAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICBCQUNLVFJB
Q0soKTsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybjog
eworICAgICAgICAgICAgSlNSZWdFeHBSZXN1bHQgcmVzdWx0ID0gYmFja3RyYWNrUGFyZW50aGVz
ZXMoY3VycmVudFRlcm0oKSwgY29udGV4dCk7CisKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0g
SlNSZWdFeHBNYXRjaCkgeworICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKKyAgICAgICAg
ICAgIH0gZWxzZSBpZiAocmVzdWx0ICE9IEpTUmVnRXhwTm9NYXRjaCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworCisgICAgICAgICAgICBCQUNLVFJBQ0soKTsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUJlZ2lu
OgorICAgICAgICAgICAgaWYgKGJhY2t0cmFja1BhcmVudGhlc2VzT25jZUJlZ2luKGN1cnJlbnRU
ZXJtKCksIGNvbnRleHQpKQorICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKKyAgICAgICAg
ICAgIEJBQ0tUUkFDSygpOworICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNT
dWJwYXR0ZXJuT25jZUVuZDoKKyAgICAgICAgICAgIGlmIChiYWNrdHJhY2tQYXJlbnRoZXNlc09u
Y2VFbmQoY3VycmVudFRlcm0oKSwgY29udGV4dCkpCisgICAgICAgICAgICAgICAgTUFUQ0hfTkVY
VCgpOworICAgICAgICAgICAgQkFDS1RSQUNLKCk7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5
cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luOgorICAgICAgICAgICAgaWYgKGJh
Y2t0cmFja1BhcmVudGhlc2VzVGVybWluYWxCZWdpbihjdXJyZW50VGVybSgpLCBjb250ZXh0KSkK
KyAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICBCQUNLVFJBQ0soKTsK
KyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFs
RW5kOgorICAgICAgICAgICAgaWYgKGJhY2t0cmFja1BhcmVudGhlc2VzVGVybWluYWxFbmQoY3Vy
cmVudFRlcm0oKSwgY29udGV4dCkpCisgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOworICAg
ICAgICAgICAgQkFDS1RSQUNLKCk7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRo
ZXRpY2FsQXNzZXJ0aW9uQmVnaW46CisgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGFyZW50aGV0
aWNhbEFzc2VydGlvbkJlZ2luKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQorICAgICAgICAgICAg
ICAgIE1BVENIX05FWFQoKTsKKyAgICAgICAgICAgIEJBQ0tUUkFDSygpOworICAgICAgICBjYXNl
IEJ5dGVUZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbkVuZDoKKyAgICAgICAgICAgIGlm
IChiYWNrdHJhY2tQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uRW5kKGN1cnJlbnRUZXJtKCksIGNvbnRl
eHQpKQorICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKKyAgICAgICAgICAgIEJBQ0tUUkFD
SygpOworCisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVDaGVja0lucHV0OgorICAgICAgICAg
ICAgaW5wdXQudW5jaGVja0lucHV0KGN1cnJlbnRUZXJtKCkuY2hlY2tJbnB1dENvdW50KTsKKyAg
ICAgICAgICAgIEJBQ0tUUkFDSygpOworCisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVVbmNo
ZWNrSW5wdXQ6CisgICAgICAgICAgICBpbnB1dC5jaGVja0lucHV0KGN1cnJlbnRUZXJtKCkuY2hl
Y2tJbnB1dENvdW50KTsKKyAgICAgICAgICAgIEJBQ0tUUkFDSygpOworCisgICAgICAgIGNhc2Ug
Qnl0ZVRlcm06OlR5cGVEb3RTdGFyRW5jbG9zdXJlOgorICAgICAgICAgICAgQkFDS1RSQUNLKCk7
CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE1NTksNiAr
MTYwOSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1tlbmRU
ZXJtXS5hdG9tLnF1YW50aXR5VHlwZSA9IHF1YW50aXR5VHlwZTsKICAgICB9CiAKKyAgICB2b2lk
IGFzc2VydGlvbkRvdFN0YXJFbmNsb3N1cmUoYm9vbCBib2xBbmNob3JlZCwgYm9vbCBlb2xBbmNo
b3JlZCkKKyAgICB7CisgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5hcHBlbmQoQnl0
ZVRlcm06OkRvdFN0YXJFbmNsb3N1cmUoYm9sQW5jaG9yZWQsIGVvbEFuY2hvcmVkKSk7CisgICAg
fQorCiAgICAgdW5zaWduZWQgcG9wUGFyZW50aGVzZXNTdGFjaygpCiAgICAgewogICAgICAgICBB
U1NFUlQobV9wYXJlbnRoZXNlc1N0YWNrLnNpemUoKSk7CkBAIC0xODM4LDYgKzE4OTMsMTAgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06
OlR5cGVEb3RTdGFyRW5jbG9zdXJlOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnRpb25Eb3RT
dGFyRW5jbG9zdXJlKHRlcm0uYW5jaG9ycy5ib2xBbmNob3IsIHRlcm0uYW5jaG9ycy5lb2xBbmNo
b3IpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJJbnRlcnByZXRlci5oCShyZXZpc2lvbiA5MDY5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3
IEBAIHN0cnVjdCBCeXRlVGVybSB7CiAgICAgICAgIFR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9u
RW5kLAogICAgICAgICBUeXBlQ2hlY2tJbnB1dCwKICAgICAgICAgVHlwZVVuY2hlY2tJbnB1dCwK
KyAgICAgICAgVHlwZURvdFN0YXJFbmNsb3N1cmUsCiAgICAgfSB0eXBlOwogICAgIHVuaW9uIHsK
ICAgICAgICAgc3RydWN0IHsKQEAgLTk1LDYgKzk2LDEwIEBAIHN0cnVjdCBCeXRlVGVybSB7CiAg
ICAgICAgICAgICBpbnQgZW5kOwogICAgICAgICAgICAgYm9vbCBvbmNlVGhyb3VnaDsKICAgICAg
ICAgfSBhbHRlcm5hdGl2ZTsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGJvb2wgbV9i
b2wgOiAxOworICAgICAgICAgICAgYm9vbCBtX2VvbCA6IDE7CisgICAgICAgIH0gYW5jaG9yczsK
ICAgICAgICAgdW5zaWduZWQgY2hlY2tJbnB1dENvdW50OwogICAgIH07CiAgICAgdW5zaWduZWQg
ZnJhbWVMb2NhdGlvbjsKQEAgLTI5NSw2ICszMDAsMTQgQEAgc3RydWN0IEJ5dGVUZXJtIHsKICAg
ICB7CiAgICAgICAgIHJldHVybiBCeXRlVGVybShUeXBlU3VicGF0dGVybkVuZCk7CiAgICAgfQor
ICAgIAorICAgIHN0YXRpYyBCeXRlVGVybSBEb3RTdGFyRW5jbG9zdXJlKGJvb2wgYm9sQW5jaG9y
LCBib29sIGVvbEFuY2hvcikKKyAgICB7CisgICAgICAgIEJ5dGVUZXJtIHRlcm0oVHlwZURvdFN0
YXJFbmNsb3N1cmUpOworICAgICAgICB0ZXJtLmFuY2hvcnMubV9ib2wgPSBib2xBbmNob3I7Cisg
ICAgICAgIHRlcm0uYW5jaG9ycy5tX2VvbCA9IGVvbEFuY2hvcjsKKyAgICAgICAgcmV0dXJuIHRl
cm07CisgICAgfQogCiAgICAgYm9vbCBpbnZlcnQoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCShyZXZpc2lvbiA5MDY5MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OTUsNiArOTk1
LDYwIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAgICAg
bV9iYWNrdHJhY2tpbmdTdGF0ZS5mYWxsdGhyb3VnaCgpOwogICAgIH0KIAorICAgIHZvaWQgZ2Vu
ZXJhdGVEb3RTdGFyRW5jbG9zdXJlKHNpemVfdCBvcEluZGV4KQorICAgIHsKKyAgICAgICAgWWFy
ck9wJiBvcCA9IG1fb3BzW29wSW5kZXhdOworICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9w
Lm1fdGVybTsKKworICAgICAgICBjb25zdCBSZWdpc3RlcklEIGNoYXJhY3RlciA9IHJlZ1QwOwor
ICAgICAgICBjb25zdCBSZWdpc3RlcklEIG1hdGNoUG9zID0gcmVnVDE7CisKKyAgICAgICAgSnVt
cExpc3QgZm91bmRCZWdpbm5pbmdOZXdMaW5lOworICAgICAgICBKdW1wTGlzdCBzYXZlU3RhcnRJ
bmRleDsKKyAgICAgICAgSnVtcExpc3QgZm91bmRFbmRpbmdOZXdMaW5lOworCisgICAgICAgIG1v
dmUoaW5kZXgsIG1hdGNoUG9zKTsKKyAgICAgICAgc2F2ZVN0YXJ0SW5kZXguYXBwZW5kKGJyYW5j
aDMyKEVxdWFsLCBtYXRjaFBvcywgSW1tMzIobV9jaGVja2VkKSkpOworCisgICAgICAgIExhYmVs
IGZpbmRCT0xMb29wKHRoaXMpOworICAgICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIG1hdGNo
UG9zKTsKKyAgICAgICAgbG9hZDE2KEJhc2VJbmRleChpbnB1dCwgbWF0Y2hQb3MsIFRpbWVzVHdv
LCAtKHN0YXRpY19jYXN0PGludDMyX3Q+KG1fY2hlY2tlZCAqIHNpemVvZihVQ2hhcikpKSksIGNo
YXJhY3Rlcik7CisgICAgICAgIG1hdGNoQ2hhcmFjdGVyQ2xhc3MoY2hhcmFjdGVyLCBmb3VuZEJl
Z2lubmluZ05ld0xpbmUsIG1fcGF0dGVybi5uZXdsaW5lQ2hhcmFjdGVyQ2xhc3MoKSk7CisgICAg
ICAgIGJyYW5jaDMyKE5vdEVxdWFsLCBtYXRjaFBvcywgSW1tMzIobV9jaGVja2VkKSkubGlua1Rv
KGZpbmRCT0xMb29wLCB0aGlzKTsKKyAgICAgICAgc2F2ZVN0YXJ0SW5kZXguYXBwZW5kKGp1bXAo
KSk7CisKKyAgICAgICAgZm91bmRCZWdpbm5pbmdOZXdMaW5lLmxpbmsodGhpcyk7CisgICAgICAg
IGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgbWF0Y2hQb3MpOyAvLyBBZHZhbmNlIHBhc3QgbmV3bGlu
ZQorICAgICAgICBzYXZlU3RhcnRJbmRleC5saW5rKHRoaXMpOworCisgICAgICAgIGlmICghbV9w
YXR0ZXJuLm1fbXVsdGlsaW5lICYmIHRlcm0tPmFuY2hvcnMuYm9sQW5jaG9yKQorICAgICAgICAg
ICAgb3AubV9qdW1wcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIG1hdGNoUG9zLCBJbW0zMiht
X2NoZWNrZWQpKSk7CisKKyAgICAgICAgc3ViMzIoVHJ1c3RlZEltbTMyKG1fY2hlY2tlZCksIG1h
dGNoUG9zKTsKKyAgICAgICAgc3RvcmUzMihtYXRjaFBvcywgQWRkcmVzcyhvdXRwdXQpKTsKKwor
ICAgICAgICBtb3ZlKGluZGV4LCBtYXRjaFBvcyk7CisKKyAgICAgICAgTGFiZWwgZmluZEVPTExv
b3AodGhpcyk7ICAgICAgICAKKyAgICAgICAgZm91bmRFbmRpbmdOZXdMaW5lLmFwcGVuZChicmFu
Y2gzMihFcXVhbCwgbWF0Y2hQb3MsIGxlbmd0aCkpOworICAgICAgICBsb2FkMTYoQmFzZUluZGV4
KGlucHV0LCBtYXRjaFBvcywgVGltZXNUd28sIDApLCBjaGFyYWN0ZXIpOworICAgICAgICBtYXRj
aENoYXJhY3RlckNsYXNzKGNoYXJhY3RlciwgZm91bmRFbmRpbmdOZXdMaW5lLCBtX3BhdHRlcm4u
bmV3bGluZUNoYXJhY3RlckNsYXNzKCkpOworICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSks
IG1hdGNoUG9zKTsKKyAgICAgICAganVtcChmaW5kRU9MTG9vcCk7CisKKyAgICAgICAgZm91bmRF
bmRpbmdOZXdMaW5lLmxpbmsodGhpcyk7CisKKyAgICAgICAgaWYgKCFtX3BhdHRlcm4ubV9tdWx0
aWxpbmUgJiYgdGVybS0+YW5jaG9ycy5lb2xBbmNob3IpCisgICAgICAgICAgICBvcC5tX2p1bXBz
LmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgbWF0Y2hQb3MsIGxlbmd0aCkpOworCisgICAgICAg
IG1vdmUobWF0Y2hQb3MsIGluZGV4KTsKKyAgICB9CisKKyAgICB2b2lkIGJhY2t0cmFja0RvdFN0
YXJFbmNsb3N1cmUoc2l6ZV90IG9wSW5kZXgpCisgICAgeworICAgICAgICBiYWNrdHJhY2tUZXJt
RGVmYXVsdChvcEluZGV4KTsKKyAgICB9CisgICAgCiAgICAgLy8gQ29kZSBnZW5lcmF0aW9uL2Jh
Y2t0cmFja2luZyBmb3Igc2ltcGxlIHRlcm1zCiAgICAgLy8gKHBhdHRlcm4gY2hhcmFjdGVycywg
Y2hhcmFjdGVyIGNsYXNzZXMsIGFuZCBhc3NlcnRpb25zKS4KICAgICAvLyBUaGVzZSBtZXRob2Rz
IGZhcm0gb3V0IHdvcmsgdG8gdGhlIHNldCBvZiBmdW5jdGlvbnMgYWJvdmUuCkBAIC0xMDU5LDYg
KzExMTMsOSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAg
ICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVCYWNrUmVmZXJlbmNlOgogICAgICAgICAgICAgbV9z
aG91bGRGYWxsQmFjayA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQ
YXR0ZXJuVGVybTo6VHlwZURvdFN0YXJFbmNsb3N1cmU6CisgICAgICAgICAgICBnZW5lcmF0ZURv
dFN0YXJFbmNsb3N1cmUob3BJbmRleCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH0KICAgICB2b2lkIGJhY2t0cmFja1Rlcm0oc2l6ZV90IG9wSW5kZXgpCkBAIC0xMTE5LDYg
KzExNzYsMTEgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAg
ICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuOgogICAgICAg
ICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbjoKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5
cGVEb3RTdGFyRW5jbG9zdXJlOgorICAgICAgICAgICAgYmFja3RyYWNrRG90U3RhckVuY2xvc3Vy
ZShvcEluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgUGF0dGVyblRl
cm06OlR5cGVCYWNrUmVmZXJlbmNlOgogICAgICAgICAgICAgbV9zaG91bGRGYWxsQmFjayA9IHRy
dWU7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJQYXR0ZXJuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJyUGF0dGVybi5jcHAJKHJldmlzaW9uIDkwNjkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODIsNiArNTgyLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBjdXJyZW50
Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAgICAgICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSA9IHNl
dHVwRGlzanVuY3Rpb25PZmZzZXRzKHRlcm0ucGFyZW50aGVzZXMuZGlzanVuY3Rpb24sIGN1cnJl
bnRDYWxsRnJhbWVTaXplICsgWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGV0
aWNhbEFzc2VydGlvbiwgY3VycmVudElucHV0UG9zaXRpb24pOwogICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlRG90U3RhckVuY2xvc3Vy
ZToKKyAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZS0+bV9oYXNGaXhlZFNpemUgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICB0ZXJtLmlucHV0UG9zaXRpb24gPSBpbml0aWFsSW5wdXRQb3NpdGlv
bjsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBA
IC02NzUsNiArNjgwLDg4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIGJvb2wg
Y29udGFpbnNDYXB0dXJpbmdUZXJtcyhQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlLCBz
aXplX3QgZmlyc3RUZXJtSW5kZXgsIHNpemVfdCBsYXN0VGVybUluZGV4KQorICAgIHsKKyAgICAg
ICAgVmVjdG9yPFBhdHRlcm5UZXJtPiYgdGVybXMgPSBhbHRlcm5hdGl2ZS0+bV90ZXJtczsKKwor
ICAgICAgICBmb3IgKHNpemVfdCB0ZXJtSW5kZXggPSBmaXJzdFRlcm1JbmRleDsgdGVybUluZGV4
IDw9IGxhc3RUZXJtSW5kZXg7ICsrdGVybUluZGV4KSB7CisgICAgICAgICAgICBQYXR0ZXJuVGVy
bSYgdGVybSA9IHRlcm1zW3Rlcm1JbmRleF07CisKKyAgICAgICAgICAgIGlmICh0ZXJtLm1fY2Fw
dHVyZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKHRl
cm0udHlwZSA9PSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybikgeworICAg
ICAgICAgICAgICAgIFBhdHRlcm5EaXNqdW5jdGlvbiogbmVzdGVkRGlzanVuY3Rpb24gPSB0ZXJt
LnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
YWx0ID0gMDsgYWx0IDwgbmVzdGVkRGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKTsg
KythbHQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5zQ2FwdHVyaW5nVGVybXMo
bmVzdGVkRGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzW2FsdF0sIDAsIG5lc3RlZERpc2p1bmN0
aW9uLT5tX2FsdGVybmF0aXZlc1thbHRdLT5tX3Rlcm1zLnNpemUoKSAtIDEpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8v
IFRoaXMgb3B0aW1pemF0aW9uIGlkZW50aWZpZXMgYWx0ZXJuYXRpdmVzIGluIHRoZSBmb3JtIG9m
IAorICAgIC8vIFteXS4qWz9dPGV4cHJlc3Npb24+LipbJF0gZm9yIGV4cHJlc3Npb25zIHRoYXQg
ZG9uJ3QgaGF2ZSBhbnkgCisgICAgLy8gY2FwdHVyaW5nIHRlcm1zLiBUaGUgYWx0ZXJuYXRpdmUg
aXMgY2hhbmdlZCB0byA8ZXhwcmVzc2lvbj4gCisgICAgLy8gZm9sbG93ZWQgYnkgcHJvY2Vzc2lu
ZyBvZiB0aGUgZG90IHN0YXJzIHRvIGZpbmQgYW5kIGFkanVzdCB0aGUgCisgICAgLy8gYmVnaW5u
aW5nIGFuZCB0aGUgZW5kIG9mIHRoZSBtYXRjaC4KKyAgICB2b2lkIG9wdGltaXplRG90U3Rhcldy
YXBwZWRFeHByZXNzaW9ucygpCisgICAgeworICAgICAgICBWZWN0b3I8UGF0dGVybkFsdGVybmF0
aXZlKj4mIGFsdGVybmF0aXZlcyA9IG1fcGF0dGVybi5tX2JvZHktPm1fYWx0ZXJuYXRpdmVzOwor
ICAgICAgICBpZiAoYWx0ZXJuYXRpdmVzLnNpemUoKSA+IDEpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgZm9yIChzaXplX3QgYWx0ID0gMDsgYWx0IDwgYWx0ZXJuYXRpdmVzLnNpemUo
KTsgKythbHQpIHsKKyAgICAgICAgICAgIFZlY3RvcjxQYXR0ZXJuVGVybT4mIHRlcm1zID0gYWx0
ZXJuYXRpdmVzW2FsdF0tPm1fdGVybXM7CisgICAgICAgICAgICBpZiAodGVybXMuc2l6ZSgpID49
IDMpIHsKKyAgICAgICAgICAgICAgICBib29sIHN0YXJ0c1dpdGhCT0wgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICBib29sIGVuZHNXaXRoRU9MID0gZmFsc2U7CisgICAgICAgICAgICAgICAgc2l6
ZV90IHRlcm1JbmRleCwgZmlyc3RFeHByZXNzaW9uVGVybSwgbGFzdEV4cHJlc3Npb25UZXJtOwor
CisgICAgICAgICAgICAgICAgdGVybUluZGV4ID0gMDsKKyAgICAgICAgICAgICAgICBpZiAodGVy
bXNbdGVybUluZGV4XS50eXBlID09IFBhdHRlcm5UZXJtOjpUeXBlQXNzZXJ0aW9uQk9MKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHN0YXJ0c1dpdGhCT0wgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICArK3Rlcm1JbmRleDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgUGF0dGVyblRlcm0mIGZpcnN0Tm9uQW5jaG9yVGVybSA9IHRlcm1zW3Rl
cm1JbmRleF07CisgICAgICAgICAgICAgICAgaWYgKChmaXJzdE5vbkFuY2hvclRlcm0udHlwZSAh
PSBQYXR0ZXJuVGVybTo6VHlwZUNoYXJhY3RlckNsYXNzKSB8fCAoZmlyc3ROb25BbmNob3JUZXJt
LmNoYXJhY3RlckNsYXNzICE9IG1fcGF0dGVybi5uZXdsaW5lQ2hhcmFjdGVyQ2xhc3MoKSkgfHwg
ISgoZmlyc3ROb25BbmNob3JUZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5KSB8
fCAoZmlyc3ROb25BbmNob3JUZXJtLnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyTm9uR3JlZWR5
KSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIGZpcnN0RXhwcmVzc2lvblRlcm0gPSB0ZXJtSW5kZXggKyAxOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIHRlcm1JbmRleCA9IHRlcm1zLnNpemUoKSAtIDE7Cisg
ICAgICAgICAgICAgICAgaWYgKHRlcm1zW3Rlcm1JbmRleF0udHlwZSA9PSBQYXR0ZXJuVGVybTo6
VHlwZUFzc2VydGlvbkVPTCkgeworICAgICAgICAgICAgICAgICAgICBlbmRzV2l0aEVPTCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIC0tdGVybUluZGV4OworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBQYXR0ZXJuVGVybSYgbGFzdE5vbkFu
Y2hvclRlcm0gPSB0ZXJtc1t0ZXJtSW5kZXhdOworICAgICAgICAgICAgICAgIGlmICgobGFzdE5v
bkFuY2hvclRlcm0udHlwZSAhPSBQYXR0ZXJuVGVybTo6VHlwZUNoYXJhY3RlckNsYXNzKSB8fCAo
bGFzdE5vbkFuY2hvclRlcm0uY2hhcmFjdGVyQ2xhc3MgIT0gbV9wYXR0ZXJuLm5ld2xpbmVDaGFy
YWN0ZXJDbGFzcygpKSB8fCAobGFzdE5vbkFuY2hvclRlcm0ucXVhbnRpdHlUeXBlICE9IFF1YW50
aWZpZXJHcmVlZHkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBsYXN0RXhwcmVzc2lvblRlcm0gPSB0ZXJtSW5kZXggLSAxOwor
CisgICAgICAgICAgICAgICAgaWYgKGZpcnN0RXhwcmVzc2lvblRlcm0gPiBsYXN0RXhwcmVzc2lv
blRlcm0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgaWYg
KCFjb250YWluc0NhcHR1cmluZ1Rlcm1zKGFsdGVybmF0aXZlc1thbHRdLCBmaXJzdEV4cHJlc3Np
b25UZXJtLCBsYXN0RXhwcmVzc2lvblRlcm0pKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAo
dGVybUluZGV4ID0gdGVybXMuc2l6ZSgpIC0gMTsgdGVybUluZGV4ID4gbGFzdEV4cHJlc3Npb25U
ZXJtOyAtLXRlcm1JbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlcm1zLnJlbW92ZSh0
ZXJtSW5kZXgpOworCisgICAgICAgICAgICAgICAgICAgIGZvciAodGVybUluZGV4ID0gZmlyc3RF
eHByZXNzaW9uVGVybTsgdGVybUluZGV4ID4gMDsgLS10ZXJtSW5kZXgpCisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXJtcy5yZW1vdmUodGVybUluZGV4IC0gMSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgdGVybXMuYXBwZW5kKFBhdHRlcm5UZXJtKHN0YXJ0c1dpdGhCT0wsIGVuZHNXaXRoRU9M
KSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtX3BhdHRlcm4u
bV9jb250YWluc0JPTCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKwogcHJpdmF0ZToKICAgICBZYXJyUGF0dGVybiYgbV9wYXR0ZXJu
OwogICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogbV9hbHRlcm5hdGl2ZTsKQEAgLTcwOCw2ICs3OTUs
NyBAQCBjb25zdCBjaGFyKiBZYXJyUGF0dGVybjo6Y29tcGlsZShjb25zdCBVCiAgICAgfQogCiAg
ICAgY29uc3RydWN0b3IuY2hlY2tGb3JUZXJtaW5hbFBhcmVudGhlc2VzKCk7CisgICAgY29uc3Ry
dWN0b3Iub3B0aW1pemVEb3RTdGFyV3JhcHBlZEV4cHJlc3Npb25zKCk7CiAgICAgY29uc3RydWN0
b3Iub3B0aW1pemVCT0woKTsKICAgICAgICAgCiAgICAgY29uc3RydWN0b3Iuc2V0dXBPZmZzZXRz
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgJKHJldmlz
aW9uIDkwNjkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAko
d29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCBzdHJ1Y3QgUGF0dGVyblRlcm0gewogICAg
ICAgICBUeXBlRm9yd2FyZFJlZmVyZW5jZSwKICAgICAgICAgVHlwZVBhcmVudGhlc2VzU3VicGF0
dGVybiwKICAgICAgICAgVHlwZVBhcmVudGhldGljYWxBc3NlcnRpb24sCisgICAgICAgIFR5cGVE
b3RTdGFyRW5jbG9zdXJlLAogICAgIH0gdHlwZTsKICAgICBib29sIG1fY2FwdHVyZSA6MTsKICAg
ICBib29sIG1faW52ZXJ0IDoxOwpAQCAtMTEwLDYgKzExMSwxMCBAQCBzdHJ1Y3QgUGF0dGVyblRl
cm0gewogICAgICAgICAgICAgYm9vbCBpc0NvcHk7CiAgICAgICAgICAgICBib29sIGlzVGVybWlu
YWw7CiAgICAgICAgIH0gcGFyZW50aGVzZXM7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAg
ICBib29sIGJvbEFuY2hvciA6IDE7CisgICAgICAgICAgICBib29sIGVvbEFuY2hvciA6IDE7Cisg
ICAgICAgIH0gYW5jaG9yczsKICAgICB9OwogICAgIFF1YW50aWZpZXJUeXBlIHF1YW50aXR5VHlw
ZTsKICAgICB1bnNpZ25lZCBxdWFudGl0eUNvdW50OwpAQCAtMTY4LDYgKzE3MywxNyBAQCBzdHJ1
Y3QgUGF0dGVyblRlcm0gewogICAgICAgICBxdWFudGl0eUNvdW50ID0gMTsKICAgICB9CiAKKyAg
ICBQYXR0ZXJuVGVybShib29sIGJvbEFuY2hvciwgYm9vbCBlb2xBbmNob3IpCisgICAgICAgIDog
dHlwZShUeXBlRG90U3RhckVuY2xvc3VyZSkKKyAgICAgICAgLCBtX2NhcHR1cmUoZmFsc2UpCisg
ICAgICAgICwgbV9pbnZlcnQoZmFsc2UpCisgICAgeworICAgICAgICBhbmNob3JzLmJvbEFuY2hv
ciA9IGJvbEFuY2hvcjsKKyAgICAgICAgYW5jaG9ycy5lb2xBbmNob3IgPSBlb2xBbmNob3I7Cisg
ICAgICAgIHF1YW50aXR5VHlwZSA9IFF1YW50aWZpZXJGaXhlZENvdW50OworICAgICAgICBxdWFu
dGl0eUNvdW50ID0gMTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIFBhdHRlcm5UZXJtIEZvcndh
cmRSZWZlcmVuY2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFBhdHRlcm5UZXJtKFR5cGVGb3J3
YXJkUmVmZXJlbmNlKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNzUyKQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDctMTEgIE1p
Y2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MjAyCisgICAgICAgIEVuaDogSW1wcm92ZSBo
YW5kbGluZyBvZiBSZWdFeHAgaW4gdGhlIGZvcm0gb2YgLy4qYmxhaC4qLworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0ZXN0cyB0byBzdXBwb3J0
IC8uKjxleHByZXNzaW9uPi4qLyBlbmhhbmNlbWVudC4KKworICAgICAgICAqIGZhc3QvcmVnZXgv
ZG90c3Rhci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnZXgvZG90c3Rh
ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2V4L3NjcmlwdC10ZXN0cy9kb3RzdGFy
LmpzOiBBZGRlZC4KKwogMjAxMS0wNy0xMSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgQ2hyb21pdW0gdGVzdCBleHBl
Y3RhdGlvbnMuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlZ2V4L2RvdHN0YXItZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcmVnZXgvZG90c3Rhci1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlZ2V4L2RvdHN0YXItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNyBAQAorVGhpcyBwYWdlIHRlc3Rz
IGhhbmRsaW5nIG9mIHBhcmVudGhlc2VzIHN1YmV4cHJlc3Npb25zLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyByZWdleHAxLmV4ZWMoJ3Rlc3QnKSBpcyBudWxsCitQQVNT
IHJlZ2V4cDEuZXhlYygnYmxhaCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4cDEuZXhlYygnMWJs
YWgnKSBpcyBbJzFibGFoJ10KK1BBU1MgcmVnZXhwMS5leGVjKCdibGFoMScpIGlzIFsnYmxhaDEn
XQorUEFTUyByZWdleHAxLmV4ZWMoJ2JsYWggYmxhaCBibGFoJykgaXMgWydibGFoIGJsYWggYmxh
aCddCitQQVNTIHJlZ2V4cDEuZXhlYygnYmxhaFxuc2Vjb25kJykgaXMgWydibGFoJ10KK1BBU1Mg
cmVnZXhwMS5leGVjKCdmaXJzdFxuYmxhaCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4cDEuZXhl
YygnZmlyc3RcbmJsYWhcbnRoaXJkJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwMS5leGVjKCdm
aXJzdFxuYmxhaDJcbmJsYWgzJykgaXMgWydibGFoMiddCitQQVNTIHJlZ2V4cDIuZXhlYygndGVz
dCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwMi5leGVjKCdibGFoJykgaXMgWydibGFoJ10KK1BBU1Mg
cmVnZXhwMi5leGVjKCcxYmxhaCcpIGlzIFsnMWJsYWgnXQorUEFTUyByZWdleHAyLmV4ZWMoJ2Js
YWgxJykgaXMgWydibGFoMSddCitQQVNTIHJlZ2V4cDIuZXhlYygnYmxhaCBibGFoIGJsYWgnKSBp
cyBbJ2JsYWggYmxhaCBibGFoJ10KK1BBU1MgcmVnZXhwMi5leGVjKCdibGFoXG5zZWNvbmQnKSBp
cyBbJ2JsYWgnXQorUEFTUyByZWdleHAyLmV4ZWMoJ2ZpcnN0XG5ibGFoJykgaXMgbnVsbAorUEFT
UyByZWdleHAyLmV4ZWMoJ2ZpcnN0XG5ibGFoXG50aGlyZCcpIGlzIG51bGwKK1BBU1MgcmVnZXhw
Mi5leGVjKCdmaXJzdFxuYmxhaDJcbmJsYWgzJykgaXMgbnVsbAorUEFTUyByZWdleHAzLmV4ZWMo
J3Rlc3QnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDMuZXhlYygnYmxhaCcpIGlzIFsnYmxhaCddCitQ
QVNTIHJlZ2V4cDMuZXhlYygnMWJsYWgnKSBpcyBbJzFibGFoJ10KK1BBU1MgcmVnZXhwMy5leGVj
KCdibGFoMScpIGlzIFsnYmxhaDEnXQorUEFTUyByZWdleHAzLmV4ZWMoJ2JsYWggYmxhaCBibGFo
JykgaXMgWydibGFoIGJsYWggYmxhaCddCitQQVNTIHJlZ2V4cDMuZXhlYygnYmxhaFxuc2Vjb25k
JykgaXMgbnVsbAorUEFTUyByZWdleHAzLmV4ZWMoJ2ZpcnN0XG5ibGFoJykgaXMgWydibGFoJ10K
K1BBU1MgcmVnZXhwMy5leGVjKCdmaXJzdFxuYmxhaFxudGhpcmQnKSBpcyBudWxsCitQQVNTIHJl
Z2V4cDMuZXhlYygnZmlyc3RcbmJsYWgyXG5ibGFoMycpIGlzIFsnYmxhaDMnXQorUEFTUyByZWdl
eHA0LmV4ZWMoJ3Rlc3QnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDQuZXhlYygnYmxhaCcpIGlzIFsn
YmxhaCddCitQQVNTIHJlZ2V4cDQuZXhlYygnMWJsYWgnKSBpcyBbJzFibGFoJ10KK1BBU1MgcmVn
ZXhwNC5leGVjKCdibGFoMScpIGlzIFsnYmxhaDEnXQorUEFTUyByZWdleHA0LmV4ZWMoJ2JsYWgg
YmxhaCBibGFoJykgaXMgWydibGFoIGJsYWggYmxhaCddCitQQVNTIHJlZ2V4cDQuZXhlYygnYmxh
aFxuc2Vjb25kJykgaXMgbnVsbAorUEFTUyByZWdleHA0LmV4ZWMoJ2ZpcnN0XG5ibGFoJykgaXMg
bnVsbAorUEFTUyByZWdleHA0LmV4ZWMoJ2ZpcnN0XG5ibGFoXG50aGlyZCcpIGlzIG51bGwKK1BB
U1MgcmVnZXhwNC5leGVjKCdmaXJzdFxuYmxhaDJcbmJsYWgzJykgaXMgbnVsbAorUEFTUyByZWdl
eHA1LmV4ZWMoJ3Rlc3QnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDUuZXhlYygnYmxhaCcpIGlzIFsn
YmxhaCddCitQQVNTIHJlZ2V4cDUuZXhlYygnMWJsYWgnKSBpcyBbJzFibGFoJ10KK1BBU1MgcmVn
ZXhwNS5leGVjKCdibGFoMScpIGlzIFsnYmxhaDEnXQorUEFTUyByZWdleHA1LmV4ZWMoJ2JsYWgg
YmxhaCBibGFoJykgaXMgWydibGFoIGJsYWggYmxhaCddCitQQVNTIHJlZ2V4cDUuZXhlYygnYmxh
aFxuc2Vjb25kJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwNS5leGVjKCdmaXJzdFxuYmxhaCcp
IGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4cDUuZXhlYygnZmlyc3RcbmJsYWhcbnRoaXJkJykgaXMg
WydibGFoJ10KK1BBU1MgcmVnZXhwNS5leGVjKCdmaXJzdFxuYmxhaDJcbmJsYWgzJykgaXMgWydi
bGFoMiddCitQQVNTIHJlZ2V4cDYuZXhlYygndGVzdCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwNi5l
eGVjKCdibGFoJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwNi5leGVjKCcxYmxhaCcpIGlzIFsn
MWJsYWgnXQorUEFTUyByZWdleHA2LmV4ZWMoJ2JsYWgxJykgaXMgWydibGFoJ10KK1BBU1MgcmVn
ZXhwNi5leGVjKCdibGFoIGJsYWggYmxhaCcpIGlzIFsnYmxhaCBibGFoIGJsYWgnXQorUEFTUyBy
ZWdleHA2LmV4ZWMoJ2JsYWhcbnNlY29uZCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4cDYuZXhl
YygnZmlyc3RcbmJsYWgnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHA2LmV4ZWMoJ2ZpcnN0XG5i
bGFoXG50aGlyZCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4cDYuZXhlYygnZmlyc3RcbmJsYWgy
XG5ibGFoMycpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4cDcuZXhlYygndGVzdCcpIGlzIG51bGwK
K1BBU1MgcmVnZXhwNy5leGVjKCdibGFoJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwNy5leGVj
KCcxYmxhaCcpIGlzIFsnMWJsYWgnXQorUEFTUyByZWdleHA3LmV4ZWMoJ2JsYWgxJykgaXMgWydi
bGFoMSddCitQQVNTIHJlZ2V4cDcuZXhlYygnYmxhaCBibGFoIGJsYWgnKSBpcyBbJ2JsYWggYmxh
aCBibGFoJ10KK1BBU1MgcmVnZXhwNy5leGVjKCdibGFoXG5zZWNvbmQnKSBpcyBudWxsCitQQVNT
IHJlZ2V4cDcuZXhlYygnZmlyc3RcbmJsYWgnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDcuZXhlYygn
Zmlyc3RcbmJsYWhcbnRoaXJkJykgaXMgbnVsbAorUEFTUyByZWdleHA3LmV4ZWMoJ2ZpcnN0XG5i
bGFoMlxuYmxhaDMnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDguZXhlYygndGVzdCcpIGlzIG51bGwK
K1BBU1MgcmVnZXhwOC5leGVjKCdibGFoJykgaXMgWydibGFoJywnJ10KK1BBU1MgcmVnZXhwOC5l
eGVjKCcxYmxhaCcpIGlzIFsnMWJsYWgnLCcxJ10KK1BBU1MgcmVnZXhwOC5leGVjKCdibGFoMScp
IGlzIFsnYmxhaDEnLCcnXQorUEFTUyByZWdleHA4LmV4ZWMoJ2JsYWggYmxhaCBibGFoJykgaXMg
WydibGFoIGJsYWggYmxhaCcsJ2JsYWggYmxhaCAnXQorUEFTUyByZWdleHA4LmV4ZWMoJ2JsYWhc
bnNlY29uZCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwOC5leGVjKCdmaXJzdFxuYmxhaCcpIGlzIG51
bGwKK1BBU1MgcmVnZXhwOC5leGVjKCdmaXJzdFxuYmxhaFxudGhpcmQnKSBpcyBudWxsCitQQVNT
IHJlZ2V4cDguZXhlYygnZmlyc3RcbmJsYWgyXG5ibGFoMycpIGlzIG51bGwKK1BBU1MgcmVnZXhw
OS5leGVjKCd0ZXN0JykgaXMgbnVsbAorUEFTUyByZWdleHA5LmV4ZWMoJ2JsYWgnKSBpcyBbJ2Js
YWgnXQorUEFTUyByZWdleHA5LmV4ZWMoJzFibGFoJykgaXMgWycxYmxhaCddCitQQVNTIHJlZ2V4
cDkuZXhlYygnYmxhaDEnKSBpcyBbJ2JsYWgxJ10KK1BBU1MgcmVnZXhwOS5leGVjKCdibGFoIGJs
YWggYmxhaCcpIGlzIFsnYmxhaCBibGFoIGJsYWgnXQorUEFTUyByZWdleHA5LmV4ZWMoJ2JsYWhc
bnNlY29uZCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4cDkuZXhlYygnZmlyc3RcbmJsYWgnKSBp
cyBbJ2JsYWgnXQorUEFTUyByZWdleHA5LmV4ZWMoJ2ZpcnN0XG5ibGFoXG50aGlyZCcpIGlzIFsn
YmxhaCddCitQQVNTIHJlZ2V4cDkuZXhlYygnZmlyc3RcbmJsYWgyXG5ibGFoMycpIGlzIFsnYmxh
aDInXQorUEFTUyByZWdleHAxMC5leGVjKCd0ZXN0JykgaXMgbnVsbAorUEFTUyByZWdleHAxMC5l
eGVjKCdibGFoJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwMTAuZXhlYygnMWJsYWgnKSBpcyBb
JzFibGFoJ10KK1BBU1MgcmVnZXhwMTAuZXhlYygnYmxhaDEnKSBpcyBbJ2JsYWgxJ10KK1BBU1Mg
cmVnZXhwMTAuZXhlYygnYmxhaCBibGFoIGJsYWgnKSBpcyBbJ2JsYWggYmxhaCBibGFoJ10KK1BB
U1MgcmVnZXhwMTAuZXhlYygnYmxhaFxuc2Vjb25kJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhw
MTAuZXhlYygnZmlyc3RcbmJsYWgnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHAxMC5leGVjKCdm
aXJzdFxuYmxhaFxudGhpcmQnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHAxMC5leGVjKCdmaXJz
dFxuYmxhaDJcbmJsYWgzJykgaXMgWydibGFoMiddCitQQVNTIHJlZ2V4cDExLmV4ZWMoJ3Rlc3Qn
KSBpcyBudWxsCitQQVNTIHJlZ2V4cDExLmV4ZWMoJ2JsYWgnKSBpcyBbJ2JsYWgnXQorUEFTUyBy
ZWdleHAxMS5leGVjKCcxYmxhaCcpIGlzIFsnMWJsYWgnXQorUEFTUyByZWdleHAxMS5leGVjKCdi
bGFoMScpIGlzIFsnYmxhaDEnXQorUEFTUyByZWdleHAxMS5leGVjKCdibGFoIGJsYWggYmxhaCcp
IGlzIFsnYmxhaCBibGFoIGJsYWgnXQorUEFTUyByZWdleHAxMS5leGVjKCdibGFoXG5zZWNvbmQn
KSBpcyBudWxsCitQQVNTIHJlZ2V4cDExLmV4ZWMoJ2ZpcnN0XG5ibGFoJykgaXMgWydibGFoJ10K
K1BBU1MgcmVnZXhwMTEuZXhlYygnZmlyc3RcbmJsYWhcbnRoaXJkJykgaXMgbnVsbAorUEFTUyBy
ZWdleHAxMS5leGVjKCdmaXJzdFxuYmxhaDJcbmJsYWgzJykgaXMgWydibGFoMyddCitQQVNTIHJl
Z2V4cDEyLmV4ZWMoJ3Rlc3QnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDEyLmV4ZWMoJ2JsYWgnKSBp
cyBbJ2JsYWgnXQorUEFTUyByZWdleHAxMi5leGVjKCcxYmxhaCcpIGlzIFsnMWJsYWgnXQorUEFT
UyByZWdleHAxMi5leGVjKCdibGFoMScpIGlzIFsnYmxhaDEnXQorUEFTUyByZWdleHAxMi5leGVj
KCdibGFoIGJsYWggYmxhaCcpIGlzIFsnYmxhaCBibGFoIGJsYWgnXQorUEFTUyByZWdleHAxMi5l
eGVjKCdibGFoXG5zZWNvbmQnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDEyLmV4ZWMoJ2ZpcnN0XG5i
bGFoJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwMTIuZXhlYygnZmlyc3RcbmJsYWhcbnRoaXJk
JykgaXMgbnVsbAorUEFTUyByZWdleHAxMi5leGVjKCdmaXJzdFxuYmxhaDJcbmJsYWgzJykgaXMg
WydibGFoMyddCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZWdleC9kb3RzdGFyLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZWdleC9kb3RzdGFyLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3JlZ2V4L2RvdHN0YXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9kb3RzdGFyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL2RvdHN0YXIuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9yZWdleC9zY3JpcHQtdGVzdHMvZG90c3Rhci5qcwkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL2RvdHN0YXIuanMJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM2IEBACitkZXNjcmlwdGlvbigiVGhpcyBwYWdlIHRl
c3RzIGhhbmRsaW5nIG9mIHBhcmVudGhlc2VzIHN1YmV4cHJlc3Npb25zLiIpOworCit2YXIgcmVn
ZXhwMSA9IC8uKmJsYWguKi87CitzaG91bGRCZU51bGwoInJlZ2V4cDEuZXhlYygndGVzdCcpIik7
CitzaG91bGRCZSgicmVnZXhwMS5leGVjKCdibGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJl
KCJyZWdleHAxLmV4ZWMoJzFibGFoJykiLCAiWycxYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhw
MS5leGVjKCdibGFoMScpIiwgIlsnYmxhaDEnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEuZXhlYygn
YmxhaCBibGFoIGJsYWgnKSIsICJbJ2JsYWggYmxhaCBibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdl
eHAxLmV4ZWMoJ2JsYWhcXG5zZWNvbmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4
cDEuZXhlYygnZmlyc3RcXG5ibGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAx
LmV4ZWMoJ2ZpcnN0XFxuYmxhaFxcbnRoaXJkJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJy
ZWdleHAxLmV4ZWMoJ2ZpcnN0XFxuYmxhaDJcXG5ibGFoMycpIiwgIlsnYmxhaDInXSIpOworCit2
YXIgcmVnZXhwMiA9IC9eLipibGFoLiovOworc2hvdWxkQmVOdWxsKCJyZWdleHAyLmV4ZWMoJ3Rl
c3QnKSIpOworc2hvdWxkQmUoInJlZ2V4cDIuZXhlYygnYmxhaCcpIiwgIlsnYmxhaCddIik7Citz
aG91bGRCZSgicmVnZXhwMi5leGVjKCcxYmxhaCcpIiwgIlsnMWJsYWgnXSIpOworc2hvdWxkQmUo
InJlZ2V4cDIuZXhlYygnYmxhaDEnKSIsICJbJ2JsYWgxJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAy
LmV4ZWMoJ2JsYWggYmxhaCBibGFoJykiLCAiWydibGFoIGJsYWggYmxhaCddIik7CitzaG91bGRC
ZSgicmVnZXhwMi5leGVjKCdibGFoXFxuc2Vjb25kJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJl
TnVsbCgicmVnZXhwMi5leGVjKCdmaXJzdFxcbmJsYWgnKSIpOworc2hvdWxkQmVOdWxsKCJyZWdl
eHAyLmV4ZWMoJ2ZpcnN0XFxuYmxhaFxcbnRoaXJkJykiKTsKK3Nob3VsZEJlTnVsbCgicmVnZXhw
Mi5leGVjKCdmaXJzdFxcbmJsYWgyXFxuYmxhaDMnKSIpOworCit2YXIgcmVnZXhwMyA9IC8uKmJs
YWguKiQvOworc2hvdWxkQmVOdWxsKCJyZWdleHAzLmV4ZWMoJ3Rlc3QnKSIpOworc2hvdWxkQmUo
InJlZ2V4cDMuZXhlYygnYmxhaCcpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwMy5l
eGVjKCcxYmxhaCcpIiwgIlsnMWJsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDMuZXhlYygnYmxh
aDEnKSIsICJbJ2JsYWgxJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAzLmV4ZWMoJ2JsYWggYmxhaCBi
bGFoJykiLCAiWydibGFoIGJsYWggYmxhaCddIik7CitzaG91bGRCZU51bGwoInJlZ2V4cDMuZXhl
YygnYmxhaFxcbnNlY29uZCcpIik7CitzaG91bGRCZSgicmVnZXhwMy5leGVjKCdmaXJzdFxcbmJs
YWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHAzLmV4ZWMoJ2ZpcnN0XFxu
YmxhaFxcbnRoaXJkJykiKTsKK3Nob3VsZEJlKCJyZWdleHAzLmV4ZWMoJ2ZpcnN0XFxuYmxhaDJc
XG5ibGFoMycpIiwgIlsnYmxhaDMnXSIpOworCit2YXIgcmVnZXhwNCA9IC9eLipibGFoLiokLzsK
K3Nob3VsZEJlTnVsbCgicmVnZXhwNC5leGVjKCd0ZXN0JykiKTsKK3Nob3VsZEJlKCJyZWdleHA0
LmV4ZWMoJ2JsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDQuZXhlYygnMWJs
YWgnKSIsICJbJzFibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA0LmV4ZWMoJ2JsYWgxJykiLCAi
WydibGFoMSddIik7CitzaG91bGRCZSgicmVnZXhwNC5leGVjKCdibGFoIGJsYWggYmxhaCcpIiwg
IlsnYmxhaCBibGFoIGJsYWgnXSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHA0LmV4ZWMoJ2JsYWhc
XG5zZWNvbmQnKSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHA0LmV4ZWMoJ2ZpcnN0XFxuYmxhaCcp
Iik7CitzaG91bGRCZU51bGwoInJlZ2V4cDQuZXhlYygnZmlyc3RcXG5ibGFoXFxudGhpcmQnKSIp
Oworc2hvdWxkQmVOdWxsKCJyZWdleHA0LmV4ZWMoJ2ZpcnN0XFxuYmxhaDJcXG5ibGFoMycpIik7
CisKK3ZhciByZWdleHA1ID0gLy4qP2JsYWguKi87CitzaG91bGRCZU51bGwoInJlZ2V4cDUuZXhl
YygndGVzdCcpIik7CitzaG91bGRCZSgicmVnZXhwNS5leGVjKCdibGFoJykiLCAiWydibGFoJ10i
KTsKK3Nob3VsZEJlKCJyZWdleHA1LmV4ZWMoJzFibGFoJykiLCAiWycxYmxhaCddIik7CitzaG91
bGRCZSgicmVnZXhwNS5leGVjKCdibGFoMScpIiwgIlsnYmxhaDEnXSIpOworc2hvdWxkQmUoInJl
Z2V4cDUuZXhlYygnYmxhaCBibGFoIGJsYWgnKSIsICJbJ2JsYWggYmxhaCBibGFoJ10iKTsKK3No
b3VsZEJlKCJyZWdleHA1LmV4ZWMoJ2JsYWhcXG5zZWNvbmQnKSIsICJbJ2JsYWgnXSIpOworc2hv
dWxkQmUoInJlZ2V4cDUuZXhlYygnZmlyc3RcXG5ibGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3Vs
ZEJlKCJyZWdleHA1LmV4ZWMoJ2ZpcnN0XFxuYmxhaFxcbnRoaXJkJykiLCAiWydibGFoJ10iKTsK
K3Nob3VsZEJlKCJyZWdleHA1LmV4ZWMoJ2ZpcnN0XFxuYmxhaDJcXG5ibGFoMycpIiwgIlsnYmxh
aDInXSIpOworCit2YXIgcmVnZXhwNiA9IC8uKmJsYWguKj8vOworc2hvdWxkQmVOdWxsKCJyZWdl
eHA2LmV4ZWMoJ3Rlc3QnKSIpOworc2hvdWxkQmUoInJlZ2V4cDYuZXhlYygnYmxhaCcpIiwgIlsn
YmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwNi5leGVjKCcxYmxhaCcpIiwgIlsnMWJsYWgnXSIp
Oworc2hvdWxkQmUoInJlZ2V4cDYuZXhlYygnYmxhaDEnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxk
QmUoInJlZ2V4cDYuZXhlYygnYmxhaCBibGFoIGJsYWgnKSIsICJbJ2JsYWggYmxhaCBibGFoJ10i
KTsKK3Nob3VsZEJlKCJyZWdleHA2LmV4ZWMoJ2JsYWhcXG5zZWNvbmQnKSIsICJbJ2JsYWgnXSIp
Oworc2hvdWxkQmUoInJlZ2V4cDYuZXhlYygnZmlyc3RcXG5ibGFoJykiLCAiWydibGFoJ10iKTsK
K3Nob3VsZEJlKCJyZWdleHA2LmV4ZWMoJ2ZpcnN0XFxuYmxhaFxcbnRoaXJkJykiLCAiWydibGFo
J10iKTsKK3Nob3VsZEJlKCJyZWdleHA2LmV4ZWMoJ2ZpcnN0XFxuYmxhaDJcXG5ibGFoMycpIiwg
IlsnYmxhaCddIik7CisKK3ZhciByZWdleHA3ID0gL14uKj9ibGFoLio/JC87CitzaG91bGRCZU51
bGwoInJlZ2V4cDcuZXhlYygndGVzdCcpIik7CitzaG91bGRCZSgicmVnZXhwNy5leGVjKCdibGFo
JykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA3LmV4ZWMoJzFibGFoJykiLCAiWycx
YmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwNy5leGVjKCdibGFoMScpIiwgIlsnYmxhaDEnXSIp
Oworc2hvdWxkQmUoInJlZ2V4cDcuZXhlYygnYmxhaCBibGFoIGJsYWgnKSIsICJbJ2JsYWggYmxh
aCBibGFoJ10iKTsKK3Nob3VsZEJlTnVsbCgicmVnZXhwNy5leGVjKCdibGFoXFxuc2Vjb25kJyki
KTsKK3Nob3VsZEJlTnVsbCgicmVnZXhwNy5leGVjKCdmaXJzdFxcbmJsYWgnKSIpOworc2hvdWxk
QmVOdWxsKCJyZWdleHA3LmV4ZWMoJ2ZpcnN0XFxuYmxhaFxcbnRoaXJkJykiKTsKK3Nob3VsZEJl
TnVsbCgicmVnZXhwNy5leGVjKCdmaXJzdFxcbmJsYWgyXFxuYmxhaDMnKSIpOworCit2YXIgcmVn
ZXhwOCA9IC9eKC4qKWJsYWguKiQvOworc2hvdWxkQmVOdWxsKCJyZWdleHA4LmV4ZWMoJ3Rlc3Qn
KSIpOworc2hvdWxkQmUoInJlZ2V4cDguZXhlYygnYmxhaCcpIiwgIlsnYmxhaCcsJyddIik7Citz
aG91bGRCZSgicmVnZXhwOC5leGVjKCcxYmxhaCcpIiwgIlsnMWJsYWgnLCcxJ10iKTsKK3Nob3Vs
ZEJlKCJyZWdleHA4LmV4ZWMoJ2JsYWgxJykiLCAiWydibGFoMScsJyddIik7CitzaG91bGRCZSgi
cmVnZXhwOC5leGVjKCdibGFoIGJsYWggYmxhaCcpIiwgIlsnYmxhaCBibGFoIGJsYWgnLCdibGFo
IGJsYWggJ10iKTsKK3Nob3VsZEJlTnVsbCgicmVnZXhwOC5leGVjKCdibGFoXFxuc2Vjb25kJyki
KTsKK3Nob3VsZEJlTnVsbCgicmVnZXhwOC5leGVjKCdmaXJzdFxcbmJsYWgnKSIpOworc2hvdWxk
QmVOdWxsKCJyZWdleHA4LmV4ZWMoJ2ZpcnN0XFxuYmxhaFxcbnRoaXJkJykiKTsKK3Nob3VsZEJl
TnVsbCgicmVnZXhwOC5leGVjKCdmaXJzdFxcbmJsYWgyXFxuYmxhaDMnKSIpOworCit2YXIgcmVn
ZXhwOSA9IC8uKmJsYWguKi9tOworc2hvdWxkQmVOdWxsKCJyZWdleHA5LmV4ZWMoJ3Rlc3QnKSIp
Oworc2hvdWxkQmUoInJlZ2V4cDkuZXhlYygnYmxhaCcpIiwgIlsnYmxhaCddIik7CitzaG91bGRC
ZSgicmVnZXhwOS5leGVjKCcxYmxhaCcpIiwgIlsnMWJsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4
cDkuZXhlYygnYmxhaDEnKSIsICJbJ2JsYWgxJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA5LmV4ZWMo
J2JsYWggYmxhaCBibGFoJykiLCAiWydibGFoIGJsYWggYmxhaCddIik7CitzaG91bGRCZSgicmVn
ZXhwOS5leGVjKCdibGFoXFxuc2Vjb25kJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdl
eHA5LmV4ZWMoJ2ZpcnN0XFxuYmxhaCcpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhw
OS5leGVjKCdmaXJzdFxcbmJsYWhcXG50aGlyZCcpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgi
cmVnZXhwOS5leGVjKCdmaXJzdFxcbmJsYWgyXFxuYmxhaDMnKSIsICJbJ2JsYWgyJ10iKTsKKwor
dmFyIHJlZ2V4cDEwID0gL14uKmJsYWguKi9tOworc2hvdWxkQmVOdWxsKCJyZWdleHAxMC5leGVj
KCd0ZXN0JykiKTsKK3Nob3VsZEJlKCJyZWdleHAxMC5leGVjKCdibGFoJykiLCAiWydibGFoJ10i
KTsKK3Nob3VsZEJlKCJyZWdleHAxMC5leGVjKCcxYmxhaCcpIiwgIlsnMWJsYWgnXSIpOworc2hv
dWxkQmUoInJlZ2V4cDEwLmV4ZWMoJ2JsYWgxJykiLCAiWydibGFoMSddIik7CitzaG91bGRCZSgi
cmVnZXhwMTAuZXhlYygnYmxhaCBibGFoIGJsYWgnKSIsICJbJ2JsYWggYmxhaCBibGFoJ10iKTsK
K3Nob3VsZEJlKCJyZWdleHAxMC5leGVjKCdibGFoXFxuc2Vjb25kJykiLCAiWydibGFoJ10iKTsK
K3Nob3VsZEJlKCJyZWdleHAxMC5leGVjKCdmaXJzdFxcbmJsYWgnKSIsICJbJ2JsYWgnXSIpOwor
c2hvdWxkQmUoInJlZ2V4cDEwLmV4ZWMoJ2ZpcnN0XFxuYmxhaFxcbnRoaXJkJykiLCAiWydibGFo
J10iKTsKK3Nob3VsZEJlKCJyZWdleHAxMC5leGVjKCdmaXJzdFxcbmJsYWgyXFxuYmxhaDMnKSIs
ICJbJ2JsYWgyJ10iKTsKKwordmFyIHJlZ2V4cDExID0gLy4qKD86YmxhaCkuKiQvOworc2hvdWxk
QmVOdWxsKCJyZWdleHAxMS5leGVjKCd0ZXN0JykiKTsKK3Nob3VsZEJlKCJyZWdleHAxMS5leGVj
KCdibGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAxMS5leGVjKCcxYmxhaCcp
IiwgIlsnMWJsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDExLmV4ZWMoJ2JsYWgxJykiLCAiWydi
bGFoMSddIik7CitzaG91bGRCZSgicmVnZXhwMTEuZXhlYygnYmxhaCBibGFoIGJsYWgnKSIsICJb
J2JsYWggYmxhaCBibGFoJ10iKTsKK3Nob3VsZEJlTnVsbCgicmVnZXhwMTEuZXhlYygnYmxhaFxc
bnNlY29uZCcpIik7CitzaG91bGRCZSgicmVnZXhwMTEuZXhlYygnZmlyc3RcXG5ibGFoJykiLCAi
WydibGFoJ10iKTsKK3Nob3VsZEJlTnVsbCgicmVnZXhwMTEuZXhlYygnZmlyc3RcXG5ibGFoXFxu
dGhpcmQnKSIpOworc2hvdWxkQmUoInJlZ2V4cDExLmV4ZWMoJ2ZpcnN0XFxuYmxhaDJcXG5ibGFo
MycpIiwgIlsnYmxhaDMnXSIpOworCit2YXIgcmVnZXhwMTIgPSAvLiooPzpibGFofGJ1enp8YmFu
ZykuKiQvOworc2hvdWxkQmVOdWxsKCJyZWdleHAxMi5leGVjKCd0ZXN0JykiKTsKK3Nob3VsZEJl
KCJyZWdleHAxMi5leGVjKCdibGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAx
Mi5leGVjKCcxYmxhaCcpIiwgIlsnMWJsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEyLmV4ZWMo
J2JsYWgxJykiLCAiWydibGFoMSddIik7CitzaG91bGRCZSgicmVnZXhwMTIuZXhlYygnYmxhaCBi
bGFoIGJsYWgnKSIsICJbJ2JsYWggYmxhaCBibGFoJ10iKTsKK3Nob3VsZEJlTnVsbCgicmVnZXhw
MTIuZXhlYygnYmxhaFxcbnNlY29uZCcpIik7CitzaG91bGRCZSgicmVnZXhwMTIuZXhlYygnZmly
c3RcXG5ibGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlTnVsbCgicmVnZXhwMTIuZXhlYygn
Zmlyc3RcXG5ibGFoXFxudGhpcmQnKSIpOworc2hvdWxkQmUoInJlZ2V4cDEyLmV4ZWMoJ2ZpcnN0
XFxuYmxhaDJcXG5ibGFoMycpIiwgIlsnYmxhaDMnXSIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKwo=
</data>
<flag name="review"
          id="95052"
          type_id="1"
          status="-"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100690</attachid>
            <date>2011-07-13 11:20:16 -0700</date>
            <delta_ts>2011-07-13 11:30:23 -0700</delta_ts>
            <desc>Patch with suggested updates</desc>
            <filename>64202-3.patch</filename>
            <type>text/plain</type>
            <size>38052</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTA3NTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAK
KzIwMTEtMDctMTEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MjAyCisgICAgICAg
IEVuaDogSW1wcm92ZSBoYW5kbGluZyBvZiBSZWdFeHAgaW4gdGhlIGZvcm0gb2YgLy4qYmxhaC4q
LworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IGNvZGUgdG8gYm90aCB0aGUgWWFyciBpbnRlcnByZXRlciBhbmQgSklUIHRvIGhhbmRsZQorICAg
ICAgICB0aGVzZSBleHByZXNzaW9ucyBhIGxpdHRsZSBkaWZmZXJlbnRseS4gIEZpcnN0IG9mZiwg
dGhlIHRlcm1zCisgICAgICAgIGluIGJldHdlZW4gdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIC4q
J3MgY2Fubm90IGNhcHR1cmUgYW5kCisgICAgICAgIGFsc28gdGhpcyBlbmhhbmNlbWVudCBpcyBs
aW1pdGVkIHRvIHNpbmdsZSBhbHRlcm5hdGl2ZSBleHByZXNzaW9ucy4KKyAgICAgICAgSWYgYW4g
ZXhwcmVzc2lvbiBpcyBvZiB0aGUgcmlnaHQgZm9ybSB3aXRoIHRoZSBhZm9yZW1lbnRpb25lZAor
ICAgICAgICByZXN0cmljdGlvbnMsIHdlIHByb2Nlc3MgdGhlIGlubmVyIHRlcm1zIGFuZCB0aGVu
IGxvb2sgZm9yIHRoZQorICAgICAgICBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBhbmQgZW5kIG9m
IHRoZSBzdHJpbmcuICBUaGVyZSBpcyBoYW5kbGluZyAKKyAgICAgICAgZm9yIG11bHRpbGluZSBl
eHByZXNzaW9ucyB0byBhbGxvdyB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgdG8gYmUgCisgICAgICAg
IHJpZ2h0IGFmdGVyIGFuZCByaWdodCBiZWZvcmUgbmV3bGluZXMuCisKKyAgICAgICAgVGhpcyBl
bmhhbmNlbWVudCBzcGVlZHMgdXAgZXhwcmVzc2lvbnMgb2YgdGhpcyB0eXBlIDEyeCBvbgorICAg
ICAgICBhIE1hY0Jvb2tQcm8uCisKKyAgICAgICAgQ2xlYW5lZCB1cCAnY2FzZScgc3RhdGVtZW50
IGluZGVudGF0aW9uLgorCisgICAgICAgIEEgbmV3IHNldCBvZiB0ZXN0cyB3YXMgYWRkZWQgYXMg
TGF5b3V0VGVzdHMvZmFzdC9yZWdleC9kb3RzdGFyLmh0bWwKKworICAgICAgICAqIHlhcnIvWWFy
ckludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6OklucHV0
U3RyZWFtOjplbmQpOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6bWF0Y2hEb3RT
dGFyRW5jbG9zdXJlKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6Om1hdGNoRGlz
anVuY3Rpb24pOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmFzc2VydGlvbkRv
dFN0YXJFbmNsb3N1cmUpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmVtaXRE
aXNqdW5jdGlvbik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuaDoKKyAgICAgICAg
KEpTQzo6WWFycjo6Qnl0ZVRlcm06OkRvdFN0YXJFbmNsb3N1cmUpOgorICAgICAgICAqIHlhcnIv
WWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmdlbmVyYXRl
RG90U3RhckVuY2xvc3VyZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmJh
Y2t0cmFja0RvdFN0YXJFbmNsb3N1cmUpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJh
dG9yOjpnZW5lcmF0ZVRlcm0pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpi
YWNrdHJhY2tUZXJtKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6c2V0dXBBbHRlcm5hdGl2ZU9mZnNl
dHMpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpjb250YWlu
c0NhcHR1cmluZ1Rlcm1zKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1
Y3Rvcjo6b3B0aW1pemVEb3RTdGFyV3JhcHBlZEV4cHJlc3Npb25zKToKKyAgICAgICAgKEpTQzo6
WWFycjo6WWFyclBhdHRlcm46OmNvbXBpbGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4u
aDoKKyAgICAgICAgKEpTQzo6WWFycjo6UGF0dGVyblRlcm06OlBhdHRlcm5UZXJtKToKKwogMjAx
MS0wNy0xMSAgR2Fib3IgTG9raSAgPGxva2lAd2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdGhl
IGNvbmRpdGlvbiBvZiB0aGUgb3B0aW1pemVkIGNvZGUgaW4gZG91YmxlVHJhbnNmZXIKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAkocmV2aXNpb24gOTA2OTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBSZWdFeHA6OmNvbXBpbGUoSlNHbG9iYWxEYXRh
KiBnbG9iYQogICAgIGdsb2JhbERhdGEtPnJlZ0V4cENhY2hlKCktPmFkZFRvU3Ryb25nQ2FjaGUo
dGhpcyk7CiAKICAgICBBU1NFUlQobV9udW1TdWJwYXR0ZXJucyA9PSBwYXR0ZXJuLm1fbnVtU3Vi
cGF0dGVybnMpOwotCisjaWYgMAogI2lmIEVOQUJMRShZQVJSX0pJVCkKICAgICBpZiAoIXBhdHRl
cm4ubV9jb250YWluc0JhY2tyZWZlcmVuY2VzICYmIGdsb2JhbERhdGEtPmNhblVzZUpJVCgpKSB7
CiAgICAgICAgIFlhcnI6OmppdENvbXBpbGUocGF0dGVybiwgZ2xvYmFsRGF0YSwgbV9yZXByZXNl
bnRhdGlvbi0+bV9yZWdFeHBKSVRDb2RlKTsKQEAgLTEzNiw2ICsxMzYsNyBAQCB2b2lkIFJlZ0V4
cDo6Y29tcGlsZShKU0dsb2JhbERhdGEqIGdsb2JhCiAjZW5kaWYKICAgICB9CiAjZW5kaWYKKyNl
bmRpZgogCiAgICAgbV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHBCeXRlY29kZSA9IFlhcnI6OmJ5
dGVDb21waWxlKHBhdHRlcm4sICZnbG9iYWxEYXRhLT5tX3JlZ0V4cEFsbG9jYXRvcik7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAko
cmV2aXNpb24gOTA2OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJw
cmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNiArMjQzLDExIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBwb3MgPT0gbGVuZ3RoOwogICAgICAgICB9CiAKKyAgICAgICAgdW5z
aWduZWQgZW5kKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDsKKyAgICAg
ICAgfQorCiAgICAgICAgIGJvb2wgY2hlY2tJbnB1dChpbnQgY291bnQpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmICgocG9zICsgY291bnQpIDw9IGxlbmd0aCkgewpAQCAtMTA0NCw2ICsxMDQ5
LDM4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTUmVnRXhwRXJyb3JOb01hdGNoOwogICAg
IH0KIAorICAgIGJvb2wgbWF0Y2hEb3RTdGFyRW5jbG9zdXJlKEJ5dGVUZXJtJiB0ZXJtLCBEaXNq
dW5jdGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0odGVy
bSk7CisgICAgICAgIHVuc2lnbmVkIG1hdGNoQmVnaW4gPSBjb250ZXh0LT5tYXRjaEJlZ2luOwor
ICAgIAorICAgICAgICBpZiAobWF0Y2hCZWdpbikgeworICAgICAgICAgICAgZm9yIChtYXRjaEJl
Z2luLS07IHRydWU7IG1hdGNoQmVnaW4tLSkgeworICAgICAgICAgICAgICAgIGlmICh0ZXN0Q2hh
cmFjdGVyQ2xhc3MocGF0dGVybi0+bmV3bGluZUNoYXJhY3RlckNsYXNzLCBpbnB1dC5yZXJlYWQo
bWF0Y2hCZWdpbikpKSB7CisgICAgICAgICAgICAgICAgICAgICsrbWF0Y2hCZWdpbjsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgaWYgKCFtYXRjaEJlZ2luKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIG1hdGNoRW5kID0gaW5wdXQuZ2V0
UG9zKCk7CisgICAgCisgICAgICAgIGZvciAoOyAobWF0Y2hFbmQgIT0gaW5wdXQuZW5kKCkpCisg
ICAgICAgICAgICAgJiYgKCF0ZXN0Q2hhcmFjdGVyQ2xhc3MocGF0dGVybi0+bmV3bGluZUNoYXJh
Y3RlckNsYXNzLCBpbnB1dC5yZXJlYWQobWF0Y2hFbmQpKSk7IG1hdGNoRW5kKyspIHsgfQorCisg
ICAgICAgIGlmICgoKG1hdGNoQmVnaW4gJiYgdGVybS5hbmNob3JzLm1fYm9sKQorICAgICAgICAg
ICAgIHx8ICgobWF0Y2hFbmQgIT0gaW5wdXQuZW5kKCkpICYmIHRlcm0uYW5jaG9ycy5tX2VvbCkp
CisgICAgICAgICAgICAmJiAhcGF0dGVybi0+bV9tdWx0aWxpbmUpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgY29udGV4dC0+bWF0Y2hCZWdpbiA9IG1hdGNoQmVnaW47Cisg
ICAgICAgIGNvbnRleHQtPm1hdGNoRW5kID0gbWF0Y2hFbmQ7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKwogI2RlZmluZSBNQVRDSF9ORVhUKCkgeyArK2NvbnRleHQtPnRlcm07IGdvdG8g
bWF0Y2hBZ2FpbjsgfQogI2RlZmluZSBCQUNLVFJBQ0soKSB7IC0tY29udGV4dC0+dGVybTsgZ290
byBiYWNrdHJhY2s7IH0KICNkZWZpbmUgY3VycmVudFRlcm0oKSAoZGlzanVuY3Rpb24tPnRlcm1z
W2NvbnRleHQtPnRlcm1dKQpAQCAtMTIwMyw5ICsxMjQwLDE0IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKIAotICAgICAg
ICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVVuY2hlY2tJbnB1dDoKLSAgICAgICAgICAgICAgICBp
bnB1dC51bmNoZWNrSW5wdXQoY3VycmVudFRlcm0oKS5jaGVja0lucHV0Q291bnQpOwotICAgICAg
ICAgICAgICAgIE1BVENIX05FWFQoKTsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVVuY2hl
Y2tJbnB1dDoKKyAgICAgICAgICAgIGlucHV0LnVuY2hlY2tJbnB1dChjdXJyZW50VGVybSgpLmNo
ZWNrSW5wdXRDb3VudCk7CisgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVEb3RTdGFyRW5jbG9zdXJlOgorICAgICAg
ICAgICAgaWYgKG1hdGNoRG90U3RhckVuY2xvc3VyZShjdXJyZW50VGVybSgpLCBjb250ZXh0KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBNYXRjaDsKKyAgICAgICAgICAgIEJBQ0tU
UkFDSygpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGZhbGwtdGhy
b3VnaCB0byBoZXJlLgpAQCAtMTI0Miw5MSArMTI4NCw5NCBAQCBwdWJsaWM6CiAgICAgICAgIGNh
c2UgQnl0ZVRlcm06OlR5cGVCb2R5QWx0ZXJuYXRpdmVFbmQ6CiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIAotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUFsdGVybmF0
aXZlQmVnaW46Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQWx0ZXJuYXRpdmVEaXNq
dW5jdGlvbjogewotICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSBjdXJyZW50VGVybSgpLmFs
dGVybmF0aXZlLm5leHQ7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+dGVybSArPSBvZmZzZXQ7
Ci0gICAgICAgICAgICAgICAgaWYgKG9mZnNldCA+IDApCi0gICAgICAgICAgICAgICAgICAgIE1B
VENIX05FWFQoKTsKLSAgICAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVBbHRlcm5hdGl2ZUVuZDogewotICAgICAg
ICAgICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBiYWNrdHJhY2sgYmFjayBpbnRvIGFuIGFsdGVy
bmF0aXZlIG9mIHRoZSBtYWluIGJvZHkgb2YgdGhlIHJlZ2V4LgotICAgICAgICAgICAgICAgIEJh
Y2tUcmFja0luZm9BbHRlcm5hdGl2ZSogYmFja1RyYWNrID0gcmVpbnRlcnByZXRfY2FzdDxCYWNr
VHJhY2tJbmZvQWx0ZXJuYXRpdmUqPihjb250ZXh0LT5mcmFtZSArIGN1cnJlbnRUZXJtKCkuZnJh
bWVMb2NhdGlvbik7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gYmFja1RyYWNr
LT5vZmZzZXQ7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+dGVybSAtPSBvZmZzZXQ7Ci0gICAg
ICAgICAgICAgICAgQkFDS1RSQUNLKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNh
c2UgQnl0ZVRlcm06OlR5cGVBc3NlcnRpb25CT0w6Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlQXNzZXJ0aW9uRU9MOgotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUFzc2Vy
dGlvbldvcmRCb3VuZGFyeToKLSAgICAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLQotICAgICAg
ICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJPbmNlOgotICAgICAgICAg
ICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJGaXhlZDoKLSAgICAgICAgICAg
IGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyR3JlZWR5OgotICAgICAgICAgICAg
Y2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJOb25HcmVlZHk6Ci0gICAgICAgICAg
ICAgICAgaWYgKGJhY2t0cmFja1BhdHRlcm5DaGFyYWN0ZXIoY3VycmVudFRlcm0oKSwgY29udGV4
dCkpCi0gICAgICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKLSAgICAgICAgICAgICAgICBC
QUNLVFJBQ0soKTsKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2FzZWRD
aGFyYWN0ZXJPbmNlOgotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DYXNl
ZENoYXJhY3RlckZpeGVkOgotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5D
YXNlZENoYXJhY3RlckdyZWVkeToKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0
ZXJuQ2FzZWRDaGFyYWN0ZXJOb25HcmVlZHk6Ci0gICAgICAgICAgICAgICAgaWYgKGJhY2t0cmFj
a1BhdHRlcm5DYXNlZENoYXJhY3RlcihjdXJyZW50VGVybSgpLCBjb250ZXh0KSkKLSAgICAgICAg
ICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwotICAgICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwot
ICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUNoYXJhY3RlckNsYXNzOgotICAgICAgICAg
ICAgICAgIGlmIChiYWNrdHJhY2tDaGFyYWN0ZXJDbGFzcyhjdXJyZW50VGVybSgpLCBjb250ZXh0
KSkKLSAgICAgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwotICAgICAgICAgICAgICAgIEJB
Q0tUUkFDSygpOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUJhY2tSZWZlcmVuY2U6
Ci0gICAgICAgICAgICAgICAgaWYgKGJhY2t0cmFja0JhY2tSZWZlcmVuY2UoY3VycmVudFRlcm0o
KSwgY29udGV4dCkpCi0gICAgICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKLSAgICAgICAg
ICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJl
bnRoZXNlc1N1YnBhdHRlcm46IHsKLSAgICAgICAgICAgICAgICBKU1JlZ0V4cFJlc3VsdCByZXN1
bHQgPSBiYWNrdHJhY2tQYXJlbnRoZXNlcyhjdXJyZW50VGVybSgpLCBjb250ZXh0KTsKKyAgICAg
ICAgY2FzZSBCeXRlVGVybTo6VHlwZUFsdGVybmF0aXZlQmVnaW46CisgICAgICAgIGNhc2UgQnl0
ZVRlcm06OlR5cGVBbHRlcm5hdGl2ZURpc2p1bmN0aW9uOiB7CisgICAgICAgICAgICBpbnQgb2Zm
c2V0ID0gY3VycmVudFRlcm0oKS5hbHRlcm5hdGl2ZS5uZXh0OworICAgICAgICAgICAgY29udGV4
dC0+dGVybSArPSBvZmZzZXQ7CisgICAgICAgICAgICBpZiAob2Zmc2V0ID4gMCkKKyAgICAgICAg
ICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICBCQUNLVFJBQ0soKTsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQWx0ZXJuYXRpdmVFbmQ6IHsKKyAgICAgICAg
ICAgIC8vIFdlIHNob3VsZCBuZXZlciBiYWNrdHJhY2sgYmFjayBpbnRvIGFuIGFsdGVybmF0aXZl
IG9mIHRoZSBtYWluIGJvZHkgb2YgdGhlIHJlZ2V4LgorICAgICAgICAgICAgQmFja1RyYWNrSW5m
b0FsdGVybmF0aXZlKiBiYWNrVHJhY2sgPSByZWludGVycHJldF9jYXN0PEJhY2tUcmFja0luZm9B
bHRlcm5hdGl2ZSo+KGNvbnRleHQtPmZyYW1lICsgY3VycmVudFRlcm0oKS5mcmFtZUxvY2F0aW9u
KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IGJhY2tUcmFjay0+b2Zmc2V0OworICAg
ICAgICAgICAgY29udGV4dC0+dGVybSAtPSBvZmZzZXQ7CisgICAgICAgICAgICBCQUNLVFJBQ0so
KTsKKyAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBKU1JlZ0V4cE1h
dGNoKSB7Ci0gICAgICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKHJlc3VsdCAhPSBKU1JlZ0V4cE5vTWF0Y2gpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVBc3NlcnRpb25C
T0w6CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVBc3NlcnRpb25FT0w6CisgICAgICAgIGNh
c2UgQnl0ZVRlcm06OlR5cGVBc3NlcnRpb25Xb3JkQm91bmRhcnk6CisgICAgICAgICAgICBCQUNL
VFJBQ0soKTsKIAotICAgICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VC
ZWdpbjoKLSAgICAgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGFyZW50aGVzZXNPbmNlQmVnaW4o
Y3VycmVudFRlcm0oKSwgY29udGV4dCkpCi0gICAgICAgICAgICAgICAgICAgIE1BVENIX05FWFQo
KTsKLSAgICAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRl
cm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5kOgotICAgICAgICAgICAgICAgIGlm
IChiYWNrdHJhY2tQYXJlbnRoZXNlc09uY2VFbmQoY3VycmVudFRlcm0oKSwgY29udGV4dCkpCi0g
ICAgICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKLSAgICAgICAgICAgICAgICBCQUNLVFJB
Q0soKTsKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRl
cm5UZXJtaW5hbEJlZ2luOgotICAgICAgICAgICAgICAgIGlmIChiYWNrdHJhY2tQYXJlbnRoZXNl
c1Rlcm1pbmFsQmVnaW4oY3VycmVudFRlcm0oKSwgY29udGV4dCkpCi0gICAgICAgICAgICAgICAg
ICAgIE1BVENIX05FWFQoKTsKLSAgICAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAg
ICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEVuZDoK
LSAgICAgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGFyZW50aGVzZXNUZXJtaW5hbEVuZChjdXJy
ZW50VGVybSgpLCBjb250ZXh0KSkKLSAgICAgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwot
ICAgICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6
VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbjoKLSAgICAgICAgICAgICAgICBpZiAoYmFj
a3RyYWNrUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKGN1cnJlbnRUZXJtKCksIGNvbnRleHQp
KQotICAgICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7Ci0gICAgICAgICAgICAgICAgQkFD
S1RSQUNLKCk7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFz
c2VydGlvbkVuZDoKLSAgICAgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGFyZW50aGV0aWNhbEFz
c2VydGlvbkVuZChjdXJyZW50VGVybSgpLCBjb250ZXh0KSkKLSAgICAgICAgICAgICAgICAgICAg
TUFUQ0hfTkVYVCgpOwotICAgICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotCi0gICAgICAgICAg
ICBjYXNlIEJ5dGVUZXJtOjpUeXBlQ2hlY2tJbnB1dDoKLSAgICAgICAgICAgICAgICBpbnB1dC51
bmNoZWNrSW5wdXQoY3VycmVudFRlcm0oKS5jaGVja0lucHV0Q291bnQpOwotICAgICAgICAgICAg
ICAgIEJBQ0tUUkFDSygpOwotCi0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlVW5jaGVj
a0lucHV0OgotICAgICAgICAgICAgICAgIGlucHV0LmNoZWNrSW5wdXQoY3VycmVudFRlcm0oKS5j
aGVja0lucHV0Q291bnQpOwotICAgICAgICAgICAgICAgIEJBQ0tUUkFDSygpOworICAgICAgICBj
YXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3Rlck9uY2U6CisgICAgICAgIGNhc2UgQnl0
ZVRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyRml4ZWQ6CisgICAgICAgIGNhc2UgQnl0ZVRlcm06
OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyR3JlZWR5OgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBl
UGF0dGVybkNoYXJhY3Rlck5vbkdyZWVkeToKKyAgICAgICAgICAgIGlmIChiYWNrdHJhY2tQYXR0
ZXJuQ2hhcmFjdGVyKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQorICAgICAgICAgICAgICAgIE1B
VENIX05FWFQoKTsKKyAgICAgICAgICAgIEJBQ0tUUkFDSygpOworICAgICAgICBjYXNlIEJ5dGVU
ZXJtOjpUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyT25jZToKKyAgICAgICAgY2FzZSBCeXRlVGVy
bTo6VHlwZVBhdHRlcm5DYXNlZENoYXJhY3RlckZpeGVkOgorICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyR3JlZWR5OgorICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyTm9uR3JlZWR5OgorICAgICAgICAgICAgaWYgKGJh
Y2t0cmFja1BhdHRlcm5DYXNlZENoYXJhY3RlcihjdXJyZW50VGVybSgpLCBjb250ZXh0KSkKKyAg
ICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICBCQUNLVFJBQ0soKTsKKyAg
ICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUNoYXJhY3RlckNsYXNzOgorICAgICAgICAgICAgaWYg
KGJhY2t0cmFja0NoYXJhY3RlckNsYXNzKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQorICAgICAg
ICAgICAgICAgIE1BVENIX05FWFQoKTsKKyAgICAgICAgICAgIEJBQ0tUUkFDSygpOworICAgICAg
ICBjYXNlIEJ5dGVUZXJtOjpUeXBlQmFja1JlZmVyZW5jZToKKyAgICAgICAgICAgIGlmIChiYWNr
dHJhY2tCYWNrUmVmZXJlbmNlKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQorICAgICAgICAgICAg
ICAgIE1BVENIX05FWFQoKTsKKyAgICAgICAgICAgIEJBQ0tUUkFDSygpOworICAgICAgICBjYXNl
IEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuOiB7CisgICAgICAgICAgICBKU1Jl
Z0V4cFJlc3VsdCByZXN1bHQgPSBiYWNrdHJhY2tQYXJlbnRoZXNlcyhjdXJyZW50VGVybSgpLCBj
b250ZXh0KTsKKworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBKU1JlZ0V4cE1hdGNoKSB7Cisg
ICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOworICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1
bHQgIT0gSlNSZWdFeHBOb01hdGNoKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisK
KyAgICAgICAgICAgIEJBQ0tUUkFDSygpOworICAgICAgICB9CisgICAgICAgIGNhc2UgQnl0ZVRl
cm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW46CisgICAgICAgICAgICBpZiAo
YmFja3RyYWNrUGFyZW50aGVzZXNPbmNlQmVnaW4oY3VycmVudFRlcm0oKSwgY29udGV4dCkpCisg
ICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOworICAgICAgICAgICAgQkFDS1RSQUNLKCk7Cisg
ICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5kOgor
ICAgICAgICAgICAgaWYgKGJhY2t0cmFja1BhcmVudGhlc2VzT25jZUVuZChjdXJyZW50VGVybSgp
LCBjb250ZXh0KSkKKyAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICBC
QUNLVFJBQ0soKTsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0
dGVyblRlcm1pbmFsQmVnaW46CisgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGFyZW50aGVzZXNU
ZXJtaW5hbEJlZ2luKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQorICAgICAgICAgICAgICAgIE1B
VENIX05FWFQoKTsKKyAgICAgICAgICAgIEJBQ0tUUkFDSygpOworICAgICAgICBjYXNlIEJ5dGVU
ZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxFbmQ6CisgICAgICAgICAgICBp
ZiAoYmFja3RyYWNrUGFyZW50aGVzZXNUZXJtaW5hbEVuZChjdXJyZW50VGVybSgpLCBjb250ZXh0
KSkKKyAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICBCQUNLVFJBQ0so
KTsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdp
bjoKKyAgICAgICAgICAgIGlmIChiYWNrdHJhY2tQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4o
Y3VycmVudFRlcm0oKSwgY29udGV4dCkpCisgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwor
ICAgICAgICAgICAgQkFDS1RSQUNLKCk7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJl
bnRoZXRpY2FsQXNzZXJ0aW9uRW5kOgorICAgICAgICAgICAgaWYgKGJhY2t0cmFja1BhcmVudGhl
dGljYWxBc3NlcnRpb25FbmQoY3VycmVudFRlcm0oKSwgY29udGV4dCkpCisgICAgICAgICAgICAg
ICAgTUFUQ0hfTkVYVCgpOworICAgICAgICAgICAgQkFDS1RSQUNLKCk7CisKKyAgICAgICAgY2Fz
ZSBCeXRlVGVybTo6VHlwZUNoZWNrSW5wdXQ6CisgICAgICAgICAgICBpbnB1dC51bmNoZWNrSW5w
dXQoY3VycmVudFRlcm0oKS5jaGVja0lucHV0Q291bnQpOworICAgICAgICAgICAgQkFDS1RSQUNL
KCk7CisKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVVuY2hlY2tJbnB1dDoKKyAgICAgICAg
ICAgIGlucHV0LmNoZWNrSW5wdXQoY3VycmVudFRlcm0oKS5jaGVja0lucHV0Q291bnQpOworICAg
ICAgICAgICAgQkFDS1RSQUNLKCk7CisKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZURvdFN0
YXJFbmNsb3N1cmU6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
fQogCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTU1OSw2ICsxNjA0LDExIEBA
IHB1YmxpYzoKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2VuZFRlcm1dLmF0b20u
cXVhbnRpdHlUeXBlID0gcXVhbnRpdHlUeXBlOwogICAgIH0KIAorICAgIHZvaWQgYXNzZXJ0aW9u
RG90U3RhckVuY2xvc3VyZShib29sIGJvbEFuY2hvcmVkLCBib29sIGVvbEFuY2hvcmVkKQorICAg
IHsKKyAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChCeXRlVGVybTo6RG90
U3RhckVuY2xvc3VyZShib2xBbmNob3JlZCwgZW9sQW5jaG9yZWQpKTsKKyAgICB9CisKICAgICB1
bnNpZ25lZCBwb3BQYXJlbnRoZXNlc1N0YWNrKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3Bh
cmVudGhlc2VzU3RhY2suc2l6ZSgpKTsKQEAgLTE4MzgsNiArMTg4OCwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZURvdFN0
YXJFbmNsb3N1cmU6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbkRvdFN0YXJFbmNsb3N1
cmUodGVybS5hbmNob3JzLmJvbEFuY2hvciwgdGVybS5hbmNob3JzLmVvbEFuY2hvcik7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJl
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVy
cHJldGVyLmgJKHJldmlzaW9uIDkwNjkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgc3RydWN0
IEJ5dGVUZXJtIHsKICAgICAgICAgVHlwZVBhcmVudGhldGljYWxBc3NlcnRpb25FbmQsCiAgICAg
ICAgIFR5cGVDaGVja0lucHV0LAogICAgICAgICBUeXBlVW5jaGVja0lucHV0LAorICAgICAgICBU
eXBlRG90U3RhckVuY2xvc3VyZSwKICAgICB9IHR5cGU7CiAgICAgdW5pb24gewogICAgICAgICBz
dHJ1Y3QgewpAQCAtOTUsNiArOTYsMTAgQEAgc3RydWN0IEJ5dGVUZXJtIHsKICAgICAgICAgICAg
IGludCBlbmQ7CiAgICAgICAgICAgICBib29sIG9uY2VUaHJvdWdoOwogICAgICAgICB9IGFsdGVy
bmF0aXZlOworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgYm9vbCBtX2JvbCA6IDE7Cisg
ICAgICAgICAgICBib29sIG1fZW9sIDogMTsKKyAgICAgICAgfSBhbmNob3JzOwogICAgICAgICB1
bnNpZ25lZCBjaGVja0lucHV0Q291bnQ7CiAgICAgfTsKICAgICB1bnNpZ25lZCBmcmFtZUxvY2F0
aW9uOwpAQCAtMjk1LDYgKzMwMCwxNCBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogICAgIHsKICAgICAg
ICAgcmV0dXJuIEJ5dGVUZXJtKFR5cGVTdWJwYXR0ZXJuRW5kKTsKICAgICB9CisgICAgCisgICAg
c3RhdGljIEJ5dGVUZXJtIERvdFN0YXJFbmNsb3N1cmUoYm9vbCBib2xBbmNob3IsIGJvb2wgZW9s
QW5jaG9yKQorICAgIHsKKyAgICAgICAgQnl0ZVRlcm0gdGVybShUeXBlRG90U3RhckVuY2xvc3Vy
ZSk7CisgICAgICAgIHRlcm0uYW5jaG9ycy5tX2JvbCA9IGJvbEFuY2hvcjsKKyAgICAgICAgdGVy
bS5hbmNob3JzLm1fZW9sID0gZW9sQW5jaG9yOworICAgICAgICByZXR1cm4gdGVybTsKKyAgICB9
CiAKICAgICBib29sIGludmVydCgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5jcHAJKHJldmlzaW9uIDkwNjkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5NSw2ICs5OTUsNjMgQEAgY2xh
c3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICBtX2JhY2t0cmFj
a2luZ1N0YXRlLmZhbGx0aHJvdWdoKCk7CiAgICAgfQogCisgICAgdm9pZCBnZW5lcmF0ZURvdFN0
YXJFbmNsb3N1cmUoc2l6ZV90IG9wSW5kZXgpCisgICAgeworICAgICAgICBZYXJyT3AmIG9wID0g
bV9vcHNbb3BJbmRleF07CisgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwor
CisgICAgICAgIGNvbnN0IFJlZ2lzdGVySUQgY2hhcmFjdGVyID0gcmVnVDA7CisgICAgICAgIGNv
bnN0IFJlZ2lzdGVySUQgbWF0Y2hQb3MgPSByZWdUMTsKKworICAgICAgICBKdW1wTGlzdCBmb3Vu
ZEJlZ2lubmluZ05ld0xpbmU7CisgICAgICAgIEp1bXBMaXN0IHNhdmVTdGFydEluZGV4OworICAg
ICAgICBKdW1wTGlzdCBmb3VuZEVuZGluZ05ld0xpbmU7CisKKyAgICAgICAgaWYgKG1fcGF0dGVy
bi5tX2JvZHktPm1faGFzRml4ZWRTaXplKSB7CisgICAgICAgICAgICBtb3ZlKGluZGV4LCBtYXRj
aFBvcyk7CisgICAgICAgICAgICBzdWIzMihJbW0zMihtX2NoZWNrZWQpLCBtYXRjaFBvcyk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0KSwgbWF0Y2hQ
b3MpOworCisgICAgICAgIHNhdmVTdGFydEluZGV4LmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywg
bWF0Y2hQb3MpKTsKKyAgICAgICAgTGFiZWwgZmluZEJPTExvb3AodGhpcyk7CisgICAgICAgIHN1
YjMyKFRydXN0ZWRJbW0zMigxKSwgbWF0Y2hQb3MpOworICAgICAgICBsb2FkMTYoQmFzZUluZGV4
KGlucHV0LCBtYXRjaFBvcywgVGltZXNUd28sIDApLCBjaGFyYWN0ZXIpOworICAgICAgICBtYXRj
aENoYXJhY3RlckNsYXNzKGNoYXJhY3RlciwgZm91bmRCZWdpbm5pbmdOZXdMaW5lLCBtX3BhdHRl
cm4ubmV3bGluZUNoYXJhY3RlckNsYXNzKCkpOworICAgICAgICBicmFuY2hUZXN0MzIoTm9uWmVy
bywgbWF0Y2hQb3MpLmxpbmtUbyhmaW5kQk9MTG9vcCwgdGhpcyk7CisgICAgICAgIHNhdmVTdGFy
dEluZGV4LmFwcGVuZChqdW1wKCkpOworCisgICAgICAgIGZvdW5kQmVnaW5uaW5nTmV3TGluZS5s
aW5rKHRoaXMpOworICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIG1hdGNoUG9zKTsgLy8g
QWR2YW5jZSBwYXN0IG5ld2xpbmUKKyAgICAgICAgc2F2ZVN0YXJ0SW5kZXgubGluayh0aGlzKTsK
KworICAgICAgICBpZiAoIW1fcGF0dGVybi5tX211bHRpbGluZSAmJiB0ZXJtLT5hbmNob3JzLmJv
bEFuY2hvcikKKyAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGJyYW5jaFRlc3QzMihOb25a
ZXJvLCBtYXRjaFBvcykpOworCisgICAgICAgIHN0b3JlMzIobWF0Y2hQb3MsIEFkZHJlc3Mob3V0
cHV0KSk7CisKKyAgICAgICAgbW92ZShpbmRleCwgbWF0Y2hQb3MpOworCisgICAgICAgIExhYmVs
IGZpbmRFT0xMb29wKHRoaXMpOyAgICAgICAgCisgICAgICAgIGZvdW5kRW5kaW5nTmV3TGluZS5h
cHBlbmQoYnJhbmNoMzIoRXF1YWwsIG1hdGNoUG9zLCBsZW5ndGgpKTsKKyAgICAgICAgbG9hZDE2
KEJhc2VJbmRleChpbnB1dCwgbWF0Y2hQb3MsIFRpbWVzVHdvLCAwKSwgY2hhcmFjdGVyKTsKKyAg
ICAgICAgbWF0Y2hDaGFyYWN0ZXJDbGFzcyhjaGFyYWN0ZXIsIGZvdW5kRW5kaW5nTmV3TGluZSwg
bV9wYXR0ZXJuLm5ld2xpbmVDaGFyYWN0ZXJDbGFzcygpKTsKKyAgICAgICAgYWRkMzIoVHJ1c3Rl
ZEltbTMyKDEpLCBtYXRjaFBvcyk7CisgICAgICAgIGp1bXAoZmluZEVPTExvb3ApOworCisgICAg
ICAgIGZvdW5kRW5kaW5nTmV3TGluZS5saW5rKHRoaXMpOworCisgICAgICAgIGlmICghbV9wYXR0
ZXJuLm1fbXVsdGlsaW5lICYmIHRlcm0tPmFuY2hvcnMuZW9sQW5jaG9yKQorICAgICAgICAgICAg
b3AubV9qdW1wcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIG1hdGNoUG9zLCBsZW5ndGgpKTsK
KworICAgICAgICBtb3ZlKG1hdGNoUG9zLCBpbmRleCk7CisgICAgfQorCisgICAgdm9pZCBiYWNr
dHJhY2tEb3RTdGFyRW5jbG9zdXJlKHNpemVfdCBvcEluZGV4KQorICAgIHsKKyAgICAgICAgYmFj
a3RyYWNrVGVybURlZmF1bHQob3BJbmRleCk7CisgICAgfQorICAgIAogICAgIC8vIENvZGUgZ2Vu
ZXJhdGlvbi9iYWNrdHJhY2tpbmcgZm9yIHNpbXBsZSB0ZXJtcwogICAgIC8vIChwYXR0ZXJuIGNo
YXJhY3RlcnMsIGNoYXJhY3RlciBjbGFzc2VzLCBhbmQgYXNzZXJ0aW9ucykuCiAgICAgLy8gVGhl
c2UgbWV0aG9kcyBmYXJtIG91dCB3b3JrIHRvIHRoZSBzZXQgb2YgZnVuY3Rpb25zIGFib3ZlLgpA
QCAtMTA1OSw2ICsxMTE2LDkgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9B
c3NlbQogICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQmFja1JlZmVyZW5jZToKICAgICAg
ICAgICAgIG1fc2hvdWxkRmFsbEJhY2sgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGVEb3RTdGFyRW5jbG9zdXJlOgorICAgICAgICAgICAg
Z2VuZXJhdGVEb3RTdGFyRW5jbG9zdXJlKG9wSW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgdm9pZCBiYWNrdHJhY2tUZXJtKHNpemVfdCBvcEluZGV4KQpA
QCAtMTExOSw2ICsxMTc5LDExIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3Jv
QXNzZW0KICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVy
bjoKICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb246
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICBjYXNlIFBhdHRl
cm5UZXJtOjpUeXBlRG90U3RhckVuY2xvc3VyZToKKyAgICAgICAgICAgIGJhY2t0cmFja0RvdFN0
YXJFbmNsb3N1cmUob3BJbmRleCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNl
IFBhdHRlcm5UZXJtOjpUeXBlQmFja1JlZmVyZW5jZToKICAgICAgICAgICAgIG1fc2hvdWxkRmFs
bEJhY2sgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCShyZXZpc2lvbiA5MDY5MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgy
LDYgKzU4MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgdGVybS5mcmFtZUxvY2F0aW9u
ID0gY3VycmVudENhbGxGcmFtZVNpemU7CiAgICAgICAgICAgICAgICAgY3VycmVudENhbGxGcmFt
ZVNpemUgPSBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0
aW9uLCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArIFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5m
b1BhcmVudGhldGljYWxBc3NlcnRpb24sIGN1cnJlbnRJbnB1dFBvc2l0aW9uKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZURvdFN0
YXJFbmNsb3N1cmU6CisgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmUtPm1faGFzRml4ZWRTaXpl
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gaW5pdGlhbElu
cHV0UG9zaXRpb247CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIApAQCAtNjc1LDYgKzY4MCw4NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAK
KyAgICBib29sIGNvbnRhaW5zQ2FwdHVyaW5nVGVybXMoUGF0dGVybkFsdGVybmF0aXZlKiBhbHRl
cm5hdGl2ZSwgc2l6ZV90IGZpcnN0VGVybUluZGV4LCBzaXplX3QgbGFzdFRlcm1JbmRleCkKKyAg
ICB7CisgICAgICAgIFZlY3RvcjxQYXR0ZXJuVGVybT4mIHRlcm1zID0gYWx0ZXJuYXRpdmUtPm1f
dGVybXM7CisKKyAgICAgICAgZm9yIChzaXplX3QgdGVybUluZGV4ID0gZmlyc3RUZXJtSW5kZXg7
IHRlcm1JbmRleCA8PSBsYXN0VGVybUluZGV4OyArK3Rlcm1JbmRleCkgeworICAgICAgICAgICAg
UGF0dGVyblRlcm0mIHRlcm0gPSB0ZXJtc1t0ZXJtSW5kZXhdOworCisgICAgICAgICAgICBpZiAo
dGVybS5tX2NhcHR1cmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAg
ICAgIGlmICh0ZXJtLnR5cGUgPT0gUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRl
cm4pIHsKKyAgICAgICAgICAgICAgICBQYXR0ZXJuRGlzanVuY3Rpb24qIG5lc3RlZERpc2p1bmN0
aW9uID0gdGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbjsKKyAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGFsdCA9IDA7IGFsdCA8IG5lc3RlZERpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZl
cy5zaXplKCk7ICsrYWx0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluc0NhcHR1
cmluZ1Rlcm1zKG5lc3RlZERpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlc1thbHRdLCAwLCBuZXN0
ZWREaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXNbYWx0XS0+bV90ZXJtcy5zaXplKCkgLSAxKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICAvLyBUaGlzIG9wdGltaXphdGlvbiBpZGVudGlmaWVzIGFsdGVybmF0aXZlcyBpbiB0
aGUgZm9ybSBvZiAKKyAgICAvLyBbXl0uKls/XTxleHByZXNzaW9uPi4qWyRdIGZvciBleHByZXNz
aW9ucyB0aGF0IGRvbid0IGhhdmUgYW55IAorICAgIC8vIGNhcHR1cmluZyB0ZXJtcy4gVGhlIGFs
dGVybmF0aXZlIGlzIGNoYW5nZWQgdG8gPGV4cHJlc3Npb24+IAorICAgIC8vIGZvbGxvd2VkIGJ5
IHByb2Nlc3Npbmcgb2YgdGhlIGRvdCBzdGFycyB0byBmaW5kIGFuZCBhZGp1c3QgdGhlIAorICAg
IC8vIGJlZ2lubmluZyBhbmQgdGhlIGVuZCBvZiB0aGUgbWF0Y2guCisgICAgdm9pZCBvcHRpbWl6
ZURvdFN0YXJXcmFwcGVkRXhwcmVzc2lvbnMoKQorICAgIHsKKyAgICAgICAgVmVjdG9yPFBhdHRl
cm5BbHRlcm5hdGl2ZSo+JiBhbHRlcm5hdGl2ZXMgPSBtX3BhdHRlcm4ubV9ib2R5LT5tX2FsdGVy
bmF0aXZlczsKKyAgICAgICAgaWYgKGFsdGVybmF0aXZlcy5zaXplKCkgIT0gMSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0g
YWx0ZXJuYXRpdmVzWzBdOworICAgICAgICBWZWN0b3I8UGF0dGVyblRlcm0+JiB0ZXJtcyA9IGFs
dGVybmF0aXZlLT5tX3Rlcm1zOworICAgICAgICBpZiAodGVybXMuc2l6ZSgpID49IDMpIHsKKyAg
ICAgICAgICAgIGJvb2wgc3RhcnRzV2l0aEJPTCA9IGZhbHNlOworICAgICAgICAgICAgYm9vbCBl
bmRzV2l0aEVPTCA9IGZhbHNlOworICAgICAgICAgICAgc2l6ZV90IHRlcm1JbmRleCwgZmlyc3RF
eHByZXNzaW9uVGVybSwgbGFzdEV4cHJlc3Npb25UZXJtOworCisgICAgICAgICAgICB0ZXJtSW5k
ZXggPSAwOworICAgICAgICAgICAgaWYgKHRlcm1zW3Rlcm1JbmRleF0udHlwZSA9PSBQYXR0ZXJu
VGVybTo6VHlwZUFzc2VydGlvbkJPTCkgeworICAgICAgICAgICAgICAgIHN0YXJ0c1dpdGhCT0wg
PSB0cnVlOworICAgICAgICAgICAgICAgICsrdGVybUluZGV4OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBQYXR0ZXJuVGVybSYgZmlyc3ROb25BbmNob3JUZXJtID0g
dGVybXNbdGVybUluZGV4XTsKKyAgICAgICAgICAgIGlmICgoZmlyc3ROb25BbmNob3JUZXJtLnR5
cGUgIT0gUGF0dGVyblRlcm06OlR5cGVDaGFyYWN0ZXJDbGFzcykgfHwgKGZpcnN0Tm9uQW5jaG9y
VGVybS5jaGFyYWN0ZXJDbGFzcyAhPSBtX3BhdHRlcm4ubmV3bGluZUNoYXJhY3RlckNsYXNzKCkp
IHx8ICEoKGZpcnN0Tm9uQW5jaG9yVGVybS5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckdyZWVk
eSkgfHwgKGZpcnN0Tm9uQW5jaG9yVGVybS5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllck5vbkdy
ZWVkeSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgZmlyc3RFeHByZXNzaW9uVGVybSA9IHRlcm1JbmRleCArIDE7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHRlcm1JbmRleCA9IHRlcm1zLnNpemUoKSAtIDE7CisgICAgICAgICAgICBpZiAo
dGVybXNbdGVybUluZGV4XS50eXBlID09IFBhdHRlcm5UZXJtOjpUeXBlQXNzZXJ0aW9uRU9MKSB7
CisgICAgICAgICAgICAgICAgZW5kc1dpdGhFT0wgPSB0cnVlOworICAgICAgICAgICAgICAgIC0t
dGVybUluZGV4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBQYXR0
ZXJuVGVybSYgbGFzdE5vbkFuY2hvclRlcm0gPSB0ZXJtc1t0ZXJtSW5kZXhdOworICAgICAgICAg
ICAgaWYgKChsYXN0Tm9uQW5jaG9yVGVybS50eXBlICE9IFBhdHRlcm5UZXJtOjpUeXBlQ2hhcmFj
dGVyQ2xhc3MpIHx8IChsYXN0Tm9uQW5jaG9yVGVybS5jaGFyYWN0ZXJDbGFzcyAhPSBtX3BhdHRl
cm4ubmV3bGluZUNoYXJhY3RlckNsYXNzKCkpIHx8IChsYXN0Tm9uQW5jaG9yVGVybS5xdWFudGl0
eVR5cGUgIT0gUXVhbnRpZmllckdyZWVkeSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBsYXN0RXhwcmVzc2lvblRlcm0gPSB0ZXJtSW5kZXggLSAx
OworCisgICAgICAgICAgICBpZiAoZmlyc3RFeHByZXNzaW9uVGVybSA+IGxhc3RFeHByZXNzaW9u
VGVybSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmICghY29udGFp
bnNDYXB0dXJpbmdUZXJtcyhhbHRlcm5hdGl2ZSwgZmlyc3RFeHByZXNzaW9uVGVybSwgbGFzdEV4
cHJlc3Npb25UZXJtKSkgeworICAgICAgICAgICAgICAgIGZvciAodGVybUluZGV4ID0gdGVybXMu
c2l6ZSgpIC0gMTsgdGVybUluZGV4ID4gbGFzdEV4cHJlc3Npb25UZXJtOyAtLXRlcm1JbmRleCkK
KyAgICAgICAgICAgICAgICAgICAgdGVybXMucmVtb3ZlKHRlcm1JbmRleCk7CisKKyAgICAgICAg
ICAgICAgICBmb3IgKHRlcm1JbmRleCA9IGZpcnN0RXhwcmVzc2lvblRlcm07IHRlcm1JbmRleCA+
IDA7IC0tdGVybUluZGV4KQorICAgICAgICAgICAgICAgICAgICB0ZXJtcy5yZW1vdmUodGVybUlu
ZGV4IC0gMSk7CisKKyAgICAgICAgICAgICAgICB0ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oc3Rh
cnRzV2l0aEJPTCwgZW5kc1dpdGhFT0wpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBtX3BhdHRlcm4ubV9jb250YWluc0JPTCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCiBwcml2YXRlOgogICAgIFlhcnJQYXR0ZXJuJiBtX3BhdHRlcm47CiAg
ICAgUGF0dGVybkFsdGVybmF0aXZlKiBtX2FsdGVybmF0aXZlOwpAQCAtNzA4LDYgKzc5NCw3IEBA
IGNvbnN0IGNoYXIqIFlhcnJQYXR0ZXJuOjpjb21waWxlKGNvbnN0IFUKICAgICB9CiAKICAgICBj
b25zdHJ1Y3Rvci5jaGVja0ZvclRlcm1pbmFsUGFyZW50aGVzZXMoKTsKKyAgICBjb25zdHJ1Y3Rv
ci5vcHRpbWl6ZURvdFN0YXJXcmFwcGVkRXhwcmVzc2lvbnMoKTsKICAgICBjb25zdHJ1Y3Rvci5v
cHRpbWl6ZUJPTCgpOwogICAgICAgICAKICAgICBjb25zdHJ1Y3Rvci5zZXR1cE9mZnNldHMoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAkocmV2aXNpb24g
OTA2OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIHN0cnVjdCBQYXR0ZXJuVGVybSB7CiAgICAgICAg
IFR5cGVGb3J3YXJkUmVmZXJlbmNlLAogICAgICAgICBUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJu
LAogICAgICAgICBUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbiwKKyAgICAgICAgVHlwZURvdFN0
YXJFbmNsb3N1cmUsCiAgICAgfSB0eXBlOwogICAgIGJvb2wgbV9jYXB0dXJlIDoxOwogICAgIGJv
b2wgbV9pbnZlcnQgOjE7CkBAIC0xMTAsNiArMTExLDEwIEBAIHN0cnVjdCBQYXR0ZXJuVGVybSB7
CiAgICAgICAgICAgICBib29sIGlzQ29weTsKICAgICAgICAgICAgIGJvb2wgaXNUZXJtaW5hbDsK
ICAgICAgICAgfSBwYXJlbnRoZXNlczsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGJv
b2wgYm9sQW5jaG9yIDogMTsKKyAgICAgICAgICAgIGJvb2wgZW9sQW5jaG9yIDogMTsKKyAgICAg
ICAgfSBhbmNob3JzOwogICAgIH07CiAgICAgUXVhbnRpZmllclR5cGUgcXVhbnRpdHlUeXBlOwog
ICAgIHVuc2lnbmVkIHF1YW50aXR5Q291bnQ7CkBAIC0xNjgsNiArMTczLDE3IEBAIHN0cnVjdCBQ
YXR0ZXJuVGVybSB7CiAgICAgICAgIHF1YW50aXR5Q291bnQgPSAxOwogICAgIH0KIAorICAgIFBh
dHRlcm5UZXJtKGJvb2wgYm9sQW5jaG9yLCBib29sIGVvbEFuY2hvcikKKyAgICAgICAgOiB0eXBl
KFR5cGVEb3RTdGFyRW5jbG9zdXJlKQorICAgICAgICAsIG1fY2FwdHVyZShmYWxzZSkKKyAgICAg
ICAgLCBtX2ludmVydChmYWxzZSkKKyAgICB7CisgICAgICAgIGFuY2hvcnMuYm9sQW5jaG9yID0g
Ym9sQW5jaG9yOworICAgICAgICBhbmNob3JzLmVvbEFuY2hvciA9IGVvbEFuY2hvcjsKKyAgICAg
ICAgcXVhbnRpdHlUeXBlID0gUXVhbnRpZmllckZpeGVkQ291bnQ7CisgICAgICAgIHF1YW50aXR5
Q291bnQgPSAxOworICAgIH0KKyAgICAKICAgICBzdGF0aWMgUGF0dGVyblRlcm0gRm9yd2FyZFJl
ZmVyZW5jZSgpCiAgICAgewogICAgICAgICByZXR1cm4gUGF0dGVyblRlcm0oVHlwZUZvcndhcmRS
ZWZlcmVuY2UpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTA3NTIpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNy0xMSAgTWljaGFl
bCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyMDIKKyAgICAgICAgRW5oOiBJbXByb3ZlIGhhbmRs
aW5nIG9mIFJlZ0V4cCBpbiB0aGUgZm9ybSBvZiAvLipibGFoLiovCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IHRlc3RzIHRvIHN1cHBvcnQgLy4q
PGV4cHJlc3Npb24+LiovIGVuaGFuY2VtZW50LgorCisgICAgICAgICogZmFzdC9yZWdleC9kb3Rz
dGFyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdleC9kb3RzdGFyLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL2RvdHN0YXIuanM6
IEFkZGVkLgorCiAyMDExLTA3LTExICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBDaHJvbWl1bSB0ZXN0IGV4cGVjdGF0
aW9ucy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVnZXgvZG90c3Rhci1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZWdleC9kb3RzdGFyLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVnZXgvZG90c3Rhci1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE4IEBACitUaGlzIHBhZ2UgdGVzdHMgaGFu
ZGxpbmcgb2YgcGFyZW50aGVzZXMgc3ViZXhwcmVzc2lvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIHJlZ2V4cDEuZXhlYygndGVzdCcpIGlzIG51bGwKK1BBU1MgcmVn
ZXhwMS5leGVjKCdibGFoJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwMS5leGVjKCcxYmxhaCcp
IGlzIFsnMWJsYWgnXQorUEFTUyByZWdleHAxLmV4ZWMoJ2JsYWgxJykgaXMgWydibGFoMSddCitQ
QVNTIHJlZ2V4cDEuZXhlYygnYmxhaCBibGFoIGJsYWgnKSBpcyBbJ2JsYWggYmxhaCBibGFoJ10K
K1BBU1MgcmVnZXhwMS5leGVjKCdibGFoXG5zZWNvbmQnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdl
eHAxLmV4ZWMoJ2ZpcnN0XG5ibGFoJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwMS5leGVjKCdm
aXJzdFxuYmxhaFxudGhpcmQnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHAxLmV4ZWMoJ2ZpcnN0
XG5ibGFoMlxuYmxhaDMnKSBpcyBbJ2JsYWgyJ10KK1BBU1MgcmVnZXhwMi5leGVjKCd0ZXN0Jykg
aXMgbnVsbAorUEFTUyByZWdleHAyLmV4ZWMoJ2JsYWgnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdl
eHAyLmV4ZWMoJzFibGFoJykgaXMgWycxYmxhaCddCitQQVNTIHJlZ2V4cDIuZXhlYygnYmxhaDEn
KSBpcyBbJ2JsYWgxJ10KK1BBU1MgcmVnZXhwMi5leGVjKCdibGFoIGJsYWggYmxhaCcpIGlzIFsn
YmxhaCBibGFoIGJsYWgnXQorUEFTUyByZWdleHAyLmV4ZWMoJ2JsYWhcbnNlY29uZCcpIGlzIFsn
YmxhaCddCitQQVNTIHJlZ2V4cDIuZXhlYygnZmlyc3RcbmJsYWgnKSBpcyBudWxsCitQQVNTIHJl
Z2V4cDIuZXhlYygnZmlyc3RcbmJsYWhcbnRoaXJkJykgaXMgbnVsbAorUEFTUyByZWdleHAyLmV4
ZWMoJ2ZpcnN0XG5ibGFoMlxuYmxhaDMnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDMuZXhlYygndGVz
dCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwMy5leGVjKCdibGFoJykgaXMgWydibGFoJ10KK1BBU1Mg
cmVnZXhwMy5leGVjKCcxYmxhaCcpIGlzIFsnMWJsYWgnXQorUEFTUyByZWdleHAzLmV4ZWMoJ2Js
YWgxJykgaXMgWydibGFoMSddCitQQVNTIHJlZ2V4cDMuZXhlYygnYmxhaCBibGFoIGJsYWgnKSBp
cyBbJ2JsYWggYmxhaCBibGFoJ10KK1BBU1MgcmVnZXhwMy5leGVjKCdibGFoXG5zZWNvbmQnKSBp
cyBudWxsCitQQVNTIHJlZ2V4cDMuZXhlYygnZmlyc3RcbmJsYWgnKSBpcyBbJ2JsYWgnXQorUEFT
UyByZWdleHAzLmV4ZWMoJ2ZpcnN0XG5ibGFoXG50aGlyZCcpIGlzIG51bGwKK1BBU1MgcmVnZXhw
My5leGVjKCdmaXJzdFxuYmxhaDJcbmJsYWgzJykgaXMgWydibGFoMyddCitQQVNTIHJlZ2V4cDQu
ZXhlYygndGVzdCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwNC5leGVjKCdibGFoJykgaXMgWydibGFo
J10KK1BBU1MgcmVnZXhwNC5leGVjKCcxYmxhaCcpIGlzIFsnMWJsYWgnXQorUEFTUyByZWdleHA0
LmV4ZWMoJ2JsYWgxJykgaXMgWydibGFoMSddCitQQVNTIHJlZ2V4cDQuZXhlYygnYmxhaCBibGFo
IGJsYWgnKSBpcyBbJ2JsYWggYmxhaCBibGFoJ10KK1BBU1MgcmVnZXhwNC5leGVjKCdibGFoXG5z
ZWNvbmQnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDQuZXhlYygnZmlyc3RcbmJsYWgnKSBpcyBudWxs
CitQQVNTIHJlZ2V4cDQuZXhlYygnZmlyc3RcbmJsYWhcbnRoaXJkJykgaXMgbnVsbAorUEFTUyBy
ZWdleHA0LmV4ZWMoJ2ZpcnN0XG5ibGFoMlxuYmxhaDMnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDUu
ZXhlYygndGVzdCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwNS5leGVjKCdibGFoJykgaXMgWydibGFo
J10KK1BBU1MgcmVnZXhwNS5leGVjKCcxYmxhaCcpIGlzIFsnMWJsYWgnXQorUEFTUyByZWdleHA1
LmV4ZWMoJ2JsYWgxJykgaXMgWydibGFoMSddCitQQVNTIHJlZ2V4cDUuZXhlYygnYmxhaCBibGFo
IGJsYWgnKSBpcyBbJ2JsYWggYmxhaCBibGFoJ10KK1BBU1MgcmVnZXhwNS5leGVjKCdibGFoXG5z
ZWNvbmQnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHA1LmV4ZWMoJ2ZpcnN0XG5ibGFoJykgaXMg
WydibGFoJ10KK1BBU1MgcmVnZXhwNS5leGVjKCdmaXJzdFxuYmxhaFxudGhpcmQnKSBpcyBbJ2Js
YWgnXQorUEFTUyByZWdleHA1LmV4ZWMoJ2ZpcnN0XG5ibGFoMlxuYmxhaDMnKSBpcyBbJ2JsYWgy
J10KK1BBU1MgcmVnZXhwNi5leGVjKCd0ZXN0JykgaXMgbnVsbAorUEFTUyByZWdleHA2LmV4ZWMo
J2JsYWgnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHA2LmV4ZWMoJzFibGFoJykgaXMgWycxYmxh
aCddCitQQVNTIHJlZ2V4cDYuZXhlYygnYmxhaDEnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHA2
LmV4ZWMoJ2JsYWggYmxhaCBibGFoJykgaXMgWydibGFoIGJsYWggYmxhaCddCitQQVNTIHJlZ2V4
cDYuZXhlYygnYmxhaFxuc2Vjb25kJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwNi5leGVjKCdm
aXJzdFxuYmxhaCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4cDYuZXhlYygnZmlyc3RcbmJsYWhc
bnRoaXJkJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwNi5leGVjKCdmaXJzdFxuYmxhaDJcbmJs
YWgzJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwNy5leGVjKCd0ZXN0JykgaXMgbnVsbAorUEFT
UyByZWdleHA3LmV4ZWMoJ2JsYWgnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHA3LmV4ZWMoJzFi
bGFoJykgaXMgWycxYmxhaCddCitQQVNTIHJlZ2V4cDcuZXhlYygnYmxhaDEnKSBpcyBbJ2JsYWgx
J10KK1BBU1MgcmVnZXhwNy5leGVjKCdibGFoIGJsYWggYmxhaCcpIGlzIFsnYmxhaCBibGFoIGJs
YWgnXQorUEFTUyByZWdleHA3LmV4ZWMoJ2JsYWhcbnNlY29uZCcpIGlzIG51bGwKK1BBU1MgcmVn
ZXhwNy5leGVjKCdmaXJzdFxuYmxhaCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwNy5leGVjKCdmaXJz
dFxuYmxhaFxudGhpcmQnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDcuZXhlYygnZmlyc3RcbmJsYWgy
XG5ibGFoMycpIGlzIG51bGwKK1BBU1MgcmVnZXhwOC5leGVjKCd0ZXN0JykgaXMgbnVsbAorUEFT
UyByZWdleHA4LmV4ZWMoJ2JsYWgnKSBpcyBbJ2JsYWgnLCcnXQorUEFTUyByZWdleHA4LmV4ZWMo
JzFibGFoJykgaXMgWycxYmxhaCcsJzEnXQorUEFTUyByZWdleHA4LmV4ZWMoJ2JsYWgxJykgaXMg
WydibGFoMScsJyddCitQQVNTIHJlZ2V4cDguZXhlYygnYmxhaCBibGFoIGJsYWgnKSBpcyBbJ2Js
YWggYmxhaCBibGFoJywnYmxhaCBibGFoICddCitQQVNTIHJlZ2V4cDguZXhlYygnYmxhaFxuc2Vj
b25kJykgaXMgbnVsbAorUEFTUyByZWdleHA4LmV4ZWMoJ2ZpcnN0XG5ibGFoJykgaXMgbnVsbAor
UEFTUyByZWdleHA4LmV4ZWMoJ2ZpcnN0XG5ibGFoXG50aGlyZCcpIGlzIG51bGwKK1BBU1MgcmVn
ZXhwOC5leGVjKCdmaXJzdFxuYmxhaDJcbmJsYWgzJykgaXMgbnVsbAorUEFTUyByZWdleHA5LmV4
ZWMoJ3Rlc3QnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDkuZXhlYygnYmxhaCcpIGlzIFsnYmxhaCdd
CitQQVNTIHJlZ2V4cDkuZXhlYygnMWJsYWgnKSBpcyBbJzFibGFoJ10KK1BBU1MgcmVnZXhwOS5l
eGVjKCdibGFoMScpIGlzIFsnYmxhaDEnXQorUEFTUyByZWdleHA5LmV4ZWMoJ2JsYWggYmxhaCBi
bGFoJykgaXMgWydibGFoIGJsYWggYmxhaCddCitQQVNTIHJlZ2V4cDkuZXhlYygnYmxhaFxuc2Vj
b25kJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwOS5leGVjKCdmaXJzdFxuYmxhaCcpIGlzIFsn
YmxhaCddCitQQVNTIHJlZ2V4cDkuZXhlYygnZmlyc3RcbmJsYWhcbnRoaXJkJykgaXMgWydibGFo
J10KK1BBU1MgcmVnZXhwOS5leGVjKCdmaXJzdFxuYmxhaDJcbmJsYWgzJykgaXMgWydibGFoMidd
CitQQVNTIHJlZ2V4cDEwLmV4ZWMoJ3Rlc3QnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDEwLmV4ZWMo
J2JsYWgnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHAxMC5leGVjKCcxYmxhaCcpIGlzIFsnMWJs
YWgnXQorUEFTUyByZWdleHAxMC5leGVjKCdibGFoMScpIGlzIFsnYmxhaDEnXQorUEFTUyByZWdl
eHAxMC5leGVjKCdibGFoIGJsYWggYmxhaCcpIGlzIFsnYmxhaCBibGFoIGJsYWgnXQorUEFTUyBy
ZWdleHAxMC5leGVjKCdibGFoXG5zZWNvbmQnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHAxMC5l
eGVjKCdmaXJzdFxuYmxhaCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4cDEwLmV4ZWMoJ2ZpcnN0
XG5ibGFoXG50aGlyZCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4cDEwLmV4ZWMoJ2ZpcnN0XG5i
bGFoMlxuYmxhaDMnKSBpcyBbJ2JsYWgyJ10KK1BBU1MgcmVnZXhwMTEuZXhlYygndGVzdCcpIGlz
IG51bGwKK1BBU1MgcmVnZXhwMTEuZXhlYygnYmxhaCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4
cDExLmV4ZWMoJzFibGFoJykgaXMgWycxYmxhaCddCitQQVNTIHJlZ2V4cDExLmV4ZWMoJ2JsYWgx
JykgaXMgWydibGFoMSddCitQQVNTIHJlZ2V4cDExLmV4ZWMoJ2JsYWggYmxhaCBibGFoJykgaXMg
WydibGFoIGJsYWggYmxhaCddCitQQVNTIHJlZ2V4cDExLmV4ZWMoJ2JsYWhcbnNlY29uZCcpIGlz
IG51bGwKK1BBU1MgcmVnZXhwMTEuZXhlYygnZmlyc3RcbmJsYWgnKSBpcyBbJ2JsYWgnXQorUEFT
UyByZWdleHAxMS5leGVjKCdmaXJzdFxuYmxhaFxudGhpcmQnKSBpcyBudWxsCitQQVNTIHJlZ2V4
cDExLmV4ZWMoJ2ZpcnN0XG5ibGFoMlxuYmxhaDMnKSBpcyBbJ2JsYWgzJ10KK1BBU1MgcmVnZXhw
MTIuZXhlYygndGVzdCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwMTIuZXhlYygnYmxhaCcpIGlzIFsn
YmxhaCddCitQQVNTIHJlZ2V4cDEyLmV4ZWMoJzFibGFoJykgaXMgWycxYmxhaCddCitQQVNTIHJl
Z2V4cDEyLmV4ZWMoJ2JsYWgxJykgaXMgWydibGFoMSddCitQQVNTIHJlZ2V4cDEyLmV4ZWMoJ2Js
YWggYmxhaCBibGFoJykgaXMgWydibGFoIGJsYWggYmxhaCddCitQQVNTIHJlZ2V4cDEyLmV4ZWMo
J2JsYWhcbnNlY29uZCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwMTIuZXhlYygnZmlyc3RcbmJsYWgn
KSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHAxMi5leGVjKCdmaXJzdFxuYmxhaFxudGhpcmQnKSBp
cyBudWxsCitQQVNTIHJlZ2V4cDEyLmV4ZWMoJ2ZpcnN0XG5ibGFoMlxuYmxhaDMnKSBpcyBbJ2Js
YWgzJ10KK1BBU1MgcmVnZXhwMTMuZXhlYygnYWJjXG4xMjMnKSBpcyBbJ2FiY1xuMTIzJ10KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3JlZ2V4L2RvdHN0YXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L3JlZ2V4L2RvdHN0YXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvcmVnZXgvZG90c3Rhci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2RvdHN0
YXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9yZWdleC9zY3JpcHQtdGVzdHMvZG90c3Rhci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3JlZ2V4L3NjcmlwdC10ZXN0cy9kb3RzdGFyLmpzCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9yZWdleC9zY3JpcHQtdGVzdHMvZG90c3Rhci5qcwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMzkgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHBhZ2UgdGVzdHMgaGFuZGxpbmcg
b2YgcGFyZW50aGVzZXMgc3ViZXhwcmVzc2lvbnMuIik7CisKK3ZhciByZWdleHAxID0gLy4qYmxh
aC4qLzsKK3Nob3VsZEJlTnVsbCgicmVnZXhwMS5leGVjKCd0ZXN0JykiKTsKK3Nob3VsZEJlKCJy
ZWdleHAxLmV4ZWMoJ2JsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEuZXhl
YygnMWJsYWgnKSIsICJbJzFibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAxLmV4ZWMoJ2JsYWgx
JykiLCAiWydibGFoMSddIik7CitzaG91bGRCZSgicmVnZXhwMS5leGVjKCdibGFoIGJsYWggYmxh
aCcpIiwgIlsnYmxhaCBibGFoIGJsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEuZXhlYygnYmxh
aFxcbnNlY29uZCcpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwMS5leGVjKCdmaXJz
dFxcbmJsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEuZXhlYygnZmlyc3Rc
XG5ibGFoXFxudGhpcmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEuZXhlYygn
Zmlyc3RcXG5ibGFoMlxcbmJsYWgzJykiLCAiWydibGFoMiddIik7CisKK3ZhciByZWdleHAyID0g
L14uKmJsYWguKi87CitzaG91bGRCZU51bGwoInJlZ2V4cDIuZXhlYygndGVzdCcpIik7CitzaG91
bGRCZSgicmVnZXhwMi5leGVjKCdibGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdl
eHAyLmV4ZWMoJzFibGFoJykiLCAiWycxYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwMi5leGVj
KCdibGFoMScpIiwgIlsnYmxhaDEnXSIpOworc2hvdWxkQmUoInJlZ2V4cDIuZXhlYygnYmxhaCBi
bGFoIGJsYWgnKSIsICJbJ2JsYWggYmxhaCBibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAyLmV4
ZWMoJ2JsYWhcXG5zZWNvbmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHAy
LmV4ZWMoJ2ZpcnN0XFxuYmxhaCcpIik7CitzaG91bGRCZU51bGwoInJlZ2V4cDIuZXhlYygnZmly
c3RcXG5ibGFoXFxudGhpcmQnKSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHAyLmV4ZWMoJ2ZpcnN0
XFxuYmxhaDJcXG5ibGFoMycpIik7CisKK3ZhciByZWdleHAzID0gLy4qYmxhaC4qJC87CitzaG91
bGRCZU51bGwoInJlZ2V4cDMuZXhlYygndGVzdCcpIik7CitzaG91bGRCZSgicmVnZXhwMy5leGVj
KCdibGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAzLmV4ZWMoJzFibGFoJyki
LCAiWycxYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwMy5leGVjKCdibGFoMScpIiwgIlsnYmxh
aDEnXSIpOworc2hvdWxkQmUoInJlZ2V4cDMuZXhlYygnYmxhaCBibGFoIGJsYWgnKSIsICJbJ2Js
YWggYmxhaCBibGFoJ10iKTsKK3Nob3VsZEJlTnVsbCgicmVnZXhwMy5leGVjKCdibGFoXFxuc2Vj
b25kJykiKTsKK3Nob3VsZEJlKCJyZWdleHAzLmV4ZWMoJ2ZpcnN0XFxuYmxhaCcpIiwgIlsnYmxh
aCddIik7CitzaG91bGRCZU51bGwoInJlZ2V4cDMuZXhlYygnZmlyc3RcXG5ibGFoXFxudGhpcmQn
KSIpOworc2hvdWxkQmUoInJlZ2V4cDMuZXhlYygnZmlyc3RcXG5ibGFoMlxcbmJsYWgzJykiLCAi
WydibGFoMyddIik7CisKK3ZhciByZWdleHA0ID0gL14uKmJsYWguKiQvOworc2hvdWxkQmVOdWxs
KCJyZWdleHA0LmV4ZWMoJ3Rlc3QnKSIpOworc2hvdWxkQmUoInJlZ2V4cDQuZXhlYygnYmxhaCcp
IiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwNC5leGVjKCcxYmxhaCcpIiwgIlsnMWJs
YWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDQuZXhlYygnYmxhaDEnKSIsICJbJ2JsYWgxJ10iKTsK
K3Nob3VsZEJlKCJyZWdleHA0LmV4ZWMoJ2JsYWggYmxhaCBibGFoJykiLCAiWydibGFoIGJsYWgg
YmxhaCddIik7CitzaG91bGRCZU51bGwoInJlZ2V4cDQuZXhlYygnYmxhaFxcbnNlY29uZCcpIik7
CitzaG91bGRCZU51bGwoInJlZ2V4cDQuZXhlYygnZmlyc3RcXG5ibGFoJykiKTsKK3Nob3VsZEJl
TnVsbCgicmVnZXhwNC5leGVjKCdmaXJzdFxcbmJsYWhcXG50aGlyZCcpIik7CitzaG91bGRCZU51
bGwoInJlZ2V4cDQuZXhlYygnZmlyc3RcXG5ibGFoMlxcbmJsYWgzJykiKTsKKwordmFyIHJlZ2V4
cDUgPSAvLio/YmxhaC4qLzsKK3Nob3VsZEJlTnVsbCgicmVnZXhwNS5leGVjKCd0ZXN0JykiKTsK
K3Nob3VsZEJlKCJyZWdleHA1LmV4ZWMoJ2JsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUo
InJlZ2V4cDUuZXhlYygnMWJsYWgnKSIsICJbJzFibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA1
LmV4ZWMoJ2JsYWgxJykiLCAiWydibGFoMSddIik7CitzaG91bGRCZSgicmVnZXhwNS5leGVjKCdi
bGFoIGJsYWggYmxhaCcpIiwgIlsnYmxhaCBibGFoIGJsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4
cDUuZXhlYygnYmxhaFxcbnNlY29uZCcpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhw
NS5leGVjKCdmaXJzdFxcbmJsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDUu
ZXhlYygnZmlyc3RcXG5ibGFoXFxudGhpcmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJl
Z2V4cDUuZXhlYygnZmlyc3RcXG5ibGFoMlxcbmJsYWgzJykiLCAiWydibGFoMiddIik7CisKK3Zh
ciByZWdleHA2ID0gLy4qYmxhaC4qPy87CitzaG91bGRCZU51bGwoInJlZ2V4cDYuZXhlYygndGVz
dCcpIik7CitzaG91bGRCZSgicmVnZXhwNi5leGVjKCdibGFoJykiLCAiWydibGFoJ10iKTsKK3No
b3VsZEJlKCJyZWdleHA2LmV4ZWMoJzFibGFoJykiLCAiWycxYmxhaCddIik7CitzaG91bGRCZSgi
cmVnZXhwNi5leGVjKCdibGFoMScpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwNi5l
eGVjKCdibGFoIGJsYWggYmxhaCcpIiwgIlsnYmxhaCBibGFoIGJsYWgnXSIpOworc2hvdWxkQmUo
InJlZ2V4cDYuZXhlYygnYmxhaFxcbnNlY29uZCcpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgi
cmVnZXhwNi5leGVjKCdmaXJzdFxcbmJsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJl
Z2V4cDYuZXhlYygnZmlyc3RcXG5ibGFoXFxudGhpcmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxk
QmUoInJlZ2V4cDYuZXhlYygnZmlyc3RcXG5ibGFoMlxcbmJsYWgzJykiLCAiWydibGFoJ10iKTsK
KwordmFyIHJlZ2V4cDcgPSAvXi4qP2JsYWguKj8kLzsKK3Nob3VsZEJlTnVsbCgicmVnZXhwNy5l
eGVjKCd0ZXN0JykiKTsKK3Nob3VsZEJlKCJyZWdleHA3LmV4ZWMoJ2JsYWgnKSIsICJbJ2JsYWgn
XSIpOworc2hvdWxkQmUoInJlZ2V4cDcuZXhlYygnMWJsYWgnKSIsICJbJzFibGFoJ10iKTsKK3No
b3VsZEJlKCJyZWdleHA3LmV4ZWMoJ2JsYWgxJykiLCAiWydibGFoMSddIik7CitzaG91bGRCZSgi
cmVnZXhwNy5leGVjKCdibGFoIGJsYWggYmxhaCcpIiwgIlsnYmxhaCBibGFoIGJsYWgnXSIpOwor
c2hvdWxkQmVOdWxsKCJyZWdleHA3LmV4ZWMoJ2JsYWhcXG5zZWNvbmQnKSIpOworc2hvdWxkQmVO
dWxsKCJyZWdleHA3LmV4ZWMoJ2ZpcnN0XFxuYmxhaCcpIik7CitzaG91bGRCZU51bGwoInJlZ2V4
cDcuZXhlYygnZmlyc3RcXG5ibGFoXFxudGhpcmQnKSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHA3
LmV4ZWMoJ2ZpcnN0XFxuYmxhaDJcXG5ibGFoMycpIik7CisKK3ZhciByZWdleHA4ID0gL14oLiop
YmxhaC4qJC87CitzaG91bGRCZU51bGwoInJlZ2V4cDguZXhlYygndGVzdCcpIik7CitzaG91bGRC
ZSgicmVnZXhwOC5leGVjKCdibGFoJykiLCAiWydibGFoJywnJ10iKTsKK3Nob3VsZEJlKCJyZWdl
eHA4LmV4ZWMoJzFibGFoJykiLCAiWycxYmxhaCcsJzEnXSIpOworc2hvdWxkQmUoInJlZ2V4cDgu
ZXhlYygnYmxhaDEnKSIsICJbJ2JsYWgxJywnJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA4LmV4ZWMo
J2JsYWggYmxhaCBibGFoJykiLCAiWydibGFoIGJsYWggYmxhaCcsJ2JsYWggYmxhaCAnXSIpOwor
c2hvdWxkQmVOdWxsKCJyZWdleHA4LmV4ZWMoJ2JsYWhcXG5zZWNvbmQnKSIpOworc2hvdWxkQmVO
dWxsKCJyZWdleHA4LmV4ZWMoJ2ZpcnN0XFxuYmxhaCcpIik7CitzaG91bGRCZU51bGwoInJlZ2V4
cDguZXhlYygnZmlyc3RcXG5ibGFoXFxudGhpcmQnKSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHA4
LmV4ZWMoJ2ZpcnN0XFxuYmxhaDJcXG5ibGFoMycpIik7CisKK3ZhciByZWdleHA5ID0gLy4qYmxh
aC4qL207CitzaG91bGRCZU51bGwoInJlZ2V4cDkuZXhlYygndGVzdCcpIik7CitzaG91bGRCZSgi
cmVnZXhwOS5leGVjKCdibGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA5LmV4
ZWMoJzFibGFoJykiLCAiWycxYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwOS5leGVjKCdibGFo
MScpIiwgIlsnYmxhaDEnXSIpOworc2hvdWxkQmUoInJlZ2V4cDkuZXhlYygnYmxhaCBibGFoIGJs
YWgnKSIsICJbJ2JsYWggYmxhaCBibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA5LmV4ZWMoJ2Js
YWhcXG5zZWNvbmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDkuZXhlYygnZmly
c3RcXG5ibGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA5LmV4ZWMoJ2ZpcnN0
XFxuYmxhaFxcbnRoaXJkJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA5LmV4ZWMo
J2ZpcnN0XFxuYmxhaDJcXG5ibGFoMycpIiwgIlsnYmxhaDInXSIpOworCit2YXIgcmVnZXhwMTAg
PSAvXi4qYmxhaC4qL207CitzaG91bGRCZU51bGwoInJlZ2V4cDEwLmV4ZWMoJ3Rlc3QnKSIpOwor
c2hvdWxkQmUoInJlZ2V4cDEwLmV4ZWMoJ2JsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUo
InJlZ2V4cDEwLmV4ZWMoJzFibGFoJykiLCAiWycxYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhw
MTAuZXhlYygnYmxhaDEnKSIsICJbJ2JsYWgxJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAxMC5leGVj
KCdibGFoIGJsYWggYmxhaCcpIiwgIlsnYmxhaCBibGFoIGJsYWgnXSIpOworc2hvdWxkQmUoInJl
Z2V4cDEwLmV4ZWMoJ2JsYWhcXG5zZWNvbmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJl
Z2V4cDEwLmV4ZWMoJ2ZpcnN0XFxuYmxhaCcpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgicmVn
ZXhwMTAuZXhlYygnZmlyc3RcXG5ibGFoXFxudGhpcmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxk
QmUoInJlZ2V4cDEwLmV4ZWMoJ2ZpcnN0XFxuYmxhaDJcXG5ibGFoMycpIiwgIlsnYmxhaDInXSIp
OworCit2YXIgcmVnZXhwMTEgPSAvLiooPzpibGFoKS4qJC87CitzaG91bGRCZU51bGwoInJlZ2V4
cDExLmV4ZWMoJ3Rlc3QnKSIpOworc2hvdWxkQmUoInJlZ2V4cDExLmV4ZWMoJ2JsYWgnKSIsICJb
J2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDExLmV4ZWMoJzFibGFoJykiLCAiWycxYmxhaCdd
Iik7CitzaG91bGRCZSgicmVnZXhwMTEuZXhlYygnYmxhaDEnKSIsICJbJ2JsYWgxJ10iKTsKK3No
b3VsZEJlKCJyZWdleHAxMS5leGVjKCdibGFoIGJsYWggYmxhaCcpIiwgIlsnYmxhaCBibGFoIGJs
YWgnXSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHAxMS5leGVjKCdibGFoXFxuc2Vjb25kJykiKTsK
K3Nob3VsZEJlKCJyZWdleHAxMS5leGVjKCdmaXJzdFxcbmJsYWgnKSIsICJbJ2JsYWgnXSIpOwor
c2hvdWxkQmVOdWxsKCJyZWdleHAxMS5leGVjKCdmaXJzdFxcbmJsYWhcXG50aGlyZCcpIik7Citz
aG91bGRCZSgicmVnZXhwMTEuZXhlYygnZmlyc3RcXG5ibGFoMlxcbmJsYWgzJykiLCAiWydibGFo
MyddIik7CisKK3ZhciByZWdleHAxMiA9IC8uKig/OmJsYWh8YnV6enxiYW5nKS4qJC87CitzaG91
bGRCZU51bGwoInJlZ2V4cDEyLmV4ZWMoJ3Rlc3QnKSIpOworc2hvdWxkQmUoInJlZ2V4cDEyLmV4
ZWMoJ2JsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEyLmV4ZWMoJzFibGFo
JykiLCAiWycxYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwMTIuZXhlYygnYmxhaDEnKSIsICJb
J2JsYWgxJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAxMi5leGVjKCdibGFoIGJsYWggYmxhaCcpIiwg
IlsnYmxhaCBibGFoIGJsYWgnXSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHAxMi5leGVjKCdibGFo
XFxuc2Vjb25kJykiKTsKK3Nob3VsZEJlKCJyZWdleHAxMi5leGVjKCdmaXJzdFxcbmJsYWgnKSIs
ICJbJ2JsYWgnXSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHAxMi5leGVjKCdmaXJzdFxcbmJsYWhc
XG50aGlyZCcpIik7CitzaG91bGRCZSgicmVnZXhwMTIuZXhlYygnZmlyc3RcXG5ibGFoMlxcbmJs
YWgzJykiLCAiWydibGFoMyddIik7CisKK3ZhciByZWdleHAxMyA9IC8uKlxuXGQrLiovOworc2hv
dWxkQmUoInJlZ2V4cDEzLmV4ZWMoJ2FiY1xcbjEyMycpIiwgIlsnYWJjXFxuMTIzJ10iKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100694</attachid>
            <date>2011-07-13 11:30:23 -0700</date>
            <delta_ts>2011-07-13 15:04:48 -0700</delta_ts>
            <desc>Previous patch with regex JIT turned back on.</desc>
            <filename>64202-4.patch</filename>
            <type>text/plain</type>
            <size>37251</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTA3NTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAK
KzIwMTEtMDctMTEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MjAyCisgICAgICAg
IEVuaDogSW1wcm92ZSBoYW5kbGluZyBvZiBSZWdFeHAgaW4gdGhlIGZvcm0gb2YgLy4qYmxhaC4q
LworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IGNvZGUgdG8gYm90aCB0aGUgWWFyciBpbnRlcnByZXRlciBhbmQgSklUIHRvIGhhbmRsZQorICAg
ICAgICB0aGVzZSBleHByZXNzaW9ucyBhIGxpdHRsZSBkaWZmZXJlbnRseS4gIEZpcnN0IG9mZiwg
dGhlIHRlcm1zCisgICAgICAgIGluIGJldHdlZW4gdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIC4q
J3MgY2Fubm90IGNhcHR1cmUgYW5kCisgICAgICAgIGFsc28gdGhpcyBlbmhhbmNlbWVudCBpcyBs
aW1pdGVkIHRvIHNpbmdsZSBhbHRlcm5hdGl2ZSBleHByZXNzaW9ucy4KKyAgICAgICAgSWYgYW4g
ZXhwcmVzc2lvbiBpcyBvZiB0aGUgcmlnaHQgZm9ybSB3aXRoIHRoZSBhZm9yZW1lbnRpb25lZAor
ICAgICAgICByZXN0cmljdGlvbnMsIHdlIHByb2Nlc3MgdGhlIGlubmVyIHRlcm1zIGFuZCB0aGVu
IGxvb2sgZm9yIHRoZQorICAgICAgICBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBhbmQgZW5kIG9m
IHRoZSBzdHJpbmcuICBUaGVyZSBpcyBoYW5kbGluZyAKKyAgICAgICAgZm9yIG11bHRpbGluZSBl
eHByZXNzaW9ucyB0byBhbGxvdyB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgdG8gYmUgCisgICAgICAg
IHJpZ2h0IGFmdGVyIGFuZCByaWdodCBiZWZvcmUgbmV3bGluZXMuCisKKyAgICAgICAgVGhpcyBl
bmhhbmNlbWVudCBzcGVlZHMgdXAgZXhwcmVzc2lvbnMgb2YgdGhpcyB0eXBlIDEyeCBvbgorICAg
ICAgICBhIE1hY0Jvb2tQcm8uCisKKyAgICAgICAgQ2xlYW5lZCB1cCAnY2FzZScgc3RhdGVtZW50
IGluZGVudGF0aW9uLgorCisgICAgICAgIEEgbmV3IHNldCBvZiB0ZXN0cyB3YXMgYWRkZWQgYXMg
TGF5b3V0VGVzdHMvZmFzdC9yZWdleC9kb3RzdGFyLmh0bWwKKworICAgICAgICAqIHlhcnIvWWFy
ckludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6OklucHV0
U3RyZWFtOjplbmQpOgorICAgICAgICAoSlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6bWF0Y2hEb3RT
dGFyRW5jbG9zdXJlKToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6Om1hdGNoRGlz
anVuY3Rpb24pOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmFzc2VydGlvbkRv
dFN0YXJFbmNsb3N1cmUpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmVtaXRE
aXNqdW5jdGlvbik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuaDoKKyAgICAgICAg
KEpTQzo6WWFycjo6Qnl0ZVRlcm06OkRvdFN0YXJFbmNsb3N1cmUpOgorICAgICAgICAqIHlhcnIv
WWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmdlbmVyYXRl
RG90U3RhckVuY2xvc3VyZSk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmJh
Y2t0cmFja0RvdFN0YXJFbmNsb3N1cmUpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJh
dG9yOjpnZW5lcmF0ZVRlcm0pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpi
YWNrdHJhY2tUZXJtKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6c2V0dXBBbHRlcm5hdGl2ZU9mZnNl
dHMpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpjb250YWlu
c0NhcHR1cmluZ1Rlcm1zKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1
Y3Rvcjo6b3B0aW1pemVEb3RTdGFyV3JhcHBlZEV4cHJlc3Npb25zKToKKyAgICAgICAgKEpTQzo6
WWFycjo6WWFyclBhdHRlcm46OmNvbXBpbGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4u
aDoKKyAgICAgICAgKEpTQzo6WWFycjo6UGF0dGVyblRlcm06OlBhdHRlcm5UZXJtKToKKwogMjAx
MS0wNy0xMSAgR2Fib3IgTG9raSAgPGxva2lAd2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdGhl
IGNvbmRpdGlvbiBvZiB0aGUgb3B0aW1pemVkIGNvZGUgaW4gZG91YmxlVHJhbnNmZXIKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAkocmV2
aXNpb24gOTA2OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNiArMjQzLDExIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBwb3MgPT0gbGVuZ3RoOwogICAgICAgICB9CiAKKyAgICAgICAgdW5zaWdu
ZWQgZW5kKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDsKKyAgICAgICAg
fQorCiAgICAgICAgIGJvb2wgY2hlY2tJbnB1dChpbnQgY291bnQpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmICgocG9zICsgY291bnQpIDw9IGxlbmd0aCkgewpAQCAtMTA0NCw2ICsxMDQ5LDM4
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTUmVnRXhwRXJyb3JOb01hdGNoOwogICAgIH0K
IAorICAgIGJvb2wgbWF0Y2hEb3RTdGFyRW5jbG9zdXJlKEJ5dGVUZXJtJiB0ZXJtLCBEaXNqdW5j
dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0odGVybSk7
CisgICAgICAgIHVuc2lnbmVkIG1hdGNoQmVnaW4gPSBjb250ZXh0LT5tYXRjaEJlZ2luOworICAg
IAorICAgICAgICBpZiAobWF0Y2hCZWdpbikgeworICAgICAgICAgICAgZm9yIChtYXRjaEJlZ2lu
LS07IHRydWU7IG1hdGNoQmVnaW4tLSkgeworICAgICAgICAgICAgICAgIGlmICh0ZXN0Q2hhcmFj
dGVyQ2xhc3MocGF0dGVybi0+bmV3bGluZUNoYXJhY3RlckNsYXNzLCBpbnB1dC5yZXJlYWQobWF0
Y2hCZWdpbikpKSB7CisgICAgICAgICAgICAgICAgICAgICsrbWF0Y2hCZWdpbjsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
aWYgKCFtYXRjaEJlZ2luKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIG1hdGNoRW5kID0gaW5wdXQuZ2V0UG9z
KCk7CisgICAgCisgICAgICAgIGZvciAoOyAobWF0Y2hFbmQgIT0gaW5wdXQuZW5kKCkpCisgICAg
ICAgICAgICAgJiYgKCF0ZXN0Q2hhcmFjdGVyQ2xhc3MocGF0dGVybi0+bmV3bGluZUNoYXJhY3Rl
ckNsYXNzLCBpbnB1dC5yZXJlYWQobWF0Y2hFbmQpKSk7IG1hdGNoRW5kKyspIHsgfQorCisgICAg
ICAgIGlmICgoKG1hdGNoQmVnaW4gJiYgdGVybS5hbmNob3JzLm1fYm9sKQorICAgICAgICAgICAg
IHx8ICgobWF0Y2hFbmQgIT0gaW5wdXQuZW5kKCkpICYmIHRlcm0uYW5jaG9ycy5tX2VvbCkpCisg
ICAgICAgICAgICAmJiAhcGF0dGVybi0+bV9tdWx0aWxpbmUpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgY29udGV4dC0+bWF0Y2hCZWdpbiA9IG1hdGNoQmVnaW47CisgICAg
ICAgIGNvbnRleHQtPm1hdGNoRW5kID0gbWF0Y2hFbmQ7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKwogI2RlZmluZSBNQVRDSF9ORVhUKCkgeyArK2NvbnRleHQtPnRlcm07IGdvdG8gbWF0
Y2hBZ2FpbjsgfQogI2RlZmluZSBCQUNLVFJBQ0soKSB7IC0tY29udGV4dC0+dGVybTsgZ290byBi
YWNrdHJhY2s7IH0KICNkZWZpbmUgY3VycmVudFRlcm0oKSAoZGlzanVuY3Rpb24tPnRlcm1zW2Nv
bnRleHQtPnRlcm1dKQpAQCAtMTIwMyw5ICsxMjQwLDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKIAotICAgICAgICAg
ICAgY2FzZSBCeXRlVGVybTo6VHlwZVVuY2hlY2tJbnB1dDoKLSAgICAgICAgICAgICAgICBpbnB1
dC51bmNoZWNrSW5wdXQoY3VycmVudFRlcm0oKS5jaGVja0lucHV0Q291bnQpOwotICAgICAgICAg
ICAgICAgIE1BVENIX05FWFQoKTsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVVuY2hlY2tJ
bnB1dDoKKyAgICAgICAgICAgIGlucHV0LnVuY2hlY2tJbnB1dChjdXJyZW50VGVybSgpLmNoZWNr
SW5wdXRDb3VudCk7CisgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVEb3RTdGFyRW5jbG9zdXJlOgorICAgICAgICAg
ICAgaWYgKG1hdGNoRG90U3RhckVuY2xvc3VyZShjdXJyZW50VGVybSgpLCBjb250ZXh0KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSlNSZWdFeHBNYXRjaDsKKyAgICAgICAgICAgIEJBQ0tUUkFD
SygpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGZhbGwtdGhyb3Vn
aCB0byBoZXJlLgpAQCAtMTI0Miw5MSArMTI4NCw5NCBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2Ug
Qnl0ZVRlcm06OlR5cGVCb2R5QWx0ZXJuYXRpdmVFbmQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIAotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUFsdGVybmF0aXZl
QmVnaW46Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQWx0ZXJuYXRpdmVEaXNqdW5j
dGlvbjogewotICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSBjdXJyZW50VGVybSgpLmFsdGVy
bmF0aXZlLm5leHQ7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+dGVybSArPSBvZmZzZXQ7Ci0g
ICAgICAgICAgICAgICAgaWYgKG9mZnNldCA+IDApCi0gICAgICAgICAgICAgICAgICAgIE1BVENI
X05FWFQoKTsKLSAgICAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVBbHRlcm5hdGl2ZUVuZDogewotICAgICAgICAg
ICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBiYWNrdHJhY2sgYmFjayBpbnRvIGFuIGFsdGVybmF0
aXZlIG9mIHRoZSBtYWluIGJvZHkgb2YgdGhlIHJlZ2V4LgotICAgICAgICAgICAgICAgIEJhY2tU
cmFja0luZm9BbHRlcm5hdGl2ZSogYmFja1RyYWNrID0gcmVpbnRlcnByZXRfY2FzdDxCYWNrVHJh
Y2tJbmZvQWx0ZXJuYXRpdmUqPihjb250ZXh0LT5mcmFtZSArIGN1cnJlbnRUZXJtKCkuZnJhbWVM
b2NhdGlvbik7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gYmFja1RyYWNrLT5v
ZmZzZXQ7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+dGVybSAtPSBvZmZzZXQ7Ci0gICAgICAg
ICAgICAgICAgQkFDS1RSQUNLKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNhc2Ug
Qnl0ZVRlcm06OlR5cGVBc3NlcnRpb25CT0w6Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpU
eXBlQXNzZXJ0aW9uRU9MOgotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUFzc2VydGlv
bldvcmRCb3VuZGFyeToKLSAgICAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLQotICAgICAgICAg
ICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJPbmNlOgotICAgICAgICAgICAg
Y2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJGaXhlZDoKLSAgICAgICAgICAgIGNh
c2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyR3JlZWR5OgotICAgICAgICAgICAgY2Fz
ZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DaGFyYWN0ZXJOb25HcmVlZHk6Ci0gICAgICAgICAgICAg
ICAgaWYgKGJhY2t0cmFja1BhdHRlcm5DaGFyYWN0ZXIoY3VycmVudFRlcm0oKSwgY29udGV4dCkp
Ci0gICAgICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKLSAgICAgICAgICAgICAgICBCQUNL
VFJBQ0soKTsKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJuQ2FzZWRDaGFy
YWN0ZXJPbmNlOgotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DYXNlZENo
YXJhY3RlckZpeGVkOgotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DYXNl
ZENoYXJhY3RlckdyZWVkeToKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXR0ZXJu
Q2FzZWRDaGFyYWN0ZXJOb25HcmVlZHk6Ci0gICAgICAgICAgICAgICAgaWYgKGJhY2t0cmFja1Bh
dHRlcm5DYXNlZENoYXJhY3RlcihjdXJyZW50VGVybSgpLCBjb250ZXh0KSkKLSAgICAgICAgICAg
ICAgICAgICAgTUFUQ0hfTkVYVCgpOwotICAgICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAg
ICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUNoYXJhY3RlckNsYXNzOgotICAgICAgICAgICAg
ICAgIGlmIChiYWNrdHJhY2tDaGFyYWN0ZXJDbGFzcyhjdXJyZW50VGVybSgpLCBjb250ZXh0KSkK
LSAgICAgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwotICAgICAgICAgICAgICAgIEJBQ0tU
UkFDSygpOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZUJhY2tSZWZlcmVuY2U6Ci0g
ICAgICAgICAgICAgICAgaWYgKGJhY2t0cmFja0JhY2tSZWZlcmVuY2UoY3VycmVudFRlcm0oKSwg
Y29udGV4dCkpCi0gICAgICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKLSAgICAgICAgICAg
ICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRo
ZXNlc1N1YnBhdHRlcm46IHsKLSAgICAgICAgICAgICAgICBKU1JlZ0V4cFJlc3VsdCByZXN1bHQg
PSBiYWNrdHJhY2tQYXJlbnRoZXNlcyhjdXJyZW50VGVybSgpLCBjb250ZXh0KTsKKyAgICAgICAg
Y2FzZSBCeXRlVGVybTo6VHlwZUFsdGVybmF0aXZlQmVnaW46CisgICAgICAgIGNhc2UgQnl0ZVRl
cm06OlR5cGVBbHRlcm5hdGl2ZURpc2p1bmN0aW9uOiB7CisgICAgICAgICAgICBpbnQgb2Zmc2V0
ID0gY3VycmVudFRlcm0oKS5hbHRlcm5hdGl2ZS5uZXh0OworICAgICAgICAgICAgY29udGV4dC0+
dGVybSArPSBvZmZzZXQ7CisgICAgICAgICAgICBpZiAob2Zmc2V0ID4gMCkKKyAgICAgICAgICAg
ICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICBCQUNLVFJBQ0soKTsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQWx0ZXJuYXRpdmVFbmQ6IHsKKyAgICAgICAgICAg
IC8vIFdlIHNob3VsZCBuZXZlciBiYWNrdHJhY2sgYmFjayBpbnRvIGFuIGFsdGVybmF0aXZlIG9m
IHRoZSBtYWluIGJvZHkgb2YgdGhlIHJlZ2V4LgorICAgICAgICAgICAgQmFja1RyYWNrSW5mb0Fs
dGVybmF0aXZlKiBiYWNrVHJhY2sgPSByZWludGVycHJldF9jYXN0PEJhY2tUcmFja0luZm9BbHRl
cm5hdGl2ZSo+KGNvbnRleHQtPmZyYW1lICsgY3VycmVudFRlcm0oKS5mcmFtZUxvY2F0aW9uKTsK
KyAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IGJhY2tUcmFjay0+b2Zmc2V0OworICAgICAg
ICAgICAgY29udGV4dC0+dGVybSAtPSBvZmZzZXQ7CisgICAgICAgICAgICBCQUNLVFJBQ0soKTsK
KyAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBKU1JlZ0V4cE1hdGNo
KSB7Ci0gICAgICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKLSAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKHJlc3VsdCAhPSBKU1JlZ0V4cE5vTWF0Y2gpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVBc3NlcnRpb25CT0w6
CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVBc3NlcnRpb25FT0w6CisgICAgICAgIGNhc2Ug
Qnl0ZVRlcm06OlR5cGVBc3NlcnRpb25Xb3JkQm91bmRhcnk6CisgICAgICAgICAgICBCQUNLVFJB
Q0soKTsKIAotICAgICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VCZWdp
bjoKLSAgICAgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGFyZW50aGVzZXNPbmNlQmVnaW4oY3Vy
cmVudFRlcm0oKSwgY29udGV4dCkpCi0gICAgICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsK
LSAgICAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06
OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5kOgotICAgICAgICAgICAgICAgIGlmIChi
YWNrdHJhY2tQYXJlbnRoZXNlc09uY2VFbmQoY3VycmVudFRlcm0oKSwgY29udGV4dCkpCi0gICAg
ICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKLSAgICAgICAgICAgICAgICBCQUNLVFJBQ0so
KTsKLSAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5U
ZXJtaW5hbEJlZ2luOgotICAgICAgICAgICAgICAgIGlmIChiYWNrdHJhY2tQYXJlbnRoZXNlc1Rl
cm1pbmFsQmVnaW4oY3VycmVudFRlcm0oKSwgY29udGV4dCkpCi0gICAgICAgICAgICAgICAgICAg
IE1BVENIX05FWFQoKTsKLSAgICAgICAgICAgICAgICBCQUNLVFJBQ0soKTsKLSAgICAgICAgICAg
IGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEVuZDoKLSAg
ICAgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGFyZW50aGVzZXNUZXJtaW5hbEVuZChjdXJyZW50
VGVybSgpLCBjb250ZXh0KSkKLSAgICAgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOwotICAg
ICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlw
ZVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbjoKLSAgICAgICAgICAgICAgICBpZiAoYmFja3Ry
YWNrUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQot
ICAgICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7Ci0gICAgICAgICAgICAgICAgQkFDS1RS
QUNLKCk7Ci0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2Vy
dGlvbkVuZDoKLSAgICAgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGFyZW50aGV0aWNhbEFzc2Vy
dGlvbkVuZChjdXJyZW50VGVybSgpLCBjb250ZXh0KSkKLSAgICAgICAgICAgICAgICAgICAgTUFU
Q0hfTkVYVCgpOwotICAgICAgICAgICAgICAgIEJBQ0tUUkFDSygpOwotCi0gICAgICAgICAgICBj
YXNlIEJ5dGVUZXJtOjpUeXBlQ2hlY2tJbnB1dDoKLSAgICAgICAgICAgICAgICBpbnB1dC51bmNo
ZWNrSW5wdXQoY3VycmVudFRlcm0oKS5jaGVja0lucHV0Q291bnQpOwotICAgICAgICAgICAgICAg
IEJBQ0tUUkFDSygpOwotCi0gICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlVW5jaGVja0lu
cHV0OgotICAgICAgICAgICAgICAgIGlucHV0LmNoZWNrSW5wdXQoY3VycmVudFRlcm0oKS5jaGVj
a0lucHV0Q291bnQpOwotICAgICAgICAgICAgICAgIEJBQ0tUUkFDSygpOworICAgICAgICBjYXNl
IEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3Rlck9uY2U6CisgICAgICAgIGNhc2UgQnl0ZVRl
cm06OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyRml4ZWQ6CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5
cGVQYXR0ZXJuQ2hhcmFjdGVyR3JlZWR5OgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0
dGVybkNoYXJhY3Rlck5vbkdyZWVkeToKKyAgICAgICAgICAgIGlmIChiYWNrdHJhY2tQYXR0ZXJu
Q2hhcmFjdGVyKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQorICAgICAgICAgICAgICAgIE1BVENI
X05FWFQoKTsKKyAgICAgICAgICAgIEJBQ0tUUkFDSygpOworICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyT25jZToKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6
VHlwZVBhdHRlcm5DYXNlZENoYXJhY3RlckZpeGVkOgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpU
eXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyR3JlZWR5OgorICAgICAgICBjYXNlIEJ5dGVUZXJtOjpU
eXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyTm9uR3JlZWR5OgorICAgICAgICAgICAgaWYgKGJhY2t0
cmFja1BhdHRlcm5DYXNlZENoYXJhY3RlcihjdXJyZW50VGVybSgpLCBjb250ZXh0KSkKKyAgICAg
ICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICBCQUNLVFJBQ0soKTsKKyAgICAg
ICAgY2FzZSBCeXRlVGVybTo6VHlwZUNoYXJhY3RlckNsYXNzOgorICAgICAgICAgICAgaWYgKGJh
Y2t0cmFja0NoYXJhY3RlckNsYXNzKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQorICAgICAgICAg
ICAgICAgIE1BVENIX05FWFQoKTsKKyAgICAgICAgICAgIEJBQ0tUUkFDSygpOworICAgICAgICBj
YXNlIEJ5dGVUZXJtOjpUeXBlQmFja1JlZmVyZW5jZToKKyAgICAgICAgICAgIGlmIChiYWNrdHJh
Y2tCYWNrUmVmZXJlbmNlKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQorICAgICAgICAgICAgICAg
IE1BVENIX05FWFQoKTsKKyAgICAgICAgICAgIEJBQ0tUUkFDSygpOworICAgICAgICBjYXNlIEJ5
dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuOiB7CisgICAgICAgICAgICBKU1JlZ0V4
cFJlc3VsdCByZXN1bHQgPSBiYWNrdHJhY2tQYXJlbnRoZXNlcyhjdXJyZW50VGVybSgpLCBjb250
ZXh0KTsKKworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBKU1JlZ0V4cE1hdGNoKSB7CisgICAg
ICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOworICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQg
IT0gSlNSZWdFeHBOb01hdGNoKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAg
ICAgICAgICAgIEJBQ0tUUkFDSygpOworICAgICAgICB9CisgICAgICAgIGNhc2UgQnl0ZVRlcm06
OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlQmVnaW46CisgICAgICAgICAgICBpZiAoYmFj
a3RyYWNrUGFyZW50aGVzZXNPbmNlQmVnaW4oY3VycmVudFRlcm0oKSwgY29udGV4dCkpCisgICAg
ICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOworICAgICAgICAgICAgQkFDS1RSQUNLKCk7CisgICAg
ICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5PbmNlRW5kOgorICAg
ICAgICAgICAgaWYgKGJhY2t0cmFja1BhcmVudGhlc2VzT25jZUVuZChjdXJyZW50VGVybSgpLCBj
b250ZXh0KSkKKyAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICBCQUNL
VFJBQ0soKTsKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVy
blRlcm1pbmFsQmVnaW46CisgICAgICAgICAgICBpZiAoYmFja3RyYWNrUGFyZW50aGVzZXNUZXJt
aW5hbEJlZ2luKGN1cnJlbnRUZXJtKCksIGNvbnRleHQpKQorICAgICAgICAgICAgICAgIE1BVENI
X05FWFQoKTsKKyAgICAgICAgICAgIEJBQ0tUUkFDSygpOworICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxFbmQ6CisgICAgICAgICAgICBpZiAo
YmFja3RyYWNrUGFyZW50aGVzZXNUZXJtaW5hbEVuZChjdXJyZW50VGVybSgpLCBjb250ZXh0KSkK
KyAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CisgICAgICAgICAgICBCQUNLVFJBQ0soKTsK
KyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbjoK
KyAgICAgICAgICAgIGlmIChiYWNrdHJhY2tQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oY3Vy
cmVudFRlcm0oKSwgY29udGV4dCkpCisgICAgICAgICAgICAgICAgTUFUQ0hfTkVYVCgpOworICAg
ICAgICAgICAgQkFDS1RSQUNLKCk7CisgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRo
ZXRpY2FsQXNzZXJ0aW9uRW5kOgorICAgICAgICAgICAgaWYgKGJhY2t0cmFja1BhcmVudGhldGlj
YWxBc3NlcnRpb25FbmQoY3VycmVudFRlcm0oKSwgY29udGV4dCkpCisgICAgICAgICAgICAgICAg
TUFUQ0hfTkVYVCgpOworICAgICAgICAgICAgQkFDS1RSQUNLKCk7CisKKyAgICAgICAgY2FzZSBC
eXRlVGVybTo6VHlwZUNoZWNrSW5wdXQ6CisgICAgICAgICAgICBpbnB1dC51bmNoZWNrSW5wdXQo
Y3VycmVudFRlcm0oKS5jaGVja0lucHV0Q291bnQpOworICAgICAgICAgICAgQkFDS1RSQUNLKCk7
CisKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVVuY2hlY2tJbnB1dDoKKyAgICAgICAgICAg
IGlucHV0LmNoZWNrSW5wdXQoY3VycmVudFRlcm0oKS5jaGVja0lucHV0Q291bnQpOworICAgICAg
ICAgICAgQkFDS1RSQUNLKCk7CisKKyAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZURvdFN0YXJF
bmNsb3N1cmU6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQog
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTU1OSw2ICsxNjA0LDExIEBAIHB1
YmxpYzoKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zW2VuZFRlcm1dLmF0b20ucXVh
bnRpdHlUeXBlID0gcXVhbnRpdHlUeXBlOwogICAgIH0KIAorICAgIHZvaWQgYXNzZXJ0aW9uRG90
U3RhckVuY2xvc3VyZShib29sIGJvbEFuY2hvcmVkLCBib29sIGVvbEFuY2hvcmVkKQorICAgIHsK
KyAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChCeXRlVGVybTo6RG90U3Rh
ckVuY2xvc3VyZShib2xBbmNob3JlZCwgZW9sQW5jaG9yZWQpKTsKKyAgICB9CisKICAgICB1bnNp
Z25lZCBwb3BQYXJlbnRoZXNlc1N0YWNrKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3BhcmVu
dGhlc2VzU3RhY2suc2l6ZSgpKTsKQEAgLTE4MzgsNiArMTg4OCwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZURvdFN0YXJF
bmNsb3N1cmU6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydGlvbkRvdFN0YXJFbmNsb3N1cmUo
dGVybS5hbmNob3JzLmJvbEFuY2hvciwgdGVybS5hbmNob3JzLmVvbEFuY2hvcik7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJl
dGVyLmgJKHJldmlzaW9uIDkwNjkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgc3RydWN0IEJ5
dGVUZXJtIHsKICAgICAgICAgVHlwZVBhcmVudGhldGljYWxBc3NlcnRpb25FbmQsCiAgICAgICAg
IFR5cGVDaGVja0lucHV0LAogICAgICAgICBUeXBlVW5jaGVja0lucHV0LAorICAgICAgICBUeXBl
RG90U3RhckVuY2xvc3VyZSwKICAgICB9IHR5cGU7CiAgICAgdW5pb24gewogICAgICAgICBzdHJ1
Y3QgewpAQCAtOTUsNiArOTYsMTAgQEAgc3RydWN0IEJ5dGVUZXJtIHsKICAgICAgICAgICAgIGlu
dCBlbmQ7CiAgICAgICAgICAgICBib29sIG9uY2VUaHJvdWdoOwogICAgICAgICB9IGFsdGVybmF0
aXZlOworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgYm9vbCBtX2JvbCA6IDE7CisgICAg
ICAgICAgICBib29sIG1fZW9sIDogMTsKKyAgICAgICAgfSBhbmNob3JzOwogICAgICAgICB1bnNp
Z25lZCBjaGVja0lucHV0Q291bnQ7CiAgICAgfTsKICAgICB1bnNpZ25lZCBmcmFtZUxvY2F0aW9u
OwpAQCAtMjk1LDYgKzMwMCwxNCBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogICAgIHsKICAgICAgICAg
cmV0dXJuIEJ5dGVUZXJtKFR5cGVTdWJwYXR0ZXJuRW5kKTsKICAgICB9CisgICAgCisgICAgc3Rh
dGljIEJ5dGVUZXJtIERvdFN0YXJFbmNsb3N1cmUoYm9vbCBib2xBbmNob3IsIGJvb2wgZW9sQW5j
aG9yKQorICAgIHsKKyAgICAgICAgQnl0ZVRlcm0gdGVybShUeXBlRG90U3RhckVuY2xvc3VyZSk7
CisgICAgICAgIHRlcm0uYW5jaG9ycy5tX2JvbCA9IGJvbEFuY2hvcjsKKyAgICAgICAgdGVybS5h
bmNob3JzLm1fZW9sID0gZW9sQW5jaG9yOworICAgICAgICByZXR1cm4gdGVybTsKKyAgICB9CiAK
ICAgICBib29sIGludmVydCgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckpJVC5jcHAJKHJldmlzaW9uIDkwNjkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5NSw2ICs5OTUsNjMgQEAgY2xhc3Mg
WWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICBtX2JhY2t0cmFja2lu
Z1N0YXRlLmZhbGx0aHJvdWdoKCk7CiAgICAgfQogCisgICAgdm9pZCBnZW5lcmF0ZURvdFN0YXJF
bmNsb3N1cmUoc2l6ZV90IG9wSW5kZXgpCisgICAgeworICAgICAgICBZYXJyT3AmIG9wID0gbV9v
cHNbb3BJbmRleF07CisgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOworCisg
ICAgICAgIGNvbnN0IFJlZ2lzdGVySUQgY2hhcmFjdGVyID0gcmVnVDA7CisgICAgICAgIGNvbnN0
IFJlZ2lzdGVySUQgbWF0Y2hQb3MgPSByZWdUMTsKKworICAgICAgICBKdW1wTGlzdCBmb3VuZEJl
Z2lubmluZ05ld0xpbmU7CisgICAgICAgIEp1bXBMaXN0IHNhdmVTdGFydEluZGV4OworICAgICAg
ICBKdW1wTGlzdCBmb3VuZEVuZGluZ05ld0xpbmU7CisKKyAgICAgICAgaWYgKG1fcGF0dGVybi5t
X2JvZHktPm1faGFzRml4ZWRTaXplKSB7CisgICAgICAgICAgICBtb3ZlKGluZGV4LCBtYXRjaFBv
cyk7CisgICAgICAgICAgICBzdWIzMihJbW0zMihtX2NoZWNrZWQpLCBtYXRjaFBvcyk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3Mob3V0cHV0KSwgbWF0Y2hQb3Mp
OworCisgICAgICAgIHNhdmVTdGFydEluZGV4LmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgbWF0
Y2hQb3MpKTsKKyAgICAgICAgTGFiZWwgZmluZEJPTExvb3AodGhpcyk7CisgICAgICAgIHN1YjMy
KFRydXN0ZWRJbW0zMigxKSwgbWF0Y2hQb3MpOworICAgICAgICBsb2FkMTYoQmFzZUluZGV4KGlu
cHV0LCBtYXRjaFBvcywgVGltZXNUd28sIDApLCBjaGFyYWN0ZXIpOworICAgICAgICBtYXRjaENo
YXJhY3RlckNsYXNzKGNoYXJhY3RlciwgZm91bmRCZWdpbm5pbmdOZXdMaW5lLCBtX3BhdHRlcm4u
bmV3bGluZUNoYXJhY3RlckNsYXNzKCkpOworICAgICAgICBicmFuY2hUZXN0MzIoTm9uWmVybywg
bWF0Y2hQb3MpLmxpbmtUbyhmaW5kQk9MTG9vcCwgdGhpcyk7CisgICAgICAgIHNhdmVTdGFydElu
ZGV4LmFwcGVuZChqdW1wKCkpOworCisgICAgICAgIGZvdW5kQmVnaW5uaW5nTmV3TGluZS5saW5r
KHRoaXMpOworICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIG1hdGNoUG9zKTsgLy8gQWR2
YW5jZSBwYXN0IG5ld2xpbmUKKyAgICAgICAgc2F2ZVN0YXJ0SW5kZXgubGluayh0aGlzKTsKKwor
ICAgICAgICBpZiAoIW1fcGF0dGVybi5tX211bHRpbGluZSAmJiB0ZXJtLT5hbmNob3JzLmJvbEFu
Y2hvcikKKyAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGJyYW5jaFRlc3QzMihOb25aZXJv
LCBtYXRjaFBvcykpOworCisgICAgICAgIHN0b3JlMzIobWF0Y2hQb3MsIEFkZHJlc3Mob3V0cHV0
KSk7CisKKyAgICAgICAgbW92ZShpbmRleCwgbWF0Y2hQb3MpOworCisgICAgICAgIExhYmVsIGZp
bmRFT0xMb29wKHRoaXMpOyAgICAgICAgCisgICAgICAgIGZvdW5kRW5kaW5nTmV3TGluZS5hcHBl
bmQoYnJhbmNoMzIoRXF1YWwsIG1hdGNoUG9zLCBsZW5ndGgpKTsKKyAgICAgICAgbG9hZDE2KEJh
c2VJbmRleChpbnB1dCwgbWF0Y2hQb3MsIFRpbWVzVHdvLCAwKSwgY2hhcmFjdGVyKTsKKyAgICAg
ICAgbWF0Y2hDaGFyYWN0ZXJDbGFzcyhjaGFyYWN0ZXIsIGZvdW5kRW5kaW5nTmV3TGluZSwgbV9w
YXR0ZXJuLm5ld2xpbmVDaGFyYWN0ZXJDbGFzcygpKTsKKyAgICAgICAgYWRkMzIoVHJ1c3RlZElt
bTMyKDEpLCBtYXRjaFBvcyk7CisgICAgICAgIGp1bXAoZmluZEVPTExvb3ApOworCisgICAgICAg
IGZvdW5kRW5kaW5nTmV3TGluZS5saW5rKHRoaXMpOworCisgICAgICAgIGlmICghbV9wYXR0ZXJu
Lm1fbXVsdGlsaW5lICYmIHRlcm0tPmFuY2hvcnMuZW9sQW5jaG9yKQorICAgICAgICAgICAgb3Au
bV9qdW1wcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIG1hdGNoUG9zLCBsZW5ndGgpKTsKKwor
ICAgICAgICBtb3ZlKG1hdGNoUG9zLCBpbmRleCk7CisgICAgfQorCisgICAgdm9pZCBiYWNrdHJh
Y2tEb3RTdGFyRW5jbG9zdXJlKHNpemVfdCBvcEluZGV4KQorICAgIHsKKyAgICAgICAgYmFja3Ry
YWNrVGVybURlZmF1bHQob3BJbmRleCk7CisgICAgfQorICAgIAogICAgIC8vIENvZGUgZ2VuZXJh
dGlvbi9iYWNrdHJhY2tpbmcgZm9yIHNpbXBsZSB0ZXJtcwogICAgIC8vIChwYXR0ZXJuIGNoYXJh
Y3RlcnMsIGNoYXJhY3RlciBjbGFzc2VzLCBhbmQgYXNzZXJ0aW9ucykuCiAgICAgLy8gVGhlc2Ug
bWV0aG9kcyBmYXJtIG91dCB3b3JrIHRvIHRoZSBzZXQgb2YgZnVuY3Rpb25zIGFib3ZlLgpAQCAt
MTA1OSw2ICsxMTE2LDkgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3Nl
bQogICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlQmFja1JlZmVyZW5jZToKICAgICAgICAg
ICAgIG1fc2hvdWxkRmFsbEJhY2sgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgUGF0dGVyblRlcm06OlR5cGVEb3RTdGFyRW5jbG9zdXJlOgorICAgICAgICAgICAgZ2Vu
ZXJhdGVEb3RTdGFyRW5jbG9zdXJlKG9wSW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgdm9pZCBiYWNrdHJhY2tUZXJtKHNpemVfdCBvcEluZGV4KQpAQCAt
MTExOSw2ICsxMTc5LDExIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNz
ZW0KICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybjoK
ICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb246CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICBjYXNlIFBhdHRlcm5U
ZXJtOjpUeXBlRG90U3RhckVuY2xvc3VyZToKKyAgICAgICAgICAgIGJhY2t0cmFja0RvdFN0YXJF
bmNsb3N1cmUob3BJbmRleCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIFBh
dHRlcm5UZXJtOjpUeXBlQmFja1JlZmVyZW5jZToKICAgICAgICAgICAgIG1fc2hvdWxkRmFsbEJh
Y2sgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJyUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCShyZXZpc2lvbiA5MDY5MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgyLDYg
KzU4MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgdGVybS5mcmFtZUxvY2F0aW9uID0g
Y3VycmVudENhbGxGcmFtZVNpemU7CiAgICAgICAgICAgICAgICAgY3VycmVudENhbGxGcmFtZVNp
emUgPSBzZXR1cERpc2p1bmN0aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9u
LCBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArIFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1Bh
cmVudGhldGljYWxBc3NlcnRpb24sIGN1cnJlbnRJbnB1dFBvc2l0aW9uKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZURvdFN0YXJF
bmNsb3N1cmU6CisgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmUtPm1faGFzRml4ZWRTaXplID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgdGVybS5pbnB1dFBvc2l0aW9uID0gaW5pdGlhbElucHV0
UG9zaXRpb247CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIApAQCAtNjc1LDYgKzY4MCw4NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICBib29sIGNvbnRhaW5zQ2FwdHVyaW5nVGVybXMoUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5h
dGl2ZSwgc2l6ZV90IGZpcnN0VGVybUluZGV4LCBzaXplX3QgbGFzdFRlcm1JbmRleCkKKyAgICB7
CisgICAgICAgIFZlY3RvcjxQYXR0ZXJuVGVybT4mIHRlcm1zID0gYWx0ZXJuYXRpdmUtPm1fdGVy
bXM7CisKKyAgICAgICAgZm9yIChzaXplX3QgdGVybUluZGV4ID0gZmlyc3RUZXJtSW5kZXg7IHRl
cm1JbmRleCA8PSBsYXN0VGVybUluZGV4OyArK3Rlcm1JbmRleCkgeworICAgICAgICAgICAgUGF0
dGVyblRlcm0mIHRlcm0gPSB0ZXJtc1t0ZXJtSW5kZXhdOworCisgICAgICAgICAgICBpZiAodGVy
bS5tX2NhcHR1cmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAg
IGlmICh0ZXJtLnR5cGUgPT0gUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4p
IHsKKyAgICAgICAgICAgICAgICBQYXR0ZXJuRGlzanVuY3Rpb24qIG5lc3RlZERpc2p1bmN0aW9u
ID0gdGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbjsKKyAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGFsdCA9IDA7IGFsdCA8IG5lc3RlZERpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlcy5z
aXplKCk7ICsrYWx0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluc0NhcHR1cmlu
Z1Rlcm1zKG5lc3RlZERpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlc1thbHRdLCAwLCBuZXN0ZWRE
aXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXNbYWx0XS0+bV90ZXJtcy5zaXplKCkgLSAxKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICAvLyBUaGlzIG9wdGltaXphdGlvbiBpZGVudGlmaWVzIGFsdGVybmF0aXZlcyBpbiB0aGUg
Zm9ybSBvZiAKKyAgICAvLyBbXl0uKls/XTxleHByZXNzaW9uPi4qWyRdIGZvciBleHByZXNzaW9u
cyB0aGF0IGRvbid0IGhhdmUgYW55IAorICAgIC8vIGNhcHR1cmluZyB0ZXJtcy4gVGhlIGFsdGVy
bmF0aXZlIGlzIGNoYW5nZWQgdG8gPGV4cHJlc3Npb24+IAorICAgIC8vIGZvbGxvd2VkIGJ5IHBy
b2Nlc3Npbmcgb2YgdGhlIGRvdCBzdGFycyB0byBmaW5kIGFuZCBhZGp1c3QgdGhlIAorICAgIC8v
IGJlZ2lubmluZyBhbmQgdGhlIGVuZCBvZiB0aGUgbWF0Y2guCisgICAgdm9pZCBvcHRpbWl6ZURv
dFN0YXJXcmFwcGVkRXhwcmVzc2lvbnMoKQorICAgIHsKKyAgICAgICAgVmVjdG9yPFBhdHRlcm5B
bHRlcm5hdGl2ZSo+JiBhbHRlcm5hdGl2ZXMgPSBtX3BhdHRlcm4ubV9ib2R5LT5tX2FsdGVybmF0
aXZlczsKKyAgICAgICAgaWYgKGFsdGVybmF0aXZlcy5zaXplKCkgIT0gMSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gYWx0
ZXJuYXRpdmVzWzBdOworICAgICAgICBWZWN0b3I8UGF0dGVyblRlcm0+JiB0ZXJtcyA9IGFsdGVy
bmF0aXZlLT5tX3Rlcm1zOworICAgICAgICBpZiAodGVybXMuc2l6ZSgpID49IDMpIHsKKyAgICAg
ICAgICAgIGJvb2wgc3RhcnRzV2l0aEJPTCA9IGZhbHNlOworICAgICAgICAgICAgYm9vbCBlbmRz
V2l0aEVPTCA9IGZhbHNlOworICAgICAgICAgICAgc2l6ZV90IHRlcm1JbmRleCwgZmlyc3RFeHBy
ZXNzaW9uVGVybSwgbGFzdEV4cHJlc3Npb25UZXJtOworCisgICAgICAgICAgICB0ZXJtSW5kZXgg
PSAwOworICAgICAgICAgICAgaWYgKHRlcm1zW3Rlcm1JbmRleF0udHlwZSA9PSBQYXR0ZXJuVGVy
bTo6VHlwZUFzc2VydGlvbkJPTCkgeworICAgICAgICAgICAgICAgIHN0YXJ0c1dpdGhCT0wgPSB0
cnVlOworICAgICAgICAgICAgICAgICsrdGVybUluZGV4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICBQYXR0ZXJuVGVybSYgZmlyc3ROb25BbmNob3JUZXJtID0gdGVy
bXNbdGVybUluZGV4XTsKKyAgICAgICAgICAgIGlmICgoZmlyc3ROb25BbmNob3JUZXJtLnR5cGUg
IT0gUGF0dGVyblRlcm06OlR5cGVDaGFyYWN0ZXJDbGFzcykgfHwgKGZpcnN0Tm9uQW5jaG9yVGVy
bS5jaGFyYWN0ZXJDbGFzcyAhPSBtX3BhdHRlcm4ubmV3bGluZUNoYXJhY3RlckNsYXNzKCkpIHx8
ICEoKGZpcnN0Tm9uQW5jaG9yVGVybS5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckdyZWVkeSkg
fHwgKGZpcnN0Tm9uQW5jaG9yVGVybS5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllck5vbkdyZWVk
eSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Zmlyc3RFeHByZXNzaW9uVGVybSA9IHRlcm1JbmRleCArIDE7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHRlcm1JbmRleCA9IHRlcm1zLnNpemUoKSAtIDE7CisgICAgICAgICAgICBpZiAodGVy
bXNbdGVybUluZGV4XS50eXBlID09IFBhdHRlcm5UZXJtOjpUeXBlQXNzZXJ0aW9uRU9MKSB7Cisg
ICAgICAgICAgICAgICAgZW5kc1dpdGhFT0wgPSB0cnVlOworICAgICAgICAgICAgICAgIC0tdGVy
bUluZGV4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBQYXR0ZXJu
VGVybSYgbGFzdE5vbkFuY2hvclRlcm0gPSB0ZXJtc1t0ZXJtSW5kZXhdOworICAgICAgICAgICAg
aWYgKChsYXN0Tm9uQW5jaG9yVGVybS50eXBlICE9IFBhdHRlcm5UZXJtOjpUeXBlQ2hhcmFjdGVy
Q2xhc3MpIHx8IChsYXN0Tm9uQW5jaG9yVGVybS5jaGFyYWN0ZXJDbGFzcyAhPSBtX3BhdHRlcm4u
bmV3bGluZUNoYXJhY3RlckNsYXNzKCkpIHx8IChsYXN0Tm9uQW5jaG9yVGVybS5xdWFudGl0eVR5
cGUgIT0gUXVhbnRpZmllckdyZWVkeSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBsYXN0RXhwcmVzc2lvblRlcm0gPSB0ZXJtSW5kZXggLSAxOwor
CisgICAgICAgICAgICBpZiAoZmlyc3RFeHByZXNzaW9uVGVybSA+IGxhc3RFeHByZXNzaW9uVGVy
bSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmICghY29udGFpbnND
YXB0dXJpbmdUZXJtcyhhbHRlcm5hdGl2ZSwgZmlyc3RFeHByZXNzaW9uVGVybSwgbGFzdEV4cHJl
c3Npb25UZXJtKSkgeworICAgICAgICAgICAgICAgIGZvciAodGVybUluZGV4ID0gdGVybXMuc2l6
ZSgpIC0gMTsgdGVybUluZGV4ID4gbGFzdEV4cHJlc3Npb25UZXJtOyAtLXRlcm1JbmRleCkKKyAg
ICAgICAgICAgICAgICAgICAgdGVybXMucmVtb3ZlKHRlcm1JbmRleCk7CisKKyAgICAgICAgICAg
ICAgICBmb3IgKHRlcm1JbmRleCA9IGZpcnN0RXhwcmVzc2lvblRlcm07IHRlcm1JbmRleCA+IDA7
IC0tdGVybUluZGV4KQorICAgICAgICAgICAgICAgICAgICB0ZXJtcy5yZW1vdmUodGVybUluZGV4
IC0gMSk7CisKKyAgICAgICAgICAgICAgICB0ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oc3RhcnRz
V2l0aEJPTCwgZW5kc1dpdGhFT0wpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBtX3BhdHRlcm4ubV9jb250YWluc0JPTCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCiBwcml2YXRlOgogICAgIFlhcnJQYXR0ZXJuJiBtX3BhdHRlcm47CiAgICAg
UGF0dGVybkFsdGVybmF0aXZlKiBtX2FsdGVybmF0aXZlOwpAQCAtNzA4LDYgKzc5NCw3IEBAIGNv
bnN0IGNoYXIqIFlhcnJQYXR0ZXJuOjpjb21waWxlKGNvbnN0IFUKICAgICB9CiAKICAgICBjb25z
dHJ1Y3Rvci5jaGVja0ZvclRlcm1pbmFsUGFyZW50aGVzZXMoKTsKKyAgICBjb25zdHJ1Y3Rvci5v
cHRpbWl6ZURvdFN0YXJXcmFwcGVkRXhwcmVzc2lvbnMoKTsKICAgICBjb25zdHJ1Y3Rvci5vcHRp
bWl6ZUJPTCgpOwogICAgICAgICAKICAgICBjb25zdHJ1Y3Rvci5zZXR1cE9mZnNldHMoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAkocmV2aXNpb24gOTA2
OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCSh3b3JraW5n
IGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIHN0cnVjdCBQYXR0ZXJuVGVybSB7CiAgICAgICAgIFR5
cGVGb3J3YXJkUmVmZXJlbmNlLAogICAgICAgICBUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuLAog
ICAgICAgICBUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbiwKKyAgICAgICAgVHlwZURvdFN0YXJF
bmNsb3N1cmUsCiAgICAgfSB0eXBlOwogICAgIGJvb2wgbV9jYXB0dXJlIDoxOwogICAgIGJvb2wg
bV9pbnZlcnQgOjE7CkBAIC0xMTAsNiArMTExLDEwIEBAIHN0cnVjdCBQYXR0ZXJuVGVybSB7CiAg
ICAgICAgICAgICBib29sIGlzQ29weTsKICAgICAgICAgICAgIGJvb2wgaXNUZXJtaW5hbDsKICAg
ICAgICAgfSBwYXJlbnRoZXNlczsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGJvb2wg
Ym9sQW5jaG9yIDogMTsKKyAgICAgICAgICAgIGJvb2wgZW9sQW5jaG9yIDogMTsKKyAgICAgICAg
fSBhbmNob3JzOwogICAgIH07CiAgICAgUXVhbnRpZmllclR5cGUgcXVhbnRpdHlUeXBlOwogICAg
IHVuc2lnbmVkIHF1YW50aXR5Q291bnQ7CkBAIC0xNjgsNiArMTczLDE3IEBAIHN0cnVjdCBQYXR0
ZXJuVGVybSB7CiAgICAgICAgIHF1YW50aXR5Q291bnQgPSAxOwogICAgIH0KIAorICAgIFBhdHRl
cm5UZXJtKGJvb2wgYm9sQW5jaG9yLCBib29sIGVvbEFuY2hvcikKKyAgICAgICAgOiB0eXBlKFR5
cGVEb3RTdGFyRW5jbG9zdXJlKQorICAgICAgICAsIG1fY2FwdHVyZShmYWxzZSkKKyAgICAgICAg
LCBtX2ludmVydChmYWxzZSkKKyAgICB7CisgICAgICAgIGFuY2hvcnMuYm9sQW5jaG9yID0gYm9s
QW5jaG9yOworICAgICAgICBhbmNob3JzLmVvbEFuY2hvciA9IGVvbEFuY2hvcjsKKyAgICAgICAg
cXVhbnRpdHlUeXBlID0gUXVhbnRpZmllckZpeGVkQ291bnQ7CisgICAgICAgIHF1YW50aXR5Q291
bnQgPSAxOworICAgIH0KKyAgICAKICAgICBzdGF0aWMgUGF0dGVyblRlcm0gRm9yd2FyZFJlZmVy
ZW5jZSgpCiAgICAgewogICAgICAgICByZXR1cm4gUGF0dGVyblRlcm0oVHlwZUZvcndhcmRSZWZl
cmVuY2UpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTA3NTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNy0xMSAgTWljaGFlbCBT
YWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQyMDIKKyAgICAgICAgRW5oOiBJbXByb3ZlIGhhbmRsaW5n
IG9mIFJlZ0V4cCBpbiB0aGUgZm9ybSBvZiAvLipibGFoLiovCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IHRlc3RzIHRvIHN1cHBvcnQgLy4qPGV4
cHJlc3Npb24+LiovIGVuaGFuY2VtZW50LgorCisgICAgICAgICogZmFzdC9yZWdleC9kb3RzdGFy
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdleC9kb3RzdGFyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL2RvdHN0YXIuanM6IEFk
ZGVkLgorCiAyMDExLTA3LTExICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBDaHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9u
cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVnZXgvZG90c3Rhci1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZWdleC9kb3RzdGFyLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVnZXgvZG90c3Rhci1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE4IEBACitUaGlzIHBhZ2UgdGVzdHMgaGFuZGxp
bmcgb2YgcGFyZW50aGVzZXMgc3ViZXhwcmVzc2lvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIHJlZ2V4cDEuZXhlYygndGVzdCcpIGlzIG51bGwKK1BBU1MgcmVnZXhw
MS5leGVjKCdibGFoJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwMS5leGVjKCcxYmxhaCcpIGlz
IFsnMWJsYWgnXQorUEFTUyByZWdleHAxLmV4ZWMoJ2JsYWgxJykgaXMgWydibGFoMSddCitQQVNT
IHJlZ2V4cDEuZXhlYygnYmxhaCBibGFoIGJsYWgnKSBpcyBbJ2JsYWggYmxhaCBibGFoJ10KK1BB
U1MgcmVnZXhwMS5leGVjKCdibGFoXG5zZWNvbmQnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHAx
LmV4ZWMoJ2ZpcnN0XG5ibGFoJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwMS5leGVjKCdmaXJz
dFxuYmxhaFxudGhpcmQnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHAxLmV4ZWMoJ2ZpcnN0XG5i
bGFoMlxuYmxhaDMnKSBpcyBbJ2JsYWgyJ10KK1BBU1MgcmVnZXhwMi5leGVjKCd0ZXN0JykgaXMg
bnVsbAorUEFTUyByZWdleHAyLmV4ZWMoJ2JsYWgnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHAy
LmV4ZWMoJzFibGFoJykgaXMgWycxYmxhaCddCitQQVNTIHJlZ2V4cDIuZXhlYygnYmxhaDEnKSBp
cyBbJ2JsYWgxJ10KK1BBU1MgcmVnZXhwMi5leGVjKCdibGFoIGJsYWggYmxhaCcpIGlzIFsnYmxh
aCBibGFoIGJsYWgnXQorUEFTUyByZWdleHAyLmV4ZWMoJ2JsYWhcbnNlY29uZCcpIGlzIFsnYmxh
aCddCitQQVNTIHJlZ2V4cDIuZXhlYygnZmlyc3RcbmJsYWgnKSBpcyBudWxsCitQQVNTIHJlZ2V4
cDIuZXhlYygnZmlyc3RcbmJsYWhcbnRoaXJkJykgaXMgbnVsbAorUEFTUyByZWdleHAyLmV4ZWMo
J2ZpcnN0XG5ibGFoMlxuYmxhaDMnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDMuZXhlYygndGVzdCcp
IGlzIG51bGwKK1BBU1MgcmVnZXhwMy5leGVjKCdibGFoJykgaXMgWydibGFoJ10KK1BBU1MgcmVn
ZXhwMy5leGVjKCcxYmxhaCcpIGlzIFsnMWJsYWgnXQorUEFTUyByZWdleHAzLmV4ZWMoJ2JsYWgx
JykgaXMgWydibGFoMSddCitQQVNTIHJlZ2V4cDMuZXhlYygnYmxhaCBibGFoIGJsYWgnKSBpcyBb
J2JsYWggYmxhaCBibGFoJ10KK1BBU1MgcmVnZXhwMy5leGVjKCdibGFoXG5zZWNvbmQnKSBpcyBu
dWxsCitQQVNTIHJlZ2V4cDMuZXhlYygnZmlyc3RcbmJsYWgnKSBpcyBbJ2JsYWgnXQorUEFTUyBy
ZWdleHAzLmV4ZWMoJ2ZpcnN0XG5ibGFoXG50aGlyZCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwMy5l
eGVjKCdmaXJzdFxuYmxhaDJcbmJsYWgzJykgaXMgWydibGFoMyddCitQQVNTIHJlZ2V4cDQuZXhl
YygndGVzdCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwNC5leGVjKCdibGFoJykgaXMgWydibGFoJ10K
K1BBU1MgcmVnZXhwNC5leGVjKCcxYmxhaCcpIGlzIFsnMWJsYWgnXQorUEFTUyByZWdleHA0LmV4
ZWMoJ2JsYWgxJykgaXMgWydibGFoMSddCitQQVNTIHJlZ2V4cDQuZXhlYygnYmxhaCBibGFoIGJs
YWgnKSBpcyBbJ2JsYWggYmxhaCBibGFoJ10KK1BBU1MgcmVnZXhwNC5leGVjKCdibGFoXG5zZWNv
bmQnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDQuZXhlYygnZmlyc3RcbmJsYWgnKSBpcyBudWxsCitQ
QVNTIHJlZ2V4cDQuZXhlYygnZmlyc3RcbmJsYWhcbnRoaXJkJykgaXMgbnVsbAorUEFTUyByZWdl
eHA0LmV4ZWMoJ2ZpcnN0XG5ibGFoMlxuYmxhaDMnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDUuZXhl
YygndGVzdCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwNS5leGVjKCdibGFoJykgaXMgWydibGFoJ10K
K1BBU1MgcmVnZXhwNS5leGVjKCcxYmxhaCcpIGlzIFsnMWJsYWgnXQorUEFTUyByZWdleHA1LmV4
ZWMoJ2JsYWgxJykgaXMgWydibGFoMSddCitQQVNTIHJlZ2V4cDUuZXhlYygnYmxhaCBibGFoIGJs
YWgnKSBpcyBbJ2JsYWggYmxhaCBibGFoJ10KK1BBU1MgcmVnZXhwNS5leGVjKCdibGFoXG5zZWNv
bmQnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHA1LmV4ZWMoJ2ZpcnN0XG5ibGFoJykgaXMgWydi
bGFoJ10KK1BBU1MgcmVnZXhwNS5leGVjKCdmaXJzdFxuYmxhaFxudGhpcmQnKSBpcyBbJ2JsYWgn
XQorUEFTUyByZWdleHA1LmV4ZWMoJ2ZpcnN0XG5ibGFoMlxuYmxhaDMnKSBpcyBbJ2JsYWgyJ10K
K1BBU1MgcmVnZXhwNi5leGVjKCd0ZXN0JykgaXMgbnVsbAorUEFTUyByZWdleHA2LmV4ZWMoJ2Js
YWgnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHA2LmV4ZWMoJzFibGFoJykgaXMgWycxYmxhaCdd
CitQQVNTIHJlZ2V4cDYuZXhlYygnYmxhaDEnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHA2LmV4
ZWMoJ2JsYWggYmxhaCBibGFoJykgaXMgWydibGFoIGJsYWggYmxhaCddCitQQVNTIHJlZ2V4cDYu
ZXhlYygnYmxhaFxuc2Vjb25kJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwNi5leGVjKCdmaXJz
dFxuYmxhaCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4cDYuZXhlYygnZmlyc3RcbmJsYWhcbnRo
aXJkJykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwNi5leGVjKCdmaXJzdFxuYmxhaDJcbmJsYWgz
JykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwNy5leGVjKCd0ZXN0JykgaXMgbnVsbAorUEFTUyBy
ZWdleHA3LmV4ZWMoJ2JsYWgnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHA3LmV4ZWMoJzFibGFo
JykgaXMgWycxYmxhaCddCitQQVNTIHJlZ2V4cDcuZXhlYygnYmxhaDEnKSBpcyBbJ2JsYWgxJ10K
K1BBU1MgcmVnZXhwNy5leGVjKCdibGFoIGJsYWggYmxhaCcpIGlzIFsnYmxhaCBibGFoIGJsYWgn
XQorUEFTUyByZWdleHA3LmV4ZWMoJ2JsYWhcbnNlY29uZCcpIGlzIG51bGwKK1BBU1MgcmVnZXhw
Ny5leGVjKCdmaXJzdFxuYmxhaCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwNy5leGVjKCdmaXJzdFxu
YmxhaFxudGhpcmQnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDcuZXhlYygnZmlyc3RcbmJsYWgyXG5i
bGFoMycpIGlzIG51bGwKK1BBU1MgcmVnZXhwOC5leGVjKCd0ZXN0JykgaXMgbnVsbAorUEFTUyBy
ZWdleHA4LmV4ZWMoJ2JsYWgnKSBpcyBbJ2JsYWgnLCcnXQorUEFTUyByZWdleHA4LmV4ZWMoJzFi
bGFoJykgaXMgWycxYmxhaCcsJzEnXQorUEFTUyByZWdleHA4LmV4ZWMoJ2JsYWgxJykgaXMgWydi
bGFoMScsJyddCitQQVNTIHJlZ2V4cDguZXhlYygnYmxhaCBibGFoIGJsYWgnKSBpcyBbJ2JsYWgg
YmxhaCBibGFoJywnYmxhaCBibGFoICddCitQQVNTIHJlZ2V4cDguZXhlYygnYmxhaFxuc2Vjb25k
JykgaXMgbnVsbAorUEFTUyByZWdleHA4LmV4ZWMoJ2ZpcnN0XG5ibGFoJykgaXMgbnVsbAorUEFT
UyByZWdleHA4LmV4ZWMoJ2ZpcnN0XG5ibGFoXG50aGlyZCcpIGlzIG51bGwKK1BBU1MgcmVnZXhw
OC5leGVjKCdmaXJzdFxuYmxhaDJcbmJsYWgzJykgaXMgbnVsbAorUEFTUyByZWdleHA5LmV4ZWMo
J3Rlc3QnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDkuZXhlYygnYmxhaCcpIGlzIFsnYmxhaCddCitQ
QVNTIHJlZ2V4cDkuZXhlYygnMWJsYWgnKSBpcyBbJzFibGFoJ10KK1BBU1MgcmVnZXhwOS5leGVj
KCdibGFoMScpIGlzIFsnYmxhaDEnXQorUEFTUyByZWdleHA5LmV4ZWMoJ2JsYWggYmxhaCBibGFo
JykgaXMgWydibGFoIGJsYWggYmxhaCddCitQQVNTIHJlZ2V4cDkuZXhlYygnYmxhaFxuc2Vjb25k
JykgaXMgWydibGFoJ10KK1BBU1MgcmVnZXhwOS5leGVjKCdmaXJzdFxuYmxhaCcpIGlzIFsnYmxh
aCddCitQQVNTIHJlZ2V4cDkuZXhlYygnZmlyc3RcbmJsYWhcbnRoaXJkJykgaXMgWydibGFoJ10K
K1BBU1MgcmVnZXhwOS5leGVjKCdmaXJzdFxuYmxhaDJcbmJsYWgzJykgaXMgWydibGFoMiddCitQ
QVNTIHJlZ2V4cDEwLmV4ZWMoJ3Rlc3QnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDEwLmV4ZWMoJ2Js
YWgnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHAxMC5leGVjKCcxYmxhaCcpIGlzIFsnMWJsYWgn
XQorUEFTUyByZWdleHAxMC5leGVjKCdibGFoMScpIGlzIFsnYmxhaDEnXQorUEFTUyByZWdleHAx
MC5leGVjKCdibGFoIGJsYWggYmxhaCcpIGlzIFsnYmxhaCBibGFoIGJsYWgnXQorUEFTUyByZWdl
eHAxMC5leGVjKCdibGFoXG5zZWNvbmQnKSBpcyBbJ2JsYWgnXQorUEFTUyByZWdleHAxMC5leGVj
KCdmaXJzdFxuYmxhaCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4cDEwLmV4ZWMoJ2ZpcnN0XG5i
bGFoXG50aGlyZCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4cDEwLmV4ZWMoJ2ZpcnN0XG5ibGFo
MlxuYmxhaDMnKSBpcyBbJ2JsYWgyJ10KK1BBU1MgcmVnZXhwMTEuZXhlYygndGVzdCcpIGlzIG51
bGwKK1BBU1MgcmVnZXhwMTEuZXhlYygnYmxhaCcpIGlzIFsnYmxhaCddCitQQVNTIHJlZ2V4cDEx
LmV4ZWMoJzFibGFoJykgaXMgWycxYmxhaCddCitQQVNTIHJlZ2V4cDExLmV4ZWMoJ2JsYWgxJykg
aXMgWydibGFoMSddCitQQVNTIHJlZ2V4cDExLmV4ZWMoJ2JsYWggYmxhaCBibGFoJykgaXMgWydi
bGFoIGJsYWggYmxhaCddCitQQVNTIHJlZ2V4cDExLmV4ZWMoJ2JsYWhcbnNlY29uZCcpIGlzIG51
bGwKK1BBU1MgcmVnZXhwMTEuZXhlYygnZmlyc3RcbmJsYWgnKSBpcyBbJ2JsYWgnXQorUEFTUyBy
ZWdleHAxMS5leGVjKCdmaXJzdFxuYmxhaFxudGhpcmQnKSBpcyBudWxsCitQQVNTIHJlZ2V4cDEx
LmV4ZWMoJ2ZpcnN0XG5ibGFoMlxuYmxhaDMnKSBpcyBbJ2JsYWgzJ10KK1BBU1MgcmVnZXhwMTIu
ZXhlYygndGVzdCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwMTIuZXhlYygnYmxhaCcpIGlzIFsnYmxh
aCddCitQQVNTIHJlZ2V4cDEyLmV4ZWMoJzFibGFoJykgaXMgWycxYmxhaCddCitQQVNTIHJlZ2V4
cDEyLmV4ZWMoJ2JsYWgxJykgaXMgWydibGFoMSddCitQQVNTIHJlZ2V4cDEyLmV4ZWMoJ2JsYWgg
YmxhaCBibGFoJykgaXMgWydibGFoIGJsYWggYmxhaCddCitQQVNTIHJlZ2V4cDEyLmV4ZWMoJ2Js
YWhcbnNlY29uZCcpIGlzIG51bGwKK1BBU1MgcmVnZXhwMTIuZXhlYygnZmlyc3RcbmJsYWgnKSBp
cyBbJ2JsYWgnXQorUEFTUyByZWdleHAxMi5leGVjKCdmaXJzdFxuYmxhaFxudGhpcmQnKSBpcyBu
dWxsCitQQVNTIHJlZ2V4cDEyLmV4ZWMoJ2ZpcnN0XG5ibGFoMlxuYmxhaDMnKSBpcyBbJ2JsYWgz
J10KK1BBU1MgcmVnZXhwMTMuZXhlYygnYWJjXG4xMjMnKSBpcyBbJ2FiY1xuMTIzJ10KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3JlZ2V4L2RvdHN0YXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3JlZ2V4L2RvdHN0YXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvcmVnZXgvZG90c3Rhci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2RvdHN0YXIu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9y
ZWdleC9zY3JpcHQtdGVzdHMvZG90c3Rhci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3JlZ2V4L3NjcmlwdC10ZXN0cy9kb3RzdGFyLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9yZWdleC9zY3JpcHQtdGVzdHMvZG90c3Rhci5qcwkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMzkgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHBhZ2UgdGVzdHMgaGFuZGxpbmcgb2Yg
cGFyZW50aGVzZXMgc3ViZXhwcmVzc2lvbnMuIik7CisKK3ZhciByZWdleHAxID0gLy4qYmxhaC4q
LzsKK3Nob3VsZEJlTnVsbCgicmVnZXhwMS5leGVjKCd0ZXN0JykiKTsKK3Nob3VsZEJlKCJyZWdl
eHAxLmV4ZWMoJ2JsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEuZXhlYygn
MWJsYWgnKSIsICJbJzFibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAxLmV4ZWMoJ2JsYWgxJyki
LCAiWydibGFoMSddIik7CitzaG91bGRCZSgicmVnZXhwMS5leGVjKCdibGFoIGJsYWggYmxhaCcp
IiwgIlsnYmxhaCBibGFoIGJsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEuZXhlYygnYmxhaFxc
bnNlY29uZCcpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwMS5leGVjKCdmaXJzdFxc
bmJsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEuZXhlYygnZmlyc3RcXG5i
bGFoXFxudGhpcmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEuZXhlYygnZmly
c3RcXG5ibGFoMlxcbmJsYWgzJykiLCAiWydibGFoMiddIik7CisKK3ZhciByZWdleHAyID0gL14u
KmJsYWguKi87CitzaG91bGRCZU51bGwoInJlZ2V4cDIuZXhlYygndGVzdCcpIik7CitzaG91bGRC
ZSgicmVnZXhwMi5leGVjKCdibGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAy
LmV4ZWMoJzFibGFoJykiLCAiWycxYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwMi5leGVjKCdi
bGFoMScpIiwgIlsnYmxhaDEnXSIpOworc2hvdWxkQmUoInJlZ2V4cDIuZXhlYygnYmxhaCBibGFo
IGJsYWgnKSIsICJbJ2JsYWggYmxhaCBibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAyLmV4ZWMo
J2JsYWhcXG5zZWNvbmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHAyLmV4
ZWMoJ2ZpcnN0XFxuYmxhaCcpIik7CitzaG91bGRCZU51bGwoInJlZ2V4cDIuZXhlYygnZmlyc3Rc
XG5ibGFoXFxudGhpcmQnKSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHAyLmV4ZWMoJ2ZpcnN0XFxu
YmxhaDJcXG5ibGFoMycpIik7CisKK3ZhciByZWdleHAzID0gLy4qYmxhaC4qJC87CitzaG91bGRC
ZU51bGwoInJlZ2V4cDMuZXhlYygndGVzdCcpIik7CitzaG91bGRCZSgicmVnZXhwMy5leGVjKCdi
bGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAzLmV4ZWMoJzFibGFoJykiLCAi
WycxYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwMy5leGVjKCdibGFoMScpIiwgIlsnYmxhaDEn
XSIpOworc2hvdWxkQmUoInJlZ2V4cDMuZXhlYygnYmxhaCBibGFoIGJsYWgnKSIsICJbJ2JsYWgg
YmxhaCBibGFoJ10iKTsKK3Nob3VsZEJlTnVsbCgicmVnZXhwMy5leGVjKCdibGFoXFxuc2Vjb25k
JykiKTsKK3Nob3VsZEJlKCJyZWdleHAzLmV4ZWMoJ2ZpcnN0XFxuYmxhaCcpIiwgIlsnYmxhaCdd
Iik7CitzaG91bGRCZU51bGwoInJlZ2V4cDMuZXhlYygnZmlyc3RcXG5ibGFoXFxudGhpcmQnKSIp
Oworc2hvdWxkQmUoInJlZ2V4cDMuZXhlYygnZmlyc3RcXG5ibGFoMlxcbmJsYWgzJykiLCAiWydi
bGFoMyddIik7CisKK3ZhciByZWdleHA0ID0gL14uKmJsYWguKiQvOworc2hvdWxkQmVOdWxsKCJy
ZWdleHA0LmV4ZWMoJ3Rlc3QnKSIpOworc2hvdWxkQmUoInJlZ2V4cDQuZXhlYygnYmxhaCcpIiwg
IlsnYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwNC5leGVjKCcxYmxhaCcpIiwgIlsnMWJsYWgn
XSIpOworc2hvdWxkQmUoInJlZ2V4cDQuZXhlYygnYmxhaDEnKSIsICJbJ2JsYWgxJ10iKTsKK3No
b3VsZEJlKCJyZWdleHA0LmV4ZWMoJ2JsYWggYmxhaCBibGFoJykiLCAiWydibGFoIGJsYWggYmxh
aCddIik7CitzaG91bGRCZU51bGwoInJlZ2V4cDQuZXhlYygnYmxhaFxcbnNlY29uZCcpIik7Citz
aG91bGRCZU51bGwoInJlZ2V4cDQuZXhlYygnZmlyc3RcXG5ibGFoJykiKTsKK3Nob3VsZEJlTnVs
bCgicmVnZXhwNC5leGVjKCdmaXJzdFxcbmJsYWhcXG50aGlyZCcpIik7CitzaG91bGRCZU51bGwo
InJlZ2V4cDQuZXhlYygnZmlyc3RcXG5ibGFoMlxcbmJsYWgzJykiKTsKKwordmFyIHJlZ2V4cDUg
PSAvLio/YmxhaC4qLzsKK3Nob3VsZEJlTnVsbCgicmVnZXhwNS5leGVjKCd0ZXN0JykiKTsKK3No
b3VsZEJlKCJyZWdleHA1LmV4ZWMoJ2JsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJl
Z2V4cDUuZXhlYygnMWJsYWgnKSIsICJbJzFibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA1LmV4
ZWMoJ2JsYWgxJykiLCAiWydibGFoMSddIik7CitzaG91bGRCZSgicmVnZXhwNS5leGVjKCdibGFo
IGJsYWggYmxhaCcpIiwgIlsnYmxhaCBibGFoIGJsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDUu
ZXhlYygnYmxhaFxcbnNlY29uZCcpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwNS5l
eGVjKCdmaXJzdFxcbmJsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDUuZXhl
YygnZmlyc3RcXG5ibGFoXFxudGhpcmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4
cDUuZXhlYygnZmlyc3RcXG5ibGFoMlxcbmJsYWgzJykiLCAiWydibGFoMiddIik7CisKK3ZhciBy
ZWdleHA2ID0gLy4qYmxhaC4qPy87CitzaG91bGRCZU51bGwoInJlZ2V4cDYuZXhlYygndGVzdCcp
Iik7CitzaG91bGRCZSgicmVnZXhwNi5leGVjKCdibGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3Vs
ZEJlKCJyZWdleHA2LmV4ZWMoJzFibGFoJykiLCAiWycxYmxhaCddIik7CitzaG91bGRCZSgicmVn
ZXhwNi5leGVjKCdibGFoMScpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwNi5leGVj
KCdibGFoIGJsYWggYmxhaCcpIiwgIlsnYmxhaCBibGFoIGJsYWgnXSIpOworc2hvdWxkQmUoInJl
Z2V4cDYuZXhlYygnYmxhaFxcbnNlY29uZCcpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgicmVn
ZXhwNi5leGVjKCdmaXJzdFxcbmJsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4
cDYuZXhlYygnZmlyc3RcXG5ibGFoXFxudGhpcmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUo
InJlZ2V4cDYuZXhlYygnZmlyc3RcXG5ibGFoMlxcbmJsYWgzJykiLCAiWydibGFoJ10iKTsKKwor
dmFyIHJlZ2V4cDcgPSAvXi4qP2JsYWguKj8kLzsKK3Nob3VsZEJlTnVsbCgicmVnZXhwNy5leGVj
KCd0ZXN0JykiKTsKK3Nob3VsZEJlKCJyZWdleHA3LmV4ZWMoJ2JsYWgnKSIsICJbJ2JsYWgnXSIp
Oworc2hvdWxkQmUoInJlZ2V4cDcuZXhlYygnMWJsYWgnKSIsICJbJzFibGFoJ10iKTsKK3Nob3Vs
ZEJlKCJyZWdleHA3LmV4ZWMoJ2JsYWgxJykiLCAiWydibGFoMSddIik7CitzaG91bGRCZSgicmVn
ZXhwNy5leGVjKCdibGFoIGJsYWggYmxhaCcpIiwgIlsnYmxhaCBibGFoIGJsYWgnXSIpOworc2hv
dWxkQmVOdWxsKCJyZWdleHA3LmV4ZWMoJ2JsYWhcXG5zZWNvbmQnKSIpOworc2hvdWxkQmVOdWxs
KCJyZWdleHA3LmV4ZWMoJ2ZpcnN0XFxuYmxhaCcpIik7CitzaG91bGRCZU51bGwoInJlZ2V4cDcu
ZXhlYygnZmlyc3RcXG5ibGFoXFxudGhpcmQnKSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHA3LmV4
ZWMoJ2ZpcnN0XFxuYmxhaDJcXG5ibGFoMycpIik7CisKK3ZhciByZWdleHA4ID0gL14oLiopYmxh
aC4qJC87CitzaG91bGRCZU51bGwoInJlZ2V4cDguZXhlYygndGVzdCcpIik7CitzaG91bGRCZSgi
cmVnZXhwOC5leGVjKCdibGFoJykiLCAiWydibGFoJywnJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA4
LmV4ZWMoJzFibGFoJykiLCAiWycxYmxhaCcsJzEnXSIpOworc2hvdWxkQmUoInJlZ2V4cDguZXhl
YygnYmxhaDEnKSIsICJbJ2JsYWgxJywnJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA4LmV4ZWMoJ2Js
YWggYmxhaCBibGFoJykiLCAiWydibGFoIGJsYWggYmxhaCcsJ2JsYWggYmxhaCAnXSIpOworc2hv
dWxkQmVOdWxsKCJyZWdleHA4LmV4ZWMoJ2JsYWhcXG5zZWNvbmQnKSIpOworc2hvdWxkQmVOdWxs
KCJyZWdleHA4LmV4ZWMoJ2ZpcnN0XFxuYmxhaCcpIik7CitzaG91bGRCZU51bGwoInJlZ2V4cDgu
ZXhlYygnZmlyc3RcXG5ibGFoXFxudGhpcmQnKSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHA4LmV4
ZWMoJ2ZpcnN0XFxuYmxhaDJcXG5ibGFoMycpIik7CisKK3ZhciByZWdleHA5ID0gLy4qYmxhaC4q
L207CitzaG91bGRCZU51bGwoInJlZ2V4cDkuZXhlYygndGVzdCcpIik7CitzaG91bGRCZSgicmVn
ZXhwOS5leGVjKCdibGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA5LmV4ZWMo
JzFibGFoJykiLCAiWycxYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwOS5leGVjKCdibGFoMScp
IiwgIlsnYmxhaDEnXSIpOworc2hvdWxkQmUoInJlZ2V4cDkuZXhlYygnYmxhaCBibGFoIGJsYWgn
KSIsICJbJ2JsYWggYmxhaCBibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA5LmV4ZWMoJ2JsYWhc
XG5zZWNvbmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDkuZXhlYygnZmlyc3Rc
XG5ibGFoJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA5LmV4ZWMoJ2ZpcnN0XFxu
YmxhaFxcbnRoaXJkJykiLCAiWydibGFoJ10iKTsKK3Nob3VsZEJlKCJyZWdleHA5LmV4ZWMoJ2Zp
cnN0XFxuYmxhaDJcXG5ibGFoMycpIiwgIlsnYmxhaDInXSIpOworCit2YXIgcmVnZXhwMTAgPSAv
Xi4qYmxhaC4qL207CitzaG91bGRCZU51bGwoInJlZ2V4cDEwLmV4ZWMoJ3Rlc3QnKSIpOworc2hv
dWxkQmUoInJlZ2V4cDEwLmV4ZWMoJ2JsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJl
Z2V4cDEwLmV4ZWMoJzFibGFoJykiLCAiWycxYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwMTAu
ZXhlYygnYmxhaDEnKSIsICJbJ2JsYWgxJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAxMC5leGVjKCdi
bGFoIGJsYWggYmxhaCcpIiwgIlsnYmxhaCBibGFoIGJsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4
cDEwLmV4ZWMoJ2JsYWhcXG5zZWNvbmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4
cDEwLmV4ZWMoJ2ZpcnN0XFxuYmxhaCcpIiwgIlsnYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhw
MTAuZXhlYygnZmlyc3RcXG5ibGFoXFxudGhpcmQnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUo
InJlZ2V4cDEwLmV4ZWMoJ2ZpcnN0XFxuYmxhaDJcXG5ibGFoMycpIiwgIlsnYmxhaDInXSIpOwor
Cit2YXIgcmVnZXhwMTEgPSAvLiooPzpibGFoKS4qJC87CitzaG91bGRCZU51bGwoInJlZ2V4cDEx
LmV4ZWMoJ3Rlc3QnKSIpOworc2hvdWxkQmUoInJlZ2V4cDExLmV4ZWMoJ2JsYWgnKSIsICJbJ2Js
YWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDExLmV4ZWMoJzFibGFoJykiLCAiWycxYmxhaCddIik7
CitzaG91bGRCZSgicmVnZXhwMTEuZXhlYygnYmxhaDEnKSIsICJbJ2JsYWgxJ10iKTsKK3Nob3Vs
ZEJlKCJyZWdleHAxMS5leGVjKCdibGFoIGJsYWggYmxhaCcpIiwgIlsnYmxhaCBibGFoIGJsYWgn
XSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHAxMS5leGVjKCdibGFoXFxuc2Vjb25kJykiKTsKK3No
b3VsZEJlKCJyZWdleHAxMS5leGVjKCdmaXJzdFxcbmJsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hv
dWxkQmVOdWxsKCJyZWdleHAxMS5leGVjKCdmaXJzdFxcbmJsYWhcXG50aGlyZCcpIik7CitzaG91
bGRCZSgicmVnZXhwMTEuZXhlYygnZmlyc3RcXG5ibGFoMlxcbmJsYWgzJykiLCAiWydibGFoMydd
Iik7CisKK3ZhciByZWdleHAxMiA9IC8uKig/OmJsYWh8YnV6enxiYW5nKS4qJC87CitzaG91bGRC
ZU51bGwoInJlZ2V4cDEyLmV4ZWMoJ3Rlc3QnKSIpOworc2hvdWxkQmUoInJlZ2V4cDEyLmV4ZWMo
J2JsYWgnKSIsICJbJ2JsYWgnXSIpOworc2hvdWxkQmUoInJlZ2V4cDEyLmV4ZWMoJzFibGFoJyki
LCAiWycxYmxhaCddIik7CitzaG91bGRCZSgicmVnZXhwMTIuZXhlYygnYmxhaDEnKSIsICJbJ2Js
YWgxJ10iKTsKK3Nob3VsZEJlKCJyZWdleHAxMi5leGVjKCdibGFoIGJsYWggYmxhaCcpIiwgIlsn
YmxhaCBibGFoIGJsYWgnXSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHAxMi5leGVjKCdibGFoXFxu
c2Vjb25kJykiKTsKK3Nob3VsZEJlKCJyZWdleHAxMi5leGVjKCdmaXJzdFxcbmJsYWgnKSIsICJb
J2JsYWgnXSIpOworc2hvdWxkQmVOdWxsKCJyZWdleHAxMi5leGVjKCdmaXJzdFxcbmJsYWhcXG50
aGlyZCcpIik7CitzaG91bGRCZSgicmVnZXhwMTIuZXhlYygnZmlyc3RcXG5ibGFoMlxcbmJsYWgz
JykiLCAiWydibGFoMyddIik7CisKK3ZhciByZWdleHAxMyA9IC8uKlxuXGQrLiovOworc2hvdWxk
QmUoInJlZ2V4cDEzLmV4ZWMoJ2FiY1xcbjEyMycpIiwgIlsnYWJjXFxuMTIzJ10iKTsKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisK
</data>
<flag name="review"
          id="95405"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>