<?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>170692</bug_id>
          
          <creation_ts>2017-04-10 14:09:47 -0700</creation_ts>
          <short_desc>B3: don&apos;t allow unsigned offsets in MemoryValue</short_desc>
          <delta_ts>2017-04-17 01:24:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1296145</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-10 14:09:47 -0700</bug_when>
    <thetext>MemoryValue always expects a signed offset. I ran into this for another patch, and it seems like an unlikely but really bad bug to run into. I&apos;ll audit our code and fix MemoryValue as well as other places which use signed integer. They should either fail to compile if given unsigned, or check and trap at runtime if we&apos;d hit implementation-defined behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297349</commentid>
    <comment_count>1</comment_count>
      <attachid>307101</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-14 00:20:40 -0700</bug_when>
    <thetext>Created attachment 307101
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297350</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-14 00:23:11 -0700</bug_when>
    <thetext>Attachment 307101 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:174:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:174:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:175:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:175:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:176:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:176:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:176:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 7 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297397</commentid>
    <comment_count>3</comment_count>
      <attachid>307101</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-04-14 09:09:58 -0700</bug_when>
    <thetext>Comment on attachment 307101
patch

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

&gt; Source/JavaScriptCore/b3/B3MemoryValue.cpp:83
&gt; +    MemoryValue::MemoryValue(MemoryValue::MemoryValueLoad, Kind kind, Type type, Origin origin, Value* pointer, MemoryValue::OffsetType offset, HeapRange range, HeapRange fenceRange)

undo indentation please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297399</commentid>
    <comment_count>4</comment_count>
      <attachid>307101</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-14 09:20:46 -0700</bug_when>
    <thetext>Comment on attachment 307101
patch

Actually, cq- because I also want you to undo that indentation change in MemoryValue that Keith pointed out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297400</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-14 09:21:52 -0700</bug_when>
    <thetext>As ugly as this is, I think it&apos;s good to force people to be precise about how their offset becomes an int32.

I have a question: what does this do to AtomicValue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297578</commentid>
    <comment_count>6</comment_count>
      <attachid>307169</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-14 17:00:45 -0700</bug_when>
    <thetext>Created attachment 307169
patch

Here&apos;s an update that does AtomicValue and other offsets! I also added C++17&apos;s std::conjunction to WTF because this was becoming copy-pasta. The heart of this change is now in B3Value.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297579</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-14 17:02:56 -0700</bug_when>
    <thetext>Attachment 307169 did not pass style-queue:


ERROR: Source/WTF/wtf/StdLibExtras.h:516:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/StdLibExtras.h:517:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/StdLibExtras.h:518:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/StdLibExtras.h:519:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/StdLibExtras.h:520:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:88:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:88:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:89:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3AtomicValue.h:89:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/air/AirArg.h:549:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/B3Value.h:297:  std::enable_if::type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/b3/B3Value.h:298:  std::enable_if::type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/b3/B3Value.h:300:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:146:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:146:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:147:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:147:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:148:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:148:  The parameter name &quot;offset&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/B3MemoryValue.h:148:  The parameter name &quot;range&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 20 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297860</commentid>
    <comment_count>8</comment_count>
      <attachid>307258</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-17 00:23:35 -0700</bug_when>
    <thetext>Created attachment 307258
patch

Fix style and MSVC build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297861</commentid>
    <comment_count>9</comment_count>
      <attachid>307258</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-17 00:24:08 -0700</bug_when>
    <thetext>Comment on attachment 307258
patch

Rejecting attachment 307258 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 307258, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/JavaScriptCore/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/3549717</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297862</commentid>
    <comment_count>10</comment_count>
      <attachid>307259</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-17 00:26:47 -0700</bug_when>
    <thetext>Created attachment 307259
patch

Forgot to update &quot;oops&quot;, as always.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297870</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-17 01:24:25 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 307259:

webrtc/captureCanvas-webrtc.html bug 170870 (author: youennf@gmail.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297871</commentid>
    <comment_count>12</comment_count>
      <attachid>307259</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-17 01:24:52 -0700</bug_when>
    <thetext>Comment on attachment 307259
patch

Clearing flags on attachment: 307259

Committed r215407: &lt;http://trac.webkit.org/changeset/215407&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297872</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-17 01:24:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307101</attachid>
            <date>2017-04-14 00:20:40 -0700</date>
            <delta_ts>2017-04-14 17:00:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-MemoryValue.patch</filename>
            <type>text/plain</type>
            <size>31469</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAzZDRkYzZiM2ZjOTY4MWU2NTRjMDI3YzRmYTAwNDc0YTU0OTJjZmM0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDE0IEFwciAyMDE3IDAwOjE4OjA3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gTWVtb3J5
VmFsdWUKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgIHwgMzggKysrKysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29tbW9uLmgg
ICAgICAgICAgICAgIHwgIDYgKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZh
bHVlLmNwcCAgICAgICB8IDEwICstLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5
VmFsdWUuaCAgICAgICAgIHwgOTcgKysrKysrKysrKysrKysrKysrKystLS0tCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZUlubGluZXMuaCAgfCAgMiArLQogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAgICAgIHwgIDggKy0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwICAgICAgICAgICAgICB8IDIwICsrLS0tCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgfCA0OCArKysrKyst
LS0tLS0KIDggZmlsZXMgY2hhbmdlZCwgMTc0IGluc2VydGlvbnMoKyksIDU1IGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGFmMTVkZGIuLmQ3OWM2NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTA0LTE0ICBKRiBCYXN0aWVu
ICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBBaXI6IGRvbid0IGFsbG93IHVuc2ln
bmVkIG9mZnNldHMgaW4gTWVtb3J5VmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MDY5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1lbW9yeVZhbHVlIGFsd2F5cyBleHBlY3RzIGEgc2lnbmVkIG9m
ZnNldC4gR2l2aW5nIGl0IGFuCisgICAgICAgIG91dC1vZi1ib3VuZHMgdW5zaWduZWQgb2Zmc2V0
IGNhdXNlcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkCisgICAgICAgIGJlaGF2aW9yLCB3aGljaCBj
YW4gY2F1c2UgYmFkbmVzcyBhcyBJIGp1c3QgZml4ZWQgaW4gV2ViQXNzZW1ibHkuCisgICAgICAg
IFRoaXMgcGF0Y2ggbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBjcmVhdGUgYSBNZW1vcnlWYWx1ZSB3
aXRoIGFuCisgICAgICAgIHVuc2lnbmVkIHZhbHVlLCBvciB3aXRoIGFuIG92ZXJseS1sYXJnZSB2
YWx1ZS4KKworICAgICAgICAqIGIzL0IzQ29tbW9uLmg6CisgICAgICAgIChKU0M6OkIzOjppc1Jl
cHJlc2VudGFibGVBcyk6CisgICAgICAgICogYjMvQjNNZW1vcnlWYWx1ZS5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6aXNMZWdhbE9mZnNldEltcGwpOgorICAgICAgICAoSlND
OjpCMzo6TWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKToKKyAgICAgICAgKEpTQzo6QjM6Ok1lbW9y
eVZhbHVlOjppc0xlZ2FsT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM01lbW9yeVZh
bHVlLmg6CisgICAgICAgICogYjMvQjNNZW1vcnlWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6QjM6Ok1lbW9yeVZhbHVlOjppc0xlZ2FsT2Zmc2V0SW1wbCk6CisgICAgICAgIChKU0M6OkIz
OjpNZW1vcnlWYWx1ZTo6aXNMZWdhbE9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNN
b3ZlQ29uc3RhbnRzLmNwcDoKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlND
OjpCMzo6dGVzdExvYWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRPZmZzZXRO
b3RDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TG9hZE9mZnNldFVzaW5nQWRkKToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkT2Zmc2V0VXNpbmdBZGRJbnRlcmZlcmVuY2UpOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRPZmZzZXRVc2luZ0FkZE5vdENvbnN0YW50KToKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RJbnRlcnBy
ZXRlcik6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmZpeHVwUG9pbnRlclBsdXNPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjplbWl0Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcik6
CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmVtaXRMb2FkT3ApOgorICAgICAg
ICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjplbWl0U3RvcmVPcCk6CisKIDIwMTctMDQtMTMg
IEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5
OiBtYW5hZ2UgbWVtb3J5IGJldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQ29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb21tb24uaAppbmRl
eCA0YTk0ZGE3Li45ZDE4MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb21tb24uaApAQCAt
MTAyLDYgKzEwMiwxMiBAQCBpbmxpbmUgYm9vbCBpc1JlcHJlc2VudGFibGVBcyhpbnQ2NF90IHZh
bHVlKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRUeXBlPgoraW5saW5lIGJvb2wgaXNS
ZXByZXNlbnRhYmxlQXMoc2l6ZV90IHZhbHVlKQoreworICAgIHJldHVybiBpc1JlcHJlc2VudGFi
bGVBc0ltcGw8UmVzdWx0VHlwZSwgc2l6ZV90LCBzaXplX3Q+KHZhbHVlKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgUmVzdWx0VHlwZT4KIGlubGluZSBib29sIGlzUmVwcmVzZW50YWJsZUFzKGRv
dWJsZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gaXNSZXByZXNlbnRhYmxlQXNJbXBsPFJlc3VsdFR5
cGUsIGRvdWJsZSwgaW50NjRfdD4odmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TWVtb3J5VmFsdWUuY3BwCmluZGV4IDUzMDFkNDEuLjVjMzYzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKQEAgLTM4LDkgKzM4LDkgQEAgTWVtb3J5VmFs
dWU6On5NZW1vcnlWYWx1ZSgpCiB7CiB9CiAKLWJvb2wgTWVtb3J5VmFsdWU6OmlzTGVnYWxPZmZz
ZXQoaW50NjRfdCBvZmZzZXQpIGNvbnN0Citib29sIE1lbW9yeVZhbHVlOjppc0xlZ2FsT2Zmc2V0
SW1wbChpbnQ2NF90IG9mZnNldCkgY29uc3QKIHsKLSAgICByZXR1cm4gQjM6OmlzUmVwcmVzZW50
YWJsZUFzPGludDMyX3Q+KG9mZnNldCkgJiYgaXNMZWdhbE9mZnNldChzdGF0aWNfY2FzdDxpbnQz
Ml90PihvZmZzZXQpKTsKKyAgICByZXR1cm4gQjM6OmlzUmVwcmVzZW50YWJsZUFzPE9mZnNldFR5
cGU+KG9mZnNldCkgJiYgaXNMZWdhbE9mZnNldChzdGF0aWNfY2FzdDxPZmZzZXRUeXBlPihvZmZz
ZXQpKTsKIH0KIAogVHlwZSBNZW1vcnlWYWx1ZTo6YWNjZXNzVHlwZSgpIGNvbnN0CkBAIC04MCw3
ICs4MCw3IEBAIFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKIAogLy8gVXNl
IHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4Uywgb3IgYW55IG9mIHRo
ZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAogLy8gZGVzY3JpYmVzIHRoZSByZXR1cm5l
ZCB0eXBlKS4KLU1lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwg
T3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2Ug
cmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQorICAgIE1lbW9yeVZhbHVlOjpNZW1vcnlWYWx1
ZShNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWVMb2FkLCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3Jp
Z2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIE1lbW9yeVZhbHVlOjpPZmZzZXRUeXBlIG9mZnNl
dCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSkKICAgICA6IFZhbHVlKENo
ZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdpbiwgcG9pbnRlcikKICAgICAsIG1fb2Zmc2V0
KG9mZnNldCkKICAgICAsIG1fcmFuZ2UocmFuZ2UpCkBAIC0xMDgsNyArMTA4LDcgQEAgTWVtb3J5
VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBW
YWx1ZSogcG9pbnRlciwgaW4KIH0KIAogLy8gVXNlIHRoaXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUg
dGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCi1NZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2lu
ZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhl
YXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCitNZW1vcnlWYWx1ZTo6TWVtb3J5
VmFsdWUoTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlTG9hZEltcGxpZWQsIEtpbmQga2luZCwgT3Jp
Z2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIE1lbW9yeVZhbHVlOjpPZmZzZXRUeXBlIG9mZnNl
dCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSkKICAgICA6IE1lbW9yeVZh
bHVlKGtpbmQsIEludDMyLCBvcmlnaW4sIHBvaW50ZXIsIG9mZnNldCwgcmFuZ2UsIGZlbmNlUmFu
Z2UpCiB7CiAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKQEAgLTEyNSw3ICsxMjUsNyBAQCBN
ZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSog
cG9pbnRlciwgaW50MzJfdCBvZmZzZQogfQogCiAvLyBVc2UgdGhpcyBmb3JtIGZvciBzdG9yZXMu
Ci1NZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1
ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdl
LCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSkKK01lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShNZW1vcnlW
YWx1ZTo6TWVtb3J5VmFsdWVTdG9yZSwgS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSog
dmFsdWUsIFZhbHVlKiBwb2ludGVyLCBNZW1vcnlWYWx1ZTo6T2Zmc2V0VHlwZSBvZmZzZXQsIEhl
YXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCiAgICAgOiBWYWx1ZShDaGVja2Vk
T3Bjb2RlLCBraW5kLCBWb2lkLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQogICAgICwgbV9vZmZz
ZXQob2Zmc2V0KQogICAgICwgbV9yYW5nZShyYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNNZW1vcnlWYWx1ZS5oCmluZGV4IGNlYzAzODAuLjFlZDg5NjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkIz
QmFuay5oIgogI2luY2x1ZGUgIkIzSGVhcFJhbmdlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZS5oIgor
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsK
IApAQCAtNDMsMTMgKzQ0LDI4IEBAIHB1YmxpYzoKIAogICAgIH5NZW1vcnlWYWx1ZSgpOwogCi0g
ICAgaW50MzJfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQotICAgIHZvaWQg
c2V0T2Zmc2V0KGludDMyX3Qgb2Zmc2V0KSB7IG1fb2Zmc2V0ID0gb2Zmc2V0OyB9Ci0gICAgCisg
ICAgLy8gQjMgcHVycG9zZWZ1bGx5IG9ubHkgcmVwcmVzZW50cyBzaWduZWQgMzItYml0IG9mZnNl
dHMgYmVjYXVzZSB0aGF0J3Mgd2hhdAorICAgIC8vIHg4NiBjYW4gZW5jb2RlLCBhbmQgQVJNNjQg
Y2Fubm90IGVuY29kZSBhbnl0aGluZyBiaWdnZXIuIFdlIHVzZSB0ZW1wbGF0ZQorICAgIC8vIG1h
Z2ljIGJlbG93IHRvIG9ubHkgYWxsb3cgc2V0dGluZyBvZmZzZXRzIHdoaWNoIGRvIG5vdCBleGNl
ZWQgc2lnbmVkCisgICAgLy8gMzItYml0IGludGVnZXJzLiBJdCBpcyB1cCB0byBjYWxsZXJzIHRv
IGxlZ2FsaXplIG90aGVyIG9mZnNldHMsIGFzIHRoZXkKKyAgICAvLyBhbHJlYWR5IG11c3Qgd2hl
biAhaXNMZWdhbE9mZnNldChvZmZzZXQpLgorICAgIHR5cGVkZWYgaW50MzJfdCBPZmZzZXRUeXBl
OworCisgICAgT2Zmc2V0VHlwZSBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwKKyAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPEludD46OnZhbHVlPjo6dHlwZSwKKyAgICAg
ICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NpZ25lZDxJbnQ+
Ojp2YWx1ZT46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c2l6ZW9mKEludCkgPD0gc2l6ZW9mKE9mZnNldFR5cGUpPjo6dHlwZQorICAgID4KKyAgICB2
b2lkIHNldE9mZnNldChJbnQgb2Zmc2V0KSB7IG1fb2Zmc2V0ID0gb2Zmc2V0OyB9CisKICAgICAv
LyBZb3UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB1c2luZyBsZWdhbCBvZmZzZXRzIHVubGVz
cyB5b3UndmUgZW50ZXJlZCBxdWlya3MgbW9kZS4KLSAgICBib29sIGlzTGVnYWxPZmZzZXQoaW50
MzJfdCBvZmZzZXQpIGNvbnN0OwotICAgIGJvb2wgaXNMZWdhbE9mZnNldChpbnQ2NF90IG9mZnNl
dCkgY29uc3Q7Ci0gICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LAorICAgICAgICB0eXBl
bmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8SW50Pjo6dmFs
dWU+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfc2lnbmVkPEludD46OnZhbHVlPjo6dHlwZQorICAgID4KKyAgICBib29sIGlzTGVnYWxP
ZmZzZXQoSW50IG9mZnNldCkgY29uc3QgeyByZXR1cm4gaXNMZWdhbE9mZnNldEltcGwob2Zmc2V0
KTsgfQorCiAgICAgLy8gQSBuZWNlc3NhcnkgY29uc2VxdWVuY2Ugb2YgTWVtb3J5VmFsdWUgaGF2
aW5nIGFuIG9mZnNldCBpcyB0aGF0IGl0IHBhcnRpY2lwYXRlcyBpbiBpbnN0cnVjdGlvbgogICAg
IC8vIHNlbGVjdGlvbi4gVGhpcyB0ZWxscyB5b3UgaWYgdGhpcyB3aWxsIGdldCBsb3dlcmVkIHRv
IHNvbWV0aGluZyB0aGF0IHJlcXVpcmVzIGFuIG9mZnNldGxlc3MKICAgICAvLyBhZGRyZXNzLgpA
QCAtODQsOCArMTAwLDEzIEBAIHByb3RlY3RlZDoKIAogICAgIFZhbHVlKiBjbG9uZUltcGwoKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAg
ICBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlVGFnLCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3Jp
Z2luIG9yaWdpbiwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZl
bmNlUmFuZ2UsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SW50LAorICAgICAgICB0eXBlbmFtZS4uLiBBcmd1bWVudHMsCisgICAgICAgIHR5cGVuYW1lID0g
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxJbnQ+Ojp2YWx1ZT46OnR5
cGUsCisgICAgICAgIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19z
aWduZWQ8SW50Pjo6dmFsdWU+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHNpemVvZihJbnQpIDw9IHNpemVvZihPZmZzZXRUeXBlKT46OnR5cGUKKyAg
ICA+CisgICAgTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgS2luZCBraW5kLCBUeXBlIHR5
cGUsIE9yaWdpbiBvcmlnaW4sIEludCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdl
IGZlbmNlUmFuZ2UsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCiAgICAgICAgIDogVmFsdWUoQ2hl
Y2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBhcmd1bWVudHMuLi4pCiAgICAgICAgICwg
bV9vZmZzZXQob2Zmc2V0KQogICAgICAgICAsIG1fcmFuZ2UocmFuZ2UpCkBAIC05NSwxOCArMTE2
LDY2IEBAIHByb3RlY3RlZDoKICAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFByb2Nl
ZHVyZTsKLSAgICAKKworICAgIGJvb2wgaXNMZWdhbE9mZnNldEltcGwoaW50MzJfdCBvZmZzZXQp
IGNvbnN0OworICAgIGJvb2wgaXNMZWdhbE9mZnNldEltcGwoaW50NjRfdCBvZmZzZXQpIGNvbnN0
OworCisgICAgZW51bSBNZW1vcnlWYWx1ZUxvYWQgeyBNZW1vcnlWYWx1ZUxvYWRUYWcgfTsKKyAg
ICBlbnVtIE1lbW9yeVZhbHVlTG9hZEltcGxpZWQgeyBNZW1vcnlWYWx1ZUxvYWRJbXBsaWVkVGFn
IH07CisgICAgZW51bSBNZW1vcnlWYWx1ZVN0b3JlIHsgTWVtb3J5VmFsdWVTdG9yZVRhZyB9Owor
CiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4Uywg
b3IgYW55IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAogICAgIC8vIGRlc2Ny
aWJlcyB0aGUgcmV0dXJuZWQgdHlwZSkuCi0gICAgTWVtb3J5VmFsdWUoS2luZCwgVHlwZSwgT3Jp
Z2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2Ug
PSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKTsK
KyAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFs
dWUqIHBvaW50ZXIpCisgICAgICAgIDogTWVtb3J5VmFsdWUoTWVtb3J5VmFsdWVMb2FkVGFnLCBr
aW5kLCB0eXBlLCBvcmlnaW4sIHBvaW50ZXIsIDAsIEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5n
ZSgpKQorICAgIHsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LAorICAgIHR5cGVu
YW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxJbnQ+Ojp2YWx1
ZT46OnR5cGUsCisgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3NpZ25lZDxJbnQ+Ojp2YWx1ZT46OnR5cGUsCisgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzaXplb2YoSW50KSA8PSBzaXplb2YoT2Zmc2V0VHlwZSk+Ojp0eXBlCisgICAg
PgorICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBW
YWx1ZSogcG9pbnRlciwgSW50IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0
b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSkKKyAgICAgICAgOiBNZW1v
cnlWYWx1ZShNZW1vcnlWYWx1ZUxvYWRUYWcsIGtpbmQsIHR5cGUsIG9yaWdpbiwgcG9pbnRlciwg
b2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5nZSkKKyAgICB7CisgICAgfQogCiAgICAgLy8gVXNlIHRo
aXMgZm9ybSBmb3IgbG9hZHMgd2hlcmUgdGhlIHJldHVybiB0eXBlIGlzIGltcGxpZWQuCi0gICAg
TWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQg
PSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VS
YW5nZSA9IEhlYXBSYW5nZSgpKTsKKyAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBv
cmlnaW4sIFZhbHVlKiBwb2ludGVyKQorICAgICAgICA6IE1lbW9yeVZhbHVlKE1lbW9yeVZhbHVl
TG9hZEltcGxpZWRUYWcsIGtpbmQsIG9yaWdpbiwgcG9pbnRlciwgMCwgSGVhcFJhbmdlOjp0b3Ao
KSwgSGVhcFJhbmdlKCkpCisgICAgeworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQs
CisgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFs
PEludD46OnZhbHVlPjo6dHlwZSwKKyAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfc2lnbmVkPEludD46OnZhbHVlPjo6dHlwZSwKKyAgICB0eXBlbmFtZSA9IHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHNpemVvZihJbnQpIDw9IHNpemVvZihPZmZzZXRUeXBlKT46
OnR5cGUKKyAgICA+CisgICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBW
YWx1ZSogcG9pbnRlciwgSW50IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0
b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSkKKyAgICAgICAgOiBNZW1v
cnlWYWx1ZShNZW1vcnlWYWx1ZUxvYWRJbXBsaWVkVGFnLCBraW5kLCBvcmlnaW4sIHBvaW50ZXIs
IG9mZnNldCwgcmFuZ2UsIGZlbmNlUmFuZ2UpCisgICAgeworICAgIH0KIAogICAgIC8vIFVzZSB0
aGlzIGZvcm0gZm9yIHN0b3Jlcy4KLSAgICBNZW1vcnlWYWx1ZShLaW5kLCBPcmlnaW4sIFZhbHVl
KiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJh
bmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2Uo
KSk7Ci0gICAgCi0gICAgaW50MzJfdCBtX29mZnNldCB7IDAgfTsKKyAgICBNZW1vcnlWYWx1ZShL
aW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIpCisg
ICAgICAgIDogTWVtb3J5VmFsdWUoTWVtb3J5VmFsdWVTdG9yZVRhZywga2luZCwgb3JpZ2luLCB2
YWx1ZSwgcG9pbnRlciwgMCwgSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlKCkpCisgICAgewor
ICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsCisgICAgdHlwZW5hbWUgPSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPEludD46OnZhbHVlPjo6dHlwZSwKKyAg
ICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2lnbmVkPEludD46
OnZhbHVlPjo6dHlwZSwKKyAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHNp
emVvZihJbnQpIDw9IHNpemVvZihPZmZzZXRUeXBlKT46OnR5cGUKKyAgICA+CisgICAgTWVtb3J5
VmFsdWUoS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2lu
dGVyLCBJbnQgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFw
UmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKQorICAgICAgICA6IE1lbW9yeVZhbHVlKE1l
bW9yeVZhbHVlU3RvcmVUYWcsIGtpbmQsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIsIG9mZnNldCwg
cmFuZ2UsIGZlbmNlUmFuZ2UpCisgICAgeworICAgIH0KKworICAgIC8vIFRoZSBhYm92ZSB0ZW1w
bGF0ZXMgZm9yd2FyZCB0byB0aGVzZSBpbXBsZW1lbnRhdGlvbnMuCisgICAgTWVtb3J5VmFsdWUo
TWVtb3J5VmFsdWVMb2FkLCBLaW5kLCBUeXBlLCBPcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBPZmZz
ZXRUeXBlIG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhl
YXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlKCkpOworICAgIE1lbW9yeVZhbHVlKE1lbW9y
eVZhbHVlTG9hZEltcGxpZWQsIEtpbmQsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIE9mZnNldFR5
cGUgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJh
bmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSk7CisgICAgTWVtb3J5VmFsdWUoTWVtb3J5VmFs
dWVTdG9yZSwgS2luZCwgT3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBPZmZz
ZXRUeXBlIG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhl
YXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlKCkpOworCisgICAgT2Zmc2V0VHlwZSBtX29m
ZnNldCB7IDAgfTsKICAgICBIZWFwUmFuZ2UgbV9yYW5nZSB7IEhlYXBSYW5nZTo6dG9wKCkgfTsK
ICAgICBIZWFwUmFuZ2UgbV9mZW5jZVJhbmdlIHsgSGVhcFJhbmdlKCkgfTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZUlubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oCmluZGV4IGE0NzIz
MmMuLjA2ZDdhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9y
eVZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZh
bHVlSW5saW5lcy5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgewogCi1pbmxpbmUgYm9vbCBNZW1vcnlWYWx1ZTo6aXNMZWdhbE9mZnNldChpbnQzMl90
IG9mZnNldCkgY29uc3QKK2lubGluZSBib29sIE1lbW9yeVZhbHVlOjppc0xlZ2FsT2Zmc2V0SW1w
bChpbnQzMl90IG9mZnNldCkgY29uc3QKIHsKICAgICAvLyBOT1RFOiBUaGlzIGlzIGlubGluZSBi
ZWNhdXNlIGl0IGNvbnN0YW50LWZvbGRzIHRvIHRydWUgb24geDg2IQogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNNb3ZlQ29uc3RhbnRzLmNwcAppbmRleCBhMzJjNThmLi5lNWI0
MjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNb3ZlQ29uc3RhbnRz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNb3ZlQ29uc3RhbnRzLmNwcApA
QCAtMjA5LDcgKzIwOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChiZXN0UG9pbnRlcikgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1lbW9yeVZhbHVlLT5sYXN0Q2hpbGQoKSA9IGJlc3RQb2ludGVyOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeVZhbHVlLT5zZXRPZmZzZXQoZGVzaXJlZE9m
ZnNldChiZXN0UG9pbnRlcikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeVZh
bHVlLT5zZXRPZmZzZXQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oZGVzaXJlZE9mZnNldChiZXN0UG9p
bnRlcikpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0zMDgsMTIgKzMwOCwxNiBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIGlmIChvZmZMaW1pdHMuY29udGFpbnModmFsdWUpKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAorICAgICAgICAgICAgICAgIGF1dG8gb2Zmc2V0ID0g
c2l6ZW9mKGludDY0X3QpICogbV9jb25zdFRhYmxlLmdldChrZXkpOworICAgICAgICAgICAgICAg
IGlmICghaXNSZXByZXNlbnRhYmxlQXM8aW50MzJfdD4ob2Zmc2V0KSkKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisKICAgICAgICAgICAgICAgICBWYWx1ZSogdGFibGVCYXNlID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQoCiAgICAgICAgICAgICAgICAgICAgIHZhbHVl
SW5kZXgsIHZhbHVlLT5vcmlnaW4oKSwgcG9pbnRlclR5cGUoKSwKICAgICAgICAgICAgICAgICAg
ICAgYml0d2lzZV9jYXN0PGludHB0cl90PihtX2RhdGFTZWN0aW9uKSk7CiAgICAgICAgICAgICAg
ICAgVmFsdWUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxNZW1vcnlWYWx1ZT4oCiAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlSW5kZXgsIExvYWQsIHZhbHVlLT50eXBlKCksIHZhbHVl
LT5vcmlnaW4oKSwgdGFibGVCYXNlLAotICAgICAgICAgICAgICAgICAgICBzaXplb2YoaW50NjRf
dCkgKiBtX2NvbnN0VGFibGUuZ2V0KGtleSkpOworICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxpbnQzMl90PihvZmZzZXQpKTsKICAgICAgICAgICAgICAgICB2YWx1ZS0+cmVwbGFjZVdp
dGhJZGVudGl0eShyZXN1bHQpOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjMuY3BwCmluZGV4IDgwZTc1NGMuLjJhNDkxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjMuY3BwCkBAIC02NDY4LDcgKzY0NjgsNyBAQCB2b2lkIHRlc3RMb2FkT2Zmc2V0KCkKICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKICAgICAgICAgICAgIHByb2MsIEFkZCwgT3Jp
Z2luKCksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExv
YWQsIEludDMyLCBPcmlnaW4oKSwgYXJyYXlQdHIsIDApLAotICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFycmF5UHRy
LCBzaXplb2YoaW50KSkpKTsKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhcnJheVB0ciwgc3RhdGljX2Nhc3Q8aW50
MzJfdD4oc2l6ZW9mKGludCkpKSkpOwogCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHBy
b2MpID09IGFycmF5WzBdICsgYXJyYXlbMV0pOwogfQpAQCAtNjQ4NCw3ICs2NDg0LDcgQEAgdm9p
ZCB0ZXN0TG9hZE9mZnNldE5vdENvbnN0YW50KCkKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCiAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYXJy
YXlQdHIsIDApLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFycmF5UHRyLCBzaXplb2YoaW50KSkpKTsKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9y
aWdpbigpLCBhcnJheVB0ciwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludCkpKSkpOwog
CiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsICZhcnJheVswXSkgPT0gYXJyYXlb
MF0gKyBhcnJheVsxXSk7CiB9CkBAIC02NTA4LDcgKzY1MDgsNyBAQCB2b2lkIHRlc3RMb2FkT2Zm
c2V0VXNpbmdBZGQoKQogICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4o
KSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICAgICAg
ICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBhcnJheVB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzaXplb2Yo
aW50KSkpKSkpOworICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihpbnQpKSkp
KSkpOwogICAgIAogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSBhcnJheVsw
XSArIGFycmF5WzFdKTsKIH0KQEAgLTY1MzEsMTEgKzY1MzEsMTEgQEAgdm9pZCB0ZXN0TG9hZE9m
ZnNldFVzaW5nQWRkSW50ZXJmZXJlbmNlKCkKICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9y
aWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICAgICAgcHJv
YywgQWRkLCBPcmlnaW4oKSwgYXJyYXlQdHIsCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHNpemVvZihpbnQpKSkpOworICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzdGF0aWNf
Y2FzdDxpbnQzMl90PihzaXplb2YoaW50KSkpKSk7CiAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKICAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLCB0aGVOdW1iZXJPZlRoZUJl
YXN0LCBvdGhlckFycmF5UHRyLCAwKTsKICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAotICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHRoZU51bWJlck9mVGhlQmVhc3QsIG90
aGVyQXJyYXlQdHIsIHNpemVvZihpbnQpKTsKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigp
LCB0aGVOdW1iZXJPZlRoZUJlYXN0LCBvdGhlckFycmF5UHRyLCBzdGF0aWNfY2FzdDxpbnQzMl90
PihzaXplb2YoaW50KSkpOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKQEAgLTY1NjUsNyArNjU2NSw3IEBAIHZvaWQgdGVzdExvYWRPZmZzZXRVc2luZ0FkZE5vdENv
bnN0YW50KCkKICAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCiAg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKICAgICAgICAgICAgICAgICAg
ICAgcHJvYywgQWRkLCBPcmlnaW4oKSwgYXJyYXlQdHIsCi0gICAgICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgc2l6ZW9mKGludCkp
KSkpKTsKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2YoaW50KSkpKSkpKTsK
ICAgICAKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgJmFycmF5WzBdKSA9PSBh
cnJheVswXSArIGFycmF5WzFdKTsKIH0KQEAgLTY3NjAsNyArNjc2MCw3IEBAIHZvaWQgdGVzdExv
YWQoQjM6Ok9wY29kZSBvcGNvZGUsIElucHV0VHlwZSB2YWx1ZSkKICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCB0
eXBlLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAg
ICAgICAgICAgc2l6ZW9mKElucHV0VHlwZSkpKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxpbnQzMl90PihzaXplb2YoSW5wdXRUeXBlKSkpKTsKIAogICAgICAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPENUeXBlPihwcm9jLCAmdmFsdWUgLSAxKSwgbW9kZWxMb2FkPENU
eXBlPih2YWx1ZSkpKTsKICAgICB9CkBAIC0xMjkwMiw3ICsxMjkwMiw3IEBAIHZvaWQgdGVzdElu
dGVycHJldGVyKCkKICAgICAgICAgICAgIGFkZFRvRGF0YVBvaW50ZXItPmFwcGVuZE5ldzxWYWx1
ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgTXVsLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAg
ICBhZGRUb0RhdGFQb2ludGVyLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAg
ICAgICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgY29kZVBvaW50ZXJW
YWx1ZSwgc2l6ZW9mKGludHB0cl90KSksCisgICAgICAgICAgICAgICAgICAgIHByb2MsIExvYWQs
IHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBjb2RlUG9pbnRlclZhbHVlLCBzdGF0aWNfY2FzdDxp
bnQzMl90PihzaXplb2YoaW50cHRyX3QpKSksCiAgICAgICAgICAgICAgICAgYWRkVG9EYXRhUG9p
bnRlci0+YXBwZW5kSW50Q29uc3RhbnQoCiAgICAgICAgICAgICAgICAgICAgIHByb2MsIE9yaWdp
bigpLCBwb2ludGVyVHlwZSgpLCBzaXplb2YoaW50cHRyX3QpKSkpKTsKICAgICBhZGRUb0RhdGFQ
b2ludGVyLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4oCkBAIC0xMjkzMSw3ICsxMjkzMSw3IEBA
IHZvaWQgdGVzdEludGVycHJldGVyKCkKICAgICAgICAgICAgIGFkZFRvQ29kZVBvaW50ZXJUYWtl
bi0+YXBwZW5kTmV3PFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBNdWwsIE9yaWdpbigp
LAogICAgICAgICAgICAgICAgIGFkZFRvQ29kZVBvaW50ZXJUYWtlbi0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwg
T3JpZ2luKCksIGNvZGVQb2ludGVyVmFsdWUsIHNpemVvZihpbnRwdHJfdCkpLAorICAgICAgICAg
ICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgY29kZVBvaW50
ZXJWYWx1ZSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludHB0cl90KSkpLAogICAgICAg
ICAgICAgICAgIGFkZFRvQ29kZVBvaW50ZXJUYWtlbi0+YXBwZW5kSW50Q29uc3RhbnQoCiAgICAg
ICAgICAgICAgICAgICAgIHByb2MsIE9yaWdpbigpLCBwb2ludGVyVHlwZSgpLCBzaXplb2YoaW50
cHRyX3QpKSkpKTsKICAgICBhZGRUb0NvZGVQb2ludGVyVGFrZW4tPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJsb2NrKGRpc3BhdGNoKSk7CkBA
IC0xMjk1NCw3ICsxMjk1NCw3IEBAIHZvaWQgdGVzdEludGVycHJldGVyKCkKICAgICAgICAgICAg
IGFkZFRvRGF0YS0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9j
LCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgZGF0YVBvaW50ZXJWYWx1ZSksCiAgICAg
ICAgICAgICBhZGRUb0RhdGEtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICAg
ICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGNvZGVQb2ludGVyVmFsdWUs
IHNpemVvZihpbnRwdHJfdCkpKSwKKyAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2ludGVy
VHlwZSgpLCBPcmlnaW4oKSwgY29kZVBvaW50ZXJWYWx1ZSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4o
c2l6ZW9mKGludHB0cl90KSkpKSwKICAgICAgICAgZGF0YVBvaW50ZXJWYWx1ZSk7CiAgICAgYWRk
VG9EYXRhLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4oCiAgICAgICAgIHByb2MsIFNldCwgT3Jp
Z2luKCksIGNvZGVQb2ludGVyLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IGM4M2QzNmUuLjYwMDM1MzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTU5LDYgKzU5
LDcgQEAKICNpbmNsdWRlICJXYXNtT3Bjb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiV2FzbVRodW5r
cy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KIAogdm9pZCBkdW1wUHJvY2VkdXJlKHZvaWQqIHB0cikKIHsKQEAgLTIzNiw3ICsyMzcs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBlbWl0Q2hlY2tzRm9yTW9kT3JEaXYoQjM6Ok9wY29k
ZSwgRXhwcmVzc2lvblR5cGUgbGVmdCwgRXhwcmVzc2lvblR5cGUgcmlnaHQpOwogCi0gICAgdm9p
ZCBmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0KEV4cHJlc3Npb25UeXBlJiwgdWludDMyX3QmKTsKKyAg
ICBpbnQzMl90IFdBUk5fVU5VU0VEX1JFVFVSTiBmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0KEV4cHJl
c3Npb25UeXBlJiwgdWludDMyX3QpOwogCiAgICAgVmFsdWUqIG1hdGVyaWFsaXplV2FzbUNvbnRl
eHQoUHJvY2VkdXJlJiwgQmFzaWNCbG9jayopOwogICAgIHZvaWQgcmVzdG9yZVdhc21Db250ZXh0
KFByb2NlZHVyZSYsIEJhc2ljQmxvY2sqLCBWYWx1ZSopOwpAQCAtMjYwLDEyICsyNjEsMTMgQEAg
cHJpdmF0ZToKIH07CiAKIC8vIE1lbW9yeSBhY2Nlc3NlcyBpbiBXZWJBc3NlbWJseSBoYXZlIHVu
c2lnbmVkIDMyLWJpdCBvZmZzZXRzLCB3aGVyZWFzIHRoZXkgaGF2ZSBzaWduZWQgMzItYml0IG9m
ZnNldHMgaW4gQjMuCi12b2lkIEIzSVJHZW5lcmF0b3I6OmZpeHVwUG9pbnRlclBsdXNPZmZzZXQo
RXhwcmVzc2lvblR5cGUmIHB0ciwgdWludDMyX3QmIG9mZnNldCkKK2ludDMyX3QgQjNJUkdlbmVy
YXRvcjo6Zml4dXBQb2ludGVyUGx1c09mZnNldChFeHByZXNzaW9uVHlwZSYgcHRyLCB1aW50MzJf
dCBvZmZzZXQpCiB7CiAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpID4gc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkg
ewogICAgICAgICBwdHIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2Ms
IEFkZCwgb3JpZ2luKCksIHB0ciwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFs
dWU+KG1fcHJvYywgb3JpZ2luKCksIG9mZnNldCkpOwotICAgICAgICBvZmZzZXQgPSAwOworICAg
ICAgICByZXR1cm4gMDsKICAgICB9CisgICAgcmV0dXJuIG9mZnNldDsKIH0KIAogVmFsdWUqIEIz
SVJHZW5lcmF0b3I6Om1hdGVyaWFsaXplV2FzbUNvbnRleHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNp
Y0Jsb2NrKiBibG9jaykKQEAgLTUwNiwxMCArNTA4LDEwIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6
YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCkKIAogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBWYWx1ZSogbWVtb3J5T2JqZWN0ID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2lu
dGVyVHlwZSgpLCBvcmlnaW4oKSwgbV9pbnN0YW5jZVZhbHVlLCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U6Om9mZnNldE9mTWVtb3J5KCkpOworICAgIFZhbHVlKiBtZW1vcnlPYmplY3QgPSBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBl
KCksIG9yaWdpbigpLCBtX2luc3RhbmNlVmFsdWUsIHNhZmVDYXN0PGludDMyX3Q+KEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSkpOwogCiAgICAgc3RhdGljX2Fzc2VydChz
aXplb2YoZGVjbHR5cGUoc3RhdGljX2Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4obnVsbHB0
ciktPm1lbW9yeSgpLT5tZW1vcnkoKS5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAiY29k
ZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7Ci0gICAgVmFsdWUqIHNpemUgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDY0LCBvcmlnaW4o
KSwgbWVtb3J5T2JqZWN0LCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpvZmZzZXRPZlNpemUoKSk7Cisg
ICAgVmFsdWUqIHNpemUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPiht
X3Byb2MsIExvYWQsIEludDY0LCBvcmlnaW4oKSwgbWVtb3J5T2JqZWN0LCBzYWZlQ2FzdDxpbnQz
Ml90PihKU1dlYkFzc2VtYmx5TWVtb3J5OjpvZmZzZXRPZlNpemUoKSkpOwogICAgIAogICAgIGNv
bnN0ZXhwciB1aW50MzJfdCBzaGlmdFZhbHVlID0gMTY7CiAgICAgc3RhdGljX2Fzc2VydChQYWdl
Q291bnQ6OnBhZ2VTaXplID09IDEgPDwgc2hpZnRWYWx1ZSwgIlRoaXMgbXVzdCBob2xkIGZvciB0
aGUgY29kZSBiZWxvdyB0byBiZSBjb3JyZWN0LiIpOwpAQCAtNTMwLDE2ICs1MzIsMTYgQEAgYXV0
byBCM0lSR2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUg
dmFsdWUpIC0+IFBhcnRpYWxSZXMKIAogYXV0byBCM0lSR2VuZXJhdG9yOjpnZXRHbG9iYWwodWlu
dDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsK
LSAgICBWYWx1ZSogZ2xvYmFsc0FycmF5ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwgbV9pbnN0YW5j
ZVZhbHVlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mR2xvYmFscygpKTsKLSAgICBy
ZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExv
YWQsIHRvQjNUeXBlKG1faW5mby5nbG9iYWxzW2luZGV4XS50eXBlKSwgb3JpZ2luKCksIGdsb2Jh
bHNBcnJheSwgaW5kZXggKiBzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICBWYWx1ZSogZ2xvYmFsc0Fy
cmF5ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2Fk
LCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwgbV9pbnN0YW5jZVZhbHVlLCBzYWZlQ2FzdDxpbnQz
Ml90PihKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mR2xvYmFscygpKSk7CisgICAgcmVz
dWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2Fk
LCB0b0IzVHlwZShtX2luZm8uZ2xvYmFsc1tpbmRleF0udHlwZSksIG9yaWdpbigpLCBnbG9iYWxz
QXJyYXksIHNhZmVDYXN0PGludDMyX3Q+KGluZGV4ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwogICAg
IHJldHVybiB7IH07CiB9CiAKIGF1dG8gQjNJUkdlbmVyYXRvcjo6c2V0R2xvYmFsKHVpbnQzMl90
IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIEFT
U0VSVCh0b0IzVHlwZShtX2luZm8uZ2xvYmFsc1tpbmRleF0udHlwZSkgPT0gdmFsdWUtPnR5cGUo
KSk7Ci0gICAgVmFsdWUqIGdsb2JhbHNBcnJheSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIG1faW5z
dGFuY2VWYWx1ZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkdsb2JhbHMoKSk7Ci0g
ICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBTdG9yZSwg
b3JpZ2luKCksIHZhbHVlLCBnbG9iYWxzQXJyYXksIGluZGV4ICogc2l6ZW9mKFJlZ2lzdGVyKSk7
CisgICAgVmFsdWUqIGdsb2JhbHNBcnJheSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIG1faW5zdGFu
Y2VWYWx1ZSwgc2FmZUNhc3Q8aW50MzJfdD4oSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRP
Zkdsb2JhbHMoKSkpOworICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KG1fcHJvYywgU3RvcmUsIG9yaWdpbigpLCB2YWx1ZSwgZ2xvYmFsc0FycmF5LCBzYWZlQ2FzdDxp
bnQzMl90PihpbmRleCAqIHNpemVvZihSZWdpc3RlcikpKTsKICAgICByZXR1cm4geyB9OwogfQog
CkBAIC01NTQsNyArNTU2LDcgQEAgaW5saW5lIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0Q2hl
Y2tBbmRQcmVwYXJlUG9pbnRlcihFeHByZXNzaW9uVHlwZSBwb2ludGVyLAogICAgICAgICBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihtX3Byb2MsIG9yaWdp
bigpLCBwb2ludGVyLCBtX21lbW9yeVNpemVHUFIsIHNpemVPZk9wZXJhdGlvbiArIG9mZnNldCAt
IDEsIG1faW5mby5tZW1vcnkubWF4aW11bSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBN
ZW1vcnlNb2RlOjpTaWduYWxpbmc6Ci0gICAgICAgIC8vIFdlJ3ZlIHZpcnR1YWxseSBtYXBwZWQg
NEdpQityZWR6b25lIGZvIHRoaXMgbWVtb3J5LiBPbmx5IHRoZSB1c2VyLWFsbG9jYXRlZCBwYWdl
cyBhcmUgYWRkcmVzc2FibGUsIGNvbnRpZ3VvdXNseSBpbiByYW5nZSBbMCwgY3VycmVudF0sIGFu
ZCBldmVyeXRoaW5nIGFib3ZlIGlzIG1hcHBlZCBQUk9UX05PTkUuIFdlIGRvbid0IG5lZWQgdG8g
cGVyZm9ybSBhbnkgZXhwbGljaXQgYm91bmRzIGNoZWNrIGluIHRoZSA0R2lCIHJhbmdlIGJlY2F1
c2UgV2ViQXNzZW1ibHkgcmVnaXN0ZXIgbWVtb3J5IGFjY2Vzc2VzIGFyZSAzMi1iaXQuIEhvd2V2
ZXIgV2ViQXNzZW1ibHkgcmVnaXN0ZXIraW1tZWRpYXRlIGFjY2Vzc2VzIHBlcmZvcm0gdGhlIGFk
ZGl0aW9uIGluIDY0LWJpdCB3aGljaCBjYW4gcHVzaCBhbiBhY2Nlc3MgYWJvdmUgdGhlIDMyLWJp
dCBsaW1pdC4gVGhlIHJlZHpvbmUgd2lsbCBjYXRjaCBtb3N0IHNtYWxsIGltbWVkaWF0ZXMsIGFu
ZCB3ZSdsbCBleHBsaWNpdGx5IGJvdW5kcyBjaGVjayBhbnkgcmVnaXN0ZXIgKyBsYXJnZSBpbW1l
ZGlhdGUgYWNjZXNzLgorICAgICAgICAvLyBXZSd2ZSB2aXJ0dWFsbHkgbWFwcGVkIDRHaUIrcmVk
em9uZSBmb3IgdGhpcyBtZW1vcnkuIE9ubHkgdGhlIHVzZXItYWxsb2NhdGVkIHBhZ2VzIGFyZSBh
ZGRyZXNzYWJsZSwgY29udGlndW91c2x5IGluIHJhbmdlIFswLCBjdXJyZW50XSwgYW5kIGV2ZXJ5
dGhpbmcgYWJvdmUgaXMgbWFwcGVkIFBST1RfTk9ORS4gV2UgZG9uJ3QgbmVlZCB0byBwZXJmb3Jt
IGFueSBleHBsaWNpdCBib3VuZHMgY2hlY2sgaW4gdGhlIDRHaUIgcmFuZ2UgYmVjYXVzZSBXZWJB
c3NlbWJseSByZWdpc3RlciBtZW1vcnkgYWNjZXNzZXMgYXJlIDMyLWJpdC4gSG93ZXZlciBXZWJB
c3NlbWJseSByZWdpc3RlcitpbW1lZGlhdGUgYWNjZXNzZXMgcGVyZm9ybSB0aGUgYWRkaXRpb24g
aW4gNjQtYml0IHdoaWNoIGNhbiBwdXNoIGFuIGFjY2VzcyBhYm92ZSB0aGUgMzItYml0IGxpbWl0
LiBUaGUgcmVkem9uZSB3aWxsIGNhdGNoIG1vc3Qgc21hbGwgaW1tZWRpYXRlcywgYW5kIHdlJ2xs
IGV4cGxpY2l0bHkgYm91bmRzIGNoZWNrIGFueSByZWdpc3RlciArIGxhcmdlIGltbWVkaWF0ZSBh
Y2Nlc3MuCiAgICAgICAgIGlmIChvZmZzZXQgPj0gTWVtb3J5OjpmYXN0TWFwcGVkUmVkem9uZUJ5
dGVzKCkpCiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFdhc21Cb3VuZHND
aGVja1ZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBwb2ludGVyLCBJbnZhbGlkR1BSUmVnLCBzaXpl
T2ZPcGVyYXRpb24gKyBvZmZzZXQgLSAxLCBtX2luZm8ubWVtb3J5Lm1heGltdW0oKSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtNTk3LDkgKzU5OSw5IEBAIGlubGluZSBCMzo6S2luZCBCM0lSR2VuZXJh
dG9yOjptZW1vcnlLaW5kKEIzOjpPcGNvZGUgbWVtb3J5T3ApCiAgICAgcmV0dXJuIG1lbW9yeU9w
OwogfQogCi1pbmxpbmUgVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmVtaXRMb2FkT3AoTG9hZE9wVHlw
ZSBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgb2Zmc2V0KQoraW5saW5lIFZh
bHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0TG9hZE9wKExvYWRPcFR5cGUgb3AsIEV4cHJlc3Npb25U
eXBlIHBvaW50ZXIsIHVpbnQzMl90IHVvZmZzZXQpCiB7Ci0gICAgZml4dXBQb2ludGVyUGx1c09m
ZnNldChwb2ludGVyLCBvZmZzZXQpOworICAgIGludDMyX3Qgb2Zmc2V0ID0gZml4dXBQb2ludGVy
UGx1c09mZnNldChwb2ludGVyLCB1b2Zmc2V0KTsKIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBj
YXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4UzogewpAQCAtNzM2LDkgKzczOCw5IEBAIGlubGluZSB1
aW50MzJfdCBzaXplT2ZTdG9yZU9wKFN0b3JlT3BUeXBlIG9wKQogfQogCiAKLWlubGluZSB2b2lk
IEIzSVJHZW5lcmF0b3I6OmVtaXRTdG9yZU9wKFN0b3JlT3BUeXBlIG9wLCBFeHByZXNzaW9uVHlw
ZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwgdWludDMyX3Qgb2Zmc2V0KQoraW5saW5l
IHZvaWQgQjNJUkdlbmVyYXRvcjo6ZW1pdFN0b3JlT3AoU3RvcmVPcFR5cGUgb3AsIEV4cHJlc3Np
b25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50MzJfdCB1b2Zmc2V0KQog
ewotICAgIGZpeHVwUG9pbnRlclBsdXNPZmZzZXQocG9pbnRlciwgb2Zmc2V0KTsKKyAgICBpbnQz
Ml90IG9mZnNldCA9IGZpeHVwUG9pbnRlclBsdXNPZmZzZXQocG9pbnRlciwgdW9mZnNldCk7CiAK
ICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBTdG9yZU9wVHlwZTo6STY0U3RvcmU4OgpAQCAt
OTM3LDggKzkzOSw4IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5j
dGlvbkluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwKIAogICAgIGlmIChtX2luZm8u
aXNJbXBvcnRlZEZ1bmN0aW9uRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbkluZGV4KSkg
ewogICAgICAgICAvLyBGSVhNRSBpbXBvcnRzIGNhbiBiZSBsaW5rZWQgaGVyZSwgaW5zdGVhZCBv
ZiBnZW5lcmF0aW5nIGEgcGF0Y2hwb2ludCwgYmVjYXVzZSBhbGwgaW1wb3J0IHN0dWJzIGFyZSBn
ZW5lcmF0ZWQgYmVmb3JlIEIzIGNvbXBpbGF0aW9uIHN0YXJ0cy4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQ2MgotICAgICAgICBWYWx1ZSogZnVuY3Rpb25JbXBv
cnQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQs
IHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBtX2luc3RhbmNlVmFsdWUsIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6b2Zmc2V0T2ZJbXBvcnRGdW5jdGlvbihmdW5jdGlvbkluZGV4KSk7Ci0gICAgICAg
IFZhbHVlKiBqc1R5cGVPZkltcG9ydCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KG1fcHJvYywgTG9hZDhaLCBvcmlnaW4oKSwgZnVuY3Rpb25JbXBvcnQsIEpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpOworICAgICAgICBWYWx1ZSogZnVuY3Rpb25JbXBvcnQgPSBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50
ZXJUeXBlKCksIG9yaWdpbigpLCBtX2luc3RhbmNlVmFsdWUsIHNhZmVDYXN0PGludDMyX3Q+KEpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZJbXBvcnRGdW5jdGlvbihmdW5jdGlvbkluZGV4
KSkpOworICAgICAgICBWYWx1ZSoganNUeXBlT2ZJbXBvcnQgPSBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQ4Wiwgb3JpZ2luKCksIGZ1bmN0aW9uSW1w
b3J0LCBzYWZlQ2FzdDxpbnQzMl90PihKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSk7CiAg
ICAgICAgIFZhbHVlKiBpc1dhc21DYWxsID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1
ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksIGpzVHlwZU9mSW1wb3J0LCBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgV2ViQXNzZW1ibHlG
dW5jdGlvblR5cGUpKTsKIAogICAgICAgICBCYXNpY0Jsb2NrKiBpc1dhc21CbG9jayA9IG1fcHJv
Yy5hZGRCbG9jaygpOwpAQCAtOTY4LDkgKzk3MCw5IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRk
Q2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwK
ICAgICAgICAgLy8gaW1wbGVtZW50IHRoZSBJQyB0byBiZSBvdmVyIFdhc206OkNvbnRleHQqLgog
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMzc1
CiAgICAgICAgIFZhbHVlKiBjb2RlQmxvY2sgPSBpc0pTQmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4obV9wcm9jLAotICAgICAgICAgICAgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCks
IG1faW5zdGFuY2VWYWx1ZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkNvZGVCbG9j
aygpKTsKKyAgICAgICAgICAgIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBtX2luc3Rh
bmNlVmFsdWUsIHNhZmVDYXN0PGludDMyX3Q+KEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0
T2ZDb2RlQmxvY2soKSkpOwogICAgICAgICBWYWx1ZSoganVtcERlc3RpbmF0aW9uID0gaXNKU0Js
b2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywKLSAgICAgICAgICAgIExvYWQsIHBv
aW50ZXJUeXBlKCksIG9yaWdpbigpLCBjb2RlQmxvY2ssIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6
Om9mZnNldE9mSW1wb3J0V2FzbVRvSlNTdHViKGZ1bmN0aW9uSW5kZXgpKTsKKyAgICAgICAgICAg
IExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBjb2RlQmxvY2ssIHNhZmVDYXN0PGludDMy
X3Q+KEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6Om9mZnNldE9mSW1wb3J0V2FzbVRvSlNTdHViKGZ1
bmN0aW9uSW5kZXgpKSk7CiAgICAgICAgIFZhbHVlKiBqc0NhbGxSZXN1bHQgPSB3YXNtQ2FsbGlu
Z0NvbnZlbnRpb24oKS5zZXR1cENhbGwobV9wcm9jLCBpc0pTQmxvY2ssIG9yaWdpbigpLCBhcmdz
LCB0b0IzVHlwZShyZXR1cm5UeXBlKSwKICAgICAgICAgICAgIFsmXSAoUGF0Y2hwb2ludFZhbHVl
KiBwYXRjaHBvaW50KSB7CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0
ZXNQaW5uZWQgPSB0cnVlOwpAQCAtMTAyNiwxMSArMTAyOCwxMSBAQCBhdXRvIEIzSVJHZW5lcmF0
b3I6OmFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4
cHJlc3NpbwogICAgIEV4cHJlc3Npb25UeXBlIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJTaXplOwog
ICAgIHsKICAgICAgICAgRXhwcmVzc2lvblR5cGUgdGFibGUgPSBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigp
LAotICAgICAgICAgICAgbV9pbnN0YW5jZVZhbHVlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9m
ZnNldE9mVGFibGUoKSk7CisgICAgICAgICAgICBtX2luc3RhbmNlVmFsdWUsIHNhZmVDYXN0PGlu
dDMyX3Q+KEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZSgpKSk7CiAgICAgICAg
IGNhbGxhYmxlRnVuY3Rpb25CdWZmZXIgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAotICAgICAgICAg
ICAgdGFibGUsIEpTV2ViQXNzZW1ibHlUYWJsZTo6b2Zmc2V0T2ZGdW5jdGlvbnMoKSk7CisgICAg
ICAgICAgICB0YWJsZSwgc2FmZUNhc3Q8aW50MzJfdD4oSlNXZWJBc3NlbWJseVRhYmxlOjpvZmZz
ZXRPZkZ1bmN0aW9ucygpKSk7CiAgICAgICAgIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXJTaXplID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQz
Miwgb3JpZ2luKCksCi0gICAgICAgICAgICB0YWJsZSwgSlNXZWJBc3NlbWJseVRhYmxlOjpvZmZz
ZXRPZlNpemUoKSk7CisgICAgICAgICAgICB0YWJsZSwgc2FmZUNhc3Q8aW50MzJfdD4oSlNXZWJB
c3NlbWJseVRhYmxlOjpvZmZzZXRPZlNpemUoKSkpOwogICAgIH0KIAogICAgIC8vIENoZWNrIHRo
ZSBpbmRleCB3ZSBhcmUgbG9va2luZyBmb3IgaXMgdmFsaWQuCkBAIC0xMDUxLDcgKzEwNTMsNyBA
QCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUmIHNp
Z25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpbwogCiAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgQ2FsbGFi
bGVGdW5jdGlvbiBpcyBpbml0aWFsaXplZC4gV2UgdHJhcCBpZiBpdCBpc24ndC4gQW4gImludmFs
aWQiIFNpZ25hdHVyZUluZGV4IGluZGljYXRlcyBpdCdzIG5vdCBpbml0aWFsaXplZC4KICAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihDYWxsYWJsZUZ1bmN0aW9uOjpzaWduYXR1cmVJbmRleCkgPT0g
c2l6ZW9mKHVpbnQzMl90KSwgIkxvYWQgY29kZWdlbiBhc3N1bWVzIGkzMiIpOwotICAgIEV4cHJl
c3Npb25UeXBlIGNhbGxlZVNpZ25hdHVyZUluZGV4ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQzMiwgb3JpZ2luKCksIGNhbGxhYmxlRnVu
Y3Rpb24sIE9CSkVDVF9PRkZTRVRPRihDYWxsYWJsZUZ1bmN0aW9uLCBzaWduYXR1cmVJbmRleCkp
OworICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZVNpZ25hdHVyZUluZGV4ID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQzMiwgb3JpZ2luKCks
IGNhbGxhYmxlRnVuY3Rpb24sIHNhZmVDYXN0PGludDMyX3Q+KE9CSkVDVF9PRkZTRVRPRihDYWxs
YWJsZUZ1bmN0aW9uLCBzaWduYXR1cmVJbmRleCkpKTsKICAgICB7CiAgICAgICAgIENoZWNrVmFs
dWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2Ms
IENoZWNrLCBvcmlnaW4oKSwKICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLApAQCAtMTA3NCw3ICsxMDc2LDcgQEAgYXV0
byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1
cmUsIFZlY3RvcjxFeHByZXNzaW8KICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lv
blR5cGUgY2FsbGVlQ29kZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIGNhbGxhYmxlRnVuY3Rpb24s
IE9CSkVDVF9PRkZTRVRPRihDYWxsYWJsZUZ1bmN0aW9uLCBjb2RlKSk7CisgICAgRXhwcmVzc2lv
blR5cGUgY2FsbGVlQ29kZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIGNhbGxhYmxlRnVuY3Rpb24s
IHNhZmVDYXN0PGludDMyX3Q+KE9CSkVDVF9PRkZTRVRPRihDYWxsYWJsZUZ1bmN0aW9uLCBjb2Rl
KSkpOwogCiAgICAgVHlwZSByZXR1cm5UeXBlID0gc2lnbmF0dXJlLnJldHVyblR5cGUoKTsKICAg
ICByZXN1bHQgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5zZXR1cENhbGwobV9wcm9jLCBtX2N1
cnJlbnRCbG9jaywgb3JpZ2luKCksIGFyZ3MsIHRvQjNUeXBlKHJldHVyblR5cGUpLAotLSAKMi4x
MC4xCgo=
</data>
<flag name="review"
          id="328391"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="328392"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307169</attachid>
            <date>2017-04-14 17:00:45 -0700</date>
            <delta_ts>2017-04-17 00:23:35 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-MemoryValue.patch</filename>
            <type>text/plain</type>
            <size>62824</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAxOGFhZWNlMjgzYzY2N2ZlYzE1YzM0OTA5NjIxY2NiM2QyODE1YjljIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDE0IEFwciAyMDE3IDAwOjE4OjA3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gTWVtb3J5
VmFsdWUKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgfCA5MSArKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNBdG9taWNWYWx1ZS5jcHAgICAgICAgICB8ICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNBdG9taWNWYWx1ZS5oICAgICAgICAgICB8IDQyICsrKysrKysrLS0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1vbi5oICAgICAgICAgICAgICAgIHwgIDYgKysKIC4uLi9i
My9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcCAgICAgICAgIHwgIDQgKy0KIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwICAgICAgICAgIHwgMTYgKyst
LQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwICAgICAgICAgfCAx
MCArLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmggICAgICAgICAg
IHwgNjkgKysrKysrKysrKysrLS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5
VmFsdWVJbmxpbmVzLmggICAgfCAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTW92
ZUNvbnN0YW50cy5jcHAgICAgICAgfCAgOCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UmVkdWNlU3RyZW5ndGguY3BwICAgICAgfCAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzU3RhY2ttYXBTcGVjaWFsLmNwcCAgICAgfCAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWUuaCAgICAgICAgICAgICAgICAgfCAxNyArKysrCiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckFyZy5jcHAgICAgICAgICAgICB8ICAyICstCiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFyZy5oICAgICAgICAgICAgICB8IDU1ICsrKysrKysrKy0tLS0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJTdGFja0FyZ3MuY3BwIHwgIDIg
Ky0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwICAgICAgICAgICAgICAgIHwg
NzQgKysrKysrKysrLS0tLS0tLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHAgICB8IDQ4ICsrKysrKy0tLS0tLQogU291cmNlL1dURi9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOSArKysKIFNvdXJjZS9XVEYvd3RmL1N0
ZExpYkV4dHJhcy5oICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrCiAyMCBmaWxlcyBjaGFu
Z2VkLCAzNTYgaW5zZXJ0aW9ucygrKSwgMTE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCmluZGV4IGFmMTVkZGIuLjhiZmE0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDk0IEBACisyMDE3LTA0LTE0ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxl
LmNvbT4KKworICAgICAgICBCMzogZG9uJ3QgYWxsb3cgdW5zaWduZWQgb2Zmc2V0cyBpbiBWYWx1
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNjky
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVtb3J5
VmFsdWUgYW5kIHNpbWlsYXIgQjMgb3Bjb2RlIGNsYXNzZXMgYWx3YXlzIGV4cGVjdHMgYSBzaWdu
ZWQKKyAgICAgICAgb2Zmc2V0LiBHaXZpbmcgaXQgYW4gb3V0LW9mLWJvdW5kcyB1bnNpZ25lZCBv
ZmZzZXQgY2F1c2VzCisgICAgICAgIGltcGxlbWVudGF0aW9uLWRlZmluZWQgYmVoYXZpb3IsIHdo
aWNoIGNhbiBjYXVzZSBiYWRuZXNzIGFzIEkganVzdAorICAgICAgICBmaXhlZCBpbiBXZWJBc3Nl
bWJseS4gIFRoaXMgcGF0Y2ggbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBjcmVhdGUgYQorICAgICAg
ICBWYWx1ZSBvcGNvZGVzIHdpdGggYW4gdW5zaWduZWQgdmFsdWUsIG9yIHdpdGggYW4gb3Zlcmx5
LWxhcmdlCisgICAgICAgIHZhbHVlLgorCisgICAgICAgICogYjMvQjNBdG9taWNWYWx1ZS5jcHA6
CisgICAgICAgIChKU0M6OkIzOjpBdG9taWNWYWx1ZTo6QXRvbWljVmFsdWUpOgorICAgICAgICAq
IGIzL0IzQXRvbWljVmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM0NvbW1vbi5oOgorICAgICAgICAo
SlNDOjpCMzo6aXNSZXByZXNlbnRhYmxlQXMpOgorICAgICAgICAqIGIzL0IzRWxpbWluYXRlQ29t
bW9uU3ViZXhwcmVzc2lvbnMuY3BwOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnNjYWxlRm9yU2hsKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZWZmZWN0aXZlQWRkcik6CisgICAgICAgIChKU0M6
OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFkZHIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dl
clRvQWlyOjp0cnlBcHBlbmRMZWEpOgorICAgICAgICAqIGIzL0IzTWVtb3J5VmFsdWUuY3BwOgor
ICAgICAgICAoSlNDOjpCMzo6TWVtb3J5VmFsdWU6OmlzTGVnYWxPZmZzZXRJbXBsKToKKyAgICAg
ICAgKEpTQzo6QjM6Ok1lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZSk6CisgICAgICAgICogYjMvQjNN
ZW1vcnlWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzTWVtb3J5VmFsdWVJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6aXNMZWdhbE9mZnNldEltcGwpOgorICAgICAgICAq
IGIzL0IzTW92ZUNvbnN0YW50cy5jcHA6CisgICAgICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5j
cHA6CisgICAgICAgICogYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6U3RhY2ttYXBTcGVjaWFsOjpyZXBGb3JBcmcpOgorICAgICAgICAqIGIzL0IzVmFsdWUuaDoK
KyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJn
OjpzdGFja0FkZHJJbXBsKToKKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmg6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6OkFyZzo6YWRkcik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6c3Rh
Y2spOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmNhbGxBcmcpOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpBcmc6OnN0YWNrQWRkcik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6
aW5kZXgpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6Om9mZnNldCk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6OkFyZzo6aXNWYWxpZEFkZHJGb3JtKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6QXJnOjppc1ZhbGlkSW5kZXhGb3JtKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjph
c1RydXN0ZWRJbW0zMik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6YXNBZGRyZXNzKToK
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjphc0Jhc2VJbmRleCk6CisgICAgICAgICogYjMv
YWlyL0Fpckxvd2VyU3RhY2tBcmdzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6bG93ZXJT
dGFja0FyZ3MpOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0
ZXN0TXVsQXJnU3RvcmUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlMzIpOgorICAgICAg
ICAoSlNDOjpCMzo6dGVzdFN0b3JlQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0
b3JlQ29uc3RhbnRQdHIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlQWRkTG9hZDMyKToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9yZUFkZExvYWRJbW0zMik6CisgICAgICAgIChKU0M6
OkIzOjp0ZXN0U3RvcmVBZGRMb2FkOCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3RvcmVBZGRM
b2FkSW1tOCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3RvcmVBZGRMb2FkMTYpOgorICAgICAg
ICAoSlNDOjpCMzo6dGVzdFN0b3JlQWRkTG9hZEltbTE2KToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RTdG9yZUFkZExvYWQ2NCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3RvcmVBZGRMb2FkSW1t
NjQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlQWRkTG9hZDMySW5kZXgpOgorICAgICAg
ICAoSlNDOjpCMzo6dGVzdFN0b3JlQWRkTG9hZEltbTMySW5kZXgpOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdFN0b3JlQWRkTG9hZDY0SW5kZXgpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3Jl
QWRkTG9hZEltbTY0SW5kZXgpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlU3ViTG9hZCk6
CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3RvcmVBZGRMb2FkSW50ZXJmZXJlbmNlKToKKyAgICAg
ICAgKEpTQzo6QjM6OnRlc3RTdG9yZUFkZEFuZExvYWQpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dFN0b3JlTmVnTG9hZDMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9yZU5lZ0xvYWRQdHIp
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRPZmZzZXQpOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdExvYWRPZmZzZXROb3RDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TG9hZE9m
ZnNldFVzaW5nQWRkKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkT2Zmc2V0VXNpbmdBZGRJ
bnRlcmZlcmVuY2UpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRPZmZzZXRVc2luZ0FkZE5v
dENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9yZUxvYWRTdGFja1Nsb3QpOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEludGVy
cHJldGVyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RUcmFwcGluZ1N0b3JlKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RUcmFwcGluZ0xvYWRBZGRTdG9yZSk6CisgICAgICAgIChKU0M6OkIzOjp0
ZXN0V2FzbUFkZHJlc3MpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdENoZWNrQW5kUHJlcGFy
ZVBvaW50ZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjplbWl0TG9hZE9w
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdFN0b3JlT3ApOgorCiAy
MDE3LTA0LTEzICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWJBc3NlbWJseTogbWFuYWdlIG1lbW9yeSBiZXR0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0F0b21pY1ZhbHVlLmNwcAppbmRleCA3MGMzNWRjLi4yMGZjZTQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFZhbHVl
KiBBdG9taWNWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKICAgICByZXR1cm4gbmV3IEF0b21pY1Zh
bHVlKCp0aGlzKTsKIH0KIAotQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3Jp
Z2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwg
aW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCitB
dG9taWNWYWx1ZTo6QXRvbWljVmFsdWUoQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlUk1XLCBLaW5k
IGtpbmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogb3BlcmFuZCwgVmFsdWUq
IHBvaW50ZXIsIE1lbW9yeVZhbHVlOjpPZmZzZXRUeXBlIG9mZnNldCwgSGVhcFJhbmdlIHJhbmdl
LCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSkKICAgICA6IE1lbW9yeVZhbHVlKENoZWNrZWRPcGNvZGUs
IGtpbmQsIG9wZXJhbmQtPnR5cGUoKSwgb3JpZ2luLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdl
LCBvcGVyYW5kLCBwb2ludGVyKQogICAgICwgbV93aWR0aCh3aWR0aCkKIHsKQEAgLTY1LDcgKzY1
LDcgQEAgQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwg
V2lkdGggd2lkdGgsIFZhbHVlKiBvcGVyYW5kLAogICAgIH0KIH0KIAotQXRvbWljVmFsdWU6OkF0
b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBl
eHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9m
ZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSkKK0F0b21pY1ZhbHVl
OjpBdG9taWNWYWx1ZShBdG9taWNWYWx1ZTo6QXRvbWljVmFsdWVDQVMsIEtpbmQga2luZCwgT3Jp
Z2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3
VmFsdWUsIFZhbHVlKiBwb2ludGVyLCBNZW1vcnlWYWx1ZTo6T2Zmc2V0VHlwZSBvZmZzZXQsIEhl
YXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCiAgICAgOiBNZW1vcnlWYWx1ZShD
aGVja2VkT3Bjb2RlLCBraW5kLCBraW5kLm9wY29kZSgpID09IEF0b21pY1dlYWtDQVMgPyBJbnQz
MiA6IGV4cGVjdGVkVmFsdWUtPnR5cGUoKSwgb3JpZ2luLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJh
bmdlLCBleHBlY3RlZFZhbHVlLCBuZXdWYWx1ZSwgcG9pbnRlcikKICAgICAsIG1fd2lkdGgod2lk
dGgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuaAppbmRleCBkNmJj
ZWYwLi5iM2RjY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9t
aWNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgK
QEAgLTUyLDE1ICs1Miw0NSBAQCBwcm90ZWN0ZWQ6CiAgICAgCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBQcm9jZWR1cmU7Ci0gICAgCi0gICAgQXRvbWljVmFsdWUoS2luZCwgT3JpZ2luLCBX
aWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAs
IEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdl
ID0gSGVhcFJhbmdlOjp0b3AoKSk7Ci0gICAgCi0gICAgQXRvbWljVmFsdWUoS2luZCwgT3JpZ2lu
LCBXaWR0aCwgVmFsdWUqIGV4cGVjdGVkVmFsdWUsIFZhbHVlKiBuZXdWYWx1ZSwgVmFsdWUqIHBv
aW50ZXIsIGludDMyX3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0
b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpKTsKLSAgICAKKwor
ICAgIGVudW0gQXRvbWljVmFsdWVSTVcgeyBBdG9taWNWYWx1ZVJNV1RhZyB9OworICAgIGVudW0g
QXRvbWljVmFsdWVDQVMgeyBBdG9taWNWYWx1ZUNBU1RhZyB9OworCisgICAgQXRvbWljVmFsdWUo
S2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBXaWR0aCB3aWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZh
bHVlKiBwb2ludGVyKQorICAgICAgICA6IEF0b21pY1ZhbHVlKGtpbmQsIG9yaWdpbiwgd2lkdGgs
IG9wZXJhbmQsIHBvaW50ZXIsIDApCisgICAgeworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBJbnQsCisgICAgICAgIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19pbnRlZ3JhbDxJbnQ+Ojp2YWx1ZT46OnR5cGUsCisgICAgICAgIHR5cGVuYW1lID0gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zaWduZWQ8SW50Pjo6dmFsdWU+Ojp0eXBlLAorICAg
ICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHNpemVvZihJbnQpIDw9IHNp
emVvZihPZmZzZXRUeXBlKT46OnR5cGUKKyAgICA+CisgICAgQXRvbWljVmFsdWUoS2luZCBraW5k
LCBPcmlnaW4gb3JpZ2luLCBXaWR0aCB3aWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVlKiBwb2lu
dGVyLCBJbnQgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFw
UmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAgIDogQXRvbWljVmFs
dWUoQXRvbWljVmFsdWVSTVdUYWcsIGtpbmQsIG9yaWdpbiwgd2lkdGgsIG9wZXJhbmQsIHBvaW50
ZXIsIG9mZnNldCwgcmFuZ2UsIGZlbmNlUmFuZ2UpCisgICAgeworICAgIH0KKworICAgIEF0b21p
Y1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBleHBl
Y3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUsIFZhbHVlKiBwb2ludGVyKQorICAgICAgICA6IEF0
b21pY1ZhbHVlKGtpbmQsIG9yaWdpbiwgd2lkdGgsIGV4cGVjdGVkVmFsdWUsIG5ld1ZhbHVlLCBw
b2ludGVyLCAwKQorICAgIHsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LAorICAg
ICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8
SW50Pjo6dmFsdWU+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfc2lnbmVkPEludD46OnZhbHVlPjo6dHlwZSwKKyAgICAgICAgdHlwZW5h
bWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzaXplb2YoSW50KSA8PSBzaXplb2YoT2Zmc2V0
VHlwZSk+Ojp0eXBlCisgICAgPgorICAgIEF0b21pY1ZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9y
aWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUs
IFZhbHVlKiBwb2ludGVyLCBJbnQgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6
OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCkpCisgICAgICAg
IDogQXRvbWljVmFsdWUoQXRvbWljVmFsdWVDQVNUYWcsIGtpbmQsIG9yaWdpbiwgd2lkdGgsIGV4
cGVjdGVkVmFsdWUsIG5ld1ZhbHVlLCBwb2ludGVyLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdl
KQorICAgIHsKKyAgICB9CisKKyAgICAvLyBUaGUgYWJvdmUgdGVtcGxhdGVzIGZvcndhcmQgdG8g
dGhlc2UgaW1wbGVtZW50YXRpb25zLgorICAgIEF0b21pY1ZhbHVlKEF0b21pY1ZhbHVlUk1XLCBL
aW5kLCBPcmlnaW4sIFdpZHRoLCBWYWx1ZSogb3BlcmFuZCwgVmFsdWUqIHBvaW50ZXIsIE9mZnNl
dFR5cGUgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFu
Z2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCkpOworICAgIEF0b21pY1ZhbHVlKEF0b21p
Y1ZhbHVlQ0FTLCBLaW5kLCBPcmlnaW4sIFdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFs
dWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgT2Zmc2V0VHlwZSBvZmZzZXQsIEhlYXBSYW5n
ZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJh
bmdlOjp0b3AoKSk7CisKICAgICBXaWR0aCBtX3dpZHRoOwogfTsKIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NvbW1vbi5oCmluZGV4IDRhOTRkYTcuLjlkMTgxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NvbW1vbi5oCkBAIC0xMDIsNiArMTAyLDEyIEBAIGlubGluZSBib29sIGlzUmVwcmVzZW50
YWJsZUFzKGludDY0X3QgdmFsdWUpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdFR5cGU+
CitpbmxpbmUgYm9vbCBpc1JlcHJlc2VudGFibGVBcyhzaXplX3QgdmFsdWUpCit7CisgICAgcmV0
dXJuIGlzUmVwcmVzZW50YWJsZUFzSW1wbDxSZXN1bHRUeXBlLCBzaXplX3QsIHNpemVfdD4odmFs
dWUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRUeXBlPgogaW5saW5lIGJvb2wgaXNS
ZXByZXNlbnRhYmxlQXMoZG91YmxlIHZhbHVlKQogewogICAgIHJldHVybiBpc1JlcHJlc2VudGFi
bGVBc0ltcGw8UmVzdWx0VHlwZSwgZG91YmxlLCBpbnQ2NF90Pih2YWx1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHByZXNzaW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVDb21tb25TdWJleHBy
ZXNzaW9ucy5jcHAKaW5kZXggYjBiZWY4ZS4uMWFlNDM1NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25z
LmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIFZhbHVlKiB2YWx1ZSA9
IG1lbW9yeS0+Y2hpbGQoMCk7CiAgICAgICAgIFZhbHVlKiBwdHIgPSBtZW1vcnktPmxhc3RDaGls
ZCgpOwogICAgICAgICBIZWFwUmFuZ2UgcmFuZ2UgPSBtZW1vcnktPnJhbmdlKCk7Ci0gICAgICAg
IGludDMyX3Qgb2Zmc2V0ID0gbWVtb3J5LT5vZmZzZXQoKTsKKyAgICAgICAgVmFsdWU6Ok9mZnNl
dFR5cGUgb2Zmc2V0ID0gbWVtb3J5LT5vZmZzZXQoKTsKIAogICAgICAgICBzd2l0Y2ggKG1lbW9y
eS0+b3Bjb2RlKCkpIHsKICAgICAgICAgY2FzZSBTdG9yZTg6CkBAIC0zMDUsNyArMzA1LDcgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIFZhbHVlKiBwdHIgPSBtZW1vcnktPmxhc3RDaGlsZCgp
OwogICAgICAgICBIZWFwUmFuZ2UgcmFuZ2UgPSBtZW1vcnktPnJhbmdlKCk7Ci0gICAgICAgIGlu
dDMyX3Qgb2Zmc2V0ID0gbWVtb3J5LT5vZmZzZXQoKTsKKyAgICAgICAgVmFsdWU6Ok9mZnNldFR5
cGUgb2Zmc2V0ID0gbWVtb3J5LT5vZmZzZXQoKTsKICAgICAgICAgVHlwZSB0eXBlID0gbWVtb3J5
LT50eXBlKCk7CiAKICAgICAgICAgLy8gRklYTUU6IEVtcG93ZXIgdGhpcyB0byBpbnNlcnQgbW9y
ZSBjYXN0cyBhbmQgc2hpZnRzLiBGb3IgZXhhbXBsZSwgYSBMb2FkOCBjb3VsZCBtYXRjaCBhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDViYTVhZmEuLjUw
NjcwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC00
MzksOCArNDM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAKLSAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBzY2FsZUZvclNobChWYWx1ZSogc2hsLCBpbnQzMl90IG9mZnNldCwgc3RkOjpvcHRpb25h
bDxXaWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJ
bnQsIHR5cGVuYW1lID0gVmFsdWU6OklzTGVnYWxPZmZzZXQ8SW50Pj4KKyAgICBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBzY2FsZUZvclNobChWYWx1ZSogc2hsLCBJbnQgb2Zmc2V0LCBzdGQ6Om9w
dGlvbmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIGlmIChz
aGwtPm9wY29kZSgpICE9IFNobCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBA
IC00NjMsNyArNDY0LDggQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgLy8gVGhpcyB0dXJu
cyB0aGUgZ2l2ZW4gb3BlcmFuZCBpbnRvIGFuIGFkZHJlc3MuCi0gICAgQXJnIGVmZmVjdGl2ZUFk
ZHIoVmFsdWUqIGFkZHJlc3MsIGludDMyX3Qgb2Zmc2V0LCBXaWR0aCB3aWR0aCkKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6OklzTGVnYWxPZmZzZXQ8SW50Pj4K
KyAgICBBcmcgZWZmZWN0aXZlQWRkcihWYWx1ZSogYWRkcmVzcywgSW50IG9mZnNldCwgV2lkdGgg
d2lkdGgpCiAgICAgewogICAgICAgICBBU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0ob2Zmc2V0
LCB3aWR0aCkpOwogICAgICAgICAKQEAgLTU1Miw3ICs1NTQsNyBAQCBwcml2YXRlOgogICAgICAg
ICBpZiAodmFsdWUtPnJlcXVpcmVzU2ltcGxlQWRkcigpKQogICAgICAgICAgICAgcmV0dXJuIEFy
Zzo6c2ltcGxlQWRkcih0bXAodmFsdWUtPmxhc3RDaGlsZCgpKSk7CiAKLSAgICAgICAgaW50MzJf
dCBvZmZzZXQgPSB2YWx1ZS0+b2Zmc2V0KCk7CisgICAgICAgIFZhbHVlOjpPZmZzZXRUeXBlIG9m
ZnNldCA9IHZhbHVlLT5vZmZzZXQoKTsKICAgICAgICAgV2lkdGggd2lkdGggPSB2YWx1ZS0+YWNj
ZXNzV2lkdGgoKTsKIAogICAgICAgICBBcmcgcmVzdWx0ID0gZWZmZWN0aXZlQWRkcih2YWx1ZS0+
bGFzdENoaWxkKCksIG9mZnNldCwgd2lkdGgpOwpAQCAtMjAyMywxMiArMjAyNSwxMiBAQCBwcml2
YXRlOgogICAgICAgICAvLyBBZGQoU2hsKEB4LCAkYyksIEB5KQogICAgICAgICAvLyBBZGQoQHgs
IFNobChAeSwgJGMpKQogICAgICAgICAvLyBBZGQoQHgsIEB5KSAob25seSBpZiBvZmZzZXQgIT0g
MCkKLSAgICAgICAgaW50MzJfdCBvZmZzZXQgPSAwOwotICAgICAgICBpZiAodmFsdWUtPmNoaWxk
KDEpLT5pc1JlcHJlc2VudGFibGVBczxpbnQzMl90PigpCisgICAgICAgIFZhbHVlOjpPZmZzZXRU
eXBlIG9mZnNldCA9IDA7CisgICAgICAgIGlmICh2YWx1ZS0+Y2hpbGQoMSktPmlzUmVwcmVzZW50
YWJsZUFzPFZhbHVlOjpPZmZzZXRUeXBlPigpCiAgICAgICAgICAgICAmJiBjYW5CZUludGVybmFs
KHZhbHVlLT5jaGlsZCgwKSkKICAgICAgICAgICAgICYmIHZhbHVlLT5jaGlsZCgwKS0+b3Bjb2Rl
KCkgPT0gQWRkKSB7CiAgICAgICAgICAgICBpbm5lckFkZCA9IHZhbHVlLT5jaGlsZCgwKTsKLSAg
ICAgICAgICAgIG9mZnNldCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlLT5jaGlsZCgxKS0+
YXNJbnQoKSk7CisgICAgICAgICAgICBvZmZzZXQgPSBzdGF0aWNfY2FzdDxWYWx1ZTo6T2Zmc2V0
VHlwZT4odmFsdWUtPmNoaWxkKDEpLT5hc0ludCgpKTsKICAgICAgICAgICAgIHZhbHVlID0gdmFs
dWUtPmNoaWxkKDApOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTWVtb3J5VmFsdWUuY3BwCmluZGV4IDUzMDFkNDEuLjEwNDNkNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKQEAgLTM4LDkgKzM4LDkgQEAgTWVt
b3J5VmFsdWU6On5NZW1vcnlWYWx1ZSgpCiB7CiB9CiAKLWJvb2wgTWVtb3J5VmFsdWU6OmlzTGVn
YWxPZmZzZXQoaW50NjRfdCBvZmZzZXQpIGNvbnN0Citib29sIE1lbW9yeVZhbHVlOjppc0xlZ2Fs
T2Zmc2V0SW1wbChpbnQ2NF90IG9mZnNldCkgY29uc3QKIHsKLSAgICByZXR1cm4gQjM6OmlzUmVw
cmVzZW50YWJsZUFzPGludDMyX3Q+KG9mZnNldCkgJiYgaXNMZWdhbE9mZnNldChzdGF0aWNfY2Fz
dDxpbnQzMl90PihvZmZzZXQpKTsKKyAgICByZXR1cm4gQjM6OmlzUmVwcmVzZW50YWJsZUFzPE9m
ZnNldFR5cGU+KG9mZnNldCkgJiYgaXNMZWdhbE9mZnNldChzdGF0aWNfY2FzdDxPZmZzZXRUeXBl
PihvZmZzZXQpKTsKIH0KIAogVHlwZSBNZW1vcnlWYWx1ZTo6YWNjZXNzVHlwZSgpIGNvbnN0CkBA
IC04MCw3ICs4MCw3IEBAIFZhbHVlKiBNZW1vcnlWYWx1ZTo6Y2xvbmVJbXBsKCkgY29uc3QKIAog
Ly8gVXNlIHRoaXMgZm9ybSBmb3IgTG9hZCAoYnV0IG5vdCBMb2FkOFosIExvYWQ4Uywgb3IgYW55
IG9mIHRoZSBMb2FkcyB0aGF0IGhhdmUgYSBzdWZmaXggdGhhdAogLy8gZGVzY3JpYmVzIHRoZSBy
ZXR1cm5lZCB0eXBlKS4KLU1lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUg
dHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFw
UmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQorTWVtb3J5VmFsdWU6Ok1lbW9yeVZh
bHVlKE1lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZUxvYWQsIEtpbmQga2luZCwgVHlwZSB0eXBlLCBP
cmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgTWVtb3J5VmFsdWU6Ok9mZnNldFR5cGUgb2Zm
c2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQogICAgIDogVmFsdWUo
Q2hlY2tlZE9wY29kZSwga2luZCwgdHlwZSwgb3JpZ2luLCBwb2ludGVyKQogICAgICwgbV9vZmZz
ZXQob2Zmc2V0KQogICAgICwgbV9yYW5nZShyYW5nZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBNZW1v
cnlWYWx1ZTo6TWVtb3J5VmFsdWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4s
IFZhbHVlKiBwb2ludGVyLCBpbgogfQogCiAvLyBVc2UgdGhpcyBmb3JtIGZvciBsb2FkcyB3aGVy
ZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1wbGllZC4KLU1lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShL
aW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCwg
SGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSkKK01lbW9yeVZhbHVlOjpNZW1v
cnlWYWx1ZShNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWVMb2FkSW1wbGllZCwgS2luZCBraW5kLCBP
cmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgTWVtb3J5VmFsdWU6Ok9mZnNldFR5cGUgb2Zm
c2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQogICAgIDogTWVtb3J5
VmFsdWUoa2luZCwgSW50MzIsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0LCByYW5nZSwgZmVuY2VS
YW5nZSkKIHsKICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewpAQCAtMTI1LDcgKzEyNSw3IEBA
IE1lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVl
KiBwb2ludGVyLCBpbnQzMl90IG9mZnNlCiB9CiAKIC8vIFVzZSB0aGlzIGZvcm0gZm9yIHN0b3Jl
cy4KLU1lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZh
bHVlKiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFu
Z2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKE1lbW9y
eVZhbHVlOjpNZW1vcnlWYWx1ZVN0b3JlLCBLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVl
KiB2YWx1ZSwgVmFsdWUqIHBvaW50ZXIsIE1lbW9yeVZhbHVlOjpPZmZzZXRUeXBlIG9mZnNldCwg
SGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSkKICAgICA6IFZhbHVlKENoZWNr
ZWRPcGNvZGUsIGtpbmQsIFZvaWQsIG9yaWdpbiwgdmFsdWUsIHBvaW50ZXIpCiAgICAgLCBtX29m
ZnNldChvZmZzZXQpCiAgICAgLCBtX3JhbmdlKHJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM01lbW9yeVZhbHVlLmgKaW5kZXggY2VjMDM4MC4uMWIwZDNkZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
QjNCYW5rLmgiCiAjaW5jbHVkZSAiQjNIZWFwUmFuZ2UuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgi
CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMg
ewogCkBAIC00MywxMyArNDQsMTcgQEAgcHVibGljOgogCiAgICAgfk1lbW9yeVZhbHVlKCk7CiAK
LSAgICBpbnQzMl90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9Ci0gICAgdm9p
ZCBzZXRPZmZzZXQoaW50MzJfdCBvZmZzZXQpIHsgbV9vZmZzZXQgPSBvZmZzZXQ7IH0KLSAgICAK
KyAgICBPZmZzZXRUeXBlIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IElzTGVnYWxPZmZzZXQ8SW50Pj4KKyAg
ICB2b2lkIHNldE9mZnNldChJbnQgb2Zmc2V0KSB7IG1fb2Zmc2V0ID0gb2Zmc2V0OyB9CisKICAg
ICAvLyBZb3UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB1c2luZyBsZWdhbCBvZmZzZXRzIHVu
bGVzcyB5b3UndmUgZW50ZXJlZCBxdWlya3MgbW9kZS4KLSAgICBib29sIGlzTGVnYWxPZmZzZXQo
aW50MzJfdCBvZmZzZXQpIGNvbnN0OwotICAgIGJvb2wgaXNMZWdhbE9mZnNldChpbnQ2NF90IG9m
ZnNldCkgY29uc3Q7Ci0gICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LAorICAgICAgICB0
eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfaW50ZWdyYWw8SW50Pjo6
dmFsdWU+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfc2lnbmVkPEludD46OnZhbHVlPjo6dHlwZQorICAgID4KKyAgICBib29sIGlzTGVn
YWxPZmZzZXQoSW50IG9mZnNldCkgY29uc3QgeyByZXR1cm4gaXNMZWdhbE9mZnNldEltcGwob2Zm
c2V0KTsgfQorCiAgICAgLy8gQSBuZWNlc3NhcnkgY29uc2VxdWVuY2Ugb2YgTWVtb3J5VmFsdWUg
aGF2aW5nIGFuIG9mZnNldCBpcyB0aGF0IGl0IHBhcnRpY2lwYXRlcyBpbiBpbnN0cnVjdGlvbgog
ICAgIC8vIHNlbGVjdGlvbi4gVGhpcyB0ZWxscyB5b3UgaWYgdGhpcyB3aWxsIGdldCBsb3dlcmVk
IHRvIHNvbWV0aGluZyB0aGF0IHJlcXVpcmVzIGFuIG9mZnNldGxlc3MKICAgICAvLyBhZGRyZXNz
LgpAQCAtODQsOCArODksOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBWYWx1ZSogY2xvbmVJbXBsKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0g
ICAgTWVtb3J5VmFsdWUoQ2hlY2tlZE9wY29kZVRhZywgS2luZCBraW5kLCBUeXBlIHR5cGUsIE9y
aWdpbiBvcmlnaW4sIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBm
ZW5jZVJhbmdlLCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEludCwgdHlwZW5hbWUgPSBJc0xlZ2FsT2Zmc2V0PEludD4sIHR5cGVuYW1lLi4uIEFyZ3VtZW50
cz4KKyAgICBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlVGFnLCBLaW5kIGtpbmQsIFR5cGUgdHlw
ZSwgT3JpZ2luIG9yaWdpbiwgSW50IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFuZ2Ug
ZmVuY2VSYW5nZSwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKICAgICAgICAgOiBWYWx1ZShDaGVj
a2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBvcmlnaW4sIGFyZ3VtZW50cy4uLikKICAgICAgICAgLCBt
X29mZnNldChvZmZzZXQpCiAgICAgICAgICwgbV9yYW5nZShyYW5nZSkKQEAgLTk1LDE4ICsxMDAs
NTQgQEAgcHJvdGVjdGVkOgogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUHJvY2Vk
dXJlOwotICAgIAorCisgICAgYm9vbCBpc0xlZ2FsT2Zmc2V0SW1wbChpbnQzMl90IG9mZnNldCkg
Y29uc3Q7CisgICAgYm9vbCBpc0xlZ2FsT2Zmc2V0SW1wbChpbnQ2NF90IG9mZnNldCkgY29uc3Q7
CisKKyAgICBlbnVtIE1lbW9yeVZhbHVlTG9hZCB7IE1lbW9yeVZhbHVlTG9hZFRhZyB9OworICAg
IGVudW0gTWVtb3J5VmFsdWVMb2FkSW1wbGllZCB7IE1lbW9yeVZhbHVlTG9hZEltcGxpZWRUYWcg
fTsKKyAgICBlbnVtIE1lbW9yeVZhbHVlU3RvcmUgeyBNZW1vcnlWYWx1ZVN0b3JlVGFnIH07CisK
ICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBv
ciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1ZmZpeCB0aGF0CiAgICAgLy8gZGVzY3Jp
YmVzIHRoZSByZXR1cm5lZCB0eXBlKS4KLSAgICBNZW1vcnlWYWx1ZShLaW5kLCBUeXBlLCBPcmln
aW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5nZSA9
IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlKCkpOwor
ICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1
ZSogcG9pbnRlcikKKyAgICAgICAgOiBNZW1vcnlWYWx1ZShNZW1vcnlWYWx1ZUxvYWRUYWcsIGtp
bmQsIHR5cGUsIG9yaWdpbiwgcG9pbnRlcikKKyAgICB7CisgICAgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEludCwgdHlwZW5hbWUgPSBJc0xlZ2FsT2Zmc2V0PEludD4+CisgICAgTWVtb3J5VmFs
dWUoS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBJ
bnQgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2Ug
ZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKQorICAgICAgICA6IE1lbW9yeVZhbHVlKE1lbW9yeVZh
bHVlTG9hZFRhZywga2luZCwgdHlwZSwgb3JpZ2luLCBwb2ludGVyLCBvZmZzZXQsIHJhbmdlLCBm
ZW5jZVJhbmdlKQorICAgIHsKKyAgICB9CiAKICAgICAvLyBVc2UgdGhpcyBmb3JtIGZvciBsb2Fk
cyB3aGVyZSB0aGUgcmV0dXJuIHR5cGUgaXMgaW1wbGllZC4KLSAgICBNZW1vcnlWYWx1ZShLaW5k
LCBPcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSBy
YW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdl
KCkpOworICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBv
aW50ZXIpCisgICAgICAgIDogTWVtb3J5VmFsdWUoTWVtb3J5VmFsdWVMb2FkSW1wbGllZFRhZywg
a2luZCwgb3JpZ2luLCBwb2ludGVyKQorICAgIHsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSW50LCB0eXBlbmFtZSA9IElzTGVnYWxPZmZzZXQ8SW50Pj4KKyAgICBNZW1vcnlWYWx1ZShL
aW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyLCBJbnQgb2Zmc2V0LCBIZWFw
UmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhl
YXBSYW5nZSgpKQorICAgICAgICA6IE1lbW9yeVZhbHVlKE1lbW9yeVZhbHVlTG9hZEltcGxpZWRU
YWcsIGtpbmQsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5nZSkKKyAg
ICB7CisgICAgfQogCiAgICAgLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVzLgotICAgIE1lbW9y
eVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJf
dCBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFu
Z2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKTsKLSAgICAKLSAgICBpbnQzMl90IG1fb2Zmc2V0
IHsgMCB9OworICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUq
IHZhbHVlLCBWYWx1ZSogcG9pbnRlcikKKyAgICAgICAgOiBNZW1vcnlWYWx1ZShNZW1vcnlWYWx1
ZVN0b3JlVGFnLCBraW5kLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyKQorICAgIHsKKyAgICB9Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IElzTGVnYWxPZmZzZXQ8SW50Pj4K
KyAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiB2YWx1ZSwg
VmFsdWUqIHBvaW50ZXIsIEludCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6
dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlKCkpCisgICAgICAgIDogTWVt
b3J5VmFsdWUoTWVtb3J5VmFsdWVTdG9yZVRhZywga2luZCwgb3JpZ2luLCB2YWx1ZSwgcG9pbnRl
ciwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5nZSkKKyAgICB7CisgICAgfQorCisgICAgLy8gVGhl
IGFib3ZlIHRlbXBsYXRlcyBmb3J3YXJkIHRvIHRoZXNlIGltcGxlbWVudGF0aW9ucy4KKyAgICBN
ZW1vcnlWYWx1ZShNZW1vcnlWYWx1ZUxvYWQsIEtpbmQsIFR5cGUsIE9yaWdpbiwgVmFsdWUqIHBv
aW50ZXIsIE9mZnNldFR5cGUgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdl
Ojp0b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSk7CisgICAgTWVtb3J5
VmFsdWUoTWVtb3J5VmFsdWVMb2FkSW1wbGllZCwgS2luZCwgT3JpZ2luLCBWYWx1ZSogcG9pbnRl
ciwgT2Zmc2V0VHlwZSBvZmZzZXQgPSAwLCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRv
cCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKTsKKyAgICBNZW1vcnlWYWx1
ZShNZW1vcnlWYWx1ZVN0b3JlLCBLaW5kLCBPcmlnaW4sIFZhbHVlKiB2YWx1ZSwgVmFsdWUqIHBv
aW50ZXIsIE9mZnNldFR5cGUgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdl
Ojp0b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSk7CisKKyAgICBPZmZz
ZXRUeXBlIG1fb2Zmc2V0IHsgMCB9OwogICAgIEhlYXBSYW5nZSBtX3JhbmdlIHsgSGVhcFJhbmdl
Ojp0b3AoKSB9OwogICAgIEhlYXBSYW5nZSBtX2ZlbmNlUmFuZ2UgeyBIZWFwUmFuZ2UoKSB9Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlSW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWVJbmxpbmVzLmgK
aW5kZXggYTQ3MjMyYy4uMDZkN2FmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTWVtb3J5VmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTWVtb3J5VmFsdWVJbmxpbmVzLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7CiAKLWlubGluZSBib29sIE1lbW9yeVZhbHVlOjppc0xlZ2FsT2Zm
c2V0KGludDMyX3Qgb2Zmc2V0KSBjb25zdAoraW5saW5lIGJvb2wgTWVtb3J5VmFsdWU6OmlzTGVn
YWxPZmZzZXRJbXBsKGludDMyX3Qgb2Zmc2V0KSBjb25zdAogewogICAgIC8vIE5PVEU6IFRoaXMg
aXMgaW5saW5lIGJlY2F1c2UgaXQgY29uc3RhbnQtZm9sZHMgdG8gdHJ1ZSBvbiB4ODYhCiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNb3ZlQ29uc3RhbnRzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01vdmVDb25zdGFudHMuY3BwCmluZGV4IGEz
MmM1OGYuLjc2ZjEyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01v
dmVDb25zdGFudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01vdmVDb25z
dGFudHMuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJlc3RQb2ludGVyKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5VmFsdWUtPmxhc3RDaGlsZCgpID0gYmVzdFBv
aW50ZXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5VmFsdWUtPnNldE9mZnNl
dChkZXNpcmVkT2Zmc2V0KGJlc3RQb2ludGVyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWVtb3J5VmFsdWUtPnNldE9mZnNldChzdGF0aWNfY2FzdDxpbnQzMl90PihkZXNpcmVkT2Zm
c2V0KGJlc3RQb2ludGVyKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTMwOCwxMiArMzA4LDE2
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKG9mZkxpbWl0cy5jb250YWlucyh2YWx1
ZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCisgICAgICAgICAgICAgICAgYXV0
byBvZmZzZXQgPSBzaXplb2YoaW50NjRfdCkgKiBtX2NvbnN0VGFibGUuZ2V0KGtleSk7CisgICAg
ICAgICAgICAgICAgaWYgKCFpc1JlcHJlc2VudGFibGVBczxWYWx1ZTo6T2Zmc2V0VHlwZT4ob2Zm
c2V0KSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgICAgICAgICBW
YWx1ZSogdGFibGVCYXNlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29uc3RhbnQoCiAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlSW5kZXgsIHZhbHVlLT5vcmlnaW4oKSwgcG9pbnRlclR5cGUo
KSwKICAgICAgICAgICAgICAgICAgICAgYml0d2lzZV9jYXN0PGludHB0cl90PihtX2RhdGFTZWN0
aW9uKSk7CiAgICAgICAgICAgICAgICAgVmFsdWUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydDxNZW1vcnlWYWx1ZT4oCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlSW5kZXgsIExvYWQs
IHZhbHVlLT50eXBlKCksIHZhbHVlLT5vcmlnaW4oKSwgdGFibGVCYXNlLAotICAgICAgICAgICAg
ICAgICAgICBzaXplb2YoaW50NjRfdCkgKiBtX2NvbnN0VGFibGUuZ2V0KGtleSkpOworICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxWYWx1ZTo6T2Zmc2V0VHlwZT4ob2Zmc2V0KSk7CiAg
ICAgICAgICAgICAgICAgdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkocmVzdWx0KTsKICAgICAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNl
U3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGgu
Y3BwCmluZGV4IDExMGE2ZDMuLmQ5NTIyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKQEAgLTE1NTUsNyArMTU1NSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gYWRkcmVzcy0+Y2hpbGQoMSktPmFzSW50
UHRyKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdW1PdmVyZmxvd3M8aW50cHRyX3Q+KG9mZnNl
dCwgbWVtb3J5LT5vZmZzZXQoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IG1l
bW9yeS0+b2Zmc2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGludDMyX3Qgc21hbGxPZmZzZXQg
PSBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBWYWx1
ZTo6T2Zmc2V0VHlwZSBzbWFsbE9mZnNldCA9IHN0YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRUeXBl
PihvZmZzZXQpOwogICAgICAgICAgICAgICAgICAgICBpZiAoc21hbGxPZmZzZXQgPT0gb2Zmc2V0
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzID0gYWRkcmVzcy0+Y2hpbGQoMCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnktPmxhc3RDaGlsZCgpID0gYWRkcmVzczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3BwCmluZGV4
IGEwYzIxNWUuLjMwY2NkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1N0YWNrbWFwU3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3Rh
Y2ttYXBTcGVjaWFsLmNwcApAQCAtMjcwLDcgKzI3MCw3IEBAIFZhbHVlUmVwIFN0YWNrbWFwU3Bl
Y2lhbDo6cmVwRm9yQXJnKENvZGUmIGNvZGUsIGNvbnN0IEFyZyYgYXJnKQogICAgICAgICBpZiAo
YXJnLmJhc2UoKSA9PSBUbXAoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpKQogICAgICAgICAg
ICAgcmV0dXJuIFZhbHVlUmVwOjpzdGFjayhhcmcub2Zmc2V0KCkpOwogICAgICAgICBBU1NFUlQo
YXJnLmJhc2UoKSA9PSBUbXAoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKSk7
Ci0gICAgICAgIHJldHVybiBWYWx1ZVJlcDo6c3RhY2soYXJnLm9mZnNldCgpIC0gc3RhdGljX2Nh
c3Q8aW50MzJfdD4oY29kZS5mcmFtZVNpemUoKSkpOworICAgICAgICByZXR1cm4gVmFsdWVSZXA6
OnN0YWNrKGFyZy5vZmZzZXQoKSAtIHNhZmVDYXN0PFZhbHVlOjpPZmZzZXRUeXBlPihjb2RlLmZy
YW1lU2l6ZSgpKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybiBWYWx1ZVJlcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgK
aW5kZXggNWRmYzI4NC4uY2FiNzEyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCkBA
IC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKQEAgLTI4Myw2ICsyODQsMjIgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgdm9pZCB3YWxrKGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IsIFBoaUNoaWxkcmVuKiA9IG51bGxwdHIpOwogCisgICAgLy8gQjMgcHVycG9z
ZWZ1bGx5IG9ubHkgcmVwcmVzZW50cyBzaWduZWQgMzItYml0IG9mZnNldHMgYmVjYXVzZSB0aGF0
J3Mgd2hhdCB4ODYgY2FuIGVuY29kZSwgYW5kCisgICAgLy8gQVJNNjQgY2Fubm90IGVuY29kZSBh
bnl0aGluZyBiaWdnZXIuIFRoZSBJc0xlZ2FsT2Zmc2V0IHR5cGUgdHJhaXQgaXMgdGhlbiB1c2Vk
IG9uIEIzIFZhbHVlCisgICAgLy8gbWV0aG9kcyB0byBwcmV2ZW50IGltcGxpY2l0IGNvbnZlcnNp
b25zIGJ5IEMrKyBmcm9tIGludmFsaWQgb2Zmc2V0IHR5cGVzOiB0aGVzZSBjYXVzZSBjb21waWxh
dGlvbgorICAgIC8vIHRvIGZhaWwsIGluc3RlYWQgb2YgY2F1c2luZyBpbXBsZW1lbnRhdGlvbi1k
ZWZpbmVkIGJlaGF2aW9yICh3aGljaCBvZnRlbiB0dXJucyB0byBleHBsb2l0KS4KKyAgICAvLyBP
ZmZzZXRUeXBlIGlzbid0IHN1ZmZpY2llbnQgdG8gZGV0ZXJtaW5lIG9mZnNldCB2YWxpZGl0eSEg
RWFjaCBWYWx1ZSBvcGNvZGUgZnVydGhlciBoYXMgYW4KKyAgICAvLyBpc0xlZ2FsT2Zmc2V0IHJ1
bnRpbWUgbWV0aG9kIHVzZWQgdG8gZGV0ZXJtaW5lIHZhbHVlIGxlZ2FsaXR5IGF0IHJ1bnRpbWUu
IFRoaXMgaXMgZXhwb3NlZCB0byB1c2VycworICAgIC8vIG9mIEIzIHRvIGZvcmNlIHRoZW0gdG8g
cmVhc29uIGFib3V0IHRoZSB0YXJnZXQncyBvZmZzZXQuCisgICAgdHlwZWRlZiBpbnQzMl90IE9m
ZnNldFR5cGU7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50PgorICAgIHN0cnVjdCBJc0xlZ2Fs
T2Zmc2V0IDogc3RkOjpjb25qdW5jdGlvbjwKKyAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19pbnRlZ3JhbDxJbnQ+Ojp2YWx1ZT46OnR5cGUsCisgICAgICAgIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2lnbmVkPEludD46OnZhbHVlPjo6dHlwZSwKKyAgICAg
ICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c2l6ZW9mKEludCkgPD0gc2l6ZW9mKE9mZnNldFR5
cGUpPjo6dHlwZQorICAgID4ge307CisKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgVmFsdWUq
IGNsb25lSW1wbCgpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBcmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJB
cmcuY3BwCmluZGV4IDUzYzUyZTEuLmQwZTY5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFyZy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCi1BcmcgQXJnOjpzdGFja0FkZHIoaW50MzJfdCBv
ZmZzZXRGcm9tRlAsIHVuc2lnbmVkIGZyYW1lU2l6ZSwgV2lkdGggd2lkdGgpCitBcmcgQXJnOjpz
dGFja0FkZHJJbXBsKGludDMyX3Qgb2Zmc2V0RnJvbUZQLCB1bnNpZ25lZCBmcmFtZVNpemUsIFdp
ZHRoIHdpZHRoKQogewogICAgIEFyZyByZXN1bHQgPSBBcmc6OmFkZHIoQWlyOjpUbXAoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIpLCBvZmZzZXRGcm9tRlApOwogICAgIGlmICghcmVzdWx0Lmlz
VmFsaWRGb3JtKHdpZHRoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJBcmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKaW5k
ZXggYWExMWJlNS4uMWIyZGU1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJBcmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5o
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQjNCYW5rLmgiCiAjaW5jbHVkZSAiQjNDb21t
b24uaCIKICNpbmNsdWRlICJCM1R5cGUuaCIKKyNpbmNsdWRlICJCM1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiQjNXaWR0aC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCkBAIC01MzQsNyArNTM1
LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHN0YXRp
YyBBcmcgYWRkcihBaXI6OlRtcCBiYXNlLCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PEludD4+Cisg
ICAgc3RhdGljIEFyZyBhZGRyKEFpcjo6VG1wIGJhc2UsIEludCBvZmZzZXQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoYmFzZS5pc0dQKCkpOwogICAgICAgICBBcmcgcmVzdWx0OwpAQCAtNTQ0LDcg
KzU0NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAg
c3RhdGljIEFyZyBzdGFjayhTdGFja1Nsb3QqIHZhbHVlLCBpbnQzMl90IG9mZnNldCA9IDApCisg
ICAgc3RhdGljIEFyZyBhZGRyKEFpcjo6VG1wIGJhc2UpIHsKKyAgICAgICAgcmV0dXJuIGFkZHIo
YmFzZSwgMCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9
IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PEludD4+CisgICAgc3RhdGljIEFyZyBzdGFjayhTdGFja1Ns
b3QqIHZhbHVlLCBJbnQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgQXJnIHJlc3VsdDsKICAgICAg
ICAgcmVzdWx0Lm1fa2luZCA9IFN0YWNrOwpAQCAtNTUzLDE1ICs1NjAsMjUgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHN0YXRpYyBBcmcgY2FsbEFyZyhp
bnQzMl90IG9mZnNldCkKKyAgICBzdGF0aWMgQXJnIHN0YWNrKFN0YWNrU2xvdCogdmFsdWUpCisg
ICAgeworICAgICAgICByZXR1cm4gc3RhY2sodmFsdWUsIDApOworICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+Pgor
ICAgIHN0YXRpYyBBcmcgY2FsbEFyZyhJbnQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgQXJnIHJl
c3VsdDsKICAgICAgICAgcmVzdWx0Lm1fa2luZCA9IENhbGxBcmc7CiAgICAgICAgIHJlc3VsdC5t
X29mZnNldCA9IG9mZnNldDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCi0g
ICAgc3RhdGljIEFyZyBzdGFja0FkZHIoaW50MzJfdCBvZmZzZXRGcm9tRlAsIHVuc2lnbmVkIGZy
YW1lU2l6ZSwgV2lkdGgpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9
IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PEludD4+CisgICAgc3RhdGljIEFyZyBzdGFja0FkZHIoSW50
IG9mZnNldEZyb21GUCwgdW5zaWduZWQgZnJhbWVTaXplLCBXaWR0aCB3aWR0aCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzdGFja0FkZHJJbXBsKG9mZnNldEZyb21GUCwgZnJhbWVTaXplLCB3aWR0
aCk7CisgICAgfQogCiAgICAgLy8gSWYgeW91IGRvbid0IHBhc3MgYSBXaWR0aCwgdGhpcyBvcHRp
bWlzdGljYWxseSBhc3N1bWVzIHRoYXQgeW91J3JlIHVzaW5nIHRoZSByaWdodCB3aWR0aC4KICAg
ICBzdGF0aWMgYm9vbCBpc1ZhbGlkU2NhbGUodW5zaWduZWQgc2NhbGUsIHN0ZDo6b3B0aW9uYWw8
V2lkdGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQpAQCAtNjA0LDcgKzYyMSw4IEBAIHB1YmxpYzoK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHN0YXRpYyBBcmcgaW5kZXgoQWlyOjpUbXAgYmFzZSwg
QWlyOjpUbXAgaW5kZXgsIHVuc2lnbmVkIHNjYWxlID0gMSwgaW50MzJfdCBvZmZzZXQgPSAwKQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNl
dDxJbnQ+PgorICAgIHN0YXRpYyBBcmcgaW5kZXgoQWlyOjpUbXAgYmFzZSwgQWlyOjpUbXAgaW5k
ZXgsIHVuc2lnbmVkIHNjYWxlLCBJbnQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGJh
c2UuaXNHUCgpKTsKICAgICAgICAgQVNTRVJUKGluZGV4LmlzR1AoKSk7CkBAIC02MTgsNiArNjM2
LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBzdGF0
aWMgQXJnIGluZGV4KEFpcjo6VG1wIGJhc2UsIEFpcjo6VG1wIGluZGV4LCB1bnNpZ25lZCBzY2Fs
ZSA9IDEpCisgICAgeworICAgICAgICByZXR1cm4gQXJnOjppbmRleChiYXNlLCBpbmRleCwgc2Nh
bGUsIDApOworICAgIH0KKwogICAgIHN0YXRpYyBBcmcgcmVsQ29uZChNYWNyb0Fzc2VtYmxlcjo6
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCiAgICAgewogICAgICAgICBBcmcgcmVzdWx0
OwpAQCAtOTI1LDEyICs5NDgsMTIgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBpc01lbW9yeSgpOyB9CiAgICAgCi0gICAgaW50MzJfdCBvZmZzZXQoKSBj
b25zdAorICAgIFZhbHVlOjpPZmZzZXRUeXBlIG9mZnNldCgpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAoa2luZCgpID09IFN0YWNrKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dDMyX3Q+KG1fc2NhbGUpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFZhbHVlOjpP
ZmZzZXRUeXBlPihtX3NjYWxlKTsKICAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBBZGRyIHx8IGtp
bmQoKSA9PSBDYWxsQXJnIHx8IGtpbmQoKSA9PSBJbmRleCk7Ci0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQzMl90PihtX29mZnNldCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxW
YWx1ZTo6T2Zmc2V0VHlwZT4obV9vZmZzZXQpOwogICAgIH0KIAogICAgIFN0YWNrU2xvdCogc3Rh
Y2tTbG90KCkgY29uc3QKQEAgLTExNDEsNyArMTE2NCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHN0YXRpYyBib29sIGlzVmFsaWRBZGRyRm9ybShpbnQz
Ml90IG9mZnNldCwgc3RkOjpvcHRpb25hbDxXaWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0
PEludD4+CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEFkZHJGb3JtKEludCBvZmZzZXQsIHN0ZDo6
b3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAgICAgICAgaWYg
KGlzWDg2KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNjYsNyArMTE5MCw4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHN0YXRpYyBib29s
IGlzVmFsaWRJbmRleEZvcm0odW5zaWduZWQgc2NhbGUsIGludDMyX3Qgb2Zmc2V0LCBzdGQ6Om9w
dGlvbmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6OklzTGVnYWxPZmZzZXQ8SW50Pj4KKyAgICBzdGF0aWMg
Ym9vbCBpc1ZhbGlkSW5kZXhGb3JtKHVuc2lnbmVkIHNjYWxlLCBJbnQgb2Zmc2V0LCBzdGQ6Om9w
dGlvbmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIGlmICgh
aXNWYWxpZFNjYWxlKHNjYWxlLCB3aWR0aCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xMjc2LDcgKzEzMDEsNyBAQCBwdWJsaWM6CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMiBhc1RydXN0ZWRJbW0zMigpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaXNJbW0o
KSB8fCBpc0JpdEltbSgpKTsKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4obV9vZmZzZXQpKTsKKyAgICAgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8VmFsdWU6Ok9mZnNldFR5cGU+
KG1fb2Zmc2V0KSk7CiAgICAgfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTEzMDEsNyArMTMy
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGlzU2ltcGxlQWRkcigpKQogICAgICAgICAgICAg
cmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5ncHIoKSk7CiAgICAgICAgIEFT
U0VSVChpc0FkZHIoKSk7Ci0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyht
X2Jhc2UuZ3ByKCksIHN0YXRpY19jYXN0PGludDMyX3Q+KG1fb2Zmc2V0KSk7CisgICAgICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UuZ3ByKCksIHN0YXRpY19jYXN0PFZh
bHVlOjpPZmZzZXRUeXBlPihtX29mZnNldCkpOwogICAgIH0KIAogICAgIE1hY3JvQXNzZW1ibGVy
OjpCYXNlSW5kZXggYXNCYXNlSW5kZXgoKSBjb25zdApAQCAtMTMwOSw3ICsxMzM0LDcgQEAgcHVi
bGljOgogICAgICAgICBBU1NFUlQoaXNJbmRleCgpKTsKICAgICAgICAgcmV0dXJuIE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoCiAgICAgICAgICAgICBtX2Jhc2UuZ3ByKCksIG1faW5kZXguZ3By
KCksIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpTY2FsZT4obG9nU2NhbGUoKSksCi0gICAg
ICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihtX29mZnNldCkpOworICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8VmFsdWU6Ok9mZnNldFR5cGU+KG1fb2Zmc2V0KSk7CiAgICAgfQogCiAgICAgTWFj
cm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gYXNSZWxhdGlvbmFsQ29uZGl0aW9uKCkg
Y29uc3QKQEAgLTE0MTIsNiArMTQzNyw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Cisg
ICAgc3RhdGljIEFyZyBzdGFja0FkZHJJbXBsKGludDMyX3QsIHVuc2lnbmVkLCBXaWR0aCk7CisK
ICAgICBpbnQ2NF90IG1fb2Zmc2V0IHsgMCB9OwogICAgIEtpbmQgbV9raW5kIHsgSW52YWxpZCB9
OwogICAgIGludDMyX3QgbV9zY2FsZSB7IDEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyTG93ZXJTdGFja0FyZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJMb3dlclN0YWNrQXJncy5jcHAKaW5kZXggNmFhZjk5Mi4uODM3YzZmMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlclN0YWNrQXJn
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlclN0YWNrQXJn
cy5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBsb3dlclN0YWNrQXJncyhDb2RlJiBjb2RlKQog
ICAgICAgICAgICAgSW5zdCYgaW5zdCA9IGJsb2NrLT5hdChpbnN0SW5kZXgpOwogICAgICAgICAg
ICAgaW5zdC5mb3JFYWNoQXJnKAogICAgICAgICAgICAgICAgIFsmXSAoQXJnJiBhcmcsIEFyZzo6
Um9sZSByb2xlLCBCYW5rLCBXaWR0aCB3aWR0aCkgewotICAgICAgICAgICAgICAgICAgICBhdXRv
IHN0YWNrQWRkciA9IFsmXSAoaW50MzJfdCBvZmZzZXQpIC0+IEFyZyB7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8gc3RhY2tBZGRyID0gWyZdIChWYWx1ZTo6T2Zmc2V0VHlwZSBvZmZzZXQpIC0+
IEFyZyB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBcmcgcmVzdWx0ID0gQXJnOjpzdGFja0Fk
ZHIob2Zmc2V0LCBjb2RlLmZyYW1lU2l6ZSgpLCB3aWR0aCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IkZBVEFMOiBDb3VsZCBub3QgY3JlYXRlIHN0YWNrIHJlZmVyZW5jZSBmb3Igb2Zmc2V0ID0gIiwg
b2Zmc2V0LCAiIGFuZCB3aWR0aCA9ICIsIHdpZHRoLCAiXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5jcHAKaW5kZXggODBlNzU0Yy4uNjYxYTk5NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5jcHAKQEAgLTg3OSwxMCArODc5LDEwIEBAIHZvaWQgdGVzdE11bEFyZ1N0b3JlKGlu
dCBhKQogCiAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKICAgICAgICAgcHJvYywg
U3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAmdmFsdWVTbG90KSk7CisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnZhbHVlU2xvdCksIDApOwogICAg
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCiAgICAgICAgIHByb2MsIFN0b3JlLCBPcmln
aW4oKSwgbXVsLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksICZtdWxTbG90KSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgJm11bFNsb3QpLCAwKTsKIAogICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKQEAgLTU0MjEsNyArNTQy
MSw3IEBAIHZvaWQgdGVzdFN0b3JlMzIoaW50IHZhbHVlKQogICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KAogICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAogICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCkpOworICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90KSwgMCk7CiAgICAgcm9vdC0+YXBwZW5k
TmV3Q29udHJvbFZhbHVlKAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwogCkBAIC01NDM3LDcg
KzU0MzcsNyBAQCB2b2lkIHRlc3RTdG9yZUNvbnN0YW50KGludCB2YWx1ZSkKICAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KAogICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCiAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB2YWx1
ZSksCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgJnNsb3QpKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAmc2xvdCksIDApOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
ICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKIApAQCAtNTQ1Nyw3ICs1NDU3LDcgQEAgdm9pZCB0
ZXN0U3RvcmVDb25zdGFudFB0cihpbnRwdHJfdCB2YWx1ZSkKICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KAogICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCiAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpLAotICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZzbG90
KSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgJnNsb3QpLCAwKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAwKSk7CiAKQEAgLTU3NTksNyArNTc1OSw3IEBAIHZvaWQgdGVzdFN0b3Jl
QWRkTG9hZDMyKGludCBhbW91bnQpCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAogICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpKSwKLSAgICAgICAgc2xvdFB0cik7CisgICAgICAgIHNsb3RQdHIs
IDApOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKTsKQEAgLTU4MDksNyArNTgwOSw3IEBAIHZvaWQgdGVzdFN0b3JlQWRk
TG9hZEltbTMyKGludCBhbW91bnQpCiAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAog
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQz
MiwgT3JpZ2luKCksIHNsb3RQdHIpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCkpLAotICAgICAgICBzbG90UHRyKTsKKyAg
ICAgICAgc2xvdFB0ciwgMCk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAogICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwpAQCAtNTgzMiw3ICs1ODMyLDcgQEAgdm9p
ZCB0ZXN0U3RvcmVBZGRMb2FkOChpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCiAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKLSAg
ICAgICAgc2xvdFB0cik7CisgICAgICAgIHNsb3RQdHIsIDApOwogICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKQEAgLTU5
MjEsNyArNTkyMSw3IEBAIHZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTgoaW50IGFtb3VudCwgQjM6
Ok9wY29kZSBsb2FkT3Bjb2RlKQogICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgbG9hZE9wY29kZSwg
T3JpZ2luKCksIHNsb3RQdHIpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCkpLAotICAgICAgICBzbG90UHRyKTsKKyAgICAg
ICAgc2xvdFB0ciwgMCk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAogICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwpAQCAtNTk0NCw3ICs1OTQ0LDcgQEAgdm9pZCB0
ZXN0U3RvcmVBZGRMb2FkMTYoaW50IGFtb3VudCwgQjM6Ok9wY29kZSBsb2FkT3Bjb2RlKQogICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCiAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSksCi0gICAg
ICAgIHNsb3RQdHIpOworICAgICAgICBzbG90UHRyLCAwKTsKICAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCiAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CkBAIC01OTk0
LDcgKzU5OTQsNyBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWRJbW0xNihpbnQgYW1vdW50LCBCMzo6
T3Bjb2RlIGxvYWRPcGNvZGUpCiAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAogICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBsb2FkT3Bjb2RlLCBP
cmlnaW4oKSwgc2xvdFB0ciksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KSksCi0gICAgICAgIHNsb3RQdHIpOworICAgICAg
ICBzbG90UHRyLCAwKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CkBAIC02MDE1LDcgKzYwMTUsNyBAQCB2b2lkIHRl
c3RTdG9yZUFkZExvYWQ2NChpbnQgYW1vdW50KQogICAgICAgICAgICAgcHJvYywgQWRkLCBPcmln
aW4oKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgSW50NjQsIE9yaWdpbigpLCBzbG90UHRyKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSksCi0gICAgICAgIHNsb3RQdHIpOworICAgICAgICBzbG90UHRyLCAwKTsKICAgICByb290LT5h
cHBlbmROZXdDb250cm9sVmFsdWUoCiAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7
CkBAIC02MDYzLDcgKzYwNjMsNyBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWRJbW02NChpbnQ2NF90
IGFtb3VudCkKICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCiAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwg
c2xvdFB0ciksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYW1vdW50KSksCi0gICAgICAgIHNsb3RQdHIpOworICAgICAgICBzbG90UHRy
LCAwKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAwKSk7CkBAIC02MDk1LDcgKzYwOTUsNyBAQCB2b2lkIHRlc3RTdG9yZUFk
ZExvYWQzMkluZGV4KGludCBhbW91bnQpCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAogICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKICAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpKSwKLSAgICAgICAgc2xvdFB0cik7CisgICAgICAgIHNsb3RQ
dHIsIDApOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDApKTsKQEAgLTYxMjUsNyArNjEyNSw3IEBAIHZvaWQgdGVzdFN0b3Jl
QWRkTG9hZEltbTMySW5kZXgoaW50IGFtb3VudCkKICAgICAgICAgICAgIHByb2MsIEFkZCwgT3Jp
Z2luKCksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExv
YWQsIEludDMyLCBPcmlnaW4oKSwgc2xvdFB0ciksCiAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KSksCi0gICAgICAgIHNsb3RQ
dHIpOworICAgICAgICBzbG90UHRyLCAwKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFs
dWUoCiAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CkBAIC02Mjc5LDcgKzYyNzks
NyBAQCB2b2lkIHRlc3RTdG9yZUFkZExvYWQ2NEluZGV4KGludCBhbW91bnQpCiAgICAgICAgICAg
ICBwcm9jLCBBZGQsIE9yaWdpbigpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIHNsb3RQdHIpLAogICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAgICAgc2xvdFB0cik7CisgICAgICAgIHNsb3RQdHIs
IDApOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKTsKQEAgLTYzMDksNyArNjMwOSw3IEBAIHZvaWQgdGVzdFN0b3JlQWRk
TG9hZEltbTY0SW5kZXgoaW50NjRfdCBhbW91bnQpCiAgICAgICAgICAgICBwcm9jLCBBZGQsIE9y
aWdpbigpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBM
b2FkLCBJbnQ2NCwgT3JpZ2luKCksIHNsb3RQdHIpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCkpLAotICAgICAgICBzbG90
UHRyKTsKKyAgICAgICAgc2xvdFB0ciwgMCk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwpAQCAtNjMzMyw3ICs2MzMz
LDcgQEAgdm9pZCB0ZXN0U3RvcmVTdWJMb2FkKGludCBhbW91bnQpCiAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4o
KSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKLSAgICAgICAgc2xvdFB0cik7
CisgICAgICAgIHNsb3RQdHIsIDApOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgK
ICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKQEAgLTYzNTQsMTMgKzYzNTQsMTMg
QEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW50ZXJmZXJlbmNlKGludCBhbW91bnQpCiAgICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKICAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigp
LAogICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
NjY2KSwKLSAgICAgICAgb3RoZXJTbG90UHRyKTsKKyAgICAgICAgb3RoZXJTbG90UHRyLCAwKTsK
ICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAogICAgICAgICBwcm9jLCBTdG9yZSwg
T3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAgICAgICBw
cm9jLCBBZGQsIE9yaWdpbigpLAogICAgICAgICAgICAgbG9hZCwgcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGFtb3VudCkpLAotICAgICAgICBzbG90UHRyKTsK
KyAgICAgICAgc2xvdFB0ciwgMCk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAog
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwpAQCAtNjM4NCw3ICs2Mzg0LDcgQEAg
dm9pZCB0ZXN0U3RvcmVBZGRBbmRMb2FkKGludCBhbW91bnQsIGludCBtYXNrKQogICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9y
aWdpbigpLCBzbG90UHRyKSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KSksCiAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbWFzaykpLAotICAgICAgICBzbG90
UHRyKTsKKyAgICAgICAgc2xvdFB0ciwgMCk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwpAQCAtNjQwOCw3ICs2NDA4
LDcgQEAgdm9pZCB0ZXN0U3RvcmVOZWdMb2FkMzIoaW50MzJfdCB2YWx1ZSkKICAgICAgICAgICAg
IHByb2MsIFN1YiwgT3JpZ2luKCksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgc2xvdFB0cikpLAotICAg
ICAgICBzbG90UHRyKTsKKyAgICAgICAgc2xvdFB0ciwgMCk7CiAgICAgCiAgICAgcm9vdC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwpAQCAtNjQzMiw3
ICs2NDMyLDcgQEAgdm9pZCB0ZXN0U3RvcmVOZWdMb2FkUHRyKGludHB0cl90IHZhbHVlKQogICAg
ICAgICAgICAgcHJvYywgU3ViLCBPcmlnaW4oKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCksCiAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigp
LCBzbG90UHRyKSksCi0gICAgICAgIHNsb3RQdHIpOworICAgICAgICBzbG90UHRyLCAwKTsKICAg
ICAKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigp
LCAwKSk7CkBAIC02NDY4LDcgKzY0NjgsNyBAQCB2b2lkIHRlc3RMb2FkT2Zmc2V0KCkKICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2lu
KCksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQs
IEludDMyLCBPcmlnaW4oKSwgYXJyYXlQdHIsIDApLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFycmF5UHRyLCBz
aXplb2YoaW50KSkpKTsKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhcnJheVB0ciwgc3RhdGljX2Nhc3Q8aW50MzJf
dD4oc2l6ZW9mKGludCkpKSkpOwogCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2Mp
ID09IGFycmF5WzBdICsgYXJyYXlbMV0pOwogfQpAQCAtNjQ4NCw3ICs2NDg0LDcgQEAgdm9pZCB0
ZXN0TG9hZE9mZnNldE5vdENvbnN0YW50KCkKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCiAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYXJyYXlQ
dHIsIDApLAotICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBM
b2FkLCBJbnQzMiwgT3JpZ2luKCksIGFycmF5UHRyLCBzaXplb2YoaW50KSkpKTsKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdp
bigpLCBhcnJheVB0ciwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludCkpKSkpOwogCiAg
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsICZhcnJheVswXSkgPT0gYXJyYXlbMF0g
KyBhcnJheVsxXSk7CiB9CkBAIC02NTA4LDcgKzY1MDgsNyBAQCB2b2lkIHRlc3RMb2FkT2Zmc2V0
VXNpbmdBZGQoKQogICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwK
ICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICAgICAgICAg
ICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLCBhcnJheVB0ciwKLSAgICAgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzaXplb2YoaW50
KSkpKSkpOworICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihpbnQpKSkpKSkp
OwogICAgIAogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSBhcnJheVswXSAr
IGFycmF5WzFdKTsKIH0KQEAgLTY1MzEsMTEgKzY1MzEsMTEgQEAgdm9pZCB0ZXN0TG9hZE9mZnNl
dFVzaW5nQWRkSW50ZXJmZXJlbmNlKCkKICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdp
bigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICAgICAgcHJvYywg
QWRkLCBPcmlnaW4oKSwgYXJyYXlQdHIsCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHNpemVvZihpbnQpKSkpOworICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzdGF0aWNfY2Fz
dDxpbnQzMl90PihzaXplb2YoaW50KSkpKSk7CiAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPigKICAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLCB0aGVOdW1iZXJPZlRoZUJlYXN0
LCBvdGhlckFycmF5UHRyLCAwKTsKICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAot
ICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHRoZU51bWJlck9mVGhlQmVhc3QsIG90aGVy
QXJyYXlQdHIsIHNpemVvZihpbnQpKTsKKyAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLCB0
aGVOdW1iZXJPZlRoZUJlYXN0LCBvdGhlckFycmF5UHRyLCBzdGF0aWNfY2FzdDxpbnQzMl90Pihz
aXplb2YoaW50KSkpOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
QEAgLTY1NjUsNyArNjU2NSw3IEBAIHZvaWQgdGVzdExvYWRPZmZzZXRVc2luZ0FkZE5vdENvbnN0
YW50KCkKICAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCiAgICAg
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKICAgICAgICAgICAgICAgICAgICAg
cHJvYywgQWRkLCBPcmlnaW4oKSwgYXJyYXlQdHIsCi0gICAgICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgc2l6ZW9mKGludCkpKSkp
KTsKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2YoaW50KSkpKSkpKTsKICAg
ICAKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgJmFycmF5WzBdKSA9PSBhcnJh
eVswXSArIGFycmF5WzFdKTsKIH0KQEAgLTY2OTAsNyArNjY5MCw3IEBAIHZvaWQgdGVzdFN0b3Jl
TG9hZFN0YWNrU2xvdChpbnQgdmFsdWUpCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CiAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCiAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpLAotICAgICAgICBzdGFjayk7CisgICAgICAgIHN0YWNrLCAwKTsKICAgICAKICAg
ICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCkBAIC02NzYwLDcgKzY3NjAsNyBAQCB2b2lkIHRlc3RMb2FkKEIzOjpPcGNvZGUgb3Bj
b2RlLCBJbnB1dFR5cGUgdmFsdWUpCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KAogICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgdHlwZSwgT3JpZ2luKCksCiAg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAotICAgICAgICAgICAgICAgIHNpemVvZihJ
bnB1dFR5cGUpKSk7CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9m
KElucHV0VHlwZSkpKSk7CiAKICAgICAgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxDVHlwZT4ocHJvYywgJnZhbHVlIC0gMSksIG1vZGVsTG9hZDxDVHlwZT4odmFsdWUpKSk7CiAg
ICAgfQpAQCAtMTI5MDIsNyArMTI5MDIsNyBAQCB2b2lkIHRlc3RJbnRlcnByZXRlcigpCiAgICAg
ICAgICAgICBhZGRUb0RhdGFQb2ludGVyLT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICAgICAg
ICAgIHByb2MsIE11bCwgT3JpZ2luKCksCiAgICAgICAgICAgICAgICAgYWRkVG9EYXRhUG9pbnRl
ci0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgICAgICAgICAgcHJvYywgTG9h
ZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGNvZGVQb2ludGVyVmFsdWUsIHNpemVvZihpbnRw
dHJfdCkpLAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBP
cmlnaW4oKSwgY29kZVBvaW50ZXJWYWx1ZSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGlu
dHB0cl90KSkpLAogICAgICAgICAgICAgICAgIGFkZFRvRGF0YVBvaW50ZXItPmFwcGVuZEludENv
bnN0YW50KAogICAgICAgICAgICAgICAgICAgICBwcm9jLCBPcmlnaW4oKSwgcG9pbnRlclR5cGUo
KSwgc2l6ZW9mKGludHB0cl90KSkpKSk7CiAgICAgYWRkVG9EYXRhUG9pbnRlci0+YXBwZW5kTmV3
PFZhcmlhYmxlVmFsdWU+KApAQCAtMTI5MzEsNyArMTI5MzEsNyBAQCB2b2lkIHRlc3RJbnRlcnBy
ZXRlcigpCiAgICAgICAgICAgICBhZGRUb0NvZGVQb2ludGVyVGFrZW4tPmFwcGVuZE5ldzxWYWx1
ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgTXVsLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAg
ICBhZGRUb0NvZGVQb2ludGVyVGFrZW4tPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAg
ICAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBjb2RlUG9p
bnRlclZhbHVlLCBzaXplb2YoaW50cHRyX3QpKSwKKyAgICAgICAgICAgICAgICAgICAgcHJvYywg
TG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGNvZGVQb2ludGVyVmFsdWUsIHN0YXRpY19j
YXN0PGludDMyX3Q+KHNpemVvZihpbnRwdHJfdCkpKSwKICAgICAgICAgICAgICAgICBhZGRUb0Nv
ZGVQb2ludGVyVGFrZW4tPmFwcGVuZEludENvbnN0YW50KAogICAgICAgICAgICAgICAgICAgICBw
cm9jLCBPcmlnaW4oKSwgcG9pbnRlclR5cGUoKSwgc2l6ZW9mKGludHB0cl90KSkpKSk7CiAgICAg
YWRkVG9Db2RlUG9pbnRlclRha2VuLT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgSnVtcCwg
T3JpZ2luKCksIEZyZXF1ZW50ZWRCbG9jayhkaXNwYXRjaCkpOwpAQCAtMTI5NTQsNyArMTI5NTQs
NyBAQCB2b2lkIHRlc3RJbnRlcnByZXRlcigpCiAgICAgICAgICAgICBhZGRUb0RhdGEtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5
cGUoKSwgT3JpZ2luKCksIGRhdGFQb2ludGVyVmFsdWUpLAogICAgICAgICAgICAgYWRkVG9EYXRh
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIHBv
aW50ZXJUeXBlKCksIE9yaWdpbigpLCBjb2RlUG9pbnRlclZhbHVlLCBzaXplb2YoaW50cHRyX3Qp
KSksCisgICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCks
IGNvZGVQb2ludGVyVmFsdWUsIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihpbnRwdHJfdCkp
KSksCiAgICAgICAgIGRhdGFQb2ludGVyVmFsdWUpOwogICAgIGFkZFRvRGF0YS0+YXBwZW5kTmV3
PFZhcmlhYmxlVmFsdWU+KAogICAgICAgICBwcm9jLCBTZXQsIE9yaWdpbigpLCBjb2RlUG9pbnRl
ciwKQEAgLTEzODc1LDcgKzEzODc1LDcgQEAgdm9pZCB0ZXN0VHJhcHBpbmdTdG9yZSgpCiAgICAg
TWVtb3J5VmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKICAgICAg
ICAgcHJvYywgdHJhcHBpbmcoU3RvcmUpLCBPcmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDExMSksCi0gICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJngpKTsKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmeCksIDApOwogICAg
IEVmZmVjdHMgZXhwZWN0ZWRFZmZlY3RzOwogICAgIGV4cGVjdGVkRWZmZWN0cy5leGl0c1NpZGV3
YXlzID0gdHJ1ZTsKICAgICBleHBlY3RlZEVmZmVjdHMuY29udHJvbERlcGVuZGVudD0gdHJ1ZTsK
QEAgLTEzOTEyLDcgKzEzOTEyLDcgQEAgdm9pZCB0ZXN0VHJhcHBpbmdMb2FkQWRkU3RvcmUoKQog
ICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgdHJhcHBpbmcoTG9hZCksIEludDMyLCBPcmlnaW4oKSwg
cHRyKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAzKSksCi0gICAgICAgIHB0cik7CisgICAgICAgIHB0ciwgMCk7CiAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpKTsKICAgICBjb21waWxlQW5k
UnVuPGludD4ocHJvYyk7CiAgICAgQ0hFQ0tfRVEoeCwgNDUpOwpAQCAtMTUyMjgsNyArMTUyMjgs
NyBAQCB2b2lkIHRlc3RXYXNtQWRkcmVzcygpCiAgICAgICAgIGJvZHktPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzaXplb2YodW5zaWduZWQpKSk7CiAgICAgcG9pbnRl
ciA9IGJvZHktPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgWkV4dDMyLCBPcmlnaW4oKSwgcG9pbnRl
cik7CiAgICAgYm9keS0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2lu
KCksIHZhbHVlVG9TdG9yZSwKLSAgICAgICAgYm9keS0+YXBwZW5kTmV3PFdhc21BZGRyZXNzVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBwb2ludGVyLCBwaW5uZWRHUFIpKTsKKyAgICAgICAgYm9keS0+
YXBwZW5kTmV3PFdhc21BZGRyZXNzVmFsdWU+KHByb2MsIE9yaWdpbigpLCBwb2ludGVyLCBwaW5u
ZWRHUFIpLCAwKTsKICAgICBVcHNpbG9uVmFsdWUqIGluY1Vwc2lsb24gPSBib2R5LT5hcHBlbmRO
ZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwKICAgICAgICAgYm9keS0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCBpbmRleFBoaSwKICAgICAgICAgICAgIGJvZHkt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IGM4M2Qz
NmUuLjYwMDM1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJXYXNtT3Bjb2RlT3Jp
Z2luLmgiCiAjaW5jbHVkZSAiV2FzbVRodW5rcy5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogdm9pZCBkdW1wUHJvY2VkdXJlKHZv
aWQqIHB0cikKIHsKQEAgLTIzNiw3ICsyMzcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBlbWl0
Q2hlY2tzRm9yTW9kT3JEaXYoQjM6Ok9wY29kZSwgRXhwcmVzc2lvblR5cGUgbGVmdCwgRXhwcmVz
c2lvblR5cGUgcmlnaHQpOwogCi0gICAgdm9pZCBmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0KEV4cHJl
c3Npb25UeXBlJiwgdWludDMyX3QmKTsKKyAgICBpbnQzMl90IFdBUk5fVU5VU0VEX1JFVFVSTiBm
aXh1cFBvaW50ZXJQbHVzT2Zmc2V0KEV4cHJlc3Npb25UeXBlJiwgdWludDMyX3QpOwogCiAgICAg
VmFsdWUqIG1hdGVyaWFsaXplV2FzbUNvbnRleHQoUHJvY2VkdXJlJiwgQmFzaWNCbG9jayopOwog
ICAgIHZvaWQgcmVzdG9yZVdhc21Db250ZXh0KFByb2NlZHVyZSYsIEJhc2ljQmxvY2sqLCBWYWx1
ZSopOwpAQCAtMjYwLDEyICsyNjEsMTMgQEAgcHJpdmF0ZToKIH07CiAKIC8vIE1lbW9yeSBhY2Nl
c3NlcyBpbiBXZWJBc3NlbWJseSBoYXZlIHVuc2lnbmVkIDMyLWJpdCBvZmZzZXRzLCB3aGVyZWFz
IHRoZXkgaGF2ZSBzaWduZWQgMzItYml0IG9mZnNldHMgaW4gQjMuCi12b2lkIEIzSVJHZW5lcmF0
b3I6OmZpeHVwUG9pbnRlclBsdXNPZmZzZXQoRXhwcmVzc2lvblR5cGUmIHB0ciwgdWludDMyX3Qm
IG9mZnNldCkKK2ludDMyX3QgQjNJUkdlbmVyYXRvcjo6Zml4dXBQb2ludGVyUGx1c09mZnNldChF
eHByZXNzaW9uVHlwZSYgcHRyLCB1aW50MzJfdCBvZmZzZXQpCiB7CiAgICAgaWYgKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihvZmZzZXQpID4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1heCgpKSkgewogICAgICAgICBwdHIgPSBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEFkZCwgb3JpZ2luKCksIHB0ciwgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIG9mZnNldCkp
OwotICAgICAgICBvZmZzZXQgPSAwOworICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgcmV0
dXJuIG9mZnNldDsKIH0KIAogVmFsdWUqIEIzSVJHZW5lcmF0b3I6Om1hdGVyaWFsaXplV2FzbUNv
bnRleHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKQEAgLTUwNiwxMCArNTA4
LDEwIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBk
ZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIAogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRD
dXJyZW50TWVtb3J5KEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsK
LSAgICBWYWx1ZSogbWVtb3J5T2JqZWN0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwgbV9pbnN0YW5j
ZVZhbHVlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpOworICAgIFZh
bHVlKiBtZW1vcnlPYmplY3QgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBtX2luc3RhbmNlVmFsdWUs
IHNhZmVDYXN0PGludDMyX3Q+KEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnko
KSkpOwogCiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUoc3RhdGljX2Nhc3Q8SlNX
ZWJBc3NlbWJseUluc3RhbmNlKj4obnVsbHB0ciktPm1lbW9yeSgpLT5tZW1vcnkoKS5zaXplKCkp
KSA9PSBzaXplb2YodWludDY0X3QpLCAiY29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7Ci0g
ICAgVmFsdWUqIHNpemUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPiht
X3Byb2MsIExvYWQsIEludDY0LCBvcmlnaW4oKSwgbWVtb3J5T2JqZWN0LCBKU1dlYkFzc2VtYmx5
TWVtb3J5OjpvZmZzZXRPZlNpemUoKSk7CisgICAgVmFsdWUqIHNpemUgPSBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDY0LCBvcmlnaW4oKSwg
bWVtb3J5T2JqZWN0LCBzYWZlQ2FzdDxpbnQzMl90PihKU1dlYkFzc2VtYmx5TWVtb3J5OjpvZmZz
ZXRPZlNpemUoKSkpOwogICAgIAogICAgIGNvbnN0ZXhwciB1aW50MzJfdCBzaGlmdFZhbHVlID0g
MTY7CiAgICAgc3RhdGljX2Fzc2VydChQYWdlQ291bnQ6OnBhZ2VTaXplID09IDEgPDwgc2hpZnRW
YWx1ZSwgIlRoaXMgbXVzdCBob2xkIGZvciB0aGUgY29kZSBiZWxvdyB0byBiZSBjb3JyZWN0LiIp
OwpAQCAtNTMwLDE2ICs1MzIsMTYgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjpzZXRMb2NhbCh1aW50
MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZXMKIAogYXV0byBC
M0lSR2VuZXJhdG9yOjpnZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBWYWx1ZSogZ2xvYmFsc0FycmF5ID0gbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVy
VHlwZSgpLCBvcmlnaW4oKSwgbV9pbnN0YW5jZVZhbHVlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
Om9mZnNldE9mR2xvYmFscygpKTsKLSAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHRvQjNUeXBlKG1faW5mby5nbG9iYWxzW2lu
ZGV4XS50eXBlKSwgb3JpZ2luKCksIGdsb2JhbHNBcnJheSwgaW5kZXggKiBzaXplb2YoUmVnaXN0
ZXIpKTsKKyAgICBWYWx1ZSogZ2xvYmFsc0FycmF5ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwgbV9p
bnN0YW5jZVZhbHVlLCBzYWZlQ2FzdDxpbnQzMl90PihKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9m
ZnNldE9mR2xvYmFscygpKSk7CisgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCB0b0IzVHlwZShtX2luZm8uZ2xvYmFsc1tpbmRl
eF0udHlwZSksIG9yaWdpbigpLCBnbG9iYWxzQXJyYXksIHNhZmVDYXN0PGludDMyX3Q+KGluZGV4
ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwogICAgIHJldHVybiB7IH07CiB9CiAKIGF1dG8gQjNJUkdl
bmVyYXRvcjo6c2V0R2xvYmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkg
LT4gUGFydGlhbFJlc3VsdAogewogICAgIEFTU0VSVCh0b0IzVHlwZShtX2luZm8uZ2xvYmFsc1tp
bmRleF0udHlwZSkgPT0gdmFsdWUtPnR5cGUoKSk7Ci0gICAgVmFsdWUqIGdsb2JhbHNBcnJheSA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9p
bnRlclR5cGUoKSwgb3JpZ2luKCksIG1faW5zdGFuY2VWYWx1ZSwgSlNXZWJBc3NlbWJseUluc3Rh
bmNlOjpvZmZzZXRPZkdsb2JhbHMoKSk7Ci0gICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4obV9wcm9jLCBTdG9yZSwgb3JpZ2luKCksIHZhbHVlLCBnbG9iYWxzQXJyYXks
IGluZGV4ICogc2l6ZW9mKFJlZ2lzdGVyKSk7CisgICAgVmFsdWUqIGdsb2JhbHNBcnJheSA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRl
clR5cGUoKSwgb3JpZ2luKCksIG1faW5zdGFuY2VWYWx1ZSwgc2FmZUNhc3Q8aW50MzJfdD4oSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkdsb2JhbHMoKSkpOworICAgIG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgU3RvcmUsIG9yaWdpbigpLCB2YWx1
ZSwgZ2xvYmFsc0FycmF5LCBzYWZlQ2FzdDxpbnQzMl90PihpbmRleCAqIHNpemVvZihSZWdpc3Rl
cikpKTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC01NTQsNyArNTU2LDcgQEAgaW5saW5lIFZh
bHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcihFeHByZXNzaW9u
VHlwZSBwb2ludGVyLAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFdhc21Cb3Vu
ZHNDaGVja1ZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBwb2ludGVyLCBtX21lbW9yeVNpemVHUFIs
IHNpemVPZk9wZXJhdGlvbiArIG9mZnNldCAtIDEsIG1faW5mby5tZW1vcnkubWF4aW11bSgpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZW1vcnlNb2RlOjpTaWduYWxpbmc6Ci0gICAgICAg
IC8vIFdlJ3ZlIHZpcnR1YWxseSBtYXBwZWQgNEdpQityZWR6b25lIGZvIHRoaXMgbWVtb3J5LiBP
bmx5IHRoZSB1c2VyLWFsbG9jYXRlZCBwYWdlcyBhcmUgYWRkcmVzc2FibGUsIGNvbnRpZ3VvdXNs
eSBpbiByYW5nZSBbMCwgY3VycmVudF0sIGFuZCBldmVyeXRoaW5nIGFib3ZlIGlzIG1hcHBlZCBQ
Uk9UX05PTkUuIFdlIGRvbid0IG5lZWQgdG8gcGVyZm9ybSBhbnkgZXhwbGljaXQgYm91bmRzIGNo
ZWNrIGluIHRoZSA0R2lCIHJhbmdlIGJlY2F1c2UgV2ViQXNzZW1ibHkgcmVnaXN0ZXIgbWVtb3J5
IGFjY2Vzc2VzIGFyZSAzMi1iaXQuIEhvd2V2ZXIgV2ViQXNzZW1ibHkgcmVnaXN0ZXIraW1tZWRp
YXRlIGFjY2Vzc2VzIHBlcmZvcm0gdGhlIGFkZGl0aW9uIGluIDY0LWJpdCB3aGljaCBjYW4gcHVz
aCBhbiBhY2Nlc3MgYWJvdmUgdGhlIDMyLWJpdCBsaW1pdC4gVGhlIHJlZHpvbmUgd2lsbCBjYXRj
aCBtb3N0IHNtYWxsIGltbWVkaWF0ZXMsIGFuZCB3ZSdsbCBleHBsaWNpdGx5IGJvdW5kcyBjaGVj
ayBhbnkgcmVnaXN0ZXIgKyBsYXJnZSBpbW1lZGlhdGUgYWNjZXNzLgorICAgICAgICAvLyBXZSd2
ZSB2aXJ0dWFsbHkgbWFwcGVkIDRHaUIrcmVkem9uZSBmb3IgdGhpcyBtZW1vcnkuIE9ubHkgdGhl
IHVzZXItYWxsb2NhdGVkIHBhZ2VzIGFyZSBhZGRyZXNzYWJsZSwgY29udGlndW91c2x5IGluIHJh
bmdlIFswLCBjdXJyZW50XSwgYW5kIGV2ZXJ5dGhpbmcgYWJvdmUgaXMgbWFwcGVkIFBST1RfTk9O
RS4gV2UgZG9uJ3QgbmVlZCB0byBwZXJmb3JtIGFueSBleHBsaWNpdCBib3VuZHMgY2hlY2sgaW4g
dGhlIDRHaUIgcmFuZ2UgYmVjYXVzZSBXZWJBc3NlbWJseSByZWdpc3RlciBtZW1vcnkgYWNjZXNz
ZXMgYXJlIDMyLWJpdC4gSG93ZXZlciBXZWJBc3NlbWJseSByZWdpc3RlcitpbW1lZGlhdGUgYWNj
ZXNzZXMgcGVyZm9ybSB0aGUgYWRkaXRpb24gaW4gNjQtYml0IHdoaWNoIGNhbiBwdXNoIGFuIGFj
Y2VzcyBhYm92ZSB0aGUgMzItYml0IGxpbWl0LiBUaGUgcmVkem9uZSB3aWxsIGNhdGNoIG1vc3Qg
c21hbGwgaW1tZWRpYXRlcywgYW5kIHdlJ2xsIGV4cGxpY2l0bHkgYm91bmRzIGNoZWNrIGFueSBy
ZWdpc3RlciArIGxhcmdlIGltbWVkaWF0ZSBhY2Nlc3MuCiAgICAgICAgIGlmIChvZmZzZXQgPj0g
TWVtb3J5OjpmYXN0TWFwcGVkUmVkem9uZUJ5dGVzKCkpCiAgICAgICAgICAgICBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBw
b2ludGVyLCBJbnZhbGlkR1BSUmVnLCBzaXplT2ZPcGVyYXRpb24gKyBvZmZzZXQgLSAxLCBtX2lu
Zm8ubWVtb3J5Lm1heGltdW0oKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTk3LDkgKzU5OSw5IEBA
IGlubGluZSBCMzo6S2luZCBCM0lSR2VuZXJhdG9yOjptZW1vcnlLaW5kKEIzOjpPcGNvZGUgbWVt
b3J5T3ApCiAgICAgcmV0dXJuIG1lbW9yeU9wOwogfQogCi1pbmxpbmUgVmFsdWUqIEIzSVJHZW5l
cmF0b3I6OmVtaXRMb2FkT3AoTG9hZE9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwg
dWludDMyX3Qgb2Zmc2V0KQoraW5saW5lIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjplbWl0TG9hZE9w
KExvYWRPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIHVpbnQzMl90IHVvZmZzZXQp
CiB7Ci0gICAgZml4dXBQb2ludGVyUGx1c09mZnNldChwb2ludGVyLCBvZmZzZXQpOworICAgIGlu
dDMyX3Qgb2Zmc2V0ID0gZml4dXBQb2ludGVyUGx1c09mZnNldChwb2ludGVyLCB1b2Zmc2V0KTsK
IAogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4UzogewpA
QCAtNzM2LDkgKzczOCw5IEBAIGlubGluZSB1aW50MzJfdCBzaXplT2ZTdG9yZU9wKFN0b3JlT3BU
eXBlIG9wKQogfQogCiAKLWlubGluZSB2b2lkIEIzSVJHZW5lcmF0b3I6OmVtaXRTdG9yZU9wKFN0
b3JlT3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCBFeHByZXNzaW9uVHlwZSB2YWx1
ZSwgdWludDMyX3Qgb2Zmc2V0KQoraW5saW5lIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZW1pdFN0b3Jl
T3AoU3RvcmVPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBl
IHZhbHVlLCB1aW50MzJfdCB1b2Zmc2V0KQogewotICAgIGZpeHVwUG9pbnRlclBsdXNPZmZzZXQo
cG9pbnRlciwgb2Zmc2V0KTsKKyAgICBpbnQzMl90IG9mZnNldCA9IGZpeHVwUG9pbnRlclBsdXNP
ZmZzZXQocG9pbnRlciwgdW9mZnNldCk7CiAKICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBT
dG9yZU9wVHlwZTo6STY0U3RvcmU4OgpAQCAtOTM3LDggKzkzOSw4IEBAIGF1dG8gQjNJUkdlbmVy
YXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNp
Z25hdHVyZSwKIAogICAgIGlmIChtX2luZm8uaXNJbXBvcnRlZEZ1bmN0aW9uRnJvbUZ1bmN0aW9u
SW5kZXhTcGFjZShmdW5jdGlvbkluZGV4KSkgewogICAgICAgICAvLyBGSVhNRSBpbXBvcnRzIGNh
biBiZSBsaW5rZWQgaGVyZSwgaW5zdGVhZCBvZiBnZW5lcmF0aW5nIGEgcGF0Y2hwb2ludCwgYmVj
YXVzZSBhbGwgaW1wb3J0IHN0dWJzIGFyZSBnZW5lcmF0ZWQgYmVmb3JlIEIzIGNvbXBpbGF0aW9u
IHN0YXJ0cy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQ2Mgot
ICAgICAgICBWYWx1ZSogZnVuY3Rpb25JbXBvcnQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBtX2lu
c3RhbmNlVmFsdWUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZJbXBvcnRGdW5jdGlv
bihmdW5jdGlvbkluZGV4KSk7Ci0gICAgICAgIFZhbHVlKiBqc1R5cGVPZkltcG9ydCA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZDhaLCBvcmlnaW4o
KSwgZnVuY3Rpb25JbXBvcnQsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpOworICAgICAg
ICBWYWx1ZSogZnVuY3Rpb25JbXBvcnQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBtX2luc3RhbmNl
VmFsdWUsIHNhZmVDYXN0PGludDMyX3Q+KEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZJ
bXBvcnRGdW5jdGlvbihmdW5jdGlvbkluZGV4KSkpOworICAgICAgICBWYWx1ZSoganNUeXBlT2ZJ
bXBvcnQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExv
YWQ4Wiwgb3JpZ2luKCksIGZ1bmN0aW9uSW1wb3J0LCBzYWZlQ2FzdDxpbnQzMl90PihKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSk7CiAgICAgICAgIFZhbHVlKiBpc1dhc21DYWxsID0gbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksIGpz
VHlwZU9mSW1wb3J0LCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9w
cm9jLCBvcmlnaW4oKSwgV2ViQXNzZW1ibHlGdW5jdGlvblR5cGUpKTsKIAogICAgICAgICBCYXNp
Y0Jsb2NrKiBpc1dhc21CbG9jayA9IG1fcHJvYy5hZGRCbG9jaygpOwpAQCAtOTY4LDkgKzk3MCw5
IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBj
b25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwKICAgICAgICAgLy8gaW1wbGVtZW50IHRoZSBJQyB0
byBiZSBvdmVyIFdhc206OkNvbnRleHQqLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMzc1CiAgICAgICAgIFZhbHVlKiBjb2RlQmxvY2sgPSBp
c0pTQmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLAotICAgICAgICAgICAgTG9h
ZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIG1faW5zdGFuY2VWYWx1ZSwgSlNXZWJBc3NlbWJs
eUluc3RhbmNlOjpvZmZzZXRPZkNvZGVCbG9jaygpKTsKKyAgICAgICAgICAgIExvYWQsIHBvaW50
ZXJUeXBlKCksIG9yaWdpbigpLCBtX2luc3RhbmNlVmFsdWUsIHNhZmVDYXN0PGludDMyX3Q+KEpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZDb2RlQmxvY2soKSkpOwogICAgICAgICBWYWx1
ZSoganVtcERlc3RpbmF0aW9uID0gaXNKU0Jsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1f
cHJvYywKLSAgICAgICAgICAgIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBjb2RlQmxv
Y2ssIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6Om9mZnNldE9mSW1wb3J0V2FzbVRvSlNTdHViKGZ1
bmN0aW9uSW5kZXgpKTsKKyAgICAgICAgICAgIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigp
LCBjb2RlQmxvY2ssIHNhZmVDYXN0PGludDMyX3Q+KEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6Om9m
ZnNldE9mSW1wb3J0V2FzbVRvSlNTdHViKGZ1bmN0aW9uSW5kZXgpKSk7CiAgICAgICAgIFZhbHVl
KiBqc0NhbGxSZXN1bHQgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5zZXR1cENhbGwobV9wcm9j
LCBpc0pTQmxvY2ssIG9yaWdpbigpLCBhcmdzLCB0b0IzVHlwZShyZXR1cm5UeXBlKSwKICAgICAg
ICAgICAgIFsmXSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50KSB7CiAgICAgICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOwpAQCAtMTAyNiwxMSAr
MTAyOCwxMSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChjb25zdCBTaWdu
YXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpbwogICAgIEV4cHJlc3Npb25UeXBlIGNh
bGxhYmxlRnVuY3Rpb25CdWZmZXJTaXplOwogICAgIHsKICAgICAgICAgRXhwcmVzc2lvblR5cGUg
dGFibGUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExv
YWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAotICAgICAgICAgICAgbV9pbnN0YW5jZVZhbHVl
LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mVGFibGUoKSk7CisgICAgICAgICAgICBt
X2luc3RhbmNlVmFsdWUsIHNhZmVDYXN0PGludDMyX3Q+KEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6
b2Zmc2V0T2ZUYWJsZSgpKSk7CiAgICAgICAgIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXIgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJU
eXBlKCksIG9yaWdpbigpLAotICAgICAgICAgICAgdGFibGUsIEpTV2ViQXNzZW1ibHlUYWJsZTo6
b2Zmc2V0T2ZGdW5jdGlvbnMoKSk7CisgICAgICAgICAgICB0YWJsZSwgc2FmZUNhc3Q8aW50MzJf
dD4oSlNXZWJBc3NlbWJseVRhYmxlOjpvZmZzZXRPZkZ1bmN0aW9ucygpKSk7CiAgICAgICAgIGNh
bGxhYmxlRnVuY3Rpb25CdWZmZXJTaXplID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJbnQzMiwgb3JpZ2luKCksCi0gICAgICAgICAgICB0YWJs
ZSwgSlNXZWJBc3NlbWJseVRhYmxlOjpvZmZzZXRPZlNpemUoKSk7CisgICAgICAgICAgICB0YWJs
ZSwgc2FmZUNhc3Q8aW50MzJfdD4oSlNXZWJBc3NlbWJseVRhYmxlOjpvZmZzZXRPZlNpemUoKSkp
OwogICAgIH0KIAogICAgIC8vIENoZWNrIHRoZSBpbmRleCB3ZSBhcmUgbG9va2luZyBmb3IgaXMg
dmFsaWQuCkBAIC0xMDUxLDcgKzEwNTMsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJ
bmRpcmVjdChjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpbwogCiAg
ICAgLy8gQ2hlY2sgdGhhdCB0aGUgQ2FsbGFibGVGdW5jdGlvbiBpcyBpbml0aWFsaXplZC4gV2Ug
dHJhcCBpZiBpdCBpc24ndC4gQW4gImludmFsaWQiIFNpZ25hdHVyZUluZGV4IGluZGljYXRlcyBp
dCdzIG5vdCBpbml0aWFsaXplZC4KICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDYWxsYWJsZUZ1
bmN0aW9uOjpzaWduYXR1cmVJbmRleCkgPT0gc2l6ZW9mKHVpbnQzMl90KSwgIkxvYWQgY29kZWdl
biBhc3N1bWVzIGkzMiIpOwotICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZVNpZ25hdHVyZUluZGV4
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBJ
bnQzMiwgb3JpZ2luKCksIGNhbGxhYmxlRnVuY3Rpb24sIE9CSkVDVF9PRkZTRVRPRihDYWxsYWJs
ZUZ1bmN0aW9uLCBzaWduYXR1cmVJbmRleCkpOworICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZVNp
Z25hdHVyZUluZGV4ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9w
cm9jLCBMb2FkLCBJbnQzMiwgb3JpZ2luKCksIGNhbGxhYmxlRnVuY3Rpb24sIHNhZmVDYXN0PGlu
dDMyX3Q+KE9CSkVDVF9PRkZTRVRPRihDYWxsYWJsZUZ1bmN0aW9uLCBzaWduYXR1cmVJbmRleCkp
KTsKICAgICB7CiAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwKICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigp
LApAQCAtMTA3NCw3ICsxMDc2LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJl
Y3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW8KICAgICAgICAg
fSk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlQ29kZSA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwg
b3JpZ2luKCksIGNhbGxhYmxlRnVuY3Rpb24sIE9CSkVDVF9PRkZTRVRPRihDYWxsYWJsZUZ1bmN0
aW9uLCBjb2RlKSk7CisgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlQ29kZSA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwg
b3JpZ2luKCksIGNhbGxhYmxlRnVuY3Rpb24sIHNhZmVDYXN0PGludDMyX3Q+KE9CSkVDVF9PRkZT
RVRPRihDYWxsYWJsZUZ1bmN0aW9uLCBjb2RlKSkpOwogCiAgICAgVHlwZSByZXR1cm5UeXBlID0g
c2lnbmF0dXJlLnJldHVyblR5cGUoKTsKICAgICByZXN1bHQgPSB3YXNtQ2FsbGluZ0NvbnZlbnRp
b24oKS5zZXR1cENhbGwobV9wcm9jLCBtX2N1cnJlbnRCbG9jaywgb3JpZ2luKCksIGFyZ3MsIHRv
QjNUeXBlKHJldHVyblR5cGUpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBjMzUzYmM4Li4wYmFmZWE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDE3LTA0LTE0ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBCMzogZG9uJ3QgYWxsb3cgdW5zaWduZWQgb2Zmc2V0cyBpbiBWYWx1ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNjkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvU3RkTGliRXh0
cmFzLmg6IGF0IEMrKzE3J3Mgc3RkOjpjb25qdW5jdGlvbiB0eXBlIHRyYWl0CisKIDIwMTctMDQt
MTMgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkFzc2Vt
Ymx5OiBtYW5hZ2UgbWVtb3J5IGJldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3Rk
TGliRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAppbmRleCA4MmY1NDdm
Li40YmQ4MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgPGNocm9ubz4KICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgpAQCAt
NTEwLDYgKzUxMSwxNSBAQCBBTFdBWVNfSU5MSU5FIGNvbnN0ZXhwciB0eXBlbmFtZSByZW1vdmVf
cmVmZXJlbmNlPFQ+Ojp0eXBlJiYgbW92ZShUJiYgdmFsdWUpCiAgICAgcmV0dXJuIG1vdmUoZm9y
d2FyZDxUPih2YWx1ZSkpOwogfQogCisjaWYgX19jcGx1c3BsdXMgPCAyMDE3MDNMCit0ZW1wbGF0
ZTxjbGFzcy4uLj4gc3RydWN0IHd0Zl9jb25qdW5jdGlvbl9pbXBsOwordGVtcGxhdGU8PiBzdHJ1
Y3Qgd3RmX2Nvbmp1bmN0aW9uX2ltcGw8PiA6IHRydWVfdHlwZSB7fTsKK3RlbXBsYXRlPGNsYXNz
IEIwPiBzdHJ1Y3Qgd3RmX2Nvbmp1bmN0aW9uX2ltcGw8QjA+IDogQjAge307Cit0ZW1wbGF0ZTxj
bGFzcyBCMCwgY2xhc3MgQjE+IHN0cnVjdCB3dGZfY29uanVuY3Rpb25faW1wbDxCMCwgQjE+IDog
Y29uZGl0aW9uYWw8QjA6OnZhbHVlLCBCMSwgQjA+Ojp0eXBlIHt9OwordGVtcGxhdGU8Y2xhc3Mg
QjAsIGNsYXNzIEIxLCBjbGFzcyBCMiwgY2xhc3MuLi4gQm4+IHN0cnVjdCB3dGZfY29uanVuY3Rp
b25faW1wbDxCMCwgQjEsIEIyLCBCbi4uLj4gOiBjb25kaXRpb25hbDxCMDo6dmFsdWUsIHd0Zl9j
b25qdW5jdGlvbl9pbXBsPEIxLCBCMiwgQm4uLi4+LCBCMD46OnR5cGUge307Cit0ZW1wbGF0ZTxj
bGFzcy4uLiBfQXJncz4gc3RydWN0IGNvbmp1bmN0aW9uIDogd3RmX2Nvbmp1bmN0aW9uX2ltcGw8
X0FyZ3MuLi4+IHt9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIHN0ZAogCiAjZGVmaW5lIFdU
Rk1vdmUodmFsdWUpIHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFsdWUpCi0t
IAoyLjEwLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307258</attachid>
            <date>2017-04-17 00:23:35 -0700</date>
            <delta_ts>2017-04-17 00:26:47 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-MemoryValue.patch</filename>
            <type>text/plain</type>
            <size>63094</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA0ZjNlNTRkMmNmNWY0NTNhMWUxNDdkZWQ2NjY2Nzk1ODYxMWNhMmU3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDE0IEFwciAyMDE3IDAwOjE4OjA3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gTWVtb3J5
VmFsdWUKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgfCA5MSArKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNBdG9taWNWYWx1ZS5jcHAgICAgICAgICB8ICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNBdG9taWNWYWx1ZS5oICAgICAgICAgICB8IDQyICsrKysrKysrLS0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1vbi5oICAgICAgICAgICAgICAgIHwgIDYgKysKIC4uLi9i
My9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcCAgICAgICAgIHwgIDQgKy0KIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwICAgICAgICAgIHwgMTYgKyst
LQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwICAgICAgICAgfCAx
MCArLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmggICAgICAgICAg
IHwgNjkgKysrKysrKysrKysrLS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5
VmFsdWVJbmxpbmVzLmggICAgfCAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTW92
ZUNvbnN0YW50cy5jcHAgICAgICAgfCAgOCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UmVkdWNlU3RyZW5ndGguY3BwICAgICAgfCAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzU3RhY2ttYXBTcGVjaWFsLmNwcCAgICAgfCAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWUuaCAgICAgICAgICAgICAgICAgfCAxNyArKysrCiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckFyZy5jcHAgICAgICAgICAgICB8ICAyICstCiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFyZy5oICAgICAgICAgICAgICB8IDU2ICsrKysrKysrKy0tLS0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJTdGFja0FyZ3MuY3BwIHwgIDIg
Ky0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwICAgICAgICAgICAgICAgIHwg
NzQgKysrKysrKysrLS0tLS0tLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHAgICB8IDQ4ICsrKysrKy0tLS0tLQogU291cmNlL1dURi9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNCArKysrCiBTb3VyY2UvV1RGL3d0Zi9T
dGRMaWJFeHRyYXMuaCAgICAgICAgICAgICAgICAgICAgICB8IDEwICsrKwogMjAgZmlsZXMgY2hh
bmdlZCwgMzYyIGluc2VydGlvbnMoKyksIDExNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBhZjE1ZGRiLi44YmZhNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw5NCBAQAorMjAxNy0wNC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgQjM6IGRvbid0IGFsbG93IHVuc2lnbmVkIG9mZnNldHMgaW4gVmFs
dWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDY5
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lbW9y
eVZhbHVlIGFuZCBzaW1pbGFyIEIzIG9wY29kZSBjbGFzc2VzIGFsd2F5cyBleHBlY3RzIGEgc2ln
bmVkCisgICAgICAgIG9mZnNldC4gR2l2aW5nIGl0IGFuIG91dC1vZi1ib3VuZHMgdW5zaWduZWQg
b2Zmc2V0IGNhdXNlcworICAgICAgICBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIGJlaGF2aW9yLCB3
aGljaCBjYW4gY2F1c2UgYmFkbmVzcyBhcyBJIGp1c3QKKyAgICAgICAgZml4ZWQgaW4gV2ViQXNz
ZW1ibHkuICBUaGlzIHBhdGNoIG1ha2VzIGl0IGltcG9zc2libGUgdG8gY3JlYXRlIGEKKyAgICAg
ICAgVmFsdWUgb3Bjb2RlcyB3aXRoIGFuIHVuc2lnbmVkIHZhbHVlLCBvciB3aXRoIGFuIG92ZXJs
eS1sYXJnZQorICAgICAgICB2YWx1ZS4KKworICAgICAgICAqIGIzL0IzQXRvbWljVmFsdWUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKToKKyAgICAgICAg
KiBiMy9CM0F0b21pY1ZhbHVlLmg6CisgICAgICAgICogYjMvQjNDb21tb24uaDoKKyAgICAgICAg
KEpTQzo6QjM6OmlzUmVwcmVzZW50YWJsZUFzKToKKyAgICAgICAgKiBiMy9CM0VsaW1pbmF0ZUNv
bW1vblN1YmV4cHJlc3Npb25zLmNwcDoKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzY2FsZUZvclNobCk6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVmZmVjdGl2ZUFkZHIpOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpMb3dlclRvQWlyOjphZGRyKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93
ZXJUb0Fpcjo6dHJ5QXBwZW5kTGVhKToKKyAgICAgICAgKiBiMy9CM01lbW9yeVZhbHVlLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6Ok1lbW9yeVZhbHVlOjppc0xlZ2FsT2Zmc2V0SW1wbCk6CisgICAg
ICAgIChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUpOgorICAgICAgICAqIGIzL0Iz
TWVtb3J5VmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpCMzo6TWVtb3J5VmFsdWU6OmlzTGVnYWxPZmZzZXRJbXBsKToKKyAgICAgICAg
KiBiMy9CM01vdmVDb25zdGFudHMuY3BwOgorICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGgu
Y3BwOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcDoKKyAgICAgICAgKEpTQzo6
QjM6OlN0YWNrbWFwU3BlY2lhbDo6cmVwRm9yQXJnKToKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmg6
CisgICAgICAgICogYjMvYWlyL0FpckFyZy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFy
Zzo6c3RhY2tBZGRySW1wbCk6CisgICAgICAgICogYjMvYWlyL0FpckFyZy5oOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpBcmc6OmFkZHIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OnN0
YWNrKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpjYWxsQXJnKToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6QXJnOjpzdGFja0FkZHIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6
OmluZGV4KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpvZmZzZXQpOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpBcmc6OmlzVmFsaWRBZGRyRm9ybSk6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6OkFyZzo6aXNWYWxpZEluZGV4Rm9ybSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6
YXNUcnVzdGVkSW1tMzIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmFzQWRkcmVzcyk6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6YXNCYXNlSW5kZXgpOgorICAgICAgICAqIGIz
L2Fpci9BaXJMb3dlclN0YWNrQXJncy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Omxvd2Vy
U3RhY2tBcmdzKToKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdE11bEFyZ1N0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9yZTMyKToKKyAgICAg
ICAgKEpTQzo6QjM6OnRlc3RTdG9yZUNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RT
dG9yZUNvbnN0YW50UHRyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9yZUFkZExvYWQzMik6
CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3RvcmVBZGRMb2FkSW1tMzIpOgorICAgICAgICAoSlND
OjpCMzo6dGVzdFN0b3JlQWRkTG9hZDgpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlQWRk
TG9hZEltbTgpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlQWRkTG9hZDE2KToKKyAgICAg
ICAgKEpTQzo6QjM6OnRlc3RTdG9yZUFkZExvYWRJbW0xNik6CisgICAgICAgIChKU0M6OkIzOjp0
ZXN0U3RvcmVBZGRMb2FkNjQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlQWRkTG9hZElt
bTY0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9yZUFkZExvYWQzMkluZGV4KToKKyAgICAg
ICAgKEpTQzo6QjM6OnRlc3RTdG9yZUFkZExvYWRJbW0zMkluZGV4KToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RTdG9yZUFkZExvYWQ2NEluZGV4KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9y
ZUFkZExvYWRJbW02NEluZGV4KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9yZVN1YkxvYWQp
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlQWRkTG9hZEludGVyZmVyZW5jZSk6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0U3RvcmVBZGRBbmRMb2FkKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RTdG9yZU5lZ0xvYWQzMik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3RvcmVOZWdMb2FkUHRy
KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6QjM6
OnRlc3RMb2FkT2Zmc2V0Tm90Q29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRP
ZmZzZXRVc2luZ0FkZCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TG9hZE9mZnNldFVzaW5nQWRk
SW50ZXJmZXJlbmNlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkT2Zmc2V0VXNpbmdBZGRO
b3RDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3RvcmVMb2FkU3RhY2tTbG90KToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RJbnRl
cnByZXRlcik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0VHJhcHBpbmdTdG9yZSk6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0VHJhcHBpbmdMb2FkQWRkU3RvcmUpOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdFdhc21BZGRyZXNzKToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6Zml4dXBQb2ludGVyUGx1c09mZnNl
dCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBh
cmVQb2ludGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdExvYWRP
cCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmVtaXRTdG9yZU9wKToKKwog
MjAxNy0wNC0xMyAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViQXNzZW1ibHk6IG1hbmFnZSBtZW1vcnkgYmV0dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNBdG9taWNWYWx1ZS5jcHAKaW5kZXggNzBjMzVkYy4uMjBmY2U0MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBWYWx1
ZSogQXRvbWljVmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CiAgICAgcmV0dXJuIG5ldyBBdG9taWNW
YWx1ZSgqdGhpcyk7CiB9CiAKLUF0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShLaW5kIGtpbmQsIE9y
aWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogb3BlcmFuZCwgVmFsdWUqIHBvaW50ZXIs
IGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQor
QXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKEF0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZVJNVywgS2lu
ZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBXaWR0aCB3aWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVl
KiBwb2ludGVyLCBNZW1vcnlWYWx1ZTo6T2Zmc2V0VHlwZSBvZmZzZXQsIEhlYXBSYW5nZSByYW5n
ZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCiAgICAgOiBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2Rl
LCBraW5kLCBvcGVyYW5kLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5n
ZSwgb3BlcmFuZCwgcG9pbnRlcikKICAgICAsIG1fd2lkdGgod2lkdGgpCiB7CkBAIC02NSw3ICs2
NSw3IEBAIEF0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4s
IFdpZHRoIHdpZHRoLCBWYWx1ZSogb3BlcmFuZCwKICAgICB9CiB9CiAKLUF0b21pY1ZhbHVlOjpB
dG9taWNWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSog
ZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBv
ZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCitBdG9taWNWYWx1
ZTo6QXRvbWljVmFsdWUoQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlQ0FTLCBLaW5kIGtpbmQsIE9y
aWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5l
d1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgTWVtb3J5VmFsdWU6Ok9mZnNldFR5cGUgb2Zmc2V0LCBI
ZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQogICAgIDogTWVtb3J5VmFsdWUo
Q2hlY2tlZE9wY29kZSwga2luZCwga2luZC5vcGNvZGUoKSA9PSBBdG9taWNXZWFrQ0FTID8gSW50
MzIgOiBleHBlY3RlZFZhbHVlLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCByYW5nZSwgZmVuY2VS
YW5nZSwgZXhwZWN0ZWRWYWx1ZSwgbmV3VmFsdWUsIHBvaW50ZXIpCiAgICAgLCBtX3dpZHRoKHdp
ZHRoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFs
dWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgKaW5kZXggZDZi
Y2VmMC4uMjkyY2Y5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRv
bWljVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5o
CkBAIC01MiwxNSArNTIsNDUgQEAgcHJvdGVjdGVkOgogICAgIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgUHJvY2VkdXJlOwotICAgIAotICAgIEF0b21pY1ZhbHVlKEtpbmQsIE9yaWdpbiwg
V2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAw
LCBIZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5n
ZSA9IEhlYXBSYW5nZTo6dG9wKCkpOwotICAgIAotICAgIEF0b21pY1ZhbHVlKEtpbmQsIE9yaWdp
biwgV2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUsIFZhbHVlKiBw
b2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6
dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSk7Ci0gICAgCisK
KyAgICBlbnVtIEF0b21pY1ZhbHVlUk1XIHsgQXRvbWljVmFsdWVSTVdUYWcgfTsKKyAgICBlbnVt
IEF0b21pY1ZhbHVlQ0FTIHsgQXRvbWljVmFsdWVDQVNUYWcgfTsKKworICAgIEF0b21pY1ZhbHVl
KEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBW
YWx1ZSogcG9pbnRlcikKKyAgICAgICAgOiBBdG9taWNWYWx1ZShraW5kLCBvcmlnaW4sIHdpZHRo
LCBvcGVyYW5kLCBwb2ludGVyLCAwKQorICAgIHsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSW50LAorICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfaW50ZWdyYWw8SW50Pjo6dmFsdWU+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSA9IHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2lnbmVkPEludD46OnZhbHVlPjo6dHlwZSwKKyAg
ICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzaXplb2YoSW50KSA8PSBz
aXplb2YoT2Zmc2V0VHlwZSk+Ojp0eXBlCisgICAgPgorICAgIEF0b21pY1ZhbHVlKEtpbmQga2lu
ZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9p
bnRlciwgSW50IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVh
cFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpKQorICAgICAgICA6IEF0b21pY1Zh
bHVlKEF0b21pY1ZhbHVlUk1XVGFnLCBraW5kLCBvcmlnaW4sIHdpZHRoLCBvcGVyYW5kLCBwb2lu
dGVyLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdlKQorICAgIHsKKyAgICB9CisKKyAgICBBdG9t
aWNWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogZXhw
ZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlcikKKyAgICAgICAgOiBB
dG9taWNWYWx1ZShraW5kLCBvcmlnaW4sIHdpZHRoLCBleHBlY3RlZFZhbHVlLCBuZXdWYWx1ZSwg
cG9pbnRlciwgMCkKKyAgICB7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwKKyAg
ICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFs
PEludD46OnZhbHVlPjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3NpZ25lZDxJbnQ+Ojp2YWx1ZT46OnR5cGUsCisgICAgICAgIHR5cGVu
YW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c2l6ZW9mKEludCkgPD0gc2l6ZW9mKE9mZnNl
dFR5cGUpPjo6dHlwZQorICAgID4KKyAgICBBdG9taWNWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBv
cmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVl
LCBWYWx1ZSogcG9pbnRlciwgSW50IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdl
Ojp0b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpKQorICAgICAg
ICA6IEF0b21pY1ZhbHVlKEF0b21pY1ZhbHVlQ0FTVGFnLCBraW5kLCBvcmlnaW4sIHdpZHRoLCBl
eHBlY3RlZFZhbHVlLCBuZXdWYWx1ZSwgcG9pbnRlciwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5n
ZSkKKyAgICB7CisgICAgfQorCisgICAgLy8gVGhlIGFib3ZlIHRlbXBsYXRlcyBmb3J3YXJkIHRv
IHRoZXNlIGltcGxlbWVudGF0aW9ucy4KKyAgICBBdG9taWNWYWx1ZShBdG9taWNWYWx1ZVJNVywg
S2luZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVlKiBwb2ludGVyLCBPZmZz
ZXRUeXBlLCBIZWFwUmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5n
ZSA9IEhlYXBSYW5nZTo6dG9wKCkpOworICAgIEF0b21pY1ZhbHVlKEF0b21pY1ZhbHVlQ0FTLCBL
aW5kLCBPcmlnaW4sIFdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVl
LCBWYWx1ZSogcG9pbnRlciwgT2Zmc2V0VHlwZSwgSGVhcFJhbmdlID0gSGVhcFJhbmdlOjp0b3Ao
KSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpKTsKKwogICAgIFdpZHRo
IG1fd2lkdGg7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVO
QUJMRShCM19KSVQpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nv
bW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29tbW9uLmgKaW5kZXggNGE5NGRh
Ny4uOWQxODEyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29tbW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29tbW9uLmgKQEAgLTEwMiw2ICsx
MDIsMTIgQEAgaW5saW5lIGJvb2wgaXNSZXByZXNlbnRhYmxlQXMoaW50NjRfdCB2YWx1ZSkKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZT4KK2lubGluZSBib29sIGlzUmVwcmVzZW50
YWJsZUFzKHNpemVfdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gaXNSZXByZXNlbnRhYmxlQXNJbXBs
PFJlc3VsdFR5cGUsIHNpemVfdCwgc2l6ZV90Pih2YWx1ZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFJlc3VsdFR5cGU+CiBpbmxpbmUgYm9vbCBpc1JlcHJlc2VudGFibGVBcyhkb3VibGUgdmFs
dWUpCiB7CiAgICAgcmV0dXJuIGlzUmVwcmVzZW50YWJsZUFzSW1wbDxSZXN1bHRUeXBlLCBkb3Vi
bGUsIGludDY0X3Q+KHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAppbmRleCBiMGJlZjhl
Li4xYWU0MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5h
dGVDb21tb25TdWJleHByZXNzaW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzRWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgVmFsdWUqIHZhbHVlID0gbWVtb3J5LT5jaGlsZCgwKTsKICAgICAg
ICAgVmFsdWUqIHB0ciA9IG1lbW9yeS0+bGFzdENoaWxkKCk7CiAgICAgICAgIEhlYXBSYW5nZSBy
YW5nZSA9IG1lbW9yeS0+cmFuZ2UoKTsKLSAgICAgICAgaW50MzJfdCBvZmZzZXQgPSBtZW1vcnkt
Pm9mZnNldCgpOworICAgICAgICBWYWx1ZTo6T2Zmc2V0VHlwZSBvZmZzZXQgPSBtZW1vcnktPm9m
ZnNldCgpOwogCiAgICAgICAgIHN3aXRjaCAobWVtb3J5LT5vcGNvZGUoKSkgewogICAgICAgICBj
YXNlIFN0b3JlODoKQEAgLTMwNSw3ICszMDUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAg
VmFsdWUqIHB0ciA9IG1lbW9yeS0+bGFzdENoaWxkKCk7CiAgICAgICAgIEhlYXBSYW5nZSByYW5n
ZSA9IG1lbW9yeS0+cmFuZ2UoKTsKLSAgICAgICAgaW50MzJfdCBvZmZzZXQgPSBtZW1vcnktPm9m
ZnNldCgpOworICAgICAgICBWYWx1ZTo6T2Zmc2V0VHlwZSBvZmZzZXQgPSBtZW1vcnktPm9mZnNl
dCgpOwogICAgICAgICBUeXBlIHR5cGUgPSBtZW1vcnktPnR5cGUoKTsKIAogICAgICAgICAvLyBG
SVhNRTogRW1wb3dlciB0aGlzIHRvIGluc2VydCBtb3JlIGNhc3RzIGFuZCBzaGlmdHMuIEZvciBl
eGFtcGxlLCBhIExvYWQ4IGNvdWxkIG1hdGNoIGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJUb0Fpci5jcHAKaW5kZXggNWJhNWFmYS4uNTA2NzA3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTQzOSw4ICs0MzksOSBAQCBwcml2YXRlOgog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQotICAgIAotICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlRm9yU2hsKFZhbHVlKiBz
aGwsIGludDMyX3Qgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6bnVs
bG9wdCkKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNM
ZWdhbE9mZnNldDxJbnQ+PgorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlRm9yU2hs
KFZhbHVlKiBzaGwsIEludCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3Rk
OjpudWxsb3B0KQogICAgIHsKICAgICAgICAgaWYgKHNobC0+b3Bjb2RlKCkgIT0gU2hsKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQ2Myw3ICs0NjQsOCBAQCBwcml2YXRl
OgogICAgIH0KICAgICAKICAgICAvLyBUaGlzIHR1cm5zIHRoZSBnaXZlbiBvcGVyYW5kIGludG8g
YW4gYWRkcmVzcy4KLSAgICBBcmcgZWZmZWN0aXZlQWRkcihWYWx1ZSogYWRkcmVzcywgaW50MzJf
dCBvZmZzZXQsIFdpZHRoIHdpZHRoKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5h
bWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgorICAgIEFyZyBlZmZlY3RpdmVBZGRyKFZh
bHVlKiBhZGRyZXNzLCBJbnQgb2Zmc2V0LCBXaWR0aCB3aWR0aCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChBcmc6OmlzVmFsaWRBZGRyRm9ybShvZmZzZXQsIHdpZHRoKSk7CiAgICAgICAgIApAQCAt
NTUyLDcgKzU1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICh2YWx1ZS0+cmVxdWlyZXNTaW1w
bGVBZGRyKCkpCiAgICAgICAgICAgICByZXR1cm4gQXJnOjpzaW1wbGVBZGRyKHRtcCh2YWx1ZS0+
bGFzdENoaWxkKCkpKTsKIAotICAgICAgICBpbnQzMl90IG9mZnNldCA9IHZhbHVlLT5vZmZzZXQo
KTsKKyAgICAgICAgVmFsdWU6Ok9mZnNldFR5cGUgb2Zmc2V0ID0gdmFsdWUtPm9mZnNldCgpOwog
ICAgICAgICBXaWR0aCB3aWR0aCA9IHZhbHVlLT5hY2Nlc3NXaWR0aCgpOwogCiAgICAgICAgIEFy
ZyByZXN1bHQgPSBlZmZlY3RpdmVBZGRyKHZhbHVlLT5sYXN0Q2hpbGQoKSwgb2Zmc2V0LCB3aWR0
aCk7CkBAIC0yMDIzLDEyICsyMDI1LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEFkZChTaGwo
QHgsICRjKSwgQHkpCiAgICAgICAgIC8vIEFkZChAeCwgU2hsKEB5LCAkYykpCiAgICAgICAgIC8v
IEFkZChAeCwgQHkpIChvbmx5IGlmIG9mZnNldCAhPSAwKQotICAgICAgICBpbnQzMl90IG9mZnNl
dCA9IDA7Ci0gICAgICAgIGlmICh2YWx1ZS0+Y2hpbGQoMSktPmlzUmVwcmVzZW50YWJsZUFzPGlu
dDMyX3Q+KCkKKyAgICAgICAgVmFsdWU6Ok9mZnNldFR5cGUgb2Zmc2V0ID0gMDsKKyAgICAgICAg
aWYgKHZhbHVlLT5jaGlsZCgxKS0+aXNSZXByZXNlbnRhYmxlQXM8VmFsdWU6Ok9mZnNldFR5cGU+
KCkKICAgICAgICAgICAgICYmIGNhbkJlSW50ZXJuYWwodmFsdWUtPmNoaWxkKDApKQogICAgICAg
ICAgICAgJiYgdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBBZGQpIHsKICAgICAgICAgICAg
IGlubmVyQWRkID0gdmFsdWUtPmNoaWxkKDApOwotICAgICAgICAgICAgb2Zmc2V0ID0gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4odmFsdWUtPmNoaWxkKDEpLT5hc0ludCgpKTsKKyAgICAgICAgICAgIG9m
ZnNldCA9IHN0YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRUeXBlPih2YWx1ZS0+Y2hpbGQoMSktPmFz
SW50KCkpOwogICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS0+Y2hpbGQoMCk7CiAgICAgICAgIH0K
ICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlW
YWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKaW5k
ZXggNTMwMWQ0MS4uMTA0M2Q1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTWVtb3J5VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9y
eVZhbHVlLmNwcApAQCAtMzgsOSArMzgsOSBAQCBNZW1vcnlWYWx1ZTo6fk1lbW9yeVZhbHVlKCkK
IHsKIH0KIAotYm9vbCBNZW1vcnlWYWx1ZTo6aXNMZWdhbE9mZnNldChpbnQ2NF90IG9mZnNldCkg
Y29uc3QKK2Jvb2wgTWVtb3J5VmFsdWU6OmlzTGVnYWxPZmZzZXRJbXBsKGludDY0X3Qgb2Zmc2V0
KSBjb25zdAogewotICAgIHJldHVybiBCMzo6aXNSZXByZXNlbnRhYmxlQXM8aW50MzJfdD4ob2Zm
c2V0KSAmJiBpc0xlZ2FsT2Zmc2V0KHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkpOworICAg
IHJldHVybiBCMzo6aXNSZXByZXNlbnRhYmxlQXM8T2Zmc2V0VHlwZT4ob2Zmc2V0KSAmJiBpc0xl
Z2FsT2Zmc2V0KHN0YXRpY19jYXN0PE9mZnNldFR5cGU+KG9mZnNldCkpOwogfQogCiBUeXBlIE1l
bW9yeVZhbHVlOjphY2Nlc3NUeXBlKCkgY29uc3QKQEAgLTgwLDcgKzgwLDcgQEAgVmFsdWUqIE1l
bW9yeVZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAogCiAvLyBVc2UgdGhpcyBmb3JtIGZvciBMb2Fk
IChidXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBh
IHN1ZmZpeCB0aGF0CiAvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgotTWVtb3J5VmFs
dWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1
ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZl
bmNlUmFuZ2UpCitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoTWVtb3J5VmFsdWU6Ok1lbW9yeVZh
bHVlTG9hZCwgS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2lu
dGVyLCBNZW1vcnlWYWx1ZTo6T2Zmc2V0VHlwZSBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVh
cFJhbmdlIGZlbmNlUmFuZ2UpCiAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBl
LCBvcmlnaW4sIHBvaW50ZXIpCiAgICAgLCBtX29mZnNldChvZmZzZXQpCiAgICAgLCBtX3Jhbmdl
KHJhbmdlKQpAQCAtMTA4LDcgKzEwOCw3IEBAIE1lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5k
IGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGluCiB9CiAK
IC8vIFVzZSB0aGlzIGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBpbXBs
aWVkLgotTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwg
VmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5n
ZSBmZW5jZVJhbmdlKQorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKE1lbW9yeVZhbHVlOjpNZW1v
cnlWYWx1ZUxvYWRJbXBsaWVkLCBLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2lu
dGVyLCBNZW1vcnlWYWx1ZTo6T2Zmc2V0VHlwZSBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVh
cFJhbmdlIGZlbmNlUmFuZ2UpCiAgICAgOiBNZW1vcnlWYWx1ZShraW5kLCBJbnQzMiwgb3JpZ2lu
LCBwb2ludGVyLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdlKQogewogICAgIGlmICghQVNTRVJU
X0RJU0FCTEVEKSB7CkBAIC0xMjUsNyArMTI1LDcgQEAgTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVl
KEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2UK
IH0KIAogLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVzLgotTWVtb3J5VmFsdWU6Ok1lbW9yeVZh
bHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRl
ciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2Up
CitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlU3RvcmUs
IEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwg
TWVtb3J5VmFsdWU6Ok9mZnNldFR5cGUgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5n
ZSBmZW5jZVJhbmdlKQogICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3Jp
Z2luLCB2YWx1ZSwgcG9pbnRlcikKICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKICAgICAsIG1fcmFu
Z2UocmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlW
YWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAppbmRleCBj
ZWMwMzgwLi42YWYzYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNN
ZW1vcnlWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVl
LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJCM0JhbmsuaCIKICNpbmNsdWRlICJCM0hl
YXBSYW5nZS5oIgogI2luY2x1ZGUgIkIzVmFsdWUuaCIKKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4K
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKQEAgLTQzLDEzICs0NCwxNyBAQCBw
dWJsaWM6CiAKICAgICB+TWVtb3J5VmFsdWUoKTsKIAotICAgIGludDMyX3Qgb2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KLSAgICB2b2lkIHNldE9mZnNldChpbnQzMl90IG9mZnNl
dCkgeyBtX29mZnNldCA9IG9mZnNldDsgfQotICAgIAorICAgIE9mZnNldFR5cGUgb2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5
cGVuYW1lID0gSXNMZWdhbE9mZnNldDxJbnQ+PgorICAgIHZvaWQgc2V0T2Zmc2V0KEludCBvZmZz
ZXQpIHsgbV9vZmZzZXQgPSBvZmZzZXQ7IH0KKwogICAgIC8vIFlvdSBkb24ndCBoYXZlIHRvIHdv
cnJ5IGFib3V0IHVzaW5nIGxlZ2FsIG9mZnNldHMgdW5sZXNzIHlvdSd2ZSBlbnRlcmVkIHF1aXJr
cyBtb2RlLgotICAgIGJvb2wgaXNMZWdhbE9mZnNldChpbnQzMl90IG9mZnNldCkgY29uc3Q7Ci0g
ICAgYm9vbCBpc0xlZ2FsT2Zmc2V0KGludDY0X3Qgb2Zmc2V0KSBjb25zdDsKLSAgICAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsCisgICAgICAgIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19pbnRlZ3JhbDxJbnQ+Ojp2YWx1ZT46OnR5cGUsCisgICAgICAgIHR5
cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zaWduZWQ8SW50Pjo6dmFs
dWU+Ojp0eXBlCisgICAgPgorICAgIGJvb2wgaXNMZWdhbE9mZnNldChJbnQgb2Zmc2V0KSBjb25z
dCB7IHJldHVybiBpc0xlZ2FsT2Zmc2V0SW1wbChvZmZzZXQpOyB9CisKICAgICAvLyBBIG5lY2Vz
c2FyeSBjb25zZXF1ZW5jZSBvZiBNZW1vcnlWYWx1ZSBoYXZpbmcgYW4gb2Zmc2V0IGlzIHRoYXQg
aXQgcGFydGljaXBhdGVzIGluIGluc3RydWN0aW9uCiAgICAgLy8gc2VsZWN0aW9uLiBUaGlzIHRl
bGxzIHlvdSBpZiB0aGlzIHdpbGwgZ2V0IGxvd2VyZWQgdG8gc29tZXRoaW5nIHRoYXQgcmVxdWly
ZXMgYW4gb2Zmc2V0bGVzcwogICAgIC8vIGFkZHJlc3MuCkBAIC04NCw4ICs4OSw4IEBAIHByb3Rl
Y3RlZDoKIAogICAgIFZhbHVlKiBjbG9uZUltcGwoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICBNZW1vcnlWYWx1ZShDaGVja2VkT3Bj
b2RlVGFnLCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgaW50MzJfdCBvZmZz
ZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UsIEFyZ3VtZW50cy4uLiBh
cmd1bWVudHMpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IElzTGVnYWxP
ZmZzZXQ8SW50PiwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIE1lbW9yeVZhbHVlKENoZWNr
ZWRPcGNvZGVUYWcsIEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBJbnQgb2Zm
c2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlLCBBcmd1bWVudHMuLi4g
YXJndW1lbnRzKQogICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9y
aWdpbiwgYXJndW1lbnRzLi4uKQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKICAgICAgICAg
LCBtX3JhbmdlKHJhbmdlKQpAQCAtOTUsMTggKzEwMCw1NCBAQCBwcm90ZWN0ZWQ6CiAgICAgCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Ci0gICAgCisKKyAgICBib29sIGlz
TGVnYWxPZmZzZXRJbXBsKGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKKyAgICBib29sIGlzTGVnYWxP
ZmZzZXRJbXBsKGludDY0X3Qgb2Zmc2V0KSBjb25zdDsKKworICAgIGVudW0gTWVtb3J5VmFsdWVM
b2FkIHsgTWVtb3J5VmFsdWVMb2FkVGFnIH07CisgICAgZW51bSBNZW1vcnlWYWx1ZUxvYWRJbXBs
aWVkIHsgTWVtb3J5VmFsdWVMb2FkSW1wbGllZFRhZyB9OworICAgIGVudW0gTWVtb3J5VmFsdWVT
dG9yZSB7IE1lbW9yeVZhbHVlU3RvcmVUYWcgfTsKKwogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9y
IExvYWQgKGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBo
YXZlIGEgc3VmZml4IHRoYXQKICAgICAvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgot
ICAgIE1lbW9yeVZhbHVlKEtpbmQsIFR5cGUsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMy
X3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJh
bmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSk7CisgICAgTWVtb3J5VmFsdWUoS2luZCBraW5k
LCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyKQorICAgICAgICA6IE1l
bW9yeVZhbHVlKE1lbW9yeVZhbHVlTG9hZFRhZywga2luZCwgdHlwZSwgb3JpZ2luLCBwb2ludGVy
KQorICAgIHsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IElz
TGVnYWxPZmZzZXQ8SW50Pj4KKyAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwg
T3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIEludCBvZmZzZXQsIEhlYXBSYW5nZSByYW5n
ZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlKCkp
CisgICAgICAgIDogTWVtb3J5VmFsdWUoTWVtb3J5VmFsdWVMb2FkVGFnLCBraW5kLCB0eXBlLCBv
cmlnaW4sIHBvaW50ZXIsIG9mZnNldCwgcmFuZ2UsIGZlbmNlUmFuZ2UpCisgICAgeworICAgIH0K
IAogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBp
cyBpbXBsaWVkLgotICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIs
IGludDMyX3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwg
SGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSk7CisgICAgTWVtb3J5VmFsdWUoS2lu
ZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlcikKKyAgICAgICAgOiBNZW1vcnlW
YWx1ZShNZW1vcnlWYWx1ZUxvYWRJbXBsaWVkVGFnLCBraW5kLCBvcmlnaW4sIHBvaW50ZXIpCisg
ICAgeworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gSXNMZWdh
bE9mZnNldDxJbnQ+PgorICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwg
VmFsdWUqIHBvaW50ZXIsIEludCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6
dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlKCkpCisgICAgICAgIDogTWVt
b3J5VmFsdWUoTWVtb3J5VmFsdWVMb2FkSW1wbGllZFRhZywga2luZCwgb3JpZ2luLCBwb2ludGVy
LCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdlKQorICAgIHsKKyAgICB9CiAKICAgICAvLyBVc2Ug
dGhpcyBmb3JtIGZvciBzdG9yZXMuCi0gICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1
ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSBy
YW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdl
KCkpOwotICAgIAotICAgIGludDMyX3QgbV9vZmZzZXQgeyAwIH07CisgICAgTWVtb3J5VmFsdWUo
S2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyKQor
ICAgICAgICA6IE1lbW9yeVZhbHVlKE1lbW9yeVZhbHVlU3RvcmVUYWcsIGtpbmQsIG9yaWdpbiwg
dmFsdWUsIHBvaW50ZXIpCisgICAgeworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQs
IHR5cGVuYW1lID0gSXNMZWdhbE9mZnNldDxJbnQ+PgorICAgIE1lbW9yeVZhbHVlKEtpbmQga2lu
ZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgSW50IG9mZnNl
dCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFu
Z2UgPSBIZWFwUmFuZ2UoKSkKKyAgICAgICAgOiBNZW1vcnlWYWx1ZShNZW1vcnlWYWx1ZVN0b3Jl
VGFnLCBraW5kLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJh
bmdlKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBUaGUgYWJvdmUgdGVtcGxhdGVzIGZvcndhcmQg
dG8gdGhlc2UgaW1wbGVtZW50YXRpb25zLgorICAgIE1lbW9yeVZhbHVlKE1lbW9yeVZhbHVlTG9h
ZCwgS2luZCwgVHlwZSwgT3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgT2Zmc2V0VHlwZSA9IDAsIEhl
YXBSYW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJh
bmdlKCkpOworICAgIE1lbW9yeVZhbHVlKE1lbW9yeVZhbHVlTG9hZEltcGxpZWQsIEtpbmQsIE9y
aWdpbiwgVmFsdWUqIHBvaW50ZXIsIE9mZnNldFR5cGUgPSAwLCBIZWFwUmFuZ2UgPSBIZWFwUmFu
Z2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKTsKKyAgICBNZW1v
cnlWYWx1ZShNZW1vcnlWYWx1ZVN0b3JlLCBLaW5kLCBPcmlnaW4sIFZhbHVlKiwgVmFsdWUqIHBv
aW50ZXIsIE9mZnNldFR5cGUgPSAwLCBIZWFwUmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFw
UmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKTsKKworICAgIE9mZnNldFR5cGUgbV9vZmZz
ZXQgeyAwIH07CiAgICAgSGVhcFJhbmdlIG1fcmFuZ2UgeyBIZWFwUmFuZ2U6OnRvcCgpIH07CiAg
ICAgSGVhcFJhbmdlIG1fZmVuY2VSYW5nZSB7IEhlYXBSYW5nZSgpIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWVJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZUlubGluZXMuaAppbmRleCBhNDcyMzJj
Li4wNmQ3YWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlW
YWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1
ZUlubGluZXMuaApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsKIAotaW5saW5lIGJvb2wgTWVtb3J5VmFsdWU6OmlzTGVnYWxPZmZzZXQoaW50MzJfdCBv
ZmZzZXQpIGNvbnN0CitpbmxpbmUgYm9vbCBNZW1vcnlWYWx1ZTo6aXNMZWdhbE9mZnNldEltcGwo
aW50MzJfdCBvZmZzZXQpIGNvbnN0CiB7CiAgICAgLy8gTk9URTogVGhpcyBpcyBpbmxpbmUgYmVj
YXVzZSBpdCBjb25zdGFudC1mb2xkcyB0byB0cnVlIG9uIHg4NiEKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01vdmVDb25zdGFudHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAKaW5kZXggYTMyYzU4Zi4uNzZmMTJm
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAKQEAg
LTIwOSw3ICsyMDksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoYmVzdFBvaW50ZXIpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZW1vcnlWYWx1ZS0+bGFzdENoaWxkKCkgPSBiZXN0UG9pbnRlcjsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlWYWx1ZS0+c2V0T2Zmc2V0KGRlc2lyZWRPZmZz
ZXQoYmVzdFBvaW50ZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlWYWx1
ZS0+c2V0T2Zmc2V0KHN0YXRpY19jYXN0PGludDMyX3Q+KGRlc2lyZWRPZmZzZXQoYmVzdFBvaW50
ZXIpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzA4LDEyICszMDgsMTYgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBpZiAob2ZmTGltaXRzLmNvbnRhaW5zKHZhbHVlKSkKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKKyAgICAgICAgICAgICAgICBhdXRvIG9mZnNldCA9IHNp
emVvZihpbnQ2NF90KSAqIG1fY29uc3RUYWJsZS5nZXQoa2V5KTsKKyAgICAgICAgICAgICAgICBp
ZiAoIWlzUmVwcmVzZW50YWJsZUFzPFZhbHVlOjpPZmZzZXRUeXBlPihvZmZzZXQpKQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgICAgIFZhbHVlKiB0YWJsZUJh
c2UgPSBtX2luc2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFudCgKICAgICAgICAgICAgICAgICAg
ICAgdmFsdWVJbmRleCwgdmFsdWUtPm9yaWdpbigpLCBwb2ludGVyVHlwZSgpLAogICAgICAgICAg
ICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KG1fZGF0YVNlY3Rpb24pKTsKICAgICAg
ICAgICAgICAgICBWYWx1ZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PE1lbW9yeVZh
bHVlPigKICAgICAgICAgICAgICAgICAgICAgdmFsdWVJbmRleCwgTG9hZCwgdmFsdWUtPnR5cGUo
KSwgdmFsdWUtPm9yaWdpbigpLCB0YWJsZUJhc2UsCi0gICAgICAgICAgICAgICAgICAgIHNpemVv
ZihpbnQ2NF90KSAqIG1fY29uc3RUYWJsZS5nZXQoa2V5KSk7CisgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRUeXBlPihvZmZzZXQpKTsKICAgICAgICAgICAgICAg
ICB2YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyZXN1bHQpOwogICAgICAgICAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKaW5kZXggMTEw
YTZkMy4uZDk1MjI0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVk
dWNlU3RyZW5ndGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0
cmVuZ3RoLmNwcApAQCAtMTU1NSw3ICsxNTU1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICBpbnRwdHJfdCBvZmZzZXQgPSBhZGRyZXNzLT5jaGlsZCgxKS0+YXNJbnRQdHIoKTsKICAgICAg
ICAgICAgICAgICBpZiAoIXN1bU92ZXJmbG93czxpbnRwdHJfdD4ob2Zmc2V0LCBtZW1vcnktPm9m
ZnNldCgpKSkgewogICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbWVtb3J5LT5vZmZzZXQo
KTsKLSAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzbWFsbE9mZnNldCA9IHN0YXRpY19jYXN0
PGludDMyX3Q+KG9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlOjpPZmZzZXRUeXBl
IHNtYWxsT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8VmFsdWU6Ok9mZnNldFR5cGU+KG9mZnNldCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChzbWFsbE9mZnNldCA9PSBvZmZzZXQpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZHJlc3MgPSBhZGRyZXNzLT5jaGlsZCgwKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1lbW9yeS0+bGFzdENoaWxkKCkgPSBhZGRyZXNzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKaW5kZXggYTBjMjE1ZS4uMzBj
Y2RlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVj
aWFsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwu
Y3BwCkBAIC0yNzAsNyArMjcwLDcgQEAgVmFsdWVSZXAgU3RhY2ttYXBTcGVjaWFsOjpyZXBGb3JB
cmcoQ29kZSYgY29kZSwgY29uc3QgQXJnJiBhcmcpCiAgICAgICAgIGlmIChhcmcuYmFzZSgpID09
IFRtcChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlcikpCiAgICAgICAgICAgICByZXR1cm4gVmFs
dWVSZXA6OnN0YWNrKGFyZy5vZmZzZXQoKSk7CiAgICAgICAgIEFTU0VSVChhcmcuYmFzZSgpID09
IFRtcChNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpKTsKLSAgICAgICAgcmV0
dXJuIFZhbHVlUmVwOjpzdGFjayhhcmcub2Zmc2V0KCkgLSBzdGF0aWNfY2FzdDxpbnQzMl90Pihj
b2RlLmZyYW1lU2l6ZSgpKSk7CisgICAgICAgIHJldHVybiBWYWx1ZVJlcDo6c3RhY2soYXJnLm9m
ZnNldCgpIC0gc2FmZUNhc3Q8VmFsdWU6Ok9mZnNldFR5cGU+KGNvZGUuZnJhbWVTaXplKCkpKTsK
ICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIFZhbHVlUmVwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAppbmRleCA1ZGZjMjg0
Li43YmNjMDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKQEAgLTM5LDYgKzM5LDcg
QEAKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgewpAQCAtMjgzLDYgKzI4NCwyMiBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIHdhbGsoY29uc3QgRnVuY3RvciYgZnVuY3Rvciwg
UGhpQ2hpbGRyZW4qID0gbnVsbHB0cik7CiAKKyAgICAvLyBCMyBwdXJwb3NlZnVsbHkgb25seSBy
ZXByZXNlbnRzIHNpZ25lZCAzMi1iaXQgb2Zmc2V0cyBiZWNhdXNlIHRoYXQncyB3aGF0IHg4NiBj
YW4gZW5jb2RlLCBhbmQKKyAgICAvLyBBUk02NCBjYW5ub3QgZW5jb2RlIGFueXRoaW5nIGJpZ2dl
ci4gVGhlIElzTGVnYWxPZmZzZXQgdHlwZSB0cmFpdCBpcyB0aGVuIHVzZWQgb24gQjMgVmFsdWUK
KyAgICAvLyBtZXRob2RzIHRvIHByZXZlbnQgaW1wbGljaXQgY29udmVyc2lvbnMgYnkgQysrIGZy
b20gaW52YWxpZCBvZmZzZXQgdHlwZXM6IHRoZXNlIGNhdXNlIGNvbXBpbGF0aW9uCisgICAgLy8g
dG8gZmFpbCwgaW5zdGVhZCBvZiBjYXVzaW5nIGltcGxlbWVudGF0aW9uLWRlZmluZWQgYmVoYXZp
b3IgKHdoaWNoIG9mdGVuIHR1cm5zIHRvIGV4cGxvaXQpLgorICAgIC8vIE9mZnNldFR5cGUgaXNu
J3Qgc3VmZmljaWVudCB0byBkZXRlcm1pbmUgb2Zmc2V0IHZhbGlkaXR5ISBFYWNoIFZhbHVlIG9w
Y29kZSBmdXJ0aGVyIGhhcyBhbgorICAgIC8vIGlzTGVnYWxPZmZzZXQgcnVudGltZSBtZXRob2Qg
dXNlZCB0byBkZXRlcm1pbmUgdmFsdWUgbGVnYWxpdHkgYXQgcnVudGltZS4gVGhpcyBpcyBleHBv
c2VkIHRvIHVzZXJzCisgICAgLy8gb2YgQjMgdG8gZm9yY2UgdGhlbSB0byByZWFzb24gYWJvdXQg
dGhlIHRhcmdldCdzIG9mZnNldC4KKyAgICB0eXBlZGVmIGludDMyX3QgT2Zmc2V0VHlwZTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQ+CisgICAgc3RydWN0IElzTGVnYWxPZmZzZXQgOiBzdGQ6
OmNvbmp1bmN0aW9uPAorICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2lu
dGVncmFsPEludD46OnZhbHVlPjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19zaWduZWQ8SW50Pjo6dmFsdWU+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzaXplb2YoSW50KSA8PSBzaXplb2YoT2Zmc2V0VHlwZSk+Ojp0eXBlCisg
ICAgPiB7IH07CisKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgVmFsdWUqIGNsb25lSW1wbCgp
IGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBcmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCmluZGV4
IDUzYzUyZTEuLmQwZTY5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQXJnLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5h
bWVzcGFjZSBBaXIgewogCi1BcmcgQXJnOjpzdGFja0FkZHIoaW50MzJfdCBvZmZzZXRGcm9tRlAs
IHVuc2lnbmVkIGZyYW1lU2l6ZSwgV2lkdGggd2lkdGgpCitBcmcgQXJnOjpzdGFja0FkZHJJbXBs
KGludDMyX3Qgb2Zmc2V0RnJvbUZQLCB1bnNpZ25lZCBmcmFtZVNpemUsIFdpZHRoIHdpZHRoKQog
ewogICAgIEFyZyByZXN1bHQgPSBBcmc6OmFkZHIoQWlyOjpUbXAoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpLCBvZmZzZXRGcm9tRlApOwogICAgIGlmICghcmVzdWx0LmlzVmFsaWRGb3JtKHdp
ZHRoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKaW5kZXggYWExMWJlNS4u
YzJlZDRmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiQjNCYW5rLmgiCiAjaW5jbHVkZSAiQjNDb21tb24uaCIKICNpbmNs
dWRlICJCM1R5cGUuaCIKKyNpbmNsdWRlICJCM1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNXaWR0aC5o
IgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCkBAIC01MzQsNyArNTM1LDggQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHN0YXRpYyBBcmcgYWRkcihB
aXI6OlRtcCBiYXNlLCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PEludD4+CisgICAgc3RhdGljIEFy
ZyBhZGRyKEFpcjo6VG1wIGJhc2UsIEludCBvZmZzZXQpCiAgICAgewogICAgICAgICBBU1NFUlQo
YmFzZS5pc0dQKCkpOwogICAgICAgICBBcmcgcmVzdWx0OwpAQCAtNTQ0LDcgKzU0NiwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgc3RhdGljIEFyZyBz
dGFjayhTdGFja1Nsb3QqIHZhbHVlLCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgc3RhdGljIEFy
ZyBhZGRyKEFpcjo6VG1wIGJhc2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRkcihiYXNlLCAw
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6
OklzTGVnYWxPZmZzZXQ8SW50Pj4KKyAgICBzdGF0aWMgQXJnIHN0YWNrKFN0YWNrU2xvdCogdmFs
dWUsIEludCBvZmZzZXQpCiAgICAgewogICAgICAgICBBcmcgcmVzdWx0OwogICAgICAgICByZXN1
bHQubV9raW5kID0gU3RhY2s7CkBAIC01NTMsMTUgKzU2MSwyNSBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgc3RhdGljIEFyZyBjYWxsQXJnKGludDMyX3Qg
b2Zmc2V0KQorICAgIHN0YXRpYyBBcmcgc3RhY2soU3RhY2tTbG90KiB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzdGFjayh2YWx1ZSwgMCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PEludD4+CisgICAgc3Rh
dGljIEFyZyBjYWxsQXJnKEludCBvZmZzZXQpCiAgICAgewogICAgICAgICBBcmcgcmVzdWx0Owog
ICAgICAgICByZXN1bHQubV9raW5kID0gQ2FsbEFyZzsKICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0
ID0gb2Zmc2V0OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICAKLSAgICBzdGF0
aWMgQXJnIHN0YWNrQWRkcihpbnQzMl90IG9mZnNldEZyb21GUCwgdW5zaWduZWQgZnJhbWVTaXpl
LCBXaWR0aCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6
OklzTGVnYWxPZmZzZXQ8SW50Pj4KKyAgICBzdGF0aWMgQXJnIHN0YWNrQWRkcihJbnQgb2Zmc2V0
RnJvbUZQLCB1bnNpZ25lZCBmcmFtZVNpemUsIFdpZHRoIHdpZHRoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHN0YWNrQWRkckltcGwob2Zmc2V0RnJvbUZQLCBmcmFtZVNpemUsIHdpZHRoKTsKKyAg
ICB9CiAKICAgICAvLyBJZiB5b3UgZG9uJ3QgcGFzcyBhIFdpZHRoLCB0aGlzIG9wdGltaXN0aWNh
bGx5IGFzc3VtZXMgdGhhdCB5b3UncmUgdXNpbmcgdGhlIHJpZ2h0IHdpZHRoLgogICAgIHN0YXRp
YyBib29sIGlzVmFsaWRTY2FsZSh1bnNpZ25lZCBzY2FsZSwgc3RkOjpvcHRpb25hbDxXaWR0aD4g
d2lkdGggPSBzdGQ6Om51bGxvcHQpCkBAIC02MDQsNyArNjIyLDggQEAgcHVibGljOgogICAgICAg
ICB9CiAgICAgfQogCi0gICAgc3RhdGljIEFyZyBpbmRleChBaXI6OlRtcCBiYXNlLCBBaXI6OlRt
cCBpbmRleCwgdW5zaWduZWQgc2NhbGUgPSAxLCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PEludD4+
CisgICAgc3RhdGljIEFyZyBpbmRleChBaXI6OlRtcCBiYXNlLCBBaXI6OlRtcCBpbmRleCwgdW5z
aWduZWQgc2NhbGUsIEludCBvZmZzZXQpCiAgICAgewogICAgICAgICBBU1NFUlQoYmFzZS5pc0dQ
KCkpOwogICAgICAgICBBU1NFUlQoaW5kZXguaXNHUCgpKTsKQEAgLTYxOCw2ICs2MzcsMTEgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIHN0YXRpYyBBcmcg
aW5kZXgoQWlyOjpUbXAgYmFzZSwgQWlyOjpUbXAgaW5kZXgsIHVuc2lnbmVkIHNjYWxlID0gMSkK
KyAgICB7CisgICAgICAgIHJldHVybiBBcmc6OmluZGV4KGJhc2UsIGluZGV4LCBzY2FsZSwgMCk7
CisgICAgfQorCiAgICAgc3RhdGljIEFyZyByZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKICAgICB7CiAgICAgICAgIEFyZyByZXN1bHQ7CkBAIC05
MjUsMTIgKzk0OSwxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc09mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIGlzTWVtb3J5KCk7IH0KICAgICAKLSAgICBpbnQzMl90IG9mZnNldCgpIGNvbnN0Cisg
ICAgVmFsdWU6Ok9mZnNldFR5cGUgb2Zmc2V0KCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChr
aW5kKCkgPT0gU3RhY2spCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
bV9zY2FsZSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmFsdWU6Ok9mZnNldFR5
cGU+KG1fc2NhbGUpOwogICAgICAgICBBU1NFUlQoa2luZCgpID09IEFkZHIgfHwga2luZCgpID09
IENhbGxBcmcgfHwga2luZCgpID09IEluZGV4KTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludDMyX3Q+KG1fb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFZhbHVlOjpP
ZmZzZXRUeXBlPihtX29mZnNldCk7CiAgICAgfQogCiAgICAgU3RhY2tTbG90KiBzdGFja1Nsb3Qo
KSBjb25zdApAQCAtMTE0MSw3ICsxMTY1LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEFkZHJGb3JtKGludDMyX3Qgb2Zm
c2V0LCBzdGQ6Om9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6OklzTGVnYWxPZmZzZXQ8SW50Pj4K
KyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkQWRkckZvcm0oSW50IG9mZnNldCwgc3RkOjpvcHRpb25h
bDxXaWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpCiAgICAgewogICAgICAgICBpZiAoaXNYODYo
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTE2Niw3ICsxMTkxLDggQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgaXNWYWxp
ZEluZGV4Rm9ybSh1bnNpZ25lZCBzY2FsZSwgaW50MzJfdCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8
V2lkdGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwg
dHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgorICAgIHN0YXRpYyBib29sIGlz
VmFsaWRJbmRleEZvcm0odW5zaWduZWQgc2NhbGUsIEludCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8
V2lkdGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAgICAgICAgaWYgKCFpc1ZhbGlk
U2NhbGUoc2NhbGUsIHdpZHRoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNzYs
NyArMTMwMiw3IEBAIHB1YmxpYzoKICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyIGFz
VHJ1c3RlZEltbTMyKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0ltbSgpIHx8IGlz
Qml0SW1tKCkpOwotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDxpbnQzMl90PihtX29mZnNldCkpOworICAgICAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxWYWx1ZTo6T2Zmc2V0VHlwZT4obV9vZmZz
ZXQpKTsKICAgICB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMTMwMSw3ICsxMzI3LDcgQEAg
cHVibGljOgogICAgICAgICBpZiAoaXNTaW1wbGVBZGRyKCkpCiAgICAgICAgICAgICByZXR1cm4g
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlLmdwcigpKTsKICAgICAgICAgQVNTRVJUKGlz
QWRkcigpKTsKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5n
cHIoKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obV9vZmZzZXQpKTsKKyAgICAgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5ncHIoKSwgc3RhdGljX2Nhc3Q8VmFsdWU6Ok9m
ZnNldFR5cGU+KG1fb2Zmc2V0KSk7CiAgICAgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJ
bmRleCBhc0Jhc2VJbmRleCgpIGNvbnN0CkBAIC0xMzA5LDcgKzEzMzUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIEFTU0VSVChpc0luZGV4KCkpOwogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6
OkJhc2VJbmRleCgKICAgICAgICAgICAgIG1fYmFzZS5ncHIoKSwgbV9pbmRleC5ncHIoKSwgc3Rh
dGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlNjYWxlPihsb2dTY2FsZSgpKSwKLSAgICAgICAgICAg
IHN0YXRpY19jYXN0PGludDMyX3Q+KG1fb2Zmc2V0KSk7CisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxWYWx1ZTo6T2Zmc2V0VHlwZT4obV9vZmZzZXQpKTsKICAgICB9CiAKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBhc1JlbGF0aW9uYWxDb25kaXRpb24oKSBjb25zdApA
QCAtMTQxMiw2ICsxNDM4LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKKyAgICBzdGF0
aWMgQXJnIHN0YWNrQWRkckltcGwoaW50MzJfdCwgdW5zaWduZWQsIFdpZHRoKTsKKwogICAgIGlu
dDY0X3QgbV9vZmZzZXQgeyAwIH07CiAgICAgS2luZCBtX2tpbmQgeyBJbnZhbGlkIH07CiAgICAg
aW50MzJfdCBtX3NjYWxlIHsgMSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJMb3dlclN0YWNrQXJncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0Fpckxvd2VyU3RhY2tBcmdzLmNwcAppbmRleCA2YWFmOTkyLi44MzdjNmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyU3RhY2tBcmdzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyU3RhY2tBcmdzLmNwcApA
QCAtNzQsNyArNzQsNyBAQCB2b2lkIGxvd2VyU3RhY2tBcmdzKENvZGUmIGNvZGUpCiAgICAgICAg
ICAgICBJbnN0JiBpbnN0ID0gYmxvY2stPmF0KGluc3RJbmRleCk7CiAgICAgICAgICAgICBpbnN0
LmZvckVhY2hBcmcoCiAgICAgICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJv
bGUsIEJhbmssIFdpZHRoIHdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc3RhY2tB
ZGRyID0gWyZdIChpbnQzMl90IG9mZnNldCkgLT4gQXJnIHsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byBzdGFja0FkZHIgPSBbJl0gKFZhbHVlOjpPZmZzZXRUeXBlIG9mZnNldCkgLT4gQXJnIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIEFyZyByZXN1bHQgPSBBcmc6OnN0YWNrQWRkcihvZmZz
ZXQsIGNvZGUuZnJhbWVTaXplKCksIHdpZHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRkFUQUw6
IENvdWxkIG5vdCBjcmVhdGUgc3RhY2sgcmVmZXJlbmNlIGZvciBvZmZzZXQgPSAiLCBvZmZzZXQs
ICIgYW5kIHdpZHRoID0gIiwgd2lkdGgsICJcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcAppbmRleCA4MGU3NTRjLi42NjFhOTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmNwcApAQCAtODc5LDEwICs4NzksMTAgQEAgdm9pZCB0ZXN0TXVsQXJnU3RvcmUoaW50IGEpCiAK
ICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAogICAgICAgICBwcm9jLCBTdG9yZSwg
T3JpZ2luKCksIHZhbHVlLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksICZ2YWx1ZVNsb3QpKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmdmFsdWVTbG90KSwgMCk7CiAgICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKICAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLCBt
dWwsCi0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgJm11bFNsb3QpKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAmbXVsU2xvdCksIDApOwogCiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwpAQCAtNTQyMSw3ICs1NDIxLDcgQEAg
dm9pZCB0ZXN0U3RvcmUzMihpbnQgdmFsdWUpCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCiAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCiAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksICZzbG90KSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpLCAwKTsKICAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCiAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CiAKQEAgLTU0MzcsNyArNTQzNyw3
IEBAIHZvaWQgdGVzdFN0b3JlQ29uc3RhbnQoaW50IHZhbHVlKQogICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4oCiAgICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKSwKLSAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xv
dCkpOworICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksICZzbG90KSwgMCk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAogICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgMCkpOwogCkBAIC01NDU3LDcgKzU0NTcsNyBAQCB2b2lkIHRlc3RTdG9y
ZUNvbnN0YW50UHRyKGludHB0cl90IHZhbHVlKQogICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4oCiAgICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB2YWx1ZSksCi0gICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpKTsKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xv
dCksIDApOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDApKTsKIApAQCAtNTc1OSw3ICs1NzU5LDcgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2Fk
MzIoaW50IGFtb3VudCkKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAg
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAogICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSkpLAotICAgICAgICBzbG90UHRyKTsKKyAgICAgICAgc2xvdFB0ciwgMCk7CiAg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMCkpOwpAQCAtNTgwOSw3ICs1ODA5LDcgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1t
MzIoaW50IGFtb3VudCkKICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCiAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmln
aW4oKSwgc2xvdFB0ciksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KSksCi0gICAgICAgIHNsb3RQdHIpOworICAgICAgICBz
bG90UHRyLCAwKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CkBAIC01ODMyLDcgKzU4MzIsNyBAQCB2b2lkIHRlc3RT
dG9yZUFkZExvYWQ4KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKICAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAogICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAotICAgICAgICBz
bG90UHRyKTsKKyAgICAgICAgc2xvdFB0ciwgMCk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwpAQCAtNTkyMSw3ICs1
OTIxLDcgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tOChpbnQgYW1vdW50LCBCMzo6T3Bjb2Rl
IGxvYWRPcGNvZGUpCiAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAogICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4o
KSwgc2xvdFB0ciksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYW1vdW50KSksCi0gICAgICAgIHNsb3RQdHIpOworICAgICAgICBzbG90
UHRyLCAwKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAwKSk7CkBAIC01OTQ0LDcgKzU5NDQsNyBAQCB2b2lkIHRlc3RTdG9y
ZUFkZExvYWQxNihpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCiAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKLSAgICAgICAgc2xv
dFB0cik7CisgICAgICAgIHNsb3RQdHIsIDApOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZSgKICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKQEAgLTU5OTQsNyArNTk5
NCw3IEBAIHZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTE2KGludCBhbW91bnQsIEIzOjpPcGNvZGUg
bG9hZE9wY29kZSkKICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCiAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigp
LCBzbG90UHRyKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBhbW91bnQpKSwKLSAgICAgICAgc2xvdFB0cik7CisgICAgICAgIHNsb3RQ
dHIsIDApOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIDApKTsKQEAgLTYwMTUsNyArNjAxNSw3IEBAIHZvaWQgdGVzdFN0b3Jl
QWRkTG9hZDY0KGludCBhbW91bnQpCiAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAog
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2
NCwgT3JpZ2luKCksIHNsb3RQdHIpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAg
ICAgICAgc2xvdFB0cik7CisgICAgICAgIHNsb3RQdHIsIDApOwogICAgIHJvb3QtPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZSgKICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKQEAgLTYw
NjMsNyArNjA2Myw3IEBAIHZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTY0KGludDY0X3QgYW1vdW50
KQogICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBzbG90UHRy
KSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCBhbW91bnQpKSwKLSAgICAgICAgc2xvdFB0cik7CisgICAgICAgIHNsb3RQdHIsIDApOwog
ICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIDApKTsKQEAgLTYwOTUsNyArNjA5NSw3IEBAIHZvaWQgdGVzdFN0b3JlQWRkTG9hZDMy
SW5kZXgoaW50IGFtb3VudCkKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCiAg
ICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAogICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSkpLAotICAgICAgICBzbG90UHRyKTsKKyAgICAgICAgc2xvdFB0ciwgMCk7
CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAogICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgMCkpOwpAQCAtNjEyNSw3ICs2MTI1LDcgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2Fk
SW1tMzJJbmRleChpbnQgYW1vdW50KQogICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwK
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50
MzIsIE9yaWdpbigpLCBzbG90UHRyKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpKSwKLSAgICAgICAgc2xvdFB0cik7Cisg
ICAgICAgIHNsb3RQdHIsIDApOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKQEAgLTYyNzksNyArNjI3OSw3IEBAIHZv
aWQgdGVzdFN0b3JlQWRkTG9hZDY0SW5kZXgoaW50IGFtb3VudCkKICAgICAgICAgICAgIHByb2Ms
IEFkZCwgT3JpZ2luKCksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgc2xvdFB0ciksCiAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpLAotICAgICAgICBzbG90UHRyKTsKKyAgICAgICAgc2xvdFB0ciwgMCk7CiAg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMCkpOwpAQCAtNjMwOSw3ICs2MzA5LDcgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1t
NjRJbmRleChpbnQ2NF90IGFtb3VudCkKICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCks
CiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIElu
dDY0LCBPcmlnaW4oKSwgc2xvdFB0ciksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KSksCi0gICAgICAgIHNsb3RQdHIpOwor
ICAgICAgICBzbG90UHRyLCAwKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CkBAIC02MzMzLDcgKzYzMzMsNyBAQCB2
b2lkIHRlc3RTdG9yZVN1YkxvYWQoaW50IGFtb3VudCkKICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAogICAg
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAotICAgICAgICBzbG90UHRyKTsKKyAgICAg
ICAgc2xvdFB0ciwgMCk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAogICAgICAg
ICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwpAQCAtNjM1NCwxMyArNjM1NCwxMyBAQCB2b2lk
IHRlc3RTdG9yZUFkZExvYWRJbnRlcmZlcmVuY2UoaW50IGFtb3VudCkKICAgICByb290LT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KAogICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCiAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA2NjYpLAot
ICAgICAgICBvdGhlclNsb3RQdHIpOworICAgICAgICBvdGhlclNsb3RQdHIsIDApOwogICAgIHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCiAgICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4o
KSwKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKICAgICAgICAgICAgIHByb2MsIEFk
ZCwgT3JpZ2luKCksCiAgICAgICAgICAgICBsb2FkLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KSksCi0gICAgICAgIHNsb3RQdHIpOworICAgICAg
ICBzbG90UHRyLCAwKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CkBAIC02Mzg0LDcgKzYzODQsNyBAQCB2b2lkIHRl
c3RTdG9yZUFkZEFuZExvYWQoaW50IGFtb3VudCwgaW50IG1hc2spCiAgICAgICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCks
IHNsb3RQdHIpLAogICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBhbW91bnQpKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBtYXNrKSksCi0gICAgICAgIHNsb3RQdHIpOwor
ICAgICAgICBzbG90UHRyLCAwKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CkBAIC02NDA4LDcgKzY0MDgsNyBAQCB2
b2lkIHRlc3RTdG9yZU5lZ0xvYWQzMihpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgcHJvYywg
U3ViLCBPcmlnaW4oKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAwKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBzbG90UHRyKSksCi0gICAgICAgIHNs
b3RQdHIpOworICAgICAgICBzbG90UHRyLCAwKTsKICAgICAKICAgICByb290LT5hcHBlbmROZXdD
b250cm9sVmFsdWUoCiAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CkBAIC02NDMyLDcgKzY0MzIs
NyBAQCB2b2lkIHRlc3RTdG9yZU5lZ0xvYWRQdHIoaW50cHRyX3QgdmFsdWUpCiAgICAgICAgICAg
ICBwcm9jLCBTdWIsIE9yaWdpbigpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIHNsb3RQ
dHIpKSwKLSAgICAgICAgc2xvdFB0cik7CisgICAgICAgIHNsb3RQdHIsIDApOwogICAgIAogICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsK
QEAgLTY0NjgsNyArNjQ2OCw3IEBAIHZvaWQgdGVzdExvYWRPZmZzZXQoKQogICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIs
IE9yaWdpbigpLCBhcnJheVB0ciwgMCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYXJyYXlQdHIsIHNpemVvZihp
bnQpKSkpOworICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBM
b2FkLCBJbnQzMiwgT3JpZ2luKCksIGFycmF5UHRyLCBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXpl
b2YoaW50KSkpKSk7CiAKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gYXJy
YXlbMF0gKyBhcnJheVsxXSk7CiB9CkBAIC02NDg0LDcgKzY0ODQsNyBAQCB2b2lkIHRlc3RMb2Fk
T2Zmc2V0Tm90Q29uc3RhbnQoKQogICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAogICAg
ICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhcnJheVB0ciwgMCks
Ci0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIElu
dDMyLCBPcmlnaW4oKSwgYXJyYXlQdHIsIHNpemVvZihpbnQpKSkpOworICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFy
cmF5UHRyLCBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2YoaW50KSkpKSk7CiAKICAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludD4ocHJvYywgJmFycmF5WzBdKSA9PSBhcnJheVswXSArIGFycmF5
WzFdKTsKIH0KQEAgLTY1MDgsNyArNjUwOCw3IEBAIHZvaWQgdGVzdExvYWRPZmZzZXRVc2luZ0Fk
ZCgpCiAgICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAogICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgICAgIHBy
b2MsIEFkZCwgT3JpZ2luKCksIGFycmF5UHRyLAotICAgICAgICAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHNpemVvZihpbnQpKSkpKSk7
CisgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludCkpKSkpKSk7CiAgICAg
CiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09IGFycmF5WzBdICsgYXJyYXlb
MV0pOwogfQpAQCAtNjUzMSwxMSArNjUzMSwxMSBAQCB2b2lkIHRlc3RMb2FkT2Zmc2V0VXNpbmdB
ZGRJbnRlcmZlcmVuY2UoKQogICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCiAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAgICAgICBwcm9jLCBBZGQsIE9y
aWdpbigpLCBhcnJheVB0ciwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgc2l6ZW9mKGludCkpKSk7CisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHN0YXRpY19jYXN0PGludDMy
X3Q+KHNpemVvZihpbnQpKSkpKTsKICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAog
ICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHRoZU51bWJlck9mVGhlQmVhc3QsIG90aGVy
QXJyYXlQdHIsIDApOwogICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAg
IHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgdGhlTnVtYmVyT2ZUaGVCZWFzdCwgb3RoZXJBcnJheVB0
ciwgc2l6ZW9mKGludCkpOworICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHRoZU51bWJl
ck9mVGhlQmVhc3QsIG90aGVyQXJyYXlQdHIsIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihp
bnQpKSk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAogICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KApAQCAtNjU2
NSw3ICs2NTY1LDcgQEAgdm9pZCB0ZXN0TG9hZE9mZnNldFVzaW5nQWRkTm90Q29uc3RhbnQoKQog
ICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKICAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICAgICAgICAgICAgICBwcm9jLCBB
ZGQsIE9yaWdpbigpLCBhcnJheVB0ciwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzaXplb2YoaW50KSkpKSkpOworICAg
ICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihpbnQpKSkpKSkpOwogICAgIAogICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAmYXJyYXlbMF0pID09IGFycmF5WzBdICsg
YXJyYXlbMV0pOwogfQpAQCAtNjY5MCw3ICs2NjkwLDcgQEAgdm9pZCB0ZXN0U3RvcmVMb2FkU3Rh
Y2tTbG90KGludCB2YWx1ZSkKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKICAgICAg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSksCi0gICAgICAgIHN0YWNrKTsKKyAgICAgICAgc3RhY2ssIDApOwogICAgIAogICAgIHJvb3Qt
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
QEAgLTY3NjAsNyArNjc2MCw3IEBAIHZvaWQgdGVzdExvYWQoQjM6Ok9wY29kZSBvcGNvZGUsIElu
cHV0VHlwZSB2YWx1ZSkKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
CiAgICAgICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCB0eXBlLCBPcmlnaW4oKSwKICAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICAgICAgc2l6ZW9mKElucHV0VHlw
ZSkpKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2YoSW5wdXRU
eXBlKSkpKTsKIAogICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPENUeXBl
Pihwcm9jLCAmdmFsdWUgLSAxKSwgbW9kZWxMb2FkPENUeXBlPih2YWx1ZSkpKTsKICAgICB9CkBA
IC0xMjkwMiw3ICsxMjkwMiw3IEBAIHZvaWQgdGVzdEludGVycHJldGVyKCkKICAgICAgICAgICAg
IGFkZFRvRGF0YVBvaW50ZXItPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJv
YywgTXVsLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICBhZGRUb0RhdGFQb2ludGVyLT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2lu
dGVyVHlwZSgpLCBPcmlnaW4oKSwgY29kZVBvaW50ZXJWYWx1ZSwgc2l6ZW9mKGludHB0cl90KSks
CisgICAgICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigp
LCBjb2RlUG9pbnRlclZhbHVlLCBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2YoaW50cHRyX3Qp
KSksCiAgICAgICAgICAgICAgICAgYWRkVG9EYXRhUG9pbnRlci0+YXBwZW5kSW50Q29uc3RhbnQo
CiAgICAgICAgICAgICAgICAgICAgIHByb2MsIE9yaWdpbigpLCBwb2ludGVyVHlwZSgpLCBzaXpl
b2YoaW50cHRyX3QpKSkpKTsKICAgICBhZGRUb0RhdGFQb2ludGVyLT5hcHBlbmROZXc8VmFyaWFi
bGVWYWx1ZT4oCkBAIC0xMjkzMSw3ICsxMjkzMSw3IEBAIHZvaWQgdGVzdEludGVycHJldGVyKCkK
ICAgICAgICAgICAgIGFkZFRvQ29kZVBvaW50ZXJUYWtlbi0+YXBwZW5kTmV3PFZhbHVlPigKICAg
ICAgICAgICAgICAgICBwcm9jLCBNdWwsIE9yaWdpbigpLAogICAgICAgICAgICAgICAgIGFkZFRv
Q29kZVBvaW50ZXJUYWtlbi0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgICAg
ICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGNvZGVQb2ludGVyVmFs
dWUsIHNpemVvZihpbnRwdHJfdCkpLAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBw
b2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgY29kZVBvaW50ZXJWYWx1ZSwgc3RhdGljX2Nhc3Q8aW50
MzJfdD4oc2l6ZW9mKGludHB0cl90KSkpLAogICAgICAgICAgICAgICAgIGFkZFRvQ29kZVBvaW50
ZXJUYWtlbi0+YXBwZW5kSW50Q29uc3RhbnQoCiAgICAgICAgICAgICAgICAgICAgIHByb2MsIE9y
aWdpbigpLCBwb2ludGVyVHlwZSgpLCBzaXplb2YoaW50cHRyX3QpKSkpKTsKICAgICBhZGRUb0Nv
ZGVQb2ludGVyVGFrZW4tPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4o
KSwgRnJlcXVlbnRlZEJsb2NrKGRpc3BhdGNoKSk7CkBAIC0xMjk1NCw3ICsxMjk1NCw3IEBAIHZv
aWQgdGVzdEludGVycHJldGVyKCkKICAgICAgICAgICAgIGFkZFRvRGF0YS0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBP
cmlnaW4oKSwgZGF0YVBvaW50ZXJWYWx1ZSksCiAgICAgICAgICAgICBhZGRUb0RhdGEtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5
cGUoKSwgT3JpZ2luKCksIGNvZGVQb2ludGVyVmFsdWUsIHNpemVvZihpbnRwdHJfdCkpKSwKKyAg
ICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgY29kZVBv
aW50ZXJWYWx1ZSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludHB0cl90KSkpKSwKICAg
ICAgICAgZGF0YVBvaW50ZXJWYWx1ZSk7CiAgICAgYWRkVG9EYXRhLT5hcHBlbmROZXc8VmFyaWFi
bGVWYWx1ZT4oCiAgICAgICAgIHByb2MsIFNldCwgT3JpZ2luKCksIGNvZGVQb2ludGVyLApAQCAt
MTM4NzUsNyArMTM4NzUsNyBAQCB2b2lkIHRlc3RUcmFwcGluZ1N0b3JlKCkKICAgICBNZW1vcnlW
YWx1ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAogICAgICAgICBwcm9j
LCB0cmFwcGluZyhTdG9yZSksIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTExKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmeCkpOworICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ4KSwgMCk7CiAgICAgRWZmZWN0
cyBleHBlY3RlZEVmZmVjdHM7CiAgICAgZXhwZWN0ZWRFZmZlY3RzLmV4aXRzU2lkZXdheXMgPSB0
cnVlOwogICAgIGV4cGVjdGVkRWZmZWN0cy5jb250cm9sRGVwZW5kZW50PSB0cnVlOwpAQCAtMTM5
MTIsNyArMTM5MTIsNyBAQCB2b2lkIHRlc3RUcmFwcGluZ0xvYWRBZGRTdG9yZSgpCiAgICAgICAg
ICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihwcm9jLCB0cmFwcGluZyhMb2FkKSwgSW50MzIsIE9yaWdpbigpLCBwdHIpLAog
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDMpKSwKLSAgICAgICAgcHRyKTsKKyAgICAgICAgcHRyLCAwKTsKICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOwogICAgIGNvbXBpbGVBbmRSdW48aW50
Pihwcm9jKTsKICAgICBDSEVDS19FUSh4LCA0NSk7CkBAIC0xNTIyOCw3ICsxNTIyOCw3IEBAIHZv
aWQgdGVzdFdhc21BZGRyZXNzKCkKICAgICAgICAgYm9keS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIHNpemVvZih1bnNpZ25lZCkpKTsKICAgICBwb2ludGVyID0gYm9k
eS0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0MzIsIE9yaWdpbigpLCBwb2ludGVyKTsKICAg
ICBib2R5LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgdmFs
dWVUb1N0b3JlLAotICAgICAgICBib2R5LT5hcHBlbmROZXc8V2FzbUFkZHJlc3NWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIHBvaW50ZXIsIHBpbm5lZEdQUikpOworICAgICAgICBib2R5LT5hcHBlbmRO
ZXc8V2FzbUFkZHJlc3NWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHBvaW50ZXIsIHBpbm5lZEdQUiks
IDApOwogICAgIFVwc2lsb25WYWx1ZSogaW5jVXBzaWxvbiA9IGJvZHktPmFwcGVuZE5ldzxVcHNp
bG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLAogICAgICAgICBib2R5LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEFkZCwgT3JpZ2luKCksIGluZGV4UGhpLAogICAgICAgICAgICAgYm9keS0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggYzgzZDM2ZS4uNjAw
MzUzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIldhc21PcGNvZGVPcmlnaW4uaCIK
ICNpbmNsdWRlICJXYXNtVGh1bmtzLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB2b2lkIGR1bXBQcm9jZWR1cmUodm9pZCogcHRy
KQogewpAQCAtMjM2LDcgKzIzNyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGVtaXRDaGVja3NG
b3JNb2RPckRpdihCMzo6T3Bjb2RlLCBFeHByZXNzaW9uVHlwZSBsZWZ0LCBFeHByZXNzaW9uVHlw
ZSByaWdodCk7CiAKLSAgICB2b2lkIGZpeHVwUG9pbnRlclBsdXNPZmZzZXQoRXhwcmVzc2lvblR5
cGUmLCB1aW50MzJfdCYpOworICAgIGludDMyX3QgV0FSTl9VTlVTRURfUkVUVVJOIGZpeHVwUG9p
bnRlclBsdXNPZmZzZXQoRXhwcmVzc2lvblR5cGUmLCB1aW50MzJfdCk7CiAKICAgICBWYWx1ZSog
bWF0ZXJpYWxpemVXYXNtQ29udGV4dChQcm9jZWR1cmUmLCBCYXNpY0Jsb2NrKik7CiAgICAgdm9p
ZCByZXN0b3JlV2FzbUNvbnRleHQoUHJvY2VkdXJlJiwgQmFzaWNCbG9jayosIFZhbHVlKik7CkBA
IC0yNjAsMTIgKzI2MSwxMyBAQCBwcml2YXRlOgogfTsKIAogLy8gTWVtb3J5IGFjY2Vzc2VzIGlu
IFdlYkFzc2VtYmx5IGhhdmUgdW5zaWduZWQgMzItYml0IG9mZnNldHMsIHdoZXJlYXMgdGhleSBo
YXZlIHNpZ25lZCAzMi1iaXQgb2Zmc2V0cyBpbiBCMy4KLXZvaWQgQjNJUkdlbmVyYXRvcjo6Zml4
dXBQb2ludGVyUGx1c09mZnNldChFeHByZXNzaW9uVHlwZSYgcHRyLCB1aW50MzJfdCYgb2Zmc2V0
KQoraW50MzJfdCBCM0lSR2VuZXJhdG9yOjpmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0KEV4cHJlc3Np
b25UeXBlJiBwdHIsIHVpbnQzMl90IG9mZnNldCkKIHsKICAgICBpZiAoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KG9mZnNldCkgPiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkpKSB7CiAgICAgICAgIHB0ciA9IG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8VmFsdWU+KG1fcHJvYywgQWRkLCBvcmlnaW4oKSwgcHRyLCBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgb2Zmc2V0KSk7Ci0gICAg
ICAgIG9mZnNldCA9IDA7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICByZXR1cm4gb2Zm
c2V0OwogfQogCiBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6bWF0ZXJpYWxpemVXYXNtQ29udGV4dChQ
cm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrKQpAQCAtNTA2LDEwICs1MDgsMTAgQEAg
YXV0byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KQogCiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEN1cnJlbnRN
ZW1vcnkoRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIFZh
bHVlKiBtZW1vcnlPYmplY3QgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBtX2luc3RhbmNlVmFsdWUs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSk7CisgICAgVmFsdWUqIG1l
bW9yeU9iamVjdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJv
YywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIG1faW5zdGFuY2VWYWx1ZSwgc2FmZUNh
c3Q8aW50MzJfdD4oSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSk7CiAK
ICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShzdGF0aWNfY2FzdDxKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqPihudWxscHRyKS0+bWVtb3J5KCktPm1lbW9yeSgpLnNpemUoKSkpID09IHNp
emVvZih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKLSAgICBWYWx1
ZSogc2l6ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywg
TG9hZCwgSW50NjQsIG9yaWdpbigpLCBtZW1vcnlPYmplY3QsIEpTV2ViQXNzZW1ibHlNZW1vcnk6
Om9mZnNldE9mU2l6ZSgpKTsKKyAgICBWYWx1ZSogc2l6ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50NjQsIG9yaWdpbigpLCBtZW1vcnlP
YmplY3QsIHNhZmVDYXN0PGludDMyX3Q+KEpTV2ViQXNzZW1ibHlNZW1vcnk6Om9mZnNldE9mU2l6
ZSgpKSk7CiAgICAgCiAgICAgY29uc3RleHByIHVpbnQzMl90IHNoaWZ0VmFsdWUgPSAxNjsKICAg
ICBzdGF0aWNfYXNzZXJ0KFBhZ2VDb3VudDo6cGFnZVNpemUgPT0gMSA8PCBzaGlmdFZhbHVlLCAi
VGhpcyBtdXN0IGhvbGQgZm9yIHRoZSBjb2RlIGJlbG93IHRvIGJlIGNvcnJlY3QuIik7CkBAIC01
MzAsMTYgKzUzMiwxNiBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGlu
ZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFJlcwogCiBhdXRvIEIzSVJHZW5l
cmF0b3I6OmdldEdsb2JhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkg
LT4gUGFydGlhbFJlc3VsdAogewotICAgIFZhbHVlKiBnbG9iYWxzQXJyYXkgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCks
IG9yaWdpbigpLCBtX2luc3RhbmNlVmFsdWUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0
T2ZHbG9iYWxzKCkpOwotICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgdG9CM1R5cGUobV9pbmZvLmdsb2JhbHNbaW5kZXhdLnR5
cGUpLCBvcmlnaW4oKSwgZ2xvYmFsc0FycmF5LCBpbmRleCAqIHNpemVvZihSZWdpc3RlcikpOwor
ICAgIFZhbHVlKiBnbG9iYWxzQXJyYXkgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBtX2luc3RhbmNl
VmFsdWUsIHNhZmVDYXN0PGludDMyX3Q+KEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZH
bG9iYWxzKCkpKTsKKyAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihtX3Byb2MsIExvYWQsIHRvQjNUeXBlKG1faW5mby5nbG9iYWxzW2luZGV4XS50eXBl
KSwgb3JpZ2luKCksIGdsb2JhbHNBcnJheSwgc2FmZUNhc3Q8aW50MzJfdD4oaW5kZXggKiBzaXpl
b2YoUmVnaXN0ZXIpKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAogYXV0byBCM0lSR2VuZXJhdG9y
OjpzZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKSAtPiBQYXJ0
aWFsUmVzdWx0CiB7CiAgICAgQVNTRVJUKHRvQjNUeXBlKG1faW5mby5nbG9iYWxzW2luZGV4XS50
eXBlKSA9PSB2YWx1ZS0+dHlwZSgpKTsKLSAgICBWYWx1ZSogZ2xvYmFsc0FycmF5ID0gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlw
ZSgpLCBvcmlnaW4oKSwgbV9pbnN0YW5jZVZhbHVlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9m
ZnNldE9mR2xvYmFscygpKTsKLSAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihtX3Byb2MsIFN0b3JlLCBvcmlnaW4oKSwgdmFsdWUsIGdsb2JhbHNBcnJheSwgaW5kZXgg
KiBzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICBWYWx1ZSogZ2xvYmFsc0FycmF5ID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgp
LCBvcmlnaW4oKSwgbV9pbnN0YW5jZVZhbHVlLCBzYWZlQ2FzdDxpbnQzMl90PihKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6Om9mZnNldE9mR2xvYmFscygpKSk7CisgICAgbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBTdG9yZSwgb3JpZ2luKCksIHZhbHVlLCBnbG9i
YWxzQXJyYXksIHNhZmVDYXN0PGludDMyX3Q+KGluZGV4ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwog
ICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTU1NCw3ICs1NTYsNyBAQCBpbmxpbmUgVmFsdWUqIEIz
SVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKEV4cHJlc3Npb25UeXBlIHBv
aW50ZXIsCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8V2FzbUJvdW5kc0NoZWNr
VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHBvaW50ZXIsIG1fbWVtb3J5U2l6ZUdQUiwgc2l6ZU9m
T3BlcmF0aW9uICsgb2Zmc2V0IC0gMSwgbV9pbmZvLm1lbW9yeS5tYXhpbXVtKCkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE1lbW9yeU1vZGU6OlNpZ25hbGluZzoKLSAgICAgICAgLy8gV2Un
dmUgdmlydHVhbGx5IG1hcHBlZCA0R2lCK3JlZHpvbmUgZm8gdGhpcyBtZW1vcnkuIE9ubHkgdGhl
IHVzZXItYWxsb2NhdGVkIHBhZ2VzIGFyZSBhZGRyZXNzYWJsZSwgY29udGlndW91c2x5IGluIHJh
bmdlIFswLCBjdXJyZW50XSwgYW5kIGV2ZXJ5dGhpbmcgYWJvdmUgaXMgbWFwcGVkIFBST1RfTk9O
RS4gV2UgZG9uJ3QgbmVlZCB0byBwZXJmb3JtIGFueSBleHBsaWNpdCBib3VuZHMgY2hlY2sgaW4g
dGhlIDRHaUIgcmFuZ2UgYmVjYXVzZSBXZWJBc3NlbWJseSByZWdpc3RlciBtZW1vcnkgYWNjZXNz
ZXMgYXJlIDMyLWJpdC4gSG93ZXZlciBXZWJBc3NlbWJseSByZWdpc3RlcitpbW1lZGlhdGUgYWNj
ZXNzZXMgcGVyZm9ybSB0aGUgYWRkaXRpb24gaW4gNjQtYml0IHdoaWNoIGNhbiBwdXNoIGFuIGFj
Y2VzcyBhYm92ZSB0aGUgMzItYml0IGxpbWl0LiBUaGUgcmVkem9uZSB3aWxsIGNhdGNoIG1vc3Qg
c21hbGwgaW1tZWRpYXRlcywgYW5kIHdlJ2xsIGV4cGxpY2l0bHkgYm91bmRzIGNoZWNrIGFueSBy
ZWdpc3RlciArIGxhcmdlIGltbWVkaWF0ZSBhY2Nlc3MuCisgICAgICAgIC8vIFdlJ3ZlIHZpcnR1
YWxseSBtYXBwZWQgNEdpQityZWR6b25lIGZvciB0aGlzIG1lbW9yeS4gT25seSB0aGUgdXNlci1h
bGxvY2F0ZWQgcGFnZXMgYXJlIGFkZHJlc3NhYmxlLCBjb250aWd1b3VzbHkgaW4gcmFuZ2UgWzAs
IGN1cnJlbnRdLCBhbmQgZXZlcnl0aGluZyBhYm92ZSBpcyBtYXBwZWQgUFJPVF9OT05FLiBXZSBk
b24ndCBuZWVkIHRvIHBlcmZvcm0gYW55IGV4cGxpY2l0IGJvdW5kcyBjaGVjayBpbiB0aGUgNEdp
QiByYW5nZSBiZWNhdXNlIFdlYkFzc2VtYmx5IHJlZ2lzdGVyIG1lbW9yeSBhY2Nlc3NlcyBhcmUg
MzItYml0LiBIb3dldmVyIFdlYkFzc2VtYmx5IHJlZ2lzdGVyK2ltbWVkaWF0ZSBhY2Nlc3NlcyBw
ZXJmb3JtIHRoZSBhZGRpdGlvbiBpbiA2NC1iaXQgd2hpY2ggY2FuIHB1c2ggYW4gYWNjZXNzIGFi
b3ZlIHRoZSAzMi1iaXQgbGltaXQuIFRoZSByZWR6b25lIHdpbGwgY2F0Y2ggbW9zdCBzbWFsbCBp
bW1lZGlhdGVzLCBhbmQgd2UnbGwgZXhwbGljaXRseSBib3VuZHMgY2hlY2sgYW55IHJlZ2lzdGVy
ICsgbGFyZ2UgaW1tZWRpYXRlIGFjY2Vzcy4KICAgICAgICAgaWYgKG9mZnNldCA+PSBNZW1vcnk6
OmZhc3RNYXBwZWRSZWR6b25lQnl0ZXMoKSkKICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHBvaW50ZXIs
IEludmFsaWRHUFJSZWcsIHNpemVPZk9wZXJhdGlvbiArIG9mZnNldCAtIDEsIG1faW5mby5tZW1v
cnkubWF4aW11bSgpKTsKICAgICAgICAgYnJlYWs7CkBAIC01OTcsOSArNTk5LDkgQEAgaW5saW5l
IEIzOjpLaW5kIEIzSVJHZW5lcmF0b3I6Om1lbW9yeUtpbmQoQjM6Ok9wY29kZSBtZW1vcnlPcCkK
ICAgICByZXR1cm4gbWVtb3J5T3A7CiB9CiAKLWlubGluZSBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6
ZW1pdExvYWRPcChMb2FkT3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50MzJf
dCBvZmZzZXQpCitpbmxpbmUgVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmVtaXRMb2FkT3AoTG9hZE9w
VHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3QgdW9mZnNldCkKIHsKLSAg
ICBmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0KHBvaW50ZXIsIG9mZnNldCk7CisgICAgaW50MzJfdCBv
ZmZzZXQgPSBmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0KHBvaW50ZXIsIHVvZmZzZXQpOwogCiAgICAg
c3dpdGNoIChvcCkgewogICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDhTOiB7CkBAIC03MzYs
OSArNzM4LDkgQEAgaW5saW5lIHVpbnQzMl90IHNpemVPZlN0b3JlT3AoU3RvcmVPcFR5cGUgb3Ap
CiB9CiAKIAotaW5saW5lIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZW1pdFN0b3JlT3AoU3RvcmVPcFR5
cGUgb3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50
MzJfdCBvZmZzZXQpCitpbmxpbmUgdm9pZCBCM0lSR2VuZXJhdG9yOjplbWl0U3RvcmVPcChTdG9y
ZU9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUgdmFsdWUs
IHVpbnQzMl90IHVvZmZzZXQpCiB7Ci0gICAgZml4dXBQb2ludGVyUGx1c09mZnNldChwb2ludGVy
LCBvZmZzZXQpOworICAgIGludDMyX3Qgb2Zmc2V0ID0gZml4dXBQb2ludGVyUGx1c09mZnNldChw
b2ludGVyLCB1b2Zmc2V0KTsKIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIFN0b3JlT3BU
eXBlOjpJNjRTdG9yZTg6CkBAIC05MzcsOCArOTM5LDggQEAgYXV0byBCM0lSR2VuZXJhdG9yOjph
ZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJl
LAogCiAgICAgaWYgKG1faW5mby5pc0ltcG9ydGVkRnVuY3Rpb25Gcm9tRnVuY3Rpb25JbmRleFNw
YWNlKGZ1bmN0aW9uSW5kZXgpKSB7CiAgICAgICAgIC8vIEZJWE1FIGltcG9ydHMgY2FuIGJlIGxp
bmtlZCBoZXJlLCBpbnN0ZWFkIG9mIGdlbmVyYXRpbmcgYSBwYXRjaHBvaW50LCBiZWNhdXNlIGFs
bCBpbXBvcnQgc3R1YnMgYXJlIGdlbmVyYXRlZCBiZWZvcmUgQjMgY29tcGlsYXRpb24gc3RhcnRz
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDYyCi0gICAgICAg
IFZhbHVlKiBmdW5jdGlvbkltcG9ydCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIG1faW5zdGFuY2VW
YWx1ZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkltcG9ydEZ1bmN0aW9uKGZ1bmN0
aW9uSW5kZXgpKTsKLSAgICAgICAgVmFsdWUqIGpzVHlwZU9mSW1wb3J0ID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkOFosIG9yaWdpbigpLCBmdW5j
dGlvbkltcG9ydCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSk7CisgICAgICAgIFZhbHVl
KiBmdW5jdGlvbkltcG9ydCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIG1faW5zdGFuY2VWYWx1ZSwg
c2FmZUNhc3Q8aW50MzJfdD4oSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkltcG9ydEZ1
bmN0aW9uKGZ1bmN0aW9uSW5kZXgpKSk7CisgICAgICAgIFZhbHVlKiBqc1R5cGVPZkltcG9ydCA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZDhaLCBv
cmlnaW4oKSwgZnVuY3Rpb25JbXBvcnQsIHNhZmVDYXN0PGludDMyX3Q+KEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpKTsKICAgICAgICAgVmFsdWUqIGlzV2FzbUNhbGwgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwganNUeXBlT2ZJ
bXBvcnQsIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9y
aWdpbigpLCBXZWJBc3NlbWJseUZ1bmN0aW9uVHlwZSkpOwogCiAgICAgICAgIEJhc2ljQmxvY2sq
IGlzV2FzbUJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CkBAIC05NjgsOSArOTcwLDkgQEAgYXV0
byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlLAogICAgICAgICAvLyBpbXBsZW1lbnQgdGhlIElDIHRvIGJlIG92
ZXIgV2FzbTo6Q29udGV4dCouCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzAzNzUKICAgICAgICAgVmFsdWUqIGNvZGVCbG9jayA9IGlzSlNCbG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsCi0gICAgICAgICAgICBMb2FkLCBwb2lu
dGVyVHlwZSgpLCBvcmlnaW4oKSwgbV9pbnN0YW5jZVZhbHVlLCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U6Om9mZnNldE9mQ29kZUJsb2NrKCkpOworICAgICAgICAgICAgTG9hZCwgcG9pbnRlclR5cGUo
KSwgb3JpZ2luKCksIG1faW5zdGFuY2VWYWx1ZSwgc2FmZUNhc3Q8aW50MzJfdD4oSlNXZWJBc3Nl
bWJseUluc3RhbmNlOjpvZmZzZXRPZkNvZGVCbG9jaygpKSk7CiAgICAgICAgIFZhbHVlKiBqdW1w
RGVzdGluYXRpb24gPSBpc0pTQmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLAot
ICAgICAgICAgICAgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIGNvZGVCbG9jaywgSlNX
ZWJBc3NlbWJseUNvZGVCbG9jazo6b2Zmc2V0T2ZJbXBvcnRXYXNtVG9KU1N0dWIoZnVuY3Rpb25J
bmRleCkpOworICAgICAgICAgICAgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIGNvZGVC
bG9jaywgc2FmZUNhc3Q8aW50MzJfdD4oSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6b2Zmc2V0T2ZJ
bXBvcnRXYXNtVG9KU1N0dWIoZnVuY3Rpb25JbmRleCkpKTsKICAgICAgICAgVmFsdWUqIGpzQ2Fs
bFJlc3VsdCA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnNldHVwQ2FsbChtX3Byb2MsIGlzSlNC
bG9jaywgb3JpZ2luKCksIGFyZ3MsIHRvQjNUeXBlKHJldHVyblR5cGUpLAogICAgICAgICAgICAg
WyZdIChQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQpIHsKICAgICAgICAgICAgICAgICBwYXRj
aHBvaW50LT5lZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CkBAIC0xMDI2LDExICsxMDI4LDEx
IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYg
c2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvCiAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGFibGVG
dW5jdGlvbkJ1ZmZlclNpemU7CiAgICAgewogICAgICAgICBFeHByZXNzaW9uVHlwZSB0YWJsZSA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9p
bnRlclR5cGUoKSwgb3JpZ2luKCksCi0gICAgICAgICAgICBtX2luc3RhbmNlVmFsdWUsIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZSgpKTsKKyAgICAgICAgICAgIG1faW5zdGFu
Y2VWYWx1ZSwgc2FmZUNhc3Q8aW50MzJfdD4oSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRP
ZlRhYmxlKCkpKTsKICAgICAgICAgY2FsbGFibGVGdW5jdGlvbkJ1ZmZlciA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwg
b3JpZ2luKCksCi0gICAgICAgICAgICB0YWJsZSwgSlNXZWJBc3NlbWJseVRhYmxlOjpvZmZzZXRP
ZkZ1bmN0aW9ucygpKTsKKyAgICAgICAgICAgIHRhYmxlLCBzYWZlQ2FzdDxpbnQzMl90PihKU1dl
YkFzc2VtYmx5VGFibGU6Om9mZnNldE9mRnVuY3Rpb25zKCkpKTsKICAgICAgICAgY2FsbGFibGVG
dW5jdGlvbkJ1ZmZlclNpemUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PihtX3Byb2MsIExvYWQsIEludDMyLCBvcmlnaW4oKSwKLSAgICAgICAgICAgIHRhYmxlLCBKU1dl
YkFzc2VtYmx5VGFibGU6Om9mZnNldE9mU2l6ZSgpKTsKKyAgICAgICAgICAgIHRhYmxlLCBzYWZl
Q2FzdDxpbnQzMl90PihKU1dlYkFzc2VtYmx5VGFibGU6Om9mZnNldE9mU2l6ZSgpKSk7CiAgICAg
fQogCiAgICAgLy8gQ2hlY2sgdGhlIGluZGV4IHdlIGFyZSBsb29raW5nIGZvciBpcyB2YWxpZC4K
QEAgLTEwNTEsNyArMTA1Myw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0
KGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvCiAKICAgICAvLyBD
aGVjayB0aGF0IHRoZSBDYWxsYWJsZUZ1bmN0aW9uIGlzIGluaXRpYWxpemVkLiBXZSB0cmFwIGlm
IGl0IGlzbid0LiBBbiAiaW52YWxpZCIgU2lnbmF0dXJlSW5kZXggaW5kaWNhdGVzIGl0J3Mgbm90
IGluaXRpYWxpemVkLgogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENhbGxhYmxlRnVuY3Rpb246
OnNpZ25hdHVyZUluZGV4KSA9PSBzaXplb2YodWludDMyX3QpLCAiTG9hZCBjb2RlZ2VuIGFzc3Vt
ZXMgaTMyIik7Ci0gICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlU2lnbmF0dXJlSW5kZXggPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDMyLCBv
cmlnaW4oKSwgY2FsbGFibGVGdW5jdGlvbiwgT0JKRUNUX09GRlNFVE9GKENhbGxhYmxlRnVuY3Rp
b24sIHNpZ25hdHVyZUluZGV4KSk7CisgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlU2lnbmF0dXJl
SW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExv
YWQsIEludDMyLCBvcmlnaW4oKSwgY2FsbGFibGVGdW5jdGlvbiwgc2FmZUNhc3Q8aW50MzJfdD4o
T0JKRUNUX09GRlNFVE9GKENhbGxhYmxlRnVuY3Rpb24sIHNpZ25hdHVyZUluZGV4KSkpOwogICAg
IHsKICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLAogICAgICAgICAgICAgbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksCkBAIC0x
MDc0LDcgKzEwNzYsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChjb25z
dCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpbwogICAgICAgICB9KTsKICAg
ICB9CiAKLSAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2RlID0gbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4o
KSwgY2FsbGFibGVGdW5jdGlvbiwgT0JKRUNUX09GRlNFVE9GKENhbGxhYmxlRnVuY3Rpb24sIGNv
ZGUpKTsKKyAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2RlID0gbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4o
KSwgY2FsbGFibGVGdW5jdGlvbiwgc2FmZUNhc3Q8aW50MzJfdD4oT0JKRUNUX09GRlNFVE9GKENh
bGxhYmxlRnVuY3Rpb24sIGNvZGUpKSk7CiAKICAgICBUeXBlIHJldHVyblR5cGUgPSBzaWduYXR1
cmUucmV0dXJuVHlwZSgpOwogICAgIHJlc3VsdCA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnNl
dHVwQ2FsbChtX3Byb2MsIG1fY3VycmVudEJsb2NrLCBvcmlnaW4oKSwgYXJncywgdG9CM1R5cGUo
cmV0dXJuVHlwZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IGMzNTNiYzguLjUxYTlkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTctMDQtMTQgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAg
IEIzOiBkb24ndCBhbGxvdyB1bnNpZ25lZCBvZmZzZXRzIGluIFZhbHVlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA2OTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQysrMTcncyBzdGQ6OmNvbmp1
bmN0aW9uIHR5cGUgdHJhaXQsIGV4Y2VwdCBmb3IgTWljcm9zb2Z0IFZTCisgICAgICAgIDIwMTUg
dXBkYXRlIDIgYW5kIGxhdGVyIGJlY2F1c2UgaXQgYWRkcyB0aGUgbG9naWNhbCBvcGVyYXRvciB0
eXBlCisgICAgICAgIHRyYWl0cywgZXZlbnQgd2hlbiBDKysgaXMgcHJlLTIwMTc6CisgICAgICAg
IGh0dHBzOi8vYmxvZ3MubXNkbi5taWNyb3NvZnQuY29tL3ZjYmxvZy8yMDE2LzAxLzIyL3ZzLTIw
MTUtdXBkYXRlLTJzLXN0bC1pcy1jMTctc28tZmFyLWZlYXR1cmUtY29tcGxldGUvCisKKyAgICAg
ICAgKiB3dGYvU3RkTGliRXh0cmFzLmg6CisKIDIwMTctMDQtMTMgIEpGIEJhc3RpZW4gIDxqZmJh
c3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5OiBtYW5hZ2UgbWVtb3J5IGJl
dHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAppbmRleCA4MmY1NDdmLi45OTdjZDM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRM
aWJFeHRyYXMuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPGNocm9ubz4KICNpbmNsdWRl
IDxjc3RyaW5nPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgogI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgpAQCAtNTEwLDYgKzUxMSwxNSBAQCBBTFdB
WVNfSU5MSU5FIGNvbnN0ZXhwciB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlJiYg
bW92ZShUJiYgdmFsdWUpCiAgICAgcmV0dXJuIG1vdmUoZm9yd2FyZDxUPih2YWx1ZSkpOwogfQog
CisjaWYgX19jcGx1c3BsdXMgPCAyMDE3MDNMICYmICghZGVmaW5lZChfTVNDX0ZVTExfVkVSKSB8
fCBfTVNDX0ZVTExfVkVSIDwgMTkwMDIzOTE4KQordGVtcGxhdGU8Y2xhc3MuLi4+IHN0cnVjdCB3
dGZfY29uanVuY3Rpb25faW1wbDsKK3RlbXBsYXRlPD4gc3RydWN0IHd0Zl9jb25qdW5jdGlvbl9p
bXBsPD4gOiB0cnVlX3R5cGUgeyB9OwordGVtcGxhdGU8Y2xhc3MgQjA+IHN0cnVjdCB3dGZfY29u
anVuY3Rpb25faW1wbDxCMD4gOiBCMCB7IH07Cit0ZW1wbGF0ZTxjbGFzcyBCMCwgY2xhc3MgQjE+
IHN0cnVjdCB3dGZfY29uanVuY3Rpb25faW1wbDxCMCwgQjE+IDogY29uZGl0aW9uYWw8QjA6OnZh
bHVlLCBCMSwgQjA+Ojp0eXBlIHsgfTsKK3RlbXBsYXRlPGNsYXNzIEIwLCBjbGFzcyBCMSwgY2xh
c3MgQjIsIGNsYXNzLi4uIEJuPiBzdHJ1Y3Qgd3RmX2Nvbmp1bmN0aW9uX2ltcGw8QjAsIEIxLCBC
MiwgQm4uLi4+IDogY29uZGl0aW9uYWw8QjA6OnZhbHVlLCB3dGZfY29uanVuY3Rpb25faW1wbDxC
MSwgQjIsIEJuLi4uPiwgQjA+Ojp0eXBlIHsgfTsKK3RlbXBsYXRlPGNsYXNzLi4uIF9BcmdzPiBz
dHJ1Y3QgY29uanVuY3Rpb24gOiB3dGZfY29uanVuY3Rpb25faW1wbDxfQXJncy4uLj4geyB9Owor
I2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIHN0ZAogCiAjZGVmaW5lIFdURk1vdmUodmFsdWUpIHN0
ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFsdWUpCi0tIAoyLjEwLjEKCg==
</data>
<flag name="commit-queue"
          id="328540"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307259</attachid>
            <date>2017-04-17 00:26:47 -0700</date>
            <delta_ts>2017-04-17 01:24:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-MemoryValue.patch</filename>
            <type>text/plain</type>
            <size>63088</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAyMzdkMWE1NmFhNWEyMDcwMzVlZjgxYWJjMjlkMTgxYWY2NjkwNjY4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDE0IEFwciAyMDE3IDAwOjE4OjA3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gTWVtb3J5
VmFsdWUKCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgfCA5MSArKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNBdG9taWNWYWx1ZS5jcHAgICAgICAgICB8ICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNBdG9taWNWYWx1ZS5oICAgICAgICAgICB8IDQyICsrKysrKysrLS0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1vbi5oICAgICAgICAgICAgICAgIHwgIDYgKysKIC4uLi9i
My9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcCAgICAgICAgIHwgIDQgKy0KIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwICAgICAgICAgIHwgMTYgKyst
LQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwICAgICAgICAgfCAx
MCArLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmggICAgICAgICAg
IHwgNjkgKysrKysrKysrKysrLS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5
VmFsdWVJbmxpbmVzLmggICAgfCAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTW92
ZUNvbnN0YW50cy5jcHAgICAgICAgfCAgOCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UmVkdWNlU3RyZW5ndGguY3BwICAgICAgfCAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzU3RhY2ttYXBTcGVjaWFsLmNwcCAgICAgfCAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWUuaCAgICAgICAgICAgICAgICAgfCAxNyArKysrCiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckFyZy5jcHAgICAgICAgICAgICB8ICAyICstCiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFyZy5oICAgICAgICAgICAgICB8IDU2ICsrKysrKysrKy0tLS0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJTdGFja0FyZ3MuY3BwIHwgIDIg
Ky0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwICAgICAgICAgICAgICAgIHwg
NzQgKysrKysrKysrLS0tLS0tLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHAgICB8IDQ4ICsrKysrKy0tLS0tLQogU291cmNlL1dURi9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNCArKysrCiBTb3VyY2UvV1RGL3d0Zi9T
dGRMaWJFeHRyYXMuaCAgICAgICAgICAgICAgICAgICAgICB8IDEwICsrKwogMjAgZmlsZXMgY2hh
bmdlZCwgMzYyIGluc2VydGlvbnMoKyksIDExNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBhZjE1ZGRiLi5kOWUyMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw5NCBAQAorMjAxNy0wNC0xNCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgQjM6IGRvbid0IGFsbG93IHVuc2lnbmVkIG9mZnNldHMgaW4gVmFs
dWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDY5
MgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgIE1lbW9yeVZh
bHVlIGFuZCBzaW1pbGFyIEIzIG9wY29kZSBjbGFzc2VzIGFsd2F5cyBleHBlY3RzIGEgc2lnbmVk
CisgICAgICAgIG9mZnNldC4gR2l2aW5nIGl0IGFuIG91dC1vZi1ib3VuZHMgdW5zaWduZWQgb2Zm
c2V0IGNhdXNlcworICAgICAgICBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIGJlaGF2aW9yLCB3aGlj
aCBjYW4gY2F1c2UgYmFkbmVzcyBhcyBJIGp1c3QKKyAgICAgICAgZml4ZWQgaW4gV2ViQXNzZW1i
bHkuICBUaGlzIHBhdGNoIG1ha2VzIGl0IGltcG9zc2libGUgdG8gY3JlYXRlIGEKKyAgICAgICAg
VmFsdWUgb3Bjb2RlcyB3aXRoIGFuIHVuc2lnbmVkIHZhbHVlLCBvciB3aXRoIGFuIG92ZXJseS1s
YXJnZQorICAgICAgICB2YWx1ZS4KKworICAgICAgICAqIGIzL0IzQXRvbWljVmFsdWUuY3BwOgor
ICAgICAgICAoSlNDOjpCMzo6QXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlKToKKyAgICAgICAgKiBi
My9CM0F0b21pY1ZhbHVlLmg6CisgICAgICAgICogYjMvQjNDb21tb24uaDoKKyAgICAgICAgKEpT
Qzo6QjM6OmlzUmVwcmVzZW50YWJsZUFzKToKKyAgICAgICAgKiBiMy9CM0VsaW1pbmF0ZUNvbW1v
blN1YmV4cHJlc3Npb25zLmNwcDoKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpzY2FsZUZvclNobCk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmVmZmVjdGl2ZUFkZHIpOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpMb3dlclRvQWlyOjphZGRyKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJU
b0Fpcjo6dHJ5QXBwZW5kTGVhKToKKyAgICAgICAgKiBiMy9CM01lbW9yeVZhbHVlLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6Ok1lbW9yeVZhbHVlOjppc0xlZ2FsT2Zmc2V0SW1wbCk6CisgICAgICAg
IChKU0M6OkIzOjpNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUpOgorICAgICAgICAqIGIzL0IzTWVt
b3J5VmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM01lbW9yeVZhbHVlSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpCMzo6TWVtb3J5VmFsdWU6OmlzTGVnYWxPZmZzZXRJbXBsKToKKyAgICAgICAgKiBi
My9CM01vdmVDb25zdGFudHMuY3BwOgorICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3Bw
OgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OlN0YWNrbWFwU3BlY2lhbDo6cmVwRm9yQXJnKToKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmg6Cisg
ICAgICAgICogYjMvYWlyL0FpckFyZy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6
c3RhY2tBZGRySW1wbCk6CisgICAgICAgICogYjMvYWlyL0FpckFyZy5oOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpBcmc6OmFkZHIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OnN0YWNr
KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpjYWxsQXJnKToKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6QXJnOjpzdGFja0FkZHIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6Omlu
ZGV4KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjpvZmZzZXQpOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpBcmc6OmlzVmFsaWRBZGRyRm9ybSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6
OkFyZzo6aXNWYWxpZEluZGV4Rm9ybSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6YXNU
cnVzdGVkSW1tMzIpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmFzQWRkcmVzcyk6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6YXNCYXNlSW5kZXgpOgorICAgICAgICAqIGIzL2Fp
ci9BaXJMb3dlclN0YWNrQXJncy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Omxvd2VyU3Rh
Y2tBcmdzKToKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dE11bEFyZ1N0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9yZTMyKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RTdG9yZUNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9y
ZUNvbnN0YW50UHRyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9yZUFkZExvYWQzMik6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0U3RvcmVBZGRMb2FkSW1tMzIpOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdFN0b3JlQWRkTG9hZDgpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlQWRkTG9h
ZEltbTgpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlQWRkTG9hZDE2KToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RTdG9yZUFkZExvYWRJbW0xNik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
U3RvcmVBZGRMb2FkNjQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlQWRkTG9hZEltbTY0
KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9yZUFkZExvYWQzMkluZGV4KToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RTdG9yZUFkZExvYWRJbW0zMkluZGV4KToKKyAgICAgICAgKEpTQzo6QjM6
OnRlc3RTdG9yZUFkZExvYWQ2NEluZGV4KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9yZUFk
ZExvYWRJbW02NEluZGV4KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9yZVN1YkxvYWQpOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlQWRkTG9hZEludGVyZmVyZW5jZSk6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0U3RvcmVBZGRBbmRMb2FkKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RT
dG9yZU5lZ0xvYWQzMik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3RvcmVOZWdMb2FkUHRyKToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RMb2FkT2Zmc2V0Tm90Q29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRPZmZz
ZXRVc2luZ0FkZCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TG9hZE9mZnNldFVzaW5nQWRkSW50
ZXJmZXJlbmNlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkT2Zmc2V0VXNpbmdBZGROb3RD
b25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3RvcmVMb2FkU3RhY2tTbG90KToKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RJbnRlcnBy
ZXRlcik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0VHJhcHBpbmdTdG9yZSk6CisgICAgICAgIChK
U0M6OkIzOjp0ZXN0VHJhcHBpbmdMb2FkQWRkU3RvcmUpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dFdhc21BZGRyZXNzKToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6Zml4dXBQb2ludGVyUGx1c09mZnNldCk6
CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQ
b2ludGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdExvYWRPcCk6
CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmVtaXRTdG9yZU9wKToKKwogMjAx
Ny0wNC0xMyAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
QXNzZW1ibHk6IG1hbmFnZSBtZW1vcnkgYmV0dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNBdG9taWNWYWx1ZS5jcHAKaW5kZXggNzBjMzVkYy4uMjBmY2U0MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBWYWx1ZSog
QXRvbWljVmFsdWU6OmNsb25lSW1wbCgpIGNvbnN0CiAgICAgcmV0dXJuIG5ldyBBdG9taWNWYWx1
ZSgqdGhpcyk7CiB9CiAKLUF0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShLaW5kIGtpbmQsIE9yaWdp
biBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogb3BlcmFuZCwgVmFsdWUqIHBvaW50ZXIsIGlu
dDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQorQXRv
bWljVmFsdWU6OkF0b21pY1ZhbHVlKEF0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZVJNVywgS2luZCBr
aW5kLCBPcmlnaW4gb3JpZ2luLCBXaWR0aCB3aWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVlKiBw
b2ludGVyLCBNZW1vcnlWYWx1ZTo6T2Zmc2V0VHlwZSBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwg
SGVhcFJhbmdlIGZlbmNlUmFuZ2UpCiAgICAgOiBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2RlLCBr
aW5kLCBvcGVyYW5kLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5nZSwg
b3BlcmFuZCwgcG9pbnRlcikKICAgICAsIG1fd2lkdGgod2lkdGgpCiB7CkBAIC02NSw3ICs2NSw3
IEBAIEF0b21pY1ZhbHVlOjpBdG9taWNWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFdp
ZHRoIHdpZHRoLCBWYWx1ZSogb3BlcmFuZCwKICAgICB9CiB9CiAKLUF0b21pY1ZhbHVlOjpBdG9t
aWNWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogZXhw
ZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZz
ZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCitBdG9taWNWYWx1ZTo6
QXRvbWljVmFsdWUoQXRvbWljVmFsdWU6OkF0b21pY1ZhbHVlQ0FTLCBLaW5kIGtpbmQsIE9yaWdp
biBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1Zh
bHVlLCBWYWx1ZSogcG9pbnRlciwgTWVtb3J5VmFsdWU6Ok9mZnNldFR5cGUgb2Zmc2V0LCBIZWFw
UmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlKQogICAgIDogTWVtb3J5VmFsdWUoQ2hl
Y2tlZE9wY29kZSwga2luZCwga2luZC5vcGNvZGUoKSA9PSBBdG9taWNXZWFrQ0FTID8gSW50MzIg
OiBleHBlY3RlZFZhbHVlLT50eXBlKCksIG9yaWdpbiwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5n
ZSwgZXhwZWN0ZWRWYWx1ZSwgbmV3VmFsdWUsIHBvaW50ZXIpCiAgICAgLCBtX3dpZHRoKHdpZHRo
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWljVmFsdWUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0F0b21pY1ZhbHVlLmgKaW5kZXggZDZiY2Vm
MC4uMjkyY2Y5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQXRvbWlj
VmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNBdG9taWNWYWx1ZS5oCkBA
IC01MiwxNSArNTIsNDUgQEAgcHJvdGVjdGVkOgogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgUHJvY2VkdXJlOwotICAgIAotICAgIEF0b21pY1ZhbHVlKEtpbmQsIE9yaWdpbiwgV2lk
dGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwLCBI
ZWFwUmFuZ2UgcmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9
IEhlYXBSYW5nZTo6dG9wKCkpOwotICAgIAotICAgIEF0b21pY1ZhbHVlKEtpbmQsIE9yaWdpbiwg
V2lkdGgsIFZhbHVlKiBleHBlY3RlZFZhbHVlLCBWYWx1ZSogbmV3VmFsdWUsIFZhbHVlKiBwb2lu
dGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9w
KCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSk7Ci0gICAgCisKKyAg
ICBlbnVtIEF0b21pY1ZhbHVlUk1XIHsgQXRvbWljVmFsdWVSTVdUYWcgfTsKKyAgICBlbnVtIEF0
b21pY1ZhbHVlQ0FTIHsgQXRvbWljVmFsdWVDQVNUYWcgfTsKKworICAgIEF0b21pY1ZhbHVlKEtp
bmQga2luZCwgT3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1
ZSogcG9pbnRlcikKKyAgICAgICAgOiBBdG9taWNWYWx1ZShraW5kLCBvcmlnaW4sIHdpZHRoLCBv
cGVyYW5kLCBwb2ludGVyLCAwKQorICAgIHsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SW50LAorICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
aW50ZWdyYWw8SW50Pjo6dmFsdWU+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSA9IHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2lnbmVkPEludD46OnZhbHVlPjo6dHlwZSwKKyAgICAg
ICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzaXplb2YoSW50KSA8PSBzaXpl
b2YoT2Zmc2V0VHlwZSk+Ojp0eXBlCisgICAgPgorICAgIEF0b21pY1ZhbHVlKEtpbmQga2luZCwg
T3JpZ2luIG9yaWdpbiwgV2lkdGggd2lkdGgsIFZhbHVlKiBvcGVyYW5kLCBWYWx1ZSogcG9pbnRl
ciwgSW50IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJh
bmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpKQorICAgICAgICA6IEF0b21pY1ZhbHVl
KEF0b21pY1ZhbHVlUk1XVGFnLCBraW5kLCBvcmlnaW4sIHdpZHRoLCBvcGVyYW5kLCBwb2ludGVy
LCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdlKQorICAgIHsKKyAgICB9CisKKyAgICBBdG9taWNW
YWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogZXhwZWN0
ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVlLCBWYWx1ZSogcG9pbnRlcikKKyAgICAgICAgOiBBdG9t
aWNWYWx1ZShraW5kLCBvcmlnaW4sIHdpZHRoLCBleHBlY3RlZFZhbHVlLCBuZXdWYWx1ZSwgcG9p
bnRlciwgMCkKKyAgICB7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwKKyAgICAg
ICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVncmFsPElu
dD46OnZhbHVlPjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6OmlzX3NpZ25lZDxJbnQ+Ojp2YWx1ZT46OnR5cGUsCisgICAgICAgIHR5cGVuYW1l
ID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c2l6ZW9mKEludCkgPD0gc2l6ZW9mKE9mZnNldFR5
cGUpPjo6dHlwZQorICAgID4KKyAgICBBdG9taWNWYWx1ZShLaW5kIGtpbmQsIE9yaWdpbiBvcmln
aW4sIFdpZHRoIHdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVlLCBW
YWx1ZSogcG9pbnRlciwgSW50IG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0
b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpKQorICAgICAgICA6
IEF0b21pY1ZhbHVlKEF0b21pY1ZhbHVlQ0FTVGFnLCBraW5kLCBvcmlnaW4sIHdpZHRoLCBleHBl
Y3RlZFZhbHVlLCBuZXdWYWx1ZSwgcG9pbnRlciwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5nZSkK
KyAgICB7CisgICAgfQorCisgICAgLy8gVGhlIGFib3ZlIHRlbXBsYXRlcyBmb3J3YXJkIHRvIHRo
ZXNlIGltcGxlbWVudGF0aW9ucy4KKyAgICBBdG9taWNWYWx1ZShBdG9taWNWYWx1ZVJNVywgS2lu
ZCwgT3JpZ2luLCBXaWR0aCwgVmFsdWUqIG9wZXJhbmQsIFZhbHVlKiBwb2ludGVyLCBPZmZzZXRU
eXBlLCBIZWFwUmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9
IEhlYXBSYW5nZTo6dG9wKCkpOworICAgIEF0b21pY1ZhbHVlKEF0b21pY1ZhbHVlQ0FTLCBLaW5k
LCBPcmlnaW4sIFdpZHRoLCBWYWx1ZSogZXhwZWN0ZWRWYWx1ZSwgVmFsdWUqIG5ld1ZhbHVlLCBW
YWx1ZSogcG9pbnRlciwgT2Zmc2V0VHlwZSwgSGVhcFJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwg
SGVhcFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpKTsKKwogICAgIFdpZHRoIG1f
d2lkdGg7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAogI2VuZGlmIC8vIEVOQUJM
RShCM19KSVQpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1v
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29tbW9uLmgKaW5kZXggNGE5NGRhNy4u
OWQxODEyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29tbW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29tbW9uLmgKQEAgLTEwMiw2ICsxMDIs
MTIgQEAgaW5saW5lIGJvb2wgaXNSZXByZXNlbnRhYmxlQXMoaW50NjRfdCB2YWx1ZSkKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZT4KK2lubGluZSBib29sIGlzUmVwcmVzZW50YWJs
ZUFzKHNpemVfdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gaXNSZXByZXNlbnRhYmxlQXNJbXBsPFJl
c3VsdFR5cGUsIHNpemVfdCwgc2l6ZV90Pih2YWx1ZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFJlc3VsdFR5cGU+CiBpbmxpbmUgYm9vbCBpc1JlcHJlc2VudGFibGVBcyhkb3VibGUgdmFsdWUp
CiB7CiAgICAgcmV0dXJuIGlzUmVwcmVzZW50YWJsZUFzSW1wbDxSZXN1bHRUeXBlLCBkb3VibGUs
IGludDY0X3Q+KHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0VsaW1pbmF0ZUNvbW1vblN1YmV4cHJlc3Npb25zLmNwcAppbmRleCBiMGJlZjhlLi4x
YWU0MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFbGltaW5hdGVD
b21tb25TdWJleHByZXNzaW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
RWxpbWluYXRlQ29tbW9uU3ViZXhwcmVzc2lvbnMuY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgVmFsdWUqIHZhbHVlID0gbWVtb3J5LT5jaGlsZCgwKTsKICAgICAgICAg
VmFsdWUqIHB0ciA9IG1lbW9yeS0+bGFzdENoaWxkKCk7CiAgICAgICAgIEhlYXBSYW5nZSByYW5n
ZSA9IG1lbW9yeS0+cmFuZ2UoKTsKLSAgICAgICAgaW50MzJfdCBvZmZzZXQgPSBtZW1vcnktPm9m
ZnNldCgpOworICAgICAgICBWYWx1ZTo6T2Zmc2V0VHlwZSBvZmZzZXQgPSBtZW1vcnktPm9mZnNl
dCgpOwogCiAgICAgICAgIHN3aXRjaCAobWVtb3J5LT5vcGNvZGUoKSkgewogICAgICAgICBjYXNl
IFN0b3JlODoKQEAgLTMwNSw3ICszMDUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgVmFs
dWUqIHB0ciA9IG1lbW9yeS0+bGFzdENoaWxkKCk7CiAgICAgICAgIEhlYXBSYW5nZSByYW5nZSA9
IG1lbW9yeS0+cmFuZ2UoKTsKLSAgICAgICAgaW50MzJfdCBvZmZzZXQgPSBtZW1vcnktPm9mZnNl
dCgpOworICAgICAgICBWYWx1ZTo6T2Zmc2V0VHlwZSBvZmZzZXQgPSBtZW1vcnktPm9mZnNldCgp
OwogICAgICAgICBUeXBlIHR5cGUgPSBtZW1vcnktPnR5cGUoKTsKIAogICAgICAgICAvLyBGSVhN
RTogRW1wb3dlciB0aGlzIHRvIGluc2VydCBtb3JlIGNhc3RzIGFuZCBzaGlmdHMuIEZvciBleGFt
cGxlLCBhIExvYWQ4IGNvdWxkIG1hdGNoIGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJUb0Fpci5jcHAKaW5kZXggNWJhNWFmYS4uNTA2NzA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTQzOSw4ICs0MzksOSBAQCBwcml2YXRlOgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQot
ICAgIAotICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlRm9yU2hsKFZhbHVlKiBzaGws
IGludDMyX3Qgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6bnVsbG9w
dCkKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdh
bE9mZnNldDxJbnQ+PgorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlRm9yU2hsKFZh
bHVlKiBzaGwsIEludCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpu
dWxsb3B0KQogICAgIHsKICAgICAgICAgaWYgKHNobC0+b3Bjb2RlKCkgIT0gU2hsKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQ2Myw3ICs0NjQsOCBAQCBwcml2YXRlOgog
ICAgIH0KICAgICAKICAgICAvLyBUaGlzIHR1cm5zIHRoZSBnaXZlbiBvcGVyYW5kIGludG8gYW4g
YWRkcmVzcy4KLSAgICBBcmcgZWZmZWN0aXZlQWRkcihWYWx1ZSogYWRkcmVzcywgaW50MzJfdCBv
ZmZzZXQsIFdpZHRoIHdpZHRoKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5hbWUg
PSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgorICAgIEFyZyBlZmZlY3RpdmVBZGRyKFZhbHVl
KiBhZGRyZXNzLCBJbnQgb2Zmc2V0LCBXaWR0aCB3aWR0aCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChBcmc6OmlzVmFsaWRBZGRyRm9ybShvZmZzZXQsIHdpZHRoKSk7CiAgICAgICAgIApAQCAtNTUy
LDcgKzU1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICh2YWx1ZS0+cmVxdWlyZXNTaW1wbGVB
ZGRyKCkpCiAgICAgICAgICAgICByZXR1cm4gQXJnOjpzaW1wbGVBZGRyKHRtcCh2YWx1ZS0+bGFz
dENoaWxkKCkpKTsKIAotICAgICAgICBpbnQzMl90IG9mZnNldCA9IHZhbHVlLT5vZmZzZXQoKTsK
KyAgICAgICAgVmFsdWU6Ok9mZnNldFR5cGUgb2Zmc2V0ID0gdmFsdWUtPm9mZnNldCgpOwogICAg
ICAgICBXaWR0aCB3aWR0aCA9IHZhbHVlLT5hY2Nlc3NXaWR0aCgpOwogCiAgICAgICAgIEFyZyBy
ZXN1bHQgPSBlZmZlY3RpdmVBZGRyKHZhbHVlLT5sYXN0Q2hpbGQoKSwgb2Zmc2V0LCB3aWR0aCk7
CkBAIC0yMDIzLDEyICsyMDI1LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEFkZChTaGwoQHgs
ICRjKSwgQHkpCiAgICAgICAgIC8vIEFkZChAeCwgU2hsKEB5LCAkYykpCiAgICAgICAgIC8vIEFk
ZChAeCwgQHkpIChvbmx5IGlmIG9mZnNldCAhPSAwKQotICAgICAgICBpbnQzMl90IG9mZnNldCA9
IDA7Ci0gICAgICAgIGlmICh2YWx1ZS0+Y2hpbGQoMSktPmlzUmVwcmVzZW50YWJsZUFzPGludDMy
X3Q+KCkKKyAgICAgICAgVmFsdWU6Ok9mZnNldFR5cGUgb2Zmc2V0ID0gMDsKKyAgICAgICAgaWYg
KHZhbHVlLT5jaGlsZCgxKS0+aXNSZXByZXNlbnRhYmxlQXM8VmFsdWU6Ok9mZnNldFR5cGU+KCkK
ICAgICAgICAgICAgICYmIGNhbkJlSW50ZXJuYWwodmFsdWUtPmNoaWxkKDApKQogICAgICAgICAg
ICAgJiYgdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBBZGQpIHsKICAgICAgICAgICAgIGlu
bmVyQWRkID0gdmFsdWUtPmNoaWxkKDApOwotICAgICAgICAgICAgb2Zmc2V0ID0gc3RhdGljX2Nh
c3Q8aW50MzJfdD4odmFsdWUtPmNoaWxkKDEpLT5hc0ludCgpKTsKKyAgICAgICAgICAgIG9mZnNl
dCA9IHN0YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRUeXBlPih2YWx1ZS0+Y2hpbGQoMSktPmFzSW50
KCkpOwogICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS0+Y2hpbGQoMCk7CiAgICAgICAgIH0KICAg
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKaW5kZXgg
NTMwMWQ0MS4uMTA0M2Q1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TWVtb3J5VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZh
bHVlLmNwcApAQCAtMzgsOSArMzgsOSBAQCBNZW1vcnlWYWx1ZTo6fk1lbW9yeVZhbHVlKCkKIHsK
IH0KIAotYm9vbCBNZW1vcnlWYWx1ZTo6aXNMZWdhbE9mZnNldChpbnQ2NF90IG9mZnNldCkgY29u
c3QKK2Jvb2wgTWVtb3J5VmFsdWU6OmlzTGVnYWxPZmZzZXRJbXBsKGludDY0X3Qgb2Zmc2V0KSBj
b25zdAogewotICAgIHJldHVybiBCMzo6aXNSZXByZXNlbnRhYmxlQXM8aW50MzJfdD4ob2Zmc2V0
KSAmJiBpc0xlZ2FsT2Zmc2V0KHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkpOworICAgIHJl
dHVybiBCMzo6aXNSZXByZXNlbnRhYmxlQXM8T2Zmc2V0VHlwZT4ob2Zmc2V0KSAmJiBpc0xlZ2Fs
T2Zmc2V0KHN0YXRpY19jYXN0PE9mZnNldFR5cGU+KG9mZnNldCkpOwogfQogCiBUeXBlIE1lbW9y
eVZhbHVlOjphY2Nlc3NUeXBlKCkgY29uc3QKQEAgLTgwLDcgKzgwLDcgQEAgVmFsdWUqIE1lbW9y
eVZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAogCiAvLyBVc2UgdGhpcyBmb3JtIGZvciBMb2FkIChi
dXQgbm90IExvYWQ4WiwgTG9hZDhTLCBvciBhbnkgb2YgdGhlIExvYWRzIHRoYXQgaGF2ZSBhIHN1
ZmZpeCB0aGF0CiAvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgotTWVtb3J5VmFsdWU6
Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSog
cG9pbnRlciwgaW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNl
UmFuZ2UpCitNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVl
TG9hZCwgS2luZCBraW5kLCBUeXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVy
LCBNZW1vcnlWYWx1ZTo6T2Zmc2V0VHlwZSBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJh
bmdlIGZlbmNlUmFuZ2UpCiAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBraW5kLCB0eXBlLCBv
cmlnaW4sIHBvaW50ZXIpCiAgICAgLCBtX29mZnNldChvZmZzZXQpCiAgICAgLCBtX3JhbmdlKHJh
bmdlKQpAQCAtMTA4LDcgKzEwOCw3IEBAIE1lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShLaW5kIGtp
bmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGluCiB9CiAKIC8v
IFVzZSB0aGlzIGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBpbXBsaWVk
LgotTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFs
dWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBm
ZW5jZVJhbmdlKQorTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKE1lbW9yeVZhbHVlOjpNZW1vcnlW
YWx1ZUxvYWRJbXBsaWVkLCBLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVy
LCBNZW1vcnlWYWx1ZTo6T2Zmc2V0VHlwZSBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJh
bmdlIGZlbmNlUmFuZ2UpCiAgICAgOiBNZW1vcnlWYWx1ZShraW5kLCBJbnQzMiwgb3JpZ2luLCBw
b2ludGVyLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdlKQogewogICAgIGlmICghQVNTRVJUX0RJ
U0FCTEVEKSB7CkBAIC0xMjUsNyArMTI1LDcgQEAgTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKEtp
bmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qgb2Zmc2UKIH0K
IAogLy8gVXNlIHRoaXMgZm9ybSBmb3Igc3RvcmVzLgotTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVl
KEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwg
aW50MzJfdCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCitN
ZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlU3RvcmUsIEtp
bmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgTWVt
b3J5VmFsdWU6Ok9mZnNldFR5cGUgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBm
ZW5jZVJhbmdlKQogICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwga2luZCwgVm9pZCwgb3JpZ2lu
LCB2YWx1ZSwgcG9pbnRlcikKICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKICAgICAsIG1fcmFuZ2Uo
cmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAppbmRleCBjZWMw
MzgwLi42YWYzYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1v
cnlWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01lbW9yeVZhbHVlLmgK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJCM0JhbmsuaCIKICNpbmNsdWRlICJCM0hlYXBS
YW5nZS5oIgogI2luY2x1ZGUgIkIzVmFsdWUuaCIKKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKQEAgLTQzLDEzICs0NCwxNyBAQCBwdWJs
aWM6CiAKICAgICB+TWVtb3J5VmFsdWUoKTsKIAotICAgIGludDMyX3Qgb2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9vZmZzZXQ7IH0KLSAgICB2b2lkIHNldE9mZnNldChpbnQzMl90IG9mZnNldCkg
eyBtX29mZnNldCA9IG9mZnNldDsgfQotICAgIAorICAgIE9mZnNldFR5cGUgb2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVu
YW1lID0gSXNMZWdhbE9mZnNldDxJbnQ+PgorICAgIHZvaWQgc2V0T2Zmc2V0KEludCBvZmZzZXQp
IHsgbV9vZmZzZXQgPSBvZmZzZXQ7IH0KKwogICAgIC8vIFlvdSBkb24ndCBoYXZlIHRvIHdvcnJ5
IGFib3V0IHVzaW5nIGxlZ2FsIG9mZnNldHMgdW5sZXNzIHlvdSd2ZSBlbnRlcmVkIHF1aXJrcyBt
b2RlLgotICAgIGJvb2wgaXNMZWdhbE9mZnNldChpbnQzMl90IG9mZnNldCkgY29uc3Q7Ci0gICAg
Ym9vbCBpc0xlZ2FsT2Zmc2V0KGludDY0X3Qgb2Zmc2V0KSBjb25zdDsKLSAgICAKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBJbnQsCisgICAgICAgIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19pbnRlZ3JhbDxJbnQ+Ojp2YWx1ZT46OnR5cGUsCisgICAgICAgIHR5cGVu
YW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zaWduZWQ8SW50Pjo6dmFsdWU+
Ojp0eXBlCisgICAgPgorICAgIGJvb2wgaXNMZWdhbE9mZnNldChJbnQgb2Zmc2V0KSBjb25zdCB7
IHJldHVybiBpc0xlZ2FsT2Zmc2V0SW1wbChvZmZzZXQpOyB9CisKICAgICAvLyBBIG5lY2Vzc2Fy
eSBjb25zZXF1ZW5jZSBvZiBNZW1vcnlWYWx1ZSBoYXZpbmcgYW4gb2Zmc2V0IGlzIHRoYXQgaXQg
cGFydGljaXBhdGVzIGluIGluc3RydWN0aW9uCiAgICAgLy8gc2VsZWN0aW9uLiBUaGlzIHRlbGxz
IHlvdSBpZiB0aGlzIHdpbGwgZ2V0IGxvd2VyZWQgdG8gc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMg
YW4gb2Zmc2V0bGVzcwogICAgIC8vIGFkZHJlc3MuCkBAIC04NCw4ICs4OSw4IEBAIHByb3RlY3Rl
ZDoKIAogICAgIFZhbHVlKiBjbG9uZUltcGwoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICBNZW1vcnlWYWx1ZShDaGVja2VkT3Bjb2Rl
VGFnLCBLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3JpZ2luIG9yaWdpbiwgaW50MzJfdCBvZmZzZXQs
IEhlYXBSYW5nZSByYW5nZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UsIEFyZ3VtZW50cy4uLiBhcmd1
bWVudHMpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IElzTGVnYWxPZmZz
ZXQ8SW50PiwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIE1lbW9yeVZhbHVlKENoZWNrZWRP
cGNvZGVUYWcsIEtpbmQga2luZCwgVHlwZSB0eXBlLCBPcmlnaW4gb3JpZ2luLCBJbnQgb2Zmc2V0
LCBIZWFwUmFuZ2UgcmFuZ2UsIEhlYXBSYW5nZSBmZW5jZVJhbmdlLCBBcmd1bWVudHMuLi4gYXJn
dW1lbnRzKQogICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIGtpbmQsIHR5cGUsIG9yaWdp
biwgYXJndW1lbnRzLi4uKQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKICAgICAgICAgLCBt
X3JhbmdlKHJhbmdlKQpAQCAtOTUsMTggKzEwMCw1NCBAQCBwcm90ZWN0ZWQ6CiAgICAgCiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7Ci0gICAgCisKKyAgICBib29sIGlzTGVn
YWxPZmZzZXRJbXBsKGludDMyX3Qgb2Zmc2V0KSBjb25zdDsKKyAgICBib29sIGlzTGVnYWxPZmZz
ZXRJbXBsKGludDY0X3Qgb2Zmc2V0KSBjb25zdDsKKworICAgIGVudW0gTWVtb3J5VmFsdWVMb2Fk
IHsgTWVtb3J5VmFsdWVMb2FkVGFnIH07CisgICAgZW51bSBNZW1vcnlWYWx1ZUxvYWRJbXBsaWVk
IHsgTWVtb3J5VmFsdWVMb2FkSW1wbGllZFRhZyB9OworICAgIGVudW0gTWVtb3J5VmFsdWVTdG9y
ZSB7IE1lbW9yeVZhbHVlU3RvcmVUYWcgfTsKKwogICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIExv
YWQgKGJ1dCBub3QgTG9hZDhaLCBMb2FkOFMsIG9yIGFueSBvZiB0aGUgTG9hZHMgdGhhdCBoYXZl
IGEgc3VmZml4IHRoYXQKICAgICAvLyBkZXNjcmliZXMgdGhlIHJldHVybmVkIHR5cGUpLgotICAg
IE1lbW9yeVZhbHVlKEtpbmQsIFR5cGUsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGludDMyX3Qg
b2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdl
IGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSk7CisgICAgTWVtb3J5VmFsdWUoS2luZCBraW5kLCBU
eXBlIHR5cGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBwb2ludGVyKQorICAgICAgICA6IE1lbW9y
eVZhbHVlKE1lbW9yeVZhbHVlTG9hZFRhZywga2luZCwgdHlwZSwgb3JpZ2luLCBwb2ludGVyKQor
ICAgIHsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IElzTGVn
YWxPZmZzZXQ8SW50Pj4KKyAgICBNZW1vcnlWYWx1ZShLaW5kIGtpbmQsIFR5cGUgdHlwZSwgT3Jp
Z2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIEludCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSA9
IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlKCkpCisg
ICAgICAgIDogTWVtb3J5VmFsdWUoTWVtb3J5VmFsdWVMb2FkVGFnLCBraW5kLCB0eXBlLCBvcmln
aW4sIHBvaW50ZXIsIG9mZnNldCwgcmFuZ2UsIGZlbmNlUmFuZ2UpCisgICAgeworICAgIH0KIAog
ICAgIC8vIFVzZSB0aGlzIGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBp
bXBsaWVkLgotICAgIE1lbW9yeVZhbHVlKEtpbmQsIE9yaWdpbiwgVmFsdWUqIHBvaW50ZXIsIGlu
dDMyX3Qgb2Zmc2V0ID0gMCwgSGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVh
cFJhbmdlIGZlbmNlUmFuZ2UgPSBIZWFwUmFuZ2UoKSk7CisgICAgTWVtb3J5VmFsdWUoS2luZCBr
aW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcG9pbnRlcikKKyAgICAgICAgOiBNZW1vcnlWYWx1
ZShNZW1vcnlWYWx1ZUxvYWRJbXBsaWVkVGFnLCBraW5kLCBvcmlnaW4sIHBvaW50ZXIpCisgICAg
eworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gSXNMZWdhbE9m
ZnNldDxJbnQ+PgorICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFs
dWUqIHBvaW50ZXIsIEludCBvZmZzZXQsIEhlYXBSYW5nZSByYW5nZSA9IEhlYXBSYW5nZTo6dG9w
KCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlKCkpCisgICAgICAgIDogTWVtb3J5
VmFsdWUoTWVtb3J5VmFsdWVMb2FkSW1wbGllZFRhZywga2luZCwgb3JpZ2luLCBwb2ludGVyLCBv
ZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdlKQorICAgIHsKKyAgICB9CiAKICAgICAvLyBVc2UgdGhp
cyBmb3JtIGZvciBzdG9yZXMuCi0gICAgTWVtb3J5VmFsdWUoS2luZCwgT3JpZ2luLCBWYWx1ZSog
dmFsdWUsIFZhbHVlKiBwb2ludGVyLCBpbnQzMl90IG9mZnNldCA9IDAsIEhlYXBSYW5nZSByYW5n
ZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdlKCkp
OwotICAgIAotICAgIGludDMyX3QgbV9vZmZzZXQgeyAwIH07CisgICAgTWVtb3J5VmFsdWUoS2lu
ZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSogdmFsdWUsIFZhbHVlKiBwb2ludGVyKQorICAg
ICAgICA6IE1lbW9yeVZhbHVlKE1lbW9yeVZhbHVlU3RvcmVUYWcsIGtpbmQsIG9yaWdpbiwgdmFs
dWUsIHBvaW50ZXIpCisgICAgeworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5
cGVuYW1lID0gSXNMZWdhbE9mZnNldDxJbnQ+PgorICAgIE1lbW9yeVZhbHVlKEtpbmQga2luZCwg
T3JpZ2luIG9yaWdpbiwgVmFsdWUqIHZhbHVlLCBWYWx1ZSogcG9pbnRlciwgSW50IG9mZnNldCwg
SGVhcFJhbmdlIHJhbmdlID0gSGVhcFJhbmdlOjp0b3AoKSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2Ug
PSBIZWFwUmFuZ2UoKSkKKyAgICAgICAgOiBNZW1vcnlWYWx1ZShNZW1vcnlWYWx1ZVN0b3JlVGFn
LCBraW5kLCBvcmlnaW4sIHZhbHVlLCBwb2ludGVyLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdl
KQorICAgIHsKKyAgICB9CisKKyAgICAvLyBUaGUgYWJvdmUgdGVtcGxhdGVzIGZvcndhcmQgdG8g
dGhlc2UgaW1wbGVtZW50YXRpb25zLgorICAgIE1lbW9yeVZhbHVlKE1lbW9yeVZhbHVlTG9hZCwg
S2luZCwgVHlwZSwgT3JpZ2luLCBWYWx1ZSogcG9pbnRlciwgT2Zmc2V0VHlwZSA9IDAsIEhlYXBS
YW5nZSA9IEhlYXBSYW5nZTo6dG9wKCksIEhlYXBSYW5nZSBmZW5jZVJhbmdlID0gSGVhcFJhbmdl
KCkpOworICAgIE1lbW9yeVZhbHVlKE1lbW9yeVZhbHVlTG9hZEltcGxpZWQsIEtpbmQsIE9yaWdp
biwgVmFsdWUqIHBvaW50ZXIsIE9mZnNldFR5cGUgPSAwLCBIZWFwUmFuZ2UgPSBIZWFwUmFuZ2U6
OnRvcCgpLCBIZWFwUmFuZ2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKTsKKyAgICBNZW1vcnlW
YWx1ZShNZW1vcnlWYWx1ZVN0b3JlLCBLaW5kLCBPcmlnaW4sIFZhbHVlKiwgVmFsdWUqIHBvaW50
ZXIsIE9mZnNldFR5cGUgPSAwLCBIZWFwUmFuZ2UgPSBIZWFwUmFuZ2U6OnRvcCgpLCBIZWFwUmFu
Z2UgZmVuY2VSYW5nZSA9IEhlYXBSYW5nZSgpKTsKKworICAgIE9mZnNldFR5cGUgbV9vZmZzZXQg
eyAwIH07CiAgICAgSGVhcFJhbmdlIG1fcmFuZ2UgeyBIZWFwUmFuZ2U6OnRvcCgpIH07CiAgICAg
SGVhcFJhbmdlIG1fZmVuY2VSYW5nZSB7IEhlYXBSYW5nZSgpIH07CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWVJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZUlubGluZXMuaAppbmRleCBhNDcyMzJjLi4w
NmQ3YWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1
ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZUlu
bGluZXMuaApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsKIAotaW5saW5lIGJvb2wgTWVtb3J5VmFsdWU6OmlzTGVnYWxPZmZzZXQoaW50MzJfdCBvZmZz
ZXQpIGNvbnN0CitpbmxpbmUgYm9vbCBNZW1vcnlWYWx1ZTo6aXNMZWdhbE9mZnNldEltcGwoaW50
MzJfdCBvZmZzZXQpIGNvbnN0CiB7CiAgICAgLy8gTk9URTogVGhpcyBpcyBpbmxpbmUgYmVjYXVz
ZSBpdCBjb25zdGFudC1mb2xkcyB0byB0cnVlIG9uIHg4NiEKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01vdmVDb25zdGFudHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAKaW5kZXggYTMyYzU4Zi4uNzZmMTJmYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAKQEAgLTIw
OSw3ICsyMDksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYmVzdFBvaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtZW1vcnlWYWx1ZS0+bGFzdENoaWxkKCkgPSBiZXN0UG9pbnRlcjsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZW1vcnlWYWx1ZS0+c2V0T2Zmc2V0KGRlc2lyZWRPZmZzZXQo
YmVzdFBvaW50ZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlWYWx1ZS0+
c2V0T2Zmc2V0KHN0YXRpY19jYXN0PGludDMyX3Q+KGRlc2lyZWRPZmZzZXQoYmVzdFBvaW50ZXIp
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzA4LDEyICszMDgsMTYgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBpZiAob2ZmTGltaXRzLmNvbnRhaW5zKHZhbHVlKSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKKyAgICAgICAgICAgICAgICBhdXRvIG9mZnNldCA9IHNpemVv
ZihpbnQ2NF90KSAqIG1fY29uc3RUYWJsZS5nZXQoa2V5KTsKKyAgICAgICAgICAgICAgICBpZiAo
IWlzUmVwcmVzZW50YWJsZUFzPFZhbHVlOjpPZmZzZXRUeXBlPihvZmZzZXQpKQorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgICAgIFZhbHVlKiB0YWJsZUJhc2Ug
PSBtX2luc2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFudCgKICAgICAgICAgICAgICAgICAgICAg
dmFsdWVJbmRleCwgdmFsdWUtPm9yaWdpbigpLCBwb2ludGVyVHlwZSgpLAogICAgICAgICAgICAg
ICAgICAgICBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KG1fZGF0YVNlY3Rpb24pKTsKICAgICAgICAg
ICAgICAgICBWYWx1ZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PE1lbW9yeVZhbHVl
PigKICAgICAgICAgICAgICAgICAgICAgdmFsdWVJbmRleCwgTG9hZCwgdmFsdWUtPnR5cGUoKSwg
dmFsdWUtPm9yaWdpbigpLCB0YWJsZUJhc2UsCi0gICAgICAgICAgICAgICAgICAgIHNpemVvZihp
bnQ2NF90KSAqIG1fY29uc3RUYWJsZS5nZXQoa2V5KSk7CisgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRUeXBlPihvZmZzZXQpKTsKICAgICAgICAgICAgICAgICB2
YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyZXN1bHQpOwogICAgICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKaW5kZXggMTEwYTZk
My4uZDk1MjI0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNl
U3RyZW5ndGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVu
Z3RoLmNwcApAQCAtMTU1NSw3ICsxNTU1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBp
bnRwdHJfdCBvZmZzZXQgPSBhZGRyZXNzLT5jaGlsZCgxKS0+YXNJbnRQdHIoKTsKICAgICAgICAg
ICAgICAgICBpZiAoIXN1bU92ZXJmbG93czxpbnRwdHJfdD4ob2Zmc2V0LCBtZW1vcnktPm9mZnNl
dCgpKSkgewogICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbWVtb3J5LT5vZmZzZXQoKTsK
LSAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzbWFsbE9mZnNldCA9IHN0YXRpY19jYXN0PGlu
dDMyX3Q+KG9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlOjpPZmZzZXRUeXBlIHNt
YWxsT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8VmFsdWU6Ok9mZnNldFR5cGU+KG9mZnNldCk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChzbWFsbE9mZnNldCA9PSBvZmZzZXQpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZHJlc3MgPSBhZGRyZXNzLT5jaGlsZCgwKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lbW9yeS0+bGFzdENoaWxkKCkgPSBhZGRyZXNzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKaW5kZXggYTBjMjE1ZS4uMzBjY2Rl
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFs
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdGFja21hcFNwZWNpYWwuY3Bw
CkBAIC0yNzAsNyArMjcwLDcgQEAgVmFsdWVSZXAgU3RhY2ttYXBTcGVjaWFsOjpyZXBGb3JBcmco
Q29kZSYgY29kZSwgY29uc3QgQXJnJiBhcmcpCiAgICAgICAgIGlmIChhcmcuYmFzZSgpID09IFRt
cChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlcikpCiAgICAgICAgICAgICByZXR1cm4gVmFsdWVS
ZXA6OnN0YWNrKGFyZy5vZmZzZXQoKSk7CiAgICAgICAgIEFTU0VSVChhcmcuYmFzZSgpID09IFRt
cChNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpKTsKLSAgICAgICAgcmV0dXJu
IFZhbHVlUmVwOjpzdGFjayhhcmcub2Zmc2V0KCkgLSBzdGF0aWNfY2FzdDxpbnQzMl90Pihjb2Rl
LmZyYW1lU2l6ZSgpKSk7CisgICAgICAgIHJldHVybiBWYWx1ZVJlcDo6c3RhY2soYXJnLm9mZnNl
dCgpIC0gc2FmZUNhc3Q8VmFsdWU6Ok9mZnNldFR5cGU+KGNvZGUuZnJhbWVTaXplKCkpKTsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IFZhbHVlUmVwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAppbmRleCA1ZGZjMjg0Li43
YmNjMDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RyaVN0YXRlLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgQjMgewpAQCAtMjgzLDYgKzI4NCwyMiBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIHdhbGsoY29uc3QgRnVuY3RvciYgZnVuY3RvciwgUGhp
Q2hpbGRyZW4qID0gbnVsbHB0cik7CiAKKyAgICAvLyBCMyBwdXJwb3NlZnVsbHkgb25seSByZXBy
ZXNlbnRzIHNpZ25lZCAzMi1iaXQgb2Zmc2V0cyBiZWNhdXNlIHRoYXQncyB3aGF0IHg4NiBjYW4g
ZW5jb2RlLCBhbmQKKyAgICAvLyBBUk02NCBjYW5ub3QgZW5jb2RlIGFueXRoaW5nIGJpZ2dlci4g
VGhlIElzTGVnYWxPZmZzZXQgdHlwZSB0cmFpdCBpcyB0aGVuIHVzZWQgb24gQjMgVmFsdWUKKyAg
ICAvLyBtZXRob2RzIHRvIHByZXZlbnQgaW1wbGljaXQgY29udmVyc2lvbnMgYnkgQysrIGZyb20g
aW52YWxpZCBvZmZzZXQgdHlwZXM6IHRoZXNlIGNhdXNlIGNvbXBpbGF0aW9uCisgICAgLy8gdG8g
ZmFpbCwgaW5zdGVhZCBvZiBjYXVzaW5nIGltcGxlbWVudGF0aW9uLWRlZmluZWQgYmVoYXZpb3Ig
KHdoaWNoIG9mdGVuIHR1cm5zIHRvIGV4cGxvaXQpLgorICAgIC8vIE9mZnNldFR5cGUgaXNuJ3Qg
c3VmZmljaWVudCB0byBkZXRlcm1pbmUgb2Zmc2V0IHZhbGlkaXR5ISBFYWNoIFZhbHVlIG9wY29k
ZSBmdXJ0aGVyIGhhcyBhbgorICAgIC8vIGlzTGVnYWxPZmZzZXQgcnVudGltZSBtZXRob2QgdXNl
ZCB0byBkZXRlcm1pbmUgdmFsdWUgbGVnYWxpdHkgYXQgcnVudGltZS4gVGhpcyBpcyBleHBvc2Vk
IHRvIHVzZXJzCisgICAgLy8gb2YgQjMgdG8gZm9yY2UgdGhlbSB0byByZWFzb24gYWJvdXQgdGhl
IHRhcmdldCdzIG9mZnNldC4KKyAgICB0eXBlZGVmIGludDMyX3QgT2Zmc2V0VHlwZTsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBJbnQ+CisgICAgc3RydWN0IElzTGVnYWxPZmZzZXQgOiBzdGQ6OmNv
bmp1bmN0aW9uPAorICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2ludGVn
cmFsPEludD46OnZhbHVlPjo6dHlwZSwKKyAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19zaWduZWQ8SW50Pjo6dmFsdWU+Ojp0eXBlLAorICAgICAgICB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzaXplb2YoSW50KSA8PSBzaXplb2YoT2Zmc2V0VHlwZSk+Ojp0eXBlCisgICAg
PiB7IH07CisKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgVmFsdWUqIGNsb25lSW1wbCgpIGNv
bnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJB
cmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCmluZGV4IDUz
YzUyZTEuLmQwZTY5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQXJnLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVz
cGFjZSBBaXIgewogCi1BcmcgQXJnOjpzdGFja0FkZHIoaW50MzJfdCBvZmZzZXRGcm9tRlAsIHVu
c2lnbmVkIGZyYW1lU2l6ZSwgV2lkdGggd2lkdGgpCitBcmcgQXJnOjpzdGFja0FkZHJJbXBsKGlu
dDMyX3Qgb2Zmc2V0RnJvbUZQLCB1bnNpZ25lZCBmcmFtZVNpemUsIFdpZHRoIHdpZHRoKQogewog
ICAgIEFyZyByZXN1bHQgPSBBcmc6OmFkZHIoQWlyOjpUbXAoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIpLCBvZmZzZXRGcm9tRlApOwogICAgIGlmICghcmVzdWx0LmlzVmFsaWRGb3JtKHdpZHRo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKaW5kZXggYWExMWJlNS4uYzJl
ZDRmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiQjNCYW5rLmgiCiAjaW5jbHVkZSAiQjNDb21tb24uaCIKICNpbmNsdWRl
ICJCM1R5cGUuaCIKKyNpbmNsdWRlICJCM1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNXaWR0aC5oIgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCkBAIC01MzQsNyArNTM1LDggQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHN0YXRpYyBBcmcgYWRkcihBaXI6
OlRtcCBiYXNlLCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50
LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PEludD4+CisgICAgc3RhdGljIEFyZyBh
ZGRyKEFpcjo6VG1wIGJhc2UsIEludCBvZmZzZXQpCiAgICAgewogICAgICAgICBBU1NFUlQoYmFz
ZS5pc0dQKCkpOwogICAgICAgICBBcmcgcmVzdWx0OwpAQCAtNTQ0LDcgKzU0NiwxMyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgc3RhdGljIEFyZyBzdGFj
ayhTdGFja1Nsb3QqIHZhbHVlLCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgc3RhdGljIEFyZyBh
ZGRyKEFpcjo6VG1wIGJhc2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRkcihiYXNlLCAwKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6Oklz
TGVnYWxPZmZzZXQ8SW50Pj4KKyAgICBzdGF0aWMgQXJnIHN0YWNrKFN0YWNrU2xvdCogdmFsdWUs
IEludCBvZmZzZXQpCiAgICAgewogICAgICAgICBBcmcgcmVzdWx0OwogICAgICAgICByZXN1bHQu
bV9raW5kID0gU3RhY2s7CkBAIC01NTMsMTUgKzU2MSwyNSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgc3RhdGljIEFyZyBjYWxsQXJnKGludDMyX3Qgb2Zm
c2V0KQorICAgIHN0YXRpYyBBcmcgc3RhY2soU3RhY2tTbG90KiB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBzdGFjayh2YWx1ZSwgMCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PEludD4+CisgICAgc3RhdGlj
IEFyZyBjYWxsQXJnKEludCBvZmZzZXQpCiAgICAgewogICAgICAgICBBcmcgcmVzdWx0OwogICAg
ICAgICByZXN1bHQubV9raW5kID0gQ2FsbEFyZzsKICAgICAgICAgcmVzdWx0Lm1fb2Zmc2V0ID0g
b2Zmc2V0OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICAKLSAgICBzdGF0aWMg
QXJnIHN0YWNrQWRkcihpbnQzMl90IG9mZnNldEZyb21GUCwgdW5zaWduZWQgZnJhbWVTaXplLCBX
aWR0aCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6Oklz
TGVnYWxPZmZzZXQ8SW50Pj4KKyAgICBzdGF0aWMgQXJnIHN0YWNrQWRkcihJbnQgb2Zmc2V0RnJv
bUZQLCB1bnNpZ25lZCBmcmFtZVNpemUsIFdpZHRoIHdpZHRoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHN0YWNrQWRkckltcGwob2Zmc2V0RnJvbUZQLCBmcmFtZVNpemUsIHdpZHRoKTsKKyAgICB9
CiAKICAgICAvLyBJZiB5b3UgZG9uJ3QgcGFzcyBhIFdpZHRoLCB0aGlzIG9wdGltaXN0aWNhbGx5
IGFzc3VtZXMgdGhhdCB5b3UncmUgdXNpbmcgdGhlIHJpZ2h0IHdpZHRoLgogICAgIHN0YXRpYyBi
b29sIGlzVmFsaWRTY2FsZSh1bnNpZ25lZCBzY2FsZSwgc3RkOjpvcHRpb25hbDxXaWR0aD4gd2lk
dGggPSBzdGQ6Om51bGxvcHQpCkBAIC02MDQsNyArNjIyLDggQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgfQogCi0gICAgc3RhdGljIEFyZyBpbmRleChBaXI6OlRtcCBiYXNlLCBBaXI6OlRtcCBp
bmRleCwgdW5zaWduZWQgc2NhbGUgPSAxLCBpbnQzMl90IG9mZnNldCA9IDApCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PEludD4+Cisg
ICAgc3RhdGljIEFyZyBpbmRleChBaXI6OlRtcCBiYXNlLCBBaXI6OlRtcCBpbmRleCwgdW5zaWdu
ZWQgc2NhbGUsIEludCBvZmZzZXQpCiAgICAgewogICAgICAgICBBU1NFUlQoYmFzZS5pc0dQKCkp
OwogICAgICAgICBBU1NFUlQoaW5kZXguaXNHUCgpKTsKQEAgLTYxOCw2ICs2MzcsMTEgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIHN0YXRpYyBBcmcgaW5k
ZXgoQWlyOjpUbXAgYmFzZSwgQWlyOjpUbXAgaW5kZXgsIHVuc2lnbmVkIHNjYWxlID0gMSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBBcmc6OmluZGV4KGJhc2UsIGluZGV4LCBzY2FsZSwgMCk7Cisg
ICAgfQorCiAgICAgc3RhdGljIEFyZyByZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmRpdGlvbikKICAgICB7CiAgICAgICAgIEFyZyByZXN1bHQ7CkBAIC05MjUs
MTIgKzk0OSwxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc09mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIGlzTWVtb3J5KCk7IH0KICAgICAKLSAgICBpbnQzMl90IG9mZnNldCgpIGNvbnN0CisgICAg
VmFsdWU6Ok9mZnNldFR5cGUgb2Zmc2V0KCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChraW5k
KCkgPT0gU3RhY2spCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4obV9z
Y2FsZSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmFsdWU6Ok9mZnNldFR5cGU+
KG1fc2NhbGUpOwogICAgICAgICBBU1NFUlQoa2luZCgpID09IEFkZHIgfHwga2luZCgpID09IENh
bGxBcmcgfHwga2luZCgpID09IEluZGV4KTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dDMyX3Q+KG1fb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFZhbHVlOjpPZmZz
ZXRUeXBlPihtX29mZnNldCk7CiAgICAgfQogCiAgICAgU3RhY2tTbG90KiBzdGFja1Nsb3QoKSBj
b25zdApAQCAtMTE0MSw3ICsxMTY1LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEFkZHJGb3JtKGludDMyX3Qgb2Zmc2V0
LCBzdGQ6Om9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6OklzTGVnYWxPZmZzZXQ8SW50Pj4KKyAg
ICBzdGF0aWMgYm9vbCBpc1ZhbGlkQWRkckZvcm0oSW50IG9mZnNldCwgc3RkOjpvcHRpb25hbDxX
aWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpCiAgICAgewogICAgICAgICBpZiAoaXNYODYoKSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTE2Niw3ICsxMTkxLDggQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgaXNWYWxpZElu
ZGV4Rm9ybSh1bnNpZ25lZCBzY2FsZSwgaW50MzJfdCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8V2lk
dGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwgdHlw
ZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgorICAgIHN0YXRpYyBib29sIGlzVmFs
aWRJbmRleEZvcm0odW5zaWduZWQgc2NhbGUsIEludCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8V2lk
dGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAgICAgICAgaWYgKCFpc1ZhbGlkU2Nh
bGUoc2NhbGUsIHdpZHRoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNzYsNyAr
MTMwMiw3IEBAIHB1YmxpYzoKICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyIGFzVHJ1
c3RlZEltbTMyKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0ltbSgpIHx8IGlzQml0
SW1tKCkpOwotICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzdGF0
aWNfY2FzdDxpbnQzMl90PihtX29mZnNldCkpOworICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxWYWx1ZTo6T2Zmc2V0VHlwZT4obV9vZmZzZXQp
KTsKICAgICB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtMTMwMSw3ICsxMzI3LDcgQEAgcHVi
bGljOgogICAgICAgICBpZiAoaXNTaW1wbGVBZGRyKCkpCiAgICAgICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlLmdwcigpKTsKICAgICAgICAgQVNTRVJUKGlzQWRk
cigpKTsKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5ncHIo
KSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obV9vZmZzZXQpKTsKKyAgICAgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5ncHIoKSwgc3RhdGljX2Nhc3Q8VmFsdWU6Ok9mZnNl
dFR5cGU+KG1fb2Zmc2V0KSk7CiAgICAgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRl
eCBhc0Jhc2VJbmRleCgpIGNvbnN0CkBAIC0xMzA5LDcgKzEzMzUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEFTU0VSVChpc0luZGV4KCkpOwogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OkJh
c2VJbmRleCgKICAgICAgICAgICAgIG1fYmFzZS5ncHIoKSwgbV9pbmRleC5ncHIoKSwgc3RhdGlj
X2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlNjYWxlPihsb2dTY2FsZSgpKSwKLSAgICAgICAgICAgIHN0
YXRpY19jYXN0PGludDMyX3Q+KG1fb2Zmc2V0KSk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxW
YWx1ZTo6T2Zmc2V0VHlwZT4obV9vZmZzZXQpKTsKICAgICB9CiAKICAgICBNYWNyb0Fzc2VtYmxl
cjo6UmVsYXRpb25hbENvbmRpdGlvbiBhc1JlbGF0aW9uYWxDb25kaXRpb24oKSBjb25zdApAQCAt
MTQxMiw2ICsxNDM4LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKKyAgICBzdGF0aWMg
QXJnIHN0YWNrQWRkckltcGwoaW50MzJfdCwgdW5zaWduZWQsIFdpZHRoKTsKKwogICAgIGludDY0
X3QgbV9vZmZzZXQgeyAwIH07CiAgICAgS2luZCBtX2tpbmQgeyBJbnZhbGlkIH07CiAgICAgaW50
MzJfdCBtX3NjYWxlIHsgMSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJMb3dlclN0YWNrQXJncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0Fpckxvd2VyU3RhY2tBcmdzLmNwcAppbmRleCA2YWFmOTkyLi44MzdjNmYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyU3RhY2tBcmdzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyU3RhY2tBcmdzLmNwcApAQCAt
NzQsNyArNzQsNyBAQCB2b2lkIGxvd2VyU3RhY2tBcmdzKENvZGUmIGNvZGUpCiAgICAgICAgICAg
ICBJbnN0JiBpbnN0ID0gYmxvY2stPmF0KGluc3RJbmRleCk7CiAgICAgICAgICAgICBpbnN0LmZv
ckVhY2hBcmcoCiAgICAgICAgICAgICAgICAgWyZdIChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUs
IEJhbmssIFdpZHRoIHdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gc3RhY2tBZGRy
ID0gWyZdIChpbnQzMl90IG9mZnNldCkgLT4gQXJnIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byBzdGFja0FkZHIgPSBbJl0gKFZhbHVlOjpPZmZzZXRUeXBlIG9mZnNldCkgLT4gQXJnIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIEFyZyByZXN1bHQgPSBBcmc6OnN0YWNrQWRkcihvZmZzZXQs
IGNvZGUuZnJhbWVTaXplKCksIHdpZHRoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
cmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiRkFUQUw6IENv
dWxkIG5vdCBjcmVhdGUgc3RhY2sgcmVmZXJlbmNlIGZvciBvZmZzZXQgPSAiLCBvZmZzZXQsICIg
YW5kIHdpZHRoID0gIiwgd2lkdGgsICJcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNw
cAppbmRleCA4MGU3NTRjLi42NjFhOTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNw
cApAQCAtODc5LDEwICs4NzksMTAgQEAgdm9pZCB0ZXN0TXVsQXJnU3RvcmUoaW50IGEpCiAKICAg
ICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAogICAgICAgICBwcm9jLCBTdG9yZSwgT3Jp
Z2luKCksIHZhbHVlLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksICZ2YWx1ZVNsb3QpKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmdmFsdWVTbG90KSwgMCk7CiAgICAgcm9vdC0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPigKICAgICAgICAgcHJvYywgU3RvcmUsIE9yaWdpbigpLCBtdWws
Ci0gICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
Jm11bFNsb3QpKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCAmbXVsU2xvdCksIDApOwogCiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwpAQCAtNTQyMSw3ICs1NDIxLDcgQEAgdm9p
ZCB0ZXN0U3RvcmUzMihpbnQgdmFsdWUpCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CiAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCiAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpLAotICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksICZzbG90KSk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpLCAwKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9s
VmFsdWUoCiAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CiAKQEAgLTU0MzcsNyArNTQzNyw3IEBA
IHZvaWQgdGVzdFN0b3JlQ29uc3RhbnQoaW50IHZhbHVlKQogICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4oCiAgICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHZhbHVlKSwKLSAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCkp
OworICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
ICZzbG90KSwgMCk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAogICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgMCkpOwogCkBAIC01NDU3LDcgKzU0NTcsNyBAQCB2b2lkIHRlc3RTdG9yZUNv
bnN0YW50UHRyKGludHB0cl90IHZhbHVlKQogICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4oCiAgICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCB2YWx1ZSksCi0gICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJnNsb3QpKTsKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmc2xvdCks
IDApOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDApKTsKIApAQCAtNTc1OSw3ICs1NzU5LDcgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkMzIo
aW50IGFtb3VudCkKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAg
ICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAogICAgICAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSkpLAotICAgICAgICBzbG90UHRyKTsKKyAgICAgICAgc2xvdFB0ciwgMCk7CiAgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCkpOwpAQCAtNTgwOSw3ICs1ODA5LDcgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tMzIo
aW50IGFtb3VudCkKICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCiAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4o
KSwgc2xvdFB0ciksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYW1vdW50KSksCi0gICAgICAgIHNsb3RQdHIpOworICAgICAgICBzbG90
UHRyLCAwKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAwKSk7CkBAIC01ODMyLDcgKzU4MzIsNyBAQCB2b2lkIHRlc3RTdG9y
ZUFkZExvYWQ4KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9hZE9wY29kZSkKICAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLAogICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAotICAgICAgICBzbG90
UHRyKTsKKyAgICAgICAgc2xvdFB0ciwgMCk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZh
bHVlKAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwpAQCAtNTkyMSw3ICs1OTIx
LDcgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tOChpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxv
YWRPcGNvZGUpCiAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAogICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBsb2FkT3Bjb2RlLCBPcmlnaW4oKSwg
c2xvdFB0ciksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYW1vdW50KSksCi0gICAgICAgIHNsb3RQdHIpOworICAgICAgICBzbG90UHRy
LCAwKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAwKSk7CkBAIC01OTQ0LDcgKzU5NDQsNyBAQCB2b2lkIHRlc3RTdG9yZUFk
ZExvYWQxNihpbnQgYW1vdW50LCBCMzo6T3Bjb2RlIGxvYWRPcGNvZGUpCiAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmln
aW4oKSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSwKLSAgICAgICAgc2xvdFB0
cik7CisgICAgICAgIHNsb3RQdHIsIDApOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZSgKICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKQEAgLTU5OTQsNyArNTk5NCw3
IEBAIHZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTE2KGludCBhbW91bnQsIEIzOjpPcGNvZGUgbG9h
ZE9wY29kZSkKICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCiAgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIGxvYWRPcGNvZGUsIE9yaWdpbigpLCBz
bG90UHRyKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBhbW91bnQpKSwKLSAgICAgICAgc2xvdFB0cik7CisgICAgICAgIHNsb3RQdHIs
IDApOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIDApKTsKQEAgLTYwMTUsNyArNjAxNSw3IEBAIHZvaWQgdGVzdFN0b3JlQWRk
TG9hZDY0KGludCBhbW91bnQpCiAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdpbigpLAogICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwg
T3JpZ2luKCksIHNsb3RQdHIpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKLSAgICAg
ICAgc2xvdFB0cik7CisgICAgICAgIHNsb3RQdHIsIDApOwogICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZSgKICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKQEAgLTYwNjMs
NyArNjA2Myw3IEBAIHZvaWQgdGVzdFN0b3JlQWRkTG9hZEltbTY0KGludDY0X3QgYW1vdW50KQog
ICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBzbG90UHRyKSwK
ICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigp
LCBhbW91bnQpKSwKLSAgICAgICAgc2xvdFB0cik7CisgICAgICAgIHNsb3RQdHIsIDApOwogICAg
IHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmln
aW4oKSwKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDApKTsKQEAgLTYwOTUsNyArNjA5NSw3IEBAIHZvaWQgdGVzdFN0b3JlQWRkTG9hZDMySW5k
ZXgoaW50IGFtb3VudCkKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAg
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAogICAgICAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSkpLAotICAgICAgICBzbG90UHRyKTsKKyAgICAgICAgc2xvdFB0ciwgMCk7CiAg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMCkpOwpAQCAtNjEyNSw3ICs2MTI1LDcgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1t
MzJJbmRleChpbnQgYW1vdW50KQogICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIs
IE9yaWdpbigpLCBzbG90UHRyKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhbW91bnQpKSwKLSAgICAgICAgc2xvdFB0cik7CisgICAg
ICAgIHNsb3RQdHIsIDApOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKQEAgLTYyNzksNyArNjI3OSw3IEBAIHZvaWQg
dGVzdFN0b3JlQWRkTG9hZDY0SW5kZXgoaW50IGFtb3VudCkKICAgICAgICAgICAgIHByb2MsIEFk
ZCwgT3JpZ2luKCksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHBy
b2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwgc2xvdFB0ciksCiAgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpLAotICAgICAgICBzbG90UHRyKTsKKyAgICAgICAgc2xvdFB0ciwgMCk7CiAgICAg
cm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgMCkpOwpAQCAtNjMwOSw3ICs2MzA5LDcgQEAgdm9pZCB0ZXN0U3RvcmVBZGRMb2FkSW1tNjRJ
bmRleChpbnQ2NF90IGFtb3VudCkKICAgICAgICAgICAgIHByb2MsIEFkZCwgT3JpZ2luKCksCiAg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0
LCBPcmlnaW4oKSwgc2xvdFB0ciksCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2
NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KSksCi0gICAgICAgIHNsb3RQdHIpOworICAg
ICAgICBzbG90UHRyLCAwKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CkBAIC02MzMzLDcgKzYzMzMsNyBAQCB2b2lk
IHRlc3RTdG9yZVN1YkxvYWQoaW50IGFtb3VudCkKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAogICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpLAotICAgICAgICBzbG90UHRyKTsKKyAgICAgICAg
c2xvdFB0ciwgMCk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAogICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOwpAQCAtNjM1NCwxMyArNjM1NCwxMyBAQCB2b2lkIHRl
c3RTdG9yZUFkZExvYWRJbnRlcmZlcmVuY2UoaW50IGFtb3VudCkKICAgICByb290LT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KAogICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksCiAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA2NjYpLAotICAg
ICAgICBvdGhlclNsb3RQdHIpOworICAgICAgICBvdGhlclNsb3RQdHIsIDApOwogICAgIHJvb3Qt
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCiAgICAgICAgIHByb2MsIFN0b3JlLCBPcmlnaW4oKSwK
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKICAgICAgICAgICAgIHByb2MsIEFkZCwg
T3JpZ2luKCksCiAgICAgICAgICAgICBsb2FkLCByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYW1vdW50KSksCi0gICAgICAgIHNsb3RQdHIpOworICAgICAgICBz
bG90UHRyLCAwKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CkBAIC02Mzg0LDcgKzYzODQsNyBAQCB2b2lkIHRlc3RT
dG9yZUFkZEFuZExvYWQoaW50IGFtb3VudCwgaW50IG1hc2spCiAgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIHNs
b3RQdHIpLAogICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBhbW91bnQpKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBtYXNrKSksCi0gICAgICAgIHNsb3RQdHIpOworICAg
ICAgICBzbG90UHRyLCAwKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUoCiAgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CkBAIC02NDA4LDcgKzY0MDgsNyBAQCB2b2lk
IHRlc3RTdG9yZU5lZ0xvYWQzMihpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgcHJvYywgU3Vi
LCBPcmlnaW4oKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAwKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1
ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBzbG90UHRyKSksCi0gICAgICAgIHNsb3RQ
dHIpOworICAgICAgICBzbG90UHRyLCAwKTsKICAgICAKICAgICByb290LT5hcHBlbmROZXdDb250
cm9sVmFsdWUoCiAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVuZE5l
dzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CkBAIC02NDMyLDcgKzY0MzIsNyBA
QCB2b2lkIHRlc3RTdG9yZU5lZ0xvYWRQdHIoaW50cHRyX3QgdmFsdWUpCiAgICAgICAgICAgICBw
cm9jLCBTdWIsIE9yaWdpbigpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIHNsb3RQdHIp
KSwKLSAgICAgICAgc2xvdFB0cik7CisgICAgICAgIHNsb3RQdHIsIDApOwogICAgIAogICAgIHJv
b3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKQEAg
LTY0NjgsNyArNjQ2OCw3IEBAIHZvaWQgdGVzdExvYWRPZmZzZXQoKQogICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAogICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9y
aWdpbigpLCBhcnJheVB0ciwgMCksCi0gICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwgYXJyYXlQdHIsIHNpemVvZihpbnQp
KSkpOworICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2Fk
LCBJbnQzMiwgT3JpZ2luKCksIGFycmF5UHRyLCBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2Yo
aW50KSkpKSk7CiAKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gYXJyYXlb
MF0gKyBhcnJheVsxXSk7CiB9CkBAIC02NDg0LDcgKzY0ODQsNyBAQCB2b2lkIHRlc3RMb2FkT2Zm
c2V0Tm90Q29uc3RhbnQoKQogICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAg
ICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLCBhcnJheVB0ciwgMCksCi0g
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDMy
LCBPcmlnaW4oKSwgYXJyYXlQdHIsIHNpemVvZihpbnQpKSkpOworICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksIGFycmF5
UHRyLCBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2YoaW50KSkpKSk7CiAKICAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludD4ocHJvYywgJmFycmF5WzBdKSA9PSBhcnJheVswXSArIGFycmF5WzFd
KTsKIH0KQEAgLTY1MDgsNyArNjUwOCw3IEBAIHZvaWQgdGVzdExvYWRPZmZzZXRVc2luZ0FkZCgp
CiAgICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgSW50MzIsIE9yaWdpbigpLAogICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgICAgIHByb2Ms
IEFkZCwgT3JpZ2luKCksIGFycmF5UHRyLAotICAgICAgICAgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHNpemVvZihpbnQpKSkpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludCkpKSkpKSk7CiAgICAgCiAg
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09IGFycmF5WzBdICsgYXJyYXlbMV0p
OwogfQpAQCAtNjUzMSwxMSArNjUzMSwxMSBAQCB2b2lkIHRlc3RMb2FkT2Zmc2V0VXNpbmdBZGRJ
bnRlcmZlcmVuY2UoKQogICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCiAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAgICAgICBwcm9jLCBBZGQsIE9yaWdp
bigpLCBhcnJheVB0ciwKLSAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgc2l6ZW9mKGludCkpKSk7CisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHN0YXRpY19jYXN0PGludDMyX3Q+
KHNpemVvZihpbnQpKSkpKTsKICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAogICAg
ICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHRoZU51bWJlck9mVGhlQmVhc3QsIG90aGVyQXJy
YXlQdHIsIDApOwogICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgIHBy
b2MsIFN0b3JlLCBPcmlnaW4oKSwgdGhlTnVtYmVyT2ZUaGVCZWFzdCwgb3RoZXJBcnJheVB0ciwg
c2l6ZW9mKGludCkpOworICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHRoZU51bWJlck9m
VGhlQmVhc3QsIG90aGVyQXJyYXlQdHIsIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihpbnQp
KSk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKAogICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KApAQCAtNjU2NSw3
ICs2NTY1LDcgQEAgdm9pZCB0ZXN0TG9hZE9mZnNldFVzaW5nQWRkTm90Q29uc3RhbnQoKQogICAg
ICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAogICAgICAgICAgICAgICAgICAgICBwcm9jLCBBZGQs
IE9yaWdpbigpLCBhcnJheVB0ciwKLSAgICAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBzaXplb2YoaW50KSkpKSkpOworICAgICAg
ICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihpbnQpKSkpKSkpOwogICAgIAogICAgIENI
RUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCAmYXJyYXlbMF0pID09IGFycmF5WzBdICsgYXJy
YXlbMV0pOwogfQpAQCAtNjY5MCw3ICs2NjkwLDcgQEAgdm9pZCB0ZXN0U3RvcmVMb2FkU3RhY2tT
bG90KGludCB2YWx1ZSkKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKICAgICAgICAg
ICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSks
Ci0gICAgICAgIHN0YWNrKTsKKyAgICAgICAgc3RhY2ssIDApOwogICAgIAogICAgIHJvb3QtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZSgKICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKQEAg
LTY3NjAsNyArNjc2MCw3IEBAIHZvaWQgdGVzdExvYWQoQjM6Ok9wY29kZSBvcGNvZGUsIElucHV0
VHlwZSB2YWx1ZSkKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCiAg
ICAgICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCB0eXBlLCBPcmlnaW4oKSwKICAgICAgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCksCi0gICAgICAgICAgICAgICAgc2l6ZW9mKElucHV0VHlwZSkp
KTsKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2YoSW5wdXRUeXBl
KSkpKTsKIAogICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPENUeXBlPihw
cm9jLCAmdmFsdWUgLSAxKSwgbW9kZWxMb2FkPENUeXBlPih2YWx1ZSkpKTsKICAgICB9CkBAIC0x
MjkwMiw3ICsxMjkwMiw3IEBAIHZvaWQgdGVzdEludGVycHJldGVyKCkKICAgICAgICAgICAgIGFk
ZFRvRGF0YVBvaW50ZXItPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgcHJvYywg
TXVsLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICBhZGRUb0RhdGFQb2ludGVyLT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2ludGVy
VHlwZSgpLCBPcmlnaW4oKSwgY29kZVBvaW50ZXJWYWx1ZSwgc2l6ZW9mKGludHB0cl90KSksCisg
ICAgICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBj
b2RlUG9pbnRlclZhbHVlLCBzdGF0aWNfY2FzdDxpbnQzMl90PihzaXplb2YoaW50cHRyX3QpKSks
CiAgICAgICAgICAgICAgICAgYWRkVG9EYXRhUG9pbnRlci0+YXBwZW5kSW50Q29uc3RhbnQoCiAg
ICAgICAgICAgICAgICAgICAgIHByb2MsIE9yaWdpbigpLCBwb2ludGVyVHlwZSgpLCBzaXplb2Yo
aW50cHRyX3QpKSkpKTsKICAgICBhZGRUb0RhdGFQb2ludGVyLT5hcHBlbmROZXc8VmFyaWFibGVW
YWx1ZT4oCkBAIC0xMjkzMSw3ICsxMjkzMSw3IEBAIHZvaWQgdGVzdEludGVycHJldGVyKCkKICAg
ICAgICAgICAgIGFkZFRvQ29kZVBvaW50ZXJUYWtlbi0+YXBwZW5kTmV3PFZhbHVlPigKICAgICAg
ICAgICAgICAgICBwcm9jLCBNdWwsIE9yaWdpbigpLAogICAgICAgICAgICAgICAgIGFkZFRvQ29k
ZVBvaW50ZXJUYWtlbi0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKLSAgICAgICAgICAgICAgICAg
ICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGNvZGVQb2ludGVyVmFsdWUs
IHNpemVvZihpbnRwdHJfdCkpLAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2lu
dGVyVHlwZSgpLCBPcmlnaW4oKSwgY29kZVBvaW50ZXJWYWx1ZSwgc3RhdGljX2Nhc3Q8aW50MzJf
dD4oc2l6ZW9mKGludHB0cl90KSkpLAogICAgICAgICAgICAgICAgIGFkZFRvQ29kZVBvaW50ZXJU
YWtlbi0+YXBwZW5kSW50Q29uc3RhbnQoCiAgICAgICAgICAgICAgICAgICAgIHByb2MsIE9yaWdp
bigpLCBwb2ludGVyVHlwZSgpLCBzaXplb2YoaW50cHRyX3QpKSkpKTsKICAgICBhZGRUb0NvZGVQ
b2ludGVyVGFrZW4tPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9jLCBKdW1wLCBPcmlnaW4oKSwg
RnJlcXVlbnRlZEJsb2NrKGRpc3BhdGNoKSk7CkBAIC0xMjk1NCw3ICsxMjk1NCw3IEBAIHZvaWQg
dGVzdEludGVycHJldGVyKCkKICAgICAgICAgICAgIGFkZFRvRGF0YS0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKICAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmln
aW4oKSwgZGF0YVBvaW50ZXJWYWx1ZSksCiAgICAgICAgICAgICBhZGRUb0RhdGEtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAgICAgICAgcHJvYywgTG9hZCwgcG9pbnRlclR5cGUo
KSwgT3JpZ2luKCksIGNvZGVQb2ludGVyVmFsdWUsIHNpemVvZihpbnRwdHJfdCkpKSwKKyAgICAg
ICAgICAgICAgICBwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgY29kZVBvaW50
ZXJWYWx1ZSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludHB0cl90KSkpKSwKICAgICAg
ICAgZGF0YVBvaW50ZXJWYWx1ZSk7CiAgICAgYWRkVG9EYXRhLT5hcHBlbmROZXc8VmFyaWFibGVW
YWx1ZT4oCiAgICAgICAgIHByb2MsIFNldCwgT3JpZ2luKCksIGNvZGVQb2ludGVyLApAQCAtMTM4
NzUsNyArMTM4NzUsNyBAQCB2b2lkIHRlc3RUcmFwcGluZ1N0b3JlKCkKICAgICBNZW1vcnlWYWx1
ZSogdmFsdWUgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAogICAgICAgICBwcm9jLCB0
cmFwcGluZyhTdG9yZSksIE9yaWdpbigpLAogICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMTExKSwKLSAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmeCkpOworICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ4KSwgMCk7CiAgICAgRWZmZWN0cyBl
eHBlY3RlZEVmZmVjdHM7CiAgICAgZXhwZWN0ZWRFZmZlY3RzLmV4aXRzU2lkZXdheXMgPSB0cnVl
OwogICAgIGV4cGVjdGVkRWZmZWN0cy5jb250cm9sRGVwZW5kZW50PSB0cnVlOwpAQCAtMTM5MTIs
NyArMTM5MTIsNyBAQCB2b2lkIHRlc3RUcmFwcGluZ0xvYWRBZGRTdG9yZSgpCiAgICAgICAgICAg
ICBwcm9jLCBBZGQsIE9yaWdpbigpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihwcm9jLCB0cmFwcGluZyhMb2FkKSwgSW50MzIsIE9yaWdpbigpLCBwdHIpLAogICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDMp
KSwKLSAgICAgICAgcHRyKTsKKyAgICAgICAgcHRyLCAwKTsKICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCkpOwogICAgIGNvbXBpbGVBbmRSdW48aW50Pihw
cm9jKTsKICAgICBDSEVDS19FUSh4LCA0NSk7CkBAIC0xNTIyOCw3ICsxNTIyOCw3IEBAIHZvaWQg
dGVzdFdhc21BZGRyZXNzKCkKICAgICAgICAgYm9keS0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIHNpemVvZih1bnNpZ25lZCkpKTsKICAgICBwb2ludGVyID0gYm9keS0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBaRXh0MzIsIE9yaWdpbigpLCBwb2ludGVyKTsKICAgICBi
b2R5LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgdmFsdWVU
b1N0b3JlLAotICAgICAgICBib2R5LT5hcHBlbmROZXc8V2FzbUFkZHJlc3NWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIHBvaW50ZXIsIHBpbm5lZEdQUikpOworICAgICAgICBib2R5LT5hcHBlbmROZXc8
V2FzbUFkZHJlc3NWYWx1ZT4ocHJvYywgT3JpZ2luKCksIHBvaW50ZXIsIHBpbm5lZEdQUiksIDAp
OwogICAgIFVwc2lsb25WYWx1ZSogaW5jVXBzaWxvbiA9IGJvZHktPmFwcGVuZE5ldzxVcHNpbG9u
VmFsdWU+KHByb2MsIE9yaWdpbigpLAogICAgICAgICBib2R5LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEFkZCwgT3JpZ2luKCksIGluZGV4UGhpLAogICAgICAgICAgICAgYm9keS0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDEpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggYzgzZDM2ZS4uNjAwMzUz
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIldhc21PcGNvZGVPcmlnaW4uaCIKICNp
bmNsdWRlICJXYXNtVGh1bmtzLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB2b2lkIGR1bXBQcm9jZWR1cmUodm9pZCogcHRyKQog
ewpAQCAtMjM2LDcgKzIzNyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGVtaXRDaGVja3NGb3JN
b2RPckRpdihCMzo6T3Bjb2RlLCBFeHByZXNzaW9uVHlwZSBsZWZ0LCBFeHByZXNzaW9uVHlwZSBy
aWdodCk7CiAKLSAgICB2b2lkIGZpeHVwUG9pbnRlclBsdXNPZmZzZXQoRXhwcmVzc2lvblR5cGUm
LCB1aW50MzJfdCYpOworICAgIGludDMyX3QgV0FSTl9VTlVTRURfUkVUVVJOIGZpeHVwUG9pbnRl
clBsdXNPZmZzZXQoRXhwcmVzc2lvblR5cGUmLCB1aW50MzJfdCk7CiAKICAgICBWYWx1ZSogbWF0
ZXJpYWxpemVXYXNtQ29udGV4dChQcm9jZWR1cmUmLCBCYXNpY0Jsb2NrKik7CiAgICAgdm9pZCBy
ZXN0b3JlV2FzbUNvbnRleHQoUHJvY2VkdXJlJiwgQmFzaWNCbG9jayosIFZhbHVlKik7CkBAIC0y
NjAsMTIgKzI2MSwxMyBAQCBwcml2YXRlOgogfTsKIAogLy8gTWVtb3J5IGFjY2Vzc2VzIGluIFdl
YkFzc2VtYmx5IGhhdmUgdW5zaWduZWQgMzItYml0IG9mZnNldHMsIHdoZXJlYXMgdGhleSBoYXZl
IHNpZ25lZCAzMi1iaXQgb2Zmc2V0cyBpbiBCMy4KLXZvaWQgQjNJUkdlbmVyYXRvcjo6Zml4dXBQ
b2ludGVyUGx1c09mZnNldChFeHByZXNzaW9uVHlwZSYgcHRyLCB1aW50MzJfdCYgb2Zmc2V0KQor
aW50MzJfdCBCM0lSR2VuZXJhdG9yOjpmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0KEV4cHJlc3Npb25U
eXBlJiBwdHIsIHVpbnQzMl90IG9mZnNldCkKIHsKICAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG9mZnNldCkgPiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWF4KCkpKSB7CiAgICAgICAgIHB0ciA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8VmFsdWU+KG1fcHJvYywgQWRkLCBvcmlnaW4oKSwgcHRyLCBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgb2Zmc2V0KSk7Ci0gICAgICAg
IG9mZnNldCA9IDA7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICByZXR1cm4gb2Zmc2V0
OwogfQogCiBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6bWF0ZXJpYWxpemVXYXNtQ29udGV4dChQcm9j
ZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrKQpAQCAtNTA2LDEwICs1MDgsMTAgQEAgYXV0
byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KQogCiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEN1cnJlbnRNZW1v
cnkoRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIFZhbHVl
KiBtZW1vcnlPYmplY3QgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPiht
X3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBtX2luc3RhbmNlVmFsdWUsIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSk7CisgICAgVmFsdWUqIG1lbW9y
eU9iamVjdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywg
TG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIG1faW5zdGFuY2VWYWx1ZSwgc2FmZUNhc3Q8
aW50MzJfdD4oSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSk7CiAKICAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5
SW5zdGFuY2UqPihudWxscHRyKS0+bWVtb3J5KCktPm1lbW9yeSgpLnNpemUoKSkpID09IHNpemVv
Zih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKLSAgICBWYWx1ZSog
c2l6ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9h
ZCwgSW50NjQsIG9yaWdpbigpLCBtZW1vcnlPYmplY3QsIEpTV2ViQXNzZW1ibHlNZW1vcnk6Om9m
ZnNldE9mU2l6ZSgpKTsKKyAgICBWYWx1ZSogc2l6ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgSW50NjQsIG9yaWdpbigpLCBtZW1vcnlPYmpl
Y3QsIHNhZmVDYXN0PGludDMyX3Q+KEpTV2ViQXNzZW1ibHlNZW1vcnk6Om9mZnNldE9mU2l6ZSgp
KSk7CiAgICAgCiAgICAgY29uc3RleHByIHVpbnQzMl90IHNoaWZ0VmFsdWUgPSAxNjsKICAgICBz
dGF0aWNfYXNzZXJ0KFBhZ2VDb3VudDo6cGFnZVNpemUgPT0gMSA8PCBzaGlmdFZhbHVlLCAiVGhp
cyBtdXN0IGhvbGQgZm9yIHRoZSBjb2RlIGJlbG93IHRvIGJlIGNvcnJlY3QuIik7CkBAIC01MzAs
MTYgKzUzMiwxNiBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OnNldExvY2FsKHVpbnQzMl90IGluZGV4
LCBFeHByZXNzaW9uVHlwZSB2YWx1ZSkgLT4gUGFydGlhbFJlcwogCiBhdXRvIEIzSVJHZW5lcmF0
b3I6OmdldEdsb2JhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4g
UGFydGlhbFJlc3VsdAogewotICAgIFZhbHVlKiBnbG9iYWxzQXJyYXkgPSBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9y
aWdpbigpLCBtX2luc3RhbmNlVmFsdWUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZH
bG9iYWxzKCkpOwotICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KG1fcHJvYywgTG9hZCwgdG9CM1R5cGUobV9pbmZvLmdsb2JhbHNbaW5kZXhdLnR5cGUp
LCBvcmlnaW4oKSwgZ2xvYmFsc0FycmF5LCBpbmRleCAqIHNpemVvZihSZWdpc3RlcikpOworICAg
IFZhbHVlKiBnbG9iYWxzQXJyYXkgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBtX2luc3RhbmNlVmFs
dWUsIHNhZmVDYXN0PGludDMyX3Q+KEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZHbG9i
YWxzKCkpKTsKKyAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihtX3Byb2MsIExvYWQsIHRvQjNUeXBlKG1faW5mby5nbG9iYWxzW2luZGV4XS50eXBlKSwg
b3JpZ2luKCksIGdsb2JhbHNBcnJheSwgc2FmZUNhc3Q8aW50MzJfdD4oaW5kZXggKiBzaXplb2Yo
UmVnaXN0ZXIpKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAogYXV0byBCM0lSR2VuZXJhdG9yOjpz
ZXRHbG9iYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKSAtPiBQYXJ0aWFs
UmVzdWx0CiB7CiAgICAgQVNTRVJUKHRvQjNUeXBlKG1faW5mby5nbG9iYWxzW2luZGV4XS50eXBl
KSA9PSB2YWx1ZS0+dHlwZSgpKTsKLSAgICBWYWx1ZSogZ2xvYmFsc0FycmF5ID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgp
LCBvcmlnaW4oKSwgbV9pbnN0YW5jZVZhbHVlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNl
dE9mR2xvYmFscygpKTsKLSAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
PihtX3Byb2MsIFN0b3JlLCBvcmlnaW4oKSwgdmFsdWUsIGdsb2JhbHNBcnJheSwgaW5kZXggKiBz
aXplb2YoUmVnaXN0ZXIpKTsKKyAgICBWYWx1ZSogZ2xvYmFsc0FycmF5ID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBv
cmlnaW4oKSwgbV9pbnN0YW5jZVZhbHVlLCBzYWZlQ2FzdDxpbnQzMl90PihKU1dlYkFzc2VtYmx5
SW5zdGFuY2U6Om9mZnNldE9mR2xvYmFscygpKSk7CisgICAgbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBTdG9yZSwgb3JpZ2luKCksIHZhbHVlLCBnbG9iYWxz
QXJyYXksIHNhZmVDYXN0PGludDMyX3Q+KGluZGV4ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwogICAg
IHJldHVybiB7IH07CiB9CiAKQEAgLTU1NCw3ICs1NTYsNyBAQCBpbmxpbmUgVmFsdWUqIEIzSVJH
ZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKEV4cHJlc3Npb25UeXBlIHBvaW50
ZXIsCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8V2FzbUJvdW5kc0NoZWNrVmFs
dWU+KG1fcHJvYywgb3JpZ2luKCksIHBvaW50ZXIsIG1fbWVtb3J5U2l6ZUdQUiwgc2l6ZU9mT3Bl
cmF0aW9uICsgb2Zmc2V0IC0gMSwgbV9pbmZvLm1lbW9yeS5tYXhpbXVtKCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIE1lbW9yeU1vZGU6OlNpZ25hbGluZzoKLSAgICAgICAgLy8gV2UndmUg
dmlydHVhbGx5IG1hcHBlZCA0R2lCK3JlZHpvbmUgZm8gdGhpcyBtZW1vcnkuIE9ubHkgdGhlIHVz
ZXItYWxsb2NhdGVkIHBhZ2VzIGFyZSBhZGRyZXNzYWJsZSwgY29udGlndW91c2x5IGluIHJhbmdl
IFswLCBjdXJyZW50XSwgYW5kIGV2ZXJ5dGhpbmcgYWJvdmUgaXMgbWFwcGVkIFBST1RfTk9ORS4g
V2UgZG9uJ3QgbmVlZCB0byBwZXJmb3JtIGFueSBleHBsaWNpdCBib3VuZHMgY2hlY2sgaW4gdGhl
IDRHaUIgcmFuZ2UgYmVjYXVzZSBXZWJBc3NlbWJseSByZWdpc3RlciBtZW1vcnkgYWNjZXNzZXMg
YXJlIDMyLWJpdC4gSG93ZXZlciBXZWJBc3NlbWJseSByZWdpc3RlcitpbW1lZGlhdGUgYWNjZXNz
ZXMgcGVyZm9ybSB0aGUgYWRkaXRpb24gaW4gNjQtYml0IHdoaWNoIGNhbiBwdXNoIGFuIGFjY2Vz
cyBhYm92ZSB0aGUgMzItYml0IGxpbWl0LiBUaGUgcmVkem9uZSB3aWxsIGNhdGNoIG1vc3Qgc21h
bGwgaW1tZWRpYXRlcywgYW5kIHdlJ2xsIGV4cGxpY2l0bHkgYm91bmRzIGNoZWNrIGFueSByZWdp
c3RlciArIGxhcmdlIGltbWVkaWF0ZSBhY2Nlc3MuCisgICAgICAgIC8vIFdlJ3ZlIHZpcnR1YWxs
eSBtYXBwZWQgNEdpQityZWR6b25lIGZvciB0aGlzIG1lbW9yeS4gT25seSB0aGUgdXNlci1hbGxv
Y2F0ZWQgcGFnZXMgYXJlIGFkZHJlc3NhYmxlLCBjb250aWd1b3VzbHkgaW4gcmFuZ2UgWzAsIGN1
cnJlbnRdLCBhbmQgZXZlcnl0aGluZyBhYm92ZSBpcyBtYXBwZWQgUFJPVF9OT05FLiBXZSBkb24n
dCBuZWVkIHRvIHBlcmZvcm0gYW55IGV4cGxpY2l0IGJvdW5kcyBjaGVjayBpbiB0aGUgNEdpQiBy
YW5nZSBiZWNhdXNlIFdlYkFzc2VtYmx5IHJlZ2lzdGVyIG1lbW9yeSBhY2Nlc3NlcyBhcmUgMzIt
Yml0LiBIb3dldmVyIFdlYkFzc2VtYmx5IHJlZ2lzdGVyK2ltbWVkaWF0ZSBhY2Nlc3NlcyBwZXJm
b3JtIHRoZSBhZGRpdGlvbiBpbiA2NC1iaXQgd2hpY2ggY2FuIHB1c2ggYW4gYWNjZXNzIGFib3Zl
IHRoZSAzMi1iaXQgbGltaXQuIFRoZSByZWR6b25lIHdpbGwgY2F0Y2ggbW9zdCBzbWFsbCBpbW1l
ZGlhdGVzLCBhbmQgd2UnbGwgZXhwbGljaXRseSBib3VuZHMgY2hlY2sgYW55IHJlZ2lzdGVyICsg
bGFyZ2UgaW1tZWRpYXRlIGFjY2Vzcy4KICAgICAgICAgaWYgKG9mZnNldCA+PSBNZW1vcnk6OmZh
c3RNYXBwZWRSZWR6b25lQnl0ZXMoKSkKICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHBvaW50ZXIsIElu
dmFsaWRHUFJSZWcsIHNpemVPZk9wZXJhdGlvbiArIG9mZnNldCAtIDEsIG1faW5mby5tZW1vcnku
bWF4aW11bSgpKTsKICAgICAgICAgYnJlYWs7CkBAIC01OTcsOSArNTk5LDkgQEAgaW5saW5lIEIz
OjpLaW5kIEIzSVJHZW5lcmF0b3I6Om1lbW9yeUtpbmQoQjM6Ok9wY29kZSBtZW1vcnlPcCkKICAg
ICByZXR1cm4gbWVtb3J5T3A7CiB9CiAKLWlubGluZSBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6ZW1p
dExvYWRPcChMb2FkT3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBwb2ludGVyLCB1aW50MzJfdCBv
ZmZzZXQpCitpbmxpbmUgVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmVtaXRMb2FkT3AoTG9hZE9wVHlw
ZSBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgdWludDMyX3QgdW9mZnNldCkKIHsKLSAgICBm
aXh1cFBvaW50ZXJQbHVzT2Zmc2V0KHBvaW50ZXIsIG9mZnNldCk7CisgICAgaW50MzJfdCBvZmZz
ZXQgPSBmaXh1cFBvaW50ZXJQbHVzT2Zmc2V0KHBvaW50ZXIsIHVvZmZzZXQpOwogCiAgICAgc3dp
dGNoIChvcCkgewogICAgIGNhc2UgTG9hZE9wVHlwZTo6STMyTG9hZDhTOiB7CkBAIC03MzYsOSAr
NzM4LDkgQEAgaW5saW5lIHVpbnQzMl90IHNpemVPZlN0b3JlT3AoU3RvcmVPcFR5cGUgb3ApCiB9
CiAKIAotaW5saW5lIHZvaWQgQjNJUkdlbmVyYXRvcjo6ZW1pdFN0b3JlT3AoU3RvcmVPcFR5cGUg
b3AsIEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCB1aW50MzJf
dCBvZmZzZXQpCitpbmxpbmUgdm9pZCBCM0lSR2VuZXJhdG9yOjplbWl0U3RvcmVPcChTdG9yZU9w
VHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUgdmFsdWUsIHVp
bnQzMl90IHVvZmZzZXQpCiB7Ci0gICAgZml4dXBQb2ludGVyUGx1c09mZnNldChwb2ludGVyLCBv
ZmZzZXQpOworICAgIGludDMyX3Qgb2Zmc2V0ID0gZml4dXBQb2ludGVyUGx1c09mZnNldChwb2lu
dGVyLCB1b2Zmc2V0KTsKIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIFN0b3JlT3BUeXBl
OjpJNjRTdG9yZTg6CkBAIC05MzcsOCArOTM5LDggQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRD
YWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLAog
CiAgICAgaWYgKG1faW5mby5pc0ltcG9ydGVkRnVuY3Rpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNl
KGZ1bmN0aW9uSW5kZXgpKSB7CiAgICAgICAgIC8vIEZJWE1FIGltcG9ydHMgY2FuIGJlIGxpbmtl
ZCBoZXJlLCBpbnN0ZWFkIG9mIGdlbmVyYXRpbmcgYSBwYXRjaHBvaW50LCBiZWNhdXNlIGFsbCBp
bXBvcnQgc3R1YnMgYXJlIGdlbmVyYXRlZCBiZWZvcmUgQjMgY29tcGlsYXRpb24gc3RhcnRzLiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDYyCi0gICAgICAgIFZh
bHVlKiBmdW5jdGlvbkltcG9ydCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIG1faW5zdGFuY2VWYWx1
ZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkltcG9ydEZ1bmN0aW9uKGZ1bmN0aW9u
SW5kZXgpKTsKLSAgICAgICAgVmFsdWUqIGpzVHlwZU9mSW1wb3J0ID0gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkOFosIG9yaWdpbigpLCBmdW5jdGlv
bkltcG9ydCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSk7CisgICAgICAgIFZhbHVlKiBm
dW5jdGlvbkltcG9ydCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1f
cHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIG1faW5zdGFuY2VWYWx1ZSwgc2Fm
ZUNhc3Q8aW50MzJfdD4oSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkltcG9ydEZ1bmN0
aW9uKGZ1bmN0aW9uSW5kZXgpKSk7CisgICAgICAgIFZhbHVlKiBqc1R5cGVPZkltcG9ydCA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZDhaLCBvcmln
aW4oKSwgZnVuY3Rpb25JbXBvcnQsIHNhZmVDYXN0PGludDMyX3Q+KEpTQ2VsbDo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpKTsKICAgICAgICAgVmFsdWUqIGlzV2FzbUNhbGwgPSBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwganNUeXBlT2ZJbXBv
cnQsIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdp
bigpLCBXZWJBc3NlbWJseUZ1bmN0aW9uVHlwZSkpOwogCiAgICAgICAgIEJhc2ljQmxvY2sqIGlz
V2FzbUJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CkBAIC05NjgsOSArOTcwLDkgQEAgYXV0byBC
M0lSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25h
dHVyZSYgc2lnbmF0dXJlLAogICAgICAgICAvLyBpbXBsZW1lbnQgdGhlIElDIHRvIGJlIG92ZXIg
V2FzbTo6Q29udGV4dCouCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzAzNzUKICAgICAgICAgVmFsdWUqIGNvZGVCbG9jayA9IGlzSlNCbG9jay0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsCi0gICAgICAgICAgICBMb2FkLCBwb2ludGVy
VHlwZSgpLCBvcmlnaW4oKSwgbV9pbnN0YW5jZVZhbHVlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
Om9mZnNldE9mQ29kZUJsb2NrKCkpOworICAgICAgICAgICAgTG9hZCwgcG9pbnRlclR5cGUoKSwg
b3JpZ2luKCksIG1faW5zdGFuY2VWYWx1ZSwgc2FmZUNhc3Q8aW50MzJfdD4oSlNXZWJBc3NlbWJs
eUluc3RhbmNlOjpvZmZzZXRPZkNvZGVCbG9jaygpKSk7CiAgICAgICAgIFZhbHVlKiBqdW1wRGVz
dGluYXRpb24gPSBpc0pTQmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLAotICAg
ICAgICAgICAgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIGNvZGVCbG9jaywgSlNXZWJB
c3NlbWJseUNvZGVCbG9jazo6b2Zmc2V0T2ZJbXBvcnRXYXNtVG9KU1N0dWIoZnVuY3Rpb25JbmRl
eCkpOworICAgICAgICAgICAgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIGNvZGVCbG9j
aywgc2FmZUNhc3Q8aW50MzJfdD4oSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6b2Zmc2V0T2ZJbXBv
cnRXYXNtVG9KU1N0dWIoZnVuY3Rpb25JbmRleCkpKTsKICAgICAgICAgVmFsdWUqIGpzQ2FsbFJl
c3VsdCA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnNldHVwQ2FsbChtX3Byb2MsIGlzSlNCbG9j
aywgb3JpZ2luKCksIGFyZ3MsIHRvQjNUeXBlKHJldHVyblR5cGUpLAogICAgICAgICAgICAgWyZd
IChQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQpIHsKICAgICAgICAgICAgICAgICBwYXRjaHBv
aW50LT5lZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CkBAIC0xMDI2LDExICsxMDI4LDExIEBA
IGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvCiAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGFibGVGdW5j
dGlvbkJ1ZmZlclNpemU7CiAgICAgewogICAgICAgICBFeHByZXNzaW9uVHlwZSB0YWJsZSA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRl
clR5cGUoKSwgb3JpZ2luKCksCi0gICAgICAgICAgICBtX2luc3RhbmNlVmFsdWUsIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZUYWJsZSgpKTsKKyAgICAgICAgICAgIG1faW5zdGFuY2VW
YWx1ZSwgc2FmZUNhc3Q8aW50MzJfdD4oSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZlRh
YmxlKCkpKTsKICAgICAgICAgY2FsbGFibGVGdW5jdGlvbkJ1ZmZlciA9IG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3Jp
Z2luKCksCi0gICAgICAgICAgICB0YWJsZSwgSlNXZWJBc3NlbWJseVRhYmxlOjpvZmZzZXRPZkZ1
bmN0aW9ucygpKTsKKyAgICAgICAgICAgIHRhYmxlLCBzYWZlQ2FzdDxpbnQzMl90PihKU1dlYkFz
c2VtYmx5VGFibGU6Om9mZnNldE9mRnVuY3Rpb25zKCkpKTsKICAgICAgICAgY2FsbGFibGVGdW5j
dGlvbkJ1ZmZlclNpemUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPiht
X3Byb2MsIExvYWQsIEludDMyLCBvcmlnaW4oKSwKLSAgICAgICAgICAgIHRhYmxlLCBKU1dlYkFz
c2VtYmx5VGFibGU6Om9mZnNldE9mU2l6ZSgpKTsKKyAgICAgICAgICAgIHRhYmxlLCBzYWZlQ2Fz
dDxpbnQzMl90PihKU1dlYkFzc2VtYmx5VGFibGU6Om9mZnNldE9mU2l6ZSgpKSk7CiAgICAgfQog
CiAgICAgLy8gQ2hlY2sgdGhlIGluZGV4IHdlIGFyZSBsb29raW5nIGZvciBpcyB2YWxpZC4KQEAg
LTEwNTEsNyArMTA1Myw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNv
bnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvCiAKICAgICAvLyBDaGVj
ayB0aGF0IHRoZSBDYWxsYWJsZUZ1bmN0aW9uIGlzIGluaXRpYWxpemVkLiBXZSB0cmFwIGlmIGl0
IGlzbid0LiBBbiAiaW52YWxpZCIgU2lnbmF0dXJlSW5kZXggaW5kaWNhdGVzIGl0J3Mgbm90IGlu
aXRpYWxpemVkLgogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENhbGxhYmxlRnVuY3Rpb246OnNp
Z25hdHVyZUluZGV4KSA9PSBzaXplb2YodWludDMyX3QpLCAiTG9hZCBjb2RlZ2VuIGFzc3VtZXMg
aTMyIik7Ci0gICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlU2lnbmF0dXJlSW5kZXggPSBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIEludDMyLCBvcmln
aW4oKSwgY2FsbGFibGVGdW5jdGlvbiwgT0JKRUNUX09GRlNFVE9GKENhbGxhYmxlRnVuY3Rpb24s
IHNpZ25hdHVyZUluZGV4KSk7CisgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlU2lnbmF0dXJlSW5k
ZXggPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQs
IEludDMyLCBvcmlnaW4oKSwgY2FsbGFibGVGdW5jdGlvbiwgc2FmZUNhc3Q8aW50MzJfdD4oT0JK
RUNUX09GRlNFVE9GKENhbGxhYmxlRnVuY3Rpb24sIHNpZ25hdHVyZUluZGV4KSkpOwogICAgIHsK
ICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENo
ZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLAogICAgICAgICAgICAgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksCkBAIC0xMDc0
LDcgKzEwNzYsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChjb25zdCBT
aWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpbwogICAgICAgICB9KTsKICAgICB9
CiAKLSAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2RlID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwg
Y2FsbGFibGVGdW5jdGlvbiwgT0JKRUNUX09GRlNFVE9GKENhbGxhYmxlRnVuY3Rpb24sIGNvZGUp
KTsKKyAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2RlID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwg
Y2FsbGFibGVGdW5jdGlvbiwgc2FmZUNhc3Q8aW50MzJfdD4oT0JKRUNUX09GRlNFVE9GKENhbGxh
YmxlRnVuY3Rpb24sIGNvZGUpKSk7CiAKICAgICBUeXBlIHJldHVyblR5cGUgPSBzaWduYXR1cmUu
cmV0dXJuVHlwZSgpOwogICAgIHJlc3VsdCA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnNldHVw
Q2FsbChtX3Byb2MsIG1fY3VycmVudEJsb2NrLCBvcmlnaW4oKSwgYXJncywgdG9CM1R5cGUocmV0
dXJuVHlwZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCmluZGV4IGMzNTNiYzguLmQ5ZGFkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTctMDQtMTQgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIEIz
OiBkb24ndCBhbGxvdyB1bnNpZ25lZCBvZmZzZXRzIGluIFZhbHVlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA2OTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICBBZGQgQysrMTcncyBzdGQ6OmNvbmp1bmN0aW9u
IHR5cGUgdHJhaXQsIGV4Y2VwdCBmb3IgTWljcm9zb2Z0IFZTCisgICAgICAgIDIwMTUgdXBkYXRl
IDIgYW5kIGxhdGVyIGJlY2F1c2UgaXQgYWRkcyB0aGUgbG9naWNhbCBvcGVyYXRvciB0eXBlCisg
ICAgICAgIHRyYWl0cywgZXZlbnQgd2hlbiBDKysgaXMgcHJlLTIwMTc6CisgICAgICAgIGh0dHBz
Oi8vYmxvZ3MubXNkbi5taWNyb3NvZnQuY29tL3ZjYmxvZy8yMDE2LzAxLzIyL3ZzLTIwMTUtdXBk
YXRlLTJzLXN0bC1pcy1jMTctc28tZmFyLWZlYXR1cmUtY29tcGxldGUvCisKKyAgICAgICAgKiB3
dGYvU3RkTGliRXh0cmFzLmg6CisKIDIwMTctMDQtMTMgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5OiBtYW5hZ2UgbWVtb3J5IGJldHRlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0
Zi9TdGRMaWJFeHRyYXMuaAppbmRleCA4MmY1NDdmLi45OTdjZDM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRy
YXMuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPGNocm9ubz4KICNpbmNsdWRlIDxjc3Ry
aW5nPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgog
I2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgpAQCAtNTEwLDYgKzUxMSwxNSBAQCBBTFdBWVNfSU5M
SU5FIGNvbnN0ZXhwciB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlJiYgbW92ZShU
JiYgdmFsdWUpCiAgICAgcmV0dXJuIG1vdmUoZm9yd2FyZDxUPih2YWx1ZSkpOwogfQogCisjaWYg
X19jcGx1c3BsdXMgPCAyMDE3MDNMICYmICghZGVmaW5lZChfTVNDX0ZVTExfVkVSKSB8fCBfTVND
X0ZVTExfVkVSIDwgMTkwMDIzOTE4KQordGVtcGxhdGU8Y2xhc3MuLi4+IHN0cnVjdCB3dGZfY29u
anVuY3Rpb25faW1wbDsKK3RlbXBsYXRlPD4gc3RydWN0IHd0Zl9jb25qdW5jdGlvbl9pbXBsPD4g
OiB0cnVlX3R5cGUgeyB9OwordGVtcGxhdGU8Y2xhc3MgQjA+IHN0cnVjdCB3dGZfY29uanVuY3Rp
b25faW1wbDxCMD4gOiBCMCB7IH07Cit0ZW1wbGF0ZTxjbGFzcyBCMCwgY2xhc3MgQjE+IHN0cnVj
dCB3dGZfY29uanVuY3Rpb25faW1wbDxCMCwgQjE+IDogY29uZGl0aW9uYWw8QjA6OnZhbHVlLCBC
MSwgQjA+Ojp0eXBlIHsgfTsKK3RlbXBsYXRlPGNsYXNzIEIwLCBjbGFzcyBCMSwgY2xhc3MgQjIs
IGNsYXNzLi4uIEJuPiBzdHJ1Y3Qgd3RmX2Nvbmp1bmN0aW9uX2ltcGw8QjAsIEIxLCBCMiwgQm4u
Li4+IDogY29uZGl0aW9uYWw8QjA6OnZhbHVlLCB3dGZfY29uanVuY3Rpb25faW1wbDxCMSwgQjIs
IEJuLi4uPiwgQjA+Ojp0eXBlIHsgfTsKK3RlbXBsYXRlPGNsYXNzLi4uIF9BcmdzPiBzdHJ1Y3Qg
Y29uanVuY3Rpb24gOiB3dGZfY29uanVuY3Rpb25faW1wbDxfQXJncy4uLj4geyB9OworI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIHN0ZAogCiAjZGVmaW5lIFdURk1vdmUodmFsdWUpIHN0ZDo6bW92
ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFsdWUpCi0tIAoyLjEwLjEKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>