<?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>77669</bug_id>
          
          <creation_ts>2012-02-02 12:45:13 -0800</creation_ts>
          <short_desc>Release build debugging should be easier</short_desc>
          <delta_ts>2012-02-06 17:35:29 -0800</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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>548067</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-02 12:45:13 -0800</bug_when>
    <thetext>JavaScriptCore has loads of #ifndef NDEBUG guards for helper methods that print the internal representation (bytecode, DFG, JSValue).  While this saves some space in release binaries, it also makes it really hard to do meaningful debugging while in release mode.  Not to mention it adds more preprocessor noise.  It would be better if we just let the various debugging helpers compiled in always, so we can always call them even when in a release build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548072</commentid>
    <comment_count>1</comment_count>
      <attachid>125163</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-02 12:47:54 -0800</bug_when>
    <thetext>Created attachment 125163
the patch

No performance impact.  0.8% increase in the size of the JavaScriptCore framework.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548080</commentid>
    <comment_count>2</comment_count>
      <attachid>125163</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-02 12:54:04 -0800</bug_when>
    <thetext>Comment on attachment 125163
the patch

It would be great at some point if we can harden the code so that that debugOffset cannot be abused in a way that would introduce bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548141</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-02 13:50:19 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/106590</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550462</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-06 17:35:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/10817157&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125163</attachid>
            <date>2012-02-02 12:47:54 -0800</date>
            <delta_ts>2012-02-02 12:54:04 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>moardebug_patch_1.diff</filename>
            <type>text/plain</type>
            <size>26890</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NTc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBA
