<?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>81843</bug_id>
          
          <creation_ts>2012-03-21 16:36:58 -0700</creation_ts>
          <short_desc>refactor flexbox in preparation for flex-line-pack</short_desc>
          <delta_ts>2012-03-22 10:16:38 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Tony Chang">tony</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>mitz</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>584752</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-21 16:36:58 -0700</bug_when>
    <thetext>refactor flexbox in preparation for flex-line-pack</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584757</commentid>
    <comment_count>1</comment_count>
      <attachid>133142</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-21 16:40:48 -0700</bug_when>
    <thetext>Created attachment 133142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584759</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-21 16:41:24 -0700</bug_when>
    <thetext>Let me know if this is too big.  I can split it into two patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584765</commentid>
    <comment_count>3</comment_count>
      <attachid>133142</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-03-21 16:47:55 -0700</bug_when>
    <thetext>Comment on attachment 133142
Patch

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

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:1009
&gt; +            if (flexAlignForChild(child) == AlignBaseline &amp;&amp; minMarginAfterBaseline)

Nit: I&apos;d move the minMarginAfterBaseline check to the outer for-loop and early-continue:
if (!minMarginAfterBaseline)
    continue;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584772</commentid>
    <comment_count>4</comment_count>
      <attachid>133144</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-21 17:02:34 -0700</bug_when>
    <thetext>Created attachment 133144
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584869</commentid>
    <comment_count>5</comment_count>
      <attachid>133144</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 18:29:22 -0700</bug_when>
    <thetext>Comment on attachment 133144
Patch for landing

Clearing flags on attachment: 133144

Committed r111635: &lt;http://trac.webkit.org/changeset/111635&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584870</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 18:29:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584959</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-03-21 21:36:13 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 133144 [details])
&gt; Clearing flags on attachment: 133144
&gt; 
&gt; Committed r111635: &lt;http://trac.webkit.org/changeset/111635&gt;

This caused bug 81870.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584968</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-03-21 21:59:18 -0700</bug_when>
    <thetext>Reverted r111635 in &lt;http://trac.webkit.org/r111652&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585433</commentid>
    <comment_count>9</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-22 10:16:38 -0700</bug_when>
    <thetext>Committed r111720: &lt;http://trac.webkit.org/changeset/111720&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133142</attachid>
            <date>2012-03-21 16:40:48 -0700</date>
            <delta_ts>2012-03-21 17:02:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81843-20120321164101.patch</filename>
            <type>text/plain</type>
            <size>16046</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY4Y2IwODE2MjVmOGVi
