<?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>160270</bug_id>
          
          <creation_ts>2016-07-27 14:31:26 -0700</creation_ts>
          <short_desc>Sub should be a Math IC</short_desc>
          <delta_ts>2016-08-01 11:49:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1215032</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-27 14:31:26 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215066</commentid>
    <comment_count>1</comment_count>
      <attachid>284738</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-27 15:42:19 -0700</bug_when>
    <thetext>Created attachment 284738
WIP

I want to take some data on old vs new.
But I think this patch should work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215067</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-27 15:45:18 -0700</bug_when>
    <thetext>Attachment 284738 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITSubGenerator.cpp:51:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/jit/JITSubGenerator.cpp:53:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/jit/JITSubGenerator.cpp:56:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/jit/JITSubGenerator.cpp:60:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:1713:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 5 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215419</commentid>
    <comment_count>3</comment_count>
      <attachid>284823</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-28 15:26:23 -0700</bug_when>
    <thetext>Created attachment 284823
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216128</commentid>
    <comment_count>4</comment_count>
      <attachid>284823</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-01 09:47:08 -0700</bug_when>
    <thetext>Comment on attachment 284823
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216189</commentid>
    <comment_count>5</comment_count>
      <attachid>284823</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-01 11:49:32 -0700</bug_when>
    <thetext>Comment on attachment 284823
patch

Clearing flags on attachment: 284823

Committed r203979: &lt;http://trac.webkit.org/changeset/203979&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216190</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-01 11:49:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284738</attachid>
            <date>2016-07-27 15:42:19 -0700</date>
            <delta_ts>2016-07-28 15:26:23 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>18837</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAyMDM3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAxOCw2ICszMDE4LDExIEBAIEpJVE11bElDKiBD