QAorMjAxMi0wMi0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFJlbGVhc2UgYnVpbGQgZGVidWdnaW5nIHNob3VsZCBiZSBlYXNpZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NjY5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNQXNzZW1ibGVy
Lmg6CisgICAgICAgIChBUk1Bc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6
OmRlYnVnT2Zmc2V0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaDoKKyAg
ICAgICAgKEFSTXY3QXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmRl
YnVnT2Zmc2V0KToKKyAgICAgICAgKEFSTUluc3RydWN0aW9uRm9ybWF0dGVyKToKKyAgICAgICAg
KEpTQzo6QVJNdjdBc3NlbWJsZXI6OkFSTUluc3RydWN0aW9uRm9ybWF0dGVyOjpkZWJ1Z09mZnNl
dCk6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAg
ICAgKEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpkZWJ1Z09mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVyL0Fzc2VtYmxlckJ1
ZmZlci5oOgorICAgICAgICAoQXNzZW1ibGVyQnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bGVyQnVmZmVyOjpkZWJ1Z09mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIu
aDoKKyAgICAgICAgKExpbmtCdWZmZXIpOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpkZWJ1
Z1NpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmg6CisgICAgICAgIChN
SVBTQXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6ZGVidWdPZmZzZXQp
OgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKFg4NkFzc2Vt
Ymxlcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6ZGVidWdPZmZzZXQpOgorICAgICAg
ICAoWDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6
Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpkZWJ1Z09mZnNldCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVP
cmlnaW4uaDoKKyAgICAgICAgKENvZGVPcmlnaW4pOgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KEpTQzo6Q29kZU9yaWdpbjo6aW5saW5lU3RhY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0RGR0V4
aXRQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkRGRzo6ZXhpdEtpbmRUb1N0cmluZyk6CisgICAg
ICAgICogYnl0ZWNvZGUvRGF0YUZvcm1hdC5oOgorICAgICAgICAoSlNDOjpkYXRhRm9ybWF0VG9T
dHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWRpY3RlZFR5cGUuY3BwOgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKEpTQzo6cHJlZGljdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBieXRl
Y29kZS9QcmVkaWN0ZWRUeXBlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1ZhbHVlUmVjb3ZlcnkuaDoKKyAgICAgICAgKFZhbHVlUmVjb3ZlcnkpOgorICAgICAgICAoSlND
OjpWYWx1ZVJlY292ZXJ5OjpkdW1wKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmg6CisgICAg
ICAgIChTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlOjpkdW1wKToKKyAgICAgICAgKEFic3RyYWN0VmFsdWUpOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdBc3Nl
bWJseUhlbHBlcnMuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgIChBc3NlbWJseUhlbHBlcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZGVidWdDYWxsKToKKyAgICAg
ICAgKiBkZmcvREZHRlBSSW5mby5oOgorICAgICAgICAoRlBSSW5mbyk6CisgICAgICAgIChKU0M6
OkRGRzo6RlBSSW5mbzo6ZGVidWdOYW1lKToKKyAgICAgICAgKiBkZmcvREZHR1BSSW5mby5oOgor
ICAgICAgICAoR1BSSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6R1BSSW5mbzo6ZGVidWdOYW1l
KToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoREZHKToKKyAgICAgICAg
KiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEdyYXBoKToKKyAgICAgICAgKiBkZmcvREZHTm9k
ZS5oOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjphcml0aE5vZGVGbGFnc0Fz
U3RyaW5nKToKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0lk
ZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmR1bXBDaGlsZHJlbik6CisgICAg
ICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6
REZHOjpPU1JFeGl0OjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5oOgorICAgICAg
ICAoT1NSRXhpdCk6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKEpTVmFsdWUpOgorICAgICAgICAqIHd0Zi9CaXRWZWN0
b3IuY3BwOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6Qml0VmVjdG9yOjpkdW1wKToK
KyAgICAgICAgKiB3dGYvQml0VmVjdG9yLmg6CisgICAgICAgIChCaXRWZWN0b3IpOgorCiAyMDEy
LTAyLTAyICBBbmR5IFdpbmdvICA8d2luZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggdHlw
ZSBwdW5uaW5nIHdhcm5pbmcgaW4gSGFzaFRhYmxlLmggZGVidWcgYnVpbGRzCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmgJKHJldmlzaW9u
IDEwNjU3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4MSw5ICs2ODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IGV4ZWN1dGFibGVDb3B5
KEpTR2xvYmFsRGF0YSYsIHZvaWQqIG93bmVyVUlEKTsKIAotI2lmbmRlZiBOREVCVUcKICAgICAg
ICAgdW5zaWduZWQgZGVidWdPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5kZWJ1Z09mZnNldCgp
OyB9Ci0jZW5kaWYKIAogICAgICAgICAvLyBQYXRjaGluZyBoZWxwZXJzCiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHJldmlz
aW9uIDEwNjU3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3Nl
bWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTk5MSw5ICsxOTkxLDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVhZEludDMyKHdoZXJlKSk7CiAg
ICAgfQogCi0jaWZuZGVmIE5ERUJVRwogICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1
cm4gbV9mb3JtYXR0ZXIuZGVidWdPZmZzZXQoKTsgfQotI2VuZGlmCiAKIHByaXZhdGU6CiAgICAg
Ly8gVkZQIG9wZXJhdGlvbnMgY29tbW9ubHkgdGFrZSBvbmUgb3IgbW9yZSA1LWJpdCBvcGVyYW5k
cywgdHlwaWNhbGx5IHJlcHJlc2VudGluZyBhCkBAIC0yNDkwLDkgKzI0ODgsNyBAQCBwcml2YXRl
OgogICAgICAgICBib29sIGlzQWxpZ25lZChpbnQgYWxpZ25tZW50KSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5pc0FsaWduZWQoYWxpZ25tZW50KTsgfQogICAgICAgICB2b2lkKiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgICAg
IHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuZGVidWdPZmZzZXQoKTsg
fQotI2VuZGlmCiAKICAgICBwcml2YXRlOgogICAgICAgICBBc3NlbWJsZXJCdWZmZXIgbV9idWZm
ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9B
c3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTA2NTc1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUzOCw5ICs1MzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBiZWdpblVuaW50ZXJy
dXB0ZWRTZXF1ZW5jZSgpIHsgfQogICAgIHZvaWQgZW5kVW5pbnRlcnJ1cHRlZFNlcXVlbmNlKCkg
eyB9CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgdW5zaWduZWQgZGVidWdPZmZzZXQoKSB7IHJldHVy
biBtX2Fzc2VtYmxlci5kZWJ1Z09mZnNldCgpOyB9Ci0jZW5kaWYKIAogcHJvdGVjdGVkOgogICAg
IEFzc2VtYmxlclR5cGUgbV9hc3NlbWJsZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgJKHJldmlzaW9uIDEwNjU3NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE0Niw5ICsxNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogICAgICAgICB9CiAKLSNpZm5kZWYgTkRFQlVHCiAg
ICAgICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9pbmRleDsgfQotI2VuZGlm
CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEs
IGludCBzaXplKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5r
QnVmZmVyLmgJKHJldmlzaW9uIDEwNjU3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTGlua0J1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNyArMTg5LDYgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gQ29kZVB0cihNYWNyb0Fzc2VtYmxlcjo6QXNzZW1ibGVyVHlw
ZV9UOjpnZXRSZWxvY2F0ZWRBZGRyZXNzKGNvZGUoKSwgYXBwbHlPZmZzZXQobGFiZWwubV9sYWJl
bCkpKTsKICAgICB9CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCogZGVidWdBZGRyZXNzKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX2NvZGU7CkBAIC0xOTksNyArMTk4LDYgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc2l6ZTsKICAgICB9Ci0jZW5kaWYKIAogcHJpdmF0
ZToKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gVCBhcHBseU9mZnNldChUIHNyYykKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCShy
ZXZpc2lvbiAxMDY1NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNB
c3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjU1LDkgKzY1NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAgICAgfQogCi0jaWZuZGVmIE5ERUJVRwog
ICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuZGVidWdPZmZzZXQo
KTsgfQotI2VuZGlmCiAKICAgICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldChB
c3NlbWJsZXJMYWJlbCBjYWxsKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMTA2NTc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTc4Nyw5ICsxNzg3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9mb3JtYXR0ZXIu
ZXhlY3V0YWJsZUNvcHkoZ2xvYmFsRGF0YSwgb3duZXJVSUQpOwogICAgIH0KIAotI2lmbmRlZiBO
REVCVUcKICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1fZm9ybWF0dGVyLmRl
YnVnT2Zmc2V0KCk7IH0KLSNlbmRpZgogCiAgICAgdm9pZCBub3AoKQogICAgIHsKQEAgLTIxMzcs
OSArMjEzNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gbV9idWZmZXIuZXhlY3V0
YWJsZUNvcHkoZ2xvYmFsRGF0YSwgb3duZXJVSUQpOwogICAgICAgICB9CiAKLSNpZm5kZWYgTkRF
QlVHCiAgICAgICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuZGVi
dWdPZmZzZXQoKTsgfQotI2VuZGlmCiAKICAgICBwcml2YXRlOgogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTA2NTc1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU5LDggKzU5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiB1c2luZyBuYW1lc3BhY2Ug
REZHOwogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FN
UExJTkcpCi0KIHN0YXRpYyBVU3RyaW5nIGVzY2FwZVF1b3Rlcyhjb25zdCBVU3RyaW5nJiBzdHIp
CiB7CiAgICAgVVN0cmluZyByZXN1bHQgPSBzdHI7CkBAIC0xMjg2LDggKzEyODQsNiBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgfQogfQogCi0jZW5kaWYg
Ly8gIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotCiAjaWYgRFVN
UF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MKIHN0YXRpYyBIYXNoU2V0PENvZGVCbG9jayo+IGxpdmVD
b2RlQmxvY2tTZXQ7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEwNjU3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDExICsxMzQsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygp
OwogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEVfT1BDT0RFX1NBTVBMSU5HCiAgICAg
ICAgIHZvaWQgZHVtcChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVj
dHVyZXMoY29uc3QgSW5zdHJ1Y3Rpb24qKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVj
dHVyZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBvcGVyYW5kKSBj
b25zdDsKLSNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9pc1N0cmljdE1vZGU7IH0KIApAQCAtMzYyLDkgKzM2MCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZUxhdGVyKCk7CiAgICAgICAgIH0KICAg
ICAgICAgCi0jaWZuZGVmIE5ERUJVRwogICAgICAgICBib29sIHVzZXNPcGNvZGUoT3Bjb2RlSUQp
OwotI2VuZGlmCiAKICAgICAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCgpIHsgcmV0dXJu
IG1faW5zdHJ1Y3Rpb25Db3VudDsgfQogICAgICAgICB2b2lkIHNldEluc3RydWN0aW9uQ291bnQo
dW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCkgeyBtX2luc3RydWN0aW9uQ291bnQgPSBpbnN0cnVj
dGlvbkNvdW50OyB9CkBAIC0xMDE2LDcgKzEwMTIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCB0YWxseUZyZXF1ZW50RXhpdFNpdGVzKCkgeyB9CiAjZW5kaWYKICAgICAgICAgCi0j
aWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQogICAgICAgICB2
b2lkIGR1bXAoRXhlY1N0YXRlKiwgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRl
cmF0b3ImIGJlZ2luLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYpIGNvbnN0
OwogCiAgICAgICAgIENTdHJpbmcgcmVnaXN0ZXJOYW1lKEV4ZWNTdGF0ZSosIGludCByKSBjb25z
dDsKQEAgLTEwMjYsNyArMTAyMSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHBy
aW50R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9u
Pjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAgICAgICAgIHZvaWQg
cHJpbnRDYWxsT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+
Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKICAgICAgICAgdm9pZCBw
cmludFB1dEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlv
bj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0OwotI2VuZGlmCiAgICAg
ICAgIHZvaWQgdmlzaXRTdHJ1Y3R1cmVzKFNsb3RWaXNpdG9yJiwgSW5zdHJ1Y3Rpb24qIHZQQykg
Y29uc3Q7CiAgICAgICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShyZXZpc2lvbiAxMDY1NzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC04MywxMCArODMsOCBAQCBzdHJ1Y3QgQ29kZU9yaWdpbiB7CiAgICAgCiAgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsgfQogICAgIAotI2lmbmRlZiBOREVCVUcKICAgICAvLyBHZXQgdGhlIGlubGlu
ZSBzdGFjay4gVGhpcyBpcyBzbG93LCBhbmQgaXMgaW50ZW5kZWQgZm9yIGRlYnVnZ2luZyBvbmx5
LgogICAgIFZlY3RvcjxDb2RlT3JpZ2luPiBpbmxpbmVTdGFjaygpIGNvbnN0OwotI2VuZGlmCiB9
OwogCiBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKQEAgLTEyMiw3ICsxMjAsNiBAQCBpbmxpbmUg
Ym9vbCBDb2RlT3JpZ2luOjpvcGVyYXRvcj09KGNvbnN0CiAgICAgICAgICYmIGlubGluZUNhbGxG
cmFtZSA9PSBvdGhlci5pbmxpbmVDYWxsRnJhbWU7CiB9CiAgICAgCi0jaWZuZGVmIE5ERUJVRwog
Ly8gR2V0IHRoZSBpbmxpbmUgc3RhY2suIFRoaXMgaXMgc2xvdywgYW5kIGlzIGludGVuZGVkIGZv
ciBkZWJ1Z2dpbmcgb25seS4KIGlubGluZSBWZWN0b3I8Q29kZU9yaWdpbj4gQ29kZU9yaWdpbjo6
aW5saW5lU3RhY2soKSBjb25zdAogewpAQCAtMTMzLDcgKzEzMCw2IEBAIGlubGluZSBWZWN0b3I8
Q29kZU9yaWdpbj4gQ29kZU9yaWdpbjo6aW4KICAgICAgICAgcmVzdWx0W2luZGV4LS1dID0gY3Vy
cmVudC0+Y2FsbGVyOwogICAgIHJldHVybiByZXN1bHQ7CiB9Ci0jZW5kaWYKIAogaW5saW5lIHVu
c2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXRGb3JDb2RlT3JpZ2luKENvZGVPcmlnaW5BdENhbGxS
ZXR1cm5PZmZzZXQqIGRhdGEpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvREZHRXhpdFByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkocmV2aXNpb24gMTA2NTc1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDcgKzQxLDYgQEAgZW51bSBFeGl0S2luZCB7CiAgICAgVW5jb3VudGFibGUsIC8vIFdlIGV4
aXRlZCBmb3Igbm9uZSBvZiB0aGUgYWJvdmUgcmVhc29ucywgYW5kIHdlIHNob3VsZCBub3QgY291
bnQgaXQuIE1vc3QgdXNlcyBvZiB0aGlzIHNob3VsZCBiZSB2aWV3ZWQgYXMgYSBGSVhNRS4KIH07
CiAKLSNpZm5kZWYgTkRFQlVHCiBpbmxpbmUgY29uc3QgY2hhciogZXhpdEtpbmRUb1N0cmluZyhF
eGl0S2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewpAQCAtNTksNyArNTgsNiBAQCBp
bmxpbmUgY29uc3QgY2hhciogZXhpdEtpbmRUb1N0cmluZyhFeGl0CiAgICAgICAgIHJldHVybiAi
VW5rbm93biI7CiAgICAgfQogfQotI2VuZGlmCiAKIGlubGluZSBib29sIGV4aXRLaW5kSXNDb3Vu
dGFibGUoRXhpdEtpbmQga2luZCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9EYXRhRm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0RhdGFGb3JtYXQuaAkocmV2aXNpb24gMTA2NTc1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RhdGFGb3JtYXQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAs
NiBAQCBlbnVtIERhdGFGb3JtYXQgewogICAgIERhdGFGb3JtYXRKU0Jvb2xlYW4gPSBEYXRhRm9y
bWF0SlMgfCBEYXRhRm9ybWF0Qm9vbGVhbgogfTsKIAotI2lmbmRlZiBOREVCVUcKIGlubGluZSBj
b25zdCBjaGFyKiBkYXRhRm9ybWF0VG9TdHJpbmcoRGF0YUZvcm1hdCBkYXRhRm9ybWF0KQogewog
ICAgIHN3aXRjaCAoZGF0YUZvcm1hdCkgewpAQCAtODAsNyArNzksNiBAQCBpbmxpbmUgY29uc3Qg
Y2hhciogZGF0YUZvcm1hdFRvU3RyaW5nKERhCiAgICAgICAgIHJldHVybiAiVW5rbm93biI7CiAg
ICAgfQogfQotI2VuZGlmCiAKICNpZiBVU0UoSlNWQUxVRTY0KQogaW5saW5lIGJvb2wgbmVlZERh
dGFGb3JtYXRDb252ZXJzaW9uKERhdGFGb3JtYXQgZnJvbSwgRGF0YUZvcm1hdCB0bykKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAJ
KHJldmlzaW9uIDEwNjU3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVk
aWN0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotI2lmbmRlZiBOREVCVUcKIGNvbnN0IGNoYXIqIHByZWRpY3Rpb25Ub1N0cmlu
ZyhQcmVkaWN0ZWRUeXBlIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBQcmVkaWN0Tm9uZSkK
QEAgLTE2MCw3ICsxNTksNiBAQCBjb25zdCBjaGFyKiBwcmVkaWN0aW9uVG9TdHJpbmcoUHJlZGlj
dGVkCiAgICAgCiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQotI2VuZGlmCiAKIFByZWRpY3Rl
ZFR5cGUgcHJlZGljdGlvbkZyb21DbGFzc0luZm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8p
CiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRU
eXBlLmgJKHJldmlzaW9uIDEwNjU3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVkaWN0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw5ICsyMTcsNyBAQCBpbmxp
bmUgYm9vbCBpc090aGVyUHJlZGljdGlvbihQcmVkaWN0ZWRUCiAgICAgcmV0dXJuIHZhbHVlID09
IFByZWRpY3RPdGhlcjsKIH0KIAotI2lmbmRlZiBOREVCVUcKIGNvbnN0IGNoYXIqIHByZWRpY3Rp
b25Ub1N0cmluZyhQcmVkaWN0ZWRUeXBlIHZhbHVlKTsKLSNlbmRpZgogCiAvLyBNZXJnZSB0d28g
cHJlZGljdGlvbnMuIE5vdGUgdGhhdCBjdXJyZW50bHkgdGhpcyBqdXN0IGRvZXMgbGVmdCB8IHJp
Z2h0LiBJdCBtYXkKIC8vIHNlZW0gdGVtcHRpbmcgdG8gZG8gc28gZGlyZWN0bHksIGJ1dCB5b3Ug
d291bGQgYmUgZG9pbmcgc28gYXQgeW91ciBvd24gcGVyaWwsCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJKHJldmlzaW9uIDEwNjU3NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDExICszMCw4IEBACiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCi0jaW5j
bHVkZSA8d3RmL1BsYXRmb3JtLmg+Ci0KLSNpZm5kZWYgTkRFQlVHCiAjaW5jbHVkZSA8c3RkaW8u
aD4KLSNlbmRpZgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtMjQ5LDcgKzI0Niw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRl
Y29kZShtX3NvdXJjZS5jb25zdGFudCk7CiAgICAgfQogICAgIAotI2lmbmRlZiBOREVCVUcKICAg
ICB2b2lkIGR1bXAoRklMRSogb3V0KSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoICh0ZWNo
bmlxdWUoKSkgewpAQCAtMzE0LDcgKzMxMCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgfQotI2VuZGlmCiAgICAgCiBwcml2YXRlOgogICAgIFZhbHVlUmVj
b3ZlcnlUZWNobmlxdWUgbV90ZWNobmlxdWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNp
b24gMTA2NTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCwyNiArMTUwLDE2IEBAIHZvaWQg
UmVzb2x2ZVJlc3VsdDo6Y2hlY2tWYWxpZGl0eSgpCiB9CiAjZW5kaWYKIAotI2lmbmRlZiBOREVC
VUcKIHN0YXRpYyBib29sIHNfZHVtcHNHZW5lcmF0ZWRDb2RlID0gZmFsc2U7Ci0jZW5kaWYKIAog
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6c2V0RHVtcHNHZW5lcmF0ZWRDb2RlKGJvb2wgZHVtcHNH
ZW5lcmF0ZWRDb2RlKQogewotI2lmbmRlZiBOREVCVUcKICAgICBzX2R1bXBzR2VuZXJhdGVkQ29k
ZSA9IGR1bXBzR2VuZXJhdGVkQ29kZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGR1bXBzR2Vu
ZXJhdGVkQ29kZSk7Ci0jZW5kaWYKIH0KIAogYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNH
ZW5lcmF0ZWRDb2RlKCkKIHsKLSNpZm5kZWYgTkRFQlVHCiAgICAgcmV0dXJuIHNfZHVtcHNHZW5l
cmF0ZWRDb2RlOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKIH0KIAogSlNPYmpl
Y3QqIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCkBAIC0xODIsMTAgKzE3Miw4IEBAIEpT
T2JqZWN0KiBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogCiAgICAgbV9jb2RlQmxvY2st
PnNldEluc3RydWN0aW9uQ291bnQobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7
CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKHNfZHVtcHNHZW5lcmF0ZWRDb2RlKQogICAgICAg
ICBtX2NvZGVCbG9jay0+ZHVtcChtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpKTsKLSNlbmRpZgogCiAgICAgaWYgKChtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiAh
bV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSAmJiAhbV9jb2RlQmxvY2stPnVzZXNB
cmd1bWVudHMoKSkgfHwgbV9jb2RlVHlwZSA9PSBFdmFsQ29kZSkKICAgICAgICAgc3ltYm9sVGFi
bGUoKS5jbGVhcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFZhbHVlLmgJKHJldmlzaW9uIDEwNjU3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNyArMjg3LDYgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1Y3R1cmU7
CiAgICAgfQogICAgIAotI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIGR1bXAoRklMRSogb3V0KSBj
b25zdAogICAgIHsKICAgICAgICAgaWYgKGlzVG9wKCkpIHsKQEAgLTMwMCw3ICsyOTksNiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBmcHJpbnRmKG91dCwgIiVwIiwgbV9zdHJ1Y3R1cmUpOwogICAg
ICAgICBmcHJpbnRmKG91dCwgIl0iKTsKICAgICB9Ci0jZW5kaWYKIAogcHJpdmF0ZToKICAgICBz
dGF0aWMgU3RydWN0dXJlKiB0b3BWYWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U3Ry
dWN0dXJlKj4oMSk7IH0KQEAgLTQ2NiwxNCArNDY0LDEyIEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVl
IHsKICAgICAgICAgLy8gY29tcGxleGl0eSBvZiB0aGUgY29kZS4KICAgICB9CiAgICAgCi0jaWZu
ZGVmIE5ERUJVRwogICAgIHZvaWQgZHVtcChGSUxFKiBvdXQpIGNvbnN0CiAgICAgewogICAgICAg
ICBmcHJpbnRmKG91dCwgIiglcywgIiwgcHJlZGljdGlvblRvU3RyaW5nKG1fdHlwZSkpOwogICAg
ICAgICBtX3N0cnVjdHVyZS5kdW1wKG91dCk7CiAgICAgICAgIGZwcmludGYob3V0LCAiKSIpOwog
ICAgIH0KLSNlbmRpZgogCiAgICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBtX3N0cnVjdHVyZTsK
ICAgICBQcmVkaWN0ZWRUeXBlIG1fdHlwZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTA2NTc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksOSArMzksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLSNp
Zm5kZWYgTkRFQlVHCiB0eXBlZGVmIHZvaWQgKCpWX0RGR0RlYnVnT3BlcmF0aW9uX0VQKShFeGVj
U3RhdGUqLCB2b2lkKik7Ci0jZW5kaWYKIAogY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGlj
IE1hY3JvQXNzZW1ibGVyIHsKIHB1YmxpYzoKQEAgLTE1Miw3ICsxNTAsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBBZGRyZXNzKHN0cnVjdHVyZVJlZywgU3RydWN0
dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7CiAg
ICAgfQogCi0jaWZuZGVmIE5ERUJVRwogICAgIC8vIEFkZCBhIGRlYnVnIGNhbGwuIFRoaXMgY2Fs
bCBoYXMgbm8gZWZmZWN0IG9uIEpJVCBjb2RlIGV4ZWN1dGlvbiBzdGF0ZS4KICAgICB2b2lkIGRl
YnVnQ2FsbChWX0RGR0RlYnVnT3BlcmF0aW9uX0VQIGZ1bmN0aW9uLCB2b2lkKiBhcmd1bWVudCkK
ICAgICB7CkBAIC0xODIsNyArMTc5LDYgQEAgcHVibGljOgogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkKICAgICAgICAgICAg
IGxvYWRQdHIoYnVmZmVyICsgaSwgR1BSSW5mbzo6dG9SZWdpc3RlcihpKSk7CiAgICAgfQotI2Vu
ZGlmCiAKICAgICAvLyBUaGVzZSBtZXRob2RzIEpJVCBnZW5lcmF0ZSBkeW5hbWljLCBkZWJ1Zy1v
bmx5IGNoZWNrcyAtIGFraW4gdG8gQVNTRVJUcy4KICNpZiBERkdfRU5BQkxFKEpJVF9BU1NFUlQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaAkocmV2aXNpb24gMTA2
NTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc4LDcgKzc4LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKHVuc2lnbmVk
KXJlZzsKICAgICB9CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRl
YnVnTmFtZShGUFJSZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlk
RlBSUmVnKTsKQEAgLTk5LDcgKzk4LDYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgICAgIHJldHVy
biBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKICAgICB9Ci0jZW5kaWYKIH07CiAKICNlbmRpZgpAQCAt
MTQxLDcgKzEzOSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICh1bnNpZ25lZClyZWc7CiAg
ICAgfQogCi0jaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUo
RlBSUmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7
CkBAIC0xNTgsNyArMTU1LDYgQEAgcHVibGljOgogICAgICAgICB9OwogICAgICAgICByZXR1cm4g
bmFtZUZvclJlZ2lzdGVyW3JlZ107CiAgICAgfQotI2VuZGlmCiB9OwogCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCShyZXZpc2lvbiAxMDY1NzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaAkod29ya2luZyBjb3B5KQpA
QCAtMjkyLDcgKzI5Miw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJS
ZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKQEAg
LTMwMyw3ICszMDIsNiBAQCBwdWJsaWM6CiAgICAgICAgIH07CiAgICAgICAgIHJldHVybiBuYW1l
Rm9yUmVnaXN0ZXJbcmVnXTsKICAgICB9Ci0jZW5kaWYKIHByaXZhdGU6CiAKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKQEAgLTM2Myw3ICszNjEs
NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0jaWZuZGVmIE5E
RUJVRwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKICAgICB7
CiAgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC0zNzYsNyArMzczLDYg
QEAgcHVibGljOgogICAgICAgICB9OwogICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3Jl
Z107CiAgICAgfQotI2VuZGlmCiBwcml2YXRlOgogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7CkBAIC00MzYsNyArNDMyLDYgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotI2lmbmRlZiBOREVCVUcKICAgICBzdGF0
aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCiAgICAgewogICAgICAgICBBU1NF
UlQocmVnICE9IEludmFsaWRHUFJSZWcpOwpAQCAtNDQ5LDcgKzQ0NCw2IEBAIHB1YmxpYzoKICAg
ICAgICAgfTsKICAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOwogICAgIH0KLSNl
bmRpZgogcHJpdmF0ZToKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXgg
PSAweGZmZmZmZmZmOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJ
KHJldmlzaW9uIDEwNjU3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw2IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAotI2lmbmRlZiBOREVCVUcKLQogLy8gQ3JlYXRlcyBhbiBhcnJheSBv
ZiBzdHJpbmdpemVkIG5hbWVzLgogc3RhdGljIGNvbnN0IGNoYXIqIGRmZ09wTmFtZXNbXSA9IHsK
ICNkZWZpbmUgU1RSSU5HSVpFX0RGR19PUF9FTlVNKG9wY29kZSwgZmxhZ3MpICNvcGNvZGUgLApA
QCAtMjk4LDggKzI5Niw2IEBAIHZvaWQgR3JhcGg6OmR1bXAoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
CiAgICAgICAgIGR1bXAoaSwgY29kZUJsb2NrKTsKIH0KIAotI2VuZGlmCi0KIC8vIEZJWE1FOiBD
b252ZXJ0IHRoaXMgdG8gYmUgaXRlcmF0aXZlLCBub3QgcmVjdXJzaXZlLgogI2RlZmluZSBET19U
T19DSElMRFJFTihub2RlLCB0aGluZ1RvRG8pIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgICAgICBOb2RlJiBfbm9kZSA9IChub2RlKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaAkocmV2aXNpb24gMTA2NTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDYgQEAgcHVibGljOgogICAgICAg
ICBub2RlLmNoaWxkcmVuLmZpeGVkLmNoaWxkMyA9IE5vTm9kZTsKICAgICB9CiAKLSNpZm5kZWYg
TkRFQlVHCiAgICAgLy8gQ29kZUJsb2NrIGlzIG9wdGlvbmFsLCBidXQgbWF5IGFsbG93IGFkZGl0
aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgZHVtcGVkIChlLmcuIElkZW50aWZpZXIgbmFtZXMpLgog
ICAgIHZvaWQgZHVtcChDb2RlQmxvY2sqID0gMCk7CiAgICAgdm9pZCBkdW1wKE5vZGVJbmRleCwg
Q29kZUJsb2NrKiA9IDApOwpAQCAtMTE4LDcgKzExNyw2IEBAIHB1YmxpYzoKICAgICAvLyBEdW1w
IHRoZSBjb2RlIG9yaWdpbiBvZiB0aGUgZ2l2ZW4gbm9kZSBhcyBhIGRpZmYgZnJvbSB0aGUgY29k
ZSBvcmlnaW4gb2YgdGhlCiAgICAgLy8gcHJlY2VkaW5nIG5vZGUuCiAgICAgdm9pZCBkdW1wQ29k
ZU9yaWdpbihOb2RlSW5kZXgpOwotI2VuZGlmCiAKICAgICBCbG9ja0luZGV4IGJsb2NrSW5kZXhG
b3JCeXRlY29kZU9mZnNldChWZWN0b3I8QmxvY2tJbmRleD4mIGJsb2NrcywgdW5zaWduZWQgYnl0
ZWNvZGVCZWdpbik7CiAKQEAgLTIxNCwxMiArMjEyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGFzRnVuY3Rpb24oZnVuY3Rpb24pOwogICAgIH0KIAotI2lmbmRlZiBOREVCVUcKICAgICBz
dGF0aWMgY29uc3QgY2hhciAqb3BOYW1lKE5vZGVUeXBlKTsKICAgICAKICAgICAvLyBUaGlzIGlz
IE8obiksIGFuZCBzaG91bGQgb25seSBiZSB1c2VkIGZvciB2ZXJib3NlIGR1bXBzLgogICAgIGNv
bnN0IGNoYXIqIG5hbWVPZlZhcmlhYmxlQWNjZXNzRGF0YShWYXJpYWJsZUFjY2Vzc0RhdGEqKTsK
LSNlbmRpZgogCiAgICAgdm9pZCBwcmVkaWN0QXJndW1lbnRUeXBlcyhDb2RlQmxvY2sqKTsKICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxMDY1NzUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtOTYsNyArOTYsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbm9kZUNhblNwZWN1bGF0ZUludGVn
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgaW5saW5lIGNv
bnN0IGNoYXIqIGFyaXRoTm9kZUZsYWdzQXNTdHJpbmcoQXJpdGhOb2RlRmxhZ3MgZmxhZ3MpCiB7
CiAgICAgaWYgKCFmbGFncykKQEAgLTEzOCw3ICsxMzcsNiBAQCBzdGF0aWMgaW5saW5lIGNvbnN0
IGNoYXIqIGFyaXRoTm9kZUZsYWdzCiAgICAgCiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQot
I2VuZGlmCiAKIC8vIEVudHJpZXMgaW4gdGhlIE5vZGVUeXBlIGVudW0gKGJlbG93KSBhcmUgY29t
cG9zZWQgb2YgYW4gaWQsIGEgcmVzdWx0IHR5cGUgKHBvc3NpYmx5IG5vbmUpCiAvLyBhbmQgc29t
ZSBhZGRpdGlvbmFsIGluZm9ybWF0aXZlIGZsYWdzIChtdXN0IGdlbmVyYXRlLCBpcyBjb25zdGFu
dCwgZXRjKS4KQEAgLTQ5OSw3ICs0OTcsNiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVy
biB2YXJpYWJsZUFjY2Vzc0RhdGEoKS0+bG9jYWwoKTsKICAgICB9CiAKLSNpZm5kZWYgTkRFQlVH
CiAgICAgYm9vbCBoYXNJZGVudGlmaWVyKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3ApIHsK
QEAgLTUxNSw3ICs1MTIsNiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICB9Ci0jZW5kaWYKIAogICAgIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIoKQogICAgIHsKQEAgLTEwMzYsNyArMTAzMiw2IEBAIHN0cnVjdCBOb2RlIHsKICAgICAg
ICAgcmV0dXJuIG5vZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKGFyaXRoTm9kZUZsYWdzKCkpOwogICAg
IH0KICAgICAKLSNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBkdW1wQ2hpbGRyZW4oRklMRSogb3V0
KQogICAgIHsKICAgICAgICAgaWYgKGNoaWxkMSgpID09IE5vTm9kZSkKQEAgLTEwNDksNyArMTA0
NCw2IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZnByaW50
ZihvdXQsICIsIEAldSIsIGNoaWxkMygpKTsKICAgICB9Ci0jZW5kaWYKICAgICAKICAgICAvLyBU
aGlzIGVudW0gdmFsdWUgZGVzY3JpYmVzIHRoZSB0eXBlIG9mIHRoZSBub2RlLgogICAgIE5vZGVU
eXBlIG9wOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCShy
ZXZpc2lvbiAxMDY1NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw2IEBAIE9TUkV4aXQ6Ok9TUkV4aXQoRXhp
dEtpbmQga2luZCwgSlNWYWx1ZVMKICAgICAgICAgbV92YXJpYWJsZXNbdmFyaWFibGVdID0gaml0
LT5jb21wdXRlVmFsdWVSZWNvdmVyeUZvcihqaXQtPm1fdmFyaWFibGVzW3ZhcmlhYmxlXSk7CiB9
CiAKLSNpZm5kZWYgTkRFQlVHCiB2b2lkIE9TUkV4aXQ6OmR1bXAoRklMRSogb3V0KSBjb25zdAog
ewogICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fYXJndW1lbnRz
LnNpemUoKTsgKythcmd1bWVudCkKQEAgLTYyLDcgKzYxLDYgQEAgdm9pZCBPU1JFeGl0OjpkdW1w
KEZJTEUqIG91dCkgY29uc3QKICAgICBmb3IgKHVuc2lnbmVkIHZhcmlhYmxlID0gMDsgdmFyaWFi
bGUgPCBtX3ZhcmlhYmxlcy5zaXplKCk7ICsrdmFyaWFibGUpCiAgICAgICAgIG1fdmFyaWFibGVz
W3ZhcmlhYmxlXS5kdW1wKG91dCk7CiB9Ci0jZW5kaWYKIAogYm9vbCBPU1JFeGl0Ojpjb25zaWRl
ckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZVNsb3coQ29kZUJsb2NrKiBkZmdDb2RlQmxvY2ssIENv
ZGVCbG9jayogcHJvZmlsZWRDb2RlQmxvY2spCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXQuaAkocmV2aXNpb24gMTA2NTc1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw5ICsxMzcsNyBAQCBz
dHJ1Y3QgT1NSRXhpdCB7CiAgICAgICAgIHJldHVybiBjb25zaWRlckFkZGluZ0FzRnJlcXVlbnRF
eGl0U2l0ZVNsb3coZGZnQ29kZUJsb2NrLCBwcm9maWxlZENvZGVCbG9jayk7CiAgICAgfQogICAg
IAotI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIGR1bXAoRklMRSogb3V0KSBjb25zdDsKLSNlbmRp
ZgogICAgIAogICAgIFZlY3RvcjxWYWx1ZVJlY292ZXJ5LCAwPiBtX2FyZ3VtZW50czsKICAgICBW
ZWN0b3I8VmFsdWVSZWNvdmVyeSwgMD4gbV92YXJpYWJsZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTA2NTc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
Niw3ICsxMTYsNiBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiAg
ICAgcmV0dXJuIEpTTm90QW5PYmplY3Q6OmNyZWF0ZShleGVjKTsKIH0KIAotI2lmbmRlZiBOREVC
VUcKIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IHNpemUgPSA2NDsKQEAgLTE1Miw3ICsxNTEsNiBAQCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlw
dGlvbigpCiAKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9Ci0jZW5kaWYKIAogLy8gVGhpcyBp
biB0aGUgVG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDkuNSBvZiB0aGUg
RUNNQS0yNjIgc3BlYy4KIC8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBpZGVudGljYWwg
dG8gVG9VSW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRhdGlvbgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2aXNpb24gMTA2NTc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIs
OSArMjMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTQ2VsbCogYXNDZWxsKCkgY29u
c3Q7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZENhbGxlZSgpOwogCi0j
aWZuZGVmIE5ERUJVRwogICAgICAgICBjaGFyKiBkZXNjcmlwdGlvbigpOwotI2VuZGlmCiAKICAg
ICBwcml2YXRlOgogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gSlNWYWx1ZShXcml0ZUJhcnJp
ZXJCYXNlPFQ+KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQml0VmVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0JpdFZlY3Rvci5jcHAJ
KHJldmlzaW9uIDEwNjU3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQml0VmVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw2IEBAIHZvaWQgQml0VmVjdG9yOjpy
ZXNpemVPdXRPZkxpbmUoc2l6ZV90IG4KICAgICBtX2JpdHNPclBvaW50ZXIgPSBiaXR3aXNlX2Nh
c3Q8dWludHB0cl90PihuZXdPdXRPZkxpbmVCaXRzKSA+PiAxOwogfQogCi0jaWZuZGVmIE5ERUJV
Rwogdm9pZCBCaXRWZWN0b3I6OmR1bXAoRklMRSogb3V0KQogewogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZSgpOyArK2kpIHsKQEAgLTExNSw2ICsxMTQsNSBAQCB2b2lkIEJpdFZlY3Rv
cjo6ZHVtcChGSUxFKiBvdXQpCiAgICAgICAgICAgICBmcHJpbnRmKG91dCwgIi0iKTsKICAgICB9
CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0JpdFZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvQml0VmVjdG9yLmgJKHJldmlzaW9uIDEwNjU3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvQml0VmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwxMCBAQAog
I2lmbmRlZiBCaXRWZWN0b3JfaAogI2RlZmluZSBCaXRWZWN0b3JfaAogCisjaW5jbHVkZSA8c3Rk
aW8uaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KIAotI2lmbmRlZiBOREVCVUcKLSNpbmNsdWRlIDxzdGRpby5oPgotI2VuZGlmCi0K
IG5hbWVzcGFjZSBXVEYgewogCiAvLyBUaGlzIGlzIGEgc3BhY2UtZWZmaWNpZW50LCByZXNpemVh
YmxlIGJpdHZlY3RvciBjbGFzcy4gSW4gdGhlIGNvbW1vbiBjYXNlIGl0CkBAIC0xNjUsOSArMTYy
LDcgQEAgcHVibGljOiAKICAgICAgICAgICAgIGNsZWFyKGJpdCk7CiAgICAgfQogICAgIAotI2lm
bmRlZiBOREVCVUcKICAgICB2b2lkIGR1bXAoRklMRSogb3V0KTsKLSNlbmRpZgogICAgIAogcHJp
dmF0ZToKICAgICBzdGF0aWMgdW5zaWduZWQgYml0c0luUG9pbnRlcigpCg==
</data>
<flag name="review"
          id="126600"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>