<?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>195142</bug_id>
          
          <creation_ts>2019-02-27 20:20:42 -0800</creation_ts>
          <short_desc>Fixed makeString(float) to do shortest-form serialization without first converting to double</short_desc>
          <delta_ts>2019-03-10 12:46:01 -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>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>178319</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1510792</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-02-27 20:20:42 -0800</bug_when>
    <thetext>Fixed makeString(float) to do shortest-form serialization without first converting to double</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510793</commentid>
    <comment_count>1</comment_count>
      <attachid>363189</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-02-27 20:34:32 -0800</bug_when>
    <thetext>Created attachment 363189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511773</commentid>
    <comment_count>2</comment_count>
      <attachid>363411</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-03-01 21:48:35 -0800</bug_when>
    <thetext>Created attachment 363411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511804</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-03-02 07:45:26 -0800</bug_when>
    <thetext>Passes tests, ready for review. Followups will reduce use of fixed precision and fixed width, which have been used to work around the lack of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511813</commentid>
    <comment_count>4</comment_count>
      <attachid>363411</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-03-02 09:04:44 -0800</bug_when>
    <thetext>Comment on attachment 363411
Patch

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

This patch is ok as-is. I’m was torn during review between pointing out style issues in the dtoa code or not because its code we brought over. For the lines you touched we could go farther towards conforming to the guide

&gt; Source/WTF/ChangeLog:12
&gt; +        marked the constructor explicit, removed types used only fir arguments for

fir

&gt; Source/WTF/wtf/dtoa.h:30
&gt; +using DtoaBuffer = std::array&lt;char, 80&gt;;

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511843</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-03-02 12:55:04 -0800</bug_when>
    <thetext>Committed r242316: &lt;https://trac.webkit.org/changeset/242316&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511844</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-02 12:56:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/48537932&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363189</attachid>
            <date>2019-02-27 20:34:32 -0800</date>
            <delta_ts>2019-03-01 21:48:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195142-20190227203431.patch</filename>
            <type>text/plain</type>
            <size>32635</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDExOGM1OTIyMDE1MGRkMWU1ODFjZDM1
