<?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>200861</bug_id>
          
          <creation_ts>2019-08-17 13:30:45 -0700</creation_ts>
          <short_desc>Tidy up checks to see if a character is in the Latin-1 range by using isLatin1 consistently</short_desc>
          <delta_ts>2019-08-18 08:13:19 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1562502</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-17 13:30:45 -0700</bug_when>
    <thetext>Tidy up checks to see if a character is in the Latin-1 range by using isLatin1 consistently</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562503</commentid>
    <comment_count>1</comment_count>
      <attachid>376612</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-17 13:37:06 -0700</bug_when>
    <thetext>Created attachment 376612
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562504</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-17 13:37:50 -0700</bug_when>
    <thetext>Noticed this mix of idioms while working on some tweaks to StringBuilder, and decided it was good to land this separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562507</commentid>
    <comment_count>3</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-08-17 14:15:06 -0700</bug_when>
    <thetext>I think there are potentially more places that we can hit:

https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/parser/Lexer.h#L244
https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/parser/Lexer.h#L292

https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/parser/Lexer.cpp#L1049
https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/parser/Lexer.cpp#L1162

https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/runtime/LiteralParser.cpp#L456

https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/yarr/YarrPattern.cpp#L1187

https://github.com/WebKit/webkit/blob/master/Source/WebCore/editing/TextIterator.cpp#L2047
https://github.com/WebKit/webkit/blob/master/Source/WebCore/editing/TextIterator.cpp#L2073</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562508</commentid>
    <comment_count>4</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-08-17 14:33:00 -0700</bug_when>
    <thetext>Also:

https://github.com/WebKit/webkit/blob/master/Source/WebCore/html/parser/HTMLToken.h#L381
https://github.com/WebKit/webkit/blob/master/Source/WebCore/html/parser/HTMLToken.h#L415

https://github.com/WebKit/webkit/blob/master/Source/WebCore/platform/network/HTTPParsers.cpp#L105

https://github.com/WebKit/webkit/blob/master/Source/WebCore/platform/network/ParsedContentType.cpp#L49

https://github.com/WebKit/webkit/blob/master/Source/WebCore/platform/text/TextCodecLatin1.cpp#L137

And maybe here, I guess:
https://github.com/WebKit/webkit/blob/master/Source/WebKitLegacy/mac/Misc/WebKitNSStringExtras.mm#L52

