<?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>70060</bug_id>
          
          <creation_ts>2011-10-13 14:49:04 -0700</creation_ts>
          <short_desc>DFG JIT should not be using ENABLE macro to enable features</short_desc>
          <delta_ts>2011-10-13 15:13:30 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>483519</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-10-13 14:49:04 -0700</bug_when>
    <thetext>The ENABLE macro is only intended to be used to detect features that are configured in Platform.h.  Using its to detect settings defined in other headers is an error.

The problem is that the ENABLE macro checks if the value is defined, so will silently return false if you fail to include the header defining the switch.
This is not a problem if (1) the settings are defined in the same header that defines the macro that tests them, or (2) the header is included everywhere.  In the case of ENABLE settings defined in Platform.h, both are true!

To make this clear, add an explicit DFG_ENABLE macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483522</commentid>
    <comment_count>1</comment_count>
      <attachid>110913</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-10-13 14:51:21 -0700</bug_when>
    <thetext>Created attachment 110913
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483523</commentid>
    <comment_count>2</comment_count>
      <attachid>110913</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-10-13 14:52:50 -0700</bug_when>
    <thetext>Comment on attachment 110913
The patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483526</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-13 14:54:18 -0700</bug_when>
    <thetext>Attachment 110913 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/dfg/DFGCapabilities.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 21 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>483544</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-10-13 15:13:30 -0700</bug_when>
    <thetext>Fixed in r97408</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110913</attachid>
            <date>2011-10-13 14:51:21 -0700</date>
            <delta_ts>2011-10-13 14:52:50 -0700</delta_ts>
            <desc>The patch</desc>
            <filename>70060.patch</filename>
            <type>text/plain</type>
            <size>38635</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTc0MDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODYgQEAK
KzIwMTEtMTAtMTMgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFyYWNsb3VnaEBhcHBsZS5jb20+CisK
KyAgICAgICAgREZHIEpJVCBzaG91bGQgbm90IGJlIHVzaW5nIEVOQUJMRSBtYWNybyB0byBlbmFi
bGUgZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcwMDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIEVOQUJMRSBtYWNybyBpcyBvbmx5IGludGVuZGVkIHRvIGJlIHVzZWQgdG8gZGV0ZWN0
IGZlYXR1cmVzIHRoYXQgYXJlIGNvbmZpZ3VyZWQKKyAgICAgICAgaW4gUGxhdGZvcm0uaC4gVXNp
bmcgaXRzIHRvIGRldGVjdCBzZXR0aW5ncyBkZWZpbmVkIGluIG90aGVyIGhlYWRlcnMgaXMgYW4g
ZXJyb3IuCisKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgdGhhdCB0aGUgRU5BQkxFIG1hY3JvIGNo
ZWNrcyBpZiB0aGUgdmFsdWUgaXMgZGVmaW5lZCwgc28gd2lsbCBzaWxlbnRseQorICAgICAgICBy
ZXR1cm4gZmFsc2UgaWYgeW91IGZhaWwgdG8gaW5jbHVkZSB0aGUgaGVhZGVyIGRlZmluaW5nIHRo
ZSBzd2l0Y2guIFRoaXMgaXMgbm90IGEgcHJvYmxlbQorICAgICAgICBpZiAoMSkgdGhlIHNldHRp
bmdzIGFyZSBkZWZpbmVkIGluIHRoZSBzYW1lIGhlYWRlciB0aGF0IGRlZmluZXMgdGhlIG1hY3Jv
IHRoYXQgdGVzdHMgdGhlbSwKKyAgICAgICAgb3IgKDIpIHRoZSBoZWFkZXIgaXMgaW5jbHVkZWQg
ZXZlcnl3aGVyZS4gIEluIHRoZSBjYXNlIG9mIEVOQUJMRSBzZXR0aW5ncyBkZWZpbmVkIGluCisg
ICAgICAgIFBsYXRmb3JtLmgsIGJvdGggYXJlIHRydWUhIFRvIG1ha2UgdGhpcyBjbGVhciwgYWRk
IGFuIGV4cGxpY2l0IERGR19FTkFCTEUgbWFjcm8uCisKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldFByZWRpY3Rpb24pOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjptYWtlU2FmZSk6CisgICAgICAgICogZGZnL0RGR0NhcGFi
aWxpdGllcy5oOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAg
ICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnByZWRpY3RB
cmd1bWVudFR5cGVzKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgICogZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHSklU
Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpleGl0U3BlY3Vs
YXRpdmVXaXRoT1NSKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUJv
ZHkpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBk
ZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bm90
aWNlT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlcjMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6ZXhpdFNwZWN1bGF0aXZlV2l0aE9TUik6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVCb2R5KToKKyAgICAgICAgKEpT
Qzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAg
ICAgICAgKiBkZmcvREZHT1NSRW50cnkuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnByZXBhcmVP
U1JFbnRyeSk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1Byb3BhZ2F0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmZpeHBvaW50KToKKyAgICAgICAgKEpTQzo6REZH
OjpQcm9wYWdhdG9yOjpwcm9wYWdhdGVBcml0aE5vZGVGbGFncyk6CisgICAgICAgIChKU0M6OkRG
Rzo6UHJvcGFnYXRvcjo6cHJvcGFnYXRlQXJpdGhOb2RlRmxhZ3NGb3J3YXJkKToKKyAgICAgICAg
KEpTQzo6REZHOjpQcm9wYWdhdG9yOjpwcm9wYWdhdGVBcml0aE5vZGVGbGFnc0JhY2t3YXJkKToK
KyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpwcm9wYWdhdGVOb2RlUHJlZGljdGlvbnMp
OgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnByb3BhZ2F0ZVByZWRpY3Rpb25zRm9y
d2FyZCk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cHJvcGFnYXRlUHJlZGljdGlv
bnNCYWNrd2FyZCk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cHJvcGFnYXRlUHJl
ZGljdGlvbnMpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnRvRG91YmxlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OlByb3BhZ2F0b3I6OmZpeHVwKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpz
dGFydEluZGV4Rm9yQ2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmVu
ZEluZGV4Rm9yUHVyZUNTRSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6c2V0UmVw
bGFjZW1lbnQpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmVsaW1pbmF0ZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAo
SlNDOjpERkc6OlByb3BhZ2F0b3I6OmxvY2FsQ1NFKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9w
YWdhdG9yOjphbGxvY2F0ZVZpcnR1YWxSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpERkc6OlBy
b3BhZ2F0b3I6OnBlcmZvcm1CbG9ja0NGQSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRv
cjo6cGVyZm9ybUZvcndhcmRDRkEpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6Omds
b2JhbENGQSk6CisgICAgICAgICogZGZnL0RGR1Njb3JlQm9hcmQuaDoKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6dGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24p
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludEludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVJbnRJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3VibGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorCiAyMDExLTEwLTEzICBHYXZpbiBCYXJyYWNsb3Vn
aCAgPGJhcmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZl
RXhlY3V0aW9uIGZvciBmaWxsU3BlY3VsYXRlRG91YmxlIHdpdGggRGF0YUZvcm1hdENlbGwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZp
c2lvbiA5NzMzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJCeXRlY29k
ZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIkRG
R05vZGUuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CiAjaW5jbHVkZSAiSklULmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gOTczMzIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA0
LDcgKzUwNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IG1f
cHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRl
eCk7CiAgICAgICAgIEFTU0VSVChwcm9maWxlKTsKICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVk
aWN0aW9uID0gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7Ci0jaWYgRU5BQkxF
KERGR19ERUJVR19WRVJCT1NFKQorI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICAg
ICAgcHJpbnRmKCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9kZUlu
ZGV4LCBieXRlY29kZUluZGV4LCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikpOwogI2Vu
ZGlmCiAgICAgICAgIApAQCAtNTI3LDcgKzUyNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICgh
bV9wcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkpCiAg
ICAgICAgICAgICByZXR1cm4gbm9kZUluZGV4OwogICAgICAgICAKLSNpZiBFTkFCTEUoREZHX0RF
QlVHX1ZFUkJPU0UpCisjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgICAgICBwcmlu
dGYoIk1ha2luZyAlcyBAJXUgc2FmZSBhdCBiYyMldSBiZWNhdXNlIHNsb3ctY2FzZSBjb3VudGVy
IGlzIGF0ICV1XG4iLCBHcmFwaDo6b3BOYW1lKG1fZ3JhcGhbbm9kZUluZGV4XS5vcCksIG5vZGVJ
bmRleCwgbV9jdXJyZW50SW5kZXgsIG1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIpOwogI2VuZGlmCiAgICAg
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5o
CShyZXZpc2lvbiA5NzMzMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDkgQEAKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi1uYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CisjaW5jbHVkZSAiREZHTm9kZS5oIgogCi0jZGVmaW5lIEVOQUJMRV9E
RkdfUkVTVFJJQ1RJT05TIDEKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogI2lm
IEVOQUJMRShERkdfSklUKQogLy8gRmFzdCBjaGVjayBmdW5jdGlvbnM7IGlmIHRoZXkgcmV0dXJu
IHRydWUgaXQgaXMgc3RpbGwgbmVjZXNzYXJ5IHRvCkBAIC0xMzUsNyArMTM1LDcgQEAgaW5saW5l
IGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIC8vIFJlZ3Jlc3NlcyBzdHJp
bmctdmFsaWRhdGUtaW5wdXQsIHByb2JhYmx5IGJlY2F1c2UgaXQgdXNlcyBjb21wYXJpc29ucyAo
PCBhbmQgPikKICAgICAvLyBvbiBzdHJpbmdzLCB3aGljaCBjdXJyZW50bHkgd2lsbCBjYXVzZSBz
cGVjdWxhdGlvbiBmYWlsdXJlcyBpbiBzb21lIGNhc2VzLgogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4
cDogCi0jaWYgRU5BQkxFKERGR19SRVNUUklDVElPTlMpCisjaWYgREZHX0VOQUJMRShSRVNUUklD
VElPTlMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbHNlCiAgICAgICAgIHJldHVybiB0cnVl
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDk3
MzMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIEdyYXBoOjpwcmVkaWN0QXJndW1lbnRUeXBl
cyhFeGVjU3RhCiAgICAgICAgIAogICAgICAgICBhdChtX2FyZ3VtZW50c1thcmddKS52YXJpYWJs
ZUFjY2Vzc0RhdGEoKS0+cHJlZGljdChwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24o
KSk7CiAgICAgICAgIAotI2lmIEVOQUJMRShERkdfREVCVUdfVkVSQk9TRSkKKyNpZiBERkdfRU5B
QkxFKERFQlVHX1ZFUkJPU0UpCiAgICAgICAgIHByaW50ZigiQXJndW1lbnQgWyVsdV0gcHJlZGlj
dGlvbjogJXNcbiIsIGFyZywgcHJlZGljdGlvblRvU3RyaW5nKGF0KG1fYXJndW1lbnRzW2FyZ10p
LnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpKTsKICNlbmRpZgogICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9y
LmNwcAkocmV2aXNpb24gOTczMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDMsNyArNDQzLDcgQEAgdm9p
ZCBKSVRDb2RlR2VuZXJhdG9yOjpkdW1wKGNvbnN0IGNoYXIqIAogI2VuZGlmCiAKIAotI2lmIEVO
QUJMRShERkdfQ09OU0lTVEVOQ1lfQ0hFQ0spCisjaWYgREZHX0VOQUJMRShDT05TSVNURU5DWV9D
SEVDSykKIHZvaWQgSklUQ29kZUdlbmVyYXRvcjo6Y2hlY2tDb25zaXN0ZW5jeSgpCiB7CiAgICAg
Ym9vbCBmYWlsZWQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiA5NzMzMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTI2LDcgKzE1MjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkdW1wKGNvbnN0IGNoYXIqIGxh
YmVsID0gMCk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShERkdfQ09OU0lTVEVOQ1lfQ0hFQ0spCisj
aWYgREZHX0VOQUJMRShDT05TSVNURU5DWV9DSEVDSykKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVu
Y3koKTsKICNlbHNlCiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkge30KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIzMl82NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlcjMyXzY0LmNwcAkocmV2
aXNpb24gOTczMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
MzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMSArNDYsMTEgQEAgdm9pZCBKSVRDb21w
aWxlcjo6ZXhpdFNwZWN1bGF0aXZlV2l0aE9TUgogICAgIC8vIDEpIFByby1mb3JtYSBzdHVmZi4K
ICAgICBleGl0Lm1fY2hlY2subGluayh0aGlzKTsKIAotI2lmIEVOQUJMRShERkdfREVCVUdfVkVS
Qk9TRSkKKyNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCiAgICAgZnByaW50ZihzdGRlcnIs
ICJPU1IgZXhpdCBmb3IgTm9kZSBAJWQgKGJjIyV1KSBhdCBKSVQgb2Zmc2V0IDB4JXggICAiLCAo
aW50KWV4aXQubV9ub2RlSW5kZXgsIGV4aXQubV9ieXRlY29kZUluZGV4LCBkZWJ1Z09mZnNldCgp
KTsKICAgICBleGl0LmR1bXAoc3RkZXJyKTsKICNlbmRpZgotI2lmIEVOQUJMRShERkdfVkVSQk9T
RV9TUEVDVUxBVElPTl9GQUlMVVJFKQorI2lmIERGR19FTkFCTEUoVkVSQk9TRV9TUEVDVUxBVElP
Tl9GQUlMVVJFKQogICAgIFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZvID0g
bmV3IFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbzsKICAgICBkZWJ1Z0luZm8tPmNvZGVCbG9j
ayA9IG1fY29kZUJsb2NrOwogICAgIGRlYnVnSW5mby0+ZGVidWdPZmZzZXQgPSBkZWJ1Z09mZnNl
dCgpOwpAQCAtNTgsMTEgKzU4LDExIEBAIHZvaWQgSklUQ29tcGlsZXI6OmV4aXRTcGVjdWxhdGl2
ZVdpdGhPU1IKICAgICBkZWJ1Z0NhbGwoZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9uRmFp
bHVyZSwgZGVidWdJbmZvKTsKICNlbmRpZgogICAgIAotI2lmIEVOQUJMRShERkdfSklUX0JSRUFL
X09OX1NQRUNVTEFUSU9OX0ZBSUxVUkUpCisjaWYgREZHX0VOQUJMRShKSVRfQlJFQUtfT05fU1BF
Q1VMQVRJT05fRkFJTFVSRSkKICAgICBicmVha3BvaW50KCk7CiAjZW5kaWYKICAgICAKLSNpZiBF
TkFCTEUoREZHX1NVQ0NFU1NfU1RBVFMpCisjaWYgREZHX0VOQUJMRShTVUNDRVNTX1NUQVRTKQog
ICAgIHN0YXRpYyBTYW1wbGluZ0NvdW50ZXIgY291bnRlcigiU3BlY3VsYXRpb25GYWlsdXJlIik7
CiAgICAgZW1pdENvdW50KGNvdW50ZXIpOwogI2VuZGlmCkBAIC00NjMsNyArNDYzLDcgQEAgdm9p
ZCBKSVRDb21waWxlcjo6ZXhpdFNwZWN1bGF0aXZlV2l0aE9TUgogICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihqdW1wVGFyZ2V0KSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIGp1bXAoR1BSSW5mbzo6cmVn
VDIpOwogCi0jaWYgRU5BQkxFKERGR19ERUJVR19WRVJCT1NFKQorI2lmIERGR19FTkFCTEUoREVC
VUdfVkVSQk9TRSkKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIC0+ICVwXG4iLCBqdW1wVGFyZ2V0
KTsKICNlbmRpZgogfQpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBp
bGVFbnRyeSgpCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlQm9keSgpCiB7CiAKLSNpZiBFTkFC
TEUoREZHX0pJVF9CUkVBS19PTl9FVkVSWV9GVU5DVElPTikKKyNpZiBERkdfRU5BQkxFKEpJVF9C
UkVBS19PTl9FVkVSWV9GVU5DVElPTikKICAgICAvLyBIYW5keSBkZWJ1ZyB0b29sIQogICAgIGJy
ZWFrcG9pbnQoKTsKICNlbmRpZgpAQCAtNTQ3LDcgKzU0Nyw3IEBAIHZvaWQgSklUQ29tcGlsZXI6
OmNvbXBpbGVCb2R5KCkKIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikKIHsKICAgICAvLyBMaW5rIHRoZSBjb2RlLCBwb3B1bGF0ZSBkYXRhIGluIENvZGVCbG9j
ayBkYXRhIHN0cnVjdHVyZXMuCi0jaWYgRU5BQkxFKERGR19ERUJVR19WRVJCT1NFKQorI2lmIERG
R19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICBmcHJpbnRmKHN0ZGVyciwgIkpJVCBjb2RlIGZv
ciAlcCBzdGFydCBhdCBbJXAsICVwKVxuIiwgbV9jb2RlQmxvY2ssIGxpbmtCdWZmZXIuZGVidWdB
ZGRyZXNzKCksIHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpKSAr
IGxpbmtCdWZmZXIuZGVidWdTaXplKCkpOwogI2VuZGlmCiAKQEAgLTY4MSw3ICs2ODEsNyBAQCB2
b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oSklUQ29kCiAgICAgZW50cnkgPSBKSVRD
b2RlKGxpbmtCdWZmZXIuZmluYWxpemVDb2RlKCksIEpJVENvZGU6OkRGR0pJVCk7CiB9CiAKLSNp
ZiBFTkFCTEUoREZHX0pJVF9BU1NFUlQpCisjaWYgREZHX0VOQUJMRShKSVRfQVNTRVJUKQogdm9p
ZCBKSVRDb21waWxlcjo6aml0QXNzZXJ0SXNJbnQzMihHUFJSZWcgZ3ByKQogewogICAgIFVOVVNF
RF9QQVJBTShncHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAJKHJldmlzaW9uIDk3MzMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDExICs0NCwxMSBAQCB2
b2lkIEpJVENvbXBpbGVyOjpleGl0U3BlY3VsYXRpdmVXaXRoT1NSCiAgICAgLy8gMSkgUHJvLWZv
cm1hIHN0dWZmLgogICAgIGV4aXQubV9jaGVjay5saW5rKHRoaXMpOwogCi0jaWYgRU5BQkxFKERG
R19ERUJVR19WRVJCT1NFKQorI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICBmcHJp
bnRmKHN0ZGVyciwgIk9TUiBleGl0IGZvciBOb2RlIEAlZCAoYmMjJXUpIGF0IEpJVCBvZmZzZXQg
MHgleCAgIiwgKGludClleGl0Lm1fbm9kZUluZGV4LCBleGl0Lm1fYnl0ZWNvZGVJbmRleCwgZGVi
dWdPZmZzZXQoKSk7CiAgICAgZXhpdC5kdW1wKHN0ZGVycik7CiAjZW5kaWYKLSNpZiBFTkFCTEUo
REZHX1ZFUkJPU0VfU1BFQ1VMQVRJT05fRkFJTFVSRSkKKyNpZiBERkdfRU5BQkxFKFZFUkJPU0Vf
U1BFQ1VMQVRJT05fRkFJTFVSRSkKICAgICBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm8qIGRl
YnVnSW5mbyA9IG5ldyBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1Z0luZm87CiAgICAgZGVidWdJbmZv
LT5jb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsKICAgICBkZWJ1Z0luZm8tPmRlYnVnT2Zmc2V0ID0g
ZGVidWdPZmZzZXQoKTsKQEAgLTU2LDExICs1NiwxMSBAQCB2b2lkIEpJVENvbXBpbGVyOjpleGl0
U3BlY3VsYXRpdmVXaXRoT1NSCiAgICAgZGVidWdDYWxsKGRlYnVnT3BlcmF0aW9uUHJpbnRTcGVj
dWxhdGlvbkZhaWx1cmUsIGRlYnVnSW5mbyk7CiAjZW5kaWYKICAgICAKLSNpZiBFTkFCTEUoREZH
X0pJVF9CUkVBS19PTl9TUEVDVUxBVElPTl9GQUlMVVJFKQorI2lmIERGR19FTkFCTEUoSklUX0JS
RUFLX09OX1NQRUNVTEFUSU9OX0ZBSUxVUkUpCiAgICAgYnJlYWtwb2ludCgpOwogI2VuZGlmCiAg
ICAgCi0jaWYgRU5BQkxFKERGR19TVUNDRVNTX1NUQVRTKQorI2lmIERGR19FTkFCTEUoU1VDQ0VT
U19TVEFUUykKICAgICBzdGF0aWMgU2FtcGxpbmdDb3VudGVyIGNvdW50ZXIoIlNwZWN1bGF0aW9u
RmFpbHVyZSIpOwogICAgIGVtaXRDb3VudChjb3VudGVyKTsKICNlbmRpZgpAQCAtMTYxLDcgKzE2
MSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmV4aXRTcGVjdWxhdGl2ZVdpdGhPU1IKICAgICAgICAg
fQogICAgIH0KICAgICAKLSNpZiBFTkFCTEUoREZHX0RFQlVHX1ZFUkJPU0UpCisjaWYgREZHX0VO
QUJMRShERUJVR19WRVJCT1NFKQogICAgIGZwcmludGYoc3RkZXJyLCAiICAiKTsKICAgICBpZiAo
bnVtYmVyT2ZQb2lzb25lZFZpcnR1YWxSZWdpc3RlcnMpCiAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiUG9pc29uZWQ9JXUgIiwgbnVtYmVyT2ZQb2lzb25lZFZpcnR1YWxSZWdpc3RlcnMpOwpAQCAt
NTAxLDcgKzUwMSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmV4aXRTcGVjdWxhdGl2ZVdpdGhPU1IK
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoanVtcFRhcmdldCksIEdQUkluZm86OnJlZ1QxKTsKICAg
ICBqdW1wKEdQUkluZm86OnJlZ1QxKTsKIAotI2lmIEVOQUJMRShERkdfREVCVUdfVkVSQk9TRSkK
KyNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCiAgICAgZnByaW50ZihzdGRlcnIsICItPiAl
cFxuIiwganVtcFRhcmdldCk7CiAjZW5kaWYKIH0KQEAgLTU0NCw3ICs1NDQsNyBAQCB2b2lkIEpJ
VENvbXBpbGVyOjpjb21waWxlQm9keSgpCiAgICAgLy8gV2UgZ2VuZXJhdGUgdGhlIHNwZWN1bGF0
aXZlIGNvZGUgcGF0aCwgZm9sbG93ZWQgYnkgT1NSIGV4aXQgY29kZSB0byByZXR1cm4KICAgICAv
LyB0byB0aGUgb2xkIEpJVCBjb2RlIGlmIHNwZWN1bGF0aW9ucyBmYWlsLgogCi0jaWYgRU5BQkxF
KERGR19KSVRfQlJFQUtfT05fRVZFUllfRlVOQ1RJT04pCisjaWYgREZHX0VOQUJMRShKSVRfQlJF
QUtfT05fRVZFUllfRlVOQ1RJT04pCiAgICAgLy8gSGFuZHkgZGVidWcgdG9vbCEKICAgICBicmVh
a3BvaW50KCk7CiAjZW5kaWYKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpj
b21waWxlQm9keSgpCiB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpCiB7CiAgICAgLy8gTGluayB0aGUgY29kZSwgcG9wdWxhdGUgZGF0YSBpbiBDb2RlQmxvY2sg
ZGF0YSBzdHJ1Y3R1cmVzLgotI2lmIEVOQUJMRShERkdfREVCVUdfVkVSQk9TRSkKKyNpZiBERkdf
RU5BQkxFKERFQlVHX1ZFUkJPU0UpCiAgICAgZnByaW50ZihzdGRlcnIsICJKSVQgY29kZSBmb3Ig
JXAgc3RhcnQgYXQgWyVwLCAlcCkuIFNpemUgPSAlbHUuXG4iLCBtX2NvZGVCbG9jaywgbGlua0J1
ZmZlci5kZWJ1Z0FkZHJlc3MoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIuZGVidWdB
ZGRyZXNzKCkpICsgbGlua0J1ZmZlci5kZWJ1Z1NpemUoKSwgbGlua0J1ZmZlci5kZWJ1Z1NpemUo
KSk7CiAjZW5kaWYKIApAQCAtNzE4LDcgKzcxOCw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBp
bGVGdW5jdGlvbihKSVRDb2QKICAgICBlbnRyeSA9IEpJVENvZGUobGlua0J1ZmZlci5maW5hbGl6
ZUNvZGUoKSwgSklUQ29kZTo6REZHSklUKTsKIH0KIAotI2lmIEVOQUJMRShERkdfSklUX0FTU0VS
VCkKKyNpZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQpCiB2b2lkIEpJVENvbXBpbGVyOjpqaXRBc3Nl
cnRJc0ludDMyKEdQUlJlZyBncHIpCiB7CiAjaWYgQ1BVKFg4Nl82NCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDk3MzMyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCwxMyArMzAsMTIgQEAKIAogI2luY2x1ZGUgPGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ci5oPgogI2luY2x1ZGUgPGJ5dGVjb2RlL0NvZGVCbG9jay5oPgorI2luY2x1ZGUgPGRmZy9ERkdG
UFJJbmZvLmg+CisjaW5jbHVkZSA8ZGZnL0RGR0dQUkluZm8uaD4KICNpbmNsdWRlIDxkZmcvREZH
R3JhcGguaD4KICNpbmNsdWRlIDxkZmcvREZHUmVnaXN0ZXJCYW5rLmg+CiAjaW5jbHVkZSA8aml0
L0pJVENvZGUuaD4KIAotI2luY2x1ZGUgPGRmZy9ERkdGUFJJbmZvLmg+Ci0jaW5jbHVkZSA8ZGZn
L0RGR0dQUkluZm8uaD4KLQogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFic3RyYWN0U2FtcGxp
bmdDb3VudGVyOwpAQCAtNTcsNyArNTYsNyBAQCBzdHJ1Y3QgT1NSRXhpdDsKIHR5cGVkZWYgdm9p
ZCAoKlZfREZHRGVidWdPcGVyYXRpb25fRVApKEV4ZWNTdGF0ZSosIHZvaWQqKTsKICNlbmRpZgog
Ci0jaWYgRU5BQkxFKERGR19WRVJCT1NFX1NQRUNVTEFUSU9OX0ZBSUxVUkUpCisjaWYgREZHX0VO
QUJMRShWRVJCT1NFX1NQRUNVTEFUSU9OX0ZBSUxVUkUpCiBzdHJ1Y3QgU3BlY3VsYXRpb25GYWls
dXJlRGVidWdJbmZvIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICB1bnNpZ25lZCBk
ZWJ1Z09mZnNldDsKQEAgLTMxNiw3ICszMTUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8v
IFRoZXNlIG1ldGhvZHMgSklUIGdlbmVyYXRlIGR5bmFtaWMsIGRlYnVnLW9ubHkgY2hlY2tzIC0g
YWtpbiB0byBBU1NFUlRzLgotI2lmIEVOQUJMRShERkdfSklUX0FTU0VSVCkKKyNpZiBERkdfRU5B
QkxFKEpJVF9BU1NFUlQpCiAgICAgdm9pZCBqaXRBc3NlcnRJc0ludDMyKEdQUlJlZyk7CiAgICAg
dm9pZCBqaXRBc3NlcnRJc0pTSW50MzIoR1BSUmVnKTsKICAgICB2b2lkIGppdEFzc2VydElzSlNO
dW1iZXIoR1BSUmVnKTsKQEAgLTQwMSw3ICs0MDAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9p
ZCBub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrKQogICAgIHsKLSNpZiBFTkFC
TEUoREZHX09TUl9FTlRSWSkKKyNpZiBERkdfRU5BQkxFKE9TUl9FTlRSWSkKICAgICAgICAgT1NS
RW50cnlEYXRhKiBlbnRyeSA9IGNvZGVCbG9jaygpLT5hcHBlbmRERkdPU1JFbnRyeURhdGEoYmFz
aWNCbG9jay5ieXRlY29kZUJlZ2luLCBkaWZmZXJlbmNlQmV0d2VlbihtX3N0YXJ0T2ZDb2RlLCBs
YWJlbCgpKSk7CiAgICAgICAgIAogICAgICAgICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcyA9IGJh
c2ljQmxvY2sudmFsdWVzQXRIZWFkOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgJKHJldmlzaW9uIDk3MzMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDQzICsyNiw0NCBAQAogI2lmbmRlZiBERkdOb2RlX2gK
ICNkZWZpbmUgREZHTm9kZV9oCiAKLSNpbmNsdWRlIDx3dGYvQm91bmRzQ2hlY2tlZFBvaW50ZXIu
aD4KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpZiBFTkFCTEUoREZHX0pJVCkKKworLyog
REZHX0VOQUJMRSgpIC0gdHVybiBvbiBhIHNwZWNpZmljIGZlYXR1cmVzIGluIHRoZSBERkcgSklU
ICovCisjZGVmaW5lIERGR19FTkFCTEUoRkVBVFVSRSkgKGRlZmluZWQgREZHX0VOQUJMRV8jI0RG
R19GRUFUVVJFICYmIERGR19FTkFCTEVfIyNERkdfRkVBVFVSRSkKIAogLy8gRW1pdCB2YXJpb3Vz
IGxvZ2dpbmcgaW5mb3JtYXRpb24gZm9yIGRlYnVnZ2luZywgaW5jbHVkaW5nIGR1bXBpbmcgdGhl
IGRhdGFmbG93IGdyYXBocy4KLSNkZWZpbmUgRU5BQkxFX0RGR19ERUJVR19WRVJCT1NFIDAKKyNk
ZWZpbmUgREZHX0VOQUJMRV9ERUJVR19WRVJCT1NFIDAKIC8vIEVtaXQgZHVtcHMgZHVyaW5nIHBy
b3BhZ2F0aW9uLCBpbiBhZGRpdGlvbiB0byBqdXN0IGFmdGVyLgotI2RlZmluZSBFTkFCTEVfREZH
X0RFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UgMAorI2RlZmluZSBERkdfRU5BQkxFX0RFQlVHX1BS
T1BBR0FUSU9OX1ZFUkJPU0UgMAogLy8gRW1pdCBsb2dnaW5nIGZvciBPU1IgZXhpdCB2YWx1ZSBy
ZWNvdmVyaWVzIGF0IGV2ZXJ5IG5vZGUsIG5vdCBqdXN0IG5vZGVzIHRoYXQKIC8vIGFjdHVhbGx5
IGhhcyBzcGVjdWxhdGlvbiBjaGVja3MuCi0jZGVmaW5lIEVOQUJMRV9ERkdfVkVSQk9TRV9WQUxV
RV9SRUNPVkVSSUVTIDAKKyNkZWZpbmUgREZHX0VOQUJMRV9WRVJCT1NFX1ZBTFVFX1JFQ09WRVJJ
RVMgMAogLy8gRW5hYmxlIGdlbmVyYXRpb24gb2YgZHluYW1pYyBjaGVja3MgaW50byB0aGUgaW5z
dHJ1Y3Rpb24gc3RyZWFtLgogI2lmICFBU1NFUlRfRElTQUJMRUQKLSNkZWZpbmUgRU5BQkxFX0RG
R19KSVRfQVNTRVJUIDEKKyNkZWZpbmUgREZHX0VOQUJMRV9KSVRfQVNTRVJUIDEKICNlbHNlCi0j
ZGVmaW5lIEVOQUJMRV9ERkdfSklUX0FTU0VSVCAwCisjZGVmaW5lIERGR19FTkFCTEVfSklUX0FT
U0VSVCAwCiAjZW5kaWYKIC8vIENvbnNpc3RlbmN5IGNoZWNrIGNvbnRlbnRzIGNvbXBpbGVyIGRh
dGEgc3RydWN0dXJlcy4KLSNkZWZpbmUgRU5BQkxFX0RGR19DT05TSVNURU5DWV9DSEVDSyAwCisj
ZGVmaW5lIERGR19FTkFCTEVfQ09OU0lTVEVOQ1lfQ0hFQ0sgMAogLy8gRW1pdCBhIGJyZWFrcG9p
bnQgaW50byB0aGUgaGVhZCBvZiBldmVyeSBnZW5lcmF0ZWQgZnVuY3Rpb24sIHRvIGFpZCBkZWJ1
Z2dpbmcgaW4gR0RCLgotI2RlZmluZSBFTkFCTEVfREZHX0pJVF9CUkVBS19PTl9FVkVSWV9GVU5D
VElPTiAwCisjZGVmaW5lIERGR19FTkFCTEVfSklUX0JSRUFLX09OX0VWRVJZX0ZVTkNUSU9OIDAK
IC8vIEVtaXQgYSBicmVha3BvaW50IGludG8gdGhlIGhlYWQgb2YgZXZlcnkgZ2VuZXJhdGVkIG5v
ZGUsIHRvIGFpZCBkZWJ1Z2dpbmcgaW4gR0RCLgotI2RlZmluZSBFTkFCTEVfREZHX0pJVF9CUkVB
S19PTl9FVkVSWV9CTE9DSyAwCisjZGVmaW5lIERGR19FTkFCTEVfSklUX0JSRUFLX09OX0VWRVJZ
X0JMT0NLIDAKIC8vIEVtaXQgYSBicmVha3BvaW50IGludG8gdGhlIGhlYWQgb2YgZXZlcnkgZ2Vu
ZXJhdGVkIG5vZGUsIHRvIGFpZCBkZWJ1Z2dpbmcgaW4gR0RCLgotI2RlZmluZSBFTkFCTEVfREZH
X0pJVF9CUkVBS19PTl9FVkVSWV9OT0RFIDAKKyNkZWZpbmUgREZHX0VOQUJMRV9KSVRfQlJFQUtf
T05fRVZFUllfTk9ERSAwCiAvLyBFbWl0IGEgYnJlYWtwb2ludCBpbnRvIHRoZSBzcGVjdWxhdGlv
biBmYWlsdXJlIGNvZGUuCi0jZGVmaW5lIEVOQUJMRV9ERkdfSklUX0JSRUFLX09OX1NQRUNVTEFU
SU9OX0ZBSUxVUkUgMAorI2RlZmluZSBERkdfRU5BQkxFX0pJVF9CUkVBS19PTl9TUEVDVUxBVElP
Tl9GQUlMVVJFIDAKIC8vIExvZyBldmVyeSBzcGVjdWxhdGlvbiBmYWlsdXJlLgotI2RlZmluZSBF
TkFCTEVfREZHX1ZFUkJPU0VfU1BFQ1VMQVRJT05fRkFJTFVSRSAwCisjZGVmaW5lIERGR19FTkFC
TEVfVkVSQk9TRV9TUEVDVUxBVElPTl9GQUlMVVJFIDAKIC8vIERpc2FibGUgdGhlIERGRyBKSVQg
d2l0aG91dCBoYXZpbmcgdG8gdG91Y2ggUGxhdGZvcm0uaCEKICNkZWZpbmUgREZHX0RFQlVHX0xP
Q0FMX0RJU0JBTEUgMAogLy8gRW5hYmxlIE9TUiBlbnRyeSBmcm9tIGJhc2VsaW5lIEpJVC4KLSNk
ZWZpbmUgRU5BQkxFX0RGR19PU1JfRU5UUlkgRU5BQkxFX0RGR19KSVQKKyNkZWZpbmUgREZHX0VO
QUJMRV9PU1JfRU5UUlkgRU5BQkxFKERGR19KSVQpCiAvLyBHZW5lcmF0ZSBzdGF0cyBvbiBob3cg
c3VjY2Vzc2Z1bCB3ZSB3ZXJlIGluIG1ha2luZyB1c2Ugb2YgdGhlIERGRyBqaXQsIGFuZCByZW1h
aW5pbmcgb24gdGhlIGhvdCBwYXRoLgotI2RlZmluZSBFTkFCTEVfREZHX1NVQ0NFU1NfU1RBVFMg
MAotCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKKyNkZWZpbmUgREZHX0VOQUJMRV9TVUNDRVNTX1NU
QVRTIDAKKy8vIFVzZWQgdG8gZW5hYmxlIGNvbmRpdGlvbmFsbHkgc3VwcG9ydGVkIG9wY29kZXMg
dGhhdCBjdXJyZW50bHkgcmVzdWx0IGluIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zLgorI2RlZmlu
ZSBERkdfRU5BQkxFX1JFU1RSSUNUSU9OUyAxCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJERkdPcGVyYW5kcy5oIgpAQCAtNzAsNiArNzEsNyBAQAogI2luY2x1ZGUgIkpTVmFs
dWUuaCIKICNpbmNsdWRlICJQcmVkaWN0ZWRUeXBlLmgiCiAjaW5jbHVkZSAiVmFsdWVQcm9maWxl
LmgiCisjaW5jbHVkZSA8d3RmL0JvdW5kc0NoZWNrZWRQb2ludGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkocmV2aXNpb24gOTczMzIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIHZv
aWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogY29kZUJsb2Nr
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQogewotI2lmIEVOQUJMRShERkdfT1NSX0VOVFJZKQor
I2lmIERGR19FTkFCTEUoT1NSX0VOVFJZKQogICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5
cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwogICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0
aXZlKCkpOwogICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCktPmdldEpJVFR5cGUo
KSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCogcHJl
cGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogI2VuZGlmCiAgICAgCiAgICAgcmV0dXJu
IHJlc3VsdDsKLSNlbHNlIC8vIEVOQUJMRShERkdfT1NSX0VOVFJZKQorI2Vsc2UgLy8gREZHX0VO
QUJMRShPU1JfRU5UUlkpCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFVOVVNFRF9QQVJB
TShjb2RlQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gOTcz
MzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NzUsNyArNzc1LDcgQEAgc2l6ZV90IERGR19PUEVSQVRJT04gZGZnQ29u
dmVydEpTVmFsdWVUbwogICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKS50b0Jv
b2xlYW4oZXhlYyk7CiB9CiAKLSNpZiBFTkFCTEUoREZHX1ZFUkJPU0VfU1BFQ1VMQVRJT05fRkFJ
TFVSRSkKKyNpZiBERkdfRU5BQkxFKFZFUkJPU0VfU1BFQ1VMQVRJT05fRkFJTFVSRSkKIHZvaWQg
REZHX09QRVJBVElPTiBkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlKEV4ZWNT
dGF0ZSosIHZvaWQqIGRlYnVnSW5mb1JhdykKIHsKICAgICBTcGVjdWxhdGlvbkZhaWx1cmVEZWJ1
Z0luZm8qIGRlYnVnSW5mbyA9IHN0YXRpY19jYXN0PFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5m
byo+KGRlYnVnSW5mb1Jhdyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAkocmV2aXNpb24gOTczMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDcgKzE1OCw3IEBAIGRvdWJs
ZSBERkdfT1BFUkFUSU9OIGRmZ0NvbnZlcnRKU1ZhbHVlVG8KIHNpemVfdCBERkdfT1BFUkFUSU9O
IGRmZ0NvbnZlcnRKU1ZhbHVlVG9JbnQzMihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiBz
aXplX3QgREZHX09QRVJBVElPTiBkZmdDb252ZXJ0SlNWYWx1ZVRvQm9vbGVhbihFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSk7CiAKLSNpZiBFTkFCTEUoREZHX1ZFUkJPU0VfU1BFQ1VMQVRJT05f
RkFJTFVSRSkKKyNpZiBERkdfRU5BQkxFKFZFUkJPU0VfU1BFQ1VMQVRJT05fRkFJTFVSRSkKIHZv
aWQgREZHX09QRVJBVElPTiBkZWJ1Z09wZXJhdGlvblByaW50U3BlY3VsYXRpb25GYWlsdXJlKEV4
ZWNTdGF0ZSosIHZvaWQqKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJvcGFnYXRvci5jcHAJKHJldmlzaW9uIDk3MzMyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyAr
NTUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBmaXhwb2ludCgpCiAgICAgewotI2lmIEVO
QUJMRShERkdfREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyNpZiBERkdfRU5BQkxFKERFQlVH
X1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgIG1fZ3JhcGguZHVtcChtX2NvZGVCbG9jayk7
CiAjZW5kaWYKIApAQCAtNjMsMjggKzYzLDI4IEBAIHB1YmxpYzoKICAgICAgICAgcHJvcGFnYXRl
UHJlZGljdGlvbnMoKTsKICAgICAgICAgZml4dXAoKTsKICAgICAgICAgCi0jaWYgRU5BQkxFKERG
R19ERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFH
QVRJT05fVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCJHcmFwaCBhZnRlciBwcm9wYWdhdGlvbiBm
aXh1cDpcbiIpOwogICAgICAgICBtX2dyYXBoLmR1bXAobV9jb2RlQmxvY2spOwogI2VuZGlmCiAK
ICAgICAgICAgbG9jYWxDU0UoKTsKIAotI2lmIEVOQUJMRShERkdfREVCVUdfUFJPUEFHQVRJT05f
VkVSQk9TRSkKKyNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAg
ICAgIHByaW50ZigiR3JhcGggYWZ0ZXIgQ1NFOlxuIik7CiAgICAgICAgIG1fZ3JhcGguZHVtcCht
X2NvZGVCbG9jayk7CiAjZW5kaWYKIAogICAgICAgICBhbGxvY2F0ZVZpcnR1YWxSZWdpc3RlcnMo
KTsKIAotI2lmIEVOQUJMRShERkdfREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyNpZiBERkdf
RU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgIHByaW50ZigiR3JhcGgg
YWZ0ZXIgdmlydHVhbCByZWdpc3RlciBhbGxvY2F0aW9uOlxuIik7CiAgICAgICAgIG1fZ3JhcGgu
ZHVtcChtX2NvZGVCbG9jayk7CiAjZW5kaWYKIAogICAgICAgICBnbG9iYWxDRkEoKTsKIAotI2lm
IEVOQUJMRShERkdfREVCVUdfVkVSQk9TRSkKKyNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0Up
CiAgICAgICAgIHByaW50ZigiR3JhcGggYWZ0ZXIgcHJvcGFnYXRpb246XG4iKTsKICAgICAgICAg
bV9ncmFwaC5kdW1wKG1fY29kZUJsb2NrKTsKICNlbmRpZgpAQCAtMTE3LDcgKzExNyw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGlmIChub2RlLmhhc0FyaXRoTm9kZUZsYWdzKCkpCiAgICAgICAgICAg
ICBmbGFncyA9IG5vZGUucmF3QXJpdGhOb2RlRmxhZ3MoKTsKICAgICAgICAgCi0jaWYgRU5BQkxF
KERGR19ERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorI2lmIERGR19FTkFCTEUoREVCVUdfUFJP
UEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCIgICAlcyBAJXU6ICVzICIsIEdyYXBo
OjpvcE5hbWUob3ApLCBtX2NvbXBpbGVJbmRleCwgYXJpdGhOb2RlRmxhZ3NBc1N0cmluZyhmbGFn
cykpOwogI2VuZGlmCiAgICAgICAgIApAQCAtMjIzLDcgKzIyMyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0jaWYgRU5BQkxFKERGR19ERUJVR19QUk9QQUdB
VElPTl9WRVJCT1NFKQorI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkK
ICAgICAgICAgcHJpbnRmKCIlc1xuIiwgY2hhbmdlZCA/ICJDSEFOR0VEIiA6ICIiKTsKICNlbmRp
ZgogICAgICAgICAKQEAgLTIzMiw3ICsyMzIsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQg
cHJvcGFnYXRlQXJpdGhOb2RlRmxhZ3NGb3J3YXJkKCkKICAgICB7Ci0jaWYgRU5BQkxFKERGR19E
RUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJ
T05fVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCJQcm9wYWdhdGluZyBhcml0aG1ldGljIG5vZGUg
ZmxhZ3MgZm9yd2FyZCBbJXVdXG4iLCArK21fY291bnQpOwogI2VuZGlmCiAgICAgICAgIGZvciAo
bV9jb21waWxlSW5kZXggPSAwOyBtX2NvbXBpbGVJbmRleCA8IG1fZ3JhcGguc2l6ZSgpOyArK21f
Y29tcGlsZUluZGV4KQpAQCAtMjQxLDcgKzI0MSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9p
ZCBwcm9wYWdhdGVBcml0aE5vZGVGbGFnc0JhY2t3YXJkKCkKICAgICB7Ci0jaWYgRU5BQkxFKERG
R19ERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFH
QVRJT05fVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCJQcm9wYWdhdGluZyBhcml0aG1ldGljIG5v
ZGUgZmxhZ3MgYmFja3dhcmQgWyV1XVxuIiwgKyttX2NvdW50KTsKICNlbmRpZgogICAgICAgICBm
b3IgKG1fY29tcGlsZUluZGV4ID0gbV9ncmFwaC5zaXplKCk7IG1fY29tcGlsZUluZGV4LS0gPiAw
OykKQEAgLTI1MCw3ICsyNTAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgcHJvcGFnYXRl
QXJpdGhOb2RlRmxhZ3MoKQogICAgIHsKLSNpZiBFTkFCTEUoREZHX0RFQlVHX1BST1BBR0FUSU9O
X1ZFUkJPU0UpCisjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQogICAg
ICAgICBtX2NvdW50ID0gMDsKICNlbmRpZgogICAgICAgICBkbyB7CkBAIC0yOTQsNyArMjk0LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIE5vZGVUeXBlIG9wID0gbm9kZS5vcDsKIAot
I2lmIEVOQUJMRShERkdfREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyNpZiBERkdfRU5BQkxF
KERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgIHByaW50ZigiICAgJXMgQCV1OiAi
LCBHcmFwaDo6b3BOYW1lKG9wKSwgbV9jb21waWxlSW5kZXgpOwogI2VuZGlmCiAgICAgICAgIApA
QCAtNjAwLDcgKzYwMCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgfQogCi0jaWYgRU5B
QkxFKERGR19ERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorI2lmIERGR19FTkFCTEUoREVCVUdf
UFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCIlc1xuIiwgcHJlZGljdGlvblRv
U3RyaW5nKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLnByZWRpY3Rpb24oKSkpOwogI2VuZGlmCiAg
ICAgICAgIApAQCAtNjA5LDcgKzYwOSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBwcm9w
YWdhdGVQcmVkaWN0aW9uc0ZvcndhcmQoKQogICAgIHsKLSNpZiBFTkFCTEUoREZHX0RFQlVHX1BS
T1BBR0FUSU9OX1ZFUkJPU0UpCisjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJC
T1NFKQogICAgICAgICBwcmludGYoIlByb3BhZ2F0aW5nIHByZWRpY3Rpb25zIGZvcndhcmQgWyV1
XVxuIiwgKyttX2NvdW50KTsKICNlbmRpZgogICAgICAgICBmb3IgKG1fY29tcGlsZUluZGV4ID0g
MDsgbV9jb21waWxlSW5kZXggPCBtX2dyYXBoLnNpemUoKTsgKyttX2NvbXBpbGVJbmRleCkKQEAg
LTYxOCw3ICs2MTgsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgcHJvcGFnYXRlUHJlZGlj
dGlvbnNCYWNrd2FyZCgpCiAgICAgewotI2lmIEVOQUJMRShERkdfREVCVUdfUFJPUEFHQVRJT05f
VkVSQk9TRSkKKyNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAg
ICAgIHByaW50ZigiUHJvcGFnYXRpbmcgcHJlZGljdGlvbnMgYmFja3dhcmQgWyV1XVxuIiwgKytt
X2NvdW50KTsKICNlbmRpZgogICAgICAgICBmb3IgKG1fY29tcGlsZUluZGV4ID0gbV9ncmFwaC5z
aXplKCk7IG1fY29tcGlsZUluZGV4LS0gPiAwOykKQEAgLTYyNyw3ICs2MjcsNyBAQCBwcml2YXRl
OgogICAgIAogICAgIHZvaWQgcHJvcGFnYXRlUHJlZGljdGlvbnMoKQogICAgIHsKLSNpZiBFTkFC
TEUoREZHX0RFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCisjaWYgREZHX0VOQUJMRShERUJVR19Q
Uk9QQUdBVElPTl9WRVJCT1NFKQogICAgICAgICBtX2NvdW50ID0gMDsKICNlbmRpZgogICAgICAg
ICBkbyB7CkBAIC02NTEsNyArNjUxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRvRG91YmxlKE5v
ZGVJbmRleCBub2RlSW5kZXgpCiAgICAgewogICAgICAgICBpZiAobV9ncmFwaFtub2RlSW5kZXhd
Lm9wID09IFZhbHVlVG9OdW1iZXIpIHsKLSNpZiBFTkFCTEUoREZHX0RFQlVHX1BST1BBR0FUSU9O
X1ZFUkJPU0UpCisjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQogICAg
ICAgICAgICAgcHJpbnRmKCIgIEAldSAtPiBWYWx1ZVRvRG91YmxlIiwgbm9kZUluZGV4KTsKICNl
bmRpZgogICAgICAgICAgICAgbV9ncmFwaFtub2RlSW5kZXhdLm9wID0gVmFsdWVUb0RvdWJsZTsK
QEAgLTY2NSw3ICs2NjUsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgTm9kZVR5cGUg
b3AgPSBub2RlLm9wOwogCi0jaWYgRU5BQkxFKERGR19ERUJVR19QUk9QQUdBVElPTl9WRVJCT1NF
KQorI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAgcHJp
bnRmKCIgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5hbWUob3ApLCBtX2NvbXBpbGVJbmRleCk7CiAj
ZW5kaWYKICAgICAgICAgCkBAIC03NDEsNyArNzQxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGlmIChtX2NvZGVCbG9jay0+aWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXIoKSkgIT0g
bV9nbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAotI2lmIEVOQUJMRShERkdfREVCVUdfUFJPUEFHQVRJT05fVkVSQk9T
RSkKKyNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgICAg
ICBwcmludGYoIiAgQCV1IC0+ICVzIiwgbV9jb21waWxlSW5kZXgsIGlzQXJyYXkgPyAiR2V0QXJy
YXlMZW5ndGgiIDogIkdldFN0cmluZ0xlbmd0aCIpOwogI2VuZGlmCiAgICAgICAgICAgICBub2Rl
Lm9wID0gaXNBcnJheSA/IEdldEFycmF5TGVuZ3RoIDogR2V0U3RyaW5nTGVuZ3RoOwpAQCAtNzUy
LDE0ICs3NTIsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
LSNpZiBFTkFCTEUoREZHX0RFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCisjaWYgREZHX0VOQUJM
RShERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQogICAgICAgICBwcmludGYoIlxuIik7CiAjZW5k
aWYKICAgICB9CiAgICAgCiAgICAgdm9pZCBmaXh1cCgpCiAgICAgewotI2lmIEVOQUJMRShERkdf
REVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FU
SU9OX1ZFUkJPU0UpCiAgICAgICAgIHByaW50ZigiUGVyZm9ybWluZyBGaXh1cFxuIik7CiAjZW5k
aWYKICAgICAgICAgZm9yIChtX2NvbXBpbGVJbmRleCA9IDA7IG1fY29tcGlsZUluZGV4IDwgbV9n
cmFwaC5zaXplKCk7ICsrbV9jb21waWxlSW5kZXgpCkBAIC04MTksNyArODE5LDcgQEAgcHJpdmF0
ZToKICAgICBOb2RlSW5kZXggc3RhcnRJbmRleEZvckNoaWxkcmVuKE5vZGVJbmRleCBjaGlsZDEg
PSBOb05vZGUsIE5vZGVJbmRleCBjaGlsZDIgPSBOb05vZGUsIE5vZGVJbmRleCBjaGlsZDMgPSBO
b05vZGUpCiAgICAgewogICAgICAgICBOb2RlSW5kZXggcmVzdWx0ID0gY29tcHV0ZVN0YXJ0SW5k
ZXhGb3JDaGlsZHJlbihjaGlsZDEsIGNoaWxkMiwgY2hpbGQzKTsKLSNpZiBFTkFCTEUoREZHX0RF
QlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCisjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElP
Tl9WRVJCT1NFKQogICAgICAgICBwcmludGYoIiAgbG9va2JhY2sgJXU6ICIsIHJlc3VsdCk7CiAj
ZW5kaWYKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTgzOSw3ICs4MzksNyBAQCBwcml2YXRl
OgogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXN1bHQrKzsKICAgICAgICAgQVNTRVJUKHJl
c3VsdCA8PSBtX2NvbXBpbGVJbmRleCk7Ci0jaWYgRU5BQkxFKERGR19ERUJVR19QUk9QQUdBVElP
Tl9WRVJCT1NFKQorI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKICAg
ICAgICAgcHJpbnRmKCIgIGxpbWl0ICV1OiAiLCByZXN1bHQpOwogI2VuZGlmCiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAo
bV9ncmFwaFttX2NvbXBpbGVJbmRleF0ucHJlZGljdGlvbigpICE9IG1fZ3JhcGhbcmVwbGFjZW1l
bnRdLnByZWRpY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0jaWYgRU5B
QkxFKERGR19ERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorI2lmIERGR19FTkFCTEUoREVCVUdf
UFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCIgICBSZXBsYWNpbmcgQCV1IC0+
IEAldSIsIG1fY29tcGlsZUluZGV4LCByZXBsYWNlbWVudCk7CiAjZW5kaWYKICAgICAgICAgCkBA
IC0xMjU1LDcgKzEyNTUsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgZWxpbWluYXRlKCkK
ICAgICB7Ci0jaWYgRU5BQkxFKERGR19ERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorI2lmIERG
R19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCIgICBF
bGltaW5hdGluZyBAJXUiLCBtX2NvbXBpbGVJbmRleCk7CiAjZW5kaWYKICAgICAgICAgCkBAIC0x
Mjc5LDcgKzEyNzksNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJh
dGUoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0jaWYgRU5BQkxFKERGR19ERUJV
R19QUk9QQUdBVElPTl9WRVJCT1NFKQorI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05f
VkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCIgICAlcyBAJXU6ICIsIEdyYXBoOjpvcE5hbWUobV9n
cmFwaFttX2NvbXBpbGVJbmRleF0ub3ApLCBtX2NvbXBpbGVJbmRleCk7CiAjZW5kaWYKICAgICAg
ICAgCkBAIC0xMzk0LDcgKzEzOTQsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBtX2xhc3RTZWVuW25vZGUub3AgJiBOb2RlSWRNYXNrXSA9IG1fY29tcGlsZUluZGV4
OwotI2lmIEVOQUJMRShERkdfREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyNpZiBERkdfRU5B
QkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgIHByaW50ZigiXG4iKTsKICNl
bmRpZgogICAgIH0KQEAgLTE0MDksNyArMTQwOSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9p
ZCBsb2NhbENTRSgpCiAgICAgewotI2lmIEVOQUJMRShERkdfREVCVUdfUFJPUEFHQVRJT05fVkVS
Qk9TRSkKKyNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAg
IHByaW50ZigiUGVyZm9ybWluZyBsb2NhbCBDU0U6Iik7CiAjZW5kaWYKICAgICAgICAgZm9yICh1
bnNpZ25lZCBibG9jayA9IDA7IGJsb2NrIDwgbV9ncmFwaC5tX2Jsb2Nrcy5zaXplKCk7ICsrYmxv
Y2spCkBAIC0xNDE4LDcgKzE0MTgsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgYWxsb2Nh
dGVWaXJ0dWFsUmVnaXN0ZXJzKCkKICAgICB7Ci0jaWYgRU5BQkxFKERGR19ERUJVR19WRVJCT1NF
KQorI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCJQcmVzZXJ2
ZWQgdmFyczogIik7CiAgICAgICAgIG1fZ3JhcGgubV9wcmVzZXJ2ZWRWYXJzLmR1bXAoc3Rkb3V0
KTsKICAgICAgICAgcHJpbnRmKCJcbiIpOwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgdW5zaWduZWQgY2FsbGVlUmVnaXN0ZXJzID0gc2NvcmVCb2FyZC5oaWdoV2F0ZXJt
YXJrKCkgKyBtX2dyYXBoLm1fcGFyYW1ldGVyU2xvdHM7CiAgICAgICAgIGlmICgodW5zaWduZWQp
bV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzIDwgY2FsbGVlUmVnaXN0ZXJzKQogICAg
ICAgICAgICAgbV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzID0gY2FsbGVlUmVnaXN0
ZXJzOwotI2lmIEVOQUJMRShERkdfREVCVUdfVkVSQk9TRSkKKyNpZiBERkdfRU5BQkxFKERFQlVH
X1ZFUkJPU0UpCiAgICAgICAgIHByaW50ZigiTnVtIGNhbGxlZSByZWdpc3RlcnM6ICV1XG4iLCBj
YWxsZWVSZWdpc3RlcnMpOwogI2VuZGlmCiAgICAgfQpAQCAtMTQ3NCwxMSArMTQ3NCwxMSBAQCBw
cml2YXRlOgogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGgubV9ibG9ja3NbYmxv
Y2tJbmRleF0uZ2V0KCk7CiAgICAgICAgIGlmICghYmxvY2stPmNmYVNob3VsZFJldmlzaXQpCiAg
ICAgICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKERGR19ERUJVR19QUk9QQUdBVElPTl9WRVJC
T1NFKQorI2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAg
cHJpbnRmKCIgICBCbG9jayAjJXUgKGJjIyV1KTpcbiIsIGJsb2NrSW5kZXgsIGJsb2NrLT5ieXRl
Y29kZUJlZ2luKTsKICNlbmRpZgogICAgICAgICBzdGF0ZS5iZWdpbkJhc2ljQmxvY2soYmxvY2sp
OwotI2lmIEVOQUJMRShERkdfREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyNpZiBERkdfRU5B
QkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgIHByaW50ZigiICAgICAgaGVh
ZCB2YXJzOiAiKTsKICAgICAgICAgZHVtcE9wZXJhbmRzKGJsb2NrLT52YWx1ZXNBdEhlYWQsIHN0
ZG91dCk7CiAgICAgICAgIHByaW50ZigiXG4iKTsKQEAgLTE0ODYsNyArMTQ4Niw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGZvciAoTm9kZUluZGV4IG5vZGVJbmRleCA9IGJsb2NrLT5iZWdpbjsgbm9k
ZUluZGV4IDwgYmxvY2stPmVuZDsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAgIGlmICghbV9n
cmFwaFtub2RlSW5kZXhdLnNob3VsZEdlbmVyYXRlKCkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0jaWYgRU5BQkxFKERGR19ERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorI2lmIERGR19F
TkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAgICAgIHByaW50ZigiICAg
ICAgJXMgQCV1OiAiLCBHcmFwaDo6b3BOYW1lKG1fZ3JhcGhbbm9kZUluZGV4XS5vcCksIG5vZGVJ
bmRleCk7CiAgICAgICAgICAgICBzdGF0ZS5kdW1wKHN0ZG91dCk7CiAgICAgICAgICAgICBwcmlu
dGYoIlxuIik7CkBAIC0xNDk0LDEzICsxNDk0LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBp
ZiAoIXN0YXRlLmV4ZWN1dGUobm9kZUluZGV4KSkKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQotI2lmIEVOQUJMRShERkdfREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyNpZiBE
RkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgIHByaW50ZigiICAg
ICAgdGFpbCByZWdzOiAiKTsKICAgICAgICAgc3RhdGUuZHVtcChzdGRvdXQpOwogICAgICAgICBw
cmludGYoIlxuIik7CiAjZW5kaWYKICAgICAgICAgbV9jaGFuZ2VkIHw9IHN0YXRlLmVuZEJhc2lj
QmxvY2soQWJzdHJhY3RTdGF0ZTo6TWVyZ2VUb1N1Y2Nlc3NvcnMpOwotI2lmIEVOQUJMRShERkdf
REVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FU
SU9OX1ZFUkJPU0UpCiAgICAgICAgIHByaW50ZigiICAgICAgdGFpbCB2YXJzOiAiKTsKICAgICAg
ICAgZHVtcE9wZXJhbmRzKGJsb2NrLT52YWx1ZXNBdFRhaWwsIHN0ZG91dCk7CiAgICAgICAgIHBy
aW50ZigiXG4iKTsKQEAgLTE1MDksNyArMTUwOSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9p
ZCBwZXJmb3JtRm9yd2FyZENGQShBYnN0cmFjdFN0YXRlJiBzdGF0ZSkKICAgICB7Ci0jaWYgRU5B
QkxFKERGR19ERUJVR19QUk9QQUdBVElPTl9WRVJCT1NFKQorI2lmIERGR19FTkFCTEUoREVCVUdf
UFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCJDRkEgWyV1XVxuIiwgKyttX2Nv
dW50KTsKICNlbmRpZgogICAgICAgICAKQEAgLTE1MTksNyArMTUxOSw3IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgdm9pZCBnbG9iYWxDRkEoKQogICAgIHsKLSNpZiBFTkFCTEUoREZHX0RFQlVHX1BS
T1BBR0FUSU9OX1ZFUkJPU0UpCisjaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9WRVJC
T1NFKQogICAgICAgICBtX2NvdW50ID0gMDsKICNlbmRpZgogICAgICAgICAKQEAgLTE1NTIsNyAr
MTU1Miw3IEBAIHByaXZhdGU6CiAgICAgTm9kZUluZGV4IG1fc3RhcnQ7CiAgICAgTm9kZUluZGV4
IG1fY29tcGlsZUluZGV4OwogICAgIAotI2lmIEVOQUJMRShERkdfREVCVUdfUFJPUEFHQVRJT05f
VkVSQk9TRSkKKyNpZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAg
dW5zaWduZWQgbV9jb3VudDsKICNlbmRpZgogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTY29yZUJvYXJkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTY29yZUJvYXJkLmgJKHJldmlzaW9uIDk3MzMyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTY29yZUJvYXJkLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4
LDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0jaWYgRU5BQkxFKERGR19DT05TSVNU
RU5DWV9DSEVDSykKKyNpZiBERkdfRU5BQkxFKENPTlNJU1RFTkNZX0NIRUNLKQogICAgIH5TY29y
ZUJvYXJkKCkKICAgICB7CiAgICAgICAgIC8vIEZvciBldmVyeSBlbnRyeSBpbiB0aGUgdXNlZCBs
aXN0IHRoZSB1c2UgY291bnQgb2YgdGhlIHZpcnR1YWwgcmVnaXN0ZXIgc2hvdWxkIGJlIHplcm8u
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDk3MzkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyAr
NDgsNyBAQCBzdGF0aWMgZG91YmxlIENERUNMIGZtb2RXaXRoQ0RlY2woZG91YmxlCiB0ZW1wbGF0
ZTxib29sIHN0cmljdD4KIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludElu
dGVybmFsKE5vZGVJbmRleCBub2RlSW5kZXgsIERhdGFGb3JtYXQmIHJldHVybkZvcm1hdCkKIHsK
LSNpZiBFTkFCTEUoREZHX0RFQlVHX1ZFUkJPU0UpCisjaWYgREZHX0VOQUJMRShERUJVR19WRVJC
T1NFKQogICAgIGZwcmludGYoc3RkZXJyLCAiU3BlY0ludEAlZCAgICIsIG5vZGVJbmRleCk7CiAj
ZW5kaWYKICAgICBOb2RlJiBub2RlID0gYXQobm9kZUluZGV4KTsKQEAgLTE0NSw3ICsxNDUsNyBA
QCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnRTCiAKIEZQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShOb2RlSW5kZXggbm9kZUluZGV4KQogewot
I2lmIEVOQUJMRShERkdfREVCVUdfVkVSQk9TRSkKKyNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJP
U0UpCiAgICAgZnByaW50ZihzdGRlcnIsICJTcGVjRG91YmxlQCVkICAgIiwgbm9kZUluZGV4KTsK
ICNlbmRpZgogICAgIE5vZGUmIG5vZGUgPSBhdChub2RlSW5kZXgpOwpAQCAtMjYyLDcgKzI2Miw3
IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKIAogR1BSUmVnIFNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbChOb2RlSW5kZXggbm9kZUluZGV4KQogewot
I2lmIEVOQUJMRShERkdfREVCVUdfVkVSQk9TRSkKKyNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJP
U0UpCiAgICAgZnByaW50ZihzdGRlcnIsICJTcGVjQ2VsbEAlZCAgICIsIG5vZGVJbmRleCk7CiAj
ZW5kaWYKICAgICBOb2RlJiBub2RlID0gYXQobm9kZUluZGV4KTsKQEAgLTMzOSw3ICszMzksNyBA
QCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgVU5VU0VEX1BBUkFNKG5vZGVJbmRleCk7CiAKLSNpZiBFTkFCTEUo
REZHX0RFQlVHX1ZFUkJPU0UpCisjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgICBm
cHJpbnRmKHN0ZGVyciwgIlNwZWNCb29sQCVkICAgIiwgbm9kZUluZGV4KTsKICNlbmRpZgogICAg
IHJldHVybiBJbnZhbGlkR1BSUmVnOwpAQCAtMTYxMiw3ICsxNjEyLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBBU1NFUlQoR1BSSW5mbzo6cmVn
VDEgIT0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAgICBBU1NFUlQoR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIgIT0gR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogCi0jaWYgRU5B
QkxFKERGR19TVUNDRVNTX1NUQVRTKQorI2lmIERGR19FTkFCTEUoU1VDQ0VTU19TVEFUUykKICAg
ICAgICAgc3RhdGljIFNhbXBsaW5nQ291bnRlciBjb3VudGVyKCJTcGVjdWxhdGl2ZUpJVCIpOwog
ICAgICAgICBtX2ppdC5lbWl0Q291bnQoY291bnRlcik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNp
b24gOTczOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIHRlbXBsYXRlPGJvb2wgc3RyaWN0PgogR1BSUmVnIFNwZWN1bGF0aXZl
SklUOjpmaWxsU3BlY3VsYXRlSW50SW50ZXJuYWwoTm9kZUluZGV4IG5vZGVJbmRleCwgRGF0YUZv
cm1hdCYgcmV0dXJuRm9ybWF0KQogewotI2lmIEVOQUJMRShERkdfREVCVUdfVkVSQk9TRSkKKyNp
ZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCiAgICAgZnByaW50ZihzdGRlcnIsICJTcGVjSW50
QCVkICAgIiwgbm9kZUluZGV4KTsKICNlbmRpZgogICAgIE5vZGUmIG5vZGUgPSBhdChub2RlSW5k
ZXgpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZUludFMKIAogRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YmxlKE5v
ZGVJbmRleCBub2RlSW5kZXgpCiB7Ci0jaWYgRU5BQkxFKERGR19ERUJVR19WRVJCT1NFKQorI2lm
IERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICBmcHJpbnRmKHN0ZGVyciwgIlNwZWNEb3Vi
bGVAJWQgICAiLCBub2RlSW5kZXgpOwogI2VuZGlmCiAgICAgTm9kZSYgbm9kZSA9IGF0KG5vZGVJ
bmRleCk7CkBAIC0zMjMsNyArMzIzLDcgQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlRG91YgogCiBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKE5v
ZGVJbmRleCBub2RlSW5kZXgpCiB7Ci0jaWYgRU5BQkxFKERGR19ERUJVR19WRVJCT1NFKQorI2lm
IERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICBmcHJpbnRmKHN0ZGVyciwgIlNwZWNDZWxs
QCVkICAgIiwgbm9kZUluZGV4KTsKICNlbmRpZgogICAgIE5vZGUmIG5vZGUgPSBhdChub2RlSW5k
ZXgpOwpAQCAtMzk2LDcgKzM5Niw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZUNlbGwKIAogR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbihO
b2RlSW5kZXggbm9kZUluZGV4KQogewotI2lmIEVOQUJMRShERkdfREVCVUdfVkVSQk9TRSkKKyNp
ZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCiAgICAgZnByaW50ZihzdGRlcnIsICJTcGVjQm9v
bEAlZCAgICIsIG5vZGVJbmRleCk7CiAjZW5kaWYKICAgICBOb2RlJiBub2RlID0gYXQobm9kZUlu
ZGV4KTsKQEAgLTE3MzAsNyArMTczMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgQVNTRVJUKEdQUkluZm86OnJlZ1QxICE9IEdQUkluZm86OnJl
dHVyblZhbHVlR1BSKTsKICAgICAgICAgQVNTRVJUKEdQUkluZm86OnJldHVyblZhbHVlR1BSICE9
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKIAotI2lmIEVOQUJMRShERkdfU1VDQ0VTU19T
VEFUUykKKyNpZiBERkdfRU5BQkxFKFNVQ0NFU1NfU1RBVFMpCiAgICAgICAgIHN0YXRpYyBTYW1w
bGluZ0NvdW50ZXIgY291bnRlcigiU3BlY3VsYXRpdmVKSVQiKTsKICAgICAgICAgbV9qaXQuZW1p
dENvdW50KGNvdW50ZXIpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gOTczMzIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoQmFzaWNCbG9j
ayYKICAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoYmxvY2spOwogCiAgICAgbV9ibG9ja0hl
YWRzW21fYmxvY2tdID0gbV9qaXQubGFiZWwoKTsKLSNpZiBFTkFCTEUoREZHX0pJVF9CUkVBS19P
Tl9FVkVSWV9CTE9DSykKKyNpZiBERkdfRU5BQkxFKEpJVF9CUkVBS19PTl9FVkVSWV9CTE9DSykK
ICAgICBtX2ppdC5icmVha3BvaW50KCk7CiAjZW5kaWYKIApAQCAtMjkyLDE3ICsyOTIsMTcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShCYXNpY0Jsb2NrJgogICAgICAgICBOb2RlJiBu
b2RlID0gYXQobV9jb21waWxlSW5kZXgpOwogICAgICAgICBtX2J5dGVjb2RlSW5kZXhGb3JPU1Ig
PSBub2RlLmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpOwogICAgICAgICBpZiAoIW5vZGUuc2hv
dWxkR2VuZXJhdGUoKSkgewotI2lmIEVOQUJMRShERkdfREVCVUdfVkVSQk9TRSkKKyNpZiBERkdf
RU5BQkxFKERFQlVHX1ZFUkJPU0UpCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlNwZWN1
bGF0aXZlSklUIHNraXBwaW5nIE5vZGUgQCVkIChiYyMldSkgYXQgSklUIG9mZnNldCAweCV4ICAg
ICAiLCAoaW50KW1fY29tcGlsZUluZGV4LCBub2RlLmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgp
LCBtX2ppdC5kZWJ1Z09mZnNldCgpKTsKICNlbmRpZgogICAgICAgICAgICAgaWYgKG5vZGUub3Ag
PT0gU2V0TG9jYWwpCiAgICAgICAgICAgICAgICAgY29tcGlsZU1vdkhpbnQobm9kZSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAKLSNpZiBFTkFCTEUoREZHX0RFQlVHX1ZFUkJPU0Up
CisjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgICAgICAgICAgZnByaW50ZihzdGRl
cnIsICJTcGVjdWxhdGl2ZUpJVCBnZW5lcmF0aW5nIE5vZGUgQCVkIChiYyMldSkgYXQgSklUIG9m
ZnNldCAweCV4ICAgIiwgKGludCltX2NvbXBpbGVJbmRleCwgbm9kZS5jb2RlT3JpZ2luLmJ5dGVj
b2RlSW5kZXgoKSwgbV9qaXQuZGVidWdPZmZzZXQoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoREZH
X0pJVF9CUkVBS19PTl9FVkVSWV9OT0RFKQorI2lmIERGR19FTkFCTEUoSklUX0JSRUFLX09OX0VW
RVJZX05PREUpCiAgICAgICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CiAjZW5kaWYKICAgICAg
ICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKEJhc2ljQmxvY2smCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0jaWYgRU5BQkxFKERGR19ERUJVR19WRVJCT1NF
KQorI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICAgICAgICAgIGlmIChub2RlLmhh
c1Jlc3VsdCgpKSB7CiAgICAgICAgICAgICAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBtX2dl
bmVyYXRpb25JbmZvW25vZGUudmlydHVhbFJlZ2lzdGVyKCldOwogICAgICAgICAgICAgICAgIGZw
cmludGYoc3RkZXJyLCAiLT4gJXMsIHZyIyVkIiwgZGF0YUZvcm1hdFRvU3RyaW5nKGluZm8ucmVn
aXN0ZXJGb3JtYXQoKSksIChpbnQpbm9kZS52aXJ0dWFsUmVnaXN0ZXIoKSk7CkBAIC0zMzQsNyAr
MzM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShCYXNpY0Jsb2NrJgogI2VuZGlm
CiAgICAgICAgIH0KICAgICAgICAgCi0jaWYgRU5BQkxFKERGR19WRVJCT1NFX1ZBTFVFX1JFQ09W
RVJJRVMpCisjaWYgREZHX0VOQUJMRShWRVJCT1NFX1ZBTFVFX1JFQ09WRVJJRVMpCiAgICAgICAg
IGZvciAoaW50IG9wZXJhbmQgPSAtbV9hcmd1bWVudHMuc2l6ZSgpIC0gUmVnaXN0ZXJGaWxlOjpD
YWxsRnJhbWVIZWFkZXJTaXplOyBvcGVyYW5kIDwgLVJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZTsgKytvcGVyYW5kKQogICAgICAgICAgICAgY29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3Io
b3BlcmFuZCkuZHVtcChzdGRlcnIpOwogICAgICAgICAKQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKEJhc2ljQmxvY2smCiAgICAgICAgICAgICBjb21wdXRl
VmFsdWVSZWNvdmVyeUZvcihvcGVyYW5kKS5kdW1wKHN0ZGVycik7CiAjZW5kaWYKIAotI2lmIEVO
QUJMRShERkdfREVCVUdfVkVSQk9TRSkKKyNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCiAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKICNlbmRpZgogICAgICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9u
IDk3MzMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MDYsNyArNTA2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBDYWxs
ZWQgd2hlbiB3ZSBzdGF0aWNhbGx5IGRldGVybWluZSB0aGF0IGEgc3BlY3VsYXRpb24gd2lsbCBm
YWlsLgogICAgIHZvaWQgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oKQogICAgIHsKLSNp
ZiBFTkFCTEUoREZHX0RFQlVHX1ZFUkJPU0UpCisjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NF
KQogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlNwZWN1bGF0aXZlSklUIHdhcyB0ZXJtaW5hdGVk
LlxuIik7CiAjZW5kaWYKICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gOTczMzIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1Nyw3ICs1NTcsNyBAQCBKSVRD
b2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAKICAgICBKdW1wIHJlZ2lzdGVy
RmlsZUNoZWNrOwogICAgIGlmIChtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNv
ZGUpIHsKLSNpZiBFTkFCTEUoREZHX1NVQ0NFU1NfU1RBVFMpCisjaWYgREZHX0VOQUJMRShTVUND
RVNTX1NUQVRTKQogICAgICAgICBzdGF0aWMgU2FtcGxpbmdDb3VudGVyIGNvdW50ZXIoIm9yaWdu
YWxKSVQiKTsKICAgICAgICAgZW1pdENvdW50KGNvdW50ZXIpOwogI2VuZGlmCg==
</data>
<flag name="review"
          id="108564"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>