<?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>227606</bug_id>
          
          <creation_ts>2021-07-01 18:21:55 -0700</creation_ts>
          <short_desc>Use more Span</short_desc>
          <delta_ts>2021-07-07 10:08:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1774329</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-07-01 18:21:55 -0700</bug_when>
    <thetext>Use more Span</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774330</commentid>
    <comment_count>1</comment_count>
      <attachid>432762</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-07-01 18:22:54 -0700</bug_when>
    <thetext>Created attachment 432762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774342</commentid>
    <comment_count>2</comment_count>
      <attachid>432763</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-07-01 19:33:35 -0700</bug_when>
    <thetext>Created attachment 432763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774627</commentid>
    <comment_count>3</comment_count>
      <attachid>432835</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-07-02 17:37:59 -0700</bug_when>
    <thetext>Created attachment 432835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774646</commentid>
    <comment_count>4</comment_count>
      <attachid>432842</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-07-02 22:31:35 -0700</bug_when>
    <thetext>Created attachment 432842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774965</commentid>
    <comment_count>5</comment_count>
      <attachid>432940</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-07-06 09:19:50 -0700</bug_when>
    <thetext>Created attachment 432940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775147</commentid>
    <comment_count>6</comment_count>
      <attachid>432940</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-06 17:12:52 -0700</bug_when>
    <thetext>Comment on attachment 432940
Patch

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

&gt; Source/WTF/wtf/persistence/PersistentDecoder.h:99
&gt; +    Span&lt;const uint8_t&gt;::iterator m_iterator;

We should just write const uint8_t* for this type.

I don’t think this is an &quot;iterator&quot;, it’s just a pointer. If you asked &quot;what’s the iterator type&quot; then, yes, you get the pointer type, but we should not try to be abstract.

I think we should keep the names m_buffer and m_bufferPosition, rather than renaming to m_span and m_iterator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775210</commentid>
    <comment_count>7</comment_count>
      <attachid>433010</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-07-06 22:05:16 -0700</bug_when>
    <thetext>Created attachment 433010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775304</commentid>
    <comment_count>8</comment_count>
      <attachid>433010</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-07 10:02:55 -0700</bug_when>
    <thetext>Comment on attachment 433010
Patch

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

