<?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>45317</bug_id>
          
          <creation_ts>2010-09-07 12:51:16 -0700</creation_ts>
          <short_desc>Encapsulate multi-column rectangle information</short_desc>
          <delta_ts>2010-09-07 12:59:52 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>bdakin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>275223</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-09-07 12:51:16 -0700</bug_when>
    <thetext>Encapsulate multi-column rectangle information to avoid exposing the Vector.   This allows for future code (layout pagination code) to not have to store a Vector of rects (the rects can just be computed from a count and height for example).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275224</commentid>
    <comment_count>1</comment_count>
      <attachid>66753</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-09-07 12:55:05 -0700</bug_when>
    <thetext>Created attachment 66753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275227</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-07 12:57:53 -0700</bug_when>
    <thetext>Attachment 66753 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/rendering/ColumnInfo.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275230</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-09-07 12:59:52 -0700</bug_when>
    <thetext>Fixed in r66903.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66753</attachid>
            <date>2010-09-07 12:55:05 -0700</date>
            <delta_ts>2010-09-07 12:57:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>21533</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjkwMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTAtMDktMDcgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTMxNywgZW5jYXBzdWxhdGUgbXVs
dGktY29sdW1uIHJlY3RhbmdsZSBpbmZvcm1hdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZW5kZXJpbmcvQ29sdW1uSW5mby5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbHVtbkluZm86OkNvbHVtbkluZm8pOgorICAg
ICAgICAoV2ViQ29yZTo6Q29sdW1uSW5mbzo6ZGVzaXJlZENvbHVtbldpZHRoKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbHVtbkluZm86OnNldERlc2lyZWRDb2x1bW5XaWR0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb2x1bW5JbmZvOjpkZXNpcmVkQ29sdW1uQ291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29sdW1uSW5mbzo6c2V0RGVzaXJlZENvbHVtbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbHVtbkluZm86OmNvbHVtbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbHVtbkluZm86
OmNvbHVtblJlY3RBdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2x1bW5JbmZvOjpjbGVhckNvbHVt
bnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29sdW1uSW5mbzo6YWRkQ29sdW1uUmVjdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpwYWludENvbHVtblJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpwYWludENvbHVtbkNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjps
b3dlc3RQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmlnaHRtb3N0
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxlZnRtb3N0UG9zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmhpdFRlc3RDb2x1bW5zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzZXREZXNpcmVkQ29sdW1uQ291bnRBbmRXaWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZGVzaXJlZENvbHVtbldpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpkZXNpcmVkQ29sdW1uQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbHVtbkluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OmxheW91dENvbHVtbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OmFkanVzdFBvaW50VG9Db2x1bW5Db250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6YWRqdXN0UmVjdEZvckNvbHVtbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmFkanVzdEZvckNvbHVtbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRDaGlsZExheWVySW50b0NvbHVtbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RDaGlsZExheWVyQ29sdW1ucyk6CisKIDIw
MTAtMDktMDcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXZlIEh5YXR0LgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDY2ODg2KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5MzAsNiArNDkzMCw3IEBACiAJ
CUJDRDlDMkMxMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEOUMyQkQwQzE3QjY5RTAwNUM5
MEEyIC8qIEpTTmFtZWROb2RlTWFwLmggKi87IH07CiAJCUJDRDlDMkMyMEMxN0I2OUUwMDVDOTBB
MiAvKiBKU05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRDlDMkJFMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05vZGVMaXN0LmNwcCAqLzsg
fTsKIAkJQkNEOUMyQzMwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDlDMkJGMEMxN0I2OUUwMDVD
OTBBMiAvKiBKU05vZGVMaXN0LmggKi87IH07CisJCUJDREQ0NTRFMTIzNkM5NUMwMDlBNzk4NSAv
KiBDb2x1bW5JbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0RENDU0RDEyMzZDOTVDMDA5QTc5ODUgLyogQ29sdW1uSW5mby5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDREYzMTdCMTFGOEQ2ODMw
MDNDNUJGOCAvKiBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0RGMzE3OTExRjhENjgzMDAzQzVCRjgg
LyogVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuY3BwICovOyB9OwogCQlCQ0RGMzE3QzExRjhE
NjgzMDAzQzVCRjggLyogVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDREYzMTdBMTFGOEQ2ODMwMDNDNUJG
OCAvKiBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDREZENDhFMEUzMDUyOTAwMDlEMTBBRCAvKiBY
TUxIdHRwUmVxdWVzdFVwbG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNERkQ0OEMwRTMwNTI5MDAwOUQxMEFEIC8qIFhNTEh0dHBSZXF1ZXN0VXBs
b2FkLmggKi87IH07CkBAIC0xMDczMCw2ICsxMDczMSw3IEBACiAJCUJDRDlDMkJEMEMxN0I2OUUw
MDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNOYW1lZE5vZGVNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNE
OUMyQkUwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0Q5QzJCRjBDMTdCNjlFMDA1QzkwQTIgLyogSlNOb2RlTGlzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQ0RENDU0RDEyMzZDOTVDMDA5QTc5ODUgLyogQ29sdW1uSW5mby5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2x1bW5JbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDREYzMTc5MTFGOEQ2ODMwMDNDNUJGOCAvKiBVc2VyVHlw
aW5nR2VzdHVyZUluZGljYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDREYzMTdBMTFGOEQ2ODMwMDNDNUJGOCAvKiBVc2VyVHlwaW5nR2VzdHVyZUlu
ZGljYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyVHlwaW5nR2Vz
dHVyZUluZGljYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0RGRDQ4QzBF
MzA1MjkwMDA5RDEwQUQgLyogWE1MSHR0cFJlcXVlc3RVcGxvYWQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gWE1MSHR0cFJlcXVlc3RVcGxvYWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE3MDkwLDYgKzE3MDkyLDcgQEAKIAkJCQlCQ0U3ODk4NTExMjBFN0E2
MDA2MEVDRTUgLyogQmlkaVJ1bi5oICovLAogCQkJCUJDRUE0ODE1MDk3RDkzMDIwMDk0QzlFNCAv
KiBicmVha19saW5lcy5jcHAgKi8sCiAJCQkJQkNFQTQ4MTYwOTdEOTMwMjAwOTRDOUU0IC8qIGJy
ZWFrX2xpbmVzLmggKi8sCisJCQkJQkNERDQ1NEQxMjM2Qzk1QzAwOUE3OTg1IC8qIENvbHVtbklu
Zm8uaCAqLywKIAkJCQk5MzkyRjE0RjBBRDE4NjIzMDA2OTFCRDQgLyogQ291bnRlck5vZGUuY3Bw
ICovLAogCQkJCTkzOTJGMTRCMEFEMTg2MUIwMDY5MUJENCAvKiBDb3VudGVyTm9kZS5oICovLAog
CQkJCUE4Q0ZGNkNBMEExNTYxQ0QwMDBBNDIzNCAvKiBFbGxpcHNpc0JveC5jcHAgKi8sCkBAIC0y
MDQzMiw2ICsyMDQzNSw3IEBACiAJCQkJODk4Nzg1QjkxMjJDQTJBNzAwM0FBQkRBIC8qIEpTTWV0
YWRhdGFDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODk4Nzg1RjExMjJFMUU4NzAwM0FB
QkRBIC8qIEpTRmlsZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODk4Nzg1RjUxMjJF
MUVBQzAwM0FBQkRBIC8qIEpTRmlsZVJlYWRlclN5bmMuaCBpbiBIZWFkZXJzICovLAorCQkJCUJD
REQ0NTRFMTIzNkM5NUMwMDlBNzk4NSAvKiBDb2x1bW5JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0NvbHVtbkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9Db2x1bW5JbmZvLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9Db2x1bW5JbmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29sdW1uSW5mb19o
CisjZGVmaW5lIENvbHVtbkluZm9faAorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1
ZGUgIkludFJlY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDb2x1bW5JbmZv
IDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBDb2x1bW5JbmZvKCkKKyAgICAg
ICAgOiBtX2Rlc2lyZWRDb2x1bW5XaWR0aCgwKQorICAgICAgICAsIG1fZGVzaXJlZENvbHVtbkNv
dW50KDEpCisgICAgICAgIHsgfQorICAgIAorICAgIGludCBkZXNpcmVkQ29sdW1uV2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX2Rlc2lyZWRDb2x1bW5XaWR0aDsgfQorICAgIHZvaWQgc2V0RGVzaXJl
ZENvbHVtbldpZHRoKGludCB3aWR0aCkgeyBtX2Rlc2lyZWRDb2x1bW5XaWR0aCA9IHdpZHRoOyB9
CisgICAgCisgICAgdW5zaWduZWQgZGVzaXJlZENvbHVtbkNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9kZXNpcmVkQ29sdW1uQ291bnQ7IH0KKyAgICB2b2lkIHNldERlc2lyZWRDb2x1bW5Db3VudCh1
bnNpZ25lZCBjb3VudCkgeyBtX2Rlc2lyZWRDb2x1bW5Db3VudCA9IGNvdW50OyB9CisKKyAgICAv
LyBFbmNhcHN1bGF0ZWQgZm9yIHRoZSBmdXR1cmUgd2hlcmUgd2UgY2FuIGF2b2lkIHN0b3Jpbmcg
dGhlIHJlY3RzIGFuZCBqdXN0IGNvbXB1dGUgdGhlbSBkeW5hbWljYWxseS4KKyAgICBzaXplX3Qg
Y29sdW1uQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvbHVtblJlY3RzLnNpemUoKTsgfQorICAg
IGNvbnN0IEludFJlY3QmIGNvbHVtblJlY3RBdChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gbV9j
b2x1bW5SZWN0c1tpXTsgfQorCisgICAgdm9pZCBjbGVhckNvbHVtbnMoKSB7IG1fY29sdW1uUmVj
dHMuY2xlYXIoKTsgfQorCisgICAgLy8gRklYTUU6IFdpbGwgZ28gYXdheSBvbmNlIHdlIGRvbid0
IHVzZSB0aGUgVmVjdG9yLgorICAgIHZvaWQgYWRkQ29sdW1uUmVjdChjb25zdCBJbnRSZWN0JiBy
ZWN0KSB7IG1fY29sdW1uUmVjdHMuYXBwZW5kKHJlY3QpOyB9CisgICAgCitwcml2YXRlOgorICAg
IGludCBtX2Rlc2lyZWRDb2x1bW5XaWR0aDsKKyAgICB1bnNpZ25lZCBtX2Rlc2lyZWRDb2x1bW5D
b3VudDsKKyAgICBWZWN0b3I8SW50UmVjdD4gbV9jb2x1bW5SZWN0czsKK307CisKK30KKworI2Vu
ZGlmCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiA2NjkwMSkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQs
NiArMjQsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgi
CiAKKyNpbmNsdWRlICJDb2x1bW5JbmZvLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCkBAIC02MSwxNiArNjIsNiBA
QCBzdGF0aWMgY29uc3QgaW50IHZlcnRpY2FsTGluZUNsaWNrRnVkZ2VGCiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLXN0cnVjdCBDb2x1bW5JbmZvIDogcHVibGljIE5vbmNvcHlhYmxl
IHsKLSAgICBDb2x1bW5JbmZvKCkKLSAgICAgICAgOiBtX2Rlc2lyZWRDb2x1bW5XaWR0aCgwKQot
ICAgICAgICAsIG1fZGVzaXJlZENvbHVtbkNvdW50KDEpCi0gICAgICAgIHsgfQotICAgIGludCBt
X2Rlc2lyZWRDb2x1bW5XaWR0aDsKLSAgICB1bnNpZ25lZCBtX2Rlc2lyZWRDb2x1bW5Db3VudDsK
LSAgICBWZWN0b3I8SW50UmVjdD4gbV9jb2x1bW5SZWN0czsKLX07Ci0KIHR5cGVkZWYgV1RGOjpI
YXNoTWFwPGNvbnN0IFJlbmRlckJveCosIENvbHVtbkluZm8qPiBDb2x1bW5JbmZvTWFwOwogc3Rh
dGljIENvbHVtbkluZm9NYXAqIGdDb2x1bW5JbmZvTWFwID0gMDsKIApAQCAtMjAwNSwxMyArMTk5
NiwxMyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludENvbHVtblJ1bGVzKFBhaW50CiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIFdlIG5lZWQgdG8gZG8gbXVsdGlwbGUgcGFzc2VzLCBicmVha2lu
ZyB1cCBvdXIgY2hpbGQgcGFpbnRpbmcgaW50byBzdHJpcHMuCi0gICAgVmVjdG9yPEludFJlY3Q+
KiBjb2xSZWN0cyA9IGNvbHVtblJlY3RzKCk7Ci0gICAgdW5zaWduZWQgY29sQ291bnQgPSBjb2xS
ZWN0cy0+c2l6ZSgpOworICAgIENvbHVtbkluZm8qIGNvbEluZm8gPSBjb2x1bW5JbmZvKCk7Cisg
ICAgdW5zaWduZWQgY29sQ291bnQgPSBjb2xJbmZvLT5jb2x1bW5Db3VudCgpOwogICAgIGludCBj
dXJyWE9mZnNldCA9IHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUiA/IDAgOiBjb250ZW50V2lk
dGgoKTsKICAgICBpbnQgcnVsZUFkZCA9IGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCk7CiAg
ICAgaW50IHJ1bGVYID0gc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gMCA6IGNvbnRlbnRX
aWR0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb2xDb3VudDsgaSsrKSB7Ci0g
ICAgICAgIEludFJlY3QgY29sUmVjdCA9IGNvbFJlY3RzLT5hdChpKTsKKyAgICAgICAgSW50UmVj
dCBjb2xSZWN0ID0gY29sSW5mby0+Y29sdW1uUmVjdEF0KGkpOwogCiAgICAgICAgIC8vIE1vdmUg
dG8gdGhlIG5leHQgcG9zaXRpb24uCiAgICAgICAgIGlmIChzdHlsZSgpLT5kaXJlY3Rpb24oKSA9
PSBMVFIpIHsKQEAgLTIwNDEsMTUgKzIwMzIsMTUgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRD
b2x1bW5Db250ZW50cyhQYQogICAgIC8vIFdlIG5lZWQgdG8gZG8gbXVsdGlwbGUgcGFzc2VzLCBi
cmVha2luZyB1cCBvdXIgY2hpbGQgcGFpbnRpbmcgaW50byBzdHJpcHMuCiAgICAgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CiAgICAgaW50IGNvbEdhcCA9IGNv
bHVtbkdhcCgpOwotICAgIFZlY3RvcjxJbnRSZWN0PiogY29sUmVjdHMgPSBjb2x1bW5SZWN0cygp
OwotICAgIHVuc2lnbmVkIGNvbENvdW50ID0gY29sUmVjdHMtPnNpemUoKTsKKyAgICBDb2x1bW5J
bmZvKiBjb2xJbmZvID0gY29sdW1uSW5mbygpOworICAgIHVuc2lnbmVkIGNvbENvdW50ID0gY29s
SW5mby0+Y29sdW1uQ291bnQoKTsKICAgICBpZiAoIWNvbENvdW50KQogICAgICAgICByZXR1cm47
Ci0gICAgaW50IGN1cnJYT2Zmc2V0ID0gc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gMCA6
IGNvbnRlbnRXaWR0aCgpIC0gY29sUmVjdHMtPmF0KDApLndpZHRoKCk7CisgICAgaW50IGN1cnJY
T2Zmc2V0ID0gc3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gMCA6IGNvbnRlbnRXaWR0aCgp
IC0gY29sSW5mby0+Y29sdW1uUmVjdEF0KDApLndpZHRoKCk7CiAgICAgaW50IGN1cnJZT2Zmc2V0
ID0gMDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29sQ291bnQ7IGkrKykgewogICAg
ICAgICAvLyBGb3IgZWFjaCByZWN0LCB3ZSBjbGlwIHRvIHRoZSByZWN0LCBhbmQgdGhlbiB3ZSBh
ZGp1c3Qgb3VyIGNvb3Jkcy4KLSAgICAgICAgSW50UmVjdCBjb2xSZWN0ID0gY29sUmVjdHMtPmF0
KGkpOworICAgICAgICBJbnRSZWN0IGNvbFJlY3QgPSBjb2xJbmZvLT5jb2x1bW5SZWN0QXQoaSk7
CiAgICAgICAgIGNvbFJlY3QubW92ZSh0eCwgdHkpOwogICAgICAgICBQYWludEluZm8gaW5mbyhw
YWludEluZm8pOwogICAgICAgICBpbmZvLnJlY3QuaW50ZXJzZWN0KGNvbFJlY3QpOwpAQCAtMzE2
Niw5ICszMTU3LDkgQEAgaW50IFJlbmRlckJsb2NrOjpsb3dlc3RQb3NpdGlvbihib29sIGluYwog
ICAgIH0KIAogICAgIGlmIChoYXNDb2x1bW5zKCkpIHsKLSAgICAgICAgVmVjdG9yPEludFJlY3Q+
KiBjb2xSZWN0cyA9IGNvbHVtblJlY3RzKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjb2xSZWN0cy0+c2l6ZSgpOyBpKyspCi0gICAgICAgICAgICBib3R0b20gPSBtYXgoYm90
dG9tLCBjb2xSZWN0cy0+YXQoaSkuYm90dG9tKCkgKyByZWxhdGl2ZU9mZnNldCk7CisgICAgICAg
IENvbHVtbkluZm8qIGNvbEluZm8gPSBjb2x1bW5JbmZvKCk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBjb2xJbmZvLT5jb2x1bW5Db3VudCgpOyBpKyspCisgICAgICAgICAgICBi
b3R0b20gPSBtYXgoYm90dG9tLCBjb2xJbmZvLT5jb2x1bW5SZWN0QXQoaSkuYm90dG9tKCkgKyBy
ZWxhdGl2ZU9mZnNldCk7CiAgICAgICAgIHJldHVybiBib3R0b207CiAgICAgfQogCkBAIC0zMjYw
LDggKzMyNTEsMTEgQEAgaW50IFJlbmRlckJsb2NrOjpyaWdodG1vc3RQb3NpdGlvbihib29sIAog
CiAgICAgaWYgKGhhc0NvbHVtbnMoKSkgewogICAgICAgICAvLyBUaGlzIG9ubHkgbWF0dGVycyBm
b3IgTFRSCi0gICAgICAgIGlmIChzdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIpCi0gICAgICAg
ICAgICByaWdodCA9IG1heChjb2x1bW5SZWN0cygpLT5sYXN0KCkucmlnaHQoKSArIHJlbGF0aXZl
T2Zmc2V0LCByaWdodCk7CisgICAgICAgIGlmIChzdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBMVFIp
IHsKKyAgICAgICAgICAgIENvbHVtbkluZm8qIGNvbEluZm8gPSBjb2x1bW5JbmZvKCk7CisgICAg
ICAgICAgICBpZiAoY29sSW5mby0+Y29sdW1uQ291bnQoKSkKKyAgICAgICAgICAgICAgICByaWdo
dCA9IG1heChjb2xJbmZvLT5jb2x1bW5SZWN0QXQoY29sSW5mby0+Y29sdW1uQ291bnQoKSAtIDEp
LnJpZ2h0KCkgKyByZWxhdGl2ZU9mZnNldCwgcmlnaHQpOworICAgICAgICB9CiAgICAgICAgIHJl
dHVybiByaWdodDsKICAgICB9CiAKQEAgLTMzNTcsOCArMzM1MSwxMSBAQCBpbnQgUmVuZGVyQmxv
Y2s6OmxlZnRtb3N0UG9zaXRpb24oYm9vbCBpCiAKICAgICBpZiAoaGFzQ29sdW1ucygpKSB7CiAg
ICAgICAgIC8vIFRoaXMgb25seSBtYXR0ZXJzIGZvciBSVEwKLSAgICAgICAgaWYgKHN0eWxlKCkt
PmRpcmVjdGlvbigpID09IFJUTCkKLSAgICAgICAgICAgIGxlZnQgPSBtaW4oY29sdW1uUmVjdHMo
KS0+bGFzdCgpLngoKSArIHJlbGF0aXZlT2Zmc2V0LCBsZWZ0KTsKKyAgICAgICAgaWYgKHN0eWxl
KCktPmRpcmVjdGlvbigpID09IFJUTCkgeworICAgICAgICAgICAgQ29sdW1uSW5mbyogY29sSW5m
byA9IGNvbHVtbkluZm8oKTsKKyAgICAgICAgICAgIGlmIChjb2xJbmZvLT5jb2x1bW5Db3VudCgp
KQorICAgICAgICAgICAgICAgIGxlZnQgPSBtaW4oY29sSW5mby0+Y29sdW1uUmVjdEF0KGNvbElu
Zm8tPmNvbHVtbkNvdW50KCkgLSAxKS54KCkgKyByZWxhdGl2ZU9mZnNldCwgbGVmdCk7CisgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIGxlZnQ7CiAgICAgfQogCkBAIC0zODQ5LDE3ICszODQ2LDE3
IEBAIGJvb2wgUmVuZGVyQmxvY2s6OmhpdFRlc3RGbG9hdHMoY29uc3QgSGkKIGJvb2wgUmVuZGVy
QmxvY2s6OmhpdFRlc3RDb2x1bW5zKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRU
ZXN0UmVzdWx0JiByZXN1bHQsIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRlc3RB
Y3Rpb24gaGl0VGVzdEFjdGlvbikKIHsKICAgICAvLyBXZSBuZWVkIHRvIGRvIG11bHRpcGxlIHBh
c3NlcywgYnJlYWtpbmcgdXAgb3VyIGhpdCB0ZXN0aW5nIGludG8gc3RyaXBzLgotICAgIFZlY3Rv
cjxJbnRSZWN0PiogY29sUmVjdHMgPSBjb2x1bW5SZWN0cygpOwotICAgIGludCBjb2xDb3VudCA9
IGNvbFJlY3RzLT5zaXplKCk7CisgICAgQ29sdW1uSW5mbyogY29sSW5mbyA9IGNvbHVtbkluZm8o
KTsKKyAgICBpbnQgY29sQ291bnQgPSBjb2xJbmZvLT5jb2x1bW5Db3VudCgpOwogICAgIGlmICgh
Y29sQ291bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbnQgbGVmdCA9IGJvcmRlckxl
ZnQoKSArIHBhZGRpbmdMZWZ0KCk7CiAgICAgaW50IGN1cnJZT2Zmc2V0ID0gMDsKICAgICBpbnQg
aTsKICAgICBmb3IgKGkgPSAwOyBpIDwgY29sQ291bnQ7IGkrKykKLSAgICAgICAgY3VycllPZmZz
ZXQgLT0gY29sUmVjdHMtPmF0KGkpLmhlaWdodCgpOworICAgICAgICBjdXJyWU9mZnNldCAtPSBj
b2xJbmZvLT5jb2x1bW5SZWN0QXQoaSkuaGVpZ2h0KCk7CiAgICAgZm9yIChpID0gY29sQ291bnQg
LSAxOyBpID49IDA7IGktLSkgewotICAgICAgICBJbnRSZWN0IGNvbFJlY3QgPSBjb2xSZWN0cy0+
YXQoaSk7CisgICAgICAgIEludFJlY3QgY29sUmVjdCA9IGNvbEluZm8tPmNvbHVtblJlY3RBdChp
KTsKICAgICAgICAgaW50IGN1cnJYT2Zmc2V0ID0gY29sUmVjdC54KCkgLSBsZWZ0OwogICAgICAg
ICBjdXJyWU9mZnNldCArPSBjb2xSZWN0LmhlaWdodCgpOwogICAgICAgICBjb2xSZWN0Lm1vdmUo
dHgsIHR5KTsKQEAgLTQxNzEsOCArNDE2OCw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnNldERlc2ly
ZWRDb2x1bW5Db3VudEEKICAgICAgICAgICAgIGdDb2x1bW5JbmZvTWFwLT5hZGQodGhpcywgaW5m
byk7CiAgICAgICAgICAgICBzZXRIYXNDb2x1bW5zKHRydWUpOwogICAgICAgICB9Ci0gICAgICAg
IGluZm8tPm1fZGVzaXJlZENvbHVtbkNvdW50ID0gY291bnQ7Ci0gICAgICAgIGluZm8tPm1fZGVz
aXJlZENvbHVtbldpZHRoID0gd2lkdGg7ICAgCisgICAgICAgIGluZm8tPnNldERlc2lyZWRDb2x1
bW5Db3VudChjb3VudCk7CisgICAgICAgIGluZm8tPnNldERlc2lyZWRDb2x1bW5XaWR0aCh3aWR0
aCk7ICAgCiAgICAgfQogfQogCkBAIC00MTgwLDIxICs0MTc3LDIxIEBAIGludCBSZW5kZXJCbG9j
azo6ZGVzaXJlZENvbHVtbldpZHRoKCkgY28KIHsKICAgICBpZiAoIWhhc0NvbHVtbnMoKSkKICAg
ICAgICAgcmV0dXJuIGNvbnRlbnRXaWR0aCgpOwotICAgIHJldHVybiBnQ29sdW1uSW5mb01hcC0+
Z2V0KHRoaXMpLT5tX2Rlc2lyZWRDb2x1bW5XaWR0aDsKKyAgICByZXR1cm4gZ0NvbHVtbkluZm9N
YXAtPmdldCh0aGlzKS0+ZGVzaXJlZENvbHVtbldpZHRoKCk7CiB9CiAKIHVuc2lnbmVkIFJlbmRl
ckJsb2NrOjpkZXNpcmVkQ29sdW1uQ291bnQoKSBjb25zdAogewogICAgIGlmICghaGFzQ29sdW1u
cygpKQogICAgICAgICByZXR1cm4gMTsKLSAgICByZXR1cm4gZ0NvbHVtbkluZm9NYXAtPmdldCh0
aGlzKS0+bV9kZXNpcmVkQ29sdW1uQ291bnQ7CisgICAgcmV0dXJuIGdDb2x1bW5JbmZvTWFwLT5n
ZXQodGhpcyktPmRlc2lyZWRDb2x1bW5Db3VudCgpOwogfQogCi1WZWN0b3I8SW50UmVjdD4qIFJl
bmRlckJsb2NrOjpjb2x1bW5SZWN0cygpIGNvbnN0CitDb2x1bW5JbmZvKiBSZW5kZXJCbG9jazo6
Y29sdW1uSW5mbygpIGNvbnN0CiB7CiAgICAgaWYgKCFoYXNDb2x1bW5zKCkpCiAgICAgICAgIHJl
dHVybiAwOwotICAgIHJldHVybiAmZ0NvbHVtbkluZm9NYXAtPmdldCh0aGlzKS0+bV9jb2x1bW5S
ZWN0czsgICAgCisgICAgcmV0dXJuIGdDb2x1bW5JbmZvTWFwLT5nZXQodGhpcyk7ICAgIAogfQog
CiBpbnQgUmVuZGVyQmxvY2s6OmxheW91dENvbHVtbnMoaW50IGVuZE9mQ29udGVudCwgaW50IHJl
cXVlc3RlZENvbHVtbkhlaWdodCkKQEAgLTQyMDQsOSArNDIwMSw4IEBAIGludCBSZW5kZXJCbG9j
azo6bGF5b3V0Q29sdW1ucyhpbnQgZW5kT2YKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgQ29s
dW1uSW5mbyogaW5mbyA9IGdDb2x1bW5JbmZvTWFwLT5nZXQodGhpcyk7Ci0gICAgaW50IGRlc2ly
ZWRDb2x1bW5XaWR0aCA9IGluZm8tPm1fZGVzaXJlZENvbHVtbldpZHRoOwotICAgIGludCBkZXNp
cmVkQ29sdW1uQ291bnQgPSBpbmZvLT5tX2Rlc2lyZWRDb2x1bW5Db3VudDsKLSAgICBWZWN0b3I8
SW50UmVjdD4qIGNvbHVtblJlY3RzID0gJmluZm8tPm1fY29sdW1uUmVjdHM7CisgICAgaW50IGRl
c2lyZWRDb2x1bW5XaWR0aCA9IGluZm8tPmRlc2lyZWRDb2x1bW5XaWR0aCgpOworICAgIGludCBk
ZXNpcmVkQ29sdW1uQ291bnQgPSBpbmZvLT5kZXNpcmVkQ29sdW1uQ291bnQoKTsKICAgICAKICAg
ICBib29sIGNvbXB1dGVJbnRyaW5zaWNIZWlnaHQgPSAoZW5kT2ZDb250ZW50ID09IC0xKTsKIApA
QCAtNDIyNyw3ICs0MjIzLDcgQEAgaW50IFJlbmRlckJsb2NrOjpsYXlvdXRDb2x1bW5zKGludCBl
bmRPZgogICAgIGludCBjb2xHYXAgPSBjb2x1bW5HYXAoKTsKIAogICAgIC8vIENvbXB1dGUgYSBj
b2xsZWN0aW9uIG9mIGNvbHVtbiByZWN0cy4KLSAgICBjb2x1bW5SZWN0cy0+Y2xlYXIoKTsKKyAg
ICBpbmZvLT5jbGVhckNvbHVtbnMoKTsKICAgICAKICAgICAvLyBUaGVuIHdlIGRvIGEgc2ltdWxh
dGVkICJwYWludCIgaW50byB0aGUgY29sdW1uIHNsaWNlcyBhbmQgYWxsb3cgdGhlIGNvbnRlbnQg
dG8gc2xpZ2h0bHkgYWRqdXN0IG91ciBpbmRpdmlkdWFsIGNvbHVtbiByZWN0cy4KICAgICAvLyBG
SVhNRTogV2UgbmVlZCB0byB0YWtlIGludG8gYWNjb3VudCBsYXllcnMgdGhhdCBhcmUgYWZmZWN0
ZWQgYnkgdGhlIGNvbHVtbnMgYXMgd2VsbCBoZXJlIHNvIHRoYXQgdGhleSBjYW4gaGF2ZSBhbiBv
cHBvcnR1bml0eQpAQCAtNDI5Niw3ICs0MjkyLDcgQEAgaW50IFJlbmRlckJsb2NrOjpsYXlvdXRD
b2x1bW5zKGludCBlbmRPZgogCiAgICAgICAgIG1heENvbEJvdHRvbSA9IG1heChjb2xSZWN0LmJv
dHRvbSgpLCBtYXhDb2xCb3R0b20pOwogCi0gICAgICAgIGNvbHVtblJlY3RzLT5hcHBlbmQoY29s
UmVjdCk7CisgICAgICAgIGluZm8tPmFkZENvbHVtblJlY3QoY29sUmVjdCk7CiAgICAgICAgIAog
ICAgICAgICAvLyBTdGFydCBhZGRpbmcgaW4gbW9yZSBjb2x1bW5zIGFzIGxvbmcgYXMgdGhlcmUn
cyBzdGlsbCBjb250ZW50IGxlZnQuCiAgICAgICAgIGlmIChjdXJyWSA8IGVuZE9mQ29udGVudCAm
JiBpID09IGNvbENvdW50IC0gMSAmJiAoY29tcHV0ZUludHJpbnNpY0hlaWdodCB8fCBjb250ZW50
SGVpZ2h0KCkpKQpAQCAtNDMyMiw3ICs0MzE4LDcgQEAgaW50IFJlbmRlckJsb2NrOjpsYXlvdXRD
b2x1bW5zKGludCBlbmRPZgogICAgIHYtPnNldFByaW50UmVjdChJbnRSZWN0KCkpOwogICAgIHYt
PnNldFRydW5jYXRlZEF0KDApOwogICAgIAotICAgIEFTU0VSVChjb2xDb3VudCA9PSBjb2x1bW5S
ZWN0cy0+c2l6ZSgpKTsKKyAgICBBU1NFUlQoY29sQ291bnQgPT0gaW5mby0+Y29sdW1uQ291bnQo
KSk7CiAgICAgCiAgICAgcmV0dXJuIGNvbnRlbnRCb3R0b207CiB9CkBAIC00MzMzLDE2ICs0MzI5
LDE4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkanVzdFBvaW50VG9Db2x1bW5Db24KICAgICBpZiAo
IWhhc0NvbHVtbnMoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFZlY3RvcjxJbnRSZWN0
PiogY29sUmVjdHMgPSBjb2x1bW5SZWN0cygpOworICAgIENvbHVtbkluZm8qIGNvbEluZm8gPSBj
b2x1bW5JbmZvKCk7CisgICAgaWYgKCFjb2xJbmZvLT5jb2x1bW5Db3VudCgpKQorICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggY29sdW1ucyB3ZSBpbnRlcnNlY3QuCiAg
ICAgaW50IGNvbEdhcCA9IGNvbHVtbkdhcCgpOwogICAgIGludCBsZWZ0R2FwID0gY29sR2FwIC8g
MjsKLSAgICBJbnRQb2ludCBjb2x1bW5Qb2ludChjb2xSZWN0cy0+YXQoMCkubG9jYXRpb24oKSk7
CisgICAgSW50UG9pbnQgY29sdW1uUG9pbnQoY29sSW5mby0+Y29sdW1uUmVjdEF0KDApLmxvY2F0
aW9uKCkpOwogICAgIGludCB5T2Zmc2V0ID0gMDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgY29sUmVjdHMtPnNpemUoKTsgaSsrKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGNvbEluZm8tPmNvbHVtbkNvdW50KCk7IGkrKykgewogICAgICAgICAvLyBBZGQgaW4gaGFsZiB0
aGUgY29sdW1uIGdhcCB0byB0aGUgbGVmdCBhbmQgcmlnaHQgb2YgdGhlIHJlY3QuCi0gICAgICAg
IEludFJlY3QgY29sUmVjdCA9IGNvbFJlY3RzLT5hdChpKTsKKyAgICAgICAgSW50UmVjdCBjb2xS
ZWN0ID0gY29sSW5mby0+Y29sdW1uUmVjdEF0KGkpOwogICAgICAgICBJbnRSZWN0IGdhcEFuZENv
bHVtblJlY3QoY29sUmVjdC54KCkgLSBsZWZ0R2FwLCBjb2xSZWN0LnkoKSwgY29sUmVjdC53aWR0
aCgpICsgY29sR2FwLCBjb2xSZWN0LmhlaWdodCgpKTsKIAogICAgICAgICBpZiAocG9pbnQueCgp
ID49IGdhcEFuZENvbHVtblJlY3QueCgpICYmIHBvaW50LngoKSA8IGdhcEFuZENvbHVtblJlY3Qu
cmlnaHQoKSkgewpAQCAtNDM3NCwxMyArNDM3MiwxMyBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGp1
c3RSZWN0Rm9yQ29sdW1ucyhJCiAgICAgaWYgKCFoYXNDb2x1bW5zKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBWZWN0b3I8SW50UmVjdD4qIGNvbFJlY3RzID0gY29sdW1uUmVjdHMoKTsK
KyAgICBDb2x1bW5JbmZvKiBjb2xJbmZvID0gY29sdW1uSW5mbygpOwogCiAgICAgLy8gQmVnaW4g
d2l0aCBhIHJlc3VsdCByZWN0IHRoYXQgaXMgZW1wdHkuCiAgICAgSW50UmVjdCByZXN1bHQ7CiAg
ICAgCiAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGNvbHVtbnMgd2UgaW50ZXJzZWN0LgotICAgIHVu
c2lnbmVkIGNvbENvdW50ID0gY29sUmVjdHMtPnNpemUoKTsKKyAgICB1bnNpZ25lZCBjb2xDb3Vu
dCA9IGNvbEluZm8tPmNvbHVtbkNvdW50KCk7CiAgICAgaWYgKCFjb2xDb3VudCkKICAgICAgICAg
cmV0dXJuOwogICAgIApAQCAtNDM4OCw3ICs0Mzg2LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRq
dXN0UmVjdEZvckNvbHVtbnMoSQogICAgIAogICAgIGludCBjdXJyWU9mZnNldCA9IDA7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbENvdW50OyBpKyspIHsKLSAgICAgICAgSW50UmVj
dCBjb2xSZWN0ID0gY29sUmVjdHMtPmF0KGkpOworICAgICAgICBJbnRSZWN0IGNvbFJlY3QgPSBj
b2xJbmZvLT5jb2x1bW5SZWN0QXQoaSk7CiAgICAgICAgIGludCBjdXJyWE9mZnNldCA9IGNvbFJl
Y3QueCgpIC0gbGVmdDsKICAgICAgICAgCiAgICAgICAgIEludFJlY3QgcmVwYWludFJlY3QgPSBy
OwpAQCAtNDQxMCwxMyArNDQwOCwxMyBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGp1c3RGb3JDb2x1
bW5zKEludFNpCiAgICAgaWYgKCFoYXNDb2x1bW5zKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFZlY3RvcjxJbnRSZWN0PiYgY29sdW1uUmVjdHMgPSAqdGhpcy0+Y29sdW1uUmVjdHMoKTsKLSAg
CisgICAgQ29sdW1uSW5mbyogY29sSW5mbyA9IGNvbHVtbkluZm8oKTsKKwogICAgIGludCBsZWZ0
ID0gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKTsKICAgICBpbnQgeU9mZnNldCA9IDA7Ci0g
ICAgc2l6ZV90IGNvbHVtbkNvdW50ID0gY29sdW1uUmVjdHMuc2l6ZSgpOworICAgIHNpemVfdCBj
b2x1bW5Db3VudCA9IGNvbEluZm8tPmNvbHVtbkNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb2x1bW5Db3VudDsgKytpKSB7Ci0gICAgICAgIEludFJlY3QgY29sdW1uUmVjdCA9
IGNvbHVtblJlY3RzW2ldOworICAgICAgICBJbnRSZWN0IGNvbHVtblJlY3QgPSBjb2xJbmZvLT5j
b2x1bW5SZWN0QXQoaSk7CiAgICAgICAgIGludCB4T2Zmc2V0ID0gY29sdW1uUmVjdC54KCkgLSBs
ZWZ0OwogICAgICAgICBpZiAocG9pbnQueSgpIDwgY29sdW1uUmVjdC5ib3R0b20oKSArIHlPZmZz
ZXQpIHsKICAgICAgICAgICAgIG9mZnNldC5leHBhbmQoeE9mZnNldCwgLXlPZmZzZXQpOwpJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCShyZXZpc2lvbiA2NjkwMSkKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb2x1bW5JbmZvOwogY2xhc3MgSW5saW5lSXRl
cmF0b3I7CiBjbGFzcyBSZW5kZXJJbmxpbmU7CiAKQEAgLTE0OCw3ICsxNDksNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgYXBwZW5kUnVuc0Zvck9iamVjdChpbnQgc3RhcnQsIGludCBlbmQs
IFJlbmRlck9iamVjdCosIElubGluZUJpZGlSZXNvbHZlciYpOyAgICAKICAgICBzdGF0aWMgYm9v
bCByZXF1aXJlc0xpbmVCb3goY29uc3QgSW5saW5lSXRlcmF0b3ImLCBib29sIGlzTGluZUVtcHR5
ID0gdHJ1ZSwgYm9vbCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkgPSB0cnVlKTsKIAotICAgIFZl
Y3RvcjxJbnRSZWN0PiogY29sdW1uUmVjdHMoKSBjb25zdDsKKyAgICBDb2x1bW5JbmZvKiBjb2x1
bW5JbmZvKCkgY29uc3Q7CiAgICAgaW50IGNvbHVtbkdhcCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiA2Njg4NikKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiAr
NDQsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAK
KyNpbmNsdWRlICJDb2x1bW5JbmZvLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgog
I2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVj
dG9yLmgiCkBAIC0yNTM5LDEyICsyNTQwLDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Q2hp
bGRMYXllckludG9Db2wKICAgICBpbnQgbGF5ZXJZID0gMDsKICAgICBjb2x1bW5CbG9jay0+bGF5
ZXIoKS0+Y29udmVydFRvTGF5ZXJDb29yZHMocm9vdExheWVyLCBsYXllclgsIGxheWVyWSk7CiAg
ICAgCi0gICAgVmVjdG9yPEludFJlY3Q+KiBjb2xSZWN0cyA9IGNvbHVtbkJsb2NrLT5jb2x1bW5S
ZWN0cygpOwotICAgIHVuc2lnbmVkIGNvbENvdW50ID0gY29sUmVjdHMtPnNpemUoKTsKKyAgICBD
b2x1bW5JbmZvKiBjb2xJbmZvID0gY29sdW1uQmxvY2stPmNvbHVtbkluZm8oKTsKKyAgICB1bnNp
Z25lZCBjb2xDb3VudCA9IGNvbEluZm8tPmNvbHVtbkNvdW50KCk7CiAgICAgaW50IGN1cnJZT2Zm
c2V0ID0gMDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29sQ291bnQ7IGkrKykgewog
ICAgICAgICAvLyBGb3IgZWFjaCByZWN0LCB3ZSBjbGlwIHRvIHRoZSByZWN0LCBhbmQgdGhlbiB3
ZSBhZGp1c3Qgb3VyIGNvb3Jkcy4KLSAgICAgICAgSW50UmVjdCBjb2xSZWN0ID0gY29sUmVjdHMt
PmF0KGkpOworICAgICAgICBJbnRSZWN0IGNvbFJlY3QgPSBjb2xJbmZvLT5jb2x1bW5SZWN0QXQo
aSk7CiAgICAgICAgIGludCBjdXJyWE9mZnNldCA9IGNvbFJlY3QueCgpIC0gKGNvbHVtbkJsb2Nr
LT5ib3JkZXJMZWZ0KCkgKyBjb2x1bW5CbG9jay0+cGFkZGluZ0xlZnQoKSk7CiAgICAgICAgIGNv
bFJlY3QubW92ZShsYXllclgsIGxheWVyWSk7CiAKQEAgLTMwMDUsMTggKzMwMDYsMTggQEAgUmVu
ZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0Q2hpbGRMYQogICAgIGludCBsYXllclkgPSAw
OwogICAgIGNvbHVtbkJsb2NrLT5sYXllcigpLT5jb252ZXJ0VG9MYXllckNvb3Jkcyhyb290TGF5
ZXIsIGxheWVyWCwgbGF5ZXJZKTsKICAgICAKLSAgICBWZWN0b3I8SW50UmVjdD4qIGNvbFJlY3Rz
ID0gY29sdW1uQmxvY2stPmNvbHVtblJlY3RzKCk7Ci0gICAgaW50IGNvbENvdW50ID0gY29sUmVj
dHMtPnNpemUoKTsKKyAgICBDb2x1bW5JbmZvKiBjb2xJbmZvID0gY29sdW1uQmxvY2stPmNvbHVt
bkluZm8oKTsKKyAgICBpbnQgY29sQ291bnQgPSBjb2xJbmZvLT5jb2x1bW5Db3VudCgpOwogICAg
IAogICAgIC8vIFdlIGhhdmUgdG8gZ28gYmFja3dhcmRzIGZyb20gdGhlIGxhc3QgY29sdW1uIHRv
IHRoZSBmaXJzdC4KICAgICBpbnQgbGVmdCA9IGNvbHVtbkJsb2NrLT5ib3JkZXJMZWZ0KCkgKyBj
b2x1bW5CbG9jay0+cGFkZGluZ0xlZnQoKTsKICAgICBpbnQgY3VycllPZmZzZXQgPSAwOwogICAg
IGludCBpOwogICAgIGZvciAoaSA9IDA7IGkgPCBjb2xDb3VudDsgaSsrKQotICAgICAgICBjdXJy
WU9mZnNldCAtPSBjb2xSZWN0cy0+YXQoaSkuaGVpZ2h0KCk7CisgICAgICAgIGN1cnJZT2Zmc2V0
IC09IGNvbEluZm8tPmNvbHVtblJlY3RBdChpKS5oZWlnaHQoKTsKICAgICBmb3IgKGkgPSBjb2xD
b3VudCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgIC8vIEZvciBlYWNoIHJlY3QsIHdlIGNs
aXAgdG8gdGhlIHJlY3QsIGFuZCB0aGVuIHdlIGFkanVzdCBvdXIgY29vcmRzLgotICAgICAgICBJ
bnRSZWN0IGNvbFJlY3QgPSBjb2xSZWN0cy0+YXQoaSk7CisgICAgICAgIEludFJlY3QgY29sUmVj
dCA9IGNvbEluZm8tPmNvbHVtblJlY3RBdChpKTsKICAgICAgICAgaW50IGN1cnJYT2Zmc2V0ID0g
Y29sUmVjdC54KCkgLSBsZWZ0OwogICAgICAgICBjdXJyWU9mZnNldCArPSBjb2xSZWN0LmhlaWdo
dCgpOwogICAgICAgICBjb2xSZWN0Lm1vdmUobGF5ZXJYLCBsYXllclkpOwo=
</data>
<flag name="review"
          id="55859"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>