<?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>195982</bug_id>
          
          <creation_ts>2019-03-19 19:33:04 -0700</creation_ts>
          <short_desc>[JSC] Do not create JIT related data under non-JIT mode</short_desc>
          <delta_ts>2019-03-21 12:15:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1518716</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-19 19:33:04 -0700</bug_when>
    <thetext>[JSC] Do not create JIT related data under non-JIT mode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518718</commentid>
    <comment_count>1</comment_count>
      <attachid>365292</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-19 19:36:06 -0700</bug_when>
    <thetext>Created attachment 365292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519332</commentid>
    <comment_count>2</comment_count>
      <attachid>365292</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-20 16:59:37 -0700</bug_when>
    <thetext>Comment on attachment 365292
Patch

I&apos;ll add Wasm::Thunk too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519421</commentid>
    <comment_count>3</comment_count>
      <attachid>365467</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-20 20:14:46 -0700</bug_when>
    <thetext>Created attachment 365467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519436</commentid>
    <comment_count>4</comment_count>
      <attachid>365473</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-20 20:33:39 -0700</bug_when>
    <thetext>Created attachment 365473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519438</commentid>
    <comment_count>5</comment_count>
      <attachid>365474</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-20 20:35:53 -0700</bug_when>
    <thetext>Created attachment 365474
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519441</commentid>
    <comment_count>6</comment_count>
      <attachid>365476</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-20 20:40:46 -0700</bug_when>
    <thetext>Created attachment 365476
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519559</commentid>
    <comment_count>7</comment_count>
      <attachid>365476</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-21 01:47:15 -0700</bug_when>
    <thetext>Comment on attachment 365476
Patch

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

r=me with fixes.  If you haven&apos;t already done so, please also do a cloop build (build-jsc --cloop) to make sure it still builds.

&gt; Source/JavaScriptCore/jit/ExecutableAllocator.h:66
&gt; +    enum ProtectionSetting { Writable, Executable };

Looks like this is no longer used anywhere.  We can delete it.

