<?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>118866</bug_id>
          
          <creation_ts>2013-07-18 15:14:23 -0700</creation_ts>
          <short_desc>fourthTier: each DFG node that relies on other nodes to do their type checks should be able to tell you if those type checks happened</short_desc>
          <delta_ts>2013-07-21 14:43:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>118867</dependson>
    
    <dependson>118878</dependson>
          <blocked>118749</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>909889</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-18 15:14:23 -0700</bug_when>
    <thetext>Fun.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910494</commentid>
    <comment_count>1</comment_count>
      <attachid>207203</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-20 15:57:59 -0700</bug_when>
    <thetext>Created attachment 207203
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910503</commentid>
    <comment_count>2</comment_count>
      <attachid>207203</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-07-20 17:44:12 -0700</bug_when>
    <thetext>Comment on attachment 207203
the patch

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

&gt; Source/JavaScriptCore/dfg/DFGSafeToExecute.h:199
&gt; +    case InstanceOf: // This might be a bit of a lie. I&apos;m not sure.

This is a disconcerting comment.  If you aren&apos;t sure, who will be?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910504</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-20 17:47:49 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 207203 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=207203&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSafeToExecute.h:199
&gt; &gt; +    case InstanceOf: // This might be a bit of a lie. I&apos;m not sure.
&gt; 
&gt; This is a disconcerting comment.  If you aren&apos;t sure, who will be?

Actually, it&apos;s not a lie.  InstanceOf relies on CheckHasInstance to be correct, so we may have a weird situation - entirely theoretical - where we transform:

o = ...
loop {
   CheckHashIntance(..., o, ...)
   InstanceOf(..., o, ...)
}

into:

t = InstanceOf(..., o, ...)
loop {
   CheckHasInstance(..., o, ...)
   // use t
}

We cannot ever do that because if InstanceOf is hoistable, CheckHasInstance will be, also.  But even if we did do that, this would still be safe: InstanceOf might return a bogus result for those cases that CheckHasInstance would have caught, but then the CheckHasInstance will still run before anyone uses those results.

So, all good.

I&apos;ll remove the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910512</commentid>
    <comment_count>4</comment_count>
      <attachid>207206</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-20 19:45:27 -0700</bug_when>
    <thetext>Created attachment 207206
the patch

Patch without the wrong comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910546</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-07-21 14:43:39 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/152953</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207203</attachid>
            <date>2013-07-20 15:57:59 -0700</date>
            <delta_ts>2013-07-20 19:45:27 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20962</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyOTQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDEzLTA3LTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogZWFjaCBERkcgbm9kZSB0aGF0IHJlbGllcyBvbiBvdGhlciBub2RlcyB0byBk