b2RlQmxvY2s6OmFkZEpJVE11bElDKCkKICAgICByZXR1cm4gbV9tdWxJQ3MuYWRkKCk7CiB9CiAK
K0pJVFN1YklDKiBDb2RlQmxvY2s6OmFkZEpJVFN1YklDKCkKK3sKKyAgICByZXR1cm4gbV9zdWJJ
Q3MuYWRkKCk7Cit9CisKIFN0cnVjdHVyZVN0dWJJbmZvKiBDb2RlQmxvY2s6OmZpbmRTdHViSW5m
byhDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiB7CiAgICAgZm9yIChTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8gOiBtX3N0dWJJbmZvcykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjAzNzk0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsNiArMjUz
LDcgQEAgcHVibGljOgogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBhZGRTdHViSW5mbyhBY2Nlc3NU
eXBlKTsKICAgICBKSVRBZGRJQyogYWRkSklUQWRkSUMoKTsKICAgICBKSVRNdWxJQyogYWRkSklU
TXVsSUMoKTsKKyAgICBKSVRTdWJJQyogYWRkSklUU3ViSUMoKTsKICAgICBCYWc8U3RydWN0dXJl
U3R1YkluZm8+OjppdGVyYXRvciBzdHViSW5mb0JlZ2luKCkgeyByZXR1cm4gbV9zdHViSW5mb3Mu
YmVnaW4oKTsgfQogICAgIEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0ZXJhdG9yIHN0dWJJbmZv
RW5kKCkgeyByZXR1cm4gbV9zdHViSW5mb3MuZW5kKCk7IH0KICAgICAKQEAgLTEwMTgsNiArMTAx
OSw3IEBAIHByaXZhdGU6CiAgICAgQmFnPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0dWJJbmZvczsK
ICAgICBCYWc8SklUQWRkSUM+IG1fYWRkSUNzOwogICAgIEJhZzxKSVRNdWxJQz4gbV9tdWxJQ3M7
CisgICAgQmFnPEpJVFN1YklDPiBtX3N1YklDczsKICAgICBCYWc8QnlWYWxJbmZvPiBtX2J5VmFs
SW5mb3M7CiAgICAgQmFnPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOwogICAgIFNlbnRp
bmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPENhbGxMaW5r
SW5mbz4+IG1faW5jb21pbmdDYWxsczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMDM3OTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzkyMyw2ICszOTIzLDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1
YihOb2QKICAgICB9CiAKICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgICAgICBib29sIG5lZWRzU2NyYXRjaEdQUlJlZyA9IHRydWU7CisgICAgICAgIGJvb2wg
bmVlZHNTY3JhdGNoRlBSUmVnID0gZmFsc2U7CisjZWxzZQorICAgICAgICBib29sIG5lZWRzU2Ny
YXRjaEdQUlJlZyA9IHRydWU7CisgICAgICAgIGJvb2wgbmVlZHNTY3JhdGNoRlBSUmVnID0gdHJ1
ZTsKKyNlbmRpZgorCisgICAgICAgIEpJVFN1YklDKiBzdWJJQyA9IG1faml0LmNvZGVCbG9jaygp
LT5hZGRKSVRTdWJJQygpOworICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJh
dGlvblZhbHVlU3ViT3B0aW1pemU7CisgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9u
ID0gb3BlcmF0aW9uVmFsdWVTdWI7CisgICAgICAgIAorICAgICAgICBjb21waWxlTWF0aElDKG5v
ZGUsIHN1YklDLCBuZWVkc1NjcmF0Y2hHUFJSZWcsIG5lZWRzU2NyYXRjaEZQUlJlZywgcmVwYXRj
aGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOworCisgICAgICAgIC8qCiAgICAg
ICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG5vZGUtPmNoaWxkMSgpOwogICAgICAgICBFZGdlJiByaWdo
dENoaWxkID0gbm9kZS0+Y2hpbGQyKCk7CiAKQEAgLTM5NzAsNiArMzk4NSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2QKIAogICAgICAgICBnZW4uZW5kSnVtcExp
c3QoKS5saW5rKCZtX2ppdCk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7CisgICAgICAgICovCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIwMzc5
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTcxMCw3ICsxNzEwLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGVtaXRCaW5hcnlTbmlwcGV0
PEpJVFN1YkdlbmVyYXRvcj4ob3BlcmF0aW9uVmFsdWVTdWIpOworICAgICAgICAgICAgLy9lbWl0
QmluYXJ5U25pcHBldDxKSVRTdWJHZW5lcmF0b3I+KG9wZXJhdGlvblZhbHVlU3ViKTsKKworICAg
ICAgICAgICAgSklUU3ViSUMqIHN1YklDID0gY29kZUJsb2NrKCktPmFkZEpJVFN1YklDKCk7Cisg
ICAgICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvblZhbHVlU3ViT3B0
aW1pemU7CisgICAgICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlv
blZhbHVlU3ViOworICAgICAgICAgICAgY29tcGlsZU1hdGhJQyhzdWJJQywgcmVwYXRjaGluZ0Z1
bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMu
Y3BwCShyZXZpc2lvbiAyMDM3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjYsMTAgKzkyNiwxNiBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfbXVsKEluc3RydWN0aW9uKiBjCiAKIHZvaWQgSklUOjplbWl0X29wX3N1
YihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogeworICAgIEpJVFN1YklDKiBzdWJJ
QyA9IG1fY29kZUJsb2NrLT5hZGRKSVRTdWJJQygpOworICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJ
Qy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBzdWJJQyk7CisgICAgZW1pdE1hdGhJQ0Zhc3Qoc3Vi
SUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZCwgb3BlcmF0
aW9uVmFsdWVTdWIpOworCisgICAgLyoKICAgICBpbnQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKICAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZDsKICAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsK
IAorCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBnZXRPcGVy
YW5kVHlwZXMoY29waWVkSW5zdHJ1Y3Rpb24oY3VycmVudEluc3RydWN0aW9uKSk7CiAgICAgSlNW
YWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMCk7CkBAIC05NjYsMTEgKzk3Miwx
NiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zdWIoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQsIHJlc3VsdFJlZ3MpOwogCiAgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcExpc3QoKSk7CisgICAgKi8KIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93
X29wX3N1YihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtBbGxTbG93Q2FzZXNGb3JCeXRlY29k
ZU9mZnNldChtX3Nsb3dDYXNlcywgaXRlciwgbV9ieXRlY29kZU9mZnNldCk7CisgICAgSklUU3Vi
SUMqIHN1YklDID0gYml0d2lzZV9jYXN0PEpJVFN1YklDKj4obV9pbnN0cnVjdGlvblRvTWF0aElD
LmdldChjdXJyZW50SW5zdHJ1Y3Rpb24pKTsKKyAgICBlbWl0TWF0aElDU2xvdyhzdWJJQywgY3Vy
cmVudEluc3RydWN0aW9uLCBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkT3B0aW1pemUsIG9wZXJh
dGlvblZhbHVlU3ViUHJvZmlsZWQsIG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemUpOworCisgICAg
LyoKIAogICAgIGludCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwog
I2lmIFVTRShKU1ZBTFVFNjQpCkBAIC05OTEsNiArMTAwMiw3IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9zdWIoSW5zdHJ1Y3Rpb24qIGMKICAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zdWIpOwogICAgICAgICBz
bG93UGF0aENhbGwuY2FsbCgpOwogICAgIH0KKyAgICAqLwogfQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9wb3coSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRNYXRoSUMuaAkocmV2aXNpb24gMjAzNzk0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkpJVEFkZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVE1hdGhJQ0lubGlu
ZVJlc3VsdC5oIgogI2luY2x1ZGUgIkpJVE11bEdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkpJVFN1
YkdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJSZXBhdGNo
LmgiCiAjaW5jbHVkZSAiU25pcHBldE9wZXJhbmQuaCIKQEAgLTI0MCw2ICsyNDEsNyBAQCBwdWJs
aWM6CiAKIHR5cGVkZWYgSklUTWF0aElDPEpJVEFkZEdlbmVyYXRvcj4gSklUQWRkSUM7CiB0eXBl
ZGVmIEpJVE1hdGhJQzxKSVRNdWxHZW5lcmF0b3I+IEpJVE11bElDOwordHlwZWRlZiBKSVRNYXRo
SUM8SklUU3ViR2VuZXJhdG9yPiBKSVRTdWJJQzsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDRm9yd2FyZHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQ0ZvcndhcmRzLmgJKHJl
dmlzaW9uIDIwMzc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDRm9y
d2FyZHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yPiBjbGFzcyBKSVRNYXRoSUM7CiBjbGFzcyBK
SVRBZGRHZW5lcmF0b3I7CiBjbGFzcyBKSVRNdWxHZW5lcmF0b3I7CitjbGFzcyBKSVRTdWJHZW5l
cmF0b3I7CiAKIHR5cGVkZWYgSklUTWF0aElDPEpJVEFkZEdlbmVyYXRvcj4gSklUQWRkSUM7CiB0
eXBlZGVmIEpJVE1hdGhJQzxKSVRNdWxHZW5lcmF0b3I+IEpJVE11bElDOwordHlwZWRlZiBKSVRN
YXRoSUM8SklUU3ViR2VuZXJhdG9yPiBKSVRTdWJJQzsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2
aXNpb24gMjAzNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQzOCwxMSArMjQzOCw4IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmEKICAgICByZXR1cm4gcHJvZmlsZWRNdWwoZXhlYywg
ZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYXJpdGhQcm9maWxlKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YihFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCitBTFdBWVNf
SU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB1bnByb2ZpbGVkU3ViKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikK
IHsKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKLSAgICAKICAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKTsKICAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AyKTsKIApAQCAtMjQ1MSwxNCArMjQ0OCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihhIC0g
YikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3Vi
UHJvZmlsZWQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKK0FMV0FZ
U19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHByb2ZpbGVkU3ViKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwg
QXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIGJvb2wgc2hvdWxkT2JzZXJ2ZUxIU0FuZFJIU1R5
cGVzID0gdHJ1ZSkKIHsKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAgICAKICAgICBKU1ZhbHVlIG9wMSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKICAgICBKU1ZhbHVlIG9wMiA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AyKTsKIAorICAgIGlmIChzaG91bGRPYnNlcnZlTEhTQW5kUkhTVHlwZXMp
CisgICAgICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CisKICAg
ICBkb3VibGUgYSA9IG9wMS50b051bWJlcihleGVjKTsKICAgICBkb3VibGUgYiA9IG9wMi50b051
bWJlcihleGVjKTsKICAgICAKQEAgLTI0NjcsNiArMjQ2NCw3MCBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3Vi
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMikKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICByZXR1cm4gdW5wcm9maWxlZFN1
YihleGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkKEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUpCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisKKyAgICByZXR1cm4gcHJv
ZmlsZWRTdWIoZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYXJpdGhQcm9maWxlKTsKK30K
KworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXpl
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqIHN1YklDKQoreworICAgIFZNKiB2bSA9ICZleGVjLT52
bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworCisgICAg
YXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZVN1Yk5vT3B0aW1pemU7Cisg
ICAgaWYgKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gc3ViSUMtPm1fZ2VuZXJhdG9yLmFy
aXRoUHJvZmlsZSgpKQorICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMoSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwor
ICAgIHN1YklDLT5nZW5lcmF0ZU91dE9mTGluZSgqdm0sIGV4ZWMtPmNvZGVCbG9jaygpLCBub25P
cHRpbWl6ZVZhcmlhbnQpOworCisjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCisgICAgZXhlYy0+
Y29kZUJsb2NrKCktPmR1bXBNYXRoSUNTdGF0cygpOworI2VuZGlmCisKKyAgICByZXR1cm4gdW5w
cm9maWxlZFN1YihleGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyKTsKK30KKworRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1Yk5vT3B0aW1pemUoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyLCBKSVRTdWJJQyopCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisKKyAgICByZXR1cm4gdW5wcm9maWxl
ZFN1YihleGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyKTsKK30KKworRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkT3B0aW1pemUoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyLCBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgSklUU3ViSUMqIHN1YklDKQoreworICAg
IFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOworCisgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZlTEhTQW5kUkhTKEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKKyAgICBh
dXRvIG5vbk9wdGltaXplVmFyaWFudCA9IG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWROb09wdGlt
aXplOworICAgIHN1YklDLT5nZW5lcmF0ZU91dE9mTGluZSgqdm0sIGV4ZWMtPmNvZGVCbG9jaygp
LCBub25PcHRpbWl6ZVZhcmlhbnQpOworCisjaWYgRU5BQkxFKE1BVEhfSUNfU1RBVFMpCisgICAg
ZXhlYy0+Y29kZUJsb2NrKCktPmR1bXBNYXRoSUNTdGF0cygpOworI2VuZGlmCisKKyAgICByZXR1
cm4gcHJvZmlsZWRTdWIoZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMiwgYXJpdGhQcm9maWxl
LCBmYWxzZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVTdWJQcm9maWxlZE5vT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqIGFyaXRo
UHJvZmlsZSwgSklUU3ViSUMqKQoreworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworCisgICAgcmV0dXJuIHByb2Zp
bGVkU3ViKGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGFyaXRoUHJvZmlsZSk7Cit9CisK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9nKEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIwMzc5NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MjYsNiArNDI2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmEKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVNdWxQcm9maWxl
ZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZChFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyLCBBcml0aFByb2ZpbGUqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZf
SU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3Vi
Tm9PcHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9wdGltaXplKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIsIEFyaXRoUHJvZmlsZSosIEpJVFN1YklDKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZShFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyLCBBcml0aFByb2ZpbGUqLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsKIAogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblByb2Nlc3NUeXBlUHJvZmlsZXJMb2coRXhlY1N0YXRlKikgV1RG
X0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2Nlc3NTaGFkb3dDaGlj
a2VuTG9nKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDIwMzc5NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsMTIgKzI3LDUwIEBACiAjaW5jbHVkZSAiSklUU3ViR2VuZXJhdG9yLmgiCiAKICNp
bmNsdWRlICJBcml0aFByb2ZpbGUuaCIKKyNpbmNsdWRlICJKSVRNYXRoSUMuaCIKIAogI2lmIEVO
QUJMRShKSVQpCiAKIG5hbWVzcGFjZSBKU0MgewogCi12b2lkIEpJVFN1YkdlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCkKK0pJVE1hdGhJQ0lubGluZVJlc3VsdCBK
SVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5lKENDYWxsSGVscGVycyYgaml0LCBNYXRoSUNH
ZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQoreworICAgIC8vIFdlIGRlZmF1bHQgdG8gc3BlY3VsYXRp
bmcgaW50MzIuCisgICAgT2JzZXJ2ZWRUeXBlIGxocyA9IE9ic2VydmVkVHlwZSgpLndpdGhJbnQz
MigpOworICAgIE9ic2VydmVkVHlwZSByaHMgPSBPYnNlcnZlZFR5cGUoKS53aXRoSW50MzIoKTsK
KyAgICBpZiAobV9hcml0aFByb2ZpbGUpIHsKKyAgICAgICAgbGhzID0gbV9hcml0aFByb2ZpbGUt
Pmxoc09ic2VydmVkVHlwZSgpOworICAgICAgICByaHMgPSBtX2FyaXRoUHJvZmlsZS0+cmhzT2Jz
ZXJ2ZWRUeXBlKCk7CisgICAgfQorCisgICAgaWYgKGxocy5pc09ubHlOb25OdW1iZXIoKSAmJiBy
aHMuaXNPbmx5Tm9uTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1
bHQ6OkRvbnRHZW5lcmF0ZTsKKworICAgIGlmICgobGhzLmlzT25seUludDMyKCkpICYmIChyaHMu
aXNPbmx5SW50MzIoKSkpIHsKKyAgICAgICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5kLmlzQ29uc3RJ
bnQzMigpIHx8ICFtX3JpZ2h0T3BlcmFuZC5pc0NvbnN0SW50MzIoKSk7CisgICAgICAgIC8vaWYg
KCFtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpKQorICAgICAgICAgICAgc3RhdGUuc2xvd1Bh
dGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaElmTm90SW50MzIobV9sZWZ0KSk7CisgICAgICAgIC8v
aWYgKCFtX3JpZ2h0T3BlcmFuZC5pc0NvbnN0SW50MzIoKSkKKyAgICAgICAgICAgIHN0YXRlLnNs
b3dQYXRoSnVtcHMuYXBwZW5kKGppdC5icmFuY2hJZk5vdEludDMyKG1fcmlnaHQpKTsKKworICAg
ICAgICAvL2lmIChtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpIHx8IG1fcmlnaHRPcGVyYW5k
LmlzQ29uc3RJbnQzMigpKSB7CisgICAgICAgIC8vICAgIEpTVmFsdWVSZWdzIHZhciA9IG1fbGVm
dE9wZXJhbmQuaXNDb25zdEludDMyKCkgPyBtX3JpZ2h0IDogbV9sZWZ0OworICAgICAgICAvLyAg
ICBpbnQzMl90IGNvbnN0VmFsdWUgPSBtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpID8gbV9s
ZWZ0T3BlcmFuZC5hc0NvbnN0SW50MzIoKSA6IG1fcmlnaHRPcGVyYW5kLmFzQ29uc3RJbnQzMigp
OworICAgICAgICAvLyAgICBzdGF0ZS5zbG93UGF0aEp1bXBzLmFwcGVuZChqaXQuYnJhbmNoQWRk
MzIoQ0NhbGxIZWxwZXJzOjpPdmVyZmxvdywgdmFyLnBheWxvYWRHUFIoKSwgQ0NhbGxIZWxwZXJz
OjpJbW0zMihjb25zdFZhbHVlKSwgbV9zY3JhdGNoR1BSKSk7CisgICAgICAgIC8vfSBlbHNlCisg
ICAgICAgIC8vICAgIHN0YXRlLnNsb3dQYXRoSnVtcHMuYXBwZW5kKGppdC5icmFuY2hBZGQzMihD
Q2FsbEhlbHBlcnM6Ok92ZXJmbG93LCBtX3JpZ2h0LnBheWxvYWRHUFIoKSwgbV9sZWZ0LnBheWxv
YWRHUFIoKSwgbV9zY3JhdGNoR1BSKSk7CisKKyAgICAgICAgaml0Lm1vdmUobV9sZWZ0LnBheWxv
YWRHUFIoKSwgbV9zY3JhdGNoR1BSKTsKKyAgICAgICAgc3RhdGUuc2xvd1BhdGhKdW1wcy5hcHBl
bmQoaml0LmJyYW5jaFN1YjMyKENDYWxsSGVscGVyczo6T3ZlcmZsb3csIG1fcmlnaHQucGF5bG9h
ZEdQUigpLCBtX3NjcmF0Y2hHUFIpKTsKKworICAgICAgICBqaXQuYm94SW50MzIobV9zY3JhdGNo
R1BSLCBtX3Jlc3VsdCk7CisgICAgICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6Okdl
bmVyYXRlZEZhc3RQYXRoOworICAgIH0KKworICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1
bHQ6OkdlbmVyYXRlRnVsbFNuaXBwZXQ7Cit9CisKK2Jvb2wgSklUU3ViR2VuZXJhdG9yOjpnZW5l
cmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBl
bmRKdW1wTGlzdCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgYm9v
bCBzaG91bGRFbWl0UHJvZmlsaW5nKQogewogICAgIEFTU0VSVChtX3NjcmF0Y2hHUFIgIT0gSW52
YWxpZEdQUlJlZyk7CiAgICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBtX2xlZnQucGF5bG9hZEdQ
UigpKTsKQEAgLTQzLDI5ICs4MSwyNyBAQCB2b2lkIEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aChDCiAgICAgQVNTRVJUKG1fc2NyYXRjaEZQUiAhPSBJbnZhbGlkRlBSUmVnKTsKICNl
bmRpZgogCi0gICAgbV9kaWRFbWl0RmFzdFBhdGggPSB0cnVlOwotCiAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wIGxlZnROb3RJbnQgPSBqaXQuYnJhbmNoSWZOb3RJbnQzMihtX2xlZnQpOwogICAgIEND
YWxsSGVscGVyczo6SnVtcCByaWdodE5vdEludCA9IGppdC5icmFuY2hJZk5vdEludDMyKG1fcmln
aHQpOwogCiAgICAgaml0Lm1vdmUobV9sZWZ0LnBheWxvYWRHUFIoKSwgbV9zY3JhdGNoR1BSKTsK
LSAgICBtX3Nsb3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hTdWIzMihDQ2FsbEhlbHBl
cnM6Ok92ZXJmbG93LCBtX3JpZ2h0LnBheWxvYWRHUFIoKSwgbV9zY3JhdGNoR1BSKSk7CisgICAg
c2xvd1BhdGhKdW1wTGlzdC5hcHBlbmQoaml0LmJyYW5jaFN1YjMyKENDYWxsSGVscGVyczo6T3Zl
cmZsb3csIG1fcmlnaHQucGF5bG9hZEdQUigpLCBtX3NjcmF0Y2hHUFIpKTsKIAogICAgIGppdC5i
b3hJbnQzMihtX3NjcmF0Y2hHUFIsIG1fcmVzdWx0KTsKIAotICAgIG1fZW5kSnVtcExpc3QuYXBw
ZW5kKGppdC5qdW1wKCkpOworICAgIGVuZEp1bXBMaXN0LmFwcGVuZChqaXQuanVtcCgpKTsKIAog
ICAgIGlmICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKSB7Ci0gICAgICAgIG1fc2xvd1Bh
dGhKdW1wTGlzdC5hcHBlbmQobGVmdE5vdEludCk7Ci0gICAgICAgIG1fc2xvd1BhdGhKdW1wTGlz
dC5hcHBlbmQocmlnaHROb3RJbnQpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHNsb3dQYXRo
SnVtcExpc3QuYXBwZW5kKGxlZnROb3RJbnQpOworICAgICAgICBzbG93UGF0aEp1bXBMaXN0LmFw
cGVuZChyaWdodE5vdEludCk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGxl
ZnROb3RJbnQubGluaygmaml0KTsKICAgICBpZiAoIW1fbGVmdE9wZXJhbmQuZGVmaW5pdGVseUlz
TnVtYmVyKCkpCi0gICAgICAgIG1fc2xvd1BhdGhKdW1wTGlzdC5hcHBlbmQoaml0LmJyYW5jaElm
Tm90TnVtYmVyKG1fbGVmdCwgbV9zY3JhdGNoR1BSKSk7CisgICAgICAgIHNsb3dQYXRoSnVtcExp
c3QuYXBwZW5kKGppdC5icmFuY2hJZk5vdE51bWJlcihtX2xlZnQsIG1fc2NyYXRjaEdQUikpOwog
ICAgIGlmICghbV9yaWdodE9wZXJhbmQuZGVmaW5pdGVseUlzTnVtYmVyKCkpCi0gICAgICAgIG1f
c2xvd1BhdGhKdW1wTGlzdC5hcHBlbmQoaml0LmJyYW5jaElmTm90TnVtYmVyKG1fcmlnaHQsIG1f
c2NyYXRjaEdQUikpOworICAgICAgICBzbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNo
SWZOb3ROdW1iZXIobV9yaWdodCwgbV9zY3JhdGNoR1BSKSk7CiAKICAgICBqaXQudW5ib3hEb3Vi
bGVOb25EZXN0cnVjdGl2ZShtX2xlZnQsIG1fbGVmdEZQUiwgbV9zY3JhdGNoR1BSLCBtX3NjcmF0
Y2hGUFIpOwogICAgIENDYWxsSGVscGVyczo6SnVtcCByaWdodElzRG91YmxlID0gaml0LmJyYW5j
aElmTm90SW50MzIobV9yaWdodCk7CkBAIC03NSw3ICsxMTEsNyBAQCB2b2lkIEpJVFN1YkdlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDCiAKICAgICByaWdodE5vdEludC5saW5rKCZqaXQpOwog
ICAgIGlmICghbV9yaWdodE9wZXJhbmQuZGVmaW5pdGVseUlzTnVtYmVyKCkpCi0gICAgICAgIG1f
c2xvd1BhdGhKdW1wTGlzdC5hcHBlbmQoaml0LmJyYW5jaElmTm90TnVtYmVyKG1fcmlnaHQsIG1f
c2NyYXRjaEdQUikpOworICAgICAgICBzbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNo
SWZOb3ROdW1iZXIobV9yaWdodCwgbV9zY3JhdGNoR1BSKSk7CiAKICAgICBqaXQuY29udmVydElu
dDMyVG9Eb3VibGUobV9sZWZ0LnBheWxvYWRHUFIoKSwgbV9sZWZ0RlBSKTsKIApAQCAtODUsMTAg
KzEyMSwxMiBAQCB2b2lkIEpJVFN1YkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDCiAgICAg
cmlnaHRXYXNJbnRlZ2VyLmxpbmsoJmppdCk7CiAKICAgICBqaXQuc3ViRG91YmxlKG1fcmlnaHRG
UFIsIG1fbGVmdEZQUik7Ci0gICAgaWYgKG1fYXJpdGhQcm9maWxlKQorICAgIGlmIChtX2FyaXRo
UHJvZmlsZSAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKQogICAgICAgICBtX2FyaXRoUHJvZmlsZS0+
ZW1pdFNldERvdWJsZShqaXQpOwogCiAgICAgaml0LmJveERvdWJsZShtX2xlZnRGUFIsIG1fcmVz
dWx0KTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaAkocmV2aXNpb24g
MjAzNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksMTIgKzI5LDE3IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2lu
Y2x1ZGUgIkNDYWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkpJVE1hdGhJQ0lubGluZVJlc3VsdC5o
IgogI2luY2x1ZGUgIlNuaXBwZXRPcGVyYW5kLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitzdHJ1
Y3QgTWF0aElDR2VuZXJhdGlvblN0YXRlOworCiBjbGFzcyBKSVRTdWJHZW5lcmF0b3IgewogcHVi
bGljOgorICAgIEpJVFN1YkdlbmVyYXRvcigpIHsgfQorCiAgICAgSklUU3ViR2VuZXJhdG9yKFNu
aXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kLCBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQsCiAg
ICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgbGVmdCwgSlNWYWx1ZVJlZ3Mg
cmlnaHQsCiAgICAgICAgIEZQUlJlZyBsZWZ0RlBSLCBGUFJSZWcgcmlnaHRGUFIsIEdQUlJlZyBz
Y3JhdGNoR1BSLCBGUFJSZWcgc2NyYXRjaEZQUiwKQEAgLTUxLDExICs1NiwxMiBAQCBwdWJsaWM6
CiAgICAgICAgICwgbV9hcml0aFByb2ZpbGUoYXJpdGhQcm9maWxlKQogICAgIHsgfQogCi0gICAg
dm9pZCBnZW5lcmF0ZUZhc3RQYXRoKENDYWxsSGVscGVycyYpOworICAgIEpJVE1hdGhJQ0lubGlu
ZVJlc3VsdCBnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMmLCBNYXRoSUNHZW5lcmF0aW9uU3Rh
dGUmKTsKKyAgICBib29sIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQ
YXRoSnVtcExpc3QsIGJvb2wgc2hvdWxkRW1pdFByb2ZpbGluZyk7CiAKLSAgICBib29sIGRpZEVt
aXRGYXN0UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkRW1pdEZhc3RQYXRoOyB9Ci0gICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCYgZW5kSnVtcExpc3QoKSB7IHJldHVybiBtX2VuZEp1bXBMaXN0
OyB9Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCgpIHsgcmV0
dXJuIG1fc2xvd1BhdGhKdW1wTGlzdDsgfQorICAgIGJvb2wgaXNMZWZ0T3BlcmFuZFZhbGlkQ29u
c3RhbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNSaWdodE9wZXJhbmRW
YWxpZENvbnN0YW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBBcml0aFByb2ZpbGUq
IGFyaXRoUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJpdGhQcm9maWxlOyB9CiAKIHByaXZh
dGU6CiAgICAgU25pcHBldE9wZXJhbmQgbV9sZWZ0T3BlcmFuZDsKQEAgLTY4LDEwICs3NCw2IEBA
IHByaXZhdGU6CiAgICAgR1BSUmVnIG1fc2NyYXRjaEdQUjsKICAgICBGUFJSZWcgbV9zY3JhdGNo
RlBSOwogICAgIEFyaXRoUHJvZmlsZSogbV9hcml0aFByb2ZpbGU7Ci0gICAgYm9vbCBtX2RpZEVt
aXRGYXN0UGF0aCB7IGZhbHNlIH07Ci0KLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG1fZW5k
SnVtcExpc3Q7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBtX3Nsb3dQYXRoSnVtcExpc3Q7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284823</attachid>
            <date>2016-07-28 15:26:23 -0700</date>
            <delta_ts>2016-08-01 11:49:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>25364</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAzODQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDE2LTA3LTI4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFN1YiBzaG91bGQgYmUgYSBNYXRoIElDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjAyNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIG1ha2VzIFN1YiBhbiBJQyBsaWtlIE11bCBhbmQgQWRkLiBJ