(Sorry if there were any other concerns at play here that I overlooked.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562512</commentid>
    <comment_count>5</comment_count>
      <attachid>376612</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-17 15:50:07 -0700</bug_when>
    <thetext>Comment on attachment 376612
Patch

Attachment 376612 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/12932817

New failing tests:
mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-dfg-eager-no-cjit-validate-phases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562518</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-17 16:51:57 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #3)
&gt; I think there are potentially more places that we can hit:
&gt; 
&gt; https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/parser/Lexer.h#L244
&gt; https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/runtime/LiteralParser.cpp#L456
&gt; https://github.com/WebKit/webkit/blob/master/Source/WebCore/editing/TextIterator.cpp#L2047
&gt; https://github.com/WebKit/webkit/blob/master/Source/WebCore/platform/network/HTTPParsers.cpp#L105
&gt; https://github.com/WebKit/webkit/blob/master/Source/WebCore/platform/text/TextCodecLatin1.cpp#L137
&gt; https://github.com/WebKit/webkit/blob/master/Source/WebKitLegacy/mac/Misc/WebKitNSStringExtras.mm#L52

These all seem like good ones that I missed and that I should convert.

&gt; https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/parser/Lexer.cpp#L1162

Saw this and wasn’t sure it was actually a Latin-1 test, but I think you convinced me by citing it.

&gt; https://github.com/WebKit/webkit/blob/master/Source/WebCore/editing/TextIterator.cpp#L2073

Borderline case. I suppose the array is called a &quot;Latin-1 table&quot; so we should use isLatin1. But it seems like we should be checking against the size of the array instead of doing a Latin-1 check.

&gt; https://github.com/WebKit/webkit/blob/master/Source/WebCore/html/parser/HTMLToken.h#L381
&gt; https://github.com/WebKit/webkit/blob/master/Source/WebCore/html/parser/HTMLToken.h#L415

Borderline cases in my mind. Not sure if &quot;all 8-bit data&quot; is exactly the same thing. But maybe I was being too weird about it and sensitive to the terminology.

&gt; https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/parser/Lexer.h#L292
&gt; https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/parser/Lexer.cpp#L1049

I am not sure I like using the isLatin1 function on a value that&apos;s not a single character, but rather a bunch of characters or&apos;ed together. I intentionally didn’t use it in cases like that, but I could be convinced.

&gt; https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/yarr/YarrPattern.cpp#L1187

I intentionally didn&apos;t do this one. It should *not* be a Latin-1 check since logging and consoles are usually UTF-8, not Latin-1, and furthermore non-printable characters like U+007F should not be written to the console. I think it should probably be a &quot;printable ASCII&quot; check instead. I think I won&apos;t change it to isLatin1 at this time.

&gt; https://github.com/WebKit/webkit/blob/master/Source/WebCore/platform/network/ParsedContentType.cpp#L49

This one is close but doesn&apos;t actually have an isLatin1 check in it that I can see. It has a check for the 0x80-0xFF range.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562520</commentid>
    <comment_count>7</comment_count>
      <attachid>376616</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-17 17:08:36 -0700</bug_when>
    <thetext>Created attachment 376616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562550</commentid>
    <comment_count>8</comment_count>
      <attachid>376626</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-17 19:44:10 -0700</bug_when>
    <thetext>Created attachment 376626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562552</commentid>
    <comment_count>9</comment_count>
      <attachid>376626</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2019-08-17 20:11:30 -0700</bug_when>
    <thetext>Comment on attachment 376626
Patch

Your counterpoints all make sense to me. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562585</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-18 08:12:50 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/248831/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562586</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-18 08:13:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/54443547&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376612</attachid>
            <date>2019-08-17 13:37:06 -0700</date>
            <delta_ts>2019-08-17 17:08:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200861-20190817133656.patch</filename>
            <type>text/plain</type>
            <size>21148</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZTM0MmI2ZDIxMTEzNDY0NzczNTdmODdkYmYxMWEwZjg1ZTViZTU5Li43YzdkN2YxMjllYjUzYTMz
YzRiMjBmMDk4OWMxNzYzODUxNjNmYjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOS0wOC0xNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVGlkeSB1cCBjaGVja3MgdG8gc2VlIGlmIGEgY2hhcmFjdGVyIGlzIGluIHRoZSBM
YXRpbi0xIHJhbmdlIGJ5IHVzaW5nIGlzTGF0aW4xIGNvbnNpc3RlbnRseQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwODYxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cmVjb3JkOCk6IFVzZSBpc0xhdGluMS4KKyAgICAgICAg
KEpTQzo6YXNzZXJ0Q2hhcklzSW44Qml0UmFuZ2UpOiBEZWxldGVkLiBDYW4ganVzdCBhc3NlcnQg
aXNMYXRpbjEgZGlyZWN0bHkuCisgICAgICAgIChKU0M6OkxleGVyPFQ+OjphcHBlbmQ4KTogQXNz
ZXJ0IGlzTGF0aW4xIGRpcmVjdGx5LgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5jcHA6
CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmFkZDgpOiBVc2UgaXNMYXRpbjEuCisgICAgICAg
ICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6aXNTYWZlU3RyaW5n
Q2hhcmFjdGVyKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIpOiBEaXR0by4K
KyAgICAgICAgKiB5YXJyL1lhcnJKSVQuY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2Vu
ZXJhdG9yOjpnZW5lcmF0ZVBhdHRlcm5DaGFyYWN0ZXJPbmNlKTogRGl0dG8uCisgICAgICAgIChK
U0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmdlbmVyYXRlUGF0dGVybkNoYXJhY3RlckdyZWVkeSk6
IERpdHRvLgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpiYWNrdHJhY2tQYXR0
ZXJuQ2hhcmFjdGVyTm9uR3JlZWR5KTogRGl0dG8uCisKIDIwMTktMDgtMTYgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIE1vcmUgbWlzc2luZyBleGNlcHRpb24gY2hl
Y2tzIGluIHN0cmluZyBjb21wYXJpc29uIG9wZXJhdG9ycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODQ5MjA3OWZhMTllNzJk
NjhkY2I2OWNkMTE3NjkxNDViZTk5M2VkZC4uNDQ0YWRlNjYxNGE2NTI3NzI5MzBmZTZlM2U2NjZj
NzFkZGI0YjVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxOS0wOC0xNyAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGlkeSB1cCBjaGVja3MgdG8gc2VlIGlmIGEg
Y2hhcmFjdGVyIGlzIGluIHRoZSBMYXRpbi0xIHJhbmdlIGJ5IHVzaW5nIGlzTGF0aW4xIGNvbnNp
c3RlbnRseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAwODYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRl
cjo6YXBwZW5kQ2hhcmFjdGVycyk6IFVzZSBpc0xhdGluMSBhbmQgYWxzbyBjYWxsIGFwcGVuZCBy
YXRoZXIgdGhhbgorICAgICAgICBjYWxsaW5nIGFwcGVuZENoYXJhY3RlcnMsIHNpbmNlIGl0J3Mg
dGhlIHNhbWUgdGhpbmcsIGlubGluZWQsIGFuZCByZW1vdmVzIHRoZSBuZWVkIGZvcgorICAgICAg
ICBhIGxvY2FsIHZhcmlhYmxlLiBBbHNvIHR3ZWFrZWQgdGhlIGlkaW9tIG9mIHRoZSBjb2RlIHVz
aW5nIG1lbWNweS4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6Y2FuU2hyaW5rIGNvbnN0
KTogUmV3b3JkZWQgYSBjb21tZW50LgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmQpOiBVc2UgaXNMYXRpbjEu
CisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb21tb24uaDoKKyAgICAgICAgKFdURjo6aXNM
YXRpbjEpOiBNb3ZlZCB0aGlzIGZ1bmN0aW9uIHRlbXBsYXRlIGhlcmUgc28gaXQgY2FuIGJlIHVz
ZWQgaGVyZS4KKyAgICAgICAgKFdURjo6ZmluZCk6IFVzZSBpc0xhdGluMS4KKworICAgICAgICAq
IHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdURjo6aXNMYXRpbjEpOiBEZWxldGVk
LiBNb3ZlZCB0byBTdHJpbmdDb21tb24uaC4KKyAgICAgICAgKFdURjo6cmV2ZXJzZUZpbmQpOiBV
c2UgaXNMYXRpbjEuCisgICAgICAgIChXVEY6OmlzU3BhY2VPck5ld2xpbmUpOiBEaXR0by4KKwog
MjAxOS0wOC0xNyAgRXJpYyBMaWFuZyAgPGVyaWNsaWFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkZWQgSEFWRV9BQ0NFU1NJQklMSVRZX0JVTkRMRVNfUEFUSApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZkMzIz
MTc5YzhhMmIxMDczZDFkZThiOWU0N2I0NmViODI4NzMxMTYuLmY2MjkzMzA3ZDMzZjBhNDY1N2Fi
NGQ2NWQ4OTc3ZTFlMTgxNzZlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOS0w
OC0xNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGlkeSB1cCBj
aGVja3MgdG8gc2VlIGlmIGEgY2hhcmFjdGVyIGlzIGluIHRoZSBMYXRpbi0xIHJhbmdlIGJ5IHVz
aW5nIGlzTGF0aW4xIGNvbnNpc3RlbnRseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwODYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBjc3MvbWFrZVNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRp
YmlsaXR5RWxlbWVudE1hcC5weTogVXNlIGlzTGF0aW4xLgorICAgICAgICAqIGNzcy9tYWtlU2Vs
ZWN0b3JQc2V1ZG9FbGVtZW50c01hcC5weTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkSFRUUEhlYWRl
clZhbHVlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkQWNjZXB0SGVhZGVyVmFs
dWUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVVRGODo6aGFuZGxlUGFydGlhbFNlcXVlbmNlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNVVEY4OjpkZWNvZGUpOiBEaXR0by4K
KwogMjAxOS0wOC0xNyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
UmVuYW1lIFN0cmluZ0J1aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgdG8gU3RyaW5nQnVpbGRl
cjo6YXBwZW5kKC4uLikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXgg
ZTk4Y2RiNWU1OWUyMzA3MmMxOTAxOGY4N2QxMGMyZDQ1MmQ5Y2QzOS4uZDIzMzEzNmQ5OGNhY2Fm
NThlYjMzZDlmYTdmNDQ3YzQ2NjgxNTM2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5jcHAKQEAgLTg0OSwzMSArODQ5LDEwIEBAIHN0YXRpYyBpbmxpbmUgTENoYXIgc2luZ2xl
RXNjYXBlKGludCBjKQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUgdm9pZCBMZXhlcjxU
Pjo6cmVjb3JkOChpbnQgYykKIHsKLSAgICBBU1NFUlQoYyA+PSAwKTsKLSAgICBBU1NFUlQoYyA8
PSAweEZGKTsKKyAgICBBU1NFUlQoaXNMYXRpbjEoYykpOwogICAgIG1fYnVmZmVyOC5hcHBlbmQo
c3RhdGljX2Nhc3Q8TENoYXI+KGMpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxp
bmUgdm9pZCBhc3NlcnRDaGFySXNJbjhCaXRSYW5nZShUIGMpCi17Ci0gICAgVU5VU0VEX1BBUkFN
KGMpOwotICAgIEFTU0VSVChjID49IDApOwotICAgIEFTU0VSVChjIDw9IDB4RkYpOwotfQotCi10
ZW1wbGF0ZSA8PgotaW5saW5lIHZvaWQgYXNzZXJ0Q2hhcklzSW44Qml0UmFuZ2UoVUNoYXIgYykK
LXsKLSAgICBVTlVTRURfUEFSQU0oYyk7Ci0gICAgQVNTRVJUKGMgPD0gMHhGRik7Ci19Ci0KLXRl
bXBsYXRlIDw+Ci1pbmxpbmUgdm9pZCBhc3NlcnRDaGFySXNJbjhCaXRSYW5nZShMQ2hhcikKLXsK
LX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUgdm9pZCBMZXhlcjxUPjo6YXBwZW5k
OChjb25zdCBUKiBwLCBzaXplX3QgbGVuZ3RoKQogewpAQCAtODgzLDcgKzg2Miw3IEBAIGlubGlu
ZSB2b2lkIExleGVyPFQ+OjphcHBlbmQ4KGNvbnN0IFQqIHAsIHNpemVfdCBsZW5ndGgpCiAKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIFQgYyA9IHBb
aV07Ci0gICAgICAgIGFzc2VydENoYXJJc0luOEJpdFJhbmdlKGMpOworICAgICAgICBBU1NFUlQo
aXNMYXRpbjEoYykpOwogICAgICAgICByYXdCdWZmZXJbaV0gPSBjOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAKaW5kZXggZDg2Mjg3M2Zh
YmI3ZDQyNjhmNTg3MzBmNDAwMDczMzc1N2Y5OGRhNy4uMTJjN2E4MmQzODNhZTMwZWVjOWMxMzBl
YTg4YTgzZTY3NzRjM2YwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRl
bnRpZmllci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgUmVmPFN0cmluZ0ltcGw+IElkZW50aWZpZXI6
OmFkZDgoVk0qIHZtLCBjb25zdCBVQ2hhciogcywgaW50IGxlbmd0aCkKIHsKICAgICBpZiAobGVu
Z3RoID09IDEpIHsKICAgICAgICAgVUNoYXIgYyA9IHNbMF07Ci0gICAgICAgIEFTU0VSVChjIDw9
IDB4ZmYpOworICAgICAgICBBU1NFUlQoaXNMYXRpbjEoYykpOwogICAgICAgICBpZiAoY2FuVXNl
U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGMpKQogICAgICAgICAgICAgcmV0dXJuIHZtLT5zbWFsbFN0
cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nUmVwKGMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5kZXggYjM5ZGRhZGJiZjE2
MDc3MGViYzViOGNmNGUxOGU3Y2Y1MjA0NGNlYi4uZTc5MWRhNzdlOTA5Y2Y1ZDk5MmYwOTEwN2M1
Nzc3ZGQ5N2IzOTlkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0
ZXJhbFBhcnNlci5jcHAKQEAgLTU3OSw3ICs1NzksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBi
b29sIGlzU2FmZVN0cmluZ0NoYXJhY3RlcihMQ2hhciBjLCBMQ2hhciB0ZXJtaW5hdG9yKQogdGVt
cGxhdGUgPFNhZmVTdHJpbmdDaGFyYWN0ZXJTZXQgc2V0Pgogc3RhdGljIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc1NhZmVTdHJpbmdDaGFyYWN0ZXIoVUNoYXIgYywgVUNoYXIgdGVybWluYXRvcikKIHsK
LSAgICByZXR1cm4gKGMgPj0gJyAnICYmIChzZXQgPT0gU2FmZVN0cmluZ0NoYXJhY3RlclNldDo6
U3RyaWN0IHx8IGMgPD0gMHhmZikgJiYgYyAhPSAnXFwnICYmIGMgIT0gdGVybWluYXRvcikgfHwg
KGMgPT0gJ1x0JyAmJiBzZXQgIT0gU2FmZVN0cmluZ0NoYXJhY3RlclNldDo6U3RyaWN0KTsKKyAg
ICByZXR1cm4gKGMgPj0gJyAnICYmIChzZXQgPT0gU2FmZVN0cmluZ0NoYXJhY3RlclNldDo6U3Ry
aWN0IHx8IGlzTGF0aW4xKGMpKSAmJiBjICE9ICdcXCcgJiYgYyAhPSB0ZXJtaW5hdG9yKSB8fCAo
YyA9PSAnXHQnICYmIHNldCAhPSBTYWZlU3RyaW5nQ2hhcmFjdGVyU2V0OjpTdHJpY3QpOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCA4YzExOTYyNDI0N2NjNjY3MGJi
MGVjNmMyNjZlN2VlZjU0M2QwMDQxLi5jMTc2NmJhYWE4N2I5ODI5N2Q3OTEzNzk5NTRhZGE1OWU0
OWI0MGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAKQEAgLTg3NSw3ICs4NzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY1JlcGVhdENoYXJhY3RlcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
c2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBVQ2hhciBjaGFyYWN0ZXIgPSB2aWV3WzBd
OwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBpZiAoIShjaGFyYWN0ZXIgJiB+MHhmZikpCisg
ICAgaWYgKGlzTGF0aW4xKGNoYXJhY3RlcikpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVwZWF0Q2hhcmFjdGVyKCpleGVjLCBzdGF0aWNfY2FzdDxMQ2hhcj4oY2hhcmFjdGVyKSwg
cmVwZWF0Q291bnQpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlcGVhdENoYXJhY3Rl
cigqZXhlYywgY2hhcmFjdGVyLCByZXBlYXRDb3VudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySklULmNwcAppbmRleCA0MTJjNmU0YTZjYmVhYzg5MzIxYjBhZTc4MGZkZDc2YTA2
MTliZTJkLi5lMWUzMTA4NjRlMmE5NDQyYzQxNTUxOGM4ZTg2NzVjOGFkMTBjNGE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtMTM3Myw3ICsxMzczLDcgQEAgY2xh
c3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2Vt
YmxlciB7CiAgICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwogICAgICAgICBV
Q2hhcjMyIGNoID0gdGVybS0+cGF0dGVybkNoYXJhY3RlcjsKIAotICAgICAgICBpZiAoKGNoID4g
MHhmZikgJiYgKG1fY2hhclNpemUgPT0gQ2hhcjgpKSB7CisgICAgICAgIGlmICghaXNMYXRpbjEo
Y2gpICYmIChtX2NoYXJTaXplID09IENoYXI4KSkgewogICAgICAgICAgICAgLy8gSGF2ZSBhIDE2
IGJpdCBwYXR0ZXJuIGNoYXJhY3RlciBhbmQgYW4gOCBiaXQgc3RyaW5nIC0gc2hvcnQgY2lyY3Vp
dAogICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcCgpKTsKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTE0MjgsNyArMTQyOCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwdWJsaWMg
WWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAgICAgICAgICBVQ2hh
cjMyIGN1cnJlbnRDaGFyYWN0ZXIgPSBuZXh0VGVybS0+cGF0dGVybkNoYXJhY3RlcjsKIAotICAg
ICAgICAgICAgaWYgKChjdXJyZW50Q2hhcmFjdGVyID4gMHhmZikgJiYgKG1fY2hhclNpemUgPT0g
Q2hhcjgpKSB7CisgICAgICAgICAgICBpZiAoIWlzTGF0aW4xKGN1cnJlbnRDaGFyYWN0ZXIpICYm
IChtX2NoYXJTaXplID09IENoYXI4KSkgewogICAgICAgICAgICAgICAgIC8vIEhhdmUgYSAxNiBi
aXQgcGF0dGVybiBjaGFyYWN0ZXIgYW5kIGFuIDggYml0IHN0cmluZyAtIHNob3J0IGNpcmN1aXQK
ICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wKCkpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTE2MjMsNyArMTYyMyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBtb3Zl
KFRydXN0ZWRJbW0zMigwKSwgY291bnRSZWdpc3Rlcik7CiAKICAgICAgICAgLy8gVW5sZXNzIGhh
dmUgYSAxNiBiaXQgcGF0dGVybiBjaGFyYWN0ZXIgYW5kIGFuIDggYml0IHN0cmluZyAtIHNob3J0
IGNpcmN1aXQKLSAgICAgICAgaWYgKCEoKGNoID4gMHhmZikgJiYgKG1fY2hhclNpemUgPT0gQ2hh
cjgpKSkgeworICAgICAgICBpZiAoISghaXNMYXRpbjEoY2gpICYmIChtX2NoYXJTaXplID09IENo
YXI4KSkpIHsKICAgICAgICAgICAgIEp1bXBMaXN0IGZhaWx1cmVzOwogICAgICAgICAgICAgTGFi
ZWwgbG9vcCh0aGlzKTsKICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChhdEVuZE9mSW5wdXQo
KSk7CkBAIC0xNjk2LDcgKzE2OTYsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHVibGljIFlh
cnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgbG9hZEZyb21GcmFt
ZSh0ZXJtLT5mcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhdHRlcm5DaGFyYWN0ZXI6Om1h
dGNoQW1vdW50SW5kZXgoKSwgY291bnRSZWdpc3Rlcik7CiAKICAgICAgICAgLy8gVW5sZXNzIGhh
dmUgYSAxNiBiaXQgcGF0dGVybiBjaGFyYWN0ZXIgYW5kIGFuIDggYml0IHN0cmluZyAtIHNob3J0
IGNpcmN1aXQKLSAgICAgICAgaWYgKCEoKGNoID4gMHhmZikgJiYgKG1fY2hhclNpemUgPT0gQ2hh
cjgpKSkgeworICAgICAgICBpZiAoISghaXNMYXRpbjEoY2gpICYmIChtX2NoYXJTaXplID09IENo
YXI4KSkpIHsKICAgICAgICAgICAgIEp1bXBMaXN0IG5vbkdyZWVkeUZhaWx1cmVzOwogICAgICAg
ICAgICAgbm9uR3JlZWR5RmFpbHVyZXMuYXBwZW5kKGF0RW5kT2ZJbnB1dCgpKTsKICAgICAgICAg
ICAgIGlmICh0ZXJtLT5xdWFudGl0eU1heENvdW50ICE9IHF1YW50aWZ5SW5maW5pdGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAppbmRleCA4YjE2ZGY5YmFlNTc3NWNhYTUzODRl
MDVkOTljM2YwYjM2N2Q3OGIxLi40ODc5MDkzNTQwOTRkM2RmZTBmMDNiNzYzZWZjMDllMzk3MmVk
ODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAKQEAgLTI5LDggKzI5LDYg
QEAKIAogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9JbnRl
Z2VyVG9TdHJpbmdDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC00NSw2ICs0
Myw3IEBAIHN0YXRpYyB1bnNpZ25lZCBleHBhbmRlZENhcGFjaXR5KHVuc2lnbmVkIGNhcGFjaXR5
LCB1bnNpZ25lZCByZXF1aXJlZExlbmd0aCkKIHZvaWQgU3RyaW5nQnVpbGRlcjo6cmVpZnlTdHJp
bmcoKSBjb25zdAogewogICAgIEFTU0VSVCghaGFzT3ZlcmZsb3dlZCgpKTsKKwogICAgIC8vIENo
ZWNrIGlmIHRoZSBzdHJpbmcgYWxyZWFkeSBleGlzdHMuCiAgICAgaWYgKCFtX3N0cmluZy5pc051
bGwoKSkgewogICAgICAgICBBU1NFUlQobV9zdHJpbmcubGVuZ3RoKCkgPT0gbV9sZW5ndGgudW5z
YWZlR2V0PHVuc2lnbmVkPigpKTsKQEAgLTIzNCw4ICsyMzMsNyBAQCB2b2lkIFN0cmluZ0J1aWxk
ZXI6OnJlc2VydmVDYXBhY2l0eSh1bnNpZ25lZCBuZXdDYXBhY2l0eSkKIC8vIE1ha2UgJ2FkZGl0
aW9uYWxMZW5ndGgnIGFkZGl0aW9uYWwgY2FwYWNpdHkgYmUgYXZhaWxhYmxlIGluIG1fYnVmZmVy
LCB1cGRhdGUgbV9zdHJpbmcgJiBtX2xlbmd0aCwKIC8vIHJldHVybiBhIHBvaW50ZXIgdG8gdGhl
IG5ld2x5IGFsbG9jYXRlZCBzdG9yYWdlLgogLy8gUmV0dXJucyBudWxscHRyIGlmIHRoZSBzaXpl
IG9mIHRoZSBuZXcgYnVpbGRlciB3b3VsZCBoYXZlIG92ZXJmbG93ZWQKLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIENoYXJhY3RlclR5cGUqIFN0cmluZ0J1
aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWQodW5zaWduZWQgYWRkaXRpb25hbExlbmd0aCkKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgQ2hhcmFjdGVyVHlw
ZSogU3RyaW5nQnVpbGRlcjo6YXBwZW5kVW5pbml0aWFsaXplZCh1bnNpZ25lZCBhZGRpdGlvbmFs
TGVuZ3RoKQogewogICAgIEFTU0VSVChhZGRpdGlvbmFsTGVuZ3RoKTsKIApAQCAtMjQ5LDggKzI0
Nyw3IEBAIEFMV0FZU19JTkxJTkUgQ2hhcmFjdGVyVHlwZSogU3RyaW5nQnVpbGRlcjo6YXBwZW5k
VW5pbml0aWFsaXplZCh1bnNpZ25lZCBhZGRpdGlvCiAgICAgcmV0dXJuIGFwcGVuZFVuaW5pdGlh
bGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVjazxDaGFyYWN0ZXJUeXBlPihyZXF1aXJlZExlbmd0aCk7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIENo
YXJhY3RlclR5cGUqIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3Zl
cmZsb3dDaGVjayhDaGVja2VkSW50MzIgcmVxdWlyZWRMZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIENoYXJhY3RlclR5cGUqIFN0cmluZ0J1aWxk
ZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVjayhDaGVja2VkSW50MzIg
cmVxdWlyZWRMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFyZXF1aXJlZExlbmd0aC5oYXNPdmVyZmxv
d2VkKCkpOwogCkBAIC0yNzgsOCArMjc1LDcgQEAgTENoYXIqIFN0cmluZ0J1aWxkZXI6OmFwcGVu
ZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVja0ZvckxDaGFyKENoZWNrZWRJbnQKIAog
Ly8gTWFrZSAncmVxdWlyZWRMZW5ndGgnIGNhcGFjaXR5IGJlIGF2YWlsYWJsZSBpbiBtX2J1ZmZl
ciwgdXBkYXRlIG1fc3RyaW5nICYgbV9sZW5ndGgsCiAvLyByZXR1cm4gYSBwb2ludGVyIHRvIHRo
ZSBuZXdseSBhbGxvY2F0ZWQgc3RvcmFnZS4KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+Ci1DaGFyYWN0ZXJUeXBlKiBTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkU2xv
dyh1bnNpZ25lZCByZXF1aXJlZExlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IENoYXJhY3RlclR5cGUqIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWRTbG93
KHVuc2lnbmVkIHJlcXVpcmVkTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzT3ZlcmZsb3dlZCgp
KTsKICAgICBBU1NFUlQocmVxdWlyZWRMZW5ndGgpOwpAQCAtMzExLDEyICszMDcsMTMgQEAgdm9p
ZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQVNTRVJUKGNoYXJhY3RlcnMpOwogCiAgICAgaWYgKG1f
aXM4Qml0KSB7Ci0gICAgICAgIGlmIChsZW5ndGggPT0gMSAmJiAhKCpjaGFyYWN0ZXJzICYgfjB4
ZmYpKSB7Ci0gICAgICAgICAgICAvLyBBcHBlbmQgYXMgOCBiaXQgY2hhcmFjdGVyCi0gICAgICAg
ICAgICBMQ2hhciBsQ2hhciA9IHN0YXRpY19jYXN0PExDaGFyPigqY2hhcmFjdGVycyk7Ci0gICAg
ICAgICAgICByZXR1cm4gYXBwZW5kQ2hhcmFjdGVycygmbENoYXIsIDEpOworICAgICAgICBpZiAo
bGVuZ3RoID09IDEgJiYgaXNMYXRpbjEoY2hhcmFjdGVyc1swXSkpIHsKKyAgICAgICAgICAgIGFw
cGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oY2hhcmFjdGVyc1swXSkpOworICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBvcHRpbWl6ZSBt
ZW1vcnkgYnkga2VlcGluZyB0aGUgc3RyaW5nIDgtYml0IHdoZW4gYWxsIHRoZSBjaGFyYWN0ZXJz
IGFyZSBMYXRpbi0xPworCiAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgbmV3IHNpemUgb2YgdGhl
IGJ1aWxkZXIgYWZ0ZXIgYXBwZW5kaW5nLgogICAgICAgICBDaGVja2VkSW50MzIgcmVxdWlyZWRM
ZW5ndGggPSBtX2xlbmd0aCArIGxlbmd0aDsKICAgICAgICAgaWYgKHJlcXVpcmVkTGVuZ3RoLmhh
c092ZXJmbG93ZWQoKSkKQEAgLTM1OSw4ICszNTYsOSBAQCB2b2lkIFN0cmluZ0J1aWxkZXI6OmFw
cGVuZENoYXJhY3RlcnMoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAobGVuZ3RoID4gOCkK
LSAgICAgICAgICAgIG1lbWNweShkZXN0LCBjaGFyYWN0ZXJzLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KGxlbmd0aCkgKiBzaXplb2YoTENoYXIpKTsKKyAgICAgICAgICAgIG1lbWNweShkZXN0LCBjaGFy
YWN0ZXJzLCBsZW5ndGgpOwogICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBI
b3cgc3Ryb25nIGlzIG91ciBldmlkZW5jZSB0aGF0IHRoaXMgaXMgZmFzdGVyIHRoYW4gbWVtY3B5
PyBXaGF0IHBsYXRmb3JtcyBpcyB0aGlzIHRydWUgZm9yPwogICAgICAgICAgICAgY29uc3QgTENo
YXIqIGVuZCA9IGNoYXJhY3RlcnMgKyBsZW5ndGg7CiAgICAgICAgICAgICB3aGlsZSAoY2hhcmFj
dGVycyA8IGVuZCkKICAgICAgICAgICAgICAgICAqKGRlc3QrKykgPSAqKGNoYXJhY3RlcnMrKyk7
CkBAIC00NjEsNyArNDU5LDggQEAgYm9vbCBTdHJpbmdCdWlsZGVyOjpjYW5TaHJpbmsoKSBjb25z
dAogewogICAgIGlmIChoYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAvLyBPbmx5IHNocmluayB0aGUgYnVmZmVyIGlmIGl0J3MgbGVzcyB0aGFuIDgwJSBmdWxsLiBO
ZWVkIHRvIHR1bmUgdGhpcyBoZXVyaXN0aWMhCisgICAgLy8gT25seSBzaHJpbmsgdGhlIGJ1ZmZl
ciBpZiBpdCdzIGxlc3MgdGhhbiA4MCUgZnVsbC4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHR1
bmUgdGhpcyBoZXVyaXN0aWMgYmFzZWQgc29tZSBhY3R1YWwgdGVzdCBjYXNlIG1lYXN1cmVtZW50
cy4KICAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2xlbmd0aC51bnNhZmVHZXQoKTsKICAgICByZXR1
cm4gbV9idWZmZXIgJiYgbV9idWZmZXItPmxlbmd0aCgpID4gKGxlbmd0aCArIChsZW5ndGggPj4g
MikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAppbmRleCAxNGM5NDUzN2EzOTNm
MzY0OTAxM2ZmMmEzOTlkZjgzN2I5YmRhYjM2Li42ZDAwOTI4YzY0NzkyOTNmZTlhYzEyNmEwNmVh
MTk4ZTZmNzc5YmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaApAQCAtMTc1LDcg
KzE3NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGlmICghKGMgJiB+MHhmZikpIHsKKyAgICAgICAgICAgIGlmIChpc0xh
dGluMShjKSkgewogICAgICAgICAgICAgICAgIG1fYnVmZmVyQ2hhcmFjdGVyczhbbGVuZ3RoXSA9
IHN0YXRpY19jYXN0PExDaGFyPihjKTsKICAgICAgICAgICAgICAgICBtX2xlbmd0aCsrOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nQ29tbW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCmluZGV4IDZh
N2RmOTY2ZDg4MGUwYTRiNjUyZjk4YjE1ZGM5NjZkNDNiMjI3YmUuLjQ4YzIwYjE3ZjMyM2JlNzRi
MGQ2NDQ0Nzk1MjQ2MWJmZDU0MThhMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQ29tbW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMzLDYgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBpc0xhdGluMShDaGFyYWN0ZXJUeXBlIGNoYXJh
Y3RlcikKK3sKKyAgICB1c2luZyBVbnNpZ25lZENoYXJhY3RlclR5cGUgPSB0eXBlbmFtZSBzdGQ6
Om1ha2VfdW5zaWduZWQ8Q2hhcmFjdGVyVHlwZT46OnR5cGU7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFVuc2lnbmVkQ2hhcmFjdGVyVHlwZT4oY2hhcmFjdGVyKSA8PSBzdGF0aWNfY2FzdDxVbnNp
Z25lZENoYXJhY3RlclR5cGU+KDB4RkYpOworfQorCiB1c2luZyBDb2RlVW5pdE1hdGNoRnVuY3Rp
b24gPSBib29sICgqKShVQ2hhcik7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGVB
LCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlQj4gYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IENoYXJhY3RlclR5cGVBKiwgY29uc3QgQ2hhcmFjdGVyVHlwZUIqLCB1bnNpZ25lZCBsZW5n
dGgpOwpAQCAtNTQ4LDcgKzU1NCw3IEBAIEFMV0FZU19JTkxJTkUgc2l6ZV90IGZpbmQoY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIgbWF0Y2hDCiAKIGlubGlu
ZSBzaXplX3QgZmluZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBV
Q2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSAwKQogewotICAgIGlmIChtYXRj
aENoYXJhY3RlciAmIH4weEZGKQorICAgIGlmICghaXNMYXRpbjEobWF0Y2hDaGFyYWN0ZXIpKQog
ICAgICAgICByZXR1cm4gbm90Rm91bmQ7CiAgICAgcmV0dXJuIGZpbmQoY2hhcmFjdGVycywgbGVu
Z3RoLCBzdGF0aWNfY2FzdDxMQ2hhcj4obWF0Y2hDaGFyYWN0ZXIpLCBpbmRleCk7CiB9CkBAIC02
NjYsMyArNjcyLDQgQEAgdGVtcGxhdGU8dW5zaWduZWQgbG93ZXJjYXNlTGV0dGVyc0xlbmd0aD4g
aW5saW5lIGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUMKIAogdXNpbmcgV1RGOjplcXVh
bElnbm9yaW5nQVNDSUlDYXNlOwogdXNpbmcgV1RGOjplcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZTsKK3VzaW5nIFdURjo6aXNMYXRpbjE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4
IDE1MmE0MTBiNGZlZjA0ZGVkYjRhMmIwZGVjNTcwNGY1ZWE1OWEzN2QuLmU4OTRmNDZlMzQwMTQ3
Y2ZiZGY3OTE2YWIxZDAzYjRkYTZhNTNkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBA
IC0xMjgsMTIgKzEyOCw2IEBAIHN0cnVjdCBTdHJpbmdTdGF0cyB7CiAKICNlbmRpZgogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBpc0xhdGluMShDaGFyYWN0
ZXJUeXBlIGNoYXJhY3RlcikKLXsKLSAgICB1c2luZyBVbnNpZ25lZENoYXJhY3RlclR5cGUgPSB0
eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8Q2hhcmFjdGVyVHlwZT46OnR5cGU7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PFVuc2lnbmVkQ2hhcmFjdGVyVHlwZT4oY2hhcmFjdGVyKSA8PSBzdGF0
aWNfY2FzdDxVbnNpZ25lZENoYXJhY3RlclR5cGU+KDB4RkYpOwotfQotCiBjbGFzcyBTdHJpbmdJ
bXBsU2hhcGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0cmluZ0ltcGxTaGFwZSk7CiBw
dWJsaWM6CkBAIC02ODIsNyArNjc2LDcgQEAgQUxXQVlTX0lOTElORSBzaXplX3QgcmV2ZXJzZUZp
bmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIKIAogaW5s
aW5lIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoLCBVQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXgpCiB7Ci0gICAgaWYg
KG1hdGNoQ2hhcmFjdGVyICYgfjB4RkYpCisgICAgaWYgKCFpc0xhdGluMShtYXRjaENoYXJhY3Rl
cikpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKICAgICByZXR1cm4gcmV2ZXJzZUZpbmQoY2hh
cmFjdGVycywgbGVuZ3RoLCBzdGF0aWNfY2FzdDxMQ2hhcj4obWF0Y2hDaGFyYWN0ZXIpLCBpbmRl
eCk7CiB9CkBAIC03NTMsNyArNzQ3LDcgQEAgaW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJlKGNv
bnN0IFN0cmluZ0ltcGwqIHN0cmluZzEsIGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZzIKIGlubGlu
ZSBib29sIGlzU3BhY2VPck5ld2xpbmUoVUNoYXIzMiBjaGFyYWN0ZXIpCiB7CiAgICAgLy8gVXNl
IGlzQVNDSUlTcGFjZSgpIGZvciBhbGwgTGF0aW4tMSBjaGFyYWN0ZXJzLiBUaGlzIHdpbGwgaW5j
bHVkZSBuZXdsaW5lcywgd2hpY2ggYXJlbid0IGluY2x1ZGVkIGluIFVuaWNvZGUgRGlyV1MuCi0g
ICAgcmV0dXJuIGNoYXJhY3RlciA8PSAweEZGID8gaXNBU0NJSVNwYWNlKGNoYXJhY3RlcikgOiB1
X2NoYXJEaXJlY3Rpb24oY2hhcmFjdGVyKSA9PSBVX1dISVRFX1NQQUNFX05FVVRSQUw7CisgICAg
cmV0dXJuIGlzTGF0aW4xKGNoYXJhY3RlcikgPyBpc0FTQ0lJU3BhY2UoY2hhcmFjdGVyKSA6IHVf
Y2hhckRpcmVjdGlvbihjaGFyYWN0ZXIpID09IFVfV0hJVEVfU1BBQ0VfTkVVVFJBTDsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9m
TnVsbFRlcm1pbmF0ZWRTdHJpbmcoY29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyaW5nKQpAQCAtMTI0
Myw0ICsxMjM3LDMgQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcKIHVzaW5nIFdURjo6U3RhdGlj
U3RyaW5nSW1wbDsKIHVzaW5nIFdURjo6U3RyaW5nSW1wbDsKIHVzaW5nIFdURjo6ZXF1YWw7Ci11
c2luZyBXVEY6OmlzTGF0aW4xOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2VT
ZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAucHkgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvbWFrZVNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVu
dE1hcC5weQppbmRleCBiYjE3YjhiNTA2NmFlZDQ3NjlmYWZmZWJlZDRiM2I0ZjIxMjhjNTRhLi4y
Y2YzYzE4NjcwNTg4N2VjNDE1NTFlMDg5MzgzNmEyNTlmYjk4ZDMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvbWFrZVNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxl
bWVudE1hcC5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZVNlbGVjdG9yUHNldWRvQ2xh
c3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5weQpAQCAtMTc0LDcgKzE3NCw3IEBAIHN0YXRp
YyBpbmxpbmUgY29uc3QgU2VsZWN0b3JQc2V1ZG9DbGFzc09yQ29tcGF0aWJpbGl0eVBzZXVkb0Vs
ZW1lbnRFbnRyeSogcGFyc2VQCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKICAgICAgICAgVUNoYXIgY2hhcmFjdGVyID0gY2hhcmFjdGVyc1tpXTsKLSAgICAg
ICAgaWYgKGNoYXJhY3RlciAmIH4weGZmKQorICAgICAgICBpZiAoIWlzTGF0aW4xKGNoYXJhY3Rl
cikpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBidWZmZXJbaV0gPSBz
dGF0aWNfY2FzdDxMQ2hhcj4oY2hhcmFjdGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9tYWtlU2VsZWN0b3JQc2V1ZG9FbGVtZW50c01hcC5weSBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9tYWtlU2VsZWN0b3JQc2V1ZG9FbGVtZW50c01hcC5weQppbmRleCAzZDQ0MmUxYjllMzAxMzFi
NjRiNjIxMWYxZTE1MTZkY2ZiYWZjODI0Li5kOTliYmRhYWI5NDA3Y2U2ODJjNDZjNTJlMGY1OWEy
N2E2MTEzZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZVNlbGVjdG9yUHNl
dWRvRWxlbWVudHNNYXAucHkKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2VTZWxlY3RvclBz
ZXVkb0VsZW1lbnRzTWFwLnB5CkBAIC0xNzUsNyArMTc1LDcgQEAgc3RhdGljIGlubGluZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvRWxlbWVudFR5cGUgcGFyc2VQc2V1ZG9FbGVtZW50U3RyaW5nKGNvbnN0
IFVDaGEKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAg
ICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBjaGFyYWN0ZXJzW2ldOwotICAgICAgICBpZiAoY2hhcmFj
dGVyICYgfjB4ZmYpCisgICAgICAgIGlmICghaXNMYXRpbjEoY2hhcmFjdGVyKSkKICAgICAgICAg
ICAgIHJldHVybiBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFVua25vd247CiAKICAgICAgICAg
YnVmZmVyW2ldID0gc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3Rlcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IDNjY2U1YmRlZTZl
YTFiMWZlZmI5NDE0MDcxMmFmZTkwYWY3MGZlZDUuLjdiNjdiNGEyMGM0ZGE3ZWU1MzNkYWI5YWM3
ZWZiNjE2ZGE4MmRjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
SFRUUFBhcnNlcnMuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBpc1ZhbGlkSFRUUEhlYWRl
clZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoKCk7ICsraSkgewogICAgICAgICBj
ID0gdmFsdWVbaV07Ci0gICAgICAgIEFTU0VSVChjIDw9IDB4RkYpOworICAgICAgICBBU1NFUlQo
aXNMYXRpbjEoYykpOwogICAgICAgICBpZiAoYyA9PSAweDAwIHx8IGMgPT0gMHgwQSB8fCBjID09
IDB4MEQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTQ1LDcgKzE0NSw3
IEBAIGJvb2wgaXNWYWxpZEFjY2VwdEhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKGMpIHx8IGMgPT0gJywnIHx8IGMgPT0gJy8n
IHx8IGMgPT0gJzsnIHx8IGMgPT0gJz0nKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgQVNTRVJUKGMgPD0gMHhGRik7CisgICAgICAgIEFTU0VSVChpc0xhdGluMShjKSk7CiAgICAg
ICAgIGlmIChjID09IDB4N0YgfHwgKGMgPCAweDIwICYmIGMgIT0gJ1x0JykpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjVVRGOC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY1VURjguY3BwCmluZGV4IGEzZGFkNGU5ZDE2Mzc2ODYzMDg4YjE5NzEwZjgzOWRiYmZmZWE4
ZGQuLjQwNmRkN2MzZjk4MjAzZDg1YjJhNjQ1NDNhNjExODA2MWVlMmM5MGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcApAQCAtMjA4LDcgKzIw
OCw3IEBAIGJvb2wgVGV4dENvZGVjVVRGODo6aGFuZGxlUGFydGlhbFNlcXVlbmNlKExDaGFyKiYg
ZGVzdGluYXRpb24sIGNvbnN0IHVpbnQ4X3QqJiBzCiAgICAgICAgICAgICBtX3BhcnRpYWxTZXF1
ZW5jZVNpemUgPSBjb3VudDsKICAgICAgICAgfQogICAgICAgICBpbnQgY2hhcmFjdGVyID0gZGVj
b2RlTm9uQVNDSUlTZXF1ZW5jZShtX3BhcnRpYWxTZXF1ZW5jZSwgY291bnQpOwotICAgICAgICBp
ZiAoY2hhcmFjdGVyID09IG5vbkNoYXJhY3RlciB8fCBjaGFyYWN0ZXIgPiAweEZGKQorICAgICAg
ICBpZiAoIWlzTGF0aW4xKGNoYXJhY3RlcikpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgICAgICBtX3BhcnRpYWxTZXF1ZW5jZVNpemUgLT0gY291bnQ7CkBAIC0zNDUsNyArMzQ1LDcg
QEAgU3RyaW5nIFRleHRDb2RlY1VURjg6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90
IGxlbmd0aCwgYm9vbCBmbHVzaCwgYm9vbAogCiAgICAgICAgICAgICAgICAgZ290byB1cENvbnZl
cnRUbzE2Qml0OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA+IDB4
RkYpCisgICAgICAgICAgICBpZiAoIWlzTGF0aW4xKGNoYXJhY3RlcikpCiAgICAgICAgICAgICAg
ICAgZ290byB1cENvbnZlcnRUbzE2Qml0OwogCiAgICAgICAgICAgICBzb3VyY2UgKz0gY291bnQ7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376616</attachid>
            <date>2019-08-17 17:08:36 -0700</date>
            <delta_ts>2019-08-17 19:44:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200861-20190817170825.patch</filename>
            <type>text/plain</type>
            <size>26658</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZTM0MmI2ZDIxMTEzNDY0NzczNTdmODdkYmYxMWEwZjg1ZTViZTU5Li5hZWFkMjk0ZGE1Yzk5MGIy
NTE0ZWI4NDNjMWZmMGU3NjgxN2NkNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxOS0wOC0xNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVGlkeSB1cCBjaGVja3MgdG8gc2VlIGlmIGEgY2hhcmFjdGVyIGlzIGluIHRoZSBM
YXRpbi0xIHJhbmdlIGJ5IHVzaW5nIGlzTGF0aW4xIGNvbnNpc3RlbnRseQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwODYxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cmVjb3JkOCk6IFVzZSBpc0xhdGluMS4KKyAgICAgICAg
KEpTQzo6YXNzZXJ0Q2hhcklzSW44Qml0UmFuZ2UpOiBEZWxldGVkLiBDYW4ganVzdCBhc3NlcnQg
aXNMYXRpbjEgZGlyZWN0bHkuCisgICAgICAgIChKU0M6OkxleGVyPFQ+OjphcHBlbmQ4KTogQXNz
ZXJ0IGlzTGF0aW4xIGRpcmVjdGx5LgorICAgICAgICAoSlNDOjpjaGFyYWN0ZXJSZXF1aXJlc1Bh
cnNlU3RyaW5nU2xvd0Nhc2UpOiBVc2UgaXNMYXRpbjEuCisgICAgICAgICogcGFyc2VyL0xleGVy
Lmg6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFyPjo6aXNXaGl0ZVNwYWNlKTogRGl0dG8uCisg
ICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6TGl0ZXJh
bFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXgpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6aXNT
YWZlU3RyaW5nQ2hhcmFjdGVyKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVy
LmNwcDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRkOCk6IERpdHRvLgorICAgICAgICAq
IHJ1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OmlzU2FmZVN0cmluZ0No
YXJhY3Rlcik6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVyKTogRGl0dG8uCisg
ICAgICAgICogeWFyci9ZYXJySklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVy
YXRvcjo6Z2VuZXJhdGVQYXR0ZXJuQ2hhcmFjdGVyT25jZSk6IERpdHRvLgorICAgICAgICAoSlND
OjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpnZW5lcmF0ZVBhdHRlcm5DaGFyYWN0ZXJHcmVlZHkpOiBE
aXR0by4KKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6YmFja3RyYWNrUGF0dGVy
bkNoYXJhY3Rlck5vbkdyZWVkeSk6IERpdHRvLgorCiAyMDE5LTA4LTE2ICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3JlIG1pc3NpbmcgZXhjZXB0aW9uIGNoZWNr
cyBpbiBzdHJpbmcgY29tcGFyaXNvbiBvcGVyYXRvcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg0OTIwNzlmYTE5ZTcyZDY4
ZGNiNjljZDExNzY5MTQ1YmU5OTNlZGQuLjQ0NGFkZTY2MTRhNjUyNzcyOTMwZmU2ZTNlNjY2Yzcx
ZGRiNGI1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTktMDgtMTcgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFRpZHkgdXAgY2hlY2tzIHRvIHNlZSBpZiBhIGNo
YXJhY3RlciBpcyBpbiB0aGUgTGF0aW4tMSByYW5nZSBieSB1c2luZyBpc0xhdGluMSBjb25zaXN0
ZW50bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDg2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6
OmFwcGVuZENoYXJhY3RlcnMpOiBVc2UgaXNMYXRpbjEgYW5kIGFsc28gY2FsbCBhcHBlbmQgcmF0
aGVyIHRoYW4KKyAgICAgICAgY2FsbGluZyBhcHBlbmRDaGFyYWN0ZXJzLCBzaW5jZSBpdCdzIHRo
ZSBzYW1lIHRoaW5nLCBpbmxpbmVkLCBhbmQgcmVtb3ZlcyB0aGUgbmVlZCBmb3IKKyAgICAgICAg
YSBsb2NhbCB2YXJpYWJsZS4gQWxzbyB0d2Vha2VkIHRoZSBpZGlvbSBvZiB0aGUgY29kZSB1c2lu
ZyBtZW1jcHkuCisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OmNhblNocmluayBjb25zdCk6
IFJld29yZGVkIGEgY29tbWVudC4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aDoKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5kKTogVXNlIGlzTGF0aW4xLgor
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQ29tbW9uLmg6CisgICAgICAgIChXVEY6OmlzTGF0
aW4xKTogTW92ZWQgdGhpcyBmdW5jdGlvbiB0ZW1wbGF0ZSBoZXJlIHNvIGl0IGNhbiBiZSB1c2Vk
IGhlcmUuCisgICAgICAgIChXVEY6OmZpbmQpOiBVc2UgaXNMYXRpbjEuCisKKyAgICAgICAgKiB3
dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OmlzTGF0aW4xKTogRGVsZXRlZC4g
TW92ZWQgdG8gU3RyaW5nQ29tbW9uLmguCisgICAgICAgIChXVEY6OnJldmVyc2VGaW5kKTogVXNl
IGlzTGF0aW4xLgorICAgICAgICAoV1RGOjppc1NwYWNlT3JOZXdsaW5lKTogRGl0dG8uCisKIDIw
MTktMDgtMTcgIEVyaWMgTGlhbmcgIDxlcmljbGlhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZGVkIEhBVkVfQUNDRVNTSUJJTElUWV9CVU5ETEVTX1BBVEgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZDMyMzE3
OWM4YTJiMTA3M2QxZGU4YjllNDdiNDZlYjgyODczMTE2Li5kZDNmYWY2ZTliYjUxOTVmYTczNmNi
ODIyODFkMTU5ZGQ3M2JlMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMDgt
MTcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFRpZHkgdXAgY2hl
Y2tzIHRvIHNlZSBpZiBhIGNoYXJhY3RlciBpcyBpbiB0aGUgTGF0aW4tMSByYW5nZSBieSB1c2lu
ZyBpc0xhdGluMSBjb25zaXN0ZW50bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDg2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogY3NzL21ha2VTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJp
bGl0eUVsZW1lbnRNYXAucHk6IFVzZSBpc0xhdGluMS4KKyAgICAgICAgKiBjc3MvbWFrZVNlbGVj
dG9yUHNldWRvRWxlbWVudHNNYXAucHk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTm9uTGF0aW4xU2VwYXJhdG9yKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjppc1NlcGFyYXRvcik6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxp
ZFJlYXNvblBocmFzZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEhUVFBIZWFk
ZXJWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEFjY2VwdEhlYWRlclZh
bHVlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjTGF0aW4xOjpkZWNvZGUpOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENvZGVjVVRGODo6aGFuZGxlUGFydGlhbFNlcXVlbmNlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q29kZWNVVEY4OjpkZWNvZGUpOiBEaXR0by4KKwogMjAxOS0wOC0xNyAg
U2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFN0cmluZ0J1
aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgdG8gU3RyaW5nQnVpbGRlcjo6YXBwZW5kKC4uLikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAzNzUxOTVmZDIwNTM0ZDk2ZjFhNjU4ODdh
YzU4YjM4N2M5OGYyMTliLi5jMjIyNzlkYzM0MWE5NjA5NmNiMWU3MTM4NDZlNDkyMDNhYzY5MmVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgt
MTcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFRpZHkgdXAgY2hl
Y2tzIHRvIHNlZSBpZiBhIGNoYXJhY3RlciBpcyBpbiB0aGUgTGF0aW4tMSByYW5nZSBieSB1c2lu
ZyBpc0xhdGluMSBjb25zaXN0ZW50bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDg2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbToKKyAgICAgICAg
KGNhblVzZUZhc3RSZW5kZXJlcik6IFVzZSBpc0xhdGluMS4KKwogMjAxOS0wOC0xNiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIExvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlciBkb2VzIG5vdCBuZWVkIHRvIHN1YmNsYXNzIFRocmVhZFNhZmVSZWZDb3VudGVkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IGU5OGNkYjVlNTllMjMwNzJj
MTkwMThmODdkMTBjMmQ0NTJkOWNkMzkuLmNiOTE2MjEyZDNlNzM2YmUxMDY1NGI3NTljNzUzZTgw
YWI1NzIzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC04NDks
MzEgKzg0OSwxMCBAQCBzdGF0aWMgaW5saW5lIExDaGFyIHNpbmdsZUVzY2FwZShpbnQgYykKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogaW5saW5lIHZvaWQgTGV4ZXI8VD46OnJlY29yZDgoaW50IGMp
CiB7Ci0gICAgQVNTRVJUKGMgPj0gMCk7Ci0gICAgQVNTRVJUKGMgPD0gMHhGRik7CisgICAgQVNT
RVJUKGlzTGF0aW4xKGMpKTsKICAgICBtX2J1ZmZlcjguYXBwZW5kKHN0YXRpY19jYXN0PExDaGFy
PihjKSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgYXNzZXJ0Q2hh
cklzSW44Qml0UmFuZ2UoVCBjKQotewotICAgIFVOVVNFRF9QQVJBTShjKTsKLSAgICBBU1NFUlQo
YyA+PSAwKTsKLSAgICBBU1NFUlQoYyA8PSAweEZGKTsKLX0KLQotdGVtcGxhdGUgPD4KLWlubGlu
ZSB2b2lkIGFzc2VydENoYXJJc0luOEJpdFJhbmdlKFVDaGFyIGMpCi17Ci0gICAgVU5VU0VEX1BB
UkFNKGMpOwotICAgIEFTU0VSVChjIDw9IDB4RkYpOwotfQotCi10ZW1wbGF0ZSA8PgotaW5saW5l
IHZvaWQgYXNzZXJ0Q2hhcklzSW44Qml0UmFuZ2UoTENoYXIpCi17Ci19Ci0KIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogaW5saW5lIHZvaWQgTGV4ZXI8VD46OmFwcGVuZDgoY29uc3QgVCogcCwgc2l6
ZV90IGxlbmd0aCkKIHsKQEAgLTg4Myw3ICs4NjIsNyBAQCBpbmxpbmUgdm9pZCBMZXhlcjxUPjo6
YXBwZW5kOChjb25zdCBUKiBwLCBzaXplX3QgbGVuZ3RoKQogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICBUIGMgPSBwW2ldOwotICAgICAgICBhc3Nl
cnRDaGFySXNJbjhCaXRSYW5nZShjKTsKKyAgICAgICAgQVNTRVJUKGlzTGF0aW4xKGMpKTsKICAg
ICAgICAgcmF3QnVmZmVyW2ldID0gYzsKICAgICB9CiB9CkBAIC0xMTU5LDcgKzExMzgsNyBAQCBz
dGF0aWMgQUxXQVlTX0lOTElORSBib29sIGNoYXJhY3RlclJlcXVpcmVzUGFyc2VTdHJpbmdTbG93
Q2FzZShMQ2hhciBjaGFyYWN0ZXIpCiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgY2hhcmFj
dGVyUmVxdWlyZXNQYXJzZVN0cmluZ1Nsb3dDYXNlKFVDaGFyIGNoYXJhY3RlcikKIHsKLSAgICBy
ZXR1cm4gY2hhcmFjdGVyIDwgMHhFIHx8IGNoYXJhY3RlciA+IDB4RkY7CisgICAgcmV0dXJuIGNo
YXJhY3RlciA8IDB4RSB8fCAhaXNMYXRpbjEoY2hhcmFjdGVyKTsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggY2YzNzgwYmJj
NDZiZTU2NGVmODliMzBhNjMyNTMwMDUxZmQ4NDZjNS4uZDUxZjJjMDA3OTZkYzNkMTVjZGEyNjky
ODc3NGM0NDhkNTk4NGNkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAt
MjQxLDcgKzI0MSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxMQ2hhcj46OmlzV2hpdGVT
cGFjZShMQ2hhciBjaCkKIHRlbXBsYXRlIDw+CiBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VUNo
YXI+Ojppc1doaXRlU3BhY2UoVUNoYXIgY2gpCiB7Ci0gICAgcmV0dXJuIChjaCA8IDI1NikgPyBM
ZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShzdGF0aWNfY2FzdDxMQ2hhcj4oY2gpKSA6ICh1X2No
YXJUeXBlKGNoKSA9PSBVX1NQQUNFX1NFUEFSQVRPUiB8fCBjaCA9PSAweEZFRkYpOworICAgIHJl
dHVybiBpc0xhdGluMShjaCkgPyBMZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShzdGF0aWNfY2Fz
dDxMQ2hhcj4oY2gpKSA6ICh1X2NoYXJUeXBlKGNoKSA9PSBVX1NQQUNFX1NFUEFSQVRPUiB8fCBj
aCA9PSAweEZFRkYpOwogfQogCiB0ZW1wbGF0ZSA8PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmNwcAppbmRleCBkODYyODczZmFiYjdkNDI2OGY1ODczMGY0MDAw
NzMzNzU3Zjk4ZGE3Li4xMmM3YTgyZDM4M2FlMzBlZWM5YzEzMGVhODhhODNlNjc3NGMzZjA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcApAQCAtNTQs
NyArNTQsNyBAQCBSZWY8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkOChWTSogdm0sIGNvbnN0
IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKQogewogICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAg
ICBVQ2hhciBjID0gc1swXTsKLSAgICAgICAgQVNTRVJUKGMgPD0gMHhmZik7CisgICAgICAgIEFT
U0VSVChpc0xhdGluMShjKSk7CiAgICAgICAgIGlmIChjYW5Vc2VTaW5nbGVDaGFyYWN0ZXJTdHJp
bmcoYykpCiAgICAgICAgICAgICByZXR1cm4gdm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0
ZXJTdHJpbmdSZXAoYyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9MaXRlcmFsUGFyc2VyLmNwcAppbmRleCBiMzlkZGFkYmJmMTYwNzcwZWJjNWI4Y2Y0ZTE4ZTdj
ZjUyMDQ0Y2ViLi44N2ViYmFhMDAyZjEyMjM1YzIyMmNmYjFiZjdjNjYwNzNkNzlkZDFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAt
NDUzLDcgKzQ1Myw3IEBAIEFMV0FZU19JTkxJTkUgVG9rZW5UeXBlIExpdGVyYWxQYXJzZXI8Q2hh
clR5cGU+OjpMZXhlcjo6bGV4KExpdGVyYWxQYXJzZXJUb2tlbjxDCiAgICAgdG9rZW4udHlwZSA9
IFRva0Vycm9yOwogICAgIHRva2VuLnN0YXJ0ID0gbV9wdHI7CiAgICAgQ2hhclR5cGUgY2hhcmFj
dGVyID0gKm1fcHRyOwotICAgIGlmIChMSUtFTFkoY2hhcmFjdGVyIDwgMjU2KSkgeworICAgIGlm
IChMSUtFTFkoaXNMYXRpbjEoY2hhcmFjdGVyKSkgewogICAgICAgICBUb2tlblR5cGUgdG9rZW5U
eXBlID0gVG9rZW5UeXBlc09mTGF0aW4xQ2hhcmFjdGVyc1tjaGFyYWN0ZXJdOwogICAgICAgICBz
d2l0Y2ggKHRva2VuVHlwZSkgewogICAgICAgICBjYXNlIFRva1N0cmluZzoKQEAgLTU3OSw3ICs1
NzksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzU2FmZVN0cmluZ0NoYXJhY3RlcihM
Q2hhciBjLCBMQ2hhciB0ZXJtaW5hdG9yKQogdGVtcGxhdGUgPFNhZmVTdHJpbmdDaGFyYWN0ZXJT
ZXQgc2V0Pgogc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc1NhZmVTdHJpbmdDaGFyYWN0ZXIo
VUNoYXIgYywgVUNoYXIgdGVybWluYXRvcikKIHsKLSAgICByZXR1cm4gKGMgPj0gJyAnICYmIChz
ZXQgPT0gU2FmZVN0cmluZ0NoYXJhY3RlclNldDo6U3RyaWN0IHx8IGMgPD0gMHhmZikgJiYgYyAh
PSAnXFwnICYmIGMgIT0gdGVybWluYXRvcikgfHwgKGMgPT0gJ1x0JyAmJiBzZXQgIT0gU2FmZVN0
cmluZ0NoYXJhY3RlclNldDo6U3RyaWN0KTsKKyAgICByZXR1cm4gKGMgPj0gJyAnICYmIChzZXQg
PT0gU2FmZVN0cmluZ0NoYXJhY3RlclNldDo6U3RyaWN0IHx8IGlzTGF0aW4xKGMpKSAmJiBjICE9
ICdcXCcgJiYgYyAhPSB0ZXJtaW5hdG9yKSB8fCAoYyA9PSAnXHQnICYmIHNldCAhPSBTYWZlU3Ry
aW5nQ2hhcmFjdGVyU2V0OjpTdHJpY3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5
cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcAppbmRleCA4YzExOTYyNDI0N2NjNjY3MGJiMGVjNmMyNjZlN2VlZjU0M2QwMDQxLi5jMTc2
NmJhYWE4N2I5ODI5N2Q3OTEzNzk5NTRhZGE1OWU0OWI0MGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTg3NSw3ICs4NzUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGVhdENo
YXJhY3RlcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsK
ICAgICBVQ2hhciBjaGFyYWN0ZXIgPSB2aWV3WzBdOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAg
ICBpZiAoIShjaGFyYWN0ZXIgJiB+MHhmZikpCisgICAgaWYgKGlzTGF0aW4xKGNoYXJhY3Rlcikp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVwZWF0Q2hhcmFjdGVyKCpleGVjLCBz
dGF0aWNfY2FzdDxMQ2hhcj4oY2hhcmFjdGVyKSwgcmVwZWF0Q291bnQpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlcGVhdENoYXJhY3RlcigqZXhlYywgY2hhcmFjdGVyLCByZXBlYXRD
b3VudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRleCA0MTJj
NmU0YTZjYmVhYzg5MzIxYjBhZTc4MGZkZDc2YTA2MTliZTJkLi5lMWUzMTA4NjRlMmE5NDQyYzQx
NTUxOGM4ZTg2NzVjOGFkMTBjNGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklU
LmNwcApAQCAtMTM3Myw3ICsxMzczLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZ
YXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIFBhdHRlcm5UZXJt
KiB0ZXJtID0gb3AubV90ZXJtOwogICAgICAgICBVQ2hhcjMyIGNoID0gdGVybS0+cGF0dGVybkNo
YXJhY3RlcjsKIAotICAgICAgICBpZiAoKGNoID4gMHhmZikgJiYgKG1fY2hhclNpemUgPT0gQ2hh
cjgpKSB7CisgICAgICAgIGlmICghaXNMYXRpbjEoY2gpICYmIChtX2NoYXJTaXplID09IENoYXI4
KSkgewogICAgICAgICAgICAgLy8gSGF2ZSBhIDE2IGJpdCBwYXR0ZXJuIGNoYXJhY3RlciBhbmQg
YW4gOCBiaXQgc3RyaW5nIC0gc2hvcnQgY2lyY3VpdAogICAgICAgICAgICAgb3AubV9qdW1wcy5h
cHBlbmQoanVtcCgpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0MjgsNyArMTQyOCw3IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9B
c3NlbWJsZXIgewogCiAgICAgICAgICAgICBVQ2hhcjMyIGN1cnJlbnRDaGFyYWN0ZXIgPSBuZXh0
VGVybS0+cGF0dGVybkNoYXJhY3RlcjsKIAotICAgICAgICAgICAgaWYgKChjdXJyZW50Q2hhcmFj
dGVyID4gMHhmZikgJiYgKG1fY2hhclNpemUgPT0gQ2hhcjgpKSB7CisgICAgICAgICAgICBpZiAo
IWlzTGF0aW4xKGN1cnJlbnRDaGFyYWN0ZXIpICYmIChtX2NoYXJTaXplID09IENoYXI4KSkgewog
ICAgICAgICAgICAgICAgIC8vIEhhdmUgYSAxNiBiaXQgcGF0dGVybiBjaGFyYWN0ZXIgYW5kIGFu
IDggYml0IHN0cmluZyAtIHNob3J0IGNpcmN1aXQKICAgICAgICAgICAgICAgICBvcC5tX2p1bXBz
LmFwcGVuZChqdW1wKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2MjMsNyArMTYy
Myw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgY291bnRSZWdp
c3Rlcik7CiAKICAgICAgICAgLy8gVW5sZXNzIGhhdmUgYSAxNiBiaXQgcGF0dGVybiBjaGFyYWN0
ZXIgYW5kIGFuIDggYml0IHN0cmluZyAtIHNob3J0IGNpcmN1aXQKLSAgICAgICAgaWYgKCEoKGNo
ID4gMHhmZikgJiYgKG1fY2hhclNpemUgPT0gQ2hhcjgpKSkgeworICAgICAgICBpZiAoISghaXNM
YXRpbjEoY2gpICYmIChtX2NoYXJTaXplID09IENoYXI4KSkpIHsKICAgICAgICAgICAgIEp1bXBM
aXN0IGZhaWx1cmVzOwogICAgICAgICAgICAgTGFiZWwgbG9vcCh0aGlzKTsKICAgICAgICAgICAg
IGZhaWx1cmVzLmFwcGVuZChhdEVuZE9mSW5wdXQoKSk7CkBAIC0xNjk2LDcgKzE2OTYsNyBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICAgICAgbG9hZEZyb21GcmFtZSh0ZXJtLT5mcmFtZUxvY2F0aW9uICsgQmFj
a1RyYWNrSW5mb1BhdHRlcm5DaGFyYWN0ZXI6Om1hdGNoQW1vdW50SW5kZXgoKSwgY291bnRSZWdp
c3Rlcik7CiAKICAgICAgICAgLy8gVW5sZXNzIGhhdmUgYSAxNiBiaXQgcGF0dGVybiBjaGFyYWN0
ZXIgYW5kIGFuIDggYml0IHN0cmluZyAtIHNob3J0IGNpcmN1aXQKLSAgICAgICAgaWYgKCEoKGNo
ID4gMHhmZikgJiYgKG1fY2hhclNpemUgPT0gQ2hhcjgpKSkgeworICAgICAgICBpZiAoISghaXNM
YXRpbjEoY2gpICYmIChtX2NoYXJTaXplID09IENoYXI4KSkpIHsKICAgICAgICAgICAgIEp1bXBM
aXN0IG5vbkdyZWVkeUZhaWx1cmVzOwogICAgICAgICAgICAgbm9uR3JlZWR5RmFpbHVyZXMuYXBw
ZW5kKGF0RW5kT2ZJbnB1dCgpKTsKICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eU1heENv
dW50ICE9IHF1YW50aWZ5SW5maW5pdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNw
cAppbmRleCA4YjE2ZGY5YmFlNTc3NWNhYTUzODRlMDVkOTljM2YwYjM2N2Q3OGIxLi40ODc5MDkz
NTQwOTRkM2RmZTBmMDNiNzYzZWZjMDllMzk3MmVkODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5jcHAKQEAgLTI5LDggKzI5LDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg+CiAK
IG5hbWVzcGFjZSBXVEYgewogCkBAIC00NSw2ICs0Myw3IEBAIHN0YXRpYyB1bnNpZ25lZCBleHBh
bmRlZENhcGFjaXR5KHVuc2lnbmVkIGNhcGFjaXR5LCB1bnNpZ25lZCByZXF1aXJlZExlbmd0aCkK
IHZvaWQgU3RyaW5nQnVpbGRlcjo6cmVpZnlTdHJpbmcoKSBjb25zdAogewogICAgIEFTU0VSVCgh
aGFzT3ZlcmZsb3dlZCgpKTsKKwogICAgIC8vIENoZWNrIGlmIHRoZSBzdHJpbmcgYWxyZWFkeSBl
eGlzdHMuCiAgICAgaWYgKCFtX3N0cmluZy5pc051bGwoKSkgewogICAgICAgICBBU1NFUlQobV9z
dHJpbmcubGVuZ3RoKCkgPT0gbV9sZW5ndGgudW5zYWZlR2V0PHVuc2lnbmVkPigpKTsKQEAgLTIz
NCw4ICsyMzMsNyBAQCB2b2lkIFN0cmluZ0J1aWxkZXI6OnJlc2VydmVDYXBhY2l0eSh1bnNpZ25l
ZCBuZXdDYXBhY2l0eSkKIC8vIE1ha2UgJ2FkZGl0aW9uYWxMZW5ndGgnIGFkZGl0aW9uYWwgY2Fw
YWNpdHkgYmUgYXZhaWxhYmxlIGluIG1fYnVmZmVyLCB1cGRhdGUgbV9zdHJpbmcgJiBtX2xlbmd0
aCwKIC8vIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGFsbG9jYXRlZCBzdG9yYWdlLgog
Ly8gUmV0dXJucyBudWxscHRyIGlmIHRoZSBzaXplIG9mIHRoZSBuZXcgYnVpbGRlciB3b3VsZCBo
YXZlIG92ZXJmbG93ZWQKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1BTFdBWVNf
SU5MSU5FIENoYXJhY3RlclR5cGUqIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWQo
dW5zaWduZWQgYWRkaXRpb25hbExlbmd0aCkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IEFMV0FZU19JTkxJTkUgQ2hhcmFjdGVyVHlwZSogU3RyaW5nQnVpbGRlcjo6YXBwZW5kVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBhZGRpdGlvbmFsTGVuZ3RoKQogewogICAgIEFTU0VSVChhZGRp
dGlvbmFsTGVuZ3RoKTsKIApAQCAtMjQ5LDggKzI0Nyw3IEBAIEFMV0FZU19JTkxJTkUgQ2hhcmFj
dGVyVHlwZSogU3RyaW5nQnVpbGRlcjo6YXBwZW5kVW5pbml0aWFsaXplZCh1bnNpZ25lZCBhZGRp
dGlvCiAgICAgcmV0dXJuIGFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVjazxD
aGFyYWN0ZXJUeXBlPihyZXF1aXJlZExlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+Ci1BTFdBWVNfSU5MSU5FIENoYXJhY3RlclR5cGUqIFN0cmluZ0J1aWxkZXI6
OmFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZsb3dDaGVjayhDaGVja2VkSW50MzIgcmVx
dWlyZWRMZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5M
SU5FIENoYXJhY3RlclR5cGUqIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRo
b3V0T3ZlcmZsb3dDaGVjayhDaGVja2VkSW50MzIgcmVxdWlyZWRMZW5ndGgpCiB7CiAgICAgQVNT
RVJUKCFyZXF1aXJlZExlbmd0aC5oYXNPdmVyZmxvd2VkKCkpOwogCkBAIC0yNzgsOCArMjc1LDcg
QEAgTENoYXIqIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWRXaXRob3V0T3ZlcmZs
b3dDaGVja0ZvckxDaGFyKENoZWNrZWRJbnQKIAogLy8gTWFrZSAncmVxdWlyZWRMZW5ndGgnIGNh
cGFjaXR5IGJlIGF2YWlsYWJsZSBpbiBtX2J1ZmZlciwgdXBkYXRlIG1fc3RyaW5nICYgbV9sZW5n
dGgsCiAvLyByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBuZXdseSBhbGxvY2F0ZWQgc3RvcmFnZS4K
LXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1DaGFyYWN0ZXJUeXBlKiBTdHJpbmdC
dWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkU2xvdyh1bnNpZ25lZCByZXF1aXJlZExlbmd0aCkK
K3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IENoYXJhY3RlclR5cGUqIFN0cmluZ0J1
aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWRTbG93KHVuc2lnbmVkIHJlcXVpcmVkTGVuZ3RoKQog
ewogICAgIEFTU0VSVCghaGFzT3ZlcmZsb3dlZCgpKTsKICAgICBBU1NFUlQocmVxdWlyZWRMZW5n
dGgpOwpAQCAtMzExLDEyICszMDcsMTMgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRDaGFy
YWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQVNT
RVJUKGNoYXJhY3RlcnMpOwogCiAgICAgaWYgKG1faXM4Qml0KSB7Ci0gICAgICAgIGlmIChsZW5n
dGggPT0gMSAmJiAhKCpjaGFyYWN0ZXJzICYgfjB4ZmYpKSB7Ci0gICAgICAgICAgICAvLyBBcHBl
bmQgYXMgOCBiaXQgY2hhcmFjdGVyCi0gICAgICAgICAgICBMQ2hhciBsQ2hhciA9IHN0YXRpY19j
YXN0PExDaGFyPigqY2hhcmFjdGVycyk7Ci0gICAgICAgICAgICByZXR1cm4gYXBwZW5kQ2hhcmFj
dGVycygmbENoYXIsIDEpOworICAgICAgICBpZiAobGVuZ3RoID09IDEgJiYgaXNMYXRpbjEoY2hh
cmFjdGVyc1swXSkpIHsKKyAgICAgICAgICAgIGFwcGVuZChzdGF0aWNfY2FzdDxMQ2hhcj4oY2hh
cmFjdGVyc1swXSkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAg
Ly8gRklYTUU6IFNob3VsZCB3ZSBvcHRpbWl6ZSBtZW1vcnkgYnkga2VlcGluZyB0aGUgc3RyaW5n
IDgtYml0IHdoZW4gYWxsIHRoZSBjaGFyYWN0ZXJzIGFyZSBMYXRpbi0xPworCiAgICAgICAgIC8v
IENhbGN1bGF0ZSB0aGUgbmV3IHNpemUgb2YgdGhlIGJ1aWxkZXIgYWZ0ZXIgYXBwZW5kaW5nLgog
ICAgICAgICBDaGVja2VkSW50MzIgcmVxdWlyZWRMZW5ndGggPSBtX2xlbmd0aCArIGxlbmd0aDsK
ICAgICAgICAgaWYgKHJlcXVpcmVkTGVuZ3RoLmhhc092ZXJmbG93ZWQoKSkKQEAgLTM1OSw4ICsz
NTYsOSBAQCB2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZENoYXJhY3RlcnMoY29uc3QgTENoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBpZiAobGVuZ3RoID4gOCkKLSAgICAgICAgICAgIG1lbWNweShkZXN0LCBj
aGFyYWN0ZXJzLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgKiBzaXplb2YoTENoYXIpKTsK
KyAgICAgICAgICAgIG1lbWNweShkZXN0LCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBIb3cgc3Ryb25nIGlzIG91ciBldmlkZW5jZSB0
aGF0IHRoaXMgaXMgZmFzdGVyIHRoYW4gbWVtY3B5PyBXaGF0IHBsYXRmb3JtcyBpcyB0aGlzIHRy
dWUgZm9yPwogICAgICAgICAgICAgY29uc3QgTENoYXIqIGVuZCA9IGNoYXJhY3RlcnMgKyBsZW5n
dGg7CiAgICAgICAgICAgICB3aGlsZSAoY2hhcmFjdGVycyA8IGVuZCkKICAgICAgICAgICAgICAg
ICAqKGRlc3QrKykgPSAqKGNoYXJhY3RlcnMrKyk7CkBAIC00NjEsNyArNDU5LDggQEAgYm9vbCBT
dHJpbmdCdWlsZGVyOjpjYW5TaHJpbmsoKSBjb25zdAogewogICAgIGlmIChoYXNPdmVyZmxvd2Vk
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyBPbmx5IHNocmluayB0aGUgYnVmZmVy
IGlmIGl0J3MgbGVzcyB0aGFuIDgwJSBmdWxsLiBOZWVkIHRvIHR1bmUgdGhpcyBoZXVyaXN0aWMh
CisgICAgLy8gT25seSBzaHJpbmsgdGhlIGJ1ZmZlciBpZiBpdCdzIGxlc3MgdGhhbiA4MCUgZnVs
bC4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHR1bmUgdGhpcyBoZXVyaXN0aWMgYmFzZWQgc29t
ZSBhY3R1YWwgdGVzdCBjYXNlIG1lYXN1cmVtZW50cy4KICAgICB1bnNpZ25lZCBsZW5ndGggPSBt
X2xlbmd0aC51bnNhZmVHZXQoKTsKICAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXItPmxl
bmd0aCgpID4gKGxlbmd0aCArIChsZW5ndGggPj4gMikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaAppbmRleCAxNGM5NDUzN2EzOTNmMzY0OTAxM2ZmMmEzOTlkZjgzN2I5YmRhYjM2
Li42ZDAwOTI4YzY0NzkyOTNmZTlhYzEyNmEwNmVhMTk4ZTZmNzc5YmVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaApAQCAtMTc1LDcgKzE3NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICghKGMgJiB+
MHhmZikpIHsKKyAgICAgICAgICAgIGlmIChpc0xhdGluMShjKSkgewogICAgICAgICAgICAgICAg
IG1fYnVmZmVyQ2hhcmFjdGVyczhbbGVuZ3RoXSA9IHN0YXRpY19jYXN0PExDaGFyPihjKTsKICAg
ICAgICAgICAgICAgICBtX2xlbmd0aCsrOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmggYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCmluZGV4IDZhN2RmOTY2ZDg4MGUwYTRiNjUyZjk4YjE1ZGM5
NjZkNDNiMjI3YmUuLjQ4YzIwYjE3ZjMyM2JlNzRiMGQ2NDQ0Nzk1MjQ2MWJmZDU0MThhMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDYgKzMzLDEyIEBACiAKIG5hbWVz
cGFjZSBXVEYgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9v
bCBpc0xhdGluMShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKK3sKKyAgICB1c2luZyBVbnNpZ25l
ZENoYXJhY3RlclR5cGUgPSB0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8Q2hhcmFjdGVyVHlw
ZT46OnR5cGU7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFVuc2lnbmVkQ2hhcmFjdGVyVHlwZT4o
Y2hhcmFjdGVyKSA8PSBzdGF0aWNfY2FzdDxVbnNpZ25lZENoYXJhY3RlclR5cGU+KDB4RkYpOwor
fQorCiB1c2luZyBDb2RlVW5pdE1hdGNoRnVuY3Rpb24gPSBib29sICgqKShVQ2hhcik7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGVBLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlQj4g
Ym9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IENoYXJhY3RlclR5cGVBKiwgY29uc3Qg
Q2hhcmFjdGVyVHlwZUIqLCB1bnNpZ25lZCBsZW5ndGgpOwpAQCAtNTQ4LDcgKzU1NCw3IEBAIEFM
V0FZU19JTkxJTkUgc2l6ZV90IGZpbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCwgTENoYXIgbWF0Y2hDCiAKIGlubGluZSBzaXplX3QgZmluZChjb25zdCBMQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWdu
ZWQgaW5kZXggPSAwKQogewotICAgIGlmIChtYXRjaENoYXJhY3RlciAmIH4weEZGKQorICAgIGlm
ICghaXNMYXRpbjEobWF0Y2hDaGFyYWN0ZXIpKQogICAgICAgICByZXR1cm4gbm90Rm91bmQ7CiAg
ICAgcmV0dXJuIGZpbmQoY2hhcmFjdGVycywgbGVuZ3RoLCBzdGF0aWNfY2FzdDxMQ2hhcj4obWF0
Y2hDaGFyYWN0ZXIpLCBpbmRleCk7CiB9CkBAIC02NjYsMyArNjcyLDQgQEAgdGVtcGxhdGU8dW5z
aWduZWQgbG93ZXJjYXNlTGV0dGVyc0xlbmd0aD4gaW5saW5lIGJvb2wgZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUMKIAogdXNpbmcgV1RGOjplcXVhbElnbm9yaW5nQVNDSUlDYXNlOwogdXNpbmcg
V1RGOjplcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZTsKK3VzaW5nIFdURjo6aXNMYXRpbjE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDE1MmE0MTBiNGZlZjA0ZGVkYjRhMmIwZGVj
NTcwNGY1ZWE1OWEzN2QuLmU4OTRmNDZlMzQwMTQ3Y2ZiZGY3OTE2YWIxZDAzYjRkYTZhNTNkYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC0xMjgsMTIgKzEyOCw2IEBAIHN0cnVjdCBT
dHJpbmdTdGF0cyB7CiAKICNlbmRpZgogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBpbmxpbmUgYm9vbCBpc0xhdGluMShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKLXsKLSAgICB1
c2luZyBVbnNpZ25lZENoYXJhY3RlclR5cGUgPSB0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8
Q2hhcmFjdGVyVHlwZT46OnR5cGU7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFVuc2lnbmVkQ2hh
cmFjdGVyVHlwZT4oY2hhcmFjdGVyKSA8PSBzdGF0aWNfY2FzdDxVbnNpZ25lZENoYXJhY3RlclR5
cGU+KDB4RkYpOwotfQotCiBjbGFzcyBTdHJpbmdJbXBsU2hhcGUgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFN0cmluZ0ltcGxTaGFwZSk7CiBwdWJsaWM6CkBAIC02ODIsNyArNjc2LDcgQEAg
QUxXQVlTX0lOTElORSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCwgTENoYXIKIAogaW5saW5lIHNpemVfdCByZXZlcnNlRmluZChjb25z
dCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciBtYXRjaENoYXJhY3Rl
ciwgdW5zaWduZWQgaW5kZXgpCiB7Ci0gICAgaWYgKG1hdGNoQ2hhcmFjdGVyICYgfjB4RkYpCisg
ICAgaWYgKCFpc0xhdGluMShtYXRjaENoYXJhY3RlcikpCiAgICAgICAgIHJldHVybiBub3RGb3Vu
ZDsKICAgICByZXR1cm4gcmV2ZXJzZUZpbmQoY2hhcmFjdGVycywgbGVuZ3RoLCBzdGF0aWNfY2Fz
dDxMQ2hhcj4obWF0Y2hDaGFyYWN0ZXIpLCBpbmRleCk7CiB9CkBAIC03NTMsNyArNzQ3LDcgQEAg
aW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZzEsIGNv
bnN0IFN0cmluZ0ltcGwqIHN0cmluZzIKIGlubGluZSBib29sIGlzU3BhY2VPck5ld2xpbmUoVUNo
YXIzMiBjaGFyYWN0ZXIpCiB7CiAgICAgLy8gVXNlIGlzQVNDSUlTcGFjZSgpIGZvciBhbGwgTGF0
aW4tMSBjaGFyYWN0ZXJzLiBUaGlzIHdpbGwgaW5jbHVkZSBuZXdsaW5lcywgd2hpY2ggYXJlbid0
IGluY2x1ZGVkIGluIFVuaWNvZGUgRGlyV1MuCi0gICAgcmV0dXJuIGNoYXJhY3RlciA8PSAweEZG
ID8gaXNBU0NJSVNwYWNlKGNoYXJhY3RlcikgOiB1X2NoYXJEaXJlY3Rpb24oY2hhcmFjdGVyKSA9
PSBVX1dISVRFX1NQQUNFX05FVVRSQUw7CisgICAgcmV0dXJuIGlzTGF0aW4xKGNoYXJhY3Rlcikg
PyBpc0FTQ0lJU3BhY2UoY2hhcmFjdGVyKSA6IHVfY2hhckRpcmVjdGlvbihjaGFyYWN0ZXIpID09
IFVfV0hJVEVfU1BBQ0VfTkVVVFJBTDsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRTdHJpbmcoY29uc3Qg
Q2hhcmFjdGVyVHlwZSogc3RyaW5nKQpAQCAtMTI0Myw0ICsxMjM3LDMgQEAgdGVtcGxhdGU8dW5z
aWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShj
b25zdCBTdHJpbmcKIHVzaW5nIFdURjo6U3RhdGljU3RyaW5nSW1wbDsKIHVzaW5nIFdURjo6U3Ry
aW5nSW1wbDsKIHVzaW5nIFdURjo6ZXF1YWw7Ci11c2luZyBXVEY6OmlzTGF0aW4xOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2VTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0
aWJpbGl0eUVsZW1lbnRNYXAucHkgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZVNlbGVjdG9yUHNl
dWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5weQppbmRleCBiYjE3YjhiNTA2NmFl
ZDQ3NjlmYWZmZWJlZDRiM2I0ZjIxMjhjNTRhLi4yY2YzYzE4NjcwNTg4N2VjNDE1NTFlMDg5Mzgz
NmEyNTlmYjk4ZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZVNlbGVjdG9y
UHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5weQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvbWFrZVNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1h
cC5weQpAQCAtMTc0LDcgKzE3NCw3IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgU2VsZWN0b3JQc2V1
ZG9DbGFzc09yQ29tcGF0aWJpbGl0eVBzZXVkb0VsZW1lbnRFbnRyeSogcGFyc2VQCiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgVUNoYXIgY2hh
cmFjdGVyID0gY2hhcmFjdGVyc1tpXTsKLSAgICAgICAgaWYgKGNoYXJhY3RlciAmIH4weGZmKQor
ICAgICAgICBpZiAoIWlzTGF0aW4xKGNoYXJhY3RlcikpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgICAgICBidWZmZXJbaV0gPSBzdGF0aWNfY2FzdDxMQ2hhcj4oY2hhcmFjdGVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlU2VsZWN0b3JQc2V1ZG9FbGVt
ZW50c01hcC5weSBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlU2VsZWN0b3JQc2V1ZG9FbGVtZW50
c01hcC5weQppbmRleCAzZDQ0MmUxYjllMzAxMzFiNjRiNjIxMWYxZTE1MTZkY2ZiYWZjODI0Li5k
OTliYmRhYWI5NDA3Y2U2ODJjNDZjNTJlMGY1OWEyN2E2MTEzZDk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvbWFrZVNlbGVjdG9yUHNldWRvRWxlbWVudHNNYXAucHkKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL21ha2VTZWxlY3RvclBzZXVkb0VsZW1lbnRzTWFwLnB5CkBAIC0xNzUs
NyArMTc1LDcgQEAgc3RhdGljIGlubGluZSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFR5cGUg
cGFyc2VQc2V1ZG9FbGVtZW50U3RyaW5nKGNvbnN0IFVDaGEKIAogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBjaGFy
YWN0ZXJzW2ldOwotICAgICAgICBpZiAoY2hhcmFjdGVyICYgfjB4ZmYpCisgICAgICAgIGlmICgh
aXNMYXRpbjEoY2hhcmFjdGVyKSkKICAgICAgICAgICAgIHJldHVybiBDU1NTZWxlY3Rvcjo6UHNl
dWRvRWxlbWVudFVua25vd247CiAKICAgICAgICAgYnVmZmVyW2ldID0gc3RhdGljX2Nhc3Q8TENo
YXI+KGNoYXJhY3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5k
ZXggMTg5NmUxYTIyODFjMWE5YjA0NmU4ZWZhY2Q5MTE5YWY1ZTI3N2Q1Ni4uNjNhNGU4ZTUzOTc0
Zjc4OGNmZWJjMmNiN2QyMmQ5MGM3Mjc5N2M4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcApAQCAtMjA0NCw3ICsyMDQ0LDcgQEAgc3RhdGljIHZvaWQgbm9ybWFsaXpl
Q2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBWZWN0
b3IKIAogc3RhdGljIGJvb2wgaXNOb25MYXRpbjFTZXBhcmF0b3IoVUNoYXIzMiBjaGFyYWN0ZXIp
CiB7Ci0gICAgQVNTRVJUX0FSRyhjaGFyYWN0ZXIsIGNoYXJhY3RlciA+PSAyNTYpOworICAgIEFT
U0VSVF9BUkcoY2hhcmFjdGVyLCAhaXNMYXRpbjEoY2hhcmFjdGVyKSk7CiAKICAgICByZXR1cm4g
VV9HRVRfR0NfTUFTSyhjaGFyYWN0ZXIpICYgKFVfR0NfU19NQVNLIHwgVV9HQ19QX01BU0sgfCBV
X0dDX1pfTUFTSyB8IFVfR0NfQ0ZfTUFTSyk7CiB9CkBAIC0yMDcwLDcgKzIwNzAsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaXNTZXBhcmF0b3IoVUNoYXIzMiBjaGFyYWN0ZXIpCiAgICAgICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAKICAgICB9OwogCi0g
ICAgaWYgKGNoYXJhY3RlciA8IDI1NikKKyAgICBpZiAoaXNMYXRpbjEoY2hhcmFjdGVyKSkKICAg
ICAgICAgcmV0dXJuIGxhdGluMVNlcGFyYXRvclRhYmxlW2NoYXJhY3Rlcl07CiAKICAgICByZXR1
cm4gaXNOb25MYXRpbjFTZXBhcmF0b3IoY2hhcmFjdGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggM2NjZTViZGVlNmVhMWIxZmVm
Yjk0MTQwNzEyYWZlOTBhZjcwZmVkNS4uNTBhMjM3OWFjYTQ4ODgwY2JjMzRiNDZiMDZjOGYwMDc2
YWQ4YzI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBib29sIGlzVmFsaWRSZWFzb25QaHJhc2UoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWUu
bGVuZ3RoKCk7ICsraSkgewogICAgICAgICBVQ2hhciBjID0gdmFsdWVbaV07Ci0gICAgICAgIGlm
IChjID09IDB4N0YgfHwgYyA+IDB4RkYgfHwgKGMgPCAweDIwICYmIGMgIT0gJ1x0JykpCisgICAg
ICAgIGlmIChjID09IDB4N0YgfHwgIWlzTGF0aW4xKGMpIHx8IChjIDwgMHgyMCAmJiBjICE9ICdc
dCcpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTExOSw3ICsxMTksNyBAQCBib29sIGlzVmFsaWRIVFRQSGVhZGVyVmFsdWUoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB2YWx1ZS5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIGMgPSB2YWx1ZVtpXTsKLSAg
ICAgICAgQVNTRVJUKGMgPD0gMHhGRik7CisgICAgICAgIEFTU0VSVChpc0xhdGluMShjKSk7CiAg
ICAgICAgIGlmIChjID09IDB4MDAgfHwgYyA9PSAweDBBIHx8IGMgPT0gMHgwRCkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBpc1ZhbGlk
QWNjZXB0SGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgaWYgKGlzQVND
SUlBbHBoYW51bWVyaWMoYykgfHwgYyA9PSAnLCcgfHwgYyA9PSAnLycgfHwgYyA9PSAnOycgfHwg
YyA9PSAnPScpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBBU1NFUlQoYyA8PSAw
eEZGKTsKKyAgICAgICAgQVNTRVJUKGlzTGF0aW4xKGMpKTsKICAgICAgICAgaWYgKGMgPT0gMHg3
RiB8fCAoYyA8IDB4MjAgJiYgYyAhPSAnXHQnKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRp
bjEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3Bw
CmluZGV4IDkzMTQ1MzMyOGE2ZjY2OTQ4NWVlMDFmOGE0ZTJjZWRlNTAyNjc3ZmYuLjFhNGQ1NTEy
NWM1OThiNTRiOGI0OWFiMmYwNjNiZjNhOGY3MDQ1OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCBT
dHJpbmcgVGV4dENvZGVjTGF0aW4xOjpkZWNvZGUoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBs
ZW5ndGgsIGJvb2wsIGJvb2wsIGJvbwogICAgICAgICAgICAgKmRlc3RpbmF0aW9uID0gKnNvdXJj
ZTsKICAgICAgICAgfSBlbHNlIHsKIHVzZUxvb2t1cFRhYmxlOgotICAgICAgICAgICAgaWYgKGxh
dGluMUNvbnZlcnNpb25UYWJsZVsqc291cmNlXSA+IDB4ZmYpCisgICAgICAgICAgICBpZiAoIWlz
TGF0aW4xKGxhdGluMUNvbnZlcnNpb25UYWJsZVsqc291cmNlXSkpCiAgICAgICAgICAgICAgICAg
Z290byB1cENvbnZlcnRUbzE2Qml0OwogCiAgICAgICAgICAgICAqZGVzdGluYXRpb24gPSBsYXRp
bjFDb252ZXJzaW9uVGFibGVbKnNvdXJjZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNVVEY4LmNwcAppbmRleCBhM2RhZDRlOWQxNjM3Njg2MzA4OGIxOTcxMGY4
MzlkYmJmZmVhOGRkLi40MDZkZDdjM2Y5ODIwM2Q4NWIyYTY0NTQzYTYxMTgwNjFlZTJjOTBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKQEAg
LTIwOCw3ICsyMDgsNyBAQCBib29sIFRleHRDb2RlY1VURjg6OmhhbmRsZVBhcnRpYWxTZXF1ZW5j
ZShMQ2hhciomIGRlc3RpbmF0aW9uLCBjb25zdCB1aW50OF90KiYgcwogICAgICAgICAgICAgbV9w
YXJ0aWFsU2VxdWVuY2VTaXplID0gY291bnQ7CiAgICAgICAgIH0KICAgICAgICAgaW50IGNoYXJh
Y3RlciA9IGRlY29kZU5vbkFTQ0lJU2VxdWVuY2UobV9wYXJ0aWFsU2VxdWVuY2UsIGNvdW50KTsK
LSAgICAgICAgaWYgKGNoYXJhY3RlciA9PSBub25DaGFyYWN0ZXIgfHwgY2hhcmFjdGVyID4gMHhG
RikKKyAgICAgICAgaWYgKCFpc0xhdGluMShjaGFyYWN0ZXIpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICAgICAgbV9wYXJ0aWFsU2VxdWVuY2VTaXplIC09IGNvdW50OwpAQCAtMzQ1
LDcgKzM0NSw3IEBAIFN0cmluZyBUZXh0Q29kZWNVVEY4OjpkZWNvZGUoY29uc3QgY2hhciogYnl0
ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2gsIGJvb2wKIAogICAgICAgICAgICAgICAgIGdv
dG8gdXBDb252ZXJ0VG8xNkJpdDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjaGFy
YWN0ZXIgPiAweEZGKQorICAgICAgICAgICAgaWYgKCFpc0xhdGluMShjaGFyYWN0ZXIpKQogICAg
ICAgICAgICAgICAgIGdvdG8gdXBDb252ZXJ0VG8xNkJpdDsKIAogICAgICAgICAgICAgc291cmNl
ICs9IGNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJL
aXROU1N0cmluZ0V4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0
TlNTdHJpbmdFeHRyYXMubW0KaW5kZXggMzE3MjViMDdkNGVmYTMxOGI2Y2NlZjI4NmFiMGVkOWY5
NmM2NzlmZS4uNmQ4Njc0ZWE5MWVkYzY3MDg3ODQxMTk0NDA1YmRiODVkYmU1YThkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFz
Lm1tCkBAIC00OSw3ICs0OSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBOU1N0cmluZyAoV2ViS2l0RXh0
cmFzKQogc3RhdGljIGJvb2wgY2FuVXNlRmFzdFJlbmRlcmVyKGNvbnN0IFVuaUNoYXIqIGJ1ZmZl
ciwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7IGkrKykgewotICAgICAgICBpZiAoYnVmZmVyW2ldID4gMHhGRikgeworICAgICAgICBpZiAo
IWlzTGF0aW4xKGJ1ZmZlcltpXSkpIHsKICAgICAgICAgICAgIGF1dG8gZGlyZWN0aW9uID0gdV9j
aGFyRGlyZWN0aW9uKGJ1ZmZlcltpXSk7CiAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09IFVf
UklHSFRfVE9fTEVGVCB8fCAoZGlyZWN0aW9uID4gVV9PVEhFUl9ORVVUUkFMICYmIGRpcmVjdGlv
biAhPSBVX0RJUl9OT05fU1BBQ0lOR19NQVJLICYmIGRpcmVjdGlvbiAhPSBVX0JPVU5EQVJZX05F
VVRSQUwpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376626</attachid>
            <date>2019-08-17 19:44:10 -0700</date>
            <delta_ts>2019-08-17 20:11:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200861-20190817194400.patch</filename>
            <type>text/plain</type>
            <size>26659</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZTM0MmI2ZDIxMTEzNDY0NzczNTdmODdkYmYxMWEwZjg1ZTViZTU5Li5hZWFkMjk0ZGE1Yzk5MGIy
NTE0ZWI4NDNjMWZmMGU3NjgxN2NkNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxOS0wOC0xNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVGlkeSB1cCBjaGVja3MgdG8gc2VlIGlmIGEgY2hhcmFjdGVyIGlzIGluIHRoZSBM
YXRpbi0xIHJhbmdlIGJ5IHVzaW5nIGlzTGF0aW4xIGNvbnNpc3RlbnRseQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwODYxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpMZXhlcjxUPjo6cmVjb3JkOCk6IFVzZSBpc0xhdGluMS4KKyAgICAgICAg
KEpTQzo6YXNzZXJ0Q2hhcklzSW44Qml0UmFuZ2UpOiBEZWxldGVkLiBDYW4ganVzdCBhc3NlcnQg
aXNMYXRpbjEgZGlyZWN0bHkuCisgICAgICAgIChKU0M6OkxleGVyPFQ+OjphcHBlbmQ4KTogQXNz
ZXJ0IGlzTGF0aW4xIGRpcmVjdGx5LgorICAgICAgICAoSlNDOjpjaGFyYWN0ZXJSZXF1aXJlc1Bh
cnNlU3RyaW5nU2xvd0Nhc2UpOiBVc2UgaXNMYXRpbjEuCisgICAgICAgICogcGFyc2VyL0xleGVy
Lmg6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFyPjo6aXNXaGl0ZVNwYWNlKTogRGl0dG8uCisg
ICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6TGl0ZXJh
bFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXgpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6aXNT
YWZlU3RyaW5nQ2hhcmFjdGVyKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9JZGVudGlmaWVy
LmNwcDoKKyAgICAgICAgKEpTQzo6SWRlbnRpZmllcjo6YWRkOCk6IERpdHRvLgorICAgICAgICAq
IHJ1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OmlzU2FmZVN0cmluZ0No
YXJhY3Rlcik6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVyKTogRGl0dG8uCisg
ICAgICAgICogeWFyci9ZYXJySklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVy
YXRvcjo6Z2VuZXJhdGVQYXR0ZXJuQ2hhcmFjdGVyT25jZSk6IERpdHRvLgorICAgICAgICAoSlND
OjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpnZW5lcmF0ZVBhdHRlcm5DaGFyYWN0ZXJHcmVlZHkpOiBE
aXR0by4KKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6YmFja3RyYWNrUGF0dGVy
bkNoYXJhY3Rlck5vbkdyZWVkeSk6IERpdHRvLgorCiAyMDE5LTA4LTE2ICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3JlIG1pc3NpbmcgZXhjZXB0aW9uIGNoZWNr
cyBpbiBzdHJpbmcgY29tcGFyaXNvbiBvcGVyYXRvcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg0OTIwNzlmYTE5ZTcyZDY4
ZGNiNjljZDExNzY5MTQ1YmU5OTNlZGQuLjQ0NGFkZTY2MTRhNjUyNzcyOTMwZmU2ZTNlNjY2Yzcx
ZGRiNGI1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTktMDgtMTcgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFRpZHkgdXAgY2hlY2tzIHRvIHNlZSBpZiBhIGNo
YXJhY3RlciBpcyBpbiB0aGUgTGF0aW4tMSByYW5nZSBieSB1c2luZyBpc0xhdGluMSBjb25zaXN0
ZW50bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDg2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6
OmFwcGVuZENoYXJhY3RlcnMpOiBVc2UgaXNMYXRpbjEgYW5kIGFsc28gY2FsbCBhcHBlbmQgcmF0
aGVyIHRoYW4KKyAgICAgICAgY2FsbGluZyBhcHBlbmRDaGFyYWN0ZXJzLCBzaW5jZSBpdCdzIHRo
ZSBzYW1lIHRoaW5nLCBpbmxpbmVkLCBhbmQgcmVtb3ZlcyB0aGUgbmVlZCBmb3IKKyAgICAgICAg
YSBsb2NhbCB2YXJpYWJsZS4gQWxzbyB0d2Vha2VkIHRoZSBpZGlvbSBvZiB0aGUgY29kZSB1c2lu
ZyBtZW1jcHkuCisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OmNhblNocmluayBjb25zdCk6
IFJld29yZGVkIGEgY29tbWVudC4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aDoKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5kKTogVXNlIGlzTGF0aW4xLgor
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQ29tbW9uLmg6CisgICAgICAgIChXVEY6OmlzTGF0
aW4xKTogTW92ZWQgdGhpcyBmdW5jdGlvbiB0ZW1wbGF0ZSBoZXJlIHNvIGl0IGNhbiBiZSB1c2Vk
IGhlcmUuCisgICAgICAgIChXVEY6OmZpbmQpOiBVc2UgaXNMYXRpbjEuCisKKyAgICAgICAgKiB3
dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OmlzTGF0aW4xKTogRGVsZXRlZC4g
TW92ZWQgdG8gU3RyaW5nQ29tbW9uLmguCisgICAgICAgIChXVEY6OnJldmVyc2VGaW5kKTogVXNl
IGlzTGF0aW4xLgorICAgICAgICAoV1RGOjppc1NwYWNlT3JOZXdsaW5lKTogRGl0dG8uCisKIDIw
MTktMDgtMTcgIEVyaWMgTGlhbmcgIDxlcmljbGlhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZGVkIEhBVkVfQUNDRVNTSUJJTElUWV9CVU5ETEVTX1BBVEgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZDMyMzE3
OWM4YTJiMTA3M2QxZGU4YjllNDdiNDZlYjgyODczMTE2Li5kZDNmYWY2ZTliYjUxOTVmYTczNmNi
ODIyODFkMTU5ZGQ3M2JlMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMDgt
MTcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFRpZHkgdXAgY2hl
Y2tzIHRvIHNlZSBpZiBhIGNoYXJhY3RlciBpcyBpbiB0aGUgTGF0aW4tMSByYW5nZSBieSB1c2lu
ZyBpc0xhdGluMSBjb25zaXN0ZW50bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDg2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogY3NzL21ha2VTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJp
bGl0eUVsZW1lbnRNYXAucHk6IFVzZSBpc0xhdGluMS4KKyAgICAgICAgKiBjc3MvbWFrZVNlbGVj
dG9yUHNldWRvRWxlbWVudHNNYXAucHk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTm9uTGF0aW4xU2VwYXJhdG9yKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjppc1NlcGFyYXRvcik6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxp
ZFJlYXNvblBocmFzZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEhUVFBIZWFk
ZXJWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEFjY2VwdEhlYWRlclZh
bHVlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjTGF0aW4xOjpkZWNvZGUpOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dENvZGVjVVRGODo6aGFuZGxlUGFydGlhbFNlcXVlbmNlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpUZXh0Q29kZWNVVEY4OjpkZWNvZGUpOiBEaXR0by4KKwogMjAxOS0wOC0xNyAg
U2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFN0cmluZ0J1
aWxkZXI6OmZsZXhpYmxlQXBwZW5kKC4uLikgdG8gU3RyaW5nQnVpbGRlcjo6YXBwZW5kKC4uLikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAzNzUxOTVmZDIwNTM0ZDk2ZjFhNjU4ODdh
YzU4YjM4N2M5OGYyMTliLi5jMjIyNzlkYzM0MWE5NjA5NmNiMWU3MTM4NDZlNDkyMDNhYzY5MmVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgt
MTcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFRpZHkgdXAgY2hl
Y2tzIHRvIHNlZSBpZiBhIGNoYXJhY3RlciBpcyBpbiB0aGUgTGF0aW4tMSByYW5nZSBieSB1c2lu
ZyBpc0xhdGluMSBjb25zaXN0ZW50bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDg2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbToKKyAgICAgICAg
KGNhblVzZUZhc3RSZW5kZXJlcik6IFVzZSBpc0xhdGluMS4KKwogMjAxOS0wOC0xNiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIExvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlciBkb2VzIG5vdCBuZWVkIHRvIHN1YmNsYXNzIFRocmVhZFNhZmVSZWZDb3VudGVkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IGU5OGNkYjVlNTllMjMwNzJj
MTkwMThmODdkMTBjMmQ0NTJkOWNkMzkuLmNiOTE2MjEyZDNlNzM2YmUxMDY1NGI3NTljNzUzZTgw
YWI1NzIzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC04NDks
MzEgKzg0OSwxMCBAQCBzdGF0aWMgaW5saW5lIExDaGFyIHNpbmdsZUVzY2FwZShpbnQgYykKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogaW5saW5lIHZvaWQgTGV4ZXI8VD46OnJlY29yZDgoaW50IGMp
CiB7Ci0gICAgQVNTRVJUKGMgPj0gMCk7Ci0gICAgQVNTRVJUKGMgPD0gMHhGRik7CisgICAgQVNT
RVJUKGlzTGF0aW4xKGMpKTsKICAgICBtX2J1ZmZlcjguYXBwZW5kKHN0YXRpY19jYXN0PExDaGFy
PihjKSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgYXNzZXJ0Q2hh
cklzSW44Qml0UmFuZ2UoVCBjKQotewotICAgIFVOVVNFRF9QQVJBTShjKTsKLSAgICBBU1NFUlQo
YyA+PSAwKTsKLSAgICBBU1NFUlQoYyA8PSAweEZGKTsKLX0KLQotdGVtcGxhdGUgPD4KLWlubGlu
ZSB2b2lkIGFzc2VydENoYXJJc0luOEJpdFJhbmdlKFVDaGFyIGMpCi17Ci0gICAgVU5VU0VEX1BB
UkFNKGMpOwotICAgIEFTU0VSVChjIDw9IDB4RkYpOwotfQotCi10ZW1wbGF0ZSA8PgotaW5saW5l
IHZvaWQgYXNzZXJ0Q2hhcklzSW44Qml0UmFuZ2UoTENoYXIpCi17Ci19Ci0KIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogaW5saW5lIHZvaWQgTGV4ZXI8VD46OmFwcGVuZDgoY29uc3QgVCogcCwgc2l6
ZV90IGxlbmd0aCkKIHsKQEAgLTg4Myw3ICs4NjIsNyBAQCBpbmxpbmUgdm9pZCBMZXhlcjxUPjo6
YXBwZW5kOChjb25zdCBUKiBwLCBzaXplX3QgbGVuZ3RoKQogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICBUIGMgPSBwW2ldOwotICAgICAgICBhc3Nl
cnRDaGFySXNJbjhCaXRSYW5nZShjKTsKKyAgICAgICAgQVNTRVJUKGlzTGF0aW4xKGMpKTsKICAg
ICAgICAgcmF3QnVmZmVyW2ldID0gYzsKICAgICB9CiB9CkBAIC0xMTU5LDcgKzExMzgsNyBAQCBz
dGF0aWMgQUxXQVlTX0lOTElORSBib29sIGNoYXJhY3RlclJlcXVpcmVzUGFyc2VTdHJpbmdTbG93
Q2FzZShMQ2hhciBjaGFyYWN0ZXIpCiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgY2hhcmFj
dGVyUmVxdWlyZXNQYXJzZVN0cmluZ1Nsb3dDYXNlKFVDaGFyIGNoYXJhY3RlcikKIHsKLSAgICBy
ZXR1cm4gY2hhcmFjdGVyIDwgMHhFIHx8IGNoYXJhY3RlciA+IDB4RkY7CisgICAgcmV0dXJuIGNo
YXJhY3RlciA8IDB4RSB8fCAhaXNMYXRpbjEoY2hhcmFjdGVyKTsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggY2YzNzgwYmJj
NDZiZTU2NGVmODliMzBhNjMyNTMwMDUxZmQ4NDZjNS4uZDUxZjJjMDA3OTZkYzNkMTVjZGEyNjky
ODc3NGM0NDhkNTk4NGNkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAt
MjQxLDcgKzI0MSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxMQ2hhcj46OmlzV2hpdGVT
cGFjZShMQ2hhciBjaCkKIHRlbXBsYXRlIDw+CiBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VUNo
YXI+Ojppc1doaXRlU3BhY2UoVUNoYXIgY2gpCiB7Ci0gICAgcmV0dXJuIChjaCA8IDI1NikgPyBM
ZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShzdGF0aWNfY2FzdDxMQ2hhcj4oY2gpKSA6ICh1X2No
YXJUeXBlKGNoKSA9PSBVX1NQQUNFX1NFUEFSQVRPUiB8fCBjaCA9PSAweEZFRkYpOworICAgIHJl
dHVybiBpc0xhdGluMShjaCkgPyBMZXhlcjxMQ2hhcj46OmlzV2hpdGVTcGFjZShzdGF0aWNfY2Fz
dDxMQ2hhcj4oY2gpKSA6ICh1X2NoYXJUeXBlKGNoKSA9PSBVX1NQQUNFX1NFUEFSQVRPUiB8fCBj
aCA9PSAweEZFRkYpOwogfQogCiB0ZW1wbGF0ZSA8PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVyLmNwcAppbmRleCBkODYyODczZmFiYjdkNDI2OGY1ODczMGY0MDAw
NzMzNzU3Zjk4ZGE3Li4xMmM3YTgyZDM4M2FlMzBlZWM5YzEzMGVhODhhODNlNjc3NGMzZjA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcApAQCAtNTQs
NyArNTQsNyBAQCBSZWY8U3RyaW5nSW1wbD4gSWRlbnRpZmllcjo6YWRkOChWTSogdm0sIGNvbnN0
IFVDaGFyKiBzLCBpbnQgbGVuZ3RoKQogewogICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAg
ICBVQ2hhciBjID0gc1swXTsKLSAgICAgICAgQVNTRVJUKGMgPD0gMHhmZik7CisgICAgICAgIEFT
U0VSVChpc0xhdGluMShjKSk7CiAgICAgICAgIGlmIChjYW5Vc2VTaW5nbGVDaGFyYWN0ZXJTdHJp
bmcoYykpCiAgICAgICAgICAgICByZXR1cm4gdm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0
ZXJTdHJpbmdSZXAoYyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9MaXRlcmFsUGFyc2VyLmNwcAppbmRleCBiMzlkZGFkYmJmMTYwNzcwZWJjNWI4Y2Y0ZTE4ZTdj
ZjUyMDQ0Y2ViLi5iMWE5OTRmYmU0YWM5ZTRkYjM3MDhjOGY2MGNjNTMxMWYwZWE3MDZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAt
NDUzLDcgKzQ1Myw3IEBAIEFMV0FZU19JTkxJTkUgVG9rZW5UeXBlIExpdGVyYWxQYXJzZXI8Q2hh
clR5cGU+OjpMZXhlcjo6bGV4KExpdGVyYWxQYXJzZXJUb2tlbjxDCiAgICAgdG9rZW4udHlwZSA9
IFRva0Vycm9yOwogICAgIHRva2VuLnN0YXJ0ID0gbV9wdHI7CiAgICAgQ2hhclR5cGUgY2hhcmFj
dGVyID0gKm1fcHRyOwotICAgIGlmIChMSUtFTFkoY2hhcmFjdGVyIDwgMjU2KSkgeworICAgIGlm
IChMSUtFTFkoaXNMYXRpbjEoY2hhcmFjdGVyKSkpIHsKICAgICAgICAgVG9rZW5UeXBlIHRva2Vu
VHlwZSA9IFRva2VuVHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbY2hhcmFjdGVyXTsKICAgICAgICAg
c3dpdGNoICh0b2tlblR5cGUpIHsKICAgICAgICAgY2FzZSBUb2tTdHJpbmc6CkBAIC01NzksNyAr
NTc5LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc1NhZmVTdHJpbmdDaGFyYWN0ZXIo
TENoYXIgYywgTENoYXIgdGVybWluYXRvcikKIHRlbXBsYXRlIDxTYWZlU3RyaW5nQ2hhcmFjdGVy
U2V0IHNldD4KIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTYWZlU3RyaW5nQ2hhcmFjdGVy
KFVDaGFyIGMsIFVDaGFyIHRlcm1pbmF0b3IpCiB7Ci0gICAgcmV0dXJuIChjID49ICcgJyAmJiAo
c2V0ID09IFNhZmVTdHJpbmdDaGFyYWN0ZXJTZXQ6OlN0cmljdCB8fCBjIDw9IDB4ZmYpICYmIGMg
IT0gJ1xcJyAmJiBjICE9IHRlcm1pbmF0b3IpIHx8IChjID09ICdcdCcgJiYgc2V0ICE9IFNhZmVT
dHJpbmdDaGFyYWN0ZXJTZXQ6OlN0cmljdCk7CisgICAgcmV0dXJuIChjID49ICcgJyAmJiAoc2V0
ID09IFNhZmVTdHJpbmdDaGFyYWN0ZXJTZXQ6OlN0cmljdCB8fCBpc0xhdGluMShjKSkgJiYgYyAh
PSAnXFwnICYmIGMgIT0gdGVybWluYXRvcikgfHwgKGMgPT0gJ1x0JyAmJiBzZXQgIT0gU2FmZVN0
cmluZ0NoYXJhY3RlclNldDo6U3RyaWN0KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAKaW5kZXggOGMxMTk2MjQyNDdjYzY2NzBiYjBlYzZjMjY2ZTdlZWY1NDNkMDA0MS4uYzE3
NjZiYWFhODdiOTgyOTdkNzkxMzc5OTU0YWRhNTllNDliNDBkNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC04NzUsNyArODc1
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBlYXRD
aGFyYWN0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7
CiAgICAgVUNoYXIgY2hhcmFjdGVyID0gdmlld1swXTsKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgaWYgKCEoY2hhcmFjdGVyICYgfjB4ZmYpKQorICAgIGlmIChpc0xhdGluMShjaGFyYWN0ZXIp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlcGVhdENoYXJhY3RlcigqZXhlYywg
c3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3RlciksIHJlcGVhdENvdW50KSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXBlYXRDaGFyYWN0ZXIoKmV4ZWMsIGNoYXJhY3RlciwgcmVwZWF0
Q291bnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJK
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXggNDEy
YzZlNGE2Y2JlYWM4OTMyMWIwYWU3ODBmZGQ3NmEwNjE5YmUyZC4uZTFlMzEwODY0ZTJhOTQ0MmM0
MTU1MThjOGU4Njc1YzhhZDEwYzRhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJ
VC5jcHAKQEAgLTEzNzMsNyArMTM3Myw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwdWJsaWMg
WWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBQYXR0ZXJuVGVy
bSogdGVybSA9IG9wLm1fdGVybTsKICAgICAgICAgVUNoYXIzMiBjaCA9IHRlcm0tPnBhdHRlcm5D
aGFyYWN0ZXI7CiAKLSAgICAgICAgaWYgKChjaCA+IDB4ZmYpICYmIChtX2NoYXJTaXplID09IENo
YXI4KSkgeworICAgICAgICBpZiAoIWlzTGF0aW4xKGNoKSAmJiAobV9jaGFyU2l6ZSA9PSBDaGFy
OCkpIHsKICAgICAgICAgICAgIC8vIEhhdmUgYSAxNiBiaXQgcGF0dGVybiBjaGFyYWN0ZXIgYW5k
IGFuIDggYml0IHN0cmluZyAtIHNob3J0IGNpcmN1aXQKICAgICAgICAgICAgIG9wLm1fanVtcHMu
YXBwZW5kKGp1bXAoKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDI4LDcgKzE0MjgsNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKIAogICAgICAgICAgICAgVUNoYXIzMiBjdXJyZW50Q2hhcmFjdGVyID0gbmV4
dFRlcm0tPnBhdHRlcm5DaGFyYWN0ZXI7CiAKLSAgICAgICAgICAgIGlmICgoY3VycmVudENoYXJh
Y3RlciA+IDB4ZmYpICYmIChtX2NoYXJTaXplID09IENoYXI4KSkgeworICAgICAgICAgICAgaWYg
KCFpc0xhdGluMShjdXJyZW50Q2hhcmFjdGVyKSAmJiAobV9jaGFyU2l6ZSA9PSBDaGFyOCkpIHsK
ICAgICAgICAgICAgICAgICAvLyBIYXZlIGEgMTYgYml0IHBhdHRlcm4gY2hhcmFjdGVyIGFuZCBh
biA4IGJpdCBzdHJpbmcgLSBzaG9ydCBjaXJjdWl0CiAgICAgICAgICAgICAgICAgb3AubV9qdW1w
cy5hcHBlbmQoanVtcCgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xNjIzLDcgKzE2
MjMsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMCksIGNvdW50UmVn
aXN0ZXIpOwogCiAgICAgICAgIC8vIFVubGVzcyBoYXZlIGEgMTYgYml0IHBhdHRlcm4gY2hhcmFj
dGVyIGFuZCBhbiA4IGJpdCBzdHJpbmcgLSBzaG9ydCBjaXJjdWl0Ci0gICAgICAgIGlmICghKChj
aCA+IDB4ZmYpICYmIChtX2NoYXJTaXplID09IENoYXI4KSkpIHsKKyAgICAgICAgaWYgKCEoIWlz
TGF0aW4xKGNoKSAmJiAobV9jaGFyU2l6ZSA9PSBDaGFyOCkpKSB7CiAgICAgICAgICAgICBKdW1w
TGlzdCBmYWlsdXJlczsKICAgICAgICAgICAgIExhYmVsIGxvb3AodGhpcyk7CiAgICAgICAgICAg
ICBmYWlsdXJlcy5hcHBlbmQoYXRFbmRPZklucHV0KCkpOwpAQCAtMTY5Niw3ICsxNjk2LDcgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAgICAgICAgIGxvYWRGcm9tRnJhbWUodGVybS0+ZnJhbWVMb2NhdGlvbiArIEJh
Y2tUcmFja0luZm9QYXR0ZXJuQ2hhcmFjdGVyOjptYXRjaEFtb3VudEluZGV4KCksIGNvdW50UmVn
aXN0ZXIpOwogCiAgICAgICAgIC8vIFVubGVzcyBoYXZlIGEgMTYgYml0IHBhdHRlcm4gY2hhcmFj
dGVyIGFuZCBhbiA4IGJpdCBzdHJpbmcgLSBzaG9ydCBjaXJjdWl0Ci0gICAgICAgIGlmICghKChj
aCA+IDB4ZmYpICYmIChtX2NoYXJTaXplID09IENoYXI4KSkpIHsKKyAgICAgICAgaWYgKCEoIWlz
TGF0aW4xKGNoKSAmJiAobV9jaGFyU2l6ZSA9PSBDaGFyOCkpKSB7CiAgICAgICAgICAgICBKdW1w
TGlzdCBub25HcmVlZHlGYWlsdXJlczsKICAgICAgICAgICAgIG5vbkdyZWVkeUZhaWx1cmVzLmFw
cGVuZChhdEVuZE9mSW5wdXQoKSk7CiAgICAgICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlNYXhD
b3VudCAhPSBxdWFudGlmeUluZmluaXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5j
cHAKaW5kZXggOGIxNmRmOWJhZTU3NzVjYWE1Mzg0ZTA1ZDk5YzNmMGIzNjdkNzhiMS4uNDg3OTA5
MzU0MDk0ZDNkZmUwZjAzYjc2M2VmYzA5ZTM5NzJlZDg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuY3BwCkBAIC0yOSw4ICsyOSw2IEBACiAKICNpbmNsdWRlIDx3dGYvZHRvYS5o
PgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDUsNiArNDMsNyBAQCBzdGF0aWMgdW5zaWduZWQgZXhw
YW5kZWRDYXBhY2l0eSh1bnNpZ25lZCBjYXBhY2l0eSwgdW5zaWduZWQgcmVxdWlyZWRMZW5ndGgp
CiB2b2lkIFN0cmluZ0J1aWxkZXI6OnJlaWZ5U3RyaW5nKCkgY29uc3QKIHsKICAgICBBU1NFUlQo
IWhhc092ZXJmbG93ZWQoKSk7CisKICAgICAvLyBDaGVjayBpZiB0aGUgc3RyaW5nIGFscmVhZHkg
ZXhpc3RzLgogICAgIGlmICghbV9zdHJpbmcuaXNOdWxsKCkpIHsKICAgICAgICAgQVNTRVJUKG1f
c3RyaW5nLmxlbmd0aCgpID09IG1fbGVuZ3RoLnVuc2FmZUdldDx1bnNpZ25lZD4oKSk7CkBAIC0y
MzQsOCArMjMzLDcgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjpyZXNlcnZlQ2FwYWNpdHkodW5zaWdu
ZWQgbmV3Q2FwYWNpdHkpCiAvLyBNYWtlICdhZGRpdGlvbmFsTGVuZ3RoJyBhZGRpdGlvbmFsIGNh
cGFjaXR5IGJlIGF2YWlsYWJsZSBpbiBtX2J1ZmZlciwgdXBkYXRlIG1fc3RyaW5nICYgbV9sZW5n
dGgsCiAvLyByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBuZXdseSBhbGxvY2F0ZWQgc3RvcmFnZS4K
IC8vIFJldHVybnMgbnVsbHB0ciBpZiB0aGUgc2l6ZSBvZiB0aGUgbmV3IGJ1aWxkZXIgd291bGQg
aGF2ZSBvdmVyZmxvd2VkCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotQUxXQVlT
X0lOTElORSBDaGFyYWN0ZXJUeXBlKiBTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVk
KHVuc2lnbmVkIGFkZGl0aW9uYWxMZW5ndGgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBBTFdBWVNfSU5MSU5FIENoYXJhY3RlclR5cGUqIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFVu
aW5pdGlhbGl6ZWQodW5zaWduZWQgYWRkaXRpb25hbExlbmd0aCkKIHsKICAgICBBU1NFUlQoYWRk
aXRpb25hbExlbmd0aCk7CiAKQEAgLTI0OSw4ICsyNDcsNyBAQCBBTFdBWVNfSU5MSU5FIENoYXJh
Y3RlclR5cGUqIFN0cmluZ0J1aWxkZXI6OmFwcGVuZFVuaW5pdGlhbGl6ZWQodW5zaWduZWQgYWRk
aXRpbwogICAgIHJldHVybiBhcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2s8
Q2hhcmFjdGVyVHlwZT4ocmVxdWlyZWRMZW5ndGgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgotQUxXQVlTX0lOTElORSBDaGFyYWN0ZXJUeXBlKiBTdHJpbmdCdWlsZGVy
OjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJmbG93Q2hlY2soQ2hlY2tlZEludDMyIHJl
cXVpcmVkTGVuZ3RoKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lO
TElORSBDaGFyYWN0ZXJUeXBlKiBTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0
aG91dE92ZXJmbG93Q2hlY2soQ2hlY2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoKQogewogICAgIEFT
U0VSVCghcmVxdWlyZWRMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKTsKIApAQCAtMjc4LDggKzI3NSw3
IEBAIExDaGFyKiBTdHJpbmdCdWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkV2l0aG91dE92ZXJm
bG93Q2hlY2tGb3JMQ2hhcihDaGVja2VkSW50CiAKIC8vIE1ha2UgJ3JlcXVpcmVkTGVuZ3RoJyBj
YXBhY2l0eSBiZSBhdmFpbGFibGUgaW4gbV9idWZmZXIsIHVwZGF0ZSBtX3N0cmluZyAmIG1fbGVu
Z3RoLAogLy8gcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgbmV3bHkgYWxsb2NhdGVkIHN0b3JhZ2Uu
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotQ2hhcmFjdGVyVHlwZSogU3RyaW5n
QnVpbGRlcjo6YXBwZW5kVW5pbml0aWFsaXplZFNsb3codW5zaWduZWQgcmVxdWlyZWRMZW5ndGgp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBDaGFyYWN0ZXJUeXBlKiBTdHJpbmdC
dWlsZGVyOjphcHBlbmRVbmluaXRpYWxpemVkU2xvdyh1bnNpZ25lZCByZXF1aXJlZExlbmd0aCkK
IHsKICAgICBBU1NFUlQoIWhhc092ZXJmbG93ZWQoKSk7CiAgICAgQVNTRVJUKHJlcXVpcmVkTGVu
Z3RoKTsKQEAgLTMxMSwxMiArMzA3LDEzIEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kQ2hh
cmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogICAgIEFT
U0VSVChjaGFyYWN0ZXJzKTsKIAogICAgIGlmIChtX2lzOEJpdCkgewotICAgICAgICBpZiAobGVu
Z3RoID09IDEgJiYgISgqY2hhcmFjdGVycyAmIH4weGZmKSkgewotICAgICAgICAgICAgLy8gQXBw
ZW5kIGFzIDggYml0IGNoYXJhY3RlcgotICAgICAgICAgICAgTENoYXIgbENoYXIgPSBzdGF0aWNf
Y2FzdDxMQ2hhcj4oKmNoYXJhY3RlcnMpOwotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZENoYXJh
Y3RlcnMoJmxDaGFyLCAxKTsKKyAgICAgICAgaWYgKGxlbmd0aCA9PSAxICYmIGlzTGF0aW4xKGNo
YXJhY3RlcnNbMF0pKSB7CisgICAgICAgICAgICBhcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNo
YXJhY3RlcnNbMF0pKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAg
IC8vIEZJWE1FOiBTaG91bGQgd2Ugb3B0aW1pemUgbWVtb3J5IGJ5IGtlZXBpbmcgdGhlIHN0cmlu
ZyA4LWJpdCB3aGVuIGFsbCB0aGUgY2hhcmFjdGVycyBhcmUgTGF0aW4tMT8KKwogICAgICAgICAv
LyBDYWxjdWxhdGUgdGhlIG5ldyBzaXplIG9mIHRoZSBidWlsZGVyIGFmdGVyIGFwcGVuZGluZy4K
ICAgICAgICAgQ2hlY2tlZEludDMyIHJlcXVpcmVkTGVuZ3RoID0gbV9sZW5ndGggKyBsZW5ndGg7
CiAgICAgICAgIGlmIChyZXF1aXJlZExlbmd0aC5oYXNPdmVyZmxvd2VkKCkpCkBAIC0zNTksOCAr
MzU2LDkgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmRDaGFyYWN0ZXJzKGNvbnN0IExDaGFy
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGxlbmd0aCA+IDgpCi0gICAgICAgICAgICBtZW1jcHkoZGVzdCwg
Y2hhcmFjdGVycywgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpICogc2l6ZW9mKExDaGFyKSk7
CisgICAgICAgICAgICBtZW1jcHkoZGVzdCwgY2hhcmFjdGVycywgbGVuZ3RoKTsKICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSG93IHN0cm9uZyBpcyBvdXIgZXZpZGVuY2Ug
dGhhdCB0aGlzIGlzIGZhc3RlciB0aGFuIG1lbWNweT8gV2hhdCBwbGF0Zm9ybXMgaXMgdGhpcyB0
cnVlIGZvcj8KICAgICAgICAgICAgIGNvbnN0IExDaGFyKiBlbmQgPSBjaGFyYWN0ZXJzICsgbGVu
Z3RoOwogICAgICAgICAgICAgd2hpbGUgKGNoYXJhY3RlcnMgPCBlbmQpCiAgICAgICAgICAgICAg
ICAgKihkZXN0KyspID0gKihjaGFyYWN0ZXJzKyspOwpAQCAtNDYxLDcgKzQ1OSw4IEBAIGJvb2wg
U3RyaW5nQnVpbGRlcjo6Y2FuU2hyaW5rKCkgY29uc3QKIHsKICAgICBpZiAoaGFzT3ZlcmZsb3dl
ZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgLy8gT25seSBzaHJpbmsgdGhlIGJ1ZmZl
ciBpZiBpdCdzIGxlc3MgdGhhbiA4MCUgZnVsbC4gTmVlZCB0byB0dW5lIHRoaXMgaGV1cmlzdGlj
IQorICAgIC8vIE9ubHkgc2hyaW5rIHRoZSBidWZmZXIgaWYgaXQncyBsZXNzIHRoYW4gODAlIGZ1
bGwuCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0dW5lIHRoaXMgaGV1cmlzdGljIGJhc2VkIHNv
bWUgYWN0dWFsIHRlc3QgY2FzZSBtZWFzdXJlbWVudHMuCiAgICAgdW5zaWduZWQgbGVuZ3RoID0g
bV9sZW5ndGgudW5zYWZlR2V0KCk7CiAgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLT5s
ZW5ndGgoKSA+IChsZW5ndGggKyAobGVuZ3RoID4+IDIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmgKaW5kZXggMTRjOTQ1MzdhMzkzZjM2NDkwMTNmZjJhMzk5ZGY4MzdiOWJkYWIz
Ni4uNmQwMDkyOGM2NDc5MjkzZmU5YWMxMjZhMDZlYTE5OGU2Zjc3OWJlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmgKQEAgLTE3NSw3ICsxNzUsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoIShjICYg
fjB4ZmYpKSB7CisgICAgICAgICAgICBpZiAoaXNMYXRpbjEoYykpIHsKICAgICAgICAgICAgICAg
ICBtX2J1ZmZlckNoYXJhY3RlcnM4W2xlbmd0aF0gPSBzdGF0aWNfY2FzdDxMQ2hhcj4oYyk7CiAg
ICAgICAgICAgICAgICAgbV9sZW5ndGgrKzsKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdDb21tb24uaAppbmRleCA2YTdkZjk2NmQ4ODBlMGE0YjY1MmY5OGIxNWRj
OTY2ZDQzYjIyN2JlLi40OGMyMGIxN2YzMjNiZTc0YjBkNjQ0NDc5NTI0NjFiZmQ1NDE4YTE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw2ICszMywxMiBAQAogCiBuYW1l
c3BhY2UgV1RGIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJv
b2wgaXNMYXRpbjEoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCit7CisgICAgdXNpbmcgVW5zaWdu
ZWRDaGFyYWN0ZXJUeXBlID0gdHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPENoYXJhY3RlclR5
cGU+Ojp0eXBlOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxVbnNpZ25lZENoYXJhY3RlclR5cGU+
KGNoYXJhY3RlcikgPD0gc3RhdGljX2Nhc3Q8VW5zaWduZWRDaGFyYWN0ZXJUeXBlPigweEZGKTsK
K30KKwogdXNpbmcgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uID0gYm9vbCAoKikoVUNoYXIpOwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlQSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZUI+
IGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBDaGFyYWN0ZXJUeXBlQSosIGNvbnN0
IENoYXJhY3RlclR5cGVCKiwgdW5zaWduZWQgbGVuZ3RoKTsKQEAgLTU0OCw3ICs1NTQsNyBAQCBB
TFdBWVNfSU5MSU5FIHNpemVfdCBmaW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgsIExDaGFyIG1hdGNoQwogCiBpbmxpbmUgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2ln
bmVkIGluZGV4ID0gMCkKIHsKLSAgICBpZiAobWF0Y2hDaGFyYWN0ZXIgJiB+MHhGRikKKyAgICBp
ZiAoIWlzTGF0aW4xKG1hdGNoQ2hhcmFjdGVyKSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwog
ICAgIHJldHVybiBmaW5kKGNoYXJhY3RlcnMsIGxlbmd0aCwgc3RhdGljX2Nhc3Q8TENoYXI+KG1h
dGNoQ2hhcmFjdGVyKSwgaW5kZXgpOwogfQpAQCAtNjY2LDMgKzY3Miw0IEBAIHRlbXBsYXRlPHVu
c2lnbmVkIGxvd2VyY2FzZUxldHRlcnNMZW5ndGg+IGlubGluZSBib29sIGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDCiAKIHVzaW5nIFdURjo6ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZTsKIHVzaW5n
IFdURjo6ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2U7Cit1c2luZyBXVEY6OmlzTGF0aW4x
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAxNTJhNDEwYjRmZWYwNGRlZGI0YTJiMGRl
YzU3MDRmNWVhNTlhMzdkLi5lODk0ZjQ2ZTM0MDE0N2NmYmRmNzkxNmFiMWQwM2I0ZGE2YTUzZGJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMTI4LDEyICsxMjgsNiBAQCBzdHJ1Y3Qg
U3RyaW5nU3RhdHMgewogCiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gaW5saW5lIGJvb2wgaXNMYXRpbjEoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCi17Ci0gICAg
dXNpbmcgVW5zaWduZWRDaGFyYWN0ZXJUeXBlID0gdHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVk
PENoYXJhY3RlclR5cGU+Ojp0eXBlOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxVbnNpZ25lZENo
YXJhY3RlclR5cGU+KGNoYXJhY3RlcikgPD0gc3RhdGljX2Nhc3Q8VW5zaWduZWRDaGFyYWN0ZXJU
eXBlPigweEZGKTsKLX0KLQogY2xhc3MgU3RyaW5nSW1wbFNoYXBlIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTdHJpbmdJbXBsU2hhcGUpOwogcHVibGljOgpAQCAtNjgyLDcgKzY3Niw3IEBA
IEFMV0FZU19JTkxJTkUgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgsIExDaGFyCiAKIGlubGluZSBzaXplX3QgcmV2ZXJzZUZpbmQoY29u
c3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0
ZXIsIHVuc2lnbmVkIGluZGV4KQogewotICAgIGlmIChtYXRjaENoYXJhY3RlciAmIH4weEZGKQor
ICAgIGlmICghaXNMYXRpbjEobWF0Y2hDaGFyYWN0ZXIpKQogICAgICAgICByZXR1cm4gbm90Rm91
bmQ7CiAgICAgcmV0dXJuIHJldmVyc2VGaW5kKGNoYXJhY3RlcnMsIGxlbmd0aCwgc3RhdGljX2Nh
c3Q8TENoYXI+KG1hdGNoQ2hhcmFjdGVyKSwgaW5kZXgpOwogfQpAQCAtNzUzLDcgKzc0Nyw3IEBA
IGlubGluZSBpbnQgY29kZVBvaW50Q29tcGFyZShjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcxLCBj
b25zdCBTdHJpbmdJbXBsKiBzdHJpbmcyCiBpbmxpbmUgYm9vbCBpc1NwYWNlT3JOZXdsaW5lKFVD
aGFyMzIgY2hhcmFjdGVyKQogewogICAgIC8vIFVzZSBpc0FTQ0lJU3BhY2UoKSBmb3IgYWxsIExh
dGluLTEgY2hhcmFjdGVycy4gVGhpcyB3aWxsIGluY2x1ZGUgbmV3bGluZXMsIHdoaWNoIGFyZW4n
dCBpbmNsdWRlZCBpbiBVbmljb2RlIERpcldTLgotICAgIHJldHVybiBjaGFyYWN0ZXIgPD0gMHhG
RiA/IGlzQVNDSUlTcGFjZShjaGFyYWN0ZXIpIDogdV9jaGFyRGlyZWN0aW9uKGNoYXJhY3Rlcikg
PT0gVV9XSElURV9TUEFDRV9ORVVUUkFMOworICAgIHJldHVybiBpc0xhdGluMShjaGFyYWN0ZXIp
ID8gaXNBU0NJSVNwYWNlKGNoYXJhY3RlcikgOiB1X2NoYXJEaXJlY3Rpb24oY2hhcmFjdGVyKSA9
PSBVX1dISVRFX1NQQUNFX05FVVRSQUw7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IGlubGluZSB1bnNpZ25lZCBsZW5ndGhPZk51bGxUZXJtaW5hdGVkU3RyaW5nKGNvbnN0
IENoYXJhY3RlclR5cGUqIHN0cmluZykKQEAgLTEyNDMsNCArMTIzNywzIEBAIHRlbXBsYXRlPHVu
c2lnbmVkIGxlbmd0aD4gaW5saW5lIGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
Y29uc3QgU3RyaW5nCiB1c2luZyBXVEY6OlN0YXRpY1N0cmluZ0ltcGw7CiB1c2luZyBXVEY6OlN0
cmluZ0ltcGw7CiB1c2luZyBXVEY6OmVxdWFsOwotdXNpbmcgV1RGOjppc0xhdGluMTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBh
dGliaWxpdHlFbGVtZW50TWFwLnB5IGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2VTZWxlY3RvclBz
ZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAucHkKaW5kZXggYmIxN2I4YjUwNjZh
ZWQ0NzY5ZmFmZmViZWQ0YjNiNGYyMTI4YzU0YS4uMmNmM2MxODY3MDU4ODdlYzQxNTUxZTA4OTM4
MzZhMjU5ZmI5OGQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2VTZWxlY3Rv
clBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAucHkKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL21ha2VTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRN
YXAucHkKQEAgLTE3NCw3ICsxNzQsNyBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IFNlbGVjdG9yUHNl
dWRvQ2xhc3NPckNvbXBhdGliaWxpdHlQc2V1ZG9FbGVtZW50RW50cnkqIHBhcnNlUAogCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIFVDaGFyIGNo
YXJhY3RlciA9IGNoYXJhY3RlcnNbaV07Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgJiB+MHhmZikK
KyAgICAgICAgaWYgKCFpc0xhdGluMShjaGFyYWN0ZXIpKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAgICAgYnVmZmVyW2ldID0gc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJhY3Rl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZVNlbGVjdG9yUHNldWRvRWxl
bWVudHNNYXAucHkgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZVNlbGVjdG9yUHNldWRvRWxlbWVu
dHNNYXAucHkKaW5kZXggM2Q0NDJlMWI5ZTMwMTMxYjY0YjYyMTFmMWUxNTE2ZGNmYmFmYzgyNC4u
ZDk5YmJkYWFiOTQwN2NlNjgyYzQ2YzUyZTBmNTlhMjdhNjExM2Q5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL21ha2VTZWxlY3RvclBzZXVkb0VsZW1lbnRzTWFwLnB5CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9tYWtlU2VsZWN0b3JQc2V1ZG9FbGVtZW50c01hcC5weQpAQCAtMTc1
LDcgKzE3NSw3IEBAIHN0YXRpYyBpbmxpbmUgQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRUeXBl
IHBhcnNlUHNldWRvRWxlbWVudFN0cmluZyhjb25zdCBVQ2hhCiAKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgVUNoYXIgY2hhcmFjdGVyID0gY2hh
cmFjdGVyc1tpXTsKLSAgICAgICAgaWYgKGNoYXJhY3RlciAmIH4weGZmKQorICAgICAgICBpZiAo
IWlzTGF0aW4xKGNoYXJhY3RlcikpCiAgICAgICAgICAgICByZXR1cm4gQ1NTU2VsZWN0b3I6OlBz
ZXVkb0VsZW1lbnRVbmtub3duOwogCiAgICAgICAgIGJ1ZmZlcltpXSA9IHN0YXRpY19jYXN0PExD
aGFyPihjaGFyYWN0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmlu
ZGV4IDE4OTZlMWEyMjgxYzFhOWIwNDZlOGVmYWNkOTExOWFmNWUyNzdkNTYuLjYzYTRlOGU1Mzk3
NGY3ODhjZmViYzJjYjdkMjJkOTBjNzI3OTdjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAKQEAgLTIwNDQsNyArMjA0NCw3IEBAIHN0YXRpYyB2b2lkIG5vcm1hbGl6
ZUNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVmVj
dG9yCiAKIHN0YXRpYyBib29sIGlzTm9uTGF0aW4xU2VwYXJhdG9yKFVDaGFyMzIgY2hhcmFjdGVy
KQogewotICAgIEFTU0VSVF9BUkcoY2hhcmFjdGVyLCBjaGFyYWN0ZXIgPj0gMjU2KTsKKyAgICBB
U1NFUlRfQVJHKGNoYXJhY3RlciwgIWlzTGF0aW4xKGNoYXJhY3RlcikpOwogCiAgICAgcmV0dXJu
IFVfR0VUX0dDX01BU0soY2hhcmFjdGVyKSAmIChVX0dDX1NfTUFTSyB8IFVfR0NfUF9NQVNLIHwg
VV9HQ19aX01BU0sgfCBVX0dDX0NGX01BU0spOwogfQpAQCAtMjA3MCw3ICsyMDcwLDcgQEAgc3Rh
dGljIGlubGluZSBib29sIGlzU2VwYXJhdG9yKFVDaGFyMzIgY2hhcmFjdGVyKQogICAgICAgICAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCiAgICAgfTsKIAot
ICAgIGlmIChjaGFyYWN0ZXIgPCAyNTYpCisgICAgaWYgKGlzTGF0aW4xKGNoYXJhY3RlcikpCiAg
ICAgICAgIHJldHVybiBsYXRpbjFTZXBhcmF0b3JUYWJsZVtjaGFyYWN0ZXJdOwogCiAgICAgcmV0
dXJuIGlzTm9uTGF0aW4xU2VwYXJhdG9yKGNoYXJhY3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IDNjY2U1YmRlZTZlYTFiMWZl
ZmI5NDE0MDcxMmFmZTkwYWY3MGZlZDUuLjUwYTIzNzlhY2E0ODg4MGNiYzM0YjQ2YjA2YzhmMDA3
NmFkOGMyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRU
UFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBh
cnNlcnMuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9vbCBpc1ZhbGlkUmVhc29uUGhyYXNlKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVl
Lmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgVUNoYXIgYyA9IHZhbHVlW2ldOwotICAgICAgICBp
ZiAoYyA9PSAweDdGIHx8IGMgPiAweEZGIHx8IChjIDwgMHgyMCAmJiBjICE9ICdcdCcpKQorICAg
ICAgICBpZiAoYyA9PSAweDdGIHx8ICFpc0xhdGluMShjKSB8fCAoYyA8IDB4MjAgJiYgYyAhPSAn
XHQnKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7
CkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBpc1ZhbGlkSFRUUEhlYWRlclZhbHVlKGNvbnN0IFN0
cmluZyYgdmFsdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdmFsdWUubGVuZ3RoKCk7ICsraSkgewogICAgICAgICBjID0gdmFsdWVbaV07Ci0g
ICAgICAgIEFTU0VSVChjIDw9IDB4RkYpOworICAgICAgICBBU1NFUlQoaXNMYXRpbjEoYykpOwog
ICAgICAgICBpZiAoYyA9PSAweDAwIHx8IGMgPT0gMHgwQSB8fCBjID09IDB4MEQpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIGJvb2wgaXNWYWxp
ZEFjY2VwdEhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIGlmIChpc0FT
Q0lJQWxwaGFudW1lcmljKGMpIHx8IGMgPT0gJywnIHx8IGMgPT0gJy8nIHx8IGMgPT0gJzsnIHx8
IGMgPT0gJz0nKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgQVNTRVJUKGMgPD0g
MHhGRik7CisgICAgICAgIEFTU0VSVChpc0xhdGluMShjKSk7CiAgICAgICAgIGlmIChjID09IDB4
N0YgfHwgKGMgPCAweDIwICYmIGMgIT0gJ1x0JykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0
aW4xLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNw
cAppbmRleCA5MzE0NTMzMjhhNmY2Njk0ODVlZTAxZjhhNGUyY2VkZTUwMjY3N2ZmLi4xYTRkNTUx
MjVjNTk4YjU0YjhiNDlhYjJmMDYzYmYzYThmNzA0NTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAg
U3RyaW5nIFRleHRDb2RlY0xhdGluMTo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3Qg
bGVuZ3RoLCBib29sLCBib29sLCBib28KICAgICAgICAgICAgICpkZXN0aW5hdGlvbiA9ICpzb3Vy
Y2U7CiAgICAgICAgIH0gZWxzZSB7CiB1c2VMb29rdXBUYWJsZToKLSAgICAgICAgICAgIGlmIChs
YXRpbjFDb252ZXJzaW9uVGFibGVbKnNvdXJjZV0gPiAweGZmKQorICAgICAgICAgICAgaWYgKCFp
c0xhdGluMShsYXRpbjFDb252ZXJzaW9uVGFibGVbKnNvdXJjZV0pKQogICAgICAgICAgICAgICAg
IGdvdG8gdXBDb252ZXJ0VG8xNkJpdDsKIAogICAgICAgICAgICAgKmRlc3RpbmF0aW9uID0gbGF0
aW4xQ29udmVyc2lvblRhYmxlWypzb3VyY2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVVRGOC5jcHAKaW5kZXggYTNkYWQ0ZTlkMTYzNzY4NjMwODhiMTk3MTBm
ODM5ZGJiZmZlYThkZC4uNDA2ZGQ3YzNmOTgyMDNkODViMmE2NDU0M2E2MTE4MDYxZWUyYzkwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwCkBA
IC0yMDgsNyArMjA4LDcgQEAgYm9vbCBUZXh0Q29kZWNVVEY4OjpoYW5kbGVQYXJ0aWFsU2VxdWVu
Y2UoTENoYXIqJiBkZXN0aW5hdGlvbiwgY29uc3QgdWludDhfdComIHMKICAgICAgICAgICAgIG1f
cGFydGlhbFNlcXVlbmNlU2l6ZSA9IGNvdW50OwogICAgICAgICB9CiAgICAgICAgIGludCBjaGFy
YWN0ZXIgPSBkZWNvZGVOb25BU0NJSVNlcXVlbmNlKG1fcGFydGlhbFNlcXVlbmNlLCBjb3VudCk7
Ci0gICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gbm9uQ2hhcmFjdGVyIHx8IGNoYXJhY3RlciA+IDB4
RkYpCisgICAgICAgIGlmICghaXNMYXRpbjEoY2hhcmFjdGVyKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgICAgIG1fcGFydGlhbFNlcXVlbmNlU2l6ZSAtPSBjb3VudDsKQEAgLTM0
NSw3ICszNDUsNyBAQCBTdHJpbmcgVGV4dENvZGVjVVRGODo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5
dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoLCBib29sCiAKICAgICAgICAgICAgICAgICBn
b3RvIHVwQ29udmVydFRvMTZCaXQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoY2hh
cmFjdGVyID4gMHhGRikKKyAgICAgICAgICAgIGlmICghaXNMYXRpbjEoY2hhcmFjdGVyKSkKICAg
ICAgICAgICAgICAgICBnb3RvIHVwQ29udmVydFRvMTZCaXQ7CiAKICAgICAgICAgICAgIHNvdXJj
ZSArPSBjb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2Vi
S2l0TlNTdHJpbmdFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYktp
dE5TU3RyaW5nRXh0cmFzLm1tCmluZGV4IDMxNzI1YjA3ZDRlZmEzMThiNmNjZWYyODZhYjBlZDlm
OTZjNjc5ZmUuLjZkODY3NGVhOTFlZGM2NzA4Nzg0MTE5NDQwNWJkYjg1ZGJlNWE4ZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJh
cy5tbQpAQCAtNDksNyArNDksNyBAQCBAaW1wbGVtZW50YXRpb24gTlNTdHJpbmcgKFdlYktpdEV4
dHJhcykKIHN0YXRpYyBib29sIGNhblVzZUZhc3RSZW5kZXJlcihjb25zdCBVbmlDaGFyKiBidWZm
ZXIsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHsKLSAgICAgICAgaWYgKGJ1ZmZlcltpXSA+IDB4RkYpIHsKKyAgICAgICAgaWYg
KCFpc0xhdGluMShidWZmZXJbaV0pKSB7CiAgICAgICAgICAgICBhdXRvIGRpcmVjdGlvbiA9IHVf
Y2hhckRpcmVjdGlvbihidWZmZXJbaV0pOwogICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBV
X1JJR0hUX1RPX0xFRlQgfHwgKGRpcmVjdGlvbiA+IFVfT1RIRVJfTkVVVFJBTCAmJiBkaXJlY3Rp
b24gIT0gVV9ESVJfTk9OX1NQQUNJTkdfTUFSSyAmJiBkaXJlY3Rpb24gIT0gVV9CT1VOREFSWV9O
RVVUUkFMKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cg==
</data>
<flag name="review"
          id="392411"
          type_id="1"
          status="+"
          setter="ross.kirsling"
    />
          </attachment>
      

    </bug>

</bugzilla>