ZDY3NzgzZmMxNWVhYjhhYjcuLjk0YzIyNGZhNThhMDU0ZTRkY2JlNjQ4ODQ5YjNhYjBkYjgyNDA5
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTktMDItMjcgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIEZpeGVkIG1ha2VTdHJpbmcoZmxvYXQpIHRvIGRvIHNob3J0
ZXN0LWZvcm0gc2VyaWFsaXphdGlvbiB3aXRob3V0IGZpcnN0IGNvbnZlcnRpbmcgdG8gZG91Ymxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUxNDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9E
ZWNpbWFsTnVtYmVyLmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKworICAgICAgICAq
IHd0Zi9EZWNpbWFsTnVtYmVyLmg6IFJlbW92ZWQgdW51c2VkIGNvbnN0cnVjdG9yczsgb3ZlciB0
aW1lIHdlIHdpbGwgYmUKKyAgICAgICAgZGVwcmVjYXRpbmcgRGVjaW1hbE51bWJlciwgc28gd2Ug
c2hvdWxkIHJlbW92ZWQgdGhlIHVudXNlZCBwYXJ0cy4gQWxzbworICAgICAgICBtYXJrZWQgdGhl
IGNvbnN0cnVjdG9yIGV4cGxpY2l0LCByZW1vdmVkIHR5cGVzIHVzZWQgb25seSBmaXIgYXJndW1l
bnRzIGZvcgorICAgICAgICB0aGUgY29uc3RydWN0b3JzLCBhbmQgcmVtb3ZlZCB0aGUgc2lnbiwg
ZXhwb25lbnQsIHNpZ25pZmljYW5kLCBhbmQgcHJlY2lzaW9uCisgICAgICAgIG1lbWJlciBmdW5j
dGlvbnMuCisKKyAgICAgICAgKiB3dGYvSlNPTlZhbHVlcy5jcHA6CisgICAgICAgIChXVEY6OkpT
T05JbXBsOjpWYWx1ZTo6d3JpdGVKU09OIGNvbnN0KTogVXBkYXRlZCBmb3IgY2hhbmdlcyB0byBE
ZWNpbWFsTnVtYmVyCisgICAgICAgIHN3aXRjaGVkIGZyb20gTnVtYmVyVG9MU3RyaW5nQnVmZmVy
IHRvIE51bWJlclRvU3RyaW5nQnVmZmVyLCBhbmQgZm9yIHVzZSBvZgorICAgICAgICBzdGQ6OmFy
cmF5IGluc3RlYWQgb2YgQyBhcnJheXMuCisKKyAgICAgICAgKiB3dGYvZHRvYS5jcHA6IFJlbW92
ZWQgdW51c2VkIGR0b2FSb3VuZFNGIGFuZCBkdG9hUm91bmREUCBmdW5jdGlvbnMuCisgICAgICAg
IChXVEY6OmR0b2EpOiBVcGRhdGVkIHRvIHVzZSBzdGQ6OmFycmF5IGluc3RlYWQgb2YgQyBhcnJh
eXMuCisgICAgICAgIChXVEY6OmR0b2FSb3VuZFNGKTogUmVtb3ZlZC4KKyAgICAgICAgKFdURjo6
ZHRvYVJvdW5kRFApOiBSZW1vdmVkLgorICAgICAgICAoV1RGOjpudW1iZXJUb1N0cmluZyk6IEFk
ZGVkIGFuIG92ZXJsb2FkIGZvciBmbG9hdCBhbmQgdXBkYXRlZCB0byB1c2Ugc3RkOjphcnJheS4K
KyAgICAgICAgKFdURjo6Zm9ybWF0U3RyaW5nVHJ1bmNhdGluZ1RyYWlsaW5nWmVyb3NJZk5lZWRl
ZCk6IFVwZGF0ZWQgdG8gdXNlIHN0ZDo6YXJyYXkuCisgICAgICAgIChXVEY6Om51bWJlclRvRml4
ZWRQcmVjaXNpb25TdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdURjo6bnVtYmVyVG9GaXhlZFdp
ZHRoU3RyaW5nKTogRGl0dG8uCisKKyAgICAgICAgKiB3dGYvZHRvYS5oOiBDaGFuZ2VkIGFycmF5
cyB0byBiZSBzdGQ6OmFycmF5IGluc3RlYWQgb2YgQyBhcnJheXMgc28gdGhlCisgICAgICAgIGFy
cmF5IHR5cGVzIHdpbGwgYmUgY2hlY2tlZC4gUmVtb3ZlZCBkdG9hUm91bmRTRiBhbmQgZHRvYVJv
dW5kRFAuCisgICAgICAgIEFkZGVkIGZsb2F0IG92ZXJsb2FkcyBmb3IgbnVtYmVyVG9TdHJpbmcs
IG51bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmcsCisgICAgICAgIGFuZCBudW1iZXJUb0ZpeGVk
V2lkdGhTdHJpbmcuIFRoZSBvbmx5IG9uZSBvZiB0aGVzZSB0aGF0IGlzIGNhbGxlZCBhdCB0aGlz
CisgICAgICAgIHRpbWUgaXMgbnVtYmVyVG9TdHJpbmcsIGNhbGxlZCBieSB0aGUgZmxvYXRpbmcg
cG9pbnQgU3RyaW5nVHlwZUFkYXB0ZXIgaW4KKyAgICAgICAgU3RyaW5nQ29uY2F0ZW5hdGVOdW1t
YmVycy5oLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg6
IFVwZGF0ZWQgZm9yIHN0ZDo6YXJyYXkuCisKIDIwMTktMDItMjYgIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSByZW1haW5pbmcgcG9pc29uaW5nIGNvZGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggNWNkODczMWMzNmM0Mjg5NGZhZjU2MTVhMjQzNmJiOTBmMGY3OThiZi4u
NWY3NzhkOTcyOGMwMmJlYTczYTg1MjZmMmJhZDZlMmFhOGM2NTI2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDE5LTAyLTI3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBGaXhlZCBtYWtlU3RyaW5nKGZsb2F0KSB0byBkbyBzaG9ydGVzdC1mb3JtIHNl
cmlhbGl6YXRpb24gd2l0aG91dCBmaXJzdCBjb252ZXJ0aW5nIHRvIGRvdWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MTQyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvci5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZSBvZiBEZWNpbWFsTnVtYmVyLmgu
CisKIDIwMTktMDItMjcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ29udGVudENoYW5nZU9ic2VydmVyXSBNb3ZlIF9XS09ic2VydmluZ0NvbnRlbnRDaGFuZ2Vz
IGZyb20gZ2xvYmFsIHRvIENvbnRlbnRDaGFuZ2VPYnNlcnZlciBjbGFzcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAw
ZmNkZjFmMjc3MGI3MDljYjNiYjI0NWZlMWY0ZmQ4YjQ1YjJhZDkwLi5lMmY1YWQyYjAwODI0Mzk5
NjE4OWE1ZGEyNTZlMDEyZDU0NTJiM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5
LTAyLTI3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBGaXhlZCBt
YWtlU3RyaW5nKGZsb2F0KSB0byBkbyBzaG9ydGVzdC1mb3JtIHNlcmlhbGl6YXRpb24gd2l0aG91
dCBmaXJzdCBjb252ZXJ0aW5nIHRvIGRvdWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdl
U2FtcGxlci5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZSBvZiBEZWNpbWFsTnVtYmVyLmgu
CisKIDIwMTktMDItMjcgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCAtV2Zvcm1hdCB3YXJuaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9EZWNpbWFsTnVtYmVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0RlY2lt
YWxOdW1iZXIuY3BwCmluZGV4IGQ5NjY3YjM4MmVkNzc2YTQ0ZjgwNTMyZmExMTY3ODIxYTI0NzZl
YTcuLmM3MjJjZTU0MDY0ZDY5ODIzM2QwZGMxN2U2Y2U2M2VjZmU5MWFjMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0RlY2ltYWxOdW1iZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Rl
Y2ltYWxOdW1iZXIuY3BwCkBAIC0yNiw5ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSA8d3RmL0RlY2ltYWxOdW1iZXIuaD4KIAotI2luY2x1ZGUgPG1hdGguaD4KICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGVjaW1hbE51
bWJlci5oIGIvU291cmNlL1dURi93dGYvRGVjaW1hbE51bWJlci5oCmluZGV4IGQ1Y2YzNDA5ZWZm
OTc1YmQxYTkxNTBiZjE3YzlmMWJkYzE1ZjJjM2UuLmFjNGVmZjc1MzUxYzhjMWJhZTQzOGExOGE1
Y2I0Y2Q0NTgwYWQyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RlY2ltYWxOdW1iZXIu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EZWNpbWFsTnVtYmVyLmgKQEAgLTI1LDE5ICsyNSwxNCBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxjbWF0aD4K
ICNpbmNsdWRlIDx3dGYvZHRvYS5oPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCi1lbnVtIFJv
dW5kaW5nU2lnbmlmaWNhbnRGaWd1cmVzVHlwZSB7IFJvdW5kaW5nU2lnbmlmaWNhbnRGaWd1cmVz
IH07Ci1lbnVtIFJvdW5kaW5nRGVjaW1hbFBsYWNlc1R5cGUgeyBSb3VuZGluZ0RlY2ltYWxQbGFj
ZXMgfTsKLQogY2xhc3MgRGVjaW1hbE51bWJlciB7CiBwdWJsaWM6Ci0gICAgRGVjaW1hbE51bWJl
cihkb3VibGUgZCkKKyAgICBleHBsaWNpdCBEZWNpbWFsTnVtYmVyKGRvdWJsZSBkKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKHN0ZDo6aXNmaW5pdGUoZCkpOwogICAgICAgICBkdG9hKG1fc2lnbmlm
aWNhbmQsIGQsIG1fc2lnbiwgbV9leHBvbmVudCwgbV9wcmVjaXNpb24pOwpAQCAtNTEsNDYgKzQ2
LDEyIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fc2lnbmlmaWNhbmRbMF0gPT0gJzAnIHx8
IG1fc2lnbmlmaWNhbmRbbV9wcmVjaXNpb24gLSAxXSAhPSAnMCcpOwogICAgIH0KIAotICAgIERl
Y2ltYWxOdW1iZXIoZG91YmxlIGQsIFJvdW5kaW5nU2lnbmlmaWNhbnRGaWd1cmVzVHlwZSwgdW5z
aWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHN0ZDo6aXNm
aW5pdGUoZCkpOwotICAgICAgICBkdG9hUm91bmRTRihtX3NpZ25pZmljYW5kLCBkLCBzaWduaWZp
Y2FudEZpZ3VyZXMsIG1fc2lnbiwgbV9leHBvbmVudCwgbV9wcmVjaXNpb24pOwotCi0gICAgICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNpZ25pZmljYW50RmlndXJlcyAmJiBz
aWduaWZpY2FudEZpZ3VyZXMgPD0gc2l6ZW9mKER0b2FCdWZmZXIpKTsKLSAgICAgICAgd2hpbGUg
KG1fcHJlY2lzaW9uIDwgc2lnbmlmaWNhbnRGaWd1cmVzKQotICAgICAgICAgICAgbV9zaWduaWZp
Y2FuZFttX3ByZWNpc2lvbisrXSA9ICcwJzsKLQotICAgICAgICBBU1NFUlQobV9wcmVjaXNpb24p
OwotICAgICAgICAvLyBaZXJvIHNob3VsZCBhbHdheXMgaGF2ZSBleHBvbmVudCAwLgotICAgICAg
ICBBU1NFUlQobV9zaWduaWZpY2FuZFswXSAhPSAnMCcgfHwgIW1fZXhwb25lbnQpOwotICAgIH0K
LQotICAgIERlY2ltYWxOdW1iZXIoZG91YmxlIGQsIFJvdW5kaW5nRGVjaW1hbFBsYWNlc1R5cGUs
IHVuc2lnbmVkIGRlY2ltYWxQbGFjZXMpCi0gICAgewotICAgICAgICBBU1NFUlQoc3RkOjppc2Zp
bml0ZShkKSk7Ci0gICAgICAgIGR0b2FSb3VuZERQKG1fc2lnbmlmaWNhbmQsIGQsIGRlY2ltYWxQ
bGFjZXMsIG1fc2lnbiwgbV9leHBvbmVudCwgbV9wcmVjaXNpb24pOwotCi0gICAgICAgIHVuc2ln
bmVkIHNpZ25pZmljYW50RmlndXJlcyA9IDEgKyBtX2V4cG9uZW50ICsgZGVjaW1hbFBsYWNlczsK
LSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2lnbmlmaWNhbnRGaWd1
cmVzICYmIHNpZ25pZmljYW50RmlndXJlcyA8PSBzaXplb2YoRHRvYUJ1ZmZlcikpOwotICAgICAg
ICB3aGlsZSAobV9wcmVjaXNpb24gPCBzaWduaWZpY2FudEZpZ3VyZXMpCi0gICAgICAgICAgICBt
X3NpZ25pZmljYW5kW21fcHJlY2lzaW9uKytdID0gJzAnOwotCi0gICAgICAgIEFTU0VSVChtX3By
ZWNpc2lvbik7Ci0gICAgICAgIC8vIFplcm8gc2hvdWxkIGFsd2F5cyBoYXZlIGV4cG9uZW50IDAu
Ci0gICAgICAgIEFTU0VSVChtX3NpZ25pZmljYW5kWzBdICE9ICcwJyB8fCAhbV9leHBvbmVudCk7
Ci0gICAgfQotCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aEZv
clN0cmluZ0RlY2ltYWwoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQg
YnVmZmVyTGVuZ3RoRm9yU3RyaW5nRXhwb25lbnRpYWwoKSBjb25zdDsKIAogICAgIFdURl9FWFBP
UlRfUFJJVkFURSB1bnNpZ25lZCB0b1N0cmluZ0RlY2ltYWwoTENoYXIqIGJ1ZmZlciwgdW5zaWdu
ZWQgYnVmZmVyTGVuZ3RoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQg
dG9TdHJpbmdFeHBvbmVudGlhbChMQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgp
IGNvbnN0OwogCi0gICAgYm9vbCBzaWduKCkgY29uc3QgeyByZXR1cm4gbV9zaWduOyB9Ci0gICAg
aW50IGV4cG9uZW50KCkgY29uc3QgeyByZXR1cm4gbV9leHBvbmVudDsgfQotICAgIGNvbnN0IGNo
YXIqIHNpZ25pZmljYW5kKCkgY29uc3QgeyByZXR1cm4gbV9zaWduaWZpY2FuZDsgfSAvLyBzaWdu
aWZpY2FuZCBjb250YWlucyBwcmVjaXNpb24gY2hhcmFjdGVycywgaXMgbm90IG51bGwtdGVybWlu
YXRlZC4KLSAgICB1bnNpZ25lZCBwcmVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtX3ByZWNpc2lv
bjsgfQotCiBwcml2YXRlOgogICAgIGJvb2wgbV9zaWduOwogICAgIGludCBtX2V4cG9uZW50OwpA
QCAtMTAxLDUgKzYyLDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBX
VEY6OkRlY2ltYWxOdW1iZXI7Ci11c2luZyBXVEY6OlJvdW5kaW5nU2lnbmlmaWNhbnRGaWd1cmVz
OwotdXNpbmcgV1RGOjpSb3VuZGluZ0RlY2ltYWxQbGFjZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9KU09OVmFsdWVzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuY3BwCmlu
ZGV4IGMwMmZlZTUwNjEzMDQxYjdlN2JjNzBiMWFhZjMyZDAyNTcxYmEwMmIuLmEwZWUxMDE3ZTg5
YjAyNGI5N2RlMTA3NjdlYWFhYzdjNDVjZWJkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0pTT05WYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuY3BwCkBAIC02
NzMsMjQgKzY3MywyNCBAQCB2b2lkIFZhbHVlOjp3cml0ZUpTT04oU3RyaW5nQnVpbGRlciYgb3V0
cHV0KSBjb25zdAogICAgICAgICBicmVhazsKICAgICBjYXNlIFR5cGU6OkRvdWJsZToKICAgICBj
YXNlIFR5cGU6OkludGVnZXI6IHsKLSAgICAgICAgTnVtYmVyVG9MU3RyaW5nQnVmZmVyIGJ1ZmZl
cjsKICAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKG1fdmFsdWUubnVtYmVyKSkgewogICAgICAg
ICAgICAgb3V0cHV0LmFwcGVuZExpdGVyYWwoIm51bGwiKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBEZWNpbWFsTnVtYmVyIGRlY2ltYWwgPSBtX3ZhbHVlLm51bWJl
cjsKKyAgICAgICAgRGVjaW1hbE51bWJlciBkZWNpbWFsIHsgbV92YWx1ZS5udW1iZXIgfTsKKyAg
ICAgICAgTnVtYmVyVG9TdHJpbmdCdWZmZXIgYnVmZmVyOwogICAgICAgICB1bnNpZ25lZCBsZW5n
dGggPSAwOwotICAgICAgICBpZiAoZGVjaW1hbC5idWZmZXJMZW5ndGhGb3JTdHJpbmdEZWNpbWFs
KCkgPiBXVEY6Ok51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoKSB7CisgICAgICAgIGlmIChkZWNp
bWFsLmJ1ZmZlckxlbmd0aEZvclN0cmluZ0RlY2ltYWwoKSA+IHNpemVvZihidWZmZXIpKSB7CiAg
ICAgICAgICAgICAvLyBOb3QgZW5vdWdoIHJvb20gZm9yIGRlY2ltYWwuIFVzZSBleHBvbmVudGlh
bCBmb3JtYXQuCi0gICAgICAgICAgICBpZiAoZGVjaW1hbC5idWZmZXJMZW5ndGhGb3JTdHJpbmdF
eHBvbmVudGlhbCgpID4gV1RGOjpOdW1iZXJUb1N0cmluZ0J1ZmZlckxlbmd0aCkgeworICAgICAg
ICAgICAgaWYgKGRlY2ltYWwuYnVmZmVyTGVuZ3RoRm9yU3RyaW5nRXhwb25lbnRpYWwoKSA+IHNp
emVvZihidWZmZXIpKSB7CiAgICAgICAgICAgICAgICAgLy8gRmFsbGJhY2sgZm9yIGFuIGFibm9y
bWFsIGNhc2UgaWYgaXQncyB0b28gbGl0dGxlIGV2ZW4gZm9yIGV4cG9uZW50aWFsLgogICAgICAg
ICAgICAgICAgIG91dHB1dC5hcHBlbmRMaXRlcmFsKCJOYU4iKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBsZW5ndGggPSBkZWNpbWFsLnRvU3Ry
aW5nRXhwb25lbnRpYWwoYnVmZmVyLCBXVEY6Ok51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoKTsK
KyAgICAgICAgICAgIGxlbmd0aCA9IGRlY2ltYWwudG9TdHJpbmdFeHBvbmVudGlhbChyZWludGVy
cHJldF9jYXN0PExDaGFyKj4oJmJ1ZmZlclswXSksIHNpemVvZihidWZmZXIpKTsKICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBsZW5ndGggPSBkZWNpbWFsLnRvU3RyaW5nRGVjaW1hbChidWZm
ZXIsIFdURjo6TnVtYmVyVG9TdHJpbmdCdWZmZXJMZW5ndGgpOwotICAgICAgICBvdXRwdXQuYXBw
ZW5kKGJ1ZmZlciwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGxlbmd0aCA9IGRlY2ltYWwudG9TdHJp
bmdEZWNpbWFsKHJlaW50ZXJwcmV0X2Nhc3Q8TENoYXIqPigmYnVmZmVyWzBdKSwgc2l6ZW9mKGJ1
ZmZlcikpOworICAgICAgICBvdXRwdXQuYXBwZW5kKCZidWZmZXJbMF0sIGxlbmd0aCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvZHRvYS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9kdG9hLmNwcAppbmRleCA2ODMzMTRmZmQ0ZTk4
YTVmZGMwODU4NmZjODc3ODgxYjJhYjZjYWJmLi5mOTEwNTFlYTE1MzBhZmI3MjIzZGYxYzVlOGM2
NGMyNDc1YzQxMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9kdG9hLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9kdG9hLmNwcApAQCAtMyw3ICszLDcgQEAKICAqIFRoZSBhdXRob3Igb2Yg
dGhpcyBzb2Z0d2FyZSBpcyBEYXZpZCBNLiBHYXkuCiAgKgogICogQ29weXJpZ2h0IChjKSAxOTkx
LCAyMDAwLCAyMDAxIGJ5IEx1Y2VudCBUZWNobm9sb2dpZXMuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUGVybWlz
c2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBm
b3IgYW55CiAgKiBwdXJwb3NlIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRl
ZCB0aGF0IHRoaXMgZW50aXJlIG5vdGljZQpAQCAtNzI4LDE3ICs3MjgsOSBAQCBzdGF0aWMgQUxX
QVlTX0lOTElORSBpbnQgcXVvcmVtKEJpZ0ludCYgYiwgQmlnSW50JiBTKQogICogICAgICAgInVu
aWZvcm1seSIgZGlzdHJpYnV0ZWQgaW5wdXQsIHRoZSBwcm9iYWJpbGl0eSBpcwogICogICAgICAg
c29tZXRoaW5nIGxpa2UgMTBeKGstMTUpIHRoYXQgd2UgbXVzdCByZXNvcnQgdG8gdGhlIGludDMy
X3QKICAqICAgICAgIGNhbGN1bGF0aW9uLgotICoKLSAqIE5vdGU6ICdsZWZ0cmlnaHQnIHRyYW5z
bGF0ZXMgdG8gJ2dlbmVyYXRlIHNob3J0ZXN0IHBvc3NpYmxlIHN0cmluZycuCiAgKi8KLXRlbXBs
YXRlPGJvb2wgcm91bmRpbmdOb25lLCBib29sIHJvdW5kaW5nU2lnbmlmaWNhbnRGaWd1cmVzLCBi
b29sIHJvdW5kaW5nRGVjaW1hbFBsYWNlcywgYm9vbCBsZWZ0cmlnaHQ+Ci12b2lkIGR0b2EoRHRv
YUJ1ZmZlciByZXN1bHQsIGRvdWJsZSBkZCwgaW50IG5kaWdpdHMsIGJvb2wmIHNpZ25PdXQsIGlu
dCYgZXhwb25lbnRPdXQsIHVuc2lnbmVkJiBwcmVjaXNpb25PdXQpCit2b2lkIGR0b2EoRHRvYUJ1
ZmZlciYgcmVzdWx0LCBkb3VibGUgZGQsIGJvb2wmIHNpZ25PdXQsIGludCYgZXhwb25lbnRPdXQs
IHVuc2lnbmVkJiBwcmVjaXNpb25PdXQpCiB7Ci0gICAgLy8gRXhhY3RseSBvbmUgcm91bmRpbmcg
bW9kZSBtdXN0IGJlIHNwZWNpZmllZC4KLSAgICBBU1NFUlQocm91bmRpbmdOb25lICsgcm91bmRp
bmdTaWduaWZpY2FudEZpZ3VyZXMgKyByb3VuZGluZ0RlY2ltYWxQbGFjZXMgPT0gMSk7Ci0gICAg
Ly8gcm91bmRpbmdOb25lIG9ubHkgYWxsb3dlZCAob25seSBzZW5zaWJsZT8pIHdpdGggbGVmdHJp
Z2h0IHNldC4KLSAgICBBU1NFUlQoIXJvdW5kaW5nTm9uZSB8fCBsZWZ0cmlnaHQpOwotCiAgICAg
QVNTRVJUKHN0ZDo6aXNmaW5pdGUoZGQpKTsKIAogICAgIGludCBiYml0cywgYjIsIGI1LCBiZSwg
ZGlnLCBpLCBpZXBzLCBpbGltID0gMCwgaWxpbTAsIGlsaW0xID0gMCwKQEAgLTg0MywyNSArODM1
LDEwIEBAIHZvaWQgZHRvYShEdG9hQnVmZmVyIHJlc3VsdCwgZG91YmxlIGRkLCBpbnQgbmRpZ2l0
cywgYm9vbCYgc2lnbk91dCwgaW50JiBleHBvbmVuCiAgICAgICAgIHM1ID0gMDsKICAgICB9CiAK
LSAgICBpZiAocm91bmRpbmdOb25lKSB7Ci0gICAgICAgIGlsaW0gPSBpbGltMSA9IC0xOwotICAg
ICAgICBpID0gMTg7Ci0gICAgICAgIG5kaWdpdHMgPSAwOwotICAgIH0KLSAgICBpZiAocm91bmRp
bmdTaWduaWZpY2FudEZpZ3VyZXMpIHsKLSAgICAgICAgaWYgKG5kaWdpdHMgPD0gMCkKLSAgICAg
ICAgICAgIG5kaWdpdHMgPSAxOwotICAgICAgICBpbGltID0gaWxpbTEgPSBpID0gbmRpZ2l0czsK
LSAgICB9Ci0gICAgaWYgKHJvdW5kaW5nRGVjaW1hbFBsYWNlcykgewotICAgICAgICBpID0gbmRp
Z2l0cyArIGsgKyAxOwotICAgICAgICBpbGltID0gaTsKLSAgICAgICAgaWxpbTEgPSBpIC0gMTsK
LSAgICAgICAgaWYgKGkgPD0gMCkKLSAgICAgICAgICAgIGkgPSAxOwotICAgIH0KKyAgICBpbGlt
ID0gaWxpbTEgPSAtMTsKKyAgICBpID0gMTg7CiAKLSAgICBzID0gczAgPSByZXN1bHQ7CisgICAg
cyA9IHMwID0gJnJlc3VsdFswXTsKIAogICAgIGlmIChpbGltID49IDAgJiYgaWxpbSA8PSBRdWlj
a19tYXgpIHsKICAgICAgICAgLyogVHJ5IHRvIGdldCBieSB3aXRoIGZsb2F0aW5nLXBvaW50IGFy
aXRobWV0aWMuICovCkBAIC05MTYsNDMgKzg5MywyMiBAQCB2b2lkIGR0b2EoRHRvYUJ1ZmZlciBy
ZXN1bHQsIGRvdWJsZSBkZCwgaW50IG5kaWdpdHMsIGJvb2wmIHNpZ25PdXQsIGludCYgZXhwb25l
bgogICAgICAgICAgICAgICAgIGdvdG8gbm9EaWdpdHM7CiAgICAgICAgICAgICBnb3RvIGZhc3RG
YWlsZWQ7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGxlZnRyaWdodCkgewotICAgICAgICAgICAg
LyogVXNlIFN0ZWVsZSAmIFdoaXRlIG1ldGhvZCBvZiBvbmx5Ci0gICAgICAgICAgICAgKiBnZW5l
cmF0aW5nIGRpZ2l0cyBuZWVkZWQuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGR2YWwo
JmVwcykgPSAoMC41IC8gdGVuc1tpbGltIC0gMV0pIC0gZHZhbCgmZXBzKTsKLSAgICAgICAgICAg
IGZvciAoaSA9IDA7OykgewotICAgICAgICAgICAgICAgIEwgPSAobG9uZyBpbnQpZHZhbCgmdSk7
Ci0gICAgICAgICAgICAgICAgZHZhbCgmdSkgLT0gTDsKLSAgICAgICAgICAgICAgICAqcysrID0g
JzAnICsgKGludClMOwotICAgICAgICAgICAgICAgIGlmIChkdmFsKCZ1KSA8IGR2YWwoJmVwcykp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0OwotICAgICAgICAgICAgICAgIGlmICgxLiAt
IGR2YWwoJnUpIDwgZHZhbCgmZXBzKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBidW1wVXA7
Ci0gICAgICAgICAgICAgICAgaWYgKCsraSA+PSBpbGltKQotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICBkdmFsKCZlcHMpICo9IDEwLjsKLSAgICAgICAgICAgICAg
ICBkdmFsKCZ1KSAqPSAxMC47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAvKiBHZW5lcmF0ZSBpbGltIGRpZ2l0cywgdGhlbiBmaXggdGhlbSB1cC4gKi8KLSAg
ICAgICAgICAgIGR2YWwoJmVwcykgKj0gdGVuc1tpbGltIC0gMV07Ci0gICAgICAgICAgICBmb3Ig
KGkgPSAxOzsgaSsrLCBkdmFsKCZ1KSAqPSAxMC4pIHsKLSAgICAgICAgICAgICAgICBMID0gKGlu
dDMyX3QpKGR2YWwoJnUpKTsKLSAgICAgICAgICAgICAgICBpZiAoIShkdmFsKCZ1KSAtPSBMKSkK
LSAgICAgICAgICAgICAgICAgICAgaWxpbSA9IGk7Ci0gICAgICAgICAgICAgICAgKnMrKyA9ICcw
JyArIChpbnQpTDsKLSAgICAgICAgICAgICAgICBpZiAoaSA9PSBpbGltKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChkdmFsKCZ1KSA+IDAuNSArIGR2YWwoJmVwcykpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBnb3RvIGJ1bXBVcDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGR2YWwoJnUp
IDwgMC41IC0gZHZhbCgmZXBzKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCot
LXMgPT0gJzAnKSB7IH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdvdG8gcmV0OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAg
ICAgLyogVXNlIFN0ZWVsZSAmIFdoaXRlIG1ldGhvZCBvZiBvbmx5CisgICAgICAgICAqIGdlbmVy
YXRpbmcgZGlnaXRzIG5lZWRlZC4KKyAgICAgICAgICovCisgICAgICAgIGR2YWwoJmVwcykgPSAo
MC41IC8gdGVuc1tpbGltIC0gMV0pIC0gZHZhbCgmZXBzKTsKKyAgICAgICAgZm9yIChpID0gMDs7
KSB7CisgICAgICAgICAgICBMID0gKGxvbmcgaW50KWR2YWwoJnUpOworICAgICAgICAgICAgZHZh
bCgmdSkgLT0gTDsKKyAgICAgICAgICAgICpzKysgPSAnMCcgKyAoaW50KUw7CisgICAgICAgICAg
ICBpZiAoZHZhbCgmdSkgPCBkdmFsKCZlcHMpKQorICAgICAgICAgICAgICAgIGdvdG8gcmV0Owor
ICAgICAgICAgICAgaWYgKDEuIC0gZHZhbCgmdSkgPCBkdmFsKCZlcHMpKQorICAgICAgICAgICAg
ICAgIGdvdG8gYnVtcFVwOworICAgICAgICAgICAgaWYgKCsraSA+PSBpbGltKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgZHZhbCgmZXBzKSAqPSAxMC47CisgICAgICAgICAg
ICBkdmFsKCZ1KSAqPSAxMC47CiAgICAgICAgIH0KIGZhc3RGYWlsZWQ6CiAgICAgICAgIHMgPSBz
MDsKQEAgLTk2NiwxMyArOTIyLDYgQEAgZmFzdEZhaWxlZDoKICAgICBpZiAoYmUgPj0gMCAmJiBr
IDw9IEludF9tYXgpIHsKICAgICAgICAgLyogWWVzLiAqLwogICAgICAgICBkcyA9IHRlbnNba107
Ci0gICAgICAgIGlmIChuZGlnaXRzIDwgMCAmJiBpbGltIDw9IDApIHsKLSAgICAgICAgICAgIFMu
Y2xlYXIoKTsKLSAgICAgICAgICAgIG1oaS5jbGVhcigpOwotICAgICAgICAgICAgaWYgKGlsaW0g
PCAwIHx8IGR2YWwoJnUpIDw9IDUgKiBkcykKLSAgICAgICAgICAgICAgICBnb3RvIG5vRGlnaXRz
OwotICAgICAgICAgICAgZ290byBvbmVEaWdpdDsKLSAgICAgICAgfQogICAgICAgICBmb3IgKGkg
PSAxOzsgaSsrLCBkdmFsKCZ1KSAqPSAxMC4pIHsKICAgICAgICAgICAgIEwgPSAoaW50MzJfdCko
ZHZhbCgmdSkgLyBkcyk7CiAgICAgICAgICAgICBkdmFsKCZ1KSAtPSBMICogZHM7CkBAIC0xMDAy
LDEyICs5NTEsMTAgQEAgYnVtcFVwOgogICAgIG01ID0gYjU7CiAgICAgbWhpLmNsZWFyKCk7CiAg
ICAgbWxvLmNsZWFyKCk7Ci0gICAgaWYgKGxlZnRyaWdodCkgewotICAgICAgICBpID0gZGVub3Jt
ID8gYmUgKyAoQmlhcyArIChQIC0gMSkgLSAxICsgMSkgOiAxICsgUCAtIGJiaXRzOwotICAgICAg
ICBiMiArPSBpOwotICAgICAgICBzMiArPSBpOwotICAgICAgICBpMmIobWhpLCAxKTsKLSAgICB9
CisgICAgaSA9IGRlbm9ybSA/IGJlICsgKEJpYXMgKyAoUCAtIDEpIC0gMSArIDEpIDogMSArIFAg
LSBiYml0czsKKyAgICBiMiArPSBpOworICAgIHMyICs9IGk7CisgICAgaTJiKG1oaSwgMSk7CiAg
ICAgaWYgKG0yID4gMCAmJiBzMiA+IDApIHsKICAgICAgICAgaSA9IG0yIDwgczIgPyBtMiA6IHMy
OwogICAgICAgICBiMiAtPSBpOwpAQCAtMTAxNSwxNSArOTYyLDEyIEBAIGJ1bXBVcDoKICAgICAg
ICAgczIgLT0gaTsKICAgICB9CiAgICAgaWYgKGI1ID4gMCkgewotICAgICAgICBpZiAobGVmdHJp
Z2h0KSB7Ci0gICAgICAgICAgICBpZiAobTUgPiAwKSB7Ci0gICAgICAgICAgICAgICAgcG93NW11
bHQobWhpLCBtNSk7Ci0gICAgICAgICAgICAgICAgbXVsdChiLCBtaGkpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKChqID0gYjUgLSBtNSkpCi0gICAgICAgICAgICAgICAgcG93NW11
bHQoYiwgaik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcG93NW11bHQoYiwgYjUpOwor
ICAgICAgICBpZiAobTUgPiAwKSB7CisgICAgICAgICAgICBwb3c1bXVsdChtaGksIG01KTsKKyAg
ICAgICAgICAgIG11bHQoYiwgbWhpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKGogPSBiNSAt
IG01KSkKKyAgICAgICAgICAgIHBvdzVtdWx0KGIsIGopOwogICAgIH0KICAgICBpMmIoUywgMSk7
CiAgICAgaWYgKHM1ID4gMCkKQEAgLTEwMzIsNyArOTc2LDcgQEAgYnVtcFVwOgogICAgIC8qIENo
ZWNrIGZvciBzcGVjaWFsIGNhc2UgdGhhdCBkIGlzIGEgbm9ybWFsaXplZCBwb3dlciBvZiAyLiAq
LwogCiAgICAgc3BlY19jYXNlID0gMDsKLSAgICBpZiAoKHJvdW5kaW5nTm9uZSB8fCBsZWZ0cmln
aHQpICYmICghd29yZDEoJnUpICYmICEod29yZDAoJnUpICYgQm5kcnlfbWFzaykgJiYgd29yZDAo
JnUpICYgKEV4cF9tYXNrICYgfkV4cF9tc2sxKSkpIHsKKyAgICBpZiAoKCF3b3JkMSgmdSkgJiYg
ISh3b3JkMCgmdSkgJiBCbmRyeV9tYXNrKSAmJiB3b3JkMCgmdSkgJiAoRXhwX21hc2sgJiB+RXhw
X21zazEpKSkgewogICAgICAgICAvKiBUaGUgc3BlY2lhbCBjYXNlICovCiAgICAgICAgIGIyICs9
IExvZzJQOwogICAgICAgICBzMiArPSBMb2cyUDsKQEAgLTEwNjcsMTA1ICsxMDExLDg0IEBAIGJ1
bXBVcDoKICAgICAgICAgaWYgKGNtcChiLCBTKSA8IDApIHsKICAgICAgICAgICAgIGstLTsKICAg
ICAgICAgICAgIG11bHRhZGQoYiwgMTAsIDApOyAgICAvKiB3ZSBib3RjaGVkIHRoZSBrIGVzdGlt
YXRlICovCi0gICAgICAgICAgICBpZiAobGVmdHJpZ2h0KQotICAgICAgICAgICAgICAgIG11bHRh
ZGQobWhpLCAxMCwgMCk7CisgICAgICAgICAgICBtdWx0YWRkKG1oaSwgMTAsIDApOwogICAgICAg
ICAgICAgaWxpbSA9IGlsaW0xOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChpbGltIDw9IDAg
JiYgcm91bmRpbmdEZWNpbWFsUGxhY2VzKSB7Ci0gICAgICAgIGlmIChpbGltIDwgMCkKLSAgICAg
ICAgICAgIGdvdG8gbm9EaWdpdHM7Ci0gICAgICAgIG11bHRhZGQoUywgNSwgMCk7Ci0gICAgICAg
IC8vIEZvciBJRUVFLTc1NCB1bmJpYXNlZCByb3VuZGluZyB0aGlzIGNoZWNrIHNob3VsZCBiZSA8
PSwgc3VjaCB0aGF0IDAuNSB3b3VsZCBmbHVzaCB0byB6ZXJvLgotICAgICAgICBpZiAoY21wKGIs
IFMpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gbm9EaWdpdHM7Ci0gICAgICAgIGdvdG8gb25lRGln
aXQ7Ci0gICAgfQotICAgIGlmIChsZWZ0cmlnaHQpIHsKLSAgICAgICAgaWYgKG0yID4gMCkKLSAg
ICAgICAgICAgIGxzaGlmdChtaGksIG0yKTsKKyAgICBpZiAobTIgPiAwKQorICAgICAgICBsc2hp
ZnQobWhpLCBtMik7CiAKLSAgICAgICAgLyogQ29tcHV0ZSBtbG8gLS0gY2hlY2sgZm9yIHNwZWNp
YWwgY2FzZQotICAgICAgICAgKiB0aGF0IGQgaXMgYSBub3JtYWxpemVkIHBvd2VyIG9mIDIuCi0g
ICAgICAgICAqLworICAgIC8qIENvbXB1dGUgbWxvIC0tIGNoZWNrIGZvciBzcGVjaWFsIGNhc2UK
KyAgICAgKiB0aGF0IGQgaXMgYSBub3JtYWxpemVkIHBvd2VyIG9mIDIuCisgICAgICovCisKKyAg
ICBtbG8gPSBtaGk7CisgICAgaWYgKHNwZWNfY2FzZSkKKyAgICAgICAgbHNoaWZ0KG1oaSwgTG9n
MlApOwogCi0gICAgICAgIG1sbyA9IG1oaTsKLSAgICAgICAgaWYgKHNwZWNfY2FzZSkKLSAgICAg
ICAgICAgIGxzaGlmdChtaGksIExvZzJQKTsKLQotICAgICAgICBmb3IgKGkgPSAxOztpKyspIHsK
LSAgICAgICAgICAgIGRpZyA9IHF1b3JlbShiLCBTKSArICcwJzsKLSAgICAgICAgICAgIC8qIERv
IHdlIHlldCBoYXZlIHRoZSBzaG9ydGVzdCBkZWNpbWFsIHN0cmluZwotICAgICAgICAgICAgICog
dGhhdCB3aWxsIHJvdW5kIHRvIGQ/Ci0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGogPSBj
bXAoYiwgbWxvKTsKLSAgICAgICAgICAgIGRpZmYoZGVsdGEsIFMsIG1oaSk7Ci0gICAgICAgICAg
ICBqMSA9IGRlbHRhLnNpZ24gPyAxIDogY21wKGIsIGRlbHRhKTsKKyAgICBmb3IgKGkgPSAxOztp
KyspIHsKKyAgICAgICAgZGlnID0gcXVvcmVtKGIsIFMpICsgJzAnOworICAgICAgICAvKiBEbyB3
ZSB5ZXQgaGF2ZSB0aGUgc2hvcnRlc3QgZGVjaW1hbCBzdHJpbmcKKyAgICAgICAgICogdGhhdCB3
aWxsIHJvdW5kIHRvIGQ/CisgICAgICAgICAqLworICAgICAgICBqID0gY21wKGIsIG1sbyk7Cisg
ICAgICAgIGRpZmYoZGVsdGEsIFMsIG1oaSk7CisgICAgICAgIGoxID0gZGVsdGEuc2lnbiA/IDEg
OiBjbXAoYiwgZGVsdGEpOwogI2lmZGVmIERUT0FfUk9VTkRfQklBU0VECi0gICAgICAgICAgICBp
ZiAoaiA8IDAgfHwgIWopIHsKKyAgICAgICAgaWYgKGogPCAwIHx8ICFqKSB7CiAjZWxzZQotICAg
ICAgICAgICAgLy8gRklYTUU6IEVDTUEtMjYyIHNwZWNpZmllcyB0aGF0IGVxdWlkaXN0YW50IHJl
c3VsdHMgcm91bmQgYXdheSBmcm9tCi0gICAgICAgICAgICAvLyB6ZXJvLCB3aGljaCBwcm9iYWJs
eSBtZWFucyB3ZSBzaG91bGRuJ3QgYmUgb24gdGhlIHVuYmlhc2VkIGNvZGUgcGF0aAotICAgICAg
ICAgICAgLy8gKHRoZSAod29yZDEoJnUpICYgMSkgY2xhdXNlIGlzIGxvb2tpbmcgaGlnaGx5IHN1
c3BpY2lvdXMpLiBJIGhhdmVuJ3QKLSAgICAgICAgICAgIC8vIHlldCB1bmRlcnN0b29kIHRoaXMg
Y29kZSB3ZWxsIGVub3VnaCB0byBtYWtlIHRoZSBjYWxsLCBidXQgd2Ugc2hvdWxkCi0gICAgICAg
ICAgICAvLyBwcm9iYWJseSBiZSBlbmFibGluZyBEVE9BX1JPVU5EX0JJQVNFRC4gSSB0aGluayB0
aGUgaW50ZXJlc3RpbmcgY29ybmVyCi0gICAgICAgICAgICAvLyBjYXNlIHRvIHVuZGVyc3RhbmQg
aXMgcHJvYmFibHkgIk1hdGgucG93KDAuNSwgMjQpLnRvU3RyaW5nKCkiLgotICAgICAgICAgICAg
Ly8gSSBiZWxpZXZlIHRoaXMgdmFsdWUgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBJIHRoaW5rIGl0
IGlzIHByZWNpc2VseQotICAgICAgICAgICAgLy8gcmVwcmVzZW50YWJsZSBpbiBiaW5hcnkgZmxv
YXRpbmcgcG9pbnQsIGFuZCBpdHMgZGVjaW1hbCByZXByZXNlbnRhdGlvbgotICAgICAgICAgICAg
Ly8gaGFzIGEgc2luZ2xlIGRpZ2l0IHRoYXQgU3RlZWxlICYgV2hpdGUgcmVkdWN0aW9uIGNhbiBy
ZW1vdmUsIHdpdGggdGhlCi0gICAgICAgICAgICAvLyB2YWx1ZSA1ICh0aHVzIGVxdWlkaXN0YW50
IGZyb20gdGhlIG5leHQgbnVtYmVycyBhYm92ZSBhbmQgYmVsb3cpLgotICAgICAgICAgICAgLy8g
V2UgcHJvZHVjZSB0aGUgY29ycmVjdCBhbnN3ZXIgdXNpbmcgZWl0aGVyIGNvZGVwYXRoLCBhbmQg
SSBkb24ndCBhcwotICAgICAgICAgICAgLy8geWV0IHVuZGVyc3RhbmQgd2h5LiA6LSkKLSAgICAg
ICAgICAgIGlmICghajEgJiYgISh3b3JkMSgmdSkgJiAxKSkgewotICAgICAgICAgICAgICAgIGlm
IChkaWcgPT0gJzknKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHJvdW5kOXVwOwotICAgICAg
ICAgICAgICAgIGlmIChqID4gMCkKLSAgICAgICAgICAgICAgICAgICAgZGlnKys7Ci0gICAgICAg
ICAgICAgICAgKnMrKyA9IGRpZzsKLSAgICAgICAgICAgICAgICBnb3RvIHJldDsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmIChqIDwgMCB8fCAoIWogJiYgISh3b3JkMSgmdSkgJiAxKSkp
IHsKKyAgICAgICAgLy8gRklYTUU6IEVDTUEtMjYyIHNwZWNpZmllcyB0aGF0IGVxdWlkaXN0YW50
IHJlc3VsdHMgcm91bmQgYXdheSBmcm9tCisgICAgICAgIC8vIHplcm8sIHdoaWNoIHByb2JhYmx5
IG1lYW5zIHdlIHNob3VsZG4ndCBiZSBvbiB0aGUgdW5iaWFzZWQgY29kZSBwYXRoCisgICAgICAg
IC8vICh0aGUgKHdvcmQxKCZ1KSAmIDEpIGNsYXVzZSBpcyBsb29raW5nIGhpZ2hseSBzdXNwaWNp
b3VzKS4gSSBoYXZlbid0CisgICAgICAgIC8vIHlldCB1bmRlcnN0b29kIHRoaXMgY29kZSB3ZWxs
IGVub3VnaCB0byBtYWtlIHRoZSBjYWxsLCBidXQgd2Ugc2hvdWxkCisgICAgICAgIC8vIHByb2Jh
Ymx5IGJlIGVuYWJsaW5nIERUT0FfUk9VTkRfQklBU0VELiBJIHRoaW5rIHRoZSBpbnRlcmVzdGlu
ZyBjb3JuZXIKKyAgICAgICAgLy8gY2FzZSB0byB1bmRlcnN0YW5kIGlzIHByb2JhYmx5ICJNYXRo
LnBvdygwLjUsIDI0KS50b1N0cmluZygpIi4KKyAgICAgICAgLy8gSSBiZWxpZXZlIHRoaXMgdmFs
dWUgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBJIHRoaW5rIGl0IGlzIHByZWNpc2VseQorICAgICAg
ICAvLyByZXByZXNlbnRhYmxlIGluIGJpbmFyeSBmbG9hdGluZyBwb2ludCwgYW5kIGl0cyBkZWNp
bWFsIHJlcHJlc2VudGF0aW9uCisgICAgICAgIC8vIGhhcyBhIHNpbmdsZSBkaWdpdCB0aGF0IFN0
ZWVsZSAmIFdoaXRlIHJlZHVjdGlvbiBjYW4gcmVtb3ZlLCB3aXRoIHRoZQorICAgICAgICAvLyB2
YWx1ZSA1ICh0aHVzIGVxdWlkaXN0YW50IGZyb20gdGhlIG5leHQgbnVtYmVycyBhYm92ZSBhbmQg
YmVsb3cpLgorICAgICAgICAvLyBXZSBwcm9kdWNlIHRoZSBjb3JyZWN0IGFuc3dlciB1c2luZyBl
aXRoZXIgY29kZXBhdGgsIGFuZCBJIGRvbid0IGFzCisgICAgICAgIC8vIHlldCB1bmRlcnN0YW5k
IHdoeS4gOi0pCisgICAgICAgIGlmICghajEgJiYgISh3b3JkMSgmdSkgJiAxKSkgeworICAgICAg
ICAgICAgaWYgKGRpZyA9PSAnOScpCisgICAgICAgICAgICAgICAgZ290byByb3VuZDl1cDsKKyAg
ICAgICAgICAgIGlmIChqID4gMCkKKyAgICAgICAgICAgICAgICBkaWcrKzsKKyAgICAgICAgICAg
ICpzKysgPSBkaWc7CisgICAgICAgICAgICBnb3RvIHJldDsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoaiA8IDAgfHwgKCFqICYmICEod29yZDEoJnUpICYgMSkpKSB7CiAjZW5kaWYKLSAgICAgICAg
ICAgICAgICBpZiAoKGIud29yZHMoKVswXSB8fCBiLnNpemUoKSA+IDEpICYmIChqMSA+IDApKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGxzaGlmdChiLCAxKTsKLSAgICAgICAgICAgICAgICAgICAg
ajEgPSBjbXAoYiwgUyk7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZvciBJRUVFLTc1NCByb3Vu
ZC10by1ldmVuLCB0aGlzIGNoZWNrIHNob3VsZCBiZSAoajEgPiAwIHx8ICghajEgJiYgKGRpZyAm
IDEpKSksCi0gICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBFQ01BLTI2MiBzcGVjaWZpZXMgdGhh
dCBlcXVpZGlzdGFudCB2YWx1ZXMgKGUuZy4gKC41KS50b0ZpeGVkKCkpIHNob3VsZAotICAgICAg
ICAgICAgICAgICAgICAvLyBiZSByb3VuZGVkIGF3YXkgZnJvbSB6ZXJvLgotICAgICAgICAgICAg
ICAgICAgICBpZiAoajEgPj0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpZyA9
PSAnOScpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byByb3VuZDl1cDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGRpZysrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICpzKysgPSBkaWc7Ci0gICAgICAgICAgICAgICAg
Z290byByZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoajEgPiAwKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGRpZyA9PSAnOScpIHsgLyogcG9zc2libGUgaWYgaSA9PSAxICovCi1y
b3VuZDl1cDoKLSAgICAgICAgICAgICAgICAgICAgKnMrKyA9ICc5JzsKLSAgICAgICAgICAgICAg
ICAgICAgZ290byByb3VuZG9mZjsKKyAgICAgICAgICAgIGlmICgoYi53b3JkcygpWzBdIHx8IGIu
c2l6ZSgpID4gMSkgJiYgKGoxID4gMCkpIHsKKyAgICAgICAgICAgICAgICBsc2hpZnQoYiwgMSk7
CisgICAgICAgICAgICAgICAgajEgPSBjbXAoYiwgUyk7CisgICAgICAgICAgICAgICAgLy8gRm9y
IElFRUUtNzU0IHJvdW5kLXRvLWV2ZW4sIHRoaXMgY2hlY2sgc2hvdWxkIGJlIChqMSA+IDAgfHwg
KCFqMSAmJiAoZGlnICYgMSkpKSwKKyAgICAgICAgICAgICAgICAvLyBidXQgRUNNQS0yNjIgc3Bl
Y2lmaWVzIHRoYXQgZXF1aWRpc3RhbnQgdmFsdWVzIChlLmcuICguNSkudG9GaXhlZCgpKSBzaG91
bGQKKyAgICAgICAgICAgICAgICAvLyBiZSByb3VuZGVkIGF3YXkgZnJvbSB6ZXJvLgorICAgICAg
ICAgICAgICAgIGlmIChqMSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChkaWcgPT0g
JzknKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byByb3VuZDl1cDsKKyAgICAgICAgICAg
ICAgICAgICAgZGlnKys7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICpzKysg
PSBkaWcgKyAxOwotICAgICAgICAgICAgICAgIGdvdG8gcmV0OwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgKnMrKyA9IGRpZzsKLSAgICAgICAgICAgIGlmIChpID09IGlsaW0pCi0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBtdWx0YWRkKGIsIDEwLCAwKTsKLSAgICAgICAg
ICAgIG11bHRhZGQobWxvLCAxMCwgMCk7Ci0gICAgICAgICAgICBtdWx0YWRkKG1oaSwgMTAsIDAp
OworICAgICAgICAgICAgZ290byByZXQ7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAg
ICBmb3IgKGkgPSAxOzsgaSsrKSB7Ci0gICAgICAgICAgICAqcysrID0gZGlnID0gcXVvcmVtKGIs
IFMpICsgJzAnOwotICAgICAgICAgICAgaWYgKCFiLndvcmRzKClbMF0gJiYgYi5zaXplKCkgPD0g
MSkKLSAgICAgICAgICAgICAgICBnb3RvIHJldDsKLSAgICAgICAgICAgIGlmIChpID49IGlsaW0p
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBtdWx0YWRkKGIsIDEwLCAwKTsK
KyAgICAgICAgaWYgKGoxID4gMCkgeworICAgICAgICAgICAgaWYgKGRpZyA9PSAnOScpIHsgLyog
cG9zc2libGUgaWYgaSA9PSAxICovCityb3VuZDl1cDoKKyAgICAgICAgICAgICAgICAqcysrID0g
JzknOworICAgICAgICAgICAgICAgIGdvdG8gcm91bmRvZmY7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAqcysrID0gZGlnICsgMTsKKyAgICAgICAgICAgIGdvdG8gcmV0OwogICAgICAgICB9
CisgICAgICAgICpzKysgPSBkaWc7CisgICAgICAgIGlmIChpID09IGlsaW0pCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgbXVsdGFkZChiLCAxMCwgMCk7CisgICAgICAgIG11bHRhZGQobWxv
LCAxMCwgMCk7CisgICAgICAgIG11bHRhZGQobWhpLCAxMCwgMCk7CiAgICAgfQogCiAgICAgLyog
Um91bmQgb2ZmIGxhc3QgZGlnaXQgKi8KQEAgLTEyMDAsMzkgKzExMjMsMjggQEAgb25lRGlnaXQ6
CiAgICAgaysrOwogICAgIGdvdG8gcmV0OwogcmV0OgotICAgIEFTU0VSVChzID4gcmVzdWx0KTsK
KyAgICBBU1NFUlQocyA+ICZyZXN1bHRbMF0pOwogICAgICpzID0gMDsKICAgICBleHBvbmVudE91
dCA9IGs7Ci0gICAgcHJlY2lzaW9uT3V0ID0gcyAtIHJlc3VsdDsKKyAgICBwcmVjaXNpb25PdXQg
PSBzIC0gJnJlc3VsdFswXTsKIH0KIAotdm9pZCBkdG9hKER0b2FCdWZmZXIgcmVzdWx0LCBkb3Vi
bGUgZGQsIGJvb2wmIHNpZ24sIGludCYgZXhwb25lbnQsIHVuc2lnbmVkJiBwcmVjaXNpb24pCitj
b25zdCBjaGFyKiBudW1iZXJUb1N0cmluZyhmbG9hdCBudW1iZXIsIE51bWJlclRvU3RyaW5nQnVm
ZmVyJiBidWZmZXIpCiB7Ci0gICAgLy8gZmxhZ3MgYXJlIHJvdW5kaW5nTm9uZSwgbGVmdHJpZ2h0
LgotICAgIGR0b2E8dHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlPihyZXN1bHQsIGRkLCAwLCBzaWdu
LCBleHBvbmVudCwgcHJlY2lzaW9uKTsKLX0KLQotdm9pZCBkdG9hUm91bmRTRihEdG9hQnVmZmVy
IHJlc3VsdCwgZG91YmxlIGRkLCBpbnQgbmRpZ2l0cywgYm9vbCYgc2lnbiwgaW50JiBleHBvbmVu
dCwgdW5zaWduZWQmIHByZWNpc2lvbikKLXsKLSAgICAvLyBmbGFnIGlzIHJvdW5kaW5nU2lnbmlm
aWNhbnRGaWd1cmVzLgotICAgIGR0b2E8ZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZT4ocmVzdWx0
LCBkZCwgbmRpZ2l0cywgc2lnbiwgZXhwb25lbnQsIHByZWNpc2lvbik7Ci19Ci0KLXZvaWQgZHRv
YVJvdW5kRFAoRHRvYUJ1ZmZlciByZXN1bHQsIGRvdWJsZSBkZCwgaW50IG5kaWdpdHMsIGJvb2wm
IHNpZ24sIGludCYgZXhwb25lbnQsIHVuc2lnbmVkJiBwcmVjaXNpb24pCi17Ci0gICAgLy8gZmxh
ZyBpcyByb3VuZGluZ0RlY2ltYWxQbGFjZXMuCi0gICAgZHRvYTxmYWxzZSwgZmFsc2UsIHRydWUs
IGZhbHNlPihyZXN1bHQsIGRkLCBuZGlnaXRzLCBzaWduLCBleHBvbmVudCwgcHJlY2lzaW9uKTsK
KyAgICBkb3VibGVfY29udmVyc2lvbjo6U3RyaW5nQnVpbGRlciBidWlsZGVyKCZidWZmZXJbMF0s
IHNpemVvZihidWZmZXIpKTsKKyAgICBkb3VibGVfY29udmVyc2lvbjo6RG91YmxlVG9TdHJpbmdD
b252ZXJ0ZXI6OkVjbWFTY3JpcHRDb252ZXJ0ZXIoKS5Ub1Nob3J0ZXN0U2luZ2xlKG51bWJlciwg
JmJ1aWxkZXIpOworICAgIHJldHVybiBidWlsZGVyLkZpbmFsaXplKCk7CiB9CiAKLWNvbnN0IGNo
YXIqIG51bWJlclRvU3RyaW5nKGRvdWJsZSBkLCBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXIp
Citjb25zdCBjaGFyKiBudW1iZXJUb1N0cmluZyhkb3VibGUgZCwgTnVtYmVyVG9TdHJpbmdCdWZm
ZXImIGJ1ZmZlcikKIHsKLSAgICBkb3VibGVfY29udmVyc2lvbjo6U3RyaW5nQnVpbGRlciBidWls
ZGVyKGJ1ZmZlciwgTnVtYmVyVG9TdHJpbmdCdWZmZXJMZW5ndGgpOworICAgIGRvdWJsZV9jb252
ZXJzaW9uOjpTdHJpbmdCdWlsZGVyIGJ1aWxkZXIoJmJ1ZmZlclswXSwgc2l6ZW9mKGJ1ZmZlcikp
OwogICAgIGF1dG8mIGNvbnZlcnRlciA9IGRvdWJsZV9jb252ZXJzaW9uOjpEb3VibGVUb1N0cmlu
Z0NvbnZlcnRlcjo6RWNtYVNjcmlwdENvbnZlcnRlcigpOwogICAgIGNvbnZlcnRlci5Ub1Nob3J0
ZXN0KGQsICZidWlsZGVyKTsKICAgICByZXR1cm4gYnVpbGRlci5GaW5hbGl6ZSgpOwogfQogCi1z
dGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIGZvcm1hdFN0cmluZ1RydW5jYXRpbmdUcmFpbGluZ1pl
cm9zSWZOZWVkZWQoTnVtYmVyVG9TdHJpbmdCdWZmZXIgYnVmZmVyLCBkb3VibGVfY29udmVyc2lv
bjo6U3RyaW5nQnVpbGRlciYgYnVpbGRlcikKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogZm9y
bWF0U3RyaW5nVHJ1bmNhdGluZ1RyYWlsaW5nWmVyb3NJZk5lZWRlZChOdW1iZXJUb1N0cmluZ0J1
ZmZlciYgYnVmZmVyLCBkb3VibGVfY29udmVyc2lvbjo6U3RyaW5nQnVpbGRlciYgYnVpbGRlcikK
IHsKICAgICBzaXplX3QgbGVuZ3RoID0gYnVpbGRlci5wb3NpdGlvbigpOwogICAgIHNpemVfdCBk
ZWNpbWFsUG9pbnRQb3NpdGlvbiA9IDA7CkBAIC0xMjcwLDE0ICsxMTgyLDE0IEBAIHN0YXRpYyBp
bmxpbmUgY29uc3QgY2hhciogZm9ybWF0U3RyaW5nVHJ1bmNhdGluZ1RyYWlsaW5nWmVyb3NJZk5l
ZWRlZChOdW1iZXJUb1N0CiAgICAgcmV0dXJuIGJ1aWxkZXIuRmluYWxpemUoKTsKIH0KIAotY29u
c3QgY2hhciogbnVtYmVyVG9GaXhlZFByZWNpc2lvblN0cmluZyhkb3VibGUgZCwgdW5zaWduZWQg
c2lnbmlmaWNhbnRGaWd1cmVzLCBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXIsIGJvb2wgdHJ1
bmNhdGVUcmFpbGluZ1plcm9zKQorY29uc3QgY2hhciogbnVtYmVyVG9GaXhlZFByZWNpc2lvblN0
cmluZyhkb3VibGUgZCwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBOdW1iZXJUb1N0cmlu
Z0J1ZmZlciYgYnVmZmVyLCBib29sIHRydW5jYXRlVHJhaWxpbmdaZXJvcykKIHsKICAgICAvLyBN
aW1pYyBzcHJpbnRmKCIlLltwcmVjaXNpb25dZyIsIC4uLiksIGJ1dCB1c2UgZHRvYXMgcm91bmRp
bmcgZmFjaWxpdGllcy4KICAgICAvLyAiZyI6IFNpZ25lZCB2YWx1ZSBwcmludGVkIGluIGYgb3Ig
ZSBmb3JtYXQsIHdoaWNoZXZlciBpcyBtb3JlIGNvbXBhY3QgZm9yIHRoZSBnaXZlbiB2YWx1ZSBh
bmQgcHJlY2lzaW9uLgogICAgIC8vIFRoZSBlIGZvcm1hdCBpcyB1c2VkIG9ubHkgd2hlbiB0aGUg
ZXhwb25lbnQgb2YgdGhlIHZhbHVlIGlzIGxlc3MgdGhhbiDigJM0IG9yIGdyZWF0ZXIgdGhhbiBv
ciBlcXVhbCB0byB0aGUKICAgICAvLyBwcmVjaXNpb24gYXJndW1lbnQuIFRyYWlsaW5nIHplcm9z
IGFyZSB0cnVuY2F0ZWQsIGFuZCB0aGUgZGVjaW1hbCBwb2ludCBhcHBlYXJzIG9ubHkgaWYgb25l
IG9yIG1vcmUgZGlnaXRzIGZvbGxvdyBpdC4KICAgICAvLyAicHJlY2lzaW9uIjogVGhlIHByZWNp
c2lvbiBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cyBw
cmludGVkLgotICAgIGRvdWJsZV9jb252ZXJzaW9uOjpTdHJpbmdCdWlsZGVyIGJ1aWxkZXIoYnVm
ZmVyLCBOdW1iZXJUb1N0cmluZ0J1ZmZlckxlbmd0aCk7CisgICAgZG91YmxlX2NvbnZlcnNpb246
OlN0cmluZ0J1aWxkZXIgYnVpbGRlcigmYnVmZmVyWzBdLCBzaXplb2YoYnVmZmVyKSk7CiAgICAg
YXV0byYgY29udmVydGVyID0gZG91YmxlX2NvbnZlcnNpb246OkRvdWJsZVRvU3RyaW5nQ29udmVy
dGVyOjpFY21hU2NyaXB0Q29udmVydGVyKCk7CiAgICAgY29udmVydGVyLlRvUHJlY2lzaW9uKGQs
IHNpZ25pZmljYW50RmlndXJlcywgJmJ1aWxkZXIpOwogICAgIGlmICghdHJ1bmNhdGVUcmFpbGlu
Z1plcm9zKQpAQCAtMTI4NSw3ICsxMTk3LDcgQEAgY29uc3QgY2hhciogbnVtYmVyVG9GaXhlZFBy
ZWNpc2lvblN0cmluZyhkb3VibGUgZCwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLAogICAg
IHJldHVybiBmb3JtYXRTdHJpbmdUcnVuY2F0aW5nVHJhaWxpbmdaZXJvc0lmTmVlZGVkKGJ1ZmZl
ciwgYnVpbGRlcik7CiB9CiAKLWNvbnN0IGNoYXIqIG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyhk
b3VibGUgZCwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcywgTnVtYmVyVG9TdHJpbmdCdWZmZXIgYnVm
ZmVyKQorY29uc3QgY2hhciogbnVtYmVyVG9GaXhlZFdpZHRoU3RyaW5nKGRvdWJsZSBkLCB1bnNp
Z25lZCBkZWNpbWFsUGxhY2VzLCBOdW1iZXJUb1N0cmluZ0J1ZmZlciYgYnVmZmVyKQogewogICAg
IC8vIE1pbWljIHNwcmludGYoIiUuW3ByZWNpc2lvbl1mIiwgLi4uKSwgYnV0IHVzZSBkdG9hcyBy
b3VuZGluZyBmYWNpbGl0aWVzLgogICAgIC8vICJmIjogU2lnbmVkIHZhbHVlIGhhdmluZyB0aGUg
Zm9ybSBbIOKAkyBdZGRkZC5kZGRkLCB3aGVyZSBkZGRkIGlzIG9uZSBvciBtb3JlIGRlY2ltYWwg
ZGlnaXRzLgpAQCAtMTI5NCw3ICsxMjA2LDcgQEAgY29uc3QgY2hhciogbnVtYmVyVG9GaXhlZFdp
ZHRoU3RyaW5nKGRvdWJsZSBkLCB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzLCBOdW1iZXJUb1MKICAg
ICAvLyAicHJlY2lzaW9uIjogVGhlIHByZWNpc2lvbiB2YWx1ZSBzcGVjaWZpZXMgdGhlIG51bWJl
ciBvZiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuCiAgICAgLy8gSWYgYSBkZWNpbWFs
IHBvaW50IGFwcGVhcnMsIGF0IGxlYXN0IG9uZSBkaWdpdCBhcHBlYXJzIGJlZm9yZSBpdC4KICAg
ICAvLyBUaGUgdmFsdWUgaXMgcm91bmRlZCB0byB0aGUgYXBwcm9wcmlhdGUgbnVtYmVyIG9mIGRp
Z2l0cy4gICAgCi0gICAgZG91YmxlX2NvbnZlcnNpb246OlN0cmluZ0J1aWxkZXIgYnVpbGRlcihi
dWZmZXIsIE51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoKTsKKyAgICBkb3VibGVfY29udmVyc2lv
bjo6U3RyaW5nQnVpbGRlciBidWlsZGVyKCZidWZmZXJbMF0sIHNpemVvZihidWZmZXIpKTsKICAg
ICBhdXRvJiBjb252ZXJ0ZXIgPSBkb3VibGVfY29udmVyc2lvbjo6RG91YmxlVG9TdHJpbmdDb252
ZXJ0ZXI6OkVjbWFTY3JpcHRDb252ZXJ0ZXIoKTsKICAgICBjb252ZXJ0ZXIuVG9GaXhlZChkLCBk
ZWNpbWFsUGxhY2VzLCAmYnVpbGRlcik7CiAgICAgcmV0dXJuIGJ1aWxkZXIuRmluYWxpemUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2R0b2EuaCBiL1NvdXJjZS9XVEYvd3RmL2R0b2Eu
aAppbmRleCA1ZjRmYWRiZjMxODAwYjczOWNhNWU4ZDFhYTIzMzAyMmUyODc4MTNhLi5kMzgyODlk
Y2UzZGNhZWE5ZjliYTQ0NzA0ZTMwOWVjZGQwYjlhNTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9kdG9hLmgKKysrIGIvU291cmNlL1dURi93dGYvZHRvYS5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMCwyNyArMjAsMjcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgorI2luY2x1
ZGUgPGFycmF5PgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL2R0
b2EvZG91YmxlLWNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CiAKIG5hbWVzcGFjZSBXVEYgewogCi10eXBlZGVmIGNoYXIgRHRvYUJ1ZmZlcls4MF07Cit1c2lu
ZyBEdG9hQnVmZmVyID0gc3RkOjphcnJheTxjaGFyLCA4MD47CiAKLVdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGR0b2EoRHRvYUJ1ZmZlciByZXN1bHQsIGRvdWJsZSBkZCwgYm9vbCYgc2lnbiwgaW50
JiBleHBvbmVudCwgdW5zaWduZWQmIHByZWNpc2lvbik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkdG9hUm91bmRTRihEdG9hQnVmZmVyIHJlc3VsdCwgZG91YmxlIGRkLCBpbnQgbmRpZ2l0cywg
Ym9vbCYgc2lnbiwgaW50JiBleHBvbmVudCwgdW5zaWduZWQmIHByZWNpc2lvbik7Ci1XVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkdG9hUm91bmREUChEdG9hQnVmZmVyIHJlc3VsdCwgZG91YmxlIGRk
LCBpbnQgbmRpZ2l0cywgYm9vbCYgc2lnbiwgaW50JiBleHBvbmVudCwgdW5zaWduZWQmIHByZWNp
c2lvbik7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdG9hKER0b2FCdWZmZXImIHJlc3VsdCwg
ZG91YmxlIGRkLCBib29sJiBzaWduLCBpbnQmIGV4cG9uZW50LCB1bnNpZ25lZCYgcHJlY2lzaW9u
KTsKIAotLy8gU2l6ZSA9IDgwIGZvciBzaXplb2YoRHRvYUJ1ZmZlcikgKyBzb21lIHNpZ24gYml0
cywgZGVjaW1hbCBwb2ludCwgJ2UnLCBleHBvbmVudCBkaWdpdHMuCi1jb25zdCB1bnNpZ25lZCBO
dW1iZXJUb1N0cmluZ0J1ZmZlckxlbmd0aCA9IDk2OwotdHlwZWRlZiBjaGFyIE51bWJlclRvU3Ry
aW5nQnVmZmVyW051bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoXTsKLXR5cGVkZWYgTENoYXIgTnVt
YmVyVG9MU3RyaW5nQnVmZmVyW051bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoXTsKK2NvbnN0ZXhw
ciB1bnNpZ25lZCBOdW1iZXJUb1N0cmluZ0J1ZmZlckxlbmd0aCA9IDk2OwordXNpbmcgTnVtYmVy
VG9TdHJpbmdCdWZmZXIgPSBzdGQ6OmFycmF5PGNoYXIsIE51bWJlclRvU3RyaW5nQnVmZmVyTGVu
Z3RoPjsKIAotV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIG51bWJlclRvU3RyaW5nKGRv
dWJsZSwgTnVtYmVyVG9TdHJpbmdCdWZmZXIpOwotV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNo
YXIqIG51bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmcoZG91YmxlLCB1bnNpZ25lZCBzaWduaWZp
Y2FudEZpZ3VyZXMsIE51bWJlclRvU3RyaW5nQnVmZmVyLCBib29sIHRydW5jYXRlVHJhaWxpbmda
ZXJvcyA9IGZhbHNlKTsKLVdURl9FWFBPUlRfUFJJVkFURSBjb25zdCBjaGFyKiBudW1iZXJUb0Zp
eGVkV2lkdGhTdHJpbmcoZG91YmxlLCB1bnNpZ25lZCBkZWNpbWFsUGxhY2VzLCBOdW1iZXJUb1N0
cmluZ0J1ZmZlcik7CitXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogbnVtYmVyVG9TdHJp
bmcoZmxvYXQsIE51bWJlclRvU3RyaW5nQnVmZmVyJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgY29u
c3QgY2hhciogbnVtYmVyVG9GaXhlZFByZWNpc2lvblN0cmluZyhmbG9hdCwgdW5zaWduZWQgc2ln
bmlmaWNhbnRGaWd1cmVzLCBOdW1iZXJUb1N0cmluZ0J1ZmZlciYsIGJvb2wgdHJ1bmNhdGVUcmFp
bGluZ1plcm9zID0gZmFsc2UpOworV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIG51bWJl
clRvRml4ZWRXaWR0aFN0cmluZyhmbG9hdCwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcywgTnVtYmVy
VG9TdHJpbmdCdWZmZXImKTsKKworV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIG51bWJl
clRvU3RyaW5nKGRvdWJsZSwgTnVtYmVyVG9TdHJpbmdCdWZmZXImKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBjb25zdCBjaGFyKiBudW1iZXJUb0ZpeGVkUHJlY2lzaW9uU3RyaW5nKGRvdWJsZSwgdW5z
aWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBOdW1iZXJUb1N0cmluZ0J1ZmZlciYsIGJvb2wgdHJ1
bmNhdGVUcmFpbGluZ1plcm9zID0gZmFsc2UpOworV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNo
YXIqIG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyhkb3VibGUsIHVuc2lnbmVkIGRlY2ltYWxQbGFj
ZXMsIE51bWJlclRvU3RyaW5nQnVmZmVyJik7CiAKIGRvdWJsZSBwYXJzZURvdWJsZShjb25zdCBM
Q2hhciogc3RyaW5nLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QmIHBhcnNlZExlbmd0aCk7CiBkb3Vi
bGUgcGFyc2VEb3VibGUoY29uc3QgVUNoYXIqIHN0cmluZywgc2l6ZV90IGxlbmd0aCwgc2l6ZV90
JiBwYXJzZWRMZW5ndGgpOwpAQCAtNzIsMTEgKzcyLDEwIEBAIGlubGluZSBkb3VibGUgcGFyc2VE
b3VibGUoU3RyaW5nVmlldyBzdHJpbmcsIHNpemVfdCYgcGFyc2VkTGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gcGFyc2VEb3VibGUoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSwg
cGFyc2VkTGVuZ3RoKTsKICAgICByZXR1cm4gcGFyc2VEb3VibGUoc3RyaW5nLmNoYXJhY3RlcnMx
NigpLCBzdHJpbmcubGVuZ3RoKCksIHBhcnNlZExlbmd0aCk7CiB9Ci0gICAgCisKIH0gLy8gbmFt
ZXNwYWNlIFdURgogCiB1c2luZyBXVEY6Ok51bWJlclRvU3RyaW5nQnVmZmVyOwotdXNpbmcgV1RG
OjpOdW1iZXJUb0xTdHJpbmdCdWZmZXI7CiB1c2luZyBXVEY6Om51bWJlclRvU3RyaW5nOwogdXNp
bmcgV1RGOjpudW1iZXJUb0ZpeGVkUHJlY2lzaW9uU3RyaW5nOwogdXNpbmcgV1RGOjpudW1iZXJU
b0ZpeGVkV2lkdGhTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlTnVtYmVycy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRl
bmF0ZU51bWJlcnMuaAppbmRleCA2ZjRlZjg5YTc4N2IwOTcyNTg4MjNhMWUzNjc2MDY5NmEzNTYy
OTI5Li5hODBmYTNjNTEwMzZhZDhhOGFkYTU4OTA5NWFhNDM3ZGZiNDg2Njk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmgKQEAgLTY5LDcgKzY5
LDcgQEAgcHVibGljOgogICAgIFN0cmluZ1R5cGVBZGFwdGVyKEZsb2F0aW5nUG9pbnQgbnVtYmVy
KQogICAgIHsKICAgICAgICAgbnVtYmVyVG9TdHJpbmcobnVtYmVyLCBtX2J1ZmZlcik7Ci0gICAg
ICAgIG1fbGVuZ3RoID0gc3RkOjpzdHJsZW4obV9idWZmZXIpOworICAgICAgICBtX2xlbmd0aCA9
IHN0ZDo6c3RybGVuKCZtX2J1ZmZlclswXSk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3JpdGVUbyhDaGFyYWN0
ZXJUeXBlKiBkZXN0aW5hdGlvbikgY29uc3QgeyBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhk
ZXN0aW5hdGlvbiwgYnVmZmVyKCksIG1fbGVuZ3RoKTsgfQogCiBwcml2YXRlOgotICAgIGNvbnN0
IExDaGFyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4obV9idWZmZXIpOyB9CisgICAgY29uc3QgTENoYXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigmbV9idWZmZXJbMF0pOyB9CiAKICAg
ICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBtX2J1ZmZlcjsKICAgICB1bnNpZ25lZCBtX2xlbmd0aDsK
QEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgRm9ybWF0dGVkTnVtYmVy
IG51bWJlckZvcm1hdHRlcjsKICAgICAgICAgbnVtYmVyVG9GaXhlZFByZWNpc2lvblN0cmluZyhu
dW1iZXIsIHNpZ25pZmljYW50RmlndXJlcywgbnVtYmVyRm9ybWF0dGVyLm1fYnVmZmVyLCB0cmFp
bGluZ1plcm9zVHJ1bmNhdGluZ1BvbGljeSA9PSBUcnVuY2F0ZVRyYWlsaW5nWmVyb3MpOwotICAg
ICAgICBudW1iZXJGb3JtYXR0ZXIubV9sZW5ndGggPSBzdGQ6OnN0cmxlbihudW1iZXJGb3JtYXR0
ZXIubV9idWZmZXIpOworICAgICAgICBudW1iZXJGb3JtYXR0ZXIubV9sZW5ndGggPSBzdGQ6OnN0
cmxlbigmbnVtYmVyRm9ybWF0dGVyLm1fYnVmZmVyWzBdKTsKICAgICAgICAgcmV0dXJuIG51bWJl
ckZvcm1hdHRlcjsKICAgICB9CiAKQEAgLTk3LDEyICs5NywxMiBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICBGb3JtYXR0ZWROdW1iZXIgbnVtYmVyRm9ybWF0dGVyOwogICAgICAgICBudW1iZXJU
b0ZpeGVkV2lkdGhTdHJpbmcobnVtYmVyLCBkZWNpbWFsUGxhY2VzLCBudW1iZXJGb3JtYXR0ZXIu
bV9idWZmZXIpOwotICAgICAgICBudW1iZXJGb3JtYXR0ZXIubV9sZW5ndGggPSBzdGQ6OnN0cmxl
bihudW1iZXJGb3JtYXR0ZXIubV9idWZmZXIpOworICAgICAgICBudW1iZXJGb3JtYXR0ZXIubV9s
ZW5ndGggPSBzdGQ6OnN0cmxlbigmbnVtYmVyRm9ybWF0dGVyLm1fYnVmZmVyWzBdKTsKICAgICAg
ICAgcmV0dXJuIG51bWJlckZvcm1hdHRlcjsKICAgICB9CiAKICAgICB1bnNpZ25lZCBsZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQotICAgIGNvbnN0IExDaGFyKiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9idWZmZXIpOyB9
CisgICAgY29uc3QgTENoYXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigmbV9idWZmZXJbMF0pOyB9CiAKIHByaXZhdGU6CiAgICAgTnVtYmVy
VG9TdHJpbmdCdWZmZXIgbV9idWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvci5jcHAKaW5kZXggZWU3MjkzODgyOGM2MTk2M2I5NWJlNzAxZmZlMDY2NDIwMWQ5YTgx
My4uOTNhNDg5ZTEwNTFiY2ExYzVmOTNjNTFhYTYwNjM0ZjVlMDg0NzAzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lu
Y2x1ZGUgIkFuaW1hdGlvblV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkhhc2hUb29scy5oIgogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL0RlY2ltYWxOdW1iZXIuaD4K
ICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3Bw
CmluZGV4IDUxZjc3ODZhNzJhNWY4MTE3N2ZhN2MyYzdmOTM0NjA2MWM4MDcwMjkuLjllM2I4YmJm
MTAyNDg4NmVjZTA1M2E1YWJmNTJjMzU5NmZiOTgwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3Bw
CkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5n
S2V5cy5oPgotI2luY2x1ZGUgPHd0Zi9EZWNpbWFsTnVtYmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363411</attachid>
            <date>2019-03-01 21:48:35 -0800</date>
            <delta_ts>2019-03-02 09:04:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195142-20190301214835.patch</filename>
            <type>text/plain</type>
            <size>32550</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE5NzgzODdjMzNmY2JmNTBjZjM1M2Qx
