<?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>169483</bug_id>
          
          <creation_ts>2017-03-10 13:53:55 -0800</creation_ts>
          <short_desc>The JITs should be able to emit fast TLS loads</short_desc>
          <delta_ts>2017-03-14 10:20:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>169611</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1285902</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-10 13:53:55 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285903</commentid>
    <comment_count>1</comment_count>
      <attachid>304070</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-10 13:55:41 -0800</bug_when>
    <thetext>Created attachment 304070
maybe the patch

It probably doesn&apos;t work yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285953</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-10 16:07:29 -0800</bug_when>
    <thetext>Attachment 304070 did not pass style-queue:


ERROR: Source/WTF/wtf/WTFThreadData.cpp:69:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/FastTLS.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 15 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>1286032</commentid>
    <comment_count>3</comment_count>
      <attachid>304112</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-10 18:29:37 -0800</bug_when>
    <thetext>Created attachment 304112
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286033</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-10 18:32:24 -0800</bug_when>
    <thetext>Attachment 304112 did not pass style-queue:


ERROR: Source/WTF/wtf/WTFThreadData.cpp:69:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/FastTLS.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 15 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>1286050</commentid>
    <comment_count>5</comment_count>
      <attachid>304112</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-03-10 19:30:35 -0800</bug_when>
    <thetext>Comment on attachment 304112
the patch

r=me you got some build issues though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286083</commentid>
    <comment_count>6</comment_count>
      <attachid>304134</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-10 22:06:24 -0800</bug_when>
    <thetext>Created attachment 304134
possible patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286084</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-10 22:06:39 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 304112 [details]
&gt; the patch
&gt; 
&gt; r=me you got some build issues though.

Thanks!  Yeah, I didn&apos;t do a good job on the x86-32 part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286085</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-10 22:08:11 -0800</bug_when>
    <thetext>Attachment 304134 did not pass style-queue:


ERROR: Source/WTF/wtf/WTFThreadData.cpp:69:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WTF/wtf/FastTLS.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 15 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>1286102</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-10 23:18:24 -0800</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/213753</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304070</attachid>
            <date>2017-03-10 13:55:41 -0800</date>
            <delta_ts>2017-03-10 18:29:37 -0800</delta_ts>
            <desc>maybe the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>30083</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNzI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE3LTAzLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIEpJVHMgc2hvdWxkIGJlIGFibGUgdG8gZW1pdCBmYXN0IFRMUyBsb2FkcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDgzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGRlZCBsb2Fk