byB0aGVpciB0eXBlIGNoZWNrcyBzaG91bGQgYmUgYWJsZSB0byB0ZWxsIHlvdSBpZiB0aG9zZSB0
eXBlIGNoZWNrcyBoYXBwZW5lZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE4ODY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisgICAgICAgIAorICAgICAgICBBZGRzIGEgc2FmZVRvRXhlY3V0ZSgpIG1ldGhvZCB0aGF0IHRh
a2VzIGEgbm9kZSBhbmQgYW4gYWJzdHJhY3Qgc3RhdGUgYW5kIHRlbGxzIHlvdQorICAgICAgICBp
ZiB0aGUgbm9kZSB3aWxsIHJ1biB3aXRob3V0IGNyYXNoaW5nIHVuZGVyIHRoYXQgc3RhdGUuCisK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
Q29kZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ0ZBUGhhc2UuY3BwOgorICAgICAgICAoQ0ZB
UGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OkNGQVBoYXNlOjpDRkFQaGFzZSk6CisgICAgICAg
IChKU0M6OkRGRzo6Q0ZBUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZBUGhhc2U6
OnBlcmZvcm1CbG9ja0NGQSk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZBUGhhc2U6OnBlcmZvcm1G
b3J3YXJkQ0ZBKToKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKERGRyk6CisgICAgICAgIChTYWZlVG9FeGVjdXRlRWRnZSk6CisgICAgICAgIChKU0M6
OkRGRzo6U2FmZVRvRXhlY3V0ZUVkZ2U6OlNhZmVUb0V4ZWN1dGVFZGdlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTYWZlVG9FeGVjdXRlRWRnZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U2FmZVRvRXhlY3V0ZUVkZ2U6OnJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRv
RXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjppc1ZhbGlkT2Zmc2V0KToK
KyAgICAgICAgKFN0cnVjdHVyZUFic3RyYWN0VmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9ucy5oOgorICAgICAgICAoSlNDKToKKwogMjAxMy0wNy0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIGZvdXJ0aFRpZXI6IFN0cmluZ09iamVjdFVzZSB1c2Vz
IHN0cnVjdHVyZXMsIGFuZCBDU0Ugc2hvdWxkIGtub3cgdGhhdApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1Mjk0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0zNzMsOCArMzczLDkgQEAKIAkJMEZFNTA1OEMxNzk4QUJGNTAwQjM1RjhDIC8qIERGR0lu
UGxhY2VBYnN0cmFjdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRTUwNTg4MTc5OEFCRjUwMEIzNUY4QyAvKiBERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5jcHAgKi87IH07CiAJCTBGRTUwNThEMTc5OEFCRjUwMEIzNUY4QyAvKiBERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFNTA1ODkxNzk4QUJGNTAwQjM1RjhDIC8qIERGR0luUGxhY2VBYnN0cmFjdFN0
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEZFNTA1OEYxNzk4QUU3MTAwQjM1RjhDIC8qIERGR01lcmdlTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNTA1OEUxNzk4QUU2RjAwQjM1RjhD
IC8qIERGR01lcmdlTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTBGRTUwNTkzMTc5QTYwNDUwMEIzNUY4QyAvKiBERkdFZGdlVXNlc1N0cnVj
dHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
NTA1OTIxNzlBNjA0NTAwQjM1RjhDIC8qIERGR0VkZ2VVc2VzU3RydWN0dXJlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFNTA1OTExNzlBNDky
NDAwQjM1RjhDIC8qIERGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1MDU5MDE3OUE0
OTI0MDBCMzVGOEMgLyogREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkU1MDU5
MzE3OUE2MDQ1MDBCMzVGOEMgLyogREZHRWRnZVVzZXNTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTUwNTkyMTc5QTYwNDUwMEIzNUY4
QyAvKiBERkdFZGdlVXNlc1N0cnVjdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGRTUwNTlGMTc5QjRBMjMwMEIzNUY4QyAvKiBERkdTYWZl
VG9FeGVjdXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkU1MDU5RTE3OUI0QTIwMDBCMzVGOEMgLyogREZHU2FmZVRvRXhlY3V0ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRTg1MzRCMTcyM0NE
QTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFODUzNDkxNzIzQ0RBNTAwQjYxOEY1IC8q
IERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgKi87IH07CiAJCTBGRTg1MzRDMTcyM0NEQTUwMEI2
MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTg1MzRBMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNp
cmVkV2F0Y2hwb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRkVBMEEwODE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJicmV2aWF0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTA5RkQx
NzA1MTNEQjAwQkI3MjJDIC8qIEZUTEFiYnJldmlhdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQyNiw4ICsxNDI3LDkgQEAKIAkJMEZF
NTA1ODgxNzk4QUJGNTAwQjM1RjhDIC8qIERGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0luUGxhY2VBYnN0cmFjdFN0YXRl
LmNwcDsgcGF0aCA9IGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRTUwNTg5MTc5OEFCRjUwMEIzNUY4QyAvKiBERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5oOyBwYXRoID0gZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTUwNThFMTc5OEFFNkYwMEIzNUY4QyAv
KiBERkdNZXJnZU1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTWVyZ2VNb2RlLmg7IHBhdGggPSBk
ZmcvREZHTWVyZ2VNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRTUwNTky
MTc5QTYwNDUwMEIzNUY4QyAvKiBERkdFZGdlVXNlc1N0cnVjdHVyZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdFZGdlVXNlc1N0cnVjdHVyZS5oOyBwYXRoID0gZGZnL0RG
R0VkZ2VVc2VzU3RydWN0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTUw
NTkwMTc5QTQ5MjQwMEIzNUY4QyAvKiBERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVy
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTYW5lU3RyaW5nR2V0
QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oOyBwYXRoID0gZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZh
bFNsb3dQYXRoR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRTUw
NTkyMTc5QTYwNDUwMEIzNUY4QyAvKiBERkdFZGdlVXNlc1N0cnVjdHVyZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdFZGdlVXNlc1N0cnVjdHVyZS5oOyBwYXRoID0gZGZn
L0RGR0VkZ2VVc2VzU3RydWN0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RTUwNTlFMTc5QjRBMjAwMEIzNUY4QyAvKiBERkdTYWZlVG9FeGVjdXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR1NhZmVUb0V4ZWN1dGUuaDsgcGF0aCA9IGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTg1MzQ5MTcyM0NEQTUwMEI2MThGNSAvKiBE
RkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcDsgcGF0aCA9IGRmZy9ERkdEZXNpcmVkV2F0
Y2hwb2ludHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU4NTM0QTE3MjND
REE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERGR0Rlc2lyZWRXYXRjaHBvaW50cy5oOyBwYXRoID0gZGZnL0RGR0Rl
c2lyZWRXYXRjaHBvaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVBMDlG
RDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJicmV2aWF0aW9ucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBGVExBYmJyZXZpYXRpb25zLmg7IHBhdGggPSBmdGwvRlRMQWJicmV2
aWF0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzEzMyw2ICszMTM1LDcg
QEAKIAkJCQkwRjc2NkQ0MjE1QjJBM0JEMDA4RjM2M0UgLyogREZHUmVnaXN0ZXJTZXQuaCAqLywK
IAkJCQk4NkJCMDlCRTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi8sCiAJCQkJ
ODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCAqLywKKwkJCQkwRkU1MDU5
RTE3OUI0QTIwMDBCMzVGOEMgLyogREZHU2FmZVRvRXhlY3V0ZS5oICovLAogCQkJCTBGRTUwNTkw
MTc5QTQ5MjQwMEIzNUY4QyAvKiBERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRv
ci5oICovLAogCQkJCTg2RUNBM0Y5MTMyREYyNUEwMDJCMkFENyAvKiBERkdTY29yZUJvYXJkLmgg
Ki8sCiAJCQkJMEY3NjZENDUxNUIzNzAxRDAwOEYzNjNFIC8qIERGR1NjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvci5oICovLApAQCAtMzkwOSw2ICszOTEyLDcgQEAKIAkJCQkwRjQ2RTZFRjE3N0NFOTVB
MDBFMUY3NTUgLyogREZHQW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDZFNkY0MTc3
Q0YwRDIwMEUxRjc1NSAvKiBERkdOYXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NDZFNkUzMTc3Q0MzNjYwMEUxRjc1NSAvKiBMTFZNRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRkU1MDU5RjE3OUI0QTIzMDBCMzVGOEMgLyogREZHU2FmZVRvRXhlY3V0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY0NkU2RTQxNzdDQzM2NjAwRTFGNzU1IC8qIFVEaXM4NkRpc2Fz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTUyOTQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MjMsNyArMTgy
Myw4IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAg
fHwgT3B0aW9uczo6dmFsaWRhdGVHcmFwaEF0RWFjaFBoYXNlKCkKICAgICAgICAgfHwgT3B0aW9u
czo6dmVyYm9zZU9TUigpCiAgICAgICAgIHx8IE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1
ZXVlKCkKLSAgICAgICAgfHwgT3B0aW9uczo6cmVwb3J0Q29tcGlsZVRpbWVzKCkpCisgICAgICAg
IHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpCisgICAgICAgIHx8IE9wdGlvbnM6OnZl
cmJvc2VDRkEoKSkKICAgICAgICAgaGFzaCgpOwogCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBHZW5l
cmF0ZWRCeXRlY29kZXMoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZB
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZB
UGhhc2UuY3BwCShyZXZpc2lvbiAxNTI5NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NGQVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjIgKzMyLDE4IEBACiAjaW5j
bHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oIgog
I2luY2x1ZGUgIkRGR1BoYXNlLmgiCisjaW5jbHVkZSAiREZHU2FmZVRvRXhlY3V0ZS5oIgogI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
CiBjbGFzcyBDRkFQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6Ci0jaWYgREZHX0VOQUJM
RShERkdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3Nl
ID0gdHJ1ZTsKLSNlbHNlCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwot
I2VuZGlmCi0KICAgICBDRkFQaGFzZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIDogUGhhc2UoZ3Jh
cGgsICJjb250cm9sIGZsb3cgYW5hbHlzaXMiKQogICAgICAgICAsIG1fc3RhdGUoZ3JhcGgpCiAg
ICAgICAgICwgbV9pbnRlcnByZXRlcihncmFwaCwgbV9zdGF0ZSkKKyAgICAgICAgLCBtX3ZlcmJv
c2UoT3B0aW9uczo6dmVyYm9zZUNGQSgpKQogICAgIHsKICAgICB9CiAgICAgCkBAIC01OSw2ICs1
NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBtX2NvdW50ID0gMDsKICAgICAgICAg
CisgICAgICAgIGlmIChtX3ZlcmJvc2UgJiYgIXNob3VsZER1bXBHcmFwaEF0RWFjaFBoYXNlKCkp
IHsKKyAgICAgICAgICAgIGRhdGFMb2coIkdyYXBoIGJlZm9yZSBDRkE6XG4iKTsKKyAgICAgICAg
ICAgIG1fZ3JhcGguZHVtcCgpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICAvLyBUaGlz
IGltcGxlbWVudHMgYSBwc2V1ZG8td29ya2xpc3QtYmFzZWQgZm9yd2FyZCBDRkEsIGV4Y2VwdCB0
aGF0IHRoZSB2aXNpdCBvcmRlcgogICAgICAgICAvLyBvZiBibG9ja3MgaXMgdGhlIGJ5dGVjb2Rl
IHByb2dyYW0gb3JkZXIgKHdoaWNoIGlzIG5lYXJseSB0b3BvbG9naWNhbCksIGFuZAogICAgICAg
ICAvLyBpbnN0ZWFkIG9mIGEgd29ya2xpc3Qgd2UganVzdCB3YWxrIGFsbCBiYXNpYyBibG9ja3Mg
Y2hlY2tpbmcgaWYgY2ZhU2hvdWxkUmV2aXNpdApAQCAtODcsMzcgKzg4LDQyIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghYmxvY2stPmNmYVNob3VsZFJldmlz
aXQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBp
ZiAobV92ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgQmxvY2sgIiwgKmJsb2NrLCAi
OlxuIik7CiAgICAgICAgIG1fc3RhdGUuYmVnaW5CYXNpY0Jsb2NrKGJsb2NrKTsKLSAgICAgICAg
aWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKG1fdmVyYm9zZSkgewogICAgICAgICAgICAgZGF0
YUxvZ0YoIiAgICAgIGhlYWQgdmFyczogIik7CiAgICAgICAgICAgICBkdW1wT3BlcmFuZHMoYmxv
Y2stPnZhbHVlc0F0SGVhZCwgV1RGOjpkYXRhRmlsZSgpKTsKICAgICAgICAgICAgIGRhdGFMb2dG
KCJcbiIpOwogICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9j
ay0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAg
ICBpZiAobV92ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5h
dChpKTsKICAgICAgICAgICAgICAgICBkYXRhTG9nRigiICAgICAgJXMgQCV1OiAiLCBHcmFwaDo6
b3BOYW1lKG5vZGUtPm9wKCkpLCBub2RlLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBpZiAoIXNhZmVUb0V4ZWN1dGUobV9zdGF0ZSwgbV9ncmFwaCwgbm9kZSkp
CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIihVTlNBRkUpICIpOworICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZHVtcChXVEY6OmRhdGFGaWxlKCkp
OworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmhhdmVTdHJ1
Y3R1cmVzKCkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAoSGF2ZSBTdHJ1Y3R1cmVz
KSIpOwogICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLmV4ZWN1dGUoaSkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAobV92ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nRigiICAgICAgICAgRXhwZWN0IE9TUiBleGl0LlxuIik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKG1fdmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxv
Z0YoIiAgICAgIHRhaWwgcmVnczogIik7CiAgICAgICAgICAgICBtX2ludGVycHJldGVyLmR1bXAo
V1RGOjpkYXRhRmlsZSgpKTsKICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwogICAgICAgICB9
CiAgICAgICAgIG1fY2hhbmdlZCB8PSBtX3N0YXRlLmVuZEJhc2ljQmxvY2soTWVyZ2VUb1N1Y2Nl
c3NvcnMpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKG1f
dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICAgIHRhaWwgdmFyczogIik7CiAg
ICAgICAgICAgICBkdW1wT3BlcmFuZHMoYmxvY2stPnZhbHVlc0F0VGFpbCwgV1RGOjpkYXRhRmls
ZSgpKTsKICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwpAQCAtMTI3LDcgKzEzMyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBwZXJmb3JtRm9yd2FyZENGQSgpCiAgICAgewogICAgICAgICArK21f
Y291bnQ7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAobV92ZXJib3NlKQogICAg
ICAgICAgICAgZGF0YUxvZ0YoIkNGQSBbJXVdXG4iLCArK21fY291bnQpOwogICAgICAgICAKICAg
ICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFw
aC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KQpAQCAtMTM4LDYgKzE0NCw4IEBAIHByaXZhdGU6
CiAgICAgSW5QbGFjZUFic3RyYWN0U3RhdGUgbV9zdGF0ZTsKICAgICBBYnN0cmFjdEludGVycHJl
dGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPiBtX2ludGVycHJldGVyOwogICAgIAorICAgIGJvb2wg
bV92ZXJib3NlOworICAgIAogICAgIGJvb2wgbV9jaGFuZ2VkOwogICAgIHVuc2lnbmVkIG1fY291
bnQ7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR1NhZmVUb0V4ZWN1
dGVfaAorI2RlZmluZSBERkdTYWZlVG9FeGVjdXRlX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdHcmFwaC5oIgorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEFic3Ry
YWN0U3RhdGVUeXBlPgorY2xhc3MgU2FmZVRvRXhlY3V0ZUVkZ2UgeworcHVibGljOgorICAgIFNh
ZmVUb0V4ZWN1dGVFZGdlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSkKKyAgICAgICAgOiBtX3N0
YXRlKHN0YXRlKQorICAgICAgICAsIG1fcmVzdWx0KHRydWUpCisgICAgeworICAgIH0KKyAgICAK
KyAgICB2b2lkIG9wZXJhdG9yKCkoTm9kZSosIEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIHN3
aXRjaCAoZWRnZS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgorICAgICAg
ICBjYXNlIEludDMyVXNlOgorICAgICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CisgICAgICAgIGNh
c2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CisgICAgICAgIGNhc2UgQ2Vs
bFVzZToKKyAgICAgICAgY2FzZSBPYmplY3RVc2U6CisgICAgICAgIGNhc2UgT2JqZWN0T3JPdGhl
clVzZToKKyAgICAgICAgY2FzZSBTdHJpbmdJZGVudFVzZToKKyAgICAgICAgY2FzZSBTdHJpbmdV
c2U6CisgICAgICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgorICAgICAgICBjYXNlIFN0cmluZ09y
U3RyaW5nT2JqZWN0VXNlOgorICAgICAgICBjYXNlIE5vdENlbGxVc2U6CisgICAgICAgIGNhc2Ug
T3RoZXJVc2U6CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBLbm93bkludDMyVXNlOgorICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5t
X3R5cGUgJiB+U3BlY0ludDMyKQorICAgICAgICAgICAgICAgIG1fcmVzdWx0ID0gZmFsc2U7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBLbm93bk51bWJl
clVzZToKKyAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgflNw
ZWNOdW1iZXIpCisgICAgICAgICAgICAgICAgbV9yZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEtub3duQ2VsbFVzZToKKyAgICAg
ICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgflNwZWNDZWxsKQorICAg
ICAgICAgICAgICAgIG1fcmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBLbm93blN0cmluZ1VzZToKKyAgICAgICAgICAgIGlmICht
X3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgflNwZWNTdHJpbmcpCisgICAgICAgICAgICAg
ICAgbV9yZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIExhc3RVc2VLaW5kOgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIGJvb2wgcmVzdWx0KCkg
Y29uc3QgeyByZXR1cm4gbV9yZXN1bHQ7IH0KK3ByaXZhdGU6CisgICAgQWJzdHJhY3RTdGF0ZVR5
cGUmIG1fc3RhdGU7CisgICAgYm9vbCBtX3Jlc3VsdDsKK307CisKKy8vIERldGVybWluZXMgaWYg
aXQncyBzYWZlIHRvIGV4ZWN1dGUgYSBub2RlIHdpdGhpbiB0aGUgZ2l2ZW4gYWJzdHJhY3Qgc3Rh
dGUuIFRoaXMgbWF5CisvLyByZXR1cm4gZmFsc2UgY29uc2VydmF0aXZlbHkuIElmIGl0IHJldHVy
bnMgdHJ1ZSwgdGhlbiB5b3UgY2FuIGhvaXN0IHRoZSBnaXZlbiBub2RlCisvLyB1cCB0byB0aGUg
Z2l2ZW4gcG9pbnQgYW5kIGV4cGVjdCB0aGF0IGl0IHdpbGwgbm90IGNyYXNoLiBUaGlzIGRvZXNu
J3QgZ3VhcmFudGVlIHRoYXQKKy8vIHRoZSBub2RlIHdpbGwgcHJvZHVjZSB0aGUgcmVzdWx0IHlv
dSB3YW50ZWQgb3RoZXIgdGhhbiBub3QgY3Jhc2hpbmcuCit0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0
cmFjdFN0YXRlVHlwZT4KK2Jvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3Rh
dGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKK3sKKyAgICBTYWZlVG9FeGVjdXRlRWRnZTxB
YnN0cmFjdFN0YXRlVHlwZT4gc2FmZVRvRXhlY3V0ZUVkZ2Uoc3RhdGUpOworICAgIERGR19OT0RF
X0RPX1RPX0NISUxEUkVOKGdyYXBoLCBub2RlLCBzYWZlVG9FeGVjdXRlRWRnZSk7CisgICAgaWYg
KCFzYWZlVG9FeGVjdXRlRWRnZS5yZXN1bHQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgY2FzZSBKU0NvbnN0YW50OgorICAgIGNhc2Ug
V2Vha0pTQ29uc3RhbnQ6CisgICAgY2FzZSBJZGVudGl0eToKKyAgICBjYXNlIFRvVGhpczoKKyAg
ICBjYXNlIENyZWF0ZVRoaXM6CisgICAgY2FzZSBHZXRDYWxsZWU6CisgICAgY2FzZSBTZXRDYWxs
ZWU6CisgICAgY2FzZSBHZXRMb2NhbDoKKyAgICBjYXNlIFNldExvY2FsOgorICAgIGNhc2UgTW92
SGludEFuZENoZWNrOgorICAgIGNhc2UgTW92SGludDoKKyAgICBjYXNlIFpvbWJpZUhpbnQ6Cisg
ICAgY2FzZSBHZXRBcmd1bWVudDoKKyAgICBjYXNlIFBoYW50b206CisgICAgY2FzZSBVcHNpbG9u
OgorICAgIGNhc2UgUGhpOgorICAgIGNhc2UgRmx1c2g6CisgICAgY2FzZSBQaGFudG9tTG9jYWw6
CisgICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOgorICAgIGNhc2UgU2V0QXJndW1lbnQ6CisgICAg
Y2FzZSBJbmxpbmVTdGFydDoKKyAgICBjYXNlIEJpdEFuZDoKKyAgICBjYXNlIEJpdE9yOgorICAg
IGNhc2UgQml0WG9yOgorICAgIGNhc2UgQml0TFNoaWZ0OgorICAgIGNhc2UgQml0UlNoaWZ0Ogor
ICAgIGNhc2UgQml0VVJTaGlmdDoKKyAgICBjYXNlIFZhbHVlVG9JbnQzMjoKKyAgICBjYXNlIFVJ
bnQzMlRvTnVtYmVyOgorICAgIGNhc2UgSW50MzJUb0RvdWJsZToKKyAgICBjYXNlIEZvcndhcmRJ
bnQzMlRvRG91YmxlOgorICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKKyAgICBjYXNlIEFyaXRoQWRk
OgorICAgIGNhc2UgQXJpdGhTdWI6CisgICAgY2FzZSBBcml0aE5lZ2F0ZToKKyAgICBjYXNlIEFy
aXRoTXVsOgorICAgIGNhc2UgQXJpdGhEaXY6CisgICAgY2FzZSBBcml0aE1vZDoKKyAgICBjYXNl
IEFyaXRoQWJzOgorICAgIGNhc2UgQXJpdGhNaW46CisgICAgY2FzZSBBcml0aE1heDoKKyAgICBj
YXNlIEFyaXRoU3FydDoKKyAgICBjYXNlIFZhbHVlQWRkOgorICAgIGNhc2UgR2V0QnlJZDoKKyAg
ICBjYXNlIEdldEJ5SWRGbHVzaDoKKyAgICBjYXNlIFB1dEJ5SWQ6CisgICAgY2FzZSBQdXRCeUlk
RGlyZWN0OgorICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CisgICAgY2FzZSBDaGVja0V4ZWN1dGFi
bGU6CisgICAgY2FzZSBGb3J3YXJkQ2hlY2tTdHJ1Y3R1cmU6CisgICAgY2FzZSBHZXRCdXR0ZXJm
bHk6CisgICAgY2FzZSBDaGVja0FycmF5OgorICAgIGNhc2UgRm9yd2FyZENoZWNrQXJyYXk6Cisg
ICAgY2FzZSBBcnJheWlmeToKKyAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CisgICAgY2Fz
ZSBHZXRTY29wZToKKyAgICBjYXNlIEdldE15U2NvcGU6CisgICAgY2FzZSBTZXRNeVNjb3BlOgor
ICAgIGNhc2UgU2tpcFRvcFNjb3BlOgorICAgIGNhc2UgU2tpcFNjb3BlOgorICAgIGNhc2UgR2V0
Q2xvc3VyZVJlZ2lzdGVyczoKKyAgICBjYXNlIEdldENsb3N1cmVWYXI6CisgICAgY2FzZSBQdXRD
bG9zdXJlVmFyOgorICAgIGNhc2UgR2V0R2xvYmFsVmFyOgorICAgIGNhc2UgUHV0R2xvYmFsVmFy
OgorICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKKyAgICBjYXNlIFZhckluamVjdGlvbldh
dGNocG9pbnQ6CisgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgorICAgIGNhc2UgQWxsb2NhdGlvblBy
b2ZpbGVXYXRjaHBvaW50OgorICAgIGNhc2UgUmVnRXhwRXhlYzoKKyAgICBjYXNlIFJlZ0V4cFRl
c3Q6CisgICAgY2FzZSBDb21wYXJlTGVzczoKKyAgICBjYXNlIENvbXBhcmVMZXNzRXE6CisgICAg
Y2FzZSBDb21wYXJlR3JlYXRlcjoKKyAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CisgICAgY2Fz
ZSBDb21wYXJlRXE6CisgICAgY2FzZSBDb21wYXJlRXFDb25zdGFudDoKKyAgICBjYXNlIENvbXBh
cmVTdHJpY3RFcToKKyAgICBjYXNlIENvbXBhcmVTdHJpY3RFcUNvbnN0YW50OgorICAgIGNhc2Ug
Q2FsbDoKKyAgICBjYXNlIENvbnN0cnVjdDoKKyAgICBjYXNlIE5ld09iamVjdDoKKyAgICBjYXNl
IE5ld0FycmF5OgorICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKKyAgICBjYXNlIE5ld0FycmF5
QnVmZmVyOgorICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgQnJlYWtwb2ludDoKKyAgICBj
YXNlIENoZWNrSGFzSW5zdGFuY2U6CisgICAgY2FzZSBJbnN0YW5jZU9mOiAvLyBUaGlzIG1pZ2h0
IGJlIGEgYml0IG9mIGEgbGllLiBJJ20gbm90IHN1cmUuCisgICAgY2FzZSBJc1VuZGVmaW5lZDoK
KyAgICBjYXNlIElzQm9vbGVhbjoKKyAgICBjYXNlIElzTnVtYmVyOgorICAgIGNhc2UgSXNTdHJp
bmc6CisgICAgY2FzZSBJc09iamVjdDoKKyAgICBjYXNlIElzRnVuY3Rpb246CisgICAgY2FzZSBU
eXBlT2Y6CisgICAgY2FzZSBMb2dpY2FsTm90OgorICAgIGNhc2UgVG9QcmltaXRpdmU6CisgICAg
Y2FzZSBUb1N0cmluZzoKKyAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKKyAgICBjYXNlIE1ha2VS
b3BlOgorICAgIGNhc2UgSW46CisgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgorICAgIGNhc2Ug
VGVhck9mZkFjdGl2YXRpb246CisgICAgY2FzZSBDcmVhdGVBcmd1bWVudHM6CisgICAgY2FzZSBQ
aGFudG9tQXJndW1lbnRzOgorICAgIGNhc2UgVGVhck9mZkFyZ3VtZW50czoKKyAgICBjYXNlIEdl
dE15QXJndW1lbnRzTGVuZ3RoOgorICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgorICAgIGNh
c2UgR2V0TXlBcmd1bWVudHNMZW5ndGhTYWZlOgorICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFs
U2FmZToKKyAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBjYXNlIE5ld0Z1
bmN0aW9uTm9DaGVjazoKKyAgICBjYXNlIE5ld0Z1bmN0aW9uOgorICAgIGNhc2UgTmV3RnVuY3Rp
b25FeHByZXNzaW9uOgorICAgIGNhc2UgSnVtcDoKKyAgICBjYXNlIEJyYW5jaDoKKyAgICBjYXNl
IFN3aXRjaDoKKyAgICBjYXNlIFJldHVybjoKKyAgICBjYXNlIFRocm93OgorICAgIGNhc2UgVGhy
b3dSZWZlcmVuY2VFcnJvcjoKKyAgICBjYXNlIENvdW50RXhlY3V0aW9uOgorICAgIGNhc2UgRm9y
Y2VPU1JFeGl0OgorICAgIGNhc2UgRm9yd2FyZEZvcmNlT1NSRXhpdDoKKyAgICBjYXNlIENoZWNr
V2F0Y2hkb2dUaW1lcjoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIAorICAgIGNhc2Ug
R2V0QnlWYWw6CisgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgorICAgIGNhc2Ug
R2V0QXJyYXlMZW5ndGg6CisgICAgY2FzZSBBcnJheVB1c2g6CisgICAgY2FzZSBBcnJheVBvcDoK
KyAgICBjYXNlIFN0cmluZ0NoYXJBdDoKKyAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CisgICAg
ICAgIHJldHVybiBub2RlLT5hcnJheU1vZGUoKS5hbHJlYWR5Q2hlY2tlZChncmFwaCwgbm9kZSwg
c3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkpOworICAgICAgICAKKyAgICBjYXNlIFB1dEJ5
VmFsOgorICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKKyAgICAgICAgcmV0dXJuIG5vZGUtPmFycmF5
TW9kZSgpLm1vZGVGb3JQdXQoKS5hbHJlYWR5Q2hlY2tlZCgKKyAgICAgICAgICAgIGdyYXBoLCBu
b2RlLCBzdGF0ZS5mb3JOb2RlKGdyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKSk7CisKKyAgICBj
YXNlIFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OgorICAgIGNhc2UgRm9yd2FyZFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OgorICAgICAgICByZXR1cm4gc3RhdGUuZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5pc1N1YnNldE9mKAorICAg
ICAgICAgICAgU3RydWN0dXJlU2V0KG5vZGUtPnN0cnVjdHVyZSgpKSk7CisgICAgICAgIAorICAg
IGNhc2UgUHV0U3RydWN0dXJlOgorICAgIGNhc2UgUGhhbnRvbVB1dFN0cnVjdHVyZToKKyAgICBj
YXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgorICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5
U3RvcmFnZToKKyAgICAgICAgcmV0dXJuIHN0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
Y3VycmVudEtub3duU3RydWN0dXJlLmlzU3Vic2V0T2YoCisgICAgICAgICAgICBTdHJ1Y3R1cmVT
ZXQobm9kZS0+c3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5wcmV2aW91c1N0cnVjdHVyZSkpOwor
ICAgICAgICAKKyAgICBjYXNlIEdldEJ5T2Zmc2V0OgorICAgIGNhc2UgUHV0QnlPZmZzZXQ6Cisg
ICAgICAgIHJldHVybiBzdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX2N1cnJlbnRLbm93
blN0cnVjdHVyZS5pc1ZhbGlkT2Zmc2V0KAorICAgICAgICAgICAgZ3JhcGgubV9zdG9yYWdlQWNj
ZXNzRGF0YVtub2RlLT5zdG9yYWdlQWNjZXNzRGF0YUluZGV4KCldLm9mZnNldCk7CisgICAgICAg
IAorICAgIGNhc2UgTGFzdE5vZGVUeXBlOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8v
IERGR1NhZmVUb0V4ZWN1dGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMTUyOTQ1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4Miw2ICsyODIsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKG1fc3RydWN0dXJlKTsKICAgICB9CiAgICAgCisg
ICAgYm9vbCBpc1ZhbGlkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKKyAgICB7CisgICAg
ICAgIGlmIChpc1RvcCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAo
aXNDbGVhcigpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBtX3N0
cnVjdHVyZS0+aXNWYWxpZE9mZnNldChvZmZzZXQpOworICAgIH0KKyAgICAKICAgICBib29sIGhh
c1NpbmdsZXRvbigpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaXNOZWl0aGVyQ2xlYXJO
b3JUb3AoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJl
dmlzaW9uIDE1Mjk0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
aAkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB2
KGJvb2wsIHZlcmJvc2VDYWxsTGluaywgZmFsc2UpIFwKICAgICB2KGJvb2wsIHZlcmJvc2VDb21w
aWxhdGlvblF1ZXVlLCBmYWxzZSkgXAogICAgIHYoYm9vbCwgcmVwb3J0Q29tcGlsZVRpbWVzLCBm
YWxzZSkgXAorICAgIHYoYm9vbCwgdmVyYm9zZUNGQSwgZmFsc2UpIFwKICAgICBcCiAgICAgdihi
b29sLCBlbmFibGVPU1JFbnRyeUluTG9vcHMsIHRydWUpIFwKICAgICBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207206</attachid>
            <date>2013-07-20 19:45:27 -0700</date>
            <delta_ts>2013-07-21 13:45:08 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20915</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyOTQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDEzLTA3LTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogZWFjaCBERkcgbm9kZSB0aGF0IHJlbGllcyBvbiBvdGhlciBub2RlcyB0byBk