MDlhNGJkNWY2MWEzNmExMGQuLmI2NjdmODcxN2Q3NTI1ZDNlOWE4MDg0OWIyMjcxOTljMmZhNTE0
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTktMDItMjcgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIEZpeGVkIG1ha2VTdHJpbmcoZmxvYXQpIHRvIGRvIHNob3J0
ZXN0LWZvcm0gc2VyaWFsaXphdGlvbiB3aXRob3V0IGZpcnN0IGNvbnZlcnRpbmcgdG8gZG91Ymxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUxNDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9E
ZWNpbWFsTnVtYmVyLmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKworICAgICAgICAq
IHd0Zi9EZWNpbWFsTnVtYmVyLmg6IFJlbW92ZWQgdW51c2VkIGNvbnN0cnVjdG9yczsgb3ZlciB0
aW1lIHdlIHdpbGwgYmUKKyAgICAgICAgZGVwcmVjYXRpbmcgRGVjaW1hbE51bWJlciwgc28gd2Ug
c2hvdWxkIHJlbW92ZWQgdGhlIHVudXNlZCBwYXJ0cy4gQWxzbworICAgICAgICBtYXJrZWQgdGhl
IGNvbnN0cnVjdG9yIGV4cGxpY2l0LCByZW1vdmVkIHR5cGVzIHVzZWQgb25seSBmaXIgYXJndW1l
bnRzIGZvcgorICAgICAgICB0aGUgY29uc3RydWN0b3JzLCBhbmQgcmVtb3ZlZCB0aGUgc2lnbiwg
ZXhwb25lbnQsIHNpZ25pZmljYW5kLCBhbmQgcHJlY2lzaW9uCisgICAgICAgIG1lbWJlciBmdW5j
dGlvbnMuCisKKyAgICAgICAgKiB3dGYvSlNPTlZhbHVlcy5jcHA6CisgICAgICAgIChXVEY6OkpT
T05JbXBsOjpWYWx1ZTo6d3JpdGVKU09OIGNvbnN0KTogVXBkYXRlZCBmb3IgY2hhbmdlcyB0byBE
ZWNpbWFsTnVtYmVyCisgICAgICAgIHN3aXRjaGVkIGZyb20gTnVtYmVyVG9MU3RyaW5nQnVmZmVy
IHRvIE51bWJlclRvU3RyaW5nQnVmZmVyLCBhbmQgZm9yIHVzZSBvZgorICAgICAgICBzdGQ6OmFy
cmF5IGluc3RlYWQgb2YgQyBhcnJheXMuCisKKyAgICAgICAgKiB3dGYvZHRvYS5jcHA6IFJlbW92
ZWQgdW51c2VkIGR0b2FSb3VuZFNGIGFuZCBkdG9hUm91bmREUCBmdW5jdGlvbnMuCisgICAgICAg
IChXVEY6OmR0b2EpOiBVcGRhdGVkIHRvIHVzZSBzdGQ6OmFycmF5IGluc3RlYWQgb2YgQyBhcnJh
eXMuCisgICAgICAgIChXVEY6OmR0b2FSb3VuZFNGKTogUmVtb3ZlZC4KKyAgICAgICAgKFdURjo6
ZHRvYVJvdW5kRFApOiBSZW1vdmVkLgorICAgICAgICAoV1RGOjpudW1iZXJUb1N0cmluZyk6IEFk
ZGVkIGFuIG92ZXJsb2FkIGZvciBmbG9hdCBhbmQgdXBkYXRlZCB0byB1c2Ugc3RkOjphcnJheS4K
KyAgICAgICAgKFdURjo6Zm9ybWF0U3RyaW5nVHJ1bmNhdGluZ1RyYWlsaW5nWmVyb3NJZk5lZWRl
ZCk6IFVwZGF0ZWQgdG8gdXNlIHN0ZDo6YXJyYXkuCisgICAgICAgIChXVEY6Om51bWJlclRvRml4
ZWRQcmVjaXNpb25TdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdURjo6bnVtYmVyVG9GaXhlZFdp
ZHRoU3RyaW5nKTogRGl0dG8uCisKKyAgICAgICAgKiB3dGYvZHRvYS5oOiBDaGFuZ2VkIGFycmF5
cyB0byBiZSBzdGQ6OmFycmF5IGluc3RlYWQgb2YgQyBhcnJheXMgc28gdGhlCisgICAgICAgIGFy
cmF5IHR5cGVzIHdpbGwgYmUgY2hlY2tlZC4gUmVtb3ZlZCBkdG9hUm91bmRTRiBhbmQgZHRvYVJv
dW5kRFAuCisgICAgICAgIEFkZGVkIGZsb2F0IG92ZXJsb2FkcyBmb3IgbnVtYmVyVG9TdHJpbmcs
IG51bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmcsCisgICAgICAgIGFuZCBudW1iZXJUb0ZpeGVk
V2lkdGhTdHJpbmcuIFRoZSBvbmx5IG9uZSBvZiB0aGVzZSB0aGF0IGlzIGNhbGxlZCBhdCB0aGlz
CisgICAgICAgIHRpbWUgaXMgbnVtYmVyVG9TdHJpbmcsIGNhbGxlZCBieSB0aGUgZmxvYXRpbmcg
cG9pbnQgU3RyaW5nVHlwZUFkYXB0ZXIgaW4KKyAgICAgICAgU3RyaW5nQ29uY2F0ZW5hdGVOdW1t
YmVycy5oLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg6
IFVwZGF0ZWQgZm9yIHN0ZDo6YXJyYXkuCisKIDIwMTktMDMtMDEgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpbmlzaCByZW1vdmluZyBTdHJpbmc6OmZvcm1hdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDQ0YzE0Y2I1ZjU3MzlkNWI5MjlmZjI0YjA2MDY4MTY0YzViNjgzZDcuLmE2
YzRkNjExZDBhNzRjZGYwYjg1ZWZkNWZjZmU0ZWE3ZGZmZTkyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxOS0wMi0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgRml4ZWQgbWFrZVN0cmluZyhmbG9hdCkgdG8gZG8gc2hvcnRlc3QtZm9ybSBzZXJp
YWxpemF0aW9uIHdpdGhvdXQgZmlyc3QgY29udmVydGluZyB0byBkb3VibGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTE0MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgRGVjaW1hbE51bWJlci5oLgor
CiAyMDE5LTAzLTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBG
aW5pc2ggcmVtb3ZpbmcgU3RyaW5nOjpmb3JtYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTAzYTljODI2MTYxZjQ2
YTE0MTJkYzA3OGZiZDczY2ZmMzhlY2NiMi4uMGNhOTc2ZTBhZDgyZDljNTkzM2YwMTQ4OTZhMmJj
ODQyODQ5OTdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0wMi0yNyAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4ZWQgbWFrZVN0cmluZyhmbG9h
dCkgdG8gZG8gc2hvcnRlc3QtZm9ybSBzZXJpYWxpemF0aW9uIHdpdGhvdXQgZmlyc3QgY29udmVy
dGluZyB0byBkb3VibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTE0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwOiBS
ZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgRGVjaW1hbE51bWJlci5oLgorCiAyMDE5LTAzLTAx
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBGaW5pc2ggcmVtb3Zp
bmcgU3RyaW5nOjpmb3JtYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RlY2ltYWxOdW1i
ZXIuY3BwIGIvU291cmNlL1dURi93dGYvRGVjaW1hbE51bWJlci5jcHAKaW5kZXggZDk2NjdiMzgy
ZWQ3NzZhNDRmODA1MzJmYTExNjc4MjFhMjQ3NmVhNy4uYzcyMmNlNTQwNjRkNjk4MjMzZDBkYzE3
ZTZjZTYzZWNmZTkxYWMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGVjaW1hbE51bWJl
ci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRGVjaW1hbE51bWJlci5jcHAKQEAgLTI2LDkgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3dGYvRGVjaW1hbE51bWJlci5o
PgogCi0jaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9EZWNpbWFsTnVtYmVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9EZWNp
bWFsTnVtYmVyLmgKaW5kZXggZDVjZjM0MDllZmY5NzViZDFhOTE1MGJmMTdjOWYxYmRjMTVmMmMz
ZS4uYWM0ZWZmNzUzNTFjOGMxYmFlNDM4YTE4YTVjYjRjZDQ1ODBhZDJhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRGVjaW1hbE51bWJlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RlY2lt
YWxOdW1iZXIuaApAQCAtMjUsMTkgKzI1LDE0IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSA8bWF0aC5oPgorI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+Ci0jaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdURiB7CiAKLWVudW0gUm91bmRpbmdTaWduaWZpY2FudEZpZ3VyZXNUeXBl
IHsgUm91bmRpbmdTaWduaWZpY2FudEZpZ3VyZXMgfTsKLWVudW0gUm91bmRpbmdEZWNpbWFsUGxh
Y2VzVHlwZSB7IFJvdW5kaW5nRGVjaW1hbFBsYWNlcyB9OwotCiBjbGFzcyBEZWNpbWFsTnVtYmVy
IHsKIHB1YmxpYzoKLSAgICBEZWNpbWFsTnVtYmVyKGRvdWJsZSBkKQorICAgIGV4cGxpY2l0IERl
Y2ltYWxOdW1iZXIoZG91YmxlIGQpCiAgICAgewogICAgICAgICBBU1NFUlQoc3RkOjppc2Zpbml0
ZShkKSk7CiAgICAgICAgIGR0b2EobV9zaWduaWZpY2FuZCwgZCwgbV9zaWduLCBtX2V4cG9uZW50
LCBtX3ByZWNpc2lvbik7CkBAIC01MSw0NiArNDYsMTIgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQobV9zaWduaWZpY2FuZFswXSA9PSAnMCcgfHwgbV9zaWduaWZpY2FuZFttX3ByZWNpc2lvbiAt
IDFdICE9ICcwJyk7CiAgICAgfQogCi0gICAgRGVjaW1hbE51bWJlcihkb3VibGUgZCwgUm91bmRp
bmdTaWduaWZpY2FudEZpZ3VyZXNUeXBlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMpCi0g
ICAgewotICAgICAgICBBU1NFUlQoc3RkOjppc2Zpbml0ZShkKSk7Ci0gICAgICAgIGR0b2FSb3Vu
ZFNGKG1fc2lnbmlmaWNhbmQsIGQsIHNpZ25pZmljYW50RmlndXJlcywgbV9zaWduLCBtX2V4cG9u
ZW50LCBtX3ByZWNpc2lvbik7Ci0KLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oc2lnbmlmaWNhbnRGaWd1cmVzICYmIHNpZ25pZmljYW50RmlndXJlcyA8PSBzaXplb2Yo
RHRvYUJ1ZmZlcikpOwotICAgICAgICB3aGlsZSAobV9wcmVjaXNpb24gPCBzaWduaWZpY2FudEZp
Z3VyZXMpCi0gICAgICAgICAgICBtX3NpZ25pZmljYW5kW21fcHJlY2lzaW9uKytdID0gJzAnOwot
Ci0gICAgICAgIEFTU0VSVChtX3ByZWNpc2lvbik7Ci0gICAgICAgIC8vIFplcm8gc2hvdWxkIGFs
d2F5cyBoYXZlIGV4cG9uZW50IDAuCi0gICAgICAgIEFTU0VSVChtX3NpZ25pZmljYW5kWzBdICE9
ICcwJyB8fCAhbV9leHBvbmVudCk7Ci0gICAgfQotCi0gICAgRGVjaW1hbE51bWJlcihkb3VibGUg
ZCwgUm91bmRpbmdEZWNpbWFsUGxhY2VzVHlwZSwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcykKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChzdGQ6OmlzZmluaXRlKGQpKTsKLSAgICAgICAgZHRvYVJvdW5k
RFAobV9zaWduaWZpY2FuZCwgZCwgZGVjaW1hbFBsYWNlcywgbV9zaWduLCBtX2V4cG9uZW50LCBt
X3ByZWNpc2lvbik7Ci0KLSAgICAgICAgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzID0gMSAr
IG1fZXhwb25lbnQgKyBkZWNpbWFsUGxhY2VzOwotICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihzaWduaWZpY2FudEZpZ3VyZXMgJiYgc2lnbmlmaWNhbnRGaWd1cmVzIDw9
IHNpemVvZihEdG9hQnVmZmVyKSk7Ci0gICAgICAgIHdoaWxlIChtX3ByZWNpc2lvbiA8IHNpZ25p
ZmljYW50RmlndXJlcykKLSAgICAgICAgICAgIG1fc2lnbmlmaWNhbmRbbV9wcmVjaXNpb24rK10g
PSAnMCc7Ci0KLSAgICAgICAgQVNTRVJUKG1fcHJlY2lzaW9uKTsKLSAgICAgICAgLy8gWmVybyBz
aG91bGQgYWx3YXlzIGhhdmUgZXhwb25lbnQgMC4KLSAgICAgICAgQVNTRVJUKG1fc2lnbmlmaWNh
bmRbMF0gIT0gJzAnIHx8ICFtX2V4cG9uZW50KTsKLSAgICB9Ci0KICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdW5zaWduZWQgYnVmZmVyTGVuZ3RoRm9yU3RyaW5nRGVjaW1hbCgpIGNvbnN0OwogICAg
IFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCBidWZmZXJMZW5ndGhGb3JTdHJpbmdFeHBvbmVu
dGlhbCgpIGNvbnN0OwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIHRvU3RyaW5n
RGVjaW1hbChMQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgpIGNvbnN0OwogICAg
IFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCB0b1N0cmluZ0V4cG9uZW50aWFsKExDaGFyKiBi
dWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkgY29uc3Q7CiAKLSAgICBib29sIHNpZ24oKSBj
b25zdCB7IHJldHVybiBtX3NpZ247IH0KLSAgICBpbnQgZXhwb25lbnQoKSBjb25zdCB7IHJldHVy
biBtX2V4cG9uZW50OyB9Ci0gICAgY29uc3QgY2hhciogc2lnbmlmaWNhbmQoKSBjb25zdCB7IHJl
dHVybiBtX3NpZ25pZmljYW5kOyB9IC8vIHNpZ25pZmljYW5kIGNvbnRhaW5zIHByZWNpc2lvbiBj
aGFyYWN0ZXJzLCBpcyBub3QgbnVsbC10ZXJtaW5hdGVkLgotICAgIHVuc2lnbmVkIHByZWNpc2lv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcHJlY2lzaW9uOyB9Ci0KIHByaXZhdGU6CiAgICAgYm9vbCBt
X3NpZ247CiAgICAgaW50IG1fZXhwb25lbnQ7CkBAIC0xMDEsNSArNjIsMyBAQCBwcml2YXRlOgog
fSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6RGVjaW1hbE51bWJlcjsKLXVzaW5nIFdU
Rjo6Um91bmRpbmdTaWduaWZpY2FudEZpZ3VyZXM7Ci11c2luZyBXVEY6OlJvdW5kaW5nRGVjaW1h
bFBsYWNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuY3BwIGIvU291
cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAKaW5kZXggYzAyZmVlNTA2MTMwNDFiN2U3YmM3MGIx
YWFmMzJkMDI1NzFiYTAyYi4uYTBlZTEwMTdlODliMDI0Yjk3ZGUxMDc2N2VhYWFjN2M0NWNlYmQ4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvSlNPTlZhbHVlcy5jcHAKQEAgLTY3MywyNCArNjczLDI0IEBAIHZvaWQgVmFsdWU6
OndyaXRlSlNPTihTdHJpbmdCdWlsZGVyJiBvdXRwdXQpIGNvbnN0CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgVHlwZTo6RG91YmxlOgogICAgIGNhc2UgVHlwZTo6SW50ZWdlcjogewotICAgICAg
ICBOdW1iZXJUb0xTdHJpbmdCdWZmZXIgYnVmZmVyOwogICAgICAgICBpZiAoIXN0ZDo6aXNmaW5p
dGUobV92YWx1ZS5udW1iZXIpKSB7CiAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kTGl0ZXJhbCgi
bnVsbCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIERlY2ltYWxO
dW1iZXIgZGVjaW1hbCA9IG1fdmFsdWUubnVtYmVyOworICAgICAgICBEZWNpbWFsTnVtYmVyIGRl
Y2ltYWwgeyBtX3ZhbHVlLm51bWJlciB9OworICAgICAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBi
dWZmZXI7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgICAgIGlmIChkZWNpbWFs
LmJ1ZmZlckxlbmd0aEZvclN0cmluZ0RlY2ltYWwoKSA+IFdURjo6TnVtYmVyVG9TdHJpbmdCdWZm
ZXJMZW5ndGgpIHsKKyAgICAgICAgaWYgKGRlY2ltYWwuYnVmZmVyTGVuZ3RoRm9yU3RyaW5nRGVj
aW1hbCgpID4gc2l6ZW9mKGJ1ZmZlcikpIHsKICAgICAgICAgICAgIC8vIE5vdCBlbm91Z2ggcm9v
bSBmb3IgZGVjaW1hbC4gVXNlIGV4cG9uZW50aWFsIGZvcm1hdC4KLSAgICAgICAgICAgIGlmIChk
ZWNpbWFsLmJ1ZmZlckxlbmd0aEZvclN0cmluZ0V4cG9uZW50aWFsKCkgPiBXVEY6Ok51bWJlclRv
U3RyaW5nQnVmZmVyTGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAoZGVjaW1hbC5idWZmZXJMZW5n
dGhGb3JTdHJpbmdFeHBvbmVudGlhbCgpID4gc2l6ZW9mKGJ1ZmZlcikpIHsKICAgICAgICAgICAg
ICAgICAvLyBGYWxsYmFjayBmb3IgYW4gYWJub3JtYWwgY2FzZSBpZiBpdCdzIHRvbyBsaXR0bGUg
ZXZlbiBmb3IgZXhwb25lbnRpYWwuCiAgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZExpdGVy
YWwoIk5hTiIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGxlbmd0aCA9IGRlY2ltYWwudG9TdHJpbmdFeHBvbmVudGlhbChidWZmZXIsIFdURjo6
TnVtYmVyVG9TdHJpbmdCdWZmZXJMZW5ndGgpOworICAgICAgICAgICAgbGVuZ3RoID0gZGVjaW1h
bC50b1N0cmluZ0V4cG9uZW50aWFsKHJlaW50ZXJwcmV0X2Nhc3Q8TENoYXIqPigmYnVmZmVyWzBd
KSwgc2l6ZW9mKGJ1ZmZlcikpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGxlbmd0aCA9
IGRlY2ltYWwudG9TdHJpbmdEZWNpbWFsKGJ1ZmZlciwgV1RGOjpOdW1iZXJUb1N0cmluZ0J1ZmZl
ckxlbmd0aCk7Ci0gICAgICAgIG91dHB1dC5hcHBlbmQoYnVmZmVyLCBsZW5ndGgpOworICAgICAg
ICAgICAgbGVuZ3RoID0gZGVjaW1hbC50b1N0cmluZ0RlY2ltYWwocmVpbnRlcnByZXRfY2FzdDxM
Q2hhcio+KCZidWZmZXJbMF0pLCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgIG91dHB1dC5hcHBl
bmQoJmJ1ZmZlclswXSwgbGVuZ3RoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1
bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9kdG9hLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L2R0b2EuY3BwCmluZGV4IDY4MzMxNGZmZDRlOThhNWZkYzA4NTg2ZmM4Nzc4ODFiMmFiNmNhYmYu
LmY5MTA1MWVhMTUzMGFmYjcyMjNkZjFjNWU4YzY0YzI0NzVjNDExMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL2R0b2EuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2R0b2EuY3BwCkBAIC0z
LDcgKzMsNyBAQAogICogVGhlIGF1dGhvciBvZiB0aGlzIHNvZnR3YXJlIGlzIERhdmlkIE0uIEdh
eS4KICAqCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTEsIDIwMDAsIDIwMDEgYnkgTHVjZW50IFRlY2hu
b2xvZ2llcy4KLSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBh
bmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKICAqIHB1cnBvc2Ugd2l0aG91dCBm
ZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhpcyBlbnRpcmUgbm90aWNlCkBA
IC03MjgsMTcgKzcyOCw5IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGludCBxdW9yZW0oQmlnSW50
JiBiLCBCaWdJbnQmIFMpCiAgKiAgICAgICAidW5pZm9ybWx5IiBkaXN0cmlidXRlZCBpbnB1dCwg
dGhlIHByb2JhYmlsaXR5IGlzCiAgKiAgICAgICBzb21ldGhpbmcgbGlrZSAxMF4oay0xNSkgdGhh
dCB3ZSBtdXN0IHJlc29ydCB0byB0aGUgaW50MzJfdAogICogICAgICAgY2FsY3VsYXRpb24uCi0g
KgotICogTm90ZTogJ2xlZnRyaWdodCcgdHJhbnNsYXRlcyB0byAnZ2VuZXJhdGUgc2hvcnRlc3Qg
cG9zc2libGUgc3RyaW5nJy4KICAqLwotdGVtcGxhdGU8Ym9vbCByb3VuZGluZ05vbmUsIGJvb2wg
cm91bmRpbmdTaWduaWZpY2FudEZpZ3VyZXMsIGJvb2wgcm91bmRpbmdEZWNpbWFsUGxhY2VzLCBi
b29sIGxlZnRyaWdodD4KLXZvaWQgZHRvYShEdG9hQnVmZmVyIHJlc3VsdCwgZG91YmxlIGRkLCBp
bnQgbmRpZ2l0cywgYm9vbCYgc2lnbk91dCwgaW50JiBleHBvbmVudE91dCwgdW5zaWduZWQmIHBy
ZWNpc2lvbk91dCkKK3ZvaWQgZHRvYShEdG9hQnVmZmVyJiByZXN1bHQsIGRvdWJsZSBkZCwgYm9v
bCYgc2lnbk91dCwgaW50JiBleHBvbmVudE91dCwgdW5zaWduZWQmIHByZWNpc2lvbk91dCkKIHsK
LSAgICAvLyBFeGFjdGx5IG9uZSByb3VuZGluZyBtb2RlIG11c3QgYmUgc3BlY2lmaWVkLgotICAg
IEFTU0VSVChyb3VuZGluZ05vbmUgKyByb3VuZGluZ1NpZ25pZmljYW50RmlndXJlcyArIHJvdW5k
aW5nRGVjaW1hbFBsYWNlcyA9PSAxKTsKLSAgICAvLyByb3VuZGluZ05vbmUgb25seSBhbGxvd2Vk
IChvbmx5IHNlbnNpYmxlPykgd2l0aCBsZWZ0cmlnaHQgc2V0LgotICAgIEFTU0VSVCghcm91bmRp
bmdOb25lIHx8IGxlZnRyaWdodCk7Ci0KICAgICBBU1NFUlQoc3RkOjppc2Zpbml0ZShkZCkpOwog
CiAgICAgaW50IGJiaXRzLCBiMiwgYjUsIGJlLCBkaWcsIGksIGllcHMsIGlsaW0gPSAwLCBpbGlt
MCwgaWxpbTEgPSAwLApAQCAtODQzLDI1ICs4MzUsMTAgQEAgdm9pZCBkdG9hKER0b2FCdWZmZXIg
cmVzdWx0LCBkb3VibGUgZGQsIGludCBuZGlnaXRzLCBib29sJiBzaWduT3V0LCBpbnQmIGV4cG9u
ZW4KICAgICAgICAgczUgPSAwOwogICAgIH0KIAotICAgIGlmIChyb3VuZGluZ05vbmUpIHsKLSAg
ICAgICAgaWxpbSA9IGlsaW0xID0gLTE7Ci0gICAgICAgIGkgPSAxODsKLSAgICAgICAgbmRpZ2l0
cyA9IDA7Ci0gICAgfQotICAgIGlmIChyb3VuZGluZ1NpZ25pZmljYW50RmlndXJlcykgewotICAg
ICAgICBpZiAobmRpZ2l0cyA8PSAwKQotICAgICAgICAgICAgbmRpZ2l0cyA9IDE7Ci0gICAgICAg
IGlsaW0gPSBpbGltMSA9IGkgPSBuZGlnaXRzOwotICAgIH0KLSAgICBpZiAocm91bmRpbmdEZWNp
bWFsUGxhY2VzKSB7Ci0gICAgICAgIGkgPSBuZGlnaXRzICsgayArIDE7Ci0gICAgICAgIGlsaW0g
PSBpOwotICAgICAgICBpbGltMSA9IGkgLSAxOwotICAgICAgICBpZiAoaSA8PSAwKQotICAgICAg
ICAgICAgaSA9IDE7Ci0gICAgfQorICAgIGlsaW0gPSBpbGltMSA9IC0xOworICAgIGkgPSAxODsK
IAotICAgIHMgPSBzMCA9IHJlc3VsdDsKKyAgICBzID0gczAgPSAmcmVzdWx0WzBdOwogCiAgICAg
aWYgKGlsaW0gPj0gMCAmJiBpbGltIDw9IFF1aWNrX21heCkgewogICAgICAgICAvKiBUcnkgdG8g
Z2V0IGJ5IHdpdGggZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYy4gKi8KQEAgLTkxNiw0MyArODkz
LDIyIEBAIHZvaWQgZHRvYShEdG9hQnVmZmVyIHJlc3VsdCwgZG91YmxlIGRkLCBpbnQgbmRpZ2l0
cywgYm9vbCYgc2lnbk91dCwgaW50JiBleHBvbmVuCiAgICAgICAgICAgICAgICAgZ290byBub0Rp
Z2l0czsKICAgICAgICAgICAgIGdvdG8gZmFzdEZhaWxlZDsKICAgICAgICAgfQotICAgICAgICBp
ZiAobGVmdHJpZ2h0KSB7Ci0gICAgICAgICAgICAvKiBVc2UgU3RlZWxlICYgV2hpdGUgbWV0aG9k
IG9mIG9ubHkKLSAgICAgICAgICAgICAqIGdlbmVyYXRpbmcgZGlnaXRzIG5lZWRlZC4KLSAgICAg
ICAgICAgICAqLwotICAgICAgICAgICAgZHZhbCgmZXBzKSA9ICgwLjUgLyB0ZW5zW2lsaW0gLSAx
XSkgLSBkdmFsKCZlcHMpOwotICAgICAgICAgICAgZm9yIChpID0gMDs7KSB7Ci0gICAgICAgICAg
ICAgICAgTCA9IChsb25nIGludClkdmFsKCZ1KTsKLSAgICAgICAgICAgICAgICBkdmFsKCZ1KSAt
PSBMOwotICAgICAgICAgICAgICAgICpzKysgPSAnMCcgKyAoaW50KUw7Ci0gICAgICAgICAgICAg
ICAgaWYgKGR2YWwoJnUpIDwgZHZhbCgmZXBzKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBy
ZXQ7Ci0gICAgICAgICAgICAgICAgaWYgKDEuIC0gZHZhbCgmdSkgPCBkdmFsKCZlcHMpKQotICAg
ICAgICAgICAgICAgICAgICBnb3RvIGJ1bXBVcDsKLSAgICAgICAgICAgICAgICBpZiAoKytpID49
IGlsaW0pCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGR2YWwo
JmVwcykgKj0gMTAuOwotICAgICAgICAgICAgICAgIGR2YWwoJnUpICo9IDEwLjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIEdlbmVyYXRlIGlsaW0gZGln
aXRzLCB0aGVuIGZpeCB0aGVtIHVwLiAqLwotICAgICAgICAgICAgZHZhbCgmZXBzKSAqPSB0ZW5z
W2lsaW0gLSAxXTsKLSAgICAgICAgICAgIGZvciAoaSA9IDE7OyBpKyssIGR2YWwoJnUpICo9IDEw
LikgewotICAgICAgICAgICAgICAgIEwgPSAoaW50MzJfdCkoZHZhbCgmdSkpOwotICAgICAgICAg
ICAgICAgIGlmICghKGR2YWwoJnUpIC09IEwpKQotICAgICAgICAgICAgICAgICAgICBpbGltID0g
aTsKLSAgICAgICAgICAgICAgICAqcysrID0gJzAnICsgKGludClMOwotICAgICAgICAgICAgICAg
IGlmIChpID09IGlsaW0pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGR2YWwoJnUpID4gMC41
ICsgZHZhbCgmZXBzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gYnVtcFVwOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoZHZhbCgmdSkgPCAwLjUgLSBkdmFsKCZlcHMpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKi0tcyA9PSAnMCcpIHsgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZXQ7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQorICAgICAgICAvKiBVc2UgU3RlZWxlICYgV2hpdGUgbWV0
aG9kIG9mIG9ubHkKKyAgICAgICAgICogZ2VuZXJhdGluZyBkaWdpdHMgbmVlZGVkLgorICAgICAg
ICAgKi8KKyAgICAgICAgZHZhbCgmZXBzKSA9ICgwLjUgLyB0ZW5zW2lsaW0gLSAxXSkgLSBkdmFs
KCZlcHMpOworICAgICAgICBmb3IgKGkgPSAwOzspIHsKKyAgICAgICAgICAgIEwgPSAobG9uZyBp
bnQpZHZhbCgmdSk7CisgICAgICAgICAgICBkdmFsKCZ1KSAtPSBMOworICAgICAgICAgICAgKnMr
KyA9ICcwJyArIChpbnQpTDsKKyAgICAgICAgICAgIGlmIChkdmFsKCZ1KSA8IGR2YWwoJmVwcykp
CisgICAgICAgICAgICAgICAgZ290byByZXQ7CisgICAgICAgICAgICBpZiAoMS4gLSBkdmFsKCZ1
KSA8IGR2YWwoJmVwcykpCisgICAgICAgICAgICAgICAgZ290byBidW1wVXA7CisgICAgICAgICAg
ICBpZiAoKytpID49IGlsaW0pCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBk
dmFsKCZlcHMpICo9IDEwLjsKKyAgICAgICAgICAgIGR2YWwoJnUpICo9IDEwLjsKICAgICAgICAg
fQogZmFzdEZhaWxlZDoKICAgICAgICAgcyA9IHMwOwpAQCAtOTY2LDEzICs5MjIsNiBAQCBmYXN0
RmFpbGVkOgogICAgIGlmIChiZSA+PSAwICYmIGsgPD0gSW50X21heCkgewogICAgICAgICAvKiBZ
ZXMuICovCiAgICAgICAgIGRzID0gdGVuc1trXTsKLSAgICAgICAgaWYgKG5kaWdpdHMgPCAwICYm
IGlsaW0gPD0gMCkgewotICAgICAgICAgICAgUy5jbGVhcigpOwotICAgICAgICAgICAgbWhpLmNs
ZWFyKCk7Ci0gICAgICAgICAgICBpZiAoaWxpbSA8IDAgfHwgZHZhbCgmdSkgPD0gNSAqIGRzKQot
ICAgICAgICAgICAgICAgIGdvdG8gbm9EaWdpdHM7Ci0gICAgICAgICAgICBnb3RvIG9uZURpZ2l0
OwotICAgICAgICB9CiAgICAgICAgIGZvciAoaSA9IDE7OyBpKyssIGR2YWwoJnUpICo9IDEwLikg
ewogICAgICAgICAgICAgTCA9IChpbnQzMl90KShkdmFsKCZ1KSAvIGRzKTsKICAgICAgICAgICAg
IGR2YWwoJnUpIC09IEwgKiBkczsKQEAgLTEwMDIsMTIgKzk1MSwxMCBAQCBidW1wVXA6CiAgICAg
bTUgPSBiNTsKICAgICBtaGkuY2xlYXIoKTsKICAgICBtbG8uY2xlYXIoKTsKLSAgICBpZiAobGVm
dHJpZ2h0KSB7Ci0gICAgICAgIGkgPSBkZW5vcm0gPyBiZSArIChCaWFzICsgKFAgLSAxKSAtIDEg
KyAxKSA6IDEgKyBQIC0gYmJpdHM7Ci0gICAgICAgIGIyICs9IGk7Ci0gICAgICAgIHMyICs9IGk7
Ci0gICAgICAgIGkyYihtaGksIDEpOwotICAgIH0KKyAgICBpID0gZGVub3JtID8gYmUgKyAoQmlh
cyArIChQIC0gMSkgLSAxICsgMSkgOiAxICsgUCAtIGJiaXRzOworICAgIGIyICs9IGk7CisgICAg
czIgKz0gaTsKKyAgICBpMmIobWhpLCAxKTsKICAgICBpZiAobTIgPiAwICYmIHMyID4gMCkgewog
ICAgICAgICBpID0gbTIgPCBzMiA/IG0yIDogczI7CiAgICAgICAgIGIyIC09IGk7CkBAIC0xMDE1
LDE1ICs5NjIsMTIgQEAgYnVtcFVwOgogICAgICAgICBzMiAtPSBpOwogICAgIH0KICAgICBpZiAo
YjUgPiAwKSB7Ci0gICAgICAgIGlmIChsZWZ0cmlnaHQpIHsKLSAgICAgICAgICAgIGlmIChtNSA+
IDApIHsKLSAgICAgICAgICAgICAgICBwb3c1bXVsdChtaGksIG01KTsKLSAgICAgICAgICAgICAg
ICBtdWx0KGIsIG1oaSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKGogPSBiNSAt
IG01KSkKLSAgICAgICAgICAgICAgICBwb3c1bXVsdChiLCBqKTsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBwb3c1bXVsdChiLCBiNSk7CisgICAgICAgIGlmIChtNSA+IDApIHsKKyAgICAg
ICAgICAgIHBvdzVtdWx0KG1oaSwgbTUpOworICAgICAgICAgICAgbXVsdChiLCBtaGkpOworICAg
ICAgICB9CisgICAgICAgIGlmICgoaiA9IGI1IC0gbTUpKQorICAgICAgICAgICAgcG93NW11bHQo
Yiwgaik7CiAgICAgfQogICAgIGkyYihTLCAxKTsKICAgICBpZiAoczUgPiAwKQpAQCAtMTAzMiw3
ICs5NzYsNyBAQCBidW1wVXA6CiAgICAgLyogQ2hlY2sgZm9yIHNwZWNpYWwgY2FzZSB0aGF0IGQg
aXMgYSBub3JtYWxpemVkIHBvd2VyIG9mIDIuICovCiAKICAgICBzcGVjX2Nhc2UgPSAwOwotICAg
IGlmICgocm91bmRpbmdOb25lIHx8IGxlZnRyaWdodCkgJiYgKCF3b3JkMSgmdSkgJiYgISh3b3Jk
MCgmdSkgJiBCbmRyeV9tYXNrKSAmJiB3b3JkMCgmdSkgJiAoRXhwX21hc2sgJiB+RXhwX21zazEp
KSkgeworICAgIGlmICgoIXdvcmQxKCZ1KSAmJiAhKHdvcmQwKCZ1KSAmIEJuZHJ5X21hc2spICYm
IHdvcmQwKCZ1KSAmIChFeHBfbWFzayAmIH5FeHBfbXNrMSkpKSB7CiAgICAgICAgIC8qIFRoZSBz
cGVjaWFsIGNhc2UgKi8KICAgICAgICAgYjIgKz0gTG9nMlA7CiAgICAgICAgIHMyICs9IExvZzJQ
OwpAQCAtMTA2NywxMDUgKzEwMTEsODQgQEAgYnVtcFVwOgogICAgICAgICBpZiAoY21wKGIsIFMp
IDwgMCkgewogICAgICAgICAgICAgay0tOwogICAgICAgICAgICAgbXVsdGFkZChiLCAxMCwgMCk7
ICAgIC8qIHdlIGJvdGNoZWQgdGhlIGsgZXN0aW1hdGUgKi8KLSAgICAgICAgICAgIGlmIChsZWZ0
cmlnaHQpCi0gICAgICAgICAgICAgICAgbXVsdGFkZChtaGksIDEwLCAwKTsKKyAgICAgICAgICAg
IG11bHRhZGQobWhpLCAxMCwgMCk7CiAgICAgICAgICAgICBpbGltID0gaWxpbTE7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgaWYgKGlsaW0gPD0gMCAmJiByb3VuZGluZ0RlY2ltYWxQbGFjZXMpIHsK
LSAgICAgICAgaWYgKGlsaW0gPCAwKQotICAgICAgICAgICAgZ290byBub0RpZ2l0czsKLSAgICAg
ICAgbXVsdGFkZChTLCA1LCAwKTsKLSAgICAgICAgLy8gRm9yIElFRUUtNzU0IHVuYmlhc2VkIHJv
dW5kaW5nIHRoaXMgY2hlY2sgc2hvdWxkIGJlIDw9LCBzdWNoIHRoYXQgMC41IHdvdWxkIGZsdXNo
IHRvIHplcm8uCi0gICAgICAgIGlmIChjbXAoYiwgUykgPCAwKQotICAgICAgICAgICAgZ290byBu
b0RpZ2l0czsKLSAgICAgICAgZ290byBvbmVEaWdpdDsKLSAgICB9Ci0gICAgaWYgKGxlZnRyaWdo
dCkgewotICAgICAgICBpZiAobTIgPiAwKQotICAgICAgICAgICAgbHNoaWZ0KG1oaSwgbTIpOwor
ICAgIGlmIChtMiA+IDApCisgICAgICAgIGxzaGlmdChtaGksIG0yKTsKIAotICAgICAgICAvKiBD
b21wdXRlIG1sbyAtLSBjaGVjayBmb3Igc3BlY2lhbCBjYXNlCi0gICAgICAgICAqIHRoYXQgZCBp
cyBhIG5vcm1hbGl6ZWQgcG93ZXIgb2YgMi4KLSAgICAgICAgICovCisgICAgLyogQ29tcHV0ZSBt
bG8gLS0gY2hlY2sgZm9yIHNwZWNpYWwgY2FzZQorICAgICAqIHRoYXQgZCBpcyBhIG5vcm1hbGl6
ZWQgcG93ZXIgb2YgMi4KKyAgICAgKi8KKworICAgIG1sbyA9IG1oaTsKKyAgICBpZiAoc3BlY19j
YXNlKQorICAgICAgICBsc2hpZnQobWhpLCBMb2cyUCk7CiAKLSAgICAgICAgbWxvID0gbWhpOwot
ICAgICAgICBpZiAoc3BlY19jYXNlKQotICAgICAgICAgICAgbHNoaWZ0KG1oaSwgTG9nMlApOwot
Ci0gICAgICAgIGZvciAoaSA9IDE7O2krKykgewotICAgICAgICAgICAgZGlnID0gcXVvcmVtKGIs
IFMpICsgJzAnOwotICAgICAgICAgICAgLyogRG8gd2UgeWV0IGhhdmUgdGhlIHNob3J0ZXN0IGRl
Y2ltYWwgc3RyaW5nCi0gICAgICAgICAgICAgKiB0aGF0IHdpbGwgcm91bmQgdG8gZD8KLSAgICAg
ICAgICAgICAqLwotICAgICAgICAgICAgaiA9IGNtcChiLCBtbG8pOwotICAgICAgICAgICAgZGlm
ZihkZWx0YSwgUywgbWhpKTsKLSAgICAgICAgICAgIGoxID0gZGVsdGEuc2lnbiA/IDEgOiBjbXAo
YiwgZGVsdGEpOworICAgIGZvciAoaSA9IDE7O2krKykgeworICAgICAgICBkaWcgPSBxdW9yZW0o
YiwgUykgKyAnMCc7CisgICAgICAgIC8qIERvIHdlIHlldCBoYXZlIHRoZSBzaG9ydGVzdCBkZWNp
bWFsIHN0cmluZworICAgICAgICAgKiB0aGF0IHdpbGwgcm91bmQgdG8gZD8KKyAgICAgICAgICov
CisgICAgICAgIGogPSBjbXAoYiwgbWxvKTsKKyAgICAgICAgZGlmZihkZWx0YSwgUywgbWhpKTsK
KyAgICAgICAgajEgPSBkZWx0YS5zaWduID8gMSA6IGNtcChiLCBkZWx0YSk7CiAjaWZkZWYgRFRP
QV9ST1VORF9CSUFTRUQKLSAgICAgICAgICAgIGlmIChqIDwgMCB8fCAhaikgeworICAgICAgICBp
ZiAoaiA8IDAgfHwgIWopIHsKICNlbHNlCi0gICAgICAgICAgICAvLyBGSVhNRTogRUNNQS0yNjIg
c3BlY2lmaWVzIHRoYXQgZXF1aWRpc3RhbnQgcmVzdWx0cyByb3VuZCBhd2F5IGZyb20KLSAgICAg
ICAgICAgIC8vIHplcm8sIHdoaWNoIHByb2JhYmx5IG1lYW5zIHdlIHNob3VsZG4ndCBiZSBvbiB0
aGUgdW5iaWFzZWQgY29kZSBwYXRoCi0gICAgICAgICAgICAvLyAodGhlICh3b3JkMSgmdSkgJiAx
KSBjbGF1c2UgaXMgbG9va2luZyBoaWdobHkgc3VzcGljaW91cykuIEkgaGF2ZW4ndAotICAgICAg
ICAgICAgLy8geWV0IHVuZGVyc3Rvb2QgdGhpcyBjb2RlIHdlbGwgZW5vdWdoIHRvIG1ha2UgdGhl
IGNhbGwsIGJ1dCB3ZSBzaG91bGQKLSAgICAgICAgICAgIC8vIHByb2JhYmx5IGJlIGVuYWJsaW5n
IERUT0FfUk9VTkRfQklBU0VELiBJIHRoaW5rIHRoZSBpbnRlcmVzdGluZyBjb3JuZXIKLSAgICAg
ICAgICAgIC8vIGNhc2UgdG8gdW5kZXJzdGFuZCBpcyBwcm9iYWJseSAiTWF0aC5wb3coMC41LCAy
NCkudG9TdHJpbmcoKSIuCi0gICAgICAgICAgICAvLyBJIGJlbGlldmUgdGhpcyB2YWx1ZSBpcyBp
bnRlcmVzdGluZyBiZWNhdXNlIEkgdGhpbmsgaXQgaXMgcHJlY2lzZWx5Ci0gICAgICAgICAgICAv
LyByZXByZXNlbnRhYmxlIGluIGJpbmFyeSBmbG9hdGluZyBwb2ludCwgYW5kIGl0cyBkZWNpbWFs
IHJlcHJlc2VudGF0aW9uCi0gICAgICAgICAgICAvLyBoYXMgYSBzaW5nbGUgZGlnaXQgdGhhdCBT
dGVlbGUgJiBXaGl0ZSByZWR1Y3Rpb24gY2FuIHJlbW92ZSwgd2l0aCB0aGUKLSAgICAgICAgICAg
IC8vIHZhbHVlIDUgKHRodXMgZXF1aWRpc3RhbnQgZnJvbSB0aGUgbmV4dCBudW1iZXJzIGFib3Zl
IGFuZCBiZWxvdykuCi0gICAgICAgICAgICAvLyBXZSBwcm9kdWNlIHRoZSBjb3JyZWN0IGFuc3dl
ciB1c2luZyBlaXRoZXIgY29kZXBhdGgsIGFuZCBJIGRvbid0IGFzCi0gICAgICAgICAgICAvLyB5
ZXQgdW5kZXJzdGFuZCB3aHkuIDotKQotICAgICAgICAgICAgaWYgKCFqMSAmJiAhKHdvcmQxKCZ1
KSAmIDEpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRpZyA9PSAnOScpCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gcm91bmQ5dXA7Ci0gICAgICAgICAgICAgICAgaWYgKGogPiAwKQotICAgICAg
ICAgICAgICAgICAgICBkaWcrKzsKLSAgICAgICAgICAgICAgICAqcysrID0gZGlnOwotICAgICAg
ICAgICAgICAgIGdvdG8gcmV0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGogPCAw
IHx8ICghaiAmJiAhKHdvcmQxKCZ1KSAmIDEpKSkgeworICAgICAgICAvLyBGSVhNRTogRUNNQS0y
NjIgc3BlY2lmaWVzIHRoYXQgZXF1aWRpc3RhbnQgcmVzdWx0cyByb3VuZCBhd2F5IGZyb20KKyAg
ICAgICAgLy8gemVybywgd2hpY2ggcHJvYmFibHkgbWVhbnMgd2Ugc2hvdWxkbid0IGJlIG9uIHRo
ZSB1bmJpYXNlZCBjb2RlIHBhdGgKKyAgICAgICAgLy8gKHRoZSAod29yZDEoJnUpICYgMSkgY2xh
dXNlIGlzIGxvb2tpbmcgaGlnaGx5IHN1c3BpY2lvdXMpLiBJIGhhdmVuJ3QKKyAgICAgICAgLy8g
eWV0IHVuZGVyc3Rvb2QgdGhpcyBjb2RlIHdlbGwgZW5vdWdoIHRvIG1ha2UgdGhlIGNhbGwsIGJ1
dCB3ZSBzaG91bGQKKyAgICAgICAgLy8gcHJvYmFibHkgYmUgZW5hYmxpbmcgRFRPQV9ST1VORF9C
SUFTRUQuIEkgdGhpbmsgdGhlIGludGVyZXN0aW5nIGNvcm5lcgorICAgICAgICAvLyBjYXNlIHRv
IHVuZGVyc3RhbmQgaXMgcHJvYmFibHkgIk1hdGgucG93KDAuNSwgMjQpLnRvU3RyaW5nKCkiLgor
ICAgICAgICAvLyBJIGJlbGlldmUgdGhpcyB2YWx1ZSBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIEkg
dGhpbmsgaXQgaXMgcHJlY2lzZWx5CisgICAgICAgIC8vIHJlcHJlc2VudGFibGUgaW4gYmluYXJ5
IGZsb2F0aW5nIHBvaW50LCBhbmQgaXRzIGRlY2ltYWwgcmVwcmVzZW50YXRpb24KKyAgICAgICAg
Ly8gaGFzIGEgc2luZ2xlIGRpZ2l0IHRoYXQgU3RlZWxlICYgV2hpdGUgcmVkdWN0aW9uIGNhbiBy
ZW1vdmUsIHdpdGggdGhlCisgICAgICAgIC8vIHZhbHVlIDUgKHRodXMgZXF1aWRpc3RhbnQgZnJv
bSB0aGUgbmV4dCBudW1iZXJzIGFib3ZlIGFuZCBiZWxvdykuCisgICAgICAgIC8vIFdlIHByb2R1
Y2UgdGhlIGNvcnJlY3QgYW5zd2VyIHVzaW5nIGVpdGhlciBjb2RlcGF0aCwgYW5kIEkgZG9uJ3Qg
YXMKKyAgICAgICAgLy8geWV0IHVuZGVyc3RhbmQgd2h5LiA6LSkKKyAgICAgICAgaWYgKCFqMSAm
JiAhKHdvcmQxKCZ1KSAmIDEpKSB7CisgICAgICAgICAgICBpZiAoZGlnID09ICc5JykKKyAgICAg
ICAgICAgICAgICBnb3RvIHJvdW5kOXVwOworICAgICAgICAgICAgaWYgKGogPiAwKQorICAgICAg
ICAgICAgICAgIGRpZysrOworICAgICAgICAgICAgKnMrKyA9IGRpZzsKKyAgICAgICAgICAgIGdv
dG8gcmV0OworICAgICAgICB9CisgICAgICAgIGlmIChqIDwgMCB8fCAoIWogJiYgISh3b3JkMSgm
dSkgJiAxKSkpIHsKICNlbmRpZgotICAgICAgICAgICAgICAgIGlmICgoYi53b3JkcygpWzBdIHx8
IGIuc2l6ZSgpID4gMSkgJiYgKGoxID4gMCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbHNoaWZ0
KGIsIDEpOwotICAgICAgICAgICAgICAgICAgICBqMSA9IGNtcChiLCBTKTsKLSAgICAgICAgICAg
ICAgICAgICAgLy8gRm9yIElFRUUtNzU0IHJvdW5kLXRvLWV2ZW4sIHRoaXMgY2hlY2sgc2hvdWxk
IGJlIChqMSA+IDAgfHwgKCFqMSAmJiAoZGlnICYgMSkpKSwKLSAgICAgICAgICAgICAgICAgICAg
Ly8gYnV0IEVDTUEtMjYyIHNwZWNpZmllcyB0aGF0IGVxdWlkaXN0YW50IHZhbHVlcyAoZS5nLiAo
LjUpLnRvRml4ZWQoKSkgc2hvdWxkCi0gICAgICAgICAgICAgICAgICAgIC8vIGJlIHJvdW5kZWQg
YXdheSBmcm9tIHplcm8uCi0gICAgICAgICAgICAgICAgICAgIGlmIChqMSA+PSAwKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZGlnID09ICc5JykKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnb3RvIHJvdW5kOXVwOwotICAgICAgICAgICAgICAgICAgICAgICAgZGlnKys7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
KnMrKyA9IGRpZzsKLSAgICAgICAgICAgICAgICBnb3RvIHJldDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmIChqMSA+IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoZGlnID09ICc5Jykg
eyAvKiBwb3NzaWJsZSBpZiBpID09IDEgKi8KLXJvdW5kOXVwOgotICAgICAgICAgICAgICAgICAg
ICAqcysrID0gJzknOwotICAgICAgICAgICAgICAgICAgICBnb3RvIHJvdW5kb2ZmOworICAgICAg
ICAgICAgaWYgKChiLndvcmRzKClbMF0gfHwgYi5zaXplKCkgPiAxKSAmJiAoajEgPiAwKSkgewor
ICAgICAgICAgICAgICAgIGxzaGlmdChiLCAxKTsKKyAgICAgICAgICAgICAgICBqMSA9IGNtcChi
LCBTKTsKKyAgICAgICAgICAgICAgICAvLyBGb3IgSUVFRS03NTQgcm91bmQtdG8tZXZlbiwgdGhp
cyBjaGVjayBzaG91bGQgYmUgKGoxID4gMCB8fCAoIWoxICYmIChkaWcgJiAxKSkpLAorICAgICAg
ICAgICAgICAgIC8vIGJ1dCBFQ01BLTI2MiBzcGVjaWZpZXMgdGhhdCBlcXVpZGlzdGFudCB2YWx1
ZXMgKGUuZy4gKC41KS50b0ZpeGVkKCkpIHNob3VsZAorICAgICAgICAgICAgICAgIC8vIGJlIHJv
dW5kZWQgYXdheSBmcm9tIHplcm8uCisgICAgICAgICAgICAgICAgaWYgKGoxID49IDApIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGRpZyA9PSAnOScpCisgICAgICAgICAgICAgICAgICAgICAg
ICBnb3RvIHJvdW5kOXVwOworICAgICAgICAgICAgICAgICAgICBkaWcrKzsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgKnMrKyA9IGRpZyArIDE7Ci0gICAgICAgICAgICAgICAg
Z290byByZXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAqcysrID0gZGlnOwotICAgICAg
ICAgICAgaWYgKGkgPT0gaWxpbSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IG11bHRhZGQoYiwgMTAsIDApOwotICAgICAgICAgICAgbXVsdGFkZChtbG8sIDEwLCAwKTsKLSAg
ICAgICAgICAgIG11bHRhZGQobWhpLCAxMCwgMCk7CisgICAgICAgICAgICBnb3RvIHJldDsKICAg
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZvciAoaSA9IDE7OyBpKyspIHsKLSAgICAg
ICAgICAgICpzKysgPSBkaWcgPSBxdW9yZW0oYiwgUykgKyAnMCc7Ci0gICAgICAgICAgICBpZiAo
IWIud29yZHMoKVswXSAmJiBiLnNpemUoKSA8PSAxKQotICAgICAgICAgICAgICAgIGdvdG8gcmV0
OwotICAgICAgICAgICAgaWYgKGkgPj0gaWxpbSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIG11bHRhZGQoYiwgMTAsIDApOworICAgICAgICBpZiAoajEgPiAwKSB7CisgICAg
ICAgICAgICBpZiAoZGlnID09ICc5JykgeyAvKiBwb3NzaWJsZSBpZiBpID09IDEgKi8KK3JvdW5k
OXVwOgorICAgICAgICAgICAgICAgICpzKysgPSAnOSc7CisgICAgICAgICAgICAgICAgZ290byBy
b3VuZG9mZjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpzKysgPSBkaWcgKyAxOworICAg
ICAgICAgICAgZ290byByZXQ7CiAgICAgICAgIH0KKyAgICAgICAgKnMrKyA9IGRpZzsKKyAgICAg
ICAgaWYgKGkgPT0gaWxpbSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBtdWx0YWRkKGIs
IDEwLCAwKTsKKyAgICAgICAgbXVsdGFkZChtbG8sIDEwLCAwKTsKKyAgICAgICAgbXVsdGFkZCht
aGksIDEwLCAwKTsKICAgICB9CiAKICAgICAvKiBSb3VuZCBvZmYgbGFzdCBkaWdpdCAqLwpAQCAt
MTIwMCwzOSArMTEyMywyOCBAQCBvbmVEaWdpdDoKICAgICBrKys7CiAgICAgZ290byByZXQ7CiBy
ZXQ6Ci0gICAgQVNTRVJUKHMgPiByZXN1bHQpOworICAgIEFTU0VSVChzID4gJnJlc3VsdFswXSk7
CiAgICAgKnMgPSAwOwogICAgIGV4cG9uZW50T3V0ID0gazsKLSAgICBwcmVjaXNpb25PdXQgPSBz
IC0gcmVzdWx0OworICAgIHByZWNpc2lvbk91dCA9IHMgLSAmcmVzdWx0WzBdOwogfQogCi12b2lk
IGR0b2EoRHRvYUJ1ZmZlciByZXN1bHQsIGRvdWJsZSBkZCwgYm9vbCYgc2lnbiwgaW50JiBleHBv
bmVudCwgdW5zaWduZWQmIHByZWNpc2lvbikKK2NvbnN0IGNoYXIqIG51bWJlclRvU3RyaW5nKGZs
b2F0IG51bWJlciwgTnVtYmVyVG9TdHJpbmdCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICAvLyBmbGFn
cyBhcmUgcm91bmRpbmdOb25lLCBsZWZ0cmlnaHQuCi0gICAgZHRvYTx0cnVlLCBmYWxzZSwgZmFs
c2UsIHRydWU+KHJlc3VsdCwgZGQsIDAsIHNpZ24sIGV4cG9uZW50LCBwcmVjaXNpb24pOwotfQot
Ci12b2lkIGR0b2FSb3VuZFNGKER0b2FCdWZmZXIgcmVzdWx0LCBkb3VibGUgZGQsIGludCBuZGln
aXRzLCBib29sJiBzaWduLCBpbnQmIGV4cG9uZW50LCB1bnNpZ25lZCYgcHJlY2lzaW9uKQotewot
ICAgIC8vIGZsYWcgaXMgcm91bmRpbmdTaWduaWZpY2FudEZpZ3VyZXMuCi0gICAgZHRvYTxmYWxz
ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlPihyZXN1bHQsIGRkLCBuZGlnaXRzLCBzaWduLCBleHBvbmVu
dCwgcHJlY2lzaW9uKTsKLX0KLQotdm9pZCBkdG9hUm91bmREUChEdG9hQnVmZmVyIHJlc3VsdCwg
ZG91YmxlIGRkLCBpbnQgbmRpZ2l0cywgYm9vbCYgc2lnbiwgaW50JiBleHBvbmVudCwgdW5zaWdu
ZWQmIHByZWNpc2lvbikKLXsKLSAgICAvLyBmbGFnIGlzIHJvdW5kaW5nRGVjaW1hbFBsYWNlcy4K
LSAgICBkdG9hPGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2U+KHJlc3VsdCwgZGQsIG5kaWdpdHMs
IHNpZ24sIGV4cG9uZW50LCBwcmVjaXNpb24pOworICAgIGRvdWJsZV9jb252ZXJzaW9uOjpTdHJp
bmdCdWlsZGVyIGJ1aWxkZXIoJmJ1ZmZlclswXSwgc2l6ZW9mKGJ1ZmZlcikpOworICAgIGRvdWJs
ZV9jb252ZXJzaW9uOjpEb3VibGVUb1N0cmluZ0NvbnZlcnRlcjo6RWNtYVNjcmlwdENvbnZlcnRl
cigpLlRvU2hvcnRlc3RTaW5nbGUobnVtYmVyLCAmYnVpbGRlcik7CisgICAgcmV0dXJuIGJ1aWxk
ZXIuRmluYWxpemUoKTsKIH0KIAotY29uc3QgY2hhciogbnVtYmVyVG9TdHJpbmcoZG91YmxlIGQs
IE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcikKK2NvbnN0IGNoYXIqIG51bWJlclRvU3RyaW5n
KGRvdWJsZSBkLCBOdW1iZXJUb1N0cmluZ0J1ZmZlciYgYnVmZmVyKQogewotICAgIGRvdWJsZV9j
b252ZXJzaW9uOjpTdHJpbmdCdWlsZGVyIGJ1aWxkZXIoYnVmZmVyLCBOdW1iZXJUb1N0cmluZ0J1
ZmZlckxlbmd0aCk7CisgICAgZG91YmxlX2NvbnZlcnNpb246OlN0cmluZ0J1aWxkZXIgYnVpbGRl
cigmYnVmZmVyWzBdLCBzaXplb2YoYnVmZmVyKSk7CiAgICAgYXV0byYgY29udmVydGVyID0gZG91
YmxlX2NvbnZlcnNpb246OkRvdWJsZVRvU3RyaW5nQ29udmVydGVyOjpFY21hU2NyaXB0Q29udmVy
dGVyKCk7CiAgICAgY29udmVydGVyLlRvU2hvcnRlc3QoZCwgJmJ1aWxkZXIpOwogICAgIHJldHVy
biBidWlsZGVyLkZpbmFsaXplKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogZm9y
bWF0U3RyaW5nVHJ1bmNhdGluZ1RyYWlsaW5nWmVyb3NJZk5lZWRlZChOdW1iZXJUb1N0cmluZ0J1
ZmZlciBidWZmZXIsIGRvdWJsZV9jb252ZXJzaW9uOjpTdHJpbmdCdWlsZGVyJiBidWlsZGVyKQor
c3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBmb3JtYXRTdHJpbmdUcnVuY2F0aW5nVHJhaWxpbmda
ZXJvc0lmTmVlZGVkKE51bWJlclRvU3RyaW5nQnVmZmVyJiBidWZmZXIsIGRvdWJsZV9jb252ZXJz
aW9uOjpTdHJpbmdCdWlsZGVyJiBidWlsZGVyKQogewogICAgIHNpemVfdCBsZW5ndGggPSBidWls
ZGVyLnBvc2l0aW9uKCk7CiAgICAgc2l6ZV90IGRlY2ltYWxQb2ludFBvc2l0aW9uID0gMDsKQEAg
LTEyNzAsMTQgKzExODIsMTQgQEAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBmb3JtYXRTdHJp
bmdUcnVuY2F0aW5nVHJhaWxpbmdaZXJvc0lmTmVlZGVkKE51bWJlclRvU3QKICAgICByZXR1cm4g
YnVpbGRlci5GaW5hbGl6ZSgpOwogfQogCi1jb25zdCBjaGFyKiBudW1iZXJUb0ZpeGVkUHJlY2lz
aW9uU3RyaW5nKGRvdWJsZSBkLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIE51bWJlclRv
U3RyaW5nQnVmZmVyIGJ1ZmZlciwgYm9vbCB0cnVuY2F0ZVRyYWlsaW5nWmVyb3MpCitjb25zdCBj
aGFyKiBudW1iZXJUb0ZpeGVkUHJlY2lzaW9uU3RyaW5nKGRvdWJsZSBkLCB1bnNpZ25lZCBzaWdu
aWZpY2FudEZpZ3VyZXMsIE51bWJlclRvU3RyaW5nQnVmZmVyJiBidWZmZXIsIGJvb2wgdHJ1bmNh
dGVUcmFpbGluZ1plcm9zKQogewogICAgIC8vIE1pbWljIHNwcmludGYoIiUuW3ByZWNpc2lvbl1n
IiwgLi4uKSwgYnV0IHVzZSBkdG9hcyByb3VuZGluZyBmYWNpbGl0aWVzLgogICAgIC8vICJnIjog
U2lnbmVkIHZhbHVlIHByaW50ZWQgaW4gZiBvciBlIGZvcm1hdCwgd2hpY2hldmVyIGlzIG1vcmUg
Y29tcGFjdCBmb3IgdGhlIGdpdmVuIHZhbHVlIGFuZCBwcmVjaXNpb24uCiAgICAgLy8gVGhlIGUg
Zm9ybWF0IGlzIHVzZWQgb25seSB3aGVuIHRoZSBleHBvbmVudCBvZiB0aGUgdmFsdWUgaXMgbGVz
cyB0aGFuIOKAkzQgb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZQogICAgIC8vIHByZWNp
c2lvbiBhcmd1bWVudC4gVHJhaWxpbmcgemVyb3MgYXJlIHRydW5jYXRlZCwgYW5kIHRoZSBkZWNp
bWFsIHBvaW50IGFwcGVhcnMgb25seSBpZiBvbmUgb3IgbW9yZSBkaWdpdHMgZm9sbG93IGl0Lgog
ICAgIC8vICJwcmVjaXNpb24iOiBUaGUgcHJlY2lzaW9uIHNwZWNpZmllcyB0aGUgbWF4aW11bSBu
dW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzIHByaW50ZWQuCi0gICAgZG91YmxlX2NvbnZlcnNp
b246OlN0cmluZ0J1aWxkZXIgYnVpbGRlcihidWZmZXIsIE51bWJlclRvU3RyaW5nQnVmZmVyTGVu
Z3RoKTsKKyAgICBkb3VibGVfY29udmVyc2lvbjo6U3RyaW5nQnVpbGRlciBidWlsZGVyKCZidWZm
ZXJbMF0sIHNpemVvZihidWZmZXIpKTsKICAgICBhdXRvJiBjb252ZXJ0ZXIgPSBkb3VibGVfY29u
dmVyc2lvbjo6RG91YmxlVG9TdHJpbmdDb252ZXJ0ZXI6OkVjbWFTY3JpcHRDb252ZXJ0ZXIoKTsK
ICAgICBjb252ZXJ0ZXIuVG9QcmVjaXNpb24oZCwgc2lnbmlmaWNhbnRGaWd1cmVzLCAmYnVpbGRl
cik7CiAgICAgaWYgKCF0cnVuY2F0ZVRyYWlsaW5nWmVyb3MpCkBAIC0xMjg1LDcgKzExOTcsNyBA
QCBjb25zdCBjaGFyKiBudW1iZXJUb0ZpeGVkUHJlY2lzaW9uU3RyaW5nKGRvdWJsZSBkLCB1bnNp
Z25lZCBzaWduaWZpY2FudEZpZ3VyZXMsCiAgICAgcmV0dXJuIGZvcm1hdFN0cmluZ1RydW5jYXRp
bmdUcmFpbGluZ1plcm9zSWZOZWVkZWQoYnVmZmVyLCBidWlsZGVyKTsKIH0KIAotY29uc3QgY2hh
ciogbnVtYmVyVG9GaXhlZFdpZHRoU3RyaW5nKGRvdWJsZSBkLCB1bnNpZ25lZCBkZWNpbWFsUGxh
Y2VzLCBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXIpCitjb25zdCBjaGFyKiBudW1iZXJUb0Zp
eGVkV2lkdGhTdHJpbmcoZG91YmxlIGQsIHVuc2lnbmVkIGRlY2ltYWxQbGFjZXMsIE51bWJlclRv
U3RyaW5nQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gTWltaWMgc3ByaW50ZigiJS5bcHJlY2lz
aW9uXWYiLCAuLi4pLCBidXQgdXNlIGR0b2FzIHJvdW5kaW5nIGZhY2lsaXRpZXMuCiAgICAgLy8g
ImYiOiBTaWduZWQgdmFsdWUgaGF2aW5nIHRoZSBmb3JtIFsg4oCTIF1kZGRkLmRkZGQsIHdoZXJl
IGRkZGQgaXMgb25lIG9yIG1vcmUgZGVjaW1hbCBkaWdpdHMuCkBAIC0xMjk0LDcgKzEyMDYsNyBA
QCBjb25zdCBjaGFyKiBudW1iZXJUb0ZpeGVkV2lkdGhTdHJpbmcoZG91YmxlIGQsIHVuc2lnbmVk
IGRlY2ltYWxQbGFjZXMsIE51bWJlclRvUwogICAgIC8vICJwcmVjaXNpb24iOiBUaGUgcHJlY2lz
aW9uIHZhbHVlIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1h
bCBwb2ludC4KICAgICAvLyBJZiBhIGRlY2ltYWwgcG9pbnQgYXBwZWFycywgYXQgbGVhc3Qgb25l
IGRpZ2l0IGFwcGVhcnMgYmVmb3JlIGl0LgogICAgIC8vIFRoZSB2YWx1ZSBpcyByb3VuZGVkIHRv
IHRoZSBhcHByb3ByaWF0ZSBudW1iZXIgb2YgZGlnaXRzLiAgICAKLSAgICBkb3VibGVfY29udmVy
c2lvbjo6U3RyaW5nQnVpbGRlciBidWlsZGVyKGJ1ZmZlciwgTnVtYmVyVG9TdHJpbmdCdWZmZXJM
ZW5ndGgpOworICAgIGRvdWJsZV9jb252ZXJzaW9uOjpTdHJpbmdCdWlsZGVyIGJ1aWxkZXIoJmJ1
ZmZlclswXSwgc2l6ZW9mKGJ1ZmZlcikpOwogICAgIGF1dG8mIGNvbnZlcnRlciA9IGRvdWJsZV9j
b252ZXJzaW9uOjpEb3VibGVUb1N0cmluZ0NvbnZlcnRlcjo6RWNtYVNjcmlwdENvbnZlcnRlcigp
OwogICAgIGNvbnZlcnRlci5Ub0ZpeGVkKGQsIGRlY2ltYWxQbGFjZXMsICZidWlsZGVyKTsKICAg
ICByZXR1cm4gYnVpbGRlci5GaW5hbGl6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
ZHRvYS5oIGIvU291cmNlL1dURi93dGYvZHRvYS5oCmluZGV4IDVmNGZhZGJmMzE4MDBiNzM5Y2E1
ZThkMWFhMjMzMDIyZTI4NzgxM2EuLmQzODI4OWRjZTNkY2FlYTlmOWJhNDQ3MDRlMzA5ZWNkZDBi
OWE1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2R0b2EuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9kdG9hLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwMywg
MjAwOCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTIwLDI3ICsyMCwyNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgPHVuaWNvZGUvdXR5cGVzLmg+CisjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8d3RmL0FT
Q0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvZHRvYS9kb3VibGUtY29udmVyc2lvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLXR5cGVk
ZWYgY2hhciBEdG9hQnVmZmVyWzgwXTsKK3VzaW5nIER0b2FCdWZmZXIgPSBzdGQ6OmFycmF5PGNo
YXIsIDgwPjsKIAotV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHRvYShEdG9hQnVmZmVyIHJlc3Vs
dCwgZG91YmxlIGRkLCBib29sJiBzaWduLCBpbnQmIGV4cG9uZW50LCB1bnNpZ25lZCYgcHJlY2lz
aW9uKTsKLVdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR0b2FSb3VuZFNGKER0b2FCdWZmZXIgcmVz
dWx0LCBkb3VibGUgZGQsIGludCBuZGlnaXRzLCBib29sJiBzaWduLCBpbnQmIGV4cG9uZW50LCB1
bnNpZ25lZCYgcHJlY2lzaW9uKTsKLVdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR0b2FSb3VuZERQ
KER0b2FCdWZmZXIgcmVzdWx0LCBkb3VibGUgZGQsIGludCBuZGlnaXRzLCBib29sJiBzaWduLCBp
bnQmIGV4cG9uZW50LCB1bnNpZ25lZCYgcHJlY2lzaW9uKTsKK1dURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGR0b2EoRHRvYUJ1ZmZlciYgcmVzdWx0LCBkb3VibGUgZGQsIGJvb2wmIHNpZ24sIGludCYg
ZXhwb25lbnQsIHVuc2lnbmVkJiBwcmVjaXNpb24pOwogCi0vLyBTaXplID0gODAgZm9yIHNpemVv
ZihEdG9hQnVmZmVyKSArIHNvbWUgc2lnbiBiaXRzLCBkZWNpbWFsIHBvaW50LCAnZScsIGV4cG9u
ZW50IGRpZ2l0cy4KLWNvbnN0IHVuc2lnbmVkIE51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoID0g
OTY7Ci10eXBlZGVmIGNoYXIgTnVtYmVyVG9TdHJpbmdCdWZmZXJbTnVtYmVyVG9TdHJpbmdCdWZm
ZXJMZW5ndGhdOwotdHlwZWRlZiBMQ2hhciBOdW1iZXJUb0xTdHJpbmdCdWZmZXJbTnVtYmVyVG9T
dHJpbmdCdWZmZXJMZW5ndGhdOworY29uc3RleHByIHVuc2lnbmVkIE51bWJlclRvU3RyaW5nQnVm
ZmVyTGVuZ3RoID0gOTY7Cit1c2luZyBOdW1iZXJUb1N0cmluZ0J1ZmZlciA9IHN0ZDo6YXJyYXk8
Y2hhciwgTnVtYmVyVG9TdHJpbmdCdWZmZXJMZW5ndGg+OwogCi1XVEZfRVhQT1JUX1BSSVZBVEUg
Y29uc3QgY2hhciogbnVtYmVyVG9TdHJpbmcoZG91YmxlLCBOdW1iZXJUb1N0cmluZ0J1ZmZlcik7
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogbnVtYmVyVG9GaXhlZFByZWNpc2lvblN0
cmluZyhkb3VibGUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgTnVtYmVyVG9TdHJpbmdC
dWZmZXIsIGJvb2wgdHJ1bmNhdGVUcmFpbGluZ1plcm9zID0gZmFsc2UpOwotV1RGX0VYUE9SVF9Q
UklWQVRFIGNvbnN0IGNoYXIqIG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyhkb3VibGUsIHVuc2ln
bmVkIGRlY2ltYWxQbGFjZXMsIE51bWJlclRvU3RyaW5nQnVmZmVyKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBjb25zdCBjaGFyKiBudW1iZXJUb1N0cmluZyhmbG9hdCwgTnVtYmVyVG9TdHJpbmdCdWZm
ZXImKTsKK1dURl9FWFBPUlRfUFJJVkFURSBjb25zdCBjaGFyKiBudW1iZXJUb0ZpeGVkUHJlY2lz
aW9uU3RyaW5nKGZsb2F0LCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIE51bWJlclRvU3Ry
aW5nQnVmZmVyJiwgYm9vbCB0cnVuY2F0ZVRyYWlsaW5nWmVyb3MgPSBmYWxzZSk7CitXVEZfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgY2hhciogbnVtYmVyVG9GaXhlZFdpZHRoU3RyaW5nKGZsb2F0LCB1
bnNpZ25lZCBkZWNpbWFsUGxhY2VzLCBOdW1iZXJUb1N0cmluZ0J1ZmZlciYpOworCitXVEZfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgY2hhciogbnVtYmVyVG9TdHJpbmcoZG91YmxlLCBOdW1iZXJUb1N0
cmluZ0J1ZmZlciYpOworV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IGNoYXIqIG51bWJlclRvRml4
ZWRQcmVjaXNpb25TdHJpbmcoZG91YmxlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIE51
bWJlclRvU3RyaW5nQnVmZmVyJiwgYm9vbCB0cnVuY2F0ZVRyYWlsaW5nWmVyb3MgPSBmYWxzZSk7
CitXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogbnVtYmVyVG9GaXhlZFdpZHRoU3RyaW5n
KGRvdWJsZSwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcywgTnVtYmVyVG9TdHJpbmdCdWZmZXImKTsK
IAogZG91YmxlIHBhcnNlRG91YmxlKGNvbnN0IExDaGFyKiBzdHJpbmcsIHNpemVfdCBsZW5ndGgs
IHNpemVfdCYgcGFyc2VkTGVuZ3RoKTsKIGRvdWJsZSBwYXJzZURvdWJsZShjb25zdCBVQ2hhciog
c3RyaW5nLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QmIHBhcnNlZExlbmd0aCk7CkBAIC03MiwxMSAr
NzIsMTAgQEAgaW5saW5lIGRvdWJsZSBwYXJzZURvdWJsZShTdHJpbmdWaWV3IHN0cmluZywgc2l6
ZV90JiBwYXJzZWRMZW5ndGgpCiAgICAgICAgIHJldHVybiBwYXJzZURvdWJsZShzdHJpbmcuY2hh
cmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBwYXJzZWRMZW5ndGgpOwogICAgIHJldHVybiBw
YXJzZURvdWJsZShzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwgcGFyc2Vk
TGVuZ3RoKTsKIH0KLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6TnVt
YmVyVG9TdHJpbmdCdWZmZXI7Ci11c2luZyBXVEY6Ok51bWJlclRvTFN0cmluZ0J1ZmZlcjsKIHVz
aW5nIFdURjo6bnVtYmVyVG9TdHJpbmc7CiB1c2luZyBXVEY6Om51bWJlclRvRml4ZWRQcmVjaXNp
b25TdHJpbmc7CiB1c2luZyBXVEY6Om51bWJlclRvRml4ZWRXaWR0aFN0cmluZzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oCmluZGV4IDZmNGVmODlh
Nzg3YjA5NzI1ODgyM2ExZTM2NzYwNjk2YTM1NjI5MjkuLmE4MGZhM2M1MTAzNmFkOGE4YWRhNTg5
MDk1YWE0MzdkZmI0ODY2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25j
YXRlbmF0ZU51bWJlcnMuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nVHlw
ZUFkYXB0ZXIoRmxvYXRpbmdQb2ludCBudW1iZXIpCiAgICAgewogICAgICAgICBudW1iZXJUb1N0
cmluZyhudW1iZXIsIG1fYnVmZmVyKTsKLSAgICAgICAgbV9sZW5ndGggPSBzdGQ6OnN0cmxlbiht
X2J1ZmZlcik7CisgICAgICAgIG1fbGVuZ3RoID0gc3RkOjpzdHJsZW4oJm1fYnVmZmVyWzBdKTsK
ICAgICB9CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsg
fQpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gdm9pZCB3cml0ZVRvKENoYXJhY3RlclR5cGUqIGRlc3RpbmF0aW9uKSBjb25zdCB7
IFN0cmluZ0ltcGw6OmNvcHlDaGFyYWN0ZXJzKGRlc3RpbmF0aW9uLCBidWZmZXIoKSwgbV9sZW5n
dGgpOyB9CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgTENoYXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtX2J1ZmZlcik7IH0KKyAgICBjb25z
dCBMQ2hhciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCZtX2J1ZmZlclswXSk7IH0KIAogICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIG1fYnVm
ZmVyOwogICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwpAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBGb3JtYXR0ZWROdW1iZXIgbnVtYmVyRm9ybWF0dGVyOwogICAgICAgICBu
dW1iZXJUb0ZpeGVkUHJlY2lzaW9uU3RyaW5nKG51bWJlciwgc2lnbmlmaWNhbnRGaWd1cmVzLCBu
dW1iZXJGb3JtYXR0ZXIubV9idWZmZXIsIHRyYWlsaW5nWmVyb3NUcnVuY2F0aW5nUG9saWN5ID09
IFRydW5jYXRlVHJhaWxpbmdaZXJvcyk7Ci0gICAgICAgIG51bWJlckZvcm1hdHRlci5tX2xlbmd0
aCA9IHN0ZDo6c3RybGVuKG51bWJlckZvcm1hdHRlci5tX2J1ZmZlcik7CisgICAgICAgIG51bWJl
ckZvcm1hdHRlci5tX2xlbmd0aCA9IHN0ZDo6c3RybGVuKCZudW1iZXJGb3JtYXR0ZXIubV9idWZm
ZXJbMF0pOwogICAgICAgICByZXR1cm4gbnVtYmVyRm9ybWF0dGVyOwogICAgIH0KIApAQCAtOTcs
MTIgKzk3LDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEZvcm1hdHRlZE51bWJlciBudW1i
ZXJGb3JtYXR0ZXI7CiAgICAgICAgIG51bWJlclRvRml4ZWRXaWR0aFN0cmluZyhudW1iZXIsIGRl
Y2ltYWxQbGFjZXMsIG51bWJlckZvcm1hdHRlci5tX2J1ZmZlcik7Ci0gICAgICAgIG51bWJlckZv
cm1hdHRlci5tX2xlbmd0aCA9IHN0ZDo6c3RybGVuKG51bWJlckZvcm1hdHRlci5tX2J1ZmZlcik7
CisgICAgICAgIG51bWJlckZvcm1hdHRlci5tX2xlbmd0aCA9IHN0ZDo6c3RybGVuKCZudW1iZXJG
b3JtYXR0ZXIubV9idWZmZXJbMF0pOwogICAgICAgICByZXR1cm4gbnVtYmVyRm9ybWF0dGVyOwog
ICAgIH0KIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9
Ci0gICAgY29uc3QgTENoYXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPihtX2J1ZmZlcik7IH0KKyAgICBjb25zdCBMQ2hhciogYnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCZtX2J1ZmZlclsw
XSk7IH0KIAogcHJpdmF0ZToKICAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBtX2J1ZmZlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAppbmRleCBlZTcyOTM4ODI4
YzYxOTYzYjk1YmU3MDFmZmUwNjY0MjAxZDlhODEzLi45M2E0ODllMTA1MWJjYTFjNWY5M2M1MWFh
NjA2MzRmNWUwODQ3MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiQW5pbWF0aW9uVXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiSGFzaFRvb2xzLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNp
bmNsdWRlIDx3dGYvRGVjaW1hbE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4K
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5jcHAKaW5kZXggNTFmNzc4NmE3MmE1ZjgxMTc3ZmE3
YzJjN2Y5MzQ2MDYxYzgwNzAyOS4uOWUzYjhiYmYxMDI0ODg2ZWNlMDUzYTVhYmY1MmMzNTk2ZmI5
ODA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0
ZUNQVVVzYWdlU2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg+Ci0jaW5jbHVkZSA8d3RmL0RlY2lt
YWxOdW1iZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsK
</data>
<flag name="review"
          id="380016"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>