<?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>15525</bug_id>
          
          <creation_ts>2007-10-15 17:39:51 -0700</creation_ts>
          <short_desc>transpose (control-T) should do the last two characters on a line if at end of line</short_desc>
          <delta_ts>2007-10-16 14:50:16 -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>HTML Editing</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>58611</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-15 17:39:51 -0700</bug_when>
    <thetext>As in emacs, a transpose command should do the last two characters on a line if you do it at the end of a line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58612</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-15 17:40:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/5280724&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58613</commentid>
    <comment_count>2</comment_count>
      <attachid>16682</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-15 17:52:54 -0700</bug_when>
    <thetext>Created attachment 16682
patch to fix this and move Control-T code into WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58681</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-16 14:50:16 -0700</bug_when>
    <thetext>Committed revision 26683.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16682</attachid>
            <date>2007-10-15 17:52:54 -0700</date>
            <delta_ts>2007-10-16 11:16:02 -0700</delta_ts>
            <desc>patch to fix this and move Control-T code into WebCore</desc>
            <filename>ControlTPatch.txt</filename>
            <type>text/plain</type>
            <size>26287</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjYzOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMDctMTAtMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gZml4
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI1CisgICAgICAgICAg
dHJhbnNwb3NlIChjb250cm9sLVQpIHNob3VsZCBkbyB0aGUgbGFzdCB0d28gY2hhcmFjdGVycyBv
biBhIGxpbmUgaWYgYXQgZW5kIG9mIGxpbmUKKyAgICAgICAgLSByZW1vdmUgdW51c2VkIENvbW1h
bmRCeU5hbWUgY2xhc3MKKyAgICAgICAgLSBtb3ZlIHRyYW5zcG9zZSBjb21tYW5kIGltcGxlbWVu
dGF0aW9uIGhlcmUgZnJvbSBNYWMgT1MgWCBXZWJLaXQKKworICAgICAgICAqIGVkaXRpbmcvRWRp
dG9yLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY1RyYW5zcG9zZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp0cmFuc3Bv
c2UpOiBBZGRlZC4gVGhpcyBoYXMgdGhlIHRyYW5zcG9zZSBpbXBsZW1lbnRhdGlvbiBmcm9tCisg
ICAgICAgIFdlYkNvcmVGcmFtZUJyaWRnZSBhbmQgV2ViSFRNTFZpZXcsIHRyYW5zbGF0ZWQgaW50
byBXZWJDb3JlLXN0eWxlIEMrKyBhbmQgd2l0aAorICAgICAgICBhIHNwZWNpYWwgY2FzZSBmb3Ig
dGhlIGVuZCBvZiBhIHBhcmFncmFwaC4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuaDogUmVtb3Zl
ZCB1bnVzZWQgY29tbWFuZCgpIGZ1bmN0aW9uIG1lbWJlci4KKyAgICAgICAgKiBwYWdlL0ZyYW1l
UHJpdmF0ZS5oOiBSZW1vdmVkIHVudXNlZCBtX2NvbW1hbmQgZGF0YSBtZW1iZXIuCisgICAgICAg
ICogcGFnZS9GcmFtZS5jcHA6IERpdHRvLgorCisgICAgICAgICogcGFnZS9tYWMvV2ViQ29yZUZy
YW1lQnJpZGdlLmg6IFJlbW92ZWQgcmFuZ2VPZkNoYXJhY3RlcnNBcm91bmRDYXJldCBtZXRob2Qu
CisgICAgICAgICogcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tOiBEaXR0by4KKworICAg
ICAgICAqIFdlYkNvcmUucHJvOiBSZW1vdmVkIENvbW1hbmRCeU5hbWUuaC9jcHAuCisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5n
L0NvbW1hbmRCeU5hbWUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGVkaXRpbmcvQ29tbWFuZEJ5
TmFtZS5oOiBSZW1vdmVkLgorCiAyMDA3LTEwLTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNaXR6LgpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
LnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiAyNjE4NikK
KysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTQzNyw3ICs0MzcsNiBA
QCBTT1VSQ0VTICs9IFwKICAgICBlZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmNwcCBcCiAgICAg
ZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgXAogICAgIGVkaXRpbmcvQnJlYWtCbG9ja3F1
b3RlQ29tbWFuZC5jcHAgXAotICAgIGVkaXRpbmcvQ29tbWFuZEJ5TmFtZS5jcHAgXAogICAgIGVk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIFwKICAgICBlZGl0aW5nL0NyZWF0ZUxpbmtD
b21tYW5kLmNwcCBcCiAgICAgZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcCBcCklu
ZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDI2MTg2KQor
KysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpA
QCAtNjE0MSwxNCArNjE0MSw2IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcQ29tbWFuZEJ5TmFtZS5jcHAiDQotCQkJCT4NCi0J
CQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxlZGl0aW5nXENvbW1h
bmRCeU5hbWUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGVkaXRpbmdcQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIg0KIAkJCQk+DQogCQkJ
PC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyNjE4NikKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMDksOCArMzA5LDYgQEAKIAkJNEI2RkE2RjcwQzM5
RTRBMTAwMDg3MDExIC8qIFNtYXJ0UmVwbGFjZUNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCNkZBNkY2MEMzOUU0QTEwMDA4NzAxMSAvKiBTbWFy
dFJlcGxhY2VDRi5jcHAgKi87IH07CiAJCTRCOEFGNEFBMEIxQ0UwMkIwMDY4NzY5MCAvKiBDbGlw
Ym9hcmRBY2Nlc3NQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRCOEFGNEE5MEIxQ0UwMkIwMDY4NzY5MCAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
QkFFOTVCMTBCMkZBOUNFMDBBRUQ4QTAgLyogRWRpdG9yRGVsZXRlQWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkFFOTVCMDBCMkZBOUNFMDBB
RUQ4QTAgLyogRWRpdG9yRGVsZXRlQWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNEJCREJGN0QwQUNDOTI5MDAwNUY2RTk3IC8qIENvbW1h
bmRCeU5hbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNEJCREJGN0IwQUNDOTI5MDAwNUY2RTk3IC8qIENvbW1hbmRCeU5hbWUuY3BwICovOyB9Owot
CQk0QkJEQkY3RTBBQ0M5MjkwMDA1RjZFOTcgLyogQ29tbWFuZEJ5TmFtZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJCREJGN0MwQUNDOTI5MDAwNUY2
RTk3IC8qIENvbW1hbmRCeU5hbWUuaCAqLzsgfTsKIAkJNEUxOTU5MjEwQTM5REFCQTAwMjIwRkU1
IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRFMTk1OTFGMEEzOURBQkEwMDIyMEZFNSAvKiBNZWRpYUZlYXR1cmVO
YW1lcy5jcHAgKi87IH07CiAJCTRFMTk1OTIyMEEzOURBQkEwMDIyMEZFNSAvKiBNZWRpYUZlYXR1
cmVOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEUxOTU5MjAwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmggKi87IH07CiAJ
CTRFMTk1OTI5MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRFMTk1OTIzMEEzOURBQ0MwMDIyMEZF
NSAvKiBNZWRpYVF1ZXJ5LmNwcCAqLzsgfTsKQEAgLTM1NjMsOCArMzU2MSw2IEBACiAJCTRCNkZB
NkY2MEMzOUU0QTEwMDA4NzAxMSAvKiBTbWFydFJlcGxhY2VDRi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbWFydFJlcGxhY2VDRi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRCOEFGNEE5MEIxQ0UwMkIwMDY4NzY5MCAvKiBDbGlwYm9hcmRBY2Nl
c3NQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBib2FyZEFj
Y2Vzc1BvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkFFOTVCMDBCMkZB
OUNFMDBBRUQ4QTAgLyogRWRpdG9yRGVsZXRlQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEVkaXRvckRlbGV0ZUFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0QkJEQkY3QjBBQ0M5MjkwMDA1RjZFOTcgLyogQ29tbWFuZEJ5TmFtZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tbWFuZEJ5TmFtZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRCQkRCRjdDMEFDQzkyOTAwMDVGNkU5NyAvKiBD
b21tYW5kQnlOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tYW5k
QnlOYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRFMTk1OTFGMEEzOURBQkEw
MDIyMEZFNSAvKiBNZWRpYUZlYXR1cmVOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVkaWFGZWF0dXJlTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0RTE5NTkyMDBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRmVhdHVyZU5hbWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRFMTk1OTIzMEEzOURBQ0MwMDIyMEZFNSAv
KiBNZWRpYVF1ZXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
ZWRpYVF1ZXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgyNjksOCArODI2
NSw2IEBACiAJCQkJOTMzMDlEOEEwOTlFNjQ5MTAwNTZFNTgxIC8qIEFwcGx5U3R5bGVDb21tYW5k
LmggKi8sCiAJCQkJOTMzMDlEOEIwOTlFNjQ5MTAwNTZFNTgxIC8qIEJyZWFrQmxvY2txdW90ZUNv
bW1hbmQuY3BwICovLAogCQkJCTkzMzA5RDhDMDk5RTY0OTEwMDU2RTU4MSAvKiBCcmVha0Jsb2Nr
cXVvdGVDb21tYW5kLmggKi8sCi0JCQkJNEJCREJGN0IwQUNDOTI5MDAwNUY2RTk3IC8qIENvbW1h
bmRCeU5hbWUuY3BwICovLAotCQkJCTRCQkRCRjdDMEFDQzkyOTAwMDVGNkU5NyAvKiBDb21tYW5k
QnlOYW1lLmggKi8sCiAJCQkJOTMzMDlEOEQwOTlFNjQ5MTAwNTZFNTgxIC8qIENvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcCAqLywKIAkJCQk5MzMwOUQ4RTA5OUU2NDkxMDA1NkU1ODEgLyogQ29tcG9z
aXRlRWRpdENvbW1hbmQuaCAqLywKIAkJCQlEMEIwNTU2NzA5QzY3MDAxMDAzMDdFNDMgLyogQ3Jl
YXRlTGlua0NvbW1hbmQuY3BwICovLApAQCAtMTEyMzgsNyArMTEyMzIsNiBAQAogCQkJCTg1OTg5
RENGMEFDQzhCQkQwMEEwQkM1MSAvKiBET01PdmVyZmxvd0V2ZW50SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1OTg5REQwMEFDQzhCQkQwMEEwQkM1MSAvKiBET01VSUV2ZW50SW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1OTg5REQxMEFDQzhCQkQwMEEwQkM1MSAvKiBET01X
aGVlbEV2ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTRCQkRCRjdFMEFDQzkyOTAw
MDVGNkU5NyAvKiBDb21tYW5kQnlOYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUFDRUYwQzBB
Q0RDQ0NGMDAxMjE0RkYgLyogRE9NU1ZHQW5pbWF0ZWRQYXRoRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODVBQ0VGMEQwQUNEQ0NDRjAwMTIxNEZGIC8qIERPTVNWR0FuaW1hdGVkUG9pbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NUFDRUYwRTBBQ0RDQ0NGMDAxMjE0RkYgLyogRE9NU1ZHQW5p
bWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggaW4gSGVhZGVycyAqLywKQEAgLTEyNzc1LDcgKzEy
NzY4LDYgQEAKIAkJCQk4NTBGRDFGQTBBQzlDODQyMDAxMjNEMEQgLyogRE9NU1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVENzlBREIwQUNBMTdFQjAwRjAy
RkM1IC8qIERPTVNWR1N0cmluZ0xpc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTlDOUM0MDBB
Q0FDQ0NDMDA3OTE2MTEgLyogRE9NU1ZHUmVjdEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKLQkJ
CQk0QkJEQkY3RDBBQ0M5MjkwMDA1RjZFOTcgLyogQ29tbWFuZEJ5TmFtZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NUFDRUYwRjBBQ0RDQ0NGMDAxMjE0RkYgLyogRE9NU1ZHQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVBQ0VGMTEwQUNEQ0NDRjAw
MTIxNEZGIC8qIERPTVNWR1ByZXNlcnZlQXNwZWN0UmF0aW8ubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk4NUFDRUY3RDBBQ0RDRkNFMDAxMjE0RkYgLyogRE9NU1ZHQUVsZW1lbnQubW0gaW4gU291cmNl
cyAqLywKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9Db21tYW5kQnlOYW1lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQ29tbWFuZEJ5TmFtZS5jcHAJKHJldmlzaW9uIDI2MTg2KQor
KysgV2ViQ29yZS9lZGl0aW5nL0NvbW1hbmRCeU5hbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDI0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRyb2xsdGVj
aCBBU0EKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLSAKLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDb21tYW5kQnlO
YW1lLmgiCi0KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgIkRvY3VtZW50Lmgi
Ci0jaW5jbHVkZSAiRWRpdG9yLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJQYWdl
LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJTZWxlY3Rpb25Db250
cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJTdHJpbmdIYXNoLmgi
Ci0jaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEZyYW1lOwotCi1uYW1lc3BhY2UgewotCi1zdHJ1Y3QgQ29tbWFuZEltcCB7Ci0gICAgYm9v
bCAoKmV4ZWNGbikoRnJhbWUqIGZyYW1lKTsKLSAgICBib29sICgqZW5hYmxlZEZuKShGcmFtZSog
ZnJhbWUpOwotfTsKLQotdHlwZWRlZiBIYXNoTWFwPFN0cmluZ0ltcGwqLCBjb25zdCBDb21tYW5k
SW1wKiwgQ2FzZUluc2Vuc2l0aXZlSGFzaDxTdHJpbmdJbXBsKj4gPiBDb21tYW5kTWFwOwotCi1D
b21tYW5kTWFwKiBjcmVhdGVDb21tYW5kRGljdGlvbmFyeSgpOwotCi1jb25zdCBDb21tYW5kSW1w
KiBjb21tYW5kSW1wKGNvbnN0IFN0cmluZyYgY29tbWFuZCkKLXsKLSAgICBzdGF0aWMgQ29tbWFu
ZE1hcCogY29tbWFuZERpY3Rpb25hcnkgPSBjcmVhdGVDb21tYW5kRGljdGlvbmFyeSgpOwotICAg
IHJldHVybiBjb21tYW5kRGljdGlvbmFyeS0+Z2V0KGNvbW1hbmQuaW1wbCgpKTsKLX0KLQotLy8g
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLy8gCi0vLyBleGVjQ29tbWFuZCBmdW5jdGlvbiBpbXBsZW1l
bnRhdGlvbnMKLS8vIAotCi1ib29sIGV4ZWNDb3B5KEZyYW1lKiBmcmFtZSkKLXsKLSAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvcHkoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBleGVjQ3V0
KEZyYW1lKiBmcmFtZSkKLXsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmN1dCgpOwotICAgIHJldHVy
biB0cnVlOwotfQotCi1ib29sIGV4ZWNEZWxldGUoRnJhbWUqIGZyYW1lKQotewotICAgIFR5cGlu
Z0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoZnJhbWUtPmRvY3VtZW50KCksIGZyYW1lLT5zZWxl
Y3Rpb25HcmFudWxhcml0eSgpID09IFdvcmRHcmFudWxhcml0eSk7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLWJvb2wgZXhlY0ZvcndhcmREZWxldGUoRnJhbWUqIGZyYW1lKQotewotICAgIFR5cGlu
Z0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKGZyYW1lLT5kb2N1bWVudCgpKTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBleGVjUGFzdGUoRnJhbWUqIGZyYW1lKQotewotICAg
IGZyYW1lLT5lZGl0b3IoKS0+cGFzdGUoKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBl
eGVjTW92ZUxlZnQoRnJhbWUqIGZyYW1lKQotewotICAgIGZyYW1lLT5zZWxlY3Rpb25Db250cm9s
bGVyKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9s
bGVyOjpMRUZULCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLWJvb2wgZXhlY01vdmVSaWdodChGcmFtZSogZnJhbWUpCi17Ci0gICAgZnJhbWUtPnNl
bGVjdGlvbkNvbnRyb2xsZXIoKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgZXhlY01vdmVVcChGcmFtZSogZnJhbWUpCi17Ci0g
ICAgZnJhbWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xs
ZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBMaW5lR3JhbnVsYXJpdHks
IHRydWUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIGV4ZWNNb3ZlRG93bihGcmFtZSog
ZnJhbWUpCi17Ci0gICAgZnJhbWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+bW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIExpbmVH
cmFudWxhcml0eSwgdHJ1ZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgZXhlY1NlbGVj
dEFsbChGcmFtZSogZnJhbWUpCi17Ci0gICAgZnJhbWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+
c2VsZWN0QWxsKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgZXhlY1NlbGVjdExlZnQo
RnJhbWUqIGZyYW1lKQotewotICAgIGZyYW1lLT5zZWxlY3Rpb25Db250cm9sbGVyKCktPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkxFRlQs
IENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBleGVjU2VsZWN0UmlnaHQoRnJhbWUqIGZyYW1lKQotewotICAgIGZyYW1lLT5zZWxlY3Rpb25D
b250cm9sbGVyKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OlJJR0hULCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLWJvb2wgZXhlY1NlbGVjdFVwKEZyYW1lKiBmcmFtZSkKLXsKLSAgICBm
cmFtZS0+c2VsZWN0aW9uQ29udHJvbGxlcigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6
RVhURU5ELCBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgTGluZUdyYW51bGFyaXR5LCB0
cnVlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBleGVjU2VsZWN0RG93bihGcmFtZSog
ZnJhbWUpCi17Ci0gICAgZnJhbWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+bW9kaWZ5KFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkVYVEVORCwgU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgTGlu
ZUdyYW51bGFyaXR5LCB0cnVlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLy8gCi0vLyBlbmFibGVkIGZ1bmN0aW9ucyBpbXBsZW1lbnRhdGlvbnMKLS8v
IAotCi1ib29sIGVuYWJsZWQoRnJhbWUqKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29s
IGVuYWJsZWRBbnlTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQotewotICAgIHJldHVybiBmcmFtZS0+
c2VsZWN0aW9uQ29udHJvbGxlcigpLT5pc0NhcmV0T3JSYW5nZSgpOwotfQotCi1ib29sIGVuYWJs
ZWRBbnlFZGl0YWJsZVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCi17Ci0gICAgcmV0dXJuIGZyYW1l
LT5zZWxlY3Rpb25Db250cm9sbGVyKCktPmlzQ2FyZXRPclJhbmdlKCkgJiYgZnJhbWUtPnNlbGVj
dGlvbkNvbnRyb2xsZXIoKS0+aXNDb250ZW50RWRpdGFibGUoKTsKLX0KLQotYm9vbCBlbmFibGVk
UGFzdGUoRnJhbWUqIGZyYW1lKQotewotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lID8g
ZnJhbWUtPnNldHRpbmdzKCkgOiAwOwotICAgIHJldHVybiBzZXR0aW5ncyAmJiBzZXR0aW5ncy0+
aXNET01QYXN0ZUFsbG93ZWQoKSAmJiBmcmFtZS0+ZWRpdG9yKCktPmNhblBhc3RlKCk7Ci19Ci0K
LWJvb2wgZW5hYmxlZEFueVJhbmdlU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKLXsKLSAgICByZXR1
cm4gZnJhbWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+aXNSYW5nZSgpOwotfQotCi1ib29sIGVu
YWJsZWRBbnlFZGl0YWJsZVJhbmdlU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKLXsKLSAgICByZXR1
cm4gZnJhbWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+aXNSYW5nZSgpICYmIGZyYW1lLT5zZWxl
Y3Rpb25Db250cm9sbGVyKCktPmlzQ29udGVudEVkaXRhYmxlKCk7Ci19Ci0KLUNvbW1hbmRNYXAq
IGNyZWF0ZUNvbW1hbmREaWN0aW9uYXJ5KCkKLXsKLSAgICBzdHJ1Y3QgQ29tbWFuZCB7IGNvbnN0
IGNoYXIqIG5hbWU7IENvbW1hbmRJbXAgaW1wOyB9OwotCi0gICAgc3RhdGljIGNvbnN0IENvbW1h
bmQgY29tbWFuZHNbXSA9IHsKLSAgICAgICAgeyAiQ29weSIsIHsgZXhlY0NvcHksIGVuYWJsZWRB
bnlSYW5nZVNlbGVjdGlvbiB9IH0sCi0gICAgICAgIHsgIkN1dCIsIHsgZXhlY0N1dCwgZW5hYmxl
ZEFueUVkaXRhYmxlUmFuZ2VTZWxlY3Rpb24gfSB9LAotICAgICAgICB7ICJEZWxldGUiLCB7IGV4
ZWNEZWxldGUsIGVuYWJsZWRBbnlFZGl0YWJsZVNlbGVjdGlvbiB9IH0sCi0gICAgICAgIHsgIkZv
cndhcmREZWxldGUiLCB7IGV4ZWNGb3J3YXJkRGVsZXRlLCBlbmFibGVkQW55RWRpdGFibGVTZWxl
Y3Rpb24gfSB9LAotICAgICAgICB7ICJQYXN0ZSIsIHsgZXhlY1Bhc3RlLCBlbmFibGVkUGFzdGUg
fSB9LAotICAgICAgICB7ICJTZWxlY3RBbGwiLCB7IGV4ZWNTZWxlY3RBbGwsIGVuYWJsZWQgfSB9
LAotICAgICAgICB7ICJNb3ZlTGVmdCIsIHsgZXhlY01vdmVMZWZ0LCBlbmFibGVkQW55U2VsZWN0
aW9uIH0gfSwKLSAgICAgICAgeyAiTW92ZVJpZ2h0IiwgeyBleGVjTW92ZVJpZ2h0LCBlbmFibGVk
QW55U2VsZWN0aW9uIH0gfSwKLSAgICAgICAgeyAiTW92ZVVwIiwgeyBleGVjTW92ZVVwLCBlbmFi
bGVkQW55U2VsZWN0aW9uIH0gfSwKLSAgICAgICAgeyAiTW92ZURvd24iLCB7IGV4ZWNNb3ZlRG93
biwgZW5hYmxlZEFueVNlbGVjdGlvbiB9IH0sCi0gICAgICAgIHsgIlNlbGVjdExlZnQiLCB7IGV4
ZWNTZWxlY3RMZWZ0LCBlbmFibGVkQW55U2VsZWN0aW9uIH0gfSwKLSAgICAgICAgeyAiU2VsZWN0
UmlnaHQiLCB7IGV4ZWNTZWxlY3RSaWdodCwgZW5hYmxlZEFueVNlbGVjdGlvbiB9IH0sCi0gICAg
ICAgIHsgIlNlbGVjdFVwIiwgeyBleGVjU2VsZWN0VXAsIGVuYWJsZWRBbnlTZWxlY3Rpb24gfSB9
LAotICAgICAgICB7ICJTZWxlY3REb3duIiwgeyBleGVjU2VsZWN0RG93biwgZW5hYmxlZEFueVNl
bGVjdGlvbiB9IH0KLSAgICB9OwotCi0gICAgQ29tbWFuZE1hcCogY29tbWFuZE1hcCA9IG5ldyBD
b21tYW5kTWFwOwotCi0gICAgY29uc3QgaW50IG51bUNvbW1hbmRzID0gc2l6ZW9mKGNvbW1hbmRz
KSAvIHNpemVvZihjb21tYW5kc1swXSk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Db21t
YW5kczsgKytpKSB7Ci0gICAgICAgIFN0cmluZ0ltcGwgKm5hbWUgPSBuZXcgU3RyaW5nSW1wbChj
b21tYW5kc1tpXS5uYW1lKTsKLSAgICAgICAgbmFtZS0+cmVmKCk7Ci0gICAgICAgIGNvbW1hbmRN
YXAtPnNldChuYW1lLCAmY29tbWFuZHNbaV0uaW1wKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY29t
bWFuZE1hcDsKLX0KLQotfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0KLUNvbW1hbmRCeU5hbWU6
OkNvbW1hbmRCeU5hbWUoRnJhbWUqIGZyYW1lKQotICAgIDogbV9mcmFtZShmcmFtZSkKLXsKLX0K
LQotY29uc3QgYm9vbCBDb21tYW5kQnlOYW1lOjpleGVjQ29tbWFuZChjb25zdCBTdHJpbmcmIGNv
bW1hbmQpCi17Ci0gICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7Ci0gICAgY29uc3QgQ29tbWFuZElt
cCogY21kID0gY29tbWFuZEltcChjb21tYW5kKTsKLSAgICBpZiAoIWNtZCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmICghbV9mcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmIChjbWQtPmVuYWJsZWRGbihtX2ZyYW1lKSkgewotICAgICAgICBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLSAgICAgICAgaGFu
ZGxlZCA9IGNtZC0+ZXhlY0ZuKG1fZnJhbWUpOwotICAgIH0KLSAgICByZXR1cm4gaGFuZGxlZDsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0NvbW1h
bmRCeU5hbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQ29tbWFuZEJ5TmFtZS5o
CShyZXZpc2lvbiAyNjE4NikKKysrIFdlYkNvcmUvZWRpdGluZy9Db21tYW5kQnlOYW1lLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRl
ZiBDb21tYW5kQnlOYW1lX2gKLSNkZWZpbmUgQ29tbWFuZEJ5TmFtZV9oCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgRnJhbWU7Ci1jbGFzcyBTdHJpbmc7Ci0KLWNsYXNzIENvbW1hbmRC
eU5hbWUgewotcHVibGljOiAKLSAgICBDb21tYW5kQnlOYW1lKEZyYW1lKiBmcmFtZSk7Ci0gICAg
Y29uc3QgYm9vbCBleGVjQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmQpOwotICAgIAotcHJp
dmF0ZToKLSAgICBGcmFtZSogbV9mcmFtZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIENvbW1hbmRCeU5hbWVfaApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9u
IDI2MTg2KQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExOTUsNiArMTE5NSwxMiBAQCBzdGF0aWMgYm9vbCBleGVjVW5kbyhGcmFtZSogZnJhbWUsIEV2
ZW50CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29sIGV4ZWNUcmFuc3Bvc2UoRnJh
bWUqIGZyYW1lLCBFdmVudCopCit7CisgICAgZnJhbWUtPmVkaXRvcigpLT50cmFuc3Bvc2UoKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGlubGluZSBGcmFtZSogdGFyZ2V0RnJhbWUo
RnJhbWUqIGZyYW1lLCBFdmVudCogZXZ0KQogewogICAgIE5vZGUqIG5vZGUgPSBldnQgPyBldnQt
PnRhcmdldCgpLT50b05vZGUoKSA6IDA7CkBAIC0xMzM2LDYgKzEzNDIsNyBAQCBzdGF0aWMgQ29t
bWFuZE1hcCogY3JlYXRlQ29tbWFuZE1hcCgpCiAgICAgICAgIHsgIlNlbGVjdEFsbCIsIHsgZW5h
YmxlZCwgZXhlY1NlbGVjdEFsbCB9IH0sCiAgICAgICAgIHsgIlRvZ2dsZUJvbGQiLCB7IGhhc1Jp
Y2hseUVkaXRhYmxlU2VsZWN0aW9uLCBleGVjVG9nZ2xlQm9sZCB9IH0sCiAgICAgICAgIHsgIlRv
Z2dsZUl0YWxpYyIsIHsgaGFzUmljaGx5RWRpdGFibGVTZWxlY3Rpb24sIGV4ZWNUb2dnbGVJdGFs
aWMgfSB9LAorICAgICAgICB7ICJUcmFuc3Bvc2UiLCB7IGhhc0VkaXRhYmxlU2VsZWN0aW9uLCBl
eGVjVHJhbnNwb3NlIH0gfSwKICAgICAgICAgeyAiVW5kbyIsIHsgY2FuVW5kbywgZXhlY1VuZG8g
fSB9CiAgICAgfTsKIApAQCAtMjM5Niw0ICsyNDAzLDQ2IEBAIGJvb2wgRWRpdG9yOjpnZXRDb21w
b3NpdGlvblNlbGVjdGlvbih1bnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBFZGl0b3I6
OnRyYW5zcG9zZSgpCit7CisgICAgaWYgKCFjYW5FZGl0KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgICBTZWxlY3Rpb24gc2VsZWN0aW9uID0gbV9mcmFtZS0+c2VsZWN0aW9uQ29udHJvbGxlcigp
LT5zZWxlY3Rpb24oKTsKKyAgICAgaWYgKCFzZWxlY3Rpb24uaXNDYXJldCgpKQorICAgICAgICAg
cmV0dXJuOworCisgICAgLy8gTWFrZSBhIHNlbGVjdGlvbiB0aGF0IGdvZXMgYmFjayBvbmUgY2hh
cmFjdGVyIGFuZCBmb3J3YXJkIHR3byBjaGFyYWN0ZXJzLgorICAgIFZpc2libGVQb3NpdGlvbiBj
YXJldCA9IHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4
dCA9IGlzRW5kT2ZQYXJhZ3JhcGgoY2FyZXQpID8gY2FyZXQgOiBjYXJldC5uZXh0KCk7CisgICAg
VmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzID0gbmV4dC5wcmV2aW91cygpOworICAgIGlmIChuZXh0
ID09IHByZXZpb3VzKQorICAgICAgICByZXR1cm47CisgICAgcHJldmlvdXMgPSBwcmV2aW91cy5w
cmV2aW91cygpOworICAgIGlmICghaW5TYW1lUGFyYWdyYXBoKG5leHQsIHByZXZpb3VzKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBtYWtlUmFuZ2UocHJldmlv
dXMsIG5leHQpOworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybjsKKyAgICBTZWxlY3Rp
b24gbmV3U2VsZWN0aW9uKHJhbmdlLmdldCgpLCBET1dOU1RSRUFNKTsKKworICAgIC8vIFRyYW5z
cG9zZSB0aGUgdHdvIGNoYXJhY3RlcnMuCisgICAgU3RyaW5nIHRleHQgPSBwbGFpblRleHQocmFu
Z2UuZ2V0KCkpOworICAgIGlmICh0ZXh0Lmxlbmd0aCgpICE9IDIpCisgICAgICAgIHJldHVybjsK
KyAgICBTdHJpbmcgdHJhbnNwb3NlZCA9IHRleHQucmlnaHQoMSkgKyB0ZXh0LmxlZnQoMSk7CisK
KyAgICAvLyBTZWxlY3QgdGhlIHR3byBjaGFyYWN0ZXJzLgorICAgIGlmIChuZXdTZWxlY3Rpb24g
IT0gbV9mcmFtZS0+c2VsZWN0aW9uQ29udHJvbGxlcigpLT5zZWxlY3Rpb24oKSkgeworICAgICAg
ICBpZiAoIW1fZnJhbWUtPnNob3VsZENoYW5nZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb25Db250cm9sbGVyKCkt
PnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24pOworICAgIH0KKworICAgIC8vIEluc2VydCB0aGUg
dHJhbnNwb3NlZCBjaGFyYWN0ZXJzLgorICAgIGlmICghc2hvdWxkSW5zZXJ0VGV4dCh0cmFuc3Bv
c2VkLCByYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uVHlwZWQpKQorICAgICAgICByZXR1
cm47CisgICAgcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHRyYW5zcG9zZWQsIGZhbHNlLCBmYWxz
ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHJldmlzaW9u
IDI2MTg2KQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDYsNiArMTA2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbmRlbnQoKTsKICAgICB2b2lkIG91
dGRlbnQoKTsKKyAgICB2b2lkIHRyYW5zcG9zZSgpOwogCiAgICAgYm9vbCBzaG91bGRJbnNlcnRG
cmFnbWVudChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50LCBQYXNzUmVmUHRy
PFJhbmdlPiByZXBsYWNpbmdET01SYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGdpdmVuQWN0aW9u
KTsKICAgICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgUmFuZ2UqLCBFZGl0
b3JJbnNlcnRBY3Rpb24pIGNvbnN0OwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiAyNjE4NikKKysrIFdl
YkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0NywxMSArMzQ3LDYgQEAg
RWRpdG9yKiBGcmFtZTo6ZWRpdG9yKCkgY29uc3QKICAgICByZXR1cm4gJmQtPm1fZWRpdG9yOwog
fQogCi1Db21tYW5kQnlOYW1lKiBGcmFtZTo6Y29tbWFuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
ICZkLT5tX2NvbW1hbmQ7Ci19Ci0KIFRleHRHcmFudWxhcml0eSBGcmFtZTo6c2VsZWN0aW9uR3Jh
bnVsYXJpdHkoKSBjb25zdAogewogICAgIHJldHVybiBkLT5tX3NlbGVjdGlvbkdyYW51bGFyaXR5
OwpAQCAtMTk0OCw3ICsxOTQzLDYgQEAgRnJhbWVQcml2YXRlOjpGcmFtZVByaXZhdGUoUGFnZSog
cGFnZSwgRgogICAgICwgbV9zZWxlY3Rpb25Db250cm9sbGVyKHRoaXNGcmFtZSkKICAgICAsIG1f
Y2FyZXRCbGlua1RpbWVyKHRoaXNGcmFtZSwgJkZyYW1lOjpjYXJldEJsaW5rVGltZXJGaXJlZCkK
ICAgICAsIG1fZWRpdG9yKHRoaXNGcmFtZSkKLSAgICAsIG1fY29tbWFuZCh0aGlzRnJhbWUpCiAg
ICAgLCBtX2V2ZW50SGFuZGxlcih0aGlzRnJhbWUpCiAgICAgLCBtX2NhcmV0VmlzaWJsZShmYWxz
ZSkKICAgICAsIG1fY2FyZXRQYWludCh0cnVlKQpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDI2MTg2KQorKysg
V2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOwogY2xh
c3MgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9u
OwotY2xhc3MgQ29tbWFuZEJ5TmFtZTsKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgRWRpdG9yOwpAQCAtMTI4LDcgKzEyNyw2IEBAIHB1YmxpYzoKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdDsKICAgICBGcmFtZVZpZXcqIHZpZXcoKSBjb25zdDsKIAotICAg
IENvbW1hbmRCeU5hbWUqIGNvbW1hbmQoKSBjb25zdDsKICAgICBET01XaW5kb3cqIGRvbVdpbmRv
dygpIGNvbnN0OwogICAgIEVkaXRvciogZWRpdG9yKCkgY29uc3Q7CiAgICAgRXZlbnRIYW5kbGVy
KiBldmVudEhhbmRsZXIoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZVByaXZhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVQcml2YXRlLmgJKHJldmlzaW9uIDI2
MTg2KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDEyICsxLDEwIEBACi0vKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKLSAq
Ci0gKiBDb3B5cmlnaHQgKEMpIDE5OTgsIDE5OTkgVG9yYmVuIFdlaXMgPHdlaXNAa2RlLm9yZz4K
Ky8qIENvcHlyaWdodCAoQykgMTk5OCwgMTk5OSBUb3JiZW4gV2VpcyA8d2Vpc0BrZGUub3JnPgog
ICogICAgICAgICAgICAgICAgICAgICAxOTk5LTIwMDEgTGFycyBLbm9sbCA8a25vbGxAa2RlLm9y
Zz4KICAqICAgICAgICAgICAgICAgICAgICAgMTk5OS0yMDAxIEFudHRpIEtvaXZpc3RvIDxrb2l2
aXN0b0BrZGUub3JnPgogICogICAgICAgICAgICAgICAgICAgICAyMDAwLTIwMDEgU2ltb24gSGF1
c21hbm4gPGhhdXNtYW5uQGtkZS5vcmc+CiAgKiAgICAgICAgICAgICAgICAgICAgIDIwMDAtMjAw
MSBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4KICAqICAgICAgICAgICAgICAgICAgICAg
MjAwMCBTdGVmYW4gU2NoaW1hbnNraSA8MVN0ZWluQGdteC5kZT4KLSAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwNyBUcm9sbHRlY2ggQVNBCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjgsNyAr
MjYsNiBAQAogI2lmbmRlZiBGcmFtZVByaXZhdGVfaAogI2RlZmluZSBGcmFtZVByaXZhdGVfaAog
Ci0jaW5jbHVkZSAiQ29tbWFuZEJ5TmFtZS5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1
ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgpAQCAtOTEsNyArODgs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNlbGVjdGlvbiBtX21hcms7CiAgICAg
ICAgIFRpbWVyPEZyYW1lPiBtX2NhcmV0QmxpbmtUaW1lcjsKICAgICAgICAgRWRpdG9yIG1fZWRp
dG9yOwotICAgICAgICBDb21tYW5kQnlOYW1lIG1fY29tbWFuZDsKICAgICAgICAgRXZlbnRIYW5k
bGVyIG1fZXZlbnRIYW5kbGVyOwogCiAgICAgICAgIGJvb2wgbV9jYXJldFZpc2libGUgOiAxOwpJ
bmRleDogV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oCShyZXZpc2lvbiAyNjE4NikK
KysrIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE4NCw3ICsxODQsNiBAQCBlbnVtIFdlYlNjcm9sbEdyYW51bGFyaXR5IHsKIAogLSAoaWQp
YWNjZXNzaWJpbGl0eVRyZWU7CiAKLS0gKERPTVJhbmdlICopcmFuZ2VPZkNoYXJhY3RlcnNBcm91
bmRDYXJldDsKIC0gKERPTVJhbmdlICopcmFuZ2VCeUFsdGVyaW5nQ3VycmVudFNlbGVjdGlvbjoo
V2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb24pYWx0ZXJhdGlvbiBkaXJl
Y3Rpb246KFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb24pZGlyZWN0aW9u
IGdyYW51bGFyaXR5OihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHk7CiAtICh2
b2lkKWFsdGVyQ3VycmVudFNlbGVjdGlvbjooV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6
RUFsdGVyYXRpb24pYWx0ZXJhdGlvbiB2ZXJ0aWNhbERpc3RhbmNlOihmbG9hdClkaXN0YW5jZTsK
IC0gKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSlzZWxlY3Rpb25HcmFudWxhcml0eTsKSW5kZXg6
IFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tCShyZXZpc2lvbiAyNjE4NikKKysr
IFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjQyLDI0ICsxMjQyLDYgQEAgc3RhdGljIEhUTUxGb3JtRWxlbWVudCAqZm9ybUVsZW1lbnRG
cm9tRAogICAgIH0KIH0KIAotLSAoRE9NUmFuZ2UgKilyYW5nZU9mQ2hhcmFjdGVyc0Fyb3VuZENh
cmV0Ci17Ci0gICAgaWYgKCFtX2ZyYW1lKQotICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAK
LSAgICBTZWxlY3Rpb24gc2VsZWN0aW9uKG1fZnJhbWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+
c2VsZWN0aW9uKCkpOwotICAgIGlmICghc2VsZWN0aW9uLmlzQ2FyZXQoKSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLQotICAgIFZpc2libGVQb3NpdGlvbiBjYXJldChzZWxlY3Rpb24udmlzaWJsZVN0
YXJ0KCkpOwotICAgIFZpc2libGVQb3NpdGlvbiBuZXh0ID0gY2FyZXQubmV4dCgpOwotICAgIFZp
c2libGVQb3NpdGlvbiBwcmV2aW91cyA9IGNhcmV0LnByZXZpb3VzKCk7Ci0gICAgaWYgKHByZXZp
b3VzLmlzTnVsbCgpIHx8IG5leHQuaXNOdWxsKCkgfHwgY2FyZXQgPT0gbmV4dCB8fCBjYXJldCA9
PSBwcmV2aW91cykKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbRE9NUmFuZ2Ug
X3dyYXBSYW5nZTptYWtlUmFuZ2UocHJldmlvdXMsIG5leHQpLmdldCgpXTsKLX0KLQogLSAoQk9P
TClnZXREYXRhOihOU0RhdGEgKiopZGF0YSBhbmRSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKily
ZXNwb25zZSBmb3JVUkw6KE5TU3RyaW5nICopVVJMCiB7CiAgICAgRG9jdW1lbnQqIGRvYyA9IG1f
ZnJhbWUtPmRvY3VtZW50KCk7CkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjM4KQorKysgV2ViS2l0L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExIEBACisyMDA3LTEwLTE1ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAtIG1vdmVkIHRyYW5zcG9zZSBjb21tYW5kIGltcGxlbWVudGF0aW9uIGludG8g
V2ViQ29yZQorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbTogUmVtb3ZlZCB0cmFu
c3Bvc2U6IGFuZCByZXBsYWNlZCBpdCB3aXRoIHN0YW5kYXJkIFdlYkNvcmUgZm9yd2FyZGluZy4K
KwogMjAwNy0xMC0xNSAgSm9obiBTdWxsaXZhbiAgPHN1bGxpdmFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbgpJbmRleDogV2ViS2l0L1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHJl
dmlzaW9uIDI2MTg2KQorKysgV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTIxMjgsNiArMjEyOCw3IEBAIFdFQkNPUkVfQ09NTUFORChtb3ZlV29yZExlZnQp
CiBXRUJDT1JFX0NPTU1BTkQobW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uKQogV0VCQ09S
RV9DT01NQU5EKG1vdmVXb3JkUmlnaHQpCiBXRUJDT1JFX0NPTU1BTkQobW92ZVdvcmRSaWdodEFu
ZE1vZGlmeVNlbGVjdGlvbikKK1dFQkNPUkVfQ09NTUFORCh0cmFuc3Bvc2UpCiAKICN1bmRlZiBX
RUJDT1JFX0NPTU1BTkQKIApAQCAtNDY4NywzNiArNDY4OCw2IEBAIHN0YXRpYyBET01SYW5nZSAq
dW5pb25ET01SYW5nZXMoRE9NUmFuZ2UKICAgICAgICAgW2JyaWRnZSBzZXRNYXJrRE9NUmFuZ2U6
c2VsZWN0aW9uXTsKIH0KIAotLSAodm9pZCl0cmFuc3Bvc2U6KGlkKXNlbmRlcgotewotICAgIENP
TU1BTkRfUFJPTE9HVUUKLQotICAgIGlmICghW3NlbGYgX2NhbkVkaXRdKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBXZWJGcmFtZUJyaWRnZSAqYnJpZGdlID0gW3NlbGYgX2JyaWRnZV07Ci0gICAg
RE9NUmFuZ2UgKnIgPSBbYnJpZGdlIHJhbmdlT2ZDaGFyYWN0ZXJzQXJvdW5kQ2FyZXRdOwotICAg
IGlmICghcikKLSAgICAgICAgcmV0dXJuOwotICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzID0gW2Jy
aWRnZSBzdHJpbmdGb3JSYW5nZTpyXTsKLSAgICBpZiAoW2NoYXJhY3RlcnMgbGVuZ3RoXSAhPSAy
KQotICAgICAgICByZXR1cm47Ci0gICAgTlNTdHJpbmcgKnRyYW5zcG9zZWQgPSBbW2NoYXJhY3Rl
cnMgc3Vic3RyaW5nRnJvbUluZGV4OjFdIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOltjaGFyYWN0
ZXJzIHN1YnN0cmluZ1RvSW5kZXg6MV1dOwotICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbc2VsZiBf
d2ViVmlld107Ci0gICAgaWYgKCFbW3dlYlZpZXcgX2VkaXRpbmdEZWxlZ2F0ZUZvcndhcmRlcl0g
d2ViVmlldzp3ZWJWaWV3IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6W3NlbGYgX3NlbGVj
dGVkUmFuZ2VdCi0gICAgICAgICAgICB0b0RPTVJhbmdlOnIgYWZmaW5pdHk6TlNTZWxlY3Rpb25B
ZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6Tk9dKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICBpZiAoIWNv
cmVGcmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgY29yZUZyYW1lLT5zZWxlY3Rpb25Db250cm9sbGVyKCktPnNldFNlbGVjdGVkUmFuZ2UoY29y
ZShyKSwgRE9XTlNUUkVBTSwgdHJ1ZSwgZWMpOwotICAgIGlmIChbc2VsZiBfc2hvdWxkUmVwbGFj
ZVNlbGVjdGlvbldpdGhUZXh0OnRyYW5zcG9zZWQgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFj
dGlvblR5cGVkXSkKLSAgICAgICAgW2JyaWRnZSByZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQ6dHJh
bnNwb3NlZCBzZWxlY3RSZXBsYWNlbWVudDpOTyBzbWFydFJlcGxhY2U6Tk9dOwotfQotCiAtICh2
b2lkKXRvZ2dsZUJhc2VXcml0aW5nRGlyZWN0aW9uOihpZClzZW5kZXIKIHsKICAgICBDT01NQU5E
X1BST0xPR1VFCg==
</data>
<flag name="review"
          id="7048"
          type_id="1"
          status="+"
          setter="adele"
    />
          </attachment>
      

    </bug>

</bugzilla>