<?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>169515</bug_id>
          
          <creation_ts>2017-03-11 19:19:16 -0800</creation_ts>
          <short_desc>Air should be powerful enough to support Tmp-splitting</short_desc>
          <delta_ts>2017-03-14 18:10:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1286854</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-11 19:19:16 -0800</bug_when>
    <thetext>I implemented a live range splitting phase that splits Tmps that are live only for cold uses. It&apos;s a performance regression, because it turns out that IRC isn&apos;t sufficiently graceful at coalescing to handle being overloaded with even more temporaries. The performance losses all came from programs that would get slightly worse register allocation when both the versions of the Tmp got spilled. Perhaps one day we could solve that with spill coalescing. But this patch didn&apos;t speed *anything* up, which casts a lot of doubt about the profitability of this approach.

But in the process of writing the phase, I added some utilities to Air. I want to land those utilities.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286855</commentid>
    <comment_count>1</comment_count>
      <attachid>304181</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-11 19:26:09 -0800</bug_when>
    <thetext>Created attachment 304181
the patch

I want to at least upload this useful code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287920</commentid>
    <comment_count>2</comment_count>
      <attachid>304181</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-14 18:10:43 -0700</bug_when>
    <thetext>Comment on attachment 304181
the patch

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

r=me

&gt; Source/JavaScriptCore/b3/air/AirBreakCriticalEdges.h:34
&gt; +void breakCriticalEdges(Code&amp;);

nice</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304181</attachid>
            <date>2017-03-11 19:26:09 -0800</date>
            <delta_ts>2017-03-14 18:10:43 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>25779</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNzY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBA
CisyMDE3LTAzLTExICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWlyIHNob3VsZCBiZSBwb3dlcmZ1bCBlbm91Z2ggdG8gc3VwcG9ydCBUbXAtc3BsaXR0aW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk1MTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIElu
IHRoZSBwcm9jZXNzIG9mIGltcGxlbWVudGluZyB0aGUgVG1wLXNwbGl0dGluZyBvcHRpbWl6YXRp
b24sIEkgbWFkZSBzb21lIHNtYWxsCisgICAgICAgIGNsZWFuLXVwcy4gVGhleSBkb24ndCBhZmZl
Y3QgYW55dGhpbmcgLSBpdCdzIGJhc2ljYWxseSBtb3ZpbmcgY29kZSBhcm91bmQgYW5kIGFkZGlu
ZworICAgICAgICB1dGlsaXR5IGZ1bmN0aW9ucy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVm
ZmVyOjphbGxvY2F0ZSk6IHRlc3RiMyB3YXMgc29tZXRpbWVzIGZhaWxpbmcgaXRzIGNoZWNrRG9l
c05vdFVzZUluc3RydWN0aW9uIGNoZWNrIGJlY2F1c2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnku
IFRoaXMgaW5pdGlhbGl6ZXMgdGhlIGludGVybmFsIGZyYWdtZW50YXRpb24gc2xvcCBvZiBldmVy
eSBKSVQgYWxsb2NhdGlvbi4KKyAgICAgICAgKiBiMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNC
eUdyYXBoQ29sb3JpbmcuY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVy
c0J5R3JhcGhDb2xvcmluZy5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjp1c2VJUkMpOiBJdCdz
IHVzZWZ1bCB0byBiZSBhYmxlIHRvIHF1ZXJ5IHdoaWNoIHJlZ2lzdGVyIGFsbG9jYXRvciB3ZSdy
ZSB1c2luZy4KKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmNwcDoKKyAgICAgICAgKFdURjo6cHJp
bnRJbnRlcm5hbCk6CisgICAgICAgICogYjMvYWlyL0FpckFyZy5oOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpBcmc6OnRlbXBlcmF0dXJlKTogVGhlIHRlbXBlcmF0dXJlIG9mIGEgcm9sZSBpcyBh
IHVzZWZ1bCBjb25jZXB0IHRvIGhhdmUgZmFjdG9yZWQgb3V0LgorICAgICAgICAqIGIzL2Fpci9B
aXJCcmVha0NyaXRpY2FsRWRnZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
YnJlYWtDcml0aWNhbEVkZ2VzKTogSSB3YXMgc3VycHJpc2VkIHRoYXQgd2UgZGlkbid0IGhhdmUg
dGhpcyBhbHJlYWR5LiBJdCdzIGEgcHJldHR5IGZ1bmRhbWVudGFsIENGRyB1dGlsaXR5LgorICAg
ICAgICAqIGIzL2Fpci9BaXJCcmVha0NyaXRpY2FsRWRnZXMuaDogQWRkZWQuCisgICAgICAgICog
YjMvYWlyL0FpckdlbmVyYXRlLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlySW5zZXJ0aW9uU2V0
Lmg6IFlvdSBjYW4ndCB1c2UgJiBpZiB5b3Ugd2FudCBjb3B5LWNvbnN0cnVjdGliaWxpdHksIHdo
aWNoIHNlZW1zIHRvIGJlIGEgcHJlcmVxdWlzaXRlIHRvIEluZGV4TWFwPEJhc2ljQmxvY2ssIElu
c2VydGlvblNldD4uCisgICAgICAgIChKU0M6OkIzOjpBaXI6Okluc2VydGlvblNldDo6SW5zZXJ0
aW9uU2V0KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6SW5zZXJ0aW9uU2V0Ojpjb2RlKToKKyAg
ICAgICAgKiBiMy9haXIvQWlyTGl2ZW5lc3MuaDogVGVhY2ggTGl2ZW5lc3MgdG8gdHJhY2sgb25s
eSB3YXJtIGxpdmVuZXNzLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpUbXBMaXZlbmVzc0FkYXB0
ZXI6OmFjY2VwdHNSb2xlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6U3RhY2tTbG90TGl2ZW5l
c3NBZGFwdGVyOjphY2NlcHRzUm9sZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OlJlZ0xpdmVu
ZXNzQWRhcHRlcjo6YWNjZXB0c1JvbGUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBYnN0cmFj
dExpdmVuZXNzOjpBYnN0cmFjdExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QWJz
dHJhY3RMaXZlbmVzczo6TG9jYWxDYWxjOjpleGVjdXRlKToKKwogMjAxNy0wMy0xMSAgSm9uIExl
ZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViR1BVIHByb3RvdHlwZSAtIEZyb250
LUVuZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjEz
NzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC03OCw2ICs3OCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYjMv
YWlyL0FpckFyZy5jcHAKICAgICBiMy9haXIvQWlyQmFzaWNCbG9jay5jcHAKICAgICBiMy9haXIv
QWlyQmxvY2tJbnNlcnRpb25TZXQuY3BwCisgICAgYjMvYWlyL0FpckJyZWFrQ3JpdGljYWxFZGdl
cy5jcHAKICAgICBiMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNwcAogICAgIGIzL2Fpci9BaXJDQ2Fs
bGluZ0NvbnZlbnRpb24uY3BwCiAgICAgYjMvYWlyL0FpckNvZGUuY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjEzNzYxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTUzMyw2ICs1MzMsOCBAQAogCQkwRjc2NkQzODE1QUU0QTFDMDA4RjM2M0UgLyog
U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQzNjE1QUU0QTFBMDA4RjM2M0UgLyogU3Ry
dWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgKi87IH07CiAJCTBGNzY2RDM5MTVBRTRB
MUYwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQzNzE1QUU0QTFBMDA4
RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzcwMDkyMTQwMkZGM0MwMDc4
RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291
bnRlci5jcHAgKi87IH07CisJCTBGNzlDN0M5MUU3NEM5MzkwMEVCMzREMSAvKiBBaXJCcmVha0Ny
aXRpY2FsRWRnZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY3OUM3QzUxRTc0QzkzNjAwRUIzNEQxIC8qIEFpckJyZWFrQ3JpdGljYWxFZGdlcy5j
cHAgKi87IH07CisJCTBGNzlDN0NBMUU3NEM5M0IwMEVCMzREMSAvKiBBaXJCcmVha0NyaXRpY2Fs
RWRnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NzlDN0M2MUU3NEM5MzYwMEVCMzREMSAvKiBBaXJCcmVha0NyaXRpY2FsRWRnZXMuaCAqLzsgfTsK
IAkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFMUYxNDE3MkMyRjAw
MTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5oICovOyB9OwogCQkwRjdCMjk0RDE0QzNDRDRDMDA3
QzNEQjEgLyogREZHQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkMwOTc3RTE0NjlFQkM0MDBDRjI0NDIgLyogREZHQ29tbW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3QzM5RkIxQzhG
NjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJ
bmxpbmVzLmggKi87IH07CkBAIC0zMDQxLDYgKzMwNDMsOCBAQAogCQkwRjc2NkQzNzE1QUU0QTFB
MDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAv
KiBTYW1wbGluZ0NvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Ft
cGxpbmdDb3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDkxMTQw
MkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2FtcGxpbmdDb3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY3OUM3QzUxRTc0QzkzNjAwRUIzNEQxIC8qIEFpckJyZWFrQ3JpdGljYWxF
ZGdlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJCcmVha0Ny
aXRpY2FsRWRnZXMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckJyZWFrQ3JpdGljYWxFZGdlcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNzlDN0M2MUU3NEM5MzYwMEVCMzREMSAv
KiBBaXJCcmVha0NyaXRpY2FsRWRnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQWlyQnJlYWtDcml0aWNhbEVkZ2VzLmg7IHBhdGggPSBiMy9haXIvQWlyQnJlYWtDcml0aWNh
bEVkZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGN0MzOUZBMUM4RjYyOTMw
MDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlZ0V4cElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5
RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4cE9iamVjdElubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwT2JqZWN0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjdDMzlGRTFDOTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09wSW5mby5oOyBwYXRoID0gZGZn
L0RGR09wSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTUxOSw2ICs1NTIz
LDggQEAKIAkJCQkwRjJDNjNCOTFFNjM0NDA4MDBDMTM4MzkgLyogQWlyQmxvY2tJbnNlcnRpb25T
ZXQuY3BwICovLAogCQkJCTBGMkM2M0JBMUU2MzQ0MDgwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2Vy
dGlvblNldC5oICovLAogCQkJCTBGQjM4NzhCMUJGQkM0NEQwMEUzQUIxRSAvKiBBaXJCbG9ja1dv
cmtsaXN0LmggKi8sCisJCQkJMEY3OUM3QzUxRTc0QzkzNjAwRUIzNEQxIC8qIEFpckJyZWFrQ3Jp
dGljYWxFZGdlcy5jcHAgKi8sCisJCQkJMEY3OUM3QzYxRTc0QzkzNjAwRUIzNEQxIC8qIEFpckJy
ZWFrQ3JpdGljYWxFZGdlcy5oICovLAogCQkJCTBGNjE4MzIwMUM0NUJGMDcwMDcyNDUwQiAvKiBB
aXJDQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovLAogCQkJCTBGNjE4MzIxMUM0NUJGMDcwMDcyNDUw
QiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCAqLywKIAkJCQkwRkVDODU0RTFCREFDREM3MDA4
MEZGNzQgLyogQWlyQ0NhbGxTcGVjaWFsLmNwcCAqLywKQEAgLTkyOTgsNiArOTMwNCw3IEBACiAJ
CQkJRkUzMDIyRDcxRTQyODU3MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV2FzbUIzSVJHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUFENEIxREZBMURGMjQ0RTIwMDcxQUUzMiAvKiBXYXNtQmluZGlu
Zy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3OUM3Q0ExRTc0QzkzQjAwRUIzNEQxIC8qIEFpckJy
ZWFrQ3JpdGljYWxFZGdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNGRDA0RDQxRDdBQjI5MTAw
MzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlE
QUUyN0ExRTAzQzgyMjAwQjUyNkFBIC8qIFdhc21FeGNlcHRpb25UeXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QkM1NDdEMzFCNjk1OUExMDA5NTlCNTggLyogV2FzbUZvcm1hdC5oIGluIEhlYWRl
cnMgKi8sCkBAIC05OTgwLDYgKzk5ODcsNyBAQAogCQkJCTBGNkI4QURDMUM0RUZBQzMwMDk2OTA1
MiAvKiBCM1NTQUNhbGN1bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzM0ZDRjcxQzEz
NkUyNTAwMzIzRjY3IC8qIEIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRUM4NTMwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrbWFwU3BlY2lhbC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjc5QzdDOTFFNzRDOTM5MDBFQjM0RDEgLyogQWlyQnJl
YWtDcml0aWNhbEVkZ2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzM4REYxMUJFOTNBRDEw
MDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5NDk1
ODcxQzU3RjQ3NTAwNDEzQTQ4IC8qIEIzU3RhY2tTbG90LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRUM4NTM3MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaENhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZl
ci5jcHAJKHJldmlzaW9uIDIxMzc2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTGlua0J1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMzcsNiArMjM3LDExIEBAIHZv
aWQgTGlua0J1ZmZlcjo6YWxsb2NhdGUoTWFjcm9Bc3NlbWJsZXIKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKKyAgICB3aGlsZSAoaW5pdGlhbFNpemUgJSBqaXRBbGxvY2F0aW9uR3JhbnVs
ZSkgeworICAgICAgICBtYWNyb0Fzc2VtYmxlci5icmVha3BvaW50KCk7CisgICAgICAgIGluaXRp
YWxTaXplID0gbWFjcm9Bc3NlbWJsZXIubV9hc3NlbWJsZXIuY29kZVNpemUoKTsKKyAgICB9Cisg
ICAgCiAgICAgQVNTRVJUKG1fdm0gIT0gbnVsbHB0cik7CiAgICAgbV9leGVjdXRhYmxlTWVtb3J5
ID0gbV92bS0+ZXhlY3V0YWJsZUFsbG9jYXRvci5hbGxvY2F0ZSgqbV92bSwgaW5pdGlhbFNpemUs
IG93bmVyVUlELCBlZmZvcnQpOwogICAgIGlmICghbV9leGVjdXRhYmxlTWVtb3J5KQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhD
b2xvcmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5jcHAJKHJldmlzaW9uIDIxMzc2MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdy
YXBoQ29sb3JpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQ5LDExICsxODQ5LDExIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBib29sIGRv
bmU7Ci0gICAgICAgICAgICBpZiAoKGlzQVJNNjQoKSB8fCBPcHRpb25zOjphaXJGb3JjZUJyaWdn
c0FsbG9jYXRvcigpKSAmJiAhT3B0aW9uczo6YWlyRm9yY2VJUkNBbGxvY2F0b3IoKSkgewotICAg
ICAgICAgICAgICAgIENvbG9yaW5nQWxsb2NhdG9yPGJhbmssIEJyaWdncz4gYWxsb2NhdG9yKG1f
Y29kZSwgbV90bXBXaWR0aCwgbV91c2VDb3VudHMsIHVuc3BpbGxhYmxlVG1wcyk7CisgICAgICAg
ICAgICBpZiAodXNlSVJDKCkpIHsKKyAgICAgICAgICAgICAgICBDb2xvcmluZ0FsbG9jYXRvcjxi
YW5rLCBJUkM+IGFsbG9jYXRvcihtX2NvZGUsIG1fdG1wV2lkdGgsIG1fdXNlQ291bnRzLCB1bnNw
aWxsYWJsZVRtcHMpOwogICAgICAgICAgICAgICAgIGRvbmUgPSBkb0FsbG9jYXRpb24oYWxsb2Nh
dG9yKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgQ29sb3JpbmdBbGxv
Y2F0b3I8YmFuaywgSVJDPiBhbGxvY2F0b3IobV9jb2RlLCBtX3RtcFdpZHRoLCBtX3VzZUNvdW50
cywgdW5zcGlsbGFibGVUbXBzKTsKKyAgICAgICAgICAgICAgICBDb2xvcmluZ0FsbG9jYXRvcjxi
YW5rLCBCcmlnZ3M+IGFsbG9jYXRvcihtX2NvZGUsIG1fdG1wV2lkdGgsIG1fdXNlQ291bnRzLCB1
bnNwaWxsYWJsZVRtcHMpOwogICAgICAgICAgICAgICAgIGRvbmUgPSBkb0FsbG9jYXRpb24oYWxs
b2NhdG9yKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChkb25lKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xv
cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxs
b2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuaAkocmV2aXNpb24gMjEzNzYxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xv
cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMCArMjcsMTkgQEAKIAogI2lmIEVOQUJMRShC
M19KSVQpCiAKKyNpbmNsdWRlICJDUFUuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgiCisKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIAogY2xhc3MgQ29kZTsK
IAoraW5saW5lIGJvb2wgdXNlSVJDKCkKK3sKKyAgICByZXR1cm4gT3B0aW9uczo6YWlyRm9yY2VJ
UkNBbGxvY2F0b3IoKQorICAgICAgICB8fCAoIWlzQVJNNjQoKSAmJiAhT3B0aW9uczo6YWlyRm9y
Y2VCcmlnZ3NBbGxvY2F0b3IoKSk7Cit9CisKIC8vIFdlIGhhdmUgdHdvIHJlZ2lzdGVyIGFsbG9j
YXRvcnMsIGJvdGggZnVuZGFtZW50YWxseSBkZXJpdmVkIGZyb20gQ2hhaXRpbidzIFlvcmt0b3du
CiAvLyBhbGxvY2F0b3I6CiAvLyBodHRwOi8vY3MuZ211LmVkdS9+d2hpdGUvQ1M2NDAvcDk4LWNo
YWl0aW4ucGRmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCShy
ZXZpc2lvbiAyMTM3NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw2ICsyNjgsMjAgQEAgdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEFyZwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBBcmc6OlRlbXBlcmF0
dXJlIHRlbXBlcmF0dXJlKQoreworICAgIHN3aXRjaCAodGVtcGVyYXR1cmUpIHsKKyAgICBjYXNl
IEFyZzo6Q29sZDoKKyAgICAgICAgb3V0LnByaW50KCJDb2xkIik7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEFyZzo6V2FybToKKyAgICAgICAgb3V0LnByaW50KCJXYXJtIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgQXJnOjpSb2xlIHJvbGUpCiB7
CiAgICAgc3dpdGNoIChyb2xlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFyZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QXJnLmgJKHJldmlzaW9uIDIxMzc2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQXJnLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDExIEBAIHB1YmxpYzoKICAgICAg
ICAgU3BlY2lhbCwKICAgICAgICAgV2lkdGhBcmcKICAgICB9OworICAgIAorICAgIGVudW0gVGVt
cGVyYXR1cmUgOiBpbnQ4X3QgeworICAgICAgICBDb2xkLAorICAgICAgICBXYXJtCisgICAgfTsK
IAogICAgIGVudW0gUm9sZSA6IGludDhfdCB7CiAgICAgICAgIC8vIFVzZSBtZWFucyB0aGF0IHRo
ZSBJbnN0IHdpbGwgcmVhZCBmcm9tIHRoaXMgdmFsdWUgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVs
c2UuCkBAIC0yNDMsNiArMjQ4LDExIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CisgICAgCisgICAgc3RhdGljIFRlbXBlcmF0dXJlIHRl
bXBlcmF0dXJlKFJvbGUgcm9sZSkKKyAgICB7CisgICAgICAgIHJldHVybiBpc0NvbGRVc2Uocm9s
ZSkgPyBDb2xkIDogV2FybTsKKyAgICB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIFJv
bGUgaW1wbGllcyB0aGF0IHRoZSBJbnN0IHdpbGwgVXNlIHRoZSBBcmcgYmVmb3JlIGRvaW5nIGFu
eXRoaW5nIGVsc2UuCiAgICAgc3RhdGljIGJvb2wgaXNFYXJseVVzZShSb2xlIHJvbGUpCkBAIC0x
MzQzLDYgKzEzNTMsNyBAQCBzdHJ1Y3QgQXJnSGFzaCB7CiBuYW1lc3BhY2UgV1RGIHsKIAogSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpCMzo6
QWlyOjpBcmc6OktpbmQpOworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiwgSlNDOjpCMzo6QWlyOjpBcmc6OlRlbXBlcmF0dXJlKTsKIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6QjM6OkFpcjo6QXJn
OjpSb2xlKTsKIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYsIEpTQzo6QjM6OkFpcjo6QXJnOjpTaWduZWRuZXNzKTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJCcmVha0NyaXRpY2FsRWRnZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQnJlYWtDcml0aWNhbEVkZ2VzLmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJyZWFrQ3Jp
dGljYWxFZGdlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQWlyQnJlYWtDcml0aWNhbEVkZ2VzLmgiCisKKyNpZiBFTkFCTEUoQjNfSklU
KQorCisjaW5jbHVkZSAiQWlyQmxvY2tJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJBaXJDb2Rl
LmgiCisjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworCit2b2lkIGJyZWFrQ3JpdGljYWxFZGdlcyhDb2Rl
JiBjb2RlKQoreworICAgIEJsb2NrSW5zZXJ0aW9uU2V0IGluc2VydGlvblNldChjb2RlKTsKKyAg
ICAKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogY29kZSkgeworICAgICAgICBpZiAoYmxv
Y2stPm51bVN1Y2Nlc3NvcnMoKSA8PSAxKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IAorICAgICAgICBmb3IgKEJhc2ljQmxvY2sqJiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29y
QmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGlmIChzdWNjZXNzb3ItPm51bVByZWRlY2Vzc29ycygp
IDw9IDEpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIHBhZCA9IGluc2VydGlvblNldC5pbnNlcnRCZWZvcmUoc3VjY2Vzc29y
LCBzdWNjZXNzb3ItPmZyZXF1ZW5jeSgpKTsKKyAgICAgICAgICAgIHBhZC0+YXBwZW5kKEp1bXAs
IHN1Y2Nlc3Nvci0+YXQoMCkub3JpZ2luKTsKKyAgICAgICAgICAgIHBhZC0+c2V0U3VjY2Vzc29y
cyhzdWNjZXNzb3IpOworICAgICAgICAgICAgcGFkLT5hZGRQcmVkZWNlc3NvcihibG9jayk7Cisg
ICAgICAgICAgICBzdWNjZXNzb3ItPnJlcGxhY2VQcmVkZWNlc3NvcihibG9jaywgcGFkKTsKKyAg
ICAgICAgICAgIHN1Y2Nlc3NvciA9IHBhZDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBp
bnNlcnRpb25TZXQuZXhlY3V0ZSgpOworfQorCit9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6
QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckJyZWFrQ3JpdGljYWxFZGdlcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQnJlYWtDcml0aWNhbEVkZ2VzLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJCcmVha0NyaXRpY2FsRWRn
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEIz
X0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewor
CitjbGFzcyBDb2RlOworCit2b2lkIGJyZWFrQ3JpdGljYWxFZGdlcyhDb2RlJik7CisKK30gfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zZXJ0aW9uU2V0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnNlcnRpb25TZXQu
aAkocmV2aXNpb24gMjEzNzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJ
bnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTEgKzQxLDExIEBAIHR5cGVkZWYg
V1RGOjpJbnNlcnRpb248SW5zdD4gSW5zZXJ0aW9uOwogY2xhc3MgSW5zZXJ0aW9uU2V0IHsKIHB1
YmxpYzoKICAgICBJbnNlcnRpb25TZXQoQ29kZSYgY29kZSkKLSAgICAgICAgOiBtX2NvZGUoY29k
ZSkKKyAgICAgICAgOiBtX2NvZGUoJmNvZGUpCiAgICAgewogICAgIH0KIAotICAgIENvZGUmIGNv
ZGUoKSB7IHJldHVybiBtX2NvZGU7IH0KKyAgICBDb2RlJiBjb2RlKCkgeyByZXR1cm4gKm1fY29k
ZTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFwcGVuZEluc2VydGlv
bihUJiYgaW5zZXJ0aW9uKQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBleGVj
dXRlKEJhc2ljQmxvY2sqKTsKIAogcHJpdmF0ZToKLSAgICBDb2RlJiBtX2NvZGU7CisgICAgQ29k
ZSogbV9jb2RlOyAvLyBQb2ludGVyIHNvIHRoYXQgdGhpcyBjYW4gYmUgY29waWVkLgogICAgIFZl
Y3RvcjxJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckxpdmVuZXNzLmgJKHJldmlzaW9uIDIxMzc2MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3MuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNw
YWNlIEFpciB7CiAKLXRlbXBsYXRlPEJhbmsgYWRhcHRlckJhbms+Cit0ZW1wbGF0ZTxCYW5rIGFk
YXB0ZXJCYW5rLCBBcmc6OlRlbXBlcmF0dXJlIG1pbmltdW1UZW1wZXJhdHVyZSA9IEFyZzo6Q29s
ZD4KIHN0cnVjdCBUbXBMaXZlbmVzc0FkYXB0ZXIgewogICAgIHR5cGVkZWYgVG1wIFRoaW5nOwog
ICAgIHR5cGVkZWYgSGFzaFNldDx1bnNpZ25lZD4gSW5kZXhTZXQ7CkBAIC01Miw2ICs1Miw3IEBA
IHN0cnVjdCBUbXBMaXZlbmVzc0FkYXB0ZXIgewogICAgICAgICByZXR1cm4gQWJzb2x1dGVUbXBN
YXBwZXI8YWRhcHRlckJhbms+OjphYnNvbHV0ZUluZGV4KG51bVRtcHMpOwogICAgIH0KICAgICBz
dGF0aWMgYm9vbCBhY2NlcHRzQmFuayhCYW5rIGJhbmspIHsgcmV0dXJuIGJhbmsgPT0gYWRhcHRl
ckJhbms7IH0KKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzUm9sZShBcmc6OlJvbGUgcm9sZSkgeyBy
ZXR1cm4gQXJnOjp0ZW1wZXJhdHVyZShyb2xlKSA+PSBtaW5pbXVtVGVtcGVyYXR1cmU7IH0KICAg
ICBzdGF0aWMgdW5zaWduZWQgdmFsdWVUb0luZGV4KFRtcCB0bXApIHsgcmV0dXJuIEFic29sdXRl
VG1wTWFwcGVyPGFkYXB0ZXJCYW5rPjo6YWJzb2x1dGVJbmRleCh0bXApOyB9CiAgICAgc3RhdGlj
IFRtcCBpbmRleFRvVmFsdWUodW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIEFic29sdXRlVG1wTWFw
cGVyPGFkYXB0ZXJCYW5rPjo6dG1wRnJvbUFic29sdXRlSW5kZXgoaW5kZXgpOyB9CiB9OwpAQCAt
NzAsNiArNzEsNyBAQCBzdHJ1Y3QgU3RhY2tTbG90TGl2ZW5lc3NBZGFwdGVyIHsKICAgICAgICAg
cmV0dXJuIGNvZGUuc3RhY2tTbG90cygpLnNpemUoKTsKICAgICB9CiAgICAgc3RhdGljIGJvb2wg
YWNjZXB0c0JhbmsoQmFuaykgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGFjY2Vw
dHNSb2xlKEFyZzo6Um9sZSkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHN0YXRpYyB1bnNpZ25lZCB2
YWx1ZVRvSW5kZXgoU3RhY2tTbG90KiBzdGFja1Nsb3QpIHsgcmV0dXJuIHN0YWNrU2xvdC0+aW5k
ZXgoKTsgfQogICAgIFN0YWNrU2xvdCogaW5kZXhUb1ZhbHVlKHVuc2lnbmVkIGluZGV4KSB7IHJl
dHVybiBtX2NvZGUuc3RhY2tTbG90cygpW2luZGV4XTsgfQogCkBAIC04OSw2ICs5MSw3IEBAIHN0
cnVjdCBSZWdMaXZlbmVzc0FkYXB0ZXIgewogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGFjY2Vw
dHNCYW5rKEJhbmspIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBhY2NlcHRzUm9s
ZShBcmc6OlJvbGUpIHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgdW5zaWduZWQgdmFsdWVU
b0luZGV4KFJlZyByZWcpIHsgcmV0dXJuIHJlZy5pbmRleCgpOyB9CiAgICAgUmVnIGluZGV4VG9W
YWx1ZSh1bnNpZ25lZCBpbmRleCkgeyByZXR1cm4gUmVnOjpmcm9tSW5kZXgoaW5kZXgpOyB9CiB9
OwpAQCAtMTExLDcgKzExNCw5IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgYmxvY2stPmxhc3Qo
KS5mb3JFYWNoPHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nPigKICAgICAgICAgICAgICAgICBbJl0g
KHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nJiB0aGluZywgQXJnOjpSb2xlIHJvbGUsIEJhbmsgYmFu
aywgV2lkdGgpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNMYXRlVXNlKHJvbGUp
ICYmIEFkYXB0ZXI6OmFjY2VwdHNCYW5rKGJhbmspKQorICAgICAgICAgICAgICAgICAgICBpZiAo
QXJnOjppc0xhdGVVc2Uocm9sZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIEFkYXB0ZXI6
OmFjY2VwdHNCYW5rKGJhbmspCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBBZGFwdGVyOjph
Y2NlcHRzUm9sZShyb2xlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxpdmVBdFRhaWwuYWRk
KEFkYXB0ZXI6OnZhbHVlVG9JbmRleCh0aGluZykpOwogICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICB9CkBAIC0xNDAsNyArMTQ1LDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIC8vIEhh
bmRsZSB0aGUgZWFybHkgZGVmJ3Mgb2YgdGhlIGZpcnN0IGluc3RydWN0aW9uLgogICAgICAgICAg
ICAgICAgIGJsb2NrLT5hdCgwKS5mb3JFYWNoPHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nPigKICAg
ICAgICAgICAgICAgICAgICAgWyZdICh0eXBlbmFtZSBBZGFwdGVyOjpUaGluZyYgdGhpbmcsIEFy
Zzo6Um9sZSByb2xlLCBCYW5rIGJhbmssIFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoQXJnOjppc0Vhcmx5RGVmKHJvbGUpICYmIEFkYXB0ZXI6OmFjY2VwdHNCYW5rKGJhbmsp
KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNFYXJseURlZihyb2xlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICYmIEFkYXB0ZXI6OmFjY2VwdHNCYW5rKGJhbmspCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgQWRhcHRlcjo6YWNjZXB0c1JvbGUocm9sZSkp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV93b3Jrc2V0LnJlbW92ZShBZGFwdGVyOjp2
YWx1ZVRvSW5kZXgodGhpbmcpKTsKICAgICAgICAgICAgICAgICAgICAgfSk7CiAKQEAgLTI1NSw3
ICsyNjIsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgSW5zdCYgbmV4dEluc3QgPSBtX2Js
b2NrLT5hdChpbnN0SW5kZXggKyAxKTsKICAgICAgICAgICAgICAgICBuZXh0SW5zdC5mb3JFYWNo
PHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nPigKICAgICAgICAgICAgICAgICAgICAgWyZdICh0eXBl
bmFtZSBBZGFwdGVyOjpUaGluZyYgdGhpbmcsIEFyZzo6Um9sZSByb2xlLCBCYW5rIGJhbmssIFdp
ZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJnOjppc0Vhcmx5RGVmKHJvbGUp
ICYmIEFkYXB0ZXI6OmFjY2VwdHNCYW5rKGJhbmspKQorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKEFyZzo6aXNFYXJseURlZihyb2xlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYm
IEFkYXB0ZXI6OmFjY2VwdHNCYW5rKGJhbmspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JiYgQWRhcHRlcjo6YWNjZXB0c1JvbGUocm9sZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd29ya3NldC5yZW1vdmUoQWRhcHRlcjo6dmFsdWVUb0luZGV4KHRoaW5nKSk7CiAgICAgICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQpAQCAtMjYzLDE0ICsyNzIsMTggQEAgcHVi
bGljOgogICAgICAgICAgICAgLy8gVGhlbiBoYW5kbGUgZGVmJ3MuCiAgICAgICAgICAgICBpbnN0
LmZvckVhY2g8dHlwZW5hbWUgQWRhcHRlcjo6VGhpbmc+KAogICAgICAgICAgICAgICAgIFsmXSAo
dHlwZW5hbWUgQWRhcHRlcjo6VGhpbmcmIHRoaW5nLCBBcmc6OlJvbGUgcm9sZSwgQmFuayBiYW5r
LCBXaWR0aCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoQXJnOjppc0xhdGVEZWYocm9sZSkg
JiYgQWRhcHRlcjo6YWNjZXB0c0JhbmsoYmFuaykpCisgICAgICAgICAgICAgICAgICAgIGlmIChB
cmc6OmlzTGF0ZURlZihyb2xlKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgQWRhcHRlcjo6
YWNjZXB0c0JhbmsoYmFuaykKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIEFkYXB0ZXI6OmFj
Y2VwdHNSb2xlKHJvbGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NldC5yZW1vdmUo
QWRhcHRlcjo6dmFsdWVUb0luZGV4KHRoaW5nKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAKICAg
ICAgICAgICAgIC8vIFRoZW4gaGFuZGxlIHVzZSdzLgogICAgICAgICAgICAgaW5zdC5mb3JFYWNo
PHR5cGVuYW1lIEFkYXB0ZXI6OlRoaW5nPigKICAgICAgICAgICAgICAgICBbJl0gKHR5cGVuYW1l
IEFkYXB0ZXI6OlRoaW5nJiB0aGluZywgQXJnOjpSb2xlIHJvbGUsIEJhbmsgYmFuaywgV2lkdGgp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNFYXJseVVzZShyb2xlKSAmJiBBZGFw
dGVyOjphY2NlcHRzQmFuayhiYW5rKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNF
YXJseVVzZShyb2xlKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgQWRhcHRlcjo6YWNjZXB0
c0JhbmsoYmFuaykKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIEFkYXB0ZXI6OmFjY2VwdHNS
b2xlKHJvbGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NldC5hZGQoQWRhcHRlcjo6
dmFsdWVUb0luZGV4KHRoaW5nKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAKQEAgLTI3OSwxMiAr
MjkyLDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBJbnN0JiBwcmV2SW5zdCA9IG1fYmxv
Y2stPmF0KGluc3RJbmRleCAtIDEpOwogICAgICAgICAgICAgICAgIHByZXZJbnN0LmZvckVhY2g8
dHlwZW5hbWUgQWRhcHRlcjo6VGhpbmc+KAogICAgICAgICAgICAgICAgICAgICBbJl0gKHR5cGVu
YW1lIEFkYXB0ZXI6OlRoaW5nJiB0aGluZywgQXJnOjpSb2xlIHJvbGUsIEJhbmsgYmFuaywgV2lk
dGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcmc6OmlzTGF0ZVVzZShyb2xlKSAm
JiBBZGFwdGVyOjphY2NlcHRzQmFuayhiYW5rKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChBcmc6OmlzTGF0ZVVzZShyb2xlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIEFk
YXB0ZXI6OmFjY2VwdHNCYW5rKGJhbmspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYg
QWRhcHRlcjo6YWNjZXB0c1JvbGUocm9sZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d29ya3NldC5hZGQoQWRhcHRlcjo6dmFsdWVUb0luZGV4KHRoaW5nKSk7CiAgICAgICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KKyAgICAgICAgCiAgICAgcHJp
dmF0ZToKICAgICAgICAgQWJzdHJhY3RMaXZlbmVzcyYgbV9saXZlbmVzczsKICAgICAgICAgQmFz
aWNCbG9jayogbV9ibG9jazsKQEAgLTM3OSw4ICszOTQsOCBAQCBwcml2YXRlOgogICAgIEluZGV4
TWFwPEJhc2ljQmxvY2ssIHR5cGVuYW1lIEFkYXB0ZXI6OkluZGV4U2V0PiBtX2xpdmVBdFRhaWw7
CiB9OwogCi10ZW1wbGF0ZTxCYW5rIGJhbms+Ci11c2luZyBUbXBMaXZlbmVzcyA9IEFic3RyYWN0
TGl2ZW5lc3M8VG1wTGl2ZW5lc3NBZGFwdGVyPGJhbms+PjsKK3RlbXBsYXRlPEJhbmsgYmFuaywg
QXJnOjpUZW1wZXJhdHVyZSBtaW5pbXVtVGVtcGVyYXR1cmUgPSBBcmc6OkNvbGQ+Cit1c2luZyBU
bXBMaXZlbmVzcyA9IEFic3RyYWN0TGl2ZW5lc3M8VG1wTGl2ZW5lc3NBZGFwdGVyPGJhbmssIG1p
bmltdW1UZW1wZXJhdHVyZT4+OwogCiB0eXBlZGVmIEFic3RyYWN0TGl2ZW5lc3M8VG1wTGl2ZW5l
c3NBZGFwdGVyPEdQPj4gR1BMaXZlbmVzczsKIHR5cGVkZWYgQWJzdHJhY3RMaXZlbmVzczxUbXBM
aXZlbmVzc0FkYXB0ZXI8RlA+PiBGUExpdmVuZXNzOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzc2MSkK
KysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTctMDMtMTEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBB
aXIgc2hvdWxkIGJlIHBvd2VyZnVsIGVub3VnaCB0byBzdXBwb3J0IFRtcC1zcGxpdHRpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTUxNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGVh
Y2ggSW5kZXhNYXAgaG93IHRvIGhhbmRsZSB0eXBlcyB0aGF0IGRvbid0IGhhdmUgYSBkZWZhdWx0
IGNvbnN0cnVjdG9yLiBUaGlzIG1ha2VzIGl0CisgICAgICAgIGVhc3kgdG8gY3JlYXRlIGEgSW5k
ZXhNYXA8QmFzaWNCbG9jaywgSW5zZXJ0aW9uU2V0Piwgd2hpY2ggaXMgYSBzdXBlciBwb3dlcmZ1
bAorICAgICAgICBjb25zdHJ1Y3QuCisKKyAgICAgICAgKiB3dGYvSW5kZXhNYXAuaDoKKyAgICAg
ICAgKFdURjo6SW5kZXhNYXA6OkluZGV4TWFwKToKKyAgICAgICAgKFdURjo6SW5kZXhNYXA6OnJl
c2l6ZSk6CisgICAgICAgIChXVEY6OkluZGV4TWFwOjpjbGVhcik6CisKIDIwMTctMDMtMTEgIENz
YWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9O
KHIyMTM2NDUpOiBJdCBtYWRlIEpTQyB0ZXN0cyBzdXBlciBzbG93IGFuZCB0aW1lb3V0IG9uIEFB
cmNoNjQgTGludXgKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0luZGV4TWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvSW5kZXhNYXAuaAkocmV2aXNpb24gMjEzNzYxKQorKysgU291cmNl
L1dURi93dGYvSW5kZXhNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDE5ICszNiwyNiBAQCBu
YW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWU+CiBj
bGFzcyBJbmRleE1hcCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgSW5kZXhNYXAoc2l6ZV90IHNp
emUgPSAwKQorICAgIEluZGV4TWFwKCkKICAgICB7Ci0gICAgICAgIG1fdmVjdG9yLmZpbGwoVmFs
dWUoKSwgc2l6ZSk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgZXhwbGljaXQgSW5kZXhNYXAoc2l6ZV90IHNpemUsIEFyZ3MmJi4uLiBhcmdzKQorICAg
IHsKKyAgICAgICAgbV92ZWN0b3IuZmlsbChWYWx1ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pLCBzaXplKTsKICAgICB9CiAKLSAgICB2b2lkIHJlc2l6ZShzaXplX3Qgc2l6ZSkKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgcmVzaXplKHNpemVfdCBzaXplLCBB
cmdzJiYuLi4gYXJncykKICAgICB7Ci0gICAgICAgIG1fdmVjdG9yLmZpbGwoVmFsdWUoKSwgc2l6
ZSk7CisgICAgICAgIG1fdmVjdG9yLmZpbGwoVmFsdWUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKSwgc2l6ZSk7CiAgICAgfQogCi0gICAgdm9pZCBjbGVhcigpCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGNsZWFyKEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKLSAg
ICAgICAgbV92ZWN0b3IuZmlsbChWYWx1ZSgpLCBtX3ZlY3Rvci5zaXplKCkpOworICAgICAgICBt
X3ZlY3Rvci5maWxsKFZhbHVlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLiksIG1fdmVjdG9y
LnNpemUoKSk7CiAgICAgfQogCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Zl
Y3Rvci5zaXplKCk7IH0K
</data>
<flag name="review"
          id="325744"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>