<?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>78630</bug_id>
          
          <creation_ts>2012-02-14 13:59:11 -0800</creation_ts>
          <short_desc>Prepare RenderLayerBacking and RenderLayerCompositor for subpixel layout</short_desc>
          <delta_ts>2012-02-14 17:20:54 -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>Layout and Rendering</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>https://trac.webkit.org/wiki/LayoutUnit</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>60318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>556572</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-02-14 13:59:11 -0800</bug_when>
    <thetext>RenderLayerBacking and RenderLayerCompositor will continue to operate on integers, but need to properly pixel snap values gleaned from RenderLayer and the render tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556638</commentid>
    <comment_count>1</comment_count>
      <attachid>127051</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-02-14 14:52:13 -0800</bug_when>
    <thetext>Created attachment 127051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556653</commentid>
    <comment_count>2</comment_count>
      <attachid>127051</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-14 15:04:33 -0800</bug_when>
    <thetext>Comment on attachment 127051
Patch

Simon is still your man here. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556672</commentid>
    <comment_count>3</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-02-14 15:21:41 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 127051 [details])
&gt; Simon is still your man here. :)

Agreed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556733</commentid>
    <comment_count>4</comment_count>
      <attachid>127051</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-02-14 16:05:07 -0800</bug_when>
    <thetext>Comment on attachment 127051
Patch

Sure I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556747</commentid>
    <comment_count>5</comment_count>
      <attachid>127051</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-02-14 16:24:54 -0800</bug_when>
    <thetext>Comment on attachment 127051
Patch

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556799</commentid>
    <comment_count>6</comment_count>
      <attachid>127051</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 17:20:49 -0800</bug_when>
    <thetext>Comment on attachment 127051
Patch

Clearing flags on attachment: 127051

Committed r107760: &lt;http://trac.webkit.org/changeset/107760&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556800</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 17:20:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127051</attachid>
            <date>2012-02-14 14:52:13 -0800</date>
            <delta_ts>2012-02-14 17:20:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78630-20120214145211.patch</filename>
            <type>text/plain</type>
            <size>41047</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzczMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDEyLTAyLTE0ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBQcmVwYXJlIFJlbmRlckxh
eWVyQmFja2luZyBhbmQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yIGZvciBzdWJwaXhlbCBsYXlvdXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NjMwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gb3VyIHRy
YW5zaXRpb24gdG8gc3VicGl4ZWwgbGF5b3V0IGluIHRoZSByZW5kZXIgdHJlZSwgd2UgY29udGlu
dWUgdG8gcGFzcyBSZW5kZXJMYXllckJhY2tpbmcKKyAgICAgICAgYW5kIFJlbmRlckxheWVyQ29t
cG9zaXRvciBpbnRlZ2VyIChwaXhlbCkgc2l6ZXMgYW5kIHBvc2l0aW9ucy4gVGhpcyBwYXRjaCBt
b3ZlcyBuZWFybHkgYWxsCisgICAgICAgIG1ldGhvZHMgYW5kIG1lbWJlcnMgb24gdGhlc2UgdHdv
IGNsYXNzZXMgYmFjayB0byBpbnRlZ2VycywgYW5kIGFwcGxpZXMgcGl4ZWwgc25hcHBpbmcgbG9n
aWMgdG8KKyAgICAgICAgTGF5b3V0VW5pdHMgcHVsbGVkIGluLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJveC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwaXhlbFNuYXBwZWRMYXlvdXRP
dmVyZmxvd1JlY3QpOiBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgZ2V0dGluZyBwaXhlbAorICAg
ICAgICBzbmFwcGVkIG92ZXJmbG93IGJvdW5kcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb21wb3NpdGVkQm91bmRzKTogU3dpdGNoIHRvIGlu
dGVnZXJzIGFuZCBwaXhlbCBzbmFwcGluZyB0aGUKKyAgICAgICAgY2xpcHBpbmcgYm91bmRzLgor
ICAgICAgICAoV2ViQ29yZTo6Y2xpcEJveCk6IFJldHVybnMgYSBwaXhlbCBzbmFwcGVkIHJlY3Qu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5
ZXJHZW9tZXRyeSk6IFVzaW5nIHBpeGVsU25hcHBlZExheWVyQ29vcmRzLiBSZW1vdmluZworICAg
ICAgICBwaXhlbFNuYXBwZWRJbnRSZWN0IGNhbGxzIHRvIGNsaXBCb3ggc2luY2UgdGhpcyBpcyBu
b3cgYW4gSW50UmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29t
cHV0ZVRyYW5zZm9ybU9yaWdpbik6IFN3aXRjaGluZyB0byBvcGVyYXRlIG9uIGEgcGl4ZWwgc25h
cHBlZCByZWN0LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wdXRl
UGVyc3BlY3RpdmVPcmlnaW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6Y29udGVudE9mZnNldEluQ29tcG9zdGluZ0xheWVyKTogUmV0dXJucyBhIHNpemUg
YmFzZWQgb24gbV9jb21wb3NpdGluZ0JvdW5kcywKKyAgICAgICAgd2hpY2ggaXMgbm93IGFuIElu
dFNpemUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmNvbnRlbnRzQm94
KTogU3dpdGNoaW5nIHRvIHVzZSBwaXhlbCBzbmFwcGVkIHZhbHVlcyBmcm9tIHRoZSByZW5kZXIg
dHJlZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNO
ZWVkRGlzcGxheUluUmVjdCk6IFRoaXMgbm93IHRha2VzIGluIGFuZCBvdXRwdXRzIGludGVnZXJz
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcik6
IFVzZXMgYSBwaXhlbCBzbmFwcGVkIHJlY3QgZm9yIHRoZSBkaXJ0eSByZWN0LgorICAgICAgICAo
V2ViQ29yZTo6cGFpbnRTY3JvbGxiYXIpOiBTY3JvbGxiYXJzIGFyZSBXaWRnZXRzICYgcGFpbnRl
ZCBuYXRpdmVseSwgc28gdGhleSBzaG91bGQgdXNlIGludGVnZXJzLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRlbnRzKTogV2Ugbm93IHByb3Blcmx5IHRh
a2UgaW4gYW4gaW50ZWdlciBjbGlwIHJlY3QsIGFzIGl0J3MKKyAgICAgICAgdXNlZCBmb3IgdGhl
IHNjcm9sbGJhcnMuIAorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFy
dEFuaW1hdGlvbik6IFVzaW5nIHBpeGVsIHNuYXBwZWQgdmFsdWVzIGZvciBhbmltYXRpb25zIGFu
ZCB0cmFuc2l0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c3Rh
cnRUcmFuc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tp
bmc6OmNvbXBvc2l0ZWRCb3VuZHMpOiBDb21wb3NpdGVkIGJvdW5kcyBhcmUgbm93IHByb3Blcmx5
IHN0b3JlZCBhcyBpbnRlZ2Vycy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2lu
Zzo6c2V0Q29tcG9zaXRlZEJvdW5kcyk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuaDoKKyAgICAgICAgKFJlbmRlckxheWVyQmFja2luZyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNhbGN1bGF0ZUNvbXBvc2l0ZWRCb3VuZHMpOiBDb21w
b3NpdGVkIGJvdW5kcyBhcmUgcGl4ZWwgc25hcHBlZCwgYnV0CisgICAgICAgIHdlIHVzZSBMYXlv
dXRVbml0cyB1cCB1bnRpbCB3ZSBzbmFwIGFuZCByZXR1cm4uCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OmFkZFRvT3ZlcmxhcE1hcCk6IE92ZXJsYXAgbWFwcGluZyB1
c2VzIG91ciBpbnRlZ2VyIHBvc2l0aW9ucy4gU3dpdGNoaW5nCisgICAgICAgIGl0IGJhY2sgdG8g
b3BlcmF0aW5nIG9uIHRoZW0uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpvdmVybGFwc0NvbXBvc2l0ZWRMYXllcnMpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0
aW5nUmVxdWlyZW1lbnRzKTogVXNpbmcgaW50ZWdlcnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OmZyYW1lVmlld0RpZENoYW5nZUxvY2F0aW9uKTogRnJhbWVWaWV3
cyBhcmUgb24gaW50ZWdlciBib3VuZHMuIFdlIG5vdworICAgICAgICBwcm9wZXJseSB1c2UgdGhl
c2UgYXMgaW50ZWdlcnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OmZyYW1lVmlld0RpZFNjcm9sbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpyZWN1cnNpdmVSZXBhaW50TGF5ZXJSZWN0KTogU3dpdGNoaW5nIHRvIHVz
ZSBpbnRlZ2VycyBhbmQKKyAgICAgICAgcGl4ZWxTbmFwcGVkTGF5ZXJDb29yZHMuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcGFpbnRDb21wb3NpdGVkTGF5ZXJz
QWJzb2x1dGVSZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnVwZGF0ZVJvb3RMYXllclBvc2l0aW9uKTogVXNpbmcgaW50ZWdlciBwb3NpdGlvbnMs
IHdoaWNoIGFyZSB3aGF0CisgICAgICAgIHRoZSBhcGlzIHVzZWQgYWxyZWFkeSByZXR1cm5lZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3Np
dGluZ0ZvclBsdWdpbik6IFVzaW5nIHBpeGVsIHNuYXBwZWQgdmFsdWVzLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJhbWUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnBhaW50U2Nyb2xsYmFyKTogU2Nyb2xsYmFycyBz
aG91bGQgYWx3YXlzIHVzZSBpbnRlZ2Vycy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
Q29tcG9zaXRvcjo6cGFpbnRDb250ZW50cyk6IFN3aXRjaGluZyB0byB1c2UgYW4gaW50ZWdlciBj
bGlwIHJlY3QuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmVuc3Vy
ZVJvb3RMYXllcik6IFVzaW5nIHZhbHVlcyBmcm9tIG5ldyBwaXhlbFNuYXBwZWRMYXlvdXRPdmVy
Zmxvd1JlY3QKKyAgICAgICAgbWV0aG9kIG9uIFJlbmRlckJveCB0byBlbnN1cmUgd2UncmUgdXNp
bmcgdmFsdWVzIHRoYXQgYXJlIHBpeGVsIHNuYXBwZWQgdG8gdGhlIHByb3BlciBsb2NhdGlvbi4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGVzdHJveVJvb3RMYXll
cik6IFByb3Blcmx5IGNhbGxpbmcgc2Nyb2xsYmFyIGludmFsaWRhdGlvbiBtZXRob2RzCisgICAg
ICAgIHdpdGggaW50ZWdlcnMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5oOgorICAgICAgICAoUmVuZGVyTGF5ZXJDb21wb3NpdG9yKToKKwogMjAxMi0wMi0xNCAg
TGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIHVz
YWdlIG9mIExheW91dFVuaXRzIGluIFJlbmRlckxheWVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCShyZXZpc2lvbiAxMDc3MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsNyBAQCBwdWJs
aWM6CiAgICAgLy8gcmVzcGVjdGl2ZWx5IGFyZSBmbGlwcGVkIHdoZW4gY29tcGFyZWQgdG8gdGhl
aXIgcGh5c2ljYWwgY291bnRlcnBhcnRzLiAgRm9yIGV4YW1wbGUgbWluWCBpcyBvbiB0aGUgbGVm
dCBpbiB2ZXJ0aWNhbC1sciwKICAgICAvLyBidXQgaXQgaXMgb24gdGhlIHJpZ2h0IGluIHZlcnRp
Y2FsLXJsLgogICAgIExheW91dFJlY3QgbGF5b3V0T3ZlcmZsb3dSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPmxheW91dE92ZXJmbG93UmVjdCgpIDogY2xpZW50
Qm94UmVjdCgpOyB9CisgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRMYXlvdXRPdmVyZmxvd1JlY3Qo
KSBjb25zdCB7IHJldHVybiBwaXhlbFNuYXBwZWRJbnRSZWN0KGxheW91dE92ZXJmbG93UmVjdCgp
KTsgfQogICAgIExheW91dFVuaXQgbWluWUxheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4g
bV9vdmVyZmxvdz8gbV9vdmVyZmxvdy0+bWluWUxheW91dE92ZXJmbG93KCkgOiBib3JkZXJUb3Ao
KTsgfQogICAgIExheW91dFVuaXQgbWF4WUxheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4g
bV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1heFlMYXlvdXRPdmVyZmxvdygpIDogYm9yZGVyVG9w
KCkgKyBjbGllbnRIZWlnaHQoKTsgfQogICAgIExheW91dFVuaXQgbWluWExheW91dE92ZXJmbG93
KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1pblhMYXlvdXRPdmVy
ZmxvdygpIDogYm9yZGVyTGVmdCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gMTA3NzMxKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcwLDcgKzcwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHN0YXRpYyBib29s
IGhhc0JveERlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlKik7CiBzdGF0aWMgYm9vbCBoYXNC
b3hEZWNvcmF0aW9uc09yQmFja2dyb3VuZChjb25zdCBSZW5kZXJPYmplY3QqKTsKIHN0YXRpYyBi
b29sIGhhc0JveERlY29yYXRpb25zT3JCYWNrZ3JvdW5kSW1hZ2UoY29uc3QgUmVuZGVyU3R5bGUq
KTsKLXN0YXRpYyBMYXlvdXRSZWN0IGNsaXBCb3goUmVuZGVyQm94KiByZW5kZXJlcik7CitzdGF0
aWMgSW50UmVjdCBjbGlwQm94KFJlbmRlckJveCogcmVuZGVyZXIpOwogCiBzdGF0aWMgaW5saW5l
IGJvb2wgaXNBY2NlbGVyYXRlZENhbnZhcyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewpAQCAt
MjI5LDcgKzIyOSw3IEBAIHN0YXRpYyBib29sIGxheWVyT3JBbmNlc3RvcklzRnVsbFNjcmVlbigK
IAogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbXBvc2l0ZWRCb3VuZHMoKQogewot
ICAgIExheW91dFJlY3QgbGF5ZXJCb3VuZHMgPSBjb21wb3NpdG9yKCktPmNhbGN1bGF0ZUNvbXBv
c2l0ZWRCb3VuZHMobV9vd25pbmdMYXllciwgbV9vd25pbmdMYXllcik7CisgICAgSW50UmVjdCBs
YXllckJvdW5kcyA9IGNvbXBvc2l0b3IoKS0+Y2FsY3VsYXRlQ29tcG9zaXRlZEJvdW5kcyhtX293
bmluZ0xheWVyLCBtX293bmluZ0xheWVyKTsKIAogICAgIC8vIENsaXAgdG8gdGhlIHNpemUgb2Yg
dGhlIGRvY3VtZW50IG9yIGVuY2xvc2luZyBvdmVyZmxvdy1zY3JvbGwgbGF5ZXIuCiAgICAgLy8g
SWYgdGhpcyBvciBhbiBhbmNlc3RvciBpcyB0cmFuc2Zvcm1lZCwgd2UgY2FuJ3QgY3VycmVudGx5
IGNvbXB1dGUgdGhlIGNvcnJlY3QgcmVjdCB0byBpbnRlcnNlY3Qgd2l0aC4KQEAgLTI1NCw3ICsy
NTQsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29tcG9zaXRlCiAgICAgICAg
IG1fb3duaW5nTGF5ZXItPmNvbnZlcnRUb0xheWVyQ29vcmRzKHJvb3RMYXllciwgZGVsdGEpOwog
ICAgICAgICBjbGlwcGluZ0JvdW5kcy5tb3ZlKC1kZWx0YS54KCksIC1kZWx0YS55KCkpOwogCi0g
ICAgICAgIGxheWVyQm91bmRzLmludGVyc2VjdChjbGlwcGluZ0JvdW5kcyk7CisgICAgICAgIGxh
eWVyQm91bmRzLmludGVyc2VjdChwaXhlbFNuYXBwZWRJbnRSZWN0KGNsaXBwaW5nQm91bmRzKSk7
CiAgICAgfQogICAgIAogICAgIC8vIElmIHRoZSBlbGVtZW50IGhhcyBhIHRyYW5zZm9ybS1vcmln
aW4gdGhhdCBoYXMgZml4ZWQgbGVuZ3RocywgYW5kIHRoZSByZW5kZXJlciBoYXMgemVybyBzaXpl
LApAQCAtMzcxLDcgKzM3MSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFw
aGljc0wKICAgICByZXR1cm4gbGF5ZXJDb25maWdDaGFuZ2VkOwogfQogCi1zdGF0aWMgTGF5b3V0
UmVjdCBjbGlwQm94KFJlbmRlckJveCogcmVuZGVyZXIpCitzdGF0aWMgSW50UmVjdCBjbGlwQm94
KFJlbmRlckJveCogcmVuZGVyZXIpCiB7CiAgICAgTGF5b3V0UmVjdCByZXN1bHQgPSBQYWludElu
Zm86OmluZmluaXRlUmVjdCgpOwogICAgIGlmIChyZW5kZXJlci0+aGFzT3ZlcmZsb3dDbGlwKCkp
CkBAIC0zODAsNyArMzgwLDcgQEAgc3RhdGljIExheW91dFJlY3QgY2xpcEJveChSZW5kZXJCb3gq
IHJlbgogICAgIGlmIChyZW5kZXJlci0+aGFzQ2xpcCgpKQogICAgICAgICByZXN1bHQuaW50ZXJz
ZWN0KHJlbmRlcmVyLT5jbGlwUmVjdChMYXlvdXRQb2ludCgpLCAwKSk7IC8vIEZJWE1FOiBJbmNv
cnJlY3QgZm9yIENTUyByZWdpb25zLgogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4g
cGl4ZWxTbmFwcGVkSW50UmVjdChyZXN1bHQpOwogfQogCiB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKQEAgLTQyNiwxNCArNDI2LDE0IEBAIHZv
aWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0wKIAogICAgIEludFJlY3QgcmVs
YXRpdmVDb21wb3NpdGluZ0JvdW5kcyhsb2NhbENvbXBvc2l0aW5nQm91bmRzKTsKICAgICBJbnRQ
b2ludCBkZWx0YTsKLSAgICBtX293bmluZ0xheWVyLT5jb252ZXJ0VG9MYXllckNvb3Jkcyhjb21w
QW5jZXN0b3IsIGRlbHRhKTsKKyAgICBtX293bmluZ0xheWVyLT5jb252ZXJ0VG9QaXhlbFNuYXBw
ZWRMYXllckNvb3Jkcyhjb21wQW5jZXN0b3IsIGRlbHRhKTsKICAgICByZWxhdGl2ZUNvbXBvc2l0
aW5nQm91bmRzLm1vdmVCeShkZWx0YSk7CiAKLSAgICBMYXlvdXRQb2ludCBncmFwaGljc0xheWVy
UGFyZW50TG9jYXRpb247CisgICAgSW50UG9pbnQgZ3JhcGhpY3NMYXllclBhcmVudExvY2F0aW9u
OwogICAgIGlmIChjb21wQW5jZXN0b3IgJiYgY29tcEFuY2VzdG9yLT5iYWNraW5nKCktPmhhc0Ns
aXBwaW5nTGF5ZXIoKSkgewogICAgICAgICAvLyBJZiB0aGUgY29tcG9zaXRpbmcgYW5jZXN0b3Ig
aGFzIGEgbGF5ZXIgdG8gY2xpcCBjaGlsZHJlbiwgd2UgcGFyZW50IGluIHRoYXQsIGFuZCB0aGVy
ZWZvcmUKICAgICAgICAgLy8gcG9zaXRpb24gcmVsYXRpdmUgdG8gaXQuCi0gICAgICAgIEludFJl
Y3QgY2xpcHBpbmdCb3ggPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGNsaXBCb3godG9SZW5kZXJCb3go
Y29tcEFuY2VzdG9yLT5yZW5kZXJlcigpKSkpOworICAgICAgICBJbnRSZWN0IGNsaXBwaW5nQm94
ID0gY2xpcEJveCh0b1JlbmRlckJveChjb21wQW5jZXN0b3ItPnJlbmRlcmVyKCkpKTsKICAgICAg
ICAgZ3JhcGhpY3NMYXllclBhcmVudExvY2F0aW9uID0gY2xpcHBpbmdCb3gubG9jYXRpb24oKTsK
ICAgICB9IGVsc2UgaWYgKGNvbXBBbmNlc3RvcikKICAgICAgICAgZ3JhcGhpY3NMYXllclBhcmVu
dExvY2F0aW9uID0gYW5jZXN0b3JDb21wb3NpdGluZ0JvdW5kcy5sb2NhdGlvbigpOwpAQCAtNDcy
LDEwICs0NzIsMTAgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTAog
ICAgIC8vIElmIHdlIGhhdmUgYSBsYXllciB0aGF0IGNsaXBzIGNoaWxkcmVuLCBwb3NpdGlvbiBp
dC4KICAgICBJbnRSZWN0IGNsaXBwaW5nQm94OwogICAgIGlmIChtX2NsaXBwaW5nTGF5ZXIpIHsK
LSAgICAgICAgY2xpcHBpbmdCb3ggPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGNsaXBCb3godG9SZW5k
ZXJCb3gocmVuZGVyZXIoKSkpKTsKKyAgICAgICAgY2xpcHBpbmdCb3ggPSBjbGlwQm94KHRvUmVu
ZGVyQm94KHJlbmRlcmVyKCkpKTsKICAgICAgICAgbV9jbGlwcGluZ0xheWVyLT5zZXRQb3NpdGlv
bihGbG9hdFBvaW50KCkgKyAoY2xpcHBpbmdCb3gubG9jYXRpb24oKSAtIGxvY2FsQ29tcG9zaXRp
bmdCb3VuZHMubG9jYXRpb24oKSkpOwogICAgICAgICBtX2NsaXBwaW5nTGF5ZXItPnNldFNpemUo
Y2xpcHBpbmdCb3guc2l6ZSgpKTsKLSAgICAgICAgbV9jbGlwcGluZ0xheWVyLT5zZXRPZmZzZXRG
cm9tUmVuZGVyZXIoY2xpcHBpbmdCb3gubG9jYXRpb24oKSAtIExheW91dFBvaW50KCkpOworICAg
ICAgICBtX2NsaXBwaW5nTGF5ZXItPnNldE9mZnNldEZyb21SZW5kZXJlcihjbGlwcGluZ0JveC5s
b2NhdGlvbigpIC0gSW50UG9pbnQoKSk7CiAgICAgfQogICAgIAogICAgIGlmIChtX21hc2tMYXll
cikgewpAQCAtNTQ4LDcgKzU0OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVH
cmFwaGljc0wKICAgICAgICAgcmVmbGVjdGlvbkJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+c2V0
UmVwbGljYXRlZExheWVyUG9zaXRpb24oRmxvYXRQb2ludCgpICsgKGxheWVyQm91bmRzLmxvY2F0
aW9uKCkgLSByZWZsZWN0aW9uTGF5ZXJCb3VuZHMubG9jYXRpb24oKSkpOwogICAgIH0KIAotICAg
IG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNSZWN0KHBpeGVsU25hcHBlZEludFJlY3QoY29u
dGVudHNCb3goKSkpOworICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNSZWN0KGNvbnRl
bnRzQm94KCkpOwogICAgIHVwZGF0ZURyYXdzQ29udGVudCgpOwogICAgIHVwZGF0ZUFmdGVyV2lk
Z2V0UmVzaXplKCk7CiB9CkBAIC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFj
a2luZzo6dXBkYXRlSW1hZ2VDb250CiAgICAgaW1hZ2UtPnN0YXJ0QW5pbWF0aW9uKCk7CiB9CiAK
LUZsb2F0UG9pbnQzRCBSZW5kZXJMYXllckJhY2tpbmc6OmNvbXB1dGVUcmFuc2Zvcm1PcmlnaW4o
Y29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyQm94KSBjb25zdAorRmxvYXRQb2ludDNEIFJlbmRlckxh
eWVyQmFja2luZzo6Y29tcHV0ZVRyYW5zZm9ybU9yaWdpbihjb25zdCBJbnRSZWN0JiBib3JkZXJC
b3gpIGNvbnN0CiB7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIoKS0+c3R5bGUo
KTsKIApAQCAtMTAxNCw3ICsxMDE0LDcgQEAgRmxvYXRQb2ludDNEIFJlbmRlckxheWVyQmFja2lu
Zzo6Y29tcHV0ZQogICAgIHJldHVybiBvcmlnaW47CiB9CiAKLUZsb2F0UG9pbnQgUmVuZGVyTGF5
ZXJCYWNraW5nOjpjb21wdXRlUGVyc3BlY3RpdmVPcmlnaW4oY29uc3QgTGF5b3V0UmVjdCYgYm9y
ZGVyQm94KSBjb25zdAorRmxvYXRQb2ludCBSZW5kZXJMYXllckJhY2tpbmc6OmNvbXB1dGVQZXJz
cGVjdGl2ZU9yaWdpbihjb25zdCBJbnRSZWN0JiBib3JkZXJCb3gpIGNvbnN0CiB7CiAgICAgUmVu
ZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIoKS0+c3R5bGUoKTsKIApAQCAtMTAyOSwyNiArMTAy
OSwyNiBAQCBGbG9hdFBvaW50IFJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVBlCiB9CiAKIC8v
IFJldHVybiB0aGUgb2Zmc2V0IGZyb20gdGhlIHRvcC1sZWZ0IG9mIHRoaXMgY29tcG9zaXRpbmcg
bGF5ZXIgYXQgd2hpY2ggdGhlIHJlbmRlcmVyJ3MgY29udGVudHMgYXJlIHBhaW50ZWQuCi1MYXlv
dXRTaXplIFJlbmRlckxheWVyQmFja2luZzo6Y29udGVudE9mZnNldEluQ29tcG9zdGluZ0xheWVy
KCkgY29uc3QKK0ludFNpemUgUmVuZGVyTGF5ZXJCYWNraW5nOjpjb250ZW50T2Zmc2V0SW5Db21w
b3N0aW5nTGF5ZXIoKSBjb25zdAogewotICAgIHJldHVybiBMYXlvdXRTaXplKC1tX2NvbXBvc2l0
ZWRCb3VuZHMueCgpLCAtbV9jb21wb3NpdGVkQm91bmRzLnkoKSk7CisgICAgcmV0dXJuIEludFNp
emUoLW1fY29tcG9zaXRlZEJvdW5kcy54KCksIC1tX2NvbXBvc2l0ZWRCb3VuZHMueSgpKTsKIH0K
IAotTGF5b3V0UmVjdCBSZW5kZXJMYXllckJhY2tpbmc6OmNvbnRlbnRzQm94KCkgY29uc3QKK0lu
dFJlY3QgUmVuZGVyTGF5ZXJCYWNraW5nOjpjb250ZW50c0JveCgpIGNvbnN0CiB7CiAgICAgaWYg
KCFyZW5kZXJlcigpLT5pc0JveCgpKQotICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOworICAg
ICAgICByZXR1cm4gSW50UmVjdCgpOwogCi0gICAgTGF5b3V0UmVjdCBjb250ZW50c1JlY3Q7Cisg
ICAgSW50UmVjdCBjb250ZW50c1JlY3Q7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGlmIChyZW5k
ZXJlcigpLT5pc1ZpZGVvKCkpIHsKICAgICAgICAgUmVuZGVyVmlkZW8qIHZpZGVvUmVuZGVyZXIg
PSB0b1JlbmRlclZpZGVvKHJlbmRlcmVyKCkpOwogICAgICAgICBjb250ZW50c1JlY3QgPSB2aWRl
b1JlbmRlcmVyLT52aWRlb0JveCgpOwogICAgIH0gZWxzZQogI2VuZGlmCi0gICAgICAgIGNvbnRl
bnRzUmVjdCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLT5jb250ZW50Qm94UmVjdCgpOworICAg
ICAgICBjb250ZW50c1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHRvUmVuZGVyQm94KHJlbmRl
cmVyKCkpLT5jb250ZW50Qm94UmVjdCgpKTsKIAotICAgIExheW91dFNpemUgY29udGVudE9mZnNl
dCA9IGNvbnRlbnRPZmZzZXRJbkNvbXBvc3RpbmdMYXllcigpOworICAgIEludFNpemUgY29udGVu
dE9mZnNldCA9IGNvbnRlbnRPZmZzZXRJbkNvbXBvc3RpbmdMYXllcigpOwogICAgIGNvbnRlbnRz
UmVjdC5tb3ZlKGNvbnRlbnRPZmZzZXQpOwogICAgIHJldHVybiBjb250ZW50c1JlY3Q7CiB9CkBA
IC0xMDc3LDI5ICsxMDc3LDI5IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRDb250ZW50
c05lZWQKIH0KIAogLy8gciBpcyBpbiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiB0aGUgbGF5ZXIn
cyByZW5kZXIgb2JqZWN0Ci12b2lkIFJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVk
RGlzcGxheUluUmVjdChjb25zdCBMYXlvdXRSZWN0JiByKQordm9pZCBSZW5kZXJMYXllckJhY2tp
bmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgSW50UmVjdCYgcikKIHsKICAg
ICBpZiAobV9ncmFwaGljc0xheWVyICYmIG1fZ3JhcGhpY3NMYXllci0+ZHJhd3NDb250ZW50KCkp
IHsKLSAgICAgICAgTGF5b3V0UmVjdCBsYXllckRpcnR5UmVjdCA9IHI7CisgICAgICAgIEludFJl
Y3QgbGF5ZXJEaXJ0eVJlY3QgPSByOwogICAgICAgICBsYXllckRpcnR5UmVjdC5tb3ZlKC1tX2dy
YXBoaWNzTGF5ZXItPm9mZnNldEZyb21SZW5kZXJlcigpKTsKICAgICAgICAgbV9ncmFwaGljc0xh
eWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QobGF5ZXJEaXJ0eVJlY3QpOwogICAgIH0KIAogICAg
IGlmIChtX2ZvcmVncm91bmRMYXllciAmJiBtX2ZvcmVncm91bmRMYXllci0+ZHJhd3NDb250ZW50
KCkpIHsKLSAgICAgICAgTGF5b3V0UmVjdCBsYXllckRpcnR5UmVjdCA9IHI7CisgICAgICAgIElu
dFJlY3QgbGF5ZXJEaXJ0eVJlY3QgPSByOwogICAgICAgICBsYXllckRpcnR5UmVjdC5tb3ZlKC1t
X2ZvcmVncm91bmRMYXllci0+b2Zmc2V0RnJvbVJlbmRlcmVyKCkpOwogICAgICAgICBtX2ZvcmVn
cm91bmRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGxheWVyRGlydHlSZWN0KTsKICAgICB9
CiAKICAgICBpZiAobV9tYXNrTGF5ZXIgJiYgbV9tYXNrTGF5ZXItPmRyYXdzQ29udGVudCgpKSB7
Ci0gICAgICAgIExheW91dFJlY3QgbGF5ZXJEaXJ0eVJlY3QgPSByOworICAgICAgICBJbnRSZWN0
IGxheWVyRGlydHlSZWN0ID0gcjsKICAgICAgICAgbGF5ZXJEaXJ0eVJlY3QubW92ZSgtbV9tYXNr
TGF5ZXItPm9mZnNldEZyb21SZW5kZXJlcigpKTsKICAgICAgICAgbV9tYXNrTGF5ZXItPnNldE5l
ZWRzRGlzcGxheUluUmVjdChsYXllckRpcnR5UmVjdCk7CiAgICAgfQogfQogCiB2b2lkIFJlbmRl
ckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRS
ZWN0JiBwYWludERpcnR5UmVjdCwgLy8gSW4gdGhlIGNvb3JkcyBvZiByb290TGF5ZXIuCisgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHBhaW50RGlydHlSZWN0LCAvLyBJbiB0aGUg
Y29vcmRzIG9mIHJvb3RMYXllci4KICAgICAgICAgICAgICAgICAgICAgUGFpbnRCZWhhdmlvciBw
YWludEJlaGF2aW9yLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSBwYWludGluZ1BoYXNlLAog
ICAgICAgICAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdCkKIHsKQEAgLTEx
MjQsMjggKzExMjQsMjggQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVy
KAogICAgIEFTU0VSVCghbV9vd25pbmdMYXllci0+bV91c2VkVHJhbnNwYXJlbmN5KTsKIH0KIAot
c3RhdGljIHZvaWQgcGFpbnRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgY2xpcCkKK3N0YXRpYyB2b2lkIHBh
aW50U2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGNsaXApCiB7CiAgICAgaWYgKCFzY3JvbGxiYXIpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGNvbnRleHQuc2F2ZSgpOwotICAgIGNvbnN0IExheW91dFJlY3QmIHNj
cm9sbGJhclJlY3QgPSBzY3JvbGxiYXItPmZyYW1lUmVjdCgpOworICAgIGNvbnN0IEludFJlY3Qm
IHNjcm9sbGJhclJlY3QgPSBzY3JvbGxiYXItPmZyYW1lUmVjdCgpOwogICAgIGNvbnRleHQudHJh
bnNsYXRlKC1zY3JvbGxiYXJSZWN0LngoKSwgLXNjcm9sbGJhclJlY3QueSgpKTsKLSAgICBMYXlv
dXRSZWN0IHRyYW5zZm9ybWVkQ2xpcCA9IGNsaXA7CisgICAgSW50UmVjdCB0cmFuc2Zvcm1lZENs
aXAgPSBjbGlwOwogICAgIHRyYW5zZm9ybWVkQ2xpcC5tb3ZlQnkoc2Nyb2xsYmFyUmVjdC5sb2Nh
dGlvbigpKTsKLSAgICBzY3JvbGxiYXItPnBhaW50KCZjb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRS
ZWN0KHRyYW5zZm9ybWVkQ2xpcCkpOworICAgIHNjcm9sbGJhci0+cGFpbnQoJmNvbnRleHQsIHRy
YW5zZm9ybWVkQ2xpcCk7CiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKIC8vIFVwLWNhbGwg
ZnJvbSBjb21wb3NpdGluZyBsYXllciBkcmF3aW5nIGNhbGxiYWNrLgotdm9pZCBSZW5kZXJMYXll
ckJhY2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXll
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSBw
YWludGluZ1BoYXNlLCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwKQordm9pZCBSZW5kZXJMYXllckJh
Y2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSBwYWlu
dGluZ1BoYXNlLCBjb25zdCBJbnRSZWN0JiBjbGlwKQogewogICAgIGlmIChncmFwaGljc0xheWVy
ID09IG1fZ3JhcGhpY3NMYXllci5nZXQoKSB8fCBncmFwaGljc0xheWVyID09IG1fZm9yZWdyb3Vu
ZExheWVyLmdldCgpIHx8IGdyYXBoaWNzTGF5ZXIgPT0gbV9tYXNrTGF5ZXIuZ2V0KCkpIHsKICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbFBhaW50KG1fb3duaW5nTGF5ZXItPnJlbmRlcmVyKCktPmZyYW1l
KCksIGNsaXApOwogCiAgICAgICAgIC8vIFRoZSBkaXJ0eVJlY3QgaXMgaW4gdGhlIGNvb3JkcyBv
ZiB0aGUgcGFpbnRpbmcgcm9vdC4KLSAgICAgICAgTGF5b3V0UmVjdCBkaXJ0eVJlY3QgPSBjb21w
b3NpdGVkQm91bmRzKCk7CisgICAgICAgIEludFJlY3QgZGlydHlSZWN0ID0gY29tcG9zaXRlZEJv
dW5kcygpOwogICAgICAgICBkaXJ0eVJlY3QuaW50ZXJzZWN0KGNsaXApOwogCiAgICAgICAgIC8v
IFdlIGhhdmUgdG8gdXNlIHRoZSBzYW1lIHJvb3QgYXMgZm9yIGhpdCB0ZXN0aW5nLCBiZWNhdXNl
IGJvdGggbWV0aG9kcyBjYW4gY29tcHV0ZSBhbmQgY2FjaGUgY2xpcFJlY3RzLgpAQCAtMTE1Nywx
MyArMTE1NywxMyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjCiAg
ICAgfSBlbHNlIGlmIChncmFwaGljc0xheWVyID09IGxheWVyRm9yVmVydGljYWxTY3JvbGxiYXIo
KSkgewogICAgICAgICBwYWludFNjcm9sbGJhcihtX293bmluZ0xheWVyLT52ZXJ0aWNhbFNjcm9s
bGJhcigpLCBjb250ZXh0LCBjbGlwKTsKICAgICB9IGVsc2UgaWYgKGdyYXBoaWNzTGF5ZXIgPT0g
bGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSkgewotICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBzY3Jv
bGxDb3JuZXJBbmRSZXNpemVyID0gbV9vd25pbmdMYXllci0+c2Nyb2xsQ29ybmVyQW5kUmVzaXpl
clJlY3QoKTsKKyAgICAgICAgY29uc3QgSW50UmVjdCYgc2Nyb2xsQ29ybmVyQW5kUmVzaXplciA9
IG1fb3duaW5nTGF5ZXItPnNjcm9sbENvcm5lckFuZFJlc2l6ZXJSZWN0KCk7CiAgICAgICAgIGNv
bnRleHQuc2F2ZSgpOwogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsQ29ybmVyQW5k
UmVzaXplci54KCksIC1zY3JvbGxDb3JuZXJBbmRSZXNpemVyLnkoKSk7Ci0gICAgICAgIExheW91
dFJlY3QgdHJhbnNmb3JtZWRDbGlwID0gY2xpcDsKLSAgICAgICAgdHJhbnNmb3JtZWRDbGlwLm1v
dmVCeShyb3VuZGVkSW50UG9pbnQoc2Nyb2xsQ29ybmVyQW5kUmVzaXplci5sb2NhdGlvbigpKSk7
Ci0gICAgICAgIG1fb3duaW5nTGF5ZXItPnBhaW50U2Nyb2xsQ29ybmVyKCZjb250ZXh0LCBMYXlv
dXRQb2ludCgpLCB0cmFuc2Zvcm1lZENsaXApOwotICAgICAgICBtX293bmluZ0xheWVyLT5wYWlu
dFJlc2l6ZXIoJmNvbnRleHQsIExheW91dFBvaW50KCksIHRyYW5zZm9ybWVkQ2xpcCk7CisgICAg
ICAgIEludFJlY3QgdHJhbnNmb3JtZWRDbGlwID0gY2xpcDsKKyAgICAgICAgdHJhbnNmb3JtZWRD
bGlwLm1vdmVCeShzY3JvbGxDb3JuZXJBbmRSZXNpemVyLmxvY2F0aW9uKCkpOworICAgICAgICBt
X293bmluZ0xheWVyLT5wYWludFNjcm9sbENvcm5lcigmY29udGV4dCwgSW50UG9pbnQoKSwgdHJh
bnNmb3JtZWRDbGlwKTsKKyAgICAgICAgbV9vd25pbmdMYXllci0+cGFpbnRSZXNpemVyKCZjb250
ZXh0LCBJbnRQb2ludCgpLCB0cmFuc2Zvcm1lZENsaXApOwogICAgICAgICBjb250ZXh0LnJlc3Rv
cmUoKTsKICAgICB9CiB9CkBAIC0xMjQzLDE4ICsxMjQzLDE4IEBAIGJvb2wgUmVuZGVyTGF5ZXJC
YWNraW5nOjpzdGFydEFuaW1hdGlvbigKICAgICBib29sIGRpZEFuaW1hdGVGaWx0ZXIgPSBmYWxz
ZTsKICNlbmRpZgogICAgIAotICAgIGlmIChoYXNUcmFuc2Zvcm0gJiYgbV9ncmFwaGljc0xheWVy
LT5hZGRBbmltYXRpb24odHJhbnNmb3JtVmVjdG9yLCB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+
Ym9yZGVyQm94UmVjdCgpLnNpemUoKSwgYW5pbSwga2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSwg
dGltZU9mZnNldCkpIHsKKyAgICBpZiAoaGFzVHJhbnNmb3JtICYmIG1fZ3JhcGhpY3NMYXllci0+
YWRkQW5pbWF0aW9uKHRyYW5zZm9ybVZlY3RvciwgcGl4ZWxTbmFwcGVkSW50UmVjdCh0b1JlbmRl
ckJveChyZW5kZXJlcigpKS0+Ym9yZGVyQm94UmVjdCgpKS5zaXplKCksIGFuaW0sIGtleWZyYW1l
cy5hbmltYXRpb25OYW1lKCksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgIGRpZEFuaW1hdGVUcmFu
c2Zvcm0gPSB0cnVlOwogICAgICAgICBjb21wb3NpdG9yKCktPmRpZFN0YXJ0QWNjZWxlcmF0ZWRB
bmltYXRpb24oQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwogICAgIH0KIAotICAgIGlmICho
YXNPcGFjaXR5ICYmIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKG9wYWNpdHlWZWN0b3Is
IExheW91dFNpemUoKSwgYW5pbSwga2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSwgdGltZU9mZnNl
dCkpIHsKKyAgICBpZiAoaGFzT3BhY2l0eSAmJiBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlv
bihvcGFjaXR5VmVjdG9yLCBJbnRTaXplKCksIGFuaW0sIGtleWZyYW1lcy5hbmltYXRpb25OYW1l
KCksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgIGRpZEFuaW1hdGVPcGFjaXR5ID0gdHJ1ZTsKICAg
ICAgICAgY29tcG9zaXRvcigpLT5kaWRTdGFydEFjY2VsZXJhdGVkQW5pbWF0aW9uKENTU1Byb3Bl
cnR5T3BhY2l0eSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIGlmICho
YXNGaWx0ZXIgJiYgbV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24oZmlsdGVyVmVjdG9yLCBM
YXlvdXRTaXplKCksIGFuaW0sIGtleWZyYW1lcy5hbmltYXRpb25OYW1lKCksIHRpbWVPZmZzZXQp
KSB7CisgICAgaWYgKGhhc0ZpbHRlciAmJiBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihm
aWx0ZXJWZWN0b3IsIEludFNpemUoKSwgYW5pbSwga2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSwg
dGltZU9mZnNldCkpIHsKICAgICAgICAgZGlkQW5pbWF0ZUZpbHRlciA9IHRydWU7CiAgICAgICAg
IGNvbXBvc2l0b3IoKS0+ZGlkU3RhcnRBY2NlbGVyYXRlZEFuaW1hdGlvbihDU1NQcm9wZXJ0eVdl
YmtpdEZpbHRlcik7CiAgICAgfQpAQCAtMTI5NCw3ICsxMjk0LDcgQEAgYm9vbCBSZW5kZXJMYXll
ckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbgogICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNl
cnQobmV3IEZsb2F0QW5pbWF0aW9uVmFsdWUoMCwgY29tcG9zaXRpbmdPcGFjaXR5KGZyb21TdHls
ZS0+b3BhY2l0eSgpKSkpOwogICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQobmV3IEZs
b2F0QW5pbWF0aW9uVmFsdWUoMSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHko
KSkpKTsKICAgICAgICAgICAgIC8vIFRoZSBib3hTaXplIHBhcmFtIGlzIG9ubHkgdXNlZCBmb3Ig
dHJhbnNmb3JtIGFuaW1hdGlvbnMgKHdoaWNoIGNhbiBvbmx5IHJ1biBvbiBSZW5kZXJCb3hlcyks
IHNvIHdlIHBhc3MgYW4gZW1wdHkgc2l6ZSBoZXJlLgotICAgICAgICAgICAgaWYgKG1fZ3JhcGhp
Y3NMYXllci0+YWRkQW5pbWF0aW9uKG9wYWNpdHlWZWN0b3IsIExheW91dFNpemUoKSwgb3BhY2l0
eUFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVk
UHJvcGVydHlPcGFjaXR5KSwgdGltZU9mZnNldCkpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBo
aWNzTGF5ZXItPmFkZEFuaW1hdGlvbihvcGFjaXR5VmVjdG9yLCBJbnRTaXplKCksIG9wYWNpdHlB
bmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFBy
b3BlcnR5T3BhY2l0eSksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5z
dXJlIHRoYXQgdGhlIGNvcnJlY3Qgb3BhY2l0eSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlv
biBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgb3BhY2l0eS4KICAgICAgICAgICAgICAgICB1cGRh
dGVMYXllck9wYWNpdHkodG9TdHlsZSk7CiAgICAgICAgICAgICAgICAgZGlkQW5pbWF0ZU9wYWNp
dHkgPSB0cnVlOwpAQCAtMTMwOCw3ICsxMzA4LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6
OnN0YXJ0VHJhbnNpdGlvbgogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgdHJhbnNmb3Jt
VmVjdG9yKEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwogICAgICAgICAgICAgdHJh
bnNmb3JtVmVjdG9yLmluc2VydChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMCwgJmZyb21T
dHlsZS0+dHJhbnNmb3JtKCkpKTsKICAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDEsICZ0b1N0eWxlLT50cmFuc2Zvcm0oKSkpOwot
ICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHRyYW5zZm9ybVZl
Y3RvciwgdG9SZW5kZXJCb3gocmVuZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKS5zaXplKCksIHRy
YW5zZm9ybUFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFu
aW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pLCB0aW1lT2Zmc2V0KSkgeworICAgICAgICAg
ICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHRyYW5zZm9ybVZlY3RvciwgcGl4
ZWxTbmFwcGVkSW50UmVjdCh0b1JlbmRlckJveChyZW5kZXJlcigpKS0+Ym9yZGVyQm94UmVjdCgp
KS5zaXplKCksIHRyYW5zZm9ybUFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JU
cmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pLCB0aW1lT2Zmc2V0KSkg
ewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IHRyYW5zZm9y
bSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwg
dHJhbnNmb3JtLgogICAgICAgICAgICAgICAgIHVwZGF0ZUxheWVyVHJhbnNmb3JtKHRvU3R5bGUp
OwogICAgICAgICAgICAgICAgIGRpZEFuaW1hdGVUcmFuc2Zvcm0gPSB0cnVlOwpAQCAtMTMyMyw3
ICsxMzIzLDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbgogICAg
ICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgZmlsdGVyVmVjdG9yKEFuaW1hdGVkUHJvcGVydHlX
ZWJraXRGaWx0ZXIpOwogICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChuZXcgRmlsdGVy
QW5pbWF0aW9uVmFsdWUoMCwgJmZyb21TdHlsZS0+ZmlsdGVyKCkpKTsKICAgICAgICAgICAgIGZp
bHRlclZlY3Rvci5pbnNlcnQobmV3IEZpbHRlckFuaW1hdGlvblZhbHVlKDEsICZ0b1N0eWxlLT5m
aWx0ZXIoKSkpOwotICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9u
KGZpbHRlclZlY3RvciwgTGF5b3V0U2l6ZSgpLCBmaWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjph
bmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5V2Via2l0RmlsdGVyKSwg
dGltZU9mZnNldCkpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1h
dGlvbihmaWx0ZXJWZWN0b3IsIEludFNpemUoKSwgZmlsdGVyQW5pbSwgR3JhcGhpY3NMYXllcjo6
YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEZpbHRlciks
IHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNv
cnJlY3QgZmlsdGVyIGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0
IHRoZSBmaW5hbCBmaWx0ZXIuCiAgICAgICAgICAgICAgICAgdXBkYXRlTGF5ZXJGaWx0ZXJzKHRv
U3R5bGUpOwogICAgICAgICAgICAgICAgIGRpZEFuaW1hdGVGaWx0ZXIgPSB0cnVlOwpAQCAtMTM4
NiwxMiArMTM4NiwxMiBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cmVzdW1lQW5pbWF0aW9u
CiAgICAgbV9ncmFwaGljc0xheWVyLT5yZXN1bWVBbmltYXRpb25zKCk7CiB9CiAKLUxheW91dFJl
Y3QgUmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wb3NpdGVkQm91bmRzKCkgY29uc3QKK0ludFJlY3Qg
UmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wb3NpdGVkQm91bmRzKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9jb21wb3NpdGVkQm91bmRzOwogfQogCi12b2lkIFJlbmRlckxheWVyQmFja2luZzo6c2V0
Q29tcG9zaXRlZEJvdW5kcyhjb25zdCBMYXlvdXRSZWN0JiBib3VuZHMpCit2b2lkIFJlbmRlckxh
eWVyQmFja2luZzo6c2V0Q29tcG9zaXRlZEJvdW5kcyhjb25zdCBJbnRSZWN0JiBib3VuZHMpCiB7
CiAgICAgbV9jb21wb3NpdGVkQm91bmRzID0gYm91bmRzOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCShyZXZpc2lvbiAxMDc3MzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDb250ZW50c05l
ZWREaXNwbGF5KCk7CiAgICAgLy8gciBpcyBpbiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiB0aGUg
bGF5ZXIncyByZW5kZXIgb2JqZWN0Ci0gICAgdm9pZCBzZXRDb250ZW50c05lZWREaXNwbGF5SW5S
ZWN0KGNvbnN0IExheW91dFJlY3QmKTsKKyAgICB2b2lkIHNldENvbnRlbnRzTmVlZERpc3BsYXlJ
blJlY3QoY29uc3QgSW50UmVjdCYpOwogCiAgICAgLy8gTm90aWZpY2F0aW9uIGZyb20gdGhlIHJl
bmRlcmVyIHRoYXQgaXRzIGNvbnRlbnQgY2hhbmdlZC4KICAgICB2b2lkIGNvbnRlbnRDaGFuZ2Vk
KFJlbmRlckxheWVyOjpDb250ZW50Q2hhbmdlVHlwZSk7CkBAIC0xMTYsOCArMTE2LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUgPSAwKTsKICAgICB2
b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsKIAotICAgIExheW91dFJlY3QgY29tcG9zaXRlZEJvdW5k
cygpIGNvbnN0OwotICAgIHZvaWQgc2V0Q29tcG9zaXRlZEJvdW5kcyhjb25zdCBMYXlvdXRSZWN0
Jik7CisgICAgSW50UmVjdCBjb21wb3NpdGVkQm91bmRzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRD
b21wb3NpdGVkQm91bmRzKGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0
ZWRCb3VuZHMoKTsKICAgICAKICAgICB2b2lkIHVwZGF0ZUFmdGVyV2lkZ2V0UmVzaXplKCk7CkBA
IC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRp
b25TdGFydGVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBkb3VibGUgc3RhcnRUaW1lKTsKICAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1JlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFw
aGljc0NvbnRleHQmLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgTGF5b3V0UmVj
dCYgY2xpcCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NM
YXllciosIEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25z
dCBJbnRSZWN0JiBjbGlwKTsKIAogICAgIHZpcnR1YWwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Io
KSBjb25zdDsKICAgICB2aXJ0dWFsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0OwpAQCAt
MTM2LDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvd0RlYnVnQm9yZGVy
cyhjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHNob3dSZXBh
aW50Q291bnRlcihjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3Q7CiAKLSAgICBMYXlvdXRSZWN0
IGNvbnRlbnRzQm94KCkgY29uc3Q7CisgICAgSW50UmVjdCBjb250ZW50c0JveCgpIGNvbnN0Owog
ICAgIAogICAgIC8vIEZvciBpbmZvcm1hdGl2ZSBwdXJwb3NlcyBvbmx5LgogICAgIENvbXBvc2l0
aW5nTGF5ZXJUeXBlIGNvbXBvc2l0aW5nTGF5ZXJUeXBlKCkgY29uc3Q7CkBAIC0xNjksMTEgKzE2
OSwxMSBAQCBwcml2YXRlOgogCiAgICAgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UgcGFpbnRp
bmdQaGFzZUZvclByaW1hcnlMYXllcigpIGNvbnN0OwogICAgIAotICAgIExheW91dFNpemUgY29u
dGVudE9mZnNldEluQ29tcG9zdGluZ0xheWVyKCkgY29uc3Q7CisgICAgSW50U2l6ZSBjb250ZW50
T2Zmc2V0SW5Db21wb3N0aW5nTGF5ZXIoKSBjb25zdDsKICAgICAvLyBSZXN1bHQgaXMgdHJhbnNm
b3JtIG9yaWdpbiBpbiBwaXhlbHMuCi0gICAgRmxvYXRQb2ludDNEIGNvbXB1dGVUcmFuc2Zvcm1P
cmlnaW4oY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyQm94KSBjb25zdDsKKyAgICBGbG9hdFBvaW50
M0QgY29tcHV0ZVRyYW5zZm9ybU9yaWdpbihjb25zdCBJbnRSZWN0JiBib3JkZXJCb3gpIGNvbnN0
OwogICAgIC8vIFJlc3VsdCBpcyBwZXJzcGVjdGl2ZSBvcmlnaW4gaW4gcGl4ZWxzLgotICAgIEZs
b2F0UG9pbnQgY29tcHV0ZVBlcnNwZWN0aXZlT3JpZ2luKGNvbnN0IExheW91dFJlY3QmIGJvcmRl
ckJveCkgY29uc3Q7CisgICAgRmxvYXRQb2ludCBjb21wdXRlUGVyc3BlY3RpdmVPcmlnaW4oY29u
c3QgSW50UmVjdCYgYm9yZGVyQm94KSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlTGF5ZXJPcGFj
aXR5KGNvbnN0IFJlbmRlclN0eWxlKik7CiAgICAgdm9pZCB1cGRhdGVMYXllclRyYW5zZm9ybShj
b25zdCBSZW5kZXJTdHlsZSopOwpAQCAtMjAwLDcgKzIwMCw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBjb250YWluc05vbkVtcHR5UmVuZGVyZXJzKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNWaXNpYmxl
Tm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50TGF5ZXJzKCkgY29uc3Q7CiAgICAgCi0gICAgdm9pZCBw
YWludEludG9MYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgUGFpbnRCZWhhdmlvciwgR3JhcGhpY3NM
YXllclBhaW50aW5nUGhhc2UsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290KTsKKyAgICB2b2lk
IHBhaW50SW50b0xheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmIHBhaW50RGlydHlSZWN0LCBQYWludEJlaGF2aW9yLCBHcmFwaGljc0xh
eWVyUGFpbnRpbmdQaGFzZSwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3QpOwogCiAgICAgc3Rh
dGljIGludCBncmFwaGljc0xheWVyVG9DU1NQcm9wZXJ0eShBbmltYXRlZFByb3BlcnR5SUQpOwog
ICAgIHN0YXRpYyBBbmltYXRlZFByb3BlcnR5SUQgY3NzVG9HcmFwaGljc0xheWVyUHJvcGVydHko
aW50KTsKQEAgLTIyMSw3ICsyMjEsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxHcmFwaGljc0xh
eWVyPiBtX2xheWVyRm9yVmVydGljYWxTY3JvbGxiYXI7CiAgICAgT3duUHRyPEdyYXBoaWNzTGF5
ZXI+IG1fbGF5ZXJGb3JTY3JvbGxDb3JuZXI7CiAKLSAgICBMYXlvdXRSZWN0IG1fY29tcG9zaXRl
ZEJvdW5kczsKKyAgICBJbnRSZWN0IG1fY29tcG9zaXRlZEJvdW5kczsKIAogICAgIGJvb2wgbV9h
cnRpZmljaWFsbHlJbmZsYXRlZEJvdW5kczsgICAgICAvLyBib3VuZHMgaGFkIHRvIGJlIG1hZGUg
bm9uLXplcm8gdG8gbWFrZSB0cmFuc2Zvcm0tb3JpZ2luIHdvcmsKICAgICBib29sIG1faXNNYWlu
RnJhbWVSZW5kZXJWaWV3TGF5ZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2aXNpb24gMTA3NzMxKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1NiwxMCArNDU2LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
ZXBhaW50T25Db20KIAogLy8gVGhlIGJvdW5kcyBvZiB0aGUgR3JhcGhpY3NMYXllciBjcmVhdGVk
IGZvciBhIGNvbXBvc2l0aW5nIGxheWVyIGlzIHRoZSB1bmlvbiBvZiB0aGUgYm91bmRzIG9mIGFs
bCB0aGUgZGVzY2VuZGFudAogLy8gUmVuZGVyTGF5ZXJzIHRoYXQgYXJlIHJlbmRlcmVkIGJ5IHRo
ZSBjb21wb3NpdGVkIFJlbmRlckxheWVyLgotTGF5b3V0UmVjdCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmNhbGN1bGF0ZUNvbXBvc2l0ZWRCb3VuZHMoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBj
b25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllcikKK0ludFJlY3QgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpjYWxjdWxhdGVDb21wb3NpdGVkQm91bmRzKGNvbnN0IFJlbmRlckxheWVyKiBsYXll
ciwgY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIpCiB7CiAgICAgaWYgKCFjYW5CZUNv
bXBvc2l0ZWQobGF5ZXIpKQotICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOworICAgICAgICBy
ZXR1cm4gSW50UmVjdCgpOwogCiAgICAgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QgPSBsYXll
ci0+bG9jYWxCb3VuZGluZ0JveCgpOwogICAgIGlmIChsYXllci0+cmVuZGVyZXIoKS0+aXNSb290
KCkpIHsKQEAgLTQ2Nyw4ICs0NjcsOCBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6Y2FsY3VsCiAgICAgICAgIC8vIHRoZW4gaXQgaGFzIHRvIGJlIGJpZyBlbm91Z2ggdG8gY292
ZXIgdGhlIHZpZXdwb3J0IGluIG9yZGVyIHRvIGRpc3BsYXkgdGhlIGJhY2tncm91bmQuIFRoaXMg
aXMgYWtpbgogICAgICAgICAvLyB0byB0aGUgY29kZSBpbiBSZW5kZXJCb3g6OnBhaW50Um9vdEJv
eEZpbGxMYXllcnMoKS4KICAgICAgICAgaWYgKG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCkpIHsK
LSAgICAgICAgICAgIGludCBydyA9IG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCktPmNvbnRlbnRz
V2lkdGgoKTsKLSAgICAgICAgICAgIGludCByaCA9IG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCkt
PmNvbnRlbnRzSGVpZ2h0KCk7CisgICAgICAgICAgICBMYXlvdXRVbml0IHJ3ID0gbV9yZW5kZXJW
aWV3LT5mcmFtZVZpZXcoKS0+Y29udGVudHNXaWR0aCgpOworICAgICAgICAgICAgTGF5b3V0VW5p
dCByaCA9IG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCktPmNvbnRlbnRzSGVpZ2h0KCk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGJvdW5kaW5nQm94UmVjdC5zZXRXaWR0aChtYXgoYm91bmRp
bmdCb3hSZWN0LndpZHRoKCksIHJ3IC0gYm91bmRpbmdCb3hSZWN0LngoKSkpOwogICAgICAgICAg
ICAgYm91bmRpbmdCb3hSZWN0LnNldEhlaWdodChtYXgoYm91bmRpbmdCb3hSZWN0LmhlaWdodCgp
LCByaCAtIGJvdW5kaW5nQm94UmVjdC55KCkpKTsKQEAgLTU4Miw3ICs1ODIsNyBAQCBSZW5kZXJM
YXllciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjplbmNsCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphZGRUb092ZXJsYXBNYXAoT3ZlcmxhcE1hcCYgb3Zl
cmxhcE1hcCwgUmVuZGVyTGF5ZXIqIGxheWVyLCBMYXlvdXRSZWN0JiBsYXllckJvdW5kcywgYm9v
bCYgYm91bmRzQ29tcHV0ZWQpCit2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6YWRkVG9PdmVy
bGFwTWFwKE92ZXJsYXBNYXAmIG92ZXJsYXBNYXAsIFJlbmRlckxheWVyKiBsYXllciwgSW50UmVj
dCYgbGF5ZXJCb3VuZHMsIGJvb2wmIGJvdW5kc0NvbXB1dGVkKQogewogICAgIGlmIChsYXllci0+
aXNSb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTkxLDExICs1OTEsMTEgQEAgdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmFkZFRvT3ZlcmxhcAogICAgICAgICBsYXllckJvdW5k
cyA9IGxheWVyLT5yZW5kZXJlcigpLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChsYXll
ci0+bG9jYWxCb3VuZGluZ0JveCgpKSkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKICAgICAgICAg
Ly8gRW1wdHkgcmVjdHMgbmV2ZXIgaW50ZXJzZWN0LCBidXQgd2UgbmVlZCB0aGVtIHRvIGZvciB0
aGUgcHVycG9zZXMgb2Ygb3ZlcmxhcCB0ZXN0aW5nLgogICAgICAgICBpZiAobGF5ZXJCb3VuZHMu
aXNFbXB0eSgpKQotICAgICAgICAgICAgbGF5ZXJCb3VuZHMuc2V0U2l6ZShMYXlvdXRTaXplKDEs
IDEpKTsKKyAgICAgICAgICAgIGxheWVyQm91bmRzLnNldFNpemUoSW50U2l6ZSgxLCAxKSk7CiAg
ICAgICAgIGJvdW5kc0NvbXB1dGVkID0gdHJ1ZTsKICAgICB9CiAKLSAgICBMYXlvdXRSZWN0IGNs
aXBSZWN0ID0gbGF5ZXItPmJhY2tncm91bmRDbGlwUmVjdChyb290UmVuZGVyTGF5ZXIoKSwgMCwg
dHJ1ZSkucmVjdCgpOyAvLyBGSVhNRTogSW5jb3JyZWN0IGZvciBDU1MgcmVnaW9ucy4KKyAgICBJ
bnRSZWN0IGNsaXBSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChsYXllci0+YmFja2dyb3VuZENs
aXBSZWN0KHJvb3RSZW5kZXJMYXllcigpLCAwLCB0cnVlKS5yZWN0KCkpOyAvLyBGSVhNRTogSW5j
b3JyZWN0IGZvciBDU1MgcmVnaW9ucy4KICAgICBjbGlwUmVjdC5zY2FsZShwYWdlU2NhbGVGYWN0
b3IoKSk7CiAgICAgY2xpcFJlY3QuaW50ZXJzZWN0KGxheWVyQm91bmRzKTsKICAgICBvdmVybGFw
TWFwLmFkZChsYXllciwgY2xpcFJlY3QpOwpAQCAtNjA2LDcgKzYwNiw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjphZGRUb092ZXJsYXAKICAgICBpZiAoIWNhbkJlQ29tcG9zaXRlZChs
YXllcikgfHwgb3ZlcmxhcE1hcC5jb250YWlucyhsYXllcikpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIExheW91dFJlY3QgYm91bmRzOworICAgIEludFJlY3QgYm91bmRzOwogICAgIGJvb2wgaGF2
ZUNvbXB1dGVkQm91bmRzID0gZmFsc2U7CiAgICAgYWRkVG9PdmVybGFwTWFwKG92ZXJsYXBNYXAs
IGxheWVyLCBib3VuZHMsIGhhdmVDb21wdXRlZEJvdW5kcyk7CiAKQEAgLTY0MCwxMSArNjQwLDEx
IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphZGRUb092ZXJsYXAKICAgICB9CiB9CiAK
LWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpvdmVybGFwc0NvbXBvc2l0ZWRMYXllcnMoT3Zl
cmxhcE1hcCYgb3ZlcmxhcE1hcCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJCb3VuZHMpCitib29s
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6b3ZlcmxhcHNDb21wb3NpdGVkTGF5ZXJzKE92ZXJsYXBN
YXAmIG92ZXJsYXBNYXAsIGNvbnN0IEludFJlY3QmIGxheWVyQm91bmRzKQogewogICAgIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6T3ZlcmxhcE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gb3Zlcmxh
cE1hcC5lbmQoKTsKICAgICBmb3IgKFJlbmRlckxheWVyQ29tcG9zaXRvcjo6T3ZlcmxhcE1hcDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBvdmVybGFwTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBib3VuZHMgPSBpdC0+c2Vjb25kOworICAgICAg
ICBjb25zdCBJbnRSZWN0JiBib3VuZHMgPSBpdC0+c2Vjb25kOwogICAgICAgICBpZiAobGF5ZXJC
b3VuZHMuaW50ZXJzZWN0cyhib3VuZHMpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtNjczLDEzICs2NzMsMTMgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1
dGVDb21wbwogICAgIGJvb2wgbXVzdE92ZXJsYXBDb21wb3NpdGVkTGF5ZXJzID0gY29tcG9zaXRp
bmdTdGF0ZS5tX3N1YnRyZWVJc0NvbXBvc2l0aW5nOwogCiAgICAgYm9vbCBoYXZlQ29tcHV0ZWRC
b3VuZHMgPSBmYWxzZTsKLSAgICBMYXlvdXRSZWN0IGFic0JvdW5kczsKKyAgICBJbnRSZWN0IGFi
c0JvdW5kczsKICAgICBpZiAob3ZlcmxhcE1hcCAmJiAhb3ZlcmxhcE1hcC0+aXNFbXB0eSgpKSB7
CiAgICAgICAgIC8vIElmIHdlJ3JlIHRlc3RpbmcgZm9yIG92ZXJsYXAsIHdlIG9ubHkgbmVlZCB0
byBjb21wb3NpdGUgaWYgd2Ugb3ZlcmxhcCBzb21ldGhpbmcgdGhhdCBpcyBhbHJlYWR5IGNvbXBv
c2l0ZWQuCiAgICAgICAgIGFic0JvdW5kcyA9IGxheWVyLT5yZW5kZXJlcigpLT5sb2NhbFRvQWJz
b2x1dGVRdWFkKEZsb2F0UmVjdChsYXllci0+bG9jYWxCb3VuZGluZ0JveCgpKSkuZW5jbG9zaW5n
Qm91bmRpbmdCb3goKTsKICAgICAgICAgLy8gRW1wdHkgcmVjdHMgbmV2ZXIgaW50ZXJzZWN0LCBi
dXQgd2UgbmVlZCB0aGVtIHRvIGZvciB0aGUgcHVycG9zZXMgb2Ygb3ZlcmxhcCB0ZXN0aW5nLgog
ICAgICAgICBpZiAoYWJzQm91bmRzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFic0JvdW5kcy5z
ZXRTaXplKExheW91dFNpemUoMSwgMSkpOworICAgICAgICAgICAgYWJzQm91bmRzLnNldFNpemUo
SW50U2l6ZSgxLCAxKSk7CiAgICAgICAgIGhhdmVDb21wdXRlZEJvdW5kcyA9IHRydWU7CiAgICAg
ICAgIG11c3RPdmVybGFwQ29tcG9zaXRlZExheWVycyA9IG92ZXJsYXBzQ29tcG9zaXRlZExheWVy
cygqb3ZlcmxhcE1hcCwgYWJzQm91bmRzKTsKICAgICB9CkBAIC05NTMsNyArOTUzLDcgQEAgdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYnVpbGRDb21wbwogICAgIH0KIH0KIAotdm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OmZyYW1lVmlld0RpZENoYW5nZUxvY2F0aW9uKGNvbnN0IExh
eW91dFBvaW50JiBjb250ZW50c09mZnNldCkKK3ZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpm
cmFtZVZpZXdEaWRDaGFuZ2VMb2NhdGlvbihjb25zdCBJbnRQb2ludCYgY29udGVudHNPZmZzZXQp
CiB7CiAgICAgaWYgKG1fb3ZlcmZsb3dDb250cm9sc0hvc3RMYXllcikKICAgICAgICAgbV9vdmVy
Zmxvd0NvbnRyb2xzSG9zdExheWVyLT5zZXRQb3NpdGlvbihjb250ZW50c09mZnNldCk7CkBAIC05
NzgsNyArOTc4LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZyYW1lVmlld0RpZAog
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZyYW1lVmlld0RpZFNjcm9sbCgpCiB7CiAgICAg
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3JlbmRlclZpZXctPmZyYW1lVmlldygpOwotICAgIExh
eW91dFBvaW50IHNjcm9sbFBvc2l0aW9uID0gZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlvbigpOwor
ICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uID0gZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlvbigp
OwogCiAgICAgaWYgKFJlbmRlckxheWVyQmFja2luZyogYmFja2luZyA9IHJvb3RSZW5kZXJMYXll
cigpLT5iYWNraW5nKCkpCiAgICAgICAgIGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+dmlzaWJs
ZVJlY3RDaGFuZ2VkKCk7CkBAIC0xMTM3LDEyICsxMTM3LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjp1cGRhdGVDb21wb3MKIH0KIAogCi12b2lkIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6cmVwYWludENvbXBvc2l0ZWRMYXllcnNBYnNvbHV0ZVJlY3QoY29uc3QgTGF5b3V0UmVjdCYg
YWJzUmVjdCkKK3ZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXBhaW50Q29tcG9zaXRlZExh
eWVyc0Fic29sdXRlUmVjdChjb25zdCBJbnRSZWN0JiBhYnNSZWN0KQogewogICAgIHJlY3Vyc2l2
ZVJlcGFpbnRMYXllclJlY3Qocm9vdFJlbmRlckxheWVyKCksIGFic1JlY3QpOwogfQogCi12b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVjdXJzaXZlUmVwYWludExheWVyUmVjdChSZW5kZXJM
YXllciogbGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCit2b2lkIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6cmVjdXJzaXZlUmVwYWludExheWVyUmVjdChSZW5kZXJMYXllciogbGF5ZXIsIGNv
bnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbWV0aG9kIGRvZXMgbm90
IHdvcmsgY29ycmVjdGx5IHdpdGggdHJhbnNmb3Jtcy4KICAgICBpZiAobGF5ZXItPmlzQ29tcG9z
aXRlZCgpKQpAQCAtMTE1Myw4ICsxMTUzLDggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnJlY3Vyc2l2ZVJlcAogICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gbmVnWk9yZGVyTGlz
dC0+c2l6ZSgpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsg
KytpKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0gbmVnWk9yZGVy
TGlzdC0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBjaGlsZFJlY3QocmVjdCk7
Ci0gICAgICAgICAgICAgICAgY3VyTGF5ZXItPmNvbnZlcnRUb0xheWVyQ29vcmRzKGxheWVyLCBj
aGlsZFJlY3QpOworICAgICAgICAgICAgICAgIEludFJlY3QgY2hpbGRSZWN0KHJlY3QpOworICAg
ICAgICAgICAgICAgIGN1ckxheWVyLT5jb252ZXJ0VG9QaXhlbFNuYXBwZWRMYXllckNvb3Jkcyhs
YXllciwgY2hpbGRSZWN0KTsKICAgICAgICAgICAgICAgICByZWN1cnNpdmVSZXBhaW50TGF5ZXJS
ZWN0KGN1ckxheWVyLCBjaGlsZFJlY3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0x
MTYzLDggKzExNjMsOCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVjdXJzaXZlUmVw
CiAgICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7CiAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKICAgICAg
ICAgICAgICAgICBSZW5kZXJMYXllciogY3VyTGF5ZXIgPSBwb3NaT3JkZXJMaXN0LT5hdChpKTsK
LSAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IGNoaWxkUmVjdChyZWN0KTsKLSAgICAgICAgICAg
ICAgICBjdXJMYXllci0+Y29udmVydFRvTGF5ZXJDb29yZHMobGF5ZXIsIGNoaWxkUmVjdCk7Cisg
ICAgICAgICAgICAgICAgSW50UmVjdCBjaGlsZFJlY3QocmVjdCk7CisgICAgICAgICAgICAgICAg
Y3VyTGF5ZXItPmNvbnZlcnRUb1BpeGVsU25hcHBlZExheWVyQ29vcmRzKGxheWVyLCBjaGlsZFJl
Y3QpOwogICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZVJlcGFpbnRMYXllclJlY3QoY3VyTGF5ZXIs
IGNoaWxkUmVjdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTExNzMsOCArMTE3Myw4
IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWN1cnNpdmVSZXAKICAgICAgICAgc2l6
ZV90IGxpc3RTaXplID0gbm9ybWFsRmxvd0xpc3QtPnNpemUoKTsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBSZW5kZXJMYXllciog
Y3VyTGF5ZXIgPSBub3JtYWxGbG93TGlzdC0+YXQoaSk7Ci0gICAgICAgICAgICBMYXlvdXRSZWN0
IGNoaWxkUmVjdChyZWN0KTsKLSAgICAgICAgICAgIGN1ckxheWVyLT5jb252ZXJ0VG9MYXllckNv
b3JkcyhsYXllciwgY2hpbGRSZWN0KTsKKyAgICAgICAgICAgIEludFJlY3QgY2hpbGRSZWN0KHJl
Y3QpOworICAgICAgICAgICAgY3VyTGF5ZXItPmNvbnZlcnRUb1BpeGVsU25hcHBlZExheWVyQ29v
cmRzKGxheWVyLCBjaGlsZFJlY3QpOwogICAgICAgICAgICAgcmVjdXJzaXZlUmVwYWludExheWVy
UmVjdChjdXJMYXllciwgY2hpbGRSZWN0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTEyMzQsNyAr
MTIzNCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjbGVhckJhY2tpbmcKIHZvaWQg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVSb290TGF5ZXJQb3NpdGlvbigpCiB7CiAgICAg
aWYgKG1fcm9vdENvbnRlbnRMYXllcikgewotICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBkb2N1
bWVudFJlY3QgPSBtX3JlbmRlclZpZXctPmRvY3VtZW50UmVjdCgpOworICAgICAgICBjb25zdCBJ
bnRSZWN0JiBkb2N1bWVudFJlY3QgPSBtX3JlbmRlclZpZXctPmRvY3VtZW50UmVjdCgpOwogICAg
ICAgICBtX3Jvb3RDb250ZW50TGF5ZXItPnNldFNpemUoZG9jdW1lbnRSZWN0LnNpemUoKSk7CiAg
ICAgICAgIG1fcm9vdENvbnRlbnRMYXllci0+c2V0UG9zaXRpb24oZG9jdW1lbnRSZWN0LmxvY2F0
aW9uKCkpOwogICAgIH0KQEAgLTE0NzQsNyArMTQ3NCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXF1aXJlc0NvbXAKICAgICAgICAgcmV0dXJuIHBsdWdpblJlbmRlcmVyLT5oYXNM
YXllcigpICYmIHBsdWdpblJlbmRlcmVyLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsKIAogICAg
IC8vIERvbid0IGdvIGludG8gY29tcG9zaXRpbmcgbW9kZSBpZiBoZWlnaHQgb3Igd2lkdGggYXJl
IHplcm8sIG9yIHNpemUgaXMgMXgxLgotICAgIExheW91dFJlY3QgY29udGVudEJveCA9IHBsdWdp
blJlbmRlcmVyLT5jb250ZW50Qm94UmVjdCgpOworICAgIEludFJlY3QgY29udGVudEJveCA9IHBp
eGVsU25hcHBlZEludFJlY3QocGx1Z2luUmVuZGVyZXItPmNvbnRlbnRCb3hSZWN0KCkpOwogICAg
IHJldHVybiBjb250ZW50Qm94LmhlaWdodCgpICogY29udGVudEJveC53aWR0aCgpID4gMTsKIH0K
IApAQCAtMTQ5OSw3ICsxNDk5LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVp
cmVzQ29tcAogICAgICAgICByZXR1cm4gZnJhbWVSZW5kZXJlci0+aGFzTGF5ZXIoKSAmJiBmcmFt
ZVJlbmRlcmVyLT5sYXllcigpLT5pc0NvbXBvc2l0ZWQoKTsKICAgICAKICAgICAvLyBEb24ndCBn
byBpbnRvIGNvbXBvc2l0aW5nIG1vZGUgaWYgaGVpZ2h0IG9yIHdpZHRoIGFyZSB6ZXJvLgotICAg
IExheW91dFJlY3QgY29udGVudEJveCA9IGZyYW1lUmVuZGVyZXItPmNvbnRlbnRCb3hSZWN0KCk7
CisgICAgSW50UmVjdCBjb250ZW50Qm94ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChmcmFtZVJlbmRl
cmVyLT5jb250ZW50Qm94UmVjdCgpKTsKICAgICByZXR1cm4gY29udGVudEJveC5oZWlnaHQoKSAq
IGNvbnRlbnRCb3gud2lkdGgoKSA+IDA7CiB9CiAKQEAgLTE2MDgsMzIgKzE2MDgsMzIgQEAgYm9v
bCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzU2NybwogICAgICAgICB8fCBhdHRhY2ht
ZW50ID09IFJvb3RMYXllckF0dGFjaGVkVmlhRW5jbG9zaW5nRnJhbWU7IC8vIGEgY29tcG9zaXRl
ZCBmcmFtZSBvbiBNYWMKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRTY3JvbGxiYXIoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYg
Y2xpcCkKK3N0YXRpYyB2b2lkIHBhaW50U2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNsaXApCiB7CiAgICAgaWYg
KCFzY3JvbGxiYXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnRleHQuc2F2ZSgpOwotICAg
IGNvbnN0IExheW91dFJlY3QmIHNjcm9sbGJhclJlY3QgPSBzY3JvbGxiYXItPmZyYW1lUmVjdCgp
OworICAgIGNvbnN0IEludFJlY3QmIHNjcm9sbGJhclJlY3QgPSBzY3JvbGxiYXItPmZyYW1lUmVj
dCgpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKC1zY3JvbGxiYXJSZWN0LngoKSwgLXNjcm9sbGJh
clJlY3QueSgpKTsKLSAgICBMYXlvdXRSZWN0IHRyYW5zZm9ybWVkQ2xpcCA9IGNsaXA7CisgICAg
SW50UmVjdCB0cmFuc2Zvcm1lZENsaXAgPSBjbGlwOwogICAgIHRyYW5zZm9ybWVkQ2xpcC5tb3Zl
Qnkoc2Nyb2xsYmFyUmVjdC5sb2NhdGlvbigpKTsKICAgICBzY3JvbGxiYXItPnBhaW50KCZjb250
ZXh0LCB0cmFuc2Zvcm1lZENsaXApOwogICAgIGNvbnRleHQucmVzdG9yZSgpOwogfQogCi12b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVy
KiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNzTGF5ZXJQ
YWludGluZ1BoYXNlLCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwKQordm9pZCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXll
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwg
Y29uc3QgSW50UmVjdCYgY2xpcCkKIHsKICAgICBpZiAoZ3JhcGhpY3NMYXllciA9PSBsYXllckZv
ckhvcml6b250YWxTY3JvbGxiYXIoKSkKICAgICAgICAgcGFpbnRTY3JvbGxiYXIobV9yZW5kZXJW
aWV3LT5mcmFtZVZpZXcoKS0+aG9yaXpvbnRhbFNjcm9sbGJhcigpLCBjb250ZXh0LCBjbGlwKTsK
ICAgICBlbHNlIGlmIChncmFwaGljc0xheWVyID09IGxheWVyRm9yVmVydGljYWxTY3JvbGxiYXIo
KSkKICAgICAgICAgcGFpbnRTY3JvbGxiYXIobV9yZW5kZXJWaWV3LT5mcmFtZVZpZXcoKS0+dmVy
dGljYWxTY3JvbGxiYXIoKSwgY29udGV4dCwgY2xpcCk7CiAgICAgZWxzZSBpZiAoZ3JhcGhpY3NM
YXllciA9PSBsYXllckZvclNjcm9sbENvcm5lcigpKSB7Ci0gICAgICAgIGNvbnN0IExheW91dFJl
Y3QmIHNjcm9sbENvcm5lciA9IG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCktPnNjcm9sbENvcm5l
clJlY3QoKTsKKyAgICAgICAgY29uc3QgSW50UmVjdCYgc2Nyb2xsQ29ybmVyID0gbV9yZW5kZXJW
aWV3LT5mcmFtZVZpZXcoKS0+c2Nyb2xsQ29ybmVyUmVjdCgpOwogICAgICAgICBjb250ZXh0LnNh
dmUoKTsKICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLXNjcm9sbENvcm5lci54KCksIC1zY3Jv
bGxDb3JuZXIueSgpKTsKLSAgICAgICAgTGF5b3V0UmVjdCB0cmFuc2Zvcm1lZENsaXAgPSBjbGlw
OwotICAgICAgICB0cmFuc2Zvcm1lZENsaXAubW92ZUJ5KHJvdW5kZWRJbnRQb2ludChzY3JvbGxD
b3JuZXIubG9jYXRpb24oKSkpOworICAgICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkQ2xpcCA9IGNs
aXA7CisgICAgICAgIHRyYW5zZm9ybWVkQ2xpcC5tb3ZlQnkoc2Nyb2xsQ29ybmVyLmxvY2F0aW9u
KCkpOwogICAgICAgICBtX3JlbmRlclZpZXctPmZyYW1lVmlldygpLT5wYWludFNjcm9sbENvcm5l
cigmY29udGV4dCwgdHJhbnNmb3JtZWRDbGlwKTsKICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7
CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pICYmIEVOQUJMRShSVUJCRVJfQkFORElORykKQEAgLTE4
OTgsNyArMTg5OCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjplbnN1cmVSb290TGEK
ICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1fcm9vdENvbnRlbnRMYXllci0+c2V0TmFtZSgiY29u
dGVudCByb290Iik7CiAjZW5kaWYKLSAgICAgICAgbV9yb290Q29udGVudExheWVyLT5zZXRTaXpl
KEZsb2F0U2l6ZShtX3JlbmRlclZpZXctPm1heFhMYXlvdXRPdmVyZmxvdygpLCBtX3JlbmRlclZp
ZXctPm1heFlMYXlvdXRPdmVyZmxvdygpKSk7CisgICAgICAgIEludFJlY3Qgb3ZlcmZsb3dSZWN0
ID0gbV9yZW5kZXJWaWV3LT5waXhlbFNuYXBwZWRMYXlvdXRPdmVyZmxvd1JlY3QoKTsKKyAgICAg
ICAgbV9yb290Q29udGVudExheWVyLT5zZXRTaXplKEZsb2F0U2l6ZShvdmVyZmxvd1JlY3QubWF4
WCgpLCBvdmVyZmxvd1JlY3QubWF4WSgpKSk7CiAgICAgICAgIG1fcm9vdENvbnRlbnRMYXllci0+
c2V0UG9zaXRpb24oRmxvYXRQb2ludCgpKTsKIAogICAgICAgICAvLyBOZWVkIHRvIGNsaXAgdG8g
cHJldmVudCB0cmFuc2Zvcm1lZCBjb250ZW50IHNob3dpbmcgb3V0c2lkZSB0aGlzIGZyYW1lCkBA
IC0xOTc0LDE0ICsxOTc1LDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkZXN0cm95
Um9vdEwKICAgICAgICAgbV9sYXllckZvckhvcml6b250YWxTY3JvbGxiYXItPnJlbW92ZUZyb21Q
YXJlbnQoKTsKICAgICAgICAgbV9sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIgPSBudWxscHRy
OwogICAgICAgICBpZiAoU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyID0gbV9yZW5kZXJW
aWV3LT5mcmFtZVZpZXcoKS0+dmVydGljYWxTY3JvbGxiYXIoKSkKLSAgICAgICAgICAgIG1fcmVu
ZGVyVmlldy0+ZnJhbWVWaWV3KCktPmludmFsaWRhdGVTY3JvbGxiYXIoaG9yaXpvbnRhbFNjcm9s
bGJhciwgTGF5b3V0UmVjdChMYXlvdXRQb2ludCgwLCAwKSwgaG9yaXpvbnRhbFNjcm9sbGJhci0+
ZnJhbWVSZWN0KCkuc2l6ZSgpKSk7CisgICAgICAgICAgICBtX3JlbmRlclZpZXctPmZyYW1lVmll
dygpLT5pbnZhbGlkYXRlU2Nyb2xsYmFyKGhvcml6b250YWxTY3JvbGxiYXIsIEludFJlY3QoSW50
UG9pbnQoMCwgMCksIGhvcml6b250YWxTY3JvbGxiYXItPmZyYW1lUmVjdCgpLnNpemUoKSkpOwog
ICAgIH0KIAogICAgIGlmIChtX2xheWVyRm9yVmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAgICAg
bV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyLT5yZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgICAg
IG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhciA9IG51bGxwdHI7CiAgICAgICAgIGlmIChTY3Jv
bGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyID0gbV9yZW5kZXJWaWV3LT5mcmFtZVZpZXcoKS0+dmVy
dGljYWxTY3JvbGxiYXIoKSkKLSAgICAgICAgICAgIG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCkt
PmludmFsaWRhdGVTY3JvbGxiYXIodmVydGljYWxTY3JvbGxiYXIsIExheW91dFJlY3QoTGF5b3V0
UG9pbnQoMCwgMCksIHZlcnRpY2FsU2Nyb2xsYmFyLT5mcmFtZVJlY3QoKS5zaXplKCkpKTsKKyAg
ICAgICAgICAgIG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCktPmludmFsaWRhdGVTY3JvbGxiYXIo
dmVydGljYWxTY3JvbGxiYXIsIEludFJlY3QoSW50UG9pbnQoMCwgMCksIHZlcnRpY2FsU2Nyb2xs
YmFyLT5mcmFtZVJlY3QoKS5zaXplKCkpKTsKICAgICB9CiAKICAgICBpZiAobV9sYXllckZvclNj
cm9sbENvcm5lcikgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaAkocmV2aXNpb24gMTA3NzMxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEs
NyArMTIxLDcgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNDb250ZW50c0NvbXBvc2l0aW5nTGF5
ZXIoY29uc3QgUmVuZGVyTGF5ZXIqKSBjb25zdDsKICAgICAvLyBSZXR1cm4gdGhlIGJvdW5kaW5n
IGJveCByZXF1aXJlZCBmb3IgY29tcG9zaXRpbmcgbGF5ZXIgYW5kIGl0cyBjaGlsZGVybiwgcmVs
YXRpdmUgdG8gYW5jZXN0b3JMYXllci4KICAgICAvLyBJZiBsYXllckJvdW5kaW5nQm94IGlzIG5v
dCAwLCBvbiByZXR1cm4gaXQgY29udGFpbnMgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGlzIGxheWVy
IG9ubHkuCi0gICAgTGF5b3V0UmVjdCBjYWxjdWxhdGVDb21wb3NpdGVkQm91bmRzKGNvbnN0IFJl
bmRlckxheWVyKiwgY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIpOworICAgIEludFJl
Y3QgY2FsY3VsYXRlQ29tcG9zaXRlZEJvdW5kcyhjb25zdCBSZW5kZXJMYXllciosIGNvbnN0IFJl
bmRlckxheWVyKiBhbmNlc3RvckxheWVyKTsKIAogICAgIC8vIFJlcGFpbnQgdGhlIGFwcHJvcHJp
YXRlIGxheWVycyB3aGVuIHRoZSBnaXZlbiBSZW5kZXJMYXllciBzdGFydHMgb3Igc3RvcHMgYmVp
bmcgY29tcG9zaXRlZC4KICAgICB2b2lkIHJlcGFpbnRPbkNvbXBvc2l0aW5nQ2hhbmdlKFJlbmRl
ckxheWVyKik7CkBAIC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgIFJlbmRlckxheWVyKiBl
bmNsb3NpbmdOb25TdGFja2luZ0NsaXBwaW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVy
KSBjb25zdDsKIAogICAgIC8vIFJlcGFpbnQgcGFydHMgb2YgYWxsIGNvbXBvc2l0ZWQgbGF5ZXJz
IHRoYXQgaW50ZXJzZWN0IHRoZSBnaXZlbiBhYnNvbHV0ZSByZWN0YW5nbGUuCi0gICAgdm9pZCBy
ZXBhaW50Q29tcG9zaXRlZExheWVyc0Fic29sdXRlUmVjdChjb25zdCBMYXlvdXRSZWN0Jik7Cisg
ICAgdm9pZCByZXBhaW50Q29tcG9zaXRlZExheWVyc0Fic29sdXRlUmVjdChjb25zdCBJbnRSZWN0
Jik7CiAKICAgICBSZW5kZXJMYXllciogcm9vdFJlbmRlckxheWVyKCkgY29uc3Q7CiAgICAgR3Jh
cGhpY3NMYXllciogcm9vdEdyYXBoaWNzTGF5ZXIoKSBjb25zdDsKQEAgLTE4Myw3ICsxODMsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGFyZW50RnJhbWVDb250ZW50TGF5ZXJzKFJlbmRl
clBhcnQqKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgZ2VvbWV0cnkgb2YgdGhlIGxheWVycyB1c2Vk
IGZvciBjbGlwcGluZyBhbmQgc2Nyb2xsaW5nIGluIGZyYW1lcy4KLSAgICB2b2lkIGZyYW1lVmll
d0RpZENoYW5nZUxvY2F0aW9uKGNvbnN0IExheW91dFBvaW50JiBjb250ZW50c09mZnNldCk7Cisg
ICAgdm9pZCBmcmFtZVZpZXdEaWRDaGFuZ2VMb2NhdGlvbihjb25zdCBJbnRQb2ludCYgY29udGVu
dHNPZmZzZXQpOwogICAgIHZvaWQgZnJhbWVWaWV3RGlkQ2hhbmdlU2l6ZSgpOwogICAgIHZvaWQg
ZnJhbWVWaWV3RGlkU2Nyb2xsKCk7CiAKQEAgLTIxNSw3ICsyMTUsNyBAQCBwcml2YXRlOgogICAg
IC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQgSW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQg
bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBHcmFwaGljc0xheWVyKiwgZG91YmxlKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1JlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIq
KSB7IHNjaGVkdWxlTGF5ZXJGbHVzaCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzTGF5ZXJQ
YWludGluZ1BoYXNlLCBjb25zdCBMYXlvdXRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNz
TGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wg
c2hvd0RlYnVnQm9yZGVycyhjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3Q7CiAgICAgdmlydHVh
bCBib29sIHNob3dSZXBhaW50Q291bnRlcihjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3Q7CkBA
IC0yMzMsMTIgKzIzMywxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJCYWNraW5nRm9yTGF5
ZXJJbmNsdWRpbmdEZXNjZW5kYW50cyhSZW5kZXJMYXllciopOwogCiAgICAgLy8gUmVwYWludCB0
aGUgZ2l2ZW4gcmVjdCAod2hpY2ggaXMgbGF5ZXIncyBjb29yZHMpLCBhbmQgcmVnaW9ucyBvZiBj
aGlsZCBsYXllcnMgdGhhdCBpbnRlcnNlY3QgdGhhdCByZWN0LgotICAgIHZvaWQgcmVjdXJzaXZl
UmVwYWludExheWVyUmVjdChSZW5kZXJMYXllciosIGNvbnN0IExheW91dFJlY3QmKTsKKyAgICB2
b2lkIHJlY3Vyc2l2ZVJlcGFpbnRMYXllclJlY3QoUmVuZGVyTGF5ZXIqLCBjb25zdCBJbnRSZWN0
Jik7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVuZGVyTGF5ZXIqLCBMYXlvdXRSZWN0PiBPdmVy
bGFwTWFwOwotICAgIHZvaWQgYWRkVG9PdmVybGFwTWFwKE92ZXJsYXBNYXAmLCBSZW5kZXJMYXll
ciosIExheW91dFJlY3QmIGxheWVyQm91bmRzLCBib29sJiBib3VuZHNDb21wdXRlZCk7CisgICAg
dHlwZWRlZiBIYXNoTWFwPFJlbmRlckxheWVyKiwgSW50UmVjdD4gT3ZlcmxhcE1hcDsKKyAgICB2
b2lkIGFkZFRvT3ZlcmxhcE1hcChPdmVybGFwTWFwJiwgUmVuZGVyTGF5ZXIqLCBJbnRSZWN0JiBs
YXllckJvdW5kcywgYm9vbCYgYm91bmRzQ29tcHV0ZWQpOwogICAgIHZvaWQgYWRkVG9PdmVybGFw
TWFwUmVjdXJzaXZlKE92ZXJsYXBNYXAmLCBSZW5kZXJMYXllciopOwotICAgIHN0YXRpYyBib29s
IG92ZXJsYXBzQ29tcG9zaXRlZExheWVycyhPdmVybGFwTWFwJiwgY29uc3QgTGF5b3V0UmVjdCYg
bGF5ZXJCb3VuZHMpOworICAgIHN0YXRpYyBib29sIG92ZXJsYXBzQ29tcG9zaXRlZExheWVycyhP
dmVybGFwTWFwJiwgY29uc3QgSW50UmVjdCYgbGF5ZXJCb3VuZHMpOwogCiAgICAgdm9pZCB1cGRh
dGVDb21wb3NpdGluZ0xheWVyc1RpbWVyRmlyZWQoVGltZXI8UmVuZGVyTGF5ZXJDb21wb3NpdG9y
PiopOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>