J20gc2VlaW5nIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgaW1wcm92ZW1lbnRzIG9mIGF2ZXJhZ2Ug
U3ViIHNpemUgb24gVW5pdHkgYW5kIEpldFN0cmVhbToKKworICAgICAgICAgICAgICAgICAgIHwg
ICBKZXRTdHJlYW0gIHwgIFVuaXR5IDNEICB8CisgICAgICAgICAgICAgLS0tLS0tfCAtLS0tLS0t
LS0tLS0tfC0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIE9sZCAgfCAgIDIwMiBieXRlcyAg
fCAgMjA1IGJ5dGVzIHwKKyAgICAgICAgICAgICAtLS0tLS18IC0tLS0tLS0tLS0tLS18LS0tLS0t
LS0tLS0tLS0KKyAgICAgICAgICAgICAgTmV3ICB8ICAgMTM0ICBieXRlcyB8ICAxMzQgYnl0ZXMg
fAorICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjphZGRKSVRNdWxJQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkSklUU3ViSUMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmRTdHViSW5mbyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6ZHVtcE1hdGhJQ1N0YXRzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzdHViSW5mb0JlZ2luKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpzdHViSW5mb0VuZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRo
U3ViKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoQWRkT3JTdWIpOgorICAgICAgICAq
IGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N1Yik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bfc3ViKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3Bvdyk6CisgICAgICAgICogaml0L0pJVE1hdGhJQy5oOgorICAgICAgICAqIGpp
dC9KSVRNYXRoSUNGb3J3YXJkcy5oOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlSW5saW5l
KToKKyAgICAgICAgKEpTQzo6SklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAg
ICAgICAgKiBqaXQvSklUU3ViR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVFN1YkdlbmVy
YXRvcjo6SklUU3ViR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUU3ViR2VuZXJhdG9yOjpp
c0xlZnRPcGVyYW5kVmFsaWRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkpJVFN1YkdlbmVyYXRv
cjo6aXNSaWdodE9wZXJhbmRWYWxpZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6SklUU3ViR2Vu
ZXJhdG9yOjphcml0aFByb2ZpbGUpOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6OmRp
ZEVtaXRGYXN0UGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVFN1YkdlbmVyYXRvcjo6
ZW5kSnVtcExpc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6OnNs
b3dQYXRoSnVtcExpc3QpOiBEZWxldGVkLgorCiAyMDE2LTA3LTI4ICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJpbmdWaWV3IHNob3VsZCBoYXZlIGFuIGV4cGxp
Y2l0IG1faXM4Qml0IGZpZWxkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIwMzc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDE4LDYgKzMw
MTgsMTEgQEAgSklUTXVsSUMqIENvZGVCbG9jazo6YWRkSklUTXVsSUMoKQogICAgIHJldHVybiBt
X211bElDcy5hZGQoKTsKIH0KIAorSklUU3ViSUMqIENvZGVCbG9jazo6YWRkSklUU3ViSUMoKQor
eworICAgIHJldHVybiBtX3N1YklDcy5hZGQoKTsKK30KKwogU3RydWN0dXJlU3R1YkluZm8qIENv
ZGVCbG9jazo6ZmluZFN0dWJJbmZvKENvZGVPcmlnaW4gY29kZU9yaWdpbikKIHsKICAgICBmb3Ig
KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA6IG1fc3R1YkluZm9zKSB7CkBAIC00NTgwLDYg
KzQ1ODUsOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcE1hdGhJQ1N0YXRzKCkKICAgICBkb3VibGUg
dG90YWxBZGRTaXplID0gMC4wOwogICAgIGRvdWJsZSBudW1NdWxzID0gMC4wOwogICAgIGRvdWJs
ZSB0b3RhbE11bFNpemUgPSAwLjA7CisgICAgZG91YmxlIG51bVN1YnMgPSAwLjA7CisgICAgZG91
YmxlIHRvdGFsU3ViU2l6ZSA9IDAuMDsKIAogICAgIGF1dG8gY291bnRJQ3MgPSBbJl0gKENvZGVC
bG9jayogY29kZUJsb2NrKSB7CiAgICAgICAgIGZvciAoSklUQWRkSUMqIGFkZElDIDogY29kZUJs
b2NrLT5tX2FkZElDcykgewpAQCAtNDU5Miw2ICs0NTk5LDExIEBAIHZvaWQgQ29kZUJsb2NrOjpk
dW1wTWF0aElDU3RhdHMoKQogICAgICAgICAgICAgdG90YWxNdWxTaXplICs9IG11bElDLT5jb2Rl
U2l6ZSgpOwogICAgICAgICB9CiAKKyAgICAgICAgZm9yIChKSVRTdWJJQyogc3ViSUMgOiBjb2Rl
QmxvY2stPm1fc3ViSUNzKSB7CisgICAgICAgICAgICBudW1TdWJzKys7CisgICAgICAgICAgICB0
b3RhbFN1YlNpemUgKz0gc3ViSUMtPmNvZGVTaXplKCk7CisgICAgICAgIH0KKwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfTsKICAgICBoZWFwKCktPmZvckVhY2hDb2RlQmxvY2soY291bnRJ
Q3MpOwpAQCAtNDYwMyw2ICs0NjE1LDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wTWF0aElDU3Rh
dHMoKQogICAgIGRhdGFMb2coIk51bSBNdWxzOiAiLCBudW1NdWxzLCAiXG4iKTsKICAgICBkYXRh
TG9nKCJUb3RhbCBNdWwgc2l6ZSBpbiBieXRlczogIiwgdG90YWxNdWxTaXplLCAiXG4iKTsKICAg
ICBkYXRhTG9nKCJBdmVyYWdlIE11bCBzaXplOiAiLCB0b3RhbE11bFNpemUgLyBudW1NdWxzLCAi
XG4iKTsKKyAgICBkYXRhTG9nKCJcbiIpOworICAgIGRhdGFMb2coIk51bSBTdWJzOiAiLCBudW1T
dWJzLCAiXG4iKTsKKyAgICBkYXRhTG9nKCJUb3RhbCBTdWIgc2l6ZSBpbiBieXRlczogIiwgdG90
YWxTdWJTaXplLCAiXG4iKTsKKyAgICBkYXRhTG9nKCJBdmVyYWdlIFN1YiBzaXplOiAiLCB0b3Rh
bFN1YlNpemUgLyBudW1TdWJzLCAiXG4iKTsKIAogICAgIGRhdGFMb2coIi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tXG4iKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjAzNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsNiArMjUzLDcg
QEAgcHVibGljOgogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBhZGRTdHViSW5mbyhBY2Nlc3NUeXBl
KTsKICAgICBKSVRBZGRJQyogYWRkSklUQWRkSUMoKTsKICAgICBKSVRNdWxJQyogYWRkSklUTXVs
SUMoKTsKKyAgICBKSVRTdWJJQyogYWRkSklUU3ViSUMoKTsKICAgICBCYWc8U3RydWN0dXJlU3R1
YkluZm8+OjppdGVyYXRvciBzdHViSW5mb0JlZ2luKCkgeyByZXR1cm4gbV9zdHViSW5mb3MuYmVn
aW4oKTsgfQogICAgIEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0ZXJhdG9yIHN0dWJJbmZvRW5k
KCkgeyByZXR1cm4gbV9zdHViSW5mb3MuZW5kKCk7IH0KICAgICAKQEAgLTEwMTgsNiArMTAxOSw3
IEBAIHByaXZhdGU6CiAgICAgQmFnPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0dWJJbmZvczsKICAg
ICBCYWc8SklUQWRkSUM+IG1fYWRkSUNzOwogICAgIEJhZzxKSVRNdWxJQz4gbV9tdWxJQ3M7Cisg
ICAgQmFnPEpJVFN1YklDPiBtX3N1YklDczsKICAgICBCYWc8QnlWYWxJbmZvPiBtX2J5VmFsSW5m
b3M7CiAgICAgQmFnPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOwogICAgIFNlbnRpbmVs
TGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5m
bz4+IG1faW5jb21pbmdDYWxsczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMDM3OTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzkyMyw1MyArMzkyMywxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhTdWIo
Tm9kCiAgICAgfQogCiAgICAgY2FzZSBVbnR5cGVkVXNlOiB7Ci0gICAgICAgIEVkZ2UmIGxlZnRD
aGlsZCA9IG5vZGUtPmNoaWxkMSgpOwotICAgICAgICBFZGdlJiByaWdodENoaWxkID0gbm9kZS0+
Y2hpbGQyKCk7Ci0KLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgbGVmdCh0aGlzLCBsZWZ0Q2hpbGQp
OwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCByaWdodCh0aGlzLCByaWdodENoaWxkKTsKLQotICAg
ICAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IGxlZnQuanNWYWx1ZVJlZ3MoKTsKLSAgICAgICAg
SlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gcmlnaHQuanNWYWx1ZVJlZ3MoKTsKLQotICAgICAgICBG
UFJUZW1wb3JhcnkgbGVmdE51bWJlcih0aGlzKTsKLSAgICAgICAgRlBSVGVtcG9yYXJ5IHJpZ2h0
TnVtYmVyKHRoaXMpOwotICAgICAgICBGUFJSZWcgbGVmdEZQUiA9IGxlZnROdW1iZXIuZnByKCk7
Ci0gICAgICAgIEZQUlJlZyByaWdodEZQUiA9IHJpZ2h0TnVtYmVyLmZwcigpOwotCiAjaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLSAgICAgICAg
SlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IEpTVmFsdWVSZWdzKHJlc3VsdC5ncHIoKSk7Ci0gICAg
ICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQ
UiA9IHNjcmF0Y2guZ3ByKCk7Ci0gICAgICAgIEZQUlJlZyBzY3JhdGNoRlBSID0gSW52YWxpZEZQ
UlJlZzsKKyAgICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOworICAgICAgICBi
b29sIG5lZWRzU2NyYXRjaEZQUlJlZyA9IGZhbHNlOwogI2Vsc2UKLSAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdFRhZyh0aGlzKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQo
dGhpcyk7Ci0gICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZXN1
bHRQYXlsb2FkLmdwcigpLCByZXN1bHRUYWcuZ3ByKCkpOwotICAgICAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IHJlc3VsdFRhZy5ncHIoKTsKLSAgICAgICAgRlBSVGVtcG9yYXJ5IGZwclNjcmF0Y2go
dGhpcyk7Ci0gICAgICAgIEZQUlJlZyBzY3JhdGNoRlBSID0gZnByU2NyYXRjaC5mcHIoKTsKKyAg
ICAgICAgYm9vbCBuZWVkc1NjcmF0Y2hHUFJSZWcgPSB0cnVlOworICAgICAgICBib29sIG5lZWRz
U2NyYXRjaEZQUlJlZyA9IHRydWU7CiAjZW5kaWYKIAotICAgICAgICBTbmlwcGV0T3BlcmFuZCBs
ZWZ0T3BlcmFuZChtX3N0YXRlLmZvck5vZGUobGVmdENoaWxkKS5yZXN1bHRUeXBlKCkpOwotICAg
ICAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hp
bGQpLnJlc3VsdFR5cGUoKSk7Ci0KLSAgICAgICAgSklUU3ViR2VuZXJhdG9yIGdlbihsZWZ0T3Bl
cmFuZCwgcmlnaHRPcGVyYW5kLCByZXN1bHRSZWdzLCBsZWZ0UmVncywgcmlnaHRSZWdzLAotICAg
ICAgICAgICAgbGVmdEZQUiwgcmlnaHRGUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2hGUFIpOwotICAg
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7Ci0KLSAgICAgICAgQVNTRVJUKGdlbi5k
aWRFbWl0RmFzdFBhdGgoKSk7Ci0gICAgICAgIGdlbi5lbmRKdW1wTGlzdCgpLmFwcGVuZChtX2pp
dC5qdW1wKCkpOwotCi0gICAgICAgIGdlbi5zbG93UGF0aEp1bXBMaXN0KCkubGluaygmbV9qaXQp
OwotICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRSZWdzKTsKLSAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZVN1YiwgcmVzdWx0UmVncywgbGVmdFJlZ3MsIHJp
Z2h0UmVncyk7Ci0gICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0UmVncyk7Ci0g
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0KLSAgICAgICAgZ2VuLmVuZEp1bXBMaXN0
KCkubGluaygmbV9qaXQpOwotICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUp
OworICAgICAgICBKSVRTdWJJQyogc3ViSUMgPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkSklUU3Vi
SUMoKTsKKyAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1
Yk9wdGltaXplOworICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlv
blZhbHVlU3ViOworICAgICAgICAKKyAgICAgICAgY29tcGlsZU1hdGhJQyhub2RlLCBzdWJJQywg
bmVlZHNTY3JhdGNoR1BSUmVnLCBuZWVkc1NjcmF0Y2hGUFJSZWcsIHJlcGF0Y2hpbmdGdW5jdGlv
biwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2
aXNpb24gMjAzNzk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEwLDcgKzE3MTAsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZW1pdEJp
bmFyeVNuaXBwZXQ8SklUU3ViR2VuZXJhdG9yPihvcGVyYXRpb25WYWx1ZVN1Yik7CisgICAgICAg
ICAgICBKSVRTdWJJQyogc3ViSUMgPSBjb2RlQmxvY2soKS0+YWRkSklUU3ViSUMoKTsKKyAgICAg
ICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVTdWJPcHRpbWl6
ZTsKKyAgICAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFs
dWVTdWI7CisgICAgICAgICAgICBjb21waWxlTWF0aElDKHN1YklDLCByZXBhdGNoaW5nRnVuY3Rp
b24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAJ
KHJldmlzaW9uIDIwMzc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGht
ZXRpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyNiw3MSArOTI2LDE2IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9tdWwoSW5zdHJ1Y3Rpb24qIGMKIAogdm9pZCBKSVQ6OmVtaXRfb3Bfc3ViKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgaW50IHJlc3VsdCA9IGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgaW50IG9wMSA9IGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQ7Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9
IGdldE9wZXJhbmRUeXBlcyhjb3BpZWRJbnN0cnVjdGlvbihjdXJyZW50SW5zdHJ1Y3Rpb24pKTsK
LSAgICBKU1ZhbHVlUmVncyBsZWZ0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QwKTsKLSAgICBKU1Zh
bHVlUmVncyByaWdodFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSk7Ci0gICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0UmVncyA9IGxlZnRSZWdzOwotICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVnVDI7Ci0g
ICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBJbnZhbGlkRlBSUmVnOwotI2Vsc2UKLSAgICBPcGVyYW5k
VHlwZXMgdHlwZXMgPSBnZXRPcGVyYW5kVHlwZXMoY3VycmVudEluc3RydWN0aW9uKTsKLSAgICBK
U1ZhbHVlUmVncyBsZWZ0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7Ci0gICAgSlNW
YWx1ZVJlZ3MgcmlnaHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKTsKLSAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gbGVmdFJlZ3M7Ci0gICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBy
ZWdUNDsKLSAgICBGUFJSZWcgc2NyYXRjaEZQUiA9IGZwUmVnVDI7Ci0jZW5kaWYKLQotICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbnVsbHB0cjsKLSAgICBpZiAoc2hvdWxkRW1pdFBy
b2ZpbGluZygpKQotICAgICAgICBhcml0aFByb2ZpbGUgPSAmbV9jb2RlQmxvY2stPmFyaXRoUHJv
ZmlsZUZvclBDKGN1cnJlbnRJbnN0cnVjdGlvbik7Ci0KLSAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0
T3BlcmFuZCh0eXBlcy5maXJzdCgpKTsKLSAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQo
dHlwZXMuc2Vjb25kKCkpOwotICAgIAotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCBs
ZWZ0UmVncyk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDIsIHJpZ2h0UmVncyk7Ci0K
LSAgICBKSVRTdWJHZW5lcmF0b3IgZ2VuKGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQsIHJlc3Vs
dFJlZ3MsIGxlZnRSZWdzLCByaWdodFJlZ3MsCi0gICAgICAgIGZwUmVnVDAsIGZwUmVnVDEsIHNj
cmF0Y2hHUFIsIHNjcmF0Y2hGUFIsIGFyaXRoUHJvZmlsZSk7Ci0KLSAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7Ci0KLSAgICBBU1NFUlQoZ2VuLmRpZEVtaXRGYXN0UGF0aCgpKTsKLSAg
ICBnZW4uZW5kSnVtcExpc3QoKS5saW5rKHRoaXMpOwotICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIocmVzdWx0LCByZXN1bHRSZWdzKTsKLQotICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1
bXBMaXN0KCkpOworICAgIEpJVFN1YklDKiBzdWJJQyA9IG1fY29kZUJsb2NrLT5hZGRKSVRTdWJJ
QygpOworICAgIG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5hZGQoY3VycmVudEluc3RydWN0aW9uLCBz
dWJJQyk7CisgICAgZW1pdE1hdGhJQ0Zhc3Qoc3ViSUMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgb3Bl
cmF0aW9uVmFsdWVTdWJQcm9maWxlZCwgb3BlcmF0aW9uVmFsdWVTdWIpOwogfQogCiB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3Bfc3ViKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua0FsbFNsb3dDYXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KG1fc2xvd0Nhc2VzLCBpdGVyLCBtX2J5dGVjb2RlT2Zmc2V0KTsK
LQotICAgIGludCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgSlNWYWx1ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhy
ZWdUMCk7Ci0gICAgSlNWYWx1ZVJlZ3MgcmlnaHRSZWdzID0gSlNWYWx1ZVJlZ3MocmVnVDEpOwot
ICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBsZWZ0UmVnczsKLSNlbHNlCi0gICAgSlNWYWx1
ZVJlZ3MgbGVmdFJlZ3MgPSBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApOwotICAgIEpTVmFsdWVS
ZWdzIHJpZ2h0UmVncyA9IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMik7Ci0gICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncyA9IGxlZnRSZWdzOwotI2VuZGlmCi0KLSAgICBpZiAoc2hvdWxkRW1pdFBy
b2ZpbGluZygpKSB7Ci0gICAgICAgIEFyaXRoUHJvZmlsZSYgYXJpdGhQcm9maWxlID0gbV9jb2Rl
QmxvY2stPmFyaXRoUHJvZmlsZUZvclBDKGN1cnJlbnRJbnN0cnVjdGlvbik7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZCwgcmVzdWx0UmVncywgbGVmdFJl
Z3MsIHJpZ2h0UmVncywgJmFyaXRoUHJvZmlsZSk7Ci0gICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIocmVzdWx0LCByZXN1bHRSZWdzKTsKLSAgICB9IGVsc2UgewotICAgICAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRo
X3N1Yik7Ci0gICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci0gICAgfQorICAgIEpJVFN1YklD
KiBzdWJJQyA9IGJpdHdpc2VfY2FzdDxKSVRTdWJJQyo+KG1faW5zdHJ1Y3Rpb25Ub01hdGhJQy5n
ZXQoY3VycmVudEluc3RydWN0aW9uKSk7CisgICAgZW1pdE1hdGhJQ1Nsb3coc3ViSUMsIGN1cnJl
bnRJbnN0cnVjdGlvbiwgb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9wdGltaXplLCBvcGVyYXRp
b25WYWx1ZVN1YlByb2ZpbGVkLCBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfcG93KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgJKHJldmlzaW9uIDIwMzc5NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJKSVRBZGRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJK
SVRNYXRoSUNJbmxpbmVSZXN1bHQuaCIKICNpbmNsdWRlICJKSVRNdWxHZW5lcmF0b3IuaCIKKyNp
bmNsdWRlICJKSVRTdWJHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5j
bHVkZSAiUmVwYXRjaC5oIgogI2luY2x1ZGUgIlNuaXBwZXRPcGVyYW5kLmgiCkBAIC0yNDAsNiAr
MjQxLDcgQEAgcHVibGljOgogCiB0eXBlZGVmIEpJVE1hdGhJQzxKSVRBZGRHZW5lcmF0b3I+IEpJ
VEFkZElDOwogdHlwZWRlZiBKSVRNYXRoSUM8SklUTXVsR2VuZXJhdG9yPiBKSVRNdWxJQzsKK3R5
cGVkZWYgSklUTWF0aElDPEpJVFN1YkdlbmVyYXRvcj4gSklUU3ViSUM7CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE1hdGhJQ0Zvcndh
cmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUNG
b3J3YXJkcy5oCShyZXZpc2lvbiAyMDM3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE1hdGhJQ0ZvcndhcmRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDExIEBAIG5h
bWVzcGFjZSBKU0MgewogdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvcj4gY2xhc3MgSklUTWF0
aElDOwogY2xhc3MgSklUQWRkR2VuZXJhdG9yOwogY2xhc3MgSklUTXVsR2VuZXJhdG9yOworY2xh
c3MgSklUU3ViR2VuZXJhdG9yOwogCiB0eXBlZGVmIEpJVE1hdGhJQzxKSVRBZGRHZW5lcmF0b3I+
IEpJVEFkZElDOwogdHlwZWRlZiBKSVRNYXRoSUM8SklUTXVsR2VuZXJhdG9yPiBKSVRNdWxJQzsK
K3R5cGVkZWYgSklUTWF0aElDPEpJVFN1YkdlbmVyYXRvcj4gSklUU3ViSUM7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDIwMzc5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MzgsMTEgKzI0MzgsOCBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhCiAgICAgcmV0dXJuIHByb2Zp
bGVkTXVsKGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGFyaXRoUHJvZmlsZSk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWIoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyKQorQUxXQVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdW5wcm9maWxlZFN1YihF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIpCiB7Ci0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgCiAgICAgSlNWYWx1ZSBvcDEgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAgICAgSlNWYWx1ZSBvcDIgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZE9wMik7CiAKQEAgLTI0NTEsMTQgKzI0NDgsMTQgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoYSAtIGIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZVN1YlByb2ZpbGVkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwcm9maWxlZFN1YihF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBib29sIHNob3VsZE9ic2Vy
dmVMSFNBbmRSSFNUeXBlcyA9IHRydWUpCiB7Ci0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgCiAgICAgSlNW
YWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CiAgICAgSlNWYWx1ZSBvcDIg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMik7CiAKKyAgICBpZiAoc2hvdWxkT2JzZXJ2ZUxI
U0FuZFJIU1R5cGVzKQorICAgICAgICBhcml0aFByb2ZpbGUtPm9ic2VydmVMSFNBbmRSSFMob3Ax
LCBvcDIpOworCiAgICAgZG91YmxlIGEgPSBvcDEudG9OdW1iZXIoZXhlYyk7CiAgICAgZG91Ymxl
IGIgPSBvcDIudG9OdW1iZXIoZXhlYyk7CiAgICAgCkBAIC0yNDY3LDYgKzI0NjQsNzAgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYQogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZVN1YihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgcmV0dXJu
IHVucHJvZmlsZWRTdWIoZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMik7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZChFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIsIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKQoreworICAgIFZNKiB2bSA9ICZleGVj
LT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworCisg
ICAgcmV0dXJuIHByb2ZpbGVkU3ViKGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIsIGFyaXRo
UHJvZmlsZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFs
dWVTdWJPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJVFN1YklDKiBzdWJJQykKK3sKKyAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKKworICAgIGF1dG8gbm9uT3B0aW1pemVWYXJpYW50ID0gb3BlcmF0aW9uVmFsdWVTdWJO
b09wdGltaXplOworICAgIGlmIChBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IHN1YklDLT5t
X2dlbmVyYXRvci5hcml0aFByb2ZpbGUoKSkKKyAgICAgICAgYXJpdGhQcm9maWxlLT5vYnNlcnZl
TEhTQW5kUkhTKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDIpKTsKKyAgICBzdWJJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoKnZtLCBleGVjLT5jb2Rl
QmxvY2soKSwgbm9uT3B0aW1pemVWYXJpYW50KTsKKworI2lmIEVOQUJMRShNQVRIX0lDX1NUQVRT
KQorICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5kdW1wTWF0aElDU3RhdHMoKTsKKyNlbmRpZgorCisg
ICAgcmV0dXJuIHVucHJvZmlsZWRTdWIoZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMik7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJOb09wdGlt
aXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKQoreworICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworCisgICAgcmV0
dXJuIHVucHJvZmlsZWRTdWIoZXhlYywgZW5jb2RlZE9wMSwgZW5jb2RlZE9wMik7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE9wdGlt
aXplKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEpJVFN1YklDKiBz
dWJJQykKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKworICAgIGFyaXRoUHJvZmlsZS0+b2JzZXJ2ZUxIU0Fu
ZFJIUyhKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AyKSk7CisgICAgYXV0byBub25PcHRpbWl6ZVZhcmlhbnQgPSBvcGVyYXRpb25WYWx1ZVN1YlBy
b2ZpbGVkTm9PcHRpbWl6ZTsKKyAgICBzdWJJQy0+Z2VuZXJhdGVPdXRPZkxpbmUoKnZtLCBleGVj
LT5jb2RlQmxvY2soKSwgbm9uT3B0aW1pemVWYXJpYW50KTsKKworI2lmIEVOQUJMRShNQVRIX0lD
X1NUQVRTKQorICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5kdW1wTWF0aElDU3RhdHMoKTsKKyNlbmRp
ZgorCisgICAgcmV0dXJuIHByb2ZpbGVkU3ViKGV4ZWMsIGVuY29kZWRPcDEsIGVuY29kZWRPcDIs
IGFyaXRoUHJvZmlsZSwgZmFsc2UpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWROb09wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQ
cm9maWxlKiBhcml0aFByb2ZpbGUsIEpJVFN1YklDKikKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+
dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKworICAg
IHJldHVybiBwcm9maWxlZFN1YihleGVjLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3AyLCBhcml0aFBy
b2ZpbGUpOworfQorCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9m
aWxlckxvZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAy
MDM3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29y
a2luZyBjb3B5KQpAQCAtNDI2LDYgKzQyNiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZhCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlTXVsUHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOwogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1YihFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3Vi
UHJvZmlsZWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIsIEpJ
VFN1YklDKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25WYWx1ZVN1Yk5vT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7
CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlU3ViUHJvZmlsZWRP
cHRpbWl6ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AyLCBBcml0aFByb2ZpbGUqLCBKSVRTdWJJQyopIFdURl9JTlRFUk5BTDsK
K0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZE5v
T3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMiwgQXJpdGhQcm9maWxlKiwgSklUU3ViSUMqKSBXVEZfSU5URVJOQUw7
CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9jZXNzVHlwZVByb2ZpbGVyTG9nKEV4
ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9j
ZXNzU2hhZG93Q2hpY2tlbkxvZyhFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAy
MDM3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDEyICsyNyw1OCBAQAogI2luY2x1ZGUgIkpJVFN1YkdlbmVy
YXRvci5oIgogCiAjaW5jbHVkZSAiQXJpdGhQcm9maWxlLmgiCisjaW5jbHVkZSAiSklUTWF0aElD
LmgiCiAKICNpZiBFTkFCTEUoSklUKQogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBKSVRTdWJH
ZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQpCitKSVRNYXRoSUNJ
bmxpbmVSZXN1bHQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUlubGluZShDQ2FsbEhlbHBlcnMm
IGppdCwgTWF0aElDR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKK3sKKyAgICAvLyBXZSBkZWZhdWx0
IHRvIHNwZWN1bGF0aW5nIGludDMyLgorICAgIE9ic2VydmVkVHlwZSBsaHMgPSBPYnNlcnZlZFR5
cGUoKS53aXRoSW50MzIoKTsKKyAgICBPYnNlcnZlZFR5cGUgcmhzID0gT2JzZXJ2ZWRUeXBlKCku
d2l0aEludDMyKCk7CisgICAgaWYgKG1fYXJpdGhQcm9maWxlKSB7CisgICAgICAgIGxocyA9IG1f
YXJpdGhQcm9maWxlLT5saHNPYnNlcnZlZFR5cGUoKTsKKyAgICAgICAgcmhzID0gbV9hcml0aFBy
b2ZpbGUtPnJoc09ic2VydmVkVHlwZSgpOworICAgIH0KKworICAgIGlmIChsaHMuaXNPbmx5Tm9u
TnVtYmVyKCkgJiYgcmhzLmlzT25seU5vbk51bWJlcigpKQorICAgICAgICByZXR1cm4gSklUTWF0
aElDSW5saW5lUmVzdWx0OjpEb250R2VuZXJhdGU7CisKKyAgICBpZiAobGhzLmlzT25seU51bWJl
cigpICYmIHJocy5pc09ubHlOdW1iZXIoKSkgeworICAgICAgICBpZiAoIWppdC5zdXBwb3J0c0Zs
b2F0aW5nUG9pbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBKSVRNYXRoSUNJbmxpbmVSZXN1bHQ6
OkRvbnRHZW5lcmF0ZTsKKworICAgICAgICBpZiAoIW1fbGVmdE9wZXJhbmQuZGVmaW5pdGVseUlz
TnVtYmVyKCkpCisgICAgICAgICAgICBzdGF0ZS5zbG93UGF0aEp1bXBzLmFwcGVuZChqaXQuYnJh
bmNoSWZOb3ROdW1iZXIobV9sZWZ0LCBtX3NjcmF0Y2hHUFIpKTsKKyAgICAgICAgaWYgKCFtX3Jp
Z2h0T3BlcmFuZC5kZWZpbml0ZWx5SXNOdW1iZXIoKSkKKyAgICAgICAgICAgIHN0YXRlLnNsb3dQ
YXRoSnVtcHMuYXBwZW5kKGppdC5icmFuY2hJZk5vdE51bWJlcihtX3JpZ2h0LCBtX3NjcmF0Y2hH
UFIpKTsKKyAgICAgICAgc3RhdGUuc2xvd1BhdGhKdW1wcy5hcHBlbmQoaml0LmJyYW5jaElmSW50
MzIobV9sZWZ0KSk7CisgICAgICAgIHN0YXRlLnNsb3dQYXRoSnVtcHMuYXBwZW5kKGppdC5icmFu
Y2hJZkludDMyKG1fcmlnaHQpKTsKKyAgICAgICAgaml0LnVuYm94RG91YmxlTm9uRGVzdHJ1Y3Rp
dmUobV9sZWZ0LCBtX2xlZnRGUFIsIG1fc2NyYXRjaEdQUiwgbV9zY3JhdGNoRlBSKTsKKyAgICAg
ICAgaml0LnVuYm94RG91YmxlTm9uRGVzdHJ1Y3RpdmUobV9yaWdodCwgbV9yaWdodEZQUiwgbV9z
Y3JhdGNoR1BSLCBtX3NjcmF0Y2hGUFIpOworICAgICAgICBqaXQuc3ViRG91YmxlKG1fcmlnaHRG
UFIsIG1fbGVmdEZQUik7CisgICAgICAgIGppdC5ib3hEb3VibGUobV9sZWZ0RlBSLCBtX3Jlc3Vs
dCk7CisKKyAgICAgICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVkRmFz
dFBhdGg7CisgICAgfQorICAgIGlmIChsaHMuaXNPbmx5SW50MzIoKSAmJiByaHMuaXNPbmx5SW50
MzIoKSkgeworICAgICAgICBBU1NFUlQoIW1fbGVmdE9wZXJhbmQuaXNDb25zdEludDMyKCkgfHwg
IW1fcmlnaHRPcGVyYW5kLmlzQ29uc3RJbnQzMigpKTsKKyAgICAgICAgc3RhdGUuc2xvd1BhdGhK
dW1wcy5hcHBlbmQoaml0LmJyYW5jaElmTm90SW50MzIobV9sZWZ0KSk7CisgICAgICAgIHN0YXRl
LnNsb3dQYXRoSnVtcHMuYXBwZW5kKGppdC5icmFuY2hJZk5vdEludDMyKG1fcmlnaHQpKTsKKwor
ICAgICAgICBqaXQubW92ZShtX2xlZnQucGF5bG9hZEdQUigpLCBtX3NjcmF0Y2hHUFIpOworICAg
ICAgICBzdGF0ZS5zbG93UGF0aEp1bXBzLmFwcGVuZChqaXQuYnJhbmNoU3ViMzIoQ0NhbGxIZWxw
ZXJzOjpPdmVyZmxvdywgbV9yaWdodC5wYXlsb2FkR1BSKCksIG1fc2NyYXRjaEdQUikpOworCisg
ICAgICAgIGppdC5ib3hJbnQzMihtX3NjcmF0Y2hHUFIsIG1fcmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVkRmFzdFBhdGg7CisgICAgfQorCisg
ICAgcmV0dXJuIEpJVE1hdGhJQ0lubGluZVJlc3VsdDo6R2VuZXJhdGVGdWxsU25pcHBldDsKK30K
KworYm9vbCBKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBq
aXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIGVuZEp1bXBMaXN0LCBDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0LCBib29sIHNob3VsZEVtaXRQcm9maWxpbmcpCiB7CiAg
ICAgQVNTRVJUKG1fc2NyYXRjaEdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICBBU1NFUlQobV9z
Y3JhdGNoR1BSICE9IG1fbGVmdC5wYXlsb2FkR1BSKCkpOwpAQCAtNDMsMjkgKzg5LDI3IEBAIHZv
aWQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEMKICAgICBBU1NFUlQobV9zY3Jh
dGNoRlBSICE9IEludmFsaWRGUFJSZWcpOwogI2VuZGlmCiAKLSAgICBtX2RpZEVtaXRGYXN0UGF0
aCA9IHRydWU7Ci0KICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbGVmdE5vdEludCA9IGppdC5icmFu
Y2hJZk5vdEludDMyKG1fbGVmdCk7CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHJpZ2h0Tm90SW50
ID0gaml0LmJyYW5jaElmTm90SW50MzIobV9yaWdodCk7CiAKICAgICBqaXQubW92ZShtX2xlZnQu
cGF5bG9hZEdQUigpLCBtX3NjcmF0Y2hHUFIpOwotICAgIG1fc2xvd1BhdGhKdW1wTGlzdC5hcHBl
bmQoaml0LmJyYW5jaFN1YjMyKENDYWxsSGVscGVyczo6T3ZlcmZsb3csIG1fcmlnaHQucGF5bG9h
ZEdQUigpLCBtX3NjcmF0Y2hHUFIpKTsKKyAgICBzbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQu
YnJhbmNoU3ViMzIoQ0NhbGxIZWxwZXJzOjpPdmVyZmxvdywgbV9yaWdodC5wYXlsb2FkR1BSKCks
IG1fc2NyYXRjaEdQUikpOwogCiAgICAgaml0LmJveEludDMyKG1fc2NyYXRjaEdQUiwgbV9yZXN1
bHQpOwogCi0gICAgbV9lbmRKdW1wTGlzdC5hcHBlbmQoaml0Lmp1bXAoKSk7CisgICAgZW5kSnVt
cExpc3QuYXBwZW5kKGppdC5qdW1wKCkpOwogCiAgICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9hdGlu
Z1BvaW50KCkpIHsKLSAgICAgICAgbV9zbG93UGF0aEp1bXBMaXN0LmFwcGVuZChsZWZ0Tm90SW50
KTsKLSAgICAgICAgbV9zbG93UGF0aEp1bXBMaXN0LmFwcGVuZChyaWdodE5vdEludCk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgc2xvd1BhdGhKdW1wTGlzdC5hcHBlbmQobGVmdE5vdEludCk7
CisgICAgICAgIHNsb3dQYXRoSnVtcExpc3QuYXBwZW5kKHJpZ2h0Tm90SW50KTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgbGVmdE5vdEludC5saW5rKCZqaXQpOwogICAgIGlm
ICghbV9sZWZ0T3BlcmFuZC5kZWZpbml0ZWx5SXNOdW1iZXIoKSkKLSAgICAgICAgbV9zbG93UGF0
aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNoSWZOb3ROdW1iZXIobV9sZWZ0LCBtX3NjcmF0Y2hH
UFIpKTsKKyAgICAgICAgc2xvd1BhdGhKdW1wTGlzdC5hcHBlbmQoaml0LmJyYW5jaElmTm90TnVt
YmVyKG1fbGVmdCwgbV9zY3JhdGNoR1BSKSk7CiAgICAgaWYgKCFtX3JpZ2h0T3BlcmFuZC5kZWZp
bml0ZWx5SXNOdW1iZXIoKSkKLSAgICAgICAgbV9zbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQu
YnJhbmNoSWZOb3ROdW1iZXIobV9yaWdodCwgbV9zY3JhdGNoR1BSKSk7CisgICAgICAgIHNsb3dQ
YXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hJZk5vdE51bWJlcihtX3JpZ2h0LCBtX3NjcmF0
Y2hHUFIpKTsKIAogICAgIGppdC51bmJveERvdWJsZU5vbkRlc3RydWN0aXZlKG1fbGVmdCwgbV9s
ZWZ0RlBSLCBtX3NjcmF0Y2hHUFIsIG1fc2NyYXRjaEZQUik7CiAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wIHJpZ2h0SXNEb3VibGUgPSBqaXQuYnJhbmNoSWZOb3RJbnQzMihtX3JpZ2h0KTsKQEAgLTc1
LDcgKzExOSw3IEBAIHZvaWQgSklUU3ViR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEMKIAog
ICAgIHJpZ2h0Tm90SW50LmxpbmsoJmppdCk7CiAgICAgaWYgKCFtX3JpZ2h0T3BlcmFuZC5kZWZp
bml0ZWx5SXNOdW1iZXIoKSkKLSAgICAgICAgbV9zbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQu
YnJhbmNoSWZOb3ROdW1iZXIobV9yaWdodCwgbV9zY3JhdGNoR1BSKSk7CisgICAgICAgIHNsb3dQ
YXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hJZk5vdE51bWJlcihtX3JpZ2h0LCBtX3NjcmF0
Y2hHUFIpKTsKIAogICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShtX2xlZnQucGF5bG9hZEdQ
UigpLCBtX2xlZnRGUFIpOwogCkBAIC04NSwxMCArMTI5LDEyIEBAIHZvaWQgSklUU3ViR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEMKICAgICByaWdodFdhc0ludGVnZXIubGluaygmaml0KTsK
IAogICAgIGppdC5zdWJEb3VibGUobV9yaWdodEZQUiwgbV9sZWZ0RlBSKTsKLSAgICBpZiAobV9h
cml0aFByb2ZpbGUpCisgICAgaWYgKG1fYXJpdGhQcm9maWxlICYmIHNob3VsZEVtaXRQcm9maWxp
bmcpCiAgICAgICAgIG1fYXJpdGhQcm9maWxlLT5lbWl0U2V0RG91YmxlKGppdCk7CiAKICAgICBq
aXQuYm94RG91YmxlKG1fbGVmdEZQUiwgbV9yZXN1bHQpOworCisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdWJHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN1YkdlbmVyYXRvci5oCShyZXZpc2lvbiAyMDM3OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN1YkdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMiArMjks
MTcgQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCisjaW5j
bHVkZSAiSklUTWF0aElDSW5saW5lUmVzdWx0LmgiCiAjaW5jbHVkZSAiU25pcHBldE9wZXJhbmQu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3N0cnVjdCBNYXRoSUNHZW5lcmF0aW9uU3RhdGU7CisK
IGNsYXNzIEpJVFN1YkdlbmVyYXRvciB7CiBwdWJsaWM6CisgICAgSklUU3ViR2VuZXJhdG9yKCkg
eyB9CisKICAgICBKSVRTdWJHZW5lcmF0b3IoU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQsIFNu
aXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCwKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBK
U1ZhbHVlUmVncyBsZWZ0LCBKU1ZhbHVlUmVncyByaWdodCwKICAgICAgICAgRlBSUmVnIGxlZnRG
UFIsIEZQUlJlZyByaWdodEZQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIEZQUlJlZyBzY3JhdGNoRlBS
LApAQCAtNTEsMTEgKzU2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2FyaXRoUHJvZmlsZShh
cml0aFByb2ZpbGUpCiAgICAgeyB9CiAKLSAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxI
ZWxwZXJzJik7CisgICAgSklUTWF0aElDSW5saW5lUmVzdWx0IGdlbmVyYXRlSW5saW5lKENDYWxs
SGVscGVycyYsIE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSYpOworICAgIGJvb2wgZ2VuZXJhdGVGYXN0
UGF0aChDQ2FsbEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1wTGlzdCwg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd1BhdGhKdW1wTGlzdCwgYm9vbCBzaG91bGRFbWl0
UHJvZmlsaW5nKTsKIAotICAgIGJvb2wgZGlkRW1pdEZhc3RQYXRoKCkgY29uc3QgeyByZXR1cm4g
bV9kaWRFbWl0RmFzdFBhdGg7IH0KLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBlbmRKdW1w
TGlzdCgpIHsgcmV0dXJuIG1fZW5kSnVtcExpc3Q7IH0KLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0JiBzbG93UGF0aEp1bXBMaXN0KCkgeyByZXR1cm4gbV9zbG93UGF0aEp1bXBMaXN0OyB9Cisg
ICAgYm9vbCBpc0xlZnRPcGVyYW5kVmFsaWRDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc1JpZ2h0T3BlcmFuZFZhbGlkQ29uc3RhbnQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlKCkgY29uc3QgeyByZXR1
cm4gbV9hcml0aFByb2ZpbGU7IH0KIAogcHJpdmF0ZToKICAgICBTbmlwcGV0T3BlcmFuZCBtX2xl
ZnRPcGVyYW5kOwpAQCAtNjgsMTAgKzc0LDYgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcgbV9zY3Jh
dGNoR1BSOwogICAgIEZQUlJlZyBtX3NjcmF0Y2hGUFI7CiAgICAgQXJpdGhQcm9maWxlKiBtX2Fy
aXRoUHJvZmlsZTsKLSAgICBib29sIG1fZGlkRW1pdEZhc3RQYXRoIHsgZmFsc2UgfTsKLQotICAg
IENDYWxsSGVscGVyczo6SnVtcExpc3QgbV9lbmRKdW1wTGlzdDsKLSAgICBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0IG1fc2xvd1BhdGhKdW1wTGlzdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>