<?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>121263</bug_id>
          
          <creation_ts>2013-09-12 14:49:22 -0700</creation_ts>
          <short_desc>Move LineLayoutState class to LineLayoutState.h</short_desc>
          <delta_ts>2013-09-13 10:58:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>
          
          <blocked>121261</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zoltan Horvath">zoltan</reporter>
          <assigned_to name="Zoltan Horvath">zoltan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>928504</commentid>
    <comment_count>0</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2013-09-12 14:49:22 -0700</bug_when>
    <thetext>Move LineLayoutState class to LineLayoutState.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928512</commentid>
    <comment_count>1</comment_count>
      <attachid>211481</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2013-09-12 14:57:19 -0700</bug_when>
    <thetext>Created attachment 211481
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928547</commentid>
    <comment_count>2</comment_count>
      <attachid>211481</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-09-12 16:05:54 -0700</bug_when>
    <thetext>Comment on attachment 211481
proposed patch

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

&gt; Source/WebCore/rendering/LineLayoutState.h:125
&gt; +    Vector&lt;RenderBlock::FloatWithRect&gt; m_floats;
&gt; +    FloatingObject* m_lastFloat;
&gt; +    RootInlineBox* m_endLine;
&gt; +    LineInfo m_lineInfo;
&gt; +    unsigned m_floatIndex;
&gt; +    LayoutUnit m_endLineLogicalTop;
&gt; +    bool m_endLineMatched;
&gt; +    bool m_checkForFloatsFromLastLine;
&gt; +
&gt; +    bool m_isFullLayout;
&gt; +
&gt; +    // FIXME: Should this be a range object instead of two ints?
&gt; +    LayoutUnit&amp; m_repaintLogicalTop;
&gt; +    LayoutUnit&amp; m_repaintLogicalBottom;
&gt; +
&gt; +    LayoutUnit m_adjustedLogicalLineTop;
&gt; +
&gt; +    bool m_usesRepaintBounds;
&gt; +
&gt; +    RenderFlowThread* m_flowThread;

While we&apos;re at it, can we reorder these member variables to match the ordering of member functions?
Also, can we make bools packed with bit fields?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928882</commentid>
    <comment_count>3</comment_count>
      <attachid>211559</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2013-09-13 09:40:15 -0700</bug_when>
    <thetext>Created attachment 211559
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928893</commentid>
    <comment_count>4</comment_count>
      <attachid>211559</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-13 10:17:54 -0700</bug_when>
    <thetext>Comment on attachment 211559
proposed patch

Rejecting attachment 211559 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 211559, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.

Full output: http://webkit-queues.appspot.com/results/1906042</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928896</commentid>
    <comment_count>5</comment_count>
      <attachid>211561</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2013-09-13 10:25:04 -0700</bug_when>
    <thetext>Created attachment 211561
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928917</commentid>
    <comment_count>6</comment_count>
      <attachid>211561</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-13 10:58:14 -0700</bug_when>
    <thetext>Comment on attachment 211561
proposed patch

Clearing flags on attachment: 211561

Committed r155710: &lt;http://trac.webkit.org/changeset/155710&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928918</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-13 10:58:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211481</attachid>
            <date>2013-09-12 14:57:19 -0700</date>
            <delta_ts>2013-09-13 09:40:15 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>linelayoutstate.patch</filename>
            <type>text/plain</type>
            <size>15696</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZTcxZGY2Li44ZmQ0NzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMTMtMDktMTIgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgTW92ZSBMaW5lTGF5b3V0U3RhdGUgY2xhc3MgdG8gTGluZUxheW91dFN0YXRlLmgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTI2MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcmVuZGVyaW5nL0xpbmVMYXlvdXRT
dGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRTdGF0ZTo6TGluZUxh
eW91dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRTdGF0ZTo6bWFya0ZvckZ1
bGxMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjppc0Z1bGxMYXlv
dXQpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjp1c2VzUmVwYWludEJvdW5k
cyk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6OnNldFJlcGFpbnRSYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6OnVwZGF0ZVJlcGFpbnRSYW5nZUZy
b21Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjplbmRMaW5lTWF0Y2hl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6OnNldEVuZExpbmVNYXRjaGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRTdGF0ZTo6Y2hlY2tGb3JGbG9hdHNGcm9t
TGFzdExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjpzZXRDaGVja0Zv
ckZsb2F0c0Zyb21MYXN0TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6
OmxpbmVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRTdGF0ZTo6ZW5kTGluZUxv
Z2ljYWxUb3ApOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjpzZXRFbmRMaW5l
TG9naWNhbFRvcCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6OmVuZExpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjpzZXRFbmRMaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRTdGF0ZTo6bGFzdEZsb2F0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxpbmVMYXlvdXRTdGF0ZTo6c2V0TGFzdEZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6Okxp
bmVMYXlvdXRTdGF0ZTo6ZmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRTdGF0
ZTo6ZmxvYXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6OnNldEZs
b2F0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjphZGp1c3RlZExv
Z2ljYWxMaW5lVG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRTdGF0ZTo6c2V0QWRq
dXN0ZWRMb2dpY2FsTGluZVRvcCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6
OmZsb3dUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjpzZXRGbG93
VGhyZWFkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoK
KwogMjAxMy0wOS0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBRdCBhbmQgV2luZG93cyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpp
bmRleCBjOWVhMzUzLi5iYTRmYWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTQzNjAsNiArNDM2MCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGF5b3V0UmVwYWludGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVJbmZv
LmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lTGF5b3V0U3RhdGUuaCBcCiAJU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGluZVdpZHRoLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL092ZXJsYXBU
ZXN0UmVxdWVzdENsaWVudC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDExNDQ3YmMuLjU4NjhkOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQpAQCAtMjQwNCw2ICsyNDA0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVy
aW5nL0xheW91dFN0YXRlLmggXAogICAgIHJlbmRlcmluZy9MaW5lSW5mby5oIFwKICAgICByZW5k
ZXJpbmcvTGluZVdpZHRoLmggXAorICAgIHJlbmRlcmluZy9MaW5lTGF5b3V0U3RhdGUuaCBcCiAg
ICAgcmVuZGVyaW5nL0xvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMuaCBcCiAgICAgcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oIFwKICAgICByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEZlbmNlZC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qCmluZGV4IDA1MzkxZWYuLjJkZjZiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTk5OTAsNiArMTk5OTAs
NyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXExheW91dFJlcGFpbnRl
ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXExheW91dFN0YXRl
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcTGluZUluZm8uaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xMaW5lTGF5b3V0U3RhdGUu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xMaW5lV2lkdGguaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xQYWludEluZm8uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xQYWludFBoYXNlLmgiIC8+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNzM2YjhiZS4uZGZjMDY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTk5Nyw2ICs5OTk5LDcgQEAKIAkJQTAyNDU3NEYx
NkNFQUEyNzAwMEU1NjcxIC8qIEVYVERyYXdCdWZmZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEVYVERyYXdCdWZmZXJzLmg7IHBhdGggPSBjYW52YXMvRVhURHJhd0J1ZmZl
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTAyNDU3NTAxNkNFQUEyNzAwMEU1
NjcxIC8qIEVYVERyYXdCdWZmZXJzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBFWFREcmF3
QnVmZmVycy5pZGw7IHBhdGggPSBjYW52YXMvRVhURHJhd0J1ZmZlcnMuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMDZCRkUyQzE3REZCNDMzMDA4MzAyQkIgLyogTGluZUluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUluZm8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTA3MThCRTgxN0UyNkYxNjAwRjZCRjQ0IC8qIExpbmVMYXlv
dXRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaW5lTGF5b3V0U3Rh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTA3RDMzNTMxNTJCNjMwRTAwMUI2
MzkzIC8qIEpTV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEwN0QzMzU0MTUyQjYzMEUwMDFCNjM5MyAvKiBK
U1dlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTA3RDMzNTcxNTJCNjMyRDAwMUI2MzkzIC8qIFdlYkdMU2hhZGVyUHJlY2lz
aW9uRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMU2hhZGVy
UHJlY2lzaW9uRm9ybWF0Lmg7IHBhdGggPSBjYW52YXMvV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMzcwLDYgKzIwMzcxLDcgQEAK
IAkJCQkyRDkwNjYwNDBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0U3RhdGUuY3BwICovLAogCQkJ
CTJEOTA2NjA1MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5oICovLAogCQkJCUEwNkJG
RTJDMTdERkI0MzMwMDgzMDJCQiAvKiBMaW5lSW5mby5oICovLAorCQkJCUEwNzE4QkU4MTdFMjZG
MTYwMEY2QkY0NCAvKiBMaW5lTGF5b3V0U3RhdGUuaCAqLywKIAkJCQlBMENCMDAyMzE3REY4MUFD
MDAxNzg5NkIgLyogTGluZVdpZHRoLmNwcCAqLywKIAkJCQlBMENCMDAyMTE3REU5Q0QwMDAxNzg5
NkIgLyogTGluZVdpZHRoLmggKi8sCiAJCQkJOUJBMjczRjMxNzIyMDZCQjAwOTdDRTQ3IC8qIExv
Z2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MaW5lTGF5b3V0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MaW5lTGF5b3V0U3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w
YTE1M2MyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVM
YXlvdXRTdGF0ZS5oCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAw
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHQg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBDaGFuZ1Nlb2sgT2ggPHNoaXZhbWlkb3dA
Z21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3Jh
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUworICogRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIENP
UFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwK
KyAqIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwK
KyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIExpbmVMYXlvdXRTdGF0ZV9oCisjZGVmaW5lIExpbmVMYXlv
dXRTdGF0ZV9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gTGlrZSBMYXlvdXRTdGF0ZSBm
b3IgbGF5b3V0KCksIExpbmVMYXlvdXRTdGF0ZSBrZWVwcyB0cmFjayBvZiBnbG9iYWwgaW5mb3Jt
YXRpb24KKy8vIGR1cmluZyBhbiBlbnRpcmUgbGluZWJveCB0cmVlIGxheW91dCBwYXNzIChha2Eg
bGF5b3V0SW5saW5lQ2hpbGRyZW4pLgorY2xhc3MgTGluZUxheW91dFN0YXRlIHsKK3B1YmxpYzoK
KyAgICBMaW5lTGF5b3V0U3RhdGUoYm9vbCBmdWxsTGF5b3V0LCBMYXlvdXRVbml0JiByZXBhaW50
TG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgcmVwYWludExvZ2ljYWxCb3R0b20sIFJlbmRlckZsb3dU
aHJlYWQqIGZsb3dUaHJlYWQpCisgICAgICAgIDogbV9sYXN0RmxvYXQoMCkKKyAgICAgICAgLCBt
X2VuZExpbmUoMCkKKyAgICAgICAgLCBtX2Zsb2F0SW5kZXgoMCkKKyAgICAgICAgLCBtX2VuZExp
bmVMb2dpY2FsVG9wKDApCisgICAgICAgICwgbV9lbmRMaW5lTWF0Y2hlZChmYWxzZSkKKyAgICAg
ICAgLCBtX2NoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lKGZhbHNlKQorICAgICAgICAsIG1faXNG
dWxsTGF5b3V0KGZ1bGxMYXlvdXQpCisgICAgICAgICwgbV9yZXBhaW50TG9naWNhbFRvcChyZXBh
aW50TG9naWNhbFRvcCkKKyAgICAgICAgLCBtX3JlcGFpbnRMb2dpY2FsQm90dG9tKHJlcGFpbnRM
b2dpY2FsQm90dG9tKQorICAgICAgICAsIG1fYWRqdXN0ZWRMb2dpY2FsTGluZVRvcCgwKQorICAg
ICAgICAsIG1fdXNlc1JlcGFpbnRCb3VuZHMoZmFsc2UpCisgICAgICAgICwgbV9mbG93VGhyZWFk
KGZsb3dUaHJlYWQpCisgICAgeyB9CisKKyAgICB2b2lkIG1hcmtGb3JGdWxsTGF5b3V0KCkgeyBt
X2lzRnVsbExheW91dCA9IHRydWU7IH0KKyAgICBib29sIGlzRnVsbExheW91dCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNGdWxsTGF5b3V0OyB9CisKKyAgICBib29sIHVzZXNSZXBhaW50Qm91bmRzKCkg
Y29uc3QgeyByZXR1cm4gbV91c2VzUmVwYWludEJvdW5kczsgfQorCisgICAgdm9pZCBzZXRSZXBh
aW50UmFuZ2UoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV91c2Vz
UmVwYWludEJvdW5kcyA9IHRydWU7CisgICAgICAgIG1fcmVwYWludExvZ2ljYWxUb3AgPSBtX3Jl
cGFpbnRMb2dpY2FsQm90dG9tID0gbG9naWNhbEhlaWdodDsKKyAgICB9CisKKyAgICB2b2lkIHVw
ZGF0ZVJlcGFpbnRSYW5nZUZyb21Cb3goUm9vdElubGluZUJveCogYm94LCBMYXlvdXRVbml0IHBh
Z2luYXRpb25EZWx0YSA9IDApCisgICAgeworICAgICAgICBtX3VzZXNSZXBhaW50Qm91bmRzID0g
dHJ1ZTsKKyAgICAgICAgbV9yZXBhaW50TG9naWNhbFRvcCA9IHN0ZDo6bWluKG1fcmVwYWludExv
Z2ljYWxUb3AsIGJveC0+bG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KCkgKyBzdGQ6Om1pbjxMYXlv
dXRVbml0PihwYWdpbmF0aW9uRGVsdGEsIDApKTsKKyAgICAgICAgbV9yZXBhaW50TG9naWNhbEJv
dHRvbSA9IHN0ZDo6bWF4KG1fcmVwYWludExvZ2ljYWxCb3R0b20sIGJveC0+bG9naWNhbEJvdHRv
bVZpc3VhbE92ZXJmbG93KCkgKyBzdGQ6Om1heDxMYXlvdXRVbml0PihwYWdpbmF0aW9uRGVsdGEs
IDApKTsKKyAgICB9CisKKyAgICBib29sIGVuZExpbmVNYXRjaGVkKCkgY29uc3QgeyByZXR1cm4g
bV9lbmRMaW5lTWF0Y2hlZDsgfQorICAgIHZvaWQgc2V0RW5kTGluZU1hdGNoZWQoYm9vbCBlbmRM
aW5lTWF0Y2hlZCkgeyBtX2VuZExpbmVNYXRjaGVkID0gZW5kTGluZU1hdGNoZWQ7IH0KKworICAg
IGJvb2wgY2hlY2tGb3JGbG9hdHNGcm9tTGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2NoZWNr
Rm9yRmxvYXRzRnJvbUxhc3RMaW5lOyB9CisgICAgdm9pZCBzZXRDaGVja0ZvckZsb2F0c0Zyb21M
YXN0TGluZShib29sIGNoZWNrKSB7IG1fY2hlY2tGb3JGbG9hdHNGcm9tTGFzdExpbmUgPSBjaGVj
azsgfQorCisgICAgTGluZUluZm8mIGxpbmVJbmZvKCkgeyByZXR1cm4gbV9saW5lSW5mbzsgfQor
ICAgIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUluZm87
IH0KKworICAgIExheW91dFVuaXQgZW5kTGluZUxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBt
X2VuZExpbmVMb2dpY2FsVG9wOyB9CisgICAgdm9pZCBzZXRFbmRMaW5lTG9naWNhbFRvcChMYXlv
dXRVbml0IGxvZ2ljYWxUb3ApIHsgbV9lbmRMaW5lTG9naWNhbFRvcCA9IGxvZ2ljYWxUb3A7IH0K
KworICAgIFJvb3RJbmxpbmVCb3gqIGVuZExpbmUoKSBjb25zdCB7IHJldHVybiBtX2VuZExpbmU7
IH0KKyAgICB2b2lkIHNldEVuZExpbmUoUm9vdElubGluZUJveCogbGluZSkgeyBtX2VuZExpbmUg
PSBsaW5lOyB9CisKKyAgICBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0KCkgY29uc3QgeyByZXR1
cm4gbV9sYXN0RmxvYXQ7IH0KKyAgICB2b2lkIHNldExhc3RGbG9hdChGbG9hdGluZ09iamVjdCog
bGFzdEZsb2F0KSB7IG1fbGFzdEZsb2F0ID0gbGFzdEZsb2F0OyB9CisKKyAgICBWZWN0b3I8UmVu
ZGVyQmxvY2s6OkZsb2F0V2l0aFJlY3Q+JiBmbG9hdHMoKSB7IHJldHVybiBtX2Zsb2F0czsgfQor
CisgICAgdW5zaWduZWQgZmxvYXRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvYXRJbmRleDsg
fQorICAgIHZvaWQgc2V0RmxvYXRJbmRleCh1bnNpZ25lZCBmbG9hdEluZGV4KSB7IG1fZmxvYXRJ
bmRleCA9IGZsb2F0SW5kZXg7IH0KKworICAgIExheW91dFVuaXQgYWRqdXN0ZWRMb2dpY2FsTGlu
ZVRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fYWRqdXN0ZWRMb2dpY2FsTGluZVRvcDsgfQorICAgIHZv
aWQgc2V0QWRqdXN0ZWRMb2dpY2FsTGluZVRvcChMYXlvdXRVbml0IHZhbHVlKSB7IG1fYWRqdXN0
ZWRMb2dpY2FsTGluZVRvcCA9IHZhbHVlOyB9CisKKyAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93
VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9mbG93VGhyZWFkOyB9CisgICAgdm9pZCBzZXRGbG93
VGhyZWFkKFJlbmRlckZsb3dUaHJlYWQqIHRocmVhZCkgeyBtX2Zsb3dUaHJlYWQgPSB0aHJlYWQ7
IH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8UmVuZGVyQmxvY2s6OkZsb2F0V2l0aFJlY3Q+IG1f
ZmxvYXRzOworICAgIEZsb2F0aW5nT2JqZWN0KiBtX2xhc3RGbG9hdDsKKyAgICBSb290SW5saW5l
Qm94KiBtX2VuZExpbmU7CisgICAgTGluZUluZm8gbV9saW5lSW5mbzsKKyAgICB1bnNpZ25lZCBt
X2Zsb2F0SW5kZXg7CisgICAgTGF5b3V0VW5pdCBtX2VuZExpbmVMb2dpY2FsVG9wOworICAgIGJv
b2wgbV9lbmRMaW5lTWF0Y2hlZDsKKyAgICBib29sIG1fY2hlY2tGb3JGbG9hdHNGcm9tTGFzdExp
bmU7CisKKyAgICBib29sIG1faXNGdWxsTGF5b3V0OworCisgICAgLy8gRklYTUU6IFNob3VsZCB0
aGlzIGJlIGEgcmFuZ2Ugb2JqZWN0IGluc3RlYWQgb2YgdHdvIGludHM/CisgICAgTGF5b3V0VW5p
dCYgbV9yZXBhaW50TG9naWNhbFRvcDsKKyAgICBMYXlvdXRVbml0JiBtX3JlcGFpbnRMb2dpY2Fs
Qm90dG9tOworCisgICAgTGF5b3V0VW5pdCBtX2FkanVzdGVkTG9naWNhbExpbmVUb3A7CisKKyAg
ICBib29sIG1fdXNlc1JlcGFpbnRCb3VuZHM7CisKKyAgICBSZW5kZXJGbG93VGhyZWFkKiBtX2Zs
b3dUaHJlYWQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBMaW5lTGF5b3V0U3RhdGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRl
eCA5NjE4YThmLi5lOTQyZmE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvci5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJM
aW5lSW5mby5oIgorI2luY2x1ZGUgIkxpbmVMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgogI2luY2x1ZGUgIlJlbmRlckNvbWJpbmVU
ZXh0LmgiCkBAIC0xMTk0LDk1ICsxMTk1LDYgQEAgUm9vdElubGluZUJveCogUmVuZGVyQmxvY2s6
OmNyZWF0ZUxpbmVCb3hlc0Zyb21CaWRpUnVucyhCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmkKICAg
ICByZXR1cm4gbGluZUJveDsKIH0KIAotLy8gTGlrZSBMYXlvdXRTdGF0ZSBmb3IgbGF5b3V0KCks
IExpbmVMYXlvdXRTdGF0ZSBrZWVwcyB0cmFjayBvZiBnbG9iYWwgaW5mb3JtYXRpb24KLS8vIGR1
cmluZyBhbiBlbnRpcmUgbGluZWJveCB0cmVlIGxheW91dCBwYXNzIChha2EgbGF5b3V0SW5saW5l
Q2hpbGRyZW4pLgotY2xhc3MgTGluZUxheW91dFN0YXRlIHsKLXB1YmxpYzoKLSAgICBMaW5lTGF5
b3V0U3RhdGUoYm9vbCBmdWxsTGF5b3V0LCBMYXlvdXRVbml0JiByZXBhaW50TG9naWNhbFRvcCwg
TGF5b3V0VW5pdCYgcmVwYWludExvZ2ljYWxCb3R0b20sIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dU
aHJlYWQpCi0gICAgICAgIDogbV9sYXN0RmxvYXQoMCkKLSAgICAgICAgLCBtX2VuZExpbmUoMCkK
LSAgICAgICAgLCBtX2Zsb2F0SW5kZXgoMCkKLSAgICAgICAgLCBtX2VuZExpbmVMb2dpY2FsVG9w
KDApCi0gICAgICAgICwgbV9lbmRMaW5lTWF0Y2hlZChmYWxzZSkKLSAgICAgICAgLCBtX2NoZWNr
Rm9yRmxvYXRzRnJvbUxhc3RMaW5lKGZhbHNlKQotICAgICAgICAsIG1faXNGdWxsTGF5b3V0KGZ1
bGxMYXlvdXQpCi0gICAgICAgICwgbV9yZXBhaW50TG9naWNhbFRvcChyZXBhaW50TG9naWNhbFRv
cCkKLSAgICAgICAgLCBtX3JlcGFpbnRMb2dpY2FsQm90dG9tKHJlcGFpbnRMb2dpY2FsQm90dG9t
KQotICAgICAgICAsIG1fYWRqdXN0ZWRMb2dpY2FsTGluZVRvcCgwKQotICAgICAgICAsIG1fdXNl
c1JlcGFpbnRCb3VuZHMoZmFsc2UpCi0gICAgICAgICwgbV9mbG93VGhyZWFkKGZsb3dUaHJlYWQp
Ci0gICAgeyB9Ci0KLSAgICB2b2lkIG1hcmtGb3JGdWxsTGF5b3V0KCkgeyBtX2lzRnVsbExheW91
dCA9IHRydWU7IH0KLSAgICBib29sIGlzRnVsbExheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNG
dWxsTGF5b3V0OyB9Ci0KLSAgICBib29sIHVzZXNSZXBhaW50Qm91bmRzKCkgY29uc3QgeyByZXR1
cm4gbV91c2VzUmVwYWludEJvdW5kczsgfQotCi0gICAgdm9pZCBzZXRSZXBhaW50UmFuZ2UoTGF5
b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KQotICAgIHsgCi0gICAgICAgIG1fdXNlc1JlcGFpbnRCb3Vu
ZHMgPSB0cnVlOwotICAgICAgICBtX3JlcGFpbnRMb2dpY2FsVG9wID0gbV9yZXBhaW50TG9naWNh
bEJvdHRvbSA9IGxvZ2ljYWxIZWlnaHQ7IAotICAgIH0KLSAgICAKLSAgICB2b2lkIHVwZGF0ZVJl
cGFpbnRSYW5nZUZyb21Cb3goUm9vdElubGluZUJveCogYm94LCBMYXlvdXRVbml0IHBhZ2luYXRp
b25EZWx0YSA9IDApCi0gICAgewotICAgICAgICBtX3VzZXNSZXBhaW50Qm91bmRzID0gdHJ1ZTsK
LSAgICAgICAgbV9yZXBhaW50TG9naWNhbFRvcCA9IG1pbihtX3JlcGFpbnRMb2dpY2FsVG9wLCBi
b3gtPmxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdygpICsgbWluPExheW91dFVuaXQ+KHBhZ2luYXRp
b25EZWx0YSwgMCkpOwotICAgICAgICBtX3JlcGFpbnRMb2dpY2FsQm90dG9tID0gbWF4KG1fcmVw
YWludExvZ2ljYWxCb3R0b20sIGJveC0+bG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93KCkgKyBt
YXg8TGF5b3V0VW5pdD4ocGFnaW5hdGlvbkRlbHRhLCAwKSk7Ci0gICAgfQotICAgIAotICAgIGJv
b2wgZW5kTGluZU1hdGNoZWQoKSBjb25zdCB7IHJldHVybiBtX2VuZExpbmVNYXRjaGVkOyB9Ci0g
ICAgdm9pZCBzZXRFbmRMaW5lTWF0Y2hlZChib29sIGVuZExpbmVNYXRjaGVkKSB7IG1fZW5kTGlu
ZU1hdGNoZWQgPSBlbmRMaW5lTWF0Y2hlZDsgfQotCi0gICAgYm9vbCBjaGVja0ZvckZsb2F0c0Zy
b21MYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2hlY2tGb3JGbG9hdHNGcm9tTGFzdExpbmU7
IH0KLSAgICB2b2lkIHNldENoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lKGJvb2wgY2hlY2spIHsg
bV9jaGVja0ZvckZsb2F0c0Zyb21MYXN0TGluZSA9IGNoZWNrOyB9Ci0KLSAgICBMaW5lSW5mbyYg
bGluZUluZm8oKSB7IHJldHVybiBtX2xpbmVJbmZvOyB9Ci0gICAgY29uc3QgTGluZUluZm8mIGxp
bmVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9saW5lSW5mbzsgfQotCi0gICAgTGF5b3V0VW5pdCBl
bmRMaW5lTG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kTGluZUxvZ2ljYWxUb3A7IH0K
LSAgICB2b2lkIHNldEVuZExpbmVMb2dpY2FsVG9wKExheW91dFVuaXQgbG9naWNhbFRvcCkgeyBt
X2VuZExpbmVMb2dpY2FsVG9wID0gbG9naWNhbFRvcDsgfQotCi0gICAgUm9vdElubGluZUJveCog
ZW5kTGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kTGluZTsgfQotICAgIHZvaWQgc2V0RW5kTGlu
ZShSb290SW5saW5lQm94KiBsaW5lKSB7IG1fZW5kTGluZSA9IGxpbmU7IH0KLQotICAgIEZsb2F0
aW5nT2JqZWN0KiBsYXN0RmxvYXQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RGbG9hdDsgfQotICAg
IHZvaWQgc2V0TGFzdEZsb2F0KEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXQpIHsgbV9sYXN0Rmxv
YXQgPSBsYXN0RmxvYXQ7IH0KLQotICAgIFZlY3RvcjxSZW5kZXJCbG9jazo6RmxvYXRXaXRoUmVj
dD4mIGZsb2F0cygpIHsgcmV0dXJuIG1fZmxvYXRzOyB9Ci0gICAgCi0gICAgdW5zaWduZWQgZmxv
YXRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvYXRJbmRleDsgfQotICAgIHZvaWQgc2V0Rmxv
YXRJbmRleCh1bnNpZ25lZCBmbG9hdEluZGV4KSB7IG1fZmxvYXRJbmRleCA9IGZsb2F0SW5kZXg7
IH0KLSAgICAKLSAgICBMYXlvdXRVbml0IGFkanVzdGVkTG9naWNhbExpbmVUb3AoKSBjb25zdCB7
IHJldHVybiBtX2FkanVzdGVkTG9naWNhbExpbmVUb3A7IH0KLSAgICB2b2lkIHNldEFkanVzdGVk
TG9naWNhbExpbmVUb3AoTGF5b3V0VW5pdCB2YWx1ZSkgeyBtX2FkanVzdGVkTG9naWNhbExpbmVU
b3AgPSB2YWx1ZTsgfQotCi0gICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZmxvd1RocmVhZDsgfQotICAgIHZvaWQgc2V0Rmxvd1RocmVhZChSZW5kZXJG
bG93VGhyZWFkKiB0aHJlYWQpIHsgbV9mbG93VGhyZWFkID0gdGhyZWFkOyB9Ci0KLXByaXZhdGU6
Ci0gICAgVmVjdG9yPFJlbmRlckJsb2NrOjpGbG9hdFdpdGhSZWN0PiBtX2Zsb2F0czsKLSAgICBG
bG9hdGluZ09iamVjdCogbV9sYXN0RmxvYXQ7Ci0gICAgUm9vdElubGluZUJveCogbV9lbmRMaW5l
OwotICAgIExpbmVJbmZvIG1fbGluZUluZm87Ci0gICAgdW5zaWduZWQgbV9mbG9hdEluZGV4Owot
ICAgIExheW91dFVuaXQgbV9lbmRMaW5lTG9naWNhbFRvcDsKLSAgICBib29sIG1fZW5kTGluZU1h
dGNoZWQ7Ci0gICAgYm9vbCBtX2NoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lOwotICAgIAotICAg
IGJvb2wgbV9pc0Z1bGxMYXlvdXQ7Ci0KLSAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgYSBy
YW5nZSBvYmplY3QgaW5zdGVhZCBvZiB0d28gaW50cz8KLSAgICBMYXlvdXRVbml0JiBtX3JlcGFp
bnRMb2dpY2FsVG9wOwotICAgIExheW91dFVuaXQmIG1fcmVwYWludExvZ2ljYWxCb3R0b207Ci0K
LSAgICBMYXlvdXRVbml0IG1fYWRqdXN0ZWRMb2dpY2FsTGluZVRvcDsKLQotICAgIGJvb2wgbV91
c2VzUmVwYWludEJvdW5kczsKLSAgICAKLSAgICBSZW5kZXJGbG93VGhyZWFkKiBtX2Zsb3dUaHJl
YWQ7Ci19OwotCiBzdGF0aWMgdm9pZCBkZWxldGVMaW5lUmFuZ2UoTGluZUxheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSwgUmVuZGVyQXJlbmEqIGFyZW5hLCBSb290SW5saW5lQm94KiBzdGFydExpbmUs
IFJvb3RJbmxpbmVCb3gqIHN0b3BMaW5lID0gMCkKIHsKICAgICBSb290SW5saW5lQm94KiBib3hU
b0RlbGV0ZSA9IHN0YXJ0TGluZTsK
</data>
<flag name="review"
          id="233586"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211559</attachid>
            <date>2013-09-13 09:40:15 -0700</date>
            <delta_ts>2013-09-13 10:25:04 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>linelayout.patch</filename>
            <type>text/plain</type>
            <size>15809</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZTcxZGY2Li4yZTI1YjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTMtMDktMTIgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgTW92ZSBMaW5lTGF5b3V0U3RhdGUgY2xhc3MgdG8gTGluZUxheW91dFN0YXRlLmgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTI2MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkgYWRkZWQgYml0