&gt; Source/WTF/wtf/persistence/PersistentDecoder.cpp:73
&gt; +    // FIXME: check for underflow.
&gt; +    if (m_bufferPosition - size &gt;= m_buffer.begin()) {

Since we know that m_bufferPosition is &gt;= m_buffer.begin(), we can sidestep the possibility of overflow without adding an additional check by writing this:

    if (size &lt;= m_bufferPosition - m_buffer.begin()) {

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheData.h:77
&gt;      const uint8_t* data() const;
&gt;      size_t size() const { return m_size; }

Maybe drop these eventually?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775307</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-07-07 10:08:44 -0700</bug_when>
    <thetext>Committed to r279645

(In reply to Darin Adler from comment #8)
&gt; Comment on attachment 433010 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=433010&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/persistence/PersistentDecoder.cpp:73
&gt; &gt; +    // FIXME: check for underflow.
&gt; &gt; +    if (m_bufferPosition - size &gt;= m_buffer.begin()) {
&gt; 
&gt; Since we know that m_bufferPosition is &gt;= m_buffer.begin(), we can sidestep
&gt; the possibility of overflow without adding an additional check by writing
&gt; this:
&gt; 
&gt;     if (size &lt;= m_bufferPosition - m_buffer.begin()) {
Great!  It also needs a static_cast&lt;size_t&gt; because the right side is now signed.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cache/NetworkCacheData.h:77
&gt; &gt;      const uint8_t* data() const;
&gt; &gt;      size_t size() const { return m_size; }
&gt; 
&gt; Maybe drop these eventually?
Hopefully!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432762</attachid>
            <date>2021-07-01 18:22:54 -0700</date>
            <delta_ts>2021-07-01 19:33:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227606-20210701182253.patch</filename>
            <type>text/plain</type>
            <size>36348</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4OTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVkNGM4MjI5M2ViOTMxY2Y0YWExMmU0
Y2YzZWM3ZjllOTU2NTk1ZDUuLmI1ZjNiOThlOTUzYjE3OWZmYzM2ZGJjMjRiZTU5NDdmYzgzMmQz
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDctMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgbW9yZSBTcGFuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc2MDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgaXMgYWx3YXlzIGJl
dHRlciwgcmlnaHQ/CisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChX
VEY6OkZpbGVTeXN0ZW1JbXBsOjptYXBUb0ZpbGUpOgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVt
Lmg6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwOgorICAg
ICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8Q1N0cmluZz46OmVuY29kZSk6CisgICAgICAg
IChXVEY6OlBlcnNpc3RlbmNlOjpDb2RlcjxDU3RyaW5nPjo6ZGVjb2RlKToKKyAgICAgICAgKFdU
Rjo6UGVyc2lzdGVuY2U6OkNvZGVyPFN0cmluZz46OmVuY29kZSk6CisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpkZWNvZGVTdHJpbmdUZXh0KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6
OkNvZGVyPFNIQTE6OkRpZ2VzdD46OmVuY29kZSk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNl
OjpDb2RlcjxTSEExOjpEaWdlc3Q+OjpkZWNvZGUpOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50Q29kZXJzLmg6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnREZWNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OkRlY29k
ZXIpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVu
b3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
OjpidWZmZXJQb2ludGVyRm9yRGlyZWN0UmVhZCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXI6OnZlcmlmeUNoZWNrc3VtKToKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6Omxl
bmd0aCBjb25zdCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpjdXJyZW50
T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29k
ZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6dXBkYXRlQ2hlY2tz
dW1Gb3JEYXRhKToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OmVuY29kZUZp
eGVkTGVuZ3RoRGF0YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNv
ZGVDaGVja3N1bSk6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVy
Lmg6CisKIDIwMjEtMDYtMTYgIEFsaWNpYSBCb3lhIEdhcmPDrWEgIDxhYm95YUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtXVEZdIERhdGFNdXRleDogQXNzZXJ0IG9uIGRvdWJsZSBsb2NraW5nIG9u
IHRoZSBzYW1lIHRocmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA4ODkzZGFkYmE0NmZhOTJhYjc1M2JjYjNj
MWRkNjdjZjgyMjMxMDIuLjA5MjFjOTUxY2UzNWZhYjdlMjFhZjQ5YWY3MTc0MWM0N2QxNTE4YzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMS0wNy0wMSAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBtb3JlIFNwYW4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzYwNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZEhvc3Q6OnNob3dDZXJ0aWZpY2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5j
cHA6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjplbmNvZGVDRkRhdGEpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c3RvcmUpOgorCiAyMDIxLTA2LTE2ICBUaW1vdGh5
IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjcz
MzI5KTogTG9nZ2luZyBvZiBtb3N0IGVycm9ycyBsaWtlIENTUCBhbmQgcHJvbWlzZSByZWplY3Rp
b25zIGZhaWwgbG9nZ2luZyB0byB0aGUgc3lzdGVtIGNvbnNvbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjhjMzlm
OTY2NTQ3MjZmZjA5YmE3Mjk2ZTVmZGY0NWFmNjE5YjQ2NS4uZjg1Mjg5NzhlMGM3OWVhY2IzYzNm
YzA0N2FmMGJmZWFhOWYxOTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0wNy0w
MSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFVzZSBtb3JlIFNwYW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNzYwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGVSZWNvcmRIZWFk
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZWFkT3Jp
Z2luKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpkZWNvZGVDYWNoZXNOYW1lcyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YTo6bWFwVG9GaWxlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpjb21wdXRlU0hBMSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkRhdGE6OnNwYW4gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpEYXRhOjphcHBseSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OkRhdGE6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVEYXRhR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
RGF0YTo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6
ZGVjb2RlU3RvcmFnZVJlY29yZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6ZGVj
b2RlUmVjb3JkTWV0YURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6
OmdldERhdGEpOgorICAgICAgICAoQVBJOjpkZWNvZGVDb250ZW50UnVsZUxpc3RNZXRhRGF0YSk6
CisgICAgICAgIChBUEk6OndyaXRlRGF0YVRvRmlsZSk6CisKIDIwMjEtMDYtMTYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDbGVhbiB1cCBX
ZWJDb29raWVNYW5hZ2VyUHJveHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggODcxYTdhMWEwYWY2
Y2UyYTY5OWFjODdmMTM5NGM2Nzc5ZDZiZjQ2MC4uYzIwODg0YWVkNmViMGRkNTI2Y2UwOWY1Y2Nh
MTQ3Y2RjM2ZlMTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTQzOCw3ICs0MzgsNyBAQCBT
dHJpbmcgY3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShjb25zdCBTdHJpbmcmKQogfQogI2VuZGlm
CiAKLU1hcHBlZEZpbGVEYXRhIG1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIHNpemVfdCBi
eXRlc1NpemUsIEZ1bmN0aW9uPHZvaWQoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90
Kiwgc2l6ZV90KT4mKT4mJiBhcHBseSwgUGxhdGZvcm1GaWxlSGFuZGxlKiBvdXRwdXRIYW5kbGUp
CitNYXBwZWRGaWxlRGF0YSBtYXBUb0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBzaXplX3QgYnl0
ZXNTaXplLCBGdW5jdGlvbjx2b2lkKGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50
OF90Pik+Jik+JiYgYXBwbHksIFBsYXRmb3JtRmlsZUhhbmRsZSogb3V0cHV0SGFuZGxlKQogewog
ICAgIGNvbnN0ZXhwciBib29sIGZhaWxJZkZpbGVFeGlzdHMgPSB0cnVlOwogICAgIGF1dG8gaGFu
ZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2Rl
OjpSZWFkV3JpdGUsIEZpbGVTeXN0ZW06OkZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpVc2VyLCBmYWls
SWZGaWxlRXhpc3RzKTsKQEAgLTQ1OCw5ICs0NTgsOSBAQCBNYXBwZWRGaWxlRGF0YSBtYXBUb0Zp
bGUoY29uc3QgU3RyaW5nJiBwYXRoLCBzaXplX3QgYnl0ZXNTaXplLCBGdW5jdGlvbjx2b2lkKGNv
bgogICAgIHZvaWQqIG1hcCA9IGNvbnN0X2Nhc3Q8dm9pZCo+KG1hcHBlZEZpbGUuZGF0YSgpKTsK
ICAgICB1aW50OF90KiBtYXBEYXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1hcCk7CiAKLSAg
ICBhcHBseShbJm1hcERhdGFdKGNvbnN0IHVpbnQ4X3QqIGNodW5rLCBzaXplX3QgY2h1bmtTaXpl
KSB7Ci0gICAgICAgIG1lbWNweShtYXBEYXRhLCBjaHVuaywgY2h1bmtTaXplKTsKLSAgICAgICAg
bWFwRGF0YSArPSBjaHVua1NpemU7CisgICAgYXBwbHkoWyZtYXBEYXRhXShTcGFuPGNvbnN0IHVp
bnQ4X3Q+IGNodW5rKSB7CisgICAgICAgIG1lbWNweShtYXBEYXRhLCBjaHVuay5kYXRhKCksIGNo
dW5rLnNpemUoKSk7CisgICAgICAgIG1hcERhdGEgKz0gY2h1bmsuc2l6ZSgpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IGY3NTczYTg2NzNiNmIy
MTJlYTc2NzY0NjRlMGJiMzU3YTg4ZWUxOTkuLjA5NDIwYzI2NWU0NWJjMjJmNDBmZjY4ZTkwODBi
MDlhOTQ2MjliNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
IDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlv
blNldC5oPgorI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtMjYxLDcgKzI2Miw3IEBAIGlubGluZSBNYXBwZWRGaWxlRGF0YSYgTWFwcGVkRmlsZURh
dGE6Om9wZXJhdG9yPShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQogCiAvLyBUaGlzIGNyZWF0ZXMg
dGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1hcHMgaXQsIHdyaXRlIHRoZSBwcm92aWRlZCBkYXRhIHRv
IGl0IGFuZCByZXR1cm5zIHRoZSBtYXBwZWQgZmlsZS4KIC8vIFRoaXMgZnVuY3Rpb24gZmFpbHMg
aWYgdGhlcmUgaXMgYWxyZWFkeSBhIGZpbGUgYXQgdGhlIGRlc3RpbmF0aW9uIHBhdGguCi1XVEZf
RVhQT1JUX1BSSVZBVEUgTWFwcGVkRmlsZURhdGEgbWFwVG9GaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCwgc2l6ZV90IGJ5dGVzU2l6ZSwgRnVuY3Rpb248dm9pZChjb25zdCBGdW5jdGlvbjxib29sKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYpPiYmIGFwcGx5LCBQbGF0Zm9ybUZpbGVIYW5kbGUqID0g
bnVsbHB0cik7CitXVEZfRVhQT1JUX1BSSVZBVEUgTWFwcGVkRmlsZURhdGEgbWFwVG9GaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgc2l6ZV90IGJ5dGVzU2l6ZSwgRnVuY3Rpb248dm9pZChjb25zdCBG
dW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYpPiYmIGFwcGx5LCBQbGF0Zm9ybUZp
bGVIYW5kbGUqID0gbnVsbHB0cik7CiAKIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW1JbXBsCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnRDb2RlcnMuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudENvZGVycy5jcHAKaW5kZXggZjE2OGFlMjAxM2JjZWI5Nzg1OTU3ZTNhY2YwOGU5ODAwODM1
OTFlYy4uODI4ZTUxNzM0OTEyZDhmMmFhZmQ3ZmUyNjYwNDUwYWUzZWI5M2Y5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5jcHAKQEAgLTU3LDcg
KzU3LDcgQEAgdm9pZCBDb2RlcjxDU3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IENTdHJpbmcmIHN0cmluZykKIAogICAgIHVpbnQzMl90IGxlbmd0aCA9IHN0cmluZy5sZW5n
dGgoKTsKICAgICBlbmNvZGVyIDw8IGxlbmd0aDsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShzdHJpbmcuZGF0YUFzVUludDhQdHIoKSwgbGVuZ3RoKTsKKyAgICBlbmNvZGVyLmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YSh7IHN0cmluZy5kYXRhQXNVSW50OFB0cigpLCBsZW5ndGggfSk7
CiB9CiAKIHN0ZDo6b3B0aW9uYWw8Q1N0cmluZz4gQ29kZXI8Q1N0cmluZz46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQpAQCAtNzgsNyArNzgsNyBAQCBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IENv
ZGVyPENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIAogICAgIGNoYXIqIGJ1ZmZl
cjsKICAgICBDU3RyaW5nIHN0cmluZyA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQoKmxlbmd0
aCwgYnVmZmVyKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksICpsZW5ndGgpKQorICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVGaXhlZExlbmd0aERhdGEoeyByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihidWZm
ZXIpLCAqbGVuZ3RoIH0pKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIHN0cmluZzsKQEAgLTk4LDkgKzk4LDkgQEAgdm9pZCBDb2RlcjxTdHJpbmc+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgZW5jb2RlciA8PCBs
ZW5ndGggPDwgaXM4Qml0OwogCiAgICAgaWYgKGlzOEJpdCkKLSAgICAgICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CisgICAgICAg
IGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHsgc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxl
bmd0aCB9KTsKICAgICBlbHNlCi0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSks
IGxlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YSh7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0
ZXJzMTYoKSksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikgfSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgpAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBpbmxpbmUgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IGRlY29kZVN0cmluZ1RleHQoRGVjb2RlciYgZGVjb2RlciwgdWlu
dDMyX3QKIAogICAgIENoYXJhY3RlclR5cGUqIGJ1ZmZlcjsKICAgICBTdHJpbmcgc3RyaW5nID0g
U3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1
ZmZlciksIGxlbmd0aCAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSkpCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZl
ciksIGxlbmd0aCAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSB9KSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4gc3RyaW5nOwpAQCAtMTQyLDEzICsxNDIsMTMg
QEAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IENvZGVyPFN0cmluZz46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogCiB2b2lkIENvZGVyPFNIQTE6OkRpZ2VzdD46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBTSEExOjpEaWdlc3QmIGRpZ2VzdCkKIHsKLSAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShkaWdlc3QuZGF0YSgpLCBzaXplb2YoZGlnZXN0KSk7CisgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEoeyBkaWdlc3QuZGF0YSgpLCBzaXplb2YoZGlnZXN0KSB9
KTsKIH0KIAogc3RkOjpvcHRpb25hbDxTSEExOjpEaWdlc3Q+IENvZGVyPFNIQTE6OkRpZ2VzdD46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFNIQTE6OkRpZ2VzdCB0bXA7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh0bXAuZGF0YSgpLCBzaXplb2YodG1w
KSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHRtcC5kYXRhKCks
IHNpemVvZih0bXApIH0pKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biB0bXA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50Q29kZXJzLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJz
LmgKaW5kZXggYjc3MjE3NjdkNTg5NWZjMDVhNGE3NTk2MDcyZWMxYWZkMDg1NzM3ZC4uYmFmY2M4
OTQ5Mjg3ZjkyNjgzM2ZhM2Q3NjM2NTE3NTE5ZTJiNjBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaApAQCAtMTczLDcgKzE3Myw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gc3RydWN0IFZlY3RvckNvZGVy
PHRydWUsIFQsIGlubGluZUNhCiAgICAgICAgIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4gdGVt
cDsKICAgICAgICAgdGVtcC5ncm93KHNpemUpOwogCi0gICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odGVtcC5kYXRhKCkp
LCBzaXplICogc2l6ZW9mKFQpKSkKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVu
Z3RoRGF0YSh7IHRlbXAuZGF0YSgpLCBzaXplICogc2l6ZW9mKFQpIH0pKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gdGVtcDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAppbmRleCBjMDRiYTNm
MmFjMWNiMTYyMjVmYjg3ODRiOTlkNTBhNzUyNTkzMTE2Li5mYTIxYjM5OGU0NTFiOWU3OWQxMWFm
NmQ3Y2JlMjQzZWM1NTc0OWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudERlY29kZXIuY3BwCkBAIC0zMSwxMCArMzEsOSBAQAogbmFtZXNwYWNlIFdURiB7
CiBuYW1lc3BhY2UgUGVyc2lzdGVuY2UgewogCi1EZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4
X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpCi0gICAgOiBtX2J1ZmZlcihidWZmZXIpCi0g
ICAgLCBtX2J1ZmZlclBvc2l0aW9uKGJ1ZmZlcikKLSAgICAsIG1fYnVmZmVyRW5kKGJ1ZmZlciAr
IGJ1ZmZlclNpemUpCitEZWNvZGVyOjpEZWNvZGVyKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikK
KyAgICA6IG1fc3BhbihzcGFuKQorICAgICwgbV9pdGVyYXRvcihzcGFuLmJlZ2luKCkpCiB7CiB9
CiAKQEAgLTQ0LDcgKzQzLDcgQEAgRGVjb2Rlcjo6fkRlY29kZXIoKQogCiBib29sIERlY29kZXI6
OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IHNpemUpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHNpemUgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZlckVuZCAtIG1fYnVmZmVy
UG9zaXRpb24pOworICAgIHJldHVybiBzaXplIDw9IHN0YXRpY19jYXN0PHNpemVfdD4obV9zcGFu
LmVuZCgpIC0gbV9pdGVyYXRvcik7CiB9CiAKIGNvbnN0IHVpbnQ4X3QqIERlY29kZXI6OmJ1ZmZl
clBvaW50ZXJGb3JEaXJlY3RSZWFkKHNpemVfdCBzaXplKQpAQCAtNTIsMTkgKzUxLDE5IEBAIGNv
bnN0IHVpbnQ4X3QqIERlY29kZXI6OmJ1ZmZlclBvaW50ZXJGb3JEaXJlY3RSZWFkKHNpemVfdCBz
aXplKQogICAgIGlmICghYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGRhdGEgPSBtX2J1ZmZlclBvc2l0aW9uOwot
ICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9pdGVy
YXRvcjsKKyAgICBtX2l0ZXJhdG9yICs9IHNpemU7CiAKLSAgICBFbmNvZGVyOjp1cGRhdGVDaGVj
a3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICBF
bmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCB7IGl0ZXJhdG9yLCBzaXplIH0p
OworICAgIHJldHVybiBpdGVyYXRvcjsKIH0KIAotYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExl
bmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitib29sIERlY29kZXI6OmRlY29k
ZUZpeGVkTGVuZ3RoRGF0YShTcGFuPHVpbnQ4X3Q+IHNwYW4pCiB7Ci0gICAgYXV0byBidWZmZXIg
PSBidWZmZXJQb2ludGVyRm9yRGlyZWN0UmVhZChzaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1
ZmZlclBvaW50ZXJGb3JEaXJlY3RSZWFkKHNwYW4uc2l6ZSgpKTsKICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1lbWNweShkYXRhLCBidWZmZXIsIHNpemUpOwor
ICAgIG1lbWNweShzcGFuLmRhdGEoKSwgYnVmZmVyLCBzcGFuLnNpemUoKSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTc1LDggKzc0LDggQEAgRGVjb2RlciYgRGVjb2Rlcjo6ZGVjb2RlTnVt
YmVyKHN0ZDo6b3B0aW9uYWw8VD4mIG9wdGlvbmFsKQogICAgICAgICByZXR1cm4gKnRoaXM7CiAK
ICAgICBUIHZhbHVlOwotICAgIG1lbWNweSgmdmFsdWUsIG1fYnVmZmVyUG9zaXRpb24sIHNpemVv
ZihUKSk7Ci0gICAgbV9idWZmZXJQb3NpdGlvbiArPSBzaXplb2YoVCk7CisgICAgbWVtY3B5KCZ2
YWx1ZSwgbV9pdGVyYXRvciwgc2l6ZW9mKFQpKTsKKyAgICBtX2l0ZXJhdG9yICs9IHNpemVvZihU
KTsKIAogICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yTnVtYmVyKG1fc2hhMSwgdmFsdWUp
OwogICAgIG9wdGlvbmFsID0gdmFsdWU7CkBAIC0xMzksMTEgKzEzOCwxMSBAQCBib29sIERlY29k
ZXI6OnZlcmlmeUNoZWNrc3VtKCkKICAgICBtX3NoYTEuY29tcHV0ZUhhc2goY29tcHV0ZWRIYXNo
KTsKIAogICAgIFNIQTE6OkRpZ2VzdCBzYXZlZEhhc2g7Ci0gICAgaWYgKCFkZWNvZGVGaXhlZExl
bmd0aERhdGEoc2F2ZWRIYXNoLmRhdGEoKSwgc2l6ZW9mKHNhdmVkSGFzaCkpKQorICAgIGlmICgh
ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHsgc2F2ZWRIYXNoLmRhdGEoKSwgc2l6ZW9mKHNhdmVkSGFz
aCkgfSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBjb21wdXRlZEhhc2gg
PT0gc2F2ZWRIYXNoOwogfQogCi19Ci19Cit9IC8vIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZQorfSAv
LyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RGVjb2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dERlY29kZXIuaAppbmRleCA4NzYwNjJkMzQwMWI0YmQzMjk3NmVjMWMxMWNkMzI5YjkxZmIzN2Nm
Li44MmJkZjIzNjVlY2E3ZjI1OGRlZDdjNWZlNGM4YzcyYzE5ZjdhNzIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4K
KyNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50Q29kZXIuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0zNSwxNSArMzYsMTUgQEAgbmFtZXNw
YWNlIFBlcnNpc3RlbmNlIHsKIGNsYXNzIERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpOworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBEZWNvZGVyKFNwYW48Y29uc3QgdWludDhfdD4pOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+
RGVjb2RlcigpOwogCi0gICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
RW5kIC0gbV9idWZmZXI7IH0KLSAgICBzaXplX3QgY3VycmVudE9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyUG9zaXRpb24gLSBtX2J1ZmZlcjsgfQorICAgIHNpemVfdCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX3NwYW4uc2l6ZSgpOyB9CisgICAgc2l6ZV90IGN1cnJlbnRPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yIC0gbV9zcGFuLmJlZ2luKCk7IH0KIAogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCB2ZXJpZnlDaGVja3N1bSgp
OwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZUZpeGVkTGVuZ3RoRGF0YSh1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKFNwYW48dWlu
dDhfdD4pOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oc3Rk
OjpvcHRpb25hbDxib29sPiYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVy
YXRvcj4+KHN0ZDo6b3B0aW9uYWw8dWludDhfdD4mKTsKQEAgLTkyLDkgKzkzLDggQEAgcHJpdmF0
ZToKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgYnVmZmVy
SXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3QpIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFR5cGU+IERlY29kZXImIGRlY29kZU51bWJlcihzdGQ6Om9wdGlvbmFsPFR5cGU+Jik7CiAK
LSAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZlcjsKLSAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZl
clBvc2l0aW9uOwotICAgIGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVyRW5kOworICAgIGNvbnN0IFNw
YW48Y29uc3QgdWludDhfdD4gbV9zcGFuOworICAgIFNwYW48Y29uc3QgdWludDhfdD46Oml0ZXJh
dG9yIG1faXRlcmF0b3I7CiAKICAgICBTSEExIG1fc2hhMTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKaW5kZXggMTRkZDNmNjgzODdm
ZTNmODNjMDQ5ZjQxODI4MmM1NzkxYWYwZTJhYS4uZDI2MzdiMDFkNzUwNzJhMDhmNjQxOTg2YWM5
ZTgwY2FjOTUyZWU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnRFbmNvZGVyLmNwcApAQCAtNDYsMTkgKzQ2LDE5IEBAIHVpbnQ4X3QqIEVuY29kZXI6Omdy
b3coc2l6ZV90IHNpemUpCiAgICAgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKSArIG5ld1Bvc2l0aW9u
OwogfQogCi12b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiBzaGExLCBj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRW5jb2Rlcjo6dXBkYXRlQ2hl
Y2tzdW1Gb3JEYXRhKFNIQTEmIHNoYTEsIFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikKIHsKICAg
ICBhdXRvIHR5cGVTYWx0ID0gU2FsdDx1aW50OF90Kj46OnZhbHVlOwogICAgIHNoYTEuYWRkQnl0
ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnR5cGVTYWx0KSwgc2l6ZW9mKHR5cGVTYWx0
KSk7Ci0gICAgc2hhMS5hZGRCeXRlcyhkYXRhLCBzaXplKTsKKyAgICBzaGExLmFkZEJ5dGVzKHNw
YW4uZGF0YSgpLCBzcGFuLnNpemUoKSk7CiB9CiAKLXZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBFbmNvZGVy
OjplbmNvZGVGaXhlZExlbmd0aERhdGEoU3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKQogewotICAg
IHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOworICAgIHVwZGF0ZUNo
ZWNrc3VtRm9yRGF0YShtX3NoYTEsIHNwYW4pOwogCi0gICAgdWludDhfdCogYnVmZmVyID0gZ3Jv
dyhzaXplKTsKLSAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKKyAgICB1aW50OF90KiBi
dWZmZXIgPSBncm93KHNwYW4uc2l6ZSgpKTsKKyAgICBtZW1jcHkoYnVmZmVyLCBzcGFuLmRhdGEo
KSwgc3Bhbi5zaXplKCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgpAQCAtMTI1LDcg
KzEyNSw3IEBAIHZvaWQgRW5jb2Rlcjo6ZW5jb2RlQ2hlY2tzdW0oKQogewogICAgIFNIQTE6OkRp
Z2VzdCBoYXNoOwogICAgIG1fc2hhMS5jb21wdXRlSGFzaChoYXNoKTsKLSAgICBlbmNvZGVGaXhl
ZExlbmd0aERhdGEoaGFzaC5kYXRhKCksIGhhc2guc2l6ZSgpKTsKKyAgICBlbmNvZGVGaXhlZExl
bmd0aERhdGEoeyBoYXNoLmRhdGEoKSwgaGFzaC5zaXplKCkgfSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCmluZGV4IDI3YWQwZDA3
ZjY1MWEwZmI0MmI4ZWJhMWFkYzljYmVmOWFiMTdkNjkuLmNlYjUxMjZmODBiYjY0ZGIwOWNmNDI1
NmNhYjlmNTFjYWRhNmFkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudEVuY29kZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8d3RmL0VudW1U
cmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgorI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50Q29kZXIuaD4KIApAQCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIH5FbmNvZGVyKCk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVD
aGVja3N1bSgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoU3Bhbjxjb25zdCB1aW50OF90Pik7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxUPjo6dmFsdWU+
KiA9IG51bGxwdHI+CiAgICAgRW5jb2RlciYgb3BlcmF0b3I8PChjb25zdCBUJiB0KQpAQCAtNzMs
NyArNzQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgdWludDhfdCogYnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZv
ckRhdGEoU0hBMSYsIFNwYW48Y29uc3QgdWludDhfdD4pOwogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUeXBlPiBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvck51bWJlcihTSEExJiwgVHlwZSk7
CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENFbmNvZGVyID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmlu
ZGV4IDMxN2Q0MjhiZWJkMjY2YjEyN2UyZDg4NGMxMTg5ZTRiMDQyYzAxYzIuLmZmNjA2ODlhMmZk
YzRhMjk5ODVmNmMyNWM5YzNmZTllNWU3YWYzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC02MDIsNyArNjAyLDcgQEAg
Ym9vbCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDZXJ0aWZpY2F0ZShjb25zdCBTdHJpbmcm
IHNlcmlhbGl6ZWRDZXJ0aWZpY2F0ZSkKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVy
KHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfSk7CiAgICAgc3RkOjpvcHRpb25hbDxDZXJ0
aWZpY2F0ZUluZm8+IGNlcnRpZmljYXRlSW5mbzsKICAgICBkZWNvZGVyID4+IGNlcnRpZmljYXRl
SW5mbzsKICAgICBpZiAoIWNlcnRpZmljYXRlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCmluZGV4IDhhNjhmYzZiZDEwNGRhZTE0NGRjZDZiYzM2Y2EzMGRmYTNi
YzBiYTcuLmE2MzFhZDJkYWM0YzA0ZTQ3ZjU1YmEyNmM5N2YzZTk1YzFkYzNmNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZv
aWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAKIFdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXpl
KCkgfTsKKyAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSgpKSwgc2l6ZSgpIH19OwogfQogCiBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25z
dCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mb0NGTmV0LmNwcAppbmRleCBh
NDZkMGM3YmU0YTYyN2M4ZWI0NGNhNDFhOWZkNzAyMGUyM2ZmYTBmLi42YjYyY2I0Njg0ZTcyZTBj
MjM1NjllZTM5ZjBiZmIxYzUyNzA4NTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mb0NGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mb0NGTmV0LmNwcApAQCAtMjEw
LDcgKzIxMCw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZUNGRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBD
RkRhdGFSZWYgZGF0YSkKICAgICBjb25zdCB1aW50OF90KiBieXRlUHRyID0gQ0ZEYXRhR2V0Qnl0
ZVB0cihkYXRhKTsKIAogICAgIGVuY29kZXIgPDwgbGVuZ3RoOwotICAgIGVuY29kZXIuZW5jb2Rl
Rml4ZWRMZW5ndGhEYXRhKGJ5dGVQdHIsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSk7Cisg
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoeyBieXRlUHRyLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGxlbmd0aCkgfSk7CiB9CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxD
RkRhdGFSZWY+PiBkZWNvZGVDRkRhdGEoRGVjb2RlciYgZGVjb2RlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25E
YXRhYmFzZS5jcHAKaW5kZXggYmRhYmJkZmVlZjViNDExYzJiZTY5NWYzOGQ2YzljZjA3MWFmYWNl
NS4uNDg5NTU2MWRiYWZiMWM2ZTU3NmI0MTMxZDE1MDQxOTQxZTBhMjU1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3Ry
YXRpb25EYXRhYmFzZS5jcHAKQEAgLTUxNyw3ICs1MTcsNyBAQCBTdHJpbmcgUmVnaXN0cmF0aW9u
RGF0YWJhc2U6OmltcG9ydFJlY29yZHMoKQogICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4gY29udGVudFNlY3VyaXR5UG9saWN5OwogICAg
ICAgICBhdXRvIGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGFTcGFuID0gc3FsLT5jb2x1bW5CbG9i
QXNTcGFuKDgpOwogICAgICAgICBpZiAoY29udGVudFNlY3VyaXR5UG9saWN5RGF0YVNwYW4uc2l6
ZSgpKSB7Ci0gICAgICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGNzcERlY29kZXIo
Y29udGVudFNlY3VyaXR5UG9saWN5RGF0YVNwYW4uZGF0YSgpLCBjb250ZW50U2VjdXJpdHlQb2xp
Y3lEYXRhU3Bhbi5zaXplKCkpOworICAgICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciBjc3BEZWNvZGVyKGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGFTcGFuKTsKICAgICAgICAgICAg
IGNzcERlY29kZXIgPj4gY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgICAgICAgICAgaWYgKCFj
b250ZW50U2VjdXJpdHlQb2xpY3kpIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZh
aWxlZCB0byBkZWNvZGUgY29udGVudFNlY3VyaXR5UG9saWN5Iik7CkBAIC01MzAsNyArNTMwLDcg
QEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAg
SGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHNj
cmlwdFJlc291cmNlTWFwOwogICAgICAgICBhdXRvIHNjcmlwdFJlc291cmNlTWFwRGF0YVNwYW4g
PSBzcWwtPmNvbHVtbkJsb2JBc1NwYW4oMTApOwogICAgICAgICBpZiAoc2NyaXB0UmVzb3VyY2VN
YXBEYXRhU3Bhbi5zaXplKCkpIHsKLSAgICAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXIgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyKHNjcmlwdFJlc291cmNlTWFwRGF0YVNwYW4uZGF0
YSgpLCBzY3JpcHRSZXNvdXJjZU1hcERhdGFTcGFuLnNpemUoKSk7CisgICAgICAgICAgICBXVEY6
OlBlcnNpc3RlbmNlOjpEZWNvZGVyIHNjcmlwdFJlc291cmNlTWFwRGVjb2RlcihzY3JpcHRSZXNv
dXJjZU1hcERhdGFTcGFuKTsKICAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxVUkws
IEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcz4+IHNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlw
dHM7CiAgICAgICAgICAgICBzY3JpcHRSZXNvdXJjZU1hcERlY29kZXIgPj4gc2NyaXB0UmVzb3Vy
Y2VNYXBXaXRob3V0U2NyaXB0czsKICAgICAgICAgICAgIGlmICghc2NyaXB0UmVzb3VyY2VNYXBX
aXRob3V0U2NyaXB0cykgewpAQCAtNTQzLDcgKzU0Myw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25E
YXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgICAgIGF1dG8gY2VydGlmaWNhdGVJbmZvRGF0
YVNwYW4gPSBzcWwtPmNvbHVtbkJsb2JBc1NwYW4oMTEpOwogICAgICAgICBzdGQ6Om9wdGlvbmFs
PENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvOwogCi0gICAgICAgIFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXIgY2VydGlmaWNhdGVJbmZvRGVjb2RlcihjZXJ0aWZpY2F0ZUluZm9EYXRh
U3Bhbi5kYXRhKCksIGNlcnRpZmljYXRlSW5mb0RhdGFTcGFuLnNpemUoKSk7CisgICAgICAgIFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNhdGVJbmZvRGVjb2RlcihjZXJ0aWZpY2F0
ZUluZm9EYXRhU3Bhbik7CiAgICAgICAgIGNlcnRpZmljYXRlSW5mb0RlY29kZXIgPj4gY2VydGlm
aWNhdGVJbmZvOwogICAgICAgICBpZiAoIWNlcnRpZmljYXRlSW5mbykgewogICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpp
bXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8gZGVjb2RlIGNlcnRpZmljYXRlSW5mbyIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3Jh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0
b3JhZ2UuY3BwCmluZGV4IGIyZTkxNzVhNzBlNjQwNzUxODY2YzRmNGFkZWViOTFiNzIzNWU3YmUu
Ljg5YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFn
ZS5jcHAKQEAgLTg2LDkgKzg2LDkgQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6c3Rv
cmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmEKICAgICBhdXRv
IHNjcmlwdFBhdGggPSB0aGlzLT5zY3JpcHRQYXRoKHJlZ2lzdHJhdGlvbktleSwgc2NyaXB0VVJM
KTsKICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50
UGF0aChzY3JpcHRQYXRoKSk7CiAKLSAgICBhdXRvIGl0ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVE
YXRhID0gWyZdKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNpemVfdCk+JiB3
cml0ZURhdGEpIHsKLSAgICAgICAgZm9yIChhdXRvIGl0ID0gc2NyaXB0LmJ1ZmZlcigpLT5iZWdp
bigpOyBpdCAhPSBzY3JpcHQuYnVmZmVyKCktPmVuZCgpOyArK2l0KQotICAgICAgICAgICAgd3Jp
dGVEYXRhKGl0LT5zZWdtZW50LT5kYXRhKCksIGl0LT5zZWdtZW50LT5zaXplKCkpOworICAgIGF1
dG8gaXRlcmF0ZU92ZXJCdWZmZXJBbmRXcml0ZURhdGEgPSBbJl0oY29uc3QgRnVuY3Rpb248Ym9v
bChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIHdyaXRlRGF0YSkgeworICAgICAgICBmb3IgKGF1dG8m
IGVudHJ5IDogKnNjcmlwdC5idWZmZXIoKSkKKyAgICAgICAgICAgIHdyaXRlRGF0YSh7IGVudHJ5
LnNlZ21lbnQtPmRhdGEoKSwgZW50cnkuc2VnbWVudC0+c2l6ZSgpIH0pOwogICAgIH07CiAKICAg
ICBpZiAoIXNob3VsZFVzZUZpbGVNYXBwaW5nKHNjcmlwdC5idWZmZXIoKS0+c2l6ZSgpKSkgewpA
QCAtOTcsOCArOTcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpzdG9yZShjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYQogICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlNXU2NyaXB0U3RvcmFnZTo6c3RvcmU6IEZh
aWx1cmUgdG8gc3RvcmUgJXMsIEZpbGVTeXN0ZW06Om9wZW5GaWxlKCkgZmFpbGVkIiwgc2NyaXB0
UGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0K
LSAgICAgICAgaXRlcmF0ZU92ZXJCdWZmZXJBbmRXcml0ZURhdGEoWyZdKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKSB7Ci0gICAgICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShoYW5kbGUsIGRhdGEsIHNpemUpOworICAgICAgICBpdGVyYXRlT3ZlckJ1ZmZlckFuZFdyaXRl
RGF0YShbJl0oU3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKSB7CisgICAgICAgICAgICBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIHNwYW4uZGF0YSgpLCBzcGFuLnNpemUoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSk7CiAgICAgICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShoYW5kbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCAxYzA4NmNh
MGQwNmU4OTEyNDQxNjIyNjEwZTA3ZGU5MjhlODI5YjdkLi5hNmFlOTY5OTU2ZTQzZjk5OWI2YTg4
Mzc0NzRkYjk2ZjIzNGE3Yjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNjMw
LDcgKzYzMCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5l
OjpSZWNvcmQ+IGRlY29kZURPTUNhY2hlUmVjb3JkKFdURjo6CiAKIHN0ZDo6b3B0aW9uYWw8Q2Fj
aGU6OkRlY29kZWRSZWNvcmQ+IENhY2hlOjpkZWNvZGVSZWNvcmRIZWFkZXIoY29uc3QgU3RvcmFn
ZTo6UmVjb3JkJiBzdG9yYWdlKQogewotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVj
b2RlcihzdG9yYWdlLmhlYWRlci5kYXRhKCksIHN0b3JhZ2UuaGVhZGVyLnNpemUoKSk7CisgICAg
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2UuaGVhZGVyLnNwYW4oKSk7
CiAKICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaW5zZXJ0aW9uVGltZTsKICAgICBkZWNvZGVy
ID4+IGluc2VydGlvblRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggMjk0
ZDBiZDZkZWFjZmZmYWU4NDMyZDhkYTk5OGRlMDI5N2QyOGRjMi4uNjFmNTNkYWZiYTYxZjYwYzhm
OGNhMjUzY2ExMjgzOTVjMGIxN2JhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApA
QCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgQ2FjaGVzOjpzdG9yZU9yaWdpbihDb21wbGV0aW9uQ2Fs
bGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIAogc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDbGll
bnRPcmlnaW4+IENhY2hlczo6cmVhZE9yaWdpbihjb25zdCBEYXRhJiBkYXRhKQogewotICAgIFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OworICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLnNwYW4oKSk7CiAK
ICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdG9wT3JpZ2lu
OwogICAgIGRlY29kZXIgPj4gdG9wT3JpZ2luOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHN0YXRpYyBp
bmxpbmUgRGF0YSBlbmNvZGVDYWNoZU5hbWVzKGNvbnN0IFZlY3RvcjxDYWNoZT4mIGNhY2hlcykK
IAogc3RhdGljIGlubGluZSBFeHBlY3RlZDxWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5n
Pj4sIEVycm9yPiBkZWNvZGVDYWNoZXNOYW1lcyhjb25zdCBEYXRhJiBkYXRhKQogewotICAgIFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OworICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLnNwYW4oKSk7CiAg
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gY291bnQ7CiAgICAgZGVjb2RlciA+PiBjb3VudDsK
ICAgICBpZiAoIWNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKaW5kZXggNDZmODJlNGJmOTFmY2NkOTVhZDE4
ZDc0YzZiM2YxYmEwMWQ2MzQ4My4uYWVlMTAyYmVjNTFiYjM0NjkwMjNmYTc3OTVhODIyNzQ4MTMy
ZjI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZURhdGEuY3BwCkBAIC00Miw3ICs0Miw5IEBAIG5hbWVzcGFjZSBOZXR3b3Jr
Q2FjaGUgewogRGF0YSBEYXRhOjptYXBUb0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdAog
ewogICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgYXV0byBh
cHBseURhdGEgPSBbJl0oY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90
KT4mIGFwcGxpZXIpIHsgYXBwbHkoYXBwbGllcik7IH07CisgICAgYXV0byBhcHBseURhdGEgPSBb
Jl0oY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGFwcGxpZXIpIHsK
KyAgICAgICAgYXBwbHkoYXBwbGllcik7CisgICAgfTsKICAgICBhdXRvIG1hcHBlZEZpbGUgPSBG
aWxlU3lzdGVtOjptYXBUb0ZpbGUocGF0aCwgc2l6ZSgpLCBXVEZNb3ZlKGFwcGx5RGF0YSksICZo
YW5kbGUpOwogICAgIGlmICghbWFwcGVkRmlsZSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTg3
LDggKzg5LDggQEAgU0hBMTo6RGlnZXN0IGNvbXB1dGVTSEExKGNvbnN0IERhdGEmIGRhdGEsIGNv
bnN0IFNhbHQmIHNhbHQpCiB7CiAgICAgU0hBMSBzaGExOwogICAgIHNoYTEuYWRkQnl0ZXMoc2Fs
dC5kYXRhKCksIHNhbHQuc2l6ZSgpKTsKLSAgICBkYXRhLmFwcGx5KFsmc2hhMV0oY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgICAgICAgc2hhMS5hZGRCeXRlcyhkYXRhLCBz
aXplKTsKKyAgICBkYXRhLmFwcGx5KFsmc2hhMV0oU3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKSB7
CisgICAgICAgIHNoYTEuYWRkQnl0ZXMoc3Bhbi5kYXRhKCksIHNwYW4uc2l6ZSgpKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKaW5kZXggNjc1MjZjYWQ5NjA3MTRh
ODhjMWMwOTNlNGE5YzM4ODE0NmI4MGU5Mi4uOWM0NGE5OGIyODY4NzJlODgyODU5NzUxNzBhMjA2
MTUwMWNmZTFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaD4KICNpbmNs
dWRlIDx3dGYvU0hBMS5oPgorI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTc0LDEyICs3NSwxMyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkg
Y29uc3Q7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBT
cGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4oKSBjb25zdCB7IHJldHVybiB7IGRhdGEoKSwgc2l6ZSgp
IH07IH0KICAgICBib29sIGlzTWFwKCkgY29uc3QgeyByZXR1cm4gbV9pc01hcDsgfQogICAgIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IHRyeUNyZWF0ZVNoYXJlZE1lbW9yeSgpIGNvbnN0OwogCiAgICAg
RGF0YSBzdWJyYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QpIGNvbnN0OwogCi0gICAgYm9vbCBh
cHBseShjb25zdCBGdW5jdGlvbjxib29sIChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mKSBjb25z
dDsKKyAgICBib29sIGFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90
Pik+JikgY29uc3Q7CiAKICAgICBEYXRhIG1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZURhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tCmluZGV4IDViZmZmNDFhZTY5MjQwNzliMzhjYjBk
YmQ0NTZhYzE0ZTcwMTQ4NmEuLjNkMzhhYzVkZjFmMjQ4ZTgyNzhhNDkyZDYyYWE0MTBlODU4NGZk
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tCkBAIC02OSwxMiArNjksMTIgQEAgYm9vbCBEYXRh
Ojppc051bGwoKSBjb25zdAogICAgIHJldHVybiAhbV9kaXNwYXRjaERhdGE7CiB9CiAKLWJvb2wg
RGF0YTo6YXBwbHkoY29uc3QgRnVuY3Rpb248Ym9vbCAoY29uc3QgdWludDhfdCosIHNpemVfdCk+
JiBhcHBsaWVyKSBjb25zdAorYm9vbCBEYXRhOjphcHBseShjb25zdCBGdW5jdGlvbjxib29sKFNw
YW48Y29uc3QgdWludDhfdD4pPiYgYXBwbGllcikgY29uc3QKIHsKICAgICBpZiAoIW1fc2l6ZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBkaXNwYXRjaF9kYXRhX2FwcGx5KG1f
ZGlzcGF0Y2hEYXRhLmdldCgpLCBbJmFwcGxpZXJdKGRpc3BhdGNoX2RhdGFfdCwgc2l6ZV90LCBj
b25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkgewotICAgICAgICByZXR1cm4gYXBwbGllcihz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOworICAgICAgICByZXR1cm4g
YXBwbGllcih7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSB9KTsKICAg
ICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVEYXRhQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcAppbmRleCA4YmVhODg5M2FiYWE3ODE5N2U2
NTg1NmYyNDU1NWY3YWZkZjU3ODA1Li5lOTdlOGRmODk3NzdiNmZhZTUwYTc2OTI2OGFiYmJmNDgz
YmY1YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZURhdGFDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcApAQCAtNjgsMTIgKzY4LDEyIEBAIGJvb2wg
RGF0YTo6aXNOdWxsKCkgY29uc3QKICAgICByZXR1cm4gIW1fYnVmZmVyOwogfQogCi1ib29sIERh
dGE6OmFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNpemVfdCk+JiBh
cHBsaWVyKSBjb25zdAorYm9vbCBEYXRhOjphcHBseShjb25zdCBGdW5jdGlvbjxib29sKFNwYW48
Y29uc3QgdWludDhfdD4pPiYgYXBwbGllcikgY29uc3QKIHsKICAgICBpZiAoaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gYXBwbGllcihkYXRhKCksIHNpemUo
KSk7CisgICAgcmV0dXJuIGFwcGxpZXIoeyBkYXRhKCksIHNpemUoKSB9KTsKIH0KIAogRGF0YSBE
YXRhOjpzdWJyYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUdM
aWIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVE
YXRhR0xpYi5jcHAKaW5kZXggOTQxNDA1NWQ1ZDY5YTNlNWVhZWEwOGE5ZWYyY2I1NDVmYmQwMDRh
Yi4uMWZhNzUyMWIwMjIxOTliMmIxMDQ2NDY2MjFjYTVhNWZlNGQ3NGNmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhR0xpYi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVE
YXRhR0xpYi5jcHAKQEAgLTczLDE0ICs3MywxNCBAQCBib29sIERhdGE6OmlzTnVsbCgpIGNvbnN0
CiAgICAgcmV0dXJuICFtX2J1ZmZlcjsKIH0KIAotYm9vbCBEYXRhOjphcHBseShjb25zdCBGdW5j
dGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYgYXBwbGllcikgY29uc3QKK2Jvb2wg
RGF0YTo6YXBwbHkoY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGFw
cGxpZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGdzaXplIGxlbmd0aDsKICAgICBjb25zdCBhdXRvKiBkYXRhID0gZ19ieXRlc19nZXRf
ZGF0YShtX2J1ZmZlci5nZXQoKSwgJmxlbmd0aCk7Ci0gICAgcmV0dXJuIGFwcGxpZXIocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7CisgICAgcmV0dXJuIGFw
cGxpZXIoeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoIH0p
OwogfQogCiBEYXRhIERhdGE6OnN1YnJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCA4YTU5YTM1NjZkNDZlZTMzMjVlNTcxYThhZTdkZDk3
MDljNDE0YTJkLi4yY2RhNGZmNjhiMTkzZTRkOWNlZDYzZDJmY2MxMjlkYTI3MGFkOWQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVu
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
RW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdl
CiB7CiAgICAgYXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8RW50cnk+KHN0b3JhZ2VFbnRyeSk7CiAK
LSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRl
ci5kYXRhKCksIHN0b3JhZ2VFbnRyeS5oZWFkZXIuc2l6ZSgpKTsKKyAgICBXVEY6OlBlcnNpc3Rl
bmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5zcGFuKCkpOwogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgaWYgKCFXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlOjpkZWNvZGUoZGVjb2RlciwgcmVzcG9uc2UpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDQ2ZTU5NTIyOWNkOGZhNGFjNWNlMDU2
ODRhN2Y2NWIzMDYwMWEzNGIuLmVmNzZiY2RlNjRlMmQ2NWUzNDYzZjM3MzJlNTQwODU2YjFkYTUz
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtNDU0LDggKzQ1NCw4IEBAIHN0cnVjdCBSZWNv
cmRNZXRhRGF0YSB7CiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUmVjb3Jk
TWV0YURhdGEoUmVjb3JkTWV0YURhdGEmIG1ldGFEYXRhLCBjb25zdCBEYXRhJiBmaWxlRGF0YSkK
IHsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICBmaWxlRGF0YS5hcHBseShbJm1ldGFE
YXRhLCAmc3VjY2Vzc10oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgICAg
ICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKGRhdGEsIHNpemUpOworICAgIGZp
bGVEYXRhLmFwcGx5KFsmbWV0YURhdGEsICZzdWNjZXNzXShTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNw
YW4pIHsKKyAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHNwYW4pOwog
ICAgICAgICAKICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gY2FjaGVTdG9yYWdlVmVy
c2lvbjsKICAgICAgICAgZGVjb2RlciA+PiBjYWNoZVN0b3JhZ2VWZXJzaW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNv
dXJjZXNFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAppbmRleCA0YjVlMmQ4N2I3Y2Q0NjZkNzU3ZjAx
N2E5NTg1YzFkMTcyOGJkZGUyLi5jODMzZTRhOTFiNDhkZThiNTA1NTBlOGE5NjJmZjliZGM4ZDcw
ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcApAQCAtMTMwLDcg
KzEzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4gU3VicmVzb3VyY2Vz
RW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QKIHsKICAgICBhdXRvIGVudHJ5ID0gbWFr
ZVVuaXF1ZTxTdWJyZXNvdXJjZXNFbnRyeT4oc3RvcmFnZUVudHJ5KTsKIAotICAgIFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLmRhdGEoKSwgc3Rv
cmFnZUVudHJ5LmhlYWRlci5zaXplKCkpOworICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIg
ZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLnNwYW4oKSk7CiAgICAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8U3VicmVzb3VyY2VJbmZvPj4gc3VicmVzb3VyY2VzOwogICAgIGRlY29kZXIgPj4gc3Vi
cmVzb3VyY2VzOwogICAgIGlmICghc3VicmVzb3VyY2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggM2M5
NzFhMTNmNDljNWU3NDRkZTYwOWQ4NWRmYTdkZDNlYjVkMTUyNi4uMzE5NDM1MzQyMmY1ZDRlMTMz
M2JhYjlhNWM1YTA0NGJmOTM4ZjVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0xMzUsMTQgKzEzNSwx
NCBAQCBzdGF0aWMgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEgZW5jb2RlQ29udGVudFJ1bGVM
aXN0TWV0YURhdGEoY29uc3QgQ29udGVudFJ1bAogICAgIHJldHVybiBXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6RGF0YShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgZ2V0RGF0YShjb25zdCBUJiwgY29uc3QgRnVuY3Rp
b248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mKTsKLXRlbXBsYXRlPD4gdm9pZCBnZXRE
YXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlv
bjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYgZnVuY3Rpb24pCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiB2b2lkIGdldERhdGEoY29uc3QgVCYsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxj
b25zdCB1aW50OF90Pik+Jik7Cit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0
IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQot
dGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRh
LCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYgZnVuY3Rpb24p
Cit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikK
IHsKLSAgICBmdW5jdGlvbihkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgIGZ1bmN0aW9u
KHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgpAQCAtMTUwLDEzICsxNTAsMTMgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29udGVudFJ1bGVM
aXN0TWV0YURhdGE+IGRlY29kZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRhKGNvbnMKIHsKICAgICBi
b29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSBtZXRhRGF0
YTsKLSAgICBnZXREYXRhKGZpbGVEYXRhLCBbJm1ldGFEYXRhLCAmc3VjY2VzcywgJmZpbGVEYXRh
XShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgIGdldERhdGEoZmlsZURh
dGEsIFsmbWV0YURhdGEsICZzdWNjZXNzLCAmZmlsZURhdGFdKFNwYW48Y29uc3QgdWludDhfdD4g
c3BhbikgewogICAgICAgICAvLyBUaGUgZmlsZSBkYXRhIHNob3VsZCBiZSBtYXBwZWQgaW50byBv
bmUgY29udGludW91cyBtZW1vcnkgc2VnbWVudCBzbyB0aGUgc2l6ZQogICAgICAgICAvLyBwYXNz
ZWQgdG8gdGhlIGFwcGxpZXIgc2hvdWxkIGFsd2F5cyBlcXVhbCB0aGUgZGF0YSBzaXplLgotICAg
ICAgICBpZiAoc2l6ZSAhPSBmaWxlRGF0YS5zaXplKCkpCisgICAgICAgIGlmIChzcGFuLnNpemUo
KSAhPSBmaWxlRGF0YS5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKGRhdGEsIHNpemUpOworICAgICAg
ICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoc3Bhbik7CiAgICAgICAgIAogICAg
ICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiB2ZXJzaW9uOwogICAgICAgICBkZWNvZGVyID4+
IHZlcnNpb247CkBAIC0yMjgsOCArMjI4LDggQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFwcGVk
RGF0YT4gb3BlbkFuZE1hcENvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgcGEKIHN0
YXRpYyBib29sIHdyaXRlRGF0YVRvRmlsZShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0
YSYgZmlsZURhdGEsIFBsYXRmb3JtRmlsZUhhbmRsZSBmZCkKIHsKICAgICBib29sIHN1Y2Nlc3Mg
PSB0cnVlOwotICAgIGZpbGVEYXRhLmFwcGx5KFtmZCwgJnN1Y2Nlc3NdKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKSB7Ci0gICAgICAgIGlmICh3cml0ZVRvRmlsZShmZCwgZGF0YSwg
c2l6ZSkgPT0gLTEpIHsKKyAgICBmaWxlRGF0YS5hcHBseShbZmQsICZzdWNjZXNzXShTcGFuPGNv
bnN0IHVpbnQ4X3Q+IHNwYW4pIHsKKyAgICAgICAgaWYgKHdyaXRlVG9GaWxlKGZkLCBzcGFuLmRh
dGEoKSwgc3Bhbi5zaXplKCkpID09IC0xKSB7CiAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432763</attachid>
            <date>2021-07-01 19:33:35 -0700</date>
            <delta_ts>2021-07-02 17:37:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227606-20210701193334.patch</filename>
            <type>text/plain</type>
            <size>36719</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDczZTkxMjVmM2Q4NDM0NmVmMzA5MmVl
ZDY1Zjk2N2VhYTIzZTI2NDUuLjRlZjcxOGUxOTQ5YWEyMjc1ZjFkNzM5ZjFjYWU5YWZiNmZkNjRk
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDctMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgbW9yZSBTcGFuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc2MDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgaXMgYWx3YXlzIGJl
dHRlciwgcmlnaHQ/CisKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChX
VEY6OkZpbGVTeXN0ZW1JbXBsOjptYXBUb0ZpbGUpOgorICAgICAgICAqIHd0Zi9GaWxlU3lzdGVt
Lmg6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwOgorICAg
ICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8Q1N0cmluZz46OmVuY29kZSk6CisgICAgICAg
IChXVEY6OlBlcnNpc3RlbmNlOjpDb2RlcjxDU3RyaW5nPjo6ZGVjb2RlKToKKyAgICAgICAgKFdU
Rjo6UGVyc2lzdGVuY2U6OkNvZGVyPFN0cmluZz46OmVuY29kZSk6CisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjpkZWNvZGVTdHJpbmdUZXh0KToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6
OkNvZGVyPFNIQTE6OkRpZ2VzdD46OmVuY29kZSk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNl
OjpDb2RlcjxTSEExOjpEaWdlc3Q+OjpkZWNvZGUpOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50Q29kZXJzLmg6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnREZWNvZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OkRlY29k
ZXIpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6YnVmZmVySXNMYXJnZUVu
b3VnaFRvQ29udGFpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
OjpidWZmZXJQb2ludGVyRm9yRGlyZWN0UmVhZCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2Rlcjo6ZGVjb2RlTnVtYmVyKToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXI6OnZlcmlmeUNoZWNrc3VtKToKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudERlY29kZXIuaDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6Omxl
bmd0aCBjb25zdCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpjdXJyZW50
T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29k
ZXIuY3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6dXBkYXRlQ2hlY2tz
dW1Gb3JEYXRhKToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OmVuY29kZUZp
eGVkTGVuZ3RoRGF0YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNv
ZGVDaGVja3N1bSk6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVy
Lmg6CisKIDIwMjEtMDctMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIERpc2FibGUgcmVsYXkgZm9yIFVEUCBzb2NrZXRzIHdoZW4gbm90IG5lZWRlZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDY0MTY0YjFlMzg3MzZmMDE4NzVkY2ZkN2E0YzJlYTIxZWY4NWQ3MzMuLjUwMzI0
ZGIxYzg0ZmMxOTQ1YzliY2Y3MGFkYjBkYmIzMTkwMmI2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMSBAQAorMjAyMS0wNy0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFVzZSBtb3JlIFNwYW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzYwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDZXJ0
aWZpY2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHA6CisgICAgICAgIChXVEY6OlBl
cnNpc3RlbmNlOjplbmNvZGVDRkRhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0
aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3Rv
cmFnZTo6c3RvcmUpOgorCiAyMDIxLTA3LTAxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBMYXN0IGZldyBzZWNvbmRzIG9mICdhdWRpby93ZWJt
OyBjb2RlY3M9dm9yYmlzJyBhcHBlbmRlZCB0byBhIFNhbXBsZUJ1ZmZlciBhcmUgbm90IHBsYXll
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAzZDM0YTY2YzQxNGY2NzhiY2I3MzcxZDY2OTE4NmM3N2E2NmZjN2IyLi5k
Njc2YjlkMGI5MjM2ZWViNGY2ZjFjMmY5MjlhNjc4NmZjYzRhYTkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM3IEBACisyMDIxLTA3LTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgVXNlIG1vcmUgU3BhbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2Fj
aGU6OmRlY29kZVJlY29yZEhlYWRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlOjpDYWNoZXM6OnJlYWRPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OmRlY29kZUNhY2hlc05hbWVzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhOjpt
YXBUb0ZpbGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmNvbXB1dGVT
SEExKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmg6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YTo6c3BhbiBjb25zdCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6OmFwcGx5IGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ3VybC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YTo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFHTGliLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpEYXRhOjphcHBseSBjb25zdCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpkZWNvZGVSZWNvcmRNZXRhRGF0YSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlc0VudHJ5OjpkZWNvZGVTdG9yYWdl
UmVjb3JkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcDoKKyAgICAgICAgKEFQSTo6Z2V0RGF0YSk6CisgICAgICAgIChBUEk6OmRlY29kZUNvbnRl
bnRSdWxlTGlzdE1ldGFEYXRhKToKKyAgICAgICAgKEFQSTo6d3JpdGVEYXRhVG9GaWxlKToKKwog
MjAyMS0wNy0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIGxvYWRTaW11bGF0ZWRSZXF1ZXN0OiBzaG91bGQgZG8gc2FtZSBkZWxlZ2F0ZSBj
YWxsYmFja3MgYXMgbG9hZEhUTUxTdHJpbmcgYW5kIGxvYWREYXRhCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3Bw
CmluZGV4IGQ3MGRjZGQ2MTgzZmNlZTQwNGMyNmU5NTE1ZTExMDQ1Nzk0ZWVlNWUuLmZkZjM3Y2Uz
ZjNiZmQ4MWRhMzY4NWQ5YzM1Mjk3YjA1NTRjMTVlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBA
IC00MzIsNyArNDMyLDcgQEAgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFyY2hpdmUoY29uc3Qg
U3RyaW5nJikKIH0KICNlbmRpZgogCi1NYXBwZWRGaWxlRGF0YSBtYXBUb0ZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBzaXplX3QgYnl0ZXNTaXplLCBGdW5jdGlvbjx2b2lkKGNvbnN0IEZ1bmN0aW9u
PGJvb2woY29uc3QgdWludDhfdCosIHNpemVfdCk+Jik+JiYgYXBwbHksIFBsYXRmb3JtRmlsZUhh
bmRsZSogb3V0cHV0SGFuZGxlKQorTWFwcGVkRmlsZURhdGEgbWFwVG9GaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgc2l6ZV90IGJ5dGVzU2l6ZSwgRnVuY3Rpb248dm9pZChjb25zdCBGdW5jdGlvbjxi
b29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYpPiYmIGFwcGx5LCBQbGF0Zm9ybUZpbGVIYW5kbGUq
IG91dHB1dEhhbmRsZSkKIHsKICAgICBjb25zdGV4cHIgYm9vbCBmYWlsSWZGaWxlRXhpc3RzID0g
dHJ1ZTsKICAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVT
eXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlLCBGaWxlU3lzdGVtOjpGaWxlQWNjZXNzUGVy
bWlzc2lvbjo6VXNlciwgZmFpbElmRmlsZUV4aXN0cyk7CkBAIC00NTIsOSArNDUyLDkgQEAgTWFw
cGVkRmlsZURhdGEgbWFwVG9GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgc2l6ZV90IGJ5dGVzU2l6
ZSwgRnVuY3Rpb248dm9pZChjb24KICAgICB2b2lkKiBtYXAgPSBjb25zdF9jYXN0PHZvaWQqPiht
YXBwZWRGaWxlLmRhdGEoKSk7CiAgICAgdWludDhfdCogbWFwRGF0YSA9IHN0YXRpY19jYXN0PHVp
bnQ4X3QqPihtYXApOwogCi0gICAgYXBwbHkoWyZtYXBEYXRhXShjb25zdCB1aW50OF90KiBjaHVu
aywgc2l6ZV90IGNodW5rU2l6ZSkgewotICAgICAgICBtZW1jcHkobWFwRGF0YSwgY2h1bmssIGNo
dW5rU2l6ZSk7Ci0gICAgICAgIG1hcERhdGEgKz0gY2h1bmtTaXplOworICAgIGFwcGx5KFsmbWFw
RGF0YV0oU3Bhbjxjb25zdCB1aW50OF90PiBjaHVuaykgeworICAgICAgICBtZW1jcHkobWFwRGF0
YSwgY2h1bmsuZGF0YSgpLCBjaHVuay5zaXplKCkpOworICAgICAgICBtYXBEYXRhICs9IGNodW5r
LnNpemUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApp
bmRleCA3Y2VhNzBhM2Y0NThkMzZiMDc5MDQ4MGY2YTQ4YWViZmI5ZjE5MWVmLi4yZTA1NDBhYTFk
Nzg3YTY5OGIxYTRhYmVjNjQzNGFiNzVlNmM3MzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KKyNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTI3Myw3ICsyNzQsNyBAQCBpbmxpbmUgTWFwcGVkRmls
ZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpvcGVyYXRvcj0oTWFwcGVkRmlsZURhdGEmJiBvdGhlcikK
IAogLy8gVGhpcyBjcmVhdGVzIHRoZSBkZXN0aW5hdGlvbiBmaWxlLCBtYXBzIGl0LCB3cml0ZSB0
aGUgcHJvdmlkZWQgZGF0YSB0byBpdCBhbmQgcmV0dXJucyB0aGUgbWFwcGVkIGZpbGUuCiAvLyBU
aGlzIGZ1bmN0aW9uIGZhaWxzIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBmaWxlIGF0IHRoZSBkZXN0
aW5hdGlvbiBwYXRoLgotV1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZpbGVEYXRhIG1hcFRvRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIHNpemVfdCBieXRlc1NpemUsIEZ1bmN0aW9uPHZvaWQoY29u
c3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mKT4mJiBhcHBseSwgUGxh
dGZvcm1GaWxlSGFuZGxlKiA9IG51bGxwdHIpOworV1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZp
bGVEYXRhIG1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIHNpemVfdCBieXRlc1NpemUsIEZ1
bmN0aW9uPHZvaWQoY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mKT4m
JiBhcHBseSwgUGxhdGZvcm1GaWxlSGFuZGxlKiA9IG51bGxwdHIpOwogCiB9IC8vIG5hbWVzcGFj
ZSBGaWxlU3lzdGVtSW1wbAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwCmluZGV4IGYxNjhhZTIwMTNiY2ViOTc4
NTk1N2UzYWNmMDhlOTgwMDgzNTkxZWMuLjgyOGU1MTczNDkxMmQ4ZjJhYWZkN2ZlMjY2MDQ1MGFl
M2ViOTNmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRD
b2RlcnMuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ29kZXI8Q1N0cmluZz46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiAKICAgICB1aW50MzJfdCBs
ZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgZW5jb2RlciA8PCBsZW5ndGg7Ci0gICAgZW5j
b2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoc3RyaW5nLmRhdGFBc1VJbnQ4UHRyKCksIGxlbmd0
aCk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoeyBzdHJpbmcuZGF0YUFzVUlu
dDhQdHIoKSwgbGVuZ3RoIH0pOwogfQogCiBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IENvZGVyPENT
dHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKQEAgLTc4LDcgKzc4LDcgQEAgc3RkOjpv
cHRpb25hbDxDU3RyaW5nPiBDb2RlcjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAKICAgICBjaGFyKiBidWZmZXI7CiAgICAgQ1N0cmluZyBzdHJpbmcgPSBDU3RyaW5nOjpuZXdV
bmluaXRpYWxpemVkKCpsZW5ndGgsIGJ1ZmZlcik7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUZp
eGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihidWZmZXIpLCAqbGVuZ3Ro
KSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHsgcmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4oYnVmZmVyKSwgKmxlbmd0aCB9KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBzdHJpbmc7CkBAIC05OCw5ICs5OCw5IEBAIHZvaWQgQ29k
ZXI8U3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogICAgIGVuY29kZXIgPDwgbGVuZ3RoIDw8IGlzOEJpdDsKIAogICAgIGlmIChpczhCaXQpCi0g
ICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHN0cmluZy5jaGFyYWN0ZXJzOCgp
LCBsZW5ndGgpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHN0cmlu
Zy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGggfSk7CiAgICAgZWxzZQotICAgICAgICBlbmNvZGVyLmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJp
bmcuY2hhcmFjdGVyczE2KCkpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgZW5j
b2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihzdHJpbmcuY2hhcmFjdGVyczE2KCkpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpIH0pOwog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KQEAgLTExMiw3ICsxMTIsNyBA
QCBzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJpbmdUZXh0KERl
Y29kZXImIGRlY29kZXIsIHVpbnQzMl90CiAKICAgICBDaGFyYWN0ZXJUeXBlKiBidWZmZXI7CiAg
ICAgU3RyaW5nIHN0cmluZyA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1
ZmZlcik7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPihidWZmZXIpLCBsZW5ndGggKiBzaXplb2YoQ2hhcmFjdGVyVHlwZSkp
KQorICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoeyByZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPihidWZmZXIpLCBsZW5ndGggKiBzaXplb2YoQ2hhcmFjdGVyVHlwZSkgfSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIHN0cmluZzsK
QEAgLTE0MiwxMyArMTQyLDEzIEBAIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBDb2RlcjxTdHJpbmc+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIAogdm9pZCBDb2RlcjxTSEExOjpEaWdlc3Q+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU0hBMTo6RGlnZXN0JiBkaWdlc3QpCiB7Ci0g
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoZGlnZXN0LmRhdGEoKSwgc2l6ZW9mKGRp
Z2VzdCkpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHsgZGlnZXN0LmRhdGEo
KSwgc2l6ZW9mKGRpZ2VzdCkgfSk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8U0hBMTo6RGlnZXN0PiBD
b2RlcjxTSEExOjpEaWdlc3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBTSEEx
OjpEaWdlc3QgdG1wOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEodG1w
LmRhdGEoKSwgc2l6ZW9mKHRtcCkpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0
aERhdGEoeyB0bXAuZGF0YSgpLCBzaXplb2YodG1wKSB9KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICByZXR1cm4gdG1wOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudENvZGVycy5oCmluZGV4IGI3NzIxNzY3ZDU4OTVmYzA1YTRhNzU5NjA3MmVj
MWFmZDA4NTczN2QuLmJhZmNjODk0OTI4N2Y5MjY4MzNmYTNkNzYzNjUxNzUxOWUyYjYwZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmgKQEAgLTE3
Myw3ICsxNzMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
IHN0cnVjdCBWZWN0b3JDb2Rlcjx0cnVlLCBULCBpbmxpbmVDYQogICAgICAgICBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHk+IHRlbXA7CiAgICAgICAgIHRlbXAuZ3JvdyhzaXplKTsKIAotICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KHRlbXAuZGF0YSgpKSwgc2l6ZSAqIHNpemVvZihUKSkpCisgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoeyB0ZW1wLmRhdGEoKSwgc2l6ZSAqIHNpemVvZihU
KSB9KSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJu
IHRlbXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rl
ci5jcHAKaW5kZXggZjYxYTIwOThhOTBiOGQ5OWYzMGUxMzI1OGY5ZTM2NDU4ZmNkMWI2ZS4uMWI5
MmNhOWIzZWVjZGYxZTJjMzA1OWY5YWViOGE2NGIwZGUwNjMzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcApAQCAtMzEsMTAgKzMxLDkg
QEAKIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKIAotRGVjb2Rlcjo6
RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKQotICAgIDog
bV9idWZmZXIoYnVmZmVyKQotICAgICwgbV9idWZmZXJQb3NpdGlvbihidWZmZXIpCi0gICAgLCBt
X2J1ZmZlckVuZChidWZmZXIgKyBidWZmZXJTaXplKQorRGVjb2Rlcjo6RGVjb2RlcihTcGFuPGNv
bnN0IHVpbnQ4X3Q+IHNwYW4pCisgICAgOiBtX3NwYW4oc3BhbikKKyAgICAsIG1faXRlcmF0b3Io
c3Bhbi5iZWdpbigpKQogewogfQogCkBAIC00NCw3ICs0Myw3IEBAIERlY29kZXI6On5EZWNvZGVy
KCkKIAogYm9vbCBEZWNvZGVyOjpidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVfdCBz
aXplKSBjb25zdAogewotICAgIHJldHVybiBzaXplIDw9IHN0YXRpY19jYXN0PHNpemVfdD4obV9i
dWZmZXJFbmQgLSBtX2J1ZmZlclBvc2l0aW9uKTsKKyAgICByZXR1cm4gc2l6ZSA8PSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KG1fc3Bhbi5lbmQoKSAtIG1faXRlcmF0b3IpOwogfQogCiBjb25zdCB1aW50
OF90KiBEZWNvZGVyOjpidWZmZXJQb2ludGVyRm9yRGlyZWN0UmVhZChzaXplX3Qgc2l6ZSkKQEAg
LTUyLDI2ICs1MSwyNyBAQCBjb25zdCB1aW50OF90KiBEZWNvZGVyOjpidWZmZXJQb2ludGVyRm9y
RGlyZWN0UmVhZChzaXplX3Qgc2l6ZSkKICAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0Nv
bnRhaW4oc2l6ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBkYXRhID0g
bV9idWZmZXJQb3NpdGlvbjsKLSAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemU7CisgICAgYXV0
byBpdGVyYXRvciA9IG1faXRlcmF0b3I7CisgICAgbV9pdGVyYXRvciArPSBzaXplOwogCi0gICAg
RW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7Ci0gICAg
cmV0dXJuIGRhdGE7CisgICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hhMSwg
eyBpdGVyYXRvciwgc2l6ZSB9KTsKKyAgICByZXR1cm4gaXRlcmF0b3I7CiB9CiAKLWJvb2wgRGVj
b2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQor
Ym9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEoU3Bhbjx1aW50OF90PiBzcGFuKQog
ewotICAgIGF1dG8gYnVmZmVyID0gYnVmZmVyUG9pbnRlckZvckRpcmVjdFJlYWQoc2l6ZSk7Cisg
ICAgYXV0byBidWZmZXIgPSBidWZmZXJQb2ludGVyRm9yRGlyZWN0UmVhZChzcGFuLnNpemUoKSk7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtZW1jcHkoZGF0
YSwgYnVmZmVyLCBzaXplKTsKKyAgICBtZW1jcHkoc3Bhbi5kYXRhKCksIGJ1ZmZlciwgc3Bhbi5z
aXplKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIERlY29kZXI6OnJld2luZChzaXpl
X3Qgc2l6ZSkKIHsKLSAgICBpZiAobV9idWZmZXJQb3NpdGlvbiAtIHNpemUgPj0gbV9idWZmZXIp
IHsKLSAgICAgICAgbV9idWZmZXJQb3NpdGlvbiAtPSBzaXplOworICAgIC8vIEZJWE1FOiBjaGVj
ayBmb3IgdW5kZXJmbG93LgorICAgIGlmIChtX2l0ZXJhdG9yIC0gc2l6ZSA+PSBtX3NwYW4uYmVn
aW4oKSkgeworICAgICAgICBtX2l0ZXJhdG9yIC09IHNpemU7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC04NCw4ICs4NCw4IEBAIERlY29kZXImIERl
Y29kZXI6OmRlY29kZU51bWJlcihzdGQ6Om9wdGlvbmFsPFQ+JiBvcHRpb25hbCkKICAgICAgICAg
cmV0dXJuICp0aGlzOwogCiAgICAgVCB2YWx1ZTsKLSAgICBtZW1jcHkoJnZhbHVlLCBtX2J1ZmZl
clBvc2l0aW9uLCBzaXplb2YoVCkpOwotICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZW9mKFQp
OworICAgIG1lbWNweSgmdmFsdWUsIG1faXRlcmF0b3IsIHNpemVvZihUKSk7CisgICAgbV9pdGVy
YXRvciArPSBzaXplb2YoVCk7CiAKICAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJl
cihtX3NoYTEsIHZhbHVlKTsKICAgICBvcHRpb25hbCA9IHZhbHVlOwpAQCAtMTQ4LDExICsxNDgs
MTEgQEAgYm9vbCBEZWNvZGVyOjp2ZXJpZnlDaGVja3N1bSgpCiAgICAgbV9zaGExLmNvbXB1dGVI
YXNoKGNvbXB1dGVkSGFzaCk7CiAKICAgICBTSEExOjpEaWdlc3Qgc2F2ZWRIYXNoOwotICAgIGlm
ICghZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHNhdmVkSGFzaC5kYXRhKCksIHNpemVvZihzYXZlZEhh
c2gpKSkKKyAgICBpZiAoIWRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHNhdmVkSGFzaC5kYXRhKCks
IHNpemVvZihzYXZlZEhhc2gpIH0pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1
cm4gY29tcHV0ZWRIYXNoID09IHNhdmVkSGFzaDsKIH0KIAotfQotfQorfSAvLyBuYW1lc3BhY2Ug
UGVyc2lzdGVuY2UKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNp
c3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKaW5kZXggMmE2MzdiOGE3MjcxNjA1M2E2NjI4ZmEz
YWU0Y2Q2YTdjMDcxYTEzNC4uYjlmZDA2NTg1NWYxNjRjNDI1NmE4ZWI4NjM1MGE1YTQzZDQxZGM3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1
ZGUgPHd0Zi9TSEExLmg+CisjaW5jbHVkZSA8d3RmL1NwYW4uaD4KICNpbmNsdWRlIDx3dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudENvZGVyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMzUsMTcg
KzM2LDE3IEBAIG5hbWVzcGFjZSBQZXJzaXN0ZW5jZSB7CiBjbGFzcyBEZWNvZGVyIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgRGVjb2RlcihTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgfkRlY29kZXIoKTsKIAotICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlckVuZCAtIG1fYnVmZmVyOyB9Ci0gICAgc2l6ZV90IGN1cnJlbnRPZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlclBvc2l0aW9uIC0gbV9idWZmZXI7IH0KKyAgICBz
aXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zcGFuLnNpemUoKTsgfQorICAgIHNpemVf
dCBjdXJyZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciAtIG1fc3Bhbi5iZWdp
bigpOyB9CiAgICAgCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIHJld2luZChzaXplX3QpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIHZlcmlmeUNoZWNrc3VtKCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqLCBz
aXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGVGaXhlZExlbmd0aERhdGEoU3Bhbjx1aW50OF90Pik7CiAKICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPGJvb2w+Jik7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDx1aW50OF90
PiYpOwpAQCAtOTQsOSArOTUsOCBAQCBwcml2YXRlOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVf
dCkgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4gRGVjb2RlciYgZGVjb2RlTnVt
YmVyKHN0ZDo6b3B0aW9uYWw8VHlwZT4mKTsKIAotICAgIGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVy
OwotICAgIGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVyUG9zaXRpb247Ci0gICAgY29uc3QgdWludDhf
dCogbV9idWZmZXJFbmQ7CisgICAgY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiBtX3NwYW47Cisg
ICAgU3Bhbjxjb25zdCB1aW50OF90Pjo6aXRlcmF0b3IgbV9pdGVyYXRvcjsKIAogICAgIFNIQTEg
bV9zaGExOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRF
bmNvZGVyLmNwcAppbmRleCAxNGRkM2Y2ODM4N2ZlM2Y4M2MwNDlmNDE4MjgyYzU3OTFhZjBlMmFh
Li5kMjYzN2IwMWQ3NTA3MmEwOGY2NDE5ODZhYzllODBjYWM5NTJlZTkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwCkBAIC00NiwxOSAr
NDYsMTkgQEAgdWludDhfdCogRW5jb2Rlcjo6Z3JvdyhzaXplX3Qgc2l6ZSkKICAgICByZXR1cm4g
bV9idWZmZXIuZGF0YSgpICsgbmV3UG9zaXRpb247CiB9CiAKLXZvaWQgRW5jb2Rlcjo6dXBkYXRl
Q2hlY2tzdW1Gb3JEYXRhKFNIQTEmIHNoYTEsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKQordm9pZCBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYgc2hhMSwgU3Bh
bjxjb25zdCB1aW50OF90PiBzcGFuKQogewogICAgIGF1dG8gdHlwZVNhbHQgPSBTYWx0PHVpbnQ4
X3QqPjo6dmFsdWU7CiAgICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PigmdHlwZVNhbHQpLCBzaXplb2YodHlwZVNhbHQpKTsKLSAgICBzaGExLmFkZEJ5dGVzKGRhdGEs
IHNpemUpOworICAgIHNoYTEuYWRkQnl0ZXMoc3Bhbi5kYXRhKCksIHNwYW4uc2l6ZSgpKTsKIH0K
IAotdm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCit2b2lkIEVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShTcGFu
PGNvbnN0IHVpbnQ4X3Q+IHNwYW4pCiB7Ci0gICAgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hh
MSwgZGF0YSwgc2l6ZSk7CisgICAgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hhMSwgc3Bhbik7
CiAKLSAgICB1aW50OF90KiBidWZmZXIgPSBncm93KHNpemUpOwotICAgIG1lbWNweShidWZmZXIs
IGRhdGEsIHNpemUpOworICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coc3Bhbi5zaXplKCkpOwor
ICAgIG1lbWNweShidWZmZXIsIHNwYW4uZGF0YSgpLCBzcGFuLnNpemUoKSk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFR5cGU+CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBFbmNvZGVyOjplbmNv
ZGVDaGVja3N1bSgpCiB7CiAgICAgU0hBMTo6RGlnZXN0IGhhc2g7CiAgICAgbV9zaGExLmNvbXB1
dGVIYXNoKGhhc2gpOwotICAgIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShoYXNoLmRhdGEoKSwgaGFz
aC5zaXplKCkpOworICAgIGVuY29kZUZpeGVkTGVuZ3RoRGF0YSh7IGhhc2guZGF0YSgpLCBoYXNo
LnNpemUoKSB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudEVuY29kZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNp
c3RlbnRFbmNvZGVyLmgKaW5kZXggMjdhZDBkMDdmNjUxYTBmYjQyYjhlYmExYWRjOWNiZWY5YWIx
N2Q2OS4uY2ViNTEyNmY4MGJiNjRkYjA5Y2Y0MjU2Y2FiOWY1MWNhZGE2YWQ0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9TSEEx
Lmg+CisjaW5jbHVkZSA8d3RmL1NwYW4uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oPgogCkBAIC00Myw3ICs0NCw3
IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfkVuY29kZXIoKTsKIAogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZUNoZWNrc3VtKCk7Ci0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShTcGFu
PGNvbnN0IHVpbnQ4X3Q+KTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19lbnVtPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBFbmNvZGVyJiBv
cGVyYXRvcjw8KGNvbnN0IFQmIHQpCkBAIC03Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCB1aW50OF90KiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KICAg
ICBzaXplX3QgYnVmZmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQog
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yRGF0
YShTSEExJiwgY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiwgU3Bhbjxjb25zdCB1aW50
OF90Pik7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+IHN0YXRpYyB2b2lkIHVwZGF0ZUNo
ZWNrc3VtRm9yTnVtYmVyKFNIQTEmLCBUeXBlKTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc0lQQ0VuY29kZXIgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggMzE3ZDQyOGJlYmQyNjZiMTI3ZTJkODg0
YzExODllNGIwNDJjMDFjMi4uZmY2MDY4OWEyZmRjNGEyOTk4NWY2YzI1YzljM2ZlOWU1ZTdhZjMy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAKQEAgLTYwMiw3ICs2MDIsNyBAQCBib29sIEluc3BlY3RvckZyb250ZW5kSG9zdDo6
c2hvd0NlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYgc2VyaWFsaXplZENlcnRpZmljYXRlKQogICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2RlciBkZWNvZGVyKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBXVEY6
OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUo
KSB9KTsKICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZv
OwogICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGVJbmZvOwogICAgIGlmICghY2VydGlmaWNhdGVJ
bmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggOGE2OGZj
NmJkMTA0ZGFlMTQ0ZGNkNmJjMzZjYTMwZGZhM2JjMGJhNy4uYTYzMWFkMmRhYzRjMDRlNDdmNTVi
YTI2Yzk3ZjNlOTVjMWRjM2Y3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlO
b3ROZWVkZWRTb29uKCkgY29uc3QKIAogV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBTaGFyZWRC
dWZmZXI6OmRlY29kZXIoKSBjb25zdAogewotICAgIHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9OworICAgIHJldHVybiB7eyByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkgfX07CiB9CiAKIGJvb2wg
U2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmlj
YXRlSW5mb0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2Vy
dGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCmluZGV4IGE0NmQwYzdiZTRhNjI3YzhlYjQ0Y2E0MWE5ZmQ3
MDIwZTIzZmZhMGYuLjZiNjJjYjQ2ODRlNzJlMGMyMzU2OWVlMzlmMGJmYjFjNTI3MDg1MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJ
bmZvQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2Vy
dGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgc3RhdGljIHZvaWQgZW5j
b2RlQ0ZEYXRhKEVuY29kZXImIGVuY29kZXIsIENGRGF0YVJlZiBkYXRhKQogICAgIGNvbnN0IHVp
bnQ4X3QqIGJ5dGVQdHIgPSBDRkRhdGFHZXRCeXRlUHRyKGRhdGEpOwogCiAgICAgZW5jb2RlciA8
PCBsZW5ndGg7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoYnl0ZVB0ciwgc3Rh
dGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YSh7IGJ5dGVQdHIsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSB9KTsKIH0KIAogc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGRGF0YVJlZj4+IGRlY29kZUNGRGF0YShEZWNv
ZGVyJiBkZWNvZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRleCBiZGFiYmRmZWVm
NWI0MTFjMmJlNjk1ZjM4ZDZjOWNmMDcxYWZhY2U1Li40ODk1NTYxZGJhZmIxYzZlNTc2YjQxMzFk
MTUwNDE5NDFlMGEyNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtNTE3LDcg
KzUxNyw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
PiBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9s
aWN5RGF0YVNwYW4gPSBzcWwtPmNvbHVtbkJsb2JBc1NwYW4oOCk7CiAgICAgICAgIGlmIChjb250
ZW50U2VjdXJpdHlQb2xpY3lEYXRhU3Bhbi5zaXplKCkpIHsKLSAgICAgICAgICAgIFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgY3NwRGVjb2Rlcihjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhU3Bh
bi5kYXRhKCksIGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGFTcGFuLnNpemUoKSk7CisgICAgICAg
ICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGNzcERlY29kZXIoY29udGVudFNlY3VyaXR5
UG9saWN5RGF0YVNwYW4pOwogICAgICAgICAgICAgY3NwRGVjb2RlciA+PiBjb250ZW50U2VjdXJp
dHlQb2xpY3k7CiAgICAgICAgICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeSkgewogICAg
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRp
b25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBjb250ZW50U2VjdXJp
dHlQb2xpY3kiKTsKQEAgLTUzMCw3ICs1MzAsNyBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJh
c2U6OmltcG9ydFJlY29yZHMoKQogICAgICAgICBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7CiAgICAgICAgIGF1
dG8gc2NyaXB0UmVzb3VyY2VNYXBEYXRhU3BhbiA9IHNxbC0+Y29sdW1uQmxvYkFzU3BhbigxMCk7
CiAgICAgICAgIGlmIChzY3JpcHRSZXNvdXJjZU1hcERhdGFTcGFuLnNpemUoKSkgewotICAgICAg
ICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBzY3JpcHRSZXNvdXJjZU1hcERlY29kZXIo
c2NyaXB0UmVzb3VyY2VNYXBEYXRhU3Bhbi5kYXRhKCksIHNjcmlwdFJlc291cmNlTWFwRGF0YVNw
YW4uc2l6ZSgpKTsKKyAgICAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgc2NyaXB0
UmVzb3VyY2VNYXBEZWNvZGVyKHNjcmlwdFJlc291cmNlTWFwRGF0YVNwYW4pOwogICAgICAgICAg
ICAgc3RkOjpvcHRpb25hbDxIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVzPj4g
c2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0czsKICAgICAgICAgICAgIHNjcmlwdFJlc291
cmNlTWFwRGVjb2RlciA+PiBzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRzOwogICAgICAg
ICAgICAgaWYgKCFzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRzKSB7CkBAIC01NDMsNyAr
NTQzLDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKICAg
ICAgICAgYXV0byBjZXJ0aWZpY2F0ZUluZm9EYXRhU3BhbiA9IHNxbC0+Y29sdW1uQmxvYkFzU3Bh
bigxMSk7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0
ZUluZm87CiAKLSAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBjZXJ0aWZpY2F0ZUlu
Zm9EZWNvZGVyKGNlcnRpZmljYXRlSW5mb0RhdGFTcGFuLmRhdGEoKSwgY2VydGlmaWNhdGVJbmZv
RGF0YVNwYW4uc2l6ZSgpKTsKKyAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBjZXJ0
aWZpY2F0ZUluZm9EZWNvZGVyKGNlcnRpZmljYXRlSW5mb0RhdGFTcGFuKTsKICAgICAgICAgY2Vy
dGlmaWNhdGVJbmZvRGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIGlmICghY2Vy
dGlmaWNhdGVJbmZvKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29y
a2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNv
ZGUgY2VydGlmaWNhdGVJbmZvIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggYjJlOTE3NWE3MGU2
NDA3NTE4NjZjNGY0YWRlZWI5MWI3MjM1ZTdiZS4uODlhODc1ZjhhZmMwZDYyMzU1YWM2MjI5YTY0
YzFjYTQzZDE4NTY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtODYsOSArODYsOSBAQCBTY3Jp
cHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpzdG9yZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5JiByZWdpc3RyYQogICAgIGF1dG8gc2NyaXB0UGF0aCA9IHRoaXMtPnNjcmlwdFBh
dGgocmVnaXN0cmF0aW9uS2V5LCBzY3JpcHRVUkwpOwogICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxE
aXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKHNjcmlwdFBhdGgpKTsKIAotICAgIGF1
dG8gaXRlcmF0ZU92ZXJCdWZmZXJBbmRXcml0ZURhdGEgPSBbJl0oY29uc3QgRnVuY3Rpb248Ym9v
bChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIHdyaXRlRGF0YSkgewotICAgICAgICBmb3IgKGF1
dG8gaXQgPSBzY3JpcHQuYnVmZmVyKCktPmJlZ2luKCk7IGl0ICE9IHNjcmlwdC5idWZmZXIoKS0+
ZW5kKCk7ICsraXQpCi0gICAgICAgICAgICB3cml0ZURhdGEoaXQtPnNlZ21lbnQtPmRhdGEoKSwg
aXQtPnNlZ21lbnQtPnNpemUoKSk7CisgICAgYXV0byBpdGVyYXRlT3ZlckJ1ZmZlckFuZFdyaXRl
RGF0YSA9IFsmXShjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgd3Jp
dGVEYXRhKSB7CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiAqc2NyaXB0LmJ1ZmZlcigpKQor
ICAgICAgICAgICAgd3JpdGVEYXRhKHsgZW50cnkuc2VnbWVudC0+ZGF0YSgpLCBlbnRyeS5zZWdt
ZW50LT5zaXplKCkgfSk7CiAgICAgfTsKIAogICAgIGlmICghc2hvdWxkVXNlRmlsZU1hcHBpbmco
c2NyaXB0LmJ1ZmZlcigpLT5zaXplKCkpKSB7CkBAIC05Nyw4ICs5Nyw4IEBAIFNjcmlwdEJ1ZmZl
ciBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmIHJlZ2lzdHJhCiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2Vy
LCAiU1dTY3JpcHRTdG9yYWdlOjpzdG9yZTogRmFpbHVyZSB0byBzdG9yZSAlcywgRmlsZVN5c3Rl
bTo6b3BlbkZpbGUoKSBmYWlsZWQiLCBzY3JpcHRQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQotICAgICAgICBpdGVyYXRlT3ZlckJ1ZmZlckFu
ZFdyaXRlRGF0YShbJl0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgICAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YSwgc2l6ZSk7CisgICAg
ICAgIGl0ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVEYXRhKFsmXShTcGFuPGNvbnN0IHVpbnQ4X3Q+
IHNwYW4pIHsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgc3Bh
bi5kYXRhKCksIHNwYW4uc2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9KTsKICAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwCmluZGV4IDFjMDg2Y2EwZDA2ZTg5MTI0NDE2MjI2MTBlMDdkZTkyOGU4
MjliN2QuLmE2YWU5Njk5NTZlNDNmOTk5YjZhODgzNzQ3NGRiOTZmMjM0YTdiNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC02MzAsNyArNjMwLDcgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gZGVjb2RlRE9NQ2FjaGVSZWNv
cmQoV1RGOjoKIAogc3RkOjpvcHRpb25hbDxDYWNoZTo6RGVjb2RlZFJlY29yZD4gQ2FjaGU6OmRl
Y29kZVJlY29yZEhlYWRlcihjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiB7Ci0gICAg
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2UuaGVhZGVyLmRhdGEoKSwg
c3RvcmFnZS5oZWFkZXIuc2l6ZSgpKTsKKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRl
Y29kZXIoc3RvcmFnZS5oZWFkZXIuc3BhbigpKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBpbnNlcnRpb25UaW1lOwogICAgIGRlY29kZXIgPj4gaW5zZXJ0aW9uVGltZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGVzLmNwcAppbmRleCAyOTRkMGJkNmRlYWNmZmZhZTg0MzJkOGRhOTk4ZGUw
Mjk3ZDI4ZGMyLi42MWY1M2RhZmJhNjFmNjBjOGY4Y2EyNTNjYTEyODM5NWMwYjE3YmFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBDYWNo
ZXM6OnN0b3JlT3JpZ2luKENvbXBsZXRpb25DYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQog
CiBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gQ2FjaGVzOjpyZWFkT3JpZ2lu
KGNvbnN0IERhdGEmIGRhdGEpCiB7Ci0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNv
ZGVyKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVj
b2RlciBkZWNvZGVyKGRhdGEuc3BhbigpKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BPcmlnaW47CiAgICAgZGVjb2RlciA+PiB0b3BPcmlnaW47
CkBAIC00MDksNyArNDA5LDcgQEAgc3RhdGljIGlubGluZSBEYXRhIGVuY29kZUNhY2hlTmFtZXMo
Y29uc3QgVmVjdG9yPENhY2hlPiYgY2FjaGVzKQogCiBzdGF0aWMgaW5saW5lIEV4cGVjdGVkPFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiwgRXJyb3I+IGRlY29kZUNhY2hlc05hbWVz
KGNvbnN0IERhdGEmIGRhdGEpCiB7Ci0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNv
ZGVyKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVj
b2RlciBkZWNvZGVyKGRhdGEuc3BhbigpKTsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBj
b3VudDsKICAgICBkZWNvZGVyID4+IGNvdW50OwogICAgIGlmICghY291bnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNw
cAppbmRleCA0NmY4MmU0YmY5MWZjY2Q5NWFkMThkNzRjNmIzZjFiYTAxZDYzNDgzLi5hZWUxMDJi
ZWM1MWJiMzQ2OTAyM2ZhNzc5NWE4MjI3NDgxMzJmMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKQEAgLTQy
LDcgKzQyLDkgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBEYXRhIERhdGE6Om1hcFRvRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0CiB7CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZTsKLSAgICBhdXRvIGFwcGx5RGF0YSA9IFsmXShjb25zdCBGdW5jdGlv
bjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYgYXBwbGllcikgeyBhcHBseShhcHBsaWVy
KTsgfTsKKyAgICBhdXRvIGFwcGx5RGF0YSA9IFsmXShjb25zdCBGdW5jdGlvbjxib29sKFNwYW48
Y29uc3QgdWludDhfdD4pPiYgYXBwbGllcikgeworICAgICAgICBhcHBseShhcHBsaWVyKTsKKyAg
ICB9OwogICAgIGF1dG8gbWFwcGVkRmlsZSA9IEZpbGVTeXN0ZW06Om1hcFRvRmlsZShwYXRoLCBz
aXplKCksIFdURk1vdmUoYXBwbHlEYXRhKSwgJmhhbmRsZSk7CiAgICAgaWYgKCFtYXBwZWRGaWxl
KQogICAgICAgICByZXR1cm4geyB9OwpAQCAtODcsOCArODksOCBAQCBTSEExOjpEaWdlc3QgY29t
cHV0ZVNIQTEoY29uc3QgRGF0YSYgZGF0YSwgY29uc3QgU2FsdCYgc2FsdCkKIHsKICAgICBTSEEx
IHNoYTE7CiAgICAgc2hhMS5hZGRCeXRlcyhzYWx0LmRhdGEoKSwgc2FsdC5zaXplKCkpOwotICAg
IGRhdGEuYXBwbHkoWyZzaGExXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgewot
ICAgICAgICBzaGExLmFkZEJ5dGVzKGRhdGEsIHNpemUpOworICAgIGRhdGEuYXBwbHkoWyZzaGEx
XShTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pIHsKKyAgICAgICAgc2hhMS5hZGRCeXRlcyhzcGFu
LmRhdGEoKSwgc3Bhbi5zaXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZURhdGEuaAppbmRleCA2NzUyNmNhZDk2MDcxNGE4OGMxYzA5M2U0YTljMzg4MTQ2YjgwZTkyLi45
YzQ0YTk4YjI4Njg3MmU4ODI4NTk3NTE3MGEyMDYxNTAxY2ZlMWNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaApAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9TSEExLmg+CisjaW5jbHVkZSA8
d3RmL1NwYW4uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNzQsMTIgKzc1LDEzIEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKICAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIFNwYW48Y29uc3QgdWludDhfdD4gc3BhbigpIGNv
bnN0IHsgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsgfQogICAgIGJvb2wgaXNNYXAoKSBjb25z
dCB7IHJldHVybiBtX2lzTWFwOyB9CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gdHJ5Q3JlYXRl
U2hhcmVkTWVtb3J5KCkgY29uc3Q7CiAKICAgICBEYXRhIHN1YnJhbmdlKHNpemVfdCBvZmZzZXQs
IHNpemVfdCkgY29uc3Q7CiAKLSAgICBib29sIGFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2wgKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYpIGNvbnN0OworICAgIGJvb2wgYXBwbHkoY29uc3QgRnVu
Y3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mKSBjb25zdDsKIAogICAgIERhdGEgbWFw
VG9GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0K
aW5kZXggNWJmZmY0MWFlNjkyNDA3OWIzOGNiMGRiZDQ1NmFjMTRlNzAxNDg2YS4uM2QzOGFjNWRm
MWYyNDhlODI3OGE0OTJkNjJhYTQxMGU4NTg0ZmQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0K
QEAgLTY5LDEyICs2OSwxMiBAQCBib29sIERhdGE6OmlzTnVsbCgpIGNvbnN0CiAgICAgcmV0dXJu
ICFtX2Rpc3BhdGNoRGF0YTsKIH0KIAotYm9vbCBEYXRhOjphcHBseShjb25zdCBGdW5jdGlvbjxi
b29sIChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIGFwcGxpZXIpIGNvbnN0Citib29sIERhdGE6
OmFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBhcHBsaWVy
KSBjb25zdAogewogICAgIGlmICghbV9zaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cmV0dXJuIGRpc3BhdGNoX2RhdGFfYXBwbHkobV9kaXNwYXRjaERhdGEuZ2V0KCksIFsmYXBwbGll
cl0oZGlzcGF0Y2hfZGF0YV90LCBzaXplX3QsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXpl
KSB7Ci0gICAgICAgIHJldHVybiBhcHBsaWVyKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhKSwgc2l6ZSk7CisgICAgICAgIHJldHVybiBhcHBsaWVyKHsgc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBzaXplIH0pOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwu
Y3BwCmluZGV4IDViMDhiMDRkOWVlNjJmMjdhYmZjZTVmYzViMmNlMTQ3ZGNmOGY1NTUuLmVlMDky
ZmMzZjNlMTEzN2M5MWMxNjIxNmFiMDI5M2UyZjk1NTQ0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwu
Y3BwCkBAIC03MCwxMiArNzAsMTIgQEAgYm9vbCBEYXRhOjppc051bGwoKSBjb25zdAogICAgIHJl
dHVybiAhbV9idWZmZXI7CiB9CiAKLWJvb2wgRGF0YTo6YXBwbHkoY29uc3QgRnVuY3Rpb248Ym9v
bChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIGFwcGxpZXIpIGNvbnN0Citib29sIERhdGE6OmFw
cGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBhcHBsaWVyKSBj
b25zdAogewogICAgIGlmIChpc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHJldHVybiBhcHBsaWVyKGRhdGEoKSwgc2l6ZSgpKTsKKyAgICByZXR1cm4gYXBwbGllcih7IGRh
dGEoKSwgc2l6ZSgpIH0pOwogfQogCiBEYXRhIERhdGE6OnN1YnJhbmdlKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBzaXplKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFHTGliLmNwcAppbmRleCBhZGMyYWZlZDEz
MDgxMjE4ZGNiNzliZmRkZTYxOWYyNjRmNmIwZGNmLi45YjExMWRmNGY1NWVmODc4MzU1ZGUxOTRi
OTE2MTM5OTY1MzZmYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZURhdGFHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFHTGliLmNwcApAQCAtNzMsMTQgKzczLDE0
IEBAIGJvb2wgRGF0YTo6aXNOdWxsKCkgY29uc3QKICAgICByZXR1cm4gIW1fYnVmZmVyOwogfQog
Ci1ib29sIERhdGE6OmFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNp
emVfdCk+JiBhcHBsaWVyKSBjb25zdAorYm9vbCBEYXRhOjphcHBseShjb25zdCBGdW5jdGlvbjxi
b29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgYXBwbGllcikgY29uc3QKIHsKICAgICBpZiAoIW1f
c2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZ3NpemUgbGVuZ3RoOwogICAgIGNv
bnN0IGF1dG8qIGRhdGEgPSBnX2J5dGVzX2dldF9kYXRhKG1fYnVmZmVyLmdldCgpLCAmbGVuZ3Ro
KTsKLSAgICByZXR1cm4gYXBwbGllcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gYXBwbGllcih7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGggfSk7CiB9CiAKIERhdGEgRGF0YTo6c3VicmFuZ2Uo
c2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IDhh
NTlhMzU2NmQ0NmVlMzMyNWU1NzFhOGFlN2RkOTcwOWM0MTRhMmQuLjJjZGE0ZmY2OGIxOTNlNGQ5
Y2VkNjNkMmZjYzEyOWRhMjcwYWQ5ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0xMTEsNyArMTEx
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChj
b25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UKIHsKICAgICBhdXRvIGVudHJ5ID0gbWFrZVVu
aXF1ZTxFbnRyeT4oc3RvcmFnZUVudHJ5KTsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXIgZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLmRhdGEoKSwgc3RvcmFnZUVudHJ5LmhlYWRl
ci5zaXplKCkpOworICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihzdG9yYWdl
RW50cnkuaGVhZGVyLnNwYW4oKSk7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZTsKICAgICBpZiAoIVdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmRlY29kZShkZWNvZGVy
LCByZXNwb25zZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAK
aW5kZXggNDZlNTk1MjI5Y2Q4ZmE0YWM1Y2UwNTY4NGE3ZjY1YjMwNjAxYTM0Yi4uZWY3NmJjZGU2
NGUyZDY1ZTM0NjNmMzczMmU1NDA4NTZiMWRhNTMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBA
IC00NTQsOCArNDU0LDggQEAgc3RydWN0IFJlY29yZE1ldGFEYXRhIHsKIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVSZWNvcmRNZXRhRGF0YShSZWNvcmRNZXRhRGF0YSYgbWV0
YURhdGEsIGNvbnN0IERhdGEmIGZpbGVEYXRhKQogewogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNl
OwotICAgIGZpbGVEYXRhLmFwcGx5KFsmbWV0YURhdGEsICZzdWNjZXNzXShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgewotICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
IGRlY29kZXIoZGF0YSwgc2l6ZSk7CisgICAgZmlsZURhdGEuYXBwbHkoWyZtZXRhRGF0YSwgJnN1
Y2Nlc3NdKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikgeworICAgICAgICBXVEY6OlBlcnNpc3Rl
bmNlOjpEZWNvZGVyIGRlY29kZXIoc3Bhbik7CiAgICAgICAgIAogICAgICAgICBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiBjYWNoZVN0b3JhZ2VWZXJzaW9uOwogICAgICAgICBkZWNvZGVyID4+IGNh
Y2hlU3RvcmFnZVZlcnNpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3Bw
CmluZGV4IDRiNWUyZDg3YjdjZDQ2NmQ3NTdmMDE3YTk1ODVjMWQxNzI4YmRkZTIuLmM4MzNlNGE5
MWI0OGRlOGI1MDU1MGU4YTk2MmZmOWJkYzhkNzBkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Vi
cmVzb3VyY2VzRW50cnkuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFN1
YnJlc291cmNlc0VudHJ5PiBTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChj
b25zdAogewogICAgIGF1dG8gZW50cnkgPSBtYWtlVW5pcXVlPFN1YnJlc291cmNlc0VudHJ5Pihz
dG9yYWdlRW50cnkpOwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0
b3JhZ2VFbnRyeS5oZWFkZXIuZGF0YSgpLCBzdG9yYWdlRW50cnkuaGVhZGVyLnNpemUoKSk7Cisg
ICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFkZXIu
c3BhbigpKTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdWJyZXNvdXJjZUluZm8+PiBzdWJy
ZXNvdXJjZXM7CiAgICAgZGVjb2RlciA+PiBzdWJyZXNvdXJjZXM7CiAgICAgaWYgKCFzdWJyZXNv
dXJjZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAyMDYwNzYwMzRiNTVjZDY4OTE3MTBiYWZkOTM2MWFk
YTQwM2NlMWVmLi5kYzhlNDAzOTJiYTllZTUwMWVlZGYyODVkZmE3ZjRmNmY5YzQ5YjVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAKQEAgLTEzNSwxNCArMTM1LDE0IEBAIHN0YXRpYyBXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6RGF0YSBlbmNvZGVDb250ZW50UnVsZUxpc3RNZXRhRGF0YShjb25zdCBDb250ZW50UnVs
CiAgICAgcmV0dXJuIFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhKGVuY29kZXIuYnVmZmVyKCks
IGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBn
ZXREYXRhKGNvbnN0IFQmLCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpPiYpOwotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNpemVf
dCk+JiBmdW5jdGlvbikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgZ2V0RGF0YShjb25zdCBU
JiwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mKTsKK3RlbXBsYXRl
PD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBj
b25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAg
ICAgZGF0YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3Qg
dWludDhfdCosIHNpemVfdCk+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFu
PGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQogewotICAgIGZ1bmN0aW9uKGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSk7CisgICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkg
fSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0xNTAsMTMgKzE1MCwxMyBAQCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxDb250ZW50UnVsZUxpc3RNZXRhRGF0YT4gZGVjb2RlQ29udGVudFJ1
bGVMaXN0TWV0YURhdGEoY29ucwogewogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgIENv
bnRlbnRSdWxlTGlzdE1ldGFEYXRhIG1ldGFEYXRhOwotICAgIGdldERhdGEoZmlsZURhdGEsIFsm
bWV0YURhdGEsICZzdWNjZXNzLCAmZmlsZURhdGFdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKSB7CisgICAgZ2V0RGF0YShmaWxlRGF0YSwgWyZtZXRhRGF0YSwgJnN1Y2Nlc3MsICZm
aWxlRGF0YV0oU3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKSB7CiAgICAgICAgIC8vIFRoZSBmaWxl
IGRhdGEgc2hvdWxkIGJlIG1hcHBlZCBpbnRvIG9uZSBjb250aW51b3VzIG1lbW9yeSBzZWdtZW50
IHNvIHRoZSBzaXplCiAgICAgICAgIC8vIHBhc3NlZCB0byB0aGUgYXBwbGllciBzaG91bGQgYWx3
YXlzIGVxdWFsIHRoZSBkYXRhIHNpemUuCi0gICAgICAgIGlmIChzaXplICE9IGZpbGVEYXRhLnNp
emUoKSkKKyAgICAgICAgaWYgKHNwYW4uc2l6ZSgpICE9IGZpbGVEYXRhLnNpemUoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
IGRlY29kZXIoZGF0YSwgc2l6ZSk7CisgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIg
ZGVjb2RlcihzcGFuKTsKICAgICAgICAgCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+
IHZlcnNpb247CiAgICAgICAgIGRlY29kZXIgPj4gdmVyc2lvbjsKQEAgLTIyOCw4ICsyMjgsOCBA
QCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXBwZWREYXRhPiBvcGVuQW5kTWFwQ29udGVudFJ1bGVM
aXN0KGNvbnN0IFdURjo6U3RyaW5nJiBwYQogc3RhdGljIGJvb2wgd3JpdGVEYXRhVG9GaWxlKGNv
bnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBmaWxlRGF0YSwgUGxhdGZvcm1GaWxlSGFu
ZGxlIGZkKQogewogICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgZmlsZURhdGEuYXBwbHko
W2ZkLCAmc3VjY2Vzc10oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgICAg
ICAgaWYgKHdyaXRlVG9GaWxlKGZkLCBkYXRhLCBzaXplKSA9PSAtMSkgeworICAgIGZpbGVEYXRh
LmFwcGx5KFtmZCwgJnN1Y2Nlc3NdKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikgeworICAgICAg
ICBpZiAod3JpdGVUb0ZpbGUoZmQsIHNwYW4uZGF0YSgpLCBzcGFuLnNpemUoKSkgPT0gLTEpIHsK
ICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432835</attachid>
            <date>2021-07-02 17:37:59 -0700</date>
            <delta_ts>2021-07-02 23:17:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227606-20210702173758.patch</filename>
            <type>text/plain</type>
            <size>37141</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzk1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDIxLTA3LTAyICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIG1vcmUgU3BhbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NjA2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IGlzIGFsd2F5cyBi
ZXR0ZXIsIHJpZ2h0PworCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAo
V1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFwVG9GaWxlKToKKyAgICAgICAgKiB3dGYvRmlsZVN5c3Rl
bS5oOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcDoKKyAg
ICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkNvZGVyPENTdHJpbmc+OjplbmNvZGUpOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8Q1N0cmluZz46OmRlY29kZSk6CisgICAgICAgIChX
VEY6OlBlcnNpc3RlbmNlOjpDb2RlcjxTdHJpbmc+OjplbmNvZGUpOgorICAgICAgICAoV1RGOjpQ
ZXJzaXN0ZW5jZTo6ZGVjb2RlU3RyaW5nVGV4dCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNl
OjpDb2RlcjxTSEExOjpEaWdlc3Q+OjplbmNvZGUpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6Q29kZXI8U0hBMTo6RGlnZXN0Pjo6ZGVjb2RlKToKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudENvZGVycy5oOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RGVjb2Rlci5jcHA6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpEZWNv
ZGVyKToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW4gY29uc3QpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
cjo6YnVmZmVyUG9pbnRlckZvckRpcmVjdFJlYWQpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXI6OmRlY29kZU51bWJlcik6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyOjp2ZXJpZnlDaGVja3N1bSk6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnREZWNvZGVyLmg6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjps
ZW5ndGggY29uc3QpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6Y3VycmVu
dE9mZnNldCBjb25zdCk6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNv
ZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OnVwZGF0ZUNoZWNr
c3VtRm9yRGF0YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNvZGVG
aXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5j
b2RlQ2hlY2tzdW0pOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rl
ci5oOgorCiAyMDIxLTA3LTAyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIFttYWNPU10gT25seSB1c2UgV2ViR0wgb24gTWV0YWwgYnkgZGVmYXVsdCBvbiBz
YWZlIHZlcnNpb25zIG9mIG1hY09TCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAkocmV2aXNpb24g
Mjc5NTI1KQorKysgU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzMiw3ICs0MzIsNyBAQCBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShjb25z
dCBTCiB9CiAjZW5kaWYKIAotTWFwcGVkRmlsZURhdGEgbWFwVG9GaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgc2l6ZV90IGJ5dGVzU2l6ZSwgRnVuY3Rpb248dm9pZChjb25zdCBGdW5jdGlvbjxib29s
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYpPiYmIGFwcGx5LCBQbGF0Zm9ybUZpbGVIYW5kbGUq
IG91dHB1dEhhbmRsZSkKK01hcHBlZEZpbGVEYXRhIG1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgsIHNpemVfdCBieXRlc1NpemUsIEZ1bmN0aW9uPHZvaWQoY29uc3QgRnVuY3Rpb248Ym9vbChT
cGFuPGNvbnN0IHVpbnQ4X3Q+KT4mKT4mJiBhcHBseSwgUGxhdGZvcm1GaWxlSGFuZGxlKiBvdXRw
dXRIYW5kbGUpCiB7CiAgICAgY29uc3RleHByIGJvb2wgZmFpbElmRmlsZUV4aXN0cyA9IHRydWU7
CiAgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVt
OjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSwgRmlsZVN5c3RlbTo6RmlsZUFjY2Vzc1Blcm1pc3Np
b246OlVzZXIsIGZhaWxJZkZpbGVFeGlzdHMpOwpAQCAtNDUyLDkgKzQ1Miw5IEBAIE1hcHBlZEZp
bGVEYXRhIG1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHAKICAgICB2b2lkKiBtYXAgPSBjb25zdF9j
YXN0PHZvaWQqPihtYXBwZWRGaWxlLmRhdGEoKSk7CiAgICAgdWludDhfdCogbWFwRGF0YSA9IHN0
YXRpY19jYXN0PHVpbnQ4X3QqPihtYXApOwogCi0gICAgYXBwbHkoWyZtYXBEYXRhXShjb25zdCB1
aW50OF90KiBjaHVuaywgc2l6ZV90IGNodW5rU2l6ZSkgewotICAgICAgICBtZW1jcHkobWFwRGF0
YSwgY2h1bmssIGNodW5rU2l6ZSk7Ci0gICAgICAgIG1hcERhdGEgKz0gY2h1bmtTaXplOworICAg
IGFwcGx5KFsmbWFwRGF0YV0oU3Bhbjxjb25zdCB1aW50OF90PiBjaHVuaykgeworICAgICAgICBt
ZW1jcHkobWFwRGF0YSwgY2h1bmsuZGF0YSgpLCBjaHVuay5zaXplKCkpOworICAgICAgICBtYXBE
YXRhICs9IGNodW5rLnNpemUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSk7CiAKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmgJKHJldmlzaW9uIDI3OTUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHV0
aWxpdHk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL1NwYW4uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC0yNzMsNyArMjc0LDcgQEAgaW5saW5lIE1hcHBlZEZpbGVEYXRhJiBNYXBwZWRGaWxlRGF0YTo6
bwogCiAvLyBUaGlzIGNyZWF0ZXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1hcHMgaXQsIHdyaXRl
IHRoZSBwcm92aWRlZCBkYXRhIHRvIGl0IGFuZCByZXR1cm5zIHRoZSBtYXBwZWQgZmlsZS4KIC8v
IFRoaXMgZnVuY3Rpb24gZmFpbHMgaWYgdGhlcmUgaXMgYWxyZWFkeSBhIGZpbGUgYXQgdGhlIGRl
c3RpbmF0aW9uIHBhdGguCi1XVEZfRVhQT1JUX1BSSVZBVEUgTWFwcGVkRmlsZURhdGEgbWFwVG9G
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgc2l6ZV90IGJ5dGVzU2l6ZSwgRnVuY3Rpb248dm9pZChj
b25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYpPiYmIGFwcGx5LCBQ
bGF0Zm9ybUZpbGVIYW5kbGUqID0gbnVsbHB0cik7CitXVEZfRVhQT1JUX1BSSVZBVEUgTWFwcGVk
RmlsZURhdGEgbWFwVG9GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgc2l6ZV90IGJ5dGVzU2l6ZSwg
RnVuY3Rpb248dm9pZChjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYp
PiYmIGFwcGx5LCBQbGF0Zm9ybUZpbGVIYW5kbGUqID0gbnVsbHB0cik7CiAKIH0gLy8gbmFtZXNw
YWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwCShyZXZpc2lvbiAyNzk1
MjUpCisrKyBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIENvZGVyPENTdHJpbmc+OjplbmNv
ZGUoRW5jb2RlciYgZW5jCiAKICAgICB1aW50MzJfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7
CiAgICAgZW5jb2RlciA8PCBsZW5ndGg7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEoc3RyaW5nLmRhdGFBc1VJbnQ4UHRyKCksIGxlbmd0aCk7CisgICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEoeyBzdHJpbmcuZGF0YUFzVUludDhQdHIoKSwgbGVuZ3RoIH0pOwogfQog
CiBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IENvZGVyPENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKQEAgLTc4LDcgKzc4LDcgQEAgc3RkOjpvcHRpb25hbDxDU3RyaW5nPiBDb2RlcjxD
U3RyaW5nPjo6ZAogCiAgICAgY2hhciogYnVmZmVyOwogICAgIENTdHJpbmcgc3RyaW5nID0gQ1N0
cmluZzo6bmV3VW5pbml0aWFsaXplZCgqbGVuZ3RoLCBidWZmZXIpOwotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVy
KSwgKmxlbmd0aCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksICpsZW5ndGggfSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc3RyaW5nOwpAQCAtOTgsOSArOTgsOSBA
QCB2b2lkIENvZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvCiAgICAgZW5jb2RlciA8
PCBsZW5ndGggPDwgaXM4Qml0OwogCiAgICAgaWYgKGlzOEJpdCkKLSAgICAgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CisgICAg
ICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHsgc3RyaW5nLmNoYXJhY3RlcnM4KCks
IGxlbmd0aCB9KTsKICAgICBlbHNlCi0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzMTYo
KSksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVk
TGVuZ3RoRGF0YSh7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFy
YWN0ZXJzMTYoKSksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikgfSk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgpAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBpbmxpbmUg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGRlY28KIAogICAgIENoYXJhY3RlclR5cGUqIGJ1ZmZlcjsK
ICAgICBTdHJpbmcgc3RyaW5nID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwg
YnVmZmVyKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksIGxlbmd0aCAqIHNpemVvZihDaGFyYWN0ZXJUeXBl
KSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksIGxlbmd0aCAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSB9
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4gc3RyaW5n
OwpAQCAtMTQyLDEzICsxNDIsMTMgQEAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IENvZGVyPFN0cmlu
Zz46OmRlYwogCiB2b2lkIENvZGVyPFNIQTE6OkRpZ2VzdD46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBTSEExOjpEaWdlc3QmIGRpZ2VzdCkKIHsKLSAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShkaWdlc3QuZGF0YSgpLCBzaXplb2YoZGlnZXN0KSk7CisgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEoeyBkaWdlc3QuZGF0YSgpLCBzaXplb2YoZGlnZXN0KSB9
KTsKIH0KIAogc3RkOjpvcHRpb25hbDxTSEExOjpEaWdlc3Q+IENvZGVyPFNIQTE6OkRpZ2VzdD46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFNIQTE6OkRpZ2VzdCB0bXA7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh0bXAuZGF0YSgpLCBzaXplb2YodG1w
KSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHRtcC5kYXRhKCks
IHNpemVvZih0bXApIH0pKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biB0bXA7CiB9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29k
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dENvZGVycy5oCShyZXZpc2lvbiAyNzk1MjUpCisrKyBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw3ICsxNzMsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpCiAgICAgICAgIFZlY3RvcjxU
LCBpbmxpbmVDYXBhY2l0eT4gdGVtcDsKICAgICAgICAgdGVtcC5ncm93KHNpemUpOwogCi0gICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4odGVtcC5kYXRhKCkpLCBzaXplICogc2l6ZW9mKFQpKSkKKyAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHRlbXAuZGF0YSgpLCBzaXplICogc2l6ZW9m
KFQpIH0pKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1
cm4gdGVtcDsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RGVjb2Rlci5jcHAJKHJldmlzaW9uIDI3OTUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL3BlcnNp
c3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMx
LDkgQEAKIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKIAotRGVjb2Rl
cjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKQotICAg
IDogbV9idWZmZXIoYnVmZmVyKQotICAgICwgbV9idWZmZXJQb3NpdGlvbihidWZmZXIpCi0gICAg
LCBtX2J1ZmZlckVuZChidWZmZXIgKyBidWZmZXJTaXplKQorRGVjb2Rlcjo6RGVjb2RlcihTcGFu
PGNvbnN0IHVpbnQ4X3Q+IHNwYW4pCisgICAgOiBtX3NwYW4oc3BhbikKKyAgICAsIG1faXRlcmF0
b3Ioc3Bhbi5iZWdpbigpKQogewogfQogCkBAIC00NCw3ICs0Myw3IEBAIERlY29kZXI6On5EZWNv
ZGVyKCkKIAogYm9vbCBEZWNvZGVyOjpidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVf
dCBzaXplKSBjb25zdAogewotICAgIHJldHVybiBzaXplIDw9IHN0YXRpY19jYXN0PHNpemVfdD4o
bV9idWZmZXJFbmQgLSBtX2J1ZmZlclBvc2l0aW9uKTsKKyAgICByZXR1cm4gc2l6ZSA8PSBzdGF0
aWNfY2FzdDxzaXplX3Q+KG1fc3Bhbi5lbmQoKSAtIG1faXRlcmF0b3IpOwogfQogCiBjb25zdCB1
aW50OF90KiBEZWNvZGVyOjpidWZmZXJQb2ludGVyRm9yRGlyZWN0UmVhZChzaXplX3Qgc2l6ZSkK
QEAgLTUyLDI2ICs1MSwyNyBAQCBjb25zdCB1aW50OF90KiBEZWNvZGVyOjpidWZmZXJQb2ludGVy
Rm9yCiAgICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemUpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZGF0YSA9IG1fYnVmZmVyUG9zaXRpb247Ci0g
ICAgbV9idWZmZXJQb3NpdGlvbiArPSBzaXplOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2l0ZXJh
dG9yOworICAgIG1faXRlcmF0b3IgKz0gc2l6ZTsKIAotICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNr
c3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOwotICAgIHJldHVybiBkYXRhOworICAgIEVu
Y29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIHsgaXRlcmF0b3IsIHNpemUgfSk7
CisgICAgcmV0dXJuIGl0ZXJhdG9yOwogfQogCi1ib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVu
Z3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jvb2wgRGVjb2Rlcjo6ZGVjb2Rl
Rml4ZWRMZW5ndGhEYXRhKFNwYW48dWludDhfdD4gc3BhbikKIHsKLSAgICBhdXRvIGJ1ZmZlciA9
IGJ1ZmZlclBvaW50ZXJGb3JEaXJlY3RSZWFkKHNpemUpOworICAgIGF1dG8gYnVmZmVyID0gYnVm
ZmVyUG9pbnRlckZvckRpcmVjdFJlYWQoc3Bhbi5zaXplKCkpOwogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbWVtY3B5KGRhdGEsIGJ1ZmZlciwgc2l6ZSk7Cisg
ICAgbWVtY3B5KHNwYW4uZGF0YSgpLCBidWZmZXIsIHNwYW4uc2l6ZSgpKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogYm9vbCBEZWNvZGVyOjpyZXdpbmQoc2l6ZV90IHNpemUpCiB7Ci0gICAgaWYg
KG1fYnVmZmVyUG9zaXRpb24gLSBzaXplID49IG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVy
UG9zaXRpb24gLT0gc2l6ZTsKKyAgICAvLyBGSVhNRTogY2hlY2sgZm9yIHVuZGVyZmxvdy4KKyAg
ICBpZiAobV9pdGVyYXRvciAtIHNpemUgPj0gbV9zcGFuLmJlZ2luKCkpIHsKKyAgICAgICAgbV9p
dGVyYXRvciAtPSBzaXplOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtODQsOCArODQsOCBAQCBEZWNvZGVyJiBEZWNvZGVyOjpkZWNvZGVOdW1iZXIo
c3RkOjpvcHRpCiAgICAgICAgIHJldHVybiAqdGhpczsKIAogICAgIFQgdmFsdWU7Ci0gICAgbWVt
Y3B5KCZ2YWx1ZSwgbV9idWZmZXJQb3NpdGlvbiwgc2l6ZW9mKFQpKTsKLSAgICBtX2J1ZmZlclBv
c2l0aW9uICs9IHNpemVvZihUKTsKKyAgICBtZW1jcHkoJnZhbHVlLCBtX2l0ZXJhdG9yLCBzaXpl
b2YoVCkpOworICAgIG1faXRlcmF0b3IgKz0gc2l6ZW9mKFQpOwogCiAgICAgRW5jb2Rlcjo6dXBk
YXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7CiAgICAgb3B0aW9uYWwgPSB2YWx1
ZTsKQEAgLTE0OCwxMSArMTQ4LDExIEBAIGJvb2wgRGVjb2Rlcjo6dmVyaWZ5Q2hlY2tzdW0oKQog
ICAgIG1fc2hhMS5jb21wdXRlSGFzaChjb21wdXRlZEhhc2gpOwogCiAgICAgU0hBMTo6RGlnZXN0
IHNhdmVkSGFzaDsKLSAgICBpZiAoIWRlY29kZUZpeGVkTGVuZ3RoRGF0YShzYXZlZEhhc2guZGF0
YSgpLCBzaXplb2Yoc2F2ZWRIYXNoKSkpCisgICAgaWYgKCFkZWNvZGVGaXhlZExlbmd0aERhdGEo
eyBzYXZlZEhhc2guZGF0YSgpLCBzaXplb2Yoc2F2ZWRIYXNoKSB9KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgcmV0dXJuIGNvbXB1dGVkSGFzaCA9PSBzYXZlZEhhc2g7CiB9CiAKLX0K
LX0KK30gLy8gbmFtZXNwYWNlIFBlcnNpc3RlbmNlCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAkocmV2
aXNpb24gMjc5NTI1KQorKysgU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERl
Y29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8d3Rm
L0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgorI2luY2x1ZGUgPHd0Zi9TcGFu
Lmg+CiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKQEAgLTM1LDE3ICszNiwxNyBAQCBuYW1lc3BhY2UgUGVyc2lzdGVuY2Ugewog
Y2xhc3MgRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXpl
X3QgYnVmZmVyU2l6ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXIoU3Bhbjxjb25z
dCB1aW50OF90Pik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5EZWNvZGVyKCk7CiAKLSAgICBz
aXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJFbmQgLSBtX2J1ZmZlcjsgfQot
ICAgIHNpemVfdCBjdXJyZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJQb3NpdGlv
biAtIG1fYnVmZmVyOyB9CisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Bh
bi5zaXplKCk7IH0KKyAgICBzaXplX3QgY3VycmVudE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXRlcmF0b3IgLSBtX3NwYW4uYmVnaW4oKTsgfQogICAgIAogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCByZXdpbmQoc2l6ZV90KTsKIAogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCB2ZXJpZnlDaGVja3N1bSgpOwogCi0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZpeGVk
TGVuZ3RoRGF0YSh1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKFNwYW48dWludDhfdD4p
OwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRp
b25hbDxib29sPiYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+
KHN0ZDo6b3B0aW9uYWw8dWludDhfdD4mKTsKQEAgLTk0LDkgKzk1LDggQEAgcHJpdmF0ZToKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgYnVmZmVySXNMYXJn
ZUVub3VnaFRvQ29udGFpbihzaXplX3QpIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5
cGU+IERlY29kZXImIGRlY29kZU51bWJlcihzdGQ6Om9wdGlvbmFsPFR5cGU+Jik7CiAKLSAgICBj
b25zdCB1aW50OF90KiBtX2J1ZmZlcjsKLSAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZlclBvc2l0
aW9uOwotICAgIGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVyRW5kOworICAgIGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4gbV9zcGFuOworICAgIFNwYW48Y29uc3QgdWludDhfdD46Oml0ZXJhdG9yIG1f
aXRlcmF0b3I7CiAKICAgICBTSEExIG1fc2hhMTsKIH07CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwCShyZXZpc2lvbiAyNzk1MjUp
CisrKyBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDE5ICs0NiwxOSBAQCB1aW50OF90KiBFbmNvZGVyOjpncm93KHNp
emVfdCBzaXplKQogICAgIHJldHVybiBtX2J1ZmZlci5kYXRhKCkgKyBuZXdQb3NpdGlvbjsKIH0K
IAotdm9pZCBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYgc2hhMSwgY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3Vt
Rm9yRGF0YShTSEExJiBzaGExLCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pCiB7CiAgICAgYXV0
byB0eXBlU2FsdCA9IFNhbHQ8dWludDhfdCo+Ojp2YWx1ZTsKICAgICBzaGExLmFkZEJ5dGVzKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOwot
ICAgIHNoYTEuYWRkQnl0ZXMoZGF0YSwgc2l6ZSk7CisgICAgc2hhMS5hZGRCeXRlcyhzcGFuLmRh
dGEoKSwgc3Bhbi5zaXplKCkpOwogfQogCi12b2lkIEVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRW5jb2Rlcjo6ZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikKIHsKLSAgICB1cGRh
dGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKKyAgICB1cGRhdGVDaGVja3N1
bUZvckRhdGEobV9zaGExLCBzcGFuKTsKIAotICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6
ZSk7Ci0gICAgbWVtY3B5KGJ1ZmZlciwgZGF0YSwgc2l6ZSk7CisgICAgdWludDhfdCogYnVmZmVy
ID0gZ3JvdyhzcGFuLnNpemUoKSk7CisgICAgbWVtY3B5KGJ1ZmZlciwgc3Bhbi5kYXRhKCksIHNw
YW4uc2l6ZSgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KQEAgLTEyNSw3ICsxMjUs
NyBAQCB2b2lkIEVuY29kZXI6OmVuY29kZUNoZWNrc3VtKCkKIHsKICAgICBTSEExOjpEaWdlc3Qg
aGFzaDsKICAgICBtX3NoYTEuY29tcHV0ZUhhc2goaGFzaCk7Ci0gICAgZW5jb2RlRml4ZWRMZW5n
dGhEYXRhKGhhc2guZGF0YSgpLCBoYXNoLnNpemUoKSk7CisgICAgZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKHsgaGFzaC5kYXRhKCksIGhhc2guc2l6ZSgpIH0pOwogfQogCiB9CkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgJKHJldmlzaW9uIDI3
OTUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJh
aXRzLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KKyNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dENvZGVyLmg+CiAKQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB+RW5jb2RlcigpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlQ2hl
Y2tzdW0oKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERh
dGEoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKFNwYW48Y29uc3QgdWludDhfdD4pOwogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08VD46OnZhbHVlPiog
PSBudWxscHRyPgogICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgdCkKQEAgLTczLDcg
Kzc0LDcgQEAgcHVibGljOgogICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQogICAgIHNpemVfdCBidWZmZXJTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JE
YXRhKFNIQTEmLCBTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VHlwZT4gc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYsIFR5cGUpOwog
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSVBDRW5jb2RlciA9IGZhbHNlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMjc5NTI1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMDctMDIgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgbW9yZSBTcGFuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc2MDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpzaG93Q2VydGlmaWNhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQu
Y3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6ZW5jb2RlQ0ZEYXRhKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKToKKwogMjAyMS0wNy0wMiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNPUyB3azFdIGNyeXB0by93
b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci5odG1sIGlzIGEgZmxha3kgZmFp
bHVyZQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5jcHAJKHJldmlzaW9uIDI3OTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDIsNyAr
NjAyLDcgQEAgYm9vbCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDZXJ0aWZpYwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2RlciBkZWNvZGVyKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9
KTsKICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvOwog
ICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGVJbmZvOwogICAgIGlmICghY2VydGlmaWNhdGVJbmZv
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCShyZXZpc2lv
biAyNzk1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRN
ZW1vcnlOb3ROZWVkZWRTbwogCiBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIFNoYXJlZEJ1ZmZl
cjo6ZGVjb2RlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH07CisgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KIAogYm9vbCBTaGFy
ZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERl
Y29kZXJHZW5lcmljLmNwcAkocmV2aXNpb24gMjc5NTI1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTgsNyArNTgsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHJlYWRTdHJpbmcoCiAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZl
cihzaXplLnZhbHVlKCkpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEo
YnVmZmVyLmRhdGEoKSwgc2l6ZS52YWx1ZSgpKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKHsgYnVmZmVyLmRhdGEoKSwgc2l6ZS52YWx1ZSgpIH0pKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gcmVzdWx0ID0gU3RyaW5nOjpmcm9tVVRGOChi
dWZmZXIuZGF0YSgpLCBzaXplLnZhbHVlKCkpOwogICAgIGlmIChyZXN1bHQuaXNOdWxsKCkpCkBA
IC0xMTcsNyArMTE3LDcgQEAgS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJp
YwogICAgICAgICAgICAgaWYgKCFvaykKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoKnNpemUpOwotICAgICAgICAgICAgb2sgPSBkZWNv
ZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShidWZmZXIuZGF0YSgpLCAqc2l6ZSk7CisgICAgICAg
ICAgICBvayA9IGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHsgYnVmZmVyLmRhdGEoKSwg
KnNpemUgfSk7CiAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5hZGQoKmtleSwgV1RGTW92ZShi
dWZmZXIpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAkocmV2aXNpb24gMjc5NTI1KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29k
ZVN0cmluZyhjCiB7CiAgICAgYXV0byB1dGY4ID0ga2V5LnV0ZjgoKTsKICAgICBtX2VuY29kZXIg
PDwgdXRmOC5sZW5ndGgoKTsKLSAgICBtX2VuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHV0
ZjguZGF0YUFzVUludDhQdHIoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9lbmNvZGVyLmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YSh7IHV0ZjguZGF0YUFzVUludDhQdHIoKSwgdXRmOC5sZW5ndGgoKSB9
KTsKIH0KIAogdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVCeXRlcyhjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBzaXplKQpAQCAtNDgsNyArNDgs
NyBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZUJ5dGVzKGNvCiAgICAgbV9lbmNv
ZGVyIDw8IFR5cGU6OkJ5dGVzOwogICAgIGVuY29kZVN0cmluZyhrZXkpOwogICAgIG1fZW5jb2Rl
ciA8PCBzaXplOwotICAgIG1fZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoYnl0ZXMsIHNp
emUpOworICAgIG1fZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoeyBieXRlcywgc2l6ZSB9
KTsKIH0KIAogdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVCb29sKGNvbnN0IFN0cmlu
ZyYga2V5LCBib29sIHZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAJKHJldmlzaW9u
IDI3OTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNh
dGVJbmZvQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNyArMjEwLDcgQEAgc3RhdGlj
IHZvaWQgZW5jb2RlQ0ZEYXRhKEVuY29kZXImIGVuY29kZQogICAgIGNvbnN0IHVpbnQ4X3QqIGJ5
dGVQdHIgPSBDRkRhdGFHZXRCeXRlUHRyKGRhdGEpOwogCiAgICAgZW5jb2RlciA8PCBsZW5ndGg7
Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoYnl0ZVB0ciwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YSh7IGJ5
dGVQdHIsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSB9KTsKIH0KIAogc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UmV0YWluUHRyPENGRGF0YVJlZj4+IGRlY29kZUNGRGF0YShEZWNvZGVyJiBkZWNv
ZGVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRpZmlj
YXRlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9DZXJ0aWZpY2F0ZUluZm8uaAkocmV2aXNpb24gMjc5NTI1KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRpZmljYXRlSW5mby5oCSh3b3JraW5nIGNvcHkp
CkBAIC03NSw3ICs3NSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvZGVyPEdSZWZQdHI8R0J5dGVB
cnIKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciAmZW5jb2RlciwgY29uc3QgR1JlZlB0
cjxHQnl0ZUFycmF5PiYgYnl0ZUFycmF5KQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oYnl0ZUFycmF5LT5sZW4pOwotICAgICAgICBlbmNvZGVyLmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShieXRlQXJyYXktPmRhdGEsIGJ5dGVBcnJheS0+bGVuKTsKKyAgICAg
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoeyBieXRlQXJyYXktPmRhdGEsIGJ5dGVB
cnJheS0+bGVuIH0pOwogICAgIH0KIAogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdSZWZQdHI8
R0J5dGVBcnJheT4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQpJbmRleDogU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRp
b25EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDI3OTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MTcsNyArNTE3LDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRS
ZWNvcgogICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycz4gY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgICAgICBhdXRvIGNvbnRlbnRTZWN1
cml0eVBvbGljeURhdGFTcGFuID0gc3FsLT5jb2x1bW5CbG9iQXNTcGFuKDgpOwogICAgICAgICBp
ZiAoY29udGVudFNlY3VyaXR5UG9saWN5RGF0YVNwYW4uc2l6ZSgpKSB7Ci0gICAgICAgICAgICBX
VEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGNzcERlY29kZXIoY29udGVudFNlY3VyaXR5UG9saWN5
RGF0YVNwYW4uZGF0YSgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhU3Bhbi5zaXplKCkpOwor
ICAgICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBjc3BEZWNvZGVyKGNvbnRlbnRT
ZWN1cml0eVBvbGljeURhdGFTcGFuKTsKICAgICAgICAgICAgIGNzcERlY29kZXIgPj4gY29udGVu
dFNlY3VyaXR5UG9saWN5OwogICAgICAgICAgICAgaWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3kp
IHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVn
aXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUgY29udGVu
dFNlY3VyaXR5UG9saWN5Iik7CkBAIC01MzAsNyArNTMwLDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlv
bkRhdGFiYXNlOjppbXBvcnRSZWNvcgogICAgICAgICBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7CiAgICAgICAg
IGF1dG8gc2NyaXB0UmVzb3VyY2VNYXBEYXRhU3BhbiA9IHNxbC0+Y29sdW1uQmxvYkFzU3Bhbigx
MCk7CiAgICAgICAgIGlmIChzY3JpcHRSZXNvdXJjZU1hcERhdGFTcGFuLnNpemUoKSkgewotICAg
ICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBzY3JpcHRSZXNvdXJjZU1hcERlY29k
ZXIoc2NyaXB0UmVzb3VyY2VNYXBEYXRhU3Bhbi5kYXRhKCksIHNjcmlwdFJlc291cmNlTWFwRGF0
YVNwYW4uc2l6ZSgpKTsKKyAgICAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgc2Ny
aXB0UmVzb3VyY2VNYXBEZWNvZGVyKHNjcmlwdFJlc291cmNlTWFwRGF0YVNwYW4pOwogICAgICAg
ICAgICAgc3RkOjpvcHRpb25hbDxIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHRBdHRyaWJ1dGVz
Pj4gc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0czsKICAgICAgICAgICAgIHNjcmlwdFJl
c291cmNlTWFwRGVjb2RlciA+PiBzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRzOwogICAg
ICAgICAgICAgaWYgKCFzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRzKSB7CkBAIC01NDMs
NyArNTQzLDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcgogICAg
ICAgICBhdXRvIGNlcnRpZmljYXRlSW5mb0RhdGFTcGFuID0gc3FsLT5jb2x1bW5CbG9iQXNTcGFu
KDExKTsKICAgICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IGNlcnRpZmljYXRl
SW5mbzsKIAotICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGNlcnRpZmljYXRlSW5m
b0RlY29kZXIoY2VydGlmaWNhdGVJbmZvRGF0YVNwYW4uZGF0YSgpLCBjZXJ0aWZpY2F0ZUluZm9E
YXRhU3Bhbi5zaXplKCkpOworICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGNlcnRp
ZmljYXRlSW5mb0RlY29kZXIoY2VydGlmaWNhdGVJbmZvRGF0YVNwYW4pOwogICAgICAgICBjZXJ0
aWZpY2F0ZUluZm9EZWNvZGVyID4+IGNlcnRpZmljYXRlSW5mbzsKICAgICAgICAgaWYgKCFjZXJ0
aWZpY2F0ZUluZm8pIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3Jr
ZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29k
ZSBjZXJ0aWZpY2F0ZUluZm8iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAJKHJldmlzaW9uIDI3
OTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsOSArODYsOSBAQCBTY3JpcHRCdWZmZXIg
U1dTY3JpcHRTdG9yYWdlOjpzdG9yZShjb25zCiAgICAgYXV0byBzY3JpcHRQYXRoID0gdGhpcy0+
c2NyaXB0UGF0aChyZWdpc3RyYXRpb25LZXksIHNjcmlwdFVSTCk7CiAgICAgRmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0ZW06OnBhcmVudFBhdGgoc2NyaXB0UGF0aCkpOwog
Ci0gICAgYXV0byBpdGVyYXRlT3ZlckJ1ZmZlckFuZFdyaXRlRGF0YSA9IFsmXShjb25zdCBGdW5j
dGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYgd3JpdGVEYXRhKSB7Ci0gICAgICAg
IGZvciAoYXV0byBpdCA9IHNjcmlwdC5idWZmZXIoKS0+YmVnaW4oKTsgaXQgIT0gc2NyaXB0LmJ1
ZmZlcigpLT5lbmQoKTsgKytpdCkKLSAgICAgICAgICAgIHdyaXRlRGF0YShpdC0+c2VnbWVudC0+
ZGF0YSgpLCBpdC0+c2VnbWVudC0+c2l6ZSgpKTsKKyAgICBhdXRvIGl0ZXJhdGVPdmVyQnVmZmVy
QW5kV3JpdGVEYXRhID0gWyZdKGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90
Pik+JiB3cml0ZURhdGEpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICpzY3JpcHQuYnVm
ZmVyKCkpCisgICAgICAgICAgICB3cml0ZURhdGEoeyBlbnRyeS5zZWdtZW50LT5kYXRhKCksIGVu
dHJ5LnNlZ21lbnQtPnNpemUoKSB9KTsKICAgICB9OwogCiAgICAgaWYgKCFzaG91bGRVc2VGaWxl
TWFwcGluZyhzY3JpcHQuYnVmZmVyKCktPnNpemUoKSkpIHsKQEAgLTk3LDggKzk3LDggQEAgU2Ny
aXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6c3RvcmUoY29ucwogICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlNXU2NyaXB0U3RvcmFnZTo6c3RvcmU6IEZhaWx1
cmUgdG8gc3RvcmUgJXMsIEZpbGVTeXN0ZW06Om9wZW5GaWxlKCkgZmFpbGVkIiwgc2NyaXB0UGF0
aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KLSAg
ICAgICAgaXRlcmF0ZU92ZXJCdWZmZXJBbmRXcml0ZURhdGEoWyZdKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7Ci0gICAgICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSho
YW5kbGUsIGRhdGEsIHNpemUpOworICAgICAgICBpdGVyYXRlT3ZlckJ1ZmZlckFuZFdyaXRlRGF0
YShbJl0oU3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKSB7CisgICAgICAgICAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShoYW5kbGUsIHNwYW4uZGF0YSgpLCBzcGFuLnNpemUoKSk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSk7CiAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShoYW5kbGUpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3OTUyNSkKKysrIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMjEtMDct
MDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBVc2UgbW9yZSBTcGFuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjc2MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlUmVjb3JkSGVh
ZGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6cmVhZE9y
aWdpbik6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6ZGVjb2RlQ2FjaGVzTmFtZXMp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6Om1hcFRvRmlsZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Y29tcHV0ZVNIQTEpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpEYXRhOjpzcGFuIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6RGF0YTo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpEYXRhOjphcHBseSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRGF0YUdMaWIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OkRhdGE6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6
OmRlY29kZVN0b3JhZ2VSZWNvcmQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmRl
Y29kZVJlY29yZE1ldGFEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3VicmVzb3VyY2VzRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAoQVBJ
OjpnZXREYXRhKToKKyAgICAgICAgKEFQSTo6ZGVjb2RlQ29udGVudFJ1bGVMaXN0TWV0YURhdGEp
OgorICAgICAgICAoQVBJOjp3cml0ZURhdGFUb0ZpbGUpOgorCiAyMDIxLTA3LTAyICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBNYWMgQ2F0YWx5
c3QgYnVpbGQgZml4IGFmdGVyIHIyNzk1MTQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmNwcAkocmV2aXNpb24gMjc5NTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzMCw3
ICs2MzAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpET01DYWNoZUVuCiAKIHN0
ZDo6b3B0aW9uYWw8Q2FjaGU6OkRlY29kZWRSZWNvcmQ+IENhY2hlOjpkZWNvZGVSZWNvcmRIZWFk
ZXIoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlKQogewotICAgIFdURjo6UGVyc2lzdGVu
Y2U6OkRlY29kZXIgZGVjb2RlcihzdG9yYWdlLmhlYWRlci5kYXRhKCksIHN0b3JhZ2UuaGVhZGVy
LnNpemUoKSk7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2Uu
aGVhZGVyLnNwYW4oKSk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaW5zZXJ0aW9uVGlt
ZTsKICAgICBkZWNvZGVyID4+IGluc2VydGlvblRpbWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZXMuY3BwCShyZXZpc2lvbiAyNzk1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIENhY2hlczo6c3RvcmVPcmlnaW4oQ29tcGxldGlvbkNh
bGxiCiAKIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBDYWNoZXM6OnJlYWRP
cmlnaW4oY29uc3QgRGF0YSYgZGF0YSkKIHsKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
IGRlY29kZXIoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICBXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIGRlY29kZXIoZGF0YS5zcGFuKCkpOwogCiAgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRvcE9yaWdpbjsKICAgICBkZWNvZGVyID4+IHRvcE9y
aWdpbjsKQEAgLTQwOSw3ICs0MDksNyBAQCBzdGF0aWMgaW5saW5lIERhdGEgZW5jb2RlQ2FjaGVO
YW1lcyhjb25zCiAKIHN0YXRpYyBpbmxpbmUgRXhwZWN0ZWQ8VmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIFN0cmluZz4+LCBFcnJvcj4gZGVjb2RlQ2FjaGVzTmFtZXMoY29uc3QgRGF0YSYgZGF0YSkK
IHsKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoZGF0YS5z
cGFuKCkpOwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGNvdW50OwogICAgIGRlY29kZXIg
Pj4gY291bnQ7CiAgICAgaWYgKCFjb3VudCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAkocmV2aXNpb24g
Mjc5NTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsOSBAQCBuYW1lc3BhY2UgTmV0
d29ya0NhY2hlIHsKIERhdGEgRGF0YTo6bWFwVG9GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkgY29u
c3QKIHsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAgIGF1
dG8gYXBwbHlEYXRhID0gWyZdKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNp
emVfdCk+JiBhcHBsaWVyKSB7IGFwcGx5KGFwcGxpZXIpOyB9OworICAgIGF1dG8gYXBwbHlEYXRh
ID0gWyZdKGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBhcHBsaWVy
KSB7CisgICAgICAgIGFwcGx5KGFwcGxpZXIpOworICAgIH07CiAgICAgYXV0byBtYXBwZWRGaWxl
ID0gRmlsZVN5c3RlbTo6bWFwVG9GaWxlKHBhdGgsIHNpemUoKSwgV1RGTW92ZShhcHBseURhdGEp
LCAmaGFuZGxlKTsKICAgICBpZiAoIW1hcHBlZEZpbGUpCiAgICAgICAgIHJldHVybiB7IH07CkBA
IC04Nyw4ICs4OSw4IEBAIFNIQTE6OkRpZ2VzdCBjb21wdXRlU0hBMShjb25zdCBEYXRhJiBkYXQK
IHsKICAgICBTSEExIHNoYTE7CiAgICAgc2hhMS5hZGRCeXRlcyhzYWx0LmRhdGEoKSwgc2FsdC5z
aXplKCkpOwotICAgIGRhdGEuYXBwbHkoWyZzaGExXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgewotICAgICAgICBzaGExLmFkZEJ5dGVzKGRhdGEsIHNpemUpOworICAgIGRhdGEu
YXBwbHkoWyZzaGExXShTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pIHsKKyAgICAgICAgc2hhMS5h
ZGRCeXRlcyhzcGFuLmRhdGEoKSwgc3Bhbi5zaXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9KTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgJKHJldmlzaW9uIDI3OTUyNSkKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNs
dWRlIDx3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KKyNp
bmNsdWRlIDx3dGYvU3Bhbi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC03NCwxMiArNzUsMTMgQEAg
cHVibGljOgogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwogICAgIHNpemVfdCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgU3Bhbjxjb25zdCB1aW50OF90PiBz
cGFuKCkgY29uc3QgeyByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OyB9CiAgICAgYm9vbCBpc01h
cCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNYXA7IH0KICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiB0
cnlDcmVhdGVTaGFyZWRNZW1vcnkoKSBjb25zdDsKIAogICAgIERhdGEgc3VicmFuZ2Uoc2l6ZV90
IG9mZnNldCwgc2l6ZV90KSBjb25zdDsKIAotICAgIGJvb2wgYXBwbHkoY29uc3QgRnVuY3Rpb248
Ym9vbCAoY29uc3QgdWludDhfdCosIHNpemVfdCk+JikgY29uc3Q7CisgICAgYm9vbCBhcHBseShj
b25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYpIGNvbnN0OwogCiAgICAg
RGF0YSBtYXBUb0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdDsKIApJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVEYXRhQ29jb2EubW0JKHJldmlzaW9uIDI3OTUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC02OSwxMiArNjksMTIgQEAgYm9vbCBEYXRhOjppc051bGwoKSBjb25zdAogICAgIHJldHVybiAh
bV9kaXNwYXRjaERhdGE7CiB9CiAKLWJvb2wgRGF0YTo6YXBwbHkoY29uc3QgRnVuY3Rpb248Ym9v
bCAoY29uc3QgdWludDhfdCosIHNpemVfdCk+JiBhcHBsaWVyKSBjb25zdAorYm9vbCBEYXRhOjph
cHBseShjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgYXBwbGllcikg
Y29uc3QKIHsKICAgICBpZiAoIW1fc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJl
dHVybiBkaXNwYXRjaF9kYXRhX2FwcGx5KG1fZGlzcGF0Y2hEYXRhLmdldCgpLCBbJmFwcGxpZXJd
KGRpc3BhdGNoX2RhdGFfdCwgc2l6ZV90LCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkg
ewotICAgICAgICByZXR1cm4gYXBwbGllcihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSksIHNpemUpOworICAgICAgICByZXR1cm4gYXBwbGllcih7IHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhKSwgc2l6ZSB9KTsKICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ3VybC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRh
Q3VybC5jcHAJKHJldmlzaW9uIDI3OTUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCwx
MiArNzAsMTIgQEAgYm9vbCBEYXRhOjppc051bGwoKSBjb25zdAogICAgIHJldHVybiAhbV9idWZm
ZXI7CiB9CiAKLWJvb2wgRGF0YTo6YXBwbHkoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50
OF90Kiwgc2l6ZV90KT4mIGFwcGxpZXIpIGNvbnN0Citib29sIERhdGE6OmFwcGx5KGNvbnN0IEZ1
bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBhcHBsaWVyKSBjb25zdAogewogICAg
IGlmIChpc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBhcHBs
aWVyKGRhdGEoKSwgc2l6ZSgpKTsKKyAgICByZXR1cm4gYXBwbGllcih7IGRhdGEoKSwgc2l6ZSgp
IH0pOwogfQogCiBEYXRhIERhdGE6OnN1YnJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXpl
KSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVEYXRhR0xpYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhR0xpYi5jcHAJKHJldmlzaW9uIDI3OTUyNSkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUdMaWIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MywxNCArNzMsMTQgQEAgYm9vbCBEYXRhOjppc051bGwo
KSBjb25zdAogICAgIHJldHVybiAhbV9idWZmZXI7CiB9CiAKLWJvb2wgRGF0YTo6YXBwbHkoY29u
c3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIGFwcGxpZXIpIGNvbnN0
Citib29sIERhdGE6OmFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90
Pik+JiBhcHBsaWVyKSBjb25zdAogewogICAgIGlmICghbV9zaXplKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBnc2l6ZSBsZW5ndGg7CiAgICAgY29uc3QgYXV0byogZGF0YSA9IGdfYnl0
ZXNfZ2V0X2RhdGEobV9idWZmZXIuZ2V0KCksICZsZW5ndGgpOwotICAgIHJldHVybiBhcHBsaWVy
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworICAgIHJl
dHVybiBhcHBsaWVyKHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxl
bmd0aCB9KTsKIH0KIAogRGF0YSBEYXRhOjpzdWJyYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
c2l6ZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCShyZXZpc2lvbiAyNzk1MjUpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
RW50cnk6OmRlY29kZVN0b3IKIHsKICAgICBhdXRvIGVudHJ5ID0gbWFrZVVuaXF1ZTxFbnRyeT4o
c3RvcmFnZUVudHJ5KTsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2Rlcihz
dG9yYWdlRW50cnkuaGVhZGVyLmRhdGEoKSwgc3RvcmFnZUVudHJ5LmhlYWRlci5zaXplKCkpOwor
ICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVy
LnNwYW4oKSk7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBp
ZiAoIVdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmRlY29kZShkZWNvZGVyLCByZXNwb25zZSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCShyZXZp
c2lvbiAyNzk1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTQsOCArNDU0LDggQEAgc3Ry
dWN0IFJlY29yZE1ldGFEYXRhIHsKIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGVSZWNvcmRNZXRhRGF0YShSZWNvcmRNZXRhRGF0YSYgbWV0YURhdGEsIGNvbnN0IERhdGEmIGZp
bGVEYXRhKQogewogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwotICAgIGZpbGVEYXRhLmFwcGx5
KFsmbWV0YURhdGEsICZzdWNjZXNzXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkg
ewotICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoZGF0YSwgc2l6ZSk7
CisgICAgZmlsZURhdGEuYXBwbHkoWyZtZXRhRGF0YSwgJnN1Y2Nlc3NdKFNwYW48Y29uc3QgdWlu
dDhfdD4gc3BhbikgeworICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIo
c3Bhbik7CiAgICAgICAgIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBjYWNoZVN0
b3JhZ2VWZXJzaW9uOwogICAgICAgICBkZWNvZGVyID4+IGNhY2hlU3RvcmFnZVZlcnNpb247Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJl
c291cmNlc0VudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAkocmV2aXNpb24gMjc5
NTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dWJyZXNvdXJjZXNFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+IFN1YnJlCiB7CiAgICAgYXV0byBlbnRy
eSA9IG1ha2VVbmlxdWU8U3VicmVzb3VyY2VzRW50cnk+KHN0b3JhZ2VFbnRyeSk7CiAKLSAgICBX
VEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5kYXRh
KCksIHN0b3JhZ2VFbnRyeS5oZWFkZXIuc2l6ZSgpKTsKKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5zcGFuKCkpOwogICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFN1YnJlc291cmNlSW5mbz4+IHN1YnJlc291cmNlczsKICAgICBkZWNvZGVy
ID4+IHN1YnJlc291cmNlczsKICAgICBpZiAoIXN1YnJlc291cmNlcykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcAkocmV2aXNpb24gMjc5NTI1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDE0ICsxMzUs
MTQgQEAgc3RhdGljIFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhIGVuY29kZQogICAgIHJldHVy
biBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1
ZmZlclNpemUoKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgZ2V0RGF0YShjb25z
dCBUJiwgY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mKTsKLXRl
bXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBk
YXRhLCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYgZnVuY3Rp
b24pCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGdldERhdGEoY29uc3QgVCYsIGNvbnN0IEZ1
bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+Jik7Cit0ZW1wbGF0ZTw+IHZvaWQgZ2V0
RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rp
b248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQogewogICAgIGRhdGEuYXBw
bHkoZnVuY3Rpb24pOwogfQotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpPiYgZnVuY3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50
OF90Pik+JiBmdW5jdGlvbikKIHsKLSAgICBmdW5jdGlvbihkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCkpOworICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMTUwLDEzICsxNTAsMTMgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8Q29udGVudFJ1bGVMaXN0TWV0YQogewogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwog
ICAgIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhIG1ldGFEYXRhOwotICAgIGdldERhdGEoZmlsZURh
dGEsIFsmbWV0YURhdGEsICZzdWNjZXNzLCAmZmlsZURhdGFdKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKSB7CisgICAgZ2V0RGF0YShmaWxlRGF0YSwgWyZtZXRhRGF0YSwgJnN1Y2Nl
c3MsICZmaWxlRGF0YV0oU3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKSB7CiAgICAgICAgIC8vIFRo
ZSBmaWxlIGRhdGEgc2hvdWxkIGJlIG1hcHBlZCBpbnRvIG9uZSBjb250aW51b3VzIG1lbW9yeSBz
ZWdtZW50IHNvIHRoZSBzaXplCiAgICAgICAgIC8vIHBhc3NlZCB0byB0aGUgYXBwbGllciBzaG91
bGQgYWx3YXlzIGVxdWFsIHRoZSBkYXRhIHNpemUuCi0gICAgICAgIGlmIChzaXplICE9IGZpbGVE
YXRhLnNpemUoKSkKKyAgICAgICAgaWYgKHNwYW4uc2l6ZSgpICE9IGZpbGVEYXRhLnNpemUoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyIGRlY29kZXIoZGF0YSwgc2l6ZSk7CisgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXIgZGVjb2RlcihzcGFuKTsKICAgICAgICAgCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDMyX3Q+IHZlcnNpb247CiAgICAgICAgIGRlY29kZXIgPj4gdmVyc2lvbjsKQEAgLTIyOCw4ICsy
MjgsOCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXBwZWREYXRhPiBvcGVuQW5kCiBzdGF0aWMg
Ym9vbCB3cml0ZURhdGFUb0ZpbGUoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGZp
bGVEYXRhLCBQbGF0Zm9ybUZpbGVIYW5kbGUgZmQpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gdHJ1
ZTsKLSAgICBmaWxlRGF0YS5hcHBseShbZmQsICZzdWNjZXNzXShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkgewotICAgICAgICBpZiAod3JpdGVUb0ZpbGUoZmQsIGRhdGEsIHNpemUp
ID09IC0xKSB7CisgICAgZmlsZURhdGEuYXBwbHkoW2ZkLCAmc3VjY2Vzc10oU3Bhbjxjb25zdCB1
aW50OF90PiBzcGFuKSB7CisgICAgICAgIGlmICh3cml0ZVRvRmlsZShmZCwgc3Bhbi5kYXRhKCks
IHNwYW4uc2l6ZSgpKSA9PSAtMSkgewogICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="454906"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432842</attachid>
            <date>2021-07-02 22:31:35 -0700</date>
            <delta_ts>2021-07-06 09:19:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227606-20210702223134.patch</filename>
            <type>text/plain</type>
            <size>38670</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzk1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDIxLTA3LTAyICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIG1vcmUgU3BhbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NjA2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IGlzIGFsd2F5cyBi
ZXR0ZXIsIHJpZ2h0PworCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAo
V1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFwVG9GaWxlKToKKyAgICAgICAgKiB3dGYvRmlsZVN5c3Rl
bS5oOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcDoKKyAg
ICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkNvZGVyPENTdHJpbmc+OjplbmNvZGUpOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8Q1N0cmluZz46OmRlY29kZSk6CisgICAgICAgIChX
VEY6OlBlcnNpc3RlbmNlOjpDb2RlcjxTdHJpbmc+OjplbmNvZGUpOgorICAgICAgICAoV1RGOjpQ
ZXJzaXN0ZW5jZTo6ZGVjb2RlU3RyaW5nVGV4dCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNl
OjpDb2RlcjxTSEExOjpEaWdlc3Q+OjplbmNvZGUpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6Q29kZXI8U0hBMTo6RGlnZXN0Pjo6ZGVjb2RlKToKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudENvZGVycy5oOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RGVjb2Rlci5jcHA6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpEZWNv
ZGVyKToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW4gY29uc3QpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
cjo6YnVmZmVyUG9pbnRlckZvckRpcmVjdFJlYWQpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXI6OmRlY29kZU51bWJlcik6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyOjp2ZXJpZnlDaGVja3N1bSk6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnREZWNvZGVyLmg6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjps
ZW5ndGggY29uc3QpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6Y3VycmVu
dE9mZnNldCBjb25zdCk6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNv
ZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OnVwZGF0ZUNoZWNr
c3VtRm9yRGF0YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNvZGVG
aXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5j
b2RlQ2hlY2tzdW0pOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rl
ci5oOgorCiAyMDIxLTA3LTAyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIFttYWNPU10gT25seSB1c2UgV2ViR0wgb24gTWV0YWwgYnkgZGVmYXVsdCBvbiBz
YWZlIHZlcnNpb25zIG9mIG1hY09TCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAkocmV2aXNpb24g
Mjc5NTI1KQorKysgU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzMiw3ICs0MzIsNyBAQCBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShjb25z
dCBTCiB9CiAjZW5kaWYKIAotTWFwcGVkRmlsZURhdGEgbWFwVG9GaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgc2l6ZV90IGJ5dGVzU2l6ZSwgRnVuY3Rpb248dm9pZChjb25zdCBGdW5jdGlvbjxib29s
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYpPiYmIGFwcGx5LCBQbGF0Zm9ybUZpbGVIYW5kbGUq
IG91dHB1dEhhbmRsZSkKK01hcHBlZEZpbGVEYXRhIG1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgsIHNpemVfdCBieXRlc1NpemUsIEZ1bmN0aW9uPHZvaWQoY29uc3QgRnVuY3Rpb248Ym9vbChT
cGFuPGNvbnN0IHVpbnQ4X3Q+KT4mKT4mJiBhcHBseSwgUGxhdGZvcm1GaWxlSGFuZGxlKiBvdXRw
dXRIYW5kbGUpCiB7CiAgICAgY29uc3RleHByIGJvb2wgZmFpbElmRmlsZUV4aXN0cyA9IHRydWU7
CiAgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVt
OjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSwgRmlsZVN5c3RlbTo6RmlsZUFjY2Vzc1Blcm1pc3Np
b246OlVzZXIsIGZhaWxJZkZpbGVFeGlzdHMpOwpAQCAtNDUyLDkgKzQ1Miw5IEBAIE1hcHBlZEZp
bGVEYXRhIG1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHAKICAgICB2b2lkKiBtYXAgPSBjb25zdF9j
YXN0PHZvaWQqPihtYXBwZWRGaWxlLmRhdGEoKSk7CiAgICAgdWludDhfdCogbWFwRGF0YSA9IHN0
YXRpY19jYXN0PHVpbnQ4X3QqPihtYXApOwogCi0gICAgYXBwbHkoWyZtYXBEYXRhXShjb25zdCB1
aW50OF90KiBjaHVuaywgc2l6ZV90IGNodW5rU2l6ZSkgewotICAgICAgICBtZW1jcHkobWFwRGF0
YSwgY2h1bmssIGNodW5rU2l6ZSk7Ci0gICAgICAgIG1hcERhdGEgKz0gY2h1bmtTaXplOworICAg
IGFwcGx5KFsmbWFwRGF0YV0oU3Bhbjxjb25zdCB1aW50OF90PiBjaHVuaykgeworICAgICAgICBt
ZW1jcHkobWFwRGF0YSwgY2h1bmsuZGF0YSgpLCBjaHVuay5zaXplKCkpOworICAgICAgICBtYXBE
YXRhICs9IGNodW5rLnNpemUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSk7CiAKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmgJKHJldmlzaW9uIDI3OTUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHV0
aWxpdHk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL1NwYW4uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC0yNzMsNyArMjc0LDcgQEAgaW5saW5lIE1hcHBlZEZpbGVEYXRhJiBNYXBwZWRGaWxlRGF0YTo6
bwogCiAvLyBUaGlzIGNyZWF0ZXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1hcHMgaXQsIHdyaXRl
IHRoZSBwcm92aWRlZCBkYXRhIHRvIGl0IGFuZCByZXR1cm5zIHRoZSBtYXBwZWQgZmlsZS4KIC8v
IFRoaXMgZnVuY3Rpb24gZmFpbHMgaWYgdGhlcmUgaXMgYWxyZWFkeSBhIGZpbGUgYXQgdGhlIGRl
c3RpbmF0aW9uIHBhdGguCi1XVEZfRVhQT1JUX1BSSVZBVEUgTWFwcGVkRmlsZURhdGEgbWFwVG9G
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgc2l6ZV90IGJ5dGVzU2l6ZSwgRnVuY3Rpb248dm9pZChj
b25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYpPiYmIGFwcGx5LCBQ
bGF0Zm9ybUZpbGVIYW5kbGUqID0gbnVsbHB0cik7CitXVEZfRVhQT1JUX1BSSVZBVEUgTWFwcGVk
RmlsZURhdGEgbWFwVG9GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgc2l6ZV90IGJ5dGVzU2l6ZSwg
RnVuY3Rpb248dm9pZChjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYp
PiYmIGFwcGx5LCBQbGF0Zm9ybUZpbGVIYW5kbGUqID0gbnVsbHB0cik7CiAKIH0gLy8gbmFtZXNw
YWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwCShyZXZpc2lvbiAyNzk1
MjUpCisrKyBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIENvZGVyPENTdHJpbmc+OjplbmNv
ZGUoRW5jb2RlciYgZW5jCiAKICAgICB1aW50MzJfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7
CiAgICAgZW5jb2RlciA8PCBsZW5ndGg7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEoc3RyaW5nLmRhdGFBc1VJbnQ4UHRyKCksIGxlbmd0aCk7CisgICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEoeyBzdHJpbmcuZGF0YUFzVUludDhQdHIoKSwgbGVuZ3RoIH0pOwogfQog
CiBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IENvZGVyPENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKQEAgLTc4LDcgKzc4LDcgQEAgc3RkOjpvcHRpb25hbDxDU3RyaW5nPiBDb2RlcjxD
U3RyaW5nPjo6ZAogCiAgICAgY2hhciogYnVmZmVyOwogICAgIENTdHJpbmcgc3RyaW5nID0gQ1N0
cmluZzo6bmV3VW5pbml0aWFsaXplZCgqbGVuZ3RoLCBidWZmZXIpOwotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVy
KSwgKmxlbmd0aCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksICpsZW5ndGggfSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc3RyaW5nOwpAQCAtOTgsOSArOTgsOSBA
QCB2b2lkIENvZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvCiAgICAgZW5jb2RlciA8
PCBsZW5ndGggPDwgaXM4Qml0OwogCiAgICAgaWYgKGlzOEJpdCkKLSAgICAgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CisgICAg
ICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHsgc3RyaW5nLmNoYXJhY3RlcnM4KCks
IGxlbmd0aCB9KTsKICAgICBlbHNlCi0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzMTYo
KSksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVk
TGVuZ3RoRGF0YSh7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFy
YWN0ZXJzMTYoKSksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikgfSk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgpAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBpbmxpbmUg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGRlY28KIAogICAgIENoYXJhY3RlclR5cGUqIGJ1ZmZlcjsK
ICAgICBTdHJpbmcgc3RyaW5nID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwg
YnVmZmVyKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksIGxlbmd0aCAqIHNpemVvZihDaGFyYWN0ZXJUeXBl
KSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksIGxlbmd0aCAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSB9
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4gc3RyaW5n
OwpAQCAtMTQyLDEzICsxNDIsMTMgQEAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IENvZGVyPFN0cmlu
Zz46OmRlYwogCiB2b2lkIENvZGVyPFNIQTE6OkRpZ2VzdD46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBTSEExOjpEaWdlc3QmIGRpZ2VzdCkKIHsKLSAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShkaWdlc3QuZGF0YSgpLCBzaXplb2YoZGlnZXN0KSk7CisgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEoeyBkaWdlc3QuZGF0YSgpLCBzaXplb2YoZGlnZXN0KSB9
KTsKIH0KIAogc3RkOjpvcHRpb25hbDxTSEExOjpEaWdlc3Q+IENvZGVyPFNIQTE6OkRpZ2VzdD46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFNIQTE6OkRpZ2VzdCB0bXA7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh0bXAuZGF0YSgpLCBzaXplb2YodG1w
KSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHRtcC5kYXRhKCks
IHNpemVvZih0bXApIH0pKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biB0bXA7CiB9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29k
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dENvZGVycy5oCShyZXZpc2lvbiAyNzk1MjUpCisrKyBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw3ICsxNzMsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpCiAgICAgICAgIFZlY3RvcjxU
LCBpbmxpbmVDYXBhY2l0eT4gdGVtcDsKICAgICAgICAgdGVtcC5ncm93KHNpemUpOwogCi0gICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4odGVtcC5kYXRhKCkpLCBzaXplICogc2l6ZW9mKFQpKSkKKyAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHRlbXAuZGF0YSgpLCBzaXplICogc2l6ZW9m
KFQpIH0pKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1
cm4gdGVtcDsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNv
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RGVjb2Rlci5jcHAJKHJldmlzaW9uIDI3OTUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL3BlcnNp
c3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMx
LDkgQEAKIG5hbWVzcGFjZSBXVEYgewogbmFtZXNwYWNlIFBlcnNpc3RlbmNlIHsKIAotRGVjb2Rl
cjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKQotICAg
IDogbV9idWZmZXIoYnVmZmVyKQotICAgICwgbV9idWZmZXJQb3NpdGlvbihidWZmZXIpCi0gICAg
LCBtX2J1ZmZlckVuZChidWZmZXIgKyBidWZmZXJTaXplKQorRGVjb2Rlcjo6RGVjb2RlcihTcGFu
PGNvbnN0IHVpbnQ4X3Q+IHNwYW4pCisgICAgOiBtX3NwYW4oc3BhbikKKyAgICAsIG1faXRlcmF0
b3Ioc3Bhbi5iZWdpbigpKQogewogfQogCkBAIC00NCw3ICs0Myw3IEBAIERlY29kZXI6On5EZWNv
ZGVyKCkKIAogYm9vbCBEZWNvZGVyOjpidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVf
dCBzaXplKSBjb25zdAogewotICAgIHJldHVybiBzaXplIDw9IHN0YXRpY19jYXN0PHNpemVfdD4o
bV9idWZmZXJFbmQgLSBtX2J1ZmZlclBvc2l0aW9uKTsKKyAgICByZXR1cm4gc2l6ZSA8PSBzdGF0
aWNfY2FzdDxzaXplX3Q+KG1fc3Bhbi5lbmQoKSAtIG1faXRlcmF0b3IpOwogfQogCiBjb25zdCB1
aW50OF90KiBEZWNvZGVyOjpidWZmZXJQb2ludGVyRm9yRGlyZWN0UmVhZChzaXplX3Qgc2l6ZSkK
QEAgLTUyLDI2ICs1MSwyNyBAQCBjb25zdCB1aW50OF90KiBEZWNvZGVyOjpidWZmZXJQb2ludGVy
Rm9yCiAgICAgaWYgKCFidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemUpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZGF0YSA9IG1fYnVmZmVyUG9zaXRpb247Ci0g
ICAgbV9idWZmZXJQb3NpdGlvbiArPSBzaXplOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2l0ZXJh
dG9yOworICAgIG1faXRlcmF0b3IgKz0gc2l6ZTsKIAotICAgIEVuY29kZXI6OnVwZGF0ZUNoZWNr
c3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNpemUpOwotICAgIHJldHVybiBkYXRhOworICAgIEVu
Y29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIHsgaXRlcmF0b3IsIHNpemUgfSk7
CisgICAgcmV0dXJuIGl0ZXJhdG9yOwogfQogCi1ib29sIERlY29kZXI6OmRlY29kZUZpeGVkTGVu
Z3RoRGF0YSh1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK2Jvb2wgRGVjb2Rlcjo6ZGVjb2Rl
Rml4ZWRMZW5ndGhEYXRhKFNwYW48dWludDhfdD4gc3BhbikKIHsKLSAgICBhdXRvIGJ1ZmZlciA9
IGJ1ZmZlclBvaW50ZXJGb3JEaXJlY3RSZWFkKHNpemUpOworICAgIGF1dG8gYnVmZmVyID0gYnVm
ZmVyUG9pbnRlckZvckRpcmVjdFJlYWQoc3Bhbi5zaXplKCkpOwogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbWVtY3B5KGRhdGEsIGJ1ZmZlciwgc2l6ZSk7Cisg
ICAgbWVtY3B5KHNwYW4uZGF0YSgpLCBidWZmZXIsIHNwYW4uc2l6ZSgpKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogYm9vbCBEZWNvZGVyOjpyZXdpbmQoc2l6ZV90IHNpemUpCiB7Ci0gICAgaWYg
KG1fYnVmZmVyUG9zaXRpb24gLSBzaXplID49IG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVy
UG9zaXRpb24gLT0gc2l6ZTsKKyAgICAvLyBGSVhNRTogY2hlY2sgZm9yIHVuZGVyZmxvdy4KKyAg
ICBpZiAobV9pdGVyYXRvciAtIHNpemUgPj0gbV9zcGFuLmJlZ2luKCkpIHsKKyAgICAgICAgbV9p
dGVyYXRvciAtPSBzaXplOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtODQsOCArODQsOCBAQCBEZWNvZGVyJiBEZWNvZGVyOjpkZWNvZGVOdW1iZXIo
c3RkOjpvcHRpCiAgICAgICAgIHJldHVybiAqdGhpczsKIAogICAgIFQgdmFsdWU7Ci0gICAgbWVt
Y3B5KCZ2YWx1ZSwgbV9idWZmZXJQb3NpdGlvbiwgc2l6ZW9mKFQpKTsKLSAgICBtX2J1ZmZlclBv
c2l0aW9uICs9IHNpemVvZihUKTsKKyAgICBtZW1jcHkoJnZhbHVlLCBtX2l0ZXJhdG9yLCBzaXpl
b2YoVCkpOworICAgIG1faXRlcmF0b3IgKz0gc2l6ZW9mKFQpOwogCiAgICAgRW5jb2Rlcjo6dXBk
YXRlQ2hlY2tzdW1Gb3JOdW1iZXIobV9zaGExLCB2YWx1ZSk7CiAgICAgb3B0aW9uYWwgPSB2YWx1
ZTsKQEAgLTE0OCwxMSArMTQ4LDExIEBAIGJvb2wgRGVjb2Rlcjo6dmVyaWZ5Q2hlY2tzdW0oKQog
ICAgIG1fc2hhMS5jb21wdXRlSGFzaChjb21wdXRlZEhhc2gpOwogCiAgICAgU0hBMTo6RGlnZXN0
IHNhdmVkSGFzaDsKLSAgICBpZiAoIWRlY29kZUZpeGVkTGVuZ3RoRGF0YShzYXZlZEhhc2guZGF0
YSgpLCBzaXplb2Yoc2F2ZWRIYXNoKSkpCisgICAgaWYgKCFkZWNvZGVGaXhlZExlbmd0aERhdGEo
eyBzYXZlZEhhc2guZGF0YSgpLCBzaXplb2Yoc2F2ZWRIYXNoKSB9KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgcmV0dXJuIGNvbXB1dGVkSGFzaCA9PSBzYXZlZEhhc2g7CiB9CiAKLX0K
LX0KK30gLy8gbmFtZXNwYWNlIFBlcnNpc3RlbmNlCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAkocmV2
aXNpb24gMjc5NTI1KQorKysgU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERl
Y29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8d3Rm
L0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgorI2luY2x1ZGUgPHd0Zi9TcGFu
Lmg+CiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKQEAgLTM1LDE3ICszNiwxNyBAQCBuYW1lc3BhY2UgUGVyc2lzdGVuY2Ugewog
Y2xhc3MgRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXpl
X3QgYnVmZmVyU2l6ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXIoU3Bhbjxjb25z
dCB1aW50OF90Pik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5EZWNvZGVyKCk7CiAKLSAgICBz
aXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJFbmQgLSBtX2J1ZmZlcjsgfQot
ICAgIHNpemVfdCBjdXJyZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJQb3NpdGlv
biAtIG1fYnVmZmVyOyB9CisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Bh
bi5zaXplKCk7IH0KKyAgICBzaXplX3QgY3VycmVudE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXRlcmF0b3IgLSBtX3NwYW4uYmVnaW4oKTsgfQogICAgIAogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCByZXdpbmQoc2l6ZV90KTsKIAogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCB2ZXJpZnlDaGVja3N1bSgpOwogCi0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZpeGVk
TGVuZ3RoRGF0YSh1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKFNwYW48dWludDhfdD4p
OwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRp
b25hbDxib29sPiYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBEZWNvZGVyJiBvcGVyYXRvcj4+
KHN0ZDo6b3B0aW9uYWw8dWludDhfdD4mKTsKQEAgLTk0LDkgKzk1LDggQEAgcHJpdmF0ZToKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgYnVmZmVySXNMYXJn
ZUVub3VnaFRvQ29udGFpbihzaXplX3QpIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5
cGU+IERlY29kZXImIGRlY29kZU51bWJlcihzdGQ6Om9wdGlvbmFsPFR5cGU+Jik7CiAKLSAgICBj
b25zdCB1aW50OF90KiBtX2J1ZmZlcjsKLSAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZlclBvc2l0
aW9uOwotICAgIGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVyRW5kOworICAgIGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4gbV9zcGFuOworICAgIFNwYW48Y29uc3QgdWludDhfdD46Oml0ZXJhdG9yIG1f
aXRlcmF0b3I7CiAKICAgICBTSEExIG1fc2hhMTsKIH07CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudEVuY29kZXIuY3BwCShyZXZpc2lvbiAyNzk1MjUp
CisrKyBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDE5ICs0NiwxOSBAQCB1aW50OF90KiBFbmNvZGVyOjpncm93KHNp
emVfdCBzaXplKQogICAgIHJldHVybiBtX2J1ZmZlci5kYXRhKCkgKyBuZXdQb3NpdGlvbjsKIH0K
IAotdm9pZCBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYgc2hhMSwgY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit2b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3Vt
Rm9yRGF0YShTSEExJiBzaGExLCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pCiB7CiAgICAgYXV0
byB0eXBlU2FsdCA9IFNhbHQ8dWludDhfdCo+Ojp2YWx1ZTsKICAgICBzaGExLmFkZEJ5dGVzKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOwot
ICAgIHNoYTEuYWRkQnl0ZXMoZGF0YSwgc2l6ZSk7CisgICAgc2hhMS5hZGRCeXRlcyhzcGFuLmRh
dGEoKSwgc3Bhbi5zaXplKCkpOwogfQogCi12b2lkIEVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRW5jb2Rlcjo6ZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikKIHsKLSAgICB1cGRh
dGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKKyAgICB1cGRhdGVDaGVja3N1
bUZvckRhdGEobV9zaGExLCBzcGFuKTsKIAotICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6
ZSk7Ci0gICAgbWVtY3B5KGJ1ZmZlciwgZGF0YSwgc2l6ZSk7CisgICAgdWludDhfdCogYnVmZmVy
ID0gZ3JvdyhzcGFuLnNpemUoKSk7CisgICAgbWVtY3B5KGJ1ZmZlciwgc3Bhbi5kYXRhKCksIHNw
YW4uc2l6ZSgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KQEAgLTEyNSw3ICsxMjUs
NyBAQCB2b2lkIEVuY29kZXI6OmVuY29kZUNoZWNrc3VtKCkKIHsKICAgICBTSEExOjpEaWdlc3Qg
aGFzaDsKICAgICBtX3NoYTEuY29tcHV0ZUhhc2goaGFzaCk7Ci0gICAgZW5jb2RlRml4ZWRMZW5n
dGhEYXRhKGhhc2guZGF0YSgpLCBoYXNoLnNpemUoKSk7CisgICAgZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKHsgaGFzaC5kYXRhKCksIGhhc2guc2l6ZSgpIH0pOwogfQogCiB9CkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgJKHJldmlzaW9uIDI3
OTUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJh
aXRzLmg+CiAjaW5jbHVkZSA8d3RmL1NIQTEuaD4KKyNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dENvZGVyLmg+CiAKQEAgLTQzLDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB+RW5jb2RlcigpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlQ2hl
Y2tzdW0oKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERh
dGEoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKFNwYW48Y29uc3QgdWludDhfdD4pOwogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW08VD46OnZhbHVlPiog
PSBudWxscHRyPgogICAgIEVuY29kZXImIG9wZXJhdG9yPDwoY29uc3QgVCYgdCkKQEAgLTczLDcg
Kzc0LDcgQEAgcHVibGljOgogICAgIGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQogICAgIHNpemVfdCBidWZmZXJTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JE
YXRhKFNIQTEmLCBTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VHlwZT4gc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYsIFR5cGUpOwog
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSVBDRW5jb2RlciA9IGZhbHNlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMjc5NTI1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMDctMDIgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgbW9yZSBTcGFuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc2MDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpzaG93Q2VydGlmaWNhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQu
Y3BwOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6ZW5jb2RlQ0ZEYXRhKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKToKKwogMjAyMS0wNy0wMiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNPUyB3azFdIGNyeXB0by93
b3JrZXJzL3N1YnRsZS9ocnNhLXBvc3RNZXNzYWdlLXdvcmtlci5odG1sIGlzIGEgZmxha3kgZmFp
bHVyZQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5jcHAJKHJldmlzaW9uIDI3OTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDIsNyAr
NjAyLDcgQEAgYm9vbCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDZXJ0aWZpYwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2RlciBkZWNvZGVyKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9
KTsKICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvOwog
ICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGVJbmZvOwogICAgIGlmICghY2VydGlmaWNhdGVJbmZv
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCShyZXZpc2lv
biAyNzk1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRN
ZW1vcnlOb3ROZWVkZWRTbwogCiBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIFNoYXJlZEJ1ZmZl
cjo6ZGVjb2RlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH07CisgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KIAogYm9vbCBTaGFy
ZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERl
Y29kZXJHZW5lcmljLmNwcAkocmV2aXNpb24gMjc5NTI1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTgsNyArNTgsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHJlYWRTdHJpbmcoCiAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZl
cihzaXplLnZhbHVlKCkpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEo
YnVmZmVyLmRhdGEoKSwgc2l6ZS52YWx1ZSgpKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKHsgYnVmZmVyLmRhdGEoKSwgc2l6ZS52YWx1ZSgpIH0pKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gcmVzdWx0ID0gU3RyaW5nOjpmcm9tVVRGOChi
dWZmZXIuZGF0YSgpLCBzaXplLnZhbHVlKCkpOwogICAgIGlmIChyZXN1bHQuaXNOdWxsKCkpCkBA
IC04OCw3ICs4OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IEtleWVkRGVjb2QK
IAogS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRl
Y29kZXIoZGF0YSwgc2l6ZSk7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVy
KHsgZGF0YSwgc2l6ZSB9KTsKIAogICAgIG1fcm9vdERpY3Rpb25hcnkgPSBtYWtlVW5pcXVlPERp
Y3Rpb25hcnk+KCk7CiAgICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKG1fcm9vdERpY3Rpb25h
cnkuZ2V0KCkpOwpAQCAtMTE3LDcgKzExNyw3IEBAIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVk
RGVjb2RlckdlbmVyaWMKICAgICAgICAgICAgIGlmICghb2spCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKCpzaXplKTsKLSAgICAgICAg
ICAgIG9rID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoYnVmZmVyLmRhdGEoKSwgKnNp
emUpOworICAgICAgICAgICAgb2sgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IGJ1
ZmZlci5kYXRhKCksICpzaXplIH0pOwogICAgICAgICAgICAgaWYgKCFvaykKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+YWRkKCpr
ZXksIFdURk1vdmUoYnVmZmVyKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAJKHJldmlzaW9uIDI3OTUy
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJp
Yy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgdm9pZCBLZXllZEVuY29kZXJH
ZW5lcmljOjplbmNvZGVTdHJpbmcoYwogewogICAgIGF1dG8gdXRmOCA9IGtleS51dGY4KCk7CiAg
ICAgbV9lbmNvZGVyIDw8IHV0ZjgubGVuZ3RoKCk7Ci0gICAgbV9lbmNvZGVyLmVuY29kZUZpeGVk
TGVuZ3RoRGF0YSh1dGY4LmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1f
ZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoeyB1dGY4LmRhdGFBc1VJbnQ4UHRyKCksIHV0
ZjgubGVuZ3RoKCkgfSk7CiB9CiAKIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlQnl0
ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3Qgc2l6ZSkK
QEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVCeXRlcyhj
bwogICAgIG1fZW5jb2RlciA8PCBUeXBlOjpCeXRlczsKICAgICBlbmNvZGVTdHJpbmcoa2V5KTsK
ICAgICBtX2VuY29kZXIgPDwgc2l6ZTsKLSAgICBtX2VuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKGJ5dGVzLCBzaXplKTsKKyAgICBtX2VuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHsg
Ynl0ZXMsIHNpemUgfSk7CiB9CiAKIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlQm9v
bChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQu
Y3BwCShyZXZpc2lvbiAyNzk1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0NlcnRpZmljYXRlSW5mb0NGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDcgKzIx
MCw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZUNGRGF0YShFbmNvZGVyJiBlbmNvZGUKICAgICBjb25z
dCB1aW50OF90KiBieXRlUHRyID0gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKTsKIAogICAgIGVuY29k
ZXIgPDwgbGVuZ3RoOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGJ5dGVQdHIs
IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExl
bmd0aERhdGEoeyBieXRlUHRyLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgfSk7CiB9CiAK
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJldGFpblB0cjxDRkRhdGFSZWY+PiBkZWNvZGVDRkRhdGEo
RGVjb2RlciYgZGVjb2RlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9DZXJ0aWZpY2F0ZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZvLmgJKHJldmlzaW9uIDI3OTUyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUluZm8uaAko
d29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxH
UmVmUHRyPEdCeXRlQXJyCiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIgJmVuY29kZXIs
IGNvbnN0IEdSZWZQdHI8R0J5dGVBcnJheT4mIGJ5dGVBcnJheSkKICAgICB7CiAgICAgICAgIGVu
Y29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJ5dGVBcnJheS0+bGVuKTsKLSAgICAgICAg
ZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoYnl0ZUFycmF5LT5kYXRhLCBieXRlQXJyYXkt
Pmxlbik7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHsgYnl0ZUFycmF5
LT5kYXRhLCBieXRlQXJyYXktPmxlbiB9KTsKICAgICB9CiAKICAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxHUmVmUHRyPEdCeXRlQXJyYXk+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKQEAgLTg3
LDcgKzg3LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8R1JlZlB0cjxHQnl0ZUFycgogCiAg
ICAgICAgIEdSZWZQdHI8R0J5dGVBcnJheT4gYnl0ZUFycmF5ID0gYWRvcHRHUmVmKGdfYnl0ZV9h
cnJheV9zaXplZF9uZXcoKnNpemUpKTsKICAgICAgICAgZ19ieXRlX2FycmF5X3NldF9zaXplKGJ5
dGVBcnJheS5nZXQoKSwgKnNpemUpOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRM
ZW5ndGhEYXRhKGJ5dGVBcnJheS0+ZGF0YSwgKnNpemUpKQorICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHsgYnl0ZUFycmF5LT5kYXRhLCAqc2l6ZSB9KSkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBieXRlQXJyYXk7CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2lu
LmNwcAkocmV2aXNpb24gMjc5NTI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDcgQEAgc3RkOjpv
cHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdAogICAgICAgICBpZiAoSEFORExFIGNi
RGF0YSA9IDo6R2V0Q2xpcGJvYXJkRGF0YShDdXN0b21EYXRhQ2xpcGJvYXJkRm9ybWF0KSkgewog
ICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBHbG9iYWxTaXplKGNiRGF0YSk7CiAgICAgICAgICAg
ICBhdXRvIGRhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oR2xvYmFsTG9jayhjYkRhdGEpKTsK
LSAgICAgICAgICAgIGF1dG8gY3VzdG9tRGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9t
UGVyc2lzdGVuY2VEZWNvZGVyKHtkYXRhLCBzaXplfSk7CisgICAgICAgICAgICBhdXRvIGN1c3Rv
bURhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2Rlcih7eyBk
YXRhLCBzaXplIH19KTsKIAogICAgICAgICAgICAgR2xvYmFsVW5sb2NrKGNiRGF0YSk7CiAgICAg
ICAgICAgICA6OkNsb3NlQ2xpcGJvYXJkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmNwcAkocmV2aXNpb24gMjc5NTI1KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNyw3
ICs1MTcsNyBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yCiAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBj
b250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5
RGF0YVNwYW4gPSBzcWwtPmNvbHVtbkJsb2JBc1NwYW4oOCk7CiAgICAgICAgIGlmIChjb250ZW50
U2VjdXJpdHlQb2xpY3lEYXRhU3Bhbi5zaXplKCkpIHsKLSAgICAgICAgICAgIFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXIgY3NwRGVjb2Rlcihjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhU3Bhbi5k
YXRhKCksIGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGFTcGFuLnNpemUoKSk7CisgICAgICAgICAg
ICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGNzcERlY29kZXIoY29udGVudFNlY3VyaXR5UG9s
aWN5RGF0YVNwYW4pOwogICAgICAgICAgICAgY3NwRGVjb2RlciA+PiBjb250ZW50U2VjdXJpdHlQ
b2xpY3k7CiAgICAgICAgICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeSkgewogICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25E
YXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBjb250ZW50U2VjdXJpdHlQ
b2xpY3kiKTsKQEAgLTUzMCw3ICs1MzAsNyBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6
OmltcG9ydFJlY29yCiAgICAgICAgIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OkltcG9ydGVkU2NyaXB0PiBzY3JpcHRSZXNvdXJjZU1hcDsKICAgICAgICAgYXV0byBzY3Jp
cHRSZXNvdXJjZU1hcERhdGFTcGFuID0gc3FsLT5jb2x1bW5CbG9iQXNTcGFuKDEwKTsKICAgICAg
ICAgaWYgKHNjcmlwdFJlc291cmNlTWFwRGF0YVNwYW4uc2l6ZSgpKSB7Ci0gICAgICAgICAgICBX
VEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIHNjcmlwdFJlc291cmNlTWFwRGVjb2RlcihzY3JpcHRS
ZXNvdXJjZU1hcERhdGFTcGFuLmRhdGEoKSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhU3Bhbi5zaXpl
KCkpOworICAgICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBzY3JpcHRSZXNvdXJj
ZU1hcERlY29kZXIoc2NyaXB0UmVzb3VyY2VNYXBEYXRhU3Bhbik7CiAgICAgICAgICAgICBzdGQ6
Om9wdGlvbmFsPEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+PiBzY3JpcHRS
ZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRzOwogICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBE
ZWNvZGVyID4+IHNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHM7CiAgICAgICAgICAgICBp
ZiAoIXNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMpIHsKQEAgLTU0Myw3ICs1NDMsNyBA
QCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yCiAgICAgICAgIGF1dG8g
Y2VydGlmaWNhdGVJbmZvRGF0YVNwYW4gPSBzcWwtPmNvbHVtbkJsb2JBc1NwYW4oMTEpOwogICAg
ICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvOwogCi0g
ICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNhdGVJbmZvRGVjb2Rlcihj
ZXJ0aWZpY2F0ZUluZm9EYXRhU3Bhbi5kYXRhKCksIGNlcnRpZmljYXRlSW5mb0RhdGFTcGFuLnNp
emUoKSk7CisgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNhdGVJbmZv
RGVjb2RlcihjZXJ0aWZpY2F0ZUluZm9EYXRhU3Bhbik7CiAgICAgICAgIGNlcnRpZmljYXRlSW5m
b0RlY29kZXIgPj4gY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBpZiAoIWNlcnRpZmljYXRlSW5m
bykgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8gZGVjb2RlIGNlcnRpZmlj
YXRlSW5mbyIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NjcmlwdFN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAkocmV2aXNpb24gMjc5NTI1KQorKysg
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04Niw5ICs4Niw5IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0
b3JhZ2U6OnN0b3JlKGNvbnMKICAgICBhdXRvIHNjcmlwdFBhdGggPSB0aGlzLT5zY3JpcHRQYXRo
KHJlZ2lzdHJhdGlvbktleSwgc2NyaXB0VVJMKTsKICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGFyZW50UGF0aChzY3JpcHRQYXRoKSk7CiAKLSAgICBhdXRv
IGl0ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVEYXRhID0gWyZdKGNvbnN0IEZ1bmN0aW9uPGJvb2wo
Y29uc3QgdWludDhfdCosIHNpemVfdCk+JiB3cml0ZURhdGEpIHsKLSAgICAgICAgZm9yIChhdXRv
IGl0ID0gc2NyaXB0LmJ1ZmZlcigpLT5iZWdpbigpOyBpdCAhPSBzY3JpcHQuYnVmZmVyKCktPmVu
ZCgpOyArK2l0KQotICAgICAgICAgICAgd3JpdGVEYXRhKGl0LT5zZWdtZW50LT5kYXRhKCksIGl0
LT5zZWdtZW50LT5zaXplKCkpOworICAgIGF1dG8gaXRlcmF0ZU92ZXJCdWZmZXJBbmRXcml0ZURh
dGEgPSBbJl0oY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIHdyaXRl
RGF0YSkgeworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogKnNjcmlwdC5idWZmZXIoKSkKKyAg
ICAgICAgICAgIHdyaXRlRGF0YSh7IGVudHJ5LnNlZ21lbnQtPmRhdGEoKSwgZW50cnkuc2VnbWVu
dC0+c2l6ZSgpIH0pOwogICAgIH07CiAKICAgICBpZiAoIXNob3VsZFVzZUZpbGVNYXBwaW5nKHNj
cmlwdC5idWZmZXIoKS0+c2l6ZSgpKSkgewpAQCAtOTcsOCArOTcsOCBAQCBTY3JpcHRCdWZmZXIg
U1dTY3JpcHRTdG9yYWdlOjpzdG9yZShjb25zCiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihTZXJ2aWNlV29ya2VyLCAiU1dTY3JpcHRTdG9yYWdlOjpzdG9yZTogRmFpbHVyZSB0byBzdG9y
ZSAlcywgRmlsZVN5c3RlbTo6b3BlbkZpbGUoKSBmYWlsZWQiLCBzY3JpcHRQYXRoLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQotICAgICAgICBpdGVy
YXRlT3ZlckJ1ZmZlckFuZFdyaXRlRGF0YShbJl0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpIHsKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0
YSwgc2l6ZSk7CisgICAgICAgIGl0ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVEYXRhKFsmXShTcGFu
PGNvbnN0IHVpbnQ4X3Q+IHNwYW4pIHsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9G
aWxlKGhhbmRsZSwgc3Bhbi5kYXRhKCksIHNwYW4uc2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9KTsKICAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRs
ZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjc5NTI1KQorKysgU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0wNy0wMiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBtb3Jl
IFNwYW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzYwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGVSZWNvcmRIZWFkZXIpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZWFkT3JpZ2luKToKKyAg
ICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpkZWNvZGVDYWNoZXNOYW1lcyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YTo6bWFwVG9GaWxlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpjb21wdXRlU0hBMSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OkRhdGE6OnNwYW4gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpE
YXRhOjphcHBseSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRGF0YUN1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6
OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVEYXRhR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YTo6YXBw
bHkgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVu
dHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6ZGVjb2RlU3Rv
cmFnZVJlY29yZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6ZGVjb2RlUmVjb3Jk
TWV0YURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1
YnJlc291cmNlc0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJy
ZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEp
OgorICAgICAgICAoQVBJOjpkZWNvZGVDb250ZW50UnVsZUxpc3RNZXRhRGF0YSk6CisgICAgICAg
IChBUEk6OndyaXRlRGF0YVRvRmlsZSk6CisKIDIwMjEtMDctMDIgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIE1hYyBDYXRhbHlzdCBidWlsZCBm
aXggYWZ0ZXIgcjI3OTUxNC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCShyZXZp
c2lvbiAyNzk1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMwLDcgKzYzMCw3IEBA
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW4KIAogc3RkOjpvcHRpb25h
bDxDYWNoZTo6RGVjb2RlZFJlY29yZD4gQ2FjaGU6OmRlY29kZVJlY29yZEhlYWRlcihjb25zdCBT
dG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiB7Ci0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciBkZWNvZGVyKHN0b3JhZ2UuaGVhZGVyLmRhdGEoKSwgc3RvcmFnZS5oZWFkZXIuc2l6ZSgpKTsK
KyAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZS5oZWFkZXIuc3Bh
bigpKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBpbnNlcnRpb25UaW1lOwogICAgIGRl
Y29kZXIgPj4gaW5zZXJ0aW9uVGltZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5j
cHAJKHJldmlzaW9uIDI3OTUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgQ2FjaGVzOjpzdG9yZU9yaWdpbihDb21wbGV0aW9uQ2FsbGIKIAogc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IENhY2hlczo6cmVhZE9yaWdpbihjb25z
dCBEYXRhJiBkYXRhKQogewotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2Rlcihk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIg
ZGVjb2RlcihkYXRhLnNwYW4oKSk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4gdG9wT3JpZ2luOwogICAgIGRlY29kZXIgPj4gdG9wT3JpZ2luOwpAQCAt
NDA5LDcgKzQwOSw3IEBAIHN0YXRpYyBpbmxpbmUgRGF0YSBlbmNvZGVDYWNoZU5hbWVzKGNvbnMK
IAogc3RhdGljIGlubGluZSBFeHBlY3RlZDxWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5n
Pj4sIEVycm9yPiBkZWNvZGVDYWNoZXNOYW1lcyhjb25zdCBEYXRhJiBkYXRhKQogewotICAgIFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OworICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLnNwYW4oKSk7CiAg
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gY291bnQ7CiAgICAgZGVjb2RlciA+PiBjb3VudDsK
ICAgICBpZiAoIWNvdW50KQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCShyZXZpc2lvbiAyNzk1MjUpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw5IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUg
ewogRGF0YSBEYXRhOjptYXBUb0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdAogewogICAg
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgYXV0byBhcHBseURh
dGEgPSBbJl0oY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIGFw
cGxpZXIpIHsgYXBwbHkoYXBwbGllcik7IH07CisgICAgYXV0byBhcHBseURhdGEgPSBbJl0oY29u
c3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGFwcGxpZXIpIHsKKyAgICAg
ICAgYXBwbHkoYXBwbGllcik7CisgICAgfTsKICAgICBhdXRvIG1hcHBlZEZpbGUgPSBGaWxlU3lz
dGVtOjptYXBUb0ZpbGUocGF0aCwgc2l6ZSgpLCBXVEZNb3ZlKGFwcGx5RGF0YSksICZoYW5kbGUp
OwogICAgIGlmICghbWFwcGVkRmlsZSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTg3LDggKzg5
LDggQEAgU0hBMTo6RGlnZXN0IGNvbXB1dGVTSEExKGNvbnN0IERhdGEmIGRhdAogewogICAgIFNI
QTEgc2hhMTsKICAgICBzaGExLmFkZEJ5dGVzKHNhbHQuZGF0YSgpLCBzYWx0LnNpemUoKSk7Ci0g
ICAgZGF0YS5hcHBseShbJnNoYTFdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7
Ci0gICAgICAgIHNoYTEuYWRkQnl0ZXMoZGF0YSwgc2l6ZSk7CisgICAgZGF0YS5hcHBseShbJnNo
YTFdKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikgeworICAgICAgICBzaGExLmFkZEJ5dGVzKHNw
YW4uZGF0YSgpLCBzcGFuLnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0pOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZURhdGEuaAkocmV2aXNpb24gMjc5NTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbkRpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgorI2luY2x1ZGUgPHd0
Zi9TcGFuLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc0LDEyICs3NSwxMyBAQCBwdWJsaWM6CiAK
ICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CiAgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4oKSBjb25z
dCB7IHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07IH0KICAgICBib29sIGlzTWFwKCkgY29uc3Qg
eyByZXR1cm4gbV9pc01hcDsgfQogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHRyeUNyZWF0ZVNo
YXJlZE1lbW9yeSgpIGNvbnN0OwogCiAgICAgRGF0YSBzdWJyYW5nZShzaXplX3Qgb2Zmc2V0LCBz
aXplX3QpIGNvbnN0OwogCi0gICAgYm9vbCBhcHBseShjb25zdCBGdW5jdGlvbjxib29sIChjb25z
dCB1aW50OF90Kiwgc2l6ZV90KT4mKSBjb25zdDsKKyAgICBib29sIGFwcGx5KGNvbnN0IEZ1bmN0
aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JikgY29uc3Q7CiAKICAgICBEYXRhIG1hcFRv
RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDb2Nv
YS5tbQkocmV2aXNpb24gMjc5NTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTY5LDEyICs2
OSwxMiBAQCBib29sIERhdGE6OmlzTnVsbCgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2Rpc3BhdGNo
RGF0YTsKIH0KIAotYm9vbCBEYXRhOjphcHBseShjb25zdCBGdW5jdGlvbjxib29sIChjb25zdCB1
aW50OF90Kiwgc2l6ZV90KT4mIGFwcGxpZXIpIGNvbnN0Citib29sIERhdGE6OmFwcGx5KGNvbnN0
IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBhcHBsaWVyKSBjb25zdAogewog
ICAgIGlmICghbV9zaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIGRpc3Bh
dGNoX2RhdGFfYXBwbHkobV9kaXNwYXRjaERhdGEuZ2V0KCksIFsmYXBwbGllcl0oZGlzcGF0Y2hf
ZGF0YV90LCBzaXplX3QsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKSB7Ci0gICAgICAg
IHJldHVybiBhcHBsaWVyKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7
CisgICAgICAgIHJldHVybiBhcHBsaWVyKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEpLCBzaXplIH0pOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcAko
cmV2aXNpb24gMjc5NTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVEYXRhQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDEyICs3MCwxMiBA
QCBib29sIERhdGE6OmlzTnVsbCgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2J1ZmZlcjsKIH0KIAot
Ym9vbCBEYXRhOjphcHBseShjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpPiYgYXBwbGllcikgY29uc3QKK2Jvb2wgRGF0YTo6YXBwbHkoY29uc3QgRnVuY3Rpb248Ym9v
bChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGFwcGxpZXIpIGNvbnN0CiB7CiAgICAgaWYgKGlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGFwcGxpZXIoZGF0YSgp
LCBzaXplKCkpOworICAgIHJldHVybiBhcHBsaWVyKHsgZGF0YSgpLCBzaXplKCkgfSk7CiB9CiAK
IERhdGEgRGF0YTo6c3VicmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFH
TGliLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZURhdGFHTGliLmNwcAkocmV2aXNpb24gMjc5NTI1KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhR0xpYi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTczLDE0ICs3MywxNCBAQCBib29sIERhdGE6OmlzTnVsbCgpIGNvbnN0CiAg
ICAgcmV0dXJuICFtX2J1ZmZlcjsKIH0KIAotYm9vbCBEYXRhOjphcHBseShjb25zdCBGdW5jdGlv
bjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYgYXBwbGllcikgY29uc3QKK2Jvb2wgRGF0
YTo6YXBwbHkoY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGFwcGxp
ZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGdzaXplIGxlbmd0aDsKICAgICBjb25zdCBhdXRvKiBkYXRhID0gZ19ieXRlc19nZXRfZGF0
YShtX2J1ZmZlci5nZXQoKSwgJmxlbmd0aCk7Ci0gICAgcmV0dXJuIGFwcGxpZXIocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7CisgICAgcmV0dXJuIGFwcGxp
ZXIoeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoIH0pOwog
fQogCiBEYXRhIERhdGE6OnN1YnJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKSBjb25z
dApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVF
bnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAJKHJldmlzaW9uIDI3OTUyNSkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTEsNyArMTExLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVj
b2RlU3RvcgogewogICAgIGF1dG8gZW50cnkgPSBtYWtlVW5pcXVlPEVudHJ5PihzdG9yYWdlRW50
cnkpOwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRy
eS5oZWFkZXIuZGF0YSgpLCBzdG9yYWdlRW50cnkuaGVhZGVyLnNpemUoKSk7CisgICAgV1RGOjpQ
ZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFkZXIuc3BhbigpKTsK
ICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGlmICghV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZTo6ZGVjb2RlKGRlY29kZXIsIHJlc3BvbnNlKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAJKHJldmlzaW9uIDI3OTUy
NSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rv
cmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1NCw4ICs0NTQsOCBAQCBzdHJ1Y3QgUmVjb3Jk
TWV0YURhdGEgewogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVJlY29yZE1l
dGFEYXRhKFJlY29yZE1ldGFEYXRhJiBtZXRhRGF0YSwgY29uc3QgRGF0YSYgZmlsZURhdGEpCiB7
CiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0gICAgZmlsZURhdGEuYXBwbHkoWyZtZXRhRGF0
YSwgJnN1Y2Nlc3NdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7Ci0gICAgICAg
IFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLCBzaXplKTsKKyAgICBmaWxl
RGF0YS5hcHBseShbJm1ldGFEYXRhLCAmc3VjY2Vzc10oU3Bhbjxjb25zdCB1aW50OF90PiBzcGFu
KSB7CisgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihzcGFuKTsKICAg
ICAgICAgCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGNhY2hlU3RvcmFnZVZlcnNp
b247CiAgICAgICAgIGRlY29kZXIgPj4gY2FjaGVTdG9yYWdlVmVyc2lvbjsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCShyZXZpc2lvbiAyNzk1MjUpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4gU3VicmUKIHsKICAgICBhdXRvIGVudHJ5ID0gbWFrZVVu
aXF1ZTxTdWJyZXNvdXJjZXNFbnRyeT4oc3RvcmFnZUVudHJ5KTsKIAotICAgIFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXIgZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLmRhdGEoKSwgc3RvcmFn
ZUVudHJ5LmhlYWRlci5zaXplKCkpOworICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVj
b2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLnNwYW4oKSk7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0
b3I8U3VicmVzb3VyY2VJbmZvPj4gc3VicmVzb3VyY2VzOwogICAgIGRlY29kZXIgPj4gc3VicmVz
b3VyY2VzOwogICAgIGlmICghc3VicmVzb3VyY2VzKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCShyZXZp
c2lvbiAyNzk1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsMTQgKzEzNSwxNCBAQCBzdGF0
aWMgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEgZW5jb2RlCiAgICAgcmV0dXJuIFdlYktpdDo6
TmV0d29ya0NhY2hlOjpEYXRhKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgp
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBnZXREYXRhKGNvbnN0IFQmLCBjb25z
dCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYpOwotdGVtcGxhdGU8PiB2
b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0
IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNpemVfdCk+JiBmdW5jdGlvbikKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHZvaWQgZ2V0RGF0YShjb25zdCBUJiwgY29uc3QgRnVuY3Rpb248Ym9v
bChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mKTsKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0
IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNw
YW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAgICAgZGF0YS5hcHBseShmdW5jdGlv
bik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNpemVfdCk+JiBm
dW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1
bmN0aW9uKQogewotICAgIGZ1bmN0aW9uKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAg
ZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CkBAIC0xNTAsMTMgKzE1MCwxMyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb250
ZW50UnVsZUxpc3RNZXRhCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgQ29udGVu
dFJ1bGVMaXN0TWV0YURhdGEgbWV0YURhdGE7Ci0gICAgZ2V0RGF0YShmaWxlRGF0YSwgWyZtZXRh
RGF0YSwgJnN1Y2Nlc3MsICZmaWxlRGF0YV0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpIHsKKyAgICBnZXREYXRhKGZpbGVEYXRhLCBbJm1ldGFEYXRhLCAmc3VjY2VzcywgJmZpbGVE
YXRhXShTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pIHsKICAgICAgICAgLy8gVGhlIGZpbGUgZGF0
YSBzaG91bGQgYmUgbWFwcGVkIGludG8gb25lIGNvbnRpbnVvdXMgbWVtb3J5IHNlZ21lbnQgc28g
dGhlIHNpemUKICAgICAgICAgLy8gcGFzc2VkIHRvIHRoZSBhcHBsaWVyIHNob3VsZCBhbHdheXMg
ZXF1YWwgdGhlIGRhdGEgc2l6ZS4KLSAgICAgICAgaWYgKHNpemUgIT0gZmlsZURhdGEuc2l6ZSgp
KQorICAgICAgICBpZiAoc3Bhbi5zaXplKCkgIT0gZmlsZURhdGEuc2l6ZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVj
b2RlcihkYXRhLCBzaXplKTsKKyAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNv
ZGVyKHNwYW4pOwogICAgICAgICAKICAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gdmVy
c2lvbjsKICAgICAgICAgZGVjb2RlciA+PiB2ZXJzaW9uOwpAQCAtMjI4LDggKzIyOCw4IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcHBlZERhdGE+IG9wZW5BbmQKIHN0YXRpYyBib29sIHdyaXRl
RGF0YVRvRmlsZShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZmlsZURhdGEsIFBs
YXRmb3JtRmlsZUhhbmRsZSBmZCkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAgIGZp
bGVEYXRhLmFwcGx5KFtmZCwgJnN1Y2Nlc3NdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKSB7Ci0gICAgICAgIGlmICh3cml0ZVRvRmlsZShmZCwgZGF0YSwgc2l6ZSkgPT0gLTEpIHsK
KyAgICBmaWxlRGF0YS5hcHBseShbZmQsICZzdWNjZXNzXShTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNw
YW4pIHsKKyAgICAgICAgaWYgKHdyaXRlVG9GaWxlKGZkLCBzcGFuLmRhdGEoKSwgc3Bhbi5zaXpl
KCkpID09IC0xKSB7CiAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432940</attachid>
            <date>2021-07-06 09:19:50 -0700</date>
            <delta_ts>2021-07-06 22:05:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227606-20210706091949.patch</filename>
            <type>text/plain</type>
            <size>39245</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzk1ODQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDIxLTA3LTA2ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIG1vcmUgU3BhbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NjA2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IGlzIGFsd2F5cyBi
ZXR0ZXIsIHJpZ2h0PworCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAo
V1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFwVG9GaWxlKToKKyAgICAgICAgKiB3dGYvRmlsZVN5c3Rl
bS5oOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcDoKKyAg
ICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkNvZGVyPENTdHJpbmc+OjplbmNvZGUpOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8Q1N0cmluZz46OmRlY29kZSk6CisgICAgICAgIChX
VEY6OlBlcnNpc3RlbmNlOjpDb2RlcjxTdHJpbmc+OjplbmNvZGUpOgorICAgICAgICAoV1RGOjpQ
ZXJzaXN0ZW5jZTo6ZGVjb2RlU3RyaW5nVGV4dCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNl
OjpDb2RlcjxTSEExOjpEaWdlc3Q+OjplbmNvZGUpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6Q29kZXI8U0hBMTo6RGlnZXN0Pjo6ZGVjb2RlKToKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudENvZGVycy5oOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RGVjb2Rlci5jcHA6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpEZWNv
ZGVyKToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW4gY29uc3QpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
cjo6YnVmZmVyUG9pbnRlckZvckRpcmVjdFJlYWQpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXI6OmRlY29kZU51bWJlcik6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyOjp2ZXJpZnlDaGVja3N1bSk6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnREZWNvZGVyLmg6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjps
ZW5ndGggY29uc3QpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6Y3VycmVu
dE9mZnNldCBjb25zdCk6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNv
ZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OnVwZGF0ZUNoZWNr
c3VtRm9yRGF0YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNvZGVG
aXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5j
b2RlQ2hlY2tzdW0pOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rl
ci5oOgorCiAyMDIxLTA3LTAyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIFttYWNPU10gT25seSB1c2UgV2ViR0wgb24gTWV0YWwgYnkgZGVmYXVsdCBvbiBz
YWZlIHZlcnNpb25zIG9mIG1hY09TCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAkocmV2aXNpb24g
Mjc5NTg0KQorKysgU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzMiw3ICs0MzIsNyBAQCBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShjb25z
dCBTCiB9CiAjZW5kaWYKIAotTWFwcGVkRmlsZURhdGEgbWFwVG9GaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgc2l6ZV90IGJ5dGVzU2l6ZSwgRnVuY3Rpb248dm9pZChjb25zdCBGdW5jdGlvbjxib29s
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYpPiYmIGFwcGx5LCBQbGF0Zm9ybUZpbGVIYW5kbGUq
IG91dHB1dEhhbmRsZSkKK01hcHBlZEZpbGVEYXRhIG1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgsIHNpemVfdCBieXRlc1NpemUsIEZ1bmN0aW9uPHZvaWQoY29uc3QgRnVuY3Rpb248Ym9vbChT
cGFuPGNvbnN0IHVpbnQ4X3Q+KT4mKT4mJiBhcHBseSwgUGxhdGZvcm1GaWxlSGFuZGxlKiBvdXRw
dXRIYW5kbGUpCiB7CiAgICAgY29uc3RleHByIGJvb2wgZmFpbElmRmlsZUV4aXN0cyA9IHRydWU7
CiAgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVt
OjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSwgRmlsZVN5c3RlbTo6RmlsZUFjY2Vzc1Blcm1pc3Np
b246OlVzZXIsIGZhaWxJZkZpbGVFeGlzdHMpOwpAQCAtNDUyLDkgKzQ1Miw5IEBAIE1hcHBlZEZp
bGVEYXRhIG1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHAKICAgICB2b2lkKiBtYXAgPSBjb25zdF9j
YXN0PHZvaWQqPihtYXBwZWRGaWxlLmRhdGEoKSk7CiAgICAgdWludDhfdCogbWFwRGF0YSA9IHN0
YXRpY19jYXN0PHVpbnQ4X3QqPihtYXApOwogCi0gICAgYXBwbHkoWyZtYXBEYXRhXShjb25zdCB1
aW50OF90KiBjaHVuaywgc2l6ZV90IGNodW5rU2l6ZSkgewotICAgICAgICBtZW1jcHkobWFwRGF0
YSwgY2h1bmssIGNodW5rU2l6ZSk7Ci0gICAgICAgIG1hcERhdGEgKz0gY2h1bmtTaXplOworICAg
IGFwcGx5KFsmbWFwRGF0YV0oU3Bhbjxjb25zdCB1aW50OF90PiBjaHVuaykgeworICAgICAgICBt
ZW1jcHkobWFwRGF0YSwgY2h1bmsuZGF0YSgpLCBjaHVuay5zaXplKCkpOworICAgICAgICBtYXBE
YXRhICs9IGNodW5rLnNpemUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSk7CiAKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmgJKHJldmlzaW9uIDI3OTU4NCkKKysrIFNvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHV0
aWxpdHk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL1NwYW4uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC0yNzMsNyArMjc0LDcgQEAgaW5saW5lIE1hcHBlZEZpbGVEYXRhJiBNYXBwZWRGaWxlRGF0YTo6
bwogCiAvLyBUaGlzIGNyZWF0ZXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1hcHMgaXQsIHdyaXRl
IHRoZSBwcm92aWRlZCBkYXRhIHRvIGl0IGFuZCByZXR1cm5zIHRoZSBtYXBwZWQgZmlsZS4KIC8v
IFRoaXMgZnVuY3Rpb24gZmFpbHMgaWYgdGhlcmUgaXMgYWxyZWFkeSBhIGZpbGUgYXQgdGhlIGRl
c3RpbmF0aW9uIHBhdGguCi1XVEZfRVhQT1JUX1BSSVZBVEUgTWFwcGVkRmlsZURhdGEgbWFwVG9G
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgc2l6ZV90IGJ5dGVzU2l6ZSwgRnVuY3Rpb248dm9pZChj
b25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYpPiYmIGFwcGx5LCBQ
bGF0Zm9ybUZpbGVIYW5kbGUqID0gbnVsbHB0cik7CitXVEZfRVhQT1JUX1BSSVZBVEUgTWFwcGVk
RmlsZURhdGEgbWFwVG9GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgc2l6ZV90IGJ5dGVzU2l6ZSwg
RnVuY3Rpb248dm9pZChjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYp
PiYmIGFwcGx5LCBQbGF0Zm9ybUZpbGVIYW5kbGUqID0gbnVsbHB0cik7CiAKIH0gLy8gbmFtZXNw
YWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwCShyZXZpc2lvbiAyNzk1
ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIENvZGVyPENTdHJpbmc+OjplbmNv
ZGUoRW5jb2RlciYgZW5jCiAKICAgICB1aW50MzJfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7
CiAgICAgZW5jb2RlciA8PCBsZW5ndGg7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEoc3RyaW5nLmRhdGFBc1VJbnQ4UHRyKCksIGxlbmd0aCk7CisgICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEoeyBzdHJpbmcuZGF0YUFzVUludDhQdHIoKSwgbGVuZ3RoIH0pOwogfQog
CiBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IENvZGVyPENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKQEAgLTc4LDcgKzc4LDcgQEAgc3RkOjpvcHRpb25hbDxDU3RyaW5nPiBDb2RlcjxD
U3RyaW5nPjo6ZAogCiAgICAgY2hhciogYnVmZmVyOwogICAgIENTdHJpbmcgc3RyaW5nID0gQ1N0
cmluZzo6bmV3VW5pbml0aWFsaXplZCgqbGVuZ3RoLCBidWZmZXIpOwotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVy
KSwgKmxlbmd0aCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksICpsZW5ndGggfSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc3RyaW5nOwpAQCAtOTgsOSArOTgsOSBA
QCB2b2lkIENvZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvCiAgICAgZW5jb2RlciA8
PCBsZW5ndGggPDwgaXM4Qml0OwogCiAgICAgaWYgKGlzOEJpdCkKLSAgICAgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CisgICAg
ICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHsgc3RyaW5nLmNoYXJhY3RlcnM4KCks
IGxlbmd0aCB9KTsKICAgICBlbHNlCi0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzMTYo
KSksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVk
TGVuZ3RoRGF0YSh7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFy
YWN0ZXJzMTYoKSksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikgfSk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgpAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBpbmxpbmUg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGRlY28KIAogICAgIENoYXJhY3RlclR5cGUqIGJ1ZmZlcjsK
ICAgICBTdHJpbmcgc3RyaW5nID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwg
YnVmZmVyKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksIGxlbmd0aCAqIHNpemVvZihDaGFyYWN0ZXJUeXBl
KSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksIGxlbmd0aCAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSB9
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4gc3RyaW5n
OwpAQCAtMTQyLDEzICsxNDIsMTMgQEAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IENvZGVyPFN0cmlu
Zz46OmRlYwogCiB2b2lkIENvZGVyPFNIQTE6OkRpZ2VzdD46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBTSEExOjpEaWdlc3QmIGRpZ2VzdCkKIHsKLSAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShkaWdlc3QuZGF0YSgpLCBzaXplb2YoZGlnZXN0KSk7CisgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEoeyBkaWdlc3QuZGF0YSgpLCBzaXplb2YoZGlnZXN0KSB9
KTsKIH0KIAogc3RkOjpvcHRpb25hbDxTSEExOjpEaWdlc3Q+IENvZGVyPFNIQTE6OkRpZ2VzdD46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFNIQTE6OkRpZ2VzdCB0bXA7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh0bXAuZGF0YSgpLCBzaXplb2YodG1w
KSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHRtcC5kYXRhKCks
IHNpemVvZih0bXApIH0pKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biB0bXA7CiB9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29k
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dENvZGVycy5oCShyZXZpc2lvbiAyNzk1ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpCiAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4m
IHZlY3RvcikKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHZlY3Rvci5zaXplKCkpOwotICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih2ZWN0b3IuZGF0YSgpKSwgdmVjdG9yLnNp
emUoKSAqIHNpemVvZihUKSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odmVjdG9yLmRhdGEoKSksIHZlY3Rv
ci5zaXplKCkgKiBzaXplb2YoVCkgfSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQpAQCAtMTczLDcgKzE3Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2kKICAgICAgICAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiB0ZW1wOwogICAgICAgICB0
ZW1wLmdyb3coc2l6ZSk7CiAKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPih0ZW1wLmRhdGEoKSksIHNpemUgKiBzaXpl
b2YoVCkpKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHsgdGVt
cC5kYXRhKCksIHNpemUgKiBzaXplb2YoVCkgfSkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIHJldHVybiB0ZW1wOwpJbmRleDogU291cmNlL1dURi93dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAkocmV2aXNpb24gMjc5NTg0KQor
KysgU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsOSBAQAogbmFtZXNwYWNlIFdURiB7CiBuYW1lc3BhY2Ug
UGVyc2lzdGVuY2UgewogCi1EZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlclNpemUpCi0gICAgOiBtX2J1ZmZlcihidWZmZXIpCi0gICAgLCBtX2J1ZmZl
clBvc2l0aW9uKGJ1ZmZlcikKLSAgICAsIG1fYnVmZmVyRW5kKGJ1ZmZlciArIGJ1ZmZlclNpemUp
CitEZWNvZGVyOjpEZWNvZGVyKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikKKyAgICA6IG1fc3Bh
bihzcGFuKQorICAgICwgbV9pdGVyYXRvcihzcGFuLmJlZ2luKCkpCiB7CiB9CiAKQEAgLTQ0LDcg
KzQzLDcgQEAgRGVjb2Rlcjo6fkRlY29kZXIoKQogCiBib29sIERlY29kZXI6OmJ1ZmZlcklzTGFy
Z2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IHNpemUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNpemUg
PD0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZlckVuZCAtIG1fYnVmZmVyUG9zaXRpb24pOwor
ICAgIHJldHVybiBzaXplIDw9IHN0YXRpY19jYXN0PHNpemVfdD4obV9zcGFuLmVuZCgpIC0gbV9p
dGVyYXRvcik7CiB9CiAKIGNvbnN0IHVpbnQ4X3QqIERlY29kZXI6OmJ1ZmZlclBvaW50ZXJGb3JE
aXJlY3RSZWFkKHNpemVfdCBzaXplKQpAQCAtNTIsMjYgKzUxLDI3IEBAIGNvbnN0IHVpbnQ4X3Qq
IERlY29kZXI6OmJ1ZmZlclBvaW50ZXJGb3IKICAgICBpZiAoIWJ1ZmZlcklzTGFyZ2VFbm91Z2hU
b0NvbnRhaW4oc2l6ZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBkYXRh
ID0gbV9idWZmZXJQb3NpdGlvbjsKLSAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemU7CisgICAg
YXV0byBpdGVyYXRvciA9IG1faXRlcmF0b3I7CisgICAgbV9pdGVyYXRvciArPSBzaXplOwogCi0g
ICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hhMSwgZGF0YSwgc2l6ZSk7Ci0g
ICAgcmV0dXJuIGRhdGE7CisgICAgRW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKG1fc2hh
MSwgeyBpdGVyYXRvciwgc2l6ZSB9KTsKKyAgICByZXR1cm4gaXRlcmF0b3I7CiB9CiAKLWJvb2wg
RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
KQorYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aERhdGEoU3Bhbjx1aW50OF90PiBzcGFu
KQogewotICAgIGF1dG8gYnVmZmVyID0gYnVmZmVyUG9pbnRlckZvckRpcmVjdFJlYWQoc2l6ZSk7
CisgICAgYXV0byBidWZmZXIgPSBidWZmZXJQb2ludGVyRm9yRGlyZWN0UmVhZChzcGFuLnNpemUo
KSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtZW1jcHko
ZGF0YSwgYnVmZmVyLCBzaXplKTsKKyAgICBtZW1jcHkoc3Bhbi5kYXRhKCksIGJ1ZmZlciwgc3Bh
bi5zaXplKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIERlY29kZXI6OnJld2luZChz
aXplX3Qgc2l6ZSkKIHsKLSAgICBpZiAobV9idWZmZXJQb3NpdGlvbiAtIHNpemUgPj0gbV9idWZm
ZXIpIHsKLSAgICAgICAgbV9idWZmZXJQb3NpdGlvbiAtPSBzaXplOworICAgIC8vIEZJWE1FOiBj
aGVjayBmb3IgdW5kZXJmbG93LgorICAgIGlmIChtX2l0ZXJhdG9yIC0gc2l6ZSA+PSBtX3NwYW4u
YmVnaW4oKSkgeworICAgICAgICBtX2l0ZXJhdG9yIC09IHNpemU7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC04NCw4ICs4NCw4IEBAIERlY29kZXIm
IERlY29kZXI6OmRlY29kZU51bWJlcihzdGQ6Om9wdGkKICAgICAgICAgcmV0dXJuICp0aGlzOwog
CiAgICAgVCB2YWx1ZTsKLSAgICBtZW1jcHkoJnZhbHVlLCBtX2J1ZmZlclBvc2l0aW9uLCBzaXpl
b2YoVCkpOwotICAgIG1fYnVmZmVyUG9zaXRpb24gKz0gc2l6ZW9mKFQpOworICAgIG1lbWNweSgm
dmFsdWUsIG1faXRlcmF0b3IsIHNpemVvZihUKSk7CisgICAgbV9pdGVyYXRvciArPSBzaXplb2Yo
VCk7CiAKICAgICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvck51bWJlcihtX3NoYTEsIHZhbHVl
KTsKICAgICBvcHRpb25hbCA9IHZhbHVlOwpAQCAtMTQ4LDExICsxNDgsMTEgQEAgYm9vbCBEZWNv
ZGVyOjp2ZXJpZnlDaGVja3N1bSgpCiAgICAgbV9zaGExLmNvbXB1dGVIYXNoKGNvbXB1dGVkSGFz
aCk7CiAKICAgICBTSEExOjpEaWdlc3Qgc2F2ZWRIYXNoOwotICAgIGlmICghZGVjb2RlRml4ZWRM
ZW5ndGhEYXRhKHNhdmVkSGFzaC5kYXRhKCksIHNpemVvZihzYXZlZEhhc2gpKSkKKyAgICBpZiAo
IWRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHNhdmVkSGFzaC5kYXRhKCksIHNpemVvZihzYXZlZEhh
c2gpIH0pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gY29tcHV0ZWRIYXNo
ID09IHNhdmVkSGFzaDsKIH0KIAotfQotfQorfSAvLyBuYW1lc3BhY2UgUGVyc2lzdGVuY2UKK30g
Ly8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudERlY29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9Q
ZXJzaXN0ZW50RGVjb2Rlci5oCShyZXZpc2lvbiAyNzk1ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9TSEEx
Lmg+CisjaW5jbHVkZSA8d3RmL1NwYW4uaD4KICNpbmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudENvZGVyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMzUsMTcgKzM2LDE3IEBAIG5h
bWVzcGFjZSBQZXJzaXN0ZW5jZSB7CiBjbGFzcyBEZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2Rlcihjb25z
dCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKTsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgRGVjb2RlcihTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgfkRlY29kZXIoKTsKIAotICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlckVuZCAtIG1fYnVmZmVyOyB9Ci0gICAgc2l6ZV90IGN1cnJlbnRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlclBvc2l0aW9uIC0gbV9idWZmZXI7IH0KKyAgICBzaXplX3QgbGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9zcGFuLnNpemUoKTsgfQorICAgIHNpemVfdCBjdXJyZW50T2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciAtIG1fc3Bhbi5iZWdpbigpOyB9CiAgICAg
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHJld2luZChz
aXplX3QpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IHZlcmlmeUNoZWNrc3VtKCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3QqLCBzaXplX3QpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExl
bmd0aERhdGEoU3Bhbjx1aW50OF90Pik7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgRGVjb2Rl
ciYgb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPGJvb2w+Jik7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDx1aW50OF90PiYpOwpAQCAtOTQs
OSArOTUsOCBAQCBwcml2YXRlOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVfdCkgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4gRGVjb2RlciYgZGVjb2RlTnVtYmVyKHN0ZDo6b3B0
aW9uYWw8VHlwZT4mKTsKIAotICAgIGNvbnN0IHVpbnQ4X3QqIG1fYnVmZmVyOwotICAgIGNvbnN0
IHVpbnQ4X3QqIG1fYnVmZmVyUG9zaXRpb247Ci0gICAgY29uc3QgdWludDhfdCogbV9idWZmZXJF
bmQ7CisgICAgY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiBtX3NwYW47CisgICAgU3Bhbjxjb25z
dCB1aW50OF90Pjo6aXRlcmF0b3IgbV9pdGVyYXRvcjsKIAogICAgIFNIQTEgbV9zaGExOwogfTsK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rl
ci5jcHAJKHJldmlzaW9uIDI3OTU4NCkKKysrIFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnRFbmNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTkgKzQ2LDE5IEBAIHVp
bnQ4X3QqIEVuY29kZXI6Omdyb3coc2l6ZV90IHNpemUpCiAgICAgcmV0dXJuIG1fYnVmZmVyLmRh
dGEoKSArIG5ld1Bvc2l0aW9uOwogfQogCi12b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9y
RGF0YShTSEExJiBzaGExLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQg
RW5jb2Rlcjo6dXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmIHNoYTEsIFNwYW48Y29uc3QgdWlu
dDhfdD4gc3BhbikKIHsKICAgICBhdXRvIHR5cGVTYWx0ID0gU2FsdDx1aW50OF90Kj46OnZhbHVl
OwogICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnR5cGVTYWx0
KSwgc2l6ZW9mKHR5cGVTYWx0KSk7Ci0gICAgc2hhMS5hZGRCeXRlcyhkYXRhLCBzaXplKTsKKyAg
ICBzaGExLmFkZEJ5dGVzKHNwYW4uZGF0YSgpLCBzcGFuLnNpemUoKSk7CiB9CiAKLXZvaWQgRW5j
b2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKQordm9pZCBFbmNvZGVyOjplbmNvZGVGaXhlZExlbmd0aERhdGEoU3Bhbjxjb25zdCB1aW50
OF90PiBzcGFuKQogewotICAgIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIGRhdGEsIHNp
emUpOworICAgIHVwZGF0ZUNoZWNrc3VtRm9yRGF0YShtX3NoYTEsIHNwYW4pOwogCi0gICAgdWlu
dDhfdCogYnVmZmVyID0gZ3JvdyhzaXplKTsKLSAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXpl
KTsKKyAgICB1aW50OF90KiBidWZmZXIgPSBncm93KHNwYW4uc2l6ZSgpKTsKKyAgICBtZW1jcHko
YnVmZmVyLCBzcGFuLmRhdGEoKSwgc3Bhbi5zaXplKCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUeXBlPgpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgRW5jb2Rlcjo6ZW5jb2RlQ2hlY2tzdW0o
KQogewogICAgIFNIQTE6OkRpZ2VzdCBoYXNoOwogICAgIG1fc2hhMS5jb21wdXRlSGFzaChoYXNo
KTsKLSAgICBlbmNvZGVGaXhlZExlbmd0aERhdGEoaGFzaC5kYXRhKCksIGhhc2guc2l6ZSgpKTsK
KyAgICBlbmNvZGVGaXhlZExlbmd0aERhdGEoeyBoYXNoLmRhdGEoKSwgaGFzaC5zaXplKCkgfSk7
CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNv
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dEVuY29kZXIuaAkocmV2aXNpb24gMjc5NTg0KQorKysgU291cmNlL1dURi93dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudEVuY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
CiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgorI2lu
Y2x1ZGUgPHd0Zi9TcGFuLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaD4KIApAQCAtNDMsNyArNDQsNyBAQCBwdWJs
aWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5FbmNvZGVyKCk7CiAKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBlbmNvZGVDaGVja3N1bSgpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoU3Bhbjxjb25zdCB1
aW50OF90Pik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfZW51bTxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgRW5jb2RlciYgb3BlcmF0b3I8
PChjb25zdCBUJiB0KQpAQCAtNzMsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgdWludDhf
dCogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAgICAgc2l6ZV90
IGJ1ZmZlclNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7IH0KIAotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYs
IGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCB1cGRhdGVDaGVja3N1bUZvckRhdGEoU0hBMSYsIFNwYW48Y29uc3QgdWludDhfdD4pOwog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPiBzdGF0aWMgdm9pZCB1cGRhdGVDaGVja3N1bUZv
ck51bWJlcihTSEExJiwgVHlwZSk7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENF
bmNvZGVyID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzk1ODQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAy
MS0wNy0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFVzZSBtb3JlIFNwYW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNzYwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDZXJ0aWZpY2F0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHA6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpl
bmNvZGVDRkRhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6
OmltcG9ydFJlY29yZHMpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3Jp
cHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c3RvcmUp
OgorCiAyMDIxLTA3LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzk0OTUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAkocmV2aXNpb24gMjc5
NTg0KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYwMiw3ICs2MDIsNyBAQCBib29sIEluc3BlY3RvckZyb250
ZW5kSG9zdDo6c2hvd0NlcnRpZmljCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2Rlcih7
IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH0pOwogICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlm
aWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CiAgICAgZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUlu
Zm87CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAJKHJldmlzaW9uIDI3OTU4NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxOSw3ICszMTks
NyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvCiAKIFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkg
fTsKKyAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgp
KSwgc2l6ZSgpIH19OwogfQogCiBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBT
aGFyZWRCdWZmZXImIG90aGVyKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCShyZXZpc2lvbiAy
Nzk1ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2Rlckdl
bmVyaWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gcmVhZFN0cmluZygKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAKICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKHNpemUudmFsdWUoKSk7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShidWZmZXIuZGF0YSgpLCBzaXplLnZhbHVlKCkp
KQorICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoeyBidWZmZXIuZGF0YSgp
LCBzaXplLnZhbHVlKCkgfSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0
byByZXN1bHQgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5kYXRhKCksIHNpemUudmFsdWUoKSk7
CiAgICAgaWYgKHJlc3VsdC5pc051bGwoKSkKQEAgLTg4LDcgKzg4LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWREZWNvZAogCiBLZXllZERlY29kZXJHZW5lcmljOjpLZXll
ZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAg
IFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLCBzaXplKTsKKyAgICBXVEY6
OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoeyBkYXRhLCBzaXplIH0pOwogCiAgICAgbV9y
b290RGljdGlvbmFyeSA9IG1ha2VVbmlxdWU8RGljdGlvbmFyeT4oKTsKICAgICBtX2RpY3Rpb25h
cnlTdGFjay5hcHBlbmQobV9yb290RGljdGlvbmFyeS5nZXQoKSk7CkBAIC0xMTcsNyArMTE3LDcg
QEAgS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYwogICAgICAgICAgICAg
aWYgKCFvaykKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50
OF90PiBidWZmZXIoKnNpemUpOwotICAgICAgICAgICAgb2sgPSBkZWNvZGVyLmRlY29kZUZpeGVk
TGVuZ3RoRGF0YShidWZmZXIuZGF0YSgpLCAqc2l6ZSk7CisgICAgICAgICAgICBvayA9IGRlY29k
ZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHsgYnVmZmVyLmRhdGEoKSwgKnNpemUgfSk7CiAgICAg
ICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgbV9k
aWN0aW9uYXJ5U3RhY2subGFzdCgpLT5hZGQoKmtleSwgV1RGTW92ZShidWZmZXIpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmNwcAkocmV2aXNpb24gMjc5NTg0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NyArNDAsNyBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZVN0cmluZyhjCiB7CiAg
ICAgYXV0byB1dGY4ID0ga2V5LnV0ZjgoKTsKICAgICBtX2VuY29kZXIgPDwgdXRmOC5sZW5ndGgo
KTsKLSAgICBtX2VuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHV0ZjguZGF0YUFzVUludDhQ
dHIoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9lbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YSh7IHV0ZjguZGF0YUFzVUludDhQdHIoKSwgdXRmOC5sZW5ndGgoKSB9KTsKIH0KIAogdm9pZCBL
ZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
dWludDhfdCogYnl0ZXMsIHNpemVfdCBzaXplKQpAQCAtNDgsNyArNDgsNyBAQCB2b2lkIEtleWVk
RW5jb2RlckdlbmVyaWM6OmVuY29kZUJ5dGVzKGNvCiAgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkJ5
dGVzOwogICAgIGVuY29kZVN0cmluZyhrZXkpOwogICAgIG1fZW5jb2RlciA8PCBzaXplOwotICAg
IG1fZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoYnl0ZXMsIHNpemUpOworICAgIG1fZW5j
b2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoeyBieXRlcywgc2l6ZSB9KTsKIH0KIAogdm9pZCBL
ZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sIHZh
bHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0
ZUluZm9DRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAJKHJldmlzaW9uIDI3OTU4NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNyArMjEwLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlQ0ZE
YXRhKEVuY29kZXImIGVuY29kZQogICAgIGNvbnN0IHVpbnQ4X3QqIGJ5dGVQdHIgPSBDRkRhdGFH
ZXRCeXRlUHRyKGRhdGEpOwogCiAgICAgZW5jb2RlciA8PCBsZW5ndGg7Ci0gICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoYnl0ZVB0ciwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgp
KTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YSh7IGJ5dGVQdHIsIHN0YXRpY19j
YXN0PHNpemVfdD4obGVuZ3RoKSB9KTsKIH0KIAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmV0YWlu
UHRyPENGRGF0YVJlZj4+IGRlY29kZUNGRGF0YShEZWNvZGVyJiBkZWNvZGVyKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRpZmljYXRlSW5mby5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0
ZUluZm8uaAkocmV2aXNpb24gMjc5NTg0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL0NlcnRpZmljYXRlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3
IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvZGVyPEdSZWZQdHI8R0J5dGVBcnIKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciAmZW5jb2RlciwgY29uc3QgR1JlZlB0cjxHQnl0ZUFycmF5PiYg
Ynl0ZUFycmF5KQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oYnl0ZUFycmF5LT5sZW4pOwotICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShieXRlQXJyYXktPmRhdGEsIGJ5dGVBcnJheS0+bGVuKTsKKyAgICAgICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEoeyBieXRlQXJyYXktPmRhdGEsIGJ5dGVBcnJheS0+bGVuIH0pOwog
ICAgIH0KIAogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdSZWZQdHI8R0J5dGVBcnJheT4+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQpAQCAtODcsNyArODcsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBDb2RlcjxHUmVmUHRyPEdCeXRlQXJyCiAKICAgICAgICAgR1JlZlB0cjxHQnl0ZUFycmF5PiBi
eXRlQXJyYXkgPSBhZG9wdEdSZWYoZ19ieXRlX2FycmF5X3NpemVkX25ldygqc2l6ZSkpOwogICAg
ICAgICBnX2J5dGVfYXJyYXlfc2V0X3NpemUoYnl0ZUFycmF5LmdldCgpLCAqc2l6ZSk7Ci0gICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoYnl0ZUFycmF5LT5kYXRhLCAq
c2l6ZSkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoeyBieXRl
QXJyYXktPmRhdGEsICpzaXplIH0pKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgcmV0dXJuIGJ5dGVBcnJheTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCShyZXZpc2lvbiAyNzk1ODQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1MSw3ICsyNTEsNyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRh
PiBQYXN0CiAgICAgICAgIGlmIChIQU5ETEUgY2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKEN1
c3RvbURhdGFDbGlwYm9hcmRGb3JtYXQpKSB7CiAgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IEds
b2JhbFNpemUoY2JEYXRhKTsKICAgICAgICAgICAgIGF1dG8gZGF0YSA9IHN0YXRpY19jYXN0PHVp
bnQ4X3QqPihHbG9iYWxMb2NrKGNiRGF0YSkpOwotICAgICAgICAgICAgYXV0byBjdXN0b21EYXRh
ID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoe2RhdGEsIHNp
emV9KTsKKyAgICAgICAgICAgIGF1dG8gY3VzdG9tRGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKHt7IGRhdGEsIHNpemUgfX0pOwogCiAgICAgICAgICAg
ICBHbG9iYWxVbmxvY2soY2JEYXRhKTsKICAgICAgICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9u
RGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAyNzk1ODQpCisrKyBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE3LDcgKzUxNyw3IEBAIFN0cmluZyBSZWdpc3RyYXRp
b25EYXRhYmFzZTo6aW1wb3J0UmVjb3IKICAgICAgICAgc3RkOjpvcHRpb25hbDxDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICAg
ICAgYXV0byBjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhU3BhbiA9IHNxbC0+Y29sdW1uQmxvYkFz
U3Bhbig4KTsKICAgICAgICAgaWYgKGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGFTcGFuLnNpemUo
KSkgewotICAgICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBjc3BEZWNvZGVyKGNv
bnRlbnRTZWN1cml0eVBvbGljeURhdGFTcGFuLmRhdGEoKSwgY29udGVudFNlY3VyaXR5UG9saWN5
RGF0YVNwYW4uc2l6ZSgpKTsKKyAgICAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIg
Y3NwRGVjb2Rlcihjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhU3Bhbik7CiAgICAgICAgICAgICBj
c3BEZWNvZGVyID4+IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICAgICAgICAgIGlmICghY29u
dGVudFNlY3VyaXR5UG9saWN5KSB7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
U2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBGYWls
ZWQgdG8gZGVjb2RlIGNvbnRlbnRTZWN1cml0eVBvbGljeSIpOwpAQCAtNTMwLDcgKzUzMCw3IEBA
IFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3IKICAgICAgICAgSGFzaE1h
cDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJl
c291cmNlTWFwOwogICAgICAgICBhdXRvIHNjcmlwdFJlc291cmNlTWFwRGF0YVNwYW4gPSBzcWwt
PmNvbHVtbkJsb2JBc1NwYW4oMTApOwogICAgICAgICBpZiAoc2NyaXB0UmVzb3VyY2VNYXBEYXRh
U3Bhbi5zaXplKCkpIHsKLSAgICAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgc2Ny
aXB0UmVzb3VyY2VNYXBEZWNvZGVyKHNjcmlwdFJlc291cmNlTWFwRGF0YVNwYW4uZGF0YSgpLCBz
Y3JpcHRSZXNvdXJjZU1hcERhdGFTcGFuLnNpemUoKSk7CisgICAgICAgICAgICBXVEY6OlBlcnNp
c3RlbmNlOjpEZWNvZGVyIHNjcmlwdFJlc291cmNlTWFwRGVjb2RlcihzY3JpcHRSZXNvdXJjZU1h
cERhdGFTcGFuKTsKICAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxVUkwsIEltcG9y
dGVkU2NyaXB0QXR0cmlidXRlcz4+IHNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHM7CiAg
ICAgICAgICAgICBzY3JpcHRSZXNvdXJjZU1hcERlY29kZXIgPj4gc2NyaXB0UmVzb3VyY2VNYXBX
aXRob3V0U2NyaXB0czsKICAgICAgICAgICAgIGlmICghc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0
U2NyaXB0cykgewpAQCAtNTQzLDcgKzU0Myw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6aW1wb3J0UmVjb3IKICAgICAgICAgYXV0byBjZXJ0aWZpY2F0ZUluZm9EYXRhU3BhbiA9IHNx
bC0+Y29sdW1uQmxvYkFzU3BhbigxMSk7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNh
dGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CiAKLSAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVj
b2RlciBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyKGNlcnRpZmljYXRlSW5mb0RhdGFTcGFuLmRhdGEo
KSwgY2VydGlmaWNhdGVJbmZvRGF0YVNwYW4uc2l6ZSgpKTsKKyAgICAgICAgV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyKGNlcnRpZmljYXRlSW5mb0RhdGFT
cGFuKTsKICAgICAgICAgY2VydGlmaWNhdGVJbmZvRGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87
CiAgICAgICAgIGlmICghY2VydGlmaWNhdGVJbmZvKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29y
ZHM6IEZhaWxlZCB0byBkZWNvZGUgY2VydGlmaWNhdGVJbmZvIik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3Jh
Z2UuY3BwCShyZXZpc2lvbiAyNzk1ODQpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDkgKzg2
LDkgQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6c3RvcmUoY29ucwogICAgIGF1dG8g
c2NyaXB0UGF0aCA9IHRoaXMtPnNjcmlwdFBhdGgocmVnaXN0cmF0aW9uS2V5LCBzY3JpcHRVUkwp
OwogICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXJlbnRQ
YXRoKHNjcmlwdFBhdGgpKTsKIAotICAgIGF1dG8gaXRlcmF0ZU92ZXJCdWZmZXJBbmRXcml0ZURh
dGEgPSBbJl0oY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIHdy
aXRlRGF0YSkgewotICAgICAgICBmb3IgKGF1dG8gaXQgPSBzY3JpcHQuYnVmZmVyKCktPmJlZ2lu
KCk7IGl0ICE9IHNjcmlwdC5idWZmZXIoKS0+ZW5kKCk7ICsraXQpCi0gICAgICAgICAgICB3cml0
ZURhdGEoaXQtPnNlZ21lbnQtPmRhdGEoKSwgaXQtPnNlZ21lbnQtPnNpemUoKSk7CisgICAgYXV0
byBpdGVyYXRlT3ZlckJ1ZmZlckFuZFdyaXRlRGF0YSA9IFsmXShjb25zdCBGdW5jdGlvbjxib29s
KFNwYW48Y29uc3QgdWludDhfdD4pPiYgd3JpdGVEYXRhKSB7CisgICAgICAgIGZvciAoYXV0byYg
ZW50cnkgOiAqc2NyaXB0LmJ1ZmZlcigpKQorICAgICAgICAgICAgd3JpdGVEYXRhKHsgZW50cnku
c2VnbWVudC0+ZGF0YSgpLCBlbnRyeS5zZWdtZW50LT5zaXplKCkgfSk7CiAgICAgfTsKIAogICAg
IGlmICghc2hvdWxkVXNlRmlsZU1hcHBpbmcoc2NyaXB0LmJ1ZmZlcigpLT5zaXplKCkpKSB7CkBA
IC05Nyw4ICs5Nyw4IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnMK
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJTV1NjcmlwdFN0
b3JhZ2U6OnN0b3JlOiBGYWlsdXJlIHRvIHN0b3JlICVzLCBGaWxlU3lzdGVtOjpvcGVuRmlsZSgp
IGZhaWxlZCIsIHNjcmlwdFBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm4g
eyB9OwogICAgICAgICB9Ci0gICAgICAgIGl0ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVEYXRhKFsm
XShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgewotICAgICAgICAgICAgRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCBkYXRhLCBzaXplKTsKKyAgICAgICAgaXRlcmF0ZU92
ZXJCdWZmZXJBbmRXcml0ZURhdGEoWyZdKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikgeworICAg
ICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCBzcGFuLmRhdGEoKSwgc3Bh
bi5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0pOwogICAgICAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
Nzk1ODQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM3IEBACisyMDIxLTA3LTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgVXNlIG1vcmUgU3BhbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2Fj
aGU6OmRlY29kZVJlY29yZEhlYWRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9y
YWdlOjpDYWNoZXM6OnJlYWRPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OmRlY29kZUNhY2hlc05hbWVzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhOjpt
YXBUb0ZpbGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmNvbXB1dGVT
SEExKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmg6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YTo6c3BhbiBjb25zdCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6OmFwcGx5IGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ3VybC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YTo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFHTGliLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpEYXRhOjphcHBseSBjb25zdCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpkZWNvZGVSZWNvcmRNZXRhRGF0YSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlc0VudHJ5OjpkZWNvZGVTdG9yYWdl
UmVjb3JkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcDoKKyAgICAgICAgKEFQSTo6Z2V0RGF0YSk6CisgICAgICAgIChBUEk6OmRlY29kZUNvbnRl
bnRSdWxlTGlzdE1ldGFEYXRhKToKKyAgICAgICAgKEFQSTo6d3JpdGVEYXRhVG9GaWxlKToKKwog
MjAyMS0wNy0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTjogW2lPU10gQVNTRVJUSU9OIEZBSUxFRDogIW1fbWVzc2FnZVJlY2VpdmVyTWFw
Q291bnQgdW5kZXIgV2ViS2l0OjpSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXI6On5SZW1vdGVS
ZW1vdGVDb21tYW5kTGlzdGVuZXIoKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAJ
KHJldmlzaW9uIDI3OTU4NCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzAsNyArNjMw
LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbgogCiBzdGQ6Om9w
dGlvbmFsPENhY2hlOjpEZWNvZGVkUmVjb3JkPiBDYWNoZTo6ZGVjb2RlUmVjb3JkSGVhZGVyKGNv
bnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKIHsKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyIGRlY29kZXIoc3RvcmFnZS5oZWFkZXIuZGF0YSgpLCBzdG9yYWdlLmhlYWRlci5zaXpl
KCkpOworICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihzdG9yYWdlLmhlYWRl
ci5zcGFuKCkpOwogCiAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGluc2VydGlvblRpbWU7CiAg
ICAgZGVjb2RlciA+PiBpbnNlcnRpb25UaW1lOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGVzLmNwcAkocmV2aXNpb24gMjc5NTg0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTIsNyArMTEyLDcgQEAgdm9pZCBDYWNoZXM6OnN0b3JlT3JpZ2luKENvbXBsZXRpb25DYWxsYgog
CiBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gQ2FjaGVzOjpyZWFkT3JpZ2lu
KGNvbnN0IERhdGEmIGRhdGEpCiB7Ci0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNv
ZGVyKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVj
b2RlciBkZWNvZGVyKGRhdGEuc3BhbigpKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BPcmlnaW47CiAgICAgZGVjb2RlciA+PiB0b3BPcmlnaW47
CkBAIC00MDksNyArNDA5LDcgQEAgc3RhdGljIGlubGluZSBEYXRhIGVuY29kZUNhY2hlTmFtZXMo
Y29ucwogCiBzdGF0aWMgaW5saW5lIEV4cGVjdGVkPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiwgRXJyb3I+IGRlY29kZUNhY2hlc05hbWVzKGNvbnN0IERhdGEmIGRhdGEpCiB7Ci0g
ICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSk7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKGRhdGEuc3Bhbigp
KTsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBjb3VudDsKICAgICBkZWNvZGVyID4+IGNv
dW50OwogICAgIGlmICghY291bnQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAJKHJldmlzaW9uIDI3OTU4
NCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIE5ldHdvcmtD
YWNoZSB7CiBEYXRhIERhdGE6Om1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0CiB7
CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKLSAgICBhdXRvIGFw
cGx5RGF0YSA9IFsmXShjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
PiYgYXBwbGllcikgeyBhcHBseShhcHBsaWVyKTsgfTsKKyAgICBhdXRvIGFwcGx5RGF0YSA9IFsm
XShjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgYXBwbGllcikgewor
ICAgICAgICBhcHBseShhcHBsaWVyKTsKKyAgICB9OwogICAgIGF1dG8gbWFwcGVkRmlsZSA9IEZp
bGVTeXN0ZW06Om1hcFRvRmlsZShwYXRoLCBzaXplKCksIFdURk1vdmUoYXBwbHlEYXRhKSwgJmhh
bmRsZSk7CiAgICAgaWYgKCFtYXBwZWRGaWxlKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtODcs
OCArODksOCBAQCBTSEExOjpEaWdlc3QgY29tcHV0ZVNIQTEoY29uc3QgRGF0YSYgZGF0CiB7CiAg
ICAgU0hBMSBzaGExOwogICAgIHNoYTEuYWRkQnl0ZXMoc2FsdC5kYXRhKCksIHNhbHQuc2l6ZSgp
KTsKLSAgICBkYXRhLmFwcGx5KFsmc2hhMV0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpIHsKLSAgICAgICAgc2hhMS5hZGRCeXRlcyhkYXRhLCBzaXplKTsKKyAgICBkYXRhLmFwcGx5
KFsmc2hhMV0oU3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKSB7CisgICAgICAgIHNoYTEuYWRkQnl0
ZXMoc3Bhbi5kYXRhKCksIHNwYW4uc2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRGF0YS5oCShyZXZpc2lvbiAyNzk1ODQpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9TSEExLmg+CisjaW5jbHVk
ZSA8d3RmL1NwYW4uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNzQsMTIgKzc1LDEzIEBAIHB1Ymxp
YzoKIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIFNwYW48Y29uc3QgdWludDhfdD4gc3Bhbigp
IGNvbnN0IHsgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsgfQogICAgIGJvb2wgaXNNYXAoKSBj
b25zdCB7IHJldHVybiBtX2lzTWFwOyB9CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gdHJ5Q3Jl
YXRlU2hhcmVkTWVtb3J5KCkgY29uc3Q7CiAKICAgICBEYXRhIHN1YnJhbmdlKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCkgY29uc3Q7CiAKLSAgICBib29sIGFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2wg
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYpIGNvbnN0OworICAgIGJvb2wgYXBwbHkoY29uc3Qg
RnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mKSBjb25zdDsKIAogICAgIERhdGEg
bWFwVG9GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0
YUNvY29hLm1tCShyZXZpc2lvbiAyNzk1ODQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjks
MTIgKzY5LDEyIEBAIGJvb2wgRGF0YTo6aXNOdWxsKCkgY29uc3QKICAgICByZXR1cm4gIW1fZGlz
cGF0Y2hEYXRhOwogfQogCi1ib29sIERhdGE6OmFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2wgKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYgYXBwbGllcikgY29uc3QKK2Jvb2wgRGF0YTo6YXBwbHko
Y29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGFwcGxpZXIpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3NpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4g
ZGlzcGF0Y2hfZGF0YV9hcHBseShtX2Rpc3BhdGNoRGF0YS5nZXQoKSwgWyZhcHBsaWVyXShkaXNw
YXRjaF9kYXRhX3QsIHNpemVfdCwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAg
ICAgICAgcmV0dXJuIGFwcGxpZXIoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBz
aXplKTsKKyAgICAgICAgcmV0dXJuIGFwcGxpZXIoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YSksIHNpemUgfSk7CiAgICAgfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwu
Y3BwCShyZXZpc2lvbiAyNzk1ODQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTIgKzcw
LDEyIEBAIGJvb2wgRGF0YTo6aXNOdWxsKCkgY29uc3QKICAgICByZXR1cm4gIW1fYnVmZmVyOwog
fQogCi1ib29sIERhdGE6OmFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCos
IHNpemVfdCk+JiBhcHBsaWVyKSBjb25zdAorYm9vbCBEYXRhOjphcHBseShjb25zdCBGdW5jdGlv
bjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgYXBwbGllcikgY29uc3QKIHsKICAgICBpZiAo
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gYXBwbGllcihk
YXRhKCksIHNpemUoKSk7CisgICAgcmV0dXJuIGFwcGxpZXIoeyBkYXRhKCksIHNpemUoKSB9KTsK
IH0KIAogRGF0YSBEYXRhOjpzdWJyYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkgY29u
c3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RGF0YUdMaWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRGF0YUdMaWIuY3BwCShyZXZpc2lvbiAyNzk1ODQpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFHTGliLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzMsMTQgKzczLDE0IEBAIGJvb2wgRGF0YTo6aXNOdWxsKCkgY29u
c3QKICAgICByZXR1cm4gIW1fYnVmZmVyOwogfQogCi1ib29sIERhdGE6OmFwcGx5KGNvbnN0IEZ1
bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNpemVfdCk+JiBhcHBsaWVyKSBjb25zdAorYm9v
bCBEYXRhOjphcHBseShjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYg
YXBwbGllcikgY29uc3QKIHsKICAgICBpZiAoIW1fc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgZ3NpemUgbGVuZ3RoOwogICAgIGNvbnN0IGF1dG8qIGRhdGEgPSBnX2J5dGVzX2dl
dF9kYXRhKG1fYnVmZmVyLmdldCgpLCAmbGVuZ3RoKTsKLSAgICByZXR1cm4gYXBwbGllcihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4g
YXBwbGllcih7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgg
fSk7CiB9CiAKIERhdGEgRGF0YTo6c3VicmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAkocmV2aXNpb24gMjc5NTg0KQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExMSw3ICsxMTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5
OjpkZWNvZGVTdG9yCiB7CiAgICAgYXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8RW50cnk+KHN0b3Jh
Z2VFbnRyeSk7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFn
ZUVudHJ5LmhlYWRlci5kYXRhKCksIHN0b3JhZ2VFbnRyeS5oZWFkZXIuc2l6ZSgpKTsKKyAgICBX
VEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5zcGFu
KCkpOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgaWYgKCFX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpkZWNvZGUoZGVjb2RlciwgcmVzcG9uc2UpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAkocmV2aXNpb24g
Mjc5NTg0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU0LDggKzQ1NCw4IEBAIHN0cnVjdCBS
ZWNvcmRNZXRhRGF0YSB7CiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUmVj
b3JkTWV0YURhdGEoUmVjb3JkTWV0YURhdGEmIG1ldGFEYXRhLCBjb25zdCBEYXRhJiBmaWxlRGF0
YSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICBmaWxlRGF0YS5hcHBseShbJm1l
dGFEYXRhLCAmc3VjY2Vzc10oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAg
ICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKGRhdGEsIHNpemUpOworICAg
IGZpbGVEYXRhLmFwcGx5KFsmbWV0YURhdGEsICZzdWNjZXNzXShTcGFuPGNvbnN0IHVpbnQ4X3Q+
IHNwYW4pIHsKKyAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHNwYW4p
OwogICAgICAgICAKICAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gY2FjaGVTdG9yYWdl
VmVyc2lvbjsKICAgICAgICAgZGVjb2RlciA+PiBjYWNoZVN0b3JhZ2VWZXJzaW9uOwpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJj
ZXNFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAJKHJldmlzaW9uIDI3OTU4NCkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVz
b3VyY2VzRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFN1YnJlc291cmNlc0VudHJ5PiBTdWJyZQogewogICAgIGF1dG8gZW50cnkgPSBt
YWtlVW5pcXVlPFN1YnJlc291cmNlc0VudHJ5PihzdG9yYWdlRW50cnkpOwogCi0gICAgV1RGOjpQ
ZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFkZXIuZGF0YSgpLCBz
dG9yYWdlRW50cnkuaGVhZGVyLnNpemUoKSk7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFkZXIuc3BhbigpKTsKICAgICBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxTdWJyZXNvdXJjZUluZm8+PiBzdWJyZXNvdXJjZXM7CiAgICAgZGVjb2RlciA+PiBz
dWJyZXNvdXJjZXM7CiAgICAgaWYgKCFzdWJyZXNvdXJjZXMpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAJ
KHJldmlzaW9uIDI3OTU4NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNSwxNCArMTM1LDE0IEBA
IHN0YXRpYyBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSBlbmNvZGUKICAgICByZXR1cm4gV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJT
aXplKCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGdldERhdGEoY29uc3QgVCYs
IGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNpemVfdCk+Jik7Ci10ZW1wbGF0
ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwg
Y29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIGZ1bmN0aW9uKQor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBnZXREYXRhKGNvbnN0IFQmLCBjb25zdCBGdW5jdGlv
bjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYpOwordGVtcGxhdGU8PiB2b2lkIGdldERhdGEo
Y29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJv
b2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBkYXRhLmFwcGx5KGZ1
bmN0aW9uKTsKIH0KLXRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90
KT4mIGZ1bmN0aW9uKQordGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4p
PiYgZnVuY3Rpb24pCiB7Ci0gICAgZnVuY3Rpb24oZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
KyAgICBmdW5jdGlvbih7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KQEAgLTE1MCwxMyArMTUwLDEzIEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PENvbnRlbnRSdWxlTGlzdE1ldGEKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBD
b250ZW50UnVsZUxpc3RNZXRhRGF0YSBtZXRhRGF0YTsKLSAgICBnZXREYXRhKGZpbGVEYXRhLCBb
Jm1ldGFEYXRhLCAmc3VjY2VzcywgJmZpbGVEYXRhXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeworICAgIGdldERhdGEoZmlsZURhdGEsIFsmbWV0YURhdGEsICZzdWNjZXNzLCAm
ZmlsZURhdGFdKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikgewogICAgICAgICAvLyBUaGUgZmls
ZSBkYXRhIHNob3VsZCBiZSBtYXBwZWQgaW50byBvbmUgY29udGludW91cyBtZW1vcnkgc2VnbWVu
dCBzbyB0aGUgc2l6ZQogICAgICAgICAvLyBwYXNzZWQgdG8gdGhlIGFwcGxpZXIgc2hvdWxkIGFs
d2F5cyBlcXVhbCB0aGUgZGF0YSBzaXplLgotICAgICAgICBpZiAoc2l6ZSAhPSBmaWxlRGF0YS5z
aXplKCkpCisgICAgICAgIGlmIChzcGFuLnNpemUoKSAhPSBmaWxlRGF0YS5zaXplKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciBkZWNvZGVyKGRhdGEsIHNpemUpOworICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
IGRlY29kZXIoc3Bhbik7CiAgICAgICAgIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiB2ZXJzaW9uOwogICAgICAgICBkZWNvZGVyID4+IHZlcnNpb247CkBAIC0yMjgsOCArMjI4LDgg
QEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFwcGVkRGF0YT4gb3BlbkFuZAogc3RhdGljIGJvb2wg
d3JpdGVEYXRhVG9GaWxlKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBmaWxlRGF0
YSwgUGxhdGZvcm1GaWxlSGFuZGxlIGZkKQogewogICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0g
ICAgZmlsZURhdGEuYXBwbHkoW2ZkLCAmc3VjY2Vzc10oY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpIHsKLSAgICAgICAgaWYgKHdyaXRlVG9GaWxlKGZkLCBkYXRhLCBzaXplKSA9PSAt
MSkgeworICAgIGZpbGVEYXRhLmFwcGx5KFtmZCwgJnN1Y2Nlc3NdKFNwYW48Y29uc3QgdWludDhf
dD4gc3BhbikgeworICAgICAgICBpZiAod3JpdGVUb0ZpbGUoZmQsIHNwYW4uZGF0YSgpLCBzcGFu
LnNpemUoKSkgPT0gLTEpIHsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433010</attachid>
            <date>2021-07-06 22:05:16 -0700</date>
            <delta_ts>2021-07-07 10:02:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227606-20210706220515.patch</filename>
            <type>text/plain</type>
            <size>38714</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzk1OTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDIxLTA3LTA2ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIG1vcmUgU3BhbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NjA2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IGlzIGFsd2F5cyBi
ZXR0ZXIsIHJpZ2h0PworCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAo
V1RGOjpGaWxlU3lzdGVtSW1wbDo6bWFwVG9GaWxlKToKKyAgICAgICAgKiB3dGYvRmlsZVN5c3Rl
bS5oOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcDoKKyAg
ICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkNvZGVyPENTdHJpbmc+OjplbmNvZGUpOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8Q1N0cmluZz46OmRlY29kZSk6CisgICAgICAgIChX
VEY6OlBlcnNpc3RlbmNlOjpDb2RlcjxTdHJpbmc+OjplbmNvZGUpOgorICAgICAgICAoV1RGOjpQ
ZXJzaXN0ZW5jZTo6ZGVjb2RlU3RyaW5nVGV4dCk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNl
OjpDb2RlcjxTSEExOjpEaWdlc3Q+OjplbmNvZGUpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6Q29kZXI8U0hBMTo6RGlnZXN0Pjo6ZGVjb2RlKToKKyAgICAgICAgKiB3dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudENvZGVycy5oOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50RGVjb2Rlci5jcHA6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjpEZWNv
ZGVyKToKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXI6OmJ1ZmZlcklzTGFyZ2VF
bm91Z2hUb0NvbnRhaW4gY29uc3QpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
cjo6YnVmZmVyUG9pbnRlckZvckRpcmVjdFJlYWQpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKToKKyAgICAgICAgKFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXI6OmRlY29kZU51bWJlcik6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyOjp2ZXJpZnlDaGVja3N1bSk6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnREZWNvZGVyLmg6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyOjps
ZW5ndGggY29uc3QpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rlcjo6Y3VycmVu
dE9mZnNldCBjb25zdCk6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNv
ZGVyLmNwcDoKKyAgICAgICAgKFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXI6OnVwZGF0ZUNoZWNr
c3VtRm9yRGF0YSk6CisgICAgICAgIChXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyOjplbmNvZGVG
aXhlZExlbmd0aERhdGEpOgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2Rlcjo6ZW5j
b2RlQ2hlY2tzdW0pOgorICAgICAgICAqIHd0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rl
ci5oOgorCiAyMDIxLTA3LTAyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIFttYWNPU10gT25seSB1c2UgV2ViR0wgb24gTWV0YWwgYnkgZGVmYXVsdCBvbiBz
YWZlIHZlcnNpb25zIG9mIG1hY09TCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAkocmV2aXNpb24g
Mjc5NTk4KQorKysgU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzMiw3ICs0MzIsNyBAQCBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShjb25z
dCBTCiB9CiAjZW5kaWYKIAotTWFwcGVkRmlsZURhdGEgbWFwVG9GaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgc2l6ZV90IGJ5dGVzU2l6ZSwgRnVuY3Rpb248dm9pZChjb25zdCBGdW5jdGlvbjxib29s
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYpPiYmIGFwcGx5LCBQbGF0Zm9ybUZpbGVIYW5kbGUq
IG91dHB1dEhhbmRsZSkKK01hcHBlZEZpbGVEYXRhIG1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgsIHNpemVfdCBieXRlc1NpemUsIEZ1bmN0aW9uPHZvaWQoY29uc3QgRnVuY3Rpb248Ym9vbChT
cGFuPGNvbnN0IHVpbnQ4X3Q+KT4mKT4mJiBhcHBseSwgUGxhdGZvcm1GaWxlSGFuZGxlKiBvdXRw
dXRIYW5kbGUpCiB7CiAgICAgY29uc3RleHByIGJvb2wgZmFpbElmRmlsZUV4aXN0cyA9IHRydWU7
CiAgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVt
OjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSwgRmlsZVN5c3RlbTo6RmlsZUFjY2Vzc1Blcm1pc3Np
b246OlVzZXIsIGZhaWxJZkZpbGVFeGlzdHMpOwpAQCAtNDUyLDkgKzQ1Miw5IEBAIE1hcHBlZEZp
bGVEYXRhIG1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHAKICAgICB2b2lkKiBtYXAgPSBjb25zdF9j
YXN0PHZvaWQqPihtYXBwZWRGaWxlLmRhdGEoKSk7CiAgICAgdWludDhfdCogbWFwRGF0YSA9IHN0
YXRpY19jYXN0PHVpbnQ4X3QqPihtYXApOwogCi0gICAgYXBwbHkoWyZtYXBEYXRhXShjb25zdCB1
aW50OF90KiBjaHVuaywgc2l6ZV90IGNodW5rU2l6ZSkgewotICAgICAgICBtZW1jcHkobWFwRGF0
YSwgY2h1bmssIGNodW5rU2l6ZSk7Ci0gICAgICAgIG1hcERhdGEgKz0gY2h1bmtTaXplOworICAg
IGFwcGx5KFsmbWFwRGF0YV0oU3Bhbjxjb25zdCB1aW50OF90PiBjaHVuaykgeworICAgICAgICBt
ZW1jcHkobWFwRGF0YSwgY2h1bmsuZGF0YSgpLCBjaHVuay5zaXplKCkpOworICAgICAgICBtYXBE
YXRhICs9IGNodW5rLnNpemUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSk7CiAKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmgJKHJldmlzaW9uIDI3OTU5OCkKKysrIFNvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHV0
aWxpdHk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL1NwYW4uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC0yNzMsNyArMjc0LDcgQEAgaW5saW5lIE1hcHBlZEZpbGVEYXRhJiBNYXBwZWRGaWxlRGF0YTo6
bwogCiAvLyBUaGlzIGNyZWF0ZXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1hcHMgaXQsIHdyaXRl
IHRoZSBwcm92aWRlZCBkYXRhIHRvIGl0IGFuZCByZXR1cm5zIHRoZSBtYXBwZWQgZmlsZS4KIC8v
IFRoaXMgZnVuY3Rpb24gZmFpbHMgaWYgdGhlcmUgaXMgYWxyZWFkeSBhIGZpbGUgYXQgdGhlIGRl
c3RpbmF0aW9uIHBhdGguCi1XVEZfRVhQT1JUX1BSSVZBVEUgTWFwcGVkRmlsZURhdGEgbWFwVG9G
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgc2l6ZV90IGJ5dGVzU2l6ZSwgRnVuY3Rpb248dm9pZChj
b25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYpPiYmIGFwcGx5LCBQ
bGF0Zm9ybUZpbGVIYW5kbGUqID0gbnVsbHB0cik7CitXVEZfRVhQT1JUX1BSSVZBVEUgTWFwcGVk
RmlsZURhdGEgbWFwVG9GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgc2l6ZV90IGJ5dGVzU2l6ZSwg
RnVuY3Rpb248dm9pZChjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYp
PiYmIGFwcGx5LCBQbGF0Zm9ybUZpbGVIYW5kbGUqID0gbnVsbHB0cik7CiAKIH0gLy8gbmFtZXNw
YWNlIEZpbGVTeXN0ZW1JbXBsCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwCShyZXZpc2lvbiAyNzk1
OTgpCisrKyBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIENvZGVyPENTdHJpbmc+OjplbmNv
ZGUoRW5jb2RlciYgZW5jCiAKICAgICB1aW50MzJfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7
CiAgICAgZW5jb2RlciA8PCBsZW5ndGg7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEoc3RyaW5nLmRhdGFBc1VJbnQ4UHRyKCksIGxlbmd0aCk7CisgICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEoeyBzdHJpbmcuZGF0YUFzVUludDhQdHIoKSwgbGVuZ3RoIH0pOwogfQog
CiBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IENvZGVyPENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKQEAgLTc4LDcgKzc4LDcgQEAgc3RkOjpvcHRpb25hbDxDU3RyaW5nPiBDb2RlcjxD
U3RyaW5nPjo6ZAogCiAgICAgY2hhciogYnVmZmVyOwogICAgIENTdHJpbmcgc3RyaW5nID0gQ1N0
cmluZzo6bmV3VW5pbml0aWFsaXplZCgqbGVuZ3RoLCBidWZmZXIpOwotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVy
KSwgKmxlbmd0aCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksICpsZW5ndGggfSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc3RyaW5nOwpAQCAtOTgsOSArOTgsOSBA
QCB2b2lkIENvZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvCiAgICAgZW5jb2RlciA8
PCBsZW5ndGggPDwgaXM4Qml0OwogCiAgICAgaWYgKGlzOEJpdCkKLSAgICAgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CisgICAg
ICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHsgc3RyaW5nLmNoYXJhY3RlcnM4KCks
IGxlbmd0aCB9KTsKICAgICBlbHNlCi0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzMTYo
KSksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVk
TGVuZ3RoRGF0YSh7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFy
YWN0ZXJzMTYoKSksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikgfSk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgpAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBpbmxpbmUg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGRlY28KIAogICAgIENoYXJhY3RlclR5cGUqIGJ1ZmZlcjsK
ICAgICBTdHJpbmcgc3RyaW5nID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwg
YnVmZmVyKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksIGxlbmd0aCAqIHNpemVvZihDaGFyYWN0ZXJUeXBl
KSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksIGxlbmd0aCAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSB9
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4gc3RyaW5n
OwpAQCAtMTQyLDEzICsxNDIsMTMgQEAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IENvZGVyPFN0cmlu
Zz46OmRlYwogCiB2b2lkIENvZGVyPFNIQTE6OkRpZ2VzdD46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBTSEExOjpEaWdlc3QmIGRpZ2VzdCkKIHsKLSAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShkaWdlc3QuZGF0YSgpLCBzaXplb2YoZGlnZXN0KSk7CisgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEoeyBkaWdlc3QuZGF0YSgpLCBzaXplb2YoZGlnZXN0KSB9
KTsKIH0KIAogc3RkOjpvcHRpb25hbDxTSEExOjpEaWdlc3Q+IENvZGVyPFNIQTE6OkRpZ2VzdD46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFNIQTE6OkRpZ2VzdCB0bXA7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh0bXAuZGF0YSgpLCBzaXplb2YodG1w
KSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHRtcC5kYXRhKCks
IHNpemVvZih0bXApIH0pKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biB0bXA7CiB9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29k
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dENvZGVycy5oCShyZXZpc2lvbiAyNzk1OTgpCisrKyBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpCiAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4m
IHZlY3RvcikKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHZlY3Rvci5zaXplKCkpOwotICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih2ZWN0b3IuZGF0YSgpKSwgdmVjdG9yLnNp
emUoKSAqIHNpemVvZihUKSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odmVjdG9yLmRhdGEoKSksIHZlY3Rv
ci5zaXplKCkgKiBzaXplb2YoVCkgfSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQpAQCAtMTczLDcgKzE3Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2kKICAgICAgICAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiB0ZW1wOwogICAgICAgICB0
ZW1wLmdyb3coc2l6ZSk7CiAKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPih0ZW1wLmRhdGEoKSksIHNpemUgKiBzaXpl
b2YoVCkpKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHsgdGVt
cC5kYXRhKCksIHNpemUgKiBzaXplb2YoVCkgfSkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIHJldHVybiB0ZW1wOwpJbmRleDogU291cmNlL1dURi93dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmNwcAkocmV2aXNpb24gMjc5NTk4KQor
KysgU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudERlY29kZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsOSBAQAogbmFtZXNwYWNlIFdURiB7CiBuYW1lc3BhY2Ug
UGVyc2lzdGVuY2UgewogCi1EZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlclNpemUpCi0gICAgOiBtX2J1ZmZlcihidWZmZXIpCi0gICAgLCBtX2J1ZmZl
clBvc2l0aW9uKGJ1ZmZlcikKLSAgICAsIG1fYnVmZmVyRW5kKGJ1ZmZlciArIGJ1ZmZlclNpemUp
CitEZWNvZGVyOjpEZWNvZGVyKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikKKyAgICA6IG1fYnVm
ZmVyKHNwYW4pCisgICAgLCBtX2J1ZmZlclBvc2l0aW9uKHNwYW4uYmVnaW4oKSkKIHsKIH0KIApA
QCAtNDQsNyArNDMsNyBAQCBEZWNvZGVyOjp+RGVjb2RlcigpCiAKIGJvb2wgRGVjb2Rlcjo6YnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihzaXplX3Qgc2l6ZSkgY29uc3QKIHsKLSAgICByZXR1
cm4gc2l6ZSA8PSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fYnVmZmVyRW5kIC0gbV9idWZmZXJQb3Np
dGlvbik7CisgICAgcmV0dXJuIHNpemUgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2J1ZmZlci5l
bmQoKSAtIG1fYnVmZmVyUG9zaXRpb24pOwogfQogCiBjb25zdCB1aW50OF90KiBEZWNvZGVyOjpi
dWZmZXJQb2ludGVyRm9yRGlyZWN0UmVhZChzaXplX3Qgc2l6ZSkKQEAgLTU1LDIyICs1NCwyMyBA
QCBjb25zdCB1aW50OF90KiBEZWNvZGVyOjpidWZmZXJQb2ludGVyRm9yCiAgICAgYXV0byBkYXRh
ID0gbV9idWZmZXJQb3NpdGlvbjsKICAgICBtX2J1ZmZlclBvc2l0aW9uICs9IHNpemU7CiAKLSAg
ICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBkYXRhLCBzaXplKTsKKyAg
ICBFbmNvZGVyOjp1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCB7IGRhdGEsIHNpemUgfSk7
CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLWJvb2wgRGVjb2Rlcjo6ZGVjb2RlRml4ZWRMZW5ndGhE
YXRhKHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQorYm9vbCBEZWNvZGVyOjpkZWNvZGVGaXhl
ZExlbmd0aERhdGEoU3Bhbjx1aW50OF90PiBzcGFuKQogewotICAgIGF1dG8gYnVmZmVyID0gYnVm
ZmVyUG9pbnRlckZvckRpcmVjdFJlYWQoc2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBidWZmZXJQ
b2ludGVyRm9yRGlyZWN0UmVhZChzcGFuLnNpemUoKSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBtZW1jcHkoZGF0YSwgYnVmZmVyLCBzaXplKTsKKyAgICBt
ZW1jcHkoc3Bhbi5kYXRhKCksIGJ1ZmZlciwgc3Bhbi5zaXplKCkpOwogICAgIHJldHVybiB0cnVl
OwogfQogCiBib29sIERlY29kZXI6OnJld2luZChzaXplX3Qgc2l6ZSkKIHsKLSAgICBpZiAobV9i
dWZmZXJQb3NpdGlvbiAtIHNpemUgPj0gbV9idWZmZXIpIHsKKyAgICAvLyBGSVhNRTogY2hlY2sg
Zm9yIHVuZGVyZmxvdy4KKyAgICBpZiAobV9idWZmZXJQb3NpdGlvbiAtIHNpemUgPj0gbV9idWZm
ZXIuYmVnaW4oKSkgewogICAgICAgICBtX2J1ZmZlclBvc2l0aW9uIC09IHNpemU7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE0OCwxMSArMTQ4LDExIEBAIGJvb2wgRGVjb2Rlcjo6
dmVyaWZ5Q2hlY2tzdW0oKQogICAgIG1fc2hhMS5jb21wdXRlSGFzaChjb21wdXRlZEhhc2gpOwog
CiAgICAgU0hBMTo6RGlnZXN0IHNhdmVkSGFzaDsKLSAgICBpZiAoIWRlY29kZUZpeGVkTGVuZ3Ro
RGF0YShzYXZlZEhhc2guZGF0YSgpLCBzaXplb2Yoc2F2ZWRIYXNoKSkpCisgICAgaWYgKCFkZWNv
ZGVGaXhlZExlbmd0aERhdGEoeyBzYXZlZEhhc2guZGF0YSgpLCBzaXplb2Yoc2F2ZWRIYXNoKSB9
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIGNvbXB1dGVkSGFzaCA9PSBz
YXZlZEhhc2g7CiB9CiAKLX0KLX0KK30gLy8gbmFtZXNwYWNlIFBlcnNpc3RlbmNlCit9IC8vIG5h
bWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRE
ZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudERlY29kZXIuaAkocmV2aXNpb24gMjc5NTk4KQorKysgU291cmNlL1dURi93dGYvcGVyc2lz
dGVuY2UvUGVyc2lzdGVudERlY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBA
QAogCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvU0hBMS5oPgor
I2luY2x1ZGUgPHd0Zi9TcGFuLmg+CiAjaW5jbHVkZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3Rl
bnRDb2Rlci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM1LDE3ICszNiwxNyBAQCBuYW1lc3Bh
Y2UgUGVyc2lzdGVuY2UgewogY2xhc3MgRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIERlY29kZXIoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IERlY29kZXIoU3Bhbjxjb25zdCB1aW50OF90Pik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5E
ZWNvZGVyKCk7CiAKLSAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJF
bmQgLSBtX2J1ZmZlcjsgfQotICAgIHNpemVfdCBjdXJyZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXJQb3NpdGlvbiAtIG1fYnVmZmVyOyB9CisgICAgc2l6ZV90IGxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLnNpemUoKTsgfQorICAgIHNpemVfdCBjdXJyZW50T2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJQb3NpdGlvbiAtIG1fYnVmZmVyLmJlZ2luKCk7IH0K
ICAgICAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgcmV3
aW5kKHNpemVfdCk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgdmVyaWZ5Q2hlY2tzdW0oKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVGaXhlZExlbmd0aERhdGEodWludDhfdCosIHNpemVfdCk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZp
eGVkTGVuZ3RoRGF0YShTcGFuPHVpbnQ4X3Q+KTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBE
ZWNvZGVyJiBvcGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8Ym9vbD4mKTsKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgRGVjb2RlciYgb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPHVpbnQ4X3Q+Jik7CkBA
IC05NCw5ICs5NSw4IEBAIHByaXZhdGU6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90KSBjb25z
dDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBEZWNvZGVyJiBkZWNvZGVOdW1iZXIoc3Rk
OjpvcHRpb25hbDxUeXBlPiYpOwogCi0gICAgY29uc3QgdWludDhfdCogbV9idWZmZXI7Ci0gICAg
Y29uc3QgdWludDhfdCogbV9idWZmZXJQb3NpdGlvbjsKLSAgICBjb25zdCB1aW50OF90KiBtX2J1
ZmZlckVuZDsKKyAgICBjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IG1fYnVmZmVyOworICAgIGNv
bnN0IHVpbnQ4X3QqIG1fYnVmZmVyUG9zaXRpb24geyBudWxscHRyIH07CiAKICAgICBTSEExIG1f
c2hhMTsKIH07CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50RW5j
b2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudEVuY29kZXIuY3BwCShyZXZpc2lvbiAyNzk1OTgpCisrKyBTb3VyY2UvV1RGL3d0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50RW5jb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE5ICs0
NiwxOSBAQCB1aW50OF90KiBFbmNvZGVyOjpncm93KHNpemVfdCBzaXplKQogICAgIHJldHVybiBt
X2J1ZmZlci5kYXRhKCkgKyBuZXdQb3NpdGlvbjsKIH0KIAotdm9pZCBFbmNvZGVyOjp1cGRhdGVD
aGVja3N1bUZvckRhdGEoU0hBMSYgc2hhMSwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpCit2b2lkIEVuY29kZXI6OnVwZGF0ZUNoZWNrc3VtRm9yRGF0YShTSEExJiBzaGExLCBTcGFu
PGNvbnN0IHVpbnQ4X3Q+IHNwYW4pCiB7CiAgICAgYXV0byB0eXBlU2FsdCA9IFNhbHQ8dWludDhf
dCo+Ojp2YWx1ZTsKICAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KCZ0eXBlU2FsdCksIHNpemVvZih0eXBlU2FsdCkpOwotICAgIHNoYTEuYWRkQnl0ZXMoZGF0YSwg
c2l6ZSk7CisgICAgc2hhMS5hZGRCeXRlcyhzcGFuLmRhdGEoKSwgc3Bhbi5zaXplKCkpOwogfQog
Ci12b2lkIEVuY29kZXI6OmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKFNwYW48
Y29uc3QgdWludDhfdD4gc3BhbikKIHsKLSAgICB1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGEx
LCBkYXRhLCBzaXplKTsKKyAgICB1cGRhdGVDaGVja3N1bUZvckRhdGEobV9zaGExLCBzcGFuKTsK
IAotICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IGdyb3coc2l6ZSk7Ci0gICAgbWVtY3B5KGJ1ZmZlciwg
ZGF0YSwgc2l6ZSk7CisgICAgdWludDhfdCogYnVmZmVyID0gZ3JvdyhzcGFuLnNpemUoKSk7Cisg
ICAgbWVtY3B5KGJ1ZmZlciwgc3Bhbi5kYXRhKCksIHNwYW4uc2l6ZSgpKTsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVHlwZT4KQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEVuY29kZXI6OmVuY29k
ZUNoZWNrc3VtKCkKIHsKICAgICBTSEExOjpEaWdlc3QgaGFzaDsKICAgICBtX3NoYTEuY29tcHV0
ZUhhc2goaGFzaCk7Ci0gICAgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhhc2guZGF0YSgpLCBoYXNo
LnNpemUoKSk7CisgICAgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHsgaGFzaC5kYXRhKCksIGhhc2gu
c2l6ZSgpIH0pOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50RW5jb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnRFbmNvZGVyLmgJKHJldmlzaW9uIDI3OTU5OCkKKysrIFNvdXJjZS9XVEYvd3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRFbmNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1NI
QTEuaD4KKyNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVyLmg+CiAKQEAgLTQzLDcgKzQ0
LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+RW5jb2RlcigpOwogCiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlQ2hlY2tzdW0oKTsKLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCosIHNpemVf
dCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKFNw
YW48Y29uc3QgdWludDhfdD4pOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX2VudW08VD46OnZhbHVlPiogPSBudWxscHRyPgogICAgIEVuY29kZXIm
IG9wZXJhdG9yPDwoY29uc3QgVCYgdCkKQEAgLTczLDcgKzc0LDcgQEAgcHVibGljOgogICAgIGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQog
ICAgIHNpemVfdCBidWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9
CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JE
YXRhKFNIQTEmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgdXBkYXRlQ2hlY2tzdW1Gb3JEYXRhKFNIQTEmLCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+KTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZT4gc3RhdGljIHZvaWQgdXBkYXRl
Q2hlY2tzdW1Gb3JOdW1iZXIoU0hBMSYsIFR5cGUpOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzSVBDRW5jb2RlciA9IGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc5NTk4
KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMjEtMDctMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KKworICAgICAgICBVc2UgbW9yZSBTcGFuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc2MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q2VydGlm
aWNhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQuY3BwOgorICAgICAgICAoV1RGOjpQZXJz
aXN0ZW5jZTo6ZW5jb2RlQ0ZEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlv
bkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3Jh
Z2U6OnN0b3JlKToKKwogMjAyMS0wNy0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIGxvYWRTaW11bGF0ZWRSZXF1ZXN0OiBzaG91bGQgZG8g
c2FtZSBkZWxlZ2F0ZSBjYWxsYmFja3MgYXMgbG9hZEhUTUxTdHJpbmcgYW5kIGxvYWREYXRhCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmNwcAkocmV2aXNpb24gMjc5NTk4KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwMiw3ICs2MDIsNyBA
QCBib29sIEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NlcnRpZmljCiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
IGRlY29kZXIoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIFdURjo6UGVyc2lzdGVu
Y2U6OkRlY29kZXIgZGVjb2Rlcih7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH0pOwogICAg
IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CiAgICAgZGVj
b2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAJKHJldmlzaW9uIDI3OTU5
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5v
dE5lZWRlZFNvCiAKIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNv
ZGVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKCkpLCBzaXplKCkgfTsKKyAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19OwogfQogCiBib29sIFNoYXJlZEJ1ZmZl
cjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2Rlckdl
bmVyaWMuY3BwCShyZXZpc2lvbiAyNzk1OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1
OCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gcmVhZFN0cmluZygKICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKHNpemUu
dmFsdWUoKSk7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShidWZmZXIu
ZGF0YSgpLCBzaXplLnZhbHVlKCkpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0
aERhdGEoeyBidWZmZXIuZGF0YSgpLCBzaXplLnZhbHVlKCkgfSkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgYXV0byByZXN1bHQgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5k
YXRhKCksIHNpemUudmFsdWUoKSk7CiAgICAgaWYgKHJlc3VsdC5pc051bGwoKSkKQEAgLTg4LDcg
Kzg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWREZWNvZAogCiBLZXll
ZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQogewotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2Rlcihk
YXRhLCBzaXplKTsKKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoeyBkYXRh
LCBzaXplIH0pOwogCiAgICAgbV9yb290RGljdGlvbmFyeSA9IG1ha2VVbmlxdWU8RGljdGlvbmFy
eT4oKTsKICAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobV9yb290RGljdGlvbmFyeS5nZXQo
KSk7CkBAIC0xMTcsNyArMTE3LDcgQEAgS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVy
R2VuZXJpYwogICAgICAgICAgICAgaWYgKCFvaykKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoKnNpemUpOwotICAgICAgICAgICAgb2sg
PSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShidWZmZXIuZGF0YSgpLCAqc2l6ZSk7Cisg
ICAgICAgICAgICBvayA9IGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHsgYnVmZmVyLmRh
dGEoKSwgKnNpemUgfSk7CiAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5hZGQoKmtleSwgV1RG
TW92ZShidWZmZXIpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAkocmV2aXNpb24gMjc5NTk4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6
OmVuY29kZVN0cmluZyhjCiB7CiAgICAgYXV0byB1dGY4ID0ga2V5LnV0ZjgoKTsKICAgICBtX2Vu
Y29kZXIgPDwgdXRmOC5sZW5ndGgoKTsKLSAgICBtX2VuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKHV0ZjguZGF0YUFzVUludDhQdHIoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9lbmNvZGVy
LmVuY29kZUZpeGVkTGVuZ3RoRGF0YSh7IHV0ZjguZGF0YUFzVUludDhQdHIoKSwgdXRmOC5sZW5n
dGgoKSB9KTsKIH0KIAogdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVCeXRlcyhjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBzaXplKQpAQCAtNDgs
NyArNDgsNyBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZUJ5dGVzKGNvCiAgICAg
bV9lbmNvZGVyIDw8IFR5cGU6OkJ5dGVzOwogICAgIGVuY29kZVN0cmluZyhrZXkpOwogICAgIG1f
ZW5jb2RlciA8PCBzaXplOwotICAgIG1fZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoYnl0
ZXMsIHNpemUpOworICAgIG1fZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoeyBieXRlcywg
c2l6ZSB9KTsKIH0KIAogdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVCb29sKGNvbnN0
IFN0cmluZyYga2V5LCBib29sIHZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAJKHJl
dmlzaW9uIDI3OTU5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2Vy
dGlmaWNhdGVJbmZvQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNyArMjEwLDcgQEAg
c3RhdGljIHZvaWQgZW5jb2RlQ0ZEYXRhKEVuY29kZXImIGVuY29kZQogICAgIGNvbnN0IHVpbnQ4
X3QqIGJ5dGVQdHIgPSBDRkRhdGFHZXRCeXRlUHRyKGRhdGEpOwogCiAgICAgZW5jb2RlciA8PCBs
ZW5ndGg7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoYnl0ZVB0ciwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihsZW5ndGgpKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YSh7IGJ5dGVQdHIsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSB9KTsKIH0KIAogc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGRGF0YVJlZj4+IGRlY29kZUNGRGF0YShEZWNvZGVy
JiBkZWNvZGVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nl
cnRpZmljYXRlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9DZXJ0aWZpY2F0ZUluZm8uaAkocmV2aXNpb24gMjc5NTk4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRpZmljYXRlSW5mby5oCSh3b3JraW5n
IGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvZGVyPEdSZWZQdHI8
R0J5dGVBcnIKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciAmZW5jb2RlciwgY29uc3Qg
R1JlZlB0cjxHQnl0ZUFycmF5PiYgYnl0ZUFycmF5KQogICAgIHsKICAgICAgICAgZW5jb2RlciA8
PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYnl0ZUFycmF5LT5sZW4pOwotICAgICAgICBlbmNvZGVy
LmVuY29kZUZpeGVkTGVuZ3RoRGF0YShieXRlQXJyYXktPmRhdGEsIGJ5dGVBcnJheS0+bGVuKTsK
KyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoeyBieXRlQXJyYXktPmRhdGEs
IGJ5dGVBcnJheS0+bGVuIH0pOwogICAgIH0KIAogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdS
ZWZQdHI8R0J5dGVBcnJheT4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQpAQCAtODcsNyArODcs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxHUmVmUHRyPEdCeXRlQXJyCiAKICAgICAgICAg
R1JlZlB0cjxHQnl0ZUFycmF5PiBieXRlQXJyYXkgPSBhZG9wdEdSZWYoZ19ieXRlX2FycmF5X3Np
emVkX25ldygqc2l6ZSkpOwogICAgICAgICBnX2J5dGVfYXJyYXlfc2V0X3NpemUoYnl0ZUFycmF5
LmdldCgpLCAqc2l6ZSk7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERh
dGEoYnl0ZUFycmF5LT5kYXRhLCAqc2l6ZSkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVG
aXhlZExlbmd0aERhdGEoeyBieXRlQXJyYXktPmRhdGEsICpzaXplIH0pKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGJ5dGVBcnJheTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCShy
ZXZpc2lvbiAyNzk1OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MSw3ICsyNTEsNyBAQCBzdGQ6Om9wdGlvbmFs
PFBhc3RlYm9hcmRDdXN0b21EYXRhPiBQYXN0CiAgICAgICAgIGlmIChIQU5ETEUgY2JEYXRhID0g
OjpHZXRDbGlwYm9hcmREYXRhKEN1c3RvbURhdGFDbGlwYm9hcmRGb3JtYXQpKSB7CiAgICAgICAg
ICAgICBzaXplX3Qgc2l6ZSA9IEdsb2JhbFNpemUoY2JEYXRhKTsKICAgICAgICAgICAgIGF1dG8g
ZGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihHbG9iYWxMb2NrKGNiRGF0YSkpOwotICAgICAg
ICAgICAgYXV0byBjdXN0b21EYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0
ZW5jZURlY29kZXIoe2RhdGEsIHNpemV9KTsKKyAgICAgICAgICAgIGF1dG8gY3VzdG9tRGF0YSA9
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKHt7IGRhdGEsIHNp
emUgfX0pOwogCiAgICAgICAgICAgICBHbG9iYWxVbmxvY2soY2JEYXRhKTsKICAgICAgICAgICAg
IDo6Q2xvc2VDbGlwYm9hcmQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCShy
ZXZpc2lvbiAyNzk1OTgpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE3LDcgKzUxNyw3
IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3IKICAgICAgICAgc3Rk
OjpvcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IGNvbnRlbnRT
ZWN1cml0eVBvbGljeTsKICAgICAgICAgYXV0byBjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhU3Bh
biA9IHNxbC0+Y29sdW1uQmxvYkFzU3Bhbig4KTsKICAgICAgICAgaWYgKGNvbnRlbnRTZWN1cml0
eVBvbGljeURhdGFTcGFuLnNpemUoKSkgewotICAgICAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2RlciBjc3BEZWNvZGVyKGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGFTcGFuLmRhdGEoKSwg
Y29udGVudFNlY3VyaXR5UG9saWN5RGF0YVNwYW4uc2l6ZSgpKTsKKyAgICAgICAgICAgIFdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXIgY3NwRGVjb2Rlcihjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRh
U3Bhbik7CiAgICAgICAgICAgICBjc3BEZWNvZGVyID4+IGNvbnRlbnRTZWN1cml0eVBvbGljeTsK
ICAgICAgICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5KSB7CiAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjppbXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8gZGVjb2RlIGNvbnRlbnRTZWN1cml0eVBvbGljeSIp
OwpAQCAtNTMwLDcgKzUzMCw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0
UmVjb3IKICAgICAgICAgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFwOwogICAgICAgICBhdXRvIHNjcmlwdFJlc291
cmNlTWFwRGF0YVNwYW4gPSBzcWwtPmNvbHVtbkJsb2JBc1NwYW4oMTApOwogICAgICAgICBpZiAo
c2NyaXB0UmVzb3VyY2VNYXBEYXRhU3Bhbi5zaXplKCkpIHsKLSAgICAgICAgICAgIFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyKHNjcmlwdFJlc291cmNl
TWFwRGF0YVNwYW4uZGF0YSgpLCBzY3JpcHRSZXNvdXJjZU1hcERhdGFTcGFuLnNpemUoKSk7Cisg
ICAgICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIHNjcmlwdFJlc291cmNlTWFwRGVj
b2RlcihzY3JpcHRSZXNvdXJjZU1hcERhdGFTcGFuKTsKICAgICAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8SGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0QXR0cmlidXRlcz4+IHNjcmlwdFJlc291cmNl
TWFwV2l0aG91dFNjcmlwdHM7CiAgICAgICAgICAgICBzY3JpcHRSZXNvdXJjZU1hcERlY29kZXIg
Pj4gc2NyaXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0czsKICAgICAgICAgICAgIGlmICghc2Ny
aXB0UmVzb3VyY2VNYXBXaXRob3V0U2NyaXB0cykgewpAQCAtNTQzLDcgKzU0Myw3IEBAIFN0cmlu
ZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3IKICAgICAgICAgYXV0byBjZXJ0aWZp
Y2F0ZUluZm9EYXRhU3BhbiA9IHNxbC0+Y29sdW1uQmxvYkFzU3BhbigxMSk7CiAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CiAKLSAgICAgICAg
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVyKGNlcnRpZmlj
YXRlSW5mb0RhdGFTcGFuLmRhdGEoKSwgY2VydGlmaWNhdGVJbmZvRGF0YVNwYW4uc2l6ZSgpKTsK
KyAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBjZXJ0aWZpY2F0ZUluZm9EZWNvZGVy
KGNlcnRpZmljYXRlSW5mb0RhdGFTcGFuKTsKICAgICAgICAgY2VydGlmaWNhdGVJbmZvRGVjb2Rl
ciA+PiBjZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIGlmICghY2VydGlmaWNhdGVJbmZvKSB7CiAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiUmVnaXN0cmF0aW9u
RGF0YWJhc2U6OmltcG9ydFJlY29yZHM6IEZhaWxlZCB0byBkZWNvZGUgY2VydGlmaWNhdGVJbmZv
Iik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0
U3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCShyZXZpc2lvbiAyNzk1OTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg2LDkgKzg2LDkgQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6
c3RvcmUoY29ucwogICAgIGF1dG8gc2NyaXB0UGF0aCA9IHRoaXMtPnNjcmlwdFBhdGgocmVnaXN0
cmF0aW9uS2V5LCBzY3JpcHRVUkwpOwogICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmll
cyhGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKHNjcmlwdFBhdGgpKTsKIAotICAgIGF1dG8gaXRlcmF0
ZU92ZXJCdWZmZXJBbmRXcml0ZURhdGEgPSBbJl0oY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1
aW50OF90Kiwgc2l6ZV90KT4mIHdyaXRlRGF0YSkgewotICAgICAgICBmb3IgKGF1dG8gaXQgPSBz
Y3JpcHQuYnVmZmVyKCktPmJlZ2luKCk7IGl0ICE9IHNjcmlwdC5idWZmZXIoKS0+ZW5kKCk7ICsr
aXQpCi0gICAgICAgICAgICB3cml0ZURhdGEoaXQtPnNlZ21lbnQtPmRhdGEoKSwgaXQtPnNlZ21l
bnQtPnNpemUoKSk7CisgICAgYXV0byBpdGVyYXRlT3ZlckJ1ZmZlckFuZFdyaXRlRGF0YSA9IFsm
XShjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgd3JpdGVEYXRhKSB7
CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiAqc2NyaXB0LmJ1ZmZlcigpKQorICAgICAgICAg
ICAgd3JpdGVEYXRhKHsgZW50cnkuc2VnbWVudC0+ZGF0YSgpLCBlbnRyeS5zZWdtZW50LT5zaXpl
KCkgfSk7CiAgICAgfTsKIAogICAgIGlmICghc2hvdWxkVXNlRmlsZU1hcHBpbmcoc2NyaXB0LmJ1
ZmZlcigpLT5zaXplKCkpKSB7CkBAIC05Nyw4ICs5Nyw4IEBAIFNjcmlwdEJ1ZmZlciBTV1Njcmlw
dFN0b3JhZ2U6OnN0b3JlKGNvbnMKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZp
Y2VXb3JrZXIsICJTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlOiBGYWlsdXJlIHRvIHN0b3JlICVzLCBG
aWxlU3lzdGVtOjpvcGVuRmlsZSgpIGZhaWxlZCIsIHNjcmlwdFBhdGgudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9Ci0gICAgICAgIGl0ZXJhdGVPdmVy
QnVmZmVyQW5kV3JpdGVEYXRhKFsmXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkg
ewotICAgICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCBkYXRhLCBzaXpl
KTsKKyAgICAgICAgaXRlcmF0ZU92ZXJCdWZmZXJBbmRXcml0ZURhdGEoWyZdKFNwYW48Y29uc3Qg
dWludDhfdD4gc3BhbikgeworICAgICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFu
ZGxlLCBzcGFuLmRhdGEoKSwgc3Bhbi5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0pOwogICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNzk1OTkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA3LTA2ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIG1vcmUgU3Bhbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NjA2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmRlY29kZVJlY29yZEhlYWRlcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZXM6OnJlYWRPcmlnaW4pOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OmRlY29kZUNhY2hlc05hbWVzKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpEYXRhOjptYXBUb0ZpbGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OmNvbXB1dGVTSEExKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVEYXRhLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0
YTo6c3BhbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6OmFw
cGx5IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVE
YXRhQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YTo6YXBwbHkg
Y29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFH
TGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhOjphcHBseSBjb25z
dCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGVTdG9yYWdlUmVj
b3JkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpkZWNvZGVSZWNvcmRNZXRhRGF0
YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3Vy
Y2VzRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNl
c0VudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Z2V0RGF0YSk6CisgICAg
ICAgIChBUEk6OmRlY29kZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRhKToKKyAgICAgICAgKEFQSTo6
d3JpdGVEYXRhVG9GaWxlKToKKwogMjAyMS0wNy0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc5
NTk3LgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAJKHJldmlzaW9uIDI3OTU5OCkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzAsNyArNjMwLDcgQEAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbgogCiBzdGQ6Om9wdGlvbmFsPENhY2hlOjpEZWNv
ZGVkUmVjb3JkPiBDYWNoZTo6ZGVjb2RlUmVjb3JkSGVhZGVyKGNvbnN0IFN0b3JhZ2U6OlJlY29y
ZCYgc3RvcmFnZSkKIHsKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoc3Rv
cmFnZS5oZWFkZXIuZGF0YSgpLCBzdG9yYWdlLmhlYWRlci5zaXplKCkpOworICAgIFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihzdG9yYWdlLmhlYWRlci5zcGFuKCkpOwogCiAgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGluc2VydGlvblRpbWU7CiAgICAgZGVjb2RlciA+PiBpbnNl
cnRpb25UaW1lOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAkocmV2aXNpb24g
Mjc5NTk5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9p
ZCBDYWNoZXM6OnN0b3JlT3JpZ2luKENvbXBsZXRpb25DYWxsYgogCiBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkNsaWVudE9yaWdpbj4gQ2FjaGVzOjpyZWFkT3JpZ2luKGNvbnN0IERhdGEmIGRhdGEp
CiB7Ci0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSk7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKGRhdGEu
c3BhbigpKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiB0b3BPcmlnaW47CiAgICAgZGVjb2RlciA+PiB0b3BPcmlnaW47CkBAIC00MDksNyArNDA5LDcg
QEAgc3RhdGljIGlubGluZSBEYXRhIGVuY29kZUNhY2hlTmFtZXMoY29ucwogCiBzdGF0aWMgaW5s
aW5lIEV4cGVjdGVkPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiwgRXJyb3I+IGRl
Y29kZUNhY2hlc05hbWVzKGNvbnN0IERhdGEmIGRhdGEpCiB7Ci0gICAgV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2RlciBkZWNvZGVyKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgV1RGOjpQ
ZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKGRhdGEuc3BhbigpKTsKICAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBjb3VudDsKICAgICBkZWNvZGVyID4+IGNvdW50OwogICAgIGlmICghY291
bnQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRGF0YS5jcHAJKHJldmlzaW9uIDI3OTU5OCkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBEYXRhIERhdGE6
Om1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0CiB7CiAgICAgRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKLSAgICBhdXRvIGFwcGx5RGF0YSA9IFsmXShjb25z
dCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYgYXBwbGllcikgeyBhcHBs
eShhcHBsaWVyKTsgfTsKKyAgICBhdXRvIGFwcGx5RGF0YSA9IFsmXShjb25zdCBGdW5jdGlvbjxi
b29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgYXBwbGllcikgeworICAgICAgICBhcHBseShhcHBs
aWVyKTsKKyAgICB9OwogICAgIGF1dG8gbWFwcGVkRmlsZSA9IEZpbGVTeXN0ZW06Om1hcFRvRmls
ZShwYXRoLCBzaXplKCksIFdURk1vdmUoYXBwbHlEYXRhKSwgJmhhbmRsZSk7CiAgICAgaWYgKCFt
YXBwZWRGaWxlKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtODcsOCArODksOCBAQCBTSEExOjpE
aWdlc3QgY29tcHV0ZVNIQTEoY29uc3QgRGF0YSYgZGF0CiB7CiAgICAgU0hBMSBzaGExOwogICAg
IHNoYTEuYWRkQnl0ZXMoc2FsdC5kYXRhKCksIHNhbHQuc2l6ZSgpKTsKLSAgICBkYXRhLmFwcGx5
KFsmc2hhMV0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgICAgICAgc2hh
MS5hZGRCeXRlcyhkYXRhLCBzaXplKTsKKyAgICBkYXRhLmFwcGx5KFsmc2hhMV0oU3Bhbjxjb25z
dCB1aW50OF90PiBzcGFuKSB7CisgICAgICAgIHNoYTEuYWRkQnl0ZXMoc3Bhbi5kYXRhKCksIHNw
YW4uc2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0
YS5oCShyZXZpc2lvbiAyNzk1OTgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0
Y2hlci5oPgogI2luY2x1ZGUgPHd0Zi9TSEExLmg+CisjaW5jbHVkZSA8d3RmL1NwYW4uaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIApAQCAtNzQsMTIgKzc1LDEzIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdDsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZTsgfQorICAgIFNwYW48Y29uc3QgdWludDhfdD4gc3BhbigpIGNvbnN0IHsgcmV0dXJuIHsg
ZGF0YSgpLCBzaXplKCkgfTsgfQogICAgIGJvb2wgaXNNYXAoKSBjb25zdCB7IHJldHVybiBtX2lz
TWFwOyB9CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gdHJ5Q3JlYXRlU2hhcmVkTWVtb3J5KCkg
Y29uc3Q7CiAKICAgICBEYXRhIHN1YnJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCkgY29uc3Q7
CiAKLSAgICBib29sIGFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2wgKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpPiYpIGNvbnN0OworICAgIGJvb2wgYXBwbHkoY29uc3QgRnVuY3Rpb248Ym9vbChTcGFu
PGNvbnN0IHVpbnQ4X3Q+KT4mKSBjb25zdDsKIAogICAgIERhdGEgbWFwVG9GaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tCShyZXZpc2lv
biAyNzk1OTgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZURhdGFDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjksMTIgKzY5LDEyIEBAIGJvb2wg
RGF0YTo6aXNOdWxsKCkgY29uc3QKICAgICByZXR1cm4gIW1fZGlzcGF0Y2hEYXRhOwogfQogCi1i
b29sIERhdGE6OmFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2wgKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpPiYgYXBwbGllcikgY29uc3QKK2Jvb2wgRGF0YTo6YXBwbHkoY29uc3QgRnVuY3Rpb248Ym9v
bChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGFwcGxpZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3Np
emUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gZGlzcGF0Y2hfZGF0YV9hcHBs
eShtX2Rpc3BhdGNoRGF0YS5nZXQoKSwgWyZhcHBsaWVyXShkaXNwYXRjaF9kYXRhX3QsIHNpemVf
dCwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgICAgICAgcmV0dXJuIGFwcGxp
ZXIoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsKKyAgICAgICAgcmV0
dXJuIGFwcGxpZXIoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfSk7
CiAgICAgfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRGF0YUN1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3BwCShyZXZpc2lvbiAyNzk1
OTgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURh
dGFDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTIgKzcwLDEyIEBAIGJvb2wgRGF0YTo6
aXNOdWxsKCkgY29uc3QKICAgICByZXR1cm4gIW1fYnVmZmVyOwogfQogCi1ib29sIERhdGE6OmFw
cGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNpemVfdCk+JiBhcHBsaWVy
KSBjb25zdAorYm9vbCBEYXRhOjphcHBseShjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3Qg
dWludDhfdD4pPiYgYXBwbGllcikgY29uc3QKIHsKICAgICBpZiAoaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gYXBwbGllcihkYXRhKCksIHNpemUoKSk7Cisg
ICAgcmV0dXJuIGFwcGxpZXIoeyBkYXRhKCksIHNpemUoKSB9KTsKIH0KIAogRGF0YSBEYXRhOjpz
dWJyYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUdMaWIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RGF0YUdMaWIuY3BwCShyZXZpc2lvbiAyNzk1OTgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFHTGliLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzMsMTQgKzczLDE0IEBAIGJvb2wgRGF0YTo6aXNOdWxsKCkgY29uc3QKICAgICByZXR1cm4gIW1f
YnVmZmVyOwogfQogCi1ib29sIERhdGE6OmFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3Qg
dWludDhfdCosIHNpemVfdCk+JiBhcHBsaWVyKSBjb25zdAorYm9vbCBEYXRhOjphcHBseShjb25z
dCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgYXBwbGllcikgY29uc3QKIHsK
ICAgICBpZiAoIW1fc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZ3NpemUgbGVu
Z3RoOwogICAgIGNvbnN0IGF1dG8qIGRhdGEgPSBnX2J5dGVzX2dldF9kYXRhKG1fYnVmZmVyLmdl
dCgpLCAmbGVuZ3RoKTsKLSAgICByZXR1cm4gYXBwbGllcihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gYXBwbGllcih7IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGggfSk7CiB9CiAKIERhdGEgRGF0
YTo6c3VicmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpIGNvbnN0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcAkocmV2aXNpb24gMjc5NTk4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3
ICsxMTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVTdG9yCiB7CiAg
ICAgYXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8RW50cnk+KHN0b3JhZ2VFbnRyeSk7CiAKLSAgICBX
VEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5kYXRh
KCksIHN0b3JhZ2VFbnRyeS5oZWFkZXIuc2l6ZSgpKTsKKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5zcGFuKCkpOwogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgaWYgKCFXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlOjpkZWNvZGUoZGVjb2RlciwgcmVzcG9uc2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAkocmV2aXNpb24gMjc5NTk4KQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDU0LDggKzQ1NCw4IEBAIHN0cnVjdCBSZWNvcmRNZXRhRGF0YSB7CiBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlUmVjb3JkTWV0YURhdGEoUmVjb3Jk
TWV0YURhdGEmIG1ldGFEYXRhLCBjb25zdCBEYXRhJiBmaWxlRGF0YSkKIHsKICAgICBib29sIHN1
Y2Nlc3MgPSBmYWxzZTsKLSAgICBmaWxlRGF0YS5hcHBseShbJm1ldGFEYXRhLCAmc3VjY2Vzc10o
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgICAgICAgV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBkZWNvZGVyKGRhdGEsIHNpemUpOworICAgIGZpbGVEYXRhLmFwcGx5KFsm
bWV0YURhdGEsICZzdWNjZXNzXShTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4pIHsKKyAgICAgICAg
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHNwYW4pOwogICAgICAgICAKICAgICAg
ICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gY2FjaGVTdG9yYWdlVmVyc2lvbjsKICAgICAgICAg
ZGVjb2RlciA+PiBjYWNoZVN0b3JhZ2VWZXJzaW9uOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dWJyZXNvdXJjZXNFbnRyeS5jcHAJKHJldmlzaW9uIDI3OTU5OCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFN1YnJlc291
cmNlc0VudHJ5PiBTdWJyZQogewogICAgIGF1dG8gZW50cnkgPSBtYWtlVW5pcXVlPFN1YnJlc291
cmNlc0VudHJ5PihzdG9yYWdlRW50cnkpOwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFkZXIuZGF0YSgpLCBzdG9yYWdlRW50cnkuaGVhZGVy
LnNpemUoKSk7CisgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VF
bnRyeS5oZWFkZXIuc3BhbigpKTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdWJyZXNvdXJj
ZUluZm8+PiBzdWJyZXNvdXJjZXM7CiAgICAgZGVjb2RlciA+PiBzdWJyZXNvdXJjZXM7CiAgICAg
aWYgKCFzdWJyZXNvdXJjZXMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAJKHJldmlzaW9uIDI3OTU5OCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNSwxNCArMTM1LDE0IEBAIHN0YXRpYyBXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6RGF0YSBlbmNvZGUKICAgICByZXR1cm4gV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OkRhdGEoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGdldERhdGEoY29uc3QgVCYsIGNvbnN0IEZ1bmN0aW9uPGJv
b2woY29uc3QgdWludDhfdCosIHNpemVfdCk+Jik7Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShj
b25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9v
bChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIGZ1bmN0aW9uKQordGVtcGxhdGU8dHlwZW5hbWUg
VD4gdm9pZCBnZXREYXRhKGNvbnN0IFQmLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3Qg
dWludDhfdD4pPiYpOwordGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50
OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0KLXRlbXBs
YXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIGZ1bmN0aW9uKQordGVt
cGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCiB7Ci0g
ICAgZnVuY3Rpb24oZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICBmdW5jdGlvbih7IGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAg
LTE1MCwxMyArMTUwLDEzIEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbnRlbnRSdWxlTGlzdE1l
dGEKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBDb250ZW50UnVsZUxpc3RNZXRh
RGF0YSBtZXRhRGF0YTsKLSAgICBnZXREYXRhKGZpbGVEYXRhLCBbJm1ldGFEYXRhLCAmc3VjY2Vz
cywgJmZpbGVEYXRhXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgIGdl
dERhdGEoZmlsZURhdGEsIFsmbWV0YURhdGEsICZzdWNjZXNzLCAmZmlsZURhdGFdKFNwYW48Y29u
c3QgdWludDhfdD4gc3BhbikgewogICAgICAgICAvLyBUaGUgZmlsZSBkYXRhIHNob3VsZCBiZSBt
YXBwZWQgaW50byBvbmUgY29udGludW91cyBtZW1vcnkgc2VnbWVudCBzbyB0aGUgc2l6ZQogICAg
ICAgICAvLyBwYXNzZWQgdG8gdGhlIGFwcGxpZXIgc2hvdWxkIGFsd2F5cyBlcXVhbCB0aGUgZGF0
YSBzaXplLgotICAgICAgICBpZiAoc2l6ZSAhPSBmaWxlRGF0YS5zaXplKCkpCisgICAgICAgIGlm
IChzcGFuLnNpemUoKSAhPSBmaWxlRGF0YS5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKGRhdGEsIHNp
emUpOworICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoc3Bhbik7CiAg
ICAgICAgIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiB2ZXJzaW9uOwogICAgICAg
ICBkZWNvZGVyID4+IHZlcnNpb247CkBAIC0yMjgsOCArMjI4LDggQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8TWFwcGVkRGF0YT4gb3BlbkFuZAogc3RhdGljIGJvb2wgd3JpdGVEYXRhVG9GaWxlKGNv
bnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBmaWxlRGF0YSwgUGxhdGZvcm1GaWxlSGFu
ZGxlIGZkKQogewogICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgZmlsZURhdGEuYXBwbHko
W2ZkLCAmc3VjY2Vzc10oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgICAg
ICAgaWYgKHdyaXRlVG9GaWxlKGZkLCBkYXRhLCBzaXplKSA9PSAtMSkgeworICAgIGZpbGVEYXRh
LmFwcGx5KFtmZCwgJnN1Y2Nlc3NdKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikgeworICAgICAg
ICBpZiAod3JpdGVUb0ZpbGUoZmQsIHNwYW4uZGF0YSgpLCBzcGFuLnNpemUoKSkgPT0gLTEpIHsK
ICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQo=
</data>
<flag name="review"
          id="455113"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>