byB0aGVpciB0eXBlIGNoZWNrcyBzaG91bGQgYmUgYWJsZSB0byB0ZWxsIHlvdSBpZiB0aG9zZSB0
eXBlIGNoZWNrcyBoYXBwZW5lZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE4ODY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisgICAgICAgIAorICAgICAgICBBZGRzIGEgc2FmZVRvRXhlY3V0ZSgpIG1ldGhvZCB0aGF0IHRh
a2VzIGEgbm9kZSBhbmQgYW4gYWJzdHJhY3Qgc3RhdGUgYW5kIHRlbGxzIHlvdQorICAgICAgICBp
ZiB0aGUgbm9kZSB3aWxsIHJ1biB3aXRob3V0IGNyYXNoaW5nIHVuZGVyIHRoYXQgc3RhdGUuCisK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
Q29kZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ0ZBUGhhc2UuY3BwOgorICAgICAgICAoQ0ZB
UGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OkNGQVBoYXNlOjpDRkFQaGFzZSk6CisgICAgICAg
IChKU0M6OkRGRzo6Q0ZBUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZBUGhhc2U6
OnBlcmZvcm1CbG9ja0NGQSk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZBUGhhc2U6OnBlcmZvcm1G
b3J3YXJkQ0ZBKToKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKERGRyk6CisgICAgICAgIChTYWZlVG9FeGVjdXRlRWRnZSk6CisgICAgICAgIChKU0M6
OkRGRzo6U2FmZVRvRXhlY3V0ZUVkZ2U6OlNhZmVUb0V4ZWN1dGVFZGdlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTYWZlVG9FeGVjdXRlRWRnZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U2FmZVRvRXhlY3V0ZUVkZ2U6OnJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRv
RXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjppc1ZhbGlkT2Zmc2V0KToK
KyAgICAgICAgKFN0cnVjdHVyZUFic3RyYWN0VmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9ucy5oOgorICAgICAgICAoSlNDKToKKwogMjAxMy0wNy0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIGZvdXJ0aFRpZXI6IFN0cmluZ09iamVjdFVzZSB1c2Vz
IHN0cnVjdHVyZXMsIGFuZCBDU0Ugc2hvdWxkIGtub3cgdGhhdApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1Mjk0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0zNzMsOCArMzczLDkgQEAKIAkJMEZFNTA1OEMxNzk4QUJGNTAwQjM1RjhDIC8qIERGR0lu
UGxhY2VBYnN0cmFjdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRTUwNTg4MTc5OEFCRjUwMEIzNUY4QyAvKiBERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5jcHAgKi87IH07CiAJCTBGRTUwNThEMTc5OEFCRjUwMEIzNUY4QyAvKiBERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFNTA1ODkxNzk4QUJGNTAwQjM1RjhDIC8qIERGR0luUGxhY2VBYnN0cmFjdFN0
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEZFNTA1OEYxNzk4QUU3MTAwQjM1RjhDIC8qIERGR01lcmdlTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNTA1OEUxNzk4QUU2RjAwQjM1RjhD
IC8qIERGR01lcmdlTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTBGRTUwNTkzMTc5QTYwNDUwMEIzNUY4QyAvKiBERkdFZGdlVXNlc1N0cnVj
dHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
NTA1OTIxNzlBNjA0NTAwQjM1RjhDIC8qIERGR0VkZ2VVc2VzU3RydWN0dXJlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFNTA1OTExNzlBNDky
NDAwQjM1RjhDIC8qIERGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1MDU5MDE3OUE0
OTI0MDBCMzVGOEMgLyogREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRkU1MDU5
MzE3OUE2MDQ1MDBCMzVGOEMgLyogREZHRWRnZVVzZXNTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTUwNTkyMTc5QTYwNDUwMEIzNUY4
QyAvKiBERkdFZGdlVXNlc1N0cnVjdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGRTUwNTlGMTc5QjRBMjMwMEIzNUY4QyAvKiBERkdTYWZl
VG9FeGVjdXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkU1MDU5RTE3OUI0QTIwMDBCMzVGOEMgLyogREZHU2FmZVRvRXhlY3V0ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRTg1MzRCMTcyM0NE
QTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFODUzNDkxNzIzQ0RBNTAwQjYxOEY1IC8q
IERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgKi87IH07CiAJCTBGRTg1MzRDMTcyM0NEQTUwMEI2
MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTg1MzRBMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNp
cmVkV2F0Y2hwb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRkVBMEEwODE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJicmV2aWF0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTA5RkQx
NzA1MTNEQjAwQkI3MjJDIC8qIEZUTEFiYnJldmlhdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTQyNiw4ICsxNDI3LDkgQEAKIAkJMEZF
NTA1ODgxNzk4QUJGNTAwQjM1RjhDIC8qIERGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0luUGxhY2VBYnN0cmFjdFN0YXRl
LmNwcDsgcGF0aCA9IGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRTUwNTg5MTc5OEFCRjUwMEIzNUY4QyAvKiBERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5oOyBwYXRoID0gZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTUwNThFMTc5OEFFNkYwMEIzNUY4QyAv
KiBERkdNZXJnZU1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTWVyZ2VNb2RlLmg7IHBhdGggPSBk
ZmcvREZHTWVyZ2VNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRTUwNTky
MTc5QTYwNDUwMEIzNUY4QyAvKiBERkdFZGdlVXNlc1N0cnVjdHVyZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdFZGdlVXNlc1N0cnVjdHVyZS5oOyBwYXRoID0gZGZnL0RG
R0VkZ2VVc2VzU3RydWN0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTUw
NTkwMTc5QTQ5MjQwMEIzNUY4QyAvKiBERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVy
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTYW5lU3RyaW5nR2V0
QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oOyBwYXRoID0gZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZh
bFNsb3dQYXRoR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRTUw
NTkyMTc5QTYwNDUwMEIzNUY4QyAvKiBERkdFZGdlVXNlc1N0cnVjdHVyZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdFZGdlVXNlc1N0cnVjdHVyZS5oOyBwYXRoID0gZGZn
L0RGR0VkZ2VVc2VzU3RydWN0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RTUwNTlFMTc5QjRBMjAwMEIzNUY4QyAvKiBERkdTYWZlVG9FeGVjdXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR1NhZmVUb0V4ZWN1dGUuaDsgcGF0aCA9IGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTg1MzQ5MTcyM0NEQTUwMEI2MThGNSAvKiBE
RkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcDsgcGF0aCA9IGRmZy9ERkdEZXNpcmVkV2F0
Y2hwb2ludHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU4NTM0QTE3MjND
REE1MDBCNjE4RjUgLyogREZHRGVzaXJlZFdhdGNocG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERGR0Rlc2lyZWRXYXRjaHBvaW50cy5oOyBwYXRoID0gZGZnL0RGR0Rl
c2lyZWRXYXRjaHBvaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVBMDlG
RDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQWJicmV2aWF0aW9ucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBGVExBYmJyZXZpYXRpb25zLmg7IHBhdGggPSBmdGwvRlRMQWJicmV2
aWF0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzEzMyw2ICszMTM1LDcg
QEAKIAkJCQkwRjc2NkQ0MjE1QjJBM0JEMDA4RjM2M0UgLyogREZHUmVnaXN0ZXJTZXQuaCAqLywK
IAkJCQk4NkJCMDlCRTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi8sCiAJCQkJ
ODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCAqLywKKwkJCQkwRkU1MDU5
RTE3OUI0QTIwMDBCMzVGOEMgLyogREZHU2FmZVRvRXhlY3V0ZS5oICovLAogCQkJCTBGRTUwNTkw
MTc5QTQ5MjQwMEIzNUY4QyAvKiBERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRv
ci5oICovLAogCQkJCTg2RUNBM0Y5MTMyREYyNUEwMDJCMkFENyAvKiBERkdTY29yZUJvYXJkLmgg
Ki8sCiAJCQkJMEY3NjZENDUxNUIzNzAxRDAwOEYzNjNFIC8qIERGR1NjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvci5oICovLApAQCAtMzkwOSw2ICszOTEyLDcgQEAKIAkJCQkwRjQ2RTZFRjE3N0NFOTVB
MDBFMUY3NTUgLyogREZHQW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDZFNkY0MTc3
Q0YwRDIwMEUxRjc1NSAvKiBERkdOYXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NDZFNkUzMTc3Q0MzNjYwMEUxRjc1NSAvKiBMTFZNRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRkU1MDU5RjE3OUI0QTIzMDBCMzVGOEMgLyogREZHU2FmZVRvRXhlY3V0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY0NkU2RTQxNzdDQzM2NjAwRTFGNzU1IC8qIFVEaXM4NkRpc2Fz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTUyOTQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MjMsNyArMTgy
Myw4IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAg
fHwgT3B0aW9uczo6dmFsaWRhdGVHcmFwaEF0RWFjaFBoYXNlKCkKICAgICAgICAgfHwgT3B0aW9u
czo6dmVyYm9zZU9TUigpCiAgICAgICAgIHx8IE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1
ZXVlKCkKLSAgICAgICAgfHwgT3B0aW9uczo6cmVwb3J0Q29tcGlsZVRpbWVzKCkpCisgICAgICAg
IHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpCisgICAgICAgIHx8IE9wdGlvbnM6OnZl
cmJvc2VDRkEoKSkKICAgICAgICAgaGFzaCgpOwogCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBHZW5l
cmF0ZWRCeXRlY29kZXMoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZB
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZB
UGhhc2UuY3BwCShyZXZpc2lvbiAxNTI5NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NGQVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjIgKzMyLDE4IEBACiAjaW5j
bHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oIgog
I2luY2x1ZGUgIkRGR1BoYXNlLmgiCisjaW5jbHVkZSAiREZHU2FmZVRvRXhlY3V0ZS5oIgogI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
CiBjbGFzcyBDRkFQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6Ci0jaWYgREZHX0VOQUJM
RShERkdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3Nl
ID0gdHJ1ZTsKLSNlbHNlCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwot
I2VuZGlmCi0KICAgICBDRkFQaGFzZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIDogUGhhc2UoZ3Jh
cGgsICJjb250cm9sIGZsb3cgYW5hbHlzaXMiKQogICAgICAgICAsIG1fc3RhdGUoZ3JhcGgpCiAg
ICAgICAgICwgbV9pbnRlcnByZXRlcihncmFwaCwgbV9zdGF0ZSkKKyAgICAgICAgLCBtX3ZlcmJv
c2UoT3B0aW9uczo6dmVyYm9zZUNGQSgpKQogICAgIHsKICAgICB9CiAgICAgCkBAIC01OSw2ICs1
NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBtX2NvdW50ID0gMDsKICAgICAgICAg
CisgICAgICAgIGlmIChtX3ZlcmJvc2UgJiYgIXNob3VsZER1bXBHcmFwaEF0RWFjaFBoYXNlKCkp
IHsKKyAgICAgICAgICAgIGRhdGFMb2coIkdyYXBoIGJlZm9yZSBDRkE6XG4iKTsKKyAgICAgICAg
ICAgIG1fZ3JhcGguZHVtcCgpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICAvLyBUaGlz
IGltcGxlbWVudHMgYSBwc2V1ZG8td29ya2xpc3QtYmFzZWQgZm9yd2FyZCBDRkEsIGV4Y2VwdCB0
aGF0IHRoZSB2aXNpdCBvcmRlcgogICAgICAgICAvLyBvZiBibG9ja3MgaXMgdGhlIGJ5dGVjb2Rl
IHByb2dyYW0gb3JkZXIgKHdoaWNoIGlzIG5lYXJseSB0b3BvbG9naWNhbCksIGFuZAogICAgICAg
ICAvLyBpbnN0ZWFkIG9mIGEgd29ya2xpc3Qgd2UganVzdCB3YWxrIGFsbCBiYXNpYyBibG9ja3Mg
Y2hlY2tpbmcgaWYgY2ZhU2hvdWxkUmV2aXNpdApAQCAtODcsMzcgKzg4LDQyIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghYmxvY2stPmNmYVNob3VsZFJldmlz
aXQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBp
ZiAobV92ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZygiICAgQmxvY2sgIiwgKmJsb2NrLCAi
OlxuIik7CiAgICAgICAgIG1fc3RhdGUuYmVnaW5CYXNpY0Jsb2NrKGJsb2NrKTsKLSAgICAgICAg
aWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKG1fdmVyYm9zZSkgewogICAgICAgICAgICAgZGF0
YUxvZ0YoIiAgICAgIGhlYWQgdmFyczogIik7CiAgICAgICAgICAgICBkdW1wT3BlcmFuZHMoYmxv
Y2stPnZhbHVlc0F0SGVhZCwgV1RGOjpkYXRhRmlsZSgpKTsKICAgICAgICAgICAgIGRhdGFMb2dG
KCJcbiIpOwogICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9j
ay0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAg
ICBpZiAobV92ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5h
dChpKTsKICAgICAgICAgICAgICAgICBkYXRhTG9nRigiICAgICAgJXMgQCV1OiAiLCBHcmFwaDo6
b3BOYW1lKG5vZGUtPm9wKCkpLCBub2RlLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBpZiAoIXNhZmVUb0V4ZWN1dGUobV9zdGF0ZSwgbV9ncmFwaCwgbm9kZSkp
CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIihVTlNBRkUpICIpOworICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZHVtcChXVEY6OmRhdGFGaWxlKCkp
OworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmhhdmVTdHJ1
Y3R1cmVzKCkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAoSGF2ZSBTdHJ1Y3R1cmVz
KSIpOwogICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLmV4ZWN1dGUoaSkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBpZiAobV92ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nRigiICAgICAgICAgRXhwZWN0IE9TUiBleGl0LlxuIik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKG1fdmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxv
Z0YoIiAgICAgIHRhaWwgcmVnczogIik7CiAgICAgICAgICAgICBtX2ludGVycHJldGVyLmR1bXAo
V1RGOjpkYXRhRmlsZSgpKTsKICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwogICAgICAgICB9
CiAgICAgICAgIG1fY2hhbmdlZCB8PSBtX3N0YXRlLmVuZEJhc2ljQmxvY2soTWVyZ2VUb1N1Y2Nl
c3NvcnMpOwogICAgICAgICAKLSAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgaWYgKG1f
dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICAgIHRhaWwgdmFyczogIik7CiAg
ICAgICAgICAgICBkdW1wT3BlcmFuZHMoYmxvY2stPnZhbHVlc0F0VGFpbCwgV1RGOjpkYXRhRmls
ZSgpKTsKICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwpAQCAtMTI3LDcgKzEzMyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBwZXJmb3JtRm9yd2FyZENGQSgpCiAgICAgewogICAgICAgICArK21f
Y291bnQ7Ci0gICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICBpZiAobV92ZXJib3NlKQogICAg
ICAgICAgICAgZGF0YUxvZ0YoIkNGQSBbJXVdXG4iLCArK21fY291bnQpOwogICAgICAgICAKICAg
ICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFw
aC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KQpAQCAtMTM4LDYgKzE0NCw4IEBAIHByaXZhdGU6
CiAgICAgSW5QbGFjZUFic3RyYWN0U3RhdGUgbV9zdGF0ZTsKICAgICBBYnN0cmFjdEludGVycHJl
dGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPiBtX2ludGVycHJldGVyOwogICAgIAorICAgIGJvb2wg
bV92ZXJib3NlOworICAgIAogICAgIGJvb2wgbV9jaGFuZ2VkOwogICAgIHVuc2lnbmVkIG1fY291
bnQ7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR1NhZmVUb0V4ZWN1
dGVfaAorI2RlZmluZSBERkdTYWZlVG9FeGVjdXRlX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdHcmFwaC5oIgorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEFic3Ry
YWN0U3RhdGVUeXBlPgorY2xhc3MgU2FmZVRvRXhlY3V0ZUVkZ2UgeworcHVibGljOgorICAgIFNh
ZmVUb0V4ZWN1dGVFZGdlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSkKKyAgICAgICAgOiBtX3N0
YXRlKHN0YXRlKQorICAgICAgICAsIG1fcmVzdWx0KHRydWUpCisgICAgeworICAgIH0KKyAgICAK
KyAgICB2b2lkIG9wZXJhdG9yKCkoTm9kZSosIEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIHN3
aXRjaCAoZWRnZS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgorICAgICAg
ICBjYXNlIEludDMyVXNlOgorICAgICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6CisgICAgICAgIGNh
c2UgTnVtYmVyVXNlOgorICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CisgICAgICAgIGNhc2UgQ2Vs
bFVzZToKKyAgICAgICAgY2FzZSBPYmplY3RVc2U6CisgICAgICAgIGNhc2UgT2JqZWN0T3JPdGhl
clVzZToKKyAgICAgICAgY2FzZSBTdHJpbmdJZGVudFVzZToKKyAgICAgICAgY2FzZSBTdHJpbmdV
c2U6CisgICAgICAgIGNhc2UgU3RyaW5nT2JqZWN0VXNlOgorICAgICAgICBjYXNlIFN0cmluZ09y
U3RyaW5nT2JqZWN0VXNlOgorICAgICAgICBjYXNlIE5vdENlbGxVc2U6CisgICAgICAgIGNhc2Ug
T3RoZXJVc2U6CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBLbm93bkludDMyVXNlOgorICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShlZGdlKS5t
X3R5cGUgJiB+U3BlY0ludDMyKQorICAgICAgICAgICAgICAgIG1fcmVzdWx0ID0gZmFsc2U7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBLbm93bk51bWJl
clVzZToKKyAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgflNw
ZWNOdW1iZXIpCisgICAgICAgICAgICAgICAgbV9yZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEtub3duQ2VsbFVzZToKKyAgICAg
ICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgflNwZWNDZWxsKQorICAg
ICAgICAgICAgICAgIG1fcmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBLbm93blN0cmluZ1VzZToKKyAgICAgICAgICAgIGlmICht
X3N0YXRlLmZvck5vZGUoZWRnZSkubV90eXBlICYgflNwZWNTdHJpbmcpCisgICAgICAgICAgICAg
ICAgbV9yZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIExhc3RVc2VLaW5kOgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIGJvb2wgcmVzdWx0KCkg
Y29uc3QgeyByZXR1cm4gbV9yZXN1bHQ7IH0KK3ByaXZhdGU6CisgICAgQWJzdHJhY3RTdGF0ZVR5
cGUmIG1fc3RhdGU7CisgICAgYm9vbCBtX3Jlc3VsdDsKK307CisKKy8vIERldGVybWluZXMgaWYg
aXQncyBzYWZlIHRvIGV4ZWN1dGUgYSBub2RlIHdpdGhpbiB0aGUgZ2l2ZW4gYWJzdHJhY3Qgc3Rh
dGUuIFRoaXMgbWF5CisvLyByZXR1cm4gZmFsc2UgY29uc2VydmF0aXZlbHkuIElmIGl0IHJldHVy
bnMgdHJ1ZSwgdGhlbiB5b3UgY2FuIGhvaXN0IHRoZSBnaXZlbiBub2RlCisvLyB1cCB0byB0aGUg
Z2l2ZW4gcG9pbnQgYW5kIGV4cGVjdCB0aGF0IGl0IHdpbGwgbm90IGNyYXNoLiBUaGlzIGRvZXNu
J3QgZ3VhcmFudGVlIHRoYXQKKy8vIHRoZSBub2RlIHdpbGwgcHJvZHVjZSB0aGUgcmVzdWx0IHlv
dSB3YW50ZWQgb3RoZXIgdGhhbiBub3QgY3Jhc2hpbmcuCit0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0
cmFjdFN0YXRlVHlwZT4KK2Jvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3Rh
dGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKK3sKKyAgICBTYWZlVG9FeGVjdXRlRWRnZTxB
YnN0cmFjdFN0YXRlVHlwZT4gc2FmZVRvRXhlY3V0ZUVkZ2Uoc3RhdGUpOworICAgIERGR19OT0RF
X0RPX1RPX0NISUxEUkVOKGdyYXBoLCBub2RlLCBzYWZlVG9FeGVjdXRlRWRnZSk7CisgICAgaWYg
KCFzYWZlVG9FeGVjdXRlRWRnZS5yZXN1bHQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgY2FzZSBKU0NvbnN0YW50OgorICAgIGNhc2Ug
V2Vha0pTQ29uc3RhbnQ6CisgICAgY2FzZSBJZGVudGl0eToKKyAgICBjYXNlIFRvVGhpczoKKyAg
ICBjYXNlIENyZWF0ZVRoaXM6CisgICAgY2FzZSBHZXRDYWxsZWU6CisgICAgY2FzZSBTZXRDYWxs
ZWU6CisgICAgY2FzZSBHZXRMb2NhbDoKKyAgICBjYXNlIFNldExvY2FsOgorICAgIGNhc2UgTW92
SGludEFuZENoZWNrOgorICAgIGNhc2UgTW92SGludDoKKyAgICBjYXNlIFpvbWJpZUhpbnQ6Cisg
ICAgY2FzZSBHZXRBcmd1bWVudDoKKyAgICBjYXNlIFBoYW50b206CisgICAgY2FzZSBVcHNpbG9u
OgorICAgIGNhc2UgUGhpOgorICAgIGNhc2UgRmx1c2g6CisgICAgY2FzZSBQaGFudG9tTG9jYWw6
CisgICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOgorICAgIGNhc2UgU2V0QXJndW1lbnQ6CisgICAg
Y2FzZSBJbmxpbmVTdGFydDoKKyAgICBjYXNlIEJpdEFuZDoKKyAgICBjYXNlIEJpdE9yOgorICAg
IGNhc2UgQml0WG9yOgorICAgIGNhc2UgQml0TFNoaWZ0OgorICAgIGNhc2UgQml0UlNoaWZ0Ogor
ICAgIGNhc2UgQml0VVJTaGlmdDoKKyAgICBjYXNlIFZhbHVlVG9JbnQzMjoKKyAgICBjYXNlIFVJ
bnQzMlRvTnVtYmVyOgorICAgIGNhc2UgSW50MzJUb0RvdWJsZToKKyAgICBjYXNlIEZvcndhcmRJ
bnQzMlRvRG91YmxlOgorICAgIGNhc2UgRG91YmxlQXNJbnQzMjoKKyAgICBjYXNlIEFyaXRoQWRk
OgorICAgIGNhc2UgQXJpdGhTdWI6CisgICAgY2FzZSBBcml0aE5lZ2F0ZToKKyAgICBjYXNlIEFy
aXRoTXVsOgorICAgIGNhc2UgQXJpdGhEaXY6CisgICAgY2FzZSBBcml0aE1vZDoKKyAgICBjYXNl
IEFyaXRoQWJzOgorICAgIGNhc2UgQXJpdGhNaW46CisgICAgY2FzZSBBcml0aE1heDoKKyAgICBj
YXNlIEFyaXRoU3FydDoKKyAgICBjYXNlIFZhbHVlQWRkOgorICAgIGNhc2UgR2V0QnlJZDoKKyAg
ICBjYXNlIEdldEJ5SWRGbHVzaDoKKyAgICBjYXNlIFB1dEJ5SWQ6CisgICAgY2FzZSBQdXRCeUlk
RGlyZWN0OgorICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CisgICAgY2FzZSBDaGVja0V4ZWN1dGFi
bGU6CisgICAgY2FzZSBGb3J3YXJkQ2hlY2tTdHJ1Y3R1cmU6CisgICAgY2FzZSBHZXRCdXR0ZXJm
bHk6CisgICAgY2FzZSBDaGVja0FycmF5OgorICAgIGNhc2UgRm9yd2FyZENoZWNrQXJyYXk6Cisg
ICAgY2FzZSBBcnJheWlmeToKKyAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CisgICAgY2Fz
ZSBHZXRTY29wZToKKyAgICBjYXNlIEdldE15U2NvcGU6CisgICAgY2FzZSBTZXRNeVNjb3BlOgor
ICAgIGNhc2UgU2tpcFRvcFNjb3BlOgorICAgIGNhc2UgU2tpcFNjb3BlOgorICAgIGNhc2UgR2V0
Q2xvc3VyZVJlZ2lzdGVyczoKKyAgICBjYXNlIEdldENsb3N1cmVWYXI6CisgICAgY2FzZSBQdXRD
bG9zdXJlVmFyOgorICAgIGNhc2UgR2V0R2xvYmFsVmFyOgorICAgIGNhc2UgUHV0R2xvYmFsVmFy
OgorICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKKyAgICBjYXNlIFZhckluamVjdGlvbldh
dGNocG9pbnQ6CisgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgorICAgIGNhc2UgQWxsb2NhdGlvblBy
b2ZpbGVXYXRjaHBvaW50OgorICAgIGNhc2UgUmVnRXhwRXhlYzoKKyAgICBjYXNlIFJlZ0V4cFRl
c3Q6CisgICAgY2FzZSBDb21wYXJlTGVzczoKKyAgICBjYXNlIENvbXBhcmVMZXNzRXE6CisgICAg
Y2FzZSBDb21wYXJlR3JlYXRlcjoKKyAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CisgICAgY2Fz
ZSBDb21wYXJlRXE6CisgICAgY2FzZSBDb21wYXJlRXFDb25zdGFudDoKKyAgICBjYXNlIENvbXBh
cmVTdHJpY3RFcToKKyAgICBjYXNlIENvbXBhcmVTdHJpY3RFcUNvbnN0YW50OgorICAgIGNhc2Ug
Q2FsbDoKKyAgICBjYXNlIENvbnN0cnVjdDoKKyAgICBjYXNlIE5ld09iamVjdDoKKyAgICBjYXNl
IE5ld0FycmF5OgorICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKKyAgICBjYXNlIE5ld0FycmF5
QnVmZmVyOgorICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgQnJlYWtwb2ludDoKKyAgICBj
YXNlIENoZWNrSGFzSW5zdGFuY2U6CisgICAgY2FzZSBJbnN0YW5jZU9mOgorICAgIGNhc2UgSXNV
bmRlZmluZWQ6CisgICAgY2FzZSBJc0Jvb2xlYW46CisgICAgY2FzZSBJc051bWJlcjoKKyAgICBj
YXNlIElzU3RyaW5nOgorICAgIGNhc2UgSXNPYmplY3Q6CisgICAgY2FzZSBJc0Z1bmN0aW9uOgor
ICAgIGNhc2UgVHlwZU9mOgorICAgIGNhc2UgTG9naWNhbE5vdDoKKyAgICBjYXNlIFRvUHJpbWl0
aXZlOgorICAgIGNhc2UgVG9TdHJpbmc6CisgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CisgICAg
Y2FzZSBNYWtlUm9wZToKKyAgICBjYXNlIEluOgorICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoK
KyAgICBjYXNlIFRlYXJPZmZBY3RpdmF0aW9uOgorICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzOgor
ICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoKKyAgICBjYXNlIFRlYXJPZmZBcmd1bWVudHM6Cisg
ICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoKKyAgICBjYXNlIEdldE15QXJndW1lbnRCeVZh
bDoKKyAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoU2FmZToKKyAgICBjYXNlIEdldE15QXJn
dW1lbnRCeVZhbFNhZmU6CisgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAg
Y2FzZSBOZXdGdW5jdGlvbk5vQ2hlY2s6CisgICAgY2FzZSBOZXdGdW5jdGlvbjoKKyAgICBjYXNl
IE5ld0Z1bmN0aW9uRXhwcmVzc2lvbjoKKyAgICBjYXNlIEp1bXA6CisgICAgY2FzZSBCcmFuY2g6
CisgICAgY2FzZSBTd2l0Y2g6CisgICAgY2FzZSBSZXR1cm46CisgICAgY2FzZSBUaHJvdzoKKyAg
ICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6CisgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKKyAg
ICBjYXNlIEZvcmNlT1NSRXhpdDoKKyAgICBjYXNlIEZvcndhcmRGb3JjZU9TUkV4aXQ6CisgICAg
Y2FzZSBDaGVja1dhdGNoZG9nVGltZXI6CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAK
KyAgICBjYXNlIEdldEJ5VmFsOgorICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToK
KyAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgIGNhc2UgQXJyYXlQdXNoOgorICAgIGNhc2Ug
QXJyYXlQb3A6CisgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CisgICAgY2FzZSBTdHJpbmdDaGFyQ29k
ZUF0OgorICAgICAgICByZXR1cm4gbm9kZS0+YXJyYXlNb2RlKCkuYWxyZWFkeUNoZWNrZWQoZ3Jh
cGgsIG5vZGUsIHN0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKTsKKyAgICAgICAgCisgICAg
Y2FzZSBQdXRCeVZhbDoKKyAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CisgICAgICAgIHJldHVybiBu
b2RlLT5hcnJheU1vZGUoKS5tb2RlRm9yUHV0KCkuYWxyZWFkeUNoZWNrZWQoCisgICAgICAgICAg
ICBncmFwaCwgbm9kZSwgc3RhdGUuZm9yTm9kZShncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSkp
OworCisgICAgY2FzZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDoKKyAgICBjYXNlIEZv
cndhcmRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDoKKyAgICAgICAgcmV0dXJuIHN0YXRl
LmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuaXNTdWJz
ZXRPZigKKyAgICAgICAgICAgIFN0cnVjdHVyZVNldChub2RlLT5zdHJ1Y3R1cmUoKSkpOworICAg
ICAgICAKKyAgICBjYXNlIFB1dFN0cnVjdHVyZToKKyAgICBjYXNlIFBoYW50b21QdXRTdHJ1Y3R1
cmU6CisgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKKyAgICBjYXNlIFJlYWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2U6CisgICAgICAgIHJldHVybiBzdGF0ZS5mb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5pc1N1YnNldE9mKAorICAgICAgICAgICAg
U3RydWN0dXJlU2V0KG5vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkucHJldmlvdXNTdHJ1
Y3R1cmUpKTsKKyAgICAgICAgCisgICAgY2FzZSBHZXRCeU9mZnNldDoKKyAgICBjYXNlIFB1dEJ5
T2Zmc2V0OgorICAgICAgICByZXR1cm4gc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV9j
dXJyZW50S25vd25TdHJ1Y3R1cmUuaXNWYWxpZE9mZnNldCgKKyAgICAgICAgICAgIGdyYXBoLm1f
c3RvcmFnZUFjY2Vzc0RhdGFbbm9kZS0+c3RvcmFnZUFjY2Vzc0RhdGFJbmRleCgpXS5vZmZzZXQp
OworICAgICAgICAKKyAgICBjYXNlIExhc3ROb2RlVHlwZToKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisK
KyNlbmRpZiAvLyBERkdTYWZlVG9FeGVjdXRlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgJKHJldmlzaW9u
IDE1Mjk0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNiArMjgyLDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShtX3N0cnVjdHVyZSk7CiAgICAg
fQogICAgIAorICAgIGJvb2wgaXNWYWxpZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCisg
ICAgeworICAgICAgICBpZiAoaXNUb3AoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgaWYgKGlzQ2xlYXIoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBy
ZXR1cm4gbV9zdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zmc2V0KTsKKyAgICB9CisgICAgCiAg
ICAgYm9vbCBoYXNTaW5nbGV0b24oKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGlzTmVp
dGhlckNsZWFyTm9yVG9wKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oCShyZXZpc2lvbiAxNTI5NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgdihib29sLCB2ZXJib3NlQ2FsbExpbmssIGZhbHNlKSBcCiAgICAgdihib29sLCB2
ZXJib3NlQ29tcGlsYXRpb25RdWV1ZSwgZmFsc2UpIFwKICAgICB2KGJvb2wsIHJlcG9ydENvbXBp
bGVUaW1lcywgZmFsc2UpIFwKKyAgICB2KGJvb2wsIHZlcmJvc2VDRkEsIGZhbHNlKSBcCiAgICAg
XAogICAgIHYoYm9vbCwgZW5hYmxlT1NSRW50cnlJbkxvb3BzLCB0cnVlKSBcCiAgICAgXAo=
</data>
<flag name="review"
          id="228966"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>