<?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>164952</bug_id>
          
          <creation_ts>2016-11-18 13:46:36 -0800</creation_ts>
          <short_desc>Use Vector::uncheckedAppend() in more places</short_desc>
          <delta_ts>2016-12-06 09:43:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1252830</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-11-18 13:46:36 -0800</bug_when>
    <thetext>We can use Vector::uncheckedAppend() whenever the number of items that will be appended to a vector is equal to or less than its capacity. Many call sites that call Vector::reserveInitialCapacity() and then use Vector::append() can be written to use Vector::uncheckedAppend().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252832</commentid>
    <comment_count>1</comment_count>
      <attachid>295187</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-11-18 13:47:59 -0800</bug_when>
    <thetext>Created attachment 295187
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253164</commentid>
    <comment_count>2</comment_count>
      <attachid>295187</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-20 16:29:59 -0800</bug_when>
    <thetext>Comment on attachment 295187
Patch

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

&gt; Source/WebCore/contentextensions/DFAMinimizer.cpp:90
&gt; +        m_sets.uncheckedAppend(SetDescriptor({ 0, size, 0 }));

Peculiar that we reserve capacity for &quot;size&quot; elements, but here we do only a single uncheckedAppend. Did we reserve too much capacity?

Syntax is peculiar; I think it should just be:

    m_sets.uncheckedAppend(SetDescriptor { 0, size, 0 });

No need to have both parentheses and braces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256836</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-12-06 09:39:30 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 295187 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=295187&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/contentextensions/DFAMinimizer.cpp:90
&gt; &gt; +        m_sets.uncheckedAppend(SetDescriptor({ 0, size, 0 }));
&gt; 
&gt; Peculiar that we reserve capacity for &quot;size&quot; elements, but here we do only a
&gt; single uncheckedAppend. Did we reserve too much capacity?
&gt; 

We may have reserved too much though it is not immediately obvious from reading the code. I hope you do not mind that I defer proving the bound of m_set to bug #165472.

&gt; Syntax is peculiar; I think it should just be:
&gt; 
&gt;     m_sets.uncheckedAppend(SetDescriptor { 0, size, 0 });
&gt; 
&gt; No need to have both parentheses and braces.

Will fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256838</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-12-06 09:43:10 -0800</bug_when>
    <thetext>Committed r209400: &lt;http://trac.webkit.org/changeset/209400&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295187</attachid>
            <date>2016-11-18 13:47:59 -0800</date>
            <delta_ts>2016-11-20 16:29:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164952-20161118134752.patch</filename>
            <type>text/plain</type>
            <size>14387</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4ODg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDg5NmY5NWUyMGJkYTM3
NTUyZTQzOGRkYTUwZGY2ZDYyNTEzNzFkNy4uZDVhNjk0ZWJhYTM2NThkM2FkNTQ4ZDA4ZmMyMTMx
MTMzN2ZjYjZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE2LTExLTE4ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgVmVjdG9yOjp1bmNo
ZWNrZWRBcHBlbmQoKSBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2UgY2FuIHVzZSBWZWN0b3I6OnVuY2hlY2tlZEFwcGVuZCgp
IHdoZW5ldmVyIHRoZSBudW1iZXIgb2YgaXRlbXMgdGhhdCB3aWxsIGJlIGFwcGVuZGVkCisgICAg
ICAgIHRvIGEgdmVjdG9yIGlzIGVxdWFsIHRvIG9yIGxlc3MgdGhhbiBpdHMgY2FwYWNpdHkuIFVz
aW5nIFZlY3Rvcjo6dW5jaGVja2VkQXBwZW5kKCkgaXMKKyAgICAgICAgbW9yZSBlZmZpY2llbnQg
dGhhbiBWZWN0b3I6OmFwcGVuZCgpIGFzIGl0IGF2b2lkcyBjaGVja2luZyB0aGUgY2FwYWNpdHkg
b2YgdGhlIHZlY3RvcgorICAgICAgICBiZWZvcmUgYXBwZW5kaW5nIGEgdmFsdWUgdG8gdGhlIGVu
ZCBvZiBpdC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21w
aWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNv
ZGVDb21waWxlcjo6ZXh0cmFjdEp1bXBUYWJsZSk6CisgICAgICAgICogY29udGVudGV4dGVuc2lv
bnMvREZBTWluaW1pemVyLmNwcDoKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6Y29weVByb3BlcnRpZXNJblNldCk6
IFVzZSBWZWN0b3I6OnVuY2hlY2tlZEFwcGVuZCgpIGFuZCBpbmxpbmUKKyAgICAgICAgdGhlIGFz
c2lnbm1lbnQgb2YgdGhlIHRlbXBvcmFyeSB2YXJpYWJsZSB2YWx1ZSBpbnRvIHRoZSBpZiBjb25k
aXRpb24gdG8gbGltaXQgaXRzIHNjb3BlCisgICAgICAgIGFzIGl0IGlzIHJlZmVyZW5jZWQgZXhh
Y3RseSBvbmNlIGluIHRoZSBsb29wIGJvZHkuCisgICAgICAgICogY3NzL1N0eWxlUnVsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVHcm91cDo6U3R5bGVSdWxlR3JvdXApOiBVc2Ug
VmVjdG9yOjp1bmNoZWNrZWRBcHBlbmQoKSBhbmQgd3JpdGUgZm9yLWxvb3AKKyAgICAgICAgdXNp
bmcgYSBDKysxMSByYW5nZS1iYXNlZCBmb3ItbG9vcC4KKyAgICAgICAgKiBjc3MvcGFyc2VyL0NT
U1BhcnNlclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6
c2V0TGFuZ0FyZ3VtZW50TGlzdCk6CisgICAgICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRJc050aExhc3RDaGlsZE9mKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVJl
bmRlcmVkUmVjdHNGb3JNYXJrZXIpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydFRvTGF5b3V0VW5pdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpBdWRpb0J1cyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNo
ZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvbHlnb25zRm9yUmVjdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwOgor
ICAgICAgICAoQ2FwdHVyZURldmljZU1hbmFnZXI6OmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0
cmFpbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmZpdG5lc3NE
aXN0YW5jZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNG
TmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZvcm1DcmVhdGUpOgorCiAyMDE2LTExLTE4ICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgVHJpZWQgdG8gZml4IHNv
bWUgbm9uLW1hY09TIGJ1aWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDQ3MTExMjA0MTYzZWQ5YzVmY2JjMTFm
ZDJmYjAwZWMwOTEzMTA1MmQuLjVkMThjMDZiNjZjNWM1Mzk4ZmU3YTYyZjNlMTI0NjAxYWU0Mzk0
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcApAQCAtMjY2Niw3ICsyNjY2LDcgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBW
ZWMKICAgICAvLyBuZWVkIHRvIGJlIGlzb2xhdGVkQ29waWVzIHNvIHdlIGRvbid0IHJ1biBpbnRv
IHRocmVhZCBzYWZldHkgaXNzdWVzIGZvciB0aGUgU3RyaW5nSW1wbHMuCiAgICAgbV9ibG9iVVJM
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGJsb2JVUkxzLnNpemUoKSk7CiAgICAgZm9yIChhdXRv
JiB1cmwgOiBibG9iVVJMcykKLSAgICAgICAgbV9ibG9iVVJMcy5hcHBlbmQodXJsLmlzb2xhdGVk
Q29weSgpKTsKKyAgICAgICAgbV9ibG9iVVJMcy51bmNoZWNrZWRBcHBlbmQodXJsLmlzb2xhdGVk
Q29weSgpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6QXJy
YXlCdWZmZXJDb250ZW50c0FycmF5PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRyYW5zZmVyQXJy
YXlCdWZmZXJzKApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
REZBQnl0ZWNvZGVDb21waWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcAppbmRleCA1MGJmMjU2N2YzMDliZDBlNWU3MzQwZTJk
NmZmYzU5MzdkMmM5Nzk1Li5jOWM1ZjhiOGU2NzY3YjUwOTA1OTJmN2EwOGZjOTMxNDRlZmNlZmJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29k
ZUNvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFC
eXRlY29kZUNvbXBpbGVyLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIERGQUJ5dGVjb2RlQ29tcGls
ZXI6Okp1bXBUYWJsZSBERkFCeXRlY29kZUNvbXBpbGVyOjpleHRyYWN0SnVtcFRhYmxlKFZlY3Rv
cjxERkFCCiAgICAgICAgIEFTU0VSVChyYW5nZS5taW4gPj0ganVtcFRhYmxlLm1pbik7CiAgICAg
ICAgIEFTU0VSVChyYW5nZS5taW4gPD0ganVtcFRhYmxlLm1heCk7CiAKLSAgICAgICAganVtcFRh
YmxlLmRlc3RpbmF0aW9ucy5hcHBlbmQocmFuZ2UuZGVzdGluYXRpb24pOworICAgICAgICBqdW1w
VGFibGUuZGVzdGluYXRpb25zLnVuY2hlY2tlZEFwcGVuZChyYW5nZS5kZXN0aW5hdGlvbik7CiAg
ICAgfQogCiAgICAgcmFuZ2VzLnJlbW92ZShmaXJzdFJhbmdlLCBzaXplKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQU1pbmltaXplci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFNaW5pbWl6ZXIuY3BwCmluZGV4IDI5MTMw
NmMzM2E4MTBmMDFhNGE4ODc4YjcxZmIxNjc5OThlYzkxZjUuLjAxNzkyOTliMjMxZDk3OTE3NDE5
ZjE4YmJjYmEyMTNlYmE1OWZkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0RGQU1pbmltaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvREZBTWluaW1pemVyLmNwcApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBtX2VsZW1lbnRQb3NpdGlvbkluUGFydGl0aW9uZWROb2Rlc1tpXSA9IGk7CiAgICAg
ICAgICAgICBtX2VsZW1lbnRUb1NldE1hcFtpXSA9IDA7CiAgICAgICAgIH0KLSAgICAgICAgbV9z
ZXRzLmFwcGVuZChTZXREZXNjcmlwdG9yKHsgMCwgc2l6ZSwgMCB9KSk7CisgICAgICAgIG1fc2V0
cy51bmNoZWNrZWRBcHBlbmQoU2V0RGVzY3JpcHRvcih7IDAsIHNpemUsIDAgfSkpOwogICAgIH0K
IAogICAgIHZvaWQgcmVzZXJ2ZVVuaW5pdGlhbGl6ZWRDYXBhY2l0eSh1bnNpZ25lZCBlbGVtZW50
Q291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCmluZGV4IDMwNTMzMmQ5
ZjViMGY4ZjY4YmQ1Njg3NDc5YTJhNWRmMmI3MWVmMzIuLmE3ZTA1YWY5M2JjZDU2MzhiNWNlMTNh
NTNhOThiMzYzNGZhYmUxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVBy
b3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3Bw
CkBAIC0xMjk2LDkgKzEyOTYsOCBAQCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gU3R5bGVQ
cm9wZXJ0aWVzOjpjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcgogICAgIFZlY3Rv
cjxDU1NQcm9wZXJ0eSwgMjU2PiBsaXN0OwogICAgIGxpc3QucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShsZW5ndGgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewot
ICAgICAgICBhdXRvIHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHNldFtpXSk7
Ci0gICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKENTU1Byb3BlcnR5
KHNldFtpXSwgV1RGTW92ZSh2YWx1ZSksIGZhbHNlKSk7CisgICAgICAgIGlmIChhdXRvIHZhbHVl
ID0gZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHNldFtpXSkpCisgICAgICAgICAgICBsaXN0
LnVuY2hlY2tlZEFwcGVuZChDU1NQcm9wZXJ0eShzZXRbaV0sIFdURk1vdmUodmFsdWUpLCBmYWxz
ZSkpOwogICAgIH0KICAgICByZXR1cm4gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKGxp
c3QuZGF0YSgpLCBsaXN0LnNpemUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCmluZGV4
IDBlNzRkZTk5ZjU2NWUzNTM2NzRjNWRlZjQwZjZlN2MyMTQ5NTlhM2UuLmMxNDhjZjA2M2Y0NjBm
YzU3NWJjZDYzNWYxZmVhZjQ5YmI2ZDg5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCkBA
IC0zMjMsOCArMzIzLDggQEAgU3R5bGVSdWxlR3JvdXA6OlN0eWxlUnVsZUdyb3VwKGNvbnN0IFN0
eWxlUnVsZUdyb3VwJiBvKQogICAgIDogU3R5bGVSdWxlQmFzZShvKQogewogICAgIG1fY2hpbGRS
dWxlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG8ubV9jaGlsZFJ1bGVzLnNpemUoKSk7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IG8ubV9jaGlsZFJ1bGVzLnNpemUoKTsgaSA8IHNp
emU7ICsraSkKLSAgICAgICAgbV9jaGlsZFJ1bGVzLnVuY2hlY2tlZEFwcGVuZChvLm1fY2hpbGRS
dWxlc1tpXS0+Y29weSgpKTsKKyAgICBmb3IgKGF1dG8mIGNoaWxkUnVsZSA6IG8ubV9jaGlsZFJ1
bGVzKQorICAgICAgICBtX2NoaWxkUnVsZXMudW5jaGVja2VkQXBwZW5kKGNoaWxkUnVsZS0+Y29w
eSgpKTsKIH0KIAogdm9pZCBTdHlsZVJ1bGVHcm91cDo6d3JhcHBlckluc2VydFJ1bGUodW5zaWdu
ZWQgaW5kZXgsIFJlZjxTdHlsZVJ1bGVCYXNlPiYmIHJ1bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5jcHAKaW5kZXggZDEwZGVkMWUyOWFlYzYyY2ZkNmYw
YjY1NDdkMmM2ZWRmODBhMmE5ZS4uYzBhYWFjZWQ4NTE2MjZmZDQ0NTM1MjQyYzI0MzU3ZTI1YTNm
NWMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmNw
cApAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OnNldExhbmdBcmd1
bWVudExpc3QoY29uc3QgVmVjdG9yPENTU1BhcnNlclN0cmluZz4mIHN0cmluCiAgICAgYXV0byBh
cmd1bWVudExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxBdG9taWNTdHJpbmc+PigpOwog
ICAgIGFyZ3VtZW50TGlzdC0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdHJpbmdWZWN0b3Iuc2l6
ZSgpKTsKICAgICBmb3IgKGNvbnN0IEF0b21pY1N0cmluZyYgbGFuZ3VhZ2VBcmd1bWVudCA6IHN0
cmluZ1ZlY3RvcikKLSAgICAgICAgYXJndW1lbnRMaXN0LT5hcHBlbmQobGFuZ3VhZ2VBcmd1bWVu
dCk7CisgICAgICAgIGFyZ3VtZW50TGlzdC0+dW5jaGVja2VkQXBwZW5kKGxhbmd1YWdlQXJndW1l
bnQpOwogICAgIG1fc2VsZWN0b3ItPnNldExhbmdBcmd1bWVudExpc3QoV1RGTW92ZShhcmd1bWVu
dExpc3QpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9y
Q29tcGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3Bw
CmluZGV4IGU0ODQ4NDliOTJmOWQ2Y2NjNjNkYWE4OTMwODRlMWZlNDQ3NjIzMGUuLjJiZTM4Zjgx
YTQ0OGMxYzYwOGE0M2FiOWRhYWYwNDAxMGU4NGFkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Nq
aXQvU2VsZWN0b3JDb21waWxlci5jcHAKQEAgLTM2NjQsNyArMzY2NCw3IEBAIHZvaWQgU2VsZWN0
b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRJc050aExhc3RDaGlsZE9mKEFzc2VtYmxl
cjo6SnVtcExpc3QmCiAgICAgICAgIGZvciAoY29uc3QgTnRoQ2hpbGRPZlNlbGVjdG9ySW5mbyYg
bnRoTGFzdENoaWxkT2ZTZWxlY3RvckluZm8gOiBmcmFnbWVudC5udGhMYXN0Q2hpbGRPZkZpbHRl
cnMpIHsKICAgICAgICAgICAgIGlmIChudGhGaWx0ZXJJc0Fsd2F5c1NhdGlzaWZpZWQobnRoTGFz
dENoaWxkT2ZTZWxlY3RvckluZm8uYSwgbnRoTGFzdENoaWxkT2ZTZWxlY3RvckluZm8uYikpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB2YWxpZFN1YnNldEZpbHRlcnMu
YXBwZW5kKCZudGhMYXN0Q2hpbGRPZlNlbGVjdG9ySW5mbyk7CisgICAgICAgICAgICB2YWxpZFN1
YnNldEZpbHRlcnMudW5jaGVja2VkQXBwZW5kKCZudGhMYXN0Q2hpbGRPZlNlbGVjdG9ySW5mbyk7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKHZhbGlkU3Vic2V0RmlsdGVycy5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuY3BwCmluZGV4IDI2ZWU2M2FlYzY1NTQzZmMwZTc5ZmQzZDZlNmQ1Y2UzMTE1
OTU5ZjguLjMzZGNmMzI0OGU2ODkzZjI3ZmMwZGIzNzIxNThjZDI3ZmFlODE2MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0xNjIs
NyArMTYyLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVuZGVyZWRSZWN0c0Zvck1hcmtlcihSZW5k
ZXJlZERvY3VtZW50TWFya2VyJiBtYXJrZXIsIE5vZGUmIG4KICAgICBWZWN0b3I8RmxvYXRSZWN0
PiBhYnNvbHV0ZU1hcmtlclJlY3RzOwogICAgIGFic29sdXRlTWFya2VyUmVjdHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShhYnNvbHV0ZU1hcmtlclF1YWRzLnNpemUoKSk7CiAgICAgZm9yIChjb25z
dCBhdXRvJiBxdWFkIDogYWJzb2x1dGVNYXJrZXJRdWFkcykKLSAgICAgICAgYWJzb2x1dGVNYXJr
ZXJSZWN0cy5hcHBlbmQocXVhZC5ib3VuZGluZ0JveCgpKTsKKyAgICAgICAgYWJzb2x1dGVNYXJr
ZXJSZWN0cy51bmNoZWNrZWRBcHBlbmQocXVhZC5ib3VuZGluZ0JveCgpKTsKIAogICAgIG1hcmtl
ci5zZXRVbmNsaXBwZWRBYnNvbHV0ZVJlY3RzKGFic29sdXRlTWFya2VyUmVjdHMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQppbmRleCBjZTE2NzU5NGQx
YzgwZGI3ZTcyZmZlOWIzNDI3NmQzMWJmOGNmYjEzLi41N2EzZGYxNzI2YjBiMmIzOWY0ZmY4OGY1
YmU5MzcyNGZjNjRhNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZU1hYy5tbQpAQCAtODYsNyArODYsNyBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxMYXlvdXRVbml0
PiBjb252ZXJ0VG9MYXlvdXRVbml0cyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwTwogICAgIFZl
Y3RvcjxMYXlvdXRVbml0PiBzbmFwT2Zmc2V0czsKICAgICBzbmFwT2Zmc2V0cy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHNuYXBPZmZzZXRzQXNGbG9hdC5zaXplKCkpOwogICAgIGZvciAoYXV0byBv
ZmZzZXQgOiBzbmFwT2Zmc2V0c0FzRmxvYXQpCi0gICAgICAgIHNuYXBPZmZzZXRzLmFwcGVuZChv
ZmZzZXQpOworICAgICAgICBzbmFwT2Zmc2V0cy51bmNoZWNrZWRBcHBlbmQob2Zmc2V0KTsKIAog
ICAgIHJldHVybiBzbmFwT2Zmc2V0czsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvQnVzLmNwcAppbmRleCBlYzAyYWM0ODc3MWY4NjAzODQ1MTJlNmU3ODJmYzI5NDBiOWFk
NmRiLi5hNWQ4ZmEyYzU3ZmU4NjFhZTkwOGM3ZTNjMDQ0ZjRkZGJlMGVjMDc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCkBAIC02NSw3ICs2NSw3IEBAIEF1
ZGlvQnVzOjpBdWRpb0J1cyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbGVuZ3Ro
LCBib29sIGFsbG9jYXRlKQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9m
Q2hhbm5lbHM7ICsraSkgewogICAgICAgICBhdXRvIGNoYW5uZWwgPSBhbGxvY2F0ZSA/IHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9DaGFubmVsPihsZW5ndGgpIDogc3RkOjptYWtlX3VuaXF1ZTxBdWRp
b0NoYW5uZWw+KG51bGxwdHIsIGxlbmd0aCk7Ci0gICAgICAgIG1fY2hhbm5lbHMuYXBwZW5kKFdU
Rk1vdmUoY2hhbm5lbCkpOworICAgICAgICBtX2NoYW5uZWxzLnVuY2hlY2tlZEFwcGVuZChXVEZN
b3ZlKGNoYW5uZWwpKTsKICAgICB9CiAKICAgICBtX2xheW91dCA9IExheW91dENhbm9uaWNhbDsg
Ly8gZm9yIG5vdyB0aGlzIGlzIHRoZSBvbmx5IGxheW91dCB3ZSBkZWZpbmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDAzYTc4ZTdhZmE4
ZTQxZTVlZTQ1OWNmMTVkYzdmYWUwNmM2MWI2MGMuLmMxYzYwNjlmMDQ1OTYyNWFhMGJiOTczYmZm
MzY5MTExMWNjZWFkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmNwcApAQCAtNDAyLDcgKzQwMiw3IEBAIHZvaWQgRm9udENhY2hlOjpwdXJnZUlu
YWN0aXZlRm9udERhdGEodW5zaWduZWQgcHVyZ2VDb3VudCkKICAgICBrZXlzVG9SZW1vdmUucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShmb250UGxhdGZvcm1EYXRhQ2FjaGUoKS5zaXplKCkpOwogICAg
IGZvciAoYXV0byYgZW50cnkgOiBmb250UGxhdGZvcm1EYXRhQ2FjaGUoKSkgewogICAgICAgICBp
ZiAoZW50cnkudmFsdWUgJiYgIWNhY2hlZEZvbnRzKCkuY29udGFpbnMoKmVudHJ5LnZhbHVlKSkK
LSAgICAgICAgICAgIGtleXNUb1JlbW92ZS5hcHBlbmQoZW50cnkua2V5KTsKKyAgICAgICAgICAg
IGtleXNUb1JlbW92ZS51bmNoZWNrZWRBcHBlbmQoZW50cnkua2V5KTsKICAgICB9CiAgICAgZm9y
IChhdXRvJiBrZXkgOiBrZXlzVG9SZW1vdmUpCiAgICAgICAgIGZvbnRQbGF0Zm9ybURhdGFDYWNo
ZSgpLnJlbW92ZShrZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoVXRpbGl0aWVzLmNwcAppbmRleCAyNWZlNDMzMzY4NzQ3ZDgwYTk4NTUxYjk2NTc1MWM0
M2QxN2NlYTNmLi5mZDYyZjI3MTRhMDE0M2ZhNGU2NzBhNzVjZTJiZTdiOGJhNTNhYzgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNw
cApAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0YXRpYyBWZWN0b3I8RmxvYXRQb2ludEdyYXBoOjpQb2x5
Z29uPiBwb2x5Z29uc0ZvclJlY3QoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mCiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoIWlzQ29udGFpbmVkKQotICAgICAgICAgICAgcmVjdFBvbHlnb25zLmFw
cGVuZChlZGdlc0ZvclJlY3QocmVjdCwgZ3JhcGgpKTsKKyAgICAgICAgICAgIHJlY3RQb2x5Z29u
cy51bmNoZWNrZWRBcHBlbmQoZWRnZXNGb3JSZWN0KHJlY3QsIGdyYXBoKSk7CiAgICAgfQogICAg
IHJldHVybiB1bml0ZVBvbHlnb25zKHJlY3RQb2x5Z29ucywgZ3JhcGgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmlj
ZU1hbmFnZXIuY3BwCmluZGV4IDU4YzQxOWZhYzIwNmUyZmQwZmZhMzYwMGU3NmFhOTYxODk1MWU3
MzYuLjVjNTkzNjU3MjI0NjZiM2M0MTM3ZDNjYTRlOTJjNmFmNDkyZjAyOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2
aWNlTWFuYWdlci5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgVmVjdG9yPFN0cmluZz4gQ2FwdHVyZURl
dmljZU1hbmFnZXI6OmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWUK
ICAgICBzb3VyY2VVSURzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYmVzdFNvdXJjZXMuc2l6ZSgp
KTsKICAgICBzdGQ6OnNvcnQoYmVzdFNvdXJjZXMuYmVnaW4oKSwgYmVzdFNvdXJjZXMuZW5kKCks
IHNvcnRCYXNlZE9uRml0bmVzc1Njb3JlKTsKICAgICBmb3IgKGF1dG8mIGRldmljZSA6IGJlc3RT
b3VyY2VzKQotICAgICAgICBzb3VyY2VVSURzLmFwcGVuZChkZXZpY2UtPnBlcnNpc3RlbnRJRCgp
KTsKKyAgICAgICAgc291cmNlVUlEcy51bmNoZWNrZWRBcHBlbmQoZGV2aWNlLT5wZXJzaXN0ZW50
SUQoKSk7CiAKICAgICByZXR1cm4gc291cmNlVUlEczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAK
aW5kZXggNzdkMWZhMGUyYjVhZjkzOTcwMThjYjI2YTBjY2MxNjlhYmMxNGU3ZS4uMDBmZmEwZmEy
MGZiNGIzODY5NmFmOGZlM2U4MTViNTI5NjFkNWQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAK
QEAgLTI5Niw3ICsyOTYsNyBAQCBkb3VibGUgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Zml0bmVzc0Rp
c3RhbmNlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkKICAgICAgICAgVmVjdG9y
PFN0cmluZz4gc3VwcG9ydGVkTW9kZXM7CiAgICAgICAgIHN1cHBvcnRlZE1vZGVzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobW9kZXMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBtb2RlIDog
bW9kZXMpCi0gICAgICAgICAgICBzdXBwb3J0ZWRNb2Rlcy5hcHBlbmQoUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpmYWNpbmdNb2RlKG1vZGUpKTsKKyAgICAgICAgICAgIHN1cHBvcnRlZE1v
ZGVzLnVuY2hlY2tlZEFwcGVuZChSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OmZhY2luZ01v
ZGUobW9kZSkpOwogICAgICAgICByZXR1cm4gZG93bmNhc3Q8U3RyaW5nQ29uc3RyYWludD4oY29u
c3RyYWludCkuZml0bmVzc0Rpc3RhbmNlKHN1cHBvcnRlZE1vZGVzKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9G
b3JtRGF0YVN0cmVhbUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKaW5kZXggNDBlYmY0ZDY5MDY3NTI1NWFhMzY5NDk2
YTMyZjQ5Y2JlNzU5MzY3Ni4uYThmNGMxY2JkZmQwMmM2MWQzNTM0Y2NlMWM5NGVmZTQ3MDRiOTEx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0
YVN0cmVhbUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgc3RhdGljIHZvaWQq
IGZvcm1DcmVhdGUoQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgdm9pZCogY29udGV4dCkKICAgICBz
aXplX3Qgc2l6ZSA9IG5ld0luZm8tPmZvcm1EYXRhLT5lbGVtZW50cygpLnNpemUoKTsKICAgICBu
ZXdJbmZvLT5yZW1haW5pbmdFbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBuZXdJbmZvLT5y
ZW1haW5pbmdFbGVtZW50cy5hcHBlbmQobmV3SW5mby0+Zm9ybURhdGEtPmVsZW1lbnRzKClbc2l6
ZSAtIGkgLSAxXSk7CisgICAgICAgIG5ld0luZm8tPnJlbWFpbmluZ0VsZW1lbnRzLnVuY2hlY2tl
ZEFwcGVuZChuZXdJbmZvLT5mb3JtRGF0YS0+ZWxlbWVudHMoKVtzaXplIC0gaSAtIDFdKTsKIAog
ICAgIHJldHVybiBuZXdJbmZvOwogfQo=
</data>
<flag name="review"
          id="317802"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>