RnJvbVRMUzMyLzY0L1B0ciB0byB0aGUgTWFjcm9Bc3NlbWJsZXIgYW5kIGFkZGVkIGEgQjMgdGVz
dCBmb3IgdGhpcy4KKworICAgICAgICAqIGFzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oOgorICAg
ICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6bXJzX1RQSURSUk9fRUwwKToKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6
OmxvYWRGcm9tVExTUHRyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkRnJvbVRMUzMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZEZyb21UTFM2NCk6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkRnJvbVRMUzMyKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZfNjQ6OmxvYWRGcm9tVExTNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJs
ZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjphZGNsX2ltKToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjphZGRsX21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjph
ZGRsX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjphbmRsX2ltKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjpvcmxfaW0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6
Om9ybF9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6c3VibF9pbSk6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6Y21wYl9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6Y21wbF9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6Y21wbF9pbSk6CisgICAg
ICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6dGVzdGJfaW0pOgorICAgICAgICAoSlNDOjpYODZBc3Nl
bWJsZXI6Om1vdmJfaThtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZiX3JtKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZsX21yKToKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjptb3ZxX21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZzeGRf
cnIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmdzKToKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6U2luZ2xlSW5zdHJ1Y3Rpb25CdWZm
ZXJXcml0ZXI6Om1lbW9yeU1vZFJNKToKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6dGVzdEZhc3RUTFMpOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKwogMjAx
Ny0wMy0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIEZpeCBDTWFrZSBidWlsZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQVJNNjRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMzcyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTU4OCw2ICsxNTg4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgQ0hFQ0tfREFUQVNJWkUo
KTsKICAgICAgICAgaW5zbihleG90aWNTdG9yZShNRU1PUFNJWkUsIEV4b3RpY1N0b3JlRmVuY2Vf
UmVsZWFzZSwgcmVzdWx0LCBzcmMsIGRzdCkpOwogICAgIH0KKyAgICAKKyNpZiBFTkFCTEUoRkFT
VF9UTFNfSklUKQorICAgIHZvaWQgbXJzX1RQSURSUk9fRUwwKFJlZ2l0ZXJJRCBkc3QpCisgICAg
eworICAgICAgICBpbnNuKGQ1M2JkMDYwIHwgZHN0KTsKKyAgICB9CisjZW5kaWYKIAogICAgIHRl
bXBsYXRlPGludCBkYXRhc2l6ZT4KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3JuKFJlZ2lzdGVy
SUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQgcm0pCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAyMTM3
MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYyNyw2ICs2MjcsMTMgQEAgcHVibGljOgogICAgICAgICBsb2Fk
MzIoYWRkcmVzcywgZGVzdCk7CiAgICAgfQogCisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAg
ICB2b2lkIGxvYWRGcm9tVExTUHRyKHVpbnQzMl90IG9mZnNldCwgUmVnaXN0ZXJJRCBkc3QpCisg
ICAgeworICAgICAgICBsb2FkRnJvbVRMUzMyKG9mZnNldCwgZHN0KTsKKyAgICB9CisjZW5kaWYK
KwogICAgIERhdGFMYWJlbDMyIGxvYWRQdHJXaXRoQWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3Mg
YWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGxvYWQzMldp
dGhBZGRyZXNzT2Zmc2V0UGF0Y2goYWRkcmVzcywgZGVzdCk7CkBAIC05MzQsNiArOTQxLDEzIEBA
IHB1YmxpYzoKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIGRlc3QpOwogICAgIH0KIAorI2lmIEVO
QUJMRShGQVNUX1RMU19KSVQpCisgICAgdm9pZCBsb2FkRnJvbVRMU1B0cih1aW50MzJfdCBvZmZz
ZXQsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbG9hZEZyb21UTFM2NChvZmZzZXQs
IGRzdCk7CisgICAgfQorI2VuZGlmCisKICAgICBEYXRhTGFiZWwzMiBsb2FkUHRyV2l0aEFkZHJl
c3NPZmZzZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBsb2FkNjRXaXRoQWRkcmVzc09mZnNldFBhdGNoKGFkZHJlc3MsIGRlc3Qp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmgJKHJldmlzaW9uIDIxMzcyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MjQ3LDYgKzQyNDcsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CiAgICAgCisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICAvLyBU
aGlzIHdpbGwgdXNlIHNjcmF0Y2ggcmVnaXN0ZXJzIGlmIHRoZSBvZmZzZXQgaXMgbm90IGxlZ2Fs
LgorICAgIAorICAgIHZvaWQgbG9hZEZyb21UTFMzMih1aW50MzJfdCBvZmZzZXQsIFJlZ2lzdGVy
SUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubXJzX1RQSURSUk9fRUwwKGRzdCk7
CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+NyksIGRzdCk7CisgICAgICAgIGxvYWQzMihB
ZGRyZXNzKG9mZnNldCwgZHN0KSwgZHN0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkRnJv
bVRMUzY0KHVpbnQzMl90IG9mZnNldCwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5tcnNfVFBJRFJST19FTDAoZHN0KTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZElt
bTMyKH43KSwgZHN0KTsKKyAgICAgICAgbG9hZDY0KEFkZHJlc3Mob2Zmc2V0LCBkc3QpLCBkc3Qp
OworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIAogICAgIFJlZ2lz
dGVySUQgZXh0cmFjdFNpbXBsZUFkZHJlc3MoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAg
ewogICAgICAgICBpZiAoIWFkZHJlc3Mub2Zmc2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAko
cmV2aXNpb24gMjEzNzI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODU3LDYgKzM4NTcsMTQg
QEAgcHVibGljOgogICAgIHZvaWQgbG9hZEZlbmNlKCkKICAgICB7CiAgICAgfQorICAgIAorI2lm
IEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgdm9pZCBsb2FkRnJvbVRMUzMyKHVpbnQzMl90IG9m
ZnNldCwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ncygpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX21yKG9mZnNldCwgZHN0KTsKKyAgICB9CisjZW5kaWYK
IAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoQnJlYWtwb2ludChDb2RlTG9jYXRpb25MYWJl
bCBpbnN0cnVjdGlvblN0YXJ0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDIx
MzcyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMTcwMSw2ICsxNzAxLDE0IEBAIHB1YmxpYzoKICAg
ICAgICAgc3RvcmU2NChpbW0sIGRlc3QpOwogICAgIH0KICAgICAKKyNpZiBFTkFCTEUoRkFTVF9U
TFNfSklUKQorICAgIHZvaWQgbG9hZEZyb21UTFM2NCh1aW50MzJfdCBvZmZzZXQsIFJlZ2lzdGVy
SUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZ3MoKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubW92bF9tcihvZmZzZXQsIGRzdCk7CisgICAgfQorI2VuZGlmCisKICAgICB2b2lkIHRy
dW5jYXRlRG91YmxlVG9VaW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuY3Z0dHNkMnNpcV9ycihzcmMsIGRlc3QpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShy
ZXZpc2lvbiAyMTM3MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFz
c2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsNiArMjE4LDcgQEAgcHJpdmF0ZToKICNp
ZiBDUFUoWDg2XzY0KQogICAgICAgICBPUF9NT1ZTWERfR3ZFdiAgICAgICAgICAgICAgICAgID0g
MHg2MywKICNlbmRpZgorICAgICAgICBQUkVfR1MgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MHg2NSwKICAgICAgICAgUFJFX09QRVJBTkRfU0laRSAgICAgICAgICAgICAgICA9IDB4NjYsCiAg
ICAgICAgIFBSRV9TU0VfNjYgICAgICAgICAgICAgICAgICAgICAgPSAweDY2LAogICAgICAgICBP
UF9QVVNIX0l6ICAgICAgICAgICAgICAgICAgICAgID0gMHg2OCwKQEAgLTQzMSwxMCArNDMyLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkY2xfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikK
ICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7Ci0gICAgICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BREMs
IGFkZHIpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wQWRkcihPUF9HUk9VUDFf
RXZJYiwgR1JPVVAxX09QX0FEQywgYml0d2lzZV9jYXN0PHVpbnQzMl90PihhZGRyKSk7CiAgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9P
UF9BREMsIGFkZHIpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wQWRkcihPUF9H
Uk9VUDFfRXZJeiwgR1JPVVAxX09QX0FEQywgYml0d2lzZV9jYXN0PHVpbnQzMl90PihhZGRyKSk7
CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAgICAgICB9CiAg
ICAgfQpAQCAtNDU4LDcgKzQ1OSw3IEBAIHB1YmxpYzoKICNpZiAhQ1BVKFg4Nl82NCkKICAgICB2
b2lkIGFkZGxfbXIoY29uc3Qgdm9pZCogYWRkciwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewotICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQUREX0d2RXYsIGRzdCwgYWRkcik7CisgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfQUREX0d2RXYsIGRzdCwgYml0d2lzZV9j
YXN0PHVpbnQzMl90PihhZGRyKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTYzMSwxMCArNjMyLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZGxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikK
ICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7Ci0gICAgICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BREQs
IGFkZHIpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wQWRkcihPUF9HUk9VUDFf
RXZJYiwgR1JPVVAxX09QX0FERCwgYml0d2lzZV9jYXN0PHVpbnQzMl90PihhZGRyKSk7CiAgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9P
UF9BREQsIGFkZHIpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wQWRkcihPUF9H
Uk9VUDFfRXZJeiwgR1JPVVAxX09QX0FERCwgYml0d2lzZV9jYXN0PHVpbnQzMl90PihhZGRyKSk7
CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAgICAgICB9CiAg
ICAgfQpAQCAtODE4LDEwICs4MTksMTAgQEAgcHVibGljOgogICAgIHZvaWQgYW5kbF9pbShpbnQg
aW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVO
RF84XzMyKGltbSkpIHsKLSAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9V
UDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYWRkcik7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3BBZGRyKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiaXR3aXNlX2Nhc3Q8
dWludDMyX3Q+KGFkZHIpKTsKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1t
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwgYWRkcik7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3BBZGRyKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiaXR3aXNl
X2Nhc3Q8dWludDMyX3Q+KGFkZHIpKTsKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTMyKGltbSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTU5LDE3ICsxMTYwLDE3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIG9ybF9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAg
ICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKLSAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBhZGRyKTsKKyAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfR1JPVVAxX0V2SWIsIEdST1VQ
MV9PUF9PUiwgYml0d2lzZV9jYXN0PHVpbnQzMl90PihhZGRyKSk7CiAgICAgICAgICAgICBtX2Zv
cm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9PUiwgYWRkcik7
CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3BBZGRyKE9QX0dST1VQMV9Fdkl6LCBH
Uk9VUDFfT1BfT1IsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYWRkcikpOwogICAgICAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHZv
aWQgb3JsX3JtKFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKLSAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgYWRkcik7CisgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfT1JfRXZHdiwgc3JjLCBiaXR3aXNlX2Nhc3Q8
dWludDMyX3Q+KGFkZHIpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMTM1NywxMCArMTM1OCwxMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdWJsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIpCiAg
ICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewotICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBh
ZGRyKTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfR1JPVVAxX0V2
SWIsIEdST1VQMV9PUF9TVUIsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYWRkcikpOwogICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1Bf
U1VCLCBhZGRyKTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfR1JP
VVAxX0V2SXosIEdST1VQMV9PUF9TVUIsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYWRkcikpOwog
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTE4NTcsNyArMTg1OCw3IEBAIHB1YmxpYzoKICNpZiBDUFUoWDg2KQogICAgIHZvaWQg
Y21wYl9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKLSAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfQ01QLCBhZGRyKTsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wQWRkcihPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09Q
X0NNUCwgYml0d2lzZV9jYXN0PHVpbnQzMl90PihhZGRyKSk7CiAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKICAgICB9CiAjZW5kaWYKQEAgLTE5MzgsMTYgKzE5MzksMTYgQEAg
cHVibGljOgogI2Vsc2UKICAgICB2b2lkIGNtcGxfcm0oUmVnaXN0ZXJJRCByZWcsIGNvbnN0IHZv
aWQqIGFkZHIpCiAgICAgewotICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQ01QX0V2
R3YsIHJlZywgYWRkcik7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfQ01Q
X0V2R3YsIHJlZywgYml0d2lzZV9jYXN0PHVpbnQzMl90PihhZGRyKSk7CiAgICAgfQogCiAgICAg
dm9pZCBjbXBsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIpCiAgICAgewogICAgICAgICBp
ZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewotICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQ01QLCBhZGRyKTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9D
TVAsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYWRkcikpOwogICAgICAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQ01QLCBhZGRyKTsKKyAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfR1JPVVAxX0V2SXosIEdST1VQ
MV9PUF9DTVAsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYWRkcikpOwogICAgICAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIwMjUsNyAr
MjAyNiw3IEBAIHB1YmxpYzoKICNpZiBDUFUoWDg2KQogICAgIHZvaWQgdGVzdGJfaW0oaW50IGlt
bSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7Ci0gICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDNfRWJJYiwgR1JPVVAzX09QX1RFU1QsIGFkZHIpOworICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDNfRWJJYiwgR1JPVVAzX09QX1RFU1QsIGJpdHdpc2Vf
Y2FzdDx1aW50MzJfdD4oYWRkcikpOwogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGlt
bSk7CiAgICAgfQogI2VuZGlmCkBAIC0yMjc5LDcgKzIyODAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBtb3ZiX2k4bShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgQVNT
RVJUKC0xMjggPD0gaW1tICYmIGltbSA8IDEyOCk7Ci0gICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcChPUF9HUk9VUDExX0V2SWIsIEdST1VQMTFfTU9WLCBhZGRyKTsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wQWRkcihPUF9HUk9VUDExX0V2SWIsIEdST1VQMTFfTU9WLCBiaXR3aXNl
X2Nhc3Q8dWludDMyX3Q+KGFkZHIpKTsKICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChp
bW0pOwogICAgIH0KICNlbmRpZgpAQCAtMjMwMSw3ICsyMzAyLDcgQEAgcHVibGljOgogI2lmICFD
UFUoWDg2XzY0KQogICAgIHZvaWQgbW92Yl9ybShSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCog
YWRkcikKICAgICB7Ci0gICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9NT1ZfRWJHYiwg
c3JjLCBhZGRyKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wQWRkcihPUF9NT1ZfRWJH
Yiwgc3JjLCBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGFkZHIpKTsKICAgICB9CiAjZW5kaWYKICAg
ICAKQEAgLTIzNTQsNiArMjM1NSwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyAgICB2
b2lkIG1vdmxfbXIodWludDMyX3QgYWRkciwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3BBZGRyKE9QX01PVl9HdkV2LCBkc3QsIGFkZHIpOworICAg
IH0KKwogI2lmIENQVShYODZfNjQpCiAgICAgdm9pZCBtb3ZxX3JyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRzdCkKICAgICB7CkBAIC0yNDA3LDYgKzI0MTMsMTEgQEAgcHVibGljOgogICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9NT1ZfR3ZFdiwgZHN0LCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZxX21yKHVpbnQzMl90IGFk
ZHIsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
NjRBZGRyKE9QX01PVl9HdkV2LCBkc3QsIGFkZHIpOworICAgIH0KKwogICAgIHZvaWQgbW92cV9p
MzJtKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAg
IG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGJh
c2UsIG9mZnNldCk7CkBAIC0yNDM1LDkgKzI0NDYsMTUgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfTU9WU1hEX0d2RXYsIGRzdCwgc3JjKTsKICAg
ICB9Ci0gICAgCi0gICAgCiAjZWxzZQorICAgIHZvaWQgbW92bF9tcihjb25zdCB2b2lkKiBhZGRy
LCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIGlmIChkc3QgPT0gWDg2UmVnaXN0ZXJz
OjplYXgpCisgICAgICAgICAgICBtb3ZsX21FQVgoYWRkcik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfTU9WX0d2RXYsIGRzdCwgYml0d2lz
ZV9jYXN0PHVpbnQzMl90PihhZGRyKSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZsX3JtKFJlZ2lz
dGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgaWYgKHNyYyA9PSBY
ODZSZWdpc3RlcnM6OmVheCkKQEAgLTI0NDYsMTQgKzI0NjMsNiBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX0V2R3YsIHNyYywgYWRkcik7CiAgICAg
fQogICAgIAotICAgIHZvaWQgbW92bF9tcihjb25zdCB2b2lkKiBhZGRyLCBSZWdpc3RlcklEIGRz
dCkKLSAgICB7Ci0gICAgICAgIGlmIChkc3QgPT0gWDg2UmVnaXN0ZXJzOjplYXgpCi0gICAgICAg
ICAgICBtb3ZsX21FQVgoYWRkcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9NT1ZfR3ZFdiwgZHN0LCBhZGRyKTsKLSAgICB9Ci0KICAgICB2b2lk
IG1vdmxfaTMybShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGFkZHIpOwpA
QCAtMzQwMCw2ICszNDA5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4
KFBSRV9MT0NLKTsKICAgICB9CiAgICAgCisgICAgLy8gQ2F1c2VzIHRoZSBtZW1vcnkgYWNjZXNz
IGluIHRoZSBuZXh0IGluc3RydWN0aW9uIHRvIGJlIG9mZnNldCBieSAlZ3MuIFVzdWFsbHkgeW91
IHVzZQorICAgIC8vIHRoaXMgd2l0aCBhIDMyLWJpdCBhYnNvbHV0ZSBhZGRyZXNzIGxvYWQuIFRo
YXQgImFkZHJlc3MiIGVuZHMgdXAgYmVpbmcgdGhlIG9mZnNldCB0bworICAgIC8vICVncy4gVGhp
cyBwcmVmaXggaXMgaWdub3JlZCBieSBsZWEuIEdldHRpbmcgdGhlIHZhbHVlIG9mICVncyBpcyBo
YXJkIC0geW91IGNhbiBwcmV0dHkKKyAgICAvLyBtdWNoIGp1c3QgdXNlIGl0IGFzIGEgc2VjcmV0
IG9mZnNldC4KKyAgICB2b2lkIGdzKCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZp
eChQUkVfR1MpOworICAgIH0KKyAgICAKICAgICB2b2lkIGNtcHhjaGdiX3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1h
dHRlci50d29CeXRlT3A4KE9QMl9DTVBYQ0hHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOwpAQCAtNDA1
MywxNCArNDA3MSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIAotI2lmICFDUFUoWDg2XzY0KQotICAgICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIG1l
bW9yeU1vZFJNKGludCByZWcsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCisgICAgICAgICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgbWVtb3J5TW9kUk1BZGRyKGludCByZWcsIHVpbnQzMl90IGFkZHJlc3Mp
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLy8gbm9CYXNlICsgTW9kUm1NZW1vcnlO
b0Rpc3AgbWVhbnMgbm9CYXNlICsgTW9kUm1NZW1vcnlEaXNwMzIhCiAgICAgICAgICAgICAgICAg
cHV0TW9kUm0oTW9kUm1NZW1vcnlOb0Rpc3AsIHJlZywgbm9CYXNlKTsKLSAgICAgICAgICAgICAg
ICBwdXRJbnRVbmNoZWNrZWQocmVpbnRlcnByZXRfY2FzdDxpbnQzMl90PihhZGRyZXNzKSk7Cisg
ICAgICAgICAgICAgICAgcHV0SW50VW5jaGVja2VkKGFkZHJlc3MpOwogICAgICAgICAgICAgfQot
I2VuZGlmCisKICAgICAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCB0d29CeXRlc1ZleChPbmVC
eXRlT3Bjb2RlSUQgc2ltZFByZWZpeCwgUmVnaXN0ZXJJRCBpbk9wUmVnLCBSZWdpc3RlcklEIHIp
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcHV0Qnl0ZVVuY2hlY2tlZChWZXhQcmVm
aXg6OlR3b0J5dGVzKTsKQEAgLTQxODUsMTQgKzQyMDIsMTIgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsK
ICAgICAgICAgfQogCi0jaWYgIUNQVShYODZfNjQpCi0gICAgICAgIHZvaWQgb25lQnl0ZU9wKE9u
ZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCisgICAg
ICAgIHZvaWQgb25lQnl0ZU9wQWRkcihPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCB1
aW50MzJfdCBhZGRyZXNzKQogICAgICAgICB7CiAgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlv
bkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOwogICAgICAgICAgICAgd3JpdGVyLnB1dEJ5
dGVVbmNoZWNrZWQob3Bjb2RlKTsKLSAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcs
IGFkZHJlc3MpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNQWRkcihyZWcsIGFkZHJl
c3MpOwogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICB2b2lkIHR3b0J5dGVPcChUd29CeXRl
T3Bjb2RlSUQgb3Bjb2RlKQogICAgICAgICB7CkBAIC00MjI4LDE1ICs0MjQzLDE0IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBpbmRleCwgc2Nh
bGUsIG9mZnNldCk7CiAgICAgICAgIH0KIAotI2lmICFDUFUoWDg2XzY0KQotICAgICAgICB2b2lk
IHR3b0J5dGVPcChUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBjb25zdCB2b2lkKiBh
ZGRyZXNzKQorICAgICAgICB2b2lkIHR3b0J5dGVPcEFkZHIoVHdvQnl0ZU9wY29kZUlEIG9wY29k
ZSwgaW50IHJlZywgdWludDMyX3QgYWRkcmVzcykKICAgICAgICAgewogICAgICAgICAgICAgU2lu
Z2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKICAgICAgICAgICAg
IHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CiAgICAgICAgICAgICB3
cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAgd3JpdGVyLm1lbW9y
eU1vZFJNKHJlZywgYWRkcmVzcyk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk1BZGRy
KHJlZywgYWRkcmVzcyk7CiAgICAgICAgIH0KLSNlbmRpZgorCiAgICAgICAgIHZvaWQgdmV4TmRz
TGlnV2lnVHdvQnl0ZU9wKE9uZUJ5dGVPcGNvZGVJRCBzaW1kUHJlZml4LCBUd29CeXRlT3Bjb2Rl
SUQgb3Bjb2RlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgYSwgUmVnaXN0ZXJJRCBiKQog
ICAgICAgICB7CiAgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0
ZXIobV9idWZmZXIpOwpAQCAtNDM2Nyw2ICs0MzgxLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAg
ICAgICAgIH0KIAorICAgICAgICB2b2lkIG9uZUJ5dGVPcDY0QWRkcihPbmVCeXRlT3Bjb2RlSUQg
b3Bjb2RlLCBpbnQgcmVnLCB1aW50MzJfdCBhZGRyZXNzKQorICAgICAgICB7CisgICAgICAgICAg
ICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAg
ICAgICAgd3JpdGVyLmVtaXRSZXhXKHJlZywgMCwgMCk7CisgICAgICAgICAgICB3cml0ZXIucHV0
Qnl0ZVVuY2hlY2tlZChvcGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNQWRk
cihyZWcsIGFkZHJlc3MpOworICAgICAgICB9CisKICAgICAgICAgdm9pZCB0d29CeXRlT3A2NChU
d29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIHJtKQogICAgICAgICB7
CiAgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZm
ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHJldmlzaW9uIDIxMzcy
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlIDxjbWF0aD4KICNp
bmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4KICNpbmNsdWRlIDx3dGYv
TGlzdER1bXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OdW1iZXJP
ZkNvcmVzLmg+CkBAIC0xNTIxMCw2ICsxNTIxMSwyOCBAQCB2b2lkIHRlc3RXYXNtQWRkcmVzcygp
CiAgICAgICAgIENIRUNLX0VRKG51bVRvU3RvcmUsIHZhbHVlKTsKIH0KIAordm9pZCB0ZXN0RmFz
dFRMUygpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBfcHRocmVhZF9zZXRzcGVj
aWZpY19kaXJlY3QoV1RGX1RFU1RJTkdfS0VZLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19j
YXN0PHVpbnRwdHJfdD4oMHhiZWVmKSkpOworICAgIAorICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgCisgICAgUGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaHBvaW50ID0gcm9vdC0+YXBwZW5kPFBhdGNocG9pbnRWYWx1ZT4ocHJvYywg
cG9pbnRlclR5cGUoKSwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0
ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBqaXQubG9hZEZyb21U
TFNQdHIoZmFzdFRMU09mZnNldEZvcktleShXVEZfVEVTVElOR19LRVkpLCBwYXJhbXNbMF0uZ3By
KCkpOworICAgICAgICB9KTsKKyAgICAKKyAgICByb290LT5hcHBlbmQ8VmFsdWU+KHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHBhdGNocG9pbnQpOworICAgIAorICAgIENIRUNLX0VRKGNvbXBpbGVB
bmRSdW48dWludHB0cl90Piwgc3RhdGljX2Nhc3Q8dWludHB0cl90PigweGJlZWYpKTsKKyNlbmRp
ZgorfQorCiAvLyBNYWtlIHN1cmUgdGhlIGNvbXBpbGVyIGRvZXMgbm90IHRyeSB0byBvcHRpbWl6
ZSBhbnl0aGluZyBvdXQuCiBORVZFUl9JTkxJTkUgZG91YmxlIHplcm8oKQogewpAQCAtMTY3MzYs
NiArMTY3NTksOCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RX
YXNtQm91bmRzQ2hlY2soMTAwMDApKTsKICAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjayhzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSA1KSk7CiAgICAgUlVOKHRlc3RXYXNt
QWRkcmVzcygpKTsKKyAgICAKKyAgICBSVU4odGVzdEZhc3RUTFMoKSk7CiAKICAgICBpZiAoaXNY
ODYoKSkgewogICAgICAgICBSVU4odGVzdEJyYW5jaEJpdEFuZEltbUZ1c2lvbihJZGVudGl0eSwg
SW50NjQsIDEsIEFpcjo6QnJhbmNoVGVzdDMyLCBBaXI6OkFyZzo6VG1wKSk7CkluZGV4OiBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2
aXNpb24gMjEzNzI0KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMyBAQAorMjAxNy0wMy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29t
PgorCisgICAgICAgIFRoZSBKSVRzIHNob3VsZCBiZSBhYmxlIHRvIGVtaXQgZmFzdCBUTFMgbG9h
ZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQ4
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgQ29uc29saWRhdGVkIHdoYXQgd2Uga25vdyBhYm91dCBmYXN0IFRMUyBpbiBGYXN0VExTLmgu
CisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3
dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL0Zhc3RUTFMuaDogQWRkZWQuCisgICAg
ICAgIChXVEY6OmxvYWRGYXN0VExTKToKKyAgICAgICAgKFdURjo6ZmFzdFRMU09mZnNldEZvcktl
eSk6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1dURlRocmVhZERh
dGEuY3BwOgorICAgICAgICAoV1RGOjpXVEZUaHJlYWREYXRhOjpjcmVhdGVBbmRSZWdpc3RlckZv
ckdldHNwZWNpZmljRGlyZWN0KToKKyAgICAgICAgKiB3dGYvV1RGVGhyZWFkRGF0YS5oOgorICAg
ICAgICAoV1RGOjp3dGZUaHJlYWREYXRhKToKKwogMjAxNy0wMy0xMCAgQ3NhYmEgT3N6dHJvZ29u
w6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgQUFyY2g2NCBMaW51
eCBidWlsZGZpeCBhZnRlciByMjEzNjQ1LgpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTM3MjQpCisrKyBTb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAJ
CTBGNjZCMjkyMURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2QjI4ODFEQzk3QkFCMDA0QTFEM0Yg
LyogV2FsbFRpbWUuY3BwICovOyB9OwogCQkwRjY2QjI5MzFEQzk3QkFCMDA0QTFEM0YgLyogV2Fs
bFRpbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NjZCMjg5MURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5oICovOyB9OwogCQkwRjcyNUNBQzFD
NTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzI1Q0FCMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5o
ICovOyB9OworCQkwRjc5QzdDNDFFNzM1MTE4MDBFQjM0RDEgLyogRmFzdFRMUy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3OUM3QzMxRTczNTExODAw
RUIzNEQxIC8qIEZhc3RUTFMuaCAqLzsgfTsKIAkJMEY3QzVGQjYxRDg4NUNGMjAwNDRGNUUyIC8q
IEZhc3RCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8qIEZhc3RCaXRWZWN0b3IuY3BwICov
OyB9OwogCQkwRjgyNEE2ODFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjgyNEE2NDFCNzQ0M0Ew
MDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgKi87IH07CiAJCTBGODI0QTY5MUI3NDQzQTAwMDJF
MzQ1RCAvKiBQYXJraW5nTG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjgyNEE2NTFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5oICovOyB9
OwpAQCAtNDIxLDYgKzQyMiw3IEBACiAJCTBGNjZCMjg4MURDOTdCQUIwMDRBMUQzRiAvKiBXYWxs
VGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYWxsVGltZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjZCMjg5MURDOTdCQUIwMDRBMUQz
RiAvKiBXYWxsVGltZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYWxsVGlt
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjcyNUNBQjFDNTA0NjE2MDBBRDk0
M0EgLyogUmFuZ2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2VT
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3OUM3QzMxRTczNTExODAwRUIz
NEQxIC8qIEZhc3RUTFMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmFzdFRM
Uy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDNUZCNTFEODg1Q0YyMDA0NEY1
RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGYXN0Qml0VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4
MjRBNjQxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGFya2luZ0xvdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGODI0QTY1MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcmtpbmdMb3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTk3NCw2ICs5NzYsNyBAQAogCQkJCTBGRDgxQUM0MTU0RkIyMkUwMDk4
M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi8sCiAJCQkJQThBNDcyQTExNTFBODI1QTAwNDEyM0ZG
IC8qIEZhc3RNYWxsb2MuY3BwICovLAogCQkJCUE4QTQ3MkEyMTUxQTgyNUEwMDQxMjNGRiAvKiBG
YXN0TWFsbG9jLmggKi8sCisJCQkJMEY3OUM3QzMxRTczNTExODAwRUIzNEQxIC8qIEZhc3RUTFMu
aCAqLywKIAkJCQlCMzhGRDdCQzE2ODk1M0U4MDA2NUM5NjkgLyogRmVhdHVyZURlZmluZXMuaCAq
LywKIAkJCQkwRjlEMzM1QjE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCAq
LywKIAkJCQkwRjlEMzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8s
CkBAIC0xNDg2LDYgKzE0ODksNyBAQAogCQkJCTBGMEQ4NUI0MTcyMzRDQzEwMDMzODIxMCAvKiBO
b0xvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0VGMTUxQTgyNUIwMDQxMjNGRiAvKiBO
b25jb3B5YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U0NjUxNkUxOURCMUZCNDAwM0VDQTA1
IC8qIE5TTWFwVGFibGVTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNzlDN0M0MUU3MzUxMTgw
MEVCMzREMSAvKiBGYXN0VExTLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNGNTE1MUE4MjVC
MDA0MTIzRkYgLyogTnVtYmVyT2ZDb3Jlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0UyOUMzM0Ux
NUZGRDc5QjAwNTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUZERTY1MzE5NTNCMjNEMDBDNDhGRkEgLyogT3B0aW9uYWwuaCBpbiBIZWFkZXJzICovLApJ
bmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIxMzcyNCkKKysrIFNvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIHNldChX
VEZfSEVBREVSUwogICAgIERpc2FsbG93Q1R5cGUuaAogICAgIERvdWJseUxpbmtlZExpc3QuaAog
ICAgIEZhc3RNYWxsb2MuaAorICAgIEZhc3RUTFMuaAogICAgIEZlYXR1cmVEZWZpbmVzLmgKICAg
ICBGaWxlUHJpbnRTdHJlYW0uaAogICAgIEZsaXBCeXRlcy5oCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9GYXN0VExTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmFzdFRMUy5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL0Zhc3RUTFMuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgSEFWRShGQVNUX1RMUykKKworI2luY2x1ZGUgPHB0aHJl
YWQuaD4KKyNpbmNsdWRlIDxTeXN0ZW0vcHRocmVhZF9tYWNoZGVwLmg+CisKK25hbWVzcGFjZSBX
VEYgeworCisvLyBLRVkwIGlzIHRha2VuIGJ5IGJtYWxsb2MuCisjZGVmaW5lIFdURl9GQVNUX1RM
U19LRVkwIF9fUFRLX0ZSQU1FV09SS19KQVZBU0NSSVBUQ09SRV9LRVkxCisjZGVmaW5lIFdURl9G
QVNUX1RMU19LRVkxIF9fUFRLX0ZSQU1FV09SS19KQVZBU0NSSVBUQ09SRV9LRVkyCisjZGVmaW5l
IFdURl9GQVNUX1RMU19LRVkyIF9fUFRLX0ZSQU1FV09SS19KQVZBU0NSSVBUQ09SRV9LRVkzCisj
ZGVmaW5lIFdURl9GQVNUX1RMU19LRVkzIF9fUFRLX0ZSQU1FV09SS19KQVZBU0NSSVBUQ09SRV9L
RVk0CisKKy8vIE5PVEU6IFdlIHNob3VsZCBtYW5hZ2Ugb3VyIHVzZSBvZiB0aGVzZSBrZXlzIGhl
cmUuIElmIHlvdSB3YW50IHRvIHVzZSBhIGtleSBmb3Igc29tZXRoaW5nLAorLy8gcHV0IGEgI2Rl
ZmluZSBpbiBoZXJlIHRvIGdpdmUgeW91ciBrZXkgYSBzeW1ib2xpYyBuYW1lLCBsaWtlIHdlIGRv
IGZvciBXVEZUaHJlYWREYXRhLgorCisjZGVmaW5lIFdURl9USFJFQURfREFUQV9LRVkgV1RGX0ZB
U1RfVExTX0tFWTAKKyNkZWZpbmUgV1RGX1RFU1RJTkdfS0VZIFdURl9GQVNUX1RMU19LRVkzCisK
KyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorI2lmIENQVShYODZfNjQpCitpbmxpbmUgdWludHB0
cl90IGxvYWRGYXN0VExTKHVuc2lnbmVkIG9mZnNldCkKK3sKKyAgICB1aW50cHRyX3QgcmVzdWx0
OworICAgIGFzbSB2b2xhdGlsZSgKKyAgICAgICAgIm1vdnEgJSVnczolMSwgJTAiCisgICAgICAg
IDogIj1yIihyZXN1bHQpCisgICAgICAgIDogInIiKG9mZnNldCkKKyAgICAgICAgOiAibWVtb3J5
Iik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbGlmIENQVShBUk02NCkKK2lubGluZSB1aW50
cHRyX3QgbG9hZEZhc3RUTFModW5zaWduZWQgb2Zmc2V0KQoreworICAgIHVpbnRwdHJfdCByZXN1
bHQ7CisgICAgYXNtIHZvbGF0aWxlKAorICAgICAgICAibXJzICUwLCBUUElEUlJPX0VMMFxuXHQi
CisgICAgICAgICJhbmQgJTAsICUwLCAjMHhmZmZmZmZmZmZmZmZmZmY4XG5cdCIKKyAgICAgICAg
ImxkciAlMCwgWyUwLCAlMV0iCisgICAgICAgIDogIj1yIihyZXN1bHQpCisgICAgICAgIDogInIi
KG9mZnNldCkKKyAgICAgICAgOiAibWVtb3J5Iik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNl
bHNlCisjZXJyb3IgIkJhZCBhcmNoaXRlY3R1cmUiCisjZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUo
RkFTVF9UTFNfSklUKQorCitpbmxpbmUgdW5zaWduZWQgZmFzdFRMU09mZnNldEZvcktleSh1bnNp
Z25lZCBsb25nIHNsb3QpCit7CisgICAgcmV0dXJuIHNsb3QgKiBzaXplb2Yodm9pZCopOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIEhBVkUoRkFTVF9UTFMpCisKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaAkocmV2aXNpb24gMjEzNzI0KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm0u
aAkod29ya2luZyBjb3B5KQpAQCAtNzYxLDYgKzc2MSwxNCBAQAogI2RlZmluZSBIQVZFX0xMX1ND
IDEKICNlbmRpZiAvLyBDUFUoQVJNNjQpCiAKKyNpZiBfX2hhc19pbmNsdWRlKDxTeXN0ZW0vcHRo
cmVhZF9tYWNoZGVwLmg+KQorI2RlZmluZSBIQVZFX0ZBU1RfVExTIDEKKyNlbmRpZgorCisjaWYg
KENQVShYODZfNjQpIHx8IENQVShBUk02NCkpICYmIEhBVkUoRkFTVF9UTFMpCisjZGVmaW5lIEVO
QUJMRV9GQVNUX1RMU19KSVQgMQorI2VuZGlmCisKIC8qIFRoaXMgY29udHJvbHMgd2hldGhlciBC
MyBpcyBidWlsdC4gQjMgaXMgbmVlZGVkIGZvciBGVEwgSklUIGFuZCBXZWJBc3NlbWJseSAqLwog
I2lmIEVOQUJMRShGVExfSklUKSB8fCBFTkFCTEUoV0VCQVNTRU1CTFkpCiAjZGVmaW5lIEVOQUJM
RV9CM19KSVQgMQpJbmRleDogU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5jcHAJKHJldmlzaW9uIDIxMzcy
NCkKKysrIFNvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi0jaWYgIVVTRShQVEhSRUFEX0dF
VFNQRUNJRklDX0RJUkVDVCkKKyNpZiAhSEFWRShGQVNUX1RMUykKIFRocmVhZFNwZWNpZmljPFdU
RlRocmVhZERhdGE+KiBXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhOwogI2VuZGlmCiAKQEAgLTYx
LDEyICs2MSwxMiBAQCBXVEZUaHJlYWREYXRhOjp+V1RGVGhyZWFkRGF0YSgpCiAgICAgICAgIG1f
YXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yKG1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlKTsK
IH0KIAotI2lmIFVTRShQVEhSRUFEX0dFVFNQRUNJRklDX0RJUkVDVCkKKyNpZiBIQVZFKEZBU1Rf
VExTKQogV1RGVGhyZWFkRGF0YSYgV1RGVGhyZWFkRGF0YTo6Y3JlYXRlQW5kUmVnaXN0ZXJGb3JH
ZXRzcGVjaWZpY0RpcmVjdCgpCiB7CiAgICAgV1RGVGhyZWFkRGF0YSogZGF0YSA9IG5ldyBXVEZU
aHJlYWREYXRhOwotICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdChkaXJlY3RLZXksIGRh
dGEpOwotICAgIHB0aHJlYWRfa2V5X2luaXRfbnAoZGlyZWN0S2V5LCBbXSh2b2lkKiBkYXRhKXsK
KyAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RIUkVBRF9EQVRBX0tFWSwgZGF0
YSk7CisgICAgcHRocmVhZF9rZXlfaW5pdF9ucChXVEZfVEhSRUFEX0RBVEFfS0VZLCBbXSh2b2lk
KiBkYXRhKXsKICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFdURlRocmVhZERhdGEqPihkYXRh
KTsKICAgICB9KTsKICAgICByZXR1cm4gKmRhdGE7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9XVEZU
aHJlYWREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5o
CShyZXZpc2lvbiAyMTM3MjQpCisrKyBTb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjcsMjUgKzI3LDE1IEBACiAjaWZuZGVmIFdURlRocmVhZERhdGFfaAogI2Rl
ZmluZSBXVEZUaHJlYWREYXRhX2gKIAorI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja0JvdW5kcy5oPgogI2luY2x1ZGUg
PHd0Zi9TdGFja1N0YXRzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0j
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxTeXN0ZW0vcHRocmVhZF9tYWNo
ZGVwLmg+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19QVEtfRlJBTUVXT1JLX0pBVkFTQ1JJUFRD
T1JFX0tFWTEpCi0jZGVmaW5lIFVTRV9QVEhSRUFEX0dFVFNQRUNJRklDX0RJUkVDVCAxCi0jZW5k
aWYKLQotI2lmICFVU0UoUFRIUkVBRF9HRVRTUEVDSUZJQ19ESVJFQ1QpCiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNwZWNpZmljLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotI2VuZGlmCisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAt
MTIyLDggKzExMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCogbV9zYXZlZFN0YWNrUG9pbnRlckF0
Vk1FbnRyeTsKICAgICB2b2lkKiBtX3NhdmVkTGFzdFN0YWNrVG9wOwogCi0jaWYgVVNFKFBUSFJF
QURfR0VUU1BFQ0lGSUNfRElSRUNUKQotICAgIHN0YXRpYyBjb25zdCBwdGhyZWFkX2tleV90IGRp
cmVjdEtleSA9IF9fUFRLX0ZSQU1FV09SS19KQVZBU0NSSVBUQ09SRV9LRVkxOworI2lmIEhBVkUo
RkFTVF9UTFMpCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBXVEZUaHJlYWREYXRhJiBj
cmVhdGVBbmRSZWdpc3RlckZvckdldHNwZWNpZmljRGlyZWN0KCk7CiAjZWxzZQogICAgIHN0YXRp
YyBXVEZfRVhQT1JUREFUQSBUaHJlYWRTcGVjaWZpYzxXVEZUaHJlYWREYXRhPiogc3RhdGljRGF0
YTsKQEAgLTE0MSwxMiArMTMwLDEyIEBAIGlubGluZSBXVEZUaHJlYWREYXRhJiB3dGZUaHJlYWRE
YXRhKCkKICAgICAvLyBXUlQgSmF2YVNjcmlwdENvcmU6CiAgICAgLy8gICAgd3RmVGhyZWFkRGF0
YSgpIGlzIGluaXRpYWxseSBjYWxsZWQgZnJvbSBpbml0aWFsaXplVGhyZWFkaW5nKCksIGVuc3Vy
aW5nCiAgICAgLy8gICAgdGhpcyBpcyBpbml0aWFsbHkgY2FsbGVkIGluIGEgcHRocmVhZF9vbmNl
IGxvY2tlZCBjb250ZXh0LgotI2lmICFVU0UoUFRIUkVBRF9HRVRTUEVDSUZJQ19ESVJFQ1QpCisj
aWYgIUhBVkUoRkFTVF9UTFMpCiAgICAgaWYgKCFXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhKQog
ICAgICAgICBXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhID0gbmV3IFRocmVhZFNwZWNpZmljPFdU
RlRocmVhZERhdGE+OwogICAgIHJldHVybiAqKldURlRocmVhZERhdGE6OnN0YXRpY0RhdGE7CiAj
ZWxzZQotICAgIGlmIChXVEZUaHJlYWREYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8V1RGVGhyZWFk
RGF0YSo+KF9wdGhyZWFkX2dldHNwZWNpZmljX2RpcmVjdChXVEZUaHJlYWREYXRhOjpkaXJlY3RL
ZXkpKSkKKyAgICBpZiAoV1RGVGhyZWFkRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFdURlRocmVh
ZERhdGEqPihfcHRocmVhZF9nZXRzcGVjaWZpY19kaXJlY3QoV1RGX1RIUkVBRF9EQVRBX0tFWSkp
KQogICAgICAgICByZXR1cm4gKmRhdGE7CiAgICAgcmV0dXJuIFdURlRocmVhZERhdGE6OmNyZWF0
ZUFuZFJlZ2lzdGVyRm9yR2V0c3BlY2lmaWNEaXJlY3QoKTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304112</attachid>
            <date>2017-03-10 18:29:37 -0800</date>
            <delta_ts>2017-03-10 22:06:24 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>30446</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNzI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE3LTAzLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIEpJVHMgc2hvdWxkIGJlIGFibGUgdG8gZW1pdCBmYXN0IFRMUyBsb2FkcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDgzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGRlZCBsb2Fk