&gt; Source/JavaScriptCore/runtime/VM.cpp:195
&gt; +    ExecutableAllocator::initializeUnderlyingAllocator();
&gt; +    if (!ExecutableAllocator::singleton().isValid()) {

While you&apos;re in this function, I suggest you also fix it to check getenv(&quot;JavaScriptCoreUseJIT&quot;) first (currently done below) before initializing the ExecutableAllocator.  No point in doing so if getenv(&quot;JavaScriptCoreUseJIT&quot;) disallows use of the JIT.

&gt; Source/JavaScriptCore/tools/SigillCrashAnalyzer.cpp:-63
&gt; -#if USE(ARM64_DISASSEMBLER)
&gt; -    A64DOpcode m_arm64Opcode;
&gt; -#endif

Undo this.  See the reason below.

&gt; Source/JavaScriptCore/tools/SigillCrashAnalyzer.cpp:288
&gt; +    auto arm64Opcode = std::make_unique&lt;A64DOpcode&gt;();

dumpCodeBlock() is called from SigillCrashAnalyzer::analyze(), which in turn is called from a signal handler.  We don&apos;t want to malloc stuff while in the signal handler.  So, let&apos;s keep the A64DOpcode where it&apos;s at right now, in the SigillCrashAnalyzer.  Instead, let&apos;s change Options.cpp to not enableSigillCrashAnalyzer() if the JIT is not in use.  The SigillCrashAnalyzer is for analyzing JIT code that went haywire.  If the JIT is not in use, we don&apos;t need to enable it, and hence, won&apos;t allocate the A64DOpcode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519697</commentid>
    <comment_count>8</comment_count>
      <attachid>365476</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-21 10:11:00 -0700</bug_when>
    <thetext>Comment on attachment 365476
Patch

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

&gt;&gt; Source/JavaScriptCore/jit/ExecutableAllocator.h:66
&gt;&gt; +    enum ProtectionSetting { Writable, Executable };
&gt; 
&gt; Looks like this is no longer used anywhere.  We can delete it.

Removed.

&gt;&gt; Source/JavaScriptCore/runtime/VM.cpp:195
&gt;&gt; +    if (!ExecutableAllocator::singleton().isValid()) {
&gt; 
&gt; While you&apos;re in this function, I suggest you also fix it to check getenv(&quot;JavaScriptCoreUseJIT&quot;) first (currently done below) before initializing the ExecutableAllocator.  No point in doing so if getenv(&quot;JavaScriptCoreUseJIT&quot;) disallows use of the JIT.

Right. Fixed.

&gt;&gt; Source/JavaScriptCore/tools/SigillCrashAnalyzer.cpp:-63
&gt;&gt; -#endif
&gt; 
&gt; Undo this.  See the reason below.

Done.

&gt;&gt; Source/JavaScriptCore/tools/SigillCrashAnalyzer.cpp:288
&gt;&gt; +    auto arm64Opcode = std::make_unique&lt;A64DOpcode&gt;();
&gt; 
&gt; dumpCodeBlock() is called from SigillCrashAnalyzer::analyze(), which in turn is called from a signal handler.  We don&apos;t want to malloc stuff while in the signal handler.  So, let&apos;s keep the A64DOpcode where it&apos;s at right now, in the SigillCrashAnalyzer.  Instead, let&apos;s change Options.cpp to not enableSigillCrashAnalyzer() if the JIT is not in use.  The SigillCrashAnalyzer is for analyzing JIT code that went haywire.  If the JIT is not in use, we don&apos;t need to enable it, and hence, won&apos;t allocate the A64DOpcode.

Nice catch! Make sense. I changed

1. Not changing SigillCrashAnalyzer.cpp
2. Calling enableSigillCrashAnalyzer from InitializeThreading instead of Options.cpp
3. Calling enableSigillCrashAnalyzer only when VM::canUseJIT() returns true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519799</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-21 11:58:31 -0700</bug_when>
    <thetext>And I confirmed that CLoop is built successfully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519821</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-21 12:14:18 -0700</bug_when>
    <thetext>Committed r243312: &lt;https://trac.webkit.org/changeset/243312&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519822</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-21 12:15:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/49118236&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365292</attachid>
            <date>2019-03-19 19:36:06 -0700</date>
            <delta_ts>2019-03-20 20:14:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195982-20190319193605.patch</filename>
            <type>text/plain</type>
            <size>15294</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YzVhODk0MWUwNjk1YzcyZjE5YWY1ZjQ3ZWU4OTZlY2YzMDZiYjhhLi5kNzcwNjExMGVkMWIzOWEy
ZjhkNjlmMDUwMWM5MThmMjJkODRkNmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAxOS0wMy0xOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIERvIG5vdCBjcmVhdGUgSklUIHJlbGF0ZWQgZGF0YSB1bmRlciBu
b24tSklUIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTk4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGF2b2lkIGNyZWF0aW9ucyBvZiBKSVQgcmVsYXRlZCBkYXRhIHN0cnVjdHVyZXMgdW5k
ZXIgbm9uLUpJVCBtb2RlLgorICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGZvbGxvd2lu
ZyBhbGxvY2F0aW9ucy4KKworICAgICAgICAxLiBKSVRUaHVua3MKKyAgICAgICAgMi4gRlRMVGh1
bmtzCisgICAgICAgIDMuIEZpeGVkVk1Qb29sRXhlY3V0YWJsZUFsbG9jYXRvcgorICAgICAgICA0
LiBub0pJVFZhbHVlUHJvZmlsZVNpbmdsZXRvbiBzaW5jZSBpdCBpcyBubyBsb25nZXIgdXNlZAor
CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6cnVuRW5kUGhh
c2UpOgorICAgICAgICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Rml4ZWRWTVBvb2xFeGVjdXRhYmxlQWxsb2NhdG9yOjp+Rml4ZWRWTVBvb2xFeGVjdXRhYmxl
QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6aW5pdGlhbGl6
ZVVuZGVybHlpbmdBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9y
Ojppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6dW5k
ZXJNZW1vcnlQcmVzc3VyZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6Om1l
bW9yeVByZXNzdXJlTXVsdGlwbGllcik6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0
b3I6OmFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6aXNWYWxp
ZEV4ZWN1dGFibGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpn
ZXRMb2NrIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6Y29tbWl0
dGVkQnl0ZUNvdW50KToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6ZHVtcFBy
b2ZpbGUpOgorICAgICAgICAoSlNDOjpzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbElt
cGwpOgorICAgICAgICAoSlNDOjplbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2xJbXBsKToK
KyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6aW5pdGlhbGl6ZSk6CisgICAgICAg
IChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6OmluaXRpYWxpemVBbGxvY2F0b3IpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpFeGVjdXRhYmxlQWxsb2NhdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6fkV4ZWN1dGFi
bGVBbGxvY2F0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9y
Lmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3JCYXNlOjppc1ZhbGlkIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvckJhc2U6OnVuZGVyTWVtb3J5UHJl
c3N1cmUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yQmFzZTo6bWVtb3J5UHJl
c3N1cmVNdWx0aXBsaWVyKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvckJhc2U6
OmR1bXBQcm9maWxlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvckJhc2U6OmFs
bG9jYXRlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvckJhc2U6OnNldEpJVEVu
YWJsZWQpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yQmFzZTo6aXNWYWxpZEV4
ZWN1dGFibGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yQmFzZTo6
Y29tbWl0dGVkQnl0ZUNvdW50KToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvckJh
c2U6OmdldExvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpp
c1ZhbGlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRv
cjo6dW5kZXJNZW1vcnlQcmVzc3VyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVBbGxvY2F0b3I6Om1lbW9yeVByZXNzdXJlTXVsdGlwbGllcik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6OmFsbG9jYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6c2V0SklURW5hYmxlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6OmlzVmFsaWRFeGVjdXRhYmxlTWVtb3J5KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6Y29tbWl0dGVkQnl0
ZUNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6Z2V0
TG9jayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZyk6CisgICAgICAgICog
cnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OmVuYWJsZUFzc2VtYmxlcik6CisgICAgICAg
IChKU0M6OlZNOjpjYW5Vc2VBc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOS0wMy0xOSAgU2FhbSBiYXJhdGkgIDxzYmFyYXRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBQcnVuZSBjb2RlIGFmdGVyIEZvcmNlT1NSRXhpdApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCAxOTQ1MTA0ZjkwMTY4ZTQ1YzMzM2MxNDk4
YWNmOWFmMmRkMmQzMDdkLi43ZmRiNzJhYzUzMmZiNDU2NjNkZDA3OGNjNDE0ZTFhZWUzOTViZGQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMTQ5Niw5ICsxNDk2LDYgQEAg
TkVWRVJfSU5MSU5FIGJvb2wgSGVhcDo6cnVuRW5kUGhhc2UoR0NDb25kdWN0b3IgY29ubikKICAg
ICBpZiAodm0oKS0+dHlwZVByb2ZpbGVyKCkpCiAgICAgICAgIHZtKCktPnR5cGVQcm9maWxlcigp
LT5pbnZhbGlkYXRlVHlwZVNldENhY2hlKCk7CiAKLSAgICBpZiAoVmFsdWVQcm9maWxlKiBwcm9m
aWxlID0gdm0oKS0+bm9KSVRWYWx1ZVByb2ZpbGVTaW5nbGV0b24uZ2V0KCkpCi0gICAgICAgICpw
cm9maWxlID0gVmFsdWVQcm9maWxlKDApOwotICAgICAgICAKICAgICByZWFwV2Vha0hhbmRsZXMo
KTsKICAgICBwcnVuZVN0YWxlRW50cmllc0Zyb21XZWFrR0NNYXBzKCk7CiAgICAgc3dlZXBBcnJh
eUJ1ZmZlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVB
bGxvY2F0b3IuY3BwCmluZGV4IDQ2MDY3NTZlODBjNGI4ZjZmMDhjNDhhYTVjNzY5ZDVjODk4MjYy
OGMuLjAxNTI0NmI2ZGViNGI0YmIxMDA3Y2U0MWIwZGZjYzUyOWEwZjI3ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcApAQCAtMTE1
LDcgKzExNSw2IEBAIHN0YXRpYyB1aW50cHRyX3Qgc3RhcnRPZkZpeGVkV3JpdGFibGVNZW1vcnlQ
b29sOwogCiBjbGFzcyBGaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3I7CiBzdGF0aWMgRml4
ZWRWTVBvb2xFeGVjdXRhYmxlQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBudWxscHRyOwotc3RhdGlj
IEV4ZWN1dGFibGVBbGxvY2F0b3IqIGV4ZWN1dGFibGVBbGxvY2F0b3IgPSBudWxscHRyOwogCiBz
dGF0aWMgYm9vbCBzX2lzSklURW5hYmxlZCA9IHRydWU7CiBzdGF0aWMgYm9vbCBpc0pJVEVuYWJs
ZWQoKQpAQCAtNDA0LDQ5ICs0MDMsMzcgQEAgY2xhc3MgRml4ZWRWTVBvb2xFeGVjdXRhYmxlQWxs
b2NhdG9yIDogcHVibGljIE1ldGFBbGxvY2F0b3IgewogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxFeGVjdXRhYmxlTWVtb3J5UHRyVGFnPiBtX21lbW9yeUVuZDsKIH07CiAKLXZvaWQgRXhlY3V0
YWJsZUFsbG9jYXRvcjo6aW5pdGlhbGl6ZUFsbG9jYXRvcigpCi17Ci0gICAgQVNTRVJUKCFhbGxv
Y2F0b3IpOwotICAgIGFsbG9jYXRvciA9IG5ldyBGaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0
b3IoKTsKLSAgICBDb2RlUHJvZmlsaW5nOjpub3RpZnlBbGxvY2F0b3IoYWxsb2NhdG9yKTsKLQot
ICAgIGV4ZWN1dGFibGVBbGxvY2F0b3IgPSBuZXcgRXhlY3V0YWJsZUFsbG9jYXRvcjsKLX0KLQot
RXhlY3V0YWJsZUFsbG9jYXRvciYgRXhlY3V0YWJsZUFsbG9jYXRvcjo6c2luZ2xldG9uKCkKLXsK
LSAgICBBU1NFUlQoYWxsb2NhdG9yKTsKLSAgICBBU1NFUlQoZXhlY3V0YWJsZUFsbG9jYXRvcik7
Ci0gICAgcmV0dXJuICpleGVjdXRhYmxlQWxsb2NhdG9yOwotfQotCi1FeGVjdXRhYmxlQWxsb2Nh
dG9yOjpFeGVjdXRhYmxlQWxsb2NhdG9yKCkKLXsKLSAgICBBU1NFUlQoYWxsb2NhdG9yKTsKLX0K
LQotRXhlY3V0YWJsZUFsbG9jYXRvcjo6fkV4ZWN1dGFibGVBbGxvY2F0b3IoKQorRml4ZWRWTVBv
b2xFeGVjdXRhYmxlQWxsb2NhdG9yOjp+Rml4ZWRWTVBvb2xFeGVjdXRhYmxlQWxsb2NhdG9yKCkK
IHsKKyAgICBtX3Jlc2VydmF0aW9uLmRlYWxsb2NhdGUoKTsKIH0KIAotRml4ZWRWTVBvb2xFeGVj
dXRhYmxlQWxsb2NhdG9yOjp+Rml4ZWRWTVBvb2xFeGVjdXRhYmxlQWxsb2NhdG9yKCkKK3ZvaWQg
RXhlY3V0YWJsZUFsbG9jYXRvcjo6aW5pdGlhbGl6ZVVuZGVybHlpbmdBbGxvY2F0b3IoKQogewot
ICAgIG1fcmVzZXJ2YXRpb24uZGVhbGxvY2F0ZSgpOworICAgIEFTU0VSVCghYWxsb2NhdG9yKTsK
KyAgICBhbGxvY2F0b3IgPSBuZXcgRml4ZWRWTVBvb2xFeGVjdXRhYmxlQWxsb2NhdG9yKCk7Cisg
ICAgQ29kZVByb2ZpbGluZzo6bm90aWZ5QWxsb2NhdG9yKGFsbG9jYXRvcik7CiB9CiAKIGJvb2wg
RXhlY3V0YWJsZUFsbG9jYXRvcjo6aXNWYWxpZCgpIGNvbnN0CiB7CisgICAgaWYgKCFhbGxvY2F0
b3IpCisgICAgICAgIHJldHVybiBCYXNlOjppc1ZhbGlkKCk7CiAgICAgcmV0dXJuICEhYWxsb2Nh
dG9yLT5ieXRlc1Jlc2VydmVkKCk7CiB9CiAKIGJvb2wgRXhlY3V0YWJsZUFsbG9jYXRvcjo6dW5k
ZXJNZW1vcnlQcmVzc3VyZSgpCiB7CisgICAgaWYgKCFhbGxvY2F0b3IpCisgICAgICAgIHJldHVy
biBCYXNlOjp1bmRlck1lbW9yeVByZXNzdXJlKCk7CiAgICAgTWV0YUFsbG9jYXRvcjo6U3RhdGlz
dGljcyBzdGF0aXN0aWNzID0gYWxsb2NhdG9yLT5jdXJyZW50U3RhdGlzdGljcygpOwogICAgIHJl
dHVybiBzdGF0aXN0aWNzLmJ5dGVzQWxsb2NhdGVkID4gc3RhdGlzdGljcy5ieXRlc1Jlc2VydmVk
IC8gMjsKIH0KIAogZG91YmxlIEV4ZWN1dGFibGVBbGxvY2F0b3I6Om1lbW9yeVByZXNzdXJlTXVs
dGlwbGllcihzaXplX3QgYWRkZWRNZW1vcnlVc2FnZSkKIHsKKyAgICBpZiAoIWFsbG9jYXRvcikK
KyAgICAgICAgcmV0dXJuIEJhc2U6Om1lbW9yeVByZXNzdXJlTXVsdGlwbGllcihhZGRlZE1lbW9y
eVVzYWdlKTsKICAgICBNZXRhQWxsb2NhdG9yOjpTdGF0aXN0aWNzIHN0YXRpc3RpY3MgPSBhbGxv
Y2F0b3ItPmN1cnJlbnRTdGF0aXN0aWNzKCk7CiAgICAgQVNTRVJUKHN0YXRpc3RpY3MuYnl0ZXNB
bGxvY2F0ZWQgPD0gc3RhdGlzdGljcy5ieXRlc1Jlc2VydmVkKTsKICAgICBzaXplX3QgYnl0ZXNB
bGxvY2F0ZWQgPSBzdGF0aXN0aWNzLmJ5dGVzQWxsb2NhdGVkICsgYWRkZWRNZW1vcnlVc2FnZTsK
QEAgLTQ2NSw2ICs0NTIsOCBAQCBkb3VibGUgRXhlY3V0YWJsZUFsbG9jYXRvcjo6bWVtb3J5UHJl
c3N1cmVNdWx0aXBsaWVyKHNpemVfdCBhZGRlZE1lbW9yeVVzYWdlKQogCiBSZWZQdHI8RXhlY3V0
YWJsZU1lbW9yeUhhbmRsZT4gRXhlY3V0YWJsZUFsbG9jYXRvcjo6YWxsb2NhdGUoc2l6ZV90IHNp
emVJbkJ5dGVzLCB2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQog
eworICAgIGlmICghYWxsb2NhdG9yKQorICAgICAgICByZXR1cm4gQmFzZTo6YWxsb2NhdGUoc2l6
ZUluQnl0ZXMsIG93bmVyVUlELCBlZmZvcnQpOwogICAgIGlmIChPcHRpb25zOjpsb2dFeGVjdXRh
YmxlQWxsb2NhdGlvbigpKSB7CiAgICAgICAgIE1ldGFBbGxvY2F0b3I6OlN0YXRpc3RpY3Mgc3Rh
dHMgPSBhbGxvY2F0b3ItPmN1cnJlbnRTdGF0aXN0aWNzKCk7CiAgICAgICAgIGRhdGFMb2coIkFs
bG9jYXRpbmcgIiwgc2l6ZUluQnl0ZXMsICIgYnl0ZXMgb2YgZXhlY3V0YWJsZSBtZW1vcnkgd2l0
aCAiLCBzdGF0cy5ieXRlc0FsbG9jYXRlZCwgIiBieXRlcyBhbGxvY2F0ZWQsICIsIHN0YXRzLmJ5
dGVzUmVzZXJ2ZWQsICIgYnl0ZXMgcmVzZXJ2ZWQsIGFuZCAiLCBzdGF0cy5ieXRlc0NvbW1pdHRl
ZCwgIiBjb21taXR0ZWQuXG4iKTsKQEAgLTUxNCwzMyArNTAzLDQ1IEBAIFJlZlB0cjxFeGVjdXRh
YmxlTWVtb3J5SGFuZGxlPiBFeGVjdXRhYmxlQWxsb2NhdG9yOjphbGxvY2F0ZShzaXplX3Qgc2l6
ZUluQnl0ZXMsCiAKIGJvb2wgRXhlY3V0YWJsZUFsbG9jYXRvcjo6aXNWYWxpZEV4ZWN1dGFibGVN
ZW1vcnkoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgdm9pZCogYWRkcmVzcykKIHsKKyAg
ICBpZiAoIWFsbG9jYXRvcikKKyAgICAgICAgcmV0dXJuIEJhc2U6OmlzVmFsaWRFeGVjdXRhYmxl
TWVtb3J5KGxvY2tlciwgYWRkcmVzcyk7CiAgICAgcmV0dXJuIGFsbG9jYXRvci0+aXNJbkFsbG9j
YXRlZE1lbW9yeShsb2NrZXIsIGFkZHJlc3MpOwogfQogCiBMb2NrJiBFeGVjdXRhYmxlQWxsb2Nh
dG9yOjpnZXRMb2NrKCkgY29uc3QKIHsKKyAgICBpZiAoIWFsbG9jYXRvcikKKyAgICAgICAgcmV0
dXJuIEJhc2U6OmdldExvY2soKTsKICAgICByZXR1cm4gYWxsb2NhdG9yLT5nZXRMb2NrKCk7CiB9
CiAKIHNpemVfdCBFeGVjdXRhYmxlQWxsb2NhdG9yOjpjb21taXR0ZWRCeXRlQ291bnQoKQogewor
ICAgIGlmICghYWxsb2NhdG9yKQorICAgICAgICByZXR1cm4gQmFzZTo6Y29tbWl0dGVkQnl0ZUNv
dW50KCk7CiAgICAgcmV0dXJuIGFsbG9jYXRvci0+Ynl0ZXNDb21taXR0ZWQoKTsKIH0KIAogI2lm
IEVOQUJMRShNRVRBX0FMTE9DQVRPUl9QUk9GSUxFKQogdm9pZCBFeGVjdXRhYmxlQWxsb2NhdG9y
OjpkdW1wUHJvZmlsZSgpCiB7CisgICAgaWYgKCFhbGxvY2F0b3IpCisgICAgICAgIHJldHVybjsK
ICAgICBhbGxvY2F0b3ItPmR1bXBQcm9maWxlKCk7CiB9CiAjZW5kaWYKIAogdm9pZCogc3RhcnRP
ZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2xJbXBsKCkKIHsKKyAgICBpZiAoIWFsbG9jYXRvcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGFsbG9jYXRvci0+bWVtb3J5U3Rh
cnQoKTsKIH0KIAogdm9pZCogZW5kT2ZGaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sSW1wbCgpCiB7
CisgICAgaWYgKCFhbGxvY2F0b3IpCisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVy
biBhbGxvY2F0b3ItPm1lbW9yeUVuZCgpOwogfQogCkBAIC01NTEsMTMgKzU1MiwxMyBAQCBib29s
IGlzSklUUEModm9pZCogcGMpCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCi0jZWxzZSAvLyAhRU5B
QkxFKEpJVCkKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiBuYW1lc3BhY2UgSlNDIHsKIAogc3Rh
dGljIEV4ZWN1dGFibGVBbGxvY2F0b3IqIGV4ZWN1dGFibGVBbGxvY2F0b3I7CiAKLXZvaWQgRXhl
Y3V0YWJsZUFsbG9jYXRvcjo6aW5pdGlhbGl6ZUFsbG9jYXRvcigpCit2b2lkIEV4ZWN1dGFibGVB
bGxvY2F0b3I6OmluaXRpYWxpemUoKQogewogICAgIGV4ZWN1dGFibGVBbGxvY2F0b3IgPSBuZXcg
RXhlY3V0YWJsZUFsbG9jYXRvcjsKIH0KQEAgLTU2OSw1ICs1NzAsMyBAQCBFeGVjdXRhYmxlQWxs
b2NhdG9yJiBFeGVjdXRhYmxlQWxsb2NhdG9yOjpzaW5nbGV0b24oKQogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCmluZGV4IGJiOThmNTIwZTJiNDZhYWJiMWQ0
MjEyYjZhMmFjMDgwODk1YWQxNmQuLjkyYjY0NmQyMGE3YjJhMzE1YThkYmMwOTQ5YjNjN2M3MjM4
Njk4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFs
bG9jYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9j
YXRvci5oCkBAIC01OSw2ICs1OSwzNSBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgaml0QWxsb2Nh
dGlvbkdyYW51bGUgPSAzMjsKIAogdHlwZWRlZiBXVEY6Ok1ldGFBbGxvY2F0b3JIYW5kbGUgRXhl
Y3V0YWJsZU1lbW9yeUhhbmRsZTsKIAorY2xhc3MgRXhlY3V0YWJsZUFsbG9jYXRvckJhc2Ugewor
ICAgIGVudW0gUHJvdGVjdGlvblNldHRpbmcgeyBXcml0YWJsZSwgRXhlY3V0YWJsZSB9OworCitw
dWJsaWM6CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAg
IHN0YXRpYyBib29sIHVuZGVyTWVtb3J5UHJlc3N1cmUoKSB7IHJldHVybiBmYWxzZTsgfQorCisg
ICAgc3RhdGljIGRvdWJsZSBtZW1vcnlQcmVzc3VyZU11bHRpcGxpZXIoc2l6ZV90KSB7IHJldHVy
biAxLjA7IH0KKworICAgIHN0YXRpYyB2b2lkIGR1bXBQcm9maWxlKCkgeyB9CisKKyAgICBSZWZQ
dHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gYWxsb2NhdGUoc2l6ZV90LCB2b2lkKiwgSklUQ29t
cGlsYXRpb25FZmZvcnQpIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIHN0YXRpYyB2b2lkIHNl
dEpJVEVuYWJsZWQoYm9vbCkgeyB9OworICAgIAorICAgIGJvb2wgaXNWYWxpZEV4ZWN1dGFibGVN
ZW1vcnkoY29uc3QgQWJzdHJhY3RMb2NrZXImLCB2b2lkKikgeyByZXR1cm4gZmFsc2U7IH0KKwor
ICAgIHN0YXRpYyBzaXplX3QgY29tbWl0dGVkQnl0ZUNvdW50KCkgeyByZXR1cm4gMDsgfQorCisg
ICAgTG9jayYgZ2V0TG9jaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9sb2NrOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBtdXRhYmxlIExvY2sgbV9sb2NrOworfTsKKwogI2lmIEVO
QUJMRShKSVQpCiAKIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIHN0YXJ0T2ZGaXhlZEV4ZWN1dGFi
bGVNZW1vcnlQb29sSW1wbCgpOwpAQCAtMTIyLDE0ICsxNTEsMTYgQEAgc3RhdGljIGlubGluZSB2
b2lkKiBwZXJmb3JtSklUTWVtY3B5KHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qg
bikKICAgICByZXR1cm4gbWVtY3B5KGRzdCwgc3JjLCBuKTsKIH0KIAotY2xhc3MgRXhlY3V0YWJs
ZUFsbG9jYXRvciB7CitjbGFzcyBFeGVjdXRhYmxlQWxsb2NhdG9yIDogcHJpdmF0ZSBFeGVjdXRh
YmxlQWxsb2NhdG9yQmFzZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRXhlY3V0YWJsZUFsbG9jYXRvcik7CiAgICAgZW51bSBQcm90ZWN0
aW9uU2V0dGluZyB7IFdyaXRhYmxlLCBFeGVjdXRhYmxlIH07CisgICAgdXNpbmcgQmFzZSA9IEV4
ZWN1dGFibGVBbGxvY2F0b3JCYXNlOwogCiBwdWJsaWM6CiAgICAgc3RhdGljIEV4ZWN1dGFibGVB
bGxvY2F0b3ImIHNpbmdsZXRvbigpOwotICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVBbGxvY2F0
b3IoKTsKKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CisgICAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZVVuZGVybHlpbmdBbGxvY2F0b3IoKTsKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
OwogCkBAIC0xNTQsNDIgKzE4NSwxOCBAQCBjbGFzcyBFeGVjdXRhYmxlQWxsb2NhdG9yIHsKICAg
ICBMb2NrJiBnZXRMb2NrKCkgY29uc3Q7CiBwcml2YXRlOgogCi0gICAgRXhlY3V0YWJsZUFsbG9j
YXRvcigpOwotICAgIH5FeGVjdXRhYmxlQWxsb2NhdG9yKCk7CisgICAgRXhlY3V0YWJsZUFsbG9j
YXRvcigpID0gZGVmYXVsdDsKKyAgICB+RXhlY3V0YWJsZUFsbG9jYXRvcigpID0gZGVmYXVsdDsK
IH07CiAKICNlbHNlCiAKLWNsYXNzIEV4ZWN1dGFibGVBbGxvY2F0b3IgewotICAgIGVudW0gUHJv
dGVjdGlvblNldHRpbmcgeyBXcml0YWJsZSwgRXhlY3V0YWJsZSB9OwotCitjbGFzcyBFeGVjdXRh
YmxlQWxsb2NhdG9yIDogcHVibGljIEV4ZWN1dGFibGVBbGxvY2F0b3JCYXNlIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFeGVjdXRhYmxl
QWxsb2NhdG9yKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgRXhlY3V0YWJsZUFsbG9jYXRvciYgc2lu
Z2xldG9uKCk7Ci0gICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUFsbG9jYXRvcigpOwotCi0gICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHN0YXRpYyBib29s
IHVuZGVyTWVtb3J5UHJlc3N1cmUoKSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgc3RhdGljIGRv
dWJsZSBtZW1vcnlQcmVzc3VyZU11bHRpcGxpZXIoc2l6ZV90KSB7IHJldHVybiAxLjA7IH0KLQot
ICAgIHN0YXRpYyB2b2lkIGR1bXBQcm9maWxlKCkgeyB9Ci0KLSAgICBSZWZQdHI8RXhlY3V0YWJs
ZU1lbW9yeUhhbmRsZT4gYWxsb2NhdGUoc2l6ZV90LCB2b2lkKiwgSklUQ29tcGlsYXRpb25FZmZv
cnQpIHsgcmV0dXJuIG51bGxwdHI7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNldEpJVEVuYWJsZWQo
Ym9vbCkgeyB9OwotICAgIAotICAgIGJvb2wgaXNWYWxpZEV4ZWN1dGFibGVNZW1vcnkoY29uc3Qg
QWJzdHJhY3RMb2NrZXImLCB2b2lkKikgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHN0YXRpYyBz
aXplX3QgY29tbWl0dGVkQnl0ZUNvdW50KCkgeyByZXR1cm4gMDsgfQotCi0gICAgTG9jayYgZ2V0
TG9jaygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9sb2NrOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBtdXRhYmxlIExvY2sgbV9sb2NrOworICAgIHN0YXRpYyB2b2lkIGluaXRpYWxp
emUoKTsKIH07CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCogcGVyZm9ybUpJVE1lbWNweSh2b2lkICpk
c3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IG4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCmluZGV4IGQwYTM3ZjQwZjM5
ODhmYmQ2YTBhMjlhZTJiYTI2MTg5ZTcyYTYzODEuLjExMmQ5M2IzZWM2ZmUzZGQ3YmY5MWI4MmFh
ZjcxZTBkMmNlOGNmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCkBAIC02NSw5ICs2NSw3IEBAIHZvaWQgaW5pdGlh
bGl6ZVRocmVhZGluZygpCiAgICAgICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjppbml0aWFsaXpl
KCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShBU1NFTUJMRVIpCi0gICAgICAgIEV4ZWN1dGFibGVB
bGxvY2F0b3I6OmluaXRpYWxpemVBbGxvY2F0b3IoKTsKLSNlbmRpZgorICAgICAgICBFeGVjdXRh
YmxlQWxsb2NhdG9yOjppbml0aWFsaXplKCk7CiAgICAgICAgIFZNOjpjb21wdXRlQ2FuVXNlSklU
KCk7CiAKICAgICAgICAgTExJbnQ6OmluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAppbmRleCBlNzc4MDQ1NDVjMmIxNmRhOTk1NzhjZjAzNjQyYjFkZGJiNDBjMjZj
Li5mNTRmNmZlNzRjYTEyMjE4MjczNDQ0ZjdkMTdjOGFkZGQxNzY0ZDQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xODYsMTIgKzE4NiwxMyBAQCBBdG9taWM8dW5zaWdu
ZWQ+IFZNOjpzX251bWJlck9mSURzOwogLy8ganVzdCBjaGVja3MgZm9yIEVOQUJMRShKSVQpIG9y
IEVOQUJMRShZQVJSX0pJVCkgd2l0aCB0aGlzIHByZW1pc2UgaW4gbWluZC4KIAogI2lmIEVOQUJM
RShBU1NFTUJMRVIpCi1zdGF0aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIoRXhlY3V0YWJsZUFsbG9j
YXRvciYgZXhlY3V0YWJsZUFsbG9jYXRvcikKK3N0YXRpYyBib29sIGVuYWJsZUFzc2VtYmxlcigp
CiB7CiAgICAgaWYgKCFPcHRpb25zOjp1c2VKSVQoKSAmJiAhT3B0aW9uczo6dXNlUmVnRXhwSklU
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZXhlY3V0YWJsZUFsbG9jYXRv
ci5pc1ZhbGlkKCkpIHsKKyAgICBFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFsaXplVW5kZXJs
eWluZ0FsbG9jYXRvcigpOworICAgIGlmICghRXhlY3V0YWJsZUFsbG9jYXRvcjo6c2luZ2xldG9u
KCkuaXNWYWxpZCgpKSB7CiAgICAgICAgIGlmIChPcHRpb25zOjpjcmFzaElmQ2FudEFsbG9jYXRl
SklUTWVtb3J5KCkpCiAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yMDgsNyArMjA5LDcgQEAgYm9vbCBWTTo6Y2FuVXNlQXNzZW1ibGVyKCkKICAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGF0aWMgYm9vbCBlbmFibGVkID0gZmFs
c2U7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgW10gewotICAgICAgICBlbmFibGVkID0g
ZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0b3I6OnNpbmdsZXRvbigpKTsKKyAgICAg
ICAgZW5hYmxlZCA9IGVuYWJsZUFzc2VtYmxlcigpOwogICAgIH0pOwogICAgIHJldHVybiBlbmFi
bGVkOwogI2Vsc2UKQEAgLTQxMCwxNCArNDExLDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhl
YXBUeXBlIGhlYXBUeXBlKQogICAgIH0KIAogICAgIFRocmVhZDo6Y3VycmVudCgpLnNldEN1cnJl
bnRBdG9taWNTdHJpbmdUYWJsZShleGlzdGluZ0VudHJ5QXRvbWljU3RyaW5nVGFibGUpOwotCi0j
aWYgRU5BQkxFKEpJVCkKLSAgICBqaXRTdHVicyA9IHN0ZDo6bWFrZV91bmlxdWU8SklUVGh1bmtz
PigpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRlRMX0pJVCkKLSAgICBmdGxUaHVua3MgPSBzdGQ6
Om1ha2VfdW5pcXVlPEZUTDo6VGh1bmtzPigpOwotI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQog
ICAgIAogI2lmICFFTkFCTEUoQ19MT09QKQogICAgIGluaXRpYWxpemVIb3N0Q2FsbFJldHVyblZh
bHVlKCk7IC8vIFRoaXMgaXMgbmVlZGVkIHRvIGNvbnZpbmNlIHRoZSBsaW5rZXIgbm90IHRvIGRy
b3AgaG9zdCBjYWxsIHJldHVybiBzdXBwb3J0LgpAQCAtNDc1LDE0ICs0NjgsMTUgQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogI2lmIEVOQUJMRShKSVQpCiAgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgYW55IHN0dWJzIHRoYXQgdGhlIEpJVCBpcyBnb2luZyB0byB1c2Ug
YXJlIGluaXRpYWxpemVkIGluIG5vbi1jb21waWxhdGlvbiB0aHJlYWRzLgogICAgIGlmIChjYW5V
c2VKSVQoKSkgeworICAgICAgICBqaXRTdHVicyA9IHN0ZDo6bWFrZV91bmlxdWU8SklUVGh1bmtz
PigpOworI2lmIEVOQUJMRShGVExfSklUKQorICAgICAgICBmdGxUaHVua3MgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZUTDo6VGh1bmtzPigpOworI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogICAgICAg
ICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ2FsbCk7CiAgICAg
ICAgIGdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDb25zdHJ1Y3Qp
OwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKCFjYW5Vc2VKSVQoKSkKLSAgICAgICAgbm9KSVRW
YWx1ZVByb2ZpbGVTaW5nbGV0b24gPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZT4oMCk7
Ci0KICAgICBpZiAoT3B0aW9uczo6Zm9yY2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbigpIHx8
IE9wdGlvbnM6OmFsd2F5c1VzZVNoYWRvd0NoaWNrZW4oKSkKICAgICAgICAgZW5zdXJlU2hhZG93
Q2hpY2tlbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAzNzdkMzE1ZGVl
YjhkZjllZjVjNzQzMzg3NWE4ZGNjNzI2MmExNGQ1Li4xZDA3NDViNjcwMmM0NTdiODE5NDgyYzZh
YThhYmIzY2RkZWMyNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTgwNyw4
ICs4MDcsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1
YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIFJUVHJhY2VMaXN0KiBtX3J0VHJh
Y2VMaXN0OwogI2VuZGlmCiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlPiBub0pJ
VFZhbHVlUHJvZmlsZVNpbmdsZXRvbjsKLQogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVz
ZXREYXRlQ2FjaGUoKTsKIAogICAgIFJlZ0V4cENhY2hlKiByZWdFeHBDYWNoZSgpIHsgcmV0dXJu
IG1fcmVnRXhwQ2FjaGU7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365467</attachid>
            <date>2019-03-20 20:14:46 -0700</date>
            <delta_ts>2019-03-20 20:33:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195982-20190320201445.patch</filename>
            <type>text/plain</type>
            <size>30490</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
Zjk5MjViMDg2OGFiOTY1NmU1Njc0YTA3N2VmMTVkYmE4MGE1ZTBjLi44ZjExZGIxNTdmY2JkMWY2
ZWRjYmIxZjcyYWZjYmU2NmUxYmNlY2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAxOS0wMy0yMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIERvIG5vdCBjcmVhdGUgSklUIHJlbGF0ZWQgZGF0YSB1bmRlciBu
b24tSklUIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTk4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGF2b2lkIGNyZWF0aW9ucyBvZiBKSVQgcmVsYXRlZCBkYXRhIHN0cnVjdHVyZXMgdW5k
ZXIgbm9uLUpJVCBtb2RlLgorICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGZvbGxvd2lu
ZyBhbGxvY2F0aW9ucy4KKworICAgICAgICAxLiBKSVRUaHVua3MKKyAgICAgICAgMi4gRlRMVGh1
bmtzCisgICAgICAgIDMuIEZpeGVkVk1Qb29sRXhlY3V0YWJsZUFsbG9jYXRvcgorICAgICAgICA0
LiBub0pJVFZhbHVlUHJvZmlsZVNpbmdsZXRvbiBzaW5jZSBpdCBpcyBubyBsb25nZXIgdXNlZAor
ICAgICAgICA1LiBBUk0gZGlzYXNzZW1ibGVyIHNob3VsZCBiZSBpbml0aWFsaXplZCB3aGVuIGl0
IGlzIHVzZWQKKyAgICAgICAgNi4gV2FzbSByZWxhdGVkIGRhdGEgc3RydWN0dXJlcyBhcmUgYWNj
aWRlbnRhbGx5IGFsbG9jYXRlZCBpZiBWTTo6Y2FuVXNlSklUKCkgPT0gZmFsc2UgJiYKKyAgICAg
ICAgICAgT3B0aW9uczo6dXNlV2ViQXNzZW1ibHkoKSA9PSB0cnVlLiBBZGQgV2FzbTo6aXNTdXBw
b3J0ZWQoKSBmdW5jdGlvbiB0byBjaGVjayB0aGUgYm90aCBjb25kaXRpb25zLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpI
ZWFwOjpydW5FbmRQaGFzZSk6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpGaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3I6On5GaXhlZFZN
UG9vbEV4ZWN1dGFibGVBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2Nh
dG9yOjppbml0aWFsaXplVW5kZXJseWluZ0FsbG9jYXRvcik6CisgICAgICAgIChKU0M6OkV4ZWN1
dGFibGVBbGxvY2F0b3I6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
QWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJs
ZUFsbG9jYXRvcjo6bWVtb3J5UHJlc3N1cmVNdWx0aXBsaWVyKToKKyAgICAgICAgKEpTQzo6RXhl
Y3V0YWJsZUFsbG9jYXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxs
b2NhdG9yOjppc1ZhbGlkRXhlY3V0YWJsZU1lbW9yeSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVBbGxvY2F0b3I6OmdldExvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxs
b2NhdG9yOjpjb21taXR0ZWRCeXRlQ291bnQpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxs
b2NhdG9yOjpkdW1wUHJvZmlsZSk6CisgICAgICAgIChKU0M6OnN0YXJ0T2ZGaXhlZEV4ZWN1dGFi
bGVNZW1vcnlQb29sSW1wbCk6CisgICAgICAgIChKU0M6OmVuZE9mRml4ZWRFeGVjdXRhYmxlTWVt
b3J5UG9vbEltcGwpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFs
aXplKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6aW5pdGlhbGl6ZUFsbG9j
YXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6OkV4ZWN1
dGFibGVBbGxvY2F0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2Nh
dG9yOjp+RXhlY3V0YWJsZUFsbG9jYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvckJhc2U6
OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yQmFzZTo6
dW5kZXJNZW1vcnlQcmVzc3VyZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3JC
YXNlOjptZW1vcnlQcmVzc3VyZU11bHRpcGxpZXIpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
QWxsb2NhdG9yQmFzZTo6ZHVtcFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxs
b2NhdG9yQmFzZTo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9y
QmFzZTo6c2V0SklURW5hYmxlZCk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3JC
YXNlOjppc1ZhbGlkRXhlY3V0YWJsZU1lbW9yeSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVB
bGxvY2F0b3JCYXNlOjpjb21taXR0ZWRCeXRlQ291bnQpOgorICAgICAgICAoSlNDOjpFeGVjdXRh
YmxlQWxsb2NhdG9yQmFzZTo6Z2V0TG9jayBjb25zdCk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVBbGxvY2F0b3I6OmlzVmFsaWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVj
dXRhYmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6bWVtb3J5UHJlc3N1cmVNdWx0aXBsaWVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6YWxsb2NhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVkKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6aXNWYWxpZEV4ZWN1
dGFibGVNZW1vcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9y
Ojpjb21taXR0ZWRCeXRlQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
QWxsb2NhdG9yOjpnZXRMb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBqc2MuY3BwOgor
ICAgICAgICAoZnVuY3Rpb25XZWJBc3NlbWJseU1lbW9yeU1vZGUpOgorICAgICAgICAqIHJ1bnRp
bWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJl
YWRpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suY3Bw
OgorICAgICAgICAoSlNDOjpKU0xvY2s6OmRpZEFjcXVpcmVMb2NrKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6ZW5hYmxlQXNzZW1ibGVyKToKKyAgICAgICAgKEpT
Qzo6Vk06OmNhblVzZUFzc2VtYmxlcik6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAg
ICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpTaWdpbGxDcmFzaEFuYWx5emVyOjpTaWdpbGxDcmFzaEFuYWx5emVy
KToKKyAgICAgICAgKEpTQzo6U2lnaWxsQ3Jhc2hBbmFseXplcjo6ZHVtcENvZGVCbG9jayk6Cisg
ICAgICAgICogd2FzbS9XYXNtQ2FwYWJpbGl0aWVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpX
YXNtOjppc1N1cHBvcnRlZCk6CisgICAgICAgICogd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6ZW5hYmxlRmFzdE1lbW9yeSk6CisKIDIwMTktMDMt
MjAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0Q2FsbGVl
IGRvZXMgbm90IHJlcG9ydCB0aGUgY29ycmVjdCB0eXBlIGluIEFJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggOWI0ZTU1ZTY2MjIxNzQ4ODBiMTNmMjJiN2RkM2IyN2NhNmE0
ZWQ0MS4uYmJhZGE4MGM2N2U3Mzc0MmQ2Y2FhMDBhNThjMjZkNDdiNmM5YWRhOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTc4LDYgKzk3OCw3IEBAIHNldChKYXZhU2Ny
aXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9Xcml0ZUJhcnJp
ZXIuaAogICAgIHJ1bnRpbWUvV3JpdGVCYXJyaWVySW5saW5lcy5oCiAKKyAgICB3YXNtL1dhc21D
YXBhYmlsaXRpZXMuaAogICAgIHdhc20vV2FzbUNvZGVCbG9jay5oCiAgICAgd2FzbS9XYXNtQ29u
dGV4dC5oCiAgICAgd2FzbS9XYXNtRW1iZWRkZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBhYjRlMWIyZmFkOTJlODcxMWQ3YzEyMGJkYzc3ZDM3MjUzYzhmMTMwLi4zMTI4MDQ0
OGNiOGMwMzUzYWY5ZmM5YmE2NjhiOTMzYTRhNDc2YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTc0OSw2ICsxNzQ5LDcgQEAKIAkJRTMyQUIyNDQxRENENzVGNDAwRDc1MzNB
IC8qIE1hY3JvQXNzZW1ibGVySGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM4MEE3NkIxRENENzE5NTAwMEY4OUU2IC8qIE1hY3JvQXNzZW1i
bGVySGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzMzRDQkI1MjFGRDk2QTkwMDBFQjE3OCAvKiBSZWdFeHBHbG9iYWxEYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM0Q0JCMzIxRkQ5
NkE5MDAwRUIxNzggLyogUmVnRXhwR2xvYmFsRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E2MUI2MzIyMDIwMEVFMDg0MCAvKiBS
ZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMzdCOTY3MjI0MzI0
RUEwMDkzQTgyMCAvKiBXYXNtQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM3Qjk2NjIyNDMyNEU1MDA5M0E4MjAgLyogV2FzbUNh
cGFiaWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzM0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0Lmx1dC5oICovOyB9OwogCQlFMzNFOEQxRDFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRp
dmVTdGRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMzRThEMUIxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNFOEQy
MTFCOTAxM0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNFOEQxRjFCOTAxM0RFMDAzNDZC
NTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ2ODMsNiArNDY4NCw3IEBACiAJCUUzMzRDQkIzMjFG
RDk2QTkwMDBFQjE3OCAvKiBSZWdFeHBHbG9iYWxEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlZ0V4cEdsb2JhbERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmbGVjdE9iamVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZs
ZWN0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmxlY3RPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzN0I5NjYyMjQzMjRFNTAwOTNB
ODIwIC8qIFdhc21DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNhcGFiaWxpdGll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzNCM0UyNTFCN0FCRDc1MDA0OERC
MkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0U4RDFBMUI5MDEzQzMwMDM0NkI1MiAv
KiBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzNFOEQxQjFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDczLDYgKzY0NzUsNyBAQAogCQkJCTUyNUMw
REQ4MUU5MzU4NDcwMDIxODRDRCAvKiBXYXNtQ2FsbGVlLmggKi8sCiAJCQkJNTNGRDA0RDExRDdB
QjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5jcHAgKi8sCiAJCQkJNTNGRDA0
RDIxRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5oICovLAorCQkJCUUz
MzdCOTY2MjI0MzI0RTUwMDkzQTgyMCAvKiBXYXNtQ2FwYWJpbGl0aWVzLmggKi8sCiAJCQkJNTI2
QUM0QjQxRTk3N0M1RDAwMzUwMEUxIC8qIFdhc21Db2RlQmxvY2suY3BwICovLAogCQkJCTUyNkFD
NEI1MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2NrLmggKi8sCiAJCQkJQUQ0MTJCMzIx
RTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmggKi8sCkBAIC04NDgxLDYgKzg0ODQsNyBA
QAogCQkJCTc5QTIyODM2MUQzNUQ3MUYwMEQ4RTA2NyAvKiBBcml0aFByb2ZpbGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNkIxQ0I5MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTFFMkM0MDIyNDBERDYyMDBGNkI3MjkgLyog
QVJNNjRFQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFERDE0NTBGRERFQTk4MDAw
NkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODMzNUI4MTYz
OUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtODUyMiw3ICs4NTI2LDYgQEAKIAkJCQkwRjJDNjNCMDFFNjBBRTQzMDBDMTM4Mzkg
LyogQjNCYW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwMTFCREFDREFDMDA4MEZGNzQg
LyogQjNCYXNpY0Jsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwMjFCREFDREFDMDA4
MEZGNzQgLyogQjNCYXNpY0Jsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUxRTJD
M0YyMjQwREQ1ODAwRjZCNzI5IC8qIE1hY3JvQXNzZW1ibGVyQVJNNjRFLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVDODUwMzFCREFDREFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2NrVXRpbHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMzM4RTFDMUJGMjg2RUEwMDEzQzg4RiAvKiBCM0Jsb2NrSW5z
ZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwNDFCREFDREFDMDA4MEZGNzQg
LyogQjNCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTg2MDIsNyArODYwNSw2IEBA
CiAJCQkJMEZFQzg1M0ExQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3dpdGNoVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNDU3MDQxMUJFNTg0Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzQzFCREFDREFDMDA4MEZGNzQgLyogQjNUeXBlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlGRTFFMkM0MDIyNDBERDYyMDBGNkI3MjkgLyogQVJNNjRFQXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQ0ZERkJEQTFEMUY1RDlFMDBGRTNENzIgLyog
QjNUeXBlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzRTFCREFDREFDMDA4MEZGNzQg
LyogQjNVcHNpbG9uVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTQwMUJEQUNEQUMw
MDgwRkY3NCAvKiBCM1VzZUNvdW50cy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDcxLDYgKzk0NzMs
NyBAQAogCQkJCTE0QjcyM0I4MTJEN0RBNkYwMDNCRDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8q
IE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMUUyQzNGMjI0MERE
NTgwMEY2QjcyOSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0RS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODZBREQxNDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2M0IyM0UwMEZDNjExODkwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMkFCMjQ0MURDRDc1RjQwMEQ3NTMzQSAvKiBN
YWNyb0Fzc2VtYmxlckhlbHBlcnMuaCBpbiBIZWFkZXJzICovLApAQCAtOTgwNiw2ICs5ODA5LDcg
QEAKIAkJCQlBRDRCMURGQTFERjI0NEUyMDA3MUFFMzIgLyogV2FzbUJpbmRpbmcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUyNUMwRERBMUU5MzU4NDcwMDIxODRDRCAvKiBXYXNtQ2FsbGVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1M0ZEMDRENDFEN0FCMjkxMDAzMjg3RDMgLyogV2FzbUNhbGxpbmdD
b252ZW50aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzM3Qjk2NzIyNDMyNEVBMDA5M0E4MjAg
LyogV2FzbUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI2QUM0QjcxRTk3N0M1
RDAwMzUwMEUxIC8qIFdhc21Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUFENDEyQjM0
MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzU5
M0M4OThCRTcxNEE2NEJFOTNBNkU3IC8qIFdhc21Db250ZXh0SW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDE5NDUxMDRmOTAxNjhlNDVj
MzMzYzE0OThhY2Y5YWYyZGQyZDMwN2QuLjdmZGI3MmFjNTMyZmI0NTY2M2RkMDc4Y2M0MTRlMWFl
ZTM5NWJkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0xNDk2LDkgKzE0
OTYsNiBAQCBORVZFUl9JTkxJTkUgYm9vbCBIZWFwOjpydW5FbmRQaGFzZShHQ0NvbmR1Y3RvciBj
b25uKQogICAgIGlmICh2bSgpLT50eXBlUHJvZmlsZXIoKSkKICAgICAgICAgdm0oKS0+dHlwZVBy
b2ZpbGVyKCktPmludmFsaWRhdGVUeXBlU2V0Q2FjaGUoKTsKIAotICAgIGlmIChWYWx1ZVByb2Zp
bGUqIHByb2ZpbGUgPSB2bSgpLT5ub0pJVFZhbHVlUHJvZmlsZVNpbmdsZXRvbi5nZXQoKSkKLSAg
ICAgICAgKnByb2ZpbGUgPSBWYWx1ZVByb2ZpbGUoMCk7Ci0gICAgICAgIAogICAgIHJlYXBXZWFr
SGFuZGxlcygpOwogICAgIHBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKICAgICBz
d2VlcEFycmF5QnVmZmVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhl
Y3V0YWJsZUFsbG9jYXRvci5jcHAKaW5kZXggYmM2YzMzYzM4OGZkYWQ5MzRmZjk1MTJmZjAwMmE4
NzdjMzZjNDJiMy4uN2U2MzdmNjc4ZmQyY2RmZTk0OTA4YThkNWUxYzM4NTFjMzRiM2EzMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3Bw
CkBAIC0xMTUsNyArMTE1LDYgQEAgc3RhdGljIHVpbnRwdHJfdCBzdGFydE9mRml4ZWRXcml0YWJs
ZU1lbW9yeVBvb2w7CiAKIGNsYXNzIEZpeGVkVk1Qb29sRXhlY3V0YWJsZUFsbG9jYXRvcjsKIHN0
YXRpYyBGaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3IqIGFsbG9jYXRvciA9IG51bGxwdHI7
Ci1zdGF0aWMgRXhlY3V0YWJsZUFsbG9jYXRvciogZXhlY3V0YWJsZUFsbG9jYXRvciA9IG51bGxw
dHI7CiAKIHN0YXRpYyBib29sIHNfaXNKSVRFbmFibGVkID0gdHJ1ZTsKIHN0YXRpYyBib29sIGlz
SklURW5hYmxlZCgpCkBAIC00MDQsNDkgKzQwMywzNyBAQCBjbGFzcyBGaXhlZFZNUG9vbEV4ZWN1
dGFibGVBbGxvY2F0b3IgOiBwdWJsaWMgTWV0YUFsbG9jYXRvciB7CiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPEV4ZWN1dGFibGVNZW1vcnlQdHJUYWc+IG1fbWVtb3J5RW5kOwogfTsKIAotdm9p
ZCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFsaXplQWxsb2NhdG9yKCkKLXsKLSAgICBBU1NF
UlQoIWFsbG9jYXRvcik7Ci0gICAgYWxsb2NhdG9yID0gbmV3IEZpeGVkVk1Qb29sRXhlY3V0YWJs
ZUFsbG9jYXRvcigpOwotICAgIENvZGVQcm9maWxpbmc6Om5vdGlmeUFsbG9jYXRvcihhbGxvY2F0
b3IpOwotCi0gICAgZXhlY3V0YWJsZUFsbG9jYXRvciA9IG5ldyBFeGVjdXRhYmxlQWxsb2NhdG9y
OwotfQotCi1FeGVjdXRhYmxlQWxsb2NhdG9yJiBFeGVjdXRhYmxlQWxsb2NhdG9yOjpzaW5nbGV0
b24oKQotewotICAgIEFTU0VSVChhbGxvY2F0b3IpOwotICAgIEFTU0VSVChleGVjdXRhYmxlQWxs
b2NhdG9yKTsKLSAgICByZXR1cm4gKmV4ZWN1dGFibGVBbGxvY2F0b3I7Ci19Ci0KLUV4ZWN1dGFi
bGVBbGxvY2F0b3I6OkV4ZWN1dGFibGVBbGxvY2F0b3IoKQotewotICAgIEFTU0VSVChhbGxvY2F0
b3IpOwotfQotCi1FeGVjdXRhYmxlQWxsb2NhdG9yOjp+RXhlY3V0YWJsZUFsbG9jYXRvcigpCitG
aXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3I6On5GaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxv
Y2F0b3IoKQogeworICAgIG1fcmVzZXJ2YXRpb24uZGVhbGxvY2F0ZSgpOwogfQogCi1GaXhlZFZN
UG9vbEV4ZWN1dGFibGVBbGxvY2F0b3I6On5GaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3Io
KQordm9pZCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFsaXplVW5kZXJseWluZ0FsbG9jYXRv
cigpCiB7Ci0gICAgbV9yZXNlcnZhdGlvbi5kZWFsbG9jYXRlKCk7CisgICAgQVNTRVJUKCFhbGxv
Y2F0b3IpOworICAgIGFsbG9jYXRvciA9IG5ldyBGaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0
b3IoKTsKKyAgICBDb2RlUHJvZmlsaW5nOjpub3RpZnlBbGxvY2F0b3IoYWxsb2NhdG9yKTsKIH0K
IAogYm9vbCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppc1ZhbGlkKCkgY29uc3QKIHsKKyAgICBpZiAo
IWFsbG9jYXRvcikKKyAgICAgICAgcmV0dXJuIEJhc2U6OmlzVmFsaWQoKTsKICAgICByZXR1cm4g
ISFhbGxvY2F0b3ItPmJ5dGVzUmVzZXJ2ZWQoKTsKIH0KIAogYm9vbCBFeGVjdXRhYmxlQWxsb2Nh
dG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKCkKIHsKKyAgICBpZiAoIWFsbG9jYXRvcikKKyAgICAg
ICAgcmV0dXJuIEJhc2U6OnVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKICAgICBNZXRhQWxsb2NhdG9y
OjpTdGF0aXN0aWNzIHN0YXRpc3RpY3MgPSBhbGxvY2F0b3ItPmN1cnJlbnRTdGF0aXN0aWNzKCk7
CiAgICAgcmV0dXJuIHN0YXRpc3RpY3MuYnl0ZXNBbGxvY2F0ZWQgPiBzdGF0aXN0aWNzLmJ5dGVz
UmVzZXJ2ZWQgLyAyOwogfQogCiBkb3VibGUgRXhlY3V0YWJsZUFsbG9jYXRvcjo6bWVtb3J5UHJl
c3N1cmVNdWx0aXBsaWVyKHNpemVfdCBhZGRlZE1lbW9yeVVzYWdlKQogeworICAgIGlmICghYWxs
b2NhdG9yKQorICAgICAgICByZXR1cm4gQmFzZTo6bWVtb3J5UHJlc3N1cmVNdWx0aXBsaWVyKGFk
ZGVkTWVtb3J5VXNhZ2UpOwogICAgIE1ldGFBbGxvY2F0b3I6OlN0YXRpc3RpY3Mgc3RhdGlzdGlj
cyA9IGFsbG9jYXRvci0+Y3VycmVudFN0YXRpc3RpY3MoKTsKICAgICBBU1NFUlQoc3RhdGlzdGlj
cy5ieXRlc0FsbG9jYXRlZCA8PSBzdGF0aXN0aWNzLmJ5dGVzUmVzZXJ2ZWQpOwogICAgIHNpemVf
dCBieXRlc0FsbG9jYXRlZCA9IHN0YXRpc3RpY3MuYnl0ZXNBbGxvY2F0ZWQgKyBhZGRlZE1lbW9y
eVVzYWdlOwpAQCAtNDY1LDYgKzQ1Miw4IEBAIGRvdWJsZSBFeGVjdXRhYmxlQWxsb2NhdG9yOjpt
ZW1vcnlQcmVzc3VyZU11bHRpcGxpZXIoc2l6ZV90IGFkZGVkTWVtb3J5VXNhZ2UpCiAKIFJlZlB0
cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBFeGVjdXRhYmxlQWxsb2NhdG9yOjphbGxvY2F0ZShz
aXplX3Qgc2l6ZUluQnl0ZXMsIHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCBl
ZmZvcnQpCiB7CisgICAgaWYgKCFhbGxvY2F0b3IpCisgICAgICAgIHJldHVybiBCYXNlOjphbGxv
Y2F0ZShzaXplSW5CeXRlcywgb3duZXJVSUQsIGVmZm9ydCk7CiAgICAgaWYgKE9wdGlvbnM6Omxv
Z0V4ZWN1dGFibGVBbGxvY2F0aW9uKCkpIHsKICAgICAgICAgTWV0YUFsbG9jYXRvcjo6U3RhdGlz
dGljcyBzdGF0cyA9IGFsbG9jYXRvci0+Y3VycmVudFN0YXRpc3RpY3MoKTsKICAgICAgICAgZGF0
YUxvZygiQWxsb2NhdGluZyAiLCBzaXplSW5CeXRlcywgIiBieXRlcyBvZiBleGVjdXRhYmxlIG1l
bW9yeSB3aXRoICIsIHN0YXRzLmJ5dGVzQWxsb2NhdGVkLCAiIGJ5dGVzIGFsbG9jYXRlZCwgIiwg
c3RhdHMuYnl0ZXNSZXNlcnZlZCwgIiBieXRlcyByZXNlcnZlZCwgYW5kICIsIHN0YXRzLmJ5dGVz
Q29tbWl0dGVkLCAiIGNvbW1pdHRlZC5cbiIpOwpAQCAtNTE0LDMzICs1MDMsNDUgQEAgUmVmUHRy
PEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IEV4ZWN1dGFibGVBbGxvY2F0b3I6OmFsbG9jYXRlKHNp
emVfdCBzaXplSW5CeXRlcywKIAogYm9vbCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppc1ZhbGlkRXhl
Y3V0YWJsZU1lbW9yeShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCB2b2lkKiBhZGRyZXNz
KQogeworICAgIGlmICghYWxsb2NhdG9yKQorICAgICAgICByZXR1cm4gQmFzZTo6aXNWYWxpZEV4
ZWN1dGFibGVNZW1vcnkobG9ja2VyLCBhZGRyZXNzKTsKICAgICByZXR1cm4gYWxsb2NhdG9yLT5p
c0luQWxsb2NhdGVkTWVtb3J5KGxvY2tlciwgYWRkcmVzcyk7CiB9CiAKIExvY2smIEV4ZWN1dGFi
bGVBbGxvY2F0b3I6OmdldExvY2soKSBjb25zdAogeworICAgIGlmICghYWxsb2NhdG9yKQorICAg
ICAgICByZXR1cm4gQmFzZTo6Z2V0TG9jaygpOwogICAgIHJldHVybiBhbGxvY2F0b3ItPmdldExv
Y2soKTsKIH0KIAogc2l6ZV90IEV4ZWN1dGFibGVBbGxvY2F0b3I6OmNvbW1pdHRlZEJ5dGVDb3Vu
dCgpCiB7CisgICAgaWYgKCFhbGxvY2F0b3IpCisgICAgICAgIHJldHVybiBCYXNlOjpjb21taXR0
ZWRCeXRlQ291bnQoKTsKICAgICByZXR1cm4gYWxsb2NhdG9yLT5ieXRlc0NvbW1pdHRlZCgpOwog
fQogCiAjaWYgRU5BQkxFKE1FVEFfQUxMT0NBVE9SX1BST0ZJTEUpCiB2b2lkIEV4ZWN1dGFibGVB
bGxvY2F0b3I6OmR1bXBQcm9maWxlKCkKIHsKKyAgICBpZiAoIWFsbG9jYXRvcikKKyAgICAgICAg
cmV0dXJuOwogICAgIGFsbG9jYXRvci0+ZHVtcFByb2ZpbGUoKTsKIH0KICNlbmRpZgogCiB2b2lk
KiBzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbEltcGwoKQogeworICAgIGlmICghYWxs
b2NhdG9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gYWxsb2NhdG9yLT5t
ZW1vcnlTdGFydCgpOwogfQogCiB2b2lkKiBlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2xJ
bXBsKCkKIHsKKyAgICBpZiAoIWFsbG9jYXRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgcmV0dXJuIGFsbG9jYXRvci0+bWVtb3J5RW5kKCk7CiB9CiAKQEAgLTU1MSwxMyArNTUyLDEz
IEBAIGJvb2wgaXNKSVRQQyh2b2lkKiBwYykKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKLSNlbHNl
IC8vICFFTkFCTEUoSklUKQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBzdGF0aWMgRXhlY3V0YWJsZUFsbG9jYXRvciogZXhlY3V0YWJsZUFsbG9jYXRvcjsKIAot
dm9pZCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFsaXplQWxsb2NhdG9yKCkKK3ZvaWQgRXhl
Y3V0YWJsZUFsbG9jYXRvcjo6aW5pdGlhbGl6ZSgpCiB7CiAgICAgZXhlY3V0YWJsZUFsbG9jYXRv
ciA9IG5ldyBFeGVjdXRhYmxlQWxsb2NhdG9yOwogfQpAQCAtNTY5LDUgKzU3MCwzIEBAIEV4ZWN1
dGFibGVBbGxvY2F0b3ImIEV4ZWN1dGFibGVBbGxvY2F0b3I6OnNpbmdsZXRvbigpCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKaW5kZXggYmI5OGY1MjBlMmI0
NmFhYmIxZDQyMTJiNmEyYWMwODA4OTVhZDE2ZC4uMTVhZmRjMmY2YWI2MDI5MjM0MGJmNTQyNDY0
ZDkyODRiZGExNzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVj
dXRhYmxlQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmgKQEAgLTU5LDYgKzU5LDM4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBq
aXRBbGxvY2F0aW9uR3JhbnVsZSA9IDMyOwogCiB0eXBlZGVmIFdURjo6TWV0YUFsbG9jYXRvckhh
bmRsZSBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlOwogCitjbGFzcyBFeGVjdXRhYmxlQWxsb2NhdG9y
QmFzZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRXhlY3V0YWJsZUFsbG9jYXRvcik7CisKKyAgICBlbnVtIFByb3RlY3Rpb25TZXR0aW5n
IHsgV3JpdGFibGUsIEV4ZWN1dGFibGUgfTsKKworcHVibGljOgorICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBzdGF0aWMgYm9vbCB1bmRlck1lbW9yeVBy
ZXNzdXJlKCkgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHN0YXRpYyBkb3VibGUgbWVtb3J5UHJl
c3N1cmVNdWx0aXBsaWVyKHNpemVfdCkgeyByZXR1cm4gMS4wOyB9CisKKyAgICBzdGF0aWMgdm9p
ZCBkdW1wUHJvZmlsZSgpIHsgfQorCisgICAgUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+
IGFsbG9jYXRlKHNpemVfdCwgdm9pZCosIEpJVENvbXBpbGF0aW9uRWZmb3J0KSB7IHJldHVybiBu
dWxscHRyOyB9CisKKyAgICBzdGF0aWMgdm9pZCBzZXRKSVRFbmFibGVkKGJvb2wpIHsgfTsKKyAg
ICAKKyAgICBib29sIGlzVmFsaWRFeGVjdXRhYmxlTWVtb3J5KGNvbnN0IEFic3RyYWN0TG9ja2Vy
Jiwgdm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGNvbW1pdHRl
ZEJ5dGVDb3VudCgpIHsgcmV0dXJuIDA7IH0KKworICAgIExvY2smIGdldExvY2soKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbG9jazsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgbXV0
YWJsZSBMb2NrIG1fbG9jazsKK307CisKICNpZiBFTkFCTEUoSklUKQogCiBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkKiBzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbEltcGwoKTsKQEAgLTEy
MiwxNCArMTU0LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCogcGVyZm9ybUpJVE1lbWNweSh2b2lk
ICpkc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IG4pCiAgICAgcmV0dXJuIG1lbWNweShkc3Qs
IHNyYywgbik7CiB9CiAKLWNsYXNzIEV4ZWN1dGFibGVBbGxvY2F0b3IgewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV4ZWN1dGFibGVBbGxv
Y2F0b3IpOwotICAgIGVudW0gUHJvdGVjdGlvblNldHRpbmcgeyBXcml0YWJsZSwgRXhlY3V0YWJs
ZSB9OwotCitjbGFzcyBFeGVjdXRhYmxlQWxsb2NhdG9yIDogcHJpdmF0ZSBFeGVjdXRhYmxlQWxs
b2NhdG9yQmFzZSB7CiBwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEV4ZWN1dGFibGVBbGxvY2F0
b3JCYXNlOworCiAgICAgc3RhdGljIEV4ZWN1dGFibGVBbGxvY2F0b3ImIHNpbmdsZXRvbigpOwot
ICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVBbGxvY2F0b3IoKTsKKyAgICBzdGF0aWMgdm9pZCBp
bml0aWFsaXplKCk7CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVVuZGVybHlpbmdBbGxvY2F0
b3IoKTsKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwogCkBAIC0xNTIsNDQgKzE4MywyMiBA
QCBjbGFzcyBFeGVjdXRhYmxlQWxsb2NhdG9yIHsKICAgICBzdGF0aWMgc2l6ZV90IGNvbW1pdHRl
ZEJ5dGVDb3VudCgpOwogCiAgICAgTG9jayYgZ2V0TG9jaygpIGNvbnN0OwotcHJpdmF0ZToKIAot
ICAgIEV4ZWN1dGFibGVBbGxvY2F0b3IoKTsKLSAgICB+RXhlY3V0YWJsZUFsbG9jYXRvcigpOwor
cHJpdmF0ZToKKyAgICBFeGVjdXRhYmxlQWxsb2NhdG9yKCkgPSBkZWZhdWx0OworICAgIH5FeGVj
dXRhYmxlQWxsb2NhdG9yKCkgPSBkZWZhdWx0OwogfTsKIAogI2Vsc2UKIAotY2xhc3MgRXhlY3V0
YWJsZUFsbG9jYXRvciB7Ci0gICAgZW51bSBQcm90ZWN0aW9uU2V0dGluZyB7IFdyaXRhYmxlLCBF
eGVjdXRhYmxlIH07Ci0KK2NsYXNzIEV4ZWN1dGFibGVBbGxvY2F0b3IgOiBwdWJsaWMgRXhlY3V0
YWJsZUFsbG9jYXRvckJhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBFeGVjdXRhYmxlQWxsb2Nh
dG9yJiBzaW5nbGV0b24oKTsKLSAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplQWxsb2NhdG9yKCk7
Ci0KLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgc3Rh
dGljIGJvb2wgdW5kZXJNZW1vcnlQcmVzc3VyZSgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICBz
dGF0aWMgZG91YmxlIG1lbW9yeVByZXNzdXJlTXVsdGlwbGllcihzaXplX3QpIHsgcmV0dXJuIDEu
MDsgfQotCi0gICAgc3RhdGljIHZvaWQgZHVtcFByb2ZpbGUoKSB7IH0KLQotICAgIFJlZlB0cjxF
eGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBhbGxvY2F0ZShzaXplX3QsIHZvaWQqLCBKSVRDb21waWxh
dGlvbkVmZm9ydCkgeyByZXR1cm4gbnVsbHB0cjsgfQotCi0gICAgc3RhdGljIHZvaWQgc2V0SklU
RW5hYmxlZChib29sKSB7IH07Ci0gICAgCi0gICAgYm9vbCBpc1ZhbGlkRXhlY3V0YWJsZU1lbW9y
eShjb25zdCBBYnN0cmFjdExvY2tlciYsIHZvaWQqKSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAg
c3RhdGljIHNpemVfdCBjb21taXR0ZWRCeXRlQ291bnQoKSB7IHJldHVybiAwOyB9Ci0KLSAgICBM
b2NrJiBnZXRMb2NrKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2xvY2s7Ci0gICAg
fQorICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToKLSAgICBtdXRhYmxl
IExvY2sgbV9sb2NrOworICAgIEV4ZWN1dGFibGVBbGxvY2F0b3IoKSA9IGRlZmF1bHQ7CisgICAg
fkV4ZWN1dGFibGVBbGxvY2F0b3IoKSA9IGRlZmF1bHQ7CiB9OwogCiBzdGF0aWMgaW5saW5lIHZv
aWQqIHBlcmZvcm1KSVRNZW1jcHkodm9pZCAqZHN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBu
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBkMDM5OWRkNTZiNGZhMDQ5NTI4NDM1MzUzZGY2MTQz
MmE4YTA4NGIwLi42ZmQxZjZhMjJkNTdmMzE2ZmVmODIzYjBkNWQ5MzE5NDE3MzI2MDAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIlN1cGVyU2FtcGxl
ci5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiV2FzbUNhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIldhc21D
b250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5oIgogI2luY2x1ZGUg
Ildhc21NZW1vcnkuaCIKQEAgLTIzMDcsNyArMjMwOCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlNb2RlKEV4ZWNTdGF0ZSog
ZXhlCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgCi0gICAgaWYgKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseSgp
KQorICAgIGlmICghV2FzbTo6aXNTdXBwb3J0ZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsICJXZWJBc3NlbWJseU1lbW9yeU1vZGUgc2hvdWxkIG9ubHkg
YmUgY2FsbGVkIGlmIHRoZSB1c2VXZWJBc3NlbWJseSBvcHRpb24gaXMgc2V0Il9zKTsKIAogICAg
IGlmIChKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkuZ2V0T2JqZWN0KCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5jcHAKaW5kZXggYTFhYzA1ODY3YzAwYTRhNDkzN2E5OWI5NTZkM2ZjYWZlNmY0ZGIxNC4u
MWQ5NGE1Yzc3NjRkYTAwOTYyZjFjZDAzMDlhOTc1MTgzNWNiYmExNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKQEAg
LTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJl
SURUYWJsZS5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5oIgorI2luY2x1ZGUgIldhc21DYXBh
YmlsaXRpZXMuaCIKICNpbmNsdWRlICJXYXNtVGh1bmtzLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJy
aWVyLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CkBAIC02OCw5ICs2OSw3IEBAIHZvaWQgaW5pdGlhbGl6
ZVRocmVhZGluZygpCiAgICAgICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjppbml0aWFsaXplKCk7
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShBU1NFTUJMRVIpCi0gICAgICAgIEV4ZWN1dGFibGVBbGxv
Y2F0b3I6OmluaXRpYWxpemVBbGxvY2F0b3IoKTsKLSNlbmRpZgorICAgICAgICBFeGVjdXRhYmxl
QWxsb2NhdG9yOjppbml0aWFsaXplKCk7CiAgICAgICAgIFZNOjpjb21wdXRlQ2FuVXNlSklUKCk7
CiAKICAgICAgICAgTExJbnQ6OmluaXRpYWxpemUoKTsKQEAgLTgzLDcgKzgyLDcgQEAgdm9pZCBp
bml0aWFsaXplVGhyZWFkaW5nKCkKICAgICAgICAgdGhyZWFkLnNldFNhdmVkTGFzdFN0YWNrVG9w
KHRocmVhZC5zdGFjaygpLm9yaWdpbigpKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5KCkpCisgICAgICAgIGlmIChXYXNtOjpp
c1N1cHBvcnRlZCgpKQogICAgICAgICAgICAgV2FzbTo6VGh1bmtzOjppbml0aWFsaXplKCk7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IGIxYjI4NTQ3YWQwNmY4YjZmNTI5OTQyNjhmMDBiNTE4NWRjYWI1MmYuLjdh
ZmU3MDMyYjE2OGM2YmNiNTQzMzNjYjJjZWFiOTAxYmExNGY2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTE2OCw2ICsxNjgs
NyBAQAogI2luY2x1ZGUgIlN5bWJvbE9iamVjdC5oIgogI2luY2x1ZGUgIlN5bWJvbFByb3RvdHlw
ZS5oIgogI2luY2x1ZGUgIlZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmgiCisjaW5jbHVkZSAiV2Fz
bUNhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKICNpbmNsdWRl
ICJXZWFrTWFwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJXZWFrTWFwUHJvdG90eXBlLmgiCkBA
IC0xMDQyLDcgKzEwNDMsNyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAogICAgICAgICBleHBv
c2VEb2xsYXJWTSh2bSk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgaWYgKE9wdGlv
bnM6OnVzZVdlYkFzc2VtYmx5KCkpIHsKKyAgICBpZiAoV2FzbTo6aXNTdXBwb3J0ZWQoKSkgewog
ICAgICAgICBhdXRvKiB3ZWJBc3NlbWJseVByb3RvdHlwZSA9IFdlYkFzc2VtYmx5UHJvdG90eXBl
OjpjcmVhdGUodm0sIHRoaXMsIFdlYkFzc2VtYmx5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgICAgIG1fd2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAgICAgICAgW10gKGNvbnN0
IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xvY2suY3BwCmluZGV4IGVjZTUyNmQ1Yzg4Y2NjNmNlMDAzZjJhY2MzOWNmOGY5ODk5
MzQ0MzEuLjI0ZGU3NGU2ZGNmZWZlMmMwMDZhYzBlYzJmYmYzOTMyYzBiZTQ5ZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNp
bmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCisjaW5jbHVkZSAiV2FzbUNhcGFiaWxpdGllcy5o
IgogI2luY2x1ZGUgIldhc21NYWNoaW5lVGhyZWFkcy5oIgogI2luY2x1ZGUgPHRocmVhZD4KICNp
bmNsdWRlIDx3dGYvU3RhY2tQb2ludGVyLmg+CkBAIC0xNDksNyArMTUwLDcgQEAgdm9pZCBKU0xv
Y2s6OmRpZEFjcXVpcmVMb2NrKCkKIAogICAgIG1fdm0tPmhlYXAubWFjaGluZVRocmVhZHMoKS5h
ZGRDdXJyZW50VGhyZWFkKCk7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIGlmIChPcHRp
b25zOjp1c2VXZWJBc3NlbWJseSgpKQorICAgIGlmIChXYXNtOjppc1N1cHBvcnRlZCgpKQogICAg
ICAgICBXYXNtOjpzdGFydFRyYWNraW5nQ3VycmVudFRocmVhZCgpOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBlNzc4MDQ1NDVjMmIxNmRhOTk1NzhjZjAz
NjQyYjFkZGJiNDBjMjZjLi5mNTRmNmZlNzRjYTEyMjE4MjczNDQ0ZjdkMTdjOGFkZGQxNzY0ZDQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xODYsMTIgKzE4NiwxMyBA
QCBBdG9taWM8dW5zaWduZWQ+IFZNOjpzX251bWJlck9mSURzOwogLy8ganVzdCBjaGVja3MgZm9y
IEVOQUJMRShKSVQpIG9yIEVOQUJMRShZQVJSX0pJVCkgd2l0aCB0aGlzIHByZW1pc2UgaW4gbWlu
ZC4KIAogI2lmIEVOQUJMRShBU1NFTUJMRVIpCi1zdGF0aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIo
RXhlY3V0YWJsZUFsbG9jYXRvciYgZXhlY3V0YWJsZUFsbG9jYXRvcikKK3N0YXRpYyBib29sIGVu
YWJsZUFzc2VtYmxlcigpCiB7CiAgICAgaWYgKCFPcHRpb25zOjp1c2VKSVQoKSAmJiAhT3B0aW9u
czo6dXNlUmVnRXhwSklUKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZXhl
Y3V0YWJsZUFsbG9jYXRvci5pc1ZhbGlkKCkpIHsKKyAgICBFeGVjdXRhYmxlQWxsb2NhdG9yOjpp
bml0aWFsaXplVW5kZXJseWluZ0FsbG9jYXRvcigpOworICAgIGlmICghRXhlY3V0YWJsZUFsbG9j
YXRvcjo6c2luZ2xldG9uKCkuaXNWYWxpZCgpKSB7CiAgICAgICAgIGlmIChPcHRpb25zOjpjcmFz
aElmQ2FudEFsbG9jYXRlSklUTWVtb3J5KCkpCiAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yMDgsNyArMjA5LDcgQEAgYm9vbCBWTTo6Y2FuVXNlQXNzZW1i
bGVyKCkKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGF0aWMgYm9v
bCBlbmFibGVkID0gZmFsc2U7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgW10gewotICAg
ICAgICBlbmFibGVkID0gZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0b3I6OnNpbmds
ZXRvbigpKTsKKyAgICAgICAgZW5hYmxlZCA9IGVuYWJsZUFzc2VtYmxlcigpOwogICAgIH0pOwog
ICAgIHJldHVybiBlbmFibGVkOwogI2Vsc2UKQEAgLTQxMCwxNCArNDExLDYgQEAgVk06OlZNKFZN
VHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIH0KIAogICAgIFRocmVhZDo6Y3Vy
cmVudCgpLnNldEN1cnJlbnRBdG9taWNTdHJpbmdUYWJsZShleGlzdGluZ0VudHJ5QXRvbWljU3Ry
aW5nVGFibGUpOwotCi0jaWYgRU5BQkxFKEpJVCkKLSAgICBqaXRTdHVicyA9IHN0ZDo6bWFrZV91
bmlxdWU8SklUVGh1bmtzPigpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRlRMX0pJVCkKLSAgICBm
dGxUaHVua3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEZUTDo6VGh1bmtzPigpOwotI2VuZGlmIC8vIEVO
QUJMRShGVExfSklUKQogICAgIAogI2lmICFFTkFCTEUoQ19MT09QKQogICAgIGluaXRpYWxpemVI
b3N0Q2FsbFJldHVyblZhbHVlKCk7IC8vIFRoaXMgaXMgbmVlZGVkIHRvIGNvbnZpbmNlIHRoZSBs
aW5rZXIgbm90IHRvIGRyb3AgaG9zdCBjYWxsIHJldHVybiBzdXBwb3J0LgpAQCAtNDc1LDE0ICs0
NjgsMTUgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogI2lmIEVO
QUJMRShKSVQpCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYW55IHN0dWJzIHRoYXQgdGhlIEpJVCBp
cyBnb2luZyB0byB1c2UgYXJlIGluaXRpYWxpemVkIGluIG5vbi1jb21waWxhdGlvbiB0aHJlYWRz
LgogICAgIGlmIChjYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRTdHVicyA9IHN0ZDo6bWFrZV91
bmlxdWU8SklUVGh1bmtzPigpOworI2lmIEVOQUJMRShGVExfSklUKQorICAgICAgICBmdGxUaHVu
a3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEZUTDo6VGh1bmtzPigpOworI2VuZGlmIC8vIEVOQUJMRShG
VExfSklUKQogICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2Rl
Rm9yQ2FsbCk7CiAgICAgICAgIGdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENv
ZGVGb3JDb25zdHJ1Y3QpOwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKCFjYW5Vc2VKSVQoKSkK
LSAgICAgICAgbm9KSVRWYWx1ZVByb2ZpbGVTaW5nbGV0b24gPSBzdGQ6Om1ha2VfdW5pcXVlPFZh
bHVlUHJvZmlsZT4oMCk7Ci0KICAgICBpZiAoT3B0aW9uczo6Zm9yY2VEZWJ1Z2dlckJ5dGVjb2Rl
R2VuZXJhdGlvbigpIHx8IE9wdGlvbnM6OmFsd2F5c1VzZVNoYWRvd0NoaWNrZW4oKSkKICAgICAg
ICAgZW5zdXJlU2hhZG93Q2hpY2tlbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApp
bmRleCAzNzdkMzE1ZGVlYjhkZjllZjVjNzQzMzg3NWE4ZGNjNzI2MmExNGQ1Li4xZDA3NDViNjcw
MmM0NTdiODE5NDgyYzZhYThhYmIzY2RkZWMyNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKQEAgLTgwNyw4ICs4MDcsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIFJUVHJh
Y2VMaXN0KiBtX3J0VHJhY2VMaXN0OwogI2VuZGlmCiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmFs
dWVQcm9maWxlPiBub0pJVFZhbHVlUHJvZmlsZVNpbmdsZXRvbjsKLQogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgcmVzZXREYXRlQ2FjaGUoKTsKIAogICAgIFJlZ0V4cENhY2hlKiByZWdFeHBD
YWNoZSgpIHsgcmV0dXJuIG1fcmVnRXhwQ2FjaGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAppbmRleCA1YTlkOTlhNjQ0YzM4
NWU2NTNjM2NiOTUzZjEyMjdlMTRlMTQwMTFlLi45NzEwMjY4ZWVkMmVjYTkyZTIxNTU5ZDA2M2Nh
OGUwMDYzY2ZmZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU2ln
aWxsQ3Jhc2hBbmFseXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1Np
Z2lsbENyYXNoQW5hbHl6ZXIuY3BwCkBAIC01NSwxMiArNTUsMTAgQEAgY2xhc3MgU2lnaWxsQ3Jh
c2hBbmFseXplciB7CiAgICAgQ3Jhc2hTb3VyY2UgYW5hbHl6ZShTaWduYWxDb250ZXh0Jik7CiAK
IHByaXZhdGU6Ci0gICAgU2lnaWxsQ3Jhc2hBbmFseXplcigpIHsgfQorICAgIFNpZ2lsbENyYXNo
QW5hbHl6ZXIoKQorICAgIHsKKyAgICB9CiAgICAgdm9pZCBkdW1wQ29kZUJsb2NrKENvZGVCbG9j
ayosIHZvaWQqIG1hY2hpbmVQQyk7Ci0KLSNpZiBVU0UoQVJNNjRfRElTQVNTRU1CTEVSKQotICAg
IEE2NERPcGNvZGUgbV9hcm02NE9wY29kZTsKLSNlbmRpZgogfTsKIAogI2lmIE9TKERBUldJTikK
QEAgLTI4Niw2ICsyODQsNyBAQCBhdXRvIFNpZ2lsbENyYXNoQW5hbHl6ZXI6OmFuYWx5emUoU2ln
bmFsQ29udGV4dCYgY29udGV4dCkgLT4gQ3Jhc2hTb3VyY2UKIHZvaWQgU2lnaWxsQ3Jhc2hBbmFs
eXplcjo6ZHVtcENvZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaywgdm9pZCogbWFjaGluZVBD
KQogewogI2lmIENQVShBUk02NCkgJiYgRU5BQkxFKEpJVCkKKyAgICBhdXRvIGFybTY0T3Bjb2Rl
ID0gc3RkOjptYWtlX3VuaXF1ZTxBNjRET3Bjb2RlPigpOwogICAgIEpJVENvZGUqIGppdENvZGUg
PSBjb2RlQmxvY2stPmppdENvZGUoKS5nZXQoKTsKIAogICAgIC8vIER1bXAgdGhlIHJhdyBiaXRz
IG9mIHRoZSBjb2RlLgpAQCAtMzIyLDEwICszMjEsMTAgQEAgdm9pZCBTaWdpbGxDcmFzaEFuYWx5
emVyOjpkdW1wQ29kZUJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrLCB2b2lkKiBtYWNoaW5lUEMp
CiAgICAgICAgIGNoYXIgcGNTdHJpbmdbMjRdOwogICAgICAgICBpZiAoY3VycmVudFBDID09IG1h
Y2hpbmVQQykgewogICAgICAgICAgICAgc25wcmludGYocGNTdHJpbmcsIHNpemVvZihwY1N0cmlu
ZyksICIqIDB4JWx4IiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRQQykpOwot
ICAgICAgICAgICAgbG9nKCIlMjBzOiAlcyAgICA8PT09PT09PT09PT09PT09PT09PT09PT09PSIs
IHBjU3RyaW5nLCBtX2FybTY0T3Bjb2RlLmRpc2Fzc2VtYmxlKGN1cnJlbnRQQykpOworICAgICAg
ICAgICAgbG9nKCIlMjBzOiAlcyAgICA8PT09PT09PT09PT09PT09PT09PT09PT09PSIsIHBjU3Ry
aW5nLCBhcm02NE9wY29kZS0+ZGlzYXNzZW1ibGUoY3VycmVudFBDKSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBzbnByaW50ZihwY1N0cmluZywgc2l6ZW9mKHBjU3RyaW5nKSwgIjB4
JWx4IiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRQQykpOwotICAgICAgICAg
ICAgbG9nKCIlMjBzOiAlcyIsIHBjU3RyaW5nLCBtX2FybTY0T3Bjb2RlLmRpc2Fzc2VtYmxlKGN1
cnJlbnRQQykpOworICAgICAgICAgICAgbG9nKCIlMjBzOiAlcyIsIHBjU3RyaW5nLCBhcm02NE9w
Y29kZS0+ZGlzYXNzZW1ibGUoY3VycmVudFBDKSk7CiAgICAgICAgIH0KICAgICAgICAgY3VycmVu
dFBDKys7CiAgICAgICAgIGJ5dGVDb3VudCAtPSBzaXplb2YodWludDMyX3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhcGFiaWxpdGllcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhcGFiaWxpdGllcy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiOTA5
MzQwOWI5ZGE4NjJkODljNWJjODEzMjZmZjZiMTg5ODg4ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FwYWJpbGl0aWVzLmgKQEAgLTAsMCArMSwz
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiT3B0aW9ucy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVz
cGFjZSBKU0MgeworbmFtZXNwYWNlIFdhc20geworCitpbmxpbmUgYm9vbCBpc1N1cHBvcnRlZCgp
Cit7CisgICAgcmV0dXJuIFZNOjpjYW5Vc2VKSVQoKSAmJiBPcHRpb25zOjp1c2VXZWJBc3NlbWJs
eSgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAppbmRleCBmOTA2
OWUyNzA3ZWY0YzNiMWE2ZjBiMmZjMjQxZWU0NGU1OGU5YjhiLi42NGMzNTkwNjU5Y2FiZTdhOWFi
NGIzMzAzYzBjMGU4MjZiYjI1NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIk1hY2hpbmVDb250ZXh0
LmgiCisjaW5jbHVkZSAiV2FzbUNhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIldhc21FeGNlcHRp
b25UeXBlLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgogI2luY2x1ZGUgIldhc21UaHVua3Mu
aCIKQEAgLTEyNiw2ICsxMjcsOSBAQCB2b2lkIGVuYWJsZUZhc3RNZW1vcnkoKQogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWV9GQVNUX01FTU9SWSkKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlLCBbXSB7CisgICAgICAgIGlmICghV2FzbTo6aXNT
dXBwb3J0ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAoIU9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5RmFzdE1lbW9yeSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365473</attachid>
            <date>2019-03-20 20:33:39 -0700</date>
            <delta_ts>2019-03-20 20:35:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195982-20190320203338.patch</filename>
            <type>text/plain</type>
            <size>30494</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
Zjk5MjViMDg2OGFiOTY1NmU1Njc0YTA3N2VmMTVkYmE4MGE1ZTBjLi44ZjExZGIxNTdmY2JkMWY2
ZWRjYmIxZjcyYWZjYmU2NmUxYmNlY2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAxOS0wMy0yMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIERvIG5vdCBjcmVhdGUgSklUIHJlbGF0ZWQgZGF0YSB1bmRlciBu
b24tSklUIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTk4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGF2b2lkIGNyZWF0aW9ucyBvZiBKSVQgcmVsYXRlZCBkYXRhIHN0cnVjdHVyZXMgdW5k
ZXIgbm9uLUpJVCBtb2RlLgorICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGZvbGxvd2lu
ZyBhbGxvY2F0aW9ucy4KKworICAgICAgICAxLiBKSVRUaHVua3MKKyAgICAgICAgMi4gRlRMVGh1
bmtzCisgICAgICAgIDMuIEZpeGVkVk1Qb29sRXhlY3V0YWJsZUFsbG9jYXRvcgorICAgICAgICA0
LiBub0pJVFZhbHVlUHJvZmlsZVNpbmdsZXRvbiBzaW5jZSBpdCBpcyBubyBsb25nZXIgdXNlZAor
ICAgICAgICA1LiBBUk0gZGlzYXNzZW1ibGVyIHNob3VsZCBiZSBpbml0aWFsaXplZCB3aGVuIGl0
IGlzIHVzZWQKKyAgICAgICAgNi4gV2FzbSByZWxhdGVkIGRhdGEgc3RydWN0dXJlcyBhcmUgYWNj
aWRlbnRhbGx5IGFsbG9jYXRlZCBpZiBWTTo6Y2FuVXNlSklUKCkgPT0gZmFsc2UgJiYKKyAgICAg
ICAgICAgT3B0aW9uczo6dXNlV2ViQXNzZW1ibHkoKSA9PSB0cnVlLiBBZGQgV2FzbTo6aXNTdXBw
b3J0ZWQoKSBmdW5jdGlvbiB0byBjaGVjayB0aGUgYm90aCBjb25kaXRpb25zLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpI
ZWFwOjpydW5FbmRQaGFzZSk6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpGaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3I6On5GaXhlZFZN
UG9vbEV4ZWN1dGFibGVBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2Nh
dG9yOjppbml0aWFsaXplVW5kZXJseWluZ0FsbG9jYXRvcik6CisgICAgICAgIChKU0M6OkV4ZWN1
dGFibGVBbGxvY2F0b3I6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
QWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJs
ZUFsbG9jYXRvcjo6bWVtb3J5UHJlc3N1cmVNdWx0aXBsaWVyKToKKyAgICAgICAgKEpTQzo6RXhl
Y3V0YWJsZUFsbG9jYXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxs
b2NhdG9yOjppc1ZhbGlkRXhlY3V0YWJsZU1lbW9yeSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVBbGxvY2F0b3I6OmdldExvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxs
b2NhdG9yOjpjb21taXR0ZWRCeXRlQ291bnQpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxs
b2NhdG9yOjpkdW1wUHJvZmlsZSk6CisgICAgICAgIChKU0M6OnN0YXJ0T2ZGaXhlZEV4ZWN1dGFi
bGVNZW1vcnlQb29sSW1wbCk6CisgICAgICAgIChKU0M6OmVuZE9mRml4ZWRFeGVjdXRhYmxlTWVt
b3J5UG9vbEltcGwpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFs
aXplKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6aW5pdGlhbGl6ZUFsbG9j
YXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6OkV4ZWN1
dGFibGVBbGxvY2F0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2Nh
dG9yOjp+RXhlY3V0YWJsZUFsbG9jYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvckJhc2U6
OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yQmFzZTo6
dW5kZXJNZW1vcnlQcmVzc3VyZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3JC
YXNlOjptZW1vcnlQcmVzc3VyZU11bHRpcGxpZXIpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
QWxsb2NhdG9yQmFzZTo6ZHVtcFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxs
b2NhdG9yQmFzZTo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9y
QmFzZTo6c2V0SklURW5hYmxlZCk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3JC
YXNlOjppc1ZhbGlkRXhlY3V0YWJsZU1lbW9yeSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVB
bGxvY2F0b3JCYXNlOjpjb21taXR0ZWRCeXRlQ291bnQpOgorICAgICAgICAoSlNDOjpFeGVjdXRh
YmxlQWxsb2NhdG9yQmFzZTo6Z2V0TG9jayBjb25zdCk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVBbGxvY2F0b3I6OmlzVmFsaWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVj
dXRhYmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6bWVtb3J5UHJlc3N1cmVNdWx0aXBsaWVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6YWxsb2NhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVkKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6aXNWYWxpZEV4ZWN1
dGFibGVNZW1vcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9y
Ojpjb21taXR0ZWRCeXRlQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
QWxsb2NhdG9yOjpnZXRMb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBqc2MuY3BwOgor
ICAgICAgICAoZnVuY3Rpb25XZWJBc3NlbWJseU1lbW9yeU1vZGUpOgorICAgICAgICAqIHJ1bnRp
bWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJl
YWRpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suY3Bw
OgorICAgICAgICAoSlNDOjpKU0xvY2s6OmRpZEFjcXVpcmVMb2NrKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6ZW5hYmxlQXNzZW1ibGVyKToKKyAgICAgICAgKEpT
Qzo6Vk06OmNhblVzZUFzc2VtYmxlcik6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAg
ICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpTaWdpbGxDcmFzaEFuYWx5emVyOjpTaWdpbGxDcmFzaEFuYWx5emVy
KToKKyAgICAgICAgKEpTQzo6U2lnaWxsQ3Jhc2hBbmFseXplcjo6ZHVtcENvZGVCbG9jayk6Cisg
ICAgICAgICogd2FzbS9XYXNtQ2FwYWJpbGl0aWVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpX
YXNtOjppc1N1cHBvcnRlZCk6CisgICAgICAgICogd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6ZW5hYmxlRmFzdE1lbW9yeSk6CisKIDIwMTktMDMt
MjAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0Q2FsbGVl
IGRvZXMgbm90IHJlcG9ydCB0aGUgY29ycmVjdCB0eXBlIGluIEFJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggOWI0ZTU1ZTY2MjIxNzQ4ODBiMTNmMjJiN2RkM2IyN2NhNmE0
ZWQ0MS4uYmJhZGE4MGM2N2U3Mzc0MmQ2Y2FhMDBhNThjMjZkNDdiNmM5YWRhOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTc4LDYgKzk3OCw3IEBAIHNldChKYXZhU2Ny
aXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9Xcml0ZUJhcnJp
ZXIuaAogICAgIHJ1bnRpbWUvV3JpdGVCYXJyaWVySW5saW5lcy5oCiAKKyAgICB3YXNtL1dhc21D
YXBhYmlsaXRpZXMuaAogICAgIHdhc20vV2FzbUNvZGVCbG9jay5oCiAgICAgd2FzbS9XYXNtQ29u
dGV4dC5oCiAgICAgd2FzbS9XYXNtRW1iZWRkZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBhYjRlMWIyZmFkOTJlODcxMWQ3YzEyMGJkYzc3ZDM3MjUzYzhmMTMwLi4zMTI4MDQ0
OGNiOGMwMzUzYWY5ZmM5YmE2NjhiOTMzYTRhNDc2YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTc0OSw2ICsxNzQ5LDcgQEAKIAkJRTMyQUIyNDQxRENENzVGNDAwRDc1MzNB
IC8qIE1hY3JvQXNzZW1ibGVySGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM4MEE3NkIxRENENzE5NTAwMEY4OUU2IC8qIE1hY3JvQXNzZW1i
bGVySGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzMzRDQkI1MjFGRDk2QTkwMDBFQjE3OCAvKiBSZWdFeHBHbG9iYWxEYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM0Q0JCMzIxRkQ5
NkE5MDAwRUIxNzggLyogUmVnRXhwR2xvYmFsRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E2MUI2MzIyMDIwMEVFMDg0MCAvKiBS
ZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMzdCOTY3MjI0MzI0
RUEwMDkzQTgyMCAvKiBXYXNtQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM3Qjk2NjIyNDMyNEU1MDA5M0E4MjAgLyogV2FzbUNh
cGFiaWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzM0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0Lmx1dC5oICovOyB9OwogCQlFMzNFOEQxRDFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRp
dmVTdGRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMzRThEMUIxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNFOEQy
MTFCOTAxM0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNFOEQxRjFCOTAxM0RFMDAzNDZC
NTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ2ODMsNiArNDY4NCw3IEBACiAJCUUzMzRDQkIzMjFG
RDk2QTkwMDBFQjE3OCAvKiBSZWdFeHBHbG9iYWxEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlZ0V4cEdsb2JhbERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmbGVjdE9iamVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZs
ZWN0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmxlY3RPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzN0I5NjYyMjQzMjRFNTAwOTNB
ODIwIC8qIFdhc21DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNhcGFiaWxpdGll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzNCM0UyNTFCN0FCRDc1MDA0OERC
MkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0U4RDFBMUI5MDEzQzMwMDM0NkI1MiAv
KiBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzNFOEQxQjFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDczLDYgKzY0NzUsNyBAQAogCQkJCTUyNUMw
REQ4MUU5MzU4NDcwMDIxODRDRCAvKiBXYXNtQ2FsbGVlLmggKi8sCiAJCQkJNTNGRDA0RDExRDdB
QjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5jcHAgKi8sCiAJCQkJNTNGRDA0
RDIxRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5oICovLAorCQkJCUUz
MzdCOTY2MjI0MzI0RTUwMDkzQTgyMCAvKiBXYXNtQ2FwYWJpbGl0aWVzLmggKi8sCiAJCQkJNTI2
QUM0QjQxRTk3N0M1RDAwMzUwMEUxIC8qIFdhc21Db2RlQmxvY2suY3BwICovLAogCQkJCTUyNkFD
NEI1MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2NrLmggKi8sCiAJCQkJQUQ0MTJCMzIx
RTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmggKi8sCkBAIC04NDgxLDYgKzg0ODQsNyBA
QAogCQkJCTc5QTIyODM2MUQzNUQ3MUYwMEQ4RTA2NyAvKiBBcml0aFByb2ZpbGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNkIxQ0I5MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTFFMkM0MDIyNDBERDYyMDBGNkI3MjkgLyog
QVJNNjRFQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFERDE0NTBGRERFQTk4MDAw
NkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODMzNUI4MTYz
OUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtODUyMiw3ICs4NTI2LDYgQEAKIAkJCQkwRjJDNjNCMDFFNjBBRTQzMDBDMTM4Mzkg
LyogQjNCYW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwMTFCREFDREFDMDA4MEZGNzQg
LyogQjNCYXNpY0Jsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwMjFCREFDREFDMDA4
MEZGNzQgLyogQjNCYXNpY0Jsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUxRTJD
M0YyMjQwREQ1ODAwRjZCNzI5IC8qIE1hY3JvQXNzZW1ibGVyQVJNNjRFLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVDODUwMzFCREFDREFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2NrVXRpbHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMzM4RTFDMUJGMjg2RUEwMDEzQzg4RiAvKiBCM0Jsb2NrSW5z
ZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwNDFCREFDREFDMDA4MEZGNzQg
LyogQjNCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTg2MDIsNyArODYwNSw2IEBA
CiAJCQkJMEZFQzg1M0ExQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3dpdGNoVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNDU3MDQxMUJFNTg0Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzQzFCREFDREFDMDA4MEZGNzQgLyogQjNUeXBlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlGRTFFMkM0MDIyNDBERDYyMDBGNkI3MjkgLyogQVJNNjRFQXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQ0ZERkJEQTFEMUY1RDlFMDBGRTNENzIgLyog
QjNUeXBlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzRTFCREFDREFDMDA4MEZGNzQg
LyogQjNVcHNpbG9uVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTQwMUJEQUNEQUMw
MDgwRkY3NCAvKiBCM1VzZUNvdW50cy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDcxLDYgKzk0NzMs
NyBAQAogCQkJCTE0QjcyM0I4MTJEN0RBNkYwMDNCRDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8q
IE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMUUyQzNGMjI0MERE
NTgwMEY2QjcyOSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0RS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODZBREQxNDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2M0IyM0UwMEZDNjExODkwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMkFCMjQ0MURDRDc1RjQwMEQ3NTMzQSAvKiBN
YWNyb0Fzc2VtYmxlckhlbHBlcnMuaCBpbiBIZWFkZXJzICovLApAQCAtOTgwNiw2ICs5ODA5LDcg
QEAKIAkJCQlBRDRCMURGQTFERjI0NEUyMDA3MUFFMzIgLyogV2FzbUJpbmRpbmcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUyNUMwRERBMUU5MzU4NDcwMDIxODRDRCAvKiBXYXNtQ2FsbGVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1M0ZEMDRENDFEN0FCMjkxMDAzMjg3RDMgLyogV2FzbUNhbGxpbmdD
b252ZW50aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzM3Qjk2NzIyNDMyNEVBMDA5M0E4MjAg
LyogV2FzbUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI2QUM0QjcxRTk3N0M1
RDAwMzUwMEUxIC8qIFdhc21Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUFENDEyQjM0
MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzU5
M0M4OThCRTcxNEE2NEJFOTNBNkU3IC8qIFdhc21Db250ZXh0SW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDE5NDUxMDRmOTAxNjhlNDVj
MzMzYzE0OThhY2Y5YWYyZGQyZDMwN2QuLjdmZGI3MmFjNTMyZmI0NTY2M2RkMDc4Y2M0MTRlMWFl
ZTM5NWJkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0xNDk2LDkgKzE0
OTYsNiBAQCBORVZFUl9JTkxJTkUgYm9vbCBIZWFwOjpydW5FbmRQaGFzZShHQ0NvbmR1Y3RvciBj
b25uKQogICAgIGlmICh2bSgpLT50eXBlUHJvZmlsZXIoKSkKICAgICAgICAgdm0oKS0+dHlwZVBy
b2ZpbGVyKCktPmludmFsaWRhdGVUeXBlU2V0Q2FjaGUoKTsKIAotICAgIGlmIChWYWx1ZVByb2Zp
bGUqIHByb2ZpbGUgPSB2bSgpLT5ub0pJVFZhbHVlUHJvZmlsZVNpbmdsZXRvbi5nZXQoKSkKLSAg
ICAgICAgKnByb2ZpbGUgPSBWYWx1ZVByb2ZpbGUoMCk7Ci0gICAgICAgIAogICAgIHJlYXBXZWFr
SGFuZGxlcygpOwogICAgIHBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKICAgICBz
d2VlcEFycmF5QnVmZmVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhl
Y3V0YWJsZUFsbG9jYXRvci5jcHAKaW5kZXggYmM2YzMzYzM4OGZkYWQ5MzRmZjk1MTJmZjAwMmE4
NzdjMzZjNDJiMy4uN2U2MzdmNjc4ZmQyY2RmZTk0OTA4YThkNWUxYzM4NTFjMzRiM2EzMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3Bw
CkBAIC0xMTUsNyArMTE1LDYgQEAgc3RhdGljIHVpbnRwdHJfdCBzdGFydE9mRml4ZWRXcml0YWJs
ZU1lbW9yeVBvb2w7CiAKIGNsYXNzIEZpeGVkVk1Qb29sRXhlY3V0YWJsZUFsbG9jYXRvcjsKIHN0
YXRpYyBGaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3IqIGFsbG9jYXRvciA9IG51bGxwdHI7
Ci1zdGF0aWMgRXhlY3V0YWJsZUFsbG9jYXRvciogZXhlY3V0YWJsZUFsbG9jYXRvciA9IG51bGxw
dHI7CiAKIHN0YXRpYyBib29sIHNfaXNKSVRFbmFibGVkID0gdHJ1ZTsKIHN0YXRpYyBib29sIGlz
SklURW5hYmxlZCgpCkBAIC00MDQsNDkgKzQwMywzNyBAQCBjbGFzcyBGaXhlZFZNUG9vbEV4ZWN1
dGFibGVBbGxvY2F0b3IgOiBwdWJsaWMgTWV0YUFsbG9jYXRvciB7CiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPEV4ZWN1dGFibGVNZW1vcnlQdHJUYWc+IG1fbWVtb3J5RW5kOwogfTsKIAotdm9p
ZCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFsaXplQWxsb2NhdG9yKCkKLXsKLSAgICBBU1NF
UlQoIWFsbG9jYXRvcik7Ci0gICAgYWxsb2NhdG9yID0gbmV3IEZpeGVkVk1Qb29sRXhlY3V0YWJs
ZUFsbG9jYXRvcigpOwotICAgIENvZGVQcm9maWxpbmc6Om5vdGlmeUFsbG9jYXRvcihhbGxvY2F0
b3IpOwotCi0gICAgZXhlY3V0YWJsZUFsbG9jYXRvciA9IG5ldyBFeGVjdXRhYmxlQWxsb2NhdG9y
OwotfQotCi1FeGVjdXRhYmxlQWxsb2NhdG9yJiBFeGVjdXRhYmxlQWxsb2NhdG9yOjpzaW5nbGV0
b24oKQotewotICAgIEFTU0VSVChhbGxvY2F0b3IpOwotICAgIEFTU0VSVChleGVjdXRhYmxlQWxs
b2NhdG9yKTsKLSAgICByZXR1cm4gKmV4ZWN1dGFibGVBbGxvY2F0b3I7Ci19Ci0KLUV4ZWN1dGFi
bGVBbGxvY2F0b3I6OkV4ZWN1dGFibGVBbGxvY2F0b3IoKQotewotICAgIEFTU0VSVChhbGxvY2F0
b3IpOwotfQotCi1FeGVjdXRhYmxlQWxsb2NhdG9yOjp+RXhlY3V0YWJsZUFsbG9jYXRvcigpCitG
aXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3I6On5GaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxv
Y2F0b3IoKQogeworICAgIG1fcmVzZXJ2YXRpb24uZGVhbGxvY2F0ZSgpOwogfQogCi1GaXhlZFZN
UG9vbEV4ZWN1dGFibGVBbGxvY2F0b3I6On5GaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3Io
KQordm9pZCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFsaXplVW5kZXJseWluZ0FsbG9jYXRv
cigpCiB7Ci0gICAgbV9yZXNlcnZhdGlvbi5kZWFsbG9jYXRlKCk7CisgICAgQVNTRVJUKCFhbGxv
Y2F0b3IpOworICAgIGFsbG9jYXRvciA9IG5ldyBGaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0
b3IoKTsKKyAgICBDb2RlUHJvZmlsaW5nOjpub3RpZnlBbGxvY2F0b3IoYWxsb2NhdG9yKTsKIH0K
IAogYm9vbCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppc1ZhbGlkKCkgY29uc3QKIHsKKyAgICBpZiAo
IWFsbG9jYXRvcikKKyAgICAgICAgcmV0dXJuIEJhc2U6OmlzVmFsaWQoKTsKICAgICByZXR1cm4g
ISFhbGxvY2F0b3ItPmJ5dGVzUmVzZXJ2ZWQoKTsKIH0KIAogYm9vbCBFeGVjdXRhYmxlQWxsb2Nh
dG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKCkKIHsKKyAgICBpZiAoIWFsbG9jYXRvcikKKyAgICAg
ICAgcmV0dXJuIEJhc2U6OnVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKICAgICBNZXRhQWxsb2NhdG9y
OjpTdGF0aXN0aWNzIHN0YXRpc3RpY3MgPSBhbGxvY2F0b3ItPmN1cnJlbnRTdGF0aXN0aWNzKCk7
CiAgICAgcmV0dXJuIHN0YXRpc3RpY3MuYnl0ZXNBbGxvY2F0ZWQgPiBzdGF0aXN0aWNzLmJ5dGVz
UmVzZXJ2ZWQgLyAyOwogfQogCiBkb3VibGUgRXhlY3V0YWJsZUFsbG9jYXRvcjo6bWVtb3J5UHJl
c3N1cmVNdWx0aXBsaWVyKHNpemVfdCBhZGRlZE1lbW9yeVVzYWdlKQogeworICAgIGlmICghYWxs
b2NhdG9yKQorICAgICAgICByZXR1cm4gQmFzZTo6bWVtb3J5UHJlc3N1cmVNdWx0aXBsaWVyKGFk
ZGVkTWVtb3J5VXNhZ2UpOwogICAgIE1ldGFBbGxvY2F0b3I6OlN0YXRpc3RpY3Mgc3RhdGlzdGlj
cyA9IGFsbG9jYXRvci0+Y3VycmVudFN0YXRpc3RpY3MoKTsKICAgICBBU1NFUlQoc3RhdGlzdGlj
cy5ieXRlc0FsbG9jYXRlZCA8PSBzdGF0aXN0aWNzLmJ5dGVzUmVzZXJ2ZWQpOwogICAgIHNpemVf
dCBieXRlc0FsbG9jYXRlZCA9IHN0YXRpc3RpY3MuYnl0ZXNBbGxvY2F0ZWQgKyBhZGRlZE1lbW9y
eVVzYWdlOwpAQCAtNDY1LDYgKzQ1Miw4IEBAIGRvdWJsZSBFeGVjdXRhYmxlQWxsb2NhdG9yOjpt
ZW1vcnlQcmVzc3VyZU11bHRpcGxpZXIoc2l6ZV90IGFkZGVkTWVtb3J5VXNhZ2UpCiAKIFJlZlB0
cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBFeGVjdXRhYmxlQWxsb2NhdG9yOjphbGxvY2F0ZShz
aXplX3Qgc2l6ZUluQnl0ZXMsIHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCBl
ZmZvcnQpCiB7CisgICAgaWYgKCFhbGxvY2F0b3IpCisgICAgICAgIHJldHVybiBCYXNlOjphbGxv
Y2F0ZShzaXplSW5CeXRlcywgb3duZXJVSUQsIGVmZm9ydCk7CiAgICAgaWYgKE9wdGlvbnM6Omxv
Z0V4ZWN1dGFibGVBbGxvY2F0aW9uKCkpIHsKICAgICAgICAgTWV0YUFsbG9jYXRvcjo6U3RhdGlz
dGljcyBzdGF0cyA9IGFsbG9jYXRvci0+Y3VycmVudFN0YXRpc3RpY3MoKTsKICAgICAgICAgZGF0
YUxvZygiQWxsb2NhdGluZyAiLCBzaXplSW5CeXRlcywgIiBieXRlcyBvZiBleGVjdXRhYmxlIG1l
bW9yeSB3aXRoICIsIHN0YXRzLmJ5dGVzQWxsb2NhdGVkLCAiIGJ5dGVzIGFsbG9jYXRlZCwgIiwg
c3RhdHMuYnl0ZXNSZXNlcnZlZCwgIiBieXRlcyByZXNlcnZlZCwgYW5kICIsIHN0YXRzLmJ5dGVz
Q29tbWl0dGVkLCAiIGNvbW1pdHRlZC5cbiIpOwpAQCAtNTE0LDMzICs1MDMsNDUgQEAgUmVmUHRy
PEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IEV4ZWN1dGFibGVBbGxvY2F0b3I6OmFsbG9jYXRlKHNp
emVfdCBzaXplSW5CeXRlcywKIAogYm9vbCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppc1ZhbGlkRXhl
Y3V0YWJsZU1lbW9yeShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCB2b2lkKiBhZGRyZXNz
KQogeworICAgIGlmICghYWxsb2NhdG9yKQorICAgICAgICByZXR1cm4gQmFzZTo6aXNWYWxpZEV4
ZWN1dGFibGVNZW1vcnkobG9ja2VyLCBhZGRyZXNzKTsKICAgICByZXR1cm4gYWxsb2NhdG9yLT5p
c0luQWxsb2NhdGVkTWVtb3J5KGxvY2tlciwgYWRkcmVzcyk7CiB9CiAKIExvY2smIEV4ZWN1dGFi
bGVBbGxvY2F0b3I6OmdldExvY2soKSBjb25zdAogeworICAgIGlmICghYWxsb2NhdG9yKQorICAg
ICAgICByZXR1cm4gQmFzZTo6Z2V0TG9jaygpOwogICAgIHJldHVybiBhbGxvY2F0b3ItPmdldExv
Y2soKTsKIH0KIAogc2l6ZV90IEV4ZWN1dGFibGVBbGxvY2F0b3I6OmNvbW1pdHRlZEJ5dGVDb3Vu
dCgpCiB7CisgICAgaWYgKCFhbGxvY2F0b3IpCisgICAgICAgIHJldHVybiBCYXNlOjpjb21taXR0
ZWRCeXRlQ291bnQoKTsKICAgICByZXR1cm4gYWxsb2NhdG9yLT5ieXRlc0NvbW1pdHRlZCgpOwog
fQogCiAjaWYgRU5BQkxFKE1FVEFfQUxMT0NBVE9SX1BST0ZJTEUpCiB2b2lkIEV4ZWN1dGFibGVB
bGxvY2F0b3I6OmR1bXBQcm9maWxlKCkKIHsKKyAgICBpZiAoIWFsbG9jYXRvcikKKyAgICAgICAg
cmV0dXJuOwogICAgIGFsbG9jYXRvci0+ZHVtcFByb2ZpbGUoKTsKIH0KICNlbmRpZgogCiB2b2lk
KiBzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbEltcGwoKQogeworICAgIGlmICghYWxs
b2NhdG9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gYWxsb2NhdG9yLT5t
ZW1vcnlTdGFydCgpOwogfQogCiB2b2lkKiBlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2xJ
bXBsKCkKIHsKKyAgICBpZiAoIWFsbG9jYXRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgcmV0dXJuIGFsbG9jYXRvci0+bWVtb3J5RW5kKCk7CiB9CiAKQEAgLTU1MSwxMyArNTUyLDEz
IEBAIGJvb2wgaXNKSVRQQyh2b2lkKiBwYykKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKLSNlbHNl
IC8vICFFTkFCTEUoSklUKQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBzdGF0aWMgRXhlY3V0YWJsZUFsbG9jYXRvciogZXhlY3V0YWJsZUFsbG9jYXRvcjsKIAot
dm9pZCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFsaXplQWxsb2NhdG9yKCkKK3ZvaWQgRXhl
Y3V0YWJsZUFsbG9jYXRvcjo6aW5pdGlhbGl6ZSgpCiB7CiAgICAgZXhlY3V0YWJsZUFsbG9jYXRv
ciA9IG5ldyBFeGVjdXRhYmxlQWxsb2NhdG9yOwogfQpAQCAtNTY5LDUgKzU3MCwzIEBAIEV4ZWN1
dGFibGVBbGxvY2F0b3ImIEV4ZWN1dGFibGVBbGxvY2F0b3I6OnNpbmdsZXRvbigpCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKaW5kZXggYmI5OGY1MjBlMmI0
NmFhYmIxZDQyMTJiNmEyYWMwODA4OTVhZDE2ZC4uZTliNjRhODU4MTUzNDNjZjljNWY1M2MwYjQ0
ZjA0NzkwNjAwMTkwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVj
dXRhYmxlQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmgKQEAgLTU5LDYgKzU5LDM4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBq
aXRBbGxvY2F0aW9uR3JhbnVsZSA9IDMyOwogCiB0eXBlZGVmIFdURjo6TWV0YUFsbG9jYXRvckhh
bmRsZSBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlOwogCitjbGFzcyBFeGVjdXRhYmxlQWxsb2NhdG9y
QmFzZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRXhlY3V0YWJsZUFsbG9jYXRvckJhc2UpOworCisgICAgZW51bSBQcm90ZWN0aW9uU2V0
dGluZyB7IFdyaXRhYmxlLCBFeGVjdXRhYmxlIH07CisKK3B1YmxpYzoKKyAgICBib29sIGlzVmFs
aWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgc3RhdGljIGJvb2wgdW5kZXJNZW1v
cnlQcmVzc3VyZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBzdGF0aWMgZG91YmxlIG1lbW9y
eVByZXNzdXJlTXVsdGlwbGllcihzaXplX3QpIHsgcmV0dXJuIDEuMDsgfQorCisgICAgc3RhdGlj
IHZvaWQgZHVtcFByb2ZpbGUoKSB7IH0KKworICAgIFJlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFu
ZGxlPiBhbGxvY2F0ZShzaXplX3QsIHZvaWQqLCBKSVRDb21waWxhdGlvbkVmZm9ydCkgeyByZXR1
cm4gbnVsbHB0cjsgfQorCisgICAgc3RhdGljIHZvaWQgc2V0SklURW5hYmxlZChib29sKSB7IH07
CisgICAgCisgICAgYm9vbCBpc1ZhbGlkRXhlY3V0YWJsZU1lbW9yeShjb25zdCBBYnN0cmFjdExv
Y2tlciYsIHZvaWQqKSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgc3RhdGljIHNpemVfdCBjb21t
aXR0ZWRCeXRlQ291bnQoKSB7IHJldHVybiAwOyB9CisKKyAgICBMb2NrJiBnZXRMb2NrKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xvY2s7CisgICAgfQorCitwcml2YXRlOgorICAg
IG11dGFibGUgTG9jayBtX2xvY2s7Cit9OworCiAjaWYgRU5BQkxFKEpJVCkKIAogSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCogc3RhcnRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2xJbXBsKCk7CkBA
IC0xMjIsMTQgKzE1NCwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQqIHBlcmZvcm1KSVRNZW1jcHko
dm9pZCAqZHN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBuKQogICAgIHJldHVybiBtZW1jcHko
ZHN0LCBzcmMsIG4pOwogfQogCi1jbGFzcyBFeGVjdXRhYmxlQWxsb2NhdG9yIHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFeGVjdXRhYmxl
QWxsb2NhdG9yKTsKLSAgICBlbnVtIFByb3RlY3Rpb25TZXR0aW5nIHsgV3JpdGFibGUsIEV4ZWN1
dGFibGUgfTsKLQorY2xhc3MgRXhlY3V0YWJsZUFsbG9jYXRvciA6IHByaXZhdGUgRXhlY3V0YWJs
ZUFsbG9jYXRvckJhc2UgewogcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBFeGVjdXRhYmxlQWxs
b2NhdG9yQmFzZTsKKwogICAgIHN0YXRpYyBFeGVjdXRhYmxlQWxsb2NhdG9yJiBzaW5nbGV0b24o
KTsKLSAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplQWxsb2NhdG9yKCk7CisgICAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZSgpOworICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVVbmRlcmx5aW5nQWxs
b2NhdG9yKCk7CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKIApAQCAtMTUyLDQ0ICsxODMs
MjIgQEAgY2xhc3MgRXhlY3V0YWJsZUFsbG9jYXRvciB7CiAgICAgc3RhdGljIHNpemVfdCBjb21t
aXR0ZWRCeXRlQ291bnQoKTsKIAogICAgIExvY2smIGdldExvY2soKSBjb25zdDsKLXByaXZhdGU6
CiAKLSAgICBFeGVjdXRhYmxlQWxsb2NhdG9yKCk7Ci0gICAgfkV4ZWN1dGFibGVBbGxvY2F0b3Io
KTsKK3ByaXZhdGU6CisgICAgRXhlY3V0YWJsZUFsbG9jYXRvcigpID0gZGVmYXVsdDsKKyAgICB+
RXhlY3V0YWJsZUFsbG9jYXRvcigpID0gZGVmYXVsdDsKIH07CiAKICNlbHNlCiAKLWNsYXNzIEV4
ZWN1dGFibGVBbGxvY2F0b3IgewotICAgIGVudW0gUHJvdGVjdGlvblNldHRpbmcgeyBXcml0YWJs
ZSwgRXhlY3V0YWJsZSB9OwotCitjbGFzcyBFeGVjdXRhYmxlQWxsb2NhdG9yIDogcHVibGljIEV4
ZWN1dGFibGVBbGxvY2F0b3JCYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRXhlY3V0YWJsZUFs
bG9jYXRvciYgc2luZ2xldG9uKCk7Ci0gICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUFsbG9jYXRv
cigpOwotCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAg
IHN0YXRpYyBib29sIHVuZGVyTWVtb3J5UHJlc3N1cmUoKSB7IHJldHVybiBmYWxzZTsgfQotCi0g
ICAgc3RhdGljIGRvdWJsZSBtZW1vcnlQcmVzc3VyZU11bHRpcGxpZXIoc2l6ZV90KSB7IHJldHVy
biAxLjA7IH0KLQotICAgIHN0YXRpYyB2b2lkIGR1bXBQcm9maWxlKCkgeyB9Ci0KLSAgICBSZWZQ
dHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gYWxsb2NhdGUoc2l6ZV90LCB2b2lkKiwgSklUQ29t
cGlsYXRpb25FZmZvcnQpIHsgcmV0dXJuIG51bGxwdHI7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNl
dEpJVEVuYWJsZWQoYm9vbCkgeyB9OwotICAgIAotICAgIGJvb2wgaXNWYWxpZEV4ZWN1dGFibGVN
ZW1vcnkoY29uc3QgQWJzdHJhY3RMb2NrZXImLCB2b2lkKikgeyByZXR1cm4gZmFsc2U7IH0KLQot
ICAgIHN0YXRpYyBzaXplX3QgY29tbWl0dGVkQnl0ZUNvdW50KCkgeyByZXR1cm4gMDsgfQotCi0g
ICAgTG9jayYgZ2V0TG9jaygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9sb2NrOwot
ICAgIH0KKyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6Ci0gICAgbXV0
YWJsZSBMb2NrIG1fbG9jazsKKyAgICBFeGVjdXRhYmxlQWxsb2NhdG9yKCkgPSBkZWZhdWx0Owor
ICAgIH5FeGVjdXRhYmxlQWxsb2NhdG9yKCkgPSBkZWZhdWx0OwogfTsKIAogc3RhdGljIGlubGlu
ZSB2b2lkKiBwZXJmb3JtSklUTWVtY3B5KHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXpl
X3QgbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZDAzOTlkZDU2YjRmYTA0OTUyODQzNTM1M2Rm
NjE0MzJhOGEwODRiMC4uNmZkMWY2YTIyZDU3ZjMxNmZlZjgyM2IwZDVkOTMxOTQxNzMyNjAwMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJTdXBlclNh
bXBsZXIuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUeXBlZEFy
cmF5SW5saW5lcy5oIgorI2luY2x1ZGUgIldhc21DYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJX
YXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21GYXVsdFNpZ25hbEhhbmRsZXIuaCIKICNpbmNs
dWRlICJXYXNtTWVtb3J5LmgiCkBAIC0yMzA3LDcgKzIzMDgsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldlYkFzc2VtYmx5TWVtb3J5TW9kZShFeGVjU3Rh
dGUqIGV4ZQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIAotICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1i
bHkoKSkKKyAgICBpZiAoIVdhc206OmlzU3VwcG9ydGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiV2ViQXNzZW1ibHlNZW1vcnlNb2RlIHNob3VsZCBv
bmx5IGJlIGNhbGxlZCBpZiB0aGUgdXNlV2ViQXNzZW1ibHkgb3B0aW9uIGlzIHNldCJfcyk7CiAK
ICAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLmdldE9iamVjdCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXpl
VGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwCmluZGV4IGExYWMwNTg2N2MwMGE0YTQ5MzdhOTliOTU2ZDNmY2FmZTZmNGRi
MTQuLjFkOTRhNWM3NzY0ZGEwMDk2MmYxY2QwMzA5YTk3NTE4MzVjYmJhMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3Bw
CkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZUlEVGFibGUuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKKyNpbmNsdWRlICJXYXNt
Q2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiV2FzbVRodW5rcy5oIgogI2luY2x1ZGUgIldyaXRl
QmFycmllci5oIgogI2luY2x1ZGUgPG11dGV4PgpAQCAtNjgsOSArNjksNyBAQCB2b2lkIGluaXRp
YWxpemVUaHJlYWRpbmcoKQogICAgICAgICBXcml0ZUJhcnJpZXJDb3VudGVyczo6aW5pdGlhbGl6
ZSgpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVNTRU1CTEVSKQotICAgICAgICBFeGVjdXRhYmxl
QWxsb2NhdG9yOjppbml0aWFsaXplQWxsb2NhdG9yKCk7Ci0jZW5kaWYKKyAgICAgICAgRXhlY3V0
YWJsZUFsbG9jYXRvcjo6aW5pdGlhbGl6ZSgpOwogICAgICAgICBWTTo6Y29tcHV0ZUNhblVzZUpJ
VCgpOwogCiAgICAgICAgIExMSW50Ojppbml0aWFsaXplKCk7CkBAIC04Myw3ICs4Miw3IEBAIHZv
aWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCiAgICAgICAgIHRocmVhZC5zZXRTYXZlZExhc3RTdGFj
a1RvcCh0aHJlYWQuc3RhY2soKS5vcmlnaW4oKSk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
Ci0gICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseSgpKQorICAgICAgICBpZiAoV2Fz
bTo6aXNTdXBwb3J0ZWQoKSkKICAgICAgICAgICAgIFdhc206OlRodW5rczo6aW5pdGlhbGl6ZSgp
OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAppbmRleCBiMWIyODU0N2FkMDZmOGI2ZjUyOTk0MjY4ZjAwYjUxODVkY2FiNTJm
Li43YWZlNzAzMmIxNjhjNmJjYjU0MzMzY2IyY2VhYjkwMWJhMTRmNmZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xNjgsNiAr
MTY4LDcgQEAKICNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIKICNpbmNsdWRlICJTeW1ib2xQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5oIgorI2luY2x1ZGUg
Ildhc21DYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiV2Vha01hcENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiV2Vha01hcFByb3RvdHlwZS5o
IgpAQCAtMTA0Miw3ICsxMDQzLDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAg
ZXhwb3NlRG9sbGFyVk0odm0pOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIGlmIChP
cHRpb25zOjp1c2VXZWJBc3NlbWJseSgpKSB7CisgICAgaWYgKFdhc206OmlzU3VwcG9ydGVkKCkp
IHsKICAgICAgICAgYXV0byogd2ViQXNzZW1ibHlQcm90b3R5cGUgPSBXZWJBc3NlbWJseVByb3Rv
dHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBXZWJBc3NlbWJseVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgICAgICBtX3dlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkU3RydWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgICAgIFtdIChj
b25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMb2NrLmNwcAppbmRleCBlY2U1MjZkNWM4OGNjYzZjZTAwM2YyYWNjMzljZjhm
OTg5OTM0NDMxLi4yNGRlNzRlNmRjZmVmZTJjMDA2YWMwZWMyZmJmMzkzMmMwYmU0OWRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFjaGluZVN0YWNrTWFya2VyLmgi
CiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgorI2luY2x1ZGUgIldhc21DYXBhYmlsaXRp
ZXMuaCIKICNpbmNsdWRlICJXYXNtTWFjaGluZVRocmVhZHMuaCIKICNpbmNsdWRlIDx0aHJlYWQ+
CiAjaW5jbHVkZSA8d3RmL1N0YWNrUG9pbnRlci5oPgpAQCAtMTQ5LDcgKzE1MCw3IEBAIHZvaWQg
SlNMb2NrOjpkaWRBY3F1aXJlTG9jaygpCiAKICAgICBtX3ZtLT5oZWFwLm1hY2hpbmVUaHJlYWRz
KCkuYWRkQ3VycmVudFRocmVhZCgpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBpZiAo
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHkoKSkKKyAgICBpZiAoV2FzbTo6aXNTdXBwb3J0ZWQoKSkK
ICAgICAgICAgV2FzbTo6c3RhcnRUcmFja2luZ0N1cnJlbnRUaHJlYWQoKTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggZTc3ODA0NTQ1YzJiMTZkYTk5NTc4
Y2YwMzY0MmIxZGRiYjQwYzI2Yy4uZjU0ZjZmZTc0Y2ExMjIxODI3MzQ0NGY3ZDE3YzhhZGRkMTc2
NGQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTg2LDEyICsxODYs
MTMgQEAgQXRvbWljPHVuc2lnbmVkPiBWTTo6c19udW1iZXJPZklEczsKIC8vIGp1c3QgY2hlY2tz
IGZvciBFTkFCTEUoSklUKSBvciBFTkFCTEUoWUFSUl9KSVQpIHdpdGggdGhpcyBwcmVtaXNlIGlu
IG1pbmQuCiAKICNpZiBFTkFCTEUoQVNTRU1CTEVSKQotc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1i
bGVyKEV4ZWN1dGFibGVBbGxvY2F0b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCitzdGF0aWMgYm9v
bCBlbmFibGVBc3NlbWJsZXIoKQogewogICAgIGlmICghT3B0aW9uczo6dXNlSklUKCkgJiYgIU9w
dGlvbnM6OnVzZVJlZ0V4cEpJVCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAo
IWV4ZWN1dGFibGVBbGxvY2F0b3IuaXNWYWxpZCgpKSB7CisgICAgRXhlY3V0YWJsZUFsbG9jYXRv
cjo6aW5pdGlhbGl6ZVVuZGVybHlpbmdBbGxvY2F0b3IoKTsKKyAgICBpZiAoIUV4ZWN1dGFibGVB
bGxvY2F0b3I6OnNpbmdsZXRvbigpLmlzVmFsaWQoKSkgewogICAgICAgICBpZiAoT3B0aW9uczo6
Y3Jhc2hJZkNhbnRBbGxvY2F0ZUpJVE1lbW9yeSgpKQogICAgICAgICAgICAgQ1JBU0goKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjA4LDcgKzIwOSw3IEBAIGJvb2wgVk06OmNhblVzZUFz
c2VtYmxlcigpCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RhdGlj
IGJvb2wgZW5hYmxlZCA9IGZhbHNlOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsK
LSAgICAgICAgZW5hYmxlZCA9IGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yOjpz
aW5nbGV0b24oKSk7CisgICAgICAgIGVuYWJsZWQgPSBlbmFibGVBc3NlbWJsZXIoKTsKICAgICB9
KTsKICAgICByZXR1cm4gZW5hYmxlZDsKICNlbHNlCkBAIC00MTAsMTQgKzQxMSw2IEBAIFZNOjpW
TShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICB9CiAKICAgICBUaHJlYWQ6
OmN1cnJlbnQoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoZXhpc3RpbmdFbnRyeUF0b21p
Y1N0cmluZ1RhYmxlKTsKLQotI2lmIEVOQUJMRShKSVQpCi0gICAgaml0U3R1YnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpJVFRodW5rcz4oKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEZUTF9KSVQpCi0g
ICAgZnRsVGh1bmtzID0gc3RkOjptYWtlX3VuaXF1ZTxGVEw6OlRodW5rcz4oKTsKLSNlbmRpZiAv
LyBFTkFCTEUoRlRMX0pJVCkKICAgICAKICNpZiAhRU5BQkxFKENfTE9PUCkKICAgICBpbml0aWFs
aXplSG9zdENhbGxSZXR1cm5WYWx1ZSgpOyAvLyBUaGlzIGlzIG5lZWRlZCB0byBjb252aW5jZSB0
aGUgbGlua2VyIG5vdCB0byBkcm9wIGhvc3QgY2FsbCByZXR1cm4gc3VwcG9ydC4KQEAgLTQ3NSwx
NCArNDY4LDE1IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICNp
ZiBFTkFCTEUoSklUKQogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGFueSBzdHVicyB0aGF0IHRoZSBK
SVQgaXMgZ29pbmcgdG8gdXNlIGFyZSBpbml0aWFsaXplZCBpbiBub24tY29tcGlsYXRpb24gdGhy
ZWFkcy4KICAgICBpZiAoY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaml0U3R1YnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpJVFRodW5rcz4oKTsKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKyAgICAgICAgZnRs
VGh1bmtzID0gc3RkOjptYWtlX3VuaXF1ZTxGVEw6OlRodW5rcz4oKTsKKyNlbmRpZiAvLyBFTkFC
TEUoRlRMX0pJVCkKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3Io
Q29kZUZvckNhbGwpOwogICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZv
cihDb2RlRm9yQ29uc3RydWN0KTsKICAgICB9CiAjZW5kaWYKIAotICAgIGlmICghY2FuVXNlSklU
KCkpCi0gICAgICAgIG5vSklUVmFsdWVQcm9maWxlU2luZ2xldG9uID0gc3RkOjptYWtlX3VuaXF1
ZTxWYWx1ZVByb2ZpbGU+KDApOwotCiAgICAgaWYgKE9wdGlvbnM6OmZvcmNlRGVidWdnZXJCeXRl
Y29kZUdlbmVyYXRpb24oKSB8fCBPcHRpb25zOjphbHdheXNVc2VTaGFkb3dDaGlja2VuKCkpCiAg
ICAgICAgIGVuc3VyZVNoYWRvd0NoaWNrZW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKaW5kZXggMzc3ZDMxNWRlZWI4ZGY5ZWY1Yzc0MzM4NzVhOGRjYzcyNjJhMTRkNS4uMWQwNzQ1
YjY3MDJjNDU3YjgxOTQ4MmM2YWE4YWJiM2NkZGVjMjU5MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCkBAIC04MDcsOCArODA3LDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBS
VFRyYWNlTGlzdCogbV9ydFRyYWNlTGlzdDsKICNlbmRpZgogCi0gICAgc3RkOjp1bmlxdWVfcHRy
PFZhbHVlUHJvZmlsZT4gbm9KSVRWYWx1ZVByb2ZpbGVTaW5nbGV0b247Ci0KICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHJlc2V0RGF0ZUNhY2hlKCk7CiAKICAgICBSZWdFeHBDYWNoZSogcmVn
RXhwQ2FjaGUoKSB7IHJldHVybiBtX3JlZ0V4cENhY2hlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKaW5kZXggNWE5ZDk5YTY0
NGMzODVlNjUzYzNjYjk1M2YxMjI3ZTE0ZTE0MDExZS4uOTcxMDI2OGVlZDJlY2E5MmUyMTU1OWQw
NjNjYThlMDA2M2NmZmRmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcApAQCAtNTUsMTIgKzU1LDEwIEBAIGNsYXNzIFNpZ2ls
bENyYXNoQW5hbHl6ZXIgewogICAgIENyYXNoU291cmNlIGFuYWx5emUoU2lnbmFsQ29udGV4dCYp
OwogCiBwcml2YXRlOgotICAgIFNpZ2lsbENyYXNoQW5hbHl6ZXIoKSB7IH0KKyAgICBTaWdpbGxD
cmFzaEFuYWx5emVyKCkKKyAgICB7CisgICAgfQogICAgIHZvaWQgZHVtcENvZGVCbG9jayhDb2Rl
QmxvY2sqLCB2b2lkKiBtYWNoaW5lUEMpOwotCi0jaWYgVVNFKEFSTTY0X0RJU0FTU0VNQkxFUikK
LSAgICBBNjRET3Bjb2RlIG1fYXJtNjRPcGNvZGU7Ci0jZW5kaWYKIH07CiAKICNpZiBPUyhEQVJX
SU4pCkBAIC0yODYsNiArMjg0LDcgQEAgYXV0byBTaWdpbGxDcmFzaEFuYWx5emVyOjphbmFseXpl
KFNpZ25hbENvbnRleHQmIGNvbnRleHQpIC0+IENyYXNoU291cmNlCiB2b2lkIFNpZ2lsbENyYXNo
QW5hbHl6ZXI6OmR1bXBDb2RlQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHZvaWQqIG1hY2hp
bmVQQykKIHsKICNpZiBDUFUoQVJNNjQpICYmIEVOQUJMRShKSVQpCisgICAgYXV0byBhcm02NE9w
Y29kZSA9IHN0ZDo6bWFrZV91bmlxdWU8QTY0RE9wY29kZT4oKTsKICAgICBKSVRDb2RlKiBqaXRD
b2RlID0gY29kZUJsb2NrLT5qaXRDb2RlKCkuZ2V0KCk7CiAKICAgICAvLyBEdW1wIHRoZSByYXcg
Yml0cyBvZiB0aGUgY29kZS4KQEAgLTMyMiwxMCArMzIxLDEwIEBAIHZvaWQgU2lnaWxsQ3Jhc2hB
bmFseXplcjo6ZHVtcENvZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaywgdm9pZCogbWFjaGlu
ZVBDKQogICAgICAgICBjaGFyIHBjU3RyaW5nWzI0XTsKICAgICAgICAgaWYgKGN1cnJlbnRQQyA9
PSBtYWNoaW5lUEMpIHsKICAgICAgICAgICAgIHNucHJpbnRmKHBjU3RyaW5nLCBzaXplb2YocGNT
dHJpbmcpLCAiKiAweCVseCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjdXJyZW50UEMp
KTsKLSAgICAgICAgICAgIGxvZygiJTIwczogJXMgICAgPD09PT09PT09PT09PT09PT09PT09PT09
PT0iLCBwY1N0cmluZywgbV9hcm02NE9wY29kZS5kaXNhc3NlbWJsZShjdXJyZW50UEMpKTsKKyAg
ICAgICAgICAgIGxvZygiJTIwczogJXMgICAgPD09PT09PT09PT09PT09PT09PT09PT09PT0iLCBw
Y1N0cmluZywgYXJtNjRPcGNvZGUtPmRpc2Fzc2VtYmxlKGN1cnJlbnRQQykpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgc25wcmludGYocGNTdHJpbmcsIHNpemVvZihwY1N0cmluZyks
ICIweCVseCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjdXJyZW50UEMpKTsKLSAgICAg
ICAgICAgIGxvZygiJTIwczogJXMiLCBwY1N0cmluZywgbV9hcm02NE9wY29kZS5kaXNhc3NlbWJs
ZShjdXJyZW50UEMpKTsKKyAgICAgICAgICAgIGxvZygiJTIwczogJXMiLCBwY1N0cmluZywgYXJt
NjRPcGNvZGUtPmRpc2Fzc2VtYmxlKGN1cnJlbnRQQykpOwogICAgICAgICB9CiAgICAgICAgIGN1
cnJlbnRQQysrOwogICAgICAgICBieXRlQ291bnQgLT0gc2l6ZW9mKHVpbnQzMl90KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYXBhYmlsaXRpZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYXBhYmlsaXRpZXMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
YjkwOTM0MDliOWRhODYyZDg5YzViYzgxMzI2ZmY2YjE4OTg4OGVlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhcGFiaWxpdGllcy5oCkBAIC0wLDAg
KzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlICJWTS5oIgorCitu
YW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBXYXNtIHsKKworaW5saW5lIGJvb2wgaXNTdXBwb3J0
ZWQoKQoreworICAgIHJldHVybiBWTTo6Y2FuVXNlSklUKCkgJiYgT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHkoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKaW5kZXgg
ZjkwNjllMjcwN2VmNGMzYjFhNmYwYjJmYzI0MWVlNDRlNThlOWI4Yi4uNjRjMzU5MDY1OWNhYmU3
YTlhYjRiMzMwM2MwYzBlODI2YmIyNTQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
IAogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJNYWNoaW5lQ29u
dGV4dC5oIgorI2luY2x1ZGUgIldhc21DYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJXYXNtRXhj
ZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRlICJXYXNtVGh1
bmtzLmgiCkBAIC0xMjYsNiArMTI3LDkgQEAgdm9pZCBlbmFibGVGYXN0TWVtb3J5KCkKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFlfRkFTVF9NRU1PUlkpCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2U7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZSwgW10geworICAgICAgICBpZiAoIVdhc206
OmlzU3VwcG9ydGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgaWYgKCFPcHRp
b25zOjp1c2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365474</attachid>
            <date>2019-03-20 20:35:53 -0700</date>
            <delta_ts>2019-03-20 20:40:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195982-20190320203552.patch</filename>
            <type>text/plain</type>
            <size>30593</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
Zjk5MjViMDg2OGFiOTY1NmU1Njc0YTA3N2VmMTVkYmE4MGE1ZTBjLi44ZjExZGIxNTdmY2JkMWY2
ZWRjYmIxZjcyYWZjYmU2NmUxYmNlY2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAxOS0wMy0yMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIERvIG5vdCBjcmVhdGUgSklUIHJlbGF0ZWQgZGF0YSB1bmRlciBu
b24tSklUIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTk4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGF2b2lkIGNyZWF0aW9ucyBvZiBKSVQgcmVsYXRlZCBkYXRhIHN0cnVjdHVyZXMgdW5k
ZXIgbm9uLUpJVCBtb2RlLgorICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGZvbGxvd2lu
ZyBhbGxvY2F0aW9ucy4KKworICAgICAgICAxLiBKSVRUaHVua3MKKyAgICAgICAgMi4gRlRMVGh1
bmtzCisgICAgICAgIDMuIEZpeGVkVk1Qb29sRXhlY3V0YWJsZUFsbG9jYXRvcgorICAgICAgICA0
LiBub0pJVFZhbHVlUHJvZmlsZVNpbmdsZXRvbiBzaW5jZSBpdCBpcyBubyBsb25nZXIgdXNlZAor
ICAgICAgICA1LiBBUk0gZGlzYXNzZW1ibGVyIHNob3VsZCBiZSBpbml0aWFsaXplZCB3aGVuIGl0
IGlzIHVzZWQKKyAgICAgICAgNi4gV2FzbSByZWxhdGVkIGRhdGEgc3RydWN0dXJlcyBhcmUgYWNj
aWRlbnRhbGx5IGFsbG9jYXRlZCBpZiBWTTo6Y2FuVXNlSklUKCkgPT0gZmFsc2UgJiYKKyAgICAg
ICAgICAgT3B0aW9uczo6dXNlV2ViQXNzZW1ibHkoKSA9PSB0cnVlLiBBZGQgV2FzbTo6aXNTdXBw
b3J0ZWQoKSBmdW5jdGlvbiB0byBjaGVjayB0aGUgYm90aCBjb25kaXRpb25zLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpI
ZWFwOjpydW5FbmRQaGFzZSk6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpGaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3I6On5GaXhlZFZN
UG9vbEV4ZWN1dGFibGVBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2Nh
dG9yOjppbml0aWFsaXplVW5kZXJseWluZ0FsbG9jYXRvcik6CisgICAgICAgIChKU0M6OkV4ZWN1
dGFibGVBbGxvY2F0b3I6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
QWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJs
ZUFsbG9jYXRvcjo6bWVtb3J5UHJlc3N1cmVNdWx0aXBsaWVyKToKKyAgICAgICAgKEpTQzo6RXhl
Y3V0YWJsZUFsbG9jYXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxs
b2NhdG9yOjppc1ZhbGlkRXhlY3V0YWJsZU1lbW9yeSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVBbGxvY2F0b3I6OmdldExvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxs
b2NhdG9yOjpjb21taXR0ZWRCeXRlQ291bnQpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxs
b2NhdG9yOjpkdW1wUHJvZmlsZSk6CisgICAgICAgIChKU0M6OnN0YXJ0T2ZGaXhlZEV4ZWN1dGFi
bGVNZW1vcnlQb29sSW1wbCk6CisgICAgICAgIChKU0M6OmVuZE9mRml4ZWRFeGVjdXRhYmxlTWVt
b3J5UG9vbEltcGwpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFs
aXplKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6aW5pdGlhbGl6ZUFsbG9j
YXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6OkV4ZWN1
dGFibGVBbGxvY2F0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2Nh
dG9yOjp+RXhlY3V0YWJsZUFsbG9jYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvckJhc2U6
OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yQmFzZTo6
dW5kZXJNZW1vcnlQcmVzc3VyZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3JC
YXNlOjptZW1vcnlQcmVzc3VyZU11bHRpcGxpZXIpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
QWxsb2NhdG9yQmFzZTo6ZHVtcFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxs
b2NhdG9yQmFzZTo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9y
QmFzZTo6c2V0SklURW5hYmxlZCk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3JC
YXNlOjppc1ZhbGlkRXhlY3V0YWJsZU1lbW9yeSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVB
bGxvY2F0b3JCYXNlOjpjb21taXR0ZWRCeXRlQ291bnQpOgorICAgICAgICAoSlNDOjpFeGVjdXRh
YmxlQWxsb2NhdG9yQmFzZTo6Z2V0TG9jayBjb25zdCk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVBbGxvY2F0b3I6OmlzVmFsaWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVj
dXRhYmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6bWVtb3J5UHJlc3N1cmVNdWx0aXBsaWVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6YWxsb2NhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVkKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6aXNWYWxpZEV4ZWN1
dGFibGVNZW1vcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9y
Ojpjb21taXR0ZWRCeXRlQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
QWxsb2NhdG9yOjpnZXRMb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBqc2MuY3BwOgor
ICAgICAgICAoZnVuY3Rpb25XZWJBc3NlbWJseU1lbW9yeU1vZGUpOgorICAgICAgICAqIHJ1bnRp
bWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJl
YWRpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suY3Bw
OgorICAgICAgICAoSlNDOjpKU0xvY2s6OmRpZEFjcXVpcmVMb2NrKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6ZW5hYmxlQXNzZW1ibGVyKToKKyAgICAgICAgKEpT
Qzo6Vk06OmNhblVzZUFzc2VtYmxlcik6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAg
ICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpTaWdpbGxDcmFzaEFuYWx5emVyOjpTaWdpbGxDcmFzaEFuYWx5emVy
KToKKyAgICAgICAgKEpTQzo6U2lnaWxsQ3Jhc2hBbmFseXplcjo6ZHVtcENvZGVCbG9jayk6Cisg
ICAgICAgICogd2FzbS9XYXNtQ2FwYWJpbGl0aWVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpX
YXNtOjppc1N1cHBvcnRlZCk6CisgICAgICAgICogd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6ZW5hYmxlRmFzdE1lbW9yeSk6CisKIDIwMTktMDMt
MjAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0Q2FsbGVl
IGRvZXMgbm90IHJlcG9ydCB0aGUgY29ycmVjdCB0eXBlIGluIEFJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggOWI0ZTU1ZTY2MjIxNzQ4ODBiMTNmMjJiN2RkM2IyN2NhNmE0
ZWQ0MS4uYmJhZGE4MGM2N2U3Mzc0MmQ2Y2FhMDBhNThjMjZkNDdiNmM5YWRhOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTc4LDYgKzk3OCw3IEBAIHNldChKYXZhU2Ny
aXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9Xcml0ZUJhcnJp
ZXIuaAogICAgIHJ1bnRpbWUvV3JpdGVCYXJyaWVySW5saW5lcy5oCiAKKyAgICB3YXNtL1dhc21D
YXBhYmlsaXRpZXMuaAogICAgIHdhc20vV2FzbUNvZGVCbG9jay5oCiAgICAgd2FzbS9XYXNtQ29u
dGV4dC5oCiAgICAgd2FzbS9XYXNtRW1iZWRkZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBhYjRlMWIyZmFkOTJlODcxMWQ3YzEyMGJkYzc3ZDM3MjUzYzhmMTMwLi4zMTI4MDQ0
OGNiOGMwMzUzYWY5ZmM5YmE2NjhiOTMzYTRhNDc2YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTc0OSw2ICsxNzQ5LDcgQEAKIAkJRTMyQUIyNDQxRENENzVGNDAwRDc1MzNB
IC8qIE1hY3JvQXNzZW1ibGVySGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM4MEE3NkIxRENENzE5NTAwMEY4OUU2IC8qIE1hY3JvQXNzZW1i
bGVySGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzMzRDQkI1MjFGRDk2QTkwMDBFQjE3OCAvKiBSZWdFeHBHbG9iYWxEYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM0Q0JCMzIxRkQ5
NkE5MDAwRUIxNzggLyogUmVnRXhwR2xvYmFsRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E2MUI2MzIyMDIwMEVFMDg0MCAvKiBS
ZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMzdCOTY3MjI0MzI0
RUEwMDkzQTgyMCAvKiBXYXNtQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM3Qjk2NjIyNDMyNEU1MDA5M0E4MjAgLyogV2FzbUNh
cGFiaWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzM0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0Lmx1dC5oICovOyB9OwogCQlFMzNFOEQxRDFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRp
dmVTdGRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMzRThEMUIxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNFOEQy
MTFCOTAxM0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNFOEQxRjFCOTAxM0RFMDAzNDZC
NTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ2ODMsNiArNDY4NCw3IEBACiAJCUUzMzRDQkIzMjFG
RDk2QTkwMDBFQjE3OCAvKiBSZWdFeHBHbG9iYWxEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlZ0V4cEdsb2JhbERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmbGVjdE9iamVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZs
ZWN0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmxlY3RPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzN0I5NjYyMjQzMjRFNTAwOTNB
ODIwIC8qIFdhc21DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNhcGFiaWxpdGll
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzNCM0UyNTFCN0FCRDc1MDA0OERC
MkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0U4RDFBMUI5MDEzQzMwMDM0NkI1MiAv
KiBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzNFOEQxQjFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDczLDYgKzY0NzUsNyBAQAogCQkJCTUyNUMw
REQ4MUU5MzU4NDcwMDIxODRDRCAvKiBXYXNtQ2FsbGVlLmggKi8sCiAJCQkJNTNGRDA0RDExRDdB
QjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5jcHAgKi8sCiAJCQkJNTNGRDA0
RDIxRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5oICovLAorCQkJCUUz
MzdCOTY2MjI0MzI0RTUwMDkzQTgyMCAvKiBXYXNtQ2FwYWJpbGl0aWVzLmggKi8sCiAJCQkJNTI2
QUM0QjQxRTk3N0M1RDAwMzUwMEUxIC8qIFdhc21Db2RlQmxvY2suY3BwICovLAogCQkJCTUyNkFD
NEI1MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2NrLmggKi8sCiAJCQkJQUQ0MTJCMzIx
RTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmggKi8sCkBAIC04NDgxLDYgKzg0ODQsNyBA
QAogCQkJCTc5QTIyODM2MUQzNUQ3MUYwMEQ4RTA2NyAvKiBBcml0aFByb2ZpbGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNkIxQ0I5MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTFFMkM0MDIyNDBERDYyMDBGNkI3MjkgLyog
QVJNNjRFQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFERDE0NTBGRERFQTk4MDAw
NkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODMzNUI4MTYz
OUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtODUyMiw3ICs4NTI2LDYgQEAKIAkJCQkwRjJDNjNCMDFFNjBBRTQzMDBDMTM4Mzkg
LyogQjNCYW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwMTFCREFDREFDMDA4MEZGNzQg
LyogQjNCYXNpY0Jsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwMjFCREFDREFDMDA4
MEZGNzQgLyogQjNCYXNpY0Jsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUxRTJD
M0YyMjQwREQ1ODAwRjZCNzI5IC8qIE1hY3JvQXNzZW1ibGVyQVJNNjRFLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVDODUwMzFCREFDREFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2NrVXRpbHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMzM4RTFDMUJGMjg2RUEwMDEzQzg4RiAvKiBCM0Jsb2NrSW5z
ZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwNDFCREFDREFDMDA4MEZGNzQg
LyogQjNCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTg2MDIsNyArODYwNSw2IEBA
CiAJCQkJMEZFQzg1M0ExQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3dpdGNoVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNDU3MDQxMUJFNTg0Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzQzFCREFDREFDMDA4MEZGNzQgLyogQjNUeXBlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlGRTFFMkM0MDIyNDBERDYyMDBGNkI3MjkgLyogQVJNNjRFQXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQ0ZERkJEQTFEMUY1RDlFMDBGRTNENzIgLyog
QjNUeXBlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzRTFCREFDREFDMDA4MEZGNzQg
LyogQjNVcHNpbG9uVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTQwMUJEQUNEQUMw
MDgwRkY3NCAvKiBCM1VzZUNvdW50cy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDcxLDYgKzk0NzMs
NyBAQAogCQkJCTE0QjcyM0I4MTJEN0RBNkYwMDNCRDVFRCAvKiBNYWNoaW5lU3RhY2tNYXJrZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzAxODMxQTIyRDAwQ0Y4NzExIC8q
IE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMUUyQzNGMjI0MERE
NTgwMEY2QjcyOSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0RS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODZBREQxNDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2M0IyM0UwMEZDNjExODkwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMkFCMjQ0MURDRDc1RjQwMEQ3NTMzQSAvKiBN
YWNyb0Fzc2VtYmxlckhlbHBlcnMuaCBpbiBIZWFkZXJzICovLApAQCAtOTgwNiw2ICs5ODA5LDcg
QEAKIAkJCQlBRDRCMURGQTFERjI0NEUyMDA3MUFFMzIgLyogV2FzbUJpbmRpbmcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUyNUMwRERBMUU5MzU4NDcwMDIxODRDRCAvKiBXYXNtQ2FsbGVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1M0ZEMDRENDFEN0FCMjkxMDAzMjg3RDMgLyogV2FzbUNhbGxpbmdD
b252ZW50aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzM3Qjk2NzIyNDMyNEVBMDA5M0E4MjAg
LyogV2FzbUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI2QUM0QjcxRTk3N0M1
RDAwMzUwMEUxIC8qIFdhc21Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUFENDEyQjM0
MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzU5
M0M4OThCRTcxNEE2NEJFOTNBNkU3IC8qIFdhc21Db250ZXh0SW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDE5NDUxMDRmOTAxNjhlNDVj
MzMzYzE0OThhY2Y5YWYyZGQyZDMwN2QuLjdmZGI3MmFjNTMyZmI0NTY2M2RkMDc4Y2M0MTRlMWFl
ZTM5NWJkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0xNDk2LDkgKzE0
OTYsNiBAQCBORVZFUl9JTkxJTkUgYm9vbCBIZWFwOjpydW5FbmRQaGFzZShHQ0NvbmR1Y3RvciBj
b25uKQogICAgIGlmICh2bSgpLT50eXBlUHJvZmlsZXIoKSkKICAgICAgICAgdm0oKS0+dHlwZVBy
b2ZpbGVyKCktPmludmFsaWRhdGVUeXBlU2V0Q2FjaGUoKTsKIAotICAgIGlmIChWYWx1ZVByb2Zp
bGUqIHByb2ZpbGUgPSB2bSgpLT5ub0pJVFZhbHVlUHJvZmlsZVNpbmdsZXRvbi5nZXQoKSkKLSAg
ICAgICAgKnByb2ZpbGUgPSBWYWx1ZVByb2ZpbGUoMCk7Ci0gICAgICAgIAogICAgIHJlYXBXZWFr
SGFuZGxlcygpOwogICAgIHBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMoKTsKICAgICBz
d2VlcEFycmF5QnVmZmVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhl
Y3V0YWJsZUFsbG9jYXRvci5jcHAKaW5kZXggYmM2YzMzYzM4OGZkYWQ5MzRmZjk1MTJmZjAwMmE4
NzdjMzZjNDJiMy4uN2U2MzdmNjc4ZmQyY2RmZTk0OTA4YThkNWUxYzM4NTFjMzRiM2EzMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3Bw
CkBAIC0xMTUsNyArMTE1LDYgQEAgc3RhdGljIHVpbnRwdHJfdCBzdGFydE9mRml4ZWRXcml0YWJs
ZU1lbW9yeVBvb2w7CiAKIGNsYXNzIEZpeGVkVk1Qb29sRXhlY3V0YWJsZUFsbG9jYXRvcjsKIHN0
YXRpYyBGaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3IqIGFsbG9jYXRvciA9IG51bGxwdHI7
Ci1zdGF0aWMgRXhlY3V0YWJsZUFsbG9jYXRvciogZXhlY3V0YWJsZUFsbG9jYXRvciA9IG51bGxw
dHI7CiAKIHN0YXRpYyBib29sIHNfaXNKSVRFbmFibGVkID0gdHJ1ZTsKIHN0YXRpYyBib29sIGlz
SklURW5hYmxlZCgpCkBAIC00MDQsNDkgKzQwMywzNyBAQCBjbGFzcyBGaXhlZFZNUG9vbEV4ZWN1
dGFibGVBbGxvY2F0b3IgOiBwdWJsaWMgTWV0YUFsbG9jYXRvciB7CiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPEV4ZWN1dGFibGVNZW1vcnlQdHJUYWc+IG1fbWVtb3J5RW5kOwogfTsKIAotdm9p
ZCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFsaXplQWxsb2NhdG9yKCkKLXsKLSAgICBBU1NF
UlQoIWFsbG9jYXRvcik7Ci0gICAgYWxsb2NhdG9yID0gbmV3IEZpeGVkVk1Qb29sRXhlY3V0YWJs
ZUFsbG9jYXRvcigpOwotICAgIENvZGVQcm9maWxpbmc6Om5vdGlmeUFsbG9jYXRvcihhbGxvY2F0
b3IpOwotCi0gICAgZXhlY3V0YWJsZUFsbG9jYXRvciA9IG5ldyBFeGVjdXRhYmxlQWxsb2NhdG9y
OwotfQotCi1FeGVjdXRhYmxlQWxsb2NhdG9yJiBFeGVjdXRhYmxlQWxsb2NhdG9yOjpzaW5nbGV0
b24oKQotewotICAgIEFTU0VSVChhbGxvY2F0b3IpOwotICAgIEFTU0VSVChleGVjdXRhYmxlQWxs
b2NhdG9yKTsKLSAgICByZXR1cm4gKmV4ZWN1dGFibGVBbGxvY2F0b3I7Ci19Ci0KLUV4ZWN1dGFi
bGVBbGxvY2F0b3I6OkV4ZWN1dGFibGVBbGxvY2F0b3IoKQotewotICAgIEFTU0VSVChhbGxvY2F0
b3IpOwotfQotCi1FeGVjdXRhYmxlQWxsb2NhdG9yOjp+RXhlY3V0YWJsZUFsbG9jYXRvcigpCitG
aXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3I6On5GaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxv
Y2F0b3IoKQogeworICAgIG1fcmVzZXJ2YXRpb24uZGVhbGxvY2F0ZSgpOwogfQogCi1GaXhlZFZN
UG9vbEV4ZWN1dGFibGVBbGxvY2F0b3I6On5GaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3Io
KQordm9pZCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFsaXplVW5kZXJseWluZ0FsbG9jYXRv
cigpCiB7Ci0gICAgbV9yZXNlcnZhdGlvbi5kZWFsbG9jYXRlKCk7CisgICAgQVNTRVJUKCFhbGxv
Y2F0b3IpOworICAgIGFsbG9jYXRvciA9IG5ldyBGaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0
b3IoKTsKKyAgICBDb2RlUHJvZmlsaW5nOjpub3RpZnlBbGxvY2F0b3IoYWxsb2NhdG9yKTsKIH0K
IAogYm9vbCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppc1ZhbGlkKCkgY29uc3QKIHsKKyAgICBpZiAo
IWFsbG9jYXRvcikKKyAgICAgICAgcmV0dXJuIEJhc2U6OmlzVmFsaWQoKTsKICAgICByZXR1cm4g
ISFhbGxvY2F0b3ItPmJ5dGVzUmVzZXJ2ZWQoKTsKIH0KIAogYm9vbCBFeGVjdXRhYmxlQWxsb2Nh
dG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKCkKIHsKKyAgICBpZiAoIWFsbG9jYXRvcikKKyAgICAg
ICAgcmV0dXJuIEJhc2U6OnVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKICAgICBNZXRhQWxsb2NhdG9y
OjpTdGF0aXN0aWNzIHN0YXRpc3RpY3MgPSBhbGxvY2F0b3ItPmN1cnJlbnRTdGF0aXN0aWNzKCk7
CiAgICAgcmV0dXJuIHN0YXRpc3RpY3MuYnl0ZXNBbGxvY2F0ZWQgPiBzdGF0aXN0aWNzLmJ5dGVz
UmVzZXJ2ZWQgLyAyOwogfQogCiBkb3VibGUgRXhlY3V0YWJsZUFsbG9jYXRvcjo6bWVtb3J5UHJl
c3N1cmVNdWx0aXBsaWVyKHNpemVfdCBhZGRlZE1lbW9yeVVzYWdlKQogeworICAgIGlmICghYWxs
b2NhdG9yKQorICAgICAgICByZXR1cm4gQmFzZTo6bWVtb3J5UHJlc3N1cmVNdWx0aXBsaWVyKGFk
ZGVkTWVtb3J5VXNhZ2UpOwogICAgIE1ldGFBbGxvY2F0b3I6OlN0YXRpc3RpY3Mgc3RhdGlzdGlj
cyA9IGFsbG9jYXRvci0+Y3VycmVudFN0YXRpc3RpY3MoKTsKICAgICBBU1NFUlQoc3RhdGlzdGlj
cy5ieXRlc0FsbG9jYXRlZCA8PSBzdGF0aXN0aWNzLmJ5dGVzUmVzZXJ2ZWQpOwogICAgIHNpemVf
dCBieXRlc0FsbG9jYXRlZCA9IHN0YXRpc3RpY3MuYnl0ZXNBbGxvY2F0ZWQgKyBhZGRlZE1lbW9y
eVVzYWdlOwpAQCAtNDY1LDYgKzQ1Miw4IEBAIGRvdWJsZSBFeGVjdXRhYmxlQWxsb2NhdG9yOjpt
ZW1vcnlQcmVzc3VyZU11bHRpcGxpZXIoc2l6ZV90IGFkZGVkTWVtb3J5VXNhZ2UpCiAKIFJlZlB0
cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBFeGVjdXRhYmxlQWxsb2NhdG9yOjphbGxvY2F0ZShz
aXplX3Qgc2l6ZUluQnl0ZXMsIHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCBl
ZmZvcnQpCiB7CisgICAgaWYgKCFhbGxvY2F0b3IpCisgICAgICAgIHJldHVybiBCYXNlOjphbGxv
Y2F0ZShzaXplSW5CeXRlcywgb3duZXJVSUQsIGVmZm9ydCk7CiAgICAgaWYgKE9wdGlvbnM6Omxv
Z0V4ZWN1dGFibGVBbGxvY2F0aW9uKCkpIHsKICAgICAgICAgTWV0YUFsbG9jYXRvcjo6U3RhdGlz
dGljcyBzdGF0cyA9IGFsbG9jYXRvci0+Y3VycmVudFN0YXRpc3RpY3MoKTsKICAgICAgICAgZGF0
YUxvZygiQWxsb2NhdGluZyAiLCBzaXplSW5CeXRlcywgIiBieXRlcyBvZiBleGVjdXRhYmxlIG1l
bW9yeSB3aXRoICIsIHN0YXRzLmJ5dGVzQWxsb2NhdGVkLCAiIGJ5dGVzIGFsbG9jYXRlZCwgIiwg
c3RhdHMuYnl0ZXNSZXNlcnZlZCwgIiBieXRlcyByZXNlcnZlZCwgYW5kICIsIHN0YXRzLmJ5dGVz
Q29tbWl0dGVkLCAiIGNvbW1pdHRlZC5cbiIpOwpAQCAtNTE0LDMzICs1MDMsNDUgQEAgUmVmUHRy
PEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IEV4ZWN1dGFibGVBbGxvY2F0b3I6OmFsbG9jYXRlKHNp
emVfdCBzaXplSW5CeXRlcywKIAogYm9vbCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppc1ZhbGlkRXhl
Y3V0YWJsZU1lbW9yeShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCB2b2lkKiBhZGRyZXNz
KQogeworICAgIGlmICghYWxsb2NhdG9yKQorICAgICAgICByZXR1cm4gQmFzZTo6aXNWYWxpZEV4
ZWN1dGFibGVNZW1vcnkobG9ja2VyLCBhZGRyZXNzKTsKICAgICByZXR1cm4gYWxsb2NhdG9yLT5p
c0luQWxsb2NhdGVkTWVtb3J5KGxvY2tlciwgYWRkcmVzcyk7CiB9CiAKIExvY2smIEV4ZWN1dGFi
bGVBbGxvY2F0b3I6OmdldExvY2soKSBjb25zdAogeworICAgIGlmICghYWxsb2NhdG9yKQorICAg
ICAgICByZXR1cm4gQmFzZTo6Z2V0TG9jaygpOwogICAgIHJldHVybiBhbGxvY2F0b3ItPmdldExv
Y2soKTsKIH0KIAogc2l6ZV90IEV4ZWN1dGFibGVBbGxvY2F0b3I6OmNvbW1pdHRlZEJ5dGVDb3Vu
dCgpCiB7CisgICAgaWYgKCFhbGxvY2F0b3IpCisgICAgICAgIHJldHVybiBCYXNlOjpjb21taXR0
ZWRCeXRlQ291bnQoKTsKICAgICByZXR1cm4gYWxsb2NhdG9yLT5ieXRlc0NvbW1pdHRlZCgpOwog
fQogCiAjaWYgRU5BQkxFKE1FVEFfQUxMT0NBVE9SX1BST0ZJTEUpCiB2b2lkIEV4ZWN1dGFibGVB
bGxvY2F0b3I6OmR1bXBQcm9maWxlKCkKIHsKKyAgICBpZiAoIWFsbG9jYXRvcikKKyAgICAgICAg
cmV0dXJuOwogICAgIGFsbG9jYXRvci0+ZHVtcFByb2ZpbGUoKTsKIH0KICNlbmRpZgogCiB2b2lk
KiBzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbEltcGwoKQogeworICAgIGlmICghYWxs
b2NhdG9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gYWxsb2NhdG9yLT5t
ZW1vcnlTdGFydCgpOwogfQogCiB2b2lkKiBlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2xJ
bXBsKCkKIHsKKyAgICBpZiAoIWFsbG9jYXRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgcmV0dXJuIGFsbG9jYXRvci0+bWVtb3J5RW5kKCk7CiB9CiAKQEAgLTU1MSwxMyArNTUyLDEz
IEBAIGJvb2wgaXNKSVRQQyh2b2lkKiBwYykKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKLSNlbHNl
IC8vICFFTkFCTEUoSklUKQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBzdGF0aWMgRXhlY3V0YWJsZUFsbG9jYXRvciogZXhlY3V0YWJsZUFsbG9jYXRvcjsKIAot
dm9pZCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFsaXplQWxsb2NhdG9yKCkKK3ZvaWQgRXhl
Y3V0YWJsZUFsbG9jYXRvcjo6aW5pdGlhbGl6ZSgpCiB7CiAgICAgZXhlY3V0YWJsZUFsbG9jYXRv
ciA9IG5ldyBFeGVjdXRhYmxlQWxsb2NhdG9yOwogfQpAQCAtNTY5LDUgKzU3MCwzIEBAIEV4ZWN1
dGFibGVBbGxvY2F0b3ImIEV4ZWN1dGFibGVBbGxvY2F0b3I6OnNpbmdsZXRvbigpCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKaW5kZXggYmI5OGY1MjBlMmI0
NmFhYmIxZDQyMTJiNmEyYWMwODA4OTVhZDE2ZC4uZmUxMWY4YzA3ZmEzMDcxZWEzMmI1YjUzMzI3
MzFjNjFmZDZlNjY5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVj
dXRhYmxlQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmgKQEAgLTU5LDYgKzU5LDQyIEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBq
aXRBbGxvY2F0aW9uR3JhbnVsZSA9IDMyOwogCiB0eXBlZGVmIFdURjo6TWV0YUFsbG9jYXRvckhh
bmRsZSBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlOwogCitjbGFzcyBFeGVjdXRhYmxlQWxsb2NhdG9y
QmFzZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRXhlY3V0YWJsZUFsbG9jYXRvckJhc2UpOworCisgICAgZW51bSBQcm90ZWN0aW9uU2V0
dGluZyB7IFdyaXRhYmxlLCBFeGVjdXRhYmxlIH07CisKK3B1YmxpYzoKKyAgICBib29sIGlzVmFs
aWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgc3RhdGljIGJvb2wgdW5kZXJNZW1v
cnlQcmVzc3VyZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBzdGF0aWMgZG91YmxlIG1lbW9y
eVByZXNzdXJlTXVsdGlwbGllcihzaXplX3QpIHsgcmV0dXJuIDEuMDsgfQorCisgICAgc3RhdGlj
IHZvaWQgZHVtcFByb2ZpbGUoKSB7IH0KKworICAgIFJlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFu
ZGxlPiBhbGxvY2F0ZShzaXplX3QsIHZvaWQqLCBKSVRDb21waWxhdGlvbkVmZm9ydCkgeyByZXR1
cm4gbnVsbHB0cjsgfQorCisgICAgc3RhdGljIHZvaWQgc2V0SklURW5hYmxlZChib29sKSB7IH07
CisgICAgCisgICAgYm9vbCBpc1ZhbGlkRXhlY3V0YWJsZU1lbW9yeShjb25zdCBBYnN0cmFjdExv
Y2tlciYsIHZvaWQqKSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgc3RhdGljIHNpemVfdCBjb21t
aXR0ZWRCeXRlQ291bnQoKSB7IHJldHVybiAwOyB9CisKKyAgICBMb2NrJiBnZXRMb2NrKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xvY2s7CisgICAgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgRXhlY3V0YWJsZUFsbG9jYXRvckJhc2UoKSA9IGRlZmF1bHQ7CisgICAgfkV4ZWN1dGFibGVB
bGxvY2F0b3JCYXNlKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIG11dGFibGUgTG9jayBt
X2xvY2s7Cit9OworCiAjaWYgRU5BQkxFKEpJVCkKIAogSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCog
c3RhcnRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2xJbXBsKCk7CkBAIC0xMjIsMTQgKzE1OCwx
MyBAQCBzdGF0aWMgaW5saW5lIHZvaWQqIHBlcmZvcm1KSVRNZW1jcHkodm9pZCAqZHN0LCBjb25z
dCB2b2lkICpzcmMsIHNpemVfdCBuKQogICAgIHJldHVybiBtZW1jcHkoZHN0LCBzcmMsIG4pOwog
fQogCi1jbGFzcyBFeGVjdXRhYmxlQWxsb2NhdG9yIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFeGVjdXRhYmxlQWxsb2NhdG9yKTsKLSAg
ICBlbnVtIFByb3RlY3Rpb25TZXR0aW5nIHsgV3JpdGFibGUsIEV4ZWN1dGFibGUgfTsKLQorY2xh
c3MgRXhlY3V0YWJsZUFsbG9jYXRvciA6IHByaXZhdGUgRXhlY3V0YWJsZUFsbG9jYXRvckJhc2Ug
ewogcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBFeGVjdXRhYmxlQWxsb2NhdG9yQmFzZTsKKwog
ICAgIHN0YXRpYyBFeGVjdXRhYmxlQWxsb2NhdG9yJiBzaW5nbGV0b24oKTsKLSAgICBzdGF0aWMg
dm9pZCBpbml0aWFsaXplQWxsb2NhdG9yKCk7CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgp
OworICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVVbmRlcmx5aW5nQWxsb2NhdG9yKCk7CiAKICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdDsKIApAQCAtMTUyLDQ0ICsxODcsMjIgQEAgY2xhc3MgRXhl
Y3V0YWJsZUFsbG9jYXRvciB7CiAgICAgc3RhdGljIHNpemVfdCBjb21taXR0ZWRCeXRlQ291bnQo
KTsKIAogICAgIExvY2smIGdldExvY2soKSBjb25zdDsKLXByaXZhdGU6CiAKLSAgICBFeGVjdXRh
YmxlQWxsb2NhdG9yKCk7Ci0gICAgfkV4ZWN1dGFibGVBbGxvY2F0b3IoKTsKK3ByaXZhdGU6Cisg
ICAgRXhlY3V0YWJsZUFsbG9jYXRvcigpID0gZGVmYXVsdDsKKyAgICB+RXhlY3V0YWJsZUFsbG9j
YXRvcigpID0gZGVmYXVsdDsKIH07CiAKICNlbHNlCiAKLWNsYXNzIEV4ZWN1dGFibGVBbGxvY2F0
b3IgewotICAgIGVudW0gUHJvdGVjdGlvblNldHRpbmcgeyBXcml0YWJsZSwgRXhlY3V0YWJsZSB9
OwotCitjbGFzcyBFeGVjdXRhYmxlQWxsb2NhdG9yIDogcHVibGljIEV4ZWN1dGFibGVBbGxvY2F0
b3JCYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRXhlY3V0YWJsZUFsbG9jYXRvciYgc2luZ2xl
dG9uKCk7Ci0gICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUFsbG9jYXRvcigpOwotCi0gICAgYm9v
bCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHN0YXRpYyBib29sIHVu
ZGVyTWVtb3J5UHJlc3N1cmUoKSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgc3RhdGljIGRvdWJs
ZSBtZW1vcnlQcmVzc3VyZU11bHRpcGxpZXIoc2l6ZV90KSB7IHJldHVybiAxLjA7IH0KLQotICAg
IHN0YXRpYyB2b2lkIGR1bXBQcm9maWxlKCkgeyB9Ci0KLSAgICBSZWZQdHI8RXhlY3V0YWJsZU1l
bW9yeUhhbmRsZT4gYWxsb2NhdGUoc2l6ZV90LCB2b2lkKiwgSklUQ29tcGlsYXRpb25FZmZvcnQp
IHsgcmV0dXJuIG51bGxwdHI7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNldEpJVEVuYWJsZWQoYm9v
bCkgeyB9OwotICAgIAotICAgIGJvb2wgaXNWYWxpZEV4ZWN1dGFibGVNZW1vcnkoY29uc3QgQWJz
dHJhY3RMb2NrZXImLCB2b2lkKikgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHN0YXRpYyBzaXpl
X3QgY29tbWl0dGVkQnl0ZUNvdW50KCkgeyByZXR1cm4gMDsgfQotCi0gICAgTG9jayYgZ2V0TG9j
aygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9sb2NrOwotICAgIH0KKyAgICBzdGF0
aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6Ci0gICAgbXV0YWJsZSBMb2NrIG1fbG9j
azsKKyAgICBFeGVjdXRhYmxlQWxsb2NhdG9yKCkgPSBkZWZhdWx0OworICAgIH5FeGVjdXRhYmxl
QWxsb2NhdG9yKCkgPSBkZWZhdWx0OwogfTsKIAogc3RhdGljIGlubGluZSB2b2lkKiBwZXJmb3Jt
SklUTWVtY3B5KHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKaW5kZXggZDAzOTlkZDU2YjRmYTA0OTUyODQzNTM1M2RmNjE0MzJhOGEwODRiMC4u
NmZkMWY2YTIyZDU3ZjMxNmZlZjgyM2IwZDVkOTMxOTQxNzMyNjAwMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNs
dWRlICJUZXN0UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5SW5saW5lcy5oIgor
I2luY2x1ZGUgIldhc21DYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgog
I2luY2x1ZGUgIldhc21GYXVsdFNpZ25hbEhhbmRsZXIuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5
LmgiCkBAIC0yMzA3LDcgKzIzMDgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbldlYkFzc2VtYmx5TWVtb3J5TW9kZShFeGVjU3RhdGUqIGV4ZQogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIAotICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1ibHkoKSkKKyAgICBpZiAo
IVdhc206OmlzU3VwcG9ydGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAiV2ViQXNzZW1ibHlNZW1vcnlNb2RlIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBp
ZiB0aGUgdXNlV2ViQXNzZW1ibHkgb3B0aW9uIGlzIHNldCJfcyk7CiAKICAgICBpZiAoSlNPYmpl
Y3QqIG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLmdldE9iamVjdCgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCmlu
ZGV4IGExYWMwNTg2N2MwMGE0YTQ5MzdhOTliOTU2ZDNmY2FmZTZmNGRiMTQuLjFkOTRhNWM3NzY0
ZGEwMDk2MmYxY2QwMzA5YTk3NTE4MzVjYmJhMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCkBAIC00Miw2ICs0Miw3
IEBACiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIK
ICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKKyNpbmNsdWRlICJXYXNtQ2FwYWJpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiV2FzbVRodW5rcy5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2lu
Y2x1ZGUgPG11dGV4PgpAQCAtNjgsOSArNjksNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmco
KQogICAgICAgICBXcml0ZUJhcnJpZXJDb3VudGVyczo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCiAK
LSNpZiBFTkFCTEUoQVNTRU1CTEVSKQotICAgICAgICBFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0
aWFsaXplQWxsb2NhdG9yKCk7Ci0jZW5kaWYKKyAgICAgICAgRXhlY3V0YWJsZUFsbG9jYXRvcjo6
aW5pdGlhbGl6ZSgpOwogICAgICAgICBWTTo6Y29tcHV0ZUNhblVzZUpJVCgpOwogCiAgICAgICAg
IExMSW50Ojppbml0aWFsaXplKCk7CkBAIC04Myw3ICs4Miw3IEBAIHZvaWQgaW5pdGlhbGl6ZVRo
cmVhZGluZygpCiAgICAgICAgIHRocmVhZC5zZXRTYXZlZExhc3RTdGFja1RvcCh0aHJlYWQuc3Rh
Y2soKS5vcmlnaW4oKSk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgICAgIGlmIChP
cHRpb25zOjp1c2VXZWJBc3NlbWJseSgpKQorICAgICAgICBpZiAoV2FzbTo6aXNTdXBwb3J0ZWQo
KSkKICAgICAgICAgICAgIFdhc206OlRodW5rczo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCBiMWIyODU0N2FkMDZmOGI2ZjUyOTk0MjY4ZjAwYjUxODVkY2FiNTJmLi43YWZlNzAzMmIxNjhj
NmJjYjU0MzMzY2IyY2VhYjkwMWJhMTRmNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xNjgsNiArMTY4LDcgQEAKICNpbmNs
dWRlICJTeW1ib2xPYmplY3QuaCIKICNpbmNsdWRlICJTeW1ib2xQcm90b3R5cGUuaCIKICNpbmNs
dWRlICJWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5oIgorI2luY2x1ZGUgIldhc21DYXBhYmlsaXRp
ZXMuaCIKICNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2Vha01hcENv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiV2Vha01hcFByb3RvdHlwZS5oIgpAQCAtMTA0Miw3ICsx
MDQzLDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgZXhwb3NlRG9sbGFyVk0o
dm0pOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIGlmIChPcHRpb25zOjp1c2VXZWJB
c3NlbWJseSgpKSB7CisgICAgaWYgKFdhc206OmlzU3VwcG9ydGVkKCkpIHsKICAgICAgICAgYXV0
byogd2ViQXNzZW1ibHlQcm90b3R5cGUgPSBXZWJBc3NlbWJseVByb3RvdHlwZTo6Y3JlYXRlKHZt
LCB0aGlzLCBXZWJBc3NlbWJseVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgICAgICBtX3dlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkU3RydWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXpl
cjxTdHJ1Y3R1cmU+JiBpbml0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2Nr
LmNwcAppbmRleCBlY2U1MjZkNWM4OGNjYzZjZTAwM2YyYWNjMzljZjhmOTg5OTM0NDMxLi4yNGRl
NzRlNmRjZmVmZTJjMDA2YWMwZWMyZmJmMzkzMmMwYmU0OWRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFjaGluZVN0YWNrTWFya2VyLmgiCiAjaW5jbHVkZSAiU2Ft
cGxpbmdQcm9maWxlci5oIgorI2luY2x1ZGUgIldhc21DYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRl
ICJXYXNtTWFjaGluZVRocmVhZHMuaCIKICNpbmNsdWRlIDx0aHJlYWQ+CiAjaW5jbHVkZSA8d3Rm
L1N0YWNrUG9pbnRlci5oPgpAQCAtMTQ5LDcgKzE1MCw3IEBAIHZvaWQgSlNMb2NrOjpkaWRBY3F1
aXJlTG9jaygpCiAKICAgICBtX3ZtLT5oZWFwLm1hY2hpbmVUaHJlYWRzKCkuYWRkQ3VycmVudFRo
cmVhZCgpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBpZiAoT3B0aW9uczo6dXNlV2Vi
QXNzZW1ibHkoKSkKKyAgICBpZiAoV2FzbTo6aXNTdXBwb3J0ZWQoKSkKICAgICAgICAgV2FzbTo6
c3RhcnRUcmFja2luZ0N1cnJlbnRUaHJlYWQoKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKaW5kZXggZTc3ODA0NTQ1YzJiMTZkYTk5NTc4Y2YwMzY0MmIxZGRiYjQw
YzI2Yy4uZjU0ZjZmZTc0Y2ExMjIxODI3MzQ0NGY3ZDE3YzhhZGRkMTc2NGQ0MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTg2LDEyICsxODYsMTMgQEAgQXRvbWljPHVu
c2lnbmVkPiBWTTo6c19udW1iZXJPZklEczsKIC8vIGp1c3QgY2hlY2tzIGZvciBFTkFCTEUoSklU
KSBvciBFTkFCTEUoWUFSUl9KSVQpIHdpdGggdGhpcyBwcmVtaXNlIGluIG1pbmQuCiAKICNpZiBF
TkFCTEUoQVNTRU1CTEVSKQotc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVB
bGxvY2F0b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCitzdGF0aWMgYm9vbCBlbmFibGVBc3NlbWJs
ZXIoKQogewogICAgIGlmICghT3B0aW9uczo6dXNlSklUKCkgJiYgIU9wdGlvbnM6OnVzZVJlZ0V4
cEpJVCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWV4ZWN1dGFibGVBbGxv
Y2F0b3IuaXNWYWxpZCgpKSB7CisgICAgRXhlY3V0YWJsZUFsbG9jYXRvcjo6aW5pdGlhbGl6ZVVu
ZGVybHlpbmdBbGxvY2F0b3IoKTsKKyAgICBpZiAoIUV4ZWN1dGFibGVBbGxvY2F0b3I6OnNpbmds
ZXRvbigpLmlzVmFsaWQoKSkgewogICAgICAgICBpZiAoT3B0aW9uczo6Y3Jhc2hJZkNhbnRBbGxv
Y2F0ZUpJVE1lbW9yeSgpKQogICAgICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjA4LDcgKzIwOSw3IEBAIGJvb2wgVk06OmNhblVzZUFzc2VtYmxlcigpCiAgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RhdGljIGJvb2wgZW5hYmxlZCA9
IGZhbHNlOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKLSAgICAgICAgZW5hYmxl
ZCA9IGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yOjpzaW5nbGV0b24oKSk7Cisg
ICAgICAgIGVuYWJsZWQgPSBlbmFibGVBc3NlbWJsZXIoKTsKICAgICB9KTsKICAgICByZXR1cm4g
ZW5hYmxlZDsKICNlbHNlCkBAIC00MTAsMTQgKzQxMSw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICB9CiAKICAgICBUaHJlYWQ6OmN1cnJlbnQoKS5zZXRD
dXJyZW50QXRvbWljU3RyaW5nVGFibGUoZXhpc3RpbmdFbnRyeUF0b21pY1N0cmluZ1RhYmxlKTsK
LQotI2lmIEVOQUJMRShKSVQpCi0gICAgaml0U3R1YnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVFRo
dW5rcz4oKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEZUTF9KSVQpCi0gICAgZnRsVGh1bmtzID0g
c3RkOjptYWtlX3VuaXF1ZTxGVEw6OlRodW5rcz4oKTsKLSNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJ
VCkKICAgICAKICNpZiAhRU5BQkxFKENfTE9PUCkKICAgICBpbml0aWFsaXplSG9zdENhbGxSZXR1
cm5WYWx1ZSgpOyAvLyBUaGlzIGlzIG5lZWRlZCB0byBjb252aW5jZSB0aGUgbGlua2VyIG5vdCB0
byBkcm9wIGhvc3QgY2FsbCByZXR1cm4gc3VwcG9ydC4KQEAgLTQ3NSwxNCArNDY4LDE1IEBAIFZN
OjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICNpZiBFTkFCTEUoSklUKQog
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGFueSBzdHVicyB0aGF0IHRoZSBKSVQgaXMgZ29pbmcgdG8g
dXNlIGFyZSBpbml0aWFsaXplZCBpbiBub24tY29tcGlsYXRpb24gdGhyZWFkcy4KICAgICBpZiAo
Y2FuVXNlSklUKCkpIHsKKyAgICAgICAgaml0U3R1YnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVFRo
dW5rcz4oKTsKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKyAgICAgICAgZnRsVGh1bmtzID0gc3RkOjpt
YWtlX3VuaXF1ZTxGVEw6OlRodW5rcz4oKTsKKyNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKICAg
ICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNhbGwpOwog
ICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ29uc3Ry
dWN0KTsKICAgICB9CiAjZW5kaWYKIAotICAgIGlmICghY2FuVXNlSklUKCkpCi0gICAgICAgIG5v
SklUVmFsdWVQcm9maWxlU2luZ2xldG9uID0gc3RkOjptYWtlX3VuaXF1ZTxWYWx1ZVByb2ZpbGU+
KDApOwotCiAgICAgaWYgKE9wdGlvbnM6OmZvcmNlRGVidWdnZXJCeXRlY29kZUdlbmVyYXRpb24o
KSB8fCBPcHRpb25zOjphbHdheXNVc2VTaGFkb3dDaGlja2VuKCkpCiAgICAgICAgIGVuc3VyZVNo
YWRvd0NoaWNrZW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggMzc3ZDMx
NWRlZWI4ZGY5ZWY1Yzc0MzM4NzVhOGRjYzcyNjJhMTRkNS4uMWQwNzQ1YjY3MDJjNDU3YjgxOTQ4
MmM2YWE4YWJiM2NkZGVjMjU5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC04
MDcsOCArODA3LDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+
LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBSVFRyYWNlTGlzdCogbV9y
dFRyYWNlTGlzdDsKICNlbmRpZgogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZT4g
bm9KSVRWYWx1ZVByb2ZpbGVTaW5nbGV0b247Ci0KICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHJlc2V0RGF0ZUNhY2hlKCk7CiAKICAgICBSZWdFeHBDYWNoZSogcmVnRXhwQ2FjaGUoKSB7IHJl
dHVybiBtX3JlZ0V4cENhY2hlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKaW5kZXggNWE5ZDk5YTY0NGMzODVlNjUzYzNjYjk1
M2YxMjI3ZTE0ZTE0MDExZS4uOTcxMDI2OGVlZDJlY2E5MmUyMTU1OWQwNjNjYThlMDA2M2NmZmRm
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5h
bHl6ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFu
YWx5emVyLmNwcApAQCAtNTUsMTIgKzU1LDEwIEBAIGNsYXNzIFNpZ2lsbENyYXNoQW5hbHl6ZXIg
ewogICAgIENyYXNoU291cmNlIGFuYWx5emUoU2lnbmFsQ29udGV4dCYpOwogCiBwcml2YXRlOgot
ICAgIFNpZ2lsbENyYXNoQW5hbHl6ZXIoKSB7IH0KKyAgICBTaWdpbGxDcmFzaEFuYWx5emVyKCkK
KyAgICB7CisgICAgfQogICAgIHZvaWQgZHVtcENvZGVCbG9jayhDb2RlQmxvY2sqLCB2b2lkKiBt
YWNoaW5lUEMpOwotCi0jaWYgVVNFKEFSTTY0X0RJU0FTU0VNQkxFUikKLSAgICBBNjRET3Bjb2Rl
IG1fYXJtNjRPcGNvZGU7Ci0jZW5kaWYKIH07CiAKICNpZiBPUyhEQVJXSU4pCkBAIC0yODYsNiAr
Mjg0LDcgQEAgYXV0byBTaWdpbGxDcmFzaEFuYWx5emVyOjphbmFseXplKFNpZ25hbENvbnRleHQm
IGNvbnRleHQpIC0+IENyYXNoU291cmNlCiB2b2lkIFNpZ2lsbENyYXNoQW5hbHl6ZXI6OmR1bXBD
b2RlQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHZvaWQqIG1hY2hpbmVQQykKIHsKICNpZiBD
UFUoQVJNNjQpICYmIEVOQUJMRShKSVQpCisgICAgYXV0byBhcm02NE9wY29kZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8QTY0RE9wY29kZT4oKTsKICAgICBKSVRDb2RlKiBqaXRDb2RlID0gY29kZUJsb2Nr
LT5qaXRDb2RlKCkuZ2V0KCk7CiAKICAgICAvLyBEdW1wIHRoZSByYXcgYml0cyBvZiB0aGUgY29k
ZS4KQEAgLTMyMiwxMCArMzIxLDEwIEBAIHZvaWQgU2lnaWxsQ3Jhc2hBbmFseXplcjo6ZHVtcENv
ZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaywgdm9pZCogbWFjaGluZVBDKQogICAgICAgICBj
aGFyIHBjU3RyaW5nWzI0XTsKICAgICAgICAgaWYgKGN1cnJlbnRQQyA9PSBtYWNoaW5lUEMpIHsK
ICAgICAgICAgICAgIHNucHJpbnRmKHBjU3RyaW5nLCBzaXplb2YocGNTdHJpbmcpLCAiKiAweCVs
eCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjdXJyZW50UEMpKTsKLSAgICAgICAgICAg
IGxvZygiJTIwczogJXMgICAgPD09PT09PT09PT09PT09PT09PT09PT09PT0iLCBwY1N0cmluZywg
bV9hcm02NE9wY29kZS5kaXNhc3NlbWJsZShjdXJyZW50UEMpKTsKKyAgICAgICAgICAgIGxvZygi
JTIwczogJXMgICAgPD09PT09PT09PT09PT09PT09PT09PT09PT0iLCBwY1N0cmluZywgYXJtNjRP
cGNvZGUtPmRpc2Fzc2VtYmxlKGN1cnJlbnRQQykpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgc25wcmludGYocGNTdHJpbmcsIHNpemVvZihwY1N0cmluZyksICIweCVseCIsIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjdXJyZW50UEMpKTsKLSAgICAgICAgICAgIGxvZygiJTIw
czogJXMiLCBwY1N0cmluZywgbV9hcm02NE9wY29kZS5kaXNhc3NlbWJsZShjdXJyZW50UEMpKTsK
KyAgICAgICAgICAgIGxvZygiJTIwczogJXMiLCBwY1N0cmluZywgYXJtNjRPcGNvZGUtPmRpc2Fz
c2VtYmxlKGN1cnJlbnRQQykpOwogICAgICAgICB9CiAgICAgICAgIGN1cnJlbnRQQysrOwogICAg
ICAgICBieXRlQ291bnQgLT0gc2l6ZW9mKHVpbnQzMl90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYXBhYmlsaXRpZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21DYXBhYmlsaXRpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjkwOTM0MDliOWRhODYy
ZDg5YzViYzgxMzI2ZmY2YjE4OTg4OGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUNhcGFiaWxpdGllcy5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsK
K25hbWVzcGFjZSBXYXNtIHsKKworaW5saW5lIGJvb2wgaXNTdXBwb3J0ZWQoKQoreworICAgIHJl
dHVybiBWTTo6Y2FuVXNlSklUKCkgJiYgT3B0aW9uczo6dXNlV2ViQXNzZW1ibHkoKTsKK30KKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKaW5kZXggZjkwNjllMjcwN2VmNGMz
YjFhNmYwYjJmYzI0MWVlNDRlNThlOWI4Yi4uNjRjMzU5MDY1OWNhYmU3YTlhYjRiMzMwM2MwYzBl
ODI2YmIyNTQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZh
dWx0U2lnbmFsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkV4
ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJNYWNoaW5lQ29udGV4dC5oIgorI2luY2x1
ZGUgIldhc21DYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJXYXNtRXhjZXB0aW9uVHlwZS5oIgog
I2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRlICJXYXNtVGh1bmtzLmgiCkBAIC0xMjYs
NiArMTI3LDkgQEAgdm9pZCBlbmFibGVGYXN0TWVtb3J5KCkKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFlfRkFTVF9NRU1PUlkpCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2U7CiAgICAgc3Rk
OjpjYWxsX29uY2Uob25jZSwgW10geworICAgICAgICBpZiAoIVdhc206OmlzU3VwcG9ydGVkKCkp
CisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VXZWJBc3Nl
bWJseUZhc3RNZW1vcnkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365476</attachid>
            <date>2019-03-20 20:40:46 -0700</date>
            <delta_ts>2019-03-21 01:47:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195982-20190320204046.patch</filename>
            <type>text/plain</type>
            <size>30874</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
Zjk5MjViMDg2OGFiOTY1NmU1Njc0YTA3N2VmMTVkYmE4MGE1ZTBjLi42YTA4ZGMyODgxNTNlNWJm
ZTEwYmM5MGExNmY1NjhkZWNjODM0MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAxOS0wMy0yMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIERvIG5vdCBjcmVhdGUgSklUIHJlbGF0ZWQgZGF0YSB1bmRlciBu
b24tSklUIG1vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTk4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGF2b2lkIGNyZWF0aW9ucyBvZiBKSVQgcmVsYXRlZCBkYXRhIHN0cnVjdHVyZXMgdW5k
ZXIgbm9uLUpJVCBtb2RlLgorICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGZvbGxvd2lu
ZyBhbGxvY2F0aW9ucy4KKworICAgICAgICAxLiBKSVRUaHVua3MKKyAgICAgICAgMi4gRlRMVGh1
bmtzCisgICAgICAgIDMuIEZpeGVkVk1Qb29sRXhlY3V0YWJsZUFsbG9jYXRvcgorICAgICAgICA0
LiBub0pJVFZhbHVlUHJvZmlsZVNpbmdsZXRvbiBzaW5jZSBpdCBpcyBubyBsb25nZXIgdXNlZAor
ICAgICAgICA1LiBBUk0gZGlzYXNzZW1ibGVyIHNob3VsZCBiZSBpbml0aWFsaXplZCB3aGVuIGl0
IGlzIHVzZWQKKyAgICAgICAgNi4gV2FzbSByZWxhdGVkIGRhdGEgc3RydWN0dXJlcyBhcmUgYWNj
aWRlbnRhbGx5IGFsbG9jYXRlZCBpZiBWTTo6Y2FuVXNlSklUKCkgPT0gZmFsc2UgJiYKKyAgICAg
ICAgICAgT3B0aW9uczo6dXNlV2ViQXNzZW1ibHkoKSA9PSB0cnVlLiBBZGQgV2FzbTo6aXNTdXBw
b3J0ZWQoKSBmdW5jdGlvbiB0byBjaGVjayB0aGUgYm90aCBjb25kaXRpb25zLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpI
ZWFwOjpydW5FbmRQaGFzZSk6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpGaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3I6On5GaXhlZFZN
UG9vbEV4ZWN1dGFibGVBbGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2Nh
dG9yOjppbml0aWFsaXplVW5kZXJseWluZ0FsbG9jYXRvcik6CisgICAgICAgIChKU0M6OkV4ZWN1
dGFibGVBbGxvY2F0b3I6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
QWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJs
ZUFsbG9jYXRvcjo6bWVtb3J5UHJlc3N1cmVNdWx0aXBsaWVyKToKKyAgICAgICAgKEpTQzo6RXhl
Y3V0YWJsZUFsbG9jYXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxs
b2NhdG9yOjppc1ZhbGlkRXhlY3V0YWJsZU1lbW9yeSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVBbGxvY2F0b3I6OmdldExvY2sgY29uc3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxs
b2NhdG9yOjpjb21taXR0ZWRCeXRlQ291bnQpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxs
b2NhdG9yOjpkdW1wUHJvZmlsZSk6CisgICAgICAgIChKU0M6OnN0YXJ0T2ZGaXhlZEV4ZWN1dGFi
bGVNZW1vcnlQb29sSW1wbCk6CisgICAgICAgIChKU0M6OmVuZE9mRml4ZWRFeGVjdXRhYmxlTWVt
b3J5UG9vbEltcGwpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFs
aXplKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6aW5pdGlhbGl6ZUFsbG9j
YXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6OkV4ZWN1
dGFibGVBbGxvY2F0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2Nh
dG9yOjp+RXhlY3V0YWJsZUFsbG9jYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvckJhc2U6
OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yQmFzZTo6
dW5kZXJNZW1vcnlQcmVzc3VyZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3JC
YXNlOjptZW1vcnlQcmVzc3VyZU11bHRpcGxpZXIpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
QWxsb2NhdG9yQmFzZTo6ZHVtcFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxs
b2NhdG9yQmFzZTo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9y
QmFzZTo6c2V0SklURW5hYmxlZCk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3JC
YXNlOjppc1ZhbGlkRXhlY3V0YWJsZU1lbW9yeSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVB
bGxvY2F0b3JCYXNlOjpjb21taXR0ZWRCeXRlQ291bnQpOgorICAgICAgICAoSlNDOjpFeGVjdXRh
YmxlQWxsb2NhdG9yQmFzZTo6Z2V0TG9jayBjb25zdCk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVBbGxvY2F0b3I6OmlzVmFsaWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVj
dXRhYmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6bWVtb3J5UHJlc3N1cmVNdWx0aXBsaWVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6YWxsb2NhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVkKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6aXNWYWxpZEV4ZWN1
dGFibGVNZW1vcnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9y
Ojpjb21taXR0ZWRCeXRlQ291bnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxl
QWxsb2NhdG9yOjpnZXRMb2NrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBqc2MuY3BwOgor
ICAgICAgICAoZnVuY3Rpb25XZWJBc3NlbWJseU1lbW9yeU1vZGUpOgorICAgICAgICAqIHJ1bnRp
bWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJl
YWRpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0xvY2suY3Bw
OgorICAgICAgICAoSlNDOjpKU0xvY2s6OmRpZEFjcXVpcmVMb2NrKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6ZW5hYmxlQXNzZW1ibGVyKToKKyAgICAgICAgKEpT
Qzo6Vk06OmNhblVzZUFzc2VtYmxlcik6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAg
ICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpTaWdpbGxDcmFzaEFuYWx5emVyOjpkdW1wQ29kZUJsb2NrKToKKyAg
ICAgICAgKEpTQzo6U2lnaWxsQ3Jhc2hBbmFseXplcjo6U2lnaWxsQ3Jhc2hBbmFseXplcik6IERl
bGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtQ2FwYWJpbGl0aWVzLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpXYXNtOjppc1N1cHBvcnRlZCk6CisgICAgICAgICogd2FzbS9XYXNtRmF1bHRTaWdu
YWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6ZW5hYmxlRmFzdE1lbW9yeSk6CisK
IDIwMTktMDMtMjAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
R2V0Q2FsbGVlIGRvZXMgbm90IHJlcG9ydCB0aGUgY29ycmVjdCB0eXBlIGluIEFJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWI0ZTU1ZTY2MjIxNzQ4ODBiMTNmMjJiN2Rk
M2IyN2NhNmE0ZWQ0MS4uYmJhZGE4MGM2N2U3Mzc0MmQ2Y2FhMDBhNThjMjZkNDdiNmM5YWRhOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTc4LDYgKzk3OCw3IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9X
cml0ZUJhcnJpZXIuaAogICAgIHJ1bnRpbWUvV3JpdGVCYXJyaWVySW5saW5lcy5oCiAKKyAgICB3
YXNtL1dhc21DYXBhYmlsaXRpZXMuaAogICAgIHdhc20vV2FzbUNvZGVCbG9jay5oCiAgICAgd2Fz
bS9XYXNtQ29udGV4dC5oCiAgICAgd2FzbS9XYXNtRW1iZWRkZXIuaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBhYjRlMWIyZmFkOTJlODcxMWQ3YzEyMGJkYzc3ZDM3MjUzYzhmMTMw
Li4zMTI4MDQ0OGNiOGMwMzUzYWY5ZmM5YmE2NjhiOTMzYTRhNDc2YTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTc0OSw2ICsxNzQ5LDcgQEAKIAkJRTMyQUIyNDQxRENENzVG
NDAwRDc1MzNBIC8qIE1hY3JvQXNzZW1ibGVySGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4MEE3NkIxRENENzE5NTAwMEY4OUU2IC8qIE1h
Y3JvQXNzZW1ibGVySGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzMzRDQkI1MjFGRDk2QTkwMDBFQjE3OCAvKiBSZWdFeHBHbG9iYWxE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM0
Q0JCMzIxRkQ5NkE5MDAwRUIxNzggLyogUmVnRXhwR2xvYmFsRGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E2MUI2MzIyMDIwMEVF
MDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMzdC
OTY3MjI0MzI0RUEwMDkzQTgyMCAvKiBXYXNtQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM3Qjk2NjIyNDMyNEU1MDA5M0E4MjAg
LyogV2FzbUNhcGFiaWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzM0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovOyB9OwogCQlFMzNFOEQxRDFCOTAxM0MzMDAzNDZCNTIg
LyogSlNOYXRpdmVTdGRGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMzRThEMUIxQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVu
Y3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMzNFOEQyMTFCOTAxM0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNFOEQxRjFCOTAx
M0RFMDAzNDZCNTIgLyogTmF0aXZlU3RkRnVuY3Rpb25DZWxsLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ2ODMsNiArNDY4NCw3IEBACiAJCUUz
MzRDQkIzMjFGRDk2QTkwMDBFQjE3OCAvKiBSZWdFeHBHbG9iYWxEYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEdsb2JhbERhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmbGVjdE9iamVjdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0
MCAvKiBSZWZsZWN0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
ZmxlY3RPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzN0I5NjYyMjQz
MjRFNTAwOTNBODIwIC8qIFdhc21DYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNh
cGFiaWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzNCM0UyNTFCN0FC
RDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0U4RDFBMUI5MDEzQzMw
MDM0NkI1MiAvKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzNFOEQxQjFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5j
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05hdGl2ZVN0ZEZ1bmN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDczLDYgKzY0NzUsNyBAQAog
CQkJCTUyNUMwREQ4MUU5MzU4NDcwMDIxODRDRCAvKiBXYXNtQ2FsbGVlLmggKi8sCiAJCQkJNTNG
RDA0RDExRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5jcHAgKi8sCiAJ
CQkJNTNGRDA0RDIxRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5oICov
LAorCQkJCUUzMzdCOTY2MjI0MzI0RTUwMDkzQTgyMCAvKiBXYXNtQ2FwYWJpbGl0aWVzLmggKi8s
CiAJCQkJNTI2QUM0QjQxRTk3N0M1RDAwMzUwMEUxIC8qIFdhc21Db2RlQmxvY2suY3BwICovLAog
CQkJCTUyNkFDNEI1MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2NrLmggKi8sCiAJCQkJ
QUQ0MTJCMzIxRTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmggKi8sCkBAIC04NDgxLDYg
Kzg0ODQsNyBAQAogCQkJCTc5QTIyODM2MUQzNUQ3MUYwMEQ4RTA2NyAvKiBBcml0aFByb2ZpbGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNkIxQ0I5MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNo
ZWNrTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8q
IEFSTTY0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTFFMkM0MDIyNDBERDYyMDBG
NkI3MjkgLyogQVJNNjRFQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFERDE0NTBG
RERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
ODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBp
biBIZWFkZXJzICovLApAQCAtODUyMiw3ICs4NTI2LDYgQEAKIAkJCQkwRjJDNjNCMDFFNjBBRTQz
MDBDMTM4MzkgLyogQjNCYW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwMTFCREFDREFD
MDA4MEZGNzQgLyogQjNCYXNpY0Jsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwMjFC
REFDREFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJRkUxRTJDM0YyMjQwREQ1ODAwRjZCNzI5IC8qIE1hY3JvQXNzZW1ibGVyQVJNNjRFLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkVDODUwMzFCREFDREFDMDA4MEZGNzQgLyogQjNCYXNpY0Jsb2Nr
VXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzM4RTFDMUJGMjg2RUEwMDEzQzg4RiAvKiBC
M0Jsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUwNDFCREFDREFD
MDA4MEZGNzQgLyogQjNCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTg2MDIsNyAr
ODYwNSw2IEBACiAJCQkJMEZFQzg1M0ExQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3dpdGNoVmFsdWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDU3MDQxMUJFNTg0Q0EwMDYyQTYyOSAvKiBCM1RpbWlu
Z1Njb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzQzFCREFDREFDMDA4MEZGNzQgLyog
QjNUeXBlLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTFFMkM0MDIyNDBERDYyMDBGNkI3MjkgLyog
QVJNNjRFQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQ0ZERkJEQTFEMUY1RDlFMDBG
RTNENzIgLyogQjNUeXBlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzRTFCREFDREFD
MDA4MEZGNzQgLyogQjNVcHNpbG9uVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTQw
MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1VzZUNvdW50cy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDcx
LDYgKzk0NzMsNyBAQAogCQkJCTE0QjcyM0I4MTJEN0RBNkYwMDNCRDVFRCAvKiBNYWNoaW5lU3Rh
Y2tNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAv
KiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzAxODMxQTIyRDAw
Q0Y4NzExIC8qIE1hY3JvQXNzZW1ibGVyQVJNNjQuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFMUUy
QzNGMjI0MERENTgwMEY2QjcyOSAvKiBNYWNyb0Fzc2VtYmxlckFSTTY0RS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZBREQxNDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2M0IyM0UwMEZDNjExODkwMDcwM0FBNCAvKiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMkFCMjQ0MURDRDc1RjQwMEQ3
NTMzQSAvKiBNYWNyb0Fzc2VtYmxlckhlbHBlcnMuaCBpbiBIZWFkZXJzICovLApAQCAtOTgwNiw2
ICs5ODA5LDcgQEAKIAkJCQlBRDRCMURGQTFERjI0NEUyMDA3MUFFMzIgLyogV2FzbUJpbmRpbmcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUyNUMwRERBMUU5MzU4NDcwMDIxODRDRCAvKiBXYXNtQ2Fs
bGVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0ZEMDRENDFEN0FCMjkxMDAzMjg3RDMgLyogV2Fz
bUNhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzM3Qjk2NzIyNDMyNEVB
MDA5M0E4MjAgLyogV2FzbUNhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI2QUM0
QjcxRTk3N0M1RDAwMzUwMEUxIC8qIFdhc21Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CUFENDEyQjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNzU5M0M4OThCRTcxNEE2NEJFOTNBNkU3IC8qIFdhc21Db250ZXh0SW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDE5NDUxMDRm
OTAxNjhlNDVjMzMzYzE0OThhY2Y5YWYyZGQyZDMwN2QuLjdmZGI3MmFjNTMyZmI0NTY2M2RkMDc4
Y2M0MTRlMWFlZTM5NWJkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0x
NDk2LDkgKzE0OTYsNiBAQCBORVZFUl9JTkxJTkUgYm9vbCBIZWFwOjpydW5FbmRQaGFzZShHQ0Nv
bmR1Y3RvciBjb25uKQogICAgIGlmICh2bSgpLT50eXBlUHJvZmlsZXIoKSkKICAgICAgICAgdm0o
KS0+dHlwZVByb2ZpbGVyKCktPmludmFsaWRhdGVUeXBlU2V0Q2FjaGUoKTsKIAotICAgIGlmIChW
YWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSB2bSgpLT5ub0pJVFZhbHVlUHJvZmlsZVNpbmdsZXRvbi5n
ZXQoKSkKLSAgICAgICAgKnByb2ZpbGUgPSBWYWx1ZVByb2ZpbGUoMCk7Ci0gICAgICAgIAogICAg
IHJlYXBXZWFrSGFuZGxlcygpOwogICAgIHBydW5lU3RhbGVFbnRyaWVzRnJvbVdlYWtHQ01hcHMo
KTsKICAgICBzd2VlcEFycmF5QnVmZmVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKaW5kZXggYmM2YzMzYzM4OGZkYWQ5MzRmZjk1
MTJmZjAwMmE4NzdjMzZjNDJiMy4uN2U2MzdmNjc4ZmQyY2RmZTk0OTA4YThkNWUxYzM4NTFjMzRi
M2EzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuY3BwCkBAIC0xMTUsNyArMTE1LDYgQEAgc3RhdGljIHVpbnRwdHJfdCBzdGFydE9mRml4
ZWRXcml0YWJsZU1lbW9yeVBvb2w7CiAKIGNsYXNzIEZpeGVkVk1Qb29sRXhlY3V0YWJsZUFsbG9j
YXRvcjsKIHN0YXRpYyBGaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3IqIGFsbG9jYXRvciA9
IG51bGxwdHI7Ci1zdGF0aWMgRXhlY3V0YWJsZUFsbG9jYXRvciogZXhlY3V0YWJsZUFsbG9jYXRv
ciA9IG51bGxwdHI7CiAKIHN0YXRpYyBib29sIHNfaXNKSVRFbmFibGVkID0gdHJ1ZTsKIHN0YXRp
YyBib29sIGlzSklURW5hYmxlZCgpCkBAIC00MDQsNDkgKzQwMywzNyBAQCBjbGFzcyBGaXhlZFZN
UG9vbEV4ZWN1dGFibGVBbGxvY2F0b3IgOiBwdWJsaWMgTWV0YUFsbG9jYXRvciB7CiAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEV4ZWN1dGFibGVNZW1vcnlQdHJUYWc+IG1fbWVtb3J5RW5kOwog
fTsKIAotdm9pZCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFsaXplQWxsb2NhdG9yKCkKLXsK
LSAgICBBU1NFUlQoIWFsbG9jYXRvcik7Ci0gICAgYWxsb2NhdG9yID0gbmV3IEZpeGVkVk1Qb29s
RXhlY3V0YWJsZUFsbG9jYXRvcigpOwotICAgIENvZGVQcm9maWxpbmc6Om5vdGlmeUFsbG9jYXRv
cihhbGxvY2F0b3IpOwotCi0gICAgZXhlY3V0YWJsZUFsbG9jYXRvciA9IG5ldyBFeGVjdXRhYmxl
QWxsb2NhdG9yOwotfQotCi1FeGVjdXRhYmxlQWxsb2NhdG9yJiBFeGVjdXRhYmxlQWxsb2NhdG9y
OjpzaW5nbGV0b24oKQotewotICAgIEFTU0VSVChhbGxvY2F0b3IpOwotICAgIEFTU0VSVChleGVj
dXRhYmxlQWxsb2NhdG9yKTsKLSAgICByZXR1cm4gKmV4ZWN1dGFibGVBbGxvY2F0b3I7Ci19Ci0K
LUV4ZWN1dGFibGVBbGxvY2F0b3I6OkV4ZWN1dGFibGVBbGxvY2F0b3IoKQotewotICAgIEFTU0VS
VChhbGxvY2F0b3IpOwotfQotCi1FeGVjdXRhYmxlQWxsb2NhdG9yOjp+RXhlY3V0YWJsZUFsbG9j
YXRvcigpCitGaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3I6On5GaXhlZFZNUG9vbEV4ZWN1
dGFibGVBbGxvY2F0b3IoKQogeworICAgIG1fcmVzZXJ2YXRpb24uZGVhbGxvY2F0ZSgpOwogfQog
Ci1GaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3I6On5GaXhlZFZNUG9vbEV4ZWN1dGFibGVB
bGxvY2F0b3IoKQordm9pZCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFsaXplVW5kZXJseWlu
Z0FsbG9jYXRvcigpCiB7Ci0gICAgbV9yZXNlcnZhdGlvbi5kZWFsbG9jYXRlKCk7CisgICAgQVNT
RVJUKCFhbGxvY2F0b3IpOworICAgIGFsbG9jYXRvciA9IG5ldyBGaXhlZFZNUG9vbEV4ZWN1dGFi
bGVBbGxvY2F0b3IoKTsKKyAgICBDb2RlUHJvZmlsaW5nOjpub3RpZnlBbGxvY2F0b3IoYWxsb2Nh
dG9yKTsKIH0KIAogYm9vbCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppc1ZhbGlkKCkgY29uc3QKIHsK
KyAgICBpZiAoIWFsbG9jYXRvcikKKyAgICAgICAgcmV0dXJuIEJhc2U6OmlzVmFsaWQoKTsKICAg
ICByZXR1cm4gISFhbGxvY2F0b3ItPmJ5dGVzUmVzZXJ2ZWQoKTsKIH0KIAogYm9vbCBFeGVjdXRh
YmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKCkKIHsKKyAgICBpZiAoIWFsbG9jYXRv
cikKKyAgICAgICAgcmV0dXJuIEJhc2U6OnVuZGVyTWVtb3J5UHJlc3N1cmUoKTsKICAgICBNZXRh
QWxsb2NhdG9yOjpTdGF0aXN0aWNzIHN0YXRpc3RpY3MgPSBhbGxvY2F0b3ItPmN1cnJlbnRTdGF0
aXN0aWNzKCk7CiAgICAgcmV0dXJuIHN0YXRpc3RpY3MuYnl0ZXNBbGxvY2F0ZWQgPiBzdGF0aXN0
aWNzLmJ5dGVzUmVzZXJ2ZWQgLyAyOwogfQogCiBkb3VibGUgRXhlY3V0YWJsZUFsbG9jYXRvcjo6
bWVtb3J5UHJlc3N1cmVNdWx0aXBsaWVyKHNpemVfdCBhZGRlZE1lbW9yeVVzYWdlKQogeworICAg
IGlmICghYWxsb2NhdG9yKQorICAgICAgICByZXR1cm4gQmFzZTo6bWVtb3J5UHJlc3N1cmVNdWx0
aXBsaWVyKGFkZGVkTWVtb3J5VXNhZ2UpOwogICAgIE1ldGFBbGxvY2F0b3I6OlN0YXRpc3RpY3Mg
c3RhdGlzdGljcyA9IGFsbG9jYXRvci0+Y3VycmVudFN0YXRpc3RpY3MoKTsKICAgICBBU1NFUlQo
c3RhdGlzdGljcy5ieXRlc0FsbG9jYXRlZCA8PSBzdGF0aXN0aWNzLmJ5dGVzUmVzZXJ2ZWQpOwog
ICAgIHNpemVfdCBieXRlc0FsbG9jYXRlZCA9IHN0YXRpc3RpY3MuYnl0ZXNBbGxvY2F0ZWQgKyBh
ZGRlZE1lbW9yeVVzYWdlOwpAQCAtNDY1LDYgKzQ1Miw4IEBAIGRvdWJsZSBFeGVjdXRhYmxlQWxs
b2NhdG9yOjptZW1vcnlQcmVzc3VyZU11bHRpcGxpZXIoc2l6ZV90IGFkZGVkTWVtb3J5VXNhZ2Up
CiAKIFJlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBFeGVjdXRhYmxlQWxsb2NhdG9yOjph
bGxvY2F0ZShzaXplX3Qgc2l6ZUluQnl0ZXMsIHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlv
bkVmZm9ydCBlZmZvcnQpCiB7CisgICAgaWYgKCFhbGxvY2F0b3IpCisgICAgICAgIHJldHVybiBC
YXNlOjphbGxvY2F0ZShzaXplSW5CeXRlcywgb3duZXJVSUQsIGVmZm9ydCk7CiAgICAgaWYgKE9w
dGlvbnM6OmxvZ0V4ZWN1dGFibGVBbGxvY2F0aW9uKCkpIHsKICAgICAgICAgTWV0YUFsbG9jYXRv
cjo6U3RhdGlzdGljcyBzdGF0cyA9IGFsbG9jYXRvci0+Y3VycmVudFN0YXRpc3RpY3MoKTsKICAg
ICAgICAgZGF0YUxvZygiQWxsb2NhdGluZyAiLCBzaXplSW5CeXRlcywgIiBieXRlcyBvZiBleGVj
dXRhYmxlIG1lbW9yeSB3aXRoICIsIHN0YXRzLmJ5dGVzQWxsb2NhdGVkLCAiIGJ5dGVzIGFsbG9j
YXRlZCwgIiwgc3RhdHMuYnl0ZXNSZXNlcnZlZCwgIiBieXRlcyByZXNlcnZlZCwgYW5kICIsIHN0
YXRzLmJ5dGVzQ29tbWl0dGVkLCAiIGNvbW1pdHRlZC5cbiIpOwpAQCAtNTE0LDMzICs1MDMsNDUg
QEAgUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IEV4ZWN1dGFibGVBbGxvY2F0b3I6OmFs
bG9jYXRlKHNpemVfdCBzaXplSW5CeXRlcywKIAogYm9vbCBFeGVjdXRhYmxlQWxsb2NhdG9yOjpp
c1ZhbGlkRXhlY3V0YWJsZU1lbW9yeShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCB2b2lk
KiBhZGRyZXNzKQogeworICAgIGlmICghYWxsb2NhdG9yKQorICAgICAgICByZXR1cm4gQmFzZTo6
aXNWYWxpZEV4ZWN1dGFibGVNZW1vcnkobG9ja2VyLCBhZGRyZXNzKTsKICAgICByZXR1cm4gYWxs
b2NhdG9yLT5pc0luQWxsb2NhdGVkTWVtb3J5KGxvY2tlciwgYWRkcmVzcyk7CiB9CiAKIExvY2sm
IEV4ZWN1dGFibGVBbGxvY2F0b3I6OmdldExvY2soKSBjb25zdAogeworICAgIGlmICghYWxsb2Nh
dG9yKQorICAgICAgICByZXR1cm4gQmFzZTo6Z2V0TG9jaygpOwogICAgIHJldHVybiBhbGxvY2F0
b3ItPmdldExvY2soKTsKIH0KIAogc2l6ZV90IEV4ZWN1dGFibGVBbGxvY2F0b3I6OmNvbW1pdHRl
ZEJ5dGVDb3VudCgpCiB7CisgICAgaWYgKCFhbGxvY2F0b3IpCisgICAgICAgIHJldHVybiBCYXNl
Ojpjb21taXR0ZWRCeXRlQ291bnQoKTsKICAgICByZXR1cm4gYWxsb2NhdG9yLT5ieXRlc0NvbW1p
dHRlZCgpOwogfQogCiAjaWYgRU5BQkxFKE1FVEFfQUxMT0NBVE9SX1BST0ZJTEUpCiB2b2lkIEV4
ZWN1dGFibGVBbGxvY2F0b3I6OmR1bXBQcm9maWxlKCkKIHsKKyAgICBpZiAoIWFsbG9jYXRvcikK
KyAgICAgICAgcmV0dXJuOwogICAgIGFsbG9jYXRvci0+ZHVtcFByb2ZpbGUoKTsKIH0KICNlbmRp
ZgogCiB2b2lkKiBzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbEltcGwoKQogeworICAg
IGlmICghYWxsb2NhdG9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gYWxs
b2NhdG9yLT5tZW1vcnlTdGFydCgpOwogfQogCiB2b2lkKiBlbmRPZkZpeGVkRXhlY3V0YWJsZU1l
bW9yeVBvb2xJbXBsKCkKIHsKKyAgICBpZiAoIWFsbG9jYXRvcikKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgcmV0dXJuIGFsbG9jYXRvci0+bWVtb3J5RW5kKCk7CiB9CiAKQEAgLTU1MSwx
MyArNTUyLDEzIEBAIGJvb2wgaXNKSVRQQyh2b2lkKiBwYykKIAogfSAvLyBuYW1lc3BhY2UgSlND
CiAKLSNlbHNlIC8vICFFTkFCTEUoSklUKQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKIG5hbWVz
cGFjZSBKU0MgewogCiBzdGF0aWMgRXhlY3V0YWJsZUFsbG9jYXRvciogZXhlY3V0YWJsZUFsbG9j
YXRvcjsKIAotdm9pZCBFeGVjdXRhYmxlQWxsb2NhdG9yOjppbml0aWFsaXplQWxsb2NhdG9yKCkK
K3ZvaWQgRXhlY3V0YWJsZUFsbG9jYXRvcjo6aW5pdGlhbGl6ZSgpCiB7CiAgICAgZXhlY3V0YWJs
ZUFsbG9jYXRvciA9IG5ldyBFeGVjdXRhYmxlQWxsb2NhdG9yOwogfQpAQCAtNTY5LDUgKzU3MCwz
IEBAIEV4ZWN1dGFibGVBbGxvY2F0b3ImIEV4ZWN1dGFibGVBbGxvY2F0b3I6OnNpbmdsZXRvbigp
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKaW5kZXggYmI5
OGY1MjBlMmI0NmFhYmIxZDQyMTJiNmEyYWMwODA4OTVhZDE2ZC4uZmUxMWY4YzA3ZmEzMDcxZWEz
MmI1YjUzMzI3MzFjNjFmZDZlNjY5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKQEAgLTU5LDYgKzU5LDQyIEBAIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBqaXRBbGxvY2F0aW9uR3JhbnVsZSA9IDMyOwogCiB0eXBlZGVmIFdURjo6TWV0YUFs
bG9jYXRvckhhbmRsZSBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlOwogCitjbGFzcyBFeGVjdXRhYmxl
QWxsb2NhdG9yQmFzZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRXhlY3V0YWJsZUFsbG9jYXRvckJhc2UpOworCisgICAgZW51bSBQcm90
ZWN0aW9uU2V0dGluZyB7IFdyaXRhYmxlLCBFeGVjdXRhYmxlIH07CisKK3B1YmxpYzoKKyAgICBi
b29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgc3RhdGljIGJvb2wg
dW5kZXJNZW1vcnlQcmVzc3VyZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBzdGF0aWMgZG91
YmxlIG1lbW9yeVByZXNzdXJlTXVsdGlwbGllcihzaXplX3QpIHsgcmV0dXJuIDEuMDsgfQorCisg
ICAgc3RhdGljIHZvaWQgZHVtcFByb2ZpbGUoKSB7IH0KKworICAgIFJlZlB0cjxFeGVjdXRhYmxl
TWVtb3J5SGFuZGxlPiBhbGxvY2F0ZShzaXplX3QsIHZvaWQqLCBKSVRDb21waWxhdGlvbkVmZm9y
dCkgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgc3RhdGljIHZvaWQgc2V0SklURW5hYmxlZChi
b29sKSB7IH07CisgICAgCisgICAgYm9vbCBpc1ZhbGlkRXhlY3V0YWJsZU1lbW9yeShjb25zdCBB
YnN0cmFjdExvY2tlciYsIHZvaWQqKSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgc3RhdGljIHNp
emVfdCBjb21taXR0ZWRCeXRlQ291bnQoKSB7IHJldHVybiAwOyB9CisKKyAgICBMb2NrJiBnZXRM
b2NrKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xvY2s7CisgICAgfQorCitwcm90
ZWN0ZWQ6CisgICAgRXhlY3V0YWJsZUFsbG9jYXRvckJhc2UoKSA9IGRlZmF1bHQ7CisgICAgfkV4
ZWN1dGFibGVBbGxvY2F0b3JCYXNlKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIG11dGFi
bGUgTG9jayBtX2xvY2s7Cit9OworCiAjaWYgRU5BQkxFKEpJVCkKIAogSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCogc3RhcnRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2xJbXBsKCk7CkBAIC0xMjIs
MTQgKzE1OCwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQqIHBlcmZvcm1KSVRNZW1jcHkodm9pZCAq
ZHN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBuKQogICAgIHJldHVybiBtZW1jcHkoZHN0LCBz
cmMsIG4pOwogfQogCi1jbGFzcyBFeGVjdXRhYmxlQWxsb2NhdG9yIHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFeGVjdXRhYmxlQWxsb2Nh
dG9yKTsKLSAgICBlbnVtIFByb3RlY3Rpb25TZXR0aW5nIHsgV3JpdGFibGUsIEV4ZWN1dGFibGUg
fTsKLQorY2xhc3MgRXhlY3V0YWJsZUFsbG9jYXRvciA6IHByaXZhdGUgRXhlY3V0YWJsZUFsbG9j
YXRvckJhc2UgewogcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBFeGVjdXRhYmxlQWxsb2NhdG9y
QmFzZTsKKwogICAgIHN0YXRpYyBFeGVjdXRhYmxlQWxsb2NhdG9yJiBzaW5nbGV0b24oKTsKLSAg
ICBzdGF0aWMgdm9pZCBpbml0aWFsaXplQWxsb2NhdG9yKCk7CisgICAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZSgpOworICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVVbmRlcmx5aW5nQWxsb2NhdG9y
KCk7CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKIApAQCAtMTUyLDQ0ICsxODcsMjIgQEAg
Y2xhc3MgRXhlY3V0YWJsZUFsbG9jYXRvciB7CiAgICAgc3RhdGljIHNpemVfdCBjb21taXR0ZWRC
eXRlQ291bnQoKTsKIAogICAgIExvY2smIGdldExvY2soKSBjb25zdDsKLXByaXZhdGU6CiAKLSAg
ICBFeGVjdXRhYmxlQWxsb2NhdG9yKCk7Ci0gICAgfkV4ZWN1dGFibGVBbGxvY2F0b3IoKTsKK3By
aXZhdGU6CisgICAgRXhlY3V0YWJsZUFsbG9jYXRvcigpID0gZGVmYXVsdDsKKyAgICB+RXhlY3V0
YWJsZUFsbG9jYXRvcigpID0gZGVmYXVsdDsKIH07CiAKICNlbHNlCiAKLWNsYXNzIEV4ZWN1dGFi
bGVBbGxvY2F0b3IgewotICAgIGVudW0gUHJvdGVjdGlvblNldHRpbmcgeyBXcml0YWJsZSwgRXhl
Y3V0YWJsZSB9OwotCitjbGFzcyBFeGVjdXRhYmxlQWxsb2NhdG9yIDogcHVibGljIEV4ZWN1dGFi
bGVBbGxvY2F0b3JCYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRXhlY3V0YWJsZUFsbG9jYXRv
ciYgc2luZ2xldG9uKCk7Ci0gICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUFsbG9jYXRvcigpOwot
Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHN0YXRp
YyBib29sIHVuZGVyTWVtb3J5UHJlc3N1cmUoKSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgc3Rh
dGljIGRvdWJsZSBtZW1vcnlQcmVzc3VyZU11bHRpcGxpZXIoc2l6ZV90KSB7IHJldHVybiAxLjA7
IH0KLQotICAgIHN0YXRpYyB2b2lkIGR1bXBQcm9maWxlKCkgeyB9Ci0KLSAgICBSZWZQdHI8RXhl
Y3V0YWJsZU1lbW9yeUhhbmRsZT4gYWxsb2NhdGUoc2l6ZV90LCB2b2lkKiwgSklUQ29tcGlsYXRp
b25FZmZvcnQpIHsgcmV0dXJuIG51bGxwdHI7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNldEpJVEVu
YWJsZWQoYm9vbCkgeyB9OwotICAgIAotICAgIGJvb2wgaXNWYWxpZEV4ZWN1dGFibGVNZW1vcnko
Y29uc3QgQWJzdHJhY3RMb2NrZXImLCB2b2lkKikgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHN0
YXRpYyBzaXplX3QgY29tbWl0dGVkQnl0ZUNvdW50KCkgeyByZXR1cm4gMDsgfQotCi0gICAgTG9j
ayYgZ2V0TG9jaygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9sb2NrOwotICAgIH0K
KyAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6Ci0gICAgbXV0YWJsZSBM
b2NrIG1fbG9jazsKKyAgICBFeGVjdXRhYmxlQWxsb2NhdG9yKCkgPSBkZWZhdWx0OworICAgIH5F
eGVjdXRhYmxlQWxsb2NhdG9yKCkgPSBkZWZhdWx0OwogfTsKIAogc3RhdGljIGlubGluZSB2b2lk
KiBwZXJmb3JtSklUTWVtY3B5KHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZDAzOTlkZDU2YjRmYTA0OTUyODQzNTM1M2RmNjE0MzJh
OGEwODRiMC4uNmZkMWY2YTIyZDU3ZjMxNmZlZjgyM2IwZDVkOTMxOTQxNzMyNjAwMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJTdXBlclNhbXBsZXIu
aCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5SW5s
aW5lcy5oIgorI2luY2x1ZGUgIldhc21DYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJXYXNtQ29u
dGV4dC5oIgogI2luY2x1ZGUgIldhc21GYXVsdFNpZ25hbEhhbmRsZXIuaCIKICNpbmNsdWRlICJX
YXNtTWVtb3J5LmgiCkBAIC0yMzA3LDcgKzIzMDgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbldlYkFzc2VtYmx5TWVtb3J5TW9kZShFeGVjU3RhdGUqIGV4
ZQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIAotICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1ibHkoKSkK
KyAgICBpZiAoIVdhc206OmlzU3VwcG9ydGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiV2ViQXNzZW1ibHlNZW1vcnlNb2RlIHNob3VsZCBvbmx5IGJl
IGNhbGxlZCBpZiB0aGUgdXNlV2ViQXNzZW1ibHkgb3B0aW9uIGlzIHNldCJfcyk7CiAKICAgICBp
ZiAoSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLmdldE9iamVjdCgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRp
bmcuY3BwCmluZGV4IGExYWMwNTg2N2MwMGE0YTQ5MzdhOTliOTU2ZDNmY2FmZTZmNGRiMTQuLjFk
OTRhNWM3NzY0ZGEwMDk2MmYxY2QwMzA5YTk3NTE4MzVjYmJhMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCkBAIC00
Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlE
VGFibGUuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKKyNpbmNsdWRlICJXYXNtQ2FwYWJp
bGl0aWVzLmgiCiAjaW5jbHVkZSAiV2FzbVRodW5rcy5oIgogI2luY2x1ZGUgIldyaXRlQmFycmll
ci5oIgogI2luY2x1ZGUgPG11dGV4PgpAQCAtNjgsOSArNjksNyBAQCB2b2lkIGluaXRpYWxpemVU
aHJlYWRpbmcoKQogICAgICAgICBXcml0ZUJhcnJpZXJDb3VudGVyczo6aW5pdGlhbGl6ZSgpOwog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoQVNTRU1CTEVSKQotICAgICAgICBFeGVjdXRhYmxlQWxsb2Nh
dG9yOjppbml0aWFsaXplQWxsb2NhdG9yKCk7Ci0jZW5kaWYKKyAgICAgICAgRXhlY3V0YWJsZUFs
bG9jYXRvcjo6aW5pdGlhbGl6ZSgpOwogICAgICAgICBWTTo6Y29tcHV0ZUNhblVzZUpJVCgpOwog
CiAgICAgICAgIExMSW50Ojppbml0aWFsaXplKCk7CkBAIC04Myw3ICs4Miw3IEBAIHZvaWQgaW5p
dGlhbGl6ZVRocmVhZGluZygpCiAgICAgICAgIHRocmVhZC5zZXRTYXZlZExhc3RTdGFja1RvcCh0
aHJlYWQuc3RhY2soKS5vcmlnaW4oKSk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAg
ICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseSgpKQorICAgICAgICBpZiAoV2FzbTo6aXNT
dXBwb3J0ZWQoKSkKICAgICAgICAgICAgIFdhc206OlRodW5rczo6aW5pdGlhbGl6ZSgpOwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAppbmRleCBiMWIyODU0N2FkMDZmOGI2ZjUyOTk0MjY4ZjAwYjUxODVkY2FiNTJmLi43YWZl
NzAzMmIxNjhjNmJjYjU0MzMzY2IyY2VhYjkwMWJhMTRmNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xNjgsNiArMTY4LDcg
QEAKICNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIKICNpbmNsdWRlICJTeW1ib2xQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5oIgorI2luY2x1ZGUgIldhc21D
YXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
V2Vha01hcENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiV2Vha01hcFByb3RvdHlwZS5oIgpAQCAt
MTA0Miw3ICsxMDQzLDcgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgZXhwb3Nl
RG9sbGFyVk0odm0pOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIGlmIChPcHRpb25z
Ojp1c2VXZWJBc3NlbWJseSgpKSB7CisgICAgaWYgKFdhc206OmlzU3VwcG9ydGVkKCkpIHsKICAg
ICAgICAgYXV0byogd2ViQXNzZW1ibHlQcm90b3R5cGUgPSBXZWJBc3NlbWJseVByb3RvdHlwZTo6
Y3JlYXRlKHZtLCB0aGlzLCBXZWJBc3NlbWJseVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgICAgICBtX3dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkU3RydWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgICAgIFtdIChjb25zdCBJ
bml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmNwcAppbmRleCBlY2U1MjZkNWM4OGNjYzZjZTAwM2YyYWNjMzljZjhmOTg5OTM0
NDMxLi4yNGRlNzRlNmRjZmVmZTJjMDA2YWMwZWMyZmJmMzkzMmMwYmU0OWRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFjaGluZVN0YWNrTWFya2VyLmgiCiAjaW5j
bHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgorI2luY2x1ZGUgIldhc21DYXBhYmlsaXRpZXMuaCIK
ICNpbmNsdWRlICJXYXNtTWFjaGluZVRocmVhZHMuaCIKICNpbmNsdWRlIDx0aHJlYWQ+CiAjaW5j
bHVkZSA8d3RmL1N0YWNrUG9pbnRlci5oPgpAQCAtMTQ5LDcgKzE1MCw3IEBAIHZvaWQgSlNMb2Nr
OjpkaWRBY3F1aXJlTG9jaygpCiAKICAgICBtX3ZtLT5oZWFwLm1hY2hpbmVUaHJlYWRzKCkuYWRk
Q3VycmVudFRocmVhZCgpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBpZiAoT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHkoKSkKKyAgICBpZiAoV2FzbTo6aXNTdXBwb3J0ZWQoKSkKICAgICAg
ICAgV2FzbTo6c3RhcnRUcmFja2luZ0N1cnJlbnRUaHJlYWQoKTsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggZTc3ODA0NTQ1YzJiMTZkYTk5NTc4Y2YwMzY0
MmIxZGRiYjQwYzI2Yy4uZjU0ZjZmZTc0Y2ExMjIxODI3MzQ0NGY3ZDE3YzhhZGRkMTc2NGQ0MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTg2LDEyICsxODYsMTMgQEAg
QXRvbWljPHVuc2lnbmVkPiBWTTo6c19udW1iZXJPZklEczsKIC8vIGp1c3QgY2hlY2tzIGZvciBF
TkFCTEUoSklUKSBvciBFTkFCTEUoWUFSUl9KSVQpIHdpdGggdGhpcyBwcmVtaXNlIGluIG1pbmQu
CiAKICNpZiBFTkFCTEUoQVNTRU1CTEVSKQotc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4
ZWN1dGFibGVBbGxvY2F0b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCitzdGF0aWMgYm9vbCBlbmFi
bGVBc3NlbWJsZXIoKQogewogICAgIGlmICghT3B0aW9uczo6dXNlSklUKCkgJiYgIU9wdGlvbnM6
OnVzZVJlZ0V4cEpJVCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWV4ZWN1
dGFibGVBbGxvY2F0b3IuaXNWYWxpZCgpKSB7CisgICAgRXhlY3V0YWJsZUFsbG9jYXRvcjo6aW5p
dGlhbGl6ZVVuZGVybHlpbmdBbGxvY2F0b3IoKTsKKyAgICBpZiAoIUV4ZWN1dGFibGVBbGxvY2F0
b3I6OnNpbmdsZXRvbigpLmlzVmFsaWQoKSkgewogICAgICAgICBpZiAoT3B0aW9uczo6Y3Jhc2hJ
ZkNhbnRBbGxvY2F0ZUpJVE1lbW9yeSgpKQogICAgICAgICAgICAgQ1JBU0goKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjA4LDcgKzIwOSw3IEBAIGJvb2wgVk06OmNhblVzZUFzc2VtYmxl
cigpCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RhdGljIGJvb2wg
ZW5hYmxlZCA9IGZhbHNlOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKLSAgICAg
ICAgZW5hYmxlZCA9IGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yOjpzaW5nbGV0
b24oKSk7CisgICAgICAgIGVuYWJsZWQgPSBlbmFibGVBc3NlbWJsZXIoKTsKICAgICB9KTsKICAg
ICByZXR1cm4gZW5hYmxlZDsKICNlbHNlCkBAIC00MTAsMTQgKzQxMSw2IEBAIFZNOjpWTShWTVR5
cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICB9CiAKICAgICBUaHJlYWQ6OmN1cnJl
bnQoKS5zZXRDdXJyZW50QXRvbWljU3RyaW5nVGFibGUoZXhpc3RpbmdFbnRyeUF0b21pY1N0cmlu
Z1RhYmxlKTsKLQotI2lmIEVOQUJMRShKSVQpCi0gICAgaml0U3R1YnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEpJVFRodW5rcz4oKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEZUTF9KSVQpCi0gICAgZnRs
VGh1bmtzID0gc3RkOjptYWtlX3VuaXF1ZTxGVEw6OlRodW5rcz4oKTsKLSNlbmRpZiAvLyBFTkFC
TEUoRlRMX0pJVCkKICAgICAKICNpZiAhRU5BQkxFKENfTE9PUCkKICAgICBpbml0aWFsaXplSG9z
dENhbGxSZXR1cm5WYWx1ZSgpOyAvLyBUaGlzIGlzIG5lZWRlZCB0byBjb252aW5jZSB0aGUgbGlu
a2VyIG5vdCB0byBkcm9wIGhvc3QgY2FsbCByZXR1cm4gc3VwcG9ydC4KQEAgLTQ3NSwxNCArNDY4
LDE1IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICNpZiBFTkFC
TEUoSklUKQogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGFueSBzdHVicyB0aGF0IHRoZSBKSVQgaXMg
Z29pbmcgdG8gdXNlIGFyZSBpbml0aWFsaXplZCBpbiBub24tY29tcGlsYXRpb24gdGhyZWFkcy4K
ICAgICBpZiAoY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaml0U3R1YnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEpJVFRodW5rcz4oKTsKKyNpZiBFTkFCTEUoRlRMX0pJVCkKKyAgICAgICAgZnRsVGh1bmtz
ID0gc3RkOjptYWtlX3VuaXF1ZTxGVEw6OlRodW5rcz4oKTsKKyNlbmRpZiAvLyBFTkFCTEUoRlRM
X0pJVCkKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZv
ckNhbGwpOwogICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2Rl
Rm9yQ29uc3RydWN0KTsKICAgICB9CiAjZW5kaWYKIAotICAgIGlmICghY2FuVXNlSklUKCkpCi0g
ICAgICAgIG5vSklUVmFsdWVQcm9maWxlU2luZ2xldG9uID0gc3RkOjptYWtlX3VuaXF1ZTxWYWx1
ZVByb2ZpbGU+KDApOwotCiAgICAgaWYgKE9wdGlvbnM6OmZvcmNlRGVidWdnZXJCeXRlY29kZUdl
bmVyYXRpb24oKSB8fCBPcHRpb25zOjphbHdheXNVc2VTaGFkb3dDaGlja2VuKCkpCiAgICAgICAg
IGVuc3VyZVNoYWRvd0NoaWNrZW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggMzc3ZDMxNWRlZWI4ZGY5ZWY1Yzc0MzM4NzVhOGRjYzcyNjJhMTRkNS4uMWQwNzQ1YjY3MDJj
NDU3YjgxOTQ4MmM2YWE4YWJiM2NkZGVjMjU5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCkBAIC04MDcsOCArODA3LDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBSVFRyYWNl
TGlzdCogbV9ydFRyYWNlTGlzdDsKICNlbmRpZgogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFZhbHVl
UHJvZmlsZT4gbm9KSVRWYWx1ZVByb2ZpbGVTaW5nbGV0b247Ci0KICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIHJlc2V0RGF0ZUNhY2hlKCk7CiAKICAgICBSZWdFeHBDYWNoZSogcmVnRXhwQ2Fj
aGUoKSB7IHJldHVybiBtX3JlZ0V4cENhY2hlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKaW5kZXggNWE5ZDk5YTY0NGMzODVl
NjUzYzNjYjk1M2YxMjI3ZTE0ZTE0MDExZS4uZmQyMDYwZWQzZTJlZGU4ZTdjOWU1YzVkZTU0ZTg1
MmIxZGI3MmNiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2ls
bENyYXNoQW5hbHl6ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdp
bGxDcmFzaEFuYWx5emVyLmNwcApAQCAtNDQsNiArNDQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0
cnVjdCBTaWduYWxDb250ZXh0OwogCiBjbGFzcyBTaWdpbGxDcmFzaEFuYWx5emVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaWdpbGxD
cmFzaEFuYWx5emVyKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgU2lnaWxsQ3Jhc2hBbmFseXplciYg
aW5zdGFuY2UoKTsKIApAQCAtNTUsMTIgKzU3LDkgQEAgY2xhc3MgU2lnaWxsQ3Jhc2hBbmFseXpl
ciB7CiAgICAgQ3Jhc2hTb3VyY2UgYW5hbHl6ZShTaWduYWxDb250ZXh0Jik7CiAKIHByaXZhdGU6
Ci0gICAgU2lnaWxsQ3Jhc2hBbmFseXplcigpIHsgfQotICAgIHZvaWQgZHVtcENvZGVCbG9jayhD
b2RlQmxvY2sqLCB2b2lkKiBtYWNoaW5lUEMpOworICAgIFNpZ2lsbENyYXNoQW5hbHl6ZXIoKSA9
IGRlZmF1bHQ7CiAKLSNpZiBVU0UoQVJNNjRfRElTQVNTRU1CTEVSKQotICAgIEE2NERPcGNvZGUg
bV9hcm02NE9wY29kZTsKLSNlbmRpZgorICAgIHZvaWQgZHVtcENvZGVCbG9jayhDb2RlQmxvY2sq
LCB2b2lkKiBtYWNoaW5lUEMpOwogfTsKIAogI2lmIE9TKERBUldJTikKQEAgLTI4Niw2ICsyODUs
NyBAQCBhdXRvIFNpZ2lsbENyYXNoQW5hbHl6ZXI6OmFuYWx5emUoU2lnbmFsQ29udGV4dCYgY29u
dGV4dCkgLT4gQ3Jhc2hTb3VyY2UKIHZvaWQgU2lnaWxsQ3Jhc2hBbmFseXplcjo6ZHVtcENvZGVC
bG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaywgdm9pZCogbWFjaGluZVBDKQogewogI2lmIENQVShB
Uk02NCkgJiYgRU5BQkxFKEpJVCkKKyAgICBhdXRvIGFybTY0T3Bjb2RlID0gc3RkOjptYWtlX3Vu
aXF1ZTxBNjRET3Bjb2RlPigpOwogICAgIEpJVENvZGUqIGppdENvZGUgPSBjb2RlQmxvY2stPmpp
dENvZGUoKS5nZXQoKTsKIAogICAgIC8vIER1bXAgdGhlIHJhdyBiaXRzIG9mIHRoZSBjb2RlLgpA
QCAtMzIyLDEwICszMjIsMTAgQEAgdm9pZCBTaWdpbGxDcmFzaEFuYWx5emVyOjpkdW1wQ29kZUJs
b2NrKENvZGVCbG9jayogY29kZUJsb2NrLCB2b2lkKiBtYWNoaW5lUEMpCiAgICAgICAgIGNoYXIg
cGNTdHJpbmdbMjRdOwogICAgICAgICBpZiAoY3VycmVudFBDID09IG1hY2hpbmVQQykgewogICAg
ICAgICAgICAgc25wcmludGYocGNTdHJpbmcsIHNpemVvZihwY1N0cmluZyksICIqIDB4JWx4Iiwg
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRQQykpOwotICAgICAgICAgICAgbG9n
KCIlMjBzOiAlcyAgICA8PT09PT09PT09PT09PT09PT09PT09PT09PSIsIHBjU3RyaW5nLCBtX2Fy
bTY0T3Bjb2RlLmRpc2Fzc2VtYmxlKGN1cnJlbnRQQykpOworICAgICAgICAgICAgbG9nKCIlMjBz
OiAlcyAgICA8PT09PT09PT09PT09PT09PT09PT09PT09PSIsIHBjU3RyaW5nLCBhcm02NE9wY29k
ZS0+ZGlzYXNzZW1ibGUoY3VycmVudFBDKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBzbnByaW50ZihwY1N0cmluZywgc2l6ZW9mKHBjU3RyaW5nKSwgIjB4JWx4IiwgcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRQQykpOwotICAgICAgICAgICAgbG9nKCIlMjBzOiAl
cyIsIHBjU3RyaW5nLCBtX2FybTY0T3Bjb2RlLmRpc2Fzc2VtYmxlKGN1cnJlbnRQQykpOworICAg
ICAgICAgICAgbG9nKCIlMjBzOiAlcyIsIHBjU3RyaW5nLCBhcm02NE9wY29kZS0+ZGlzYXNzZW1i
bGUoY3VycmVudFBDKSk7CiAgICAgICAgIH0KICAgICAgICAgY3VycmVudFBDKys7CiAgICAgICAg
IGJ5dGVDb3VudCAtPSBzaXplb2YodWludDMyX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUNhcGFiaWxpdGllcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUNhcGFiaWxpdGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiOTA5MzQwOWI5ZGE4NjJkODlj
NWJjODEzMjZmZjZiMTg5ODg4ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQ2FwYWJpbGl0aWVzLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiT3B0aW9ucy5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworbmFt
ZXNwYWNlIFdhc20geworCitpbmxpbmUgYm9vbCBpc1N1cHBvcnRlZCgpCit7CisgICAgcmV0dXJu
IFZNOjpjYW5Vc2VKSVQoKSAmJiBPcHRpb25zOjp1c2VXZWJBc3NlbWJseSgpOworfQorCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6V2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAppbmRleCBmOTA2OWUyNzA3ZWY0YzNiMWE2
ZjBiMmZjMjQxZWU0NGU1OGU5YjhiLi42NGMzNTkwNjU5Y2FiZTdhOWFiNGIzMzAzYzBjMGU4MjZi
YjI1NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRT
aWduYWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1
bHRTaWduYWxIYW5kbGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRXhlY3V0
YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIk1hY2hpbmVDb250ZXh0LmgiCisjaW5jbHVkZSAi
V2FzbUNhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIldhc21FeGNlcHRpb25UeXBlLmgiCiAjaW5j
bHVkZSAiV2FzbU1lbW9yeS5oIgogI2luY2x1ZGUgIldhc21UaHVua3MuaCIKQEAgLTEyNiw2ICsx
MjcsOSBAQCB2b2lkIGVuYWJsZUZhc3RNZW1vcnkoKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWV9G
QVNUX01FTU9SWSkKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKICAgICBzdGQ6OmNh
bGxfb25jZShvbmNlLCBbXSB7CisgICAgICAgIGlmICghV2FzbTo6aXNTdXBwb3J0ZWQoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
RmFzdE1lbW9yeSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCg==
</data>
<flag name="review"
          id="381923"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>