<?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>118152</bug_id>
          
          <creation_ts>2013-06-27 15:17:57 -0700</creation_ts>
          <short_desc>fourthTier: DFG should know how to find natural loops</short_desc>
          <delta_ts>2013-06-27 17:05:13 -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>
          
          <blocked>118151</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>904361</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-27 15:17:57 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904373</commentid>
    <comment_count>1</comment_count>
      <attachid>205642</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-27 16:17:14 -0700</bug_when>
    <thetext>Created attachment 205642
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904375</commentid>
    <comment_count>2</comment_count>
      <attachid>205643</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-27 16:19:41 -0700</bug_when>
    <thetext>Created attachment 205643
the patch

Conditionalized some debug code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904386</commentid>
    <comment_count>3</comment_count>
      <attachid>205643</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-06-27 16:45:43 -0700</bug_when>
    <thetext>Comment on attachment 205643
the patch

r=me http://www.quickmeme.com/meme/3v03f7/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904388</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-27 17:01:58 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 205643 [details])
&gt; r=me http://www.quickmeme.com/meme/3v03f7/

Truth.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904390</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-27 17:05:13 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/152139</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205642</attachid>
            <date>2013-06-27 16:17:14 -0700</date>
            <delta_ts>2013-06-27 16:19:41 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>26121</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyMTM2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBA
CisyMDEzLTA2LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogREZHIHNob3VsZCBrbm93IGhvdyB0byBmaW5kIG5hdHVyYWwgbG9vcHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODE1MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhl
cmUgYXJlIGEgYnVuY2ggb2YgdGhpbmdzIHdlIGNhbiBkbyB3aGVuIHdlIGtub3cgd2hlcmUgdGhl
IGxvb3BzIGFyZS4KKyAgICAgICAgUHJldmlvdXNseSB3ZSBkaWRuJ3QuIFdpdGggdGhpcyBwYXRj
aCwgd2UgZG8uCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNsYXNzaWMg
ZG9taW5hdG9yIGJhc2VkIG5hdHVyYWwgbG9vcCBmaW5kZXIuCisgICAgICAgIAorICAgICAgICBU
aGUgb25seSBjbGllbnQgb2YgdGhpcyByaWdodCBub3cgaXMgdGhlIERGRzo6RGlzYXNzZW1ibGVy
LiBJdCBwcmludHMgb3V0CisgICAgICAgIGEgc3VtbWFyeSBvZiB0aGUgYW5hbHlzaXMgZm9yIGVh
Y2ggYmxvY2suCisgICAgICAgIAorICAgICAgICBUaGlzIHdpbGwgYmVjb21lIG1vcmUgaW1wb3J0
YW50IHdoZW4gSSBkbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE4MTUxLCB3aGljaCBkZWZpbml0ZWx5IHJlcXVpcmVzCisgICAgICAgIHRoaXMga2lu
ZCBvZiBhbmFseXNpcywgYXQgbGVhc3QgaWYgd2Ugd2FudCB0byBkbyB0aGUgb3B0aW1pemF0aW9u
IG92ZXIKKyAgICAgICAgREZHIElSIChhbmQgSSdtIHByZXR0eSBzdXJlIHdlIGRvKS4KKworICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZGZnL0RGR0FuYWx5c2lzLmg6IEFkZGVkLgorICAgICAgICAoREZHKToKKyAgICAgICAgKEFu
YWx5c2lzKToKKyAgICAgICAgKEpTQzo6REZHOjpBbmFseXNpczo6QW5hbHlzaXMpOgorICAgICAg
ICAoSlNDOjpERkc6OkFuYWx5c2lzOjppbnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpB
bmFseXNpczo6Y29tcHV0ZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpBbmFseXNp
czo6aXNWYWxpZCk6CisgICAgICAgICogZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6OnJ1bik6CisgICAg
ICAgICogZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RGlzYXNz
ZW1ibGVyOjpjcmVhdGVEdW1wTGlzdCk6CisgICAgICAgICogZGZnL0RGR0RvbWluYXRvcnMuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkRvbWluYXRvcnM6OkRvbWluYXRvcnMpOgorICAgICAgICAo
SlNDOjpERkc6OkRvbWluYXRvcnM6OmNvbXB1dGUpOgorICAgICAgICAqIGRmZy9ERkdEb21pbmF0
b3JzLmg6CisgICAgICAgIChEb21pbmF0b3JzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wQmxvY2tIZWFkZXIpOgorICAgICAgICAo
SlNDOjpERkc6OkdyYXBoOjppbnZhbGlkYXRlQ0ZHKToKKyAgICAgICAgKERGRyk6CisgICAgICAg
ICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChHcmFwaCk6CisgICAgICAgICogZGZnL0RGR05h
dHVyYWxMb29wcy5jcHA6IEFkZGVkLgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZH
OjpOYXR1cmFsTG9vcDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6TmF0dXJhbExvb3BzOjpO
YXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVyYWxMb29wczo6fk5hdHVyYWxM
b29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6TmF0dXJhbExvb3BzOjpjb21wdXRlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOYXR1cmFsTG9vcHM6Omxvb3BzT2YpOgorICAgICAgICAoSlNDOjpERkc6
Ok5hdHVyYWxMb29wczo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR05hdHVyYWxMb29wcy5oOiBB
ZGRlZC4KKyAgICAgICAgKERGRyk6CisgICAgICAgIChOYXR1cmFsTG9vcCk6CisgICAgICAgIChK
U0M6OkRGRzo6TmF0dXJhbExvb3A6Ok5hdHVyYWxMb29wKToKKyAgICAgICAgKEpTQzo6REZHOjpO
YXR1cmFsTG9vcDo6YWRkQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVyYWxMb29wOjpo
ZWFkZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVyYWxMb29wOjpzaXplKToKKyAgICAgICAg
KEpTQzo6REZHOjpOYXR1cmFsTG9vcDo6YXQpOgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVyYWxM
b29wOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpTQzo6REZHOjpOYXR1cmFsTG9vcDo6Y29udGFp
bnMpOgorICAgICAgICAoTmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpTQzo6REZHOjpOYXR1cmFs
TG9vcHM6Om51bUxvb3BzKToKKyAgICAgICAgKEpTQzo6REZHOjpOYXR1cmFsTG9vcHM6Omxvb3Ap
OgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVyYWxMb29wczo6aGVhZGVyT2YpOgorCiAyMDEzLTA2
LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgZm91cnRoVGll
cjogSlNDJ3MgZGlzYXNzZW1ibHkgaW5mcmFzdHJ1Y3R1cmUgc2hvdWxkIGJlIGFibGUgdG8gZGlz
YXNzZW1ibGUgdGhlIGNvZGUgdGhhdCBMTFZNIGdlbmVyYXRlcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1MjEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzAsNiArMTcwLDkgQEAKIAkJMEY0NkU2QjkxNzZGODlEQjAwRTFGNzU1IC8qIEZUTFN3
aXRjaENhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDZFNkI3MTc2Rjg5RDkwMEUxRjc1NSAvKiBGVExTd2l0Y2hDYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NkU2QzUxNzZGOEE1RTAw
RTFGNzU1IC8qIERGR0xhenlKU1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDZFNkMyMTc2RjhBNUIwMEUxRjc1NSAvKiBERkdMYXp5SlNW
YWx1ZS5jcHAgKi87IH07CiAJCTBGNDZFNkM2MTc2RjhBNjAwMEUxRjc1NSAvKiBERkdMYXp5SlNW
YWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
NkU2QzMxNzZGOEE1QjAwRTFGNzU1IC8qIERGR0xhenlKU1ZhbHVlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NkU2RUYxNzdDRTk1QTAwRTFG
NzU1IC8qIERGR0FuYWx5c2lzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ2RTZFRTE3N0NFOTVBMDBFMUY3NTUgLyogREZHQW5hbHlzaXMuaCAqLzsg
fTsKKwkJMEY0NkU2RjMxNzdDRjBEMjAwRTFGNzU1IC8qIERGR05hdHVyYWxMb29wcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2RTZGMTE3N0NG
MEQyMDBFMUY3NTUgLyogREZHTmF0dXJhbExvb3BzLmNwcCAqLzsgfTsKKwkJMEY0NkU2RjQxNzdD
RjBEMjAwRTFGNzU1IC8qIERGR05hdHVyYWxMb29wcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NkU2RjIxNzdDRjBEMjAwRTFGNzU1IC8qIERGR05h
dHVyYWxMb29wcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGNDZFNkQ5MTc3Q0I5MDAwMEUxRjc1NSAvKiBMTFZNRGlzYXNzZW1ibGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDZFNkQ3MTc3
Q0I4RkMwMEUxRjc1NSAvKiBMTFZNRGlzYXNzZW1ibGVyLmNwcCAqLzsgfTsKIAkJMEY0NkU2RTMx
NzdDQzM2NjAwRTFGNzU1IC8qIExMVk1EaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDZFNkUwMTc3Q0MzNjYwMEUxRjc1NSAvKiBM
TFZNRGlzYXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY0NkU2RTQxNzdDQzM2NjAwRTFGNzU1IC8qIFVEaXM4NkRpc2Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NkU2
RTExNzdDQzM2NjAwRTFGNzU1IC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTgzLDYgKzExODYsOSBAQAog
CQkwRjQ2RTZCNzE3NkY4OUQ5MDBFMUY3NTUgLyogRlRMU3dpdGNoQ2FzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExTd2l0Y2hDYXNlLmg7IHBhdGggPSBmdGwvRlRMU3dp
dGNoQ2FzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2RTZDMjE3NkY4QTVC
MDBFMUY3NTUgLyogREZHTGF6eUpTVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHTGF6eUpTVmFsdWUuY3BwOyBwYXRoID0gZGZnL0RGR0xhenlKU1ZhbHVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NkU2QzMxNzZGOEE1QjAwRTFG
NzU1IC8qIERGR0xhenlKU1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0xhenlKU1ZhbHVlLmg7IHBhdGggPSBkZmcvREZHTGF6eUpTVmFsdWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NkU2RUUxNzdDRTk1QTAwRTFGNzU1IC8qIERGR0FuYWx5
c2lzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FuYWx5c2lzLmg7IHBh
dGggPSBkZmcvREZHQW5hbHlzaXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0
NkU2RjExNzdDRjBEMjAwRTFGNzU1IC8qIERGR05hdHVyYWxMb29wcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOYXR1cmFsTG9vcHMuY3BwOyBwYXRoID0gZGZn
L0RGR05hdHVyYWxMb29wcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDZF
NkYyMTc3Q0YwRDIwMEUxRjc1NSAvKiBERkdOYXR1cmFsTG9vcHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHTmF0dXJhbExvb3BzLmg7IHBhdGggPSBkZmcvREZHTmF0dXJh
bExvb3BzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDZFNkQ3MTc3Q0I4RkMw
MEUxRjc1NSAvKiBMTFZNRGlzYXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IExMVk1EaXNhc3NlbWJsZXIuY3BwOyBwYXRoID0gZGlzYXNzZW1ibGVyL0xM
Vk1EaXNhc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2RTZF
MDE3N0NDMzY2MDBFMUY3NTUgLyogTExWTURpc2Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMTFZNRGlzYXNzZW1ibGVyLmg7IHBhdGggPSBkaXNhc3NlbWJsZXIv
TExWTURpc2Fzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2RTZF
MTE3N0NDMzY2MDBFMUY3NTUgLyogVURpczg2RGlzYXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFVEaXM4NkRpc2Fzc2VtYmxlci5oOyBwYXRoID0gZGlzYXNzZW1i
bGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
Mjk0NSw2ICsyOTUxLDcgQEAKIAkJCQkwRjYyMDE2RjE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJz
dHJhY3RWYWx1ZS5oICovLAogCQkJCTBGNjZFMTY4MTRERjNGMTMwMEI3QjJFNCAvKiBERkdBZGph
Y2VuY3lMaXN0LmggKi8sCiAJCQkJMEZCNEI1MTkxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR0FsbG9j
YXRvci5oICovLAorCQkJCTBGNDZFNkVFMTc3Q0U5NUEwMEUxRjc1NSAvKiBERkdBbmFseXNpcy5o
ICovLAogCQkJCTBGMUUzQTQzMTUzNENCQUQwMDBGOTQ1NiAvKiBERkdBcmd1bWVudFBvc2l0aW9u
LmggKi8sCiAJCQkJMEYxNjAxNUExNTYxOThCRjAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBs
aWZpY2F0aW9uUGhhc2UuY3BwICovLAogCQkJCTBGMTYwMTVCMTU2MTk4QkYwMEMyNTg3QyAvKiBE
RkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmggKi8sCkBAIC0zMDI0LDYgKzMwMzEsOCBA
QAogCQkJCTBGQjRCNTEwMTZCM0E5NjQwMDNGNjk2QiAvKiBERkdNaW5pZmllZElELmggKi8sCiAJ
CQkJMEYyQkRDNEMxNTIyODE4MzAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5jcHAgKi8sCiAJ
CQkJMEYyQkRDM0UxNTIyODAxNzAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5oICovLAorCQkJ
CTBGNDZFNkYxMTc3Q0YwRDIwMEUxRjc1NSAvKiBERkdOYXR1cmFsTG9vcHMuY3BwICovLAorCQkJ
CTBGNDZFNkYyMTc3Q0YwRDIwMEUxRjc1NSAvKiBERkdOYXR1cmFsTG9vcHMuaCAqLywKIAkJCQkw
RkI0QjUxRTE2QjYyNzcyMDAzRjY5NkIgLyogREZHTm9kZS5jcHAgKi8sCiAJCQkJODZFQ0EzRTkx
MzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCAqLywKIAkJCQkwRkI0QjUxRjE2QjYyNzcyMDAz
RjY5NkIgLyogREZHTm9kZUFsbG9jYXRvci5oICovLApAQCAtMzgxOCw2ICszODI3LDggQEAKIAkJ
CQkwRjVFRTRFOTE3NTQyNEFGMDA5QUU0MkQgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjQ2RTZDNjE3NkY4QTYwMDBFMUY3NTUgLyogREZHTGF6eUpTVmFsdWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDZFNkI5MTc2Rjg5REIwMEUxRjc1NSAvKiBGVExTd2l0
Y2hDYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2RTZFRjE3N0NFOTVBMDBFMUY3NTUgLyog
REZHQW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDZFNkY0MTc3Q0YwRDIwMEUxRjc1
NSAvKiBERkdOYXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDZFNkUzMTc3Q0Mz
NjYwMEUxRjc1NSAvKiBMTFZNRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2
RTZFNDE3N0NDMzY2MDBFMUY3NTUgLyogVURpczg2RGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CkBAIC00NTExLDYgKzQ1MjIsNyBAQAogCQkJCTBGNzE0Q0E0MTZFQTkyRjAwMEYz
RUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGNUVFNEU4MTc1NDI0QUYwMDlBRTQyRCAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY0NkU2QzUxNzZGOEE1RTAwRTFGNzU1IC8qIERGR0xhenlKU1Zh
bHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDZFNkYzMTc3Q0YwRDIwMEUxRjc1NSAvKiBE
RkdOYXR1cmFsTG9vcHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NkU2RDkxNzdDQjkwMDAw
RTFGNzU1IC8qIExMVk1EaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NkU2
RTUxNzdDQzM2NjAwRTFGNzU1IC8qIFg4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FuYWx5c2lzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBbmFseXNpcy5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBbmFseXNpcy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHQW5hbHlzaXNfaAorI2RlZmluZSBERkdBbmFseXNp
c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShERkdfSklUKQor
CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2NsYXNzIEdyYXBoOworCisvLyBV
c2UgdGhpcyBhcyBhIG1peGluIGZvciBERkcgYW5hbHlzZXMuIFRoZSBhbmFseXNpcyBpdHNlbGYg
aW1wbGVtZW50cyBhIHB1YmxpYworLy8gY29tcHV0ZShHcmFwaCYpIG1ldGhvZC4gQ2xpZW50cyBj
YWxsIGNvbXB1dGVJZk5lY2Vzc2FyeSgpIHdoZW4gdGhleSB3YW50CisvLyByZXN1bHRzLgorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgQW5hbHlzaXMgeworcHVibGljOgorICAgIEFuYWx5
c2lzKCkKKyAgICAgICAgOiBtX3ZhbGlkKGZhbHNlKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
dm9pZCBpbnZhbGlkYXRlKCkKKyAgICB7CisgICAgICAgIG1fdmFsaWQgPSBmYWxzZTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBjb21wdXRlSWZOZWNlc3NhcnkoR3JhcGgmIGdyYXBoKQorICAgIHsK
KyAgICAgICAgaWYgKG1fdmFsaWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXRp
Y19jYXN0PFQqPih0aGlzKS0+Y29tcHV0ZShncmFwaCk7CisgICAgICAgIG1fdmFsaWQgPSB0cnVl
OworICAgIH0KKyAgICAKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3ZhbGlk
OyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3ZhbGlkOworfTsKKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdB
bmFseXNpc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxp
ZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTUyMTM2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgwLDYgKzI4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAv
LyBzdWNjZXNzb3JzJyBQaGkgZnVuY3Rpb25zIHRvIHJlbW92ZSBhbnkgcmVmZXJlbmNlcyBmcm9t
IHRoZW0gaW50byB0aGUKICAgICAgICAgICAgICAgICAvLyByZW1vdmVkIGJsb2NrLgogICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1fZ3JhcGguaW52YWxpZGF0ZUNGRygpOwogICAg
ICAgICAgICAgICAgIG1fZ3JhcGgucmVzZXRSZWFjaGFiaWxpdHkoKTsKIAogICAgICAgICAgICAg
ICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgu
bV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrSW5kZXgpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDE1MjEzNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTAsNiArOTAsNyBAQCBWZWN0b3I8RGlzYXNzZW1ibGVyOjpEdW1wZWRPcD4gRGlzYXNz
ZW1iCiAgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91c09yaWdpbik7CiAgICAgCiAgICAg
bV9ncmFwaC5tX2RvbWluYXRvcnMuY29tcHV0ZUlmTmVjZXNzYXJ5KG1fZ3JhcGgpOworICAgIG1f
Z3JhcGgubV9uYXR1cmFsTG9vcHMuY29tcHV0ZUlmTmVjZXNzYXJ5KG1fZ3JhcGgpOwogICAgIAog
ICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9ICIgICAgIjsKICAgICBjb25zdCBjaGFyKiBkaXNhc3Nl
bWJseVByZWZpeCA9ICIgICAgICAgICI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvbWluYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9taW5hdG9ycy5jcHAJKHJldmlzaW9uIDE1MjEzNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDYgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogRG9taW5hdG9yczo6RG9t
aW5hdG9ycygpCi0gICAgOiBtX3ZhbGlkKGZhbHNlKQogewogfQogCkBAIC04NSw4ICs4NCw2IEBA
IHZvaWQgRG9taW5hdG9yczo6Y29tcHV0ZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG51bUJsb2NrczsgaS0tID4gMTspCiAgICAgICAgICAgICBjaGFuZ2VkIHw9IGl0
ZXJhdGVGb3JCbG9jayhncmFwaCwgaSk7CiAgICAgfSB3aGlsZSAoY2hhbmdlZCk7Ci0gICAgCi0g
ICAgbV92YWxpZCA9IHRydWU7CiB9CiAKIGJvb2wgRG9taW5hdG9yczo6aXRlcmF0ZUZvckJsb2Nr
KEdyYXBoJiBncmFwaCwgQmxvY2tJbmRleCBpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb21pbmF0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb21pbmF0b3JzLmgJKHJldmlzaW9uIDE1MjEzNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR0FuYWx5c2lzLmgiCiAj
aW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KIApA
QCAtMzcsMjQgKzM4LDEyIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogY2xh
c3MgR3JhcGg7CiAKLWNsYXNzIERvbWluYXRvcnMgeworY2xhc3MgRG9taW5hdG9ycyA6IHB1Ymxp
YyBBbmFseXNpczxEb21pbmF0b3JzPiB7CiBwdWJsaWM6CiAgICAgRG9taW5hdG9ycygpOwogICAg
IH5Eb21pbmF0b3JzKCk7CiAgICAgCiAgICAgdm9pZCBjb21wdXRlKEdyYXBoJiBncmFwaCk7Ci0g
ICAgdm9pZCBpbnZhbGlkYXRlKCkKLSAgICB7Ci0gICAgICAgIG1fdmFsaWQgPSBmYWxzZTsKLSAg
ICB9Ci0gICAgdm9pZCBjb21wdXRlSWZOZWNlc3NhcnkoR3JhcGgmIGdyYXBoKQotICAgIHsKLSAg
ICAgICAgaWYgKG1fdmFsaWQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNvbXB1dGUo
Z3JhcGgpOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBt
X3ZhbGlkOyB9CiAgICAgCiAgICAgYm9vbCBkb21pbmF0ZXMoQmxvY2tJbmRleCBmcm9tLCBCbG9j
a0luZGV4IHRvKSBjb25zdAogICAgIHsKQEAgLTY3LDcgKzU2LDYgQEAgcHJpdmF0ZToKICAgICAK
ICAgICBWZWN0b3I8RmFzdEJpdFZlY3Rvcj4gbV9yZXN1bHRzOwogICAgIEZhc3RCaXRWZWN0b3Ig
bV9zY3JhdGNoOwotICAgIGJvb2wgbV92YWxpZDsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lv
biAxNTIxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjk0LDYgKzI5NCwyNyBAQCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFk
ZXIoUHJpbnRTdHJlYW0mCiAgICAgICAgIH0KICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAg
IH0KKyAgICBpZiAobV9uYXR1cmFsTG9vcHMuaXNWYWxpZCgpKSB7CisgICAgICAgIGlmIChjb25z
dCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fbmF0dXJhbExvb3BzLmhlYWRlck9mKGJsb2NrSW5kZXgp
KSB7CisgICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBMb29wIGhlYWRlciwgY29udGFp
bnM6Iik7CisgICAgICAgICAgICBWZWN0b3I8QmxvY2tJbmRleD4gc29ydGVkQmxvY2tMaXN0Owor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvb3AtPnNpemUoKTsgKytpKQor
ICAgICAgICAgICAgICAgIHNvcnRlZEJsb2NrTGlzdC5hcHBlbmQobG9vcC0+YXQoaSkpOworICAg
ICAgICAgICAgc3RkOjpzb3J0KHNvcnRlZEJsb2NrTGlzdC5iZWdpbigpLCBzb3J0ZWRCbG9ja0xp
c3QuZW5kKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvcnRlZEJs
b2NrTGlzdC5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAjIiwgc29y
dGVkQmxvY2tMaXN0W2ldKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgVmVjdG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gY29udGFpbmlu
Z0xvb3BzID0KKyAgICAgICAgICAgIG1fbmF0dXJhbExvb3BzLmxvb3BzT2YoYmxvY2tJbmRleCk7
CisgICAgICAgIGlmICghY29udGFpbmluZ0xvb3BzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
b3V0LnByaW50KHByZWZpeCwgIiAgQ29udGFpbmluZyBsb29wIGhlYWRlcnM6Iik7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29udGFpbmluZ0xvb3BzLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgICAgIG91dC5wcmludCgiICMiLCBjb250YWluaW5nTG9vcHNbaV0tPmhl
YWRlcigpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgfQorICAgIH0K
ICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQaGkgTm9kZXM6Iik7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBibG9jay0+cGhpcy5zaXplKCk7ICsraSkgewogICAgICAgICBOb2RlKiBwaGlO
b2RlID0gYmxvY2stPnBoaXNbaV07CkBAIC00MjMsNiArNDQ0LDEyIEBAIHZvaWQgR3JhcGg6OnJl
c2V0RXhpdFN0YXRlcygpCiAgICAgfQogfQogCit2b2lkIEdyYXBoOjppbnZhbGlkYXRlQ0ZHKCkK
K3sKKyAgICBtX2RvbWluYXRvcnMuaW52YWxpZGF0ZSgpOworICAgIG1fbmF0dXJhbExvb3BzLmlu
dmFsaWRhdGUoKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE1MjEzNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIKICNpbmNsdWRlICJERkdE
b21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiREZHTG9uZ0xpdmVkU3RhdGUuaCIKKyNpbmNsdWRlICJE
RkdOYXR1cmFsTG9vcHMuaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiREZHTm9k
ZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkRGR1BsYW4uaCIKQEAgLTY3Niw2ICs2NzcsOCBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgdm9pZCBpbnZhbGlkYXRlQ0ZHKCk7
CisgICAgCiAgICAgUHJvZmlsZXI6OkNvbXBpbGF0aW9uKiBjb21waWxhdGlvbigpIHsgcmV0dXJu
IG1fcGxhbi5jb21waWxhdGlvbi5nZXQoKTsgfQogICAgIAogICAgIERlc2lyZWRJZGVudGlmaWVy
cyYgaWRlbnRpZmllcnMoKSB7IHJldHVybiBtX3BsYW4uaWRlbnRpZmllcnM7IH0KQEAgLTcwMyw2
ICs3MDYsNyBAQCBwdWJsaWM6CiAgICAgSGFzaFNldDxFeGVjdXRhYmxlQmFzZSo+IG1fZXhlY3V0
YWJsZXNXaG9zZUFyZ3VtZW50c0VzY2FwZWQ7CiAgICAgQml0VmVjdG9yIG1fcHJlc2VydmVkVmFy
czsKICAgICBEb21pbmF0b3JzIG1fZG9taW5hdG9yczsKKyAgICBOYXR1cmFsTG9vcHMgbV9uYXR1
cmFsTG9vcHM7CiAgICAgdW5zaWduZWQgbV9sb2NhbFZhcnM7CiAgICAgdW5zaWduZWQgbV9wYXJh
bWV0ZXJTbG90czsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0
dXJhbExvb3BzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05hdHVyYWxMb29wcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05hdHVyYWxMb29wcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJERkdOYXR1cmFsTG9vcHMuaCIKKworI2lmIEVOQUJMRShERkdf
SklUKQorCisjaW5jbHVkZSAiREZHR3JhcGguaCIKKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVy
Lmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwordm9pZCBOYXR1cmFsTG9v
cDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludCgiW0hlYWRl
cjogIyIsIGhlYWRlcigpLCAiLCBCb2R5OiIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2JvZHkuc2l6ZSgpOyArK2kpCisgICAgICAgIG91dC5wcmludCgiICMiLCBtX2JvZHlbaV0p
OworICAgIG91dC5wcmludCgiXSIpOworfQorCitOYXR1cmFsTG9vcHM6Ok5hdHVyYWxMb29wcygp
IHsgfQorTmF0dXJhbExvb3BzOjp+TmF0dXJhbExvb3BzKCkgeyB9CisKK3ZvaWQgTmF0dXJhbExv
b3BzOjpjb21wdXRlKEdyYXBoJiBncmFwaCkKK3sKKyAgICAvLyBJbXBsZW1lbnQgdGhlIGNsYXNz
aWMgZG9taW5hdG9yLWJhc2VkIG5hdHVyYWwgbG9vcCBmaW5kZXIuIFRoZSBmaXJzdAorICAgIC8v
IHN0ZXAgaXMgdG8gZmluZCBhbGwgY29udHJvbCBmbG93IGVkZ2VzIEEgLT4gQiB3aGVyZSBCIGRv
bWluYXRlcyBBLgorICAgIC8vIFRoZW4gQiBpcyBhIGxvb3AgaGVhZGVyIGFuZCBBIGlzIGEgYmFj
a3dhcmQgYnJhbmNoaW5nIGJsb2NrLiBXZSB3aWxsCisgICAgLy8gdGhlbiBhY2N1bXVsYXRlLCBm
b3IgZWFjaCBsb29wIGhlYWRlciwgbXVsdGlwbGUgYmFja3dhcmQgYnJhbmNoaW5nCisgICAgLy8g
YmxvY2tzLiBUaGVuIHdlIGJhY2t3YXJkcyBncmFwaCBzZWFyY2ggZnJvbSB0aGUgYmFja3dhcmQg
YnJhbmNoaW5nCisgICAgLy8gYmxvY2tzIHRvIHRoZWlyIGxvb3AgaGVhZGVycywgd2hpY2ggZ2l2
ZXMgdXMgYWxsIG9mIHRoZSBibG9ja3MgaW4gdGhlCisgICAgLy8gbG9vcCBib2R5LgorICAgIAor
ICAgIGdyYXBoLm1fZG9taW5hdG9ycy5jb21wdXRlSWZOZWNlc3NhcnkoZ3JhcGgpOworICAgIAor
ICAgIG1fbG9vcHMucmVzaXplKDApOworICAgIAorICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0lu
ZGV4ID0gZ3JhcGgubV9ibG9ja3Muc2l6ZSgpOyBibG9ja0luZGV4LS07KSB7CisgICAgICAgIEJh
c2ljQmxvY2sqIGJsb2NrID0gZ3JhcGgubV9ibG9ja3NbYmxvY2tJbmRleF0uZ2V0KCk7CisgICAg
ICAgIGlmICghYmxvY2spCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IGdyYXBoLm51bVN1Y2Nlc3NvcnMoYmxvY2spOyBpLS07KSB7Cisg
ICAgICAgICAgICBCbG9ja0luZGV4IHN1Y2Nlc3NvckluZGV4ID0gZ3JhcGguc3VjY2Vzc29yKGJs
b2NrLCBpKTsKKyAgICAgICAgICAgIGlmICghZ3JhcGgubV9kb21pbmF0b3JzLmRvbWluYXRlcyhz
dWNjZXNzb3JJbmRleCwgYmxvY2tJbmRleCkpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGogPSBtX2xvb3BzLnNpemUoKTsgai0tOykgeworICAgICAgICAgICAgICAgIGlmIChtX2xvb3Bz
W2ldLmhlYWRlcigpID09IHN1Y2Nlc3NvckluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIG1f
bG9vcHNbaV0uYWRkQmxvY2soYmxvY2tJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIGZvdW5k
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoZm91bmQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBOYXR1cmFs
TG9vcCBsb29wKHN1Y2Nlc3NvckluZGV4KTsKKyAgICAgICAgICAgIGxvb3AuYWRkQmxvY2soYmxv
Y2tJbmRleCk7CisgICAgICAgICAgICBtX2xvb3BzLmFwcGVuZChsb29wKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICBkYXRhTG9nKCJBZnRlciBib290c3RyYXA6ICIsICp0aGlzLCAiXG4i
KTsKKyAgICAKKyAgICBGYXN0Qml0VmVjdG9yIHNlZW5CbG9ja3M7CisgICAgVmVjdG9yPEJsb2Nr
SW5kZXgsIDQ+IGJsb2NrV29ya2xpc3Q7CisgICAgc2VlbkJsb2Nrcy5yZXNpemUoZ3JhcGgubV9i
bG9ja3Muc2l6ZSgpKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xvb3BzLnNpemUo
KTsgaS0tOykgeworICAgICAgICBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fbG9vcHNbaV07CisgICAg
ICAgIAorICAgICAgICBzZWVuQmxvY2tzLmNsZWFyQWxsKCk7CisgICAgICAgIEFTU0VSVChibG9j
a1dvcmtsaXN0LmlzRW1wdHkoKSk7CisgICAgICAgIAorICAgICAgICBkYXRhTG9nKCJEZWFsaW5n
IHdpdGggbG9vcCAiLCBsb29wLCAiXG4iKTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaiA9IGxvb3Auc2l6ZSgpOyBqLS07KSB7CisgICAgICAgICAgICBzZWVuQmxvY2tzLnNldChs
b29wW2pdKTsKKyAgICAgICAgICAgIGJsb2NrV29ya2xpc3QuYXBwZW5kKGxvb3Bbal0pOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICB3aGlsZSAoIWJsb2NrV29ya2xpc3QuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICBCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBibG9ja1dvcmtsaXN0LnRh
a2VMYXN0KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICBEZWFsaW5n
IHdpdGggIyIsIGJsb2NrSW5kZXgsICJcbiIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAoYmxvY2tJbmRleCA9PSBsb29wLmhlYWRlcigpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgCisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IGdyYXBoLm1f
YmxvY2tzW2Jsb2NrSW5kZXhdLmdldCgpOworICAgICAgICAgICAgQVNTRVJUKGJsb2NrKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gYmxvY2stPm1fcHJlZGVj
ZXNzb3JzLnNpemUoKTsgai0tOykgeworICAgICAgICAgICAgICAgIEJsb2NrSW5kZXggcHJlZGVj
ZXNzb3JJbmRleCA9IGJsb2NrLT5tX3ByZWRlY2Vzc29yc1tqXTsKKyAgICAgICAgICAgICAgICBp
ZiAoc2VlbkJsb2Nrcy5nZXQocHJlZGVjZXNzb3JJbmRleCkpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGxvb3AuYWRkQmxv
Y2socHJlZGVjZXNzb3JJbmRleCk7CisgICAgICAgICAgICAgICAgYmxvY2tXb3JrbGlzdC5hcHBl
bmQocHJlZGVjZXNzb3JJbmRleCk7CisgICAgICAgICAgICAgICAgc2VlbkJsb2Nrcy5zZXQocHJl
ZGVjZXNzb3JJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgZGF0YUxvZygiUmVzdWx0czogIiwgKnRoaXMsICJcbiIpOworfQorCitWZWN0b3I8Y29uc3Qg
TmF0dXJhbExvb3AqPiBOYXR1cmFsTG9vcHM6Omxvb3BzT2YoQmxvY2tJbmRleCBibG9ja0luZGV4
KSBjb25zdAoreworICAgIFZlY3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IHJlc3VsdDsKKyAgICAK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xvb3BzLnNpemUoKTsgaS0tOykgeworICAgICAgICBp
ZiAobV9sb29wc1tpXS5jb250YWlucyhibG9ja0luZGV4KSkKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJm1fbG9vcHNbaV0pOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit2b2lkIE5hdHVyYWxMb29wczo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAg
IG91dC5wcmludCgiTmF0dXJhbExvb3BzOnsiKTsKKyAgICBDb21tYVByaW50ZXIgY29tbWE7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbG9vcHMuc2l6ZSgpOyArK2kpCisgICAgICAg
IG91dC5wcmludChjb21tYSwgbV9sb29wc1tpXSk7CisgICAgb3V0LnByaW50KCJ9Iik7Cit9CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR05hdHVyYWxMb29wc19oCisjZGVmaW5l
IERGR05hdHVyYWxMb29wc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVO
QUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHQW5hbHlzaXMuaCIKKyNpbmNsdWRlICJERkdD
b21tb24uaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBOYXR1
cmFsTG9vcCB7CitwdWJsaWM6CisgICAgTmF0dXJhbExvb3AoKQorICAgICAgICA6IG1faGVhZGVy
KE5vQmxvY2spCisgICAgeworICAgIH0KKyAgICAKKyAgICBOYXR1cmFsTG9vcChCbG9ja0luZGV4
IGhlYWRlcikKKyAgICAgICAgOiBtX2hlYWRlcihoZWFkZXIpCisgICAgeworICAgIH0KKyAgICAK
KyAgICB2b2lkIGFkZEJsb2NrKEJsb2NrSW5kZXggYmxvY2spIHsgbV9ib2R5LmFwcGVuZChibG9j
ayk7IH0KKyAgICAKKyAgICBCbG9ja0luZGV4IGhlYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faGVh
ZGVyOyB9CisgICAgCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm9keS5z
aXplKCk7IH0KKyAgICBCbG9ja0luZGV4IGF0KHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1f
Ym9keVtpXTsgfQorICAgIEJsb2NrSW5kZXggb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25zdCB7
IHJldHVybiBhdChpKTsgfQorICAgIAorICAgIGJvb2wgY29udGFpbnMoQmxvY2tJbmRleCBibG9j
aykgY29uc3QKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fYm9keS5zaXplKCk7
IGktLTspIHsKKyAgICAgICAgICAgIGlmIChtX2JvZHlbaV0gPT0gYmxvY2spCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGJsb2NrICE9IGhl
YWRlcigpKTsgLy8gSGVhZGVyIHNob3VsZCBiZSBjb250YWluZWQuCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Citw
cml2YXRlOgorICAgIEJsb2NrSW5kZXggbV9oZWFkZXI7CisgICAgVmVjdG9yPEJsb2NrSW5kZXgs
IDQ+IG1fYm9keTsKK307CisKK2NsYXNzIE5hdHVyYWxMb29wcyA6IHB1YmxpYyBBbmFseXNpczxO
YXR1cmFsTG9vcHM+IHsKK3B1YmxpYzoKKyAgICBOYXR1cmFsTG9vcHMoKTsKKyAgICB+TmF0dXJh
bExvb3BzKCk7CisgICAgCisgICAgdm9pZCBjb21wdXRlKEdyYXBoJik7CisgICAgCisgICAgdW5z
aWduZWQgbnVtTG9vcHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWQoKSk7
CisgICAgICAgIHJldHVybiBtX2xvb3BzLnNpemUoKTsKKyAgICB9CisgICAgY29uc3QgTmF0dXJh
bExvb3AmIGxvb3AodW5zaWduZWQgaSkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1Zh
bGlkKCkpOworICAgICAgICByZXR1cm4gbV9sb29wc1tpXTsKKyAgICB9CisgICAgCisgICAgLy8g
UmV0dXJuIGVpdGhlciBudWxsIGlmIHRoZSBibG9jayBpc24ndCBhIGxvb3AgaGVhZGVyLCBvciB0
aGUKKyAgICAvLyBsb29wIGl0IGJlbG9uZ3MgdG8uCisgICAgY29uc3QgTmF0dXJhbExvb3AqIGhl
YWRlck9mKEJsb2NrSW5kZXggYmxvY2tJbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fbG9vcHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBpZiAobV9s
b29wc1tpXS5oZWFkZXIoKSA9PSBibG9ja0luZGV4KQorICAgICAgICAgICAgICAgIHJldHVybiAm
bV9sb29wc1tpXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisg
ICAgLy8gUmV0dXJuIHRoZSBpbmRpY2VzIG9mIGFsbCBsb29wcyB0aGlzIGJlbG9uZ3MgdG8uCisg
ICAgVmVjdG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gbG9vcHNPZihCbG9ja0luZGV4IGJsb2NrSW5k
ZXgpIGNvbnN0OworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Citwcml2YXRl
OgorICAgIC8vIElmIHdlIGV2ZXIgaGFkIGEgc2NhbGFiaWxpdHkgcHJvYmxlbSBpbiBvdXIgbmF0
dXJhbCBsb29wIGZpbmRlciwgd2UgY291bGQKKyAgICAvLyB1c2Ugc29tZSBIYXNoTWFwJ3MgaGVy
ZS4gQnV0IGl0IGp1c3QgZmVlbHMgYSBoZWNrIG9mIGEgbG90IGxlc3MgY29udmVuaWVudC4KKyAg
ICBWZWN0b3I8TmF0dXJhbExvb3AsIDQ+IG1fbG9vcHM7Cit9OworCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR05h
dHVyYWxMb29wc19oCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205643</attachid>
            <date>2013-06-27 16:19:41 -0700</date>
            <delta_ts>2013-06-27 16:45:43 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>26267</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyMTM2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBA
CisyMDEzLTA2LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogREZHIHNob3VsZCBrbm93IGhvdyB0byBmaW5kIG5hdHVyYWwgbG9vcHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODE1MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhl
cmUgYXJlIGEgYnVuY2ggb2YgdGhpbmdzIHdlIGNhbiBkbyB3aGVuIHdlIGtub3cgd2hlcmUgdGhl
IGxvb3BzIGFyZS4KKyAgICAgICAgUHJldmlvdXNseSB3ZSBkaWRuJ3QuIFdpdGggdGhpcyBwYXRj
aCwgd2UgZG8uCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNsYXNzaWMg
ZG9taW5hdG9yIGJhc2VkIG5hdHVyYWwgbG9vcCBmaW5kZXIuCisgICAgICAgIAorICAgICAgICBU
aGUgb25seSBjbGllbnQgb2YgdGhpcyByaWdodCBub3cgaXMgdGhlIERGRzo6RGlzYXNzZW1ibGVy
LiBJdCBwcmludHMgb3V0CisgICAgICAgIGEgc3VtbWFyeSBvZiB0aGUgYW5hbHlzaXMgZm9yIGVh
Y2ggYmxvY2suCisgICAgICAgIAorICAgICAgICBUaGlzIHdpbGwgYmVjb21lIG1vcmUgaW1wb3J0
YW50IHdoZW4gSSBkbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE4MTUxLCB3aGljaCBkZWZpbml0ZWx5IHJlcXVpcmVzCisgICAgICAgIHRoaXMga2lu
ZCBvZiBhbmFseXNpcywgYXQgbGVhc3QgaWYgd2Ugd2FudCB0byBkbyB0aGUgb3B0aW1pemF0aW9u
IG92ZXIKKyAgICAgICAgREZHIElSIChhbmQgSSdtIHByZXR0eSBzdXJlIHdlIGRvKS4KKworICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZGZnL0RGR0FuYWx5c2lzLmg6IEFkZGVkLgorICAgICAgICAoREZHKToKKyAgICAgICAgKEFu
YWx5c2lzKToKKyAgICAgICAgKEpTQzo6REZHOjpBbmFseXNpczo6QW5hbHlzaXMpOgorICAgICAg
ICAoSlNDOjpERkc6OkFuYWx5c2lzOjppbnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpB
bmFseXNpczo6Y29tcHV0ZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpBbmFseXNp
czo6aXNWYWxpZCk6CisgICAgICAgICogZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkNGR1NpbXBsaWZpY2F0aW9uUGhhc2U6OnJ1bik6CisgICAg
ICAgICogZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RGlzYXNz
ZW1ibGVyOjpjcmVhdGVEdW1wTGlzdCk6CisgICAgICAgICogZGZnL0RGR0RvbWluYXRvcnMuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkRvbWluYXRvcnM6OkRvbWluYXRvcnMpOgorICAgICAgICAo
SlNDOjpERkc6OkRvbWluYXRvcnM6OmNvbXB1dGUpOgorICAgICAgICAqIGRmZy9ERkdEb21pbmF0
b3JzLmg6CisgICAgICAgIChEb21pbmF0b3JzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wQmxvY2tIZWFkZXIpOgorICAgICAgICAo
SlNDOjpERkc6OkdyYXBoOjppbnZhbGlkYXRlQ0ZHKToKKyAgICAgICAgKERGRyk6CisgICAgICAg
ICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChHcmFwaCk6CisgICAgICAgICogZGZnL0RGR05h
dHVyYWxMb29wcy5jcHA6IEFkZGVkLgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZH
OjpOYXR1cmFsTG9vcDo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6TmF0dXJhbExvb3BzOjpO
YXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVyYWxMb29wczo6fk5hdHVyYWxM
b29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6TmF0dXJhbExvb3BzOjpjb21wdXRlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOYXR1cmFsTG9vcHM6Omxvb3BzT2YpOgorICAgICAgICAoSlNDOjpERkc6
Ok5hdHVyYWxMb29wczo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR05hdHVyYWxMb29wcy5oOiBB
ZGRlZC4KKyAgICAgICAgKERGRyk6CisgICAgICAgIChOYXR1cmFsTG9vcCk6CisgICAgICAgIChK
U0M6OkRGRzo6TmF0dXJhbExvb3A6Ok5hdHVyYWxMb29wKToKKyAgICAgICAgKEpTQzo6REZHOjpO
YXR1cmFsTG9vcDo6YWRkQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVyYWxMb29wOjpo
ZWFkZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVyYWxMb29wOjpzaXplKToKKyAgICAgICAg
KEpTQzo6REZHOjpOYXR1cmFsTG9vcDo6YXQpOgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVyYWxM
b29wOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpTQzo6REZHOjpOYXR1cmFsTG9vcDo6Y29udGFp
bnMpOgorICAgICAgICAoTmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpTQzo6REZHOjpOYXR1cmFs
TG9vcHM6Om51bUxvb3BzKToKKyAgICAgICAgKEpTQzo6REZHOjpOYXR1cmFsTG9vcHM6Omxvb3Ap
OgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVyYWxMb29wczo6aGVhZGVyT2YpOgorCiAyMDEzLTA2
LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgZm91cnRoVGll
cjogSlNDJ3MgZGlzYXNzZW1ibHkgaW5mcmFzdHJ1Y3R1cmUgc2hvdWxkIGJlIGFibGUgdG8gZGlz
YXNzZW1ibGUgdGhlIGNvZGUgdGhhdCBMTFZNIGdlbmVyYXRlcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1MjEzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzAsNiArMTcwLDkgQEAKIAkJMEY0NkU2QjkxNzZGODlEQjAwRTFGNzU1IC8qIEZUTFN3
aXRjaENhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDZFNkI3MTc2Rjg5RDkwMEUxRjc1NSAvKiBGVExTd2l0Y2hDYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NkU2QzUxNzZGOEE1RTAw
RTFGNzU1IC8qIERGR0xhenlKU1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDZFNkMyMTc2RjhBNUIwMEUxRjc1NSAvKiBERkdMYXp5SlNW
YWx1ZS5jcHAgKi87IH07CiAJCTBGNDZFNkM2MTc2RjhBNjAwMEUxRjc1NSAvKiBERkdMYXp5SlNW
YWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
NkU2QzMxNzZGOEE1QjAwRTFGNzU1IC8qIERGR0xhenlKU1ZhbHVlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NkU2RUYxNzdDRTk1QTAwRTFG
NzU1IC8qIERGR0FuYWx5c2lzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ2RTZFRTE3N0NFOTVBMDBFMUY3NTUgLyogREZHQW5hbHlzaXMuaCAqLzsg
fTsKKwkJMEY0NkU2RjMxNzdDRjBEMjAwRTFGNzU1IC8qIERGR05hdHVyYWxMb29wcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2RTZGMTE3N0NG
MEQyMDBFMUY3NTUgLyogREZHTmF0dXJhbExvb3BzLmNwcCAqLzsgfTsKKwkJMEY0NkU2RjQxNzdD
RjBEMjAwRTFGNzU1IC8qIERGR05hdHVyYWxMb29wcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NkU2RjIxNzdDRjBEMjAwRTFGNzU1IC8qIERGR05h
dHVyYWxMb29wcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGNDZFNkQ5MTc3Q0I5MDAwMEUxRjc1NSAvKiBMTFZNRGlzYXNzZW1ibGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDZFNkQ3MTc3
Q0I4RkMwMEUxRjc1NSAvKiBMTFZNRGlzYXNzZW1ibGVyLmNwcCAqLzsgfTsKIAkJMEY0NkU2RTMx
NzdDQzM2NjAwRTFGNzU1IC8qIExMVk1EaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDZFNkUwMTc3Q0MzNjYwMEUxRjc1NSAvKiBM
TFZNRGlzYXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY0NkU2RTQxNzdDQzM2NjAwRTFGNzU1IC8qIFVEaXM4NkRpc2Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NkU2
RTExNzdDQzM2NjAwRTFGNzU1IC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTgzLDYgKzExODYsOSBAQAog
CQkwRjQ2RTZCNzE3NkY4OUQ5MDBFMUY3NTUgLyogRlRMU3dpdGNoQ2FzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExTd2l0Y2hDYXNlLmg7IHBhdGggPSBmdGwvRlRMU3dp
dGNoQ2FzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2RTZDMjE3NkY4QTVC
MDBFMUY3NTUgLyogREZHTGF6eUpTVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHTGF6eUpTVmFsdWUuY3BwOyBwYXRoID0gZGZnL0RGR0xhenlKU1ZhbHVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NkU2QzMxNzZGOEE1QjAwRTFG
NzU1IC8qIERGR0xhenlKU1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0xhenlKU1ZhbHVlLmg7IHBhdGggPSBkZmcvREZHTGF6eUpTVmFsdWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NkU2RUUxNzdDRTk1QTAwRTFGNzU1IC8qIERGR0FuYWx5
c2lzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FuYWx5c2lzLmg7IHBh
dGggPSBkZmcvREZHQW5hbHlzaXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0
NkU2RjExNzdDRjBEMjAwRTFGNzU1IC8qIERGR05hdHVyYWxMb29wcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdOYXR1cmFsTG9vcHMuY3BwOyBwYXRoID0gZGZn
L0RGR05hdHVyYWxMb29wcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDZF
NkYyMTc3Q0YwRDIwMEUxRjc1NSAvKiBERkdOYXR1cmFsTG9vcHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHTmF0dXJhbExvb3BzLmg7IHBhdGggPSBkZmcvREZHTmF0dXJh
bExvb3BzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDZFNkQ3MTc3Q0I4RkMw
MEUxRjc1NSAvKiBMTFZNRGlzYXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IExMVk1EaXNhc3NlbWJsZXIuY3BwOyBwYXRoID0gZGlzYXNzZW1ibGVyL0xM
Vk1EaXNhc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2RTZF
MDE3N0NDMzY2MDBFMUY3NTUgLyogTExWTURpc2Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMTFZNRGlzYXNzZW1ibGVyLmg7IHBhdGggPSBkaXNhc3NlbWJsZXIv
TExWTURpc2Fzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2RTZF
MTE3N0NDMzY2MDBFMUY3NTUgLyogVURpczg2RGlzYXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFVEaXM4NkRpc2Fzc2VtYmxlci5oOyBwYXRoID0gZGlzYXNzZW1i
bGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
Mjk0NSw2ICsyOTUxLDcgQEAKIAkJCQkwRjYyMDE2RjE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJz
dHJhY3RWYWx1ZS5oICovLAogCQkJCTBGNjZFMTY4MTRERjNGMTMwMEI3QjJFNCAvKiBERkdBZGph
Y2VuY3lMaXN0LmggKi8sCiAJCQkJMEZCNEI1MTkxNkI2Mjc3MjAwM0Y2OTZCIC8qIERGR0FsbG9j
YXRvci5oICovLAorCQkJCTBGNDZFNkVFMTc3Q0U5NUEwMEUxRjc1NSAvKiBERkdBbmFseXNpcy5o
ICovLAogCQkJCTBGMUUzQTQzMTUzNENCQUQwMDBGOTQ1NiAvKiBERkdBcmd1bWVudFBvc2l0aW9u
LmggKi8sCiAJCQkJMEYxNjAxNUExNTYxOThCRjAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBs
aWZpY2F0aW9uUGhhc2UuY3BwICovLAogCQkJCTBGMTYwMTVCMTU2MTk4QkYwMEMyNTg3QyAvKiBE
RkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmggKi8sCkBAIC0zMDI0LDYgKzMwMzEsOCBA
QAogCQkJCTBGQjRCNTEwMTZCM0E5NjQwMDNGNjk2QiAvKiBERkdNaW5pZmllZElELmggKi8sCiAJ
CQkJMEYyQkRDNEMxNTIyODE4MzAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5jcHAgKi8sCiAJ
CQkJMEYyQkRDM0UxNTIyODAxNzAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5oICovLAorCQkJ
CTBGNDZFNkYxMTc3Q0YwRDIwMEUxRjc1NSAvKiBERkdOYXR1cmFsTG9vcHMuY3BwICovLAorCQkJ
CTBGNDZFNkYyMTc3Q0YwRDIwMEUxRjc1NSAvKiBERkdOYXR1cmFsTG9vcHMuaCAqLywKIAkJCQkw
RkI0QjUxRTE2QjYyNzcyMDAzRjY5NkIgLyogREZHTm9kZS5jcHAgKi8sCiAJCQkJODZFQ0EzRTkx
MzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCAqLywKIAkJCQkwRkI0QjUxRjE2QjYyNzcyMDAz
RjY5NkIgLyogREZHTm9kZUFsbG9jYXRvci5oICovLApAQCAtMzgxOCw2ICszODI3LDggQEAKIAkJ
CQkwRjVFRTRFOTE3NTQyNEFGMDA5QUU0MkQgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjQ2RTZDNjE3NkY4QTYwMDBFMUY3NTUgLyogREZHTGF6eUpTVmFsdWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDZFNkI5MTc2Rjg5REIwMEUxRjc1NSAvKiBGVExTd2l0
Y2hDYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2RTZFRjE3N0NFOTVBMDBFMUY3NTUgLyog
REZHQW5hbHlzaXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDZFNkY0MTc3Q0YwRDIwMEUxRjc1
NSAvKiBERkdOYXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDZFNkUzMTc3Q0Mz
NjYwMEUxRjc1NSAvKiBMTFZNRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2
RTZFNDE3N0NDMzY2MDBFMUY3NTUgLyogVURpczg2RGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CkBAIC00NTExLDYgKzQ1MjIsNyBAQAogCQkJCTBGNzE0Q0E0MTZFQTkyRjAwMEYz
RUJFQiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGNUVFNEU4MTc1NDI0QUYwMDlBRTQyRCAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY0NkU2QzUxNzZGOEE1RTAwRTFGNzU1IC8qIERGR0xhenlKU1Zh
bHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDZFNkYzMTc3Q0YwRDIwMEUxRjc1NSAvKiBE
RkdOYXR1cmFsTG9vcHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NkU2RDkxNzdDQjkwMDAw
RTFGNzU1IC8qIExMVk1EaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NkU2
RTUxNzdDQzM2NjAwRTFGNzU1IC8qIFg4NkRpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FuYWx5c2lzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBbmFseXNpcy5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBbmFseXNpcy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHQW5hbHlzaXNfaAorI2RlZmluZSBERkdBbmFseXNp
c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShERkdfSklUKQor
CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2NsYXNzIEdyYXBoOworCisvLyBV
c2UgdGhpcyBhcyBhIG1peGluIGZvciBERkcgYW5hbHlzZXMuIFRoZSBhbmFseXNpcyBpdHNlbGYg
aW1wbGVtZW50cyBhIHB1YmxpYworLy8gY29tcHV0ZShHcmFwaCYpIG1ldGhvZC4gQ2xpZW50cyBj
YWxsIGNvbXB1dGVJZk5lY2Vzc2FyeSgpIHdoZW4gdGhleSB3YW50CisvLyByZXN1bHRzLgorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgQW5hbHlzaXMgeworcHVibGljOgorICAgIEFuYWx5
c2lzKCkKKyAgICAgICAgOiBtX3ZhbGlkKGZhbHNlKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
dm9pZCBpbnZhbGlkYXRlKCkKKyAgICB7CisgICAgICAgIG1fdmFsaWQgPSBmYWxzZTsKKyAgICB9
CisgICAgCisgICAgdm9pZCBjb21wdXRlSWZOZWNlc3NhcnkoR3JhcGgmIGdyYXBoKQorICAgIHsK
KyAgICAgICAgaWYgKG1fdmFsaWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0YXRp
Y19jYXN0PFQqPih0aGlzKS0+Y29tcHV0ZShncmFwaCk7CisgICAgICAgIG1fdmFsaWQgPSB0cnVl
OworICAgIH0KKyAgICAKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3ZhbGlk
OyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX3ZhbGlkOworfTsKKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdB
bmFseXNpc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxp
ZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTUyMTM2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgwLDYgKzI4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAv
LyBzdWNjZXNzb3JzJyBQaGkgZnVuY3Rpb25zIHRvIHJlbW92ZSBhbnkgcmVmZXJlbmNlcyBmcm9t
IHRoZW0gaW50byB0aGUKICAgICAgICAgICAgICAgICAvLyByZW1vdmVkIGJsb2NrLgogICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1fZ3JhcGguaW52YWxpZGF0ZUNGRygpOwogICAg
ICAgICAgICAgICAgIG1fZ3JhcGgucmVzZXRSZWFjaGFiaWxpdHkoKTsKIAogICAgICAgICAgICAg
ICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgu
bV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrSW5kZXgpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDE1MjEzNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTAsNiArOTAsNyBAQCBWZWN0b3I8RGlzYXNzZW1ibGVyOjpEdW1wZWRPcD4gRGlzYXNz
ZW1iCiAgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91c09yaWdpbik7CiAgICAgCiAgICAg
bV9ncmFwaC5tX2RvbWluYXRvcnMuY29tcHV0ZUlmTmVjZXNzYXJ5KG1fZ3JhcGgpOworICAgIG1f
Z3JhcGgubV9uYXR1cmFsTG9vcHMuY29tcHV0ZUlmTmVjZXNzYXJ5KG1fZ3JhcGgpOwogICAgIAog
ICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9ICIgICAgIjsKICAgICBjb25zdCBjaGFyKiBkaXNhc3Nl
bWJseVByZWZpeCA9ICIgICAgICAgICI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvbWluYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9taW5hdG9ycy5jcHAJKHJldmlzaW9uIDE1MjEzNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDYgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogRG9taW5hdG9yczo6RG9t
aW5hdG9ycygpCi0gICAgOiBtX3ZhbGlkKGZhbHNlKQogewogfQogCkBAIC04NSw4ICs4NCw2IEBA
IHZvaWQgRG9taW5hdG9yczo6Y29tcHV0ZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG51bUJsb2NrczsgaS0tID4gMTspCiAgICAgICAgICAgICBjaGFuZ2VkIHw9IGl0
ZXJhdGVGb3JCbG9jayhncmFwaCwgaSk7CiAgICAgfSB3aGlsZSAoY2hhbmdlZCk7Ci0gICAgCi0g
ICAgbV92YWxpZCA9IHRydWU7CiB9CiAKIGJvb2wgRG9taW5hdG9yczo6aXRlcmF0ZUZvckJsb2Nr
KEdyYXBoJiBncmFwaCwgQmxvY2tJbmRleCBpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb21pbmF0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb21pbmF0b3JzLmgJKHJldmlzaW9uIDE1MjEzNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR0FuYWx5c2lzLmgiCiAj
aW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KIApA
QCAtMzcsMjQgKzM4LDEyIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogY2xh
c3MgR3JhcGg7CiAKLWNsYXNzIERvbWluYXRvcnMgeworY2xhc3MgRG9taW5hdG9ycyA6IHB1Ymxp
YyBBbmFseXNpczxEb21pbmF0b3JzPiB7CiBwdWJsaWM6CiAgICAgRG9taW5hdG9ycygpOwogICAg
IH5Eb21pbmF0b3JzKCk7CiAgICAgCiAgICAgdm9pZCBjb21wdXRlKEdyYXBoJiBncmFwaCk7Ci0g
ICAgdm9pZCBpbnZhbGlkYXRlKCkKLSAgICB7Ci0gICAgICAgIG1fdmFsaWQgPSBmYWxzZTsKLSAg
ICB9Ci0gICAgdm9pZCBjb21wdXRlSWZOZWNlc3NhcnkoR3JhcGgmIGdyYXBoKQotICAgIHsKLSAg
ICAgICAgaWYgKG1fdmFsaWQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNvbXB1dGUo
Z3JhcGgpOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBt
X3ZhbGlkOyB9CiAgICAgCiAgICAgYm9vbCBkb21pbmF0ZXMoQmxvY2tJbmRleCBmcm9tLCBCbG9j
a0luZGV4IHRvKSBjb25zdAogICAgIHsKQEAgLTY3LDcgKzU2LDYgQEAgcHJpdmF0ZToKICAgICAK
ICAgICBWZWN0b3I8RmFzdEJpdFZlY3Rvcj4gbV9yZXN1bHRzOwogICAgIEZhc3RCaXRWZWN0b3Ig
bV9zY3JhdGNoOwotICAgIGJvb2wgbV92YWxpZDsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lv
biAxNTIxMzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjk0LDYgKzI5NCwyNyBAQCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFk
ZXIoUHJpbnRTdHJlYW0mCiAgICAgICAgIH0KICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAg
IH0KKyAgICBpZiAobV9uYXR1cmFsTG9vcHMuaXNWYWxpZCgpKSB7CisgICAgICAgIGlmIChjb25z
dCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fbmF0dXJhbExvb3BzLmhlYWRlck9mKGJsb2NrSW5kZXgp
KSB7CisgICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBMb29wIGhlYWRlciwgY29udGFp
bnM6Iik7CisgICAgICAgICAgICBWZWN0b3I8QmxvY2tJbmRleD4gc29ydGVkQmxvY2tMaXN0Owor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvb3AtPnNpemUoKTsgKytpKQor
ICAgICAgICAgICAgICAgIHNvcnRlZEJsb2NrTGlzdC5hcHBlbmQobG9vcC0+YXQoaSkpOworICAg
ICAgICAgICAgc3RkOjpzb3J0KHNvcnRlZEJsb2NrTGlzdC5iZWdpbigpLCBzb3J0ZWRCbG9ja0xp
c3QuZW5kKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvcnRlZEJs
b2NrTGlzdC5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAjIiwgc29y
dGVkQmxvY2tMaXN0W2ldKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgVmVjdG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gY29udGFpbmlu
Z0xvb3BzID0KKyAgICAgICAgICAgIG1fbmF0dXJhbExvb3BzLmxvb3BzT2YoYmxvY2tJbmRleCk7
CisgICAgICAgIGlmICghY29udGFpbmluZ0xvb3BzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
b3V0LnByaW50KHByZWZpeCwgIiAgQ29udGFpbmluZyBsb29wIGhlYWRlcnM6Iik7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29udGFpbmluZ0xvb3BzLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgICAgIG91dC5wcmludCgiICMiLCBjb250YWluaW5nTG9vcHNbaV0tPmhl
YWRlcigpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgfQorICAgIH0K
ICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQaGkgTm9kZXM6Iik7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBibG9jay0+cGhpcy5zaXplKCk7ICsraSkgewogICAgICAgICBOb2RlKiBwaGlO
b2RlID0gYmxvY2stPnBoaXNbaV07CkBAIC00MjMsNiArNDQ0LDEyIEBAIHZvaWQgR3JhcGg6OnJl
c2V0RXhpdFN0YXRlcygpCiAgICAgfQogfQogCit2b2lkIEdyYXBoOjppbnZhbGlkYXRlQ0ZHKCkK
K3sKKyAgICBtX2RvbWluYXRvcnMuaW52YWxpZGF0ZSgpOworICAgIG1fbmF0dXJhbExvb3BzLmlu
dmFsaWRhdGUoKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE1MjEzNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIKICNpbmNsdWRlICJERkdE
b21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiREZHTG9uZ0xpdmVkU3RhdGUuaCIKKyNpbmNsdWRlICJE
RkdOYXR1cmFsTG9vcHMuaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiREZHTm9k
ZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkRGR1BsYW4uaCIKQEAgLTY3Niw2ICs2NzcsOCBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgdm9pZCBpbnZhbGlkYXRlQ0ZHKCk7
CisgICAgCiAgICAgUHJvZmlsZXI6OkNvbXBpbGF0aW9uKiBjb21waWxhdGlvbigpIHsgcmV0dXJu
IG1fcGxhbi5jb21waWxhdGlvbi5nZXQoKTsgfQogICAgIAogICAgIERlc2lyZWRJZGVudGlmaWVy
cyYgaWRlbnRpZmllcnMoKSB7IHJldHVybiBtX3BsYW4uaWRlbnRpZmllcnM7IH0KQEAgLTcwMyw2
ICs3MDYsNyBAQCBwdWJsaWM6CiAgICAgSGFzaFNldDxFeGVjdXRhYmxlQmFzZSo+IG1fZXhlY3V0
YWJsZXNXaG9zZUFyZ3VtZW50c0VzY2FwZWQ7CiAgICAgQml0VmVjdG9yIG1fcHJlc2VydmVkVmFy
czsKICAgICBEb21pbmF0b3JzIG1fZG9taW5hdG9yczsKKyAgICBOYXR1cmFsTG9vcHMgbV9uYXR1
cmFsTG9vcHM7CiAgICAgdW5zaWduZWQgbV9sb2NhbFZhcnM7CiAgICAgdW5zaWduZWQgbV9wYXJh
bWV0ZXJTbG90czsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0
dXJhbExvb3BzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05hdHVyYWxMb29wcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05hdHVyYWxMb29wcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJERkdOYXR1cmFsTG9vcHMuaCIKKworI2lmIEVOQUJMRShERkdf
SklUKQorCisjaW5jbHVkZSAiREZHR3JhcGguaCIKKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVy
Lmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwordm9pZCBOYXR1cmFsTG9v
cDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludCgiW0hlYWRl
cjogIyIsIGhlYWRlcigpLCAiLCBCb2R5OiIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2JvZHkuc2l6ZSgpOyArK2kpCisgICAgICAgIG91dC5wcmludCgiICMiLCBtX2JvZHlbaV0p
OworICAgIG91dC5wcmludCgiXSIpOworfQorCitOYXR1cmFsTG9vcHM6Ok5hdHVyYWxMb29wcygp
IHsgfQorTmF0dXJhbExvb3BzOjp+TmF0dXJhbExvb3BzKCkgeyB9CisKK3ZvaWQgTmF0dXJhbExv
b3BzOjpjb21wdXRlKEdyYXBoJiBncmFwaCkKK3sKKyAgICAvLyBJbXBsZW1lbnQgdGhlIGNsYXNz
aWMgZG9taW5hdG9yLWJhc2VkIG5hdHVyYWwgbG9vcCBmaW5kZXIuIFRoZSBmaXJzdAorICAgIC8v
IHN0ZXAgaXMgdG8gZmluZCBhbGwgY29udHJvbCBmbG93IGVkZ2VzIEEgLT4gQiB3aGVyZSBCIGRv
bWluYXRlcyBBLgorICAgIC8vIFRoZW4gQiBpcyBhIGxvb3AgaGVhZGVyIGFuZCBBIGlzIGEgYmFj
a3dhcmQgYnJhbmNoaW5nIGJsb2NrLiBXZSB3aWxsCisgICAgLy8gdGhlbiBhY2N1bXVsYXRlLCBm
b3IgZWFjaCBsb29wIGhlYWRlciwgbXVsdGlwbGUgYmFja3dhcmQgYnJhbmNoaW5nCisgICAgLy8g
YmxvY2tzLiBUaGVuIHdlIGJhY2t3YXJkcyBncmFwaCBzZWFyY2ggZnJvbSB0aGUgYmFja3dhcmQg
YnJhbmNoaW5nCisgICAgLy8gYmxvY2tzIHRvIHRoZWlyIGxvb3AgaGVhZGVycywgd2hpY2ggZ2l2
ZXMgdXMgYWxsIG9mIHRoZSBibG9ja3MgaW4gdGhlCisgICAgLy8gbG9vcCBib2R5LgorICAgIAor
ICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKyAgICAKKyAgICBncmFwaC5t
X2RvbWluYXRvcnMuY29tcHV0ZUlmTmVjZXNzYXJ5KGdyYXBoKTsKKyAgICAKKyAgICBtX2xvb3Bz
LnJlc2l6ZSgwKTsKKyAgICAKKyAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IGdyYXBo
Lm1fYmxvY2tzLnNpemUoKTsgYmxvY2tJbmRleC0tOykgeworICAgICAgICBCYXNpY0Jsb2NrKiBi
bG9jayA9IGdyYXBoLm1fYmxvY2tzW2Jsb2NrSW5kZXhdLmdldCgpOworICAgICAgICBpZiAoIWJs
b2NrKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBncmFwaC5udW1TdWNjZXNzb3JzKGJsb2NrKTsgaS0tOykgeworICAgICAgICAgICAg
QmxvY2tJbmRleCBzdWNjZXNzb3JJbmRleCA9IGdyYXBoLnN1Y2Nlc3NvcihibG9jaywgaSk7Cisg
ICAgICAgICAgICBpZiAoIWdyYXBoLm1fZG9taW5hdG9ycy5kb21pbmF0ZXMoc3VjY2Vzc29ySW5k
ZXgsIGJsb2NrSW5kZXgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
Ym9vbCBmb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gbV9sb29w
cy5zaXplKCk7IGotLTspIHsKKyAgICAgICAgICAgICAgICBpZiAobV9sb29wc1tpXS5oZWFkZXIo
KSA9PSBzdWNjZXNzb3JJbmRleCkgeworICAgICAgICAgICAgICAgICAgICBtX2xvb3BzW2ldLmFk
ZEJsb2NrKGJsb2NrSW5kZXgpOworICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGZvdW5kKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgTmF0dXJhbExvb3AgbG9vcChz
dWNjZXNzb3JJbmRleCk7CisgICAgICAgICAgICBsb29wLmFkZEJsb2NrKGJsb2NrSW5kZXgpOwor
ICAgICAgICAgICAgbV9sb29wcy5hcHBlbmQobG9vcCk7CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIkFmdGVyIGJvb3RzdHJhcDogIiwg
KnRoaXMsICJcbiIpOworICAgIAorICAgIEZhc3RCaXRWZWN0b3Igc2VlbkJsb2NrczsKKyAgICBW
ZWN0b3I8QmxvY2tJbmRleCwgND4gYmxvY2tXb3JrbGlzdDsKKyAgICBzZWVuQmxvY2tzLnJlc2l6
ZShncmFwaC5tX2Jsb2Nrcy5zaXplKCkpOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IG1f
bG9vcHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIE5hdHVyYWxMb29wJiBsb29wID0gbV9sb29w
c1tpXTsKKyAgICAgICAgCisgICAgICAgIHNlZW5CbG9ja3MuY2xlYXJBbGwoKTsKKyAgICAgICAg
QVNTRVJUKGJsb2NrV29ya2xpc3QuaXNFbXB0eSgpKTsKKyAgICAgICAgCisgICAgICAgIGlmICh2
ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygiRGVhbGluZyB3aXRoIGxvb3AgIiwgbG9vcCwg
IlxuIik7CisgICAgICAgIAorICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBsb29wLnNpemUoKTsg
ai0tOykgeworICAgICAgICAgICAgc2VlbkJsb2Nrcy5zZXQobG9vcFtqXSk7CisgICAgICAgICAg
ICBibG9ja1dvcmtsaXN0LmFwcGVuZChsb29wW2pdKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgd2hpbGUgKCFibG9ja1dvcmtsaXN0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgQmxv
Y2tJbmRleCBibG9ja0luZGV4ID0gYmxvY2tXb3JrbGlzdC50YWtlTGFzdCgpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgRGVhbGluZyB3aXRoICMiLCBibG9ja0luZGV4LCAiXG4iKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKGJsb2NrSW5kZXggPT0gbG9vcC5oZWFkZXIoKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sg
PSBncmFwaC5tX2Jsb2Nrc1tibG9ja0luZGV4XS5nZXQoKTsKKyAgICAgICAgICAgIEFTU0VSVChi
bG9jayk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGJsb2Nr
LT5tX3ByZWRlY2Vzc29ycy5zaXplKCk7IGotLTspIHsKKyAgICAgICAgICAgICAgICBCbG9ja0lu
ZGV4IHByZWRlY2Vzc29ySW5kZXggPSBibG9jay0+bV9wcmVkZWNlc3NvcnNbal07CisgICAgICAg
ICAgICAgICAgaWYgKHNlZW5CbG9ja3MuZ2V0KHByZWRlY2Vzc29ySW5kZXgpKQorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBs
b29wLmFkZEJsb2NrKHByZWRlY2Vzc29ySW5kZXgpOworICAgICAgICAgICAgICAgIGJsb2NrV29y
a2xpc3QuYXBwZW5kKHByZWRlY2Vzc29ySW5kZXgpOworICAgICAgICAgICAgICAgIHNlZW5CbG9j
a3Muc2V0KHByZWRlY2Vzc29ySW5kZXgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIAorICAgIGlmICh2ZXJib3NlKQorICAgICAgICBkYXRhTG9nKCJSZXN1bHRzOiAiLCAq
dGhpcywgIlxuIik7Cit9CisKK1ZlY3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IE5hdHVyYWxMb29w
czo6bG9vcHNPZihCbG9ja0luZGV4IGJsb2NrSW5kZXgpIGNvbnN0Cit7CisgICAgVmVjdG9yPGNv
bnN0IE5hdHVyYWxMb29wKj4gcmVzdWx0OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IG1f
bG9vcHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIGlmIChtX2xvb3BzW2ldLmNvbnRhaW5zKGJs
b2NrSW5kZXgpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgmbV9sb29wc1tpXSk7CisgICAg
fQorICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgTmF0dXJhbExvb3BzOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCJOYXR1cmFsTG9vcHM6
eyIpOworICAgIENvbW1hUHJpbnRlciBjb21tYTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9sb29wcy5zaXplKCk7ICsraSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCBtX2xvb3Bz
W2ldKTsKKyAgICBvdXQucHJpbnQoIn0iKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRG
RworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgREZHTmF0dXJhbExvb3BzX2gKKyNkZWZpbmUgREZHTmF0dXJhbExvb3BzX2gKKworI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRl
ICJERkdBbmFseXNpcy5oIgorI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CisKK2NsYXNzIE5hdHVyYWxMb29wIHsKK3B1YmxpYzoKKyAgICBO
YXR1cmFsTG9vcCgpCisgICAgICAgIDogbV9oZWFkZXIoTm9CbG9jaykKKyAgICB7CisgICAgfQor
ICAgIAorICAgIE5hdHVyYWxMb29wKEJsb2NrSW5kZXggaGVhZGVyKQorICAgICAgICA6IG1faGVh
ZGVyKGhlYWRlcikKKyAgICB7CisgICAgfQorICAgIAorICAgIHZvaWQgYWRkQmxvY2soQmxvY2tJ
bmRleCBibG9jaykgeyBtX2JvZHkuYXBwZW5kKGJsb2NrKTsgfQorICAgIAorICAgIEJsb2NrSW5k
ZXggaGVhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkZXI7IH0KKyAgICAKKyAgICB1bnNpZ25l
ZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9ib2R5LnNpemUoKTsgfQorICAgIEJsb2NrSW5kZXgg
YXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9ib2R5W2ldOyB9CisgICAgQmxvY2tJbmRl
eCBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CisgICAgCisg
ICAgYm9vbCBjb250YWlucyhCbG9ja0luZGV4IGJsb2NrKSBjb25zdAorICAgIHsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9ib2R5LnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgaWYg
KG1fYm9keVtpXSA9PSBibG9jaykKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICBBU1NFUlQoYmxvY2sgIT0gaGVhZGVyKCkpOyAvLyBIZWFkZXIgc2hvdWxk
IGJlIGNvbnRhaW5lZC4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKK3ByaXZhdGU6CisgICAgQmxvY2tJbmRleCBt
X2hlYWRlcjsKKyAgICBWZWN0b3I8QmxvY2tJbmRleCwgND4gbV9ib2R5OworfTsKKworY2xhc3Mg
TmF0dXJhbExvb3BzIDogcHVibGljIEFuYWx5c2lzPE5hdHVyYWxMb29wcz4geworcHVibGljOgor
ICAgIE5hdHVyYWxMb29wcygpOworICAgIH5OYXR1cmFsTG9vcHMoKTsKKyAgICAKKyAgICB2b2lk
IGNvbXB1dGUoR3JhcGgmKTsKKyAgICAKKyAgICB1bnNpZ25lZCBudW1Mb29wcygpIGNvbnN0Cisg
ICAgeworICAgICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIG1fbG9vcHMu
c2l6ZSgpOworICAgIH0KKyAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCh1bnNpZ25lZCBpKSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBt
X2xvb3BzW2ldOworICAgIH0KKyAgICAKKyAgICAvLyBSZXR1cm4gZWl0aGVyIG51bGwgaWYgdGhl
IGJsb2NrIGlzbid0IGEgbG9vcCBoZWFkZXIsIG9yIHRoZQorICAgIC8vIGxvb3AgaXQgYmVsb25n
cyB0by4KKyAgICBjb25zdCBOYXR1cmFsTG9vcCogaGVhZGVyT2YoQmxvY2tJbmRleCBibG9ja0lu
ZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9sb29wcy5zaXpl
KCk7IGktLTspIHsKKyAgICAgICAgICAgIGlmIChtX2xvb3BzW2ldLmhlYWRlcigpID09IGJsb2Nr
SW5kZXgpCisgICAgICAgICAgICAgICAgcmV0dXJuICZtX2xvb3BzW2ldOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAKKyAgICAvLyBSZXR1cm4gdGhlIGluZGljZXMg
b2YgYWxsIGxvb3BzIHRoaXMgYmVsb25ncyB0by4KKyAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExv
b3AqPiBsb29wc09mKEJsb2NrSW5kZXggYmxvY2tJbmRleCkgY29uc3Q7CisKKyAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKK3ByaXZhdGU6CisgICAgLy8gSWYgd2UgZXZlciBoYWQg
YSBzY2FsYWJpbGl0eSBwcm9ibGVtIGluIG91ciBuYXR1cmFsIGxvb3AgZmluZGVyLCB3ZSBjb3Vs
ZAorICAgIC8vIHVzZSBzb21lIEhhc2hNYXAncyBoZXJlLiBCdXQgaXQganVzdCBmZWVscyBhIGhl
Y2sgb2YgYSBsb3QgbGVzcyBjb252ZW5pZW50LgorICAgIFZlY3RvcjxOYXR1cmFsTG9vcCwgND4g
bV9sb29wczsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHTmF0dXJhbExvb3BzX2gKKwo=
</data>
<flag name="review"
          id="227220"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>