RnJvbVRMUzMyLzY0L1B0ciB0byB0aGUgTWFjcm9Bc3NlbWJsZXIgYW5kIGFkZGVkIGEgQjMgdGVz
dCBmb3IgdGhpcy4KKworICAgICAgICAqIGFzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oOgorICAg
ICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6bXJzX1RQSURSUk9fRUwwKToKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6
OmxvYWRGcm9tVExTUHRyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojpsb2FkRnJvbVRMUzMyKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZEZyb21UTFM2NCk6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkRnJvbVRMUzMyKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZfNjQ6OmxvYWRGcm9tVExTNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJs
ZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjphZGNsX2ltKToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjphZGRsX21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjph
ZGRsX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjphbmRsX2ltKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjpvcmxfaW0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6
Om9ybF9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6c3VibF9pbSk6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6Y21wYl9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxl
cjo6Y21wbF9ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6Y21wbF9pbSk6CisgICAg
ICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6dGVzdGJfaW0pOgorICAgICAgICAoSlNDOjpYODZBc3Nl
bWJsZXI6Om1vdmJfaThtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZiX3JtKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZsX21yKToKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjptb3ZxX21yKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZzeGRf
cnIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmdzKToKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6U2luZ2xlSW5zdHJ1Y3Rpb25CdWZm
ZXJXcml0ZXI6Om1lbW9yeU1vZFJNKToKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAg
ICAoSlNDOjpCMzo6dGVzdEZhc3RUTFMpOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKwogMjAx
Ny0wMy0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIEZpeCBDTWFrZSBidWlsZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQVJNNjRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJldmlzaW9uIDIxMzcyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTU4OCw2ICsxNTg4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgQ0hFQ0tfREFUQVNJWkUo
KTsKICAgICAgICAgaW5zbihleG90aWNTdG9yZShNRU1PUFNJWkUsIEV4b3RpY1N0b3JlRmVuY2Vf
UmVsZWFzZSwgcmVzdWx0LCBzcmMsIGRzdCkpOwogICAgIH0KKyAgICAKKyNpZiBFTkFCTEUoRkFT
VF9UTFNfSklUKQorICAgIHZvaWQgbXJzX1RQSURSUk9fRUwwKFJlZ2lzdGVySUQgZHN0KQorICAg
IHsKKyAgICAgICAgaW5zbigweGQ1M2JkMDYwIHwgZHN0KTsgLy8gVGhhbmtzLCBvdG9vbCAtdCEK
KyAgICB9CisjZW5kaWYKIAogICAgIHRlbXBsYXRlPGludCBkYXRhc2l6ZT4KICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgb3JuKFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4sIFJlZ2lzdGVySUQg
cm0pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oCShyZXZpc2lvbiAyMTM3MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyNyw2ICs2MjcsMTMg
QEAgcHVibGljOgogICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGVzdCk7CiAgICAgfQogCisjaWYg
RU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICB2b2lkIGxvYWRGcm9tVExTUHRyKHVpbnQzMl90IG9m
ZnNldCwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBsb2FkRnJvbVRMUzMyKG9mZnNl
dCwgZHN0KTsKKyAgICB9CisjZW5kaWYKKwogICAgIERhdGFMYWJlbDMyIGxvYWRQdHJXaXRoQWRk
cmVzc09mZnNldFBhdGNoKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGxvYWQzMldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goYWRkcmVzcywgZGVz
dCk7CkBAIC05MzQsNiArOTQxLDEzIEBAIHB1YmxpYzoKICAgICAgICAgbG9hZDY0KGFkZHJlc3Ms
IGRlc3QpOwogICAgIH0KIAorI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgdm9pZCBsb2Fk
RnJvbVRMU1B0cih1aW50MzJfdCBvZmZzZXQsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAg
ICAgbG9hZEZyb21UTFM2NChvZmZzZXQsIGRzdCk7CisgICAgfQorI2VuZGlmCisKICAgICBEYXRh
TGFiZWwzMiBsb2FkUHRyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHJldHVybiBsb2FkNjRXaXRoQWRkcmVzc09m
ZnNldFBhdGNoKGFkZHJlc3MsIGRlc3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHJldmlzaW9uIDIxMzcy
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTk4LDYgKzM1OTgsMjQgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci5lb3I8NjQ+KGRlc3QsIHNyYywgc3JjKTsKICAgICB9CiAgICAgCisjaWYg
RU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICAvLyBUaGlzIHdpbGwgdXNlIHNjcmF0Y2ggcmVnaXN0
ZXJzIGlmIHRoZSBvZmZzZXQgaXMgbm90IGxlZ2FsLgorICAgIAorICAgIHZvaWQgbG9hZEZyb21U
TFMzMih1aW50MzJfdCBvZmZzZXQsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubXJzX1RQSURSUk9fRUwwKGRzdCk7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0z
Mih+NyksIGRzdCk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKGRzdCwgb2Zmc2V0KSwgZHN0KTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBsb2FkRnJvbVRMUzY0KHVpbnQzMl90IG9mZnNldCwgUmVn
aXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tcnNfVFBJRFJST19FTDAo
ZHN0KTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH43KSwgZHN0KTsKKyAgICAgICAgbG9h
ZDY0KEFkZHJlc3MoZHN0LCBvZmZzZXQpLCBkc3QpOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUo
RkFTVF9UTFNfSklUKQorICAgIAogICAgIC8vIE1pc2MgaGVscGVyIGZ1bmN0aW9ucy4KIAogICAg
IC8vIEludmVydCBhIHJlbGF0aW9uYWwgY29uZGl0aW9uLCBlLmcuID09IGJlY29tZXMgIT0sIDwg
YmVjb21lcyA+PSwgZXRjLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNpb24gMjEzNzI0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODU3LDYgKzM4NTcsMTQgQEAgcHVibGljOgogICAg
IHZvaWQgbG9hZEZlbmNlKCkKICAgICB7CiAgICAgfQorICAgIAorI2lmIEVOQUJMRShGQVNUX1RM
U19KSVQpCisgICAgdm9pZCBsb2FkRnJvbVRMUzMyKHVpbnQzMl90IG9mZnNldCwgUmVnaXN0ZXJJ
RCBkc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ncygpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZsX21yKG9mZnNldCwgZHN0KTsKKyAgICB9CisjZW5kaWYKIAogICAgIHN0YXRpYyB2
b2lkIHJlcGxhY2VXaXRoQnJlYWtwb2ludChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0
YXJ0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDIxMzcyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcwMSw2ICsxNzAxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmU2NChp
bW0sIGRlc3QpOwogICAgIH0KICAgICAKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIHZv
aWQgbG9hZEZyb21UTFM2NCh1aW50MzJfdCBvZmZzZXQsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuZ3MoKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92bF9tcihv
ZmZzZXQsIGRzdCk7CisgICAgfQorI2VuZGlmCisKICAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9V
aW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIuY3Z0dHNkMnNpcV9ycihzcmMsIGRlc3QpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAyMTM3MjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTgsNiArMjE4LDcgQEAgcHJpdmF0ZToKICNpZiBDUFUoWDg2XzY0KQog
ICAgICAgICBPUF9NT1ZTWERfR3ZFdiAgICAgICAgICAgICAgICAgID0gMHg2MywKICNlbmRpZgor
ICAgICAgICBQUkVfR1MgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHg2NSwKICAgICAgICAg
UFJFX09QRVJBTkRfU0laRSAgICAgICAgICAgICAgICA9IDB4NjYsCiAgICAgICAgIFBSRV9TU0Vf
NjYgICAgICAgICAgICAgICAgICAgICAgPSAweDY2LAogICAgICAgICBPUF9QVVNIX0l6ICAgICAg
ICAgICAgICAgICAgICAgID0gMHg2OCwKQEAgLTQzMSwxMCArNDMyLDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFkY2xfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7CiAgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7Ci0gICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BREMsIGFkZHIpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wQWRkcihPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09Q
X0FEQywgYml0d2lzZV9jYXN0PHVpbnQzMl90PihhZGRyKSk7CiAgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BREMsIGFkZHIpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wQWRkcihPUF9HUk9VUDFfRXZJeiwgR1JP
VVAxX09QX0FEQywgYml0d2lzZV9jYXN0PHVpbnQzMl90PihhZGRyKSk7CiAgICAgICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAgICAgICB9CiAgICAgfQpAQCAtNDU4LDcg
KzQ1OSw3IEBAIHB1YmxpYzoKICNpZiAhQ1BVKFg4Nl82NCkKICAgICB2b2lkIGFkZGxfbXIoY29u
c3Qgdm9pZCogYWRkciwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewotICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfQUREX0d2RXYsIGRzdCwgYWRkcik7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcEFkZHIoT1BfQUREX0d2RXYsIGRzdCwgYml0d2lzZV9jYXN0PHVpbnQzMl90Pihh
ZGRyKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTYzMSwxMCArNjMyLDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFkZGxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7CiAgICAgICAg
IGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7Ci0gICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9BREQsIGFkZHIpOworICAgICAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wQWRkcihPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09Q
X0FERCwgYml0d2lzZV9jYXN0PHVpbnQzMl90PihhZGRyKSk7CiAgICAgICAgICAgICBtX2Zvcm1h
dHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9BREQsIGFkZHIpOwor
ICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wQWRkcihPUF9HUk9VUDFfRXZJeiwgR1JP
VVAxX09QX0FERCwgYml0d2lzZV9jYXN0PHVpbnQzMl90PihhZGRyKSk7CiAgICAgICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAgICAgICB9CiAgICAgfQpAQCAtODE4LDEw
ICs4MTksMTAgQEAgcHVibGljOgogICAgIHZvaWQgYW5kbF9pbShpbnQgaW1tLCBjb25zdCB2b2lk
KiBhZGRyKQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsK
LSAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAx
X09QX0FORCwgYWRkcik7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3BBZGRyKE9Q
X0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQU5ELCBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGFkZHIp
KTsKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwg
R1JPVVAxX09QX0FORCwgYWRkcik7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3BB
ZGRyKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQU5ELCBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+
KGFkZHIpKTsKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC0xMTU5LDE3ICsxMTYwLDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIG9y
bF9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgaWYgKENBTl9T
SUdOX0VYVEVORF84XzMyKGltbSkpIHsKLSAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX09SLCBhZGRyKTsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYml0d2lz
ZV9jYXN0PHVpbnQzMl90PihhZGRyKSk7CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlh
dGU4KGltbSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9PUiwgYWRkcik7CisgICAgICAgICAgICBt
X2Zvcm1hdHRlci5vbmVCeXRlT3BBZGRyKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGJp
dHdpc2VfY2FzdDx1aW50MzJfdD4oYWRkcikpOwogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1t
ZWRpYXRlMzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgb3JsX3JtKFJlZ2lz
dGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKLSAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX09SX0V2R3YsIHNyYywgYWRkcik7CisgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcEFkZHIoT1BfT1JfRXZHdiwgc3JjLCBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGFkZHIp
KTsKICAgICB9CiAjZW5kaWYKIApAQCAtMTM1NywxMCArMTM1OCwxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzdWJsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIpCiAgICAgewogICAgICAgICBp
ZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewotICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VCLCBhZGRyKTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9T
VUIsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYWRkcikpOwogICAgICAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfU1VCLCBhZGRyKTsKKyAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfR1JPVVAxX0V2SXosIEdST1VQ
MV9PUF9TVUIsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYWRkcikpOwogICAgICAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE4NTcsNyAr
MTg1OCw3IEBAIHB1YmxpYzoKICNpZiBDUFUoWDg2KQogICAgIHZvaWQgY21wYl9pbShpbnQgaW1t
LCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKLSAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMV9FYkliLCBHUk9VUDFfT1BfQ01QLCBhZGRyKTsKKyAgICAgICAgbV9mb3JtYXR0
ZXIub25lQnl0ZU9wQWRkcihPUF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX0NNUCwgYml0d2lzZV9j
YXN0PHVpbnQzMl90PihhZGRyKSk7CiAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1t
KTsKICAgICB9CiAjZW5kaWYKQEAgLTE5MzgsMTYgKzE5MzksMTYgQEAgcHVibGljOgogI2Vsc2UK
ICAgICB2b2lkIGNtcGxfcm0oUmVnaXN0ZXJJRCByZWcsIGNvbnN0IHZvaWQqIGFkZHIpCiAgICAg
ewotICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfQ01QX0V2R3YsIHJlZywgYWRkcik7
CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfQ01QX0V2R3YsIHJlZywgYml0
d2lzZV9jYXN0PHVpbnQzMl90PihhZGRyKSk7CiAgICAgfQogCiAgICAgdm9pZCBjbXBsX2ltKGlu
dCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIpCiAgICAgewogICAgICAgICBpZiAoQ0FOX1NJR05fRVhU
RU5EXzhfMzIoaW1tKSkgewotICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dS
T1VQMV9FdkliLCBHUk9VUDFfT1BfQ01QLCBhZGRyKTsKKyAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcEFkZHIoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9DTVAsIGJpdHdpc2VfY2Fz
dDx1aW50MzJfdD4oYWRkcikpOwogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChp
bW0pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQ01QLCBhZGRyKTsKKyAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfR1JPVVAxX0V2SXosIEdST1VQMV9PUF9DTVAsIGJpdHdp
c2VfY2FzdDx1aW50MzJfdD4oYWRkcikpOwogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlMzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIwMjUsNyArMjAyNiw3IEBAIHB1Ymxp
YzoKICNpZiBDUFUoWDg2KQogICAgIHZvaWQgdGVzdGJfaW0oaW50IGltbSwgY29uc3Qgdm9pZCog
YWRkcikKICAgICB7Ci0gICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDNfRWJJ
YiwgR1JPVVAzX09QX1RFU1QsIGFkZHIpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2
NChPUF9HUk9VUDNfRWJJYiwgR1JPVVAzX09QX1RFU1QsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4o
YWRkcikpOwogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgfQogI2Vu
ZGlmCkBAIC0yMjc5LDcgKzIyODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtb3ZiX2k4bShpbnQg
aW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgQVNTRVJUKC0xMjggPD0gaW1t
ICYmIGltbSA8IDEyOCk7Ci0gICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDEx
X0V2SWIsIEdST1VQMTFfTU9WLCBhZGRyKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
QWRkcihPUF9HUk9VUDExX0V2SWIsIEdST1VQMTFfTU9WLCBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+
KGFkZHIpKTsKICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwogICAgIH0KICNl
bmRpZgpAQCAtMjMwMSw3ICsyMzAyLDcgQEAgcHVibGljOgogI2lmICFDUFUoWDg2XzY0KQogICAg
IHZvaWQgbW92Yl9ybShSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCogYWRkcikKICAgICB7Ci0g
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9NT1ZfRWJHYiwgc3JjLCBhZGRyKTsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wQWRkcihPUF9NT1ZfRWJHYiwgc3JjLCBiaXR3aXNl
X2Nhc3Q8dWludDMyX3Q+KGFkZHIpKTsKICAgICB9CiAjZW5kaWYKICAgICAKQEAgLTIzNTQsNiAr
MjM1NSwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyAgICB2b2lkIG1vdmxfbXIodWlu
dDMyX3QgYWRkciwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3BBZGRyKE9QX01PVl9HdkV2LCBkc3QsIGFkZHIpOworICAgIH0KKwogI2lmIENQVShY
ODZfNjQpCiAgICAgdm9pZCBtb3ZxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkK
ICAgICB7CkBAIC0yNDA3LDYgKzI0MTMsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9NT1ZfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZxX21yKHVpbnQzMl90IGFkZHIsIFJlZ2lzdGVySUQg
ZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjRBZGRyKE9QX01PVl9H
dkV2LCBkc3QsIGFkZHIpOworICAgIH0KKwogICAgIHZvaWQgbW92cV9pMzJtKGludCBpbW0sIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGJhc2UsIG9mZnNldCk7CkBA
IC0yNDM1LDkgKzI0NDYsMTUgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfTU9WU1hEX0d2RXYsIGRzdCwgc3JjKTsKICAgICB9Ci0gICAgCi0gICAg
CiAjZWxzZQorICAgIHZvaWQgbW92bF9tcihjb25zdCB2b2lkKiBhZGRyLCBSZWdpc3RlcklEIGRz
dCkKKyAgICB7CisgICAgICAgIGlmIChkc3QgPT0gWDg2UmVnaXN0ZXJzOjplYXgpCisgICAgICAg
ICAgICBtb3ZsX21FQVgoYWRkcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcEFkZHIoT1BfTU9WX0d2RXYsIGRzdCwgYml0d2lzZV9jYXN0PHVpbnQzMl90
PihhZGRyKSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZsX3JtKFJlZ2lzdGVySUQgc3JjLCBjb25z
dCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgaWYgKHNyYyA9PSBYODZSZWdpc3RlcnM6OmVh
eCkKQEAgLTI0NDYsMTQgKzI0NjMsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfTU9WX0V2R3YsIHNyYywgYWRkcik7CiAgICAgfQogICAgIAotICAgIHZv
aWQgbW92bF9tcihjb25zdCB2b2lkKiBhZGRyLCBSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAg
ICAgIGlmIChkc3QgPT0gWDg2UmVnaXN0ZXJzOjplYXgpCi0gICAgICAgICAgICBtb3ZsX21FQVgo
YWRkcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9NT1ZfR3ZFdiwgZHN0LCBhZGRyKTsKLSAgICB9Ci0KICAgICB2b2lkIG1vdmxfaTMybShpbnQg
aW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGFkZHIpOwpAQCAtMzQwMCw2ICszNDA5
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9MT0NLKTsKICAg
ICB9CiAgICAgCisgICAgLy8gQ2F1c2VzIHRoZSBtZW1vcnkgYWNjZXNzIGluIHRoZSBuZXh0IGlu
c3RydWN0aW9uIHRvIGJlIG9mZnNldCBieSAlZ3MuIFVzdWFsbHkgeW91IHVzZQorICAgIC8vIHRo
aXMgd2l0aCBhIDMyLWJpdCBhYnNvbHV0ZSBhZGRyZXNzIGxvYWQuIFRoYXQgImFkZHJlc3MiIGVu
ZHMgdXAgYmVpbmcgdGhlIG9mZnNldCB0bworICAgIC8vICVncy4gVGhpcyBwcmVmaXggaXMgaWdu
b3JlZCBieSBsZWEuIEdldHRpbmcgdGhlIHZhbHVlIG9mICVncyBpcyBoYXJkIC0geW91IGNhbiBw
cmV0dHkKKyAgICAvLyBtdWNoIGp1c3QgdXNlIGl0IGFzIGEgc2VjcmV0IG9mZnNldC4KKyAgICB2
b2lkIGdzKCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfR1MpOworICAg
IH0KKyAgICAKICAgICB2b2lkIGNtcHhjaGdiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3A4
KE9QMl9DTVBYQ0hHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOwpAQCAtNDA1MywxNCArNDA3MSwxNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotI2lmICFDUFUo
WDg2XzY0KQotICAgICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIG1lbW9yeU1vZFJNKGludCBy
ZWcsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCisgICAgICAgICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
bWVtb3J5TW9kUk1BZGRyKGludCByZWcsIHVpbnQzMl90IGFkZHJlc3MpCiAgICAgICAgICAgICB7
CisjaWYgQ1BVKFg4Nl82NCkKKyAgICAgICAgICAgICAgICBwdXRNb2RSbVNpYihNb2RSbU1lbW9y
eU5vRGlzcCwgcmVnLCBub0Jhc2UsIG5vSW5kZXgsIDApOworI2Vsc2UKICAgICAgICAgICAgICAg
ICAvLyBub0Jhc2UgKyBNb2RSbU1lbW9yeU5vRGlzcCBtZWFucyBub0Jhc2UgKyBNb2RSbU1lbW9y
eURpc3AzMiEKICAgICAgICAgICAgICAgICBwdXRNb2RSbShNb2RSbU1lbW9yeU5vRGlzcCwgcmVn
LCBub0Jhc2UpOwotICAgICAgICAgICAgICAgIHB1dEludFVuY2hlY2tlZChyZWludGVycHJldF9j
YXN0PGludDMyX3Q+KGFkZHJlc3MpKTsKLSAgICAgICAgICAgIH0KICNlbmRpZgorICAgICAgICAg
ICAgICAgIHB1dEludFVuY2hlY2tlZChhZGRyZXNzKTsKKyAgICAgICAgICAgIH0KKwogICAgICAg
ICAgICAgQUxXQVlTX0lOTElORSB2b2lkIHR3b0J5dGVzVmV4KE9uZUJ5dGVPcGNvZGVJRCBzaW1k
UHJlZml4LCBSZWdpc3RlcklEIGluT3BSZWcsIFJlZ2lzdGVySUQgcikKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBwdXRCeXRlVW5jaGVja2VkKFZleFByZWZpeDo6VHdvQnl0ZXMpOwpA
QCAtNDE4NSwxNCArNDIwNiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgd3JpdGVyLm1lbW9y
eU1vZFJNKHJlZywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwogICAgICAgICB9CiAKLSNp
ZiAhQ1BVKFg4Nl82NCkKLSAgICAgICAgdm9pZCBvbmVCeXRlT3AoT25lQnl0ZU9wY29kZUlEIG9w
Y29kZSwgaW50IHJlZywgY29uc3Qgdm9pZCogYWRkcmVzcykKKyAgICAgICAgdm9pZCBvbmVCeXRl
T3BBZGRyKE9uZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIHVpbnQzMl90IGFkZHJlc3Mp
CiAgICAgICAgIHsKICAgICAgICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdy
aXRlcihtX2J1ZmZlcik7CiAgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChvcGNv
ZGUpOwotICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYWRkcmVzcyk7CisgICAg
ICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk1BZGRyKHJlZywgYWRkcmVzcyk7CiAgICAgICAgIH0K
LSNlbmRpZgogCiAgICAgICAgIHZvaWQgdHdvQnl0ZU9wKFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUp
CiAgICAgICAgIHsKQEAgLTQyMjgsMTUgKzQyNDcsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAg
ICAgICAgfQogCi0jaWYgIUNQVShYODZfNjQpCi0gICAgICAgIHZvaWQgdHdvQnl0ZU9wKFR3b0J5
dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCisgICAgICAg
IHZvaWQgdHdvQnl0ZU9wQWRkcihUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCB1aW50
MzJfdCBhZGRyZXNzKQogICAgICAgICB7CiAgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1
ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOwogICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVV
bmNoZWNrZWQoT1BfMkJZVEVfRVNDQVBFKTsKICAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5j
aGVja2VkKG9wY29kZSk7Ci0gICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBhZGRy
ZXNzKTsKKyAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTUFkZHIocmVnLCBhZGRyZXNzKTsK
ICAgICAgICAgfQotI2VuZGlmCisKICAgICAgICAgdm9pZCB2ZXhOZHNMaWdXaWdUd29CeXRlT3Ao
T25lQnl0ZU9wY29kZUlEIHNpbWRQcmVmaXgsIFR3b0J5dGVPcGNvZGVJRCBvcGNvZGUsIFJlZ2lz
dGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBhLCBSZWdpc3RlcklEIGIpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIFNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CkBA
IC00MzY3LDYgKzQzODUsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdyaXRlci5tZW1vcnlN
b2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICAgICAgfQogCisgICAg
ICAgIHZvaWQgb25lQnl0ZU9wNjRBZGRyKE9uZUJ5dGVPcGNvZGVJRCBvcGNvZGUsIGludCByZWcs
IHVpbnQzMl90IGFkZHJlc3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNpbmdsZUluc3RydWN0
aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CisgICAgICAgICAgICB3cml0ZXIuZW1p
dFJleFcocmVnLCAwLCAwKTsKKyAgICAgICAgICAgIHdyaXRlci5wdXRCeXRlVW5jaGVja2VkKG9w
Y29kZSk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk1BZGRyKHJlZywgYWRkcmVzcyk7
CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIHR3b0J5dGVPcDY0KFR3b0J5dGVPcGNvZGVJRCBv
cGNvZGUsIGludCByZWcsIFJlZ2lzdGVySUQgcm0pCiAgICAgICAgIHsKICAgICAgICAgICAgIFNp
bmdsZUluc3RydWN0aW9uQnVmZmVyV3JpdGVyIHdyaXRlcihtX2J1ZmZlcik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkocmV2aXNpb24gMjEzNzI0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcg
QEAKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUgPHN0cmluZz4K
KyNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KQEAgLTE1
MjEwLDYgKzE1MjExLDI4IEBAIHZvaWQgdGVzdFdhc21BZGRyZXNzKCkKICAgICAgICAgQ0hFQ0tf
RVEobnVtVG9TdG9yZSwgdmFsdWUpOwogfQogCit2b2lkIHRlc3RGYXN0VExTKCkKK3sKKyNpZiBF
TkFCTEUoRkFTVF9UTFNfSklUKQorICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdChXVEZf
VEVTVElOR19LRVksIGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90Pigw
eGJlZWYpKSk7CisgICAgCisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9p
bnQgPSByb290LT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBwb2ludGVyVHlwZSgp
LCBPcmlnaW4oKSk7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAg
ICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIGppdC5sb2FkRnJvbVRMU1B0cihmYXN0VExT
T2Zmc2V0Rm9yS2V5KFdURl9URVNUSU5HX0tFWSksIHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAg
IH0pOworICAgIAorICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgcGF0Y2hwb2ludCk7CisgICAgCisgICAgQ0hFQ0tfRVEoY29tcGlsZUFuZFJ1bjx1aW50
cHRyX3Q+KHByb2MpLCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4YmVlZikpOworI2VuZGlmCit9
CisKIC8vIE1ha2Ugc3VyZSB0aGUgY29tcGlsZXIgZG9lcyBub3QgdHJ5IHRvIG9wdGltaXplIGFu
eXRoaW5nIG91dC4KIE5FVkVSX0lOTElORSBkb3VibGUgemVybygpCiB7CkBAIC0xNjczNiw2ICsx
Njc1OSw4IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdFdhc21C
b3VuZHNDaGVjaygxMDAwMCkpOwogICAgIFJVTih0ZXN0V2FzbUJvdW5kc0NoZWNrKHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAtIDUpKTsKICAgICBSVU4odGVzdFdhc21BZGRy
ZXNzKCkpOworICAgIAorICAgIFJVTih0ZXN0RmFzdFRMUygpKTsKIAogICAgIGlmIChpc1g4Nigp
KSB7CiAgICAgICAgIFJVTih0ZXN0QnJhbmNoQml0QW5kSW1tRnVzaW9uKElkZW50aXR5LCBJbnQ2
NCwgMSwgQWlyOjpCcmFuY2hUZXN0MzIsIEFpcjo6QXJnOjpUbXApKTsKSW5kZXg6IFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMTM3MjQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDE3LTAzLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgVGhlIEpJVHMgc2hvdWxkIGJlIGFibGUgdG8gZW1pdCBmYXN0IFRMUyBsb2Fkcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBD
b25zb2xpZGF0ZWQgd2hhdCB3ZSBrbm93IGFib3V0IGZhc3QgVExTIGluIEZhc3RUTFMuaC4KKwor
ICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9D
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRmFzdFRMUy5oOiBBZGRlZC4KKyAgICAgICAg
KFdURjo6bG9hZEZhc3RUTFMpOgorICAgICAgICAoV1RGOjpmYXN0VExTT2Zmc2V0Rm9yS2V5KToK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvV1RGVGhyZWFkRGF0YS5j
cHA6CisgICAgICAgIChXVEY6OldURlRocmVhZERhdGE6OmNyZWF0ZUFuZFJlZ2lzdGVyRm9yR2V0
c3BlY2lmaWNEaXJlY3QpOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmg6CisgICAgICAg
IChXVEY6Ond0ZlRocmVhZERhdGEpOgorCiAyMDE3LTAzLTEwICBDc2FiYSBPc3p0cm9nb27DoWMg
IDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBBQXJjaDY0IExpbnV4IGJ1
aWxkZml4IGFmdGVyIHIyMTM2NDUuCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDIxMzcyNCkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKIAkJMEY2
NkIyOTIxREM5N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjZCMjg4MURDOTdCQUIwMDRBMUQzRiAvKiBX
YWxsVGltZS5jcHAgKi87IH07CiAJCTBGNjZCMjkzMURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGlt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NkIy
ODkxREM5N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1lLmggKi87IH07CiAJCTBGNzI1Q0FDMUM1MDQ2
MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY3MjVDQUIxQzUwNDYxNjAwQUQ5NDNBIC8qIFJhbmdlU2V0LmggKi87
IH07CisJCTBGNzlDN0M0MUU3MzUxMTgwMEVCMzREMSAvKiBGYXN0VExTLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc5QzdDMzFFNzM1MTE4MDBFQjM0
RDEgLyogRmFzdFRMUy5oICovOyB9OwogCQkwRjdDNUZCNjFEODg1Q0YyMDA0NEY1RTIgLyogRmFz
dEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjdDNUZCNTFEODg1Q0YyMDA0NEY1RTIgLyogRmFzdEJpdFZlY3Rvci5jcHAgKi87IH07
CiAJCTBGODI0QTY4MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODI0QTY0MUI3NDQzQTAwMDJF
MzQ1RCAvKiBQYXJraW5nTG90LmNwcCAqLzsgfTsKIAkJMEY4MjRBNjkxQjc0NDNBMDAwMkUzNDVE
IC8qIFBhcmtpbmdMb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGODI0QTY1MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmggKi87IH07CkBA
IC00MjEsNiArNDIyLDcgQEAKIAkJMEY2NkIyODgxREM5N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1l
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhbGxUaW1lLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NkIyODkxREM5N0JBQjAwNEExRDNGIC8q
IFdhbGxUaW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhbGxUaW1lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzI1Q0FCMUM1MDQ2MTYwMEFEOTQzQSAv
KiBSYW5nZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYW5nZVNldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjc5QzdDMzFFNzM1MTE4MDBFQjM0RDEg
LyogRmFzdFRMUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0VExTLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAv
KiBGYXN0Qml0VmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZhc3RCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgyNEE2
NDFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQYXJraW5nTG90LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY4MjRBNjUxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFya2luZ0xvdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtOTc0LDYgKzk3Niw3IEBACiAJCQkJMEZEODFBQzQxNTRGQjIyRTAwOTgzRTcy
IC8qIEZhc3RCaXRWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzJBMTE1MUE4MjVBMDA0MTIzRkYgLyog
RmFzdE1hbGxvYy5jcHAgKi8sCiAJCQkJQThBNDcyQTIxNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RN
YWxsb2MuaCAqLywKKwkJCQkwRjc5QzdDMzFFNzM1MTE4MDBFQjM0RDEgLyogRmFzdFRMUy5oICov
LAogCQkJCUIzOEZEN0JDMTY4OTUzRTgwMDY1Qzk2OSAvKiBGZWF0dXJlRGVmaW5lcy5oICovLAog
CQkJCTBGOUQzMzVCMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwICovLAog
CQkJCTBGOUQzMzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAqLywKQEAg
LTE0ODYsNiArMTQ4OSw3IEBACiAJCQkJMEYwRDg1QjQxNzIzNENDMTAwMzM4MjEwIC8qIE5vTG9j
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRUYxNTFBODI1QjAwNDEyM0ZGIC8qIE5vbmNv
cHlhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTQ2NTE2RTE5REIxRkI0MDAzRUNBMDUgLyog
TlNNYXBUYWJsZVNQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3OUM3QzQxRTczNTExODAwRUIz
NEQxIC8qIEZhc3RUTFMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3M0Y1MTUxQTgyNUIwMDQx
MjNGRiAvKiBOdW1iZXJPZkNvcmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTI5QzMzRTE1RkZE
NzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RkRFNjUzMTk1M0IyM0QwMEM0OEZGQSAvKiBPcHRpb25hbC5oIGluIEhlYWRlcnMgKi8sCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjEzNzI0KQorKysgU291cmNlL1dURi93dGYv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgc2V0KFdURl9I
RUFERVJTCiAgICAgRGlzYWxsb3dDVHlwZS5oCiAgICAgRG91Ymx5TGlua2VkTGlzdC5oCiAgICAg
RmFzdE1hbGxvYy5oCisgICAgRmFzdFRMUy5oCiAgICAgRmVhdHVyZURlZmluZXMuaAogICAgIEZp
bGVQcmludFN0cmVhbS5oCiAgICAgRmxpcEJ5dGVzLmgKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Zh
c3RUTFMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GYXN0VExTLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dURi93dGYvRmFzdFRMUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBIQVZFKEZBU1RfVExTKQorCisjaW5jbHVkZSA8cHRocmVhZC5o
PgorI2luY2x1ZGUgPFN5c3RlbS9wdGhyZWFkX21hY2hkZXAuaD4KKworbmFtZXNwYWNlIFdURiB7
CisKKy8vIEtFWTAgaXMgdGFrZW4gYnkgYm1hbGxvYy4KKyNkZWZpbmUgV1RGX0ZBU1RfVExTX0tF
WTAgX19QVEtfRlJBTUVXT1JLX0pBVkFTQ1JJUFRDT1JFX0tFWTEKKyNkZWZpbmUgV1RGX0ZBU1Rf
VExTX0tFWTEgX19QVEtfRlJBTUVXT1JLX0pBVkFTQ1JJUFRDT1JFX0tFWTIKKyNkZWZpbmUgV1RG
X0ZBU1RfVExTX0tFWTIgX19QVEtfRlJBTUVXT1JLX0pBVkFTQ1JJUFRDT1JFX0tFWTMKKyNkZWZp
bmUgV1RGX0ZBU1RfVExTX0tFWTMgX19QVEtfRlJBTUVXT1JLX0pBVkFTQ1JJUFRDT1JFX0tFWTQK
KworLy8gTk9URTogV2Ugc2hvdWxkIG1hbmFnZSBvdXIgdXNlIG9mIHRoZXNlIGtleXMgaGVyZS4g
SWYgeW91IHdhbnQgdG8gdXNlIGEga2V5IGZvciBzb21ldGhpbmcsCisvLyBwdXQgYSAjZGVmaW5l
IGluIGhlcmUgdG8gZ2l2ZSB5b3VyIGtleSBhIHN5bWJvbGljIG5hbWUuIFRoaXMgZW5zdXJlcyB0
aGF0IHdlIGRvbid0CisvLyBhY2NpZGVudGFsbHkgdXNlIHRoZSBzYW1lIGtleSBmb3IgbW9yZSB0
aGFuIG9uZSB0aGluZy4KKworI2RlZmluZSBXVEZfVEhSRUFEX0RBVEFfS0VZIFdURl9GQVNUX1RM
U19LRVkwCisjZGVmaW5lIFdURl9URVNUSU5HX0tFWSBXVEZfRkFTVF9UTFNfS0VZMworCisjaWYg
RU5BQkxFKEZBU1RfVExTX0pJVCkKKyNpZiBDUFUoWDg2XzY0KQoraW5saW5lIHVpbnRwdHJfdCBs
b2FkRmFzdFRMUyh1bnNpZ25lZCBvZmZzZXQpCit7CisgICAgdWludHB0cl90IHJlc3VsdDsKKyAg
ICBhc20gdm9sYXRpbGUoCisgICAgICAgICJtb3ZxICUlZ3M6JTEsICUwIgorICAgICAgICA6ICI9
ciIocmVzdWx0KQorICAgICAgICA6ICJyIihvZmZzZXQpCisgICAgICAgIDogIm1lbW9yeSIpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisjZWxpZiBDUFUoQVJNNjQpCitpbmxpbmUgdWludHB0cl90
IGxvYWRGYXN0VExTKHVuc2lnbmVkIHBhc3NlZE9mZnNldCkKK3sKKyAgICB1aW50cHRyX3QgcmVz
dWx0OworICAgIHVpbnRwdHJfdCBvZmZzZXQgPSBwYXNzZWRPZmZzZXQ7CisgICAgYXNtIHZvbGF0
aWxlKAorICAgICAgICAibXJzICUwLCBUUElEUlJPX0VMMFxuXHQiCisgICAgICAgICJhbmQgJTAs
ICUwLCAjMHhmZmZmZmZmZmZmZmZmZmY4XG5cdCIKKyAgICAgICAgImxkciAlMCwgWyUwLCAlMV0i
CisgICAgICAgIDogIj1yIihyZXN1bHQpCisgICAgICAgIDogInIiKG9mZnNldCkKKyAgICAgICAg
OiAibWVtb3J5Iik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbHNlCisjZXJyb3IgIkJhZCBh
cmNoaXRlY3R1cmUiCisjZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoRkFTVF9UTFNfSklUKQorCitp
bmxpbmUgdW5zaWduZWQgZmFzdFRMU09mZnNldEZvcktleSh1bnNpZ25lZCBsb25nIHNsb3QpCit7
CisgICAgcmV0dXJuIHNsb3QgKiBzaXplb2Yodm9pZCopOworfQorCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwordXNpbmcgV1RGOjpmYXN0VExTT2Zmc2V0Rm9yS2V5OworCisjaWYgRU5BQkxFKEZBU1Rf
VExTX0pJVCkKK3VzaW5nIFdURjo6bG9hZEZhc3RUTFM7CisjZW5kaWYKKworI2VuZGlmIC8vIEhB
VkUoRkFTVF9UTFMpCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMjEzNzI0KQorKysgU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNzYxLDYgKzc2MSwxNCBA
QAogI2RlZmluZSBIQVZFX0xMX1NDIDEKICNlbmRpZiAvLyBDUFUoQVJNNjQpCiAKKyNpZiBfX2hh
c19pbmNsdWRlKDxTeXN0ZW0vcHRocmVhZF9tYWNoZGVwLmg+KQorI2RlZmluZSBIQVZFX0ZBU1Rf
VExTIDEKKyNlbmRpZgorCisjaWYgKENQVShYODZfNjQpIHx8IENQVShBUk02NCkpICYmIEhBVkUo
RkFTVF9UTFMpCisjZGVmaW5lIEVOQUJMRV9GQVNUX1RMU19KSVQgMQorI2VuZGlmCisKIC8qIFRo
aXMgY29udHJvbHMgd2hldGhlciBCMyBpcyBidWlsdC4gQjMgaXMgbmVlZGVkIGZvciBGVEwgSklU
IGFuZCBXZWJBc3NlbWJseSAqLwogI2lmIEVOQUJMRShGVExfSklUKSB8fCBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAjZGVmaW5lIEVOQUJMRV9CM19KSVQgMQpJbmRleDogU291cmNlL1dURi93dGYvV1RG
VGhyZWFkRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0
YS5jcHAJKHJldmlzaW9uIDIxMzcyNCkKKysrIFNvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewog
Ci0jaWYgIVVTRShQVEhSRUFEX0dFVFNQRUNJRklDX0RJUkVDVCkKKyNpZiAhSEFWRShGQVNUX1RM
UykKIFRocmVhZFNwZWNpZmljPFdURlRocmVhZERhdGE+KiBXVEZUaHJlYWREYXRhOjpzdGF0aWNE
YXRhOwogI2VuZGlmCiAKQEAgLTYxLDEyICs2MSwxMiBAQCBXVEZUaHJlYWREYXRhOjp+V1RGVGhy
ZWFkRGF0YSgpCiAgICAgICAgIG1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yKG1fZGVmYXVs
dEF0b21pY1N0cmluZ1RhYmxlKTsKIH0KIAotI2lmIFVTRShQVEhSRUFEX0dFVFNQRUNJRklDX0RJ
UkVDVCkKKyNpZiBIQVZFKEZBU1RfVExTKQogV1RGVGhyZWFkRGF0YSYgV1RGVGhyZWFkRGF0YTo6
Y3JlYXRlQW5kUmVnaXN0ZXJGb3JHZXRzcGVjaWZpY0RpcmVjdCgpCiB7CiAgICAgV1RGVGhyZWFk
RGF0YSogZGF0YSA9IG5ldyBXVEZUaHJlYWREYXRhOwotICAgIF9wdGhyZWFkX3NldHNwZWNpZmlj
X2RpcmVjdChkaXJlY3RLZXksIGRhdGEpOwotICAgIHB0aHJlYWRfa2V5X2luaXRfbnAoZGlyZWN0
S2V5LCBbXSh2b2lkKiBkYXRhKXsKKyAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RG
X1RIUkVBRF9EQVRBX0tFWSwgZGF0YSk7CisgICAgcHRocmVhZF9rZXlfaW5pdF9ucChXVEZfVEhS
RUFEX0RBVEFfS0VZLCBbXSh2b2lkKiBkYXRhKXsKICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0
PFdURlRocmVhZERhdGEqPihkYXRhKTsKICAgICB9KTsKICAgICByZXR1cm4gKmRhdGE7CkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvV1RGVGhyZWFkRGF0YS5oCShyZXZpc2lvbiAyMTM3MjQpCisrKyBTb3VyY2UvV1RGL3d0
Zi9XVEZUaHJlYWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMjUgKzI3LDE1IEBACiAjaWZuZGVm
IFdURlRocmVhZERhdGFfaAogI2RlZmluZSBXVEZUaHJlYWREYXRhX2gKIAorI2luY2x1ZGUgPHd0
Zi9GYXN0VExTLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGFj
a0JvdW5kcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRl
IDxTeXN0ZW0vcHRocmVhZF9tYWNoZGVwLmg+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19QVEtf
RlJBTUVXT1JLX0pBVkFTQ1JJUFRDT1JFX0tFWTEpCi0jZGVmaW5lIFVTRV9QVEhSRUFEX0dFVFNQ
RUNJRklDX0RJUkVDVCAxCi0jZW5kaWYKLQotI2lmICFVU0UoUFRIUkVBRF9HRVRTUEVDSUZJQ19E
SVJFQ1QpCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgotI2VuZGlmCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBu
YW1lc3BhY2UgV1RGIHsKIApAQCAtMTIyLDggKzExMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCog
bV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKICAgICB2b2lkKiBtX3NhdmVkTGFzdFN0YWNr
VG9wOwogCi0jaWYgVVNFKFBUSFJFQURfR0VUU1BFQ0lGSUNfRElSRUNUKQotICAgIHN0YXRpYyBj
b25zdCBwdGhyZWFkX2tleV90IGRpcmVjdEtleSA9IF9fUFRLX0ZSQU1FV09SS19KQVZBU0NSSVBU
Q09SRV9LRVkxOworI2lmIEhBVkUoRkFTVF9UTFMpCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBXVEZUaHJlYWREYXRhJiBjcmVhdGVBbmRSZWdpc3RlckZvckdldHNwZWNpZmljRGlyZWN0
KCk7CiAjZWxzZQogICAgIHN0YXRpYyBXVEZfRVhQT1JUREFUQSBUaHJlYWRTcGVjaWZpYzxXVEZU
aHJlYWREYXRhPiogc3RhdGljRGF0YTsKQEAgLTE0MSwxMiArMTMwLDEyIEBAIGlubGluZSBXVEZU
aHJlYWREYXRhJiB3dGZUaHJlYWREYXRhKCkKICAgICAvLyBXUlQgSmF2YVNjcmlwdENvcmU6CiAg
ICAgLy8gICAgd3RmVGhyZWFkRGF0YSgpIGlzIGluaXRpYWxseSBjYWxsZWQgZnJvbSBpbml0aWFs
aXplVGhyZWFkaW5nKCksIGVuc3VyaW5nCiAgICAgLy8gICAgdGhpcyBpcyBpbml0aWFsbHkgY2Fs
bGVkIGluIGEgcHRocmVhZF9vbmNlIGxvY2tlZCBjb250ZXh0LgotI2lmICFVU0UoUFRIUkVBRF9H
RVRTUEVDSUZJQ19ESVJFQ1QpCisjaWYgIUhBVkUoRkFTVF9UTFMpCiAgICAgaWYgKCFXVEZUaHJl
YWREYXRhOjpzdGF0aWNEYXRhKQogICAgICAgICBXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhID0g
bmV3IFRocmVhZFNwZWNpZmljPFdURlRocmVhZERhdGE+OwogICAgIHJldHVybiAqKldURlRocmVh
ZERhdGE6OnN0YXRpY0RhdGE7CiAjZWxzZQotICAgIGlmIChXVEZUaHJlYWREYXRhKiBkYXRhID0g
c3RhdGljX2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KF9wdGhyZWFkX2dldHNwZWNpZmljX2RpcmVjdChX
VEZUaHJlYWREYXRhOjpkaXJlY3RLZXkpKSkKKyAgICBpZiAoV1RGVGhyZWFkRGF0YSogZGF0YSA9
IHN0YXRpY19jYXN0PFdURlRocmVhZERhdGEqPihfcHRocmVhZF9nZXRzcGVjaWZpY19kaXJlY3Qo
V1RGX1RIUkVBRF9EQVRBX0tFWSkpKQogICAgICAgICByZXR1cm4gKmRhdGE7CiAgICAgcmV0dXJu
IFdURlRocmVhZERhdGE6OmNyZWF0ZUFuZFJlZ2lzdGVyRm9yR2V0c3BlY2lmaWNEaXJlY3QoKTsK
ICNlbmRpZgo=
</data>
<flag name="review"
          id="325700"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304134</attachid>
            <date>2017-03-10 22:06:24 -0800</date>
            <delta_ts>2017-03-10 22:06:24 -0800</delta_ts>
            <desc>possible patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>32963</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNzI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE3LTAzLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIEpJVHMgc2hvdWxkIGJlIGFibGUgdG8gZW1pdCBmYXN0IFRMUyBsb2FkcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDgzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyLgorICAgICAgICAKKyAgICAgICAgQWRkZWQgbG9hZEZy
