<?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>203936</bug_id>
          
          <creation_ts>2019-11-06 18:15:02 -0800</creation_ts>
          <short_desc>Add a stack overflow check in Yarr::ByteCompiler::emitDisjunction().</short_desc>
          <delta_ts>2019-11-08 20:09:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1588043</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-06 18:15:02 -0800</bug_when>
    <thetext>&lt;rdar://problem/56624724&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588047</commentid>
    <comment_count>1</comment_count>
      <attachid>382998</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-06 18:20:23 -0800</bug_when>
    <thetext>Created attachment 382998
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588052</commentid>
    <comment_count>2</comment_count>
      <attachid>382998</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-11-06 18:25:52 -0800</bug_when>
    <thetext>Comment on attachment 382998
proposed patch.

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +

can you add a test that fails on x86 by making the stack limit small?
(Also worth noting that we already have an instance of this failing elsewhere too)

&gt; Source/JavaScriptCore/yarr/YarrInterpreter.cpp:2416
&gt; +    inline bool isSafeToRecurse() { return currentStackPointer() &gt;= m_stackLimit; }

please ASSERT(Thread::current().stack().isGrowingDownward());

or maybe turn VM&apos;s isSafeToRecurse into a static public function and call that. (Or abstract it in WTF somewhere)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588055</commentid>
    <comment_count>3</comment_count>
      <attachid>382998</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-11-06 18:26:50 -0800</bug_when>
    <thetext>Comment on attachment 382998
proposed patch.

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

&gt; Source/JavaScriptCore/yarr/YarrInterpreter.cpp:2036
&gt; +        if (UNLIKELY(!isSafeToRecurse()))

does this need to be done elsewhere in the regex compiler?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588135</commentid>
    <comment_count>4</comment_count>
      <attachid>383027</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-07 00:30:28 -0800</bug_when>
    <thetext>Created attachment 383027
work in progress for EWS testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588136</commentid>
    <comment_count>5</comment_count>
      <attachid>383028</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-07 00:32:55 -0800</bug_when>
    <thetext>Created attachment 383028
work in progress for EWS testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588140</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-07 01:10:29 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #2)
&gt; &gt; Source/JavaScriptCore/ChangeLog:8
&gt; &gt; +
&gt; 
&gt; can you add a test that fails on x86 by making the stack limit small?
&gt; (Also worth noting that we already have an instance of this failing
&gt; elsewhere too)

In order to do this, I&apos;ll need to add a utility to (1) exhaust physical stack space quickly, and (2) make the VM think it&apos;s working with stack limits near the physical edge of the stack.  I&apos;ll see what I can do.

&gt; &gt; Source/JavaScriptCore/yarr/YarrInterpreter.cpp:2416
&gt; &gt; +    inline bool isSafeToRecurse() { return currentStackPointer() &gt;= m_stackLimit; }
&gt; 
&gt; please ASSERT(Thread::current().stack().isGrowingDownward());

I&apos;ve removed isGrowingDownward() as a public method in r252177.  This is now moot.

&gt; or maybe turn VM&apos;s isSafeToRecurse into a static public function and call
&gt; that. (Or abstract it in WTF somewhere)

I&apos;ve created a WTF::StackCheck class because I anticipate we&apos;ll want to reuse this same logic elsewhere.  It does have slightly different behavior than the VM one.  Some special properties of the VM stack checks include:
1. artificially limiting the useable stack size to a potentially smaller limit than that which is provided by the physical stack.
2. having 2 separate limits: a soft limit (with some extra space reserved to handle a JS StackOverflow error) and a hard limit.

There&apos;s a chance the VM one can be refactored to work on top of the WTF::StackCheck class, but I don&apos;t think it&apos;s worth the effort for now.  So, I&apos;m leaving the VM one alone for now.

(In reply to Saam Barati from comment #3)
&gt; Comment on attachment 382998 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=382998&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/yarr/YarrInterpreter.cpp:2036
&gt; &gt; +        if (UNLIKELY(!isSafeToRecurse()))
&gt; 
&gt; does this need to be done elsewhere in the regex compiler?

The entry to ByteCompiler is via its compile() function.  I&apos;ve added a stack check there.  The only other place we need this is in emitDisjunction(), which appears to be the only recursive method called from compile().  All other methods appear to be leaf methods, or may call a few functions (with shallow-ish stack usage) but will not recurse.

I&apos;ll leave the analysis of RegExp functions / methods outside of ByteCompiler as a separate exercise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588141</commentid>
    <comment_count>7</comment_count>
      <attachid>383029</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-07 01:17:48 -0800</bug_when>
    <thetext>Created attachment 383029
work in progress for EWS testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588520</commentid>
    <comment_count>8</comment_count>
      <attachid>383097</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-07 17:34:32 -0800</bug_when>
    <thetext>Created attachment 383097
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588531</commentid>
    <comment_count>9</comment_count>
      <attachid>383097</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-11-07 18:14:19 -0800</bug_when>
    <thetext>Comment on attachment 383097
proposed patch.

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

&gt; JSTests/stress/stack-overflow-in-yarr-byteCompile.js:1
&gt; +//@ requireOptions(&quot;&quot;--disableOptionsFreezingForTesting&quot;&quot;)

should be one quote

&gt; Source/JavaScriptCore/tools/JSDollarVM.cpp:2046
&gt; +    JSFunction* function = bitwise_cast&lt;JSFunction*&gt;(arg0.toObject(globalObject));

jsCast

&gt; Source/JavaScriptCore/tools/JSDollarVM.cpp:2047
&gt; +    size_t desiredStackSize = arg1.toNumber(globalObject);

this should be calling .asNumber()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588572</commentid>
    <comment_count>10</comment_count>
      <attachid>383097</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-07 22:03:52 -0800</bug_when>
    <thetext>Comment on attachment 383097
proposed patch.

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

Thanks for the review.

&gt; Source/JavaScriptCore/runtime/VM.cpp:-884
&gt; -inline void VM::updateStackLimits()

I&apos;ve opted to undo this because: 1. VM::updateStackLimits() isn&apos;t in a perf critical path anyway, and we rarely call it, 2. putting it in VMInlines.h has other complications (that caused a lot of the red EWS bots).  While the build breakage is fixable, it&apos;s not worth doing.  I can get the functionality I need simply my making it not an inline function.  I&apos;ll apply that change in the patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588576</commentid>
    <comment_count>11</comment_count>
      <attachid>383111</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-07 22:21:55 -0800</bug_when>
    <thetext>Created attachment 383111
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588580</commentid>
    <comment_count>12</comment_count>
      <attachid>383114</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-07 23:00:37 -0800</bug_when>
    <thetext>Created attachment 383114
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588656</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-08 08:59:34 -0800</bug_when>
    <thetext>Landed in r252239: &lt;http://trac.webkit.org/r252239&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588964</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-08 20:09:47 -0800</bug_when>
    <thetext>Committed r252304: &lt;https://trac.webkit.org/changeset/252304&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382998</attachid>
            <date>2019-11-06 18:20:23 -0800</date>
            <delta_ts>2019-11-07 17:34:32 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-203936.patch</filename>
            <type>text/plain</type>
            <size>2811</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUyMTY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDE5LTExLTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgYSBzdGFjayBvdmVyZmxvdyBjaGVjayBpbiBZYXJyOjpCeXRlQ29tcGlsZXI6OmVtaXREaXNq
dW5jdGlvbigpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAzOTM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjYyNDcyND4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHlhcnIvWWFyckludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjpCeXRlQ29tcGlsZXIp
OgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmVtaXREaXNqdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6aXNTYWZlVG9SZWN1cnNlKToKKwogMjAx
OS0xMS0wNiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2ViQXNzZW1ibHldIEJCUVBsYW4gc2hvdWxkIHJldGFpbiBXYXNtOjpDb2RlQmxvY2sgd2hlbiBj
b21waWxpbmcgYSBzaW5nbGUgZnVuY3Rpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjUyMTY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIllhcnJJbnRl
cnByZXRlci5oIgogCisjaW5jbHVkZSAiTWluaW11bVJlc2VydmVkWm9uZVNpemUuaCIKICNpbmNs
dWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCiAjaW5jbHVkZSAiWWFy
ci5oIgpAQCAtMzQsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRv
ci5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9E
YXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMTY5MCw2
ICsxNjkyLDkgQEAgcHVibGljOgogICAgIEJ5dGVDb21waWxlcihZYXJyUGF0dGVybiYgcGF0dGVy
bikKICAgICAgICAgOiBtX3BhdHRlcm4ocGF0dGVybikKICAgICB7CisgICAgICAgIGNvbnN0IFN0
YWNrQm91bmRzJiBzdGFjayA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHN0YWNrLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgICAgICBtX3N0YWNr
TGltaXQgPSBzdGFjay5yZWN1cnNpb25MaW1pdChtaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZSk7CiAg
ICAgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlUGF0dGVybj4gY29tcGlsZShCdW1w
UG9pbnRlckFsbG9jYXRvciogYWxsb2NhdG9yLCBDb25jdXJyZW50SlNMb2NrKiBsb2NrLCBFcnJv
ckNvZGUmIGVycm9yQ29kZSkKQEAgLTIwMjgsNiArMjAzMyw5IEBAIHB1YmxpYzoKIAogICAgIE9w
dGlvbmFsPEVycm9yQ29kZT4gV0FSTl9VTlVTRURfUkVUVVJOIGVtaXREaXNqdW5jdGlvbihQYXR0
ZXJuRGlzanVuY3Rpb24qIGRpc2p1bmN0aW9uLCBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVy
Zmxvdz4gaW5wdXRDb3VudEFscmVhZHlDaGVja2VkLCB1bnNpZ25lZCBwYXJlbnRoZXNlc0lucHV0
Q291bnRBbHJlYWR5Q2hlY2tlZCkKICAgICB7CisgICAgICAgIGlmIChVTkxJS0VMWSghaXNTYWZl
VG9SZWN1cnNlKCkpKQorICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZTo6VG9vTWFueURpc2p1
bmN0aW9uczsKKwogICAgICAgICBmb3IgKHVuc2lnbmVkIGFsdCA9IDA7IGFsdCA8IGRpc2p1bmN0
aW9uLT5tX2FsdGVybmF0aXZlcy5zaXplKCk7ICsrYWx0KSB7CiAgICAgICAgICAgICBhdXRvIGN1
cnJlbnRDb3VudEFscmVhZHlDaGVja2VkID0gaW5wdXRDb3VudEFscmVhZHlDaGVja2VkOwogCkBA
IC0yNDA1LDggKzI0MTMsMTEgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisgICAgaW5s
aW5lIGJvb2wgaXNTYWZlVG9SZWN1cnNlKCkgeyByZXR1cm4gY3VycmVudFN0YWNrUG9pbnRlcigp
ID49IG1fc3RhY2tMaW1pdDsgfQorCiAgICAgWWFyclBhdHRlcm4mIG1fcGF0dGVybjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZURpc2p1bmN0aW9uPiBtX2JvZHlEaXNqdW5jdGlvbjsKKyAgICB2
b2lkKiBtX3N0YWNrTGltaXQ7CiAgICAgdW5zaWduZWQgbV9jdXJyZW50QWx0ZXJuYXRpdmVJbmRl
eCB7IDAgfTsKICAgICBWZWN0b3I8UGFyZW50aGVzZXNTdGFja0VudHJ5PiBtX3BhcmVudGhlc2Vz
U3RhY2s7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rpb24+PiBtX2Fs
bFBhcmVudGhlc2VzSW5mbzsK
</data>
<flag name="review"
          id="398756"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383027</attachid>
            <date>2019-11-07 00:30:28 -0800</date>
            <delta_ts>2019-11-07 00:31:10 -0800</delta_ts>
            <desc>work in progress for EWS testing.</desc>
            <filename>bug-203936b.patch</filename>
            <type>text/plain</type>
            <size>7330</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNw
cAkocmV2aXNpb24gMjUyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFycklu
dGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
PHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrQ2hl
Y2suaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKQEAgLTE2OTAsNiArMTY5MSw4IEBAIHB1YmxpYzoKICAgICBCeXRlQ29t
cGlsZXIoWWFyclBhdHRlcm4mIHBhdHRlcm4pCiAgICAgICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4p
CiAgICAgeworICAgICAgICBhdXRvJiBib3VuZHMgPSBUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygp
OworICAgICAgICBkYXRhTG9nTG4oIiAgICBib3VuZHMub3JpZ2luKCkgIiwgUmF3UG9pbnRlcihi
b3VuZHMub3JpZ2luKCkpLCAiIGJvdW5kcy5lbmQoKSAiLCBSYXdQb2ludGVyKGJvdW5kcy5lbmQo
KSksICIgc2l6ZSAiLCBib3VuZHMuc2l6ZSgpLCAiICIsIFJhd1BvaW50ZXIoKHZvaWQqKWJvdW5k
cy5zaXplKCkpKTsKICAgICB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVQYXR0ZXJu
PiBjb21waWxlKEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBhbGxvY2F0b3IsIENvbmN1cnJlbnRKU0xv
Y2sqIGxvY2ssIEVycm9yQ29kZSYgZXJyb3JDb2RlKQpAQCAtMjAyOCw2ICsyMDMxLDkgQEAgcHVi
bGljOgogCiAgICAgT3B0aW9uYWw8RXJyb3JDb2RlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdERp
c2p1bmN0aW9uKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIENoZWNrZWQ8dW5zaWdu
ZWQsIFJlY29yZE92ZXJmbG93PiBpbnB1dENvdW50QWxyZWFkeUNoZWNrZWQsIHVuc2lnbmVkIHBh
cmVudGhlc2VzSW5wdXRDb3VudEFscmVhZHlDaGVja2VkKQogICAgIHsKKyAgICAgICAgaWYgKFVO
TElLRUxZKCFpc1NhZmVUb1JlY3Vyc2UoKSkpCisgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2Rl
OjpUb29NYW55RGlzanVuY3Rpb25zOworCiAgICAgICAgIGZvciAodW5zaWduZWQgYWx0ID0gMDsg
YWx0IDwgZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKTsgKythbHQpIHsKICAgICAg
ICAgICAgIGF1dG8gY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgPSBpbnB1dENvdW50QWxyZWFk
eUNoZWNrZWQ7CiAKQEAgLTI0MDUsOCArMjQxMSwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJp
dmF0ZToKKyAgICBpbmxpbmUgYm9vbCBpc1NhZmVUb1JlY3Vyc2UoKSB7IHJldHVybiBtX3N0YWNr
Q2hlY2suaXNTYWZlVG9SZWN1cnNlKCk7IH0KKwogICAgIFlhcnJQYXR0ZXJuJiBtX3BhdHRlcm47
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVEaXNqdW5jdGlvbj4gbV9ib2R5RGlzanVuY3Rpb247
CisgICAgU3RhY2tDaGVjayBtX3N0YWNrQ2hlY2s7CiAgICAgdW5zaWduZWQgbV9jdXJyZW50QWx0
ZXJuYXRpdmVJbmRleCB7IDAgfTsKICAgICBWZWN0b3I8UGFyZW50aGVzZXNTdGFja0VudHJ5PiBt
X3BhcmVudGhlc2VzU3RhY2s7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVu
Y3Rpb24+PiBtX2FsbFBhcmVudGhlc2VzSW5mbzsKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUyMTc3KQorKysgU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjk0LDYgKzY5NCw3
IEBACiAJCUY3MkJCREIxMDdGQTQyNDg4NjE3OEI5RSAvKiBTeW1ib2xJbXBsLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbEltcGwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTA1RkFFNjFGREIyMTQzMDAwOTMyMzAgLyogRHVtYlB0clRy
YWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1iUHRyVHJhaXRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAv
KiBXVEZBc3NlcnRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdURkFzc2VydGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTFENkQ4
NzIzNzQwMUNEMDA3QTVDMjYgLyogU3RhY2tDaGVjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdGFja0NoZWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
MUUyQzM5MjI0MEMwNTQwMEY2QjcyOSAvKiBQdHJUYWcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUHRyVGFnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkUxRTJDNDEyMjQxODdDNjAwRjZCNzI5IC8qIFBsYXRmb3JtUmVnaXN0ZXJzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtUmVnaXN0ZXJzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODQyMzQyMzI1Q0M4MDAwOURENDQ1IC8q
IFJlc291cmNlVXNhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3Vy
Y2VVc2FnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE1Miw2ICsxMTUzLDcg
QEAKIAkJCQlBOEE0NzMwRDE1MUE4MjVCMDA0MTIzRkYgLyogU3BlY3RydW0uaCAqLywKIAkJCQlB
OEE0NzMwRTE1MUE4MjVCMDA0MTIzRkYgLyogU3RhY2tCb3VuZHMuY3BwICovLAogCQkJCUE4QTQ3
MzBGMTUxQTgyNUIwMDQxMjNGRiAvKiBTdGFja0JvdW5kcy5oICovLAorCQkJCUZFMUQ2RDg3MjM3
NDAxQ0QwMDdBNUMyNiAvKiBTdGFja0NoZWNrLmggKi8sCiAJCQkJRkVFQTRERjgyMTZEN0JFNDAw
QUMwNjAyIC8qIFN0YWNrUG9pbnRlci5jcHAgKi8sCiAJCQkJRkVFQTRERjcyMTZENjA4QzAwQUMw
NjAyIC8qIFN0YWNrUG9pbnRlci5oICovLAogCQkJCTBGOURBQTA0MUZEMUMzN0IwMDc5QzVCMiAv
KiBTdGFja1Nob3QuaCAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0YWNrQm91bmRzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMuaAkocmV2aXNpb24gMjUyMTc3
KQorKysgU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
MTUgKzM0LDE1IEBAIG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBTdGFja0JvdW5kcyB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CiAKICAgICAvLyBUaGlzIDY0ayBudW1i
ZXIgd2FzIHBpY2tlZCBiZWNhdXNlIGEgc2FtcGxpbmcgb2Ygc3RhY2sgdXNhZ2UgZGlmZmVyZW5j
ZXMKICAgICAvLyBiZXR3ZWVuIGNvbnNlY3V0aXZlIGVudHJpZXMgaW50byBvbmUgb2YgdGhlIElu
dGVycHJldGVyOjpleGVjdXRlLi4uKCkKICAgICAvLyBmdW5jdGlvbnMgd2FzIHNlZW4gdG8gYmUg
YXMgaGlnaCBhcyAyN2suIEhlbmNlLCA2NGsgaXMgY2hvc2VuIGFzIGEKICAgICAvLyBjb25zZXJ2
YXRpdmUgYXZhaWxhYmlsaXR5IHZhbHVlIHRoYXQgaXMgbm90IHRvbyBsYXJnZSBidXQgY29tZm9y
dGFibHkKICAgICAvLyBleGNlZWRzIDI3ayB3aXRoIHNvbWUgYnVmZmVyIGZvciBlcnJvci4KLSAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzX2RlZmF1bHRBdmFpbGFiaWxpdHlEZWx0YSA9IDY0
ICogMTAyNDsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBEZWZhdWx0UmVzZXJ2ZWRab25l
ID0gNjQgKiAxMDI0OwogCi1wdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBTdGFja0JvdW5k
cyBlbXB0eUJvdW5kcygpIHsgcmV0dXJuIFN0YWNrQm91bmRzKCk7IH0KIAogI2lmIEhBVkUoU1RB
Q0tfQk9VTkRTX0ZPUl9ORVdfVEhSRUFEKQpAQCAtODIsMTAgKzgyLDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIChtX29yaWdpbiA+PSBwKSAmJiAocCA+IG1fYm91bmQpOwogICAgIH0KIAot
ICAgIHZvaWQqIHJlY3Vyc2lvbkxpbWl0KHNpemVfdCBtaW5BdmFpbGFibGVEZWx0YSA9IHNfZGVm
YXVsdEF2YWlsYWJpbGl0eURlbHRhKSBjb25zdAorICAgIHZvaWQqIHJlY3Vyc2lvbkxpbWl0KHNp
emVfdCBtaW5SZXNlcnZlZFpvbmUgPSBEZWZhdWx0UmVzZXJ2ZWRab25lKSBjb25zdAogICAgIHsK
ICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y2hhcio+KG1fYm91bmQpICsgbWluQXZhaWxhYmxlRGVsdGE7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjaGFyKj4obV9ib3VuZCkgKyBtaW5SZXNlcnZlZFpvbmU7CiAgICAgfQogCiAgICAg
dm9pZCogcmVjdXJzaW9uTGltaXQoY2hhciogc3RhcnRPZlVzZXJTdGFjaywgc2l6ZV90IG1heFVz
ZXJTdGFjaywgc2l6ZV90IHJlc2VydmVkWm9uZVNpemUpIGNvbnN0CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9TdGFja0NoZWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3RhY2tDaGVj
ay5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL1N0YWNrQ2hlY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvU3RhY2tCb3VuZHMu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFz
cyBTdGFja0NoZWNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBTdGFja0NoZWNrKGNvbnN0IFN0YWNrQm91bmRzJiBib3VuZHMgPSBUaHJlYWQ6OmN1cnJlbnQo
KS5zdGFjaygpLCBzaXplX3QgbWluUmVzZXJ2ZWRab25lID0gU3RhY2tCb3VuZHM6OkRlZmF1bHRS
ZXNlcnZlZFpvbmUpCisgICAgICAgIDogbV9zdGFja0xpbWl0KGJvdW5kcy5yZWN1cnNpb25MaW1p
dChtaW5SZXNlcnZlZFpvbmUpKQorICAgIHsgfQorCisgICAgaW5saW5lIGJvb2wgaXNTYWZlVG9S
ZWN1cnNlKCkgeyByZXR1cm4gY3VycmVudFN0YWNrUG9pbnRlcigpID49IG1fc3RhY2tMaW1pdDsg
fQorCitwcml2YXRlOgorICAgIHZvaWQqIG1fc3RhY2tMaW1pdDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdURgorCit1c2luZyBXVEY6OlN0YWNrQ2hlY2s7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383028</attachid>
            <date>2019-11-07 00:32:55 -0800</date>
            <delta_ts>2019-11-07 01:17:48 -0800</delta_ts>
            <desc>work in progress for EWS testing.</desc>
            <filename>bug-203936b.patch</filename>
            <type>text/plain</type>
            <size>6857</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNw
cAkocmV2aXNpb24gMjUyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFycklu
dGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
PHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrQ2hl
Y2suaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKQEAgLTIwMjgsNiArMjAyOSw5IEBAIHB1YmxpYzoKIAogICAgIE9wdGlv
bmFsPEVycm9yQ29kZT4gV0FSTl9VTlVTRURfUkVUVVJOIGVtaXREaXNqdW5jdGlvbihQYXR0ZXJu
RGlzanVuY3Rpb24qIGRpc2p1bmN0aW9uLCBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxv
dz4gaW5wdXRDb3VudEFscmVhZHlDaGVja2VkLCB1bnNpZ25lZCBwYXJlbnRoZXNlc0lucHV0Q291
bnRBbHJlYWR5Q2hlY2tlZCkKICAgICB7CisgICAgICAgIGlmIChVTkxJS0VMWSghaXNTYWZlVG9S
ZWN1cnNlKCkpKQorICAgICAgICAgICAgcmV0dXJuIEVycm9yQ29kZTo6VG9vTWFueURpc2p1bmN0
aW9uczsKKwogICAgICAgICBmb3IgKHVuc2lnbmVkIGFsdCA9IDA7IGFsdCA8IGRpc2p1bmN0aW9u
LT5tX2FsdGVybmF0aXZlcy5zaXplKCk7ICsrYWx0KSB7CiAgICAgICAgICAgICBhdXRvIGN1cnJl
bnRDb3VudEFscmVhZHlDaGVja2VkID0gaW5wdXRDb3VudEFscmVhZHlDaGVja2VkOwogCkBAIC0y
NDA1LDggKzI0MDksMTEgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisgICAgaW5saW5l
IGJvb2wgaXNTYWZlVG9SZWN1cnNlKCkgeyByZXR1cm4gbV9zdGFja0NoZWNrLmlzU2FmZVRvUmVj
dXJzZSgpOyB9CisKICAgICBZYXJyUGF0dGVybiYgbV9wYXR0ZXJuOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxCeXRlRGlzanVuY3Rpb24+IG1fYm9keURpc2p1bmN0aW9uOworICAgIFN0YWNrQ2hlY2sg
bV9zdGFja0NoZWNrOwogICAgIHVuc2lnbmVkIG1fY3VycmVudEFsdGVybmF0aXZlSW5kZXggeyAw
IH07CiAgICAgVmVjdG9yPFBhcmVudGhlc2VzU3RhY2tFbnRyeT4gbV9wYXJlbnRoZXNlc1N0YWNr
OwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZURpc2p1bmN0aW9uPj4gbV9hbGxQYXJl
bnRoZXNlc0luZm87CkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDI1MjE3NykKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY5NCw2ICs2OTQsNyBAQAogCQlGNzJCQkRCMTA3
RkE0MjQ4ODYxNzhCOUUgLyogU3ltYm9sSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTeW1ib2xJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkUwNUZBRTYxRkRCMjE0MzAwMDkzMjMwIC8qIER1bWJQdHJUcmFpdHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHVtYlB0clRyYWl0cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTA1RkFGRTFGRTUwMDc1MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXVEZBc3NlcnRpb25zLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUxRDZEODcyMzc0MDFDRDAwN0E1QzI2
IC8qIFN0YWNrQ2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhY2tD
aGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTFFMkMzOTIyNDBDMDU0MDBG
NkI3MjkgLyogUHRyVGFnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFB0clRhZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUUyQzQxMjI0MTg3
QzYwMEY2QjcyOSAvKiBQbGF0Zm9ybVJlZ2lzdGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybVJlZ2lzdGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFMzg0MjM0MjMyNUNDODAwMDlERDQ0NSAvKiBSZXNvdXJjZVVzYWdlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlVXNhZ2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNTIsNiArMTE1Myw3IEBACiAJCQkJQThBNDczMEQx
NTFBODI1QjAwNDEyM0ZGIC8qIFNwZWN0cnVtLmggKi8sCiAJCQkJQThBNDczMEUxNTFBODI1QjAw
NDEyM0ZGIC8qIFN0YWNrQm91bmRzLmNwcCAqLywKIAkJCQlBOEE0NzMwRjE1MUE4MjVCMDA0MTIz
RkYgLyogU3RhY2tCb3VuZHMuaCAqLywKKwkJCQlGRTFENkQ4NzIzNzQwMUNEMDA3QTVDMjYgLyog
U3RhY2tDaGVjay5oICovLAogCQkJCUZFRUE0REY4MjE2RDdCRTQwMEFDMDYwMiAvKiBTdGFja1Bv
aW50ZXIuY3BwICovLAogCQkJCUZFRUE0REY3MjE2RDYwOEMwMEFDMDYwMiAvKiBTdGFja1BvaW50
ZXIuaCAqLywKIAkJCQkwRjlEQUEwNDFGRDFDMzdCMDA3OUM1QjIgLyogU3RhY2tTaG90LmggKi8s
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1N0YWNrQm91bmRzLmgJKHJldmlzaW9uIDI1MjE3NykKKysrIFNvdXJjZS9XVEYv
d3RmL1N0YWNrQm91bmRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE1ICszNCwxNSBAQCBuYW1l
c3BhY2UgV1RGIHsKIAogY2xhc3MgU3RhY2tCb3VuZHMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgogCiAgICAgLy8gVGhpcyA2NGsgbnVtYmVyIHdhcyBwaWNrZWQgYmVj
YXVzZSBhIHNhbXBsaW5nIG9mIHN0YWNrIHVzYWdlIGRpZmZlcmVuY2VzCiAgICAgLy8gYmV0d2Vl
biBjb25zZWN1dGl2ZSBlbnRyaWVzIGludG8gb25lIG9mIHRoZSBJbnRlcnByZXRlcjo6ZXhlY3V0
ZS4uLigpCiAgICAgLy8gZnVuY3Rpb25zIHdhcyBzZWVuIHRvIGJlIGFzIGhpZ2ggYXMgMjdrLiBI
ZW5jZSwgNjRrIGlzIGNob3NlbiBhcyBhCiAgICAgLy8gY29uc2VydmF0aXZlIGF2YWlsYWJpbGl0
eSB2YWx1ZSB0aGF0IGlzIG5vdCB0b28gbGFyZ2UgYnV0IGNvbWZvcnRhYmx5CiAgICAgLy8gZXhj
ZWVkcyAyN2sgd2l0aCBzb21lIGJ1ZmZlciBmb3IgZXJyb3IuCi0gICAgc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3Qgc19kZWZhdWx0QXZhaWxhYmlsaXR5RGVsdGEgPSA2NCAqIDEwMjQ7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3QgRGVmYXVsdFJlc2VydmVkWm9uZSA9IDY0ICogMTAyNDsKIAot
cHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgU3RhY2tCb3VuZHMgZW1wdHlCb3VuZHMoKSB7
IHJldHVybiBTdGFja0JvdW5kcygpOyB9CiAKICNpZiBIQVZFKFNUQUNLX0JPVU5EU19GT1JfTkVX
X1RIUkVBRCkKQEAgLTgyLDEwICs4MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAobV9v
cmlnaW4gPj0gcCkgJiYgKHAgPiBtX2JvdW5kKTsKICAgICB9CiAKLSAgICB2b2lkKiByZWN1cnNp
b25MaW1pdChzaXplX3QgbWluQXZhaWxhYmxlRGVsdGEgPSBzX2RlZmF1bHRBdmFpbGFiaWxpdHlE
ZWx0YSkgY29uc3QKKyAgICB2b2lkKiByZWN1cnNpb25MaW1pdChzaXplX3QgbWluUmVzZXJ2ZWRa
b25lID0gRGVmYXVsdFJlc2VydmVkWm9uZSkgY29uc3QKICAgICB7CiAgICAgICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihtX2JvdW5kKSAr
IG1pbkF2YWlsYWJsZURlbHRhOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KG1f
Ym91bmQpICsgbWluUmVzZXJ2ZWRab25lOwogICAgIH0KIAogICAgIHZvaWQqIHJlY3Vyc2lvbkxp
bWl0KGNoYXIqIHN0YXJ0T2ZVc2VyU3RhY2ssIHNpemVfdCBtYXhVc2VyU3RhY2ssIHNpemVfdCBy
ZXNlcnZlZFpvbmVTaXplKSBjb25zdApJbmRleDogU291cmNlL1dURi93dGYvU3RhY2tDaGVjay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1N0YWNrQ2hlY2suaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV1RGL3d0Zi9TdGFja0NoZWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1N0YWNrQm91bmRzLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgU3RhY2tDaGVjayB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU3RhY2tDaGVjayhjb25z
dCBTdGFja0JvdW5kcyYgYm91bmRzID0gVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKSwgc2l6ZV90
IG1pblJlc2VydmVkWm9uZSA9IFN0YWNrQm91bmRzOjpEZWZhdWx0UmVzZXJ2ZWRab25lKQorICAg
ICAgICA6IG1fc3RhY2tMaW1pdChib3VuZHMucmVjdXJzaW9uTGltaXQobWluUmVzZXJ2ZWRab25l
KSkKKyAgICB7IH0KKworICAgIGlubGluZSBib29sIGlzU2FmZVRvUmVjdXJzZSgpIHsgcmV0dXJu
IGN1cnJlbnRTdGFja1BvaW50ZXIoKSA+PSBtX3N0YWNrTGltaXQ7IH0KKworcHJpdmF0ZToKKyAg
ICB2b2lkKiBtX3N0YWNrTGltaXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcg
V1RGOjpTdGFja0NoZWNrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383029</attachid>
            <date>2019-11-07 01:17:48 -0800</date>
            <delta_ts>2019-11-07 17:34:32 -0800</delta_ts>
            <desc>work in progress for EWS testing.</desc>
            <filename>bug-203936b.patch</filename>
            <type>text/plain</type>
            <size>7795</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNw
cAkocmV2aXNpb24gMjUyMTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFycklu
dGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
PHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrQ2hl
Y2suaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKQEAgLTE2OTQsNiArMTY5NSwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBjb21waWxlKEJ1bXBQb2ludGVyQWxsb2NhdG9y
KiBhbGxvY2F0b3IsIENvbmN1cnJlbnRKU0xvY2sqIGxvY2ssIEVycm9yQ29kZSYgZXJyb3JDb2Rl
KQogICAgIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFpc1NhZmVUb1JlY3Vyc2UoKSkpIHsKKyAg
ICAgICAgICAgIGVycm9yQ29kZSA9IEVycm9yQ29kZTo6VG9vTWFueURpc2p1bmN0aW9uczsKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKICAgICAgICAgcmVnZXhCZWdp
bihtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJucywgbV9wYXR0ZXJuLm1fYm9keS0+bV9jYWxsRnJh
bWVTaXplLCBtX3BhdHRlcm4ubV9ib2R5LT5tX2FsdGVybmF0aXZlc1swXS0+b25jZVRocm91Z2go
KSk7CiAgICAgICAgIGlmIChhdXRvIGVycm9yID0gZW1pdERpc2p1bmN0aW9uKG1fcGF0dGVybi5t
X2JvZHksIDAsIDApKSB7CiAgICAgICAgICAgICBlcnJvckNvZGUgPSBlcnJvci52YWx1ZSgpOwpA
QCAtMjAyOCw2ICsyMDM0LDkgQEAgcHVibGljOgogCiAgICAgT3B0aW9uYWw8RXJyb3JDb2RlPiBX
QVJOX1VOVVNFRF9SRVRVUk4gZW1pdERpc2p1bmN0aW9uKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlz
anVuY3Rpb24sIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJmbG93PiBpbnB1dENvdW50QWxy
ZWFkeUNoZWNrZWQsIHVuc2lnbmVkIHBhcmVudGhlc2VzSW5wdXRDb3VudEFscmVhZHlDaGVja2Vk
KQogICAgIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFpc1NhZmVUb1JlY3Vyc2UoKSkpCisgICAg
ICAgICAgICByZXR1cm4gRXJyb3JDb2RlOjpUb29NYW55RGlzanVuY3Rpb25zOworCiAgICAgICAg
IGZvciAodW5zaWduZWQgYWx0ID0gMDsgYWx0IDwgZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVz
LnNpemUoKTsgKythbHQpIHsKICAgICAgICAgICAgIGF1dG8gY3VycmVudENvdW50QWxyZWFkeUNo
ZWNrZWQgPSBpbnB1dENvdW50QWxyZWFkeUNoZWNrZWQ7CiAKQEAgLTI0MDUsOCArMjQxNCwxMSBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKKyAgICBpbmxpbmUgYm9vbCBpc1NhZmVUb1Jl
Y3Vyc2UoKSB7IHJldHVybiBtX3N0YWNrQ2hlY2suaXNTYWZlVG9SZWN1cnNlKCk7IH0KKwogICAg
IFlhcnJQYXR0ZXJuJiBtX3BhdHRlcm47CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVEaXNqdW5j
dGlvbj4gbV9ib2R5RGlzanVuY3Rpb247CisgICAgU3RhY2tDaGVjayBtX3N0YWNrQ2hlY2s7CiAg
ICAgdW5zaWduZWQgbV9jdXJyZW50QWx0ZXJuYXRpdmVJbmRleCB7IDAgfTsKICAgICBWZWN0b3I8
UGFyZW50aGVzZXNTdGFja0VudHJ5PiBtX3BhcmVudGhlc2VzU3RhY2s7CiAgICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rpb24+PiBtX2FsbFBhcmVudGhlc2VzSW5mbzsKSW5k
ZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUy
MTc3KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNjk0LDYgKzY5NCw3IEBACiAJCUY3MkJCREIxMDdGQTQyNDg4NjE3OEI5RSAv
KiBTeW1ib2xJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5
bWJvbEltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTA1RkFFNjFGREIy
MTQzMDAwOTMyMzAgLyogRHVtYlB0clRyYWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEdW1iUHRyVHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
MDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdURkFzc2VydGlvbnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRTFENkQ4NzIzNzQwMUNEMDA3QTVDMjYgLyogU3RhY2tDaGVjay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja0NoZWNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUUyQzM5MjI0MEMwNTQwMEY2QjcyOSAvKiBQdHJUYWcu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHRyVGFnLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxRTJDNDEyMjQxODdDNjAwRjZCNzI5IC8qIFBs
YXRmb3JtUmVnaXN0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBsYXRmb3JtUmVnaXN0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUz
ODQyMzQyMzI1Q0M4MDAwOURENDQ1IC8qIFJlc291cmNlVXNhZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VVc2FnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTE1Miw2ICsxMTUzLDcgQEAKIAkJCQlBOEE0NzMwRDE1MUE4MjVCMDA0MTIzRkYg
LyogU3BlY3RydW0uaCAqLywKIAkJCQlBOEE0NzMwRTE1MUE4MjVCMDA0MTIzRkYgLyogU3RhY2tC
b3VuZHMuY3BwICovLAogCQkJCUE4QTQ3MzBGMTUxQTgyNUIwMDQxMjNGRiAvKiBTdGFja0JvdW5k
cy5oICovLAorCQkJCUZFMUQ2RDg3MjM3NDAxQ0QwMDdBNUMyNiAvKiBTdGFja0NoZWNrLmggKi8s
CiAJCQkJRkVFQTRERjgyMTZEN0JFNDAwQUMwNjAyIC8qIFN0YWNrUG9pbnRlci5jcHAgKi8sCiAJ
CQkJRkVFQTRERjcyMTZENjA4QzAwQUMwNjAyIC8qIFN0YWNrUG9pbnRlci5oICovLAogCQkJCTBG
OURBQTA0MUZEMUMzN0IwMDc5QzVCMiAvKiBTdGFja1Nob3QuaCAqLywKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAyNTIxNzcpCisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDYgKzIxNSw3IEBAIHNldChXVEZfUFVCTElDX0hF
QURFUlMKICAgICBTcGFubmluZ1RyZWUuaAogICAgIFNwZWN0cnVtLmgKICAgICBTdGFja0JvdW5k
cy5oCisgICAgU3RhY2tDaGVjay5oCiAgICAgU3RhY2tQb2ludGVyLmgKICAgICBTdGFja1Nob3Qu
aAogICAgIFN0YWNrU2hvdFByb2ZpbGVyLmgKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0YWNrQm91
bmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMuaAkocmV2aXNp
b24gMjUyMTc3KQorKysgU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQsMTUgKzM0LDE1IEBAIG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBTdGFja0JvdW5k
cyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CiAKICAgICAvLyBUaGlz
IDY0ayBudW1iZXIgd2FzIHBpY2tlZCBiZWNhdXNlIGEgc2FtcGxpbmcgb2Ygc3RhY2sgdXNhZ2Ug
ZGlmZmVyZW5jZXMKICAgICAvLyBiZXR3ZWVuIGNvbnNlY3V0aXZlIGVudHJpZXMgaW50byBvbmUg
b2YgdGhlIEludGVycHJldGVyOjpleGVjdXRlLi4uKCkKICAgICAvLyBmdW5jdGlvbnMgd2FzIHNl
ZW4gdG8gYmUgYXMgaGlnaCBhcyAyN2suIEhlbmNlLCA2NGsgaXMgY2hvc2VuIGFzIGEKICAgICAv
LyBjb25zZXJ2YXRpdmUgYXZhaWxhYmlsaXR5IHZhbHVlIHRoYXQgaXMgbm90IHRvbyBsYXJnZSBi
dXQgY29tZm9ydGFibHkKICAgICAvLyBleGNlZWRzIDI3ayB3aXRoIHNvbWUgYnVmZmVyIGZvciBl
cnJvci4KLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzX2RlZmF1bHRBdmFpbGFiaWxpdHlE
ZWx0YSA9IDY0ICogMTAyNDsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBEZWZhdWx0UmVz
ZXJ2ZWRab25lID0gNjQgKiAxMDI0OwogCi1wdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBT
dGFja0JvdW5kcyBlbXB0eUJvdW5kcygpIHsgcmV0dXJuIFN0YWNrQm91bmRzKCk7IH0KIAogI2lm
IEhBVkUoU1RBQ0tfQk9VTkRTX0ZPUl9ORVdfVEhSRUFEKQpAQCAtODIsMTAgKzgyLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIChtX29yaWdpbiA+PSBwKSAmJiAocCA+IG1fYm91bmQpOwog
ICAgIH0KIAotICAgIHZvaWQqIHJlY3Vyc2lvbkxpbWl0KHNpemVfdCBtaW5BdmFpbGFibGVEZWx0
YSA9IHNfZGVmYXVsdEF2YWlsYWJpbGl0eURlbHRhKSBjb25zdAorICAgIHZvaWQqIHJlY3Vyc2lv
bkxpbWl0KHNpemVfdCBtaW5SZXNlcnZlZFpvbmUgPSBEZWZhdWx0UmVzZXJ2ZWRab25lKSBjb25z
dAogICAgIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y2hhcio+KG1fYm91bmQpICsgbWluQXZhaWxhYmxlRGVsdGE7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjaGFyKj4obV9ib3VuZCkgKyBtaW5SZXNlcnZlZFpvbmU7CiAgICAg
fQogCiAgICAgdm9pZCogcmVjdXJzaW9uTGltaXQoY2hhciogc3RhcnRPZlVzZXJTdGFjaywgc2l6
ZV90IG1heFVzZXJTdGFjaywgc2l6ZV90IHJlc2VydmVkWm9uZVNpemUpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9TdGFja0NoZWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
U3RhY2tDaGVjay5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL1N0YWNrQ2hlY2su
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvU3Rh
Y2tCb3VuZHMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBXVEYg
eworCitjbGFzcyBTdGFja0NoZWNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBTdGFja0NoZWNrKGNvbnN0IFN0YWNrQm91bmRzJiBib3VuZHMgPSBUaHJlYWQ6
OmN1cnJlbnQoKS5zdGFjaygpLCBzaXplX3QgbWluUmVzZXJ2ZWRab25lID0gU3RhY2tCb3VuZHM6
OkRlZmF1bHRSZXNlcnZlZFpvbmUpCisgICAgICAgIDogbV9zdGFja0xpbWl0KGJvdW5kcy5yZWN1
cnNpb25MaW1pdChtaW5SZXNlcnZlZFpvbmUpKQorICAgIHsgfQorCisgICAgaW5saW5lIGJvb2wg
aXNTYWZlVG9SZWN1cnNlKCkgeyByZXR1cm4gY3VycmVudFN0YWNrUG9pbnRlcigpID49IG1fc3Rh
Y2tMaW1pdDsgfQorCitwcml2YXRlOgorICAgIHZvaWQqIG1fc3RhY2tMaW1pdDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlN0YWNrQ2hlY2s7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383097</attachid>
            <date>2019-11-07 17:34:32 -0800</date>
            <delta_ts>2019-11-07 22:21:55 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-203936.patch</filename>
            <type>text/plain</type>
            <size>26736</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTIyMTcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE5IEBACisyMDE5LTExLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgYSBzdGFjayBvdmVyZmxvdyBjaGVjayBpbiBZYXJyOjpCeXRlQ29t
cGlsZXI6OmVtaXREaXNqdW5jdGlvbigpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAzOTM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjYyNDcy
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IGlzc3VlIG9yaWdpbmFsbHkgbWFuaWZlc3RlZCBhcyBpbmNvcnJlY3QtZXhjZXB0aW9uLWFzc2Vy
dGlvbi1pbi1vcGVyYXRpb25SZWdFeHBFeGVjTm9uR2xvYmFsT3JTdGlja3kuanMKKyAgICAgICAg
ZmFpbGluZyBvbiBpT1MgZGV2aWNlcyBkdWUgdG8gaXRzIHNtYWxsZXIgc3RhY2suICBXZSBhZGFw
dGVkIHRoZSBvcmlnaW5hbCB0ZXN0CisgICAgICAgIGhlcmUgdXNpbmcgJHZtLmNhbGxXaXRoU3Rh
Y2tTaXplKCkgdG8gcmVwcm9kdWNlIHRoZSBpc3N1ZSBvbiB4ODZfNjQgdGhvdWdoIGl0CisgICAg
ICAgIGhhcyBhIG11Y2ggbGFyZ2VyIHBoeXNpY2FsIHN0YWNrIHRvIHdvcmsgd2l0aC4gIFRoaXMg
bmV3IHRlc3Qgd2lsbCBjcmFzaCB3aGlsZQorICAgICAgICBzdGVwcGluZyBvbiB0aGUgZ3VhcmQg
cGFnZSBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgc3RhY2sgaWYgdGhlIGZpeCBpcyBub3QgYXBwbGll
ZC4KKworICAgICAgICAqIHN0cmVzcy9zdGFjay1vdmVyZmxvdy1pbi15YXJyLWJ5dGVDb21waWxl
LmpzOiBBZGRlZC4KKwogMjAxOS0xMS0wNyAgVHVvbWFzIEthcmtrYWluZW4gIDx0dW9tYXMud2Vi
a2l0QGFwcGxlLmNvbT4KIAogICAgICAgICBkaWRQYXNzU29tZVRlc3RzU2lsZW50eSBpcyBtaXNz
cGVsbGVkIGluIHN0YW5kYWxvbmUtcHJlLmpzCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9zdGFjay1v
dmVyZmxvdy1pbi15YXJyLWJ5dGVDb21waWxlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3Ry
ZXNzL3N0YWNrLW92ZXJmbG93LWluLXlhcnItYnl0ZUNvbXBpbGUuanMJKG5vbmV4aXN0ZW50KQor
KysgSlNUZXN0cy9zdHJlc3Mvc3RhY2stb3ZlcmZsb3ctaW4teWFyci1ieXRlQ29tcGlsZS5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIiItLWRp
c2FibGVPcHRpb25zRnJlZXppbmdGb3JUZXN0aW5nIiIpCisvL0Agc2tpcCBpZiAkaG9zdE9TICE9
ICJkYXJ3aW4iIG9yICRhcmNoaXRlY3R1cmUgIT0gIng4Ni02NCIKKworZnVuY3Rpb24gZm9vKCkg
eworICAgIGNsYXNzIEMgeworICAgICAgICBjb25zdHJ1Y3RvcihmdW5jKSB7CisgICAgICAgICAg
ICB0aGlzLmZ1bmMgPSBmdW5jOworICAgICAgICB9CisgICAgICAgIHJ1blRlc3QoKSB7CisgICAg
ICAgICAgICB0aGlzLmZ1bmMoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmdW5jdGlvbiByZWN1
cnNlQW5kVGVzdCgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJlY3Vyc2VBbmRUZXN0
KCk7CisgICAgICAgICAgICB0ZXN0LnJ1blRlc3QoKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICB9CisgICAgfQorICAgIGNvbnN0IGhvd01hbnlQYXJlbnRoZXNlcyA9IDEwMDA7Cisg
ICAgY29uc3QgZGVlcFJFID0gbmV3IFJlZ0V4cCgnKCcucmVwZWF0KGhvd01hbnlQYXJlbnRoZXNl
cykgKyAnKScucmVwZWF0KGhvd01hbnlQYXJlbnRoZXNlcykpOworICAgIGxldCB0ZXN0ID0gCisg
ICAgICAgIG5ldyBDKCgpID0+IHsKKyAgICAgICAgICAgIGRlZXBSRS5leGVjKCcnKTsKKyAgICAg
ICAgfSk7CisKKyAgICByZWN1cnNlQW5kVGVzdCgpOworfQorCiskdm0uY2FsbFdpdGhTdGFja1Np
emUoZm9vLCAxMDAqMTAyNCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MjUyMjE0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDYxIEBACisyMDE5LTExLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgYSBzdGFjayBvdmVyZmxvdyBjaGVjayBpbiBZYXJyOjpCeXRl
Q29tcGlsZXI6OmVtaXREaXNqdW5jdGlvbigpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzOTM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjYy
NDcyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBC
YXNpY2FsbHksIGFueSBmdW5jdGlvbnMgYmVsb3cgWWFycjo6Qnl0ZUNvbXBpbGVyOjpjb21waWxl
KCkgdGhhdCByZWN1cnNlcyBuZWVkCisgICAgICAgIHRvIGNoZWNrIGlmIGl0J3Mgc2FmZSB0byBy
ZWN1cnNlIGJlZm9yZSBkb2luZyBzby4gIFRoaXMgcGF0Y2ggYWRkcyB0aGUgc3RhY2sKKyAgICAg
ICAgY2hlY2tzIGluIFlhcnI6OkJ5dGVDb21waWxlcjo6Y29tcGlsZSgpIGJlY2F1c2UgaXQgaXMg
dGhlIGVudHJ5IHBvaW50IHRvIHRoaXMKKyAgICAgICAgc3ViLXN5c3RlbSwgYW5kIFlhcnI6OkJ5
dGVDb21waWxlcjo6ZW1pdERpc2p1bmN0aW9uKCkgYmVjYXVzZSBpdCBpcyB0aGUgb25seQorICAg
ICAgICBmdW5jdGlvbiB0aGF0IHJlY3Vyc2VzLiAgQWxsIG90aGVyIGZ1bmN0aW9ucyBjYWxsZWQg
YmVsb3cgY29tcGlsZSgpIGFyZSBlaXRoZXIKKyAgICAgICAgbGVhZiBmdW5jdGlvbnMgb3IgaGF2
ZSBzaGFsbG93IHN0YWNrIHVzYWdlLiAgSGVuY2UsIHRoZWlyIHN0YWNrIG5lZWRzIGFyZSBjb3Zl
cmVkCisgICAgICAgIGJ5IHRoZSBEZWZhdWx0UmVzZXJ2ZWRab25lLCBhbmQgdGhleSBkbyBub3Qg
bmVlZCBzdGFjayBjaGVja3MuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGRvZXMgdGhlIGZv
bGxvd2luZzoKKyAgICAgICAgMS4gQWRkZWQgJHZtLmNhbGxXaXRoU3RhY2tTaXplKCkgd2hpY2gg
Y2FuIGJlIHVzZWQgdG8gY2FsbCBhIHRlc3QgZnVuY3Rpb24gbmVhcgorICAgICAgICAgICB0aGUg
ZW5kIG9mIHRoZSBwaHlzaWNhbCBzdGFjay4gIFRoaXMgZW5hYmxlcyBpcyB0byBzaW11bGF0ZSB0
aGUgc21hbGxlciBzdGFjaworICAgICAgICAgICBzaXplIG9mIG1vcmUgcmVzb3VyY2UgY29uc3Ry
YWluZWQgZGV2aWNlcy4KKworICAgICAgICAgICAkdm0uY2FsbFdpdGhTdGFja1NpemUoKSB1c2Vz
IGlubGluZSBhc20gdG8gYWRqdXN0IHRoZSBzdGFjayBwb2ludGVyIGFuZAorICAgICAgICAgICBk
b2VzIHRoZSBjYWxsYmFjayB2aWEgdGhlIEpJVCBwcm9iZSB0cmFtcG9saW5lLgorCisgICAgICAg
IDIuIEFkZGVkIHRoZSAtLWRpc2FibGVPcHRpb25zRnJlZXppbmdGb3JUZXN0aW5nIHRvIHRoZSBq
c2Mgc2hlbGwgdG8gbWFrZSBpdAorICAgICAgICAgICBwb3NzaWJsZSB0byBkaXNhYmxlIGZyZWV6
aW5nIG9mIEpTQyBvcHRpb25zLiAgJHZtLmNhbGxXaXRoU3RhY2tTaXplKCkgcmVsaWVzCisgICAg
ICAgICAgIG9uIHRoaXMgdG8gbW9kaWZ5IHRoZSBWTSdzIHN0YWNrIGxpbWl0cy4KKworICAgICAg
ICAzLiBNb3ZlZCBWTTo6dXBkYXRlU3RhY2tMaW1pdHMoKSB0byBWTUlubGluZXMuaCBzbyB0aGF0
IHdlIGNhbiBjYWxsIGlmIGZyb20KKyAgICAgICAgICAgJHZtLmNhbGxXaXRoU3RhY2tTaXplKCkg
YXMgd2VsbC4KKworICAgICAgICA0LiBBZGRlZCBhIEpTRG9sbGFyVk1IZWxwZXIgY2xhc3MgdGhh
dCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIGNhbiBkZWNsYXJlIGFzCisgICAgICAgICAgIGEg
ZnJpZW5kLiAgVGhpcyBnaXZlcyAkdm0gYSBiYWNrZG9vciBpbnRvIHRoZSBwcml2YXRlIGZ1bmN0
aW9ucyBhbmQgZmllbGRzIG9mCisgICAgICAgICAgIGNsYXNzZXMgZm9yIGl0cyBkZWJ1Z2dpbmcg
d29yay4gIEluIHRoaXMgcGF0Y2gsIHdlJ3JlIG9ubHkgdXNpbmcgaXQgdG8gYWNjZXNzCisgICAg
ICAgICAgIFZNOjp1cGRhdGVWTVN0YWNrTGltaXRzKCkuCisKKyAgICAgICAgKiBqc2MuY3BwOgor
ICAgICAgICAoQ29tbWFuZExpbmU6OnBhcnNlQXJndW1lbnRzKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OnVwZGF0ZVN0YWNrTGltaXRzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogcnVudGltZS9WTUlubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6Vk06OnVwZGF0ZVN0YWNrTGltaXRzKToKKyAgICAgICAgKiB0b29scy9K
U0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTUhlbHBlcjo6SlNEb2xsYXJW
TUhlbHBlcik6CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk1IZWxwZXI6OnZtU3RhY2tTdGFydCk6
CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk1IZWxwZXI6OnZtU3RhY2tMaW1pdCk6CisgICAgICAg
IChKU0M6OkpTRG9sbGFyVk1IZWxwZXI6OnZtU29mdFN0YWNrTGltaXQpOgorICAgICAgICAoSlND
OjpKU0RvbGxhclZNSGVscGVyOjp1cGRhdGVWTVN0YWNrTGltaXRzKToKKyAgICAgICAgKEpTQzo6
Y2FsbFdpdGhTdGFja1NpemVQcm9iZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25D
YWxsV2l0aFN0YWNrU2l6ZSk6CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk06OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKElHTk9SRV9XQVJOSU5HU19CRUdJTik6IERlbGV0ZWQuCisgICAgICAg
ICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29t
cGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmVtaXRE
aXNqdW5jdGlvbik6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6aXNTYWZlVG9S
ZWN1cnNlKToKKwogMjAxOS0xMS0wNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lPTihyMjUwMDg3KTogaW5zcGVjdG9y
L21vZGVsL3JlbW90ZS1vYmplY3QuaHRtbCBpcyB0aW1pbmcgb3V0CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAkocmV2aXNpb24gMjUyMjE0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OTEsNiArMjg5MSwxMCBAQCB2b2lkIENvbW1hbmRMaW5l
OjpwYXJzZUFyZ3VtZW50cyhpbnQgYXJnCiAgICAgICAgICAgICBtX2Rlc3Ryb3lWTSA9IHRydWU7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAgICAgICBpZiAoIXN0cmNtcChh
cmcsICItLWRpc2FibGVPcHRpb25zRnJlZXppbmdGb3JUZXN0aW5nIikpIHsKKyAgICAgICAgICAg
IENvbmZpZzo6ZGlzYWJsZUZyZWV6aW5nRm9yVGVzdGluZygpOworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogdGltZW91dE11bHRp
cGxpZXJPcHRTdHIgPSAiLS10aW1lb3V0TXVsdGlwbGllcj0iOwogICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgdGltZW91dE11bHRpcGxpZXJPcHRTdHJMZW5ndGggPSBzdHJsZW4odGltZW91
dE11bHRpcGxpZXJPcHRTdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAkocmV2aXNpb24gMjUyMjE0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDYgQEAKICNpbmNsdWRlICJMTEludERh
dGEuaCIKICNpbmNsdWRlICJMZXhlci5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgotI2luY2x1ZGUg
Ik1pbmltdW1SZXNlcnZlZFpvbmVTaXplLmgiCiAjaW5jbHVkZSAiTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIk1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAi
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgpAQCAtODgxLDQzICs4ODAsNiBAQCBzdGF0aWMgdm9p
ZCBwcmVDb21taXRTdGFja01lbW9yeSh2b2lkKiBzCiB9CiAjZW5kaWYKIAotaW5saW5lIHZvaWQg
Vk06OnVwZGF0ZVN0YWNrTGltaXRzKCkKLXsKLSNpZiBPUyhXSU5ET1dTKQotICAgIHZvaWQqIGxh
c3RTb2Z0U3RhY2tMaW1pdCA9IG1fc29mdFN0YWNrTGltaXQ7Ci0jZW5kaWYKLQotICAgIGNvbnN0
IFN0YWNrQm91bmRzJiBzdGFjayA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7Ci0gICAgc2l6
ZV90IHJlc2VydmVkWm9uZVNpemUgPSBPcHRpb25zOjpyZXNlcnZlZFpvbmVTaXplKCk7Ci0gICAg
Ly8gV2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBlbnN1cmVkIHRoYXQgT3B0aW9uczo6cmVzZXJ2ZWRa
b25lU2l6ZSgpID49IG1pbmltdW1SZXNlcnZlWm9uZVNpemUgYXQKLSAgICAvLyBvcHRpb25zIGlu
aXRpYWxpemF0aW9uIHRpbWUsIGFuZCB0aGUgb3B0aW9uIHZhbHVlIHNob3VsZCBub3QgaGF2ZSBi
ZWVuIGNoYW5nZWQgdGhlcmVhZnRlci4KLSAgICAvLyBXZSBkb24ndCBoYXZlIHRoZSBhYmlsaXR5
IHRvIGFzc2VydCBoZXJlIHRoYXQgaXQgaGFzbid0IGNoYW5nZWQsIGJ1dCB3ZSBjYW4gYXQgbGVh
c3QgYXNzZXJ0Ci0gICAgLy8gdGhhdCB0aGUgdmFsdWUgaXMgc2FuZS4KLSAgICBSRUxFQVNFX0FT
U0VSVChyZXNlcnZlZFpvbmVTaXplID49IG1pbmltdW1SZXNlcnZlZFpvbmVTaXplKTsKLQotICAg
IGlmIChtX3N0YWNrUG9pbnRlckF0Vk1FbnRyeSkgewotICAgICAgICBjaGFyKiBzdGFydE9mU3Rh
Y2sgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihtX3N0YWNrUG9pbnRlckF0Vk1FbnRyeSk7Ci0g
ICAgICAgIG1fc29mdFN0YWNrTGltaXQgPSBzdGFjay5yZWN1cnNpb25MaW1pdChzdGFydE9mU3Rh
Y2ssIE9wdGlvbnM6Om1heFBlclRocmVhZFN0YWNrVXNhZ2UoKSwgbV9jdXJyZW50U29mdFJlc2Vy
dmVkWm9uZVNpemUpOwotICAgICAgICBtX3N0YWNrTGltaXQgPSBzdGFjay5yZWN1cnNpb25MaW1p
dChzdGFydE9mU3RhY2ssIE9wdGlvbnM6Om1heFBlclRocmVhZFN0YWNrVXNhZ2UoKSwgcmVzZXJ2
ZWRab25lU2l6ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9zb2Z0U3RhY2tMaW1pdCA9IHN0
YWNrLnJlY3Vyc2lvbkxpbWl0KG1fY3VycmVudFNvZnRSZXNlcnZlZFpvbmVTaXplKTsKLSAgICAg
ICAgbV9zdGFja0xpbWl0ID0gc3RhY2sucmVjdXJzaW9uTGltaXQocmVzZXJ2ZWRab25lU2l6ZSk7
Ci0gICAgfQotCi0jaWYgT1MoV0lORE9XUykKLSAgICAvLyBXZSBvbmx5IG5lZWQgdG8gcHJlY29t
bWl0IHN0YWNrIG1lbW9yeSBkaWN0YXRlZCBieSB0aGUgVk06Om1fc29mdFN0YWNrTGltaXQgbGlt
aXQuCi0gICAgLy8gVGhpcyBpcyBiZWNhdXNlIFZNOjptX3NvZnRTdGFja0xpbWl0IGFwcGxpZXMg
dG8gc3RhY2sgdXNhZ2UgYnkgTExJTlQgYXNtIG9yIEpJVAotICAgIC8vIGdlbmVyYXRlZCBjb2Rl
IHdoaWNoIGNhbiBhbGxvY2F0ZSBzdGFjayBzcGFjZSB0aGF0IHRoZSBDKysgY29tcGlsZXIgZG9l
cyBub3Qga25vdwotICAgIC8vIGFib3V0LiBBcyBzdWNoLCB3ZSBoYXZlIHRvIHByZWNvbW1pdCB0
aGF0IHN0YWNrIG1lbW9yeSBtYW51YWxseS4KLSAgICAvLwotICAgIC8vIEluIGNvbnRyYXN0LCB3
ZSBkbyBub3QgbmVlZCB0byB3b3JyeSBhYm91dCBWTTo6bV9zdGFja0xpbWl0IGJlY2F1c2UgdGhh
dCBsaW1pdCBpcwotICAgIC8vIHVzZWQgZXhjbHVzaXZlbHkgYnkgQysrIGNvZGUsIGFuZCB0aGUg
QysrIGNvbXBpbGVyIHdpbGwgYXV0b21hdGljYWxseSBjb21taXQgdGhlCi0gICAgLy8gbmVlZGVk
IHN0YWNrIHBhZ2VzLgotICAgIGlmIChsYXN0U29mdFN0YWNrTGltaXQgIT0gbV9zb2Z0U3RhY2tM
aW1pdCkKLSAgICAgICAgcHJlQ29tbWl0U3RhY2tNZW1vcnkobV9zb2Z0U3RhY2tMaW1pdCk7Ci0j
ZW5kaWYKLX0KLQogI2lmIEVOQUJMRShERkdfSklUKQogdm9pZCBWTTo6Z2F0aGVyU2NyYXRjaEJ1
ZmZlclJvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJiBjb25zZXJ2YXRpdmVSb290cykKIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjUyMjE0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMTA5Myw2ICsx
MDkzLDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSGVhcDsKICAgICBmcmllbmQgY2xh
c3MgQ2F0Y2hTY29wZTsKICAgICBmcmllbmQgY2xhc3MgRXhjZXB0aW9uU2NvcGU7CisgICAgZnJp
ZW5kIGNsYXNzIEpTRG9sbGFyVk1IZWxwZXI7CiAgICAgZnJpZW5kIGNsYXNzIFRocm93U2NvcGU7
CiAgICAgZnJpZW5kIGNsYXNzIFZNVHJhcHM7CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6RG91Ymx5
TGlua2VkTGlzdE5vZGU8Vk0+OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk1JbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk1JbmxpbmVzLmgJKHJldmlzaW9uIDI1MjIxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkVudHJ5RnJhbWUuaCIKKyNpbmNsdWRlICJNaW5pbXVtUmVz
ZXJ2ZWRab25lU2l6ZS5oIgogI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRl
ICJWTS5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCkBAIC03NSw0ICs3Niw0MSBAQCBpbmxpbmUg
Q2FsbEZyYW1lKiBWTTo6dG9wSlNDYWxsRnJhbWUoKSBjCiAgICAgcmV0dXJuIGZyYW1lOwogfQog
CitpbmxpbmUgdm9pZCBWTTo6dXBkYXRlU3RhY2tMaW1pdHMoKQoreworI2lmIE9TKFdJTkRPV1Mp
CisgICAgdm9pZCogbGFzdFNvZnRTdGFja0xpbWl0ID0gbV9zb2Z0U3RhY2tMaW1pdDsKKyNlbmRp
ZgorCisgICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrID0gVGhyZWFkOjpjdXJyZW50KCkuc3Rh
Y2soKTsKKyAgICBzaXplX3QgcmVzZXJ2ZWRab25lU2l6ZSA9IE9wdGlvbnM6OnJlc2VydmVkWm9u
ZVNpemUoKTsKKyAgICAvLyBXZSBzaG91bGQgaGF2ZSBhbHJlYWR5IGVuc3VyZWQgdGhhdCBPcHRp
b25zOjpyZXNlcnZlZFpvbmVTaXplKCkgPj0gbWluaW11bVJlc2VydmVab25lU2l6ZSBhdAorICAg
IC8vIG9wdGlvbnMgaW5pdGlhbGl6YXRpb24gdGltZSwgYW5kIHRoZSBvcHRpb24gdmFsdWUgc2hv
dWxkIG5vdCBoYXZlIGJlZW4gY2hhbmdlZCB0aGVyZWFmdGVyLgorICAgIC8vIFdlIGRvbid0IGhh
dmUgdGhlIGFiaWxpdHkgdG8gYXNzZXJ0IGhlcmUgdGhhdCBpdCBoYXNuJ3QgY2hhbmdlZCwgYnV0
IHdlIGNhbiBhdCBsZWFzdCBhc3NlcnQKKyAgICAvLyB0aGF0IHRoZSB2YWx1ZSBpcyBzYW5lLgor
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc2VydmVkWm9uZVNpemUgPj0gbWluaW11bVJlc2VydmVkWm9u
ZVNpemUpOworCisgICAgaWYgKG1fc3RhY2tQb2ludGVyQXRWTUVudHJ5KSB7CisgICAgICAgIGNo
YXIqIHN0YXJ0T2ZTdGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fc3RhY2tQb2ludGVy
QXRWTUVudHJ5KTsKKyAgICAgICAgbV9zb2Z0U3RhY2tMaW1pdCA9IHN0YWNrLnJlY3Vyc2lvbkxp
bWl0KHN0YXJ0T2ZTdGFjaywgT3B0aW9uczo6bWF4UGVyVGhyZWFkU3RhY2tVc2FnZSgpLCBtX2N1
cnJlbnRTb2Z0UmVzZXJ2ZWRab25lU2l6ZSk7CisgICAgICAgIG1fc3RhY2tMaW1pdCA9IHN0YWNr
LnJlY3Vyc2lvbkxpbWl0KHN0YXJ0T2ZTdGFjaywgT3B0aW9uczo6bWF4UGVyVGhyZWFkU3RhY2tV
c2FnZSgpLCByZXNlcnZlZFpvbmVTaXplKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3NvZnRT
dGFja0xpbWl0ID0gc3RhY2sucmVjdXJzaW9uTGltaXQobV9jdXJyZW50U29mdFJlc2VydmVkWm9u
ZVNpemUpOworICAgICAgICBtX3N0YWNrTGltaXQgPSBzdGFjay5yZWN1cnNpb25MaW1pdChyZXNl
cnZlZFpvbmVTaXplKTsKKyAgICB9CisKKyNpZiBPUyhXSU5ET1dTKQorICAgIC8vIFdlIG9ubHkg
bmVlZCB0byBwcmVjb21taXQgc3RhY2sgbWVtb3J5IGRpY3RhdGVkIGJ5IHRoZSBWTTo6bV9zb2Z0
U3RhY2tMaW1pdCBsaW1pdC4KKyAgICAvLyBUaGlzIGlzIGJlY2F1c2UgVk06Om1fc29mdFN0YWNr
TGltaXQgYXBwbGllcyB0byBzdGFjayB1c2FnZSBieSBMTElOVCBhc20gb3IgSklUCisgICAgLy8g
Z2VuZXJhdGVkIGNvZGUgd2hpY2ggY2FuIGFsbG9jYXRlIHN0YWNrIHNwYWNlIHRoYXQgdGhlIEMr
KyBjb21waWxlciBkb2VzIG5vdCBrbm93CisgICAgLy8gYWJvdXQuIEFzIHN1Y2gsIHdlIGhhdmUg
dG8gcHJlY29tbWl0IHRoYXQgc3RhY2sgbWVtb3J5IG1hbnVhbGx5LgorICAgIC8vCisgICAgLy8g
SW4gY29udHJhc3QsIHdlIGRvIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0IFZNOjptX3N0YWNrTGlt
aXQgYmVjYXVzZSB0aGF0IGxpbWl0IGlzCisgICAgLy8gdXNlZCBleGNsdXNpdmVseSBieSBDKysg
Y29kZSwgYW5kIHRoZSBDKysgY29tcGlsZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGNvbW1pdCB0aGUK
KyAgICAvLyBuZWVkZWQgc3RhY2sgcGFnZXMuCisgICAgaWYgKGxhc3RTb2Z0U3RhY2tMaW1pdCAh
PSBtX3NvZnRTdGFja0xpbWl0KQorICAgICAgICBwcmVDb21taXRTdGFja01lbW9yeShtX3NvZnRT
dGFja0xpbWl0KTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHJldmlzaW9uIDI1MjIxNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRPTUF0dHJpYnV0ZUdldHRlclNldHRl
ci5oIgogI2luY2x1ZGUgIkRPTUpJVEdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRlYnVnZ2Vy
LmgiCisjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJGcmFtZVRyYWNlcnMuaCIKICNpbmNs
dWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgpAQCAt
NDMsNiArNDQsNyBAQAogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5o
IgogI2luY2x1ZGUgIlBhcnNlci5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1
ZGUgIlNoYWRvd0NoaWNrZW4uaCIKICNpbmNsdWRlICJTbmlwcGV0LmgiCiAjaW5jbHVkZSAiU25p
cHBldFBhcmFtcy5oIgpAQCAtNjQsNiArNjYsMjYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAog
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJmcmFtZS1hZGRyZXNzIikKIAorZXh0ZXJuICJDIiB2b2lk
IGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUoKTsKKworbmFtZXNwYWNlIEpTQyB7CisKKy8vIFRoaXMg
Y2xhc3MgaXMgb25seSBoZXJlIGFzIGEgc2ltcGxlIHdheSB0byBncmFudCBKU0RvbGxhclZNIGZy
aWVuZCBwcml2aWxlZ2VzCisvLyB0byBhbGwgdGhlIGNsYXNzZXMgdGhhdCBpdCBuZWVkcyBzcGVj
aWFsIGFjY2VzcyB0by4KK2NsYXNzIEpTRG9sbGFyVk1IZWxwZXIgeworcHVibGljOgorICAgIEpT
RG9sbGFyVk1IZWxwZXIoVk0mIHZtKQorICAgICAgICA6IG1fdm0odm0pCisgICAgeyB9CisKKyAg
ICB2b2lkIHVwZGF0ZVZNU3RhY2tMaW1pdHMoKSB7IHJldHVybiBtX3ZtLnVwZGF0ZVN0YWNrTGlt
aXRzKCk7IH07CisKK3ByaXZhdGU6CisgICAgVk0mIG1fdm07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKwogbmFtZXNwYWNlIHsKIAogLy8gV2UgbXVzdCBSRUxFQVNFX0FTU0VSVChPcHRpb25z
Ojp1c2VEb2xsYXJWTSgpKSBpbiBhbGwgSlNEb2xsYXJWTSBmdW5jdGlvbnMKQEAgLTE5NjgsNiAr
MTk5MCwxMTcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuYwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldC0+aXNIYXZpbmdBQmFkVGlt
ZSgpKSk7CiB9CiAKKy8vIENhbGxzIHRoZSBzcGVjaWZpZWQgdGVzdCBmdW5jdGlvbiBhZnRlciBh
ZGp1c3RpbmcgdGhlIHN0YWNrIHRvIGhhdmUgdGhlIHNwZWNpZmllZAorLy8gcmVtYWluaW5nIHNp
emUgZnJvbSB0aGUgZW5kIG9mIHRoZSBwaHlzaWNhbCBzdGFjay4KKy8vIFVzYWdlOiAkdm0uY2Fs
bFdpdGhTdGFja1NpemUoZnVuY1RvQ2FsbCwgZGVzaXJlZFN0YWNrU2l6ZSkKKy8vCisvLyBUaGlz
IGZ1bmN0aW9uIHdpbGwgb25seSB3b3JrIGluIHRlc3QgY29uZmlndXJhdGlvbnMsIHNwZWNpZmlj
YWxseSwgb25seSBpZiBKU0MKKy8vIG9wdGlvbnMgYXJlIG5vdCBmcm96ZW4uIEZvciB0aGUganNj
IHNoZWxsLCB0aGUgLS1kaXNhYmxlT3B0aW9uc0ZyZWV6aW5nRm9yVGVzdGluZworLy8gYXJndW1l
bnQgbmVlZHMgdG8gYmUgcGFzc2VkIGluIG9uIHRoZSBjb21tYW5kIGxpbmUuCisKK3N0YXRpYyB2
b2lkIGNhbGxXaXRoU3RhY2tTaXplUHJvYmVGdW5jdGlvbihQcm9iZTo6U3RhdGUqIHN0YXRlKQor
eworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBiaXR3aXNlX2Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihzdGF0ZS0+YXJnKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGJpdHdp
c2VfY2FzdDxKU0Z1bmN0aW9uKj4oc3RhdGUtPnByb2JlRnVuY3Rpb24pOworICAgIHN0YXRlLT5p
bml0aWFsaXplU3RhY2tGdW5jdGlvbiA9IG51bGxwdHI7CisgICAgc3RhdGUtPmluaXRpYWxpemVT
dGFja0FyZyA9IG51bGxwdHI7CisKKyAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3Bl
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIENhbGxEYXRhIGNhbGxE
YXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uLCBj
YWxsRGF0YSk7CisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICBjYWxsKGdsb2Jh
bE9iamVjdCwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJn
cyk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2Fs
bFdpdGhTdGFja1NpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCit7CisgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisjaWYgT1Mo
REFSV0lOKSAmJiBDUFUoWDg2XzY0KQorICAgIGJvb2wgaXNTdXBwb3J0ZWRCeVBsYXRmb3JtID0g
dHJ1ZTsKKyNlbHNlCisgICAgYm9vbCBpc1N1cHBvcnRlZEJ5UGxhdGZvcm0gPSBmYWxzZTsKKyNl
bmRpZgorCisgICAgaWYgKCFpc1N1cHBvcnRlZEJ5UGxhdGZvcm0pCisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiTm90IHN1cHBvcnRlZCBmb3Ig
dGhpcyBwbGF0Zm9ybSIpOworCisjaWYgRU5BQkxFKE1BU01fUFJPQkUpCisgICAgaWYgKGdfanNj
Q29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW4gfHwgIWdfanNjQ29uZmlnLmRpc2FibGVkRnJlZXpp
bmdGb3JUZXN0aW5nKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgIk9wdGlvbnMgYXJlIGZyb3plbiIpOworCisgICAgaWYgKGNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudCgpIDwgMikKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsICJJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMiKTsKKyAgICBK
U1ZhbHVlIGFyZzAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgYXJnMSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgaWYgKCFhcmcwLmlzRnVuY3Rpb24odm0pKQor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgImFy
ZzAgc2hvdWxkIGJlIGEgZnVuY3Rpb24iKTsKKyAgICBpZiAoIWFyZzEuaXNOdW1iZXIoKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJhcmcx
IHNob3VsZCBiZSBhIG51bWJlciIpOworCisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBiaXR3
aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KGFyZzAudG9PYmplY3QoZ2xvYmFsT2JqZWN0KSk7CisgICAg
c2l6ZV90IGRlc2lyZWRTdGFja1NpemUgPSBhcmcxLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisK
KyAgICBjb25zdCBTdGFja0JvdW5kcyYgYm91bmRzID0gVGhyZWFkOjpjdXJyZW50KCkuc3RhY2so
KTsKKyAgICB1aW50OF90KiBjdXJyZW50U3RhY2tQb3NpdGlvbiA9IGJpdHdpc2VfY2FzdDx1aW50
OF90Kj4oY3VycmVudFN0YWNrUG9pbnRlcigpKTsKKyAgICB1aW50OF90KiBlbmQgPSBiaXR3aXNl
X2Nhc3Q8dWludDhfdCo+KGJvdW5kcy5lbmQoKSk7CisgICAgdWludDhfdCogZGVzaXJlZFN0YXJ0
ID0gZW5kICsgZGVzaXJlZFN0YWNrU2l6ZTsKKyAgICBpZiAoZGVzaXJlZFN0YXJ0ID49IGN1cnJl
bnRTdGFja1Bvc2l0aW9uKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgIlVuYWJsZSB0byBzZXR1cCBkZXNpcmVkIHN0YWNrIHNpemUiKTsKKwor
ICAgIEpTRG9sbGFyVk1IZWxwZXIgaGVscGVyKHZtKTsKKworICAgIHVuc2lnbmVkIG9yaWdpbmFs
TWF4UGVyVGhyZWFkU3RhY2tVc2FnZSA9IE9wdGlvbnM6Om1heFBlclRocmVhZFN0YWNrVXNhZ2Uo
KTsKKyAgICB2b2lkKiBvcmlnaW5hbFZNU29mdFN0YWNrTGltaXQgPSB2bS5zb2Z0U3RhY2tMaW1p
dCgpOworICAgIHZvaWQqIG9yaWdpbmFsVk1TdGFja0xpbWl0ID0gdm0uc3RhY2tMaW1pdCgpOwor
CisgICAgLy8gVGhpcyBpcyBhIGhhY2sgdG8gbWFrZSB0aGUgVk0gdGhpbmsgaXQncyBzdGFjayBs
aW1pdHMgYXJlIG5lYXIgdGhlIGVuZAorICAgIC8vIG9mIHRoZSBwaHlzaWNhbCBzdGFjay4KKyAg
ICB1aW50OF90KiB2bVN0YWNrU3RhcnQgPSBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHZtLnN0YWNr
UG9pbnRlckF0Vk1FbnRyeSgpKTsKKyAgICB1aW50OF90KiB2bVN0YWNrRW5kID0gdm1TdGFja1N0
YXJ0IC0gb3JpZ2luYWxNYXhQZXJUaHJlYWRTdGFja1VzYWdlOworICAgIHB0cmRpZmZfdCBzaXpl
RGlmZiA9IHZtU3RhY2tFbmQgLSBlbmQ7CisgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZURpZmYgPj0g
MCk7CisgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZURpZmYgPCBVSU5UX01BWCk7CisKKyAgICBPcHRp
b25zOjptYXhQZXJUaHJlYWRTdGFja1VzYWdlKCkgPSBvcmlnaW5hbE1heFBlclRocmVhZFN0YWNr
VXNhZ2UgKyBzaXplRGlmZjsKKyAgICBoZWxwZXIudXBkYXRlVk1TdGFja0xpbWl0cygpOworCisj
aWYgT1MoREFSV0lOKSAmJiBDUFUoWDg2XzY0KQorICAgIF9fYXNtX18gdm9sYXRpbGUgKAorICAg
ICAgICAic3VicSAlW3NpemVEaWZmXSwgJSVyc3AiICJcbiIKKyAgICAgICAgInB1c2hxICUlcmF4
IiAiXG4iCisgICAgICAgICJwdXNocSAlJXJjeCIgIlxuIgorICAgICAgICAicHVzaHEgJSVyZHgi
ICJcbiIKKyAgICAgICAgInB1c2hxICUlcmJ4IiAiXG4iCisgICAgICAgICJjYWxscSAqJSVyYXgi
ICJcbiIKKyAgICAgICAgImFkZHEgJVtzaXplRGlmZl0sICUlcnNwIiAiXG4iCisgICAgICAgIDoK
KyAgICAgICAgOiAiYSIgKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpCisgICAgICAgICwgImMiIChj
YWxsV2l0aFN0YWNrU2l6ZVByb2JlRnVuY3Rpb24pCisgICAgICAgICwgImQiIChmdW5jdGlvbikK
KyAgICAgICAgLCAiYiIgKGdsb2JhbE9iamVjdCkKKyAgICAgICAgLCBbc2l6ZURpZmZdICJybSIg
KHNpemVEaWZmKQorICAgICAgICA6ICJtZW1vcnkiCisgICAgKTsKKyNlbmRpZiAvLyBPUyhEQVJX
SU4pICYmIENQVShYODZfNjQpCisKKyAgICBPcHRpb25zOjptYXhQZXJUaHJlYWRTdGFja1VzYWdl
KCkgPSBvcmlnaW5hbE1heFBlclRocmVhZFN0YWNrVXNhZ2U7CisgICAgaGVscGVyLnVwZGF0ZVZN
U3RhY2tMaW1pdHMoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5zb2Z0U3RhY2tMaW1pdCgpID09
IG9yaWdpbmFsVk1Tb2Z0U3RhY2tMaW1pdCk7CisgICAgUkVMRUFTRV9BU1NFUlQodm0uc3RhY2tM
aW1pdCgpID09IG9yaWdpbmFsVk1TdGFja0xpbWl0KTsKKworICAgIHJldHVybiBlbmNvZGVkSlNV
bmRlZmluZWQoKTsKKworI2Vsc2UgLy8gbm90IEVOQUJMRShNQVNNX1BST0JFKQorICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiTm90IHN1cHBvcnRlZCBm
b3IgdGhpcyBwbGF0Zm9ybSIpOworI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQorfQorCiAv
LyBDcmVhdGVzIGEgbmV3IGdsb2JhbCBvYmplY3QuCiAvLyBVc2FnZTogJHZtLmNyZWF0ZUdsb2Jh
bE9iamVjdCgpCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNy
ZWF0ZUdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
KQpAQCAtMjYzMCw2ICsyNzYzLDggQEAgdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiAgICAgYWRkRnVuY3Rpb24odm0sICJoYXZlQUJhZFRpbWUiLCBmdW5jdGlvbkhhdmVB
QmFkVGltZSwgMSk7CiAgICAgYWRkRnVuY3Rpb24odm0sICJpc0hhdmluZ0FCYWRUaW1lIiwgZnVu
Y3Rpb25Jc0hhdmluZ0FCYWRUaW1lLCAxKTsKIAorICAgIGFkZEZ1bmN0aW9uKHZtLCAiY2FsbFdp
dGhTdGFja1NpemUiLCBmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCAyKTsKKwogICAgIGFkZEZ1
bmN0aW9uKHZtLCAiY3JlYXRlR2xvYmFsT2JqZWN0IiwgZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmpl
Y3QsIDApOwogICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlUHJveHkiLCBmdW5jdGlvbkNyZWF0
ZVByb3h5LCAxKTsKICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZVJ1bnRpbWVBcnJheSIsIGZ1
bmN0aW9uQ3JlYXRlUnVudGltZUFycmF5LCAwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjUyMjE0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5o
PgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9EYXRh
TG9nLmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrQ2hlY2suaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTE2OTQsNiAr
MTY5NSwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVQYXR0ZXJu
PiBjb21waWxlKEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBhbGxvY2F0b3IsIENvbmN1cnJlbnRKU0xv
Y2sqIGxvY2ssIEVycm9yQ29kZSYgZXJyb3JDb2RlKQogICAgIHsKKyAgICAgICAgaWYgKFVOTElL
RUxZKCFpc1NhZmVUb1JlY3Vyc2UoKSkpIHsKKyAgICAgICAgICAgIGVycm9yQ29kZSA9IEVycm9y
Q29kZTo6VG9vTWFueURpc2p1bmN0aW9uczsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisKICAgICAgICAgcmVnZXhCZWdpbihtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJu
cywgbV9wYXR0ZXJuLm1fYm9keS0+bV9jYWxsRnJhbWVTaXplLCBtX3BhdHRlcm4ubV9ib2R5LT5t
X2FsdGVybmF0aXZlc1swXS0+b25jZVRocm91Z2goKSk7CiAgICAgICAgIGlmIChhdXRvIGVycm9y
ID0gZW1pdERpc2p1bmN0aW9uKG1fcGF0dGVybi5tX2JvZHksIDAsIDApKSB7CiAgICAgICAgICAg
ICBlcnJvckNvZGUgPSBlcnJvci52YWx1ZSgpOwpAQCAtMjAyOCw2ICsyMDM0LDkgQEAgcHVibGlj
OgogCiAgICAgT3B0aW9uYWw8RXJyb3JDb2RlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdERpc2p1
bmN0aW9uKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIENoZWNrZWQ8dW5zaWduZWQs
IFJlY29yZE92ZXJmbG93PiBpbnB1dENvdW50QWxyZWFkeUNoZWNrZWQsIHVuc2lnbmVkIHBhcmVu
dGhlc2VzSW5wdXRDb3VudEFscmVhZHlDaGVja2VkKQogICAgIHsKKyAgICAgICAgaWYgKFVOTElL
RUxZKCFpc1NhZmVUb1JlY3Vyc2UoKSkpCisgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2RlOjpU
b29NYW55RGlzanVuY3Rpb25zOworCiAgICAgICAgIGZvciAodW5zaWduZWQgYWx0ID0gMDsgYWx0
IDwgZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKTsgKythbHQpIHsKICAgICAgICAg
ICAgIGF1dG8gY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgPSBpbnB1dENvdW50QWxyZWFkeUNo
ZWNrZWQ7CiAKQEAgLTI0MDUsOCArMjQxNCwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0
ZToKKyAgICBpbmxpbmUgYm9vbCBpc1NhZmVUb1JlY3Vyc2UoKSB7IHJldHVybiBtX3N0YWNrQ2hl
Y2suaXNTYWZlVG9SZWN1cnNlKCk7IH0KKwogICAgIFlhcnJQYXR0ZXJuJiBtX3BhdHRlcm47CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVEaXNqdW5jdGlvbj4gbV9ib2R5RGlzanVuY3Rpb247Cisg
ICAgU3RhY2tDaGVjayBtX3N0YWNrQ2hlY2s7CiAgICAgdW5zaWduZWQgbV9jdXJyZW50QWx0ZXJu
YXRpdmVJbmRleCB7IDAgfTsKICAgICBWZWN0b3I8UGFyZW50aGVzZXNTdGFja0VudHJ5PiBtX3Bh
cmVudGhlc2VzU3RhY2s7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rp
b24+PiBtX2FsbFBhcmVudGhlc2VzSW5mbzsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTIyMTQpCisrKyBT
b3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE5
LTExLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBz
dGFjayBvdmVyZmxvdyBjaGVjayBpbiBZYXJyOjpCeXRlQ29tcGlsZXI6OmVtaXREaXNqdW5jdGlv
bigpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAz
OTM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjYyNDcyND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxLiBBZGQgYSBTdGFja0NoZWNrIHV0aWxp
dHkgY2xhc3Mgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGtlZXAgcmVpbnZlbnRpbmcgdGhpcwor
ICAgICAgICAgICBldmVyeSB0aW1lIHdlIG5lZWQgdG8gYWRkIHN0YWNrIGNoZWNraW5nIHNvbWV3
aGVyZS4KKyAgICAgICAgMi4gUmVuYW1lIHNvbWUgYXJndW1lbnRzIGFuZCBjb25zdGFudHMgaW4g
U3RhY2tCb3VuZHMgdG8gYmUgbW9yZSBkZXNjcmlwdGl2ZSBvZgorICAgICAgICAgICB3aGF0IHRo
ZXkgYWN0dWFsbHkgYXJlLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9TdGFja0Jv
dW5kcy5oOgorICAgICAgICAoV1RGOjpTdGFja0JvdW5kczo6cmVjdXJzaW9uTGltaXQgY29uc3Qp
OgorICAgICAgICAqIHd0Zi9TdGFja0NoZWNrLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpTdGFj
a0NoZWNrOjpTdGFja0NoZWNrKToKKyAgICAgICAgKFdURjo6U3RhY2tDaGVjazo6aXNTYWZlVG9S
ZWN1cnNlKToKKwogMjAxOS0xMS0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIHJlbW5hbnRzIG9mIHN1cHBvcnQgY29kZSBmb3IgYW4gdXB3YXJkcyBn
cm93aW5nIHN0YWNrLgpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyNTIyMTQpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02OTQsNiArNjk0LDcgQEAKIAkJRjcyQkJEQjEw
N0ZBNDI0ODg2MTc4QjlFIC8qIFN5bWJvbEltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3ltYm9sSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFMDVGQUU2MUZEQjIxNDMwMDA5MzIzMCAvKiBEdW1iUHRyVHJhaXRzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IER1bWJQdHJUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkUwNUZBRkUxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV1RGQXNzZXJ0aW9ucy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMUQ2RDg3MjM3NDAxQ0QwMDdBNUMy
NiAvKiBTdGFja0NoZWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNr
Q2hlY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxRTJDMzkyMjQwQzA1NDAw
RjZCNzI5IC8qIFB0clRhZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQdHJUYWcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTFFMkM0MTIyNDE4
N0M2MDBGNkI3MjkgLyogUGxhdGZvcm1SZWdpc3RlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1SZWdpc3RlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTM4NDIzNDIzMjVDQzgwMDA5REQ0NDUgLyogUmVzb3VyY2VVc2FnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVVzYWdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTUyLDYgKzExNTMsNyBAQAogCQkJCUE4QTQ3MzBE
MTUxQTgyNUIwMDQxMjNGRiAvKiBTcGVjdHJ1bS5oICovLAogCQkJCUE4QTQ3MzBFMTUxQTgyNUIw
MDQxMjNGRiAvKiBTdGFja0JvdW5kcy5jcHAgKi8sCiAJCQkJQThBNDczMEYxNTFBODI1QjAwNDEy
M0ZGIC8qIFN0YWNrQm91bmRzLmggKi8sCisJCQkJRkUxRDZEODcyMzc0MDFDRDAwN0E1QzI2IC8q
IFN0YWNrQ2hlY2suaCAqLywKIAkJCQlGRUVBNERGODIxNkQ3QkU0MDBBQzA2MDIgLyogU3RhY2tQ
b2ludGVyLmNwcCAqLywKIAkJCQlGRUVBNERGNzIxNkQ2MDhDMDBBQzA2MDIgLyogU3RhY2tQb2lu
dGVyLmggKi8sCiAJCQkJMEY5REFBMDQxRkQxQzM3QjAwNzlDNUIyIC8qIFN0YWNrU2hvdC5oICov
LApJbmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI1MjIxNCkKKysrIFNvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDcgQEAg
c2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFNwYW5uaW5nVHJlZS5oCiAgICAgU3BlY3RydW0u
aAogICAgIFN0YWNrQm91bmRzLmgKKyAgICBTdGFja0NoZWNrLmgKICAgICBTdGFja1BvaW50ZXIu
aAogICAgIFN0YWNrU2hvdC5oCiAgICAgU3RhY2tTaG90UHJvZmlsZXIuaApJbmRleDogU291cmNl
L1dURi93dGYvU3RhY2tCb3VuZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TdGFj
a0JvdW5kcy5oCShyZXZpc2lvbiAyNTIyMTQpCisrKyBTb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5k
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMTUgQEAgbmFtZXNwYWNlIFdURiB7CiAK
IGNsYXNzIFN0YWNrQm91bmRzIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKIAogICAgIC8vIFRoaXMgNjRrIG51bWJlciB3YXMgcGlja2VkIGJlY2F1c2UgYSBzYW1wbGlu
ZyBvZiBzdGFjayB1c2FnZSBkaWZmZXJlbmNlcwogICAgIC8vIGJldHdlZW4gY29uc2VjdXRpdmUg
ZW50cmllcyBpbnRvIG9uZSBvZiB0aGUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUuLi4oKQogICAgIC8v
IGZ1bmN0aW9ucyB3YXMgc2VlbiB0byBiZSBhcyBoaWdoIGFzIDI3ay4gSGVuY2UsIDY0ayBpcyBj
aG9zZW4gYXMgYQogICAgIC8vIGNvbnNlcnZhdGl2ZSBhdmFpbGFiaWxpdHkgdmFsdWUgdGhhdCBp
cyBub3QgdG9vIGxhcmdlIGJ1dCBjb21mb3J0YWJseQogICAgIC8vIGV4Y2VlZHMgMjdrIHdpdGgg
c29tZSBidWZmZXIgZm9yIGVycm9yLgotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNfZGVm
YXVsdEF2YWlsYWJpbGl0eURlbHRhID0gNjQgKiAxMDI0OworICAgIHN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IERlZmF1bHRSZXNlcnZlZFpvbmUgPSA2NCAqIDEwMjQ7CiAKLXB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3RleHByIFN0YWNrQm91bmRzIGVtcHR5Qm91bmRzKCkgeyByZXR1cm4gU3RhY2tC
b3VuZHMoKTsgfQogCiAjaWYgSEFWRShTVEFDS19CT1VORFNfRk9SX05FV19USFJFQUQpCkBAIC04
MiwxMCArODIsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKG1fb3JpZ2luID49IHApICYm
IChwID4gbV9ib3VuZCk7CiAgICAgfQogCi0gICAgdm9pZCogcmVjdXJzaW9uTGltaXQoc2l6ZV90
IG1pbkF2YWlsYWJsZURlbHRhID0gc19kZWZhdWx0QXZhaWxhYmlsaXR5RGVsdGEpIGNvbnN0Cisg
ICAgdm9pZCogcmVjdXJzaW9uTGltaXQoc2l6ZV90IG1pblJlc2VydmVkWm9uZSA9IERlZmF1bHRS
ZXNlcnZlZFpvbmUpIGNvbnN0CiAgICAgewogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7Ci0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4obV9ib3VuZCkgKyBtaW5BdmFpbGFibGVE
ZWx0YTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihtX2JvdW5kKSArIG1pblJl
c2VydmVkWm9uZTsKICAgICB9CiAKICAgICB2b2lkKiByZWN1cnNpb25MaW1pdChjaGFyKiBzdGFy
dE9mVXNlclN0YWNrLCBzaXplX3QgbWF4VXNlclN0YWNrLCBzaXplX3QgcmVzZXJ2ZWRab25lU2l6
ZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0YWNrQ2hlY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9TdGFja0NoZWNrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dU
Ri93dGYvU3RhY2tDaGVjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi9TdGFja0JvdW5kcy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
KworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFN0YWNrQ2hlY2sgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFN0YWNrQ2hlY2soY29uc3QgU3RhY2tCb3VuZHMm
IGJvdW5kcyA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCksIHNpemVfdCBtaW5SZXNlcnZlZFpv
bmUgPSBTdGFja0JvdW5kczo6RGVmYXVsdFJlc2VydmVkWm9uZSkKKyAgICAgICAgOiBtX3N0YWNr
TGltaXQoYm91bmRzLnJlY3Vyc2lvbkxpbWl0KG1pblJlc2VydmVkWm9uZSkpCisgICAgeyB9CisK
KyAgICBpbmxpbmUgYm9vbCBpc1NhZmVUb1JlY3Vyc2UoKSB7IHJldHVybiBjdXJyZW50U3RhY2tQ
b2ludGVyKCkgPj0gbV9zdGFja0xpbWl0OyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCogbV9zdGFj
a0xpbWl0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6U3RhY2tDaGVj
azsK
</data>
<flag name="review"
          id="398853"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383111</attachid>
            <date>2019-11-07 22:21:55 -0800</date>
            <delta_ts>2019-11-07 23:00:37 -0800</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-203936.patch</filename>
            <type>text/plain</type>
            <size>22351</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTIyMzIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE5IEBACisyMDE5LTExLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgYSBzdGFjayBvdmVyZmxvdyBjaGVjayBpbiBZYXJyOjpCeXRlQ29t
cGlsZXI6OmVtaXREaXNqdW5jdGlvbigpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAzOTM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjYyNDcy
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBUaGlzIGlz
c3VlIG9yaWdpbmFsbHkgbWFuaWZlc3RlZCBhcyBpbmNvcnJlY3QtZXhjZXB0aW9uLWFzc2VydGlv
bi1pbi1vcGVyYXRpb25SZWdFeHBFeGVjTm9uR2xvYmFsT3JTdGlja3kuanMKKyAgICAgICAgZmFp
bGluZyBvbiBpT1MgZGV2aWNlcyBkdWUgdG8gaXRzIHNtYWxsZXIgc3RhY2suICBXZSBhZGFwdGVk
IHRoZSBvcmlnaW5hbCB0ZXN0CisgICAgICAgIGhlcmUgdXNpbmcgJHZtLmNhbGxXaXRoU3RhY2tT
aXplKCkgdG8gcmVwcm9kdWNlIHRoZSBpc3N1ZSBvbiB4ODZfNjQgdGhvdWdoIGl0CisgICAgICAg
IGhhcyBhIG11Y2ggbGFyZ2VyIHBoeXNpY2FsIHN0YWNrIHRvIHdvcmsgd2l0aC4gIFRoaXMgbmV3
IHRlc3Qgd2lsbCBjcmFzaCB3aGlsZQorICAgICAgICBzdGVwcGluZyBvbiB0aGUgZ3VhcmQgcGFn
ZSBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgc3RhY2sgaWYgdGhlIGZpeCBpcyBub3QgYXBwbGllZC4K
KworICAgICAgICAqIHN0cmVzcy9zdGFjay1vdmVyZmxvdy1pbi15YXJyLWJ5dGVDb21waWxlLmpz
OiBBZGRlZC4KKwogMjAxOS0xMS0wNyAgVHVvbWFzIEthcmtrYWluZW4gIDx0dW9tYXMud2Via2l0
QGFwcGxlLmNvbT4KIAogICAgICAgICBkaWRQYXNzU29tZVRlc3RzU2lsZW50eSBpcyBtaXNzcGVs
bGVkIGluIHN0YW5kYWxvbmUtcHJlLmpzCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9zdGFjay1vdmVy
Zmxvdy1pbi15YXJyLWJ5dGVDb21waWxlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNz
L3N0YWNrLW92ZXJmbG93LWluLXlhcnItYnl0ZUNvbXBpbGUuanMJKG5vbmV4aXN0ZW50KQorKysg
SlNUZXN0cy9zdHJlc3Mvc3RhY2stb3ZlcmZsb3ctaW4teWFyci1ieXRlQ29tcGlsZS5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDMwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tZGlzYWJs
ZU9wdGlvbnNGcmVlemluZ0ZvclRlc3RpbmciKQorLy9AIHNraXAgaWYgJGhvc3RPUyAhPSAiZGFy
d2luIiBvciAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiCisKK2Z1bmN0aW9uIGZvbygpIHsKKyAg
ICBjbGFzcyBDIHsKKyAgICAgICAgY29uc3RydWN0b3IoZnVuYykgeworICAgICAgICAgICAgdGhp
cy5mdW5jID0gZnVuYzsKKyAgICAgICAgfQorICAgICAgICBydW5UZXN0KCkgeworICAgICAgICAg
ICAgdGhpcy5mdW5jKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZnVuY3Rpb24gcmVjdXJzZUFu
ZFRlc3QoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZWN1cnNlQW5kVGVzdCgpOwor
ICAgICAgICAgICAgdGVzdC5ydW5UZXN0KCk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBjb25zdCBob3dNYW55UGFyZW50aGVzZXMgPSAxMDAwOworICAgIGNv
bnN0IGRlZXBSRSA9IG5ldyBSZWdFeHAoJygnLnJlcGVhdChob3dNYW55UGFyZW50aGVzZXMpICsg
JyknLnJlcGVhdChob3dNYW55UGFyZW50aGVzZXMpKTsKKyAgICBsZXQgdGVzdCA9IAorICAgICAg
ICBuZXcgQygoKSA9PiB7CisgICAgICAgICAgICBkZWVwUkUuZXhlYygnJyk7CisgICAgICAgIH0p
OworCisgICAgcmVjdXJzZUFuZFRlc3QoKTsKK30KKworJHZtLmNhbGxXaXRoU3RhY2tTaXplKGZv
bywgMTAwKjEwMjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjIz
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw2MCBAQAorMjAxOS0xMS0wNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIGEgc3RhY2sgb3ZlcmZsb3cgY2hlY2sgaW4gWWFycjo6Qnl0ZUNvbXBp
bGVyOjplbWl0RGlzanVuY3Rpb24oKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzkzNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY2MjQ3MjQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgQmFzaWNhbGx5
LCBhbnkgZnVuY3Rpb25zIGJlbG93IFlhcnI6OkJ5dGVDb21waWxlcjo6Y29tcGlsZSgpIHRoYXQg
cmVjdXJzZXMgbmVlZAorICAgICAgICB0byBjaGVjayBpZiBpdCdzIHNhZmUgdG8gcmVjdXJzZSBi
ZWZvcmUgZG9pbmcgc28uICBUaGlzIHBhdGNoIGFkZHMgdGhlIHN0YWNrCisgICAgICAgIGNoZWNr
cyBpbiBZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUoKSBiZWNhdXNlIGl0IGlzIHRoZSBlbnRy
eSBwb2ludCB0byB0aGlzCisgICAgICAgIHN1Yi1zeXN0ZW0sIGFuZCBZYXJyOjpCeXRlQ29tcGls
ZXI6OmVtaXREaXNqdW5jdGlvbigpIGJlY2F1c2UgaXQgaXMgdGhlIG9ubHkKKyAgICAgICAgZnVu
Y3Rpb24gdGhhdCByZWN1cnNlcy4gIEFsbCBvdGhlciBmdW5jdGlvbnMgY2FsbGVkIGJlbG93IGNv
bXBpbGUoKSBhcmUgZWl0aGVyCisgICAgICAgIGxlYWYgZnVuY3Rpb25zIG9yIGhhdmUgc2hhbGxv
dyBzdGFjayB1c2FnZS4gIEhlbmNlLCB0aGVpciBzdGFjayBuZWVkcyBhcmUgY292ZXJlZAorICAg
ICAgICBieSB0aGUgRGVmYXVsdFJlc2VydmVkWm9uZSwgYW5kIHRoZXkgZG8gbm90IG5lZWQgc3Rh
Y2sgY2hlY2tzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBkb2VzIHRoZSBmb2xsb3dpbmc6
CisgICAgICAgIDEuIEFkZGVkICR2bS5jYWxsV2l0aFN0YWNrU2l6ZSgpIHdoaWNoIGNhbiBiZSB1
c2VkIHRvIGNhbGwgYSB0ZXN0IGZ1bmN0aW9uIG5lYXIKKyAgICAgICAgICAgdGhlIGVuZCBvZiB0
aGUgcGh5c2ljYWwgc3RhY2suICBUaGlzIGVuYWJsZXMgaXMgdG8gc2ltdWxhdGUgdGhlIHNtYWxs
ZXIgc3RhY2sKKyAgICAgICAgICAgc2l6ZSBvZiBtb3JlIHJlc291cmNlIGNvbnN0cmFpbmVkIGRl
dmljZXMuCisKKyAgICAgICAgICAgJHZtLmNhbGxXaXRoU3RhY2tTaXplKCkgdXNlcyBpbmxpbmUg
YXNtIHRvIGFkanVzdCB0aGUgc3RhY2sgcG9pbnRlciBhbmQKKyAgICAgICAgICAgZG9lcyB0aGUg
Y2FsbGJhY2sgdmlhIHRoZSBKSVQgcHJvYmUgdHJhbXBvbGluZS4KKworICAgICAgICAyLiBBZGRl
ZCB0aGUgLS1kaXNhYmxlT3B0aW9uc0ZyZWV6aW5nRm9yVGVzdGluZyB0byB0aGUganNjIHNoZWxs
IHRvIG1ha2UgaXQKKyAgICAgICAgICAgcG9zc2libGUgdG8gZGlzYWJsZSBmcmVlemluZyBvZiBK
U0Mgb3B0aW9ucy4gICR2bS5jYWxsV2l0aFN0YWNrU2l6ZSgpIHJlbGllcworICAgICAgICAgICBv
biB0aGlzIHRvIG1vZGlmeSB0aGUgVk0ncyBzdGFjayBsaW1pdHMuCisKKyAgICAgICAgMy4gUmVt
b3ZlZCB0aGUgaW5saW5lIG1vZGlmaWVyIG9uIFZNOjp1cGRhdGVTdGFja0xpbWl0cygpIHNvIHRo
YXQgd2UgY2FuIGNhbGwgaXQKKyAgICAgICAgICAgZnJvbSAkdm0uY2FsbFdpdGhTdGFja1NpemUo
KSBhcyB3ZWxsLiAgSXQgaXMgbm90IGEgcGVyZm9ybWFuY2UgY3JpdGljYWwKKyAgICAgICAgICAg
ZnVuY3Rpb24gYW5kIGlzIHJhcmVseSBjYWxsZWQuCisKKyAgICAgICAgNC4gQWRkZWQgYSBKU0Rv
bGxhclZNSGVscGVyIGNsYXNzIHRoYXQgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSBjYW4gZGVj
bGFyZSBhcworICAgICAgICAgICBhIGZyaWVuZC4gIFRoaXMgZ2l2ZXMgJHZtIGEgYmFja2Rvb3Ig
aW50byB0aGUgcHJpdmF0ZSBmdW5jdGlvbnMgYW5kIGZpZWxkcyBvZgorICAgICAgICAgICBjbGFz
c2VzIGZvciBpdHMgZGVidWdnaW5nIHdvcmsuICBJbiB0aGlzIHBhdGNoLCB3ZSdyZSBvbmx5IHVz
aW5nIGl0IHRvIGFjY2VzcworICAgICAgICAgICBWTTo6dXBkYXRlVk1TdGFja0xpbWl0cygpLgor
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50
cyk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjp1cGRhdGVT
dGFja0xpbWl0cyk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRvb2xzL0pT
RG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpKU0RvbGxhclZNSGVscGVyOjpKU0RvbGxhclZN
SGVscGVyKToKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTUhlbHBlcjo6dm1TdGFja1N0YXJ0KToK
KyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTUhlbHBlcjo6dm1TdGFja0xpbWl0KToKKyAgICAgICAg
KEpTQzo6SlNEb2xsYXJWTUhlbHBlcjo6dm1Tb2Z0U3RhY2tMaW1pdCk6CisgICAgICAgIChKU0M6
OkpTRG9sbGFyVk1IZWxwZXI6OnVwZGF0ZVZNU3RhY2tMaW1pdHMpOgorICAgICAgICAoSlNDOjpj
YWxsV2l0aFN0YWNrU2l6ZVByb2JlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNh
bGxXaXRoU3RhY2tTaXplKToKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoSUdOT1JFX1dBUk5JTkdTX0JFR0lOKTogRGVsZXRlZC4KKyAgICAgICAg
KiB5YXJyL1lhcnJJbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21w
aWxlcjo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6ZW1pdERp
c2p1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjppc1NhZmVUb1Jl
Y3Vyc2UpOgorCiAyMDE5LTExLTA3ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29t
PgogCiAgICAgICAgIFVzZSBmZXdlciB2aXJ0dWFsIHJlZ2lzdGVycyBpbiBXYXNtIExMSW50Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjUyMjMyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OTEsNiArMjg5MSwxMCBAQCB2
b2lkIENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50cyhpbnQgYXJnCiAgICAgICAgICAgICBtX2Rl
c3Ryb3lWTSA9IHRydWU7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAgICAg
ICBpZiAoIXN0cmNtcChhcmcsICItLWRpc2FibGVPcHRpb25zRnJlZXppbmdGb3JUZXN0aW5nIikp
IHsKKyAgICAgICAgICAgIENvbmZpZzo6ZGlzYWJsZUZyZWV6aW5nRm9yVGVzdGluZygpOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgY2hh
ciogdGltZW91dE11bHRpcGxpZXJPcHRTdHIgPSAiLS10aW1lb3V0TXVsdGlwbGllcj0iOwogICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdGltZW91dE11bHRpcGxpZXJPcHRTdHJMZW5ndGgg
PSBzdHJsZW4odGltZW91dE11bHRpcGxpZXJPcHRTdHIpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjUyMjMyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODEsNyArODgxLDcgQEAgc3Rh
dGljIHZvaWQgcHJlQ29tbWl0U3RhY2tNZW1vcnkodm9pZCogcwogfQogI2VuZGlmCiAKLWlubGlu
ZSB2b2lkIFZNOjp1cGRhdGVTdGFja0xpbWl0cygpCit2b2lkIFZNOjp1cGRhdGVTdGFja0xpbWl0
cygpCiB7CiAjaWYgT1MoV0lORE9XUykKICAgICB2b2lkKiBsYXN0U29mdFN0YWNrTGltaXQgPSBt
X3NvZnRTdGFja0xpbWl0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZp
c2lvbiAyNTIyMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDkzLDYgKzEwOTMsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBIZWFwOwogICAgIGZyaWVuZCBjbGFzcyBDYXRjaFNjb3BlOwogICAgIGZyaWVuZCBjbGFzcyBF
eGNlcHRpb25TY29wZTsKKyAgICBmcmllbmQgY2xhc3MgSlNEb2xsYXJWTUhlbHBlcjsKICAgICBm
cmllbmQgY2xhc3MgVGhyb3dTY29wZTsKICAgICBmcmllbmQgY2xhc3MgVk1UcmFwczsKICAgICBm
cmllbmQgY2xhc3MgV1RGOjpEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT47CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCShyZXZpc2lvbiAyNTIyMzIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJET01KSVRHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5o
IgorI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmFjZXJzLmgiCiAjaW5jbHVk
ZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKQEAgLTQz
LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIK
ICNpbmNsdWRlICJQYXJzZXIuaCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRl
ICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU25pcHBldC5oIgogI2luY2x1ZGUgIlNuaXBw
ZXRQYXJhbXMuaCIKQEAgLTY0LDYgKzY2LDI2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUtYWRkcmVzcyIpCiAKK2V4dGVybiAiQyIgdm9pZCBj
dGlNYXNtUHJvYmVUcmFtcG9saW5lKCk7CisKK25hbWVzcGFjZSBKU0MgeworCisvLyBUaGlzIGNs
YXNzIGlzIG9ubHkgaGVyZSBhcyBhIHNpbXBsZSB3YXkgdG8gZ3JhbnQgSlNEb2xsYXJWTSBmcmll
bmQgcHJpdmlsZWdlcworLy8gdG8gYWxsIHRoZSBjbGFzc2VzIHRoYXQgaXQgbmVlZHMgc3BlY2lh
bCBhY2Nlc3MgdG8uCitjbGFzcyBKU0RvbGxhclZNSGVscGVyIHsKK3B1YmxpYzoKKyAgICBKU0Rv
bGxhclZNSGVscGVyKFZNJiB2bSkKKyAgICAgICAgOiBtX3ZtKHZtKQorICAgIHsgfQorCisgICAg
dm9pZCB1cGRhdGVWTVN0YWNrTGltaXRzKCkgeyByZXR1cm4gbV92bS51cGRhdGVTdGFja0xpbWl0
cygpOyB9OworCitwcml2YXRlOgorICAgIFZNJiBtX3ZtOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKIG5hbWVzcGFjZSB7CiAKIC8vIFdlIG11c3QgUkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6
dXNlRG9sbGFyVk0oKSkgaW4gYWxsIEpTRG9sbGFyVk0gZnVuY3Rpb25zCkBAIC0xOTY4LDYgKzE5
OTAsMTIwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXQtPmlzSGF2aW5nQUJhZFRpbWUo
KSkpOwogfQogCisvLyBDYWxscyB0aGUgc3BlY2lmaWVkIHRlc3QgZnVuY3Rpb24gYWZ0ZXIgYWRq
dXN0aW5nIHRoZSBzdGFjayB0byBoYXZlIHRoZSBzcGVjaWZpZWQKKy8vIHJlbWFpbmluZyBzaXpl
IGZyb20gdGhlIGVuZCBvZiB0aGUgcGh5c2ljYWwgc3RhY2suCisvLyBVc2FnZTogJHZtLmNhbGxX
aXRoU3RhY2tTaXplKGZ1bmNUb0NhbGwsIGRlc2lyZWRTdGFja1NpemUpCisvLworLy8gVGhpcyBm
dW5jdGlvbiB3aWxsIG9ubHkgd29yayBpbiB0ZXN0IGNvbmZpZ3VyYXRpb25zLCBzcGVjaWZpY2Fs
bHksIG9ubHkgaWYgSlNDCisvLyBvcHRpb25zIGFyZSBub3QgZnJvemVuLiBGb3IgdGhlIGpzYyBz
aGVsbCwgdGhlIC0tZGlzYWJsZU9wdGlvbnNGcmVlemluZ0ZvclRlc3RpbmcKKy8vIGFyZ3VtZW50
IG5lZWRzIHRvIGJlIHBhc3NlZCBpbiBvbiB0aGUgY29tbWFuZCBsaW5lLgorCisjaWYgRU5BQkxF
KE1BU01fUFJPQkUpCitzdGF0aWMgdm9pZCBjYWxsV2l0aFN0YWNrU2l6ZVByb2JlRnVuY3Rpb24o
UHJvYmU6OlN0YXRlKiBzdGF0ZSkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gYml0d2lzZV9jYXN0PEpTR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmFyZyk7CisgICAgSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KHN0YXRlLT5wcm9iZUZ1
bmN0aW9uKTsKKyAgICBzdGF0ZS0+aW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gPSBudWxscHRyOwor
ICAgIHN0YXRlLT5pbml0aWFsaXplU3RhY2tBcmcgPSBudWxscHRyOworCisgICAgRG9sbGFyVk1B
c3NlcnRTY29wZSBhc3NlcnRTY29wZTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENh
bGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3M7CisgICAgY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGpzVW5kZWZpbmVkKCksIGFyZ3MpOworfQorI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JF
KQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxXaXRo
U3RhY2tTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworI2lmIE9TKERBUldJ
TikgJiYgQ1BVKFg4Nl82NCkKKyAgICBib29sIGlzU3VwcG9ydGVkQnlQbGF0Zm9ybSA9IHRydWU7
CisjZWxzZQorICAgIGJvb2wgaXNTdXBwb3J0ZWRCeVBsYXRmb3JtID0gZmFsc2U7CisjZW5kaWYK
KworICAgIGlmICghaXNTdXBwb3J0ZWRCeVBsYXRmb3JtKQorICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIk5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMg
cGxhdGZvcm0iKTsKKworI2lmIEVOQUJMRShNQVNNX1BST0JFKQorICAgIGlmIChnX2pzY0NvbmZp
Zy5pc1Blcm1hbmVudGx5RnJvemVuIHx8ICFnX2pzY0NvbmZpZy5kaXNhYmxlZEZyZWV6aW5nRm9y
VGVzdGluZykKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsICJPcHRpb25zIGFyZSBmcm96ZW4iKTsKKworICAgIGlmIChjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDIpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCAiSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIik7CisgICAgSlNWYWx1
ZSBhcmcwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIGFyZzEgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpOworICAgIGlmICghYXJnMC5pc0Z1bmN0aW9uKHZtKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJhcmcwIHNo
b3VsZCBiZSBhIGZ1bmN0aW9uIik7CisgICAgaWYgKCFhcmcxLmlzTnVtYmVyKCkpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiYXJnMSBzaG91
bGQgYmUgYSBudW1iZXIiKTsKKworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpT
RnVuY3Rpb24qPihhcmcwLnRvT2JqZWN0KGdsb2JhbE9iamVjdCkpOworICAgIHNpemVfdCBkZXNp
cmVkU3RhY2tTaXplID0gYXJnMS5hc051bWJlcigpOworCisgICAgY29uc3QgU3RhY2tCb3VuZHMm
IGJvdW5kcyA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7CisgICAgdWludDhfdCogY3VycmVu
dFN0YWNrUG9zaXRpb24gPSBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KGN1cnJlbnRTdGFja1BvaW50
ZXIoKSk7CisgICAgdWludDhfdCogZW5kID0gYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihib3VuZHMu
ZW5kKCkpOworICAgIHVpbnQ4X3QqIGRlc2lyZWRTdGFydCA9IGVuZCArIGRlc2lyZWRTdGFja1Np
emU7CisgICAgaWYgKGRlc2lyZWRTdGFydCA+PSBjdXJyZW50U3RhY2tQb3NpdGlvbikKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJVbmFibGUg
dG8gc2V0dXAgZGVzaXJlZCBzdGFjayBzaXplIik7CisKKyAgICBKU0RvbGxhclZNSGVscGVyIGhl
bHBlcih2bSk7CisKKyAgICB1bnNpZ25lZCBvcmlnaW5hbE1heFBlclRocmVhZFN0YWNrVXNhZ2Ug
PSBPcHRpb25zOjptYXhQZXJUaHJlYWRTdGFja1VzYWdlKCk7CisgICAgdm9pZCogb3JpZ2luYWxW
TVNvZnRTdGFja0xpbWl0ID0gdm0uc29mdFN0YWNrTGltaXQoKTsKKyAgICB2b2lkKiBvcmlnaW5h
bFZNU3RhY2tMaW1pdCA9IHZtLnN0YWNrTGltaXQoKTsKKworICAgIC8vIFRoaXMgaXMgYSBoYWNr
IHRvIG1ha2UgdGhlIFZNIHRoaW5rIGl0J3Mgc3RhY2sgbGltaXRzIGFyZSBuZWFyIHRoZSBlbmQK
KyAgICAvLyBvZiB0aGUgcGh5c2ljYWwgc3RhY2suCisgICAgdWludDhfdCogdm1TdGFja1N0YXJ0
ID0gYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih2bS5zdGFja1BvaW50ZXJBdFZNRW50cnkoKSk7Cisg
ICAgdWludDhfdCogdm1TdGFja0VuZCA9IHZtU3RhY2tTdGFydCAtIG9yaWdpbmFsTWF4UGVyVGhy
ZWFkU3RhY2tVc2FnZTsKKyAgICBwdHJkaWZmX3Qgc2l6ZURpZmYgPSB2bVN0YWNrRW5kIC0gZW5k
OworICAgIFJFTEVBU0VfQVNTRVJUKHNpemVEaWZmID49IDApOworICAgIFJFTEVBU0VfQVNTRVJU
KHNpemVEaWZmIDwgVUlOVF9NQVgpOworCisgICAgT3B0aW9uczo6bWF4UGVyVGhyZWFkU3RhY2tV
c2FnZSgpID0gb3JpZ2luYWxNYXhQZXJUaHJlYWRTdGFja1VzYWdlICsgc2l6ZURpZmY7CisgICAg
aGVscGVyLnVwZGF0ZVZNU3RhY2tMaW1pdHMoKTsKKworI2lmIE9TKERBUldJTikgJiYgQ1BVKFg4
Nl82NCkKKyAgICBfX2FzbV9fIHZvbGF0aWxlICgKKyAgICAgICAgInN1YnEgJVtzaXplRGlmZl0s
ICUlcnNwIiAiXG4iCisgICAgICAgICJwdXNocSAlJXJheCIgIlxuIgorICAgICAgICAicHVzaHEg
JSVyY3giICJcbiIKKyAgICAgICAgInB1c2hxICUlcmR4IiAiXG4iCisgICAgICAgICJwdXNocSAl
JXJieCIgIlxuIgorICAgICAgICAiY2FsbHEgKiUlcmF4IiAiXG4iCisgICAgICAgICJhZGRxICVb
c2l6ZURpZmZdLCAlJXJzcCIgIlxuIgorICAgICAgICA6CisgICAgICAgIDogImEiIChjdGlNYXNt
UHJvYmVUcmFtcG9saW5lKQorICAgICAgICAsICJjIiAoY2FsbFdpdGhTdGFja1NpemVQcm9iZUZ1
bmN0aW9uKQorICAgICAgICAsICJkIiAoZnVuY3Rpb24pCisgICAgICAgICwgImIiIChnbG9iYWxP
YmplY3QpCisgICAgICAgICwgW3NpemVEaWZmXSAicm0iIChzaXplRGlmZikKKyAgICAgICAgOiAi
bWVtb3J5IgorICAgICk7CisjZW5kaWYgLy8gT1MoREFSV0lOKSAmJiBDUFUoWDg2XzY0KQorCisg
ICAgT3B0aW9uczo6bWF4UGVyVGhyZWFkU3RhY2tVc2FnZSgpID0gb3JpZ2luYWxNYXhQZXJUaHJl
YWRTdGFja1VzYWdlOworICAgIGhlbHBlci51cGRhdGVWTVN0YWNrTGltaXRzKCk7CisgICAgUkVM
RUFTRV9BU1NFUlQodm0uc29mdFN0YWNrTGltaXQoKSA9PSBvcmlnaW5hbFZNU29mdFN0YWNrTGlt
aXQpOworICAgIFJFTEVBU0VfQVNTRVJUKHZtLnN0YWNrTGltaXQoKSA9PSBvcmlnaW5hbFZNU3Rh
Y2tMaW1pdCk7CisKKyAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7CisKKyNlbHNlIC8v
IG5vdCBFTkFCTEUoTUFTTV9QUk9CRSkKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIk5vdCBzdXBw
b3J0ZWQgZm9yIHRoaXMgcGxhdGZvcm0iKTsKKyNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkK
K30KKwogLy8gQ3JlYXRlcyBhIG5ldyBnbG9iYWwgb2JqZWN0LgogLy8gVXNhZ2U6ICR2bS5jcmVh
dGVHbG9iYWxPYmplY3QoKQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25DcmVhdGVHbG9iYWxPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKikKQEAgLTI2MzAsNiArMjc2Niw4IEBAIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogICAgIGFkZEZ1bmN0aW9uKHZtLCAiaGF2ZUFCYWRUaW1lIiwgZnVuY3Rp
b25IYXZlQUJhZFRpbWUsIDEpOwogICAgIGFkZEZ1bmN0aW9uKHZtLCAiaXNIYXZpbmdBQmFkVGlt
ZSIsIGZ1bmN0aW9uSXNIYXZpbmdBQmFkVGltZSwgMSk7CiAKKyAgICBhZGRGdW5jdGlvbih2bSwg
ImNhbGxXaXRoU3RhY2tTaXplIiwgZnVuY3Rpb25DYWxsV2l0aFN0YWNrU2l6ZSwgMik7CisKICAg
ICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZUdsb2JhbE9iamVjdCIsIGZ1bmN0aW9uQ3JlYXRlR2xv
YmFsT2JqZWN0LCAwKTsKICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZVByb3h5IiwgZnVuY3Rp
b25DcmVhdGVQcm94eSwgMSk7CiAgICAgYWRkRnVuY3Rpb24odm0sICJjcmVhdGVSdW50aW1lQXJy
YXkiLCBmdW5jdGlvbkNyZWF0ZVJ1bnRpbWVBcnJheSwgMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI1MjIzMikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJBbGxv
Y2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3
dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9TdGFja0NoZWNrLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0x
Njk0LDYgKzE2OTUsMTEgQEAgcHVibGljOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
UGF0dGVybj4gY29tcGlsZShCdW1wUG9pbnRlckFsbG9jYXRvciogYWxsb2NhdG9yLCBDb25jdXJy
ZW50SlNMb2NrKiBsb2NrLCBFcnJvckNvZGUmIGVycm9yQ29kZSkKICAgICB7CisgICAgICAgIGlm
IChVTkxJS0VMWSghaXNTYWZlVG9SZWN1cnNlKCkpKSB7CisgICAgICAgICAgICBlcnJvckNvZGUg
PSBFcnJvckNvZGU6OlRvb01hbnlEaXNqdW5jdGlvbnM7CisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgfQorCiAgICAgICAgIHJlZ2V4QmVnaW4obV9wYXR0ZXJuLm1fbnVtU3Vi
cGF0dGVybnMsIG1fcGF0dGVybi5tX2JvZHktPm1fY2FsbEZyYW1lU2l6ZSwgbV9wYXR0ZXJuLm1f
Ym9keS0+bV9hbHRlcm5hdGl2ZXNbMF0tPm9uY2VUaHJvdWdoKCkpOwogICAgICAgICBpZiAoYXV0
byBlcnJvciA9IGVtaXREaXNqdW5jdGlvbihtX3BhdHRlcm4ubV9ib2R5LCAwLCAwKSkgewogICAg
ICAgICAgICAgZXJyb3JDb2RlID0gZXJyb3IudmFsdWUoKTsKQEAgLTIwMjgsNiArMjAzNCw5IEBA
IHB1YmxpYzoKIAogICAgIE9wdGlvbmFsPEVycm9yQ29kZT4gV0FSTl9VTlVTRURfUkVUVVJOIGVt
aXREaXNqdW5jdGlvbihQYXR0ZXJuRGlzanVuY3Rpb24qIGRpc2p1bmN0aW9uLCBDaGVja2VkPHVu
c2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gaW5wdXRDb3VudEFscmVhZHlDaGVja2VkLCB1bnNpZ25l
ZCBwYXJlbnRoZXNlc0lucHV0Q291bnRBbHJlYWR5Q2hlY2tlZCkKICAgICB7CisgICAgICAgIGlm
IChVTkxJS0VMWSghaXNTYWZlVG9SZWN1cnNlKCkpKQorICAgICAgICAgICAgcmV0dXJuIEVycm9y
Q29kZTo6VG9vTWFueURpc2p1bmN0aW9uczsKKwogICAgICAgICBmb3IgKHVuc2lnbmVkIGFsdCA9
IDA7IGFsdCA8IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlcy5zaXplKCk7ICsrYWx0KSB7CiAg
ICAgICAgICAgICBhdXRvIGN1cnJlbnRDb3VudEFscmVhZHlDaGVja2VkID0gaW5wdXRDb3VudEFs
cmVhZHlDaGVja2VkOwogCkBAIC0yNDA1LDggKzI0MTQsMTEgQEAgcHVibGljOgogI2VuZGlmCiAK
IHByaXZhdGU6CisgICAgaW5saW5lIGJvb2wgaXNTYWZlVG9SZWN1cnNlKCkgeyByZXR1cm4gbV9z
dGFja0NoZWNrLmlzU2FmZVRvUmVjdXJzZSgpOyB9CisKICAgICBZYXJyUGF0dGVybiYgbV9wYXR0
ZXJuOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rpb24+IG1fYm9keURpc2p1bmN0
aW9uOworICAgIFN0YWNrQ2hlY2sgbV9zdGFja0NoZWNrOwogICAgIHVuc2lnbmVkIG1fY3VycmVu
dEFsdGVybmF0aXZlSW5kZXggeyAwIH07CiAgICAgVmVjdG9yPFBhcmVudGhlc2VzU3RhY2tFbnRy
eT4gbV9wYXJlbnRoZXNlc1N0YWNrOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZURp
c2p1bmN0aW9uPj4gbV9hbGxQYXJlbnRoZXNlc0luZm87CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjUyMjMy
KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBA
QAorMjAxOS0xMS0wNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIGEgc3RhY2sgb3ZlcmZsb3cgY2hlY2sgaW4gWWFycjo6Qnl0ZUNvbXBpbGVyOjplbWl0RGlz
anVuY3Rpb24oKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMzkzNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY2MjQ3MjQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgMS4gQWRkIGEgU3RhY2tDaGVjayB1
dGlsaXR5IGNsYXNzIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBrZWVwIHJlaW52ZW50aW5nIHRo
aXMKKyAgICAgICAgICAgZXZlcnkgdGltZSB3ZSBuZWVkIHRvIGFkZCBzdGFjayBjaGVja2luZyBz
b21ld2hlcmUuCisgICAgICAgIDIuIFJlbmFtZSBzb21lIGFyZ3VtZW50cyBhbmQgY29uc3RhbnRz
IGluIFN0YWNrQm91bmRzIHRvIGJlIG1vcmUgZGVzY3JpcHRpdmUgb2YKKyAgICAgICAgICAgd2hh
dCB0aGV5IGFjdHVhbGx5IGFyZS4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvU3Rh
Y2tCb3VuZHMuaDoKKyAgICAgICAgKFdURjo6U3RhY2tCb3VuZHM6OnJlY3Vyc2lvbkxpbWl0IGNv
bnN0KToKKyAgICAgICAgKiB3dGYvU3RhY2tDaGVjay5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
U3RhY2tDaGVjazo6U3RhY2tDaGVjayk6CisgICAgICAgIChXVEY6OlN0YWNrQ2hlY2s6OmlzU2Fm
ZVRvUmVjdXJzZSk6CisKIDIwMTktMTEtMDYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSByZW1uYW50cyBvZiBzdXBwb3J0IGNvZGUgZm9yIGFuIHVwd2Fy
ZHMgZ3Jvd2luZyBzdGFjay4KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjUyMjMyKQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjk0LDYgKzY5NCw3IEBACiAJCUY3MkJC
REIxMDdGQTQyNDg4NjE3OEI5RSAvKiBTeW1ib2xJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbEltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRTA1RkFFNjFGREIyMTQzMDAwOTMyMzAgLyogRHVtYlB0clRyYWl0cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1iUHRyVHJhaXRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRp
b25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdURkFzc2VydGlv
bnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTFENkQ4NzIzNzQwMUNEMDA3
QTVDMjYgLyogU3RhY2tDaGVjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dGFja0NoZWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMUUyQzM5MjI0MEMw
NTQwMEY2QjcyOSAvKiBQdHJUYWcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHRyVGFnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxRTJDNDEy
MjQxODdDNjAwRjZCNzI5IC8qIFBsYXRmb3JtUmVnaXN0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtUmVnaXN0ZXJzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODQyMzQyMzI1Q0M4MDAwOURENDQ1IC8qIFJlc291cmNlVXNh
Z2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VVc2FnZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE1Miw2ICsxMTUzLDcgQEAKIAkJCQlBOEE0
NzMwRDE1MUE4MjVCMDA0MTIzRkYgLyogU3BlY3RydW0uaCAqLywKIAkJCQlBOEE0NzMwRTE1MUE4
MjVCMDA0MTIzRkYgLyogU3RhY2tCb3VuZHMuY3BwICovLAogCQkJCUE4QTQ3MzBGMTUxQTgyNUIw
MDQxMjNGRiAvKiBTdGFja0JvdW5kcy5oICovLAorCQkJCUZFMUQ2RDg3MjM3NDAxQ0QwMDdBNUMy
NiAvKiBTdGFja0NoZWNrLmggKi8sCiAJCQkJRkVFQTRERjgyMTZEN0JFNDAwQUMwNjAyIC8qIFN0
YWNrUG9pbnRlci5jcHAgKi8sCiAJCQkJRkVFQTRERjcyMTZENjA4QzAwQUMwNjAyIC8qIFN0YWNr
UG9pbnRlci5oICovLAogCQkJCTBGOURBQTA0MUZEMUMzN0IwMDc5QzVCMiAvKiBTdGFja1Nob3Qu
aCAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNTIyMzIpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDYgKzIxNSw3
IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBTcGFubmluZ1RyZWUuaAogICAgIFNwZWN0
cnVtLmgKICAgICBTdGFja0JvdW5kcy5oCisgICAgU3RhY2tDaGVjay5oCiAgICAgU3RhY2tQb2lu
dGVyLmgKICAgICBTdGFja1Nob3QuaAogICAgIFN0YWNrU2hvdFByb2ZpbGVyLmgKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL1N0YWNrQm91bmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
U3RhY2tCb3VuZHMuaAkocmV2aXNpb24gMjUyMjMyKQorKysgU291cmNlL1dURi93dGYvU3RhY2tC
b3VuZHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTUgKzM0LDE1IEBAIG5hbWVzcGFjZSBXVEYg
ewogCiBjbGFzcyBTdGFja0JvdW5kcyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CiAKICAgICAvLyBUaGlzIDY0ayBudW1iZXIgd2FzIHBpY2tlZCBiZWNhdXNlIGEgc2Ft
cGxpbmcgb2Ygc3RhY2sgdXNhZ2UgZGlmZmVyZW5jZXMKICAgICAvLyBiZXR3ZWVuIGNvbnNlY3V0
aXZlIGVudHJpZXMgaW50byBvbmUgb2YgdGhlIEludGVycHJldGVyOjpleGVjdXRlLi4uKCkKICAg
ICAvLyBmdW5jdGlvbnMgd2FzIHNlZW4gdG8gYmUgYXMgaGlnaCBhcyAyN2suIEhlbmNlLCA2NGsg
aXMgY2hvc2VuIGFzIGEKICAgICAvLyBjb25zZXJ2YXRpdmUgYXZhaWxhYmlsaXR5IHZhbHVlIHRo
YXQgaXMgbm90IHRvbyBsYXJnZSBidXQgY29tZm9ydGFibHkKICAgICAvLyBleGNlZWRzIDI3ayB3
aXRoIHNvbWUgYnVmZmVyIGZvciBlcnJvci4KLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBz
X2RlZmF1bHRBdmFpbGFiaWxpdHlEZWx0YSA9IDY0ICogMTAyNDsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBEZWZhdWx0UmVzZXJ2ZWRab25lID0gNjQgKiAxMDI0OwogCi1wdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBTdGFja0JvdW5kcyBlbXB0eUJvdW5kcygpIHsgcmV0dXJuIFN0
YWNrQm91bmRzKCk7IH0KIAogI2lmIEhBVkUoU1RBQ0tfQk9VTkRTX0ZPUl9ORVdfVEhSRUFEKQpA
QCAtODIsMTAgKzgyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIChtX29yaWdpbiA+PSBw
KSAmJiAocCA+IG1fYm91bmQpOwogICAgIH0KIAotICAgIHZvaWQqIHJlY3Vyc2lvbkxpbWl0KHNp
emVfdCBtaW5BdmFpbGFibGVEZWx0YSA9IHNfZGVmYXVsdEF2YWlsYWJpbGl0eURlbHRhKSBjb25z
dAorICAgIHZvaWQqIHJlY3Vyc2lvbkxpbWl0KHNpemVfdCBtaW5SZXNlcnZlZFpvbmUgPSBEZWZh
dWx0UmVzZXJ2ZWRab25lKSBjb25zdAogICAgIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgp
OwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYm91bmQpICsgbWluQXZhaWxh
YmxlRGVsdGE7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4obV9ib3VuZCkgKyBt
aW5SZXNlcnZlZFpvbmU7CiAgICAgfQogCiAgICAgdm9pZCogcmVjdXJzaW9uTGltaXQoY2hhciog
c3RhcnRPZlVzZXJTdGFjaywgc2l6ZV90IG1heFVzZXJTdGFjaywgc2l6ZV90IHJlc2VydmVkWm9u
ZVNpemUpIGNvbnN0CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TdGFja0NoZWNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvU3RhY2tDaGVjay5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XVEYvd3RmL1N0YWNrQ2hlY2suaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvU3RhY2tCb3VuZHMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBTdGFja0NoZWNrIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTdGFja0NoZWNrKGNvbnN0IFN0YWNrQm91
bmRzJiBib3VuZHMgPSBUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpLCBzaXplX3QgbWluUmVzZXJ2
ZWRab25lID0gU3RhY2tCb3VuZHM6OkRlZmF1bHRSZXNlcnZlZFpvbmUpCisgICAgICAgIDogbV9z
dGFja0xpbWl0KGJvdW5kcy5yZWN1cnNpb25MaW1pdChtaW5SZXNlcnZlZFpvbmUpKQorICAgIHsg
fQorCisgICAgaW5saW5lIGJvb2wgaXNTYWZlVG9SZWN1cnNlKCkgeyByZXR1cm4gY3VycmVudFN0
YWNrUG9pbnRlcigpID49IG1fc3RhY2tMaW1pdDsgfQorCitwcml2YXRlOgorICAgIHZvaWQqIG1f
c3RhY2tMaW1pdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlN0YWNr
Q2hlY2s7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383114</attachid>
            <date>2019-11-07 23:00:37 -0800</date>
            <delta_ts>2019-11-07 23:00:37 -0800</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-203936.patch</filename>
            <type>text/plain</type>
            <size>22458</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTIyMzIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE5IEBACisyMDE5LTExLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgYSBzdGFjayBvdmVyZmxvdyBjaGVjayBpbiBZYXJyOjpCeXRlQ29t
cGlsZXI6OmVtaXREaXNqdW5jdGlvbigpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAzOTM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjYyNDcy
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBUaGlzIGlz
c3VlIG9yaWdpbmFsbHkgbWFuaWZlc3RlZCBhcyBpbmNvcnJlY3QtZXhjZXB0aW9uLWFzc2VydGlv
bi1pbi1vcGVyYXRpb25SZWdFeHBFeGVjTm9uR2xvYmFsT3JTdGlja3kuanMKKyAgICAgICAgZmFp
bGluZyBvbiBpT1MgZGV2aWNlcyBkdWUgdG8gaXRzIHNtYWxsZXIgc3RhY2suICBXZSBhZGFwdGVk
IHRoZSBvcmlnaW5hbCB0ZXN0CisgICAgICAgIGhlcmUgdXNpbmcgJHZtLmNhbGxXaXRoU3RhY2tT
aXplKCkgdG8gcmVwcm9kdWNlIHRoZSBpc3N1ZSBvbiB4ODZfNjQgdGhvdWdoIGl0CisgICAgICAg
IGhhcyBhIG11Y2ggbGFyZ2VyIHBoeXNpY2FsIHN0YWNrIHRvIHdvcmsgd2l0aC4gIFRoaXMgbmV3
IHRlc3Qgd2lsbCBjcmFzaCB3aGlsZQorICAgICAgICBzdGVwcGluZyBvbiB0aGUgZ3VhcmQgcGFn
ZSBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgc3RhY2sgaWYgdGhlIGZpeCBpcyBub3QgYXBwbGllZC4K
KworICAgICAgICAqIHN0cmVzcy9zdGFjay1vdmVyZmxvdy1pbi15YXJyLWJ5dGVDb21waWxlLmpz
OiBBZGRlZC4KKwogMjAxOS0xMS0wNyAgVHVvbWFzIEthcmtrYWluZW4gIDx0dW9tYXMud2Via2l0
QGFwcGxlLmNvbT4KIAogICAgICAgICBkaWRQYXNzU29tZVRlc3RzU2lsZW50eSBpcyBtaXNzcGVs
bGVkIGluIHN0YW5kYWxvbmUtcHJlLmpzCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9zdGFjay1vdmVy
Zmxvdy1pbi15YXJyLWJ5dGVDb21waWxlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNz
L3N0YWNrLW92ZXJmbG93LWluLXlhcnItYnl0ZUNvbXBpbGUuanMJKG5vbmV4aXN0ZW50KQorKysg
SlNUZXN0cy9zdHJlc3Mvc3RhY2stb3ZlcmZsb3ctaW4teWFyci1ieXRlQ29tcGlsZS5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDMwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tZGlzYWJs
ZU9wdGlvbnNGcmVlemluZ0ZvclRlc3RpbmciKQorLy9AIHNraXAgaWYgJGhvc3RPUyAhPSAiZGFy
d2luIiBvciAkYXJjaGl0ZWN0dXJlICE9ICJ4ODYtNjQiCisKK2Z1bmN0aW9uIGZvbygpIHsKKyAg
ICBjbGFzcyBDIHsKKyAgICAgICAgY29uc3RydWN0b3IoZnVuYykgeworICAgICAgICAgICAgdGhp
cy5mdW5jID0gZnVuYzsKKyAgICAgICAgfQorICAgICAgICBydW5UZXN0KCkgeworICAgICAgICAg
ICAgdGhpcy5mdW5jKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZnVuY3Rpb24gcmVjdXJzZUFu
ZFRlc3QoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZWN1cnNlQW5kVGVzdCgpOwor
ICAgICAgICAgICAgdGVzdC5ydW5UZXN0KCk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBjb25zdCBob3dNYW55UGFyZW50aGVzZXMgPSAxMDAwOworICAgIGNv
bnN0IGRlZXBSRSA9IG5ldyBSZWdFeHAoJygnLnJlcGVhdChob3dNYW55UGFyZW50aGVzZXMpICsg
JyknLnJlcGVhdChob3dNYW55UGFyZW50aGVzZXMpKTsKKyAgICBsZXQgdGVzdCA9IAorICAgICAg
ICBuZXcgQygoKSA9PiB7CisgICAgICAgICAgICBkZWVwUkUuZXhlYygnJyk7CisgICAgICAgIH0p
OworCisgICAgcmVjdXJzZUFuZFRlc3QoKTsKK30KKworJHZtLmNhbGxXaXRoU3RhY2tTaXplKGZv
bywgMTAwKjEwMjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjIz
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw2MCBAQAorMjAxOS0xMS0wNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIGEgc3RhY2sgb3ZlcmZsb3cgY2hlY2sgaW4gWWFycjo6Qnl0ZUNvbXBp
bGVyOjplbWl0RGlzanVuY3Rpb24oKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzkzNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY2MjQ3MjQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgQmFzaWNhbGx5
LCBhbnkgZnVuY3Rpb25zIGJlbG93IFlhcnI6OkJ5dGVDb21waWxlcjo6Y29tcGlsZSgpIHRoYXQg
cmVjdXJzZXMgbmVlZAorICAgICAgICB0byBjaGVjayBpZiBpdCdzIHNhZmUgdG8gcmVjdXJzZSBi
ZWZvcmUgZG9pbmcgc28uICBUaGlzIHBhdGNoIGFkZHMgdGhlIHN0YWNrCisgICAgICAgIGNoZWNr
cyBpbiBZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUoKSBiZWNhdXNlIGl0IGlzIHRoZSBlbnRy
eSBwb2ludCB0byB0aGlzCisgICAgICAgIHN1Yi1zeXN0ZW0sIGFuZCBZYXJyOjpCeXRlQ29tcGls
ZXI6OmVtaXREaXNqdW5jdGlvbigpIGJlY2F1c2UgaXQgaXMgdGhlIG9ubHkKKyAgICAgICAgZnVu
Y3Rpb24gdGhhdCByZWN1cnNlcy4gIEFsbCBvdGhlciBmdW5jdGlvbnMgY2FsbGVkIGJlbG93IGNv
bXBpbGUoKSBhcmUgZWl0aGVyCisgICAgICAgIGxlYWYgZnVuY3Rpb25zIG9yIGhhdmUgc2hhbGxv
dyBzdGFjayB1c2FnZS4gIEhlbmNlLCB0aGVpciBzdGFjayBuZWVkcyBhcmUgY292ZXJlZAorICAg
ICAgICBieSB0aGUgRGVmYXVsdFJlc2VydmVkWm9uZSwgYW5kIHRoZXkgZG8gbm90IG5lZWQgc3Rh
Y2sgY2hlY2tzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBkb2VzIHRoZSBmb2xsb3dpbmc6
CisgICAgICAgIDEuIEFkZGVkICR2bS5jYWxsV2l0aFN0YWNrU2l6ZSgpIHdoaWNoIGNhbiBiZSB1
c2VkIHRvIGNhbGwgYSB0ZXN0IGZ1bmN0aW9uIG5lYXIKKyAgICAgICAgICAgdGhlIGVuZCBvZiB0
aGUgcGh5c2ljYWwgc3RhY2suICBUaGlzIGVuYWJsZXMgaXMgdG8gc2ltdWxhdGUgdGhlIHNtYWxs
ZXIgc3RhY2sKKyAgICAgICAgICAgc2l6ZSBvZiBtb3JlIHJlc291cmNlIGNvbnN0cmFpbmVkIGRl
dmljZXMuCisKKyAgICAgICAgICAgJHZtLmNhbGxXaXRoU3RhY2tTaXplKCkgdXNlcyBpbmxpbmUg
YXNtIHRvIGFkanVzdCB0aGUgc3RhY2sgcG9pbnRlciBhbmQKKyAgICAgICAgICAgZG9lcyB0aGUg
Y2FsbGJhY2sgdmlhIHRoZSBKSVQgcHJvYmUgdHJhbXBvbGluZS4KKworICAgICAgICAyLiBBZGRl
ZCB0aGUgLS1kaXNhYmxlT3B0aW9uc0ZyZWV6aW5nRm9yVGVzdGluZyB0byB0aGUganNjIHNoZWxs
IHRvIG1ha2UgaXQKKyAgICAgICAgICAgcG9zc2libGUgdG8gZGlzYWJsZSBmcmVlemluZyBvZiBK
U0Mgb3B0aW9ucy4gICR2bS5jYWxsV2l0aFN0YWNrU2l6ZSgpIHJlbGllcworICAgICAgICAgICBv
biB0aGlzIHRvIG1vZGlmeSB0aGUgVk0ncyBzdGFjayBsaW1pdHMuCisKKyAgICAgICAgMy4gUmVt
b3ZlZCB0aGUgaW5saW5lIG1vZGlmaWVyIG9uIFZNOjp1cGRhdGVTdGFja0xpbWl0cygpIHNvIHRo
YXQgd2UgY2FuIGNhbGwgaXQKKyAgICAgICAgICAgZnJvbSAkdm0uY2FsbFdpdGhTdGFja1NpemUo
KSBhcyB3ZWxsLiAgSXQgaXMgbm90IGEgcGVyZm9ybWFuY2UgY3JpdGljYWwKKyAgICAgICAgICAg
ZnVuY3Rpb24gYW5kIGlzIHJhcmVseSBjYWxsZWQuCisKKyAgICAgICAgNC4gQWRkZWQgYSBKU0Rv
bGxhclZNSGVscGVyIGNsYXNzIHRoYXQgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSBjYW4gZGVj
bGFyZSBhcworICAgICAgICAgICBhIGZyaWVuZC4gIFRoaXMgZ2l2ZXMgJHZtIGEgYmFja2Rvb3Ig
aW50byB0aGUgcHJpdmF0ZSBmdW5jdGlvbnMgYW5kIGZpZWxkcyBvZgorICAgICAgICAgICBjbGFz
c2VzIGZvciBpdHMgZGVidWdnaW5nIHdvcmsuICBJbiB0aGlzIHBhdGNoLCB3ZSdyZSBvbmx5IHVz
aW5nIGl0IHRvIGFjY2VzcworICAgICAgICAgICBWTTo6dXBkYXRlVk1TdGFja0xpbWl0cygpLgor
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50
cyk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjp1cGRhdGVT
dGFja0xpbWl0cyk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRvb2xzL0pT
RG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpKU0RvbGxhclZNSGVscGVyOjpKU0RvbGxhclZN
SGVscGVyKToKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTUhlbHBlcjo6dm1TdGFja1N0YXJ0KToK
KyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTUhlbHBlcjo6dm1TdGFja0xpbWl0KToKKyAgICAgICAg
KEpTQzo6SlNEb2xsYXJWTUhlbHBlcjo6dm1Tb2Z0U3RhY2tMaW1pdCk6CisgICAgICAgIChKU0M6
OkpTRG9sbGFyVk1IZWxwZXI6OnVwZGF0ZVZNU3RhY2tMaW1pdHMpOgorICAgICAgICAoSlNDOjpj
YWxsV2l0aFN0YWNrU2l6ZVByb2JlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkNh
bGxXaXRoU3RhY2tTaXplKToKKyAgICAgICAgKEpTQzo6SlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoSUdOT1JFX1dBUk5JTkdTX0JFR0lOKTogRGVsZXRlZC4KKyAgICAgICAg
KiB5YXJyL1lhcnJJbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21w
aWxlcjo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6ZW1pdERp
c2p1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qnl0ZUNvbXBpbGVyOjppc1NhZmVUb1Jl
Y3Vyc2UpOgorCiAyMDE5LTExLTA3ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29t
PgogCiAgICAgICAgIFVzZSBmZXdlciB2aXJ0dWFsIHJlZ2lzdGVycyBpbiBXYXNtIExMSW50Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjUyMjMyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OTEsNiArMjg5MSwxMCBAQCB2
b2lkIENvbW1hbmRMaW5lOjpwYXJzZUFyZ3VtZW50cyhpbnQgYXJnCiAgICAgICAgICAgICBtX2Rl
c3Ryb3lWTSA9IHRydWU7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAgICAg
ICBpZiAoIXN0cmNtcChhcmcsICItLWRpc2FibGVPcHRpb25zRnJlZXppbmdGb3JUZXN0aW5nIikp
IHsKKyAgICAgICAgICAgIENvbmZpZzo6ZGlzYWJsZUZyZWV6aW5nRm9yVGVzdGluZygpOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgY2hh
ciogdGltZW91dE11bHRpcGxpZXJPcHRTdHIgPSAiLS10aW1lb3V0TXVsdGlwbGllcj0iOwogICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdGltZW91dE11bHRpcGxpZXJPcHRTdHJMZW5ndGgg
PSBzdHJsZW4odGltZW91dE11bHRpcGxpZXJPcHRTdHIpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjUyMjMyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODEsNyArODgxLDcgQEAgc3Rh
dGljIHZvaWQgcHJlQ29tbWl0U3RhY2tNZW1vcnkodm9pZCogcwogfQogI2VuZGlmCiAKLWlubGlu
ZSB2b2lkIFZNOjp1cGRhdGVTdGFja0xpbWl0cygpCit2b2lkIFZNOjp1cGRhdGVTdGFja0xpbWl0
cygpCiB7CiAjaWYgT1MoV0lORE9XUykKICAgICB2b2lkKiBsYXN0U29mdFN0YWNrTGltaXQgPSBt
X3NvZnRTdGFja0xpbWl0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZp
c2lvbiAyNTIyMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDkzLDYgKzEwOTMsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBIZWFwOwogICAgIGZyaWVuZCBjbGFzcyBDYXRjaFNjb3BlOwogICAgIGZyaWVuZCBjbGFzcyBF
eGNlcHRpb25TY29wZTsKKyAgICBmcmllbmQgY2xhc3MgSlNEb2xsYXJWTUhlbHBlcjsKICAgICBm
cmllbmQgY2xhc3MgVGhyb3dTY29wZTsKICAgICBmcmllbmQgY2xhc3MgVk1UcmFwczsKICAgICBm
cmllbmQgY2xhc3MgV1RGOjpEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT47CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCShyZXZpc2lvbiAyNTIyMzIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJET01KSVRHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5o
IgorI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmFjZXJzLmgiCiAjaW5jbHVk
ZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKQEAgLTQz
LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIK
ICNpbmNsdWRlICJQYXJzZXIuaCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRl
ICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU25pcHBldC5oIgogI2luY2x1ZGUgIlNuaXBw
ZXRQYXJhbXMuaCIKQEAgLTY0LDYgKzY2LDI2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUtYWRkcmVzcyIpCiAKK2V4dGVybiAiQyIgdm9pZCBj
dGlNYXNtUHJvYmVUcmFtcG9saW5lKCk7CisKK25hbWVzcGFjZSBKU0MgeworCisvLyBUaGlzIGNs
YXNzIGlzIG9ubHkgaGVyZSBhcyBhIHNpbXBsZSB3YXkgdG8gZ3JhbnQgSlNEb2xsYXJWTSBmcmll
bmQgcHJpdmlsZWdlcworLy8gdG8gYWxsIHRoZSBjbGFzc2VzIHRoYXQgaXQgbmVlZHMgc3BlY2lh
bCBhY2Nlc3MgdG8uCitjbGFzcyBKU0RvbGxhclZNSGVscGVyIHsKK3B1YmxpYzoKKyAgICBKU0Rv
bGxhclZNSGVscGVyKFZNJiB2bSkKKyAgICAgICAgOiBtX3ZtKHZtKQorICAgIHsgfQorCisgICAg
dm9pZCB1cGRhdGVWTVN0YWNrTGltaXRzKCkgeyByZXR1cm4gbV92bS51cGRhdGVTdGFja0xpbWl0
cygpOyB9OworCitwcml2YXRlOgorICAgIFZNJiBtX3ZtOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKIG5hbWVzcGFjZSB7CiAKIC8vIFdlIG11c3QgUkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6
dXNlRG9sbGFyVk0oKSkgaW4gYWxsIEpTRG9sbGFyVk0gZnVuY3Rpb25zCkBAIC0xOTY4LDYgKzE5
OTAsMTIzIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXQtPmlzSGF2aW5nQUJhZFRpbWUo
KSkpOwogfQogCisvLyBDYWxscyB0aGUgc3BlY2lmaWVkIHRlc3QgZnVuY3Rpb24gYWZ0ZXIgYWRq
dXN0aW5nIHRoZSBzdGFjayB0byBoYXZlIHRoZSBzcGVjaWZpZWQKKy8vIHJlbWFpbmluZyBzaXpl
IGZyb20gdGhlIGVuZCBvZiB0aGUgcGh5c2ljYWwgc3RhY2suCisvLyBVc2FnZTogJHZtLmNhbGxX
aXRoU3RhY2tTaXplKGZ1bmNUb0NhbGwsIGRlc2lyZWRTdGFja1NpemUpCisvLworLy8gVGhpcyBm
dW5jdGlvbiB3aWxsIG9ubHkgd29yayBpbiB0ZXN0IGNvbmZpZ3VyYXRpb25zLCBzcGVjaWZpY2Fs
bHksIG9ubHkgaWYgSlNDCisvLyBvcHRpb25zIGFyZSBub3QgZnJvemVuLiBGb3IgdGhlIGpzYyBz
aGVsbCwgdGhlIC0tZGlzYWJsZU9wdGlvbnNGcmVlemluZ0ZvclRlc3RpbmcKKy8vIGFyZ3VtZW50
IG5lZWRzIHRvIGJlIHBhc3NlZCBpbiBvbiB0aGUgY29tbWFuZCBsaW5lLgorCisjaWYgRU5BQkxF
KE1BU01fUFJPQkUpCitzdGF0aWMgdm9pZCBjYWxsV2l0aFN0YWNrU2l6ZVByb2JlRnVuY3Rpb24o
UHJvYmU6OlN0YXRlKiBzdGF0ZSkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gYml0d2lzZV9jYXN0PEpTR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmFyZyk7CisgICAgSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSBiaXR3aXNlX2Nhc3Q8SlNGdW5jdGlvbio+KHN0YXRlLT5wcm9iZUZ1
bmN0aW9uKTsKKyAgICBzdGF0ZS0+aW5pdGlhbGl6ZVN0YWNrRnVuY3Rpb24gPSBudWxscHRyOwor
ICAgIHN0YXRlLT5pbml0aWFsaXplU3RhY2tBcmcgPSBudWxscHRyOworCisgICAgRG9sbGFyVk1B
c3NlcnRTY29wZSBhc3NlcnRTY29wZTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENh
bGxEYXRhKHZtLCBmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3M7CisgICAgY2FsbChnbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGpzVW5kZWZpbmVkKCksIGFyZ3MpOworfQorI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JF
KQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNhbGxXaXRo
U3RhY2tTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQoreworICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworI2lmIE9TKERBUldJ
TikgJiYgQ1BVKFg4Nl82NCkKKyAgICBjb25zdGV4cHIgYm9vbCBpc1N1cHBvcnRlZEJ5UGxhdGZv
cm0gPSB0cnVlOworI2Vsc2UKKyAgICBjb25zdGV4cHIgYm9vbCBpc1N1cHBvcnRlZEJ5UGxhdGZv
cm0gPSBmYWxzZTsKKyNlbmRpZgorCisgICAgaWYgKCFpc1N1cHBvcnRlZEJ5UGxhdGZvcm0pCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiTm90
IHN1cHBvcnRlZCBmb3IgdGhpcyBwbGF0Zm9ybSIpOworCisjaWYgRU5BQkxFKE1BU01fUFJPQkUp
CisgICAgaWYgKGdfanNjQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW4gfHwgIWdfanNjQ29uZmln
LmRpc2FibGVkRnJlZXppbmdGb3JUZXN0aW5nKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIk9wdGlvbnMgYXJlIGZyb3plbiIpOworCisgICAg
aWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMikKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJJbnZhbGlkIG51bWJlciBvZiBhcmd1
bWVudHMiKTsKKyAgICBKU1ZhbHVlIGFyZzAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAg
IEpTVmFsdWUgYXJnMSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgaWYgKCFhcmcwLmlz
RnVuY3Rpb24odm0pKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgImFyZzAgc2hvdWxkIGJlIGEgZnVuY3Rpb24iKTsKKyAgICBpZiAoIWFyZzEu
aXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJhcmcxIHNob3VsZCBiZSBhIG51bWJlciIpOworCisgICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGFyZzAudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KSk7CisgICAgc2l6ZV90IGRlc2lyZWRTdGFja1NpemUgPSBhcmcxLmFzTnVtYmVyKCk7CisKKyAg
ICBjb25zdCBTdGFja0JvdW5kcyYgYm91bmRzID0gVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKTsK
KyAgICB1aW50OF90KiBjdXJyZW50U3RhY2tQb3NpdGlvbiA9IGJpdHdpc2VfY2FzdDx1aW50OF90
Kj4oY3VycmVudFN0YWNrUG9pbnRlcigpKTsKKyAgICB1aW50OF90KiBlbmQgPSBiaXR3aXNlX2Nh
c3Q8dWludDhfdCo+KGJvdW5kcy5lbmQoKSk7CisgICAgdWludDhfdCogZGVzaXJlZFN0YXJ0ID0g
ZW5kICsgZGVzaXJlZFN0YWNrU2l6ZTsKKyAgICBpZiAoZGVzaXJlZFN0YXJ0ID49IGN1cnJlbnRT
dGFja1Bvc2l0aW9uKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgIlVuYWJsZSB0byBzZXR1cCBkZXNpcmVkIHN0YWNrIHNpemUiKTsKKworICAg
IEpTRG9sbGFyVk1IZWxwZXIgaGVscGVyKHZtKTsKKworICAgIHVuc2lnbmVkIG9yaWdpbmFsTWF4
UGVyVGhyZWFkU3RhY2tVc2FnZSA9IE9wdGlvbnM6Om1heFBlclRocmVhZFN0YWNrVXNhZ2UoKTsK
KyAgICB2b2lkKiBvcmlnaW5hbFZNU29mdFN0YWNrTGltaXQgPSB2bS5zb2Z0U3RhY2tMaW1pdCgp
OworICAgIHZvaWQqIG9yaWdpbmFsVk1TdGFja0xpbWl0ID0gdm0uc3RhY2tMaW1pdCgpOworCisg
ICAgLy8gVGhpcyBpcyBhIGhhY2sgdG8gbWFrZSB0aGUgVk0gdGhpbmsgaXQncyBzdGFjayBsaW1p
dHMgYXJlIG5lYXIgdGhlIGVuZAorICAgIC8vIG9mIHRoZSBwaHlzaWNhbCBzdGFjay4KKyAgICB1
aW50OF90KiB2bVN0YWNrU3RhcnQgPSBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHZtLnN0YWNrUG9p
bnRlckF0Vk1FbnRyeSgpKTsKKyAgICB1aW50OF90KiB2bVN0YWNrRW5kID0gdm1TdGFja1N0YXJ0
IC0gb3JpZ2luYWxNYXhQZXJUaHJlYWRTdGFja1VzYWdlOworICAgIHB0cmRpZmZfdCBzaXplRGlm
ZiA9IHZtU3RhY2tFbmQgLSBlbmQ7CisgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZURpZmYgPj0gMCk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZURpZmYgPCBVSU5UX01BWCk7CisKKyAgICBPcHRpb25z
OjptYXhQZXJUaHJlYWRTdGFja1VzYWdlKCkgPSBvcmlnaW5hbE1heFBlclRocmVhZFN0YWNrVXNh
Z2UgKyBzaXplRGlmZjsKKyAgICBoZWxwZXIudXBkYXRlVk1TdGFja0xpbWl0cygpOworCisjaWYg
T1MoREFSV0lOKSAmJiBDUFUoWDg2XzY0KQorICAgIF9fYXNtX18gdm9sYXRpbGUgKAorICAgICAg
ICAic3VicSAlW3NpemVEaWZmXSwgJSVyc3AiICJcbiIKKyAgICAgICAgInB1c2hxICUlcmF4IiAi
XG4iCisgICAgICAgICJwdXNocSAlJXJjeCIgIlxuIgorICAgICAgICAicHVzaHEgJSVyZHgiICJc
biIKKyAgICAgICAgInB1c2hxICUlcmJ4IiAiXG4iCisgICAgICAgICJjYWxscSAqJSVyYXgiICJc
biIKKyAgICAgICAgImFkZHEgJVtzaXplRGlmZl0sICUlcnNwIiAiXG4iCisgICAgICAgIDoKKyAg
ICAgICAgOiAiYSIgKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpCisgICAgICAgICwgImMiIChjYWxs
V2l0aFN0YWNrU2l6ZVByb2JlRnVuY3Rpb24pCisgICAgICAgICwgImQiIChmdW5jdGlvbikKKyAg
ICAgICAgLCAiYiIgKGdsb2JhbE9iamVjdCkKKyAgICAgICAgLCBbc2l6ZURpZmZdICJybSIgKHNp
emVEaWZmKQorICAgICAgICA6ICJtZW1vcnkiCisgICAgKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGZ1bmN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbFdpdGhTdGFja1NpemVQcm9iZUZ1
bmN0aW9uKTsKKyNlbmRpZiAvLyBPUyhEQVJXSU4pICYmIENQVShYODZfNjQpCisKKyAgICBPcHRp
b25zOjptYXhQZXJUaHJlYWRTdGFja1VzYWdlKCkgPSBvcmlnaW5hbE1heFBlclRocmVhZFN0YWNr
VXNhZ2U7CisgICAgaGVscGVyLnVwZGF0ZVZNU3RhY2tMaW1pdHMoKTsKKyAgICBSRUxFQVNFX0FT
U0VSVCh2bS5zb2Z0U3RhY2tMaW1pdCgpID09IG9yaWdpbmFsVk1Tb2Z0U3RhY2tMaW1pdCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQodm0uc3RhY2tMaW1pdCgpID09IG9yaWdpbmFsVk1TdGFja0xpbWl0
KTsKKworICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKKworI2Vsc2UgLy8gbm90IEVO
QUJMRShNQVNNX1BST0JFKQorICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiTm90IHN1cHBvcnRlZCBm
b3IgdGhpcyBwbGF0Zm9ybSIpOworI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQorfQorCiAv
LyBDcmVhdGVzIGEgbmV3IGdsb2JhbCBvYmplY3QuCiAvLyBVc2FnZTogJHZtLmNyZWF0ZUdsb2Jh
bE9iamVjdCgpCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNy
ZWF0ZUdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
KQpAQCAtMjYzMCw2ICsyNzY5LDggQEAgdm9pZCBKU0RvbGxhclZNOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiAgICAgYWRkRnVuY3Rpb24odm0sICJoYXZlQUJhZFRpbWUiLCBmdW5jdGlvbkhhdmVB
QmFkVGltZSwgMSk7CiAgICAgYWRkRnVuY3Rpb24odm0sICJpc0hhdmluZ0FCYWRUaW1lIiwgZnVu
Y3Rpb25Jc0hhdmluZ0FCYWRUaW1lLCAxKTsKIAorICAgIGFkZEZ1bmN0aW9uKHZtLCAiY2FsbFdp
dGhTdGFja1NpemUiLCBmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCAyKTsKKwogICAgIGFkZEZ1
bmN0aW9uKHZtLCAiY3JlYXRlR2xvYmFsT2JqZWN0IiwgZnVuY3Rpb25DcmVhdGVHbG9iYWxPYmpl
Y3QsIDApOwogICAgIGFkZEZ1bmN0aW9uKHZtLCAiY3JlYXRlUHJveHkiLCBmdW5jdGlvbkNyZWF0
ZVByb3h5LCAxKTsKICAgICBhZGRGdW5jdGlvbih2bSwgImNyZWF0ZVJ1bnRpbWVBcnJheSIsIGZ1
bmN0aW9uQ3JlYXRlUnVudGltZUFycmF5LCAwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjUyMjMyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5o
PgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9EYXRh
TG9nLmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrQ2hlY2suaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTE2OTQsNiAr
MTY5NSwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVQYXR0ZXJu
PiBjb21waWxlKEJ1bXBQb2ludGVyQWxsb2NhdG9yKiBhbGxvY2F0b3IsIENvbmN1cnJlbnRKU0xv
Y2sqIGxvY2ssIEVycm9yQ29kZSYgZXJyb3JDb2RlKQogICAgIHsKKyAgICAgICAgaWYgKFVOTElL
RUxZKCFpc1NhZmVUb1JlY3Vyc2UoKSkpIHsKKyAgICAgICAgICAgIGVycm9yQ29kZSA9IEVycm9y
Q29kZTo6VG9vTWFueURpc2p1bmN0aW9uczsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICB9CisKICAgICAgICAgcmVnZXhCZWdpbihtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJu
cywgbV9wYXR0ZXJuLm1fYm9keS0+bV9jYWxsRnJhbWVTaXplLCBtX3BhdHRlcm4ubV9ib2R5LT5t
X2FsdGVybmF0aXZlc1swXS0+b25jZVRocm91Z2goKSk7CiAgICAgICAgIGlmIChhdXRvIGVycm9y
ID0gZW1pdERpc2p1bmN0aW9uKG1fcGF0dGVybi5tX2JvZHksIDAsIDApKSB7CiAgICAgICAgICAg
ICBlcnJvckNvZGUgPSBlcnJvci52YWx1ZSgpOwpAQCAtMjAyOCw2ICsyMDM0LDkgQEAgcHVibGlj
OgogCiAgICAgT3B0aW9uYWw8RXJyb3JDb2RlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdERpc2p1
bmN0aW9uKFBhdHRlcm5EaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIENoZWNrZWQ8dW5zaWduZWQs
IFJlY29yZE92ZXJmbG93PiBpbnB1dENvdW50QWxyZWFkeUNoZWNrZWQsIHVuc2lnbmVkIHBhcmVu
dGhlc2VzSW5wdXRDb3VudEFscmVhZHlDaGVja2VkKQogICAgIHsKKyAgICAgICAgaWYgKFVOTElL
RUxZKCFpc1NhZmVUb1JlY3Vyc2UoKSkpCisgICAgICAgICAgICByZXR1cm4gRXJyb3JDb2RlOjpU
b29NYW55RGlzanVuY3Rpb25zOworCiAgICAgICAgIGZvciAodW5zaWduZWQgYWx0ID0gMDsgYWx0
IDwgZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzLnNpemUoKTsgKythbHQpIHsKICAgICAgICAg
ICAgIGF1dG8gY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQgPSBpbnB1dENvdW50QWxyZWFkeUNo
ZWNrZWQ7CiAKQEAgLTI0MDUsOCArMjQxNCwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0
ZToKKyAgICBpbmxpbmUgYm9vbCBpc1NhZmVUb1JlY3Vyc2UoKSB7IHJldHVybiBtX3N0YWNrQ2hl
Y2suaXNTYWZlVG9SZWN1cnNlKCk7IH0KKwogICAgIFlhcnJQYXR0ZXJuJiBtX3BhdHRlcm47CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVEaXNqdW5jdGlvbj4gbV9ib2R5RGlzanVuY3Rpb247Cisg
ICAgU3RhY2tDaGVjayBtX3N0YWNrQ2hlY2s7CiAgICAgdW5zaWduZWQgbV9jdXJyZW50QWx0ZXJu
YXRpdmVJbmRleCB7IDAgfTsKICAgICBWZWN0b3I8UGFyZW50aGVzZXNTdGFja0VudHJ5PiBtX3Bh
cmVudGhlc2VzU3RhY2s7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rp
b24+PiBtX2FsbFBhcmVudGhlc2VzSW5mbzsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTIyMzIpCisrKyBT
b3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE5
LTExLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBz
dGFjayBvdmVyZmxvdyBjaGVjayBpbiBZYXJyOjpCeXRlQ29tcGlsZXI6OmVtaXREaXNqdW5jdGlv
bigpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAz
OTM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjYyNDcyND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICAxLiBBZGQgYSBTdGFja0NoZWNrIHV0aWxpdHkg
Y2xhc3Mgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGtlZXAgcmVpbnZlbnRpbmcgdGhpcworICAg
ICAgICAgICBldmVyeSB0aW1lIHdlIG5lZWQgdG8gYWRkIHN0YWNrIGNoZWNraW5nIHNvbWV3aGVy
ZS4KKyAgICAgICAgMi4gUmVuYW1lIHNvbWUgYXJndW1lbnRzIGFuZCBjb25zdGFudHMgaW4gU3Rh
Y2tCb3VuZHMgdG8gYmUgbW9yZSBkZXNjcmlwdGl2ZSBvZgorICAgICAgICAgICB3aGF0IHRoZXkg
YWN0dWFsbHkgYXJlLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9TdGFja0JvdW5k
cy5oOgorICAgICAgICAoV1RGOjpTdGFja0JvdW5kczo6cmVjdXJzaW9uTGltaXQgY29uc3QpOgor
ICAgICAgICAqIHd0Zi9TdGFja0NoZWNrLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpTdGFja0No
ZWNrOjpTdGFja0NoZWNrKToKKyAgICAgICAgKFdURjo6U3RhY2tDaGVjazo6aXNTYWZlVG9SZWN1
cnNlKToKKwogMjAxOS0xMS0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIHJlbW5hbnRzIG9mIHN1cHBvcnQgY29kZSBmb3IgYW4gdXB3YXJkcyBncm93
aW5nIHN0YWNrLgpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyNTIyMzIpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02OTQsNiArNjk0LDcgQEAKIAkJRjcyQkJEQjEwN0ZB
NDI0ODg2MTc4QjlFIC8qIFN5bWJvbEltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3ltYm9sSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFMDVGQUU2MUZEQjIxNDMwMDA5MzIzMCAvKiBEdW1iUHRyVHJhaXRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IER1bWJQdHJUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkUwNUZBRkUxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV1RGQXNzZXJ0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMUQ2RDg3MjM3NDAxQ0QwMDdBNUMyNiAv
KiBTdGFja0NoZWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNrQ2hl
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUxRTJDMzkyMjQwQzA1NDAwRjZC
NzI5IC8qIFB0clRhZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
dHJUYWcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTFFMkM0MTIyNDE4N0M2
MDBGNkI3MjkgLyogUGxhdGZvcm1SZWdpc3RlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGxhdGZvcm1SZWdpc3RlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTM4NDIzNDIzMjVDQzgwMDA5REQ0NDUgLyogUmVzb3VyY2VVc2FnZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVVzYWdlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTUyLDYgKzExNTMsNyBAQAogCQkJCUE4QTQ3MzBEMTUx
QTgyNUIwMDQxMjNGRiAvKiBTcGVjdHJ1bS5oICovLAogCQkJCUE4QTQ3MzBFMTUxQTgyNUIwMDQx
MjNGRiAvKiBTdGFja0JvdW5kcy5jcHAgKi8sCiAJCQkJQThBNDczMEYxNTFBODI1QjAwNDEyM0ZG
IC8qIFN0YWNrQm91bmRzLmggKi8sCisJCQkJRkUxRDZEODcyMzc0MDFDRDAwN0E1QzI2IC8qIFN0
YWNrQ2hlY2suaCAqLywKIAkJCQlGRUVBNERGODIxNkQ3QkU0MDBBQzA2MDIgLyogU3RhY2tQb2lu
dGVyLmNwcCAqLywKIAkJCQlGRUVBNERGNzIxNkQ2MDhDMDBBQzA2MDIgLyogU3RhY2tQb2ludGVy
LmggKi8sCiAJCQkJMEY5REFBMDQxRkQxQzM3QjAwNzlDNUIyIC8qIFN0YWNrU2hvdC5oICovLApJ
bmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI1MjIzMikKKysrIFNvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDcgQEAgc2V0
KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFNwYW5uaW5nVHJlZS5oCiAgICAgU3BlY3RydW0uaAog
ICAgIFN0YWNrQm91bmRzLmgKKyAgICBTdGFja0NoZWNrLmgKICAgICBTdGFja1BvaW50ZXIuaAog
ICAgIFN0YWNrU2hvdC5oCiAgICAgU3RhY2tTaG90UHJvZmlsZXIuaApJbmRleDogU291cmNlL1dU
Ri93dGYvU3RhY2tCb3VuZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TdGFja0Jv
dW5kcy5oCShyZXZpc2lvbiAyNTIyMzIpCisrKyBTb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMTUgQEAgbmFtZXNwYWNlIFdURiB7CiAKIGNs
YXNzIFN0YWNrQm91bmRzIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
IAogICAgIC8vIFRoaXMgNjRrIG51bWJlciB3YXMgcGlja2VkIGJlY2F1c2UgYSBzYW1wbGluZyBv
ZiBzdGFjayB1c2FnZSBkaWZmZXJlbmNlcwogICAgIC8vIGJldHdlZW4gY29uc2VjdXRpdmUgZW50
cmllcyBpbnRvIG9uZSBvZiB0aGUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUuLi4oKQogICAgIC8vIGZ1
bmN0aW9ucyB3YXMgc2VlbiB0byBiZSBhcyBoaWdoIGFzIDI3ay4gSGVuY2UsIDY0ayBpcyBjaG9z
ZW4gYXMgYQogICAgIC8vIGNvbnNlcnZhdGl2ZSBhdmFpbGFiaWxpdHkgdmFsdWUgdGhhdCBpcyBu
b3QgdG9vIGxhcmdlIGJ1dCBjb21mb3J0YWJseQogICAgIC8vIGV4Y2VlZHMgMjdrIHdpdGggc29t
ZSBidWZmZXIgZm9yIGVycm9yLgotICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNfZGVmYXVs
dEF2YWlsYWJpbGl0eURlbHRhID0gNjQgKiAxMDI0OworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IERlZmF1bHRSZXNlcnZlZFpvbmUgPSA2NCAqIDEwMjQ7CiAKLXB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3RleHByIFN0YWNrQm91bmRzIGVtcHR5Qm91bmRzKCkgeyByZXR1cm4gU3RhY2tCb3Vu
ZHMoKTsgfQogCiAjaWYgSEFWRShTVEFDS19CT1VORFNfRk9SX05FV19USFJFQUQpCkBAIC04Miwx
MCArODIsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKG1fb3JpZ2luID49IHApICYmIChw
ID4gbV9ib3VuZCk7CiAgICAgfQogCi0gICAgdm9pZCogcmVjdXJzaW9uTGltaXQoc2l6ZV90IG1p
bkF2YWlsYWJsZURlbHRhID0gc19kZWZhdWx0QXZhaWxhYmlsaXR5RGVsdGEpIGNvbnN0CisgICAg
dm9pZCogcmVjdXJzaW9uTGltaXQoc2l6ZV90IG1pblJlc2VydmVkWm9uZSA9IERlZmF1bHRSZXNl
cnZlZFpvbmUpIGNvbnN0CiAgICAgewogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7Ci0gICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4obV9ib3VuZCkgKyBtaW5BdmFpbGFibGVEZWx0
YTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihtX2JvdW5kKSArIG1pblJlc2Vy
dmVkWm9uZTsKICAgICB9CiAKICAgICB2b2lkKiByZWN1cnNpb25MaW1pdChjaGFyKiBzdGFydE9m
VXNlclN0YWNrLCBzaXplX3QgbWF4VXNlclN0YWNrLCBzaXplX3QgcmVzZXJ2ZWRab25lU2l6ZSkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0YWNrQ2hlY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9TdGFja0NoZWNrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93
dGYvU3RhY2tDaGVjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPHd0Zi9TdGFja0JvdW5kcy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKwor
bmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFN0YWNrQ2hlY2sgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIFN0YWNrQ2hlY2soY29uc3QgU3RhY2tCb3VuZHMmIGJv
dW5kcyA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCksIHNpemVfdCBtaW5SZXNlcnZlZFpvbmUg
PSBTdGFja0JvdW5kczo6RGVmYXVsdFJlc2VydmVkWm9uZSkKKyAgICAgICAgOiBtX3N0YWNrTGlt
aXQoYm91bmRzLnJlY3Vyc2lvbkxpbWl0KG1pblJlc2VydmVkWm9uZSkpCisgICAgeyB9CisKKyAg
ICBpbmxpbmUgYm9vbCBpc1NhZmVUb1JlY3Vyc2UoKSB7IHJldHVybiBjdXJyZW50U3RhY2tQb2lu
dGVyKCkgPj0gbV9zdGFja0xpbWl0OyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCogbV9zdGFja0xp
bWl0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6U3RhY2tDaGVjazsK
</data>

          </attachment>
      

    </bug>

</bugzilla>