ZmllbGRzLCByZW9yZGVyZWQgdGhlIG1lbWJlcnMgYW5kIGEgZnVuY3Rpb25zIHRvby4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHJlbmRl
cmluZy9MaW5lTGF5b3V0U3RhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5
b3V0U3RhdGU6OkxpbmVMYXlvdXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0
U3RhdGU6Om1hcmtGb3JGdWxsTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRT
dGF0ZTo6aXNGdWxsTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRTdGF0ZTo6
dXNlc1JlcGFpbnRCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjpz
ZXRSZXBhaW50UmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjp1cGRh
dGVSZXBhaW50UmFuZ2VGcm9tQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRTdGF0
ZTo6ZW5kTGluZU1hdGNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjpz
ZXRFbmRMaW5lTWF0Y2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6OmNo
ZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRT
dGF0ZTo6c2V0Q2hlY2tGb3JGbG9hdHNGcm9tTGFzdExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
TGluZUxheW91dFN0YXRlOjpsaW5lSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0
U3RhdGU6OmVuZExpbmVMb2dpY2FsVG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRT
dGF0ZTo6c2V0RW5kTGluZUxvZ2ljYWxUb3ApOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91
dFN0YXRlOjplbmRMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRTdGF0ZTo6c2V0
RW5kTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6Omxhc3RGbG9hdCk6
CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6OnNldExhc3RGbG9hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6OmZsb2F0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpMaW5lTGF5b3V0U3RhdGU6OmZsb2F0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxh
eW91dFN0YXRlOjpzZXRGbG9hdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRT
dGF0ZTo6YWRqdXN0ZWRMb2dpY2FsTGluZVRvcCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5
b3V0U3RhdGU6OnNldEFkanVzdGVkTG9naWNhbExpbmVUb3ApOgorICAgICAgICAoV2ViQ29yZTo6
TGluZUxheW91dFN0YXRlOjpmbG93VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlv
dXRTdGF0ZTo6c2V0Rmxvd1RocmVhZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
TGluZUxheW91dC5jcHA6IFJlbW92ZSBMaW5lTGF5b3V0U3RhdGUuCisKIDIwMTMtMDktMTIgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUXQgYW5kIFdpbmRvd3Mg
YnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggYzllYTM1My4uYmE0
ZmFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00MzYwLDYgKzQzNjAsNyBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRS
ZXBhaW50ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lSW5mby5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGluZUxheW91dFN0YXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9MaW5lV2lkdGguaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9PdmVybGFwVGVzdFJlcXVlc3RDbGllbnQu
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQppbmRleCAxMTQ0N2JjLi41ODY4ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTI0
MDQsNiArMjQwNCw3IEBAIEhFQURFUlMgKz0gXAogICAgIHJlbmRlcmluZy9MYXlvdXRTdGF0ZS5o
IFwKICAgICByZW5kZXJpbmcvTGluZUluZm8uaCBcCiAgICAgcmVuZGVyaW5nL0xpbmVXaWR0aC5o
IFwKKyAgICByZW5kZXJpbmcvTGluZUxheW91dFN0YXRlLmggXAogICAgIHJlbmRlcmluZy9Mb2dp
Y2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmggXAogICAgIHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MQmxvY2suaCBcCiAgICAgcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQu
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpp
bmRleCAwNTM5MWVmLi4yZGY2YmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTE5OTkwLDYgKzE5OTkwLDcgQEAKICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xMYXlvdXRSZXBhaW50ZXIuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xMYXlvdXRTdGF0ZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXExpbmVJbmZvLmgiIC8+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcTGluZUxheW91dFN0YXRlLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcTGluZVdpZHRoLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUGFpbnRJbmZvLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxyZW5kZXJpbmdcUGFpbnRQaGFzZS5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDczNmI4YmUuLmRmYzA2
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTk5OTcsNiArOTk5OSw3IEBACiAJCUEwMjQ1NzRGMTZDRUFBMjcwMDBFNTY3MSAv
KiBFWFREcmF3QnVmZmVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBFWFRE
cmF3QnVmZmVycy5oOyBwYXRoID0gY2FudmFzL0VYVERyYXdCdWZmZXJzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUEwMjQ1NzUwMTZDRUFBMjcwMDBFNTY3MSAvKiBFWFREcmF3QnVm
ZmVycy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRVhURHJhd0J1ZmZlcnMuaWRsOyBwYXRo
ID0gY2FudmFzL0VYVERyYXdCdWZmZXJzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTA2QkZFMkMxN0RGQjQzMzAwODMwMkJCIC8qIExpbmVJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUEwNzE4QkU4MTdFMjZGMTYwMEY2QkY0NCAvKiBMaW5lTGF5b3V0U3RhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUxheW91dFN0YXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUEwN0QzMzUzMTUyQjYzMEUwMDFCNjM5MyAvKiBKU1dlYkdMU2hh
ZGVyUHJlY2lzaW9uRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMDdEMzM1NDE1MkI2MzBFMDAxQjYzOTMgLyogSlNXZWJHTFNoYWRlclByZWNp
c2lvbkZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMU2hh
ZGVyUHJlY2lzaW9uRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEwN0Qz
MzU3MTUyQjYzMkQwMDFCNjM5MyAvKiBXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5o
OyBwYXRoID0gY2FudmFzL1dlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMDM3MCw2ICsyMDM3MSw3IEBACiAJCQkJMkQ5MDY2MDQwQkUx
NDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmNwcCAqLywKIAkJCQkyRDkwNjYwNTBCRTE0MUQ0
MDA5NTY5OTggLyogTGF5b3V0U3RhdGUuaCAqLywKIAkJCQlBMDZCRkUyQzE3REZCNDMzMDA4MzAy
QkIgLyogTGluZUluZm8uaCAqLywKKwkJCQlBMDcxOEJFODE3RTI2RjE2MDBGNkJGNDQgLyogTGlu
ZUxheW91dFN0YXRlLmggKi8sCiAJCQkJQTBDQjAwMjMxN0RGODFBQzAwMTc4OTZCIC8qIExpbmVX
aWR0aC5jcHAgKi8sCiAJCQkJQTBDQjAwMjExN0RFOUNEMDAwMTc4OTZCIC8qIExpbmVXaWR0aC5o
ICovLAogCQkJCTlCQTI3M0YzMTcyMjA2QkIwMDk3Q0U0NyAvKiBMb2dpY2FsU2VsZWN0aW9uT2Zm
c2V0Q2FjaGVzLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGlu
ZUxheW91dFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGluZUxheW91dFN0YXRl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFmYzhhYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lTGF5b3V0U3RhdGUuaApAQCAt
MCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJzIEtub2xsIChrbm9s
bEBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQ2hhbmdTZW9rIE9oIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBk
aXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAq
ICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9MREVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VECisgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBMaW5lTGF5b3V0U3RhdGVfaAorI2RlZmluZSBMaW5lTGF5b3V0U3RhdGVfaAorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8vIExpa2UgTGF5b3V0U3RhdGUgZm9yIGxheW91dCgpLCBMaW5l
TGF5b3V0U3RhdGUga2VlcHMgdHJhY2sgb2YgZ2xvYmFsIGluZm9ybWF0aW9uCisvLyBkdXJpbmcg
YW4gZW50aXJlIGxpbmVib3ggdHJlZSBsYXlvdXQgcGFzcyAoYWthIGxheW91dElubGluZUNoaWxk
cmVuKS4KK2NsYXNzIExpbmVMYXlvdXRTdGF0ZSB7CitwdWJsaWM6CisgICAgTGluZUxheW91dFN0
YXRlKGJvb2wgZnVsbExheW91dCwgTGF5b3V0VW5pdCYgcmVwYWludExvZ2ljYWxUb3AsIExheW91
dFVuaXQmIHJlcGFpbnRMb2dpY2FsQm90dG9tLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFk
KQorICAgICAgICA6IG1fZW5kTGluZUxvZ2ljYWxUb3AoMCkKKyAgICAgICAgLCBtX2VuZExpbmUo
MCkKKyAgICAgICAgLCBtX2xhc3RGbG9hdCgwKQorICAgICAgICAsIG1fZmxvYXRJbmRleCgwKQor
ICAgICAgICAsIG1fYWRqdXN0ZWRMb2dpY2FsTGluZVRvcCgwKQorICAgICAgICAsIG1fZmxvd1Ro
cmVhZChmbG93VGhyZWFkKQorICAgICAgICAsIG1fcmVwYWludExvZ2ljYWxUb3AocmVwYWludExv
Z2ljYWxUb3ApCisgICAgICAgICwgbV9yZXBhaW50TG9naWNhbEJvdHRvbShyZXBhaW50TG9naWNh
bEJvdHRvbSkKKyAgICAgICAgLCBtX2VuZExpbmVNYXRjaGVkKGZhbHNlKQorICAgICAgICAsIG1f
Y2hlY2tGb3JGbG9hdHNGcm9tTGFzdExpbmUoZmFsc2UpCisgICAgICAgICwgbV9pc0Z1bGxMYXlv
dXQoZnVsbExheW91dCkKKyAgICAgICAgLCBtX3VzZXNSZXBhaW50Qm91bmRzKGZhbHNlKQorICAg
IHsgfQorCisgICAgTGluZUluZm8mIGxpbmVJbmZvKCkgeyByZXR1cm4gbV9saW5lSW5mbzsgfQor
ICAgIGNvbnN0IExpbmVJbmZvJiBsaW5lSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUluZm87
IH0KKworICAgIExheW91dFVuaXQgZW5kTGluZUxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBt
X2VuZExpbmVMb2dpY2FsVG9wOyB9CisgICAgdm9pZCBzZXRFbmRMaW5lTG9naWNhbFRvcChMYXlv
dXRVbml0IGxvZ2ljYWxUb3ApIHsgbV9lbmRMaW5lTG9naWNhbFRvcCA9IGxvZ2ljYWxUb3A7IH0K
KworICAgIFJvb3RJbmxpbmVCb3gqIGVuZExpbmUoKSBjb25zdCB7IHJldHVybiBtX2VuZExpbmU7
IH0KKyAgICB2b2lkIHNldEVuZExpbmUoUm9vdElubGluZUJveCogbGluZSkgeyBtX2VuZExpbmUg
PSBsaW5lOyB9CisKKyAgICBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0KCkgY29uc3QgeyByZXR1
cm4gbV9sYXN0RmxvYXQ7IH0KKyAgICB2b2lkIHNldExhc3RGbG9hdChGbG9hdGluZ09iamVjdCog
bGFzdEZsb2F0KSB7IG1fbGFzdEZsb2F0ID0gbGFzdEZsb2F0OyB9CisKKyAgICBWZWN0b3I8UmVu
ZGVyQmxvY2s6OkZsb2F0V2l0aFJlY3Q+JiBmbG9hdHMoKSB7IHJldHVybiBtX2Zsb2F0czsgfQor
CisgICAgdW5zaWduZWQgZmxvYXRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvYXRJbmRleDsg
fQorICAgIHZvaWQgc2V0RmxvYXRJbmRleCh1bnNpZ25lZCBmbG9hdEluZGV4KSB7IG1fZmxvYXRJ
bmRleCA9IGZsb2F0SW5kZXg7IH0KKworICAgIExheW91dFVuaXQgYWRqdXN0ZWRMb2dpY2FsTGlu
ZVRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fYWRqdXN0ZWRMb2dpY2FsTGluZVRvcDsgfQorICAgIHZv
aWQgc2V0QWRqdXN0ZWRMb2dpY2FsTGluZVRvcChMYXlvdXRVbml0IHZhbHVlKSB7IG1fYWRqdXN0
ZWRMb2dpY2FsTGluZVRvcCA9IHZhbHVlOyB9CisKKyAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93
VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9mbG93VGhyZWFkOyB9CisgICAgdm9pZCBzZXRGbG93
VGhyZWFkKFJlbmRlckZsb3dUaHJlYWQqIHRocmVhZCkgeyBtX2Zsb3dUaHJlYWQgPSB0aHJlYWQ7
IH0KKworICAgIGJvb2wgZW5kTGluZU1hdGNoZWQoKSBjb25zdCB7IHJldHVybiBtX2VuZExpbmVN
YXRjaGVkOyB9CisgICAgdm9pZCBzZXRFbmRMaW5lTWF0Y2hlZChib29sIGVuZExpbmVNYXRjaGVk
KSB7IG1fZW5kTGluZU1hdGNoZWQgPSBlbmRMaW5lTWF0Y2hlZDsgfQorCisgICAgYm9vbCBjaGVj
a0ZvckZsb2F0c0Zyb21MYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2hlY2tGb3JGbG9hdHNG
cm9tTGFzdExpbmU7IH0KKyAgICB2b2lkIHNldENoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lKGJv
b2wgY2hlY2spIHsgbV9jaGVja0ZvckZsb2F0c0Zyb21MYXN0TGluZSA9IGNoZWNrOyB9CisKKyAg
ICB2b2lkIG1hcmtGb3JGdWxsTGF5b3V0KCkgeyBtX2lzRnVsbExheW91dCA9IHRydWU7IH0KKyAg
ICBib29sIGlzRnVsbExheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsTGF5b3V0OyB9CisK
KyAgICBib29sIHVzZXNSZXBhaW50Qm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV91c2VzUmVwYWlu
dEJvdW5kczsgfQorCisgICAgdm9pZCBzZXRSZXBhaW50UmFuZ2UoTGF5b3V0VW5pdCBsb2dpY2Fs
SGVpZ2h0KQorICAgIHsKKyAgICAgICAgbV91c2VzUmVwYWludEJvdW5kcyA9IHRydWU7CisgICAg
ICAgIG1fcmVwYWludExvZ2ljYWxUb3AgPSBtX3JlcGFpbnRMb2dpY2FsQm90dG9tID0gbG9naWNh
bEhlaWdodDsKKyAgICB9CisKKyAgICB2b2lkIHVwZGF0ZVJlcGFpbnRSYW5nZUZyb21Cb3goUm9v
dElubGluZUJveCogYm94LCBMYXlvdXRVbml0IHBhZ2luYXRpb25EZWx0YSA9IDApCisgICAgewor
ICAgICAgICBtX3VzZXNSZXBhaW50Qm91bmRzID0gdHJ1ZTsKKyAgICAgICAgbV9yZXBhaW50TG9n
aWNhbFRvcCA9IHN0ZDo6bWluKG1fcmVwYWludExvZ2ljYWxUb3AsIGJveC0+bG9naWNhbFRvcFZp
c3VhbE92ZXJmbG93KCkgKyBzdGQ6Om1pbjxMYXlvdXRVbml0PihwYWdpbmF0aW9uRGVsdGEsIDAp
KTsKKyAgICAgICAgbV9yZXBhaW50TG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KG1fcmVwYWludExv
Z2ljYWxCb3R0b20sIGJveC0+bG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93KCkgKyBzdGQ6Om1h
eDxMYXlvdXRVbml0PihwYWdpbmF0aW9uRGVsdGEsIDApKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgTGluZUluZm8gbV9saW5lSW5mbzsKKyAgICBMYXlvdXRVbml0IG1fZW5kTGluZUxvZ2ljYWxU
b3A7CisgICAgUm9vdElubGluZUJveCogbV9lbmRMaW5lOworCisgICAgRmxvYXRpbmdPYmplY3Qq
IG1fbGFzdEZsb2F0OworICAgIFZlY3RvcjxSZW5kZXJCbG9jazo6RmxvYXRXaXRoUmVjdD4gbV9m
bG9hdHM7CisgICAgdW5zaWduZWQgbV9mbG9hdEluZGV4OworCisgICAgTGF5b3V0VW5pdCBtX2Fk
anVzdGVkTG9naWNhbExpbmVUb3A7CisKKyAgICBSZW5kZXJGbG93VGhyZWFkKiBtX2Zsb3dUaHJl
YWQ7CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgYSByYW5nZSBvYmplY3QgaW5zdGVh
ZCBvZiB0d28gaW50cz8KKyAgICBMYXlvdXRVbml0JiBtX3JlcGFpbnRMb2dpY2FsVG9wOworICAg
IExheW91dFVuaXQmIG1fcmVwYWludExvZ2ljYWxCb3R0b207CisKKyAgICBib29sIG1fZW5kTGlu
ZU1hdGNoZWQgOiAxOworICAgIGJvb2wgbV9jaGVja0ZvckZsb2F0c0Zyb21MYXN0TGluZSA6IDE7
CisgICAgYm9vbCBtX2lzRnVsbExheW91dCA6IDE7CisgICAgYm9vbCBtX3VzZXNSZXBhaW50Qm91
bmRzIDogMTsKK307CisKK30KKworI2VuZGlmIC8vIExpbmVMYXlvdXRTdGF0ZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCmluZGV4
IDk2MThhOGYuLmU5NDJmYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIklu
bGluZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxp
bmVJbmZvLmgiCisjaW5jbHVkZSAiTGluZUxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgiCiAjaW5jbHVkZSAiUmVuZGVyQ29tYmluZVRl
eHQuaCIKQEAgLTExOTQsOTUgKzExOTUsNiBAQCBSb290SW5saW5lQm94KiBSZW5kZXJCbG9jazo6
Y3JlYXRlTGluZUJveGVzRnJvbUJpZGlSdW5zKEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaQogICAg
IHJldHVybiBsaW5lQm94OwogfQogCi0vLyBMaWtlIExheW91dFN0YXRlIGZvciBsYXlvdXQoKSwg
TGluZUxheW91dFN0YXRlIGtlZXBzIHRyYWNrIG9mIGdsb2JhbCBpbmZvcm1hdGlvbgotLy8gZHVy
aW5nIGFuIGVudGlyZSBsaW5lYm94IHRyZWUgbGF5b3V0IHBhc3MgKGFrYSBsYXlvdXRJbmxpbmVD
aGlsZHJlbikuCi1jbGFzcyBMaW5lTGF5b3V0U3RhdGUgewotcHVibGljOgotICAgIExpbmVMYXlv
dXRTdGF0ZShib29sIGZ1bGxMYXlvdXQsIExheW91dFVuaXQmIHJlcGFpbnRMb2dpY2FsVG9wLCBM
YXlvdXRVbml0JiByZXBhaW50TG9naWNhbEJvdHRvbSwgUmVuZGVyRmxvd1RocmVhZCogZmxvd1Ro
cmVhZCkKLSAgICAgICAgOiBtX2xhc3RGbG9hdCgwKQotICAgICAgICAsIG1fZW5kTGluZSgwKQot
ICAgICAgICAsIG1fZmxvYXRJbmRleCgwKQotICAgICAgICAsIG1fZW5kTGluZUxvZ2ljYWxUb3Ao
MCkKLSAgICAgICAgLCBtX2VuZExpbmVNYXRjaGVkKGZhbHNlKQotICAgICAgICAsIG1fY2hlY2tG
b3JGbG9hdHNGcm9tTGFzdExpbmUoZmFsc2UpCi0gICAgICAgICwgbV9pc0Z1bGxMYXlvdXQoZnVs
bExheW91dCkKLSAgICAgICAgLCBtX3JlcGFpbnRMb2dpY2FsVG9wKHJlcGFpbnRMb2dpY2FsVG9w
KQotICAgICAgICAsIG1fcmVwYWludExvZ2ljYWxCb3R0b20ocmVwYWludExvZ2ljYWxCb3R0b20p
Ci0gICAgICAgICwgbV9hZGp1c3RlZExvZ2ljYWxMaW5lVG9wKDApCi0gICAgICAgICwgbV91c2Vz
UmVwYWludEJvdW5kcyhmYWxzZSkKLSAgICAgICAgLCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVhZCkK
LSAgICB7IH0KLQotICAgIHZvaWQgbWFya0ZvckZ1bGxMYXlvdXQoKSB7IG1faXNGdWxsTGF5b3V0
ID0gdHJ1ZTsgfQotICAgIGJvb2wgaXNGdWxsTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1
bGxMYXlvdXQ7IH0KLQotICAgIGJvb2wgdXNlc1JlcGFpbnRCb3VuZHMoKSBjb25zdCB7IHJldHVy
biBtX3VzZXNSZXBhaW50Qm91bmRzOyB9Ci0KLSAgICB2b2lkIHNldFJlcGFpbnRSYW5nZShMYXlv
dXRVbml0IGxvZ2ljYWxIZWlnaHQpCi0gICAgeyAKLSAgICAgICAgbV91c2VzUmVwYWludEJvdW5k
cyA9IHRydWU7Ci0gICAgICAgIG1fcmVwYWludExvZ2ljYWxUb3AgPSBtX3JlcGFpbnRMb2dpY2Fs
Qm90dG9tID0gbG9naWNhbEhlaWdodDsgCi0gICAgfQotICAgIAotICAgIHZvaWQgdXBkYXRlUmVw
YWludFJhbmdlRnJvbUJveChSb290SW5saW5lQm94KiBib3gsIExheW91dFVuaXQgcGFnaW5hdGlv
bkRlbHRhID0gMCkKLSAgICB7Ci0gICAgICAgIG1fdXNlc1JlcGFpbnRCb3VuZHMgPSB0cnVlOwot
ICAgICAgICBtX3JlcGFpbnRMb2dpY2FsVG9wID0gbWluKG1fcmVwYWludExvZ2ljYWxUb3AsIGJv
eC0+bG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KCkgKyBtaW48TGF5b3V0VW5pdD4ocGFnaW5hdGlv
bkRlbHRhLCAwKSk7Ci0gICAgICAgIG1fcmVwYWludExvZ2ljYWxCb3R0b20gPSBtYXgobV9yZXBh
aW50TG9naWNhbEJvdHRvbSwgYm94LT5sb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3coKSArIG1h
eDxMYXlvdXRVbml0PihwYWdpbmF0aW9uRGVsdGEsIDApKTsKLSAgICB9Ci0gICAgCi0gICAgYm9v
bCBlbmRMaW5lTWF0Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kTGluZU1hdGNoZWQ7IH0KLSAg
ICB2b2lkIHNldEVuZExpbmVNYXRjaGVkKGJvb2wgZW5kTGluZU1hdGNoZWQpIHsgbV9lbmRMaW5l
TWF0Y2hlZCA9IGVuZExpbmVNYXRjaGVkOyB9Ci0KLSAgICBib29sIGNoZWNrRm9yRmxvYXRzRnJv
bUxhc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9jaGVja0ZvckZsb2F0c0Zyb21MYXN0TGluZTsg
fQotICAgIHZvaWQgc2V0Q2hlY2tGb3JGbG9hdHNGcm9tTGFzdExpbmUoYm9vbCBjaGVjaykgeyBt
X2NoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lID0gY2hlY2s7IH0KLQotICAgIExpbmVJbmZvJiBs
aW5lSW5mbygpIHsgcmV0dXJuIG1fbGluZUluZm87IH0KLSAgICBjb25zdCBMaW5lSW5mbyYgbGlu
ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2xpbmVJbmZvOyB9Ci0KLSAgICBMYXlvdXRVbml0IGVu
ZExpbmVMb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbV9lbmRMaW5lTG9naWNhbFRvcDsgfQot
ICAgIHZvaWQgc2V0RW5kTGluZUxvZ2ljYWxUb3AoTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSB7IG1f
ZW5kTGluZUxvZ2ljYWxUb3AgPSBsb2dpY2FsVG9wOyB9Ci0KLSAgICBSb290SW5saW5lQm94KiBl
bmRMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9lbmRMaW5lOyB9Ci0gICAgdm9pZCBzZXRFbmRMaW5l
KFJvb3RJbmxpbmVCb3gqIGxpbmUpIHsgbV9lbmRMaW5lID0gbGluZTsgfQotCi0gICAgRmxvYXRp
bmdPYmplY3QqIGxhc3RGbG9hdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEZsb2F0OyB9Ci0gICAg
dm9pZCBzZXRMYXN0RmxvYXQoRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdCkgeyBtX2xhc3RGbG9h
dCA9IGxhc3RGbG9hdDsgfQotCi0gICAgVmVjdG9yPFJlbmRlckJsb2NrOjpGbG9hdFdpdGhSZWN0
PiYgZmxvYXRzKCkgeyByZXR1cm4gbV9mbG9hdHM7IH0KLSAgICAKLSAgICB1bnNpZ25lZCBmbG9h
dEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9mbG9hdEluZGV4OyB9Ci0gICAgdm9pZCBzZXRGbG9h
dEluZGV4KHVuc2lnbmVkIGZsb2F0SW5kZXgpIHsgbV9mbG9hdEluZGV4ID0gZmxvYXRJbmRleDsg
fQotICAgIAotICAgIExheW91dFVuaXQgYWRqdXN0ZWRMb2dpY2FsTGluZVRvcCgpIGNvbnN0IHsg
cmV0dXJuIG1fYWRqdXN0ZWRMb2dpY2FsTGluZVRvcDsgfQotICAgIHZvaWQgc2V0QWRqdXN0ZWRM
b2dpY2FsTGluZVRvcChMYXlvdXRVbml0IHZhbHVlKSB7IG1fYWRqdXN0ZWRMb2dpY2FsTGluZVRv
cCA9IHZhbHVlOyB9Ci0KLSAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKCkgY29uc3Qg
eyByZXR1cm4gbV9mbG93VGhyZWFkOyB9Ci0gICAgdm9pZCBzZXRGbG93VGhyZWFkKFJlbmRlckZs
b3dUaHJlYWQqIHRocmVhZCkgeyBtX2Zsb3dUaHJlYWQgPSB0aHJlYWQ7IH0KLQotcHJpdmF0ZToK
LSAgICBWZWN0b3I8UmVuZGVyQmxvY2s6OkZsb2F0V2l0aFJlY3Q+IG1fZmxvYXRzOwotICAgIEZs
b2F0aW5nT2JqZWN0KiBtX2xhc3RGbG9hdDsKLSAgICBSb290SW5saW5lQm94KiBtX2VuZExpbmU7
Ci0gICAgTGluZUluZm8gbV9saW5lSW5mbzsKLSAgICB1bnNpZ25lZCBtX2Zsb2F0SW5kZXg7Ci0g
ICAgTGF5b3V0VW5pdCBtX2VuZExpbmVMb2dpY2FsVG9wOwotICAgIGJvb2wgbV9lbmRMaW5lTWF0
Y2hlZDsKLSAgICBib29sIG1fY2hlY2tGb3JGbG9hdHNGcm9tTGFzdExpbmU7Ci0gICAgCi0gICAg
Ym9vbCBtX2lzRnVsbExheW91dDsKLQotICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSBhIHJh
bmdlIG9iamVjdCBpbnN0ZWFkIG9mIHR3byBpbnRzPwotICAgIExheW91dFVuaXQmIG1fcmVwYWlu
dExvZ2ljYWxUb3A7Ci0gICAgTGF5b3V0VW5pdCYgbV9yZXBhaW50TG9naWNhbEJvdHRvbTsKLQot
ICAgIExheW91dFVuaXQgbV9hZGp1c3RlZExvZ2ljYWxMaW5lVG9wOwotCi0gICAgYm9vbCBtX3Vz
ZXNSZXBhaW50Qm91bmRzOwotICAgIAotICAgIFJlbmRlckZsb3dUaHJlYWQqIG1fZmxvd1RocmVh
ZDsKLX07Ci0KIHN0YXRpYyB2b2lkIGRlbGV0ZUxpbmVSYW5nZShMaW5lTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlLCBSZW5kZXJBcmVuYSogYXJlbmEsIFJvb3RJbmxpbmVCb3gqIHN0YXJ0TGluZSwg
Um9vdElubGluZUJveCogc3RvcExpbmUgPSAwKQogewogICAgIFJvb3RJbmxpbmVCb3gqIGJveFRv
RGVsZXRlID0gc3RhcnRMaW5lOwo=
</data>
<flag name="commit-queue"
          id="233684"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211561</attachid>
            <date>2013-09-13 10:25:04 -0700</date>
            <delta_ts>2013-09-13 10:58:14 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>linelayout.patch</filename>
            <type>text/plain</type>
            <size>15807</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZTcxZGY2Li4yZTI1YjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTMtMDktMTIgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgTW92ZSBMaW5lTGF5b3V0U3RhdGUgY2xhc3MgdG8gTGluZUxheW91dFN0YXRlLmgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTI2MworCisg
ICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBJIGFkZGVkIGJpdGZp
ZWxkcywgcmVvcmRlcmVkIHRoZSBtZW1iZXJzIGFuZCBhIGZ1bmN0aW9ucyB0b28uCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvTGluZUxheW91dFN0YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91
dFN0YXRlOjpMaW5lTGF5b3V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0
YXRlOjptYXJrRm9yRnVsbExheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3Rh
dGU6OmlzRnVsbExheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6OnVz
ZXNSZXBhaW50Qm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRTdGF0ZTo6c2V0
UmVwYWludFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRTdGF0ZTo6dXBkYXRl
UmVwYWludFJhbmdlRnJvbUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6
OmVuZExpbmVNYXRjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRTdGF0ZTo6c2V0
RW5kTGluZU1hdGNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjpjaGVj
a0ZvckZsb2F0c0Zyb21MYXN0TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3Rh
dGU6OnNldENoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6Okxp
bmVMYXlvdXRTdGF0ZTo6bGluZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0
YXRlOjplbmRMaW5lTG9naWNhbFRvcCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3Rh
dGU6OnNldEVuZExpbmVMb2dpY2FsVG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRT
dGF0ZTo6ZW5kTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3RhdGU6OnNldEVu
ZExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjpsYXN0RmxvYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjpzZXRMYXN0RmxvYXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGluZUxheW91dFN0YXRlOjpmbG9hdHMpOgorICAgICAgICAoV2ViQ29yZTo6
TGluZUxheW91dFN0YXRlOjpmbG9hdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlv
dXRTdGF0ZTo6c2V0RmxvYXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0U3Rh
dGU6OmFkanVzdGVkTG9naWNhbExpbmVUb3ApOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91
dFN0YXRlOjpzZXRBZGp1c3RlZExvZ2ljYWxMaW5lVG9wKToKKyAgICAgICAgKFdlYkNvcmU6Okxp
bmVMYXlvdXRTdGF0ZTo6Zmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0
U3RhdGU6OnNldEZsb3dUaHJlYWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xp
bmVMYXlvdXQuY3BwOiBSZW1vdmUgTGluZUxheW91dFN0YXRlLgorCiAyMDEzLTA5LTEyICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFF0IGFuZCBXaW5kb3dzIGJ1
aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGM5ZWEzNTMuLmJhNGZh
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDM2MCw2ICs0MzYwLDcgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0UmVw
YWludGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGluZUluZm8uaCBcCisJU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xpbmVMYXlvdXRTdGF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGluZVdpZHRoLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGguY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50Lmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKaW5kZXggMTE0NDdiYy4uNTg2OGQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yNDA0
LDYgKzI0MDQsNyBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvTGF5b3V0U3RhdGUuaCBc
CiAgICAgcmVuZGVyaW5nL0xpbmVJbmZvLmggXAogICAgIHJlbmRlcmluZy9MaW5lV2lkdGguaCBc
CisgICAgcmVuZGVyaW5nL0xpbmVMYXlvdXRTdGF0ZS5oIFwKICAgICByZW5kZXJpbmcvTG9naWNh
bFNlbGVjdGlvbk9mZnNldENhY2hlcy5oIFwKICAgICByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEJsb2NrLmggXAogICAgIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5k
ZXggMDUzOTFlZi4uMmRmNmJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xOTk5MCw2ICsxOTk5MCw3IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcTGF5b3V0UmVwYWludGVyLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcTGF5b3V0U3RhdGUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xMaW5lSW5mby5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccmVuZGVyaW5nXExpbmVMYXlvdXRTdGF0ZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXExpbmVXaWR0aC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccmVuZGVyaW5nXFBhaW50SW5mby5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccmVuZGVyaW5nXFBhaW50UGhhc2UuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MzZiOGJlLi5kZmMwNjVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC05OTk3LDYgKzk5OTksNyBAQAogCQlBMDI0NTc0RjE2Q0VBQTI3MDAwRTU2NzEgLyog
RVhURHJhd0J1ZmZlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRVhURHJh
d0J1ZmZlcnMuaDsgcGF0aCA9IGNhbnZhcy9FWFREcmF3QnVmZmVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMDI0NTc1MDE2Q0VBQTI3MDAwRTU2NzEgLyogRVhURHJhd0J1ZmZl
cnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEVYVERyYXdCdWZmZXJzLmlkbDsgcGF0aCA9
IGNhbnZhcy9FWFREcmF3QnVmZmVycy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUEwNkJGRTJDMTdERkI0MzMwMDgzMDJCQiAvKiBMaW5lSW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMaW5lSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBMDcxOEJFODE3RTI2RjE2MDBGNkJGNDQgLyogTGluZUxheW91dFN0YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVMYXlvdXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMDdEMzM1MzE1MkI2MzBFMDAxQjYzOTMgLyogSlNXZWJHTFNoYWRl
clByZWNpc2lvbkZvcm1hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1dlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTA3RDMzNTQxNTJCNjMwRTAwMUI2MzkzIC8qIEpTV2ViR0xTaGFkZXJQcmVjaXNp
b25Gb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTFNoYWRl
clByZWNpc2lvbkZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMDdEMzM1
NzE1MkI2MzJEMDAxQjYzOTMgLyogV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuaDsg
cGF0aCA9IGNhbnZhcy9XZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjAzNzAsNiArMjAzNzEsNyBAQAogCQkJCTJEOTA2NjA0MEJFMTQx
RDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5jcHAgKi8sCiAJCQkJMkQ5MDY2MDUwQkUxNDFENDAw
OTU2OTk4IC8qIExheW91dFN0YXRlLmggKi8sCiAJCQkJQTA2QkZFMkMxN0RGQjQzMzAwODMwMkJC
IC8qIExpbmVJbmZvLmggKi8sCisJCQkJQTA3MThCRTgxN0UyNkYxNjAwRjZCRjQ0IC8qIExpbmVM
YXlvdXRTdGF0ZS5oICovLAogCQkJCUEwQ0IwMDIzMTdERjgxQUMwMDE3ODk2QiAvKiBMaW5lV2lk
dGguY3BwICovLAogCQkJCUEwQ0IwMDIxMTdERTlDRDAwMDE3ODk2QiAvKiBMaW5lV2lkdGguaCAq
LywKIAkJCQk5QkEyNzNGMzE3MjIwNkJCMDA5N0NFNDcgLyogTG9naWNhbFNlbGVjdGlvbk9mZnNl
dENhY2hlcy5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVM
YXlvdXRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVMYXlvdXRTdGF0ZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxZmM4YWEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGluZUxheW91dFN0YXRlLmgKQEAgLTAs
MCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxA
a2RlLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodCByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzIENoYW5nU2VvayBPaCA8c2hpdmFtaWRvd0BnbWFpbC5jb20+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAg
ICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQ09QWVJJR0hUIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgTGluZUxheW91dFN0YXRlX2gKKyNkZWZpbmUgTGluZUxheW91dFN0YXRlX2gKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisvLyBMaWtlIExheW91dFN0YXRlIGZvciBsYXlvdXQoKSwgTGluZUxh
eW91dFN0YXRlIGtlZXBzIHRyYWNrIG9mIGdsb2JhbCBpbmZvcm1hdGlvbgorLy8gZHVyaW5nIGFu
IGVudGlyZSBsaW5lYm94IHRyZWUgbGF5b3V0IHBhc3MgKGFrYSBsYXlvdXRJbmxpbmVDaGlsZHJl
bikuCitjbGFzcyBMaW5lTGF5b3V0U3RhdGUgeworcHVibGljOgorICAgIExpbmVMYXlvdXRTdGF0
ZShib29sIGZ1bGxMYXlvdXQsIExheW91dFVuaXQmIHJlcGFpbnRMb2dpY2FsVG9wLCBMYXlvdXRV
bml0JiByZXBhaW50TG9naWNhbEJvdHRvbSwgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkK
KyAgICAgICAgOiBtX2VuZExpbmVMb2dpY2FsVG9wKDApCisgICAgICAgICwgbV9lbmRMaW5lKDAp
CisgICAgICAgICwgbV9sYXN0RmxvYXQoMCkKKyAgICAgICAgLCBtX2Zsb2F0SW5kZXgoMCkKKyAg
ICAgICAgLCBtX2FkanVzdGVkTG9naWNhbExpbmVUb3AoMCkKKyAgICAgICAgLCBtX2Zsb3dUaHJl
YWQoZmxvd1RocmVhZCkKKyAgICAgICAgLCBtX3JlcGFpbnRMb2dpY2FsVG9wKHJlcGFpbnRMb2dp
Y2FsVG9wKQorICAgICAgICAsIG1fcmVwYWludExvZ2ljYWxCb3R0b20ocmVwYWludExvZ2ljYWxC
b3R0b20pCisgICAgICAgICwgbV9lbmRMaW5lTWF0Y2hlZChmYWxzZSkKKyAgICAgICAgLCBtX2No
ZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lKGZhbHNlKQorICAgICAgICAsIG1faXNGdWxsTGF5b3V0
KGZ1bGxMYXlvdXQpCisgICAgICAgICwgbV91c2VzUmVwYWludEJvdW5kcyhmYWxzZSkKKyAgICB7
IH0KKworICAgIExpbmVJbmZvJiBsaW5lSW5mbygpIHsgcmV0dXJuIG1fbGluZUluZm87IH0KKyAg
ICBjb25zdCBMaW5lSW5mbyYgbGluZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2xpbmVJbmZvOyB9
CisKKyAgICBMYXlvdXRVbml0IGVuZExpbmVMb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbV9l
bmRMaW5lTG9naWNhbFRvcDsgfQorICAgIHZvaWQgc2V0RW5kTGluZUxvZ2ljYWxUb3AoTGF5b3V0
VW5pdCBsb2dpY2FsVG9wKSB7IG1fZW5kTGluZUxvZ2ljYWxUb3AgPSBsb2dpY2FsVG9wOyB9CisK
KyAgICBSb290SW5saW5lQm94KiBlbmRMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9lbmRMaW5lOyB9
CisgICAgdm9pZCBzZXRFbmRMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmUpIHsgbV9lbmRMaW5lID0g
bGluZTsgfQorCisgICAgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFzdEZsb2F0OyB9CisgICAgdm9pZCBzZXRMYXN0RmxvYXQoRmxvYXRpbmdPYmplY3QqIGxh
c3RGbG9hdCkgeyBtX2xhc3RGbG9hdCA9IGxhc3RGbG9hdDsgfQorCisgICAgVmVjdG9yPFJlbmRl
ckJsb2NrOjpGbG9hdFdpdGhSZWN0PiYgZmxvYXRzKCkgeyByZXR1cm4gbV9mbG9hdHM7IH0KKwor
ICAgIHVuc2lnbmVkIGZsb2F0SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2Zsb2F0SW5kZXg7IH0K
KyAgICB2b2lkIHNldEZsb2F0SW5kZXgodW5zaWduZWQgZmxvYXRJbmRleCkgeyBtX2Zsb2F0SW5k
ZXggPSBmbG9hdEluZGV4OyB9CisKKyAgICBMYXlvdXRVbml0IGFkanVzdGVkTG9naWNhbExpbmVU
b3AoKSBjb25zdCB7IHJldHVybiBtX2FkanVzdGVkTG9naWNhbExpbmVUb3A7IH0KKyAgICB2b2lk
IHNldEFkanVzdGVkTG9naWNhbExpbmVUb3AoTGF5b3V0VW5pdCB2YWx1ZSkgeyBtX2FkanVzdGVk
TG9naWNhbExpbmVUb3AgPSB2YWx1ZTsgfQorCisgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1Ro
cmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvd1RocmVhZDsgfQorICAgIHZvaWQgc2V0Rmxvd1Ro
cmVhZChSZW5kZXJGbG93VGhyZWFkKiB0aHJlYWQpIHsgbV9mbG93VGhyZWFkID0gdGhyZWFkOyB9
CisKKyAgICBib29sIGVuZExpbmVNYXRjaGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmRMaW5lTWF0
Y2hlZDsgfQorICAgIHZvaWQgc2V0RW5kTGluZU1hdGNoZWQoYm9vbCBlbmRMaW5lTWF0Y2hlZCkg
eyBtX2VuZExpbmVNYXRjaGVkID0gZW5kTGluZU1hdGNoZWQ7IH0KKworICAgIGJvb2wgY2hlY2tG
b3JGbG9hdHNGcm9tTGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2NoZWNrRm9yRmxvYXRzRnJv
bUxhc3RMaW5lOyB9CisgICAgdm9pZCBzZXRDaGVja0ZvckZsb2F0c0Zyb21MYXN0TGluZShib29s
IGNoZWNrKSB7IG1fY2hlY2tGb3JGbG9hdHNGcm9tTGFzdExpbmUgPSBjaGVjazsgfQorCisgICAg
dm9pZCBtYXJrRm9yRnVsbExheW91dCgpIHsgbV9pc0Z1bGxMYXlvdXQgPSB0cnVlOyB9CisgICAg
Ym9vbCBpc0Z1bGxMYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbExheW91dDsgfQorCisg
ICAgYm9vbCB1c2VzUmVwYWludEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc1JlcGFpbnRC
b3VuZHM7IH0KKworICAgIHZvaWQgc2V0UmVwYWludFJhbmdlKExheW91dFVuaXQgbG9naWNhbEhl
aWdodCkKKyAgICB7CisgICAgICAgIG1fdXNlc1JlcGFpbnRCb3VuZHMgPSB0cnVlOworICAgICAg
ICBtX3JlcGFpbnRMb2dpY2FsVG9wID0gbV9yZXBhaW50TG9naWNhbEJvdHRvbSA9IGxvZ2ljYWxI
ZWlnaHQ7CisgICAgfQorCisgICAgdm9pZCB1cGRhdGVSZXBhaW50UmFuZ2VGcm9tQm94KFJvb3RJ
bmxpbmVCb3gqIGJveCwgTGF5b3V0VW5pdCBwYWdpbmF0aW9uRGVsdGEgPSAwKQorICAgIHsKKyAg
ICAgICAgbV91c2VzUmVwYWludEJvdW5kcyA9IHRydWU7CisgICAgICAgIG1fcmVwYWludExvZ2lj
YWxUb3AgPSBzdGQ6Om1pbihtX3JlcGFpbnRMb2dpY2FsVG9wLCBib3gtPmxvZ2ljYWxUb3BWaXN1
YWxPdmVyZmxvdygpICsgc3RkOjptaW48TGF5b3V0VW5pdD4ocGFnaW5hdGlvbkRlbHRhLCAwKSk7
CisgICAgICAgIG1fcmVwYWludExvZ2ljYWxCb3R0b20gPSBzdGQ6Om1heChtX3JlcGFpbnRMb2dp
Y2FsQm90dG9tLCBib3gtPmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdygpICsgc3RkOjptYXg8
TGF5b3V0VW5pdD4ocGFnaW5hdGlvbkRlbHRhLCAwKSk7CisgICAgfQorCitwcml2YXRlOgorICAg
IExpbmVJbmZvIG1fbGluZUluZm87CisgICAgTGF5b3V0VW5pdCBtX2VuZExpbmVMb2dpY2FsVG9w
OworICAgIFJvb3RJbmxpbmVCb3gqIG1fZW5kTGluZTsKKworICAgIEZsb2F0aW5nT2JqZWN0KiBt
X2xhc3RGbG9hdDsKKyAgICBWZWN0b3I8UmVuZGVyQmxvY2s6OkZsb2F0V2l0aFJlY3Q+IG1fZmxv
YXRzOworICAgIHVuc2lnbmVkIG1fZmxvYXRJbmRleDsKKworICAgIExheW91dFVuaXQgbV9hZGp1
c3RlZExvZ2ljYWxMaW5lVG9wOworCisgICAgUmVuZGVyRmxvd1RocmVhZCogbV9mbG93VGhyZWFk
OworCisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIGEgcmFuZ2Ugb2JqZWN0IGluc3RlYWQg
b2YgdHdvIGludHM/CisgICAgTGF5b3V0VW5pdCYgbV9yZXBhaW50TG9naWNhbFRvcDsKKyAgICBM
YXlvdXRVbml0JiBtX3JlcGFpbnRMb2dpY2FsQm90dG9tOworCisgICAgYm9vbCBtX2VuZExpbmVN
YXRjaGVkIDogMTsKKyAgICBib29sIG1fY2hlY2tGb3JGbG9hdHNGcm9tTGFzdExpbmUgOiAxOwor
ICAgIGJvb2wgbV9pc0Z1bGxMYXlvdXQgOiAxOworICAgIGJvb2wgbV91c2VzUmVwYWludEJvdW5k
cyA6IDE7Cit9OworCit9CisKKyNlbmRpZiAvLyBMaW5lTGF5b3V0U3RhdGVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCA5
NjE4YThmLi5lOTQyZmE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJJbmxp
bmVJdGVyYXRvci5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMaW5l
SW5mby5oIgorI2luY2x1ZGUgIkxpbmVMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgogI2luY2x1ZGUgIlJlbmRlckNvbWJpbmVUZXh0
LmgiCkBAIC0xMTk0LDk1ICsxMTk1LDYgQEAgUm9vdElubGluZUJveCogUmVuZGVyQmxvY2s6OmNy
ZWF0ZUxpbmVCb3hlc0Zyb21CaWRpUnVucyhCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmkKICAgICBy
ZXR1cm4gbGluZUJveDsKIH0KIAotLy8gTGlrZSBMYXlvdXRTdGF0ZSBmb3IgbGF5b3V0KCksIExp
bmVMYXlvdXRTdGF0ZSBrZWVwcyB0cmFjayBvZiBnbG9iYWwgaW5mb3JtYXRpb24KLS8vIGR1cmlu
ZyBhbiBlbnRpcmUgbGluZWJveCB0cmVlIGxheW91dCBwYXNzIChha2EgbGF5b3V0SW5saW5lQ2hp
bGRyZW4pLgotY2xhc3MgTGluZUxheW91dFN0YXRlIHsKLXB1YmxpYzoKLSAgICBMaW5lTGF5b3V0
U3RhdGUoYm9vbCBmdWxsTGF5b3V0LCBMYXlvdXRVbml0JiByZXBhaW50TG9naWNhbFRvcCwgTGF5
b3V0VW5pdCYgcmVwYWludExvZ2ljYWxCb3R0b20sIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJl
YWQpCi0gICAgICAgIDogbV9sYXN0RmxvYXQoMCkKLSAgICAgICAgLCBtX2VuZExpbmUoMCkKLSAg
ICAgICAgLCBtX2Zsb2F0SW5kZXgoMCkKLSAgICAgICAgLCBtX2VuZExpbmVMb2dpY2FsVG9wKDAp
Ci0gICAgICAgICwgbV9lbmRMaW5lTWF0Y2hlZChmYWxzZSkKLSAgICAgICAgLCBtX2NoZWNrRm9y
RmxvYXRzRnJvbUxhc3RMaW5lKGZhbHNlKQotICAgICAgICAsIG1faXNGdWxsTGF5b3V0KGZ1bGxM
YXlvdXQpCi0gICAgICAgICwgbV9yZXBhaW50TG9naWNhbFRvcChyZXBhaW50TG9naWNhbFRvcCkK
LSAgICAgICAgLCBtX3JlcGFpbnRMb2dpY2FsQm90dG9tKHJlcGFpbnRMb2dpY2FsQm90dG9tKQot
ICAgICAgICAsIG1fYWRqdXN0ZWRMb2dpY2FsTGluZVRvcCgwKQotICAgICAgICAsIG1fdXNlc1Jl
cGFpbnRCb3VuZHMoZmFsc2UpCi0gICAgICAgICwgbV9mbG93VGhyZWFkKGZsb3dUaHJlYWQpCi0g
ICAgeyB9Ci0KLSAgICB2b2lkIG1hcmtGb3JGdWxsTGF5b3V0KCkgeyBtX2lzRnVsbExheW91dCA9
IHRydWU7IH0KLSAgICBib29sIGlzRnVsbExheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxs
TGF5b3V0OyB9Ci0KLSAgICBib29sIHVzZXNSZXBhaW50Qm91bmRzKCkgY29uc3QgeyByZXR1cm4g
bV91c2VzUmVwYWludEJvdW5kczsgfQotCi0gICAgdm9pZCBzZXRSZXBhaW50UmFuZ2UoTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0KQotICAgIHsgCi0gICAgICAgIG1fdXNlc1JlcGFpbnRCb3VuZHMg
PSB0cnVlOwotICAgICAgICBtX3JlcGFpbnRMb2dpY2FsVG9wID0gbV9yZXBhaW50TG9naWNhbEJv
dHRvbSA9IGxvZ2ljYWxIZWlnaHQ7IAotICAgIH0KLSAgICAKLSAgICB2b2lkIHVwZGF0ZVJlcGFp
bnRSYW5nZUZyb21Cb3goUm9vdElubGluZUJveCogYm94LCBMYXlvdXRVbml0IHBhZ2luYXRpb25E
ZWx0YSA9IDApCi0gICAgewotICAgICAgICBtX3VzZXNSZXBhaW50Qm91bmRzID0gdHJ1ZTsKLSAg
ICAgICAgbV9yZXBhaW50TG9naWNhbFRvcCA9IG1pbihtX3JlcGFpbnRMb2dpY2FsVG9wLCBib3gt
PmxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdygpICsgbWluPExheW91dFVuaXQ+KHBhZ2luYXRpb25E
ZWx0YSwgMCkpOwotICAgICAgICBtX3JlcGFpbnRMb2dpY2FsQm90dG9tID0gbWF4KG1fcmVwYWlu
dExvZ2ljYWxCb3R0b20sIGJveC0+bG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93KCkgKyBtYXg8
TGF5b3V0VW5pdD4ocGFnaW5hdGlvbkRlbHRhLCAwKSk7Ci0gICAgfQotICAgIAotICAgIGJvb2wg
ZW5kTGluZU1hdGNoZWQoKSBjb25zdCB7IHJldHVybiBtX2VuZExpbmVNYXRjaGVkOyB9Ci0gICAg
dm9pZCBzZXRFbmRMaW5lTWF0Y2hlZChib29sIGVuZExpbmVNYXRjaGVkKSB7IG1fZW5kTGluZU1h
dGNoZWQgPSBlbmRMaW5lTWF0Y2hlZDsgfQotCi0gICAgYm9vbCBjaGVja0ZvckZsb2F0c0Zyb21M
YXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2hlY2tGb3JGbG9hdHNGcm9tTGFzdExpbmU7IH0K
LSAgICB2b2lkIHNldENoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lKGJvb2wgY2hlY2spIHsgbV9j
aGVja0ZvckZsb2F0c0Zyb21MYXN0TGluZSA9IGNoZWNrOyB9Ci0KLSAgICBMaW5lSW5mbyYgbGlu
ZUluZm8oKSB7IHJldHVybiBtX2xpbmVJbmZvOyB9Ci0gICAgY29uc3QgTGluZUluZm8mIGxpbmVJ
bmZvKCkgY29uc3QgeyByZXR1cm4gbV9saW5lSW5mbzsgfQotCi0gICAgTGF5b3V0VW5pdCBlbmRM
aW5lTG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kTGluZUxvZ2ljYWxUb3A7IH0KLSAg
ICB2b2lkIHNldEVuZExpbmVMb2dpY2FsVG9wKExheW91dFVuaXQgbG9naWNhbFRvcCkgeyBtX2Vu
ZExpbmVMb2dpY2FsVG9wID0gbG9naWNhbFRvcDsgfQotCi0gICAgUm9vdElubGluZUJveCogZW5k
TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kTGluZTsgfQotICAgIHZvaWQgc2V0RW5kTGluZShS
b290SW5saW5lQm94KiBsaW5lKSB7IG1fZW5kTGluZSA9IGxpbmU7IH0KLQotICAgIEZsb2F0aW5n
T2JqZWN0KiBsYXN0RmxvYXQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RGbG9hdDsgfQotICAgIHZv
aWQgc2V0TGFzdEZsb2F0KEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXQpIHsgbV9sYXN0RmxvYXQg
PSBsYXN0RmxvYXQ7IH0KLQotICAgIFZlY3RvcjxSZW5kZXJCbG9jazo6RmxvYXRXaXRoUmVjdD4m
IGZsb2F0cygpIHsgcmV0dXJuIG1fZmxvYXRzOyB9Ci0gICAgCi0gICAgdW5zaWduZWQgZmxvYXRJ
bmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxvYXRJbmRleDsgfQotICAgIHZvaWQgc2V0RmxvYXRJ
bmRleCh1bnNpZ25lZCBmbG9hdEluZGV4KSB7IG1fZmxvYXRJbmRleCA9IGZsb2F0SW5kZXg7IH0K
LSAgICAKLSAgICBMYXlvdXRVbml0IGFkanVzdGVkTG9naWNhbExpbmVUb3AoKSBjb25zdCB7IHJl
dHVybiBtX2FkanVzdGVkTG9naWNhbExpbmVUb3A7IH0KLSAgICB2b2lkIHNldEFkanVzdGVkTG9n
aWNhbExpbmVUb3AoTGF5b3V0VW5pdCB2YWx1ZSkgeyBtX2FkanVzdGVkTG9naWNhbExpbmVUb3Ag
PSB2YWx1ZTsgfQotCi0gICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmxvd1RocmVhZDsgfQotICAgIHZvaWQgc2V0Rmxvd1RocmVhZChSZW5kZXJGbG93
VGhyZWFkKiB0aHJlYWQpIHsgbV9mbG93VGhyZWFkID0gdGhyZWFkOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgVmVjdG9yPFJlbmRlckJsb2NrOjpGbG9hdFdpdGhSZWN0PiBtX2Zsb2F0czsKLSAgICBGbG9h
dGluZ09iamVjdCogbV9sYXN0RmxvYXQ7Ci0gICAgUm9vdElubGluZUJveCogbV9lbmRMaW5lOwot
ICAgIExpbmVJbmZvIG1fbGluZUluZm87Ci0gICAgdW5zaWduZWQgbV9mbG9hdEluZGV4OwotICAg
IExheW91dFVuaXQgbV9lbmRMaW5lTG9naWNhbFRvcDsKLSAgICBib29sIG1fZW5kTGluZU1hdGNo
ZWQ7Ci0gICAgYm9vbCBtX2NoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lOwotICAgIAotICAgIGJv
b2wgbV9pc0Z1bGxMYXlvdXQ7Ci0KLSAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgYSByYW5n
ZSBvYmplY3QgaW5zdGVhZCBvZiB0d28gaW50cz8KLSAgICBMYXlvdXRVbml0JiBtX3JlcGFpbnRM
b2dpY2FsVG9wOwotICAgIExheW91dFVuaXQmIG1fcmVwYWludExvZ2ljYWxCb3R0b207Ci0KLSAg
ICBMYXlvdXRVbml0IG1fYWRqdXN0ZWRMb2dpY2FsTGluZVRvcDsKLQotICAgIGJvb2wgbV91c2Vz
UmVwYWludEJvdW5kczsKLSAgICAKLSAgICBSZW5kZXJGbG93VGhyZWFkKiBtX2Zsb3dUaHJlYWQ7
Ci19OwotCiBzdGF0aWMgdm9pZCBkZWxldGVMaW5lUmFuZ2UoTGluZUxheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSwgUmVuZGVyQXJlbmEqIGFyZW5hLCBSb290SW5saW5lQm94KiBzdGFydExpbmUsIFJv
b3RJbmxpbmVCb3gqIHN0b3BMaW5lID0gMCkKIHsKICAgICBSb290SW5saW5lQm94KiBib3hUb0Rl
bGV0ZSA9IHN0YXJ0TGluZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>