b21UTFMzMi82NC9QdHIgdG8gdGhlIE1hY3JvQXNzZW1ibGVyIGFuZCBhZGRlZCBhIEIzIHRlc3Qg
Zm9yIHRoaXMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaDoKKyAgICAg
ICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6Om1yc19UUElEUlJPX0VMMCk6CisgICAgICAgICogYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjps
b2FkRnJvbVRMU1B0cik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bG9hZEZyb21UTFMzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxvYWRGcm9tVExTNjQpOgorICAgICAg
ICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bG9hZEZyb21UTFMzMik6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2XzY0Ojpsb2FkRnJvbVRMUzY0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVy
Lmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRjbF9pbSk6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6YWRkbF9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRk
bF9pbSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kbF9pbSk6CisgICAgICAgIChK
U0M6Olg4NkFzc2VtYmxlcjo6b3JsX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpv
cmxfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnN1YmxfaW0pOgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6OmNtcGJfaW0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6
OmNtcGxfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmNtcGxfaW0pOgorICAgICAg
ICAoSlNDOjpYODZBc3NlbWJsZXI6OnRlc3RiX2ltKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjptb3ZiX2k4bSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92Yl9ybSk6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92bF9tcik6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6bW92cV9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92c3hkX3Jy
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpncyk6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OlNpbmdsZUluc3RydWN0aW9uQnVmZmVy
V3JpdGVyOjptZW1vcnlNb2RSTSk6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RGYXN0VExTKToKKyAgICAgICAgKEpTQzo6QjM6OnJ1bik6CisKIDIwMTct
MDMtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBGaXggQ01ha2UgYnVpbGQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTTY0QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCShyZXZpc2lvbiAyMTM3MjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1ODgsNiArMTU4OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIENIRUNLX0RBVEFTSVpFKCk7
CiAgICAgICAgIGluc24oZXhvdGljU3RvcmUoTUVNT1BTSVpFLCBFeG90aWNTdG9yZUZlbmNlX1Jl
bGVhc2UsIHJlc3VsdCwgc3JjLCBkc3QpKTsKICAgICB9CisgICAgCisjaWYgRU5BQkxFKEZBU1Rf
VExTX0pJVCkKKyAgICB2b2lkIG1yc19UUElEUlJPX0VMMChSZWdpc3RlcklEIGRzdCkKKyAgICB7
CisgICAgICAgIGluc24oMHhkNTNiZDA2MCB8IGRzdCk7IC8vIFRoYW5rcywgb3Rvb2wgLXQhCisg
ICAgfQorI2VuZGlmCiAKICAgICB0ZW1wbGF0ZTxpbnQgZGF0YXNpemU+CiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIG9ybihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJt
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaAkocmV2aXNpb24gMjEzNzI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MjcsNiArNjI3LDEzIEBA
IHB1YmxpYzoKICAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRlc3QpOwogICAgIH0KIAorI2lmIEVO
QUJMRShGQVNUX1RMU19KSVQpCisgICAgdm9pZCBsb2FkRnJvbVRMU1B0cih1aW50MzJfdCBvZmZz
ZXQsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbG9hZEZyb21UTFMzMihvZmZzZXQs
IGRzdCk7CisgICAgfQorI2VuZGlmCisKICAgICBEYXRhTGFiZWwzMiBsb2FkUHRyV2l0aEFkZHJl
c3NPZmZzZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBsb2FkMzJXaXRoQWRkcmVzc09mZnNldFBhdGNoKGFkZHJlc3MsIGRlc3Qp
OwpAQCAtOTM0LDYgKzk0MSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCBk
ZXN0KTsKICAgICB9CiAKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIHZvaWQgbG9hZEZy
b21UTFNQdHIodWludDMyX3Qgb2Zmc2V0LCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAg
IGxvYWRGcm9tVExTNjQob2Zmc2V0LCBkc3QpOworICAgIH0KKyNlbmRpZgorCiAgICAgRGF0YUxh
YmVsMzIgbG9hZFB0cldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goQWRkcmVzcyBhZGRyZXNzLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICByZXR1cm4gbG9hZDY0V2l0aEFkZHJlc3NPZmZz
ZXRQYXRjaChhZGRyZXNzLCBkZXN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCShyZXZpc2lvbiAyMTM3MjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzU5OCw2ICszNTk4LDI0IEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIuZW9yPDY0PihkZXN0LCBzcmMsIHNyYyk7CiAgICAgfQogICAgIAorI2lmIEVO
QUJMRShGQVNUX1RMU19KSVQpCisgICAgLy8gVGhpcyB3aWxsIHVzZSBzY3JhdGNoIHJlZ2lzdGVy
cyBpZiB0aGUgb2Zmc2V0IGlzIG5vdCBsZWdhbC4KKyAgICAKKyAgICB2b2lkIGxvYWRGcm9tVExT
MzIodWludDMyX3Qgb2Zmc2V0LCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm1yc19UUElEUlJPX0VMMChkc3QpOworICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIo
fjcpLCBkc3QpOworICAgICAgICBsb2FkMzIoQWRkcmVzcyhkc3QsIG9mZnNldCksIGRzdCk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgbG9hZEZyb21UTFM2NCh1aW50MzJfdCBvZmZzZXQsIFJlZ2lz
dGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubXJzX1RQSURSUk9fRUwwKGRz
dCk7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+NyksIGRzdCk7CisgICAgICAgIGxvYWQ2
NChBZGRyZXNzKGRzdCwgb2Zmc2V0KSwgZHN0KTsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKEZB
U1RfVExTX0pJVCkKKyAgICAKICAgICAvLyBNaXNjIGhlbHBlciBmdW5jdGlvbnMuCiAKICAgICAv
LyBJbnZlcnQgYSByZWxhdGlvbmFsIGNvbmRpdGlvbiwgZS5nLiA9PSBiZWNvbWVzICE9LCA8IGJl
Y29tZXMgPj0sIGV0Yy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDIxMzcyNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMzg1Nyw2ICszODU3LDE0IEBAIHB1YmxpYzoKICAgICB2
b2lkIGxvYWRGZW5jZSgpCiAgICAgewogICAgIH0KKyAgICAKKyNpZiBFTkFCTEUoRkFTVF9UTFNf
SklUKQorICAgIHZvaWQgbG9hZEZyb21UTFMzMih1aW50MzJfdCBvZmZzZXQsIFJlZ2lzdGVySUQg
ZHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZ3MoKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubW92bF9tcihvZmZzZXQsIGRzdCk7CisgICAgfQorI2VuZGlmCiAKICAgICBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aEJyZWFrcG9pbnQoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFy
dCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2XzY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiAyMTM3MjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE3MDEsNiArMTcwMSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlNjQoaW1t
LCBkZXN0KTsKICAgICB9CiAgICAgCisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICB2b2lk
IGxvYWRGcm9tVExTNjQodWludDMyX3Qgb2Zmc2V0LCBSZWdpc3RlcklEIGRzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLmdzKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfbXIob2Zm
c2V0LCBkc3QpOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvVWlu
dDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLmN2dHRzZDJzaXFfcnIoc3JjLCBkZXN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMjEzNzI0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjE4LDYgKzIxOCw3IEBAIHByaXZhdGU6CiAjaWYgQ1BVKFg4Nl82NCkKICAg
ICAgICAgT1BfTU9WU1hEX0d2RXYgICAgICAgICAgICAgICAgICA9IDB4NjMsCiAjZW5kaWYKKyAg
ICAgICAgUFJFX0dTICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4NjUsCiAgICAgICAgIFBS
RV9PUEVSQU5EX1NJWkUgICAgICAgICAgICAgICAgPSAweDY2LAogICAgICAgICBQUkVfU1NFXzY2
ICAgICAgICAgICAgICAgICAgICAgID0gMHg2NiwKICAgICAgICAgT1BfUFVTSF9JeiAgICAgICAg
ICAgICAgICAgICAgICA9IDB4NjgsCkBAIC00MzEsMTAgKzQzMiwxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhZGNsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIpCiAgICAgewogICAgICAgICBp
ZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewotICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQURDLCBhZGRyKTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9B
REMsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYWRkcikpOwogICAgICAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQURDLCBhZGRyKTsKKyAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfR1JPVVAxX0V2SXosIEdST1VQ
MV9PUF9BREMsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYWRkcikpOwogICAgICAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ1OCw3ICs0
NTksNyBAQCBwdWJsaWM6CiAjaWYgIUNQVShYODZfNjQpCiAgICAgdm9pZCBhZGRsX21yKGNvbnN0
IHZvaWQqIGFkZHIsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKLSAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0FERF9HdkV2LCBkc3QsIGFkZHIpOworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3BBZGRyKE9QX0FERF9HdkV2LCBkc3QsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYWRk
cikpOwogICAgIH0KICNlbmRpZgogCkBAIC02MzEsMTAgKzYzMiwxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhZGRsX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFkZHIpCiAgICAgewogICAgICAgICBp
ZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIoaW1tKSkgewotICAgICAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQURELCBhZGRyKTsKKyAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9B
REQsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYWRkcikpOwogICAgICAgICAgICAgbV9mb3JtYXR0
ZXIuaW1tZWRpYXRlOChpbW0pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQURELCBhZGRyKTsKKyAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfR1JPVVAxX0V2SXosIEdST1VQ
MV9PUF9BREQsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYWRkcikpOwogICAgICAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICAgICAgfQogICAgIH0KQEAgLTgxOCwxMCAr
ODE5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFuZGxfaW0oaW50IGltbSwgY29uc3Qgdm9pZCog
YWRkcikKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihpbW0pKSB7Ci0g
ICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SWIsIEdST1VQMV9P
UF9BTkQsIGFkZHIpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wQWRkcihPUF9H
Uk9VUDFfRXZJYiwgR1JPVVAxX09QX0FORCwgYml0d2lzZV9jYXN0PHVpbnQzMl90PihhZGRyKSk7
CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAxX0V2SXosIEdS
T1VQMV9PUF9BTkQsIGFkZHIpOworICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wQWRk
cihPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0FORCwgYml0d2lzZV9jYXN0PHVpbnQzMl90Pihh
ZGRyKSk7CiAgICAgICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMTE1OSwxNyArMTE2MCwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvcmxf
aW0oaW50IGltbSwgY29uc3Qgdm9pZCogYWRkcikKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lH
Tl9FWFRFTkRfOF8zMihpbW0pKSB7Ci0gICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3Ao
T1BfR1JPVVAxX0V2SWIsIEdST1VQMV9PUF9PUiwgYWRkcik7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3BBZGRyKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfT1IsIGJpdHdpc2Vf
Y2FzdDx1aW50MzJfdD4oYWRkcikpOwogICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRl
OChpbW0pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0
ZU9wKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfT1IsIGFkZHIpOworICAgICAgICAgICAgbV9m
b3JtYXR0ZXIub25lQnl0ZU9wQWRkcihPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX09SLCBiaXR3
aXNlX2Nhc3Q8dWludDMyX3Q+KGFkZHIpKTsKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVk
aWF0ZTMyKGltbSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIG9ybF9ybShSZWdpc3Rl
cklEIHNyYywgY29uc3Qgdm9pZCogYWRkcikKICAgICB7Ci0gICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9PUl9Fdkd2LCBzcmMsIGFkZHIpOworICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3BBZGRyKE9QX09SX0V2R3YsIHNyYywgYml0d2lzZV9jYXN0PHVpbnQzMl90PihhZGRyKSk7
CiAgICAgfQogI2VuZGlmCiAKQEAgLTEzNTcsMTAgKzEzNTgsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgc3VibF9pbShpbnQgaW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgaWYg
KENBTl9TSUdOX0VYVEVORF84XzMyKGltbSkpIHsKLSAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcChPUF9HUk9VUDFfRXZJYiwgR1JPVVAxX09QX1NVQiwgYWRkcik7CisgICAgICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3BBZGRyKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfU1VC
LCBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGFkZHIpKTsKICAgICAgICAgICAgIG1fZm9ybWF0dGVy
LmltbWVkaWF0ZTgoaW1tKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX1NVQiwgYWRkcik7CisgICAg
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3BBZGRyKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFf
T1BfU1VCLCBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGFkZHIpKTsKICAgICAgICAgICAgIG1fZm9y
bWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xODU3LDcgKzE4
NTgsNyBAQCBwdWJsaWM6CiAjaWYgQ1BVKFg4NikKICAgICB2b2lkIGNtcGJfaW0oaW50IGltbSwg
Y29uc3Qgdm9pZCogYWRkcikKICAgICB7Ci0gICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9HUk9VUDFfRWJJYiwgR1JPVVAxX09QX0NNUCwgYWRkcik7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcEFkZHIoT1BfR1JPVVAxX0ViSWIsIEdST1VQMV9PUF9DTVAsIGJpdHdpc2VfY2Fz
dDx1aW50MzJfdD4oYWRkcikpOwogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7
CiAgICAgfQogI2VuZGlmCkBAIC0xOTM4LDE2ICsxOTM5LDE2IEBAIHB1YmxpYzoKICNlbHNlCiAg
ICAgdm9pZCBjbXBsX3JtKFJlZ2lzdGVySUQgcmVnLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsK
LSAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0NNUF9Fdkd2LCByZWcsIGFkZHIpOwor
ICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3BBZGRyKE9QX0NNUF9Fdkd2LCByZWcsIGJpdHdp
c2VfY2FzdDx1aW50MzJfdD4oYWRkcikpOwogICAgIH0KIAogICAgIHZvaWQgY21wbF9pbShpbnQg
aW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVO
RF84XzMyKGltbSkpIHsKLSAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9V
UDFfRXZJYiwgR1JPVVAxX09QX0NNUCwgYWRkcik7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3BBZGRyKE9QX0dST1VQMV9FdkliLCBHUk9VUDFfT1BfQ01QLCBiaXR3aXNlX2Nhc3Q8
dWludDMyX3Q+KGFkZHIpKTsKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1t
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChP
UF9HUk9VUDFfRXZJeiwgR1JPVVAxX09QX0NNUCwgYWRkcik7CisgICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3BBZGRyKE9QX0dST1VQMV9Fdkl6LCBHUk9VUDFfT1BfQ01QLCBiaXR3aXNl
X2Nhc3Q8dWludDMyX3Q+KGFkZHIpKTsKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0
ZTMyKGltbSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMDI1LDcgKzIwMjYsNyBAQCBwdWJsaWM6
CiAjaWYgQ1BVKFg4NikKICAgICB2b2lkIHRlc3RiX2ltKGludCBpbW0sIGNvbnN0IHZvaWQqIGFk
ZHIpCiAgICAgewotICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAzX0ViSWIs
IEdST1VQM19PUF9URVNULCBhZGRyKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wQWRk
cihPUF9HUk9VUDNfRWJJYiwgR1JPVVAzX09QX1RFU1QsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4o
YWRkcikpOwogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CiAgICAgfQogI2Vu
ZGlmCkBAIC0yMjc5LDcgKzIyODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtb3ZiX2k4bShpbnQg
aW1tLCBjb25zdCB2b2lkKiBhZGRyKQogICAgIHsKICAgICAgICAgQVNTRVJUKC0xMjggPD0gaW1t
ICYmIGltbSA8IDEyOCk7Ci0gICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDEx
X0V2SWIsIEdST1VQMTFfTU9WLCBhZGRyKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
QWRkcihPUF9HUk9VUDExX0V2SWIsIEdST1VQMTFfTU9WLCBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+
KGFkZHIpKTsKICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwogICAgIH0KICNl
bmRpZgpAQCAtMjMwMSw3ICsyMzAyLDcgQEAgcHVibGljOgogI2lmICFDUFUoWDg2XzY0KQogICAg
IHZvaWQgbW92Yl9ybShSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCogYWRkcikKICAgICB7Ci0g
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9NT1ZfRWJHYiwgc3JjLCBhZGRyKTsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wQWRkcihPUF9NT1ZfRWJHYiwgc3JjLCBiaXR3aXNl
X2Nhc3Q8dWludDMyX3Q+KGFkZHIpKTsKICAgICB9CiAjZW5kaWYKICAgICAKQEAgLTIzNTQsNiAr
MjM1NSwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyAgICB2b2lkIG1vdmxfbXIodWlu
dDMyX3QgYWRkciwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3BBZGRyKE9QX01PVl9HdkV2LCBkc3QsIGFkZHIpOworICAgIH0KKwogI2lmIENQVShY
ODZfNjQpCiAgICAgdm9pZCBtb3ZxX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkK
ICAgICB7CkBAIC0yNDA3LDYgKzI0MTMsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3A2NChPUF9NT1ZfR3ZFdiwgZHN0LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNl
dCk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZxX21yKHVpbnQzMl90IGFkZHIsIFJlZ2lzdGVySUQg
ZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjRBZGRyKE9QX01PVl9H
dkV2LCBkc3QsIGFkZHIpOworICAgIH0KKwogICAgIHZvaWQgbW92cV9pMzJtKGludCBpbW0sIGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9u
ZUJ5dGVPcDY0KE9QX0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGJhc2UsIG9mZnNldCk7CkBA
IC0yNDM1LDI4ICsyNDQ2LDI2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcDY0KE9QX01PVlNYRF9HdkV2LCBkc3QsIHNyYyk7CiAgICAgfQotICAgIAotICAg
IAogI2Vsc2UKLSAgICB2b2lkIG1vdmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFk
ZHIpCi0gICAgewotICAgICAgICBpZiAoc3JjID09IFg4NlJlZ2lzdGVyczo6ZWF4KQotICAgICAg
ICAgICAgbW92bF9FQVhtKGFkZHIpOwotICAgICAgICBlbHNlIAotICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX01PVl9Fdkd2LCBzcmMsIGFkZHIpOwotICAgIH0KLSAgICAKICAg
ICB2b2lkIG1vdmxfbXIoY29uc3Qgdm9pZCogYWRkciwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewog
ICAgICAgICBpZiAoZHN0ID09IFg4NlJlZ2lzdGVyczo6ZWF4KQogICAgICAgICAgICAgbW92bF9t
RUFYKGFkZHIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3AoT1BfTU9WX0d2RXYsIGRzdCwgYWRkcik7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3BBZGRyKE9QX01PVl9HdkV2LCBkc3QsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYWRkcikp
OwogICAgIH0KIAorICAgIHZvaWQgbW92bF9ybShSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCog
YWRkcikKKyAgICB7CisgICAgICAgIGlmIChzcmMgPT0gWDg2UmVnaXN0ZXJzOjplYXgpCisgICAg
ICAgICAgICBtb3ZsX0VBWG0oYWRkcik7CisgICAgICAgIGVsc2UgCisgICAgICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3BBZGRyKE9QX01PVl9Fdkd2LCBzcmMsIGJpdHdpc2VfY2FzdDx1aW50
MzJfdD4oYWRkcikpOworICAgIH0KKyAgICAKICAgICB2b2lkIG1vdmxfaTMybShpbnQgaW1tLCBj
b25zdCB2b2lkKiBhZGRyKQogICAgIHsKLSAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9Q
X0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGFkZHIpOworICAgICAgICBtX2Zvcm1hdHRlci5v
bmVCeXRlT3BBZGRyKE9QX0dST1VQMTFfRXZJeiwgR1JPVVAxMV9NT1YsIGJpdHdpc2VfY2FzdDx1
aW50MzJfdD4oYWRkcikpOwogICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGUzMihpbW0pOwog
ICAgIH0KICNlbmRpZgpAQCAtMjQ5NCw3ICsyNTAzLDcgQEAgcHVibGljOgogI2lmICFDUFUoWDg2
XzY0KQogICAgIHZvaWQgbW92emJsX21yKGNvbnN0IHZvaWQqIGFkZHJlc3MsIFJlZ2lzdGVySUQg
ZHN0KQogICAgIHsKLSAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9NT1ZaWF9HdkVi
LCBkc3QsIGFkZHJlc3MpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3BBZGRyKE9QMl9N
T1ZaWF9HdkViLCBkc3QsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYWRkcmVzcykpOwogICAgIH0K
ICNlbmRpZgogCkBAIC0yNjA0LDcgKzI2MTMsNyBAQCBwdWJsaWM6CiAjZWxzZQogICAgIHZvaWQg
Y21vdmxfbXIoQ29uZGl0aW9uIGNvbmQsIGNvbnN0IHZvaWQqIGFkZHIsIFJlZ2lzdGVySUQgZHN0
KQogICAgIHsKLSAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKGNtb3ZjYyhjb25kKSwgZHN0
LCBhZGRyKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wQWRkcihjbW92Y2MoY29uZCks
IGRzdCwgYml0d2lzZV9jYXN0PHVpbnQzMl90PihhZGRyKSk7CiAgICAgfQogI2VuZGlmCiAKQEAg
LTI2NzcsNyArMjY4Niw3IEBAIHB1YmxpYzoKICNpZiAhQ1BVKFg4Nl82NCkKICAgICB2b2lkIGpt
cF9tKGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewotICAgICAgICBtX2Zvcm1hdHRlci5vbmVC
eXRlT3AoT1BfR1JPVVA1X0V2LCBHUk9VUDVfT1BfSk1QTiwgYWRkcmVzcyk7CisgICAgICAgIG1f
Zm9ybWF0dGVyLm9uZUJ5dGVPcEFkZHIoT1BfR1JPVVA1X0V2LCBHUk9VUDVfT1BfSk1QTiwgYml0
d2lzZV9jYXN0PHVpbnQzMl90PihhZGRyZXNzKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTI4NTMs
NyArMjg2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZHNkX21yKGNvbnN0IHZvaWQqIGFkZHJl
c3MsIFhNTVJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4
KFBSRV9TU0VfRjIpOwotICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0FERFNEX1Zz
ZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCBhZGRyZXNzKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdv
Qnl0ZU9wQWRkcihPUDJfQUREU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJpdHdpc2VfY2Fz
dDx1aW50MzJfdD4oYWRkcmVzcykpOwogICAgIH0KICNlbmRpZgogCkBAIC0yOTExLDcgKzI5MjAs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjdnRzaTJzZF9tcihjb25zdCB2b2lkKiBhZGRyZXNzLCBY
TU1SZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVf
U1NFX0YyKTsKLSAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9DVlRTSTJTRF9Wc2RF
ZCwgKFJlZ2lzdGVySUQpZHN0LCBhZGRyZXNzKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0
ZU9wQWRkcihPUDJfQ1ZUU0kyU0RfVnNkRWQsIChSZWdpc3RlcklEKWRzdCwgYml0d2lzZV9jYXN0
PHVpbnQzMl90PihhZGRyZXNzKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTMwNjgsMTIgKzMwNzcs
MTIgQEAgcHVibGljOgogICAgIHZvaWQgbW92c2RfbXIoY29uc3Qgdm9pZCogYWRkcmVzcywgWE1N
UmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NT
RV9GMik7Ci0gICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfTU9WU0RfVnNkV3NkLCAo
UmVnaXN0ZXJJRClkc3QsIGFkZHJlc3MpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3BB
ZGRyKE9QMl9NT1ZTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgYml0d2lzZV9jYXN0PHVpbnQz
Ml90PihhZGRyZXNzKSk7CiAgICAgfQogICAgIHZvaWQgbW92c2Rfcm0oWE1NUmVnaXN0ZXJJRCBz
cmMsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX1NTRV9GMik7Ci0gICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfTU9WU0Rf
V3NkVnNkLCAoUmVnaXN0ZXJJRClzcmMsIGFkZHJlc3MpOworICAgICAgICBtX2Zvcm1hdHRlci50
d29CeXRlT3BBZGRyKE9QMl9NT1ZTRF9Xc2RWc2QsIChSZWdpc3RlcklEKXNyYywgYml0d2lzZV9j
YXN0PHVpbnQzMl90PihhZGRyZXNzKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTM0MDAsNiArMzQw
OSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnByZWZpeChQUkVfTE9DSyk7CiAg
ICAgfQogICAgIAorICAgIC8vIENhdXNlcyB0aGUgbWVtb3J5IGFjY2VzcyBpbiB0aGUgbmV4dCBp
bnN0cnVjdGlvbiB0byBiZSBvZmZzZXQgYnkgJWdzLiBVc3VhbGx5IHlvdSB1c2UKKyAgICAvLyB0
aGlzIHdpdGggYSAzMi1iaXQgYWJzb2x1dGUgYWRkcmVzcyBsb2FkLiBUaGF0ICJhZGRyZXNzIiBl
bmRzIHVwIGJlaW5nIHRoZSBvZmZzZXQgdG8KKyAgICAvLyAlZ3MuIFRoaXMgcHJlZml4IGlzIGln
bm9yZWQgYnkgbGVhLiBHZXR0aW5nIHRoZSB2YWx1ZSBvZiAlZ3MgaXMgaGFyZCAtIHlvdSBjYW4g
cHJldHR5CisgICAgLy8gbXVjaCBqdXN0IHVzZSBpdCBhcyBhIHNlY3JldCBvZmZzZXQuCisgICAg
dm9pZCBncygpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX0dTKTsKKyAg
ICB9CisgICAgCiAgICAgdm9pZCBjbXB4Y2hnYl9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9w
OChPUDJfQ01QWENIR2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKQEAgLTQwNTMsMTQgKzQwNzEsMTcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSNpZiAhQ1BV
KFg4Nl82NCkKLSAgICAgICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtZW1vcnlNb2RSTShpbnQg
cmVnLCBjb25zdCB2b2lkKiBhZGRyZXNzKQorICAgICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lk
IG1lbW9yeU1vZFJNQWRkcihpbnQgcmVnLCB1aW50MzJfdCBhZGRyZXNzKQogICAgICAgICAgICAg
eworI2lmIENQVShYODZfNjQpCisgICAgICAgICAgICAgICAgcHV0TW9kUm1TaWIoTW9kUm1NZW1v
cnlOb0Rpc3AsIHJlZywgbm9CYXNlLCBub0luZGV4LCAwKTsKKyNlbHNlCiAgICAgICAgICAgICAg
ICAgLy8gbm9CYXNlICsgTW9kUm1NZW1vcnlOb0Rpc3AgbWVhbnMgbm9CYXNlICsgTW9kUm1NZW1v
cnlEaXNwMzIhCiAgICAgICAgICAgICAgICAgcHV0TW9kUm0oTW9kUm1NZW1vcnlOb0Rpc3AsIHJl
Zywgbm9CYXNlKTsKLSAgICAgICAgICAgICAgICBwdXRJbnRVbmNoZWNrZWQocmVpbnRlcnByZXRf
Y2FzdDxpbnQzMl90PihhZGRyZXNzKSk7Ci0gICAgICAgICAgICB9CiAjZW5kaWYKKyAgICAgICAg
ICAgICAgICBwdXRJbnRVbmNoZWNrZWQoYWRkcmVzcyk7CisgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgIEFMV0FZU19JTkxJTkUgdm9pZCB0d29CeXRlc1ZleChPbmVCeXRlT3Bjb2RlSUQgc2lt
ZFByZWZpeCwgUmVnaXN0ZXJJRCBpbk9wUmVnLCBSZWdpc3RlcklEIHIpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgcHV0Qnl0ZVVuY2hlY2tlZChWZXhQcmVmaXg6OlR3b0J5dGVzKTsK
QEAgLTQxODUsMTQgKzQyMDYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdyaXRlci5tZW1v
cnlNb2RSTShyZWcsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICAgICAgfQogCi0j
aWYgIUNQVShYODZfNjQpCi0gICAgICAgIHZvaWQgb25lQnl0ZU9wKE9uZUJ5dGVPcGNvZGVJRCBv
cGNvZGUsIGludCByZWcsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCisgICAgICAgIHZvaWQgb25lQnl0
ZU9wQWRkcihPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCB1aW50MzJfdCBhZGRyZXNz
KQogICAgICAgICB7CiAgICAgICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3
cml0ZXIobV9idWZmZXIpOwogICAgICAgICAgICAgd3JpdGVyLnB1dEJ5dGVVbmNoZWNrZWQob3Bj
b2RlKTsKLSAgICAgICAgICAgIHdyaXRlci5tZW1vcnlNb2RSTShyZWcsIGFkZHJlc3MpOworICAg
ICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNQWRkcihyZWcsIGFkZHJlc3MpOwogICAgICAgICB9
Ci0jZW5kaWYKIAogICAgICAgICB2b2lkIHR3b0J5dGVPcChUd29CeXRlT3Bjb2RlSUQgb3Bjb2Rl
KQogICAgICAgICB7CkBAIC00MjI4LDE1ICs0MjQ3LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICB3cml0ZXIubWVtb3J5TW9kUk0ocmVnLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAg
ICAgICAgIH0KIAotI2lmICFDUFUoWDg2XzY0KQotICAgICAgICB2b2lkIHR3b0J5dGVPcChUd29C
eXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVnLCBjb25zdCB2b2lkKiBhZGRyZXNzKQorICAgICAg
ICB2b2lkIHR3b0J5dGVPcEFkZHIoVHdvQnl0ZU9wY29kZUlEIG9wY29kZSwgaW50IHJlZywgdWlu
dDMyX3QgYWRkcmVzcykKICAgICAgICAgewogICAgICAgICAgICAgU2luZ2xlSW5zdHJ1Y3Rpb25C
dWZmZXJXcml0ZXIgd3JpdGVyKG1fYnVmZmVyKTsKICAgICAgICAgICAgIHdyaXRlci5wdXRCeXRl
VW5jaGVja2VkKE9QXzJCWVRFX0VTQ0FQRSk7CiAgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVu
Y2hlY2tlZChvcGNvZGUpOwotICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNKHJlZywgYWRk
cmVzcyk7CisgICAgICAgICAgICB3cml0ZXIubWVtb3J5TW9kUk1BZGRyKHJlZywgYWRkcmVzcyk7
CiAgICAgICAgIH0KLSNlbmRpZgorCiAgICAgICAgIHZvaWQgdmV4TmRzTGlnV2lnVHdvQnl0ZU9w
KE9uZUJ5dGVPcGNvZGVJRCBzaW1kUHJlZml4LCBUd29CeXRlT3Bjb2RlSUQgb3Bjb2RlLCBSZWdp
c3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgYSwgUmVnaXN0ZXJJRCBiKQogICAgICAgICB7CiAgICAg
ICAgICAgICBTaW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOwpA
QCAtNDM2Nyw2ICs0Mzg1LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3cml0ZXIubWVtb3J5
TW9kUk0ocmVnLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgICAgIH0KIAorICAg
ICAgICB2b2lkIG9uZUJ5dGVPcDY0QWRkcihPbmVCeXRlT3Bjb2RlSUQgb3Bjb2RlLCBpbnQgcmVn
LCB1aW50MzJfdCBhZGRyZXNzKQorICAgICAgICB7CisgICAgICAgICAgICBTaW5nbGVJbnN0cnVj
dGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLmVt
aXRSZXhXKHJlZywgMCwgMCk7CisgICAgICAgICAgICB3cml0ZXIucHV0Qnl0ZVVuY2hlY2tlZChv
cGNvZGUpOworICAgICAgICAgICAgd3JpdGVyLm1lbW9yeU1vZFJNQWRkcihyZWcsIGFkZHJlc3Mp
OworICAgICAgICB9CisKICAgICAgICAgdm9pZCB0d29CeXRlT3A2NChUd29CeXRlT3Bjb2RlSUQg
b3Bjb2RlLCBpbnQgcmVnLCBSZWdpc3RlcklEIHJtKQogICAgICAgICB7CiAgICAgICAgICAgICBT
aW5nbGVJbnN0cnVjdGlvbkJ1ZmZlcldyaXRlciB3cml0ZXIobV9idWZmZXIpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHJldmlzaW9uIDIxMzcyNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3
IEBACiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlIDxjbWF0aD4KICNpbmNsdWRlIDxzdHJpbmc+
CisjaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4KICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KICNp
bmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OdW1iZXJPZkNvcmVzLmg+CkBAIC0x
NTIxMCw2ICsxNTIxMSwyOCBAQCB2b2lkIHRlc3RXYXNtQWRkcmVzcygpCiAgICAgICAgIENIRUNL
X0VRKG51bVRvU3RvcmUsIHZhbHVlKTsKIH0KIAordm9pZCB0ZXN0RmFzdFRMUygpCit7CisjaWYg
RU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RG
X1RFU1RJTkdfS0VZLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
MHhiZWVmKSkpOworICAgIAorICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgCisgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBv
aW50ID0gcm9vdC0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgcG9pbnRlclR5cGUo
KSwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAg
ICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Ug
YWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBqaXQubG9hZEZyb21UTFNQdHIoZmFzdFRM
U09mZnNldEZvcktleShXVEZfVEVTVElOR19LRVkpLCBwYXJhbXNbMF0uZ3ByKCkpOworICAgICAg
ICB9KTsKKyAgICAKKyAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHBhdGNocG9pbnQpOworICAgIAorICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48dWlu
dHB0cl90Pihwcm9jKSwgc3RhdGljX2Nhc3Q8dWludHB0cl90PigweGJlZWYpKTsKKyNlbmRpZgor
fQorCiAvLyBNYWtlIHN1cmUgdGhlIGNvbXBpbGVyIGRvZXMgbm90IHRyeSB0byBvcHRpbWl6ZSBh
bnl0aGluZyBvdXQuCiBORVZFUl9JTkxJTkUgZG91YmxlIHplcm8oKQogewpAQCAtMTY3MzYsNiAr
MTY3NTksOCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RXYXNt
Qm91bmRzQ2hlY2soMTAwMDApKTsKICAgICBSVU4odGVzdFdhc21Cb3VuZHNDaGVjayhzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSA1KSk7CiAgICAgUlVOKHRlc3RXYXNtQWRk
cmVzcygpKTsKKyAgICAKKyAgICBSVU4odGVzdEZhc3RUTFMoKSk7CiAKICAgICBpZiAoaXNYODYo
KSkgewogICAgICAgICBSVU4odGVzdEJyYW5jaEJpdEFuZEltbUZ1c2lvbihJZGVudGl0eSwgSW50
NjQsIDEsIEFpcjo6QnJhbmNoVGVzdDMyLCBBaXI6OkFyZzo6VG1wKSk7CkluZGV4OiBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNp
b24gMjEzNzI0KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyMyBAQAorMjAxNy0wMy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgor
CisgICAgICAgIFRoZSBKSVRzIHNob3VsZCBiZSBhYmxlIHRvIGVtaXQgZmFzdCBUTFMgbG9hZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQ4Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IEtlaXRoIE1pbGxlci4KKyAgICAgICAgCisgICAgICAgIENv
bnNvbGlkYXRlZCB3aGF0IHdlIGtub3cgYWJvdXQgZmFzdCBUTFMgaW4gRmFzdFRMUy5oLgorCisg
ICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9GYXN0VExTLmg6IEFkZGVkLgorICAgICAgICAo
V1RGOjpsb2FkRmFzdFRMUyk6CisgICAgICAgIChXVEY6OmZhc3RUTFNPZmZzZXRGb3JLZXkpOgor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi9XVEZUaHJlYWREYXRhLmNw
cDoKKyAgICAgICAgKFdURjo6V1RGVGhyZWFkRGF0YTo6Y3JlYXRlQW5kUmVnaXN0ZXJGb3JHZXRz
cGVjaWZpY0RpcmVjdCk6CisgICAgICAgICogd3RmL1dURlRocmVhZERhdGEuaDoKKyAgICAgICAg
KFdURjo6d3RmVGhyZWFkRGF0YSk6CisKIDIwMTctMDMtMTAgIENzYWJhIE9zenRyb2dvbsOhYyAg
PG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIEFBcmNoNjQgTGludXggYnVp
bGRmaXggYWZ0ZXIgcjIxMzY0NS4KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjEzNzI0KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogCQkwRjY2
QjI5MjFEQzk3QkFCMDA0QTFEM0YgLyogV2FsbFRpbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NkIyODgxREM5N0JBQjAwNEExRDNGIC8qIFdh
bGxUaW1lLmNwcCAqLzsgfTsKIAkJMEY2NkIyOTMxREM5N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1l
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2QjI4
OTFEQzk3QkFCMDA0QTFEM0YgLyogV2FsbFRpbWUuaCAqLzsgfTsKIAkJMEY3MjVDQUMxQzUwNDYx
NjAwQUQ5NDNBIC8qIFJhbmdlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjcyNUNBQjFDNTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQuaCAqLzsg
fTsKKwkJMEY3OUM3QzQxRTczNTExODAwRUIzNEQxIC8qIEZhc3RUTFMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzlDN0MzMUU3MzUxMTgwMEVCMzRE
MSAvKiBGYXN0VExTLmggKi87IH07CiAJCTBGN0M1RkI2MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0
Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGN0M1RkI1MUQ4ODVDRjIwMDQ0RjVFMiAvKiBGYXN0Qml0VmVjdG9yLmNwcCAqLzsgfTsK
IAkJMEY4MjRBNjgxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MjRBNjQxQjc0NDNBMDAwMkUz
NDVEIC8qIFBhcmtpbmdMb3QuY3BwICovOyB9OwogCQkwRjgyNEE2OTFCNzQ0M0EwMDAyRTM0NUQg
LyogUGFya2luZ0xvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY4MjRBNjUxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuaCAqLzsgfTsKQEAg
LTQyMSw2ICs0MjIsNyBAQAogCQkwRjY2QjI4ODFEQzk3QkFCMDA0QTFEM0YgLyogV2FsbFRpbWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FsbFRpbWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY2QjI4OTFEQzk3QkFCMDA0QTFEM0YgLyog
V2FsbFRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FsbFRpbWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3MjVDQUIxQzUwNDYxNjAwQUQ5NDNBIC8q
IFJhbmdlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhbmdlU2V0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNzlDN0MzMUU3MzUxMTgwMEVCMzREMSAv
KiBGYXN0VExTLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZhc3RUTFMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzVGQjUxRDg4NUNGMjAwNDRGNUUyIC8q
IEZhc3RCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RmFzdEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODI0QTY0
MUI3NDQzQTAwMDJFMzQ1RCAvKiBQYXJraW5nTG90LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBhcmtpbmdMb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjgyNEE2NTFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJraW5nTG90Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC05NzQsNiArOTc2LDcgQEAKIAkJCQkwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIg
LyogRmFzdEJpdFZlY3Rvci5oICovLAogCQkJCUE4QTQ3MkExMTUxQTgyNUEwMDQxMjNGRiAvKiBG
YXN0TWFsbG9jLmNwcCAqLywKIAkJCQlBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1h
bGxvYy5oICovLAorCQkJCTBGNzlDN0MzMUU3MzUxMTgwMEVCMzREMSAvKiBGYXN0VExTLmggKi8s
CiAJCQkJQjM4RkQ3QkMxNjg5NTNFODAwNjVDOTY5IC8qIEZlYXR1cmVEZWZpbmVzLmggKi8sCiAJ
CQkJMEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgKi8sCiAJ
CQkJMEY5RDMzNUMxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oICovLApAQCAt
MTQ4Niw2ICsxNDg5LDcgQEAKIAkJCQkwRjBEODVCNDE3MjM0Q0MxMDAzMzgyMTAgLyogTm9Mb2Nr
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzNFRjE1MUE4MjVCMDA0MTIzRkYgLyogTm9uY29w
eWFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFNDY1MTZFMTlEQjFGQjQwMDNFQ0EwNSAvKiBO
U01hcFRhYmxlU1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjc5QzdDNDFFNzM1MTE4MDBFQjM0
RDEgLyogRmFzdFRMUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDczRjUxNTFBODI1QjAwNDEy
M0ZGIC8qIE51bWJlck9mQ29yZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFMjlDMzNFMTVGRkQ3
OUIwMDUxNkQ2MSAvKiBPYmpjUnVudGltZUV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFG
REU2NTMxOTUzQjIzRDAwQzQ4RkZBIC8qIE9wdGlvbmFsLmggaW4gSGVhZGVycyAqLywKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMTM3MjQpCisrKyBTb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBzZXQoV1RGX0hF
QURFUlMKICAgICBEaXNhbGxvd0NUeXBlLmgKICAgICBEb3VibHlMaW5rZWRMaXN0LmgKICAgICBG
YXN0TWFsbG9jLmgKKyAgICBGYXN0VExTLmgKICAgICBGZWF0dXJlRGVmaW5lcy5oCiAgICAgRmls
ZVByaW50U3RyZWFtLmgKICAgICBGbGlwQnl0ZXMuaApJbmRleDogU291cmNlL1dURi93dGYvRmFz
dFRMUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Zhc3RUTFMuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9GYXN0VExTLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEhBVkUoRkFTVF9UTFMpCisKKyNpbmNsdWRlIDxwdGhyZWFkLmg+
CisjaW5jbHVkZSA8U3lzdGVtL3B0aHJlYWRfbWFjaGRlcC5oPgorCituYW1lc3BhY2UgV1RGIHsK
KworLy8gX19QVEtfRlJBTUVXT1JLX0pBVkFTQ1JJUFRDT1JFX0tFWTAgaXMgdGFrZW4gYnkgYm1h
bGxvYywgc28gV1RGJ3MgS0VZMCBtYXBzIHRvIHRoZQorLy8gc3lzdGVtJ3MgS0VZMS4KKyNkZWZp
bmUgV1RGX0ZBU1RfVExTX0tFWTAgX19QVEtfRlJBTUVXT1JLX0pBVkFTQ1JJUFRDT1JFX0tFWTEK
KyNkZWZpbmUgV1RGX0ZBU1RfVExTX0tFWTEgX19QVEtfRlJBTUVXT1JLX0pBVkFTQ1JJUFRDT1JF
X0tFWTIKKyNkZWZpbmUgV1RGX0ZBU1RfVExTX0tFWTIgX19QVEtfRlJBTUVXT1JLX0pBVkFTQ1JJ
UFRDT1JFX0tFWTMKKyNkZWZpbmUgV1RGX0ZBU1RfVExTX0tFWTMgX19QVEtfRlJBTUVXT1JLX0pB
VkFTQ1JJUFRDT1JFX0tFWTQKKworLy8gTk9URTogV2Ugc2hvdWxkIG1hbmFnZSBvdXIgdXNlIG9m
IHRoZXNlIGtleXMgaGVyZS4gSWYgeW91IHdhbnQgdG8gdXNlIGEga2V5IGZvciBzb21ldGhpbmcs
CisvLyBwdXQgYSAjZGVmaW5lIGluIGhlcmUgdG8gZ2l2ZSB5b3VyIGtleSBhIHN5bWJvbGljIG5h
bWUuIFRoaXMgZW5zdXJlcyB0aGF0IHdlIGRvbid0CisvLyBhY2NpZGVudGFsbHkgdXNlIHRoZSBz
YW1lIGtleSBmb3IgbW9yZSB0aGFuIG9uZSB0aGluZy4KKworI2RlZmluZSBXVEZfVEhSRUFEX0RB
VEFfS0VZIFdURl9GQVNUX1RMU19LRVkwCisjZGVmaW5lIFdURl9URVNUSU5HX0tFWSBXVEZfRkFT
VF9UTFNfS0VZMworCisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKy8vIEJlbG93IGlzIHRoZSBj
b2RlIHRoYXQgdGhlIEpJVCB3aWxsIGVtaXQuCisKKyNpZiBDUFUoWDg2XzY0KQoraW5saW5lIHVp
bnRwdHJfdCBsb2FkRmFzdFRMUyh1bnNpZ25lZCBvZmZzZXQpCit7CisgICAgdWludHB0cl90IHJl
c3VsdDsKKyAgICBhc20gdm9sYXRpbGUoCisgICAgICAgICJtb3ZxICUlZ3M6JTEsICUwIgorICAg
ICAgICA6ICI9ciIocmVzdWx0KQorICAgICAgICA6ICJyIihvZmZzZXQpCisgICAgICAgIDogIm1l
bW9yeSIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZWxpZiBDUFUoQVJNNjQpCitpbmxpbmUg
dWludHB0cl90IGxvYWRGYXN0VExTKHVuc2lnbmVkIHBhc3NlZE9mZnNldCkKK3sKKyAgICB1aW50
cHRyX3QgcmVzdWx0OworICAgIHVpbnRwdHJfdCBvZmZzZXQgPSBwYXNzZWRPZmZzZXQ7CisgICAg
YXNtIHZvbGF0aWxlKAorICAgICAgICAibXJzICUwLCBUUElEUlJPX0VMMFxuXHQiCisgICAgICAg
ICJhbmQgJTAsICUwLCAjMHhmZmZmZmZmZmZmZmZmZmY4XG5cdCIKKyAgICAgICAgImxkciAlMCwg
WyUwLCAlMV0iCisgICAgICAgIDogIj1yIihyZXN1bHQpCisgICAgICAgIDogInIiKG9mZnNldCkK
KyAgICAgICAgOiAibWVtb3J5Iik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbHNlCisjZXJy
b3IgIkJhZCBhcmNoaXRlY3R1cmUiCisjZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoRkFTVF9UTFNf
SklUKQorCitpbmxpbmUgdW5zaWduZWQgZmFzdFRMU09mZnNldEZvcktleSh1bnNpZ25lZCBsb25n
IHNsb3QpCit7CisgICAgcmV0dXJuIHNsb3QgKiBzaXplb2Yodm9pZCopOworfQorCit9IC8vIG5h
bWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpmYXN0VExTT2Zmc2V0Rm9yS2V5OworCisjaWYgRU5B
QkxFKEZBU1RfVExTX0pJVCkKK3VzaW5nIFdURjo6bG9hZEZhc3RUTFM7CisjZW5kaWYKKworI2Vu
ZGlmIC8vIEhBVkUoRkFTVF9UTFMpCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMjEzNzI0
KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNzYxLDYg
Kzc2MSwxNCBAQAogI2RlZmluZSBIQVZFX0xMX1NDIDEKICNlbmRpZiAvLyBDUFUoQVJNNjQpCiAK
KyNpZiBfX2hhc19pbmNsdWRlKDxTeXN0ZW0vcHRocmVhZF9tYWNoZGVwLmg+KQorI2RlZmluZSBI
QVZFX0ZBU1RfVExTIDEKKyNlbmRpZgorCisjaWYgKENQVShYODZfNjQpIHx8IENQVShBUk02NCkp
ICYmIEhBVkUoRkFTVF9UTFMpCisjZGVmaW5lIEVOQUJMRV9GQVNUX1RMU19KSVQgMQorI2VuZGlm
CisKIC8qIFRoaXMgY29udHJvbHMgd2hldGhlciBCMyBpcyBidWlsdC4gQjMgaXMgbmVlZGVkIGZv
ciBGVEwgSklUIGFuZCBXZWJBc3NlbWJseSAqLwogI2lmIEVOQUJMRShGVExfSklUKSB8fCBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAjZGVmaW5lIEVOQUJMRV9CM19KSVQgMQpJbmRleDogU291cmNlL1dU
Ri93dGYvV1RGVGhyZWFkRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RG
VGhyZWFkRGF0YS5jcHAJKHJldmlzaW9uIDIxMzcyNCkKKysrIFNvdXJjZS9XVEYvd3RmL1dURlRo
cmVhZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFj
ZSBXVEYgewogCi0jaWYgIVVTRShQVEhSRUFEX0dFVFNQRUNJRklDX0RJUkVDVCkKKyNpZiAhSEFW
RShGQVNUX1RMUykKIFRocmVhZFNwZWNpZmljPFdURlRocmVhZERhdGE+KiBXVEZUaHJlYWREYXRh
OjpzdGF0aWNEYXRhOwogI2VuZGlmCiAKQEAgLTYxLDEyICs2MSwxMiBAQCBXVEZUaHJlYWREYXRh
Ojp+V1RGVGhyZWFkRGF0YSgpCiAgICAgICAgIG1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9y
KG1fZGVmYXVsdEF0b21pY1N0cmluZ1RhYmxlKTsKIH0KIAotI2lmIFVTRShQVEhSRUFEX0dFVFNQ
RUNJRklDX0RJUkVDVCkKKyNpZiBIQVZFKEZBU1RfVExTKQogV1RGVGhyZWFkRGF0YSYgV1RGVGhy
ZWFkRGF0YTo6Y3JlYXRlQW5kUmVnaXN0ZXJGb3JHZXRzcGVjaWZpY0RpcmVjdCgpCiB7CiAgICAg
V1RGVGhyZWFkRGF0YSogZGF0YSA9IG5ldyBXVEZUaHJlYWREYXRhOwotICAgIF9wdGhyZWFkX3Nl
dHNwZWNpZmljX2RpcmVjdChkaXJlY3RLZXksIGRhdGEpOwotICAgIHB0aHJlYWRfa2V5X2luaXRf
bnAoZGlyZWN0S2V5LCBbXSh2b2lkKiBkYXRhKXsKKyAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19k
aXJlY3QoV1RGX1RIUkVBRF9EQVRBX0tFWSwgZGF0YSk7CisgICAgcHRocmVhZF9rZXlfaW5pdF9u
cChXVEZfVEhSRUFEX0RBVEFfS0VZLCBbXSh2b2lkKiBkYXRhKXsKICAgICAgICAgZGVsZXRlIHN0
YXRpY19jYXN0PFdURlRocmVhZERhdGEqPihkYXRhKTsKICAgICB9KTsKICAgICByZXR1cm4gKmRh
dGE7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5oCShyZXZpc2lvbiAyMTM3MjQpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9XVEZUaHJlYWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMjUgKzI3LDE1IEBA
CiAjaWZuZGVmIFdURlRocmVhZERhdGFfaAogI2RlZmluZSBXVEZUaHJlYWREYXRhX2gKIAorI2lu
Y2x1ZGUgPHd0Zi9GYXN0VExTLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9TdGFja0JvdW5kcy5oPgogI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
LSNpbmNsdWRlIDxTeXN0ZW0vcHRocmVhZF9tYWNoZGVwLmg+Ci0jZW5kaWYKLQotI2lmIGRlZmlu
ZWQoX19QVEtfRlJBTUVXT1JLX0pBVkFTQ1JJUFRDT1JFX0tFWTEpCi0jZGVmaW5lIFVTRV9QVEhS
RUFEX0dFVFNQRUNJRklDX0RJUkVDVCAxCi0jZW5kaWYKLQotI2lmICFVU0UoUFRIUkVBRF9HRVRT
UEVDSUZJQ19ESVJFQ1QpCiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgotI2VuZGlmCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtMTIyLDggKzExMiw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCogbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKICAgICB2b2lkKiBtX3NhdmVk
TGFzdFN0YWNrVG9wOwogCi0jaWYgVVNFKFBUSFJFQURfR0VUU1BFQ0lGSUNfRElSRUNUKQotICAg
IHN0YXRpYyBjb25zdCBwdGhyZWFkX2tleV90IGRpcmVjdEtleSA9IF9fUFRLX0ZSQU1FV09SS19K
QVZBU0NSSVBUQ09SRV9LRVkxOworI2lmIEhBVkUoRkFTVF9UTFMpCiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBXVEZUaHJlYWREYXRhJiBjcmVhdGVBbmRSZWdpc3RlckZvckdldHNwZWNp
ZmljRGlyZWN0KCk7CiAjZWxzZQogICAgIHN0YXRpYyBXVEZfRVhQT1JUREFUQSBUaHJlYWRTcGVj
aWZpYzxXVEZUaHJlYWREYXRhPiogc3RhdGljRGF0YTsKQEAgLTE0MSwxMiArMTMwLDEyIEBAIGlu
bGluZSBXVEZUaHJlYWREYXRhJiB3dGZUaHJlYWREYXRhKCkKICAgICAvLyBXUlQgSmF2YVNjcmlw
dENvcmU6CiAgICAgLy8gICAgd3RmVGhyZWFkRGF0YSgpIGlzIGluaXRpYWxseSBjYWxsZWQgZnJv
bSBpbml0aWFsaXplVGhyZWFkaW5nKCksIGVuc3VyaW5nCiAgICAgLy8gICAgdGhpcyBpcyBpbml0
aWFsbHkgY2FsbGVkIGluIGEgcHRocmVhZF9vbmNlIGxvY2tlZCBjb250ZXh0LgotI2lmICFVU0Uo
UFRIUkVBRF9HRVRTUEVDSUZJQ19ESVJFQ1QpCisjaWYgIUhBVkUoRkFTVF9UTFMpCiAgICAgaWYg
KCFXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhKQogICAgICAgICBXVEZUaHJlYWREYXRhOjpzdGF0
aWNEYXRhID0gbmV3IFRocmVhZFNwZWNpZmljPFdURlRocmVhZERhdGE+OwogICAgIHJldHVybiAq
KldURlRocmVhZERhdGE6OnN0YXRpY0RhdGE7CiAjZWxzZQotICAgIGlmIChXVEZUaHJlYWREYXRh
KiBkYXRhID0gc3RhdGljX2Nhc3Q8V1RGVGhyZWFkRGF0YSo+KF9wdGhyZWFkX2dldHNwZWNpZmlj
X2RpcmVjdChXVEZUaHJlYWREYXRhOjpkaXJlY3RLZXkpKSkKKyAgICBpZiAoV1RGVGhyZWFkRGF0
YSogZGF0YSA9IHN0YXRpY19jYXN0PFdURlRocmVhZERhdGEqPihfcHRocmVhZF9nZXRzcGVjaWZp
Y19kaXJlY3QoV1RGX1RIUkVBRF9EQVRBX0tFWSkpKQogICAgICAgICByZXR1cm4gKmRhdGE7CiAg
ICAgcmV0dXJuIFdURlRocmVhZERhdGE6OmNyZWF0ZUFuZFJlZ2lzdGVyRm9yR2V0c3BlY2lmaWNE
aXJlY3QoKTsKICNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>