ZTBkMzkxYmZiOGFlM2QwMDgyZmMzZTRhNC4uYTI3NzIzM2Y2N2I5ZjQwZTdjZmM4OWRhNDBkMjQz
MjAyNWUyMjlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTIxICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgcmVmYWN0b3IgZmxleGJveCBp
biBwcmVwYXJhdGlvbiBmb3IgZmxleC1saW5lLXBhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxODQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBXcmFwUmV2ZXJzZUNvbnRleHQgd2l0aCBh
IHZlY3RvciBvZiBMaW5lQ29udGV4dHMgdGhhdCBjb250YWluCisgICAgICAgIHRoZSBzYW1lIGlu
Zm9ybWF0aW9uLCBwbHVzIHZhbHVlcyBuZWVkZWQgZm9yIGZsZXgtYWxpZ24uCisKKyAgICAgICAg
YWxpZ25DaGlsZHJlbiBoYXMgYmVlbiBtb3ZlZCB0byBhZnRlciBhbGwgdGhlIGxpbmVzIGhhdmUg
YmVlbgorICAgICAgICBwb3NpdGlvbmVkLiBXZSB3YW50IHRvIGFsaWduIGNoaWxkcmVuIGFmdGVy
IGZsZXgtbGluZS1wYWNrIGhhcyBjaGFuZ2VkCisgICAgICAgIHRoZSBzaXplIG9mIGVhY2ggbGlu
ZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSBsYXlvdXRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
anVzdCByZWZhY3RvcmluZy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6TGluZUNvbnRleHQ6
OkxpbmVDb250ZXh0KTogTmV3IHN0cnVjdCwKKyAgICAgICAgaG9sZHMgaW5mb3JtYXRpb24gbmVl
ZGVkIGZvciB3cmFwLXJldmVyc2UgYW5kIGFsaWduaW5nIGNoaWxkcmVuLgorICAgICAgICAoUmVu
ZGVyRmxleGlibGVCb3g6OkxpbmVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZs
ZXhpYmxlQm94OjpsYXlvdXRGbGV4SXRlbXMpOiBhbGlnbkNoaWxkcmVuIGFmdGVyIGxheW91dCBv
dXQgYWxsIHRoZSBsaW5lcyByYXRoZXIgdGhhbiBhZnRlciBlYWNoIGxpbmUuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QW5kUGxhY2VDaGlsZHJlbik6IGRvbid0
IGFsaWduQ2hpbGRyZW4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjphbGln
bkNoaWxkcmVuKTogYWxpZ24gYWxsIGZsZXggaXRlbXMsIG5vdCBqdXN0IGEgbGluZSBhdCBhIHRp
bWUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6ZmxpcEZvcldyYXBSZXZl
cnNlKTogVXBkYXRlIHRvIHVzZSBMaW5lQ29udGV4dAorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5oOgorCiAyMDEyLTAzLTIxICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5
X2Jvb2xlYW4gYW5kIEdMX0NIUk9NSVVNX2NvbW1hbmRfYnVmZmVyX3F1ZXJ5IHN1cHBvcnQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCBh
YTUzYzE0ZmQ4Mzg5OGVmN2EyMGE2ZjFjYzQxOTJjZDkzMzczNzQyLi5lYzIxZGM1MWE3N2YzNGVi
NWQ3NTFkMWJjMjNlOGFlMjVhMWM5YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTEwMiwzOCArMTAyLDE5IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPGludD46OmNvbnN0X2l0ZXJhdG9yIG1fb3JkZXJWYWx1ZXNJdGVyYXRvcjsKIH07
CiAKLXN0cnVjdCBSZW5kZXJGbGV4aWJsZUJveDo6V3JhcFJldmVyc2VDb250ZXh0IHsKLSAgICBl
eHBsaWNpdCBXcmFwUmV2ZXJzZUNvbnRleHQoRUZsZXhXcmFwIGZsZXhXcmFwKQotICAgICAgICA6
IGlzV3JhcFJldmVyc2UoZmxleFdyYXAgPT0gRmxleFdyYXBSZXZlcnNlKQorc3RydWN0IFJlbmRl
ckZsZXhpYmxlQm94OjpMaW5lQ29udGV4dCB7CisgICAgTGluZUNvbnRleHQoTGF5b3V0VW5pdCBj
cm9zc0F4aXNPZmZzZXQsIExheW91dFVuaXQgY3Jvc3NBeGlzRXh0ZW50LCBzaXplX3QgbnVtYmVy
T2ZDaGlsZHJlbiwgTGF5b3V0VW5pdCBtYXhBc2NlbnQpCisgICAgICAgIDogbV9jcm9zc0F4aXNP
ZmZzZXQoY3Jvc3NBeGlzT2Zmc2V0KQorICAgICAgICAsIG1fY3Jvc3NBeGlzRXh0ZW50KGNyb3Nz
QXhpc0V4dGVudCkKKyAgICAgICAgLCBtX251bWJlck9mQ2hpbGRyZW4obnVtYmVyT2ZDaGlsZHJl
bikKKyAgICAgICAgLCBtX21heEFzY2VudChtYXhBc2NlbnQpCiAgICAgewogICAgIH0KIAotICAg
IHZvaWQgYWRkQ3Jvc3NBeGlzT2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0KQotICAgIHsKLSAgICAg
ICAgaWYgKCFpc1dyYXBSZXZlcnNlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjcm9z
c0F4aXNPZmZzZXRzLmFwcGVuZChvZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgYWRkTnVtYmVy
T2ZDaGlsZHJlbk9uTGluZShzaXplX3QgbnVtYmVyT2ZDaGlsZHJlbikKLSAgICB7Ci0gICAgICAg
IGlmICghaXNXcmFwUmV2ZXJzZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2hpbGRy
ZW5QZXJMaW5lLmFwcGVuZChudW1iZXJPZkNoaWxkcmVuKTsKLSAgICB9Ci0KLSAgICBMYXlvdXRV
bml0IGxpbmVDcm9zc0F4aXNEZWx0YShzaXplX3QgbGluZSwgTGF5b3V0VW5pdCBjcm9zc0F4aXND
b250ZW50RXh0ZW50KSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGxpbmUgKyAxIDwgY3Jv
c3NBeGlzT2Zmc2V0cy5zaXplKCkpOwotICAgICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQgPSBj
cm9zc0F4aXNPZmZzZXRzW2xpbmUgKyAxXSAtIGNyb3NzQXhpc09mZnNldHNbbGluZV07Ci0gICAg
ICAgIExheW91dFVuaXQgb3JpZ2luYWxPZmZzZXQgPSBjcm9zc0F4aXNPZmZzZXRzW2xpbmVdIC0g
Y3Jvc3NBeGlzT2Zmc2V0c1swXTsKLSAgICAgICAgTGF5b3V0VW5pdCBuZXdPZmZzZXQgPSBjcm9z
c0F4aXNDb250ZW50RXh0ZW50IC0gb3JpZ2luYWxPZmZzZXQgLSBsaW5lSGVpZ2h0OwotICAgICAg
ICByZXR1cm4gbmV3T2Zmc2V0IC0gb3JpZ2luYWxPZmZzZXQ7Ci0gICAgfQotCi0gICAgV1RGOjpW
ZWN0b3I8TGF5b3V0VW5pdD4gY3Jvc3NBeGlzT2Zmc2V0czsKLSAgICBXVEY6OlZlY3RvcjxzaXpl
X3Q+IGNoaWxkcmVuUGVyTGluZTsKLSAgICBib29sIGlzV3JhcFJldmVyc2U7CisgICAgTGF5b3V0
VW5pdCBtX2Nyb3NzQXhpc09mZnNldDsKKyAgICBMYXlvdXRVbml0IG1fY3Jvc3NBeGlzRXh0ZW50
OworICAgIHNpemVfdCBtX251bWJlck9mQ2hpbGRyZW47CisgICAgTGF5b3V0VW5pdCBtX21heEFz
Y2VudDsKIH07CiAKIApAQCAtNjA3LDEyICs1ODgsOSBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94
OjpsYXlvdXRGbGV4SXRlbXMoYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgIGZsb2F0IHRvdGFs
UG9zaXRpdmVGbGV4aWJpbGl0eTsKICAgICBmbG9hdCB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHk7
CiAgICAgTGF5b3V0VW5pdCBtaW5NYXhBcHBsaWVkTWFpbkF4aXNFeHRlbnQ7CisgICAgV1RGOjpW
ZWN0b3I8TGluZUNvbnRleHQ+IGxpbmVDb250ZXh0czsKICAgICBGbGV4T3JkZXJJdGVyYXRvciBm
bGV4SXRlcmF0b3IodGhpcywgZmxleE9yZGVyVmFsdWVzKTsKIAotICAgIC8vIEZvciB3cmFwLXJl
dmVyc2UsIHdlIG5lZWQgdG8gbGF5b3V0IGFzIHdyYXAsIHRoZW4gcmV2ZXJzZSB0aGUgbGluZXMu
IFRoZSBuZXh0IHR3byBhcnJheXMKLSAgICAvLyBhcmUgc29tZSBleHRyYSBpbmZvcm1hdGlvbiBz
byBpdCdzIHBvc3NpYmxlIHRvIHJldmVyc2UgdGhlIGxpbmVzLgotICAgIFdyYXBSZXZlcnNlQ29u
dGV4dCB3cmFwUmV2ZXJzZUNvbnRleHQoc3R5bGUoKS0+ZmxleFdyYXAoKSk7Ci0KICAgICBMYXlv
dXRVbml0IGNyb3NzQXhpc09mZnNldCA9IGZsb3dBd2FyZUJvcmRlckJlZm9yZSgpICsgZmxvd0F3
YXJlUGFkZGluZ0JlZm9yZSgpOwogICAgIHdoaWxlIChjb21wdXRlTmV4dEZsZXhMaW5lKGZsZXhJ
dGVyYXRvciwgb3JkZXJlZENoaWxkcmVuLCBwcmVmZXJyZWRNYWluQXhpc0V4dGVudCwgdG90YWxQ
b3NpdGl2ZUZsZXhpYmlsaXR5LCB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHksIG1pbk1heEFwcGxp
ZWRNYWluQXhpc0V4dGVudCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3Bh
Y2UgPSBjb21wdXRlQXZhaWxhYmxlRnJlZVNwYWNlKHByZWZlcnJlZE1haW5BeGlzRXh0ZW50KTsK
QEAgLTYyNCwxNSArNjAyLDE0IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEZsZXhJ
dGVtcyhib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICBBU1NFUlQoaW5mbGV4aWJs
ZUl0ZW1zLnNpemUoKSA+IDApOwogICAgICAgICB9CiAKLSAgICAgICAgd3JhcFJldmVyc2VDb250
ZXh0LmFkZE51bWJlck9mQ2hpbGRyZW5PbkxpbmUob3JkZXJlZENoaWxkcmVuLnNpemUoKSk7Ci0g
ICAgICAgIHdyYXBSZXZlcnNlQ29udGV4dC5hZGRDcm9zc0F4aXNPZmZzZXQoY3Jvc3NBeGlzT2Zm
c2V0KTsKLSAgICAgICAgbGF5b3V0QW5kUGxhY2VDaGlsZHJlbihjcm9zc0F4aXNPZmZzZXQsIG9y
ZGVyZWRDaGlsZHJlbiwgY2hpbGRTaXplcywgYXZhaWxhYmxlRnJlZVNwYWNlKTsKKyAgICAgICAg
bGF5b3V0QW5kUGxhY2VDaGlsZHJlbihjcm9zc0F4aXNPZmZzZXQsIG9yZGVyZWRDaGlsZHJlbiwg
Y2hpbGRTaXplcywgYXZhaWxhYmxlRnJlZVNwYWNlLCBsaW5lQ29udGV4dHMpOwogICAgIH0KIAot
ICAgIGlmICh3cmFwUmV2ZXJzZUNvbnRleHQuaXNXcmFwUmV2ZXJzZSkgewotICAgICAgICB3cmFw
UmV2ZXJzZUNvbnRleHQuYWRkQ3Jvc3NBeGlzT2Zmc2V0KGNyb3NzQXhpc09mZnNldCk7Ci0gICAg
ICAgIGZsaXBGb3JXcmFwUmV2ZXJzZShmbGV4SXRlcmF0b3IsIHdyYXBSZXZlcnNlQ29udGV4dCk7
Ci0gICAgfQorICAgIEFTU0VSVCghbGluZUNvbnRleHRzLnNpemUoKSk7CisgICAgYWxpZ25DaGls
ZHJlbihmbGV4SXRlcmF0b3IsIGxpbmVDb250ZXh0cyk7CisKKyAgICBpZiAoc3R5bGUoKS0+Zmxl
eFdyYXAoKSA9PSBGbGV4V3JhcFJldmVyc2UpCisgICAgICAgIGZsaXBGb3JXcmFwUmV2ZXJzZShm
bGV4SXRlcmF0b3IsIGxpbmVDb250ZXh0cyk7CiAKICAgICAvLyBkaXJlY3Rpb246cnRsICsgZmxl
eC1kaXJlY3Rpb246Y29sdW1uIG1lYW5zIHRoZSBjcm9zcy1heGlzIGRpcmVjdGlvbiBpcyBmbGlw
cGVkLgogICAgIGZsaXBGb3JSaWdodFRvTGVmdENvbHVtbihmbGV4SXRlcmF0b3IpOwpAQCAtODY4
LDcgKzg0NSw3IEBAIHN0YXRpYyBFRmxleEFsaWduIGZsZXhBbGlnbkZvckNoaWxkKFJlbmRlckJv
eCogY2hpbGQpCiAgICAgcmV0dXJuIGFsaWduOwogfQogCi12b2lkIFJlbmRlckZsZXhpYmxlQm94
OjpsYXlvdXRBbmRQbGFjZUNoaWxkcmVuKExheW91dFVuaXQmIGNyb3NzQXhpc09mZnNldCwgY29u
c3QgT3JkZXJlZEZsZXhJdGVtTGlzdCYgY2hpbGRyZW4sIGNvbnN0IFdURjo6VmVjdG9yPExheW91
dFVuaXQ+JiBjaGlsZFNpemVzLCBMYXlvdXRVbml0IGF2YWlsYWJsZUZyZWVTcGFjZSkKK3ZvaWQg
UmVuZGVyRmxleGlibGVCb3g6OmxheW91dEFuZFBsYWNlQ2hpbGRyZW4oTGF5b3V0VW5pdCYgY3Jv
c3NBeGlzT2Zmc2V0LCBjb25zdCBPcmRlcmVkRmxleEl0ZW1MaXN0JiBjaGlsZHJlbiwgY29uc3Qg
V1RGOjpWZWN0b3I8TGF5b3V0VW5pdD4mIGNoaWxkU2l6ZXMsIExheW91dFVuaXQgYXZhaWxhYmxl
RnJlZVNwYWNlLCBXVEY6OlZlY3RvcjxMaW5lQ29udGV4dD4mIGxpbmVDb250ZXh0cykKIHsKICAg
ICBMYXlvdXRVbml0IG1haW5BeGlzT2Zmc2V0ID0gZmxvd0F3YXJlQm9yZGVyU3RhcnQoKSArIGZs
b3dBd2FyZVBhZGRpbmdTdGFydCgpOwogICAgIG1haW5BeGlzT2Zmc2V0ICs9IGluaXRpYWxQYWNr
aW5nT2Zmc2V0KGF2YWlsYWJsZUZyZWVTcGFjZSwgc3R5bGUoKS0+ZmxleFBhY2soKSwgY2hpbGRT
aXplcy5zaXplKCkpOwpAQCAtOTMwLDggKzkwNyw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6
OmxheW91dEFuZFBsYWNlQ2hpbGRyZW4oTGF5b3V0VW5pdCYgY3Jvc3NBeGlzT2Zmc2V0LCBjb25z
CiAgICAgfQogCiAgICAgTGF5b3V0VW5pdCBsaW5lQ3Jvc3NBeGlzRXh0ZW50ID0gaXNNdWx0aWxp
bmUoKSA/IG1heENoaWxkQ3Jvc3NBeGlzRXh0ZW50IDogY3Jvc3NBeGlzQ29udGVudEV4dGVudCgp
OwotICAgIGFsaWduQ2hpbGRyZW4oY2hpbGRyZW4sIGxpbmVDcm9zc0F4aXNFeHRlbnQsIG1heEFz
Y2VudCk7Ci0KKyAgICBsaW5lQ29udGV4dHMuYXBwZW5kKExpbmVDb250ZXh0KGNyb3NzQXhpc09m
ZnNldCwgbGluZUNyb3NzQXhpc0V4dGVudCwgY2hpbGRyZW4uc2l6ZSgpLCBtYXhBc2NlbnQpKTsK
ICAgICBjcm9zc0F4aXNPZmZzZXQgKz0gbGluZUNyb3NzQXhpc0V4dGVudDsKIH0KIApAQCAtOTc2
LDQ5ICs5NTIsNjEgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6YWRqdXN0QWxpZ25tZW50Rm9y
Q2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBkZWwKICAgICAgICAgY2hpbGQtPnJl
cGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkKG9sZFJlY3QpOwogfQogCi12b2lkIFJlbmRlckZsZXhp
YmxlQm94OjphbGlnbkNoaWxkcmVuKGNvbnN0IE9yZGVyZWRGbGV4SXRlbUxpc3QmIGNoaWxkcmVu
LCBMYXlvdXRVbml0IGxpbmVDcm9zc0F4aXNFeHRlbnQsIExheW91dFVuaXQgbWF4QXNjZW50KQor
dm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6YWxpZ25DaGlsZHJlbihGbGV4T3JkZXJJdGVyYXRvciYg
aXRlcmF0b3IsIGNvbnN0IFdURjo6VmVjdG9yPExpbmVDb250ZXh0PiYgbGluZUNvbnRleHRzKQog
ewotICAgIExheW91dFVuaXQgbWluTWFyZ2luQWZ0ZXJCYXNlbGluZSA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8TGF5b3V0VW5pdD46Om1heCgpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
aGlsZHJlbi5zaXplKCk7ICsraSkgewotICAgICAgICBSZW5kZXJCb3gqIGNoaWxkID0gY2hpbGRy
ZW5baV07Ci0gICAgICAgIHN3aXRjaCAoZmxleEFsaWduRm9yQ2hpbGQoY2hpbGQpKSB7Ci0gICAg
ICAgIGNhc2UgQWxpZ25BdXRvOgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBbGlnblN0cmV0Y2g6IHsKLSAgICAgICAg
ICAgIGFwcGx5U3RyZXRjaEFsaWdubWVudFRvQ2hpbGQoY2hpbGQsIGxpbmVDcm9zc0F4aXNFeHRl
bnQpOwotICAgICAgICAgICAgLy8gU2luY2Ugd3JhcC1yZXZlcnNlIGZsaXBzIGNyb3NzIHN0YXJ0
IGFuZCBjcm9zcyBlbmQsIHN0cmVjaCBjaGlsZHJlbiBzaG91bGQgYmUgYWxpZ25lZCB3aXRoIHRo
ZSBjcm9zcyBlbmQuCi0gICAgICAgICAgICBpZiAoc3R5bGUoKS0+ZmxleFdyYXAoKSA9PSBGbGV4
V3JhcFJldmVyc2UpCisgICAgLy8gS2VlcCB0cmFjayBvZiB0aGUgc3BhY2UgYmV0d2VlbiB0aGUg
YmFzZWxpbmUgZWRnZSBhbmQgdGhlIGFmdGVyIGVkZ2Ugb2YgdGhlIGJveCBmb3IgZWFjaCBsaW5l
LgorICAgIFdURjo6VmVjdG9yPExheW91dFVuaXQ+IG1pbk1hcmdpbkFmdGVyQmFzZWxpbmVzOwor
CisgICAgUmVuZGVyQm94KiBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7CisgICAgZm9yIChzaXpl
X3QgbGluZU51bWJlciA9IDA7IGxpbmVOdW1iZXIgPCBsaW5lQ29udGV4dHMuc2l6ZSgpOyArK2xp
bmVOdW1iZXIpIHsKKyAgICAgICAgTGF5b3V0VW5pdCBtaW5NYXJnaW5BZnRlckJhc2VsaW5lID0g
c3RkOjpudW1lcmljX2xpbWl0czxMYXlvdXRVbml0Pjo6bWF4KCk7CisgICAgICAgIExheW91dFVu
aXQgbGluZUNyb3NzQXhpc0V4dGVudCA9IGxpbmVDb250ZXh0c1tsaW5lTnVtYmVyXS5tX2Nyb3Nz
QXhpc0V4dGVudDsKKyAgICAgICAgTGF5b3V0VW5pdCBtYXhBc2NlbnQgPSBsaW5lQ29udGV4dHNb
bGluZU51bWJlcl0ubV9tYXhBc2NlbnQ7CisKKyAgICAgICAgZm9yIChzaXplX3QgY2hpbGROdW1i
ZXIgPSAwOyBjaGlsZE51bWJlciA8IGxpbmVDb250ZXh0c1tsaW5lTnVtYmVyXS5tX251bWJlck9m
Q2hpbGRyZW47ICsrY2hpbGROdW1iZXIsIGNoaWxkID0gaXRlcmF0b3IubmV4dCgpKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKGZsZXhBbGlnbkZvckNoaWxkKGNoaWxkKSkgeworICAgICAgICAgICAg
Y2FzZSBBbGlnbkF1dG86CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFsaWduU3RyZXRjaDogewor
ICAgICAgICAgICAgICAgIGFwcGx5U3RyZXRjaEFsaWdubWVudFRvQ2hpbGQoY2hpbGQsIGxpbmVD
cm9zc0F4aXNFeHRlbnQpOworICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdyYXAtcmV2ZXJzZSBm
bGlwcyBjcm9zcyBzdGFydCBhbmQgY3Jvc3MgZW5kLCBzdHJlY2ggY2hpbGRyZW4gc2hvdWxkIGJl
IGFsaWduZWQgd2l0aCB0aGUgY3Jvc3MgZW5kLgorICAgICAgICAgICAgICAgIGlmIChzdHlsZSgp
LT5mbGV4V3JhcCgpID09IEZsZXhXcmFwUmV2ZXJzZSkKKyAgICAgICAgICAgICAgICAgICAgYWRq
dXN0QWxpZ25tZW50Rm9yQ2hpbGQoY2hpbGQsIGF2YWlsYWJsZUFsaWdubWVudFNwYWNlRm9yQ2hp
bGQobGluZUNyb3NzQXhpc0V4dGVudCwgY2hpbGQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgQWxpZ25TdGFydDoKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQWxpZ25FbmQ6CiAgICAgICAgICAgICAgICAg
YWRqdXN0QWxpZ25tZW50Rm9yQ2hpbGQoY2hpbGQsIGF2YWlsYWJsZUFsaWdubWVudFNwYWNlRm9y
Q2hpbGQobGluZUNyb3NzQXhpc0V4dGVudCwgY2hpbGQpKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgQWxpZ25TdGFydDoKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEFsaWduRW5kOgotICAgICAgICAgICAgYWRqdXN0QWxpZ25tZW50Rm9yQ2hp
bGQoY2hpbGQsIGF2YWlsYWJsZUFsaWdubWVudFNwYWNlRm9yQ2hpbGQobGluZUNyb3NzQXhpc0V4
dGVudCwgY2hpbGQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFsaWduQ2Vu
dGVyOgotICAgICAgICAgICAgYWRqdXN0QWxpZ25tZW50Rm9yQ2hpbGQoY2hpbGQsIGF2YWlsYWJs
ZUFsaWdubWVudFNwYWNlRm9yQ2hpbGQobGluZUNyb3NzQXhpc0V4dGVudCwgY2hpbGQpIC8gMik7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBbGlnbkJhc2VsaW5lOiB7Ci0gICAg
ICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IG1hcmdpbkJveEFzY2VudEZvckNoaWxkKGNoaWxk
KTsKLSAgICAgICAgICAgIExheW91dFVuaXQgc3RhcnRPZmZzZXQgPSBtYXhBc2NlbnQgLSBhc2Nl
bnQ7Ci0gICAgICAgICAgICBhZGp1c3RBbGlnbm1lbnRGb3JDaGlsZChjaGlsZCwgc3RhcnRPZmZz
ZXQpOwotCi0gICAgICAgICAgICBpZiAoc3R5bGUoKS0+ZmxleFdyYXAoKSA9PSBGbGV4V3JhcFJl
dmVyc2UpCi0gICAgICAgICAgICAgICAgbWluTWFyZ2luQWZ0ZXJCYXNlbGluZSA9IHN0ZDo6bWlu
KG1pbk1hcmdpbkFmdGVyQmFzZWxpbmUsIGF2YWlsYWJsZUFsaWdubWVudFNwYWNlRm9yQ2hpbGQo
bGluZUNyb3NzQXhpc0V4dGVudCwgY2hpbGQpIC0gc3RhcnRPZmZzZXQpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgQWxpZ25DZW50ZXI6CisgICAgICAgICAgICAgICAgYWRqdXN0QWxpZ25tZW50Rm9yQ2hpbGQo
Y2hpbGQsIGF2YWlsYWJsZUFsaWdubWVudFNwYWNlRm9yQ2hpbGQobGluZUNyb3NzQXhpc0V4dGVu
dCwgY2hpbGQpIC8gMik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IEFsaWduQmFzZWxpbmU6IHsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IG1h
cmdpbkJveEFzY2VudEZvckNoaWxkKGNoaWxkKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0
IHN0YXJ0T2Zmc2V0ID0gbWF4QXNjZW50IC0gYXNjZW50OworICAgICAgICAgICAgICAgIGFkanVz
dEFsaWdubWVudEZvckNoaWxkKGNoaWxkLCBzdGFydE9mZnNldCk7CisKKyAgICAgICAgICAgICAg
ICBpZiAoc3R5bGUoKS0+ZmxleFdyYXAoKSA9PSBGbGV4V3JhcFJldmVyc2UpCisgICAgICAgICAg
ICAgICAgICAgIG1pbk1hcmdpbkFmdGVyQmFzZWxpbmUgPSBzdGQ6Om1pbihtaW5NYXJnaW5BZnRl
ckJhc2VsaW5lLCBhdmFpbGFibGVBbGlnbm1lbnRTcGFjZUZvckNoaWxkKGxpbmVDcm9zc0F4aXNF
eHRlbnQsIGNoaWxkKSAtIHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBtaW5NYXJnaW5B
ZnRlckJhc2VsaW5lcy5hcHBlbmQobWluTWFyZ2luQWZ0ZXJCYXNlbGluZSk7CiAgICAgfQogCisg
ICAgaWYgKHN0eWxlKCktPmZsZXhXcmFwKCkgIT0gRmxleFdyYXBSZXZlcnNlKQorICAgICAgICBy
ZXR1cm47CisKICAgICAvLyB3cmFwLXJldmVyc2UgZmxpcHMgdGhlIGNyb3NzIGF4aXMgc3RhcnQg
YW5kIGVuZC4gRm9yIGJhc2VsaW5lIGFsaWdubWVudCwgdGhpcyBtZWFucyB3ZQogICAgIC8vIG5l
ZWQgdG8gYWxpZ24gdGhlIGFmdGVyIGVkZ2Ugb2YgYmFzZWxpbmUgZWxlbWVudHMgd2l0aCB0aGUg
YWZ0ZXIgZWRnZSBvZiB0aGUgZmxleCBsaW5lLgotICAgIGlmIChzdHlsZSgpLT5mbGV4V3JhcCgp
ID09IEZsZXhXcmFwUmV2ZXJzZSAmJiBtaW5NYXJnaW5BZnRlckJhc2VsaW5lKSB7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
ICAgIFJlbmRlckJveCogY2hpbGQgPSBjaGlsZHJlbltpXTsKLSAgICAgICAgICAgIGlmIChmbGV4
QWxpZ25Gb3JDaGlsZChjaGlsZCkgPT0gQWxpZ25CYXNlbGluZSkKKyAgICBjaGlsZCA9IGl0ZXJh
dG9yLmZpcnN0KCk7CisgICAgZm9yIChzaXplX3QgbGluZU51bWJlciA9IDA7IGxpbmVOdW1iZXIg
PCBsaW5lQ29udGV4dHMuc2l6ZSgpOyArK2xpbmVOdW1iZXIpIHsKKyAgICAgICAgTGF5b3V0VW5p
dCBtaW5NYXJnaW5BZnRlckJhc2VsaW5lID0gbWluTWFyZ2luQWZ0ZXJCYXNlbGluZXNbbGluZU51
bWJlcl07CisgICAgICAgIGZvciAoc2l6ZV90IGNoaWxkTnVtYmVyID0gMDsgY2hpbGROdW1iZXIg
PCBsaW5lQ29udGV4dHNbbGluZU51bWJlcl0ubV9udW1iZXJPZkNoaWxkcmVuOyArK2NoaWxkTnVt
YmVyLCBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKSkgeworICAgICAgICAgICAgaWYgKGZsZXhBbGln
bkZvckNoaWxkKGNoaWxkKSA9PSBBbGlnbkJhc2VsaW5lICYmIG1pbk1hcmdpbkFmdGVyQmFzZWxp
bmUpCiAgICAgICAgICAgICAgICAgYWRqdXN0QWxpZ25tZW50Rm9yQ2hpbGQoY2hpbGQsIG1pbk1h
cmdpbkFmdGVyQmFzZWxpbmUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTA2MywyNiArMTA1MSwy
NSBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpmbGlwRm9yUmlnaHRUb0xlZnRDb2x1bW4oRmxl
eE9yZGVySXRlcmF0b3ImIGl0ZXJhdG9yKQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJGbGV4aWJs
ZUJveDo6ZmxpcEZvcldyYXBSZXZlcnNlKEZsZXhPcmRlckl0ZXJhdG9yJiBpdGVyYXRvciwgY29u
c3QgV3JhcFJldmVyc2VDb250ZXh0JiB3cmFwUmV2ZXJzZUNvbnRleHQpCit2b2lkIFJlbmRlckZs
ZXhpYmxlQm94OjpmbGlwRm9yV3JhcFJldmVyc2UoRmxleE9yZGVySXRlcmF0b3ImIGl0ZXJhdG9y
LCBjb25zdCBXVEY6OlZlY3RvcjxMaW5lQ29udGV4dD4mIGxpbmVDb250ZXh0cykKIHsKICAgICBp
ZiAoIWlzQ29sdW1uRmxvdygpKQogICAgICAgICBjb21wdXRlTG9naWNhbEhlaWdodCgpOwogCi0g
ICAgc2l6ZV90IGN1cnJlbnRDaGlsZCA9IDA7Ci0gICAgc2l6ZV90IGxpbmVOdW1iZXIgPSAwOwog
ICAgIExheW91dFVuaXQgY29udGVudEV4dGVudCA9IGNyb3NzQXhpc0NvbnRlbnRFeHRlbnQoKTsK
LSAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOyBjaGlsZDsgY2hp
bGQgPSBpdGVyYXRvci5uZXh0KCkpIHsKLSAgICAgICAgTGF5b3V0UG9pbnQgbG9jYXRpb24gPSBm
bG93QXdhcmVMb2NhdGlvbkZvckNoaWxkKGNoaWxkKTsKLSAgICAgICAgbG9jYXRpb24uc2V0WShs
b2NhdGlvbi55KCkgKyB3cmFwUmV2ZXJzZUNvbnRleHQubGluZUNyb3NzQXhpc0RlbHRhKGxpbmVO
dW1iZXIsIGNvbnRlbnRFeHRlbnQpKTsKLQotICAgICAgICBMYXlvdXRSZWN0IG9sZFJlY3QgPSBj
aGlsZC0+ZnJhbWVSZWN0KCk7Ci0gICAgICAgIHNldEZsb3dBd2FyZUxvY2F0aW9uRm9yQ2hpbGQo
Y2hpbGQsIGxvY2F0aW9uKTsKLSAgICAgICAgaWYgKCFzZWxmTmVlZHNMYXlvdXQoKSAmJiBjaGls
ZC0+Y2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkpCi0gICAgICAgICAgICBjaGlsZC0+cmVw
YWludER1cmluZ0xheW91dElmTW92ZWQob2xkUmVjdCk7Ci0KLSAgICAgICAgaWYgKCsrY3VycmVu
dENoaWxkID09IHdyYXBSZXZlcnNlQ29udGV4dC5jaGlsZHJlblBlckxpbmVbbGluZU51bWJlcl0p
IHsKLSAgICAgICAgICAgICsrbGluZU51bWJlcjsKLSAgICAgICAgICAgIGN1cnJlbnRDaGlsZCA9
IDA7CisgICAgUmVuZGVyQm94KiBjaGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7CisgICAgZm9yIChz
aXplX3QgbGluZU51bWJlciA9IDA7IGxpbmVOdW1iZXIgPCBsaW5lQ29udGV4dHMuc2l6ZSgpOyAr
K2xpbmVOdW1iZXIpIHsKKyAgICAgICAgZm9yIChzaXplX3QgY2hpbGROdW1iZXIgPSAwOyBjaGls
ZE51bWJlciA8IGxpbmVDb250ZXh0c1tsaW5lTnVtYmVyXS5tX251bWJlck9mQ2hpbGRyZW47ICsr
Y2hpbGROdW1iZXIsIGNoaWxkID0gaXRlcmF0b3IubmV4dCgpKSB7CisgICAgICAgICAgICBMYXlv
dXRQb2ludCBsb2NhdGlvbiA9IGZsb3dBd2FyZUxvY2F0aW9uRm9yQ2hpbGQoY2hpbGQpOworICAg
ICAgICAgICAgTGF5b3V0VW5pdCBsaW5lQ3Jvc3NBeGlzRXh0ZW50ID0gbGluZUNvbnRleHRzW2xp
bmVOdW1iZXJdLm1fY3Jvc3NBeGlzRXh0ZW50OworICAgICAgICAgICAgTGF5b3V0VW5pdCBvcmln
aW5hbE9mZnNldCA9IGxpbmVDb250ZXh0c1tsaW5lTnVtYmVyXS5tX2Nyb3NzQXhpc09mZnNldCAt
IGxpbmVDb250ZXh0c1swXS5tX2Nyb3NzQXhpc09mZnNldDsKKyAgICAgICAgICAgIExheW91dFVu
aXQgbmV3T2Zmc2V0ID0gY29udGVudEV4dGVudCAtIG9yaWdpbmFsT2Zmc2V0IC0gbGluZUNyb3Nz
QXhpc0V4dGVudDsKKyAgICAgICAgICAgIGxvY2F0aW9uLnNldFkobG9jYXRpb24ueSgpICsgbmV3
T2Zmc2V0IC0gb3JpZ2luYWxPZmZzZXQpOworCisgICAgICAgICAgICBMYXlvdXRSZWN0IG9sZFJl
Y3QgPSBjaGlsZC0+ZnJhbWVSZWN0KCk7CisgICAgICAgICAgICBzZXRGbG93QXdhcmVMb2NhdGlv
bkZvckNoaWxkKGNoaWxkLCBsb2NhdGlvbik7CisgICAgICAgICAgICBpZiAoIXNlbGZOZWVkc0xh
eW91dCgpICYmIGNoaWxkLT5jaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKSkKKyAgICAgICAg
ICAgICAgICBjaGlsZC0+cmVwYWludER1cmluZ0xheW91dElmTW92ZWQob2xkUmVjdCk7CiAgICAg
ICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5oCmluZGV4IDJhNjMwMjFmMTQyZjQzYjE3NGIwZTY3Yjg2ZmZjNWI4MjRlZmExN2EuLmQ5
Yjc2ZTVmN2NiYzFkMzQ2ODhjNzcyODIyYjY3YmVjZGI1MDZkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZh
dGU6CiAgICAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVuZGVyQm94KiwgTGF5b3V0VW5p
dD4gSW5mbGV4aWJsZUZsZXhJdGVtU2l6ZTsKICAgICB0eXBlZGVmIFdURjo6VmVjdG9yPFJlbmRl
ckJveCo+IE9yZGVyZWRGbGV4SXRlbUxpc3Q7CiAKLSAgICBzdHJ1Y3QgV3JhcFJldmVyc2VDb250
ZXh0OworICAgIHN0cnVjdCBMaW5lQ29udGV4dDsKIAogICAgIGJvb2wgaGFzT3J0aG9nb25hbEZs
b3coUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CiAgICAgYm9vbCBpc0NvbHVtbkZsb3coKSBjb25z
dDsKQEAgLTExNCwxMiArMTE0LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCByZXNvbHZlRmxleGli
bGVMZW5ndGhzKEZsZXhTaWduLCBjb25zdCBPcmRlcmVkRmxleEl0ZW1MaXN0JiwgTGF5b3V0VW5p
dCYgYXZhaWxhYmxlRnJlZVNwYWNlLCBmbG9hdCYgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5LCBm
bG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5LCBJbmZsZXhpYmxlRmxleEl0ZW1TaXplJiwg
V1RGOjpWZWN0b3I8TGF5b3V0VW5pdD4mIGNoaWxkU2l6ZXMpOwogICAgIHZvaWQgc2V0TG9naWNh
bE92ZXJyaWRlU2l6ZShSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IGNoaWxkUHJlZmVycmVk
U2l6ZSk7CiAgICAgdm9pZCBwcmVwYXJlQ2hpbGRGb3JQb3NpdGlvbmVkTGF5b3V0KFJlbmRlckJv
eCogY2hpbGQsIExheW91dFVuaXQgbWFpbkF4aXNPZmZzZXQsIExheW91dFVuaXQgY3Jvc3NBeGlz
T2Zmc2V0KTsKLSAgICB2b2lkIGxheW91dEFuZFBsYWNlQ2hpbGRyZW4oTGF5b3V0VW5pdCYgY3Jv
c3NBeGlzT2Zmc2V0LCBjb25zdCBPcmRlcmVkRmxleEl0ZW1MaXN0JiwgY29uc3QgV1RGOjpWZWN0
b3I8TGF5b3V0VW5pdD4mIGNoaWxkU2l6ZXMsIExheW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNl
KTsKKyAgICB2b2lkIGxheW91dEFuZFBsYWNlQ2hpbGRyZW4oTGF5b3V0VW5pdCYgY3Jvc3NBeGlz
T2Zmc2V0LCBjb25zdCBPcmRlcmVkRmxleEl0ZW1MaXN0JiwgY29uc3QgV1RGOjpWZWN0b3I8TGF5
b3V0VW5pdD4mIGNoaWxkU2l6ZXMsIExheW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlLCBXVEY6
OlZlY3RvcjxMaW5lQ29udGV4dD4mIGxpbmVDb250ZXh0cyk7CiAgICAgdm9pZCBsYXlvdXRDb2x1
bW5SZXZlcnNlKGNvbnN0IE9yZGVyZWRGbGV4SXRlbUxpc3QmLCBjb25zdCBXVEY6OlZlY3RvcjxM
YXlvdXRVbml0PiYgY2hpbGRTaXplcywgTGF5b3V0VW5pdCBjcm9zc0F4aXNPZmZzZXQsIExheW91
dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlKTsKLSAgICB2b2lkIGFsaWduQ2hpbGRyZW4oY29uc3Qg
T3JkZXJlZEZsZXhJdGVtTGlzdCYsIExheW91dFVuaXQgbGluZUNyb3NzQXhpc0V4dGVudCwgTGF5
b3V0VW5pdCBtYXhBc2NlbnQpOworICAgIHZvaWQgYWxpZ25DaGlsZHJlbihGbGV4T3JkZXJJdGVy
YXRvciYsIGNvbnN0IFdURjo6VmVjdG9yPExpbmVDb250ZXh0PiYpOwogICAgIHZvaWQgYXBwbHlT
dHJldGNoQWxpZ25tZW50VG9DaGlsZChSZW5kZXJCb3gqLCBMYXlvdXRVbml0IGxpbmVDcm9zc0F4
aXNFeHRlbnQpOwogICAgIHZvaWQgZmxpcEZvclJpZ2h0VG9MZWZ0Q29sdW1uKEZsZXhPcmRlckl0
ZXJhdG9yJik7Ci0gICAgdm9pZCBmbGlwRm9yV3JhcFJldmVyc2UoRmxleE9yZGVySXRlcmF0b3Im
LCBjb25zdCBXcmFwUmV2ZXJzZUNvbnRleHQmKTsKKyAgICB2b2lkIGZsaXBGb3JXcmFwUmV2ZXJz
ZShGbGV4T3JkZXJJdGVyYXRvciYsIGNvbnN0IFdURjo6VmVjdG9yPExpbmVDb250ZXh0PiYpOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133144</attachid>
            <date>2012-03-21 17:02:34 -0700</date>
            <delta_ts>2012-03-21 18:29:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-81843-20120321170247.patch</filename>
            <type>text/plain</type>
            <size>16010</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY4Y2IwODE2MjVmOGVi
ZTBkMzkxYmZiOGFlM2QwMDgyZmMzZTRhNC4uMDFlYjZkMTE1OGMxZWJhYjZlM2FiMzlmMjE3MGJk
MjdmYTk1MWJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTIxICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgcmVmYWN0b3IgZmxleGJveCBp
biBwcmVwYXJhdGlvbiBmb3IgZmxleC1saW5lLXBhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxODQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgT2ph
biBWYWZhaS4KKworICAgICAgICBSZXBsYWNlIFdyYXBSZXZlcnNlQ29udGV4dCB3aXRoIGEgdmVj
dG9yIG9mIExpbmVDb250ZXh0cyB0aGF0IGNvbnRhaW4KKyAgICAgICAgdGhlIHNhbWUgaW5mb3Jt
YXRpb24sIHBsdXMgdmFsdWVzIG5lZWRlZCBmb3IgZmxleC1hbGlnbi4KKworICAgICAgICBhbGln
bkNoaWxkcmVuIGhhcyBiZWVuIG1vdmVkIHRvIGFmdGVyIGFsbCB0aGUgbGluZXMgaGF2ZSBiZWVu
CisgICAgICAgIHBvc2l0aW9uZWQuIFdlIHdhbnQgdG8gYWxpZ24gY2hpbGRyZW4gYWZ0ZXIgZmxl
eC1saW5lLXBhY2sgaGFzIGNoYW5nZWQKKyAgICAgICAgdGhlIHNpemUgb2YgZWFjaCBsaW5lIHRv
IGF2b2lkIHVubmVjZXNzYXJ5IGxheW91dHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBqdXN0
IHJlZmFjdG9yaW5nLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpMaW5lQ29udGV4dDo6TGlu
ZUNvbnRleHQpOiBOZXcgc3RydWN0LAorICAgICAgICBob2xkcyBpbmZvcm1hdGlvbiBuZWVkZWQg
Zm9yIHdyYXAtcmV2ZXJzZSBhbmQgYWxpZ25pbmcgY2hpbGRyZW4uCisgICAgICAgIChSZW5kZXJG
bGV4aWJsZUJveDo6TGluZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGli
bGVCb3g6OmxheW91dEZsZXhJdGVtcyk6IGFsaWduQ2hpbGRyZW4gYWZ0ZXIgbGF5b3V0IG91dCBh
bGwgdGhlIGxpbmVzIHJhdGhlciB0aGFuIGFmdGVyIGVhY2ggbGluZS4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRBbmRQbGFjZUNoaWxkcmVuKTogZG9uJ3QgYWxp
Z25DaGlsZHJlbgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmFsaWduQ2hp
bGRyZW4pOiBhbGlnbiBhbGwgZmxleCBpdGVtcywgbm90IGp1c3QgYSBsaW5lIGF0IGEgdGltZS4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpmbGlwRm9yV3JhcFJldmVyc2Up
OiBVcGRhdGUgdG8gdXNlIExpbmVDb250ZXh0CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZs
ZXhpYmxlQm94Lmg6CisKIDIwMTItMDMtMjEgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9v
bGVhbiBhbmQgR0xfQ0hST01JVU1fY29tbWFuZF9idWZmZXJfcXVlcnkgc3VwcG9ydC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IGFhNTNj
MTRmZDgzODk4ZWY3YTIwYTZmMWNjNDE5MmNkOTMzNzM3NDIuLmFiNDdkMzMxMjdiYzllMzJmMDNk
MmJkMGViODlmYTAwZjY0YjQyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsZXhpYmxlQm94LmNwcApAQCAtMTAyLDM4ICsxMDIsMTkgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8aW50Pjo6Y29uc3RfaXRlcmF0b3IgbV9vcmRlclZhbHVlc0l0ZXJhdG9yOwogfTsKIAot
c3RydWN0IFJlbmRlckZsZXhpYmxlQm94OjpXcmFwUmV2ZXJzZUNvbnRleHQgewotICAgIGV4cGxp
Y2l0IFdyYXBSZXZlcnNlQ29udGV4dChFRmxleFdyYXAgZmxleFdyYXApCi0gICAgICAgIDogaXNX
cmFwUmV2ZXJzZShmbGV4V3JhcCA9PSBGbGV4V3JhcFJldmVyc2UpCitzdHJ1Y3QgUmVuZGVyRmxl
eGlibGVCb3g6OkxpbmVDb250ZXh0IHsKKyAgICBMaW5lQ29udGV4dChMYXlvdXRVbml0IGNyb3Nz
QXhpc09mZnNldCwgTGF5b3V0VW5pdCBjcm9zc0F4aXNFeHRlbnQsIHNpemVfdCBudW1iZXJPZkNo
aWxkcmVuLCBMYXlvdXRVbml0IG1heEFzY2VudCkKKyAgICAgICAgOiBjcm9zc0F4aXNPZmZzZXQo
Y3Jvc3NBeGlzT2Zmc2V0KQorICAgICAgICAsIGNyb3NzQXhpc0V4dGVudChjcm9zc0F4aXNFeHRl
bnQpCisgICAgICAgICwgbnVtYmVyT2ZDaGlsZHJlbihudW1iZXJPZkNoaWxkcmVuKQorICAgICAg
ICAsIG1heEFzY2VudChtYXhBc2NlbnQpCiAgICAgewogICAgIH0KIAotICAgIHZvaWQgYWRkQ3Jv
c3NBeGlzT2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0KQotICAgIHsKLSAgICAgICAgaWYgKCFpc1dy
YXBSZXZlcnNlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjcm9zc0F4aXNPZmZzZXRz
LmFwcGVuZChvZmZzZXQpOwotICAgIH0KLQotICAgIHZvaWQgYWRkTnVtYmVyT2ZDaGlsZHJlbk9u
TGluZShzaXplX3QgbnVtYmVyT2ZDaGlsZHJlbikKLSAgICB7Ci0gICAgICAgIGlmICghaXNXcmFw
UmV2ZXJzZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY2hpbGRyZW5QZXJMaW5lLmFw
cGVuZChudW1iZXJPZkNoaWxkcmVuKTsKLSAgICB9Ci0KLSAgICBMYXlvdXRVbml0IGxpbmVDcm9z
c0F4aXNEZWx0YShzaXplX3QgbGluZSwgTGF5b3V0VW5pdCBjcm9zc0F4aXNDb250ZW50RXh0ZW50
KSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGxpbmUgKyAxIDwgY3Jvc3NBeGlzT2Zmc2V0
cy5zaXplKCkpOwotICAgICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQgPSBjcm9zc0F4aXNPZmZz
ZXRzW2xpbmUgKyAxXSAtIGNyb3NzQXhpc09mZnNldHNbbGluZV07Ci0gICAgICAgIExheW91dFVu
aXQgb3JpZ2luYWxPZmZzZXQgPSBjcm9zc0F4aXNPZmZzZXRzW2xpbmVdIC0gY3Jvc3NBeGlzT2Zm
c2V0c1swXTsKLSAgICAgICAgTGF5b3V0VW5pdCBuZXdPZmZzZXQgPSBjcm9zc0F4aXNDb250ZW50
RXh0ZW50IC0gb3JpZ2luYWxPZmZzZXQgLSBsaW5lSGVpZ2h0OwotICAgICAgICByZXR1cm4gbmV3
T2Zmc2V0IC0gb3JpZ2luYWxPZmZzZXQ7Ci0gICAgfQotCi0gICAgV1RGOjpWZWN0b3I8TGF5b3V0
VW5pdD4gY3Jvc3NBeGlzT2Zmc2V0czsKLSAgICBXVEY6OlZlY3RvcjxzaXplX3Q+IGNoaWxkcmVu
UGVyTGluZTsKLSAgICBib29sIGlzV3JhcFJldmVyc2U7CisgICAgTGF5b3V0VW5pdCBjcm9zc0F4
aXNPZmZzZXQ7CisgICAgTGF5b3V0VW5pdCBjcm9zc0F4aXNFeHRlbnQ7CisgICAgc2l6ZV90IG51
bWJlck9mQ2hpbGRyZW47CisgICAgTGF5b3V0VW5pdCBtYXhBc2NlbnQ7CiB9OwogCiAKQEAgLTYw
NywxMiArNTg4LDkgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0RmxleEl0ZW1zKGJv
b2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICBmbG9hdCB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHk7
CiAgICAgZmxvYXQgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5OwogICAgIExheW91dFVuaXQgbWlu
TWF4QXBwbGllZE1haW5BeGlzRXh0ZW50OworICAgIFdURjo6VmVjdG9yPExpbmVDb250ZXh0PiBs
aW5lQ29udGV4dHM7CiAgICAgRmxleE9yZGVySXRlcmF0b3IgZmxleEl0ZXJhdG9yKHRoaXMsIGZs
ZXhPcmRlclZhbHVlcyk7CiAKLSAgICAvLyBGb3Igd3JhcC1yZXZlcnNlLCB3ZSBuZWVkIHRvIGxh
eW91dCBhcyB3cmFwLCB0aGVuIHJldmVyc2UgdGhlIGxpbmVzLiBUaGUgbmV4dCB0d28gYXJyYXlz
Ci0gICAgLy8gYXJlIHNvbWUgZXh0cmEgaW5mb3JtYXRpb24gc28gaXQncyBwb3NzaWJsZSB0byBy
ZXZlcnNlIHRoZSBsaW5lcy4KLSAgICBXcmFwUmV2ZXJzZUNvbnRleHQgd3JhcFJldmVyc2VDb250
ZXh0KHN0eWxlKCktPmZsZXhXcmFwKCkpOwotCiAgICAgTGF5b3V0VW5pdCBjcm9zc0F4aXNPZmZz
ZXQgPSBmbG93QXdhcmVCb3JkZXJCZWZvcmUoKSArIGZsb3dBd2FyZVBhZGRpbmdCZWZvcmUoKTsK
ICAgICB3aGlsZSAoY29tcHV0ZU5leHRGbGV4TGluZShmbGV4SXRlcmF0b3IsIG9yZGVyZWRDaGls
ZHJlbiwgcHJlZmVycmVkTWFpbkF4aXNFeHRlbnQsIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwg
dG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5LCBtaW5NYXhBcHBsaWVkTWFpbkF4aXNFeHRlbnQpKSB7
CiAgICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlID0gY29tcHV0ZUF2YWlsYWJs
ZUZyZWVTcGFjZShwcmVmZXJyZWRNYWluQXhpc0V4dGVudCk7CkBAIC02MjQsMTUgKzYwMiwxNCBA
QCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRGbGV4SXRlbXMoYm9vbCByZWxheW91dENo
aWxkcmVuKQogICAgICAgICAgICAgQVNTRVJUKGluZmxleGlibGVJdGVtcy5zaXplKCkgPiAwKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHdyYXBSZXZlcnNlQ29udGV4dC5hZGROdW1iZXJPZkNoaWxk
cmVuT25MaW5lKG9yZGVyZWRDaGlsZHJlbi5zaXplKCkpOwotICAgICAgICB3cmFwUmV2ZXJzZUNv
bnRleHQuYWRkQ3Jvc3NBeGlzT2Zmc2V0KGNyb3NzQXhpc09mZnNldCk7Ci0gICAgICAgIGxheW91
dEFuZFBsYWNlQ2hpbGRyZW4oY3Jvc3NBeGlzT2Zmc2V0LCBvcmRlcmVkQ2hpbGRyZW4sIGNoaWxk
U2l6ZXMsIGF2YWlsYWJsZUZyZWVTcGFjZSk7CisgICAgICAgIGxheW91dEFuZFBsYWNlQ2hpbGRy
ZW4oY3Jvc3NBeGlzT2Zmc2V0LCBvcmRlcmVkQ2hpbGRyZW4sIGNoaWxkU2l6ZXMsIGF2YWlsYWJs
ZUZyZWVTcGFjZSwgbGluZUNvbnRleHRzKTsKICAgICB9CiAKLSAgICBpZiAod3JhcFJldmVyc2VD
b250ZXh0LmlzV3JhcFJldmVyc2UpIHsKLSAgICAgICAgd3JhcFJldmVyc2VDb250ZXh0LmFkZENy
b3NzQXhpc09mZnNldChjcm9zc0F4aXNPZmZzZXQpOwotICAgICAgICBmbGlwRm9yV3JhcFJldmVy
c2UoZmxleEl0ZXJhdG9yLCB3cmFwUmV2ZXJzZUNvbnRleHQpOwotICAgIH0KKyAgICBBU1NFUlQo
IWxpbmVDb250ZXh0cy5zaXplKCkpOworICAgIGFsaWduQ2hpbGRyZW4oZmxleEl0ZXJhdG9yLCBs
aW5lQ29udGV4dHMpOworCisgICAgaWYgKHN0eWxlKCktPmZsZXhXcmFwKCkgPT0gRmxleFdyYXBS
ZXZlcnNlKQorICAgICAgICBmbGlwRm9yV3JhcFJldmVyc2UoZmxleEl0ZXJhdG9yLCBsaW5lQ29u
dGV4dHMpOwogCiAgICAgLy8gZGlyZWN0aW9uOnJ0bCArIGZsZXgtZGlyZWN0aW9uOmNvbHVtbiBt
ZWFucyB0aGUgY3Jvc3MtYXhpcyBkaXJlY3Rpb24gaXMgZmxpcHBlZC4KICAgICBmbGlwRm9yUmln
aHRUb0xlZnRDb2x1bW4oZmxleEl0ZXJhdG9yKTsKQEAgLTg2OCw3ICs4NDUsNyBAQCBzdGF0aWMg
RUZsZXhBbGlnbiBmbGV4QWxpZ25Gb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQogICAgIHJldHVy
biBhbGlnbjsKIH0KIAotdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QW5kUGxhY2VDaGls
ZHJlbihMYXlvdXRVbml0JiBjcm9zc0F4aXNPZmZzZXQsIGNvbnN0IE9yZGVyZWRGbGV4SXRlbUxp
c3QmIGNoaWxkcmVuLCBjb25zdCBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcywg
TGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UpCit2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojps
YXlvdXRBbmRQbGFjZUNoaWxkcmVuKExheW91dFVuaXQmIGNyb3NzQXhpc09mZnNldCwgY29uc3Qg
T3JkZXJlZEZsZXhJdGVtTGlzdCYgY2hpbGRyZW4sIGNvbnN0IFdURjo6VmVjdG9yPExheW91dFVu
aXQ+JiBjaGlsZFNpemVzLCBMYXlvdXRVbml0IGF2YWlsYWJsZUZyZWVTcGFjZSwgV1RGOjpWZWN0
b3I8TGluZUNvbnRleHQ+JiBsaW5lQ29udGV4dHMpCiB7CiAgICAgTGF5b3V0VW5pdCBtYWluQXhp
c09mZnNldCA9IGZsb3dBd2FyZUJvcmRlclN0YXJ0KCkgKyBmbG93QXdhcmVQYWRkaW5nU3RhcnQo
KTsKICAgICBtYWluQXhpc09mZnNldCArPSBpbml0aWFsUGFja2luZ09mZnNldChhdmFpbGFibGVG
cmVlU3BhY2UsIHN0eWxlKCktPmZsZXhQYWNrKCksIGNoaWxkU2l6ZXMuc2l6ZSgpKTsKQEAgLTkz
MCw4ICs5MDcsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRBbmRQbGFjZUNoaWxk
cmVuKExheW91dFVuaXQmIGNyb3NzQXhpc09mZnNldCwgY29ucwogICAgIH0KIAogICAgIExheW91
dFVuaXQgbGluZUNyb3NzQXhpc0V4dGVudCA9IGlzTXVsdGlsaW5lKCkgPyBtYXhDaGlsZENyb3Nz
QXhpc0V4dGVudCA6IGNyb3NzQXhpc0NvbnRlbnRFeHRlbnQoKTsKLSAgICBhbGlnbkNoaWxkcmVu
KGNoaWxkcmVuLCBsaW5lQ3Jvc3NBeGlzRXh0ZW50LCBtYXhBc2NlbnQpOwotCisgICAgbGluZUNv
bnRleHRzLmFwcGVuZChMaW5lQ29udGV4dChjcm9zc0F4aXNPZmZzZXQsIGxpbmVDcm9zc0F4aXNF
eHRlbnQsIGNoaWxkcmVuLnNpemUoKSwgbWF4QXNjZW50KSk7CiAgICAgY3Jvc3NBeGlzT2Zmc2V0
ICs9IGxpbmVDcm9zc0F4aXNFeHRlbnQ7CiB9CiAKQEAgLTk3Niw0OSArOTUyLDYxIEBAIHZvaWQg
UmVuZGVyRmxleGlibGVCb3g6OmFkanVzdEFsaWdubWVudEZvckNoaWxkKFJlbmRlckJveCogY2hp
bGQsIExheW91dFVuaXQgZGVsCiAgICAgICAgIGNoaWxkLT5yZXBhaW50RHVyaW5nTGF5b3V0SWZN
b3ZlZChvbGRSZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6YWxpZ25DaGlsZHJl
bihjb25zdCBPcmRlcmVkRmxleEl0ZW1MaXN0JiBjaGlsZHJlbiwgTGF5b3V0VW5pdCBsaW5lQ3Jv
c3NBeGlzRXh0ZW50LCBMYXlvdXRVbml0IG1heEFzY2VudCkKK3ZvaWQgUmVuZGVyRmxleGlibGVC
b3g6OmFsaWduQ2hpbGRyZW4oRmxleE9yZGVySXRlcmF0b3ImIGl0ZXJhdG9yLCBjb25zdCBXVEY6
OlZlY3RvcjxMaW5lQ29udGV4dD4mIGxpbmVDb250ZXh0cykKIHsKLSAgICBMYXlvdXRVbml0IG1p
bk1hcmdpbkFmdGVyQmFzZWxpbmUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPExheW91dFVuaXQ+Ojpt
YXgoKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgUmVuZGVyQm94KiBjaGlsZCA9IGNoaWxkcmVuW2ldOwotICAgICAgICBzd2l0
Y2ggKGZsZXhBbGlnbkZvckNoaWxkKGNoaWxkKSkgewotICAgICAgICBjYXNlIEFsaWduQXV0bzoK
LSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgQWxpZ25TdHJldGNoOiB7Ci0gICAgICAgICAgICBhcHBseVN0cmV0Y2hBbGln
bm1lbnRUb0NoaWxkKGNoaWxkLCBsaW5lQ3Jvc3NBeGlzRXh0ZW50KTsKLSAgICAgICAgICAgIC8v
IFNpbmNlIHdyYXAtcmV2ZXJzZSBmbGlwcyBjcm9zcyBzdGFydCBhbmQgY3Jvc3MgZW5kLCBzdHJl
Y2ggY2hpbGRyZW4gc2hvdWxkIGJlIGFsaWduZWQgd2l0aCB0aGUgY3Jvc3MgZW5kLgotICAgICAg
ICAgICAgaWYgKHN0eWxlKCktPmZsZXhXcmFwKCkgPT0gRmxleFdyYXBSZXZlcnNlKQorICAgIC8v
IEtlZXAgdHJhY2sgb2YgdGhlIHNwYWNlIGJldHdlZW4gdGhlIGJhc2VsaW5lIGVkZ2UgYW5kIHRo
ZSBhZnRlciBlZGdlIG9mIHRoZSBib3ggZm9yIGVhY2ggbGluZS4KKyAgICBXVEY6OlZlY3RvcjxM
YXlvdXRVbml0PiBtaW5NYXJnaW5BZnRlckJhc2VsaW5lczsKKworICAgIFJlbmRlckJveCogY2hp
bGQgPSBpdGVyYXRvci5maXJzdCgpOworICAgIGZvciAoc2l6ZV90IGxpbmVOdW1iZXIgPSAwOyBs
aW5lTnVtYmVyIDwgbGluZUNvbnRleHRzLnNpemUoKTsgKytsaW5lTnVtYmVyKSB7CisgICAgICAg
IExheW91dFVuaXQgbWluTWFyZ2luQWZ0ZXJCYXNlbGluZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
TGF5b3V0VW5pdD46Om1heCgpOworICAgICAgICBMYXlvdXRVbml0IGxpbmVDcm9zc0F4aXNFeHRl
bnQgPSBsaW5lQ29udGV4dHNbbGluZU51bWJlcl0uY3Jvc3NBeGlzRXh0ZW50OworICAgICAgICBM
YXlvdXRVbml0IG1heEFzY2VudCA9IGxpbmVDb250ZXh0c1tsaW5lTnVtYmVyXS5tYXhBc2NlbnQ7
CisKKyAgICAgICAgZm9yIChzaXplX3QgY2hpbGROdW1iZXIgPSAwOyBjaGlsZE51bWJlciA8IGxp
bmVDb250ZXh0c1tsaW5lTnVtYmVyXS5udW1iZXJPZkNoaWxkcmVuOyArK2NoaWxkTnVtYmVyLCBj
aGlsZCA9IGl0ZXJhdG9yLm5leHQoKSkgeworICAgICAgICAgICAgc3dpdGNoIChmbGV4QWxpZ25G
b3JDaGlsZChjaGlsZCkpIHsKKyAgICAgICAgICAgIGNhc2UgQWxpZ25BdXRvOgorICAgICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBBbGlnblN0cmV0Y2g6IHsKKyAgICAgICAgICAgICAgICBhcHBseVN0cmV0
Y2hBbGlnbm1lbnRUb0NoaWxkKGNoaWxkLCBsaW5lQ3Jvc3NBeGlzRXh0ZW50KTsKKyAgICAgICAg
ICAgICAgICAvLyBTaW5jZSB3cmFwLXJldmVyc2UgZmxpcHMgY3Jvc3Mgc3RhcnQgYW5kIGNyb3Nz
IGVuZCwgc3RyZWNoIGNoaWxkcmVuIHNob3VsZCBiZSBhbGlnbmVkIHdpdGggdGhlIGNyb3NzIGVu
ZC4KKyAgICAgICAgICAgICAgICBpZiAoc3R5bGUoKS0+ZmxleFdyYXAoKSA9PSBGbGV4V3JhcFJl
dmVyc2UpCisgICAgICAgICAgICAgICAgICAgIGFkanVzdEFsaWdubWVudEZvckNoaWxkKGNoaWxk
LCBhdmFpbGFibGVBbGlnbm1lbnRTcGFjZUZvckNoaWxkKGxpbmVDcm9zc0F4aXNFeHRlbnQsIGNo
aWxkKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjYXNlIEFsaWduU3RhcnQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIEFsaWduRW5kOgogICAgICAgICAgICAgICAgIGFkanVzdEFsaWdubWVudEZvckNoaWxkKGNo
aWxkLCBhdmFpbGFibGVBbGlnbm1lbnRTcGFjZUZvckNoaWxkKGxpbmVDcm9zc0F4aXNFeHRlbnQs
IGNoaWxkKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFs
aWduU3RhcnQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBbGlnbkVuZDoKLSAg
ICAgICAgICAgIGFkanVzdEFsaWdubWVudEZvckNoaWxkKGNoaWxkLCBhdmFpbGFibGVBbGlnbm1l
bnRTcGFjZUZvckNoaWxkKGxpbmVDcm9zc0F4aXNFeHRlbnQsIGNoaWxkKSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBBbGlnbkNlbnRlcjoKLSAgICAgICAgICAgIGFkanVzdEFs
aWdubWVudEZvckNoaWxkKGNoaWxkLCBhdmFpbGFibGVBbGlnbm1lbnRTcGFjZUZvckNoaWxkKGxp
bmVDcm9zc0F4aXNFeHRlbnQsIGNoaWxkKSAvIDIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQWxpZ25CYXNlbGluZTogewotICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQg
PSBtYXJnaW5Cb3hBc2NlbnRGb3JDaGlsZChjaGlsZCk7Ci0gICAgICAgICAgICBMYXlvdXRVbml0
IHN0YXJ0T2Zmc2V0ID0gbWF4QXNjZW50IC0gYXNjZW50OwotICAgICAgICAgICAgYWRqdXN0QWxp
Z25tZW50Rm9yQ2hpbGQoY2hpbGQsIHN0YXJ0T2Zmc2V0KTsKLQotICAgICAgICAgICAgaWYgKHN0
eWxlKCktPmZsZXhXcmFwKCkgPT0gRmxleFdyYXBSZXZlcnNlKQotICAgICAgICAgICAgICAgIG1p
bk1hcmdpbkFmdGVyQmFzZWxpbmUgPSBzdGQ6Om1pbihtaW5NYXJnaW5BZnRlckJhc2VsaW5lLCBh
dmFpbGFibGVBbGlnbm1lbnRTcGFjZUZvckNoaWxkKGxpbmVDcm9zc0F4aXNFeHRlbnQsIGNoaWxk
KSAtIHN0YXJ0T2Zmc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFsaWduQ2VudGVyOgorICAgICAgICAg
ICAgICAgIGFkanVzdEFsaWdubWVudEZvckNoaWxkKGNoaWxkLCBhdmFpbGFibGVBbGlnbm1lbnRT
cGFjZUZvckNoaWxkKGxpbmVDcm9zc0F4aXNFeHRlbnQsIGNoaWxkKSAvIDIpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBbGlnbkJhc2VsaW5lOiB7CisgICAgICAg
ICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBtYXJnaW5Cb3hBc2NlbnRGb3JDaGlsZChjaGls
ZCk7CisgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBzdGFydE9mZnNldCA9IG1heEFzY2VudCAt
IGFzY2VudDsKKyAgICAgICAgICAgICAgICBhZGp1c3RBbGlnbm1lbnRGb3JDaGlsZChjaGlsZCwg
c3RhcnRPZmZzZXQpOworCisgICAgICAgICAgICAgICAgaWYgKHN0eWxlKCktPmZsZXhXcmFwKCkg
PT0gRmxleFdyYXBSZXZlcnNlKQorICAgICAgICAgICAgICAgICAgICBtaW5NYXJnaW5BZnRlckJh
c2VsaW5lID0gc3RkOjptaW4obWluTWFyZ2luQWZ0ZXJCYXNlbGluZSwgYXZhaWxhYmxlQWxpZ25t
ZW50U3BhY2VGb3JDaGlsZChsaW5lQ3Jvc3NBeGlzRXh0ZW50LCBjaGlsZCkgLSBzdGFydE9mZnNl
dCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KKyAgICAgICAgbWluTWFyZ2luQWZ0ZXJCYXNlbGluZXMuYXBwZW5kKG1pbk1h
cmdpbkFmdGVyQmFzZWxpbmUpOwogICAgIH0KIAorICAgIGlmIChzdHlsZSgpLT5mbGV4V3JhcCgp
ICE9IEZsZXhXcmFwUmV2ZXJzZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gd3JhcC1yZXZl
cnNlIGZsaXBzIHRoZSBjcm9zcyBheGlzIHN0YXJ0IGFuZCBlbmQuIEZvciBiYXNlbGluZSBhbGln
bm1lbnQsIHRoaXMgbWVhbnMgd2UKICAgICAvLyBuZWVkIHRvIGFsaWduIHRoZSBhZnRlciBlZGdl
IG9mIGJhc2VsaW5lIGVsZW1lbnRzIHdpdGggdGhlIGFmdGVyIGVkZ2Ugb2YgdGhlIGZsZXggbGlu
ZS4KLSAgICBpZiAoc3R5bGUoKS0+ZmxleFdyYXAoKSA9PSBGbGV4V3JhcFJldmVyc2UgJiYgbWlu
TWFyZ2luQWZ0ZXJCYXNlbGluZSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNo
aWxkcmVuLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBSZW5kZXJCb3gqIGNoaWxkID0gY2hp
bGRyZW5baV07Ci0gICAgICAgICAgICBpZiAoZmxleEFsaWduRm9yQ2hpbGQoY2hpbGQpID09IEFs
aWduQmFzZWxpbmUpCisgICAgY2hpbGQgPSBpdGVyYXRvci5maXJzdCgpOworICAgIGZvciAoc2l6
ZV90IGxpbmVOdW1iZXIgPSAwOyBsaW5lTnVtYmVyIDwgbGluZUNvbnRleHRzLnNpemUoKTsgKyts
aW5lTnVtYmVyKSB7CisgICAgICAgIExheW91dFVuaXQgbWluTWFyZ2luQWZ0ZXJCYXNlbGluZSA9
IG1pbk1hcmdpbkFmdGVyQmFzZWxpbmVzW2xpbmVOdW1iZXJdOworICAgICAgICBmb3IgKHNpemVf
dCBjaGlsZE51bWJlciA9IDA7IGNoaWxkTnVtYmVyIDwgbGluZUNvbnRleHRzW2xpbmVOdW1iZXJd
Lm51bWJlck9mQ2hpbGRyZW47ICsrY2hpbGROdW1iZXIsIGNoaWxkID0gaXRlcmF0b3IubmV4dCgp
KSB7CisgICAgICAgICAgICBpZiAoZmxleEFsaWduRm9yQ2hpbGQoY2hpbGQpID09IEFsaWduQmFz
ZWxpbmUgJiYgbWluTWFyZ2luQWZ0ZXJCYXNlbGluZSkKICAgICAgICAgICAgICAgICBhZGp1c3RB
bGlnbm1lbnRGb3JDaGlsZChjaGlsZCwgbWluTWFyZ2luQWZ0ZXJCYXNlbGluZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC0xMDYzLDI2ICsxMDUxLDI1IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6
OmZsaXBGb3JSaWdodFRvTGVmdENvbHVtbihGbGV4T3JkZXJJdGVyYXRvciYgaXRlcmF0b3IpCiAg
ICAgfQogfQogCi12b2lkIFJlbmRlckZsZXhpYmxlQm94OjpmbGlwRm9yV3JhcFJldmVyc2UoRmxl
eE9yZGVySXRlcmF0b3ImIGl0ZXJhdG9yLCBjb25zdCBXcmFwUmV2ZXJzZUNvbnRleHQmIHdyYXBS
ZXZlcnNlQ29udGV4dCkKK3ZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmZsaXBGb3JXcmFwUmV2ZXJz
ZShGbGV4T3JkZXJJdGVyYXRvciYgaXRlcmF0b3IsIGNvbnN0IFdURjo6VmVjdG9yPExpbmVDb250
ZXh0PiYgbGluZUNvbnRleHRzKQogewogICAgIGlmICghaXNDb2x1bW5GbG93KCkpCiAgICAgICAg
IGNvbXB1dGVMb2dpY2FsSGVpZ2h0KCk7CiAKLSAgICBzaXplX3QgY3VycmVudENoaWxkID0gMDsK
LSAgICBzaXplX3QgbGluZU51bWJlciA9IDA7CiAgICAgTGF5b3V0VW5pdCBjb250ZW50RXh0ZW50
ID0gY3Jvc3NBeGlzQ29udGVudEV4dGVudCgpOwotICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9
IGl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKSkgewotICAg
ICAgICBMYXlvdXRQb2ludCBsb2NhdGlvbiA9IGZsb3dBd2FyZUxvY2F0aW9uRm9yQ2hpbGQoY2hp
bGQpOwotICAgICAgICBsb2NhdGlvbi5zZXRZKGxvY2F0aW9uLnkoKSArIHdyYXBSZXZlcnNlQ29u
dGV4dC5saW5lQ3Jvc3NBeGlzRGVsdGEobGluZU51bWJlciwgY29udGVudEV4dGVudCkpOwotCi0g
ICAgICAgIExheW91dFJlY3Qgb2xkUmVjdCA9IGNoaWxkLT5mcmFtZVJlY3QoKTsKLSAgICAgICAg
c2V0Rmxvd0F3YXJlTG9jYXRpb25Gb3JDaGlsZChjaGlsZCwgbG9jYXRpb24pOwotICAgICAgICBp
ZiAoIXNlbGZOZWVkc0xheW91dCgpICYmIGNoaWxkLT5jaGVja0ZvclJlcGFpbnREdXJpbmdMYXlv
dXQoKSkKLSAgICAgICAgICAgIGNoaWxkLT5yZXBhaW50RHVyaW5nTGF5b3V0SWZNb3ZlZChvbGRS
ZWN0KTsKLQotICAgICAgICBpZiAoKytjdXJyZW50Q2hpbGQgPT0gd3JhcFJldmVyc2VDb250ZXh0
LmNoaWxkcmVuUGVyTGluZVtsaW5lTnVtYmVyXSkgewotICAgICAgICAgICAgKytsaW5lTnVtYmVy
OwotICAgICAgICAgICAgY3VycmVudENoaWxkID0gMDsKKyAgICBSZW5kZXJCb3gqIGNoaWxkID0g
aXRlcmF0b3IuZmlyc3QoKTsKKyAgICBmb3IgKHNpemVfdCBsaW5lTnVtYmVyID0gMDsgbGluZU51
bWJlciA8IGxpbmVDb250ZXh0cy5zaXplKCk7ICsrbGluZU51bWJlcikgeworICAgICAgICBmb3Ig
KHNpemVfdCBjaGlsZE51bWJlciA9IDA7IGNoaWxkTnVtYmVyIDwgbGluZUNvbnRleHRzW2xpbmVO
dW1iZXJdLm51bWJlck9mQ2hpbGRyZW47ICsrY2hpbGROdW1iZXIsIGNoaWxkID0gaXRlcmF0b3Iu
bmV4dCgpKSB7CisgICAgICAgICAgICBMYXlvdXRQb2ludCBsb2NhdGlvbiA9IGZsb3dBd2FyZUxv
Y2F0aW9uRm9yQ2hpbGQoY2hpbGQpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBsaW5lQ3Jvc3NB
eGlzRXh0ZW50ID0gbGluZUNvbnRleHRzW2xpbmVOdW1iZXJdLmNyb3NzQXhpc0V4dGVudDsKKyAg
ICAgICAgICAgIExheW91dFVuaXQgb3JpZ2luYWxPZmZzZXQgPSBsaW5lQ29udGV4dHNbbGluZU51
bWJlcl0uY3Jvc3NBeGlzT2Zmc2V0IC0gbGluZUNvbnRleHRzWzBdLmNyb3NzQXhpc09mZnNldDsK
KyAgICAgICAgICAgIExheW91dFVuaXQgbmV3T2Zmc2V0ID0gY29udGVudEV4dGVudCAtIG9yaWdp
bmFsT2Zmc2V0IC0gbGluZUNyb3NzQXhpc0V4dGVudDsKKyAgICAgICAgICAgIGxvY2F0aW9uLnNl
dFkobG9jYXRpb24ueSgpICsgbmV3T2Zmc2V0IC0gb3JpZ2luYWxPZmZzZXQpOworCisgICAgICAg
ICAgICBMYXlvdXRSZWN0IG9sZFJlY3QgPSBjaGlsZC0+ZnJhbWVSZWN0KCk7CisgICAgICAgICAg
ICBzZXRGbG93QXdhcmVMb2NhdGlvbkZvckNoaWxkKGNoaWxkLCBsb2NhdGlvbik7CisgICAgICAg
ICAgICBpZiAoIXNlbGZOZWVkc0xheW91dCgpICYmIGNoaWxkLT5jaGVja0ZvclJlcGFpbnREdXJp
bmdMYXlvdXQoKSkKKyAgICAgICAgICAgICAgICBjaGlsZC0+cmVwYWludER1cmluZ0xheW91dElm
TW92ZWQob2xkUmVjdCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCmluZGV4IDJhNjMwMjFmMTQyZjQzYjE3NGIwZTY3
Yjg2ZmZjNWI4MjRlZmExN2EuLmQ5Yjc2ZTVmN2NiYzFkMzQ2ODhjNzcyODIyYjY3YmVjZGI1MDZk
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCkBA
IC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3Qg
UmVuZGVyQm94KiwgTGF5b3V0VW5pdD4gSW5mbGV4aWJsZUZsZXhJdGVtU2l6ZTsKICAgICB0eXBl
ZGVmIFdURjo6VmVjdG9yPFJlbmRlckJveCo+IE9yZGVyZWRGbGV4SXRlbUxpc3Q7CiAKLSAgICBz
dHJ1Y3QgV3JhcFJldmVyc2VDb250ZXh0OworICAgIHN0cnVjdCBMaW5lQ29udGV4dDsKIAogICAg
IGJvb2wgaGFzT3J0aG9nb25hbEZsb3coUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CiAgICAgYm9v
bCBpc0NvbHVtbkZsb3coKSBjb25zdDsKQEAgLTExNCwxMiArMTE0LDEyIEBAIHByaXZhdGU6CiAg
ICAgYm9vbCByZXNvbHZlRmxleGlibGVMZW5ndGhzKEZsZXhTaWduLCBjb25zdCBPcmRlcmVkRmxl
eEl0ZW1MaXN0JiwgTGF5b3V0VW5pdCYgYXZhaWxhYmxlRnJlZVNwYWNlLCBmbG9hdCYgdG90YWxQ
b3NpdGl2ZUZsZXhpYmlsaXR5LCBmbG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5LCBJbmZs
ZXhpYmxlRmxleEl0ZW1TaXplJiwgV1RGOjpWZWN0b3I8TGF5b3V0VW5pdD4mIGNoaWxkU2l6ZXMp
OwogICAgIHZvaWQgc2V0TG9naWNhbE92ZXJyaWRlU2l6ZShSZW5kZXJCb3gqIGNoaWxkLCBMYXlv
dXRVbml0IGNoaWxkUHJlZmVycmVkU2l6ZSk7CiAgICAgdm9pZCBwcmVwYXJlQ2hpbGRGb3JQb3Np
dGlvbmVkTGF5b3V0KFJlbmRlckJveCogY2hpbGQsIExheW91dFVuaXQgbWFpbkF4aXNPZmZzZXQs
IExheW91dFVuaXQgY3Jvc3NBeGlzT2Zmc2V0KTsKLSAgICB2b2lkIGxheW91dEFuZFBsYWNlQ2hp
bGRyZW4oTGF5b3V0VW5pdCYgY3Jvc3NBeGlzT2Zmc2V0LCBjb25zdCBPcmRlcmVkRmxleEl0ZW1M
aXN0JiwgY29uc3QgV1RGOjpWZWN0b3I8TGF5b3V0VW5pdD4mIGNoaWxkU2l6ZXMsIExheW91dFVu
aXQgYXZhaWxhYmxlRnJlZVNwYWNlKTsKKyAgICB2b2lkIGxheW91dEFuZFBsYWNlQ2hpbGRyZW4o
TGF5b3V0VW5pdCYgY3Jvc3NBeGlzT2Zmc2V0LCBjb25zdCBPcmRlcmVkRmxleEl0ZW1MaXN0Jiwg
Y29uc3QgV1RGOjpWZWN0b3I8TGF5b3V0VW5pdD4mIGNoaWxkU2l6ZXMsIExheW91dFVuaXQgYXZh
aWxhYmxlRnJlZVNwYWNlLCBXVEY6OlZlY3RvcjxMaW5lQ29udGV4dD4mIGxpbmVDb250ZXh0cyk7
CiAgICAgdm9pZCBsYXlvdXRDb2x1bW5SZXZlcnNlKGNvbnN0IE9yZGVyZWRGbGV4SXRlbUxpc3Qm
LCBjb25zdCBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcywgTGF5b3V0VW5pdCBj
cm9zc0F4aXNPZmZzZXQsIExheW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlKTsKLSAgICB2b2lk
IGFsaWduQ2hpbGRyZW4oY29uc3QgT3JkZXJlZEZsZXhJdGVtTGlzdCYsIExheW91dFVuaXQgbGlu
ZUNyb3NzQXhpc0V4dGVudCwgTGF5b3V0VW5pdCBtYXhBc2NlbnQpOworICAgIHZvaWQgYWxpZ25D
aGlsZHJlbihGbGV4T3JkZXJJdGVyYXRvciYsIGNvbnN0IFdURjo6VmVjdG9yPExpbmVDb250ZXh0
PiYpOwogICAgIHZvaWQgYXBwbHlTdHJldGNoQWxpZ25tZW50VG9DaGlsZChSZW5kZXJCb3gqLCBM
YXlvdXRVbml0IGxpbmVDcm9zc0F4aXNFeHRlbnQpOwogICAgIHZvaWQgZmxpcEZvclJpZ2h0VG9M
ZWZ0Q29sdW1uKEZsZXhPcmRlckl0ZXJhdG9yJik7Ci0gICAgdm9pZCBmbGlwRm9yV3JhcFJldmVy
c2UoRmxleE9yZGVySXRlcmF0b3ImLCBjb25zdCBXcmFwUmV2ZXJzZUNvbnRleHQmKTsKKyAgICB2
b2lkIGZsaXBGb3JXcmFwUmV2ZXJzZShGbGV4T3JkZXJJdGVyYXRvciYsIGNvbnN0IFdURjo6VmVj
dG9yPExpbmVDb250ZXh0PiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>