<?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>87600</bug_id>
          
          <creation_ts>2012-05-27 15:02:17 -0700</creation_ts>
          <short_desc>[BlackBerry] Make custom compositing thread layers more flexible</short_desc>
          <delta_ts>2012-05-28 14:20:56 -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>WebKit BlackBerry</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>
          <dependson>87598</dependson>
          <blocked>87601</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Arvid Nilsson">anilsson</reporter>
          <assigned_to name="Arvid Nilsson">anilsson</assigned_to>
          <cc>jpetsovits</cc>
    
    <cc>kpiascik</cc>
    
    <cc>manyoso</cc>
    
    <cc>mifenton</cc>
    
    <cc>mlattanzio</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>634789</commentid>
    <comment_count>0</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-05-27 15:02:17 -0700</bug_when>
    <thetext>Introduce a LayerCompositingThreadClient that&apos;s used to fine tune the
    behaviour of custom layers. Let the LayerTiler be a
    LayerCompositingThreadClient and thus decouple it from
    LayerCompositingThread. Adjust method signatures to allow a one-to-many
    relationship between Client and Layer.
    
    Remove the old LayerCompositingThread::drawCustom() in favour of this new
    Client interface.
    
    PR #156812

Please note that this has not been internally reviewed yet, so it needs actual review. And also, it has a dependency that needs to be landed first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634801</commentid>
    <comment_count>1</comment_count>
      <attachid>144242</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-05-27 15:33:47 -0700</bug_when>
    <thetext>Created attachment 144242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635270</commentid>
    <comment_count>2</comment_count>
      <attachid>144242</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-05-28 09:03:28 -0700</bug_when>
    <thetext>Comment on attachment 144242
Patch

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

Looks good to me except:

&gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:-449
&gt; -    if (m_texID || pluginView())
&gt; -        return;
&gt; -
&gt; -#if ENABLE(VIDEO)
&gt; -    if (mediaPlayer())
&gt; -        return;
&gt; -#endif

Any reason for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635291</commentid>
    <comment_count>3</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-05-28 09:37:13 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 144242 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144242&amp;action=review
&gt; 
&gt; Looks good to me except:
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:-449
&gt; &gt; -    if (m_texID || pluginView())
&gt; &gt; -        return;
&gt; &gt; -
&gt; &gt; -#if ENABLE(VIDEO)
&gt; &gt; -    if (mediaPlayer())
&gt; &gt; -        return;
&gt; &gt; -#endif
&gt; 
&gt; Any reason for this?

Thanks for reviewing :) In fact, if m_texId (I.e. Canvas or webgl layer) or pluginview or mediaplayer, m_client will be 0, so they might as well just fall through.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635305</commentid>
    <comment_count>4</comment_count>
      <attachid>144242</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-28 10:17:33 -0700</bug_when>
    <thetext>Comment on attachment 144242
Patch

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

Looks good.

&gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:297
&gt; +void LayerCompositingThread::drawMissingTextures(int positionLocation, int texCoordLocation, const FloatRect&amp; visibleRect)

Is visibleRect needed? If it is going to be later maybe mark it as unused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635385</commentid>
    <comment_count>5</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-05-28 13:31:50 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 144242 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144242&amp;action=review
&gt; 
&gt; Looks good.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:297
&gt; &gt; +void LayerCompositingThread::drawMissingTextures(int positionLocation, int texCoordLocation, const FloatRect&amp; visibleRect)
&gt; 
&gt; Is visibleRect needed? If it is going to be later maybe mark it as unused.

It was added for symmetry with drawTextures - I anticipated that this method would need to do similar calculations as drawTextures, only drawing checkerboard instead of actual contents. However, in the future it might be that visibleRect will be removed from both methods instead, since it&apos;s only used for media layers and the calculations there look a bit sketchy...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635387</commentid>
    <comment_count>6</comment_count>
      <attachid>144392</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-05-28 13:37:18 -0700</bug_when>
    <thetext>Created attachment 144392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635388</commentid>
    <comment_count>7</comment_count>
      <attachid>144392</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-05-28 13:38:06 -0700</bug_when>
    <thetext>Comment on attachment 144392
Patch

New patch, adressing Rob&apos;s comment about visibleRect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635392</commentid>
    <comment_count>8</comment_count>
      <attachid>144392</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-28 13:40:31 -0700</bug_when>
    <thetext>Comment on attachment 144392
Patch

Looks fine now :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635407</commentid>
    <comment_count>9</comment_count>
      <attachid>144392</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-28 14:20:51 -0700</bug_when>
    <thetext>Comment on attachment 144392
Patch

Clearing flags on attachment: 144392

Committed r118706: &lt;http://trac.webkit.org/changeset/118706&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635409</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-28 14:20:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144242</attachid>
            <date>2012-05-27 15:33:47 -0700</date>
            <delta_ts>2012-05-28 13:37:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87600-20120528003345.patch</filename>
            <type>text/plain</type>
            <size>22663</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk1NWQ5YTVlZDY4MjUw
OGY2NTRhYjJiMzBjMmJiZjJhODZmNjVlMC4uMWNlNzM5ZGQ2NWEzNGI0NWQ0YTJjNGZlMzcxYzZk
NmNjNTY0YjI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY1IEBACiAyMDEyLTA1LTI3ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAorICAgICAgICBbQmxhY2tCZXJyeV0gTWFr
ZSBjdXN0b20gY29tcG9zaXRpbmcgdGhyZWFkIGxheWVycyBtb3JlIGZsZXhpYmxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzYwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjZSBhIExheWVy
Q29tcG9zaXRpbmdUaHJlYWRDbGllbnQgdGhhdCdzIHVzZWQgdG8gZmluZSB0dW5lIHRoZQorICAg
ICAgICBiZWhhdmlvdXIgb2YgY3VzdG9tIGxheWVycy4gTGV0IHRoZSBMYXllclRpbGVyIGJlIGEK
KyAgICAgICAgTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudCBhbmQgdGh1cyBkZWNvdXBsZSBp
dCBmcm9tCisgICAgICAgIExheWVyQ29tcG9zaXRpbmdUaHJlYWQuIEFkanVzdCBtZXRob2Qgc2ln
bmF0dXJlcyB0byBhbGxvdyBhIG9uZS10by1tYW55CisgICAgICAgIHJlbGF0aW9uc2hpcCBiZXR3
ZWVuIENsaWVudCBhbmQgTGF5ZXIuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBvbGQgTGF5ZXJDb21w
b3NpdGluZ1RocmVhZDo6ZHJhd0N1c3RvbSgpIGluIGZhdm91ciBvZiB0aGlzIG5ldworICAgICAg
ICBDbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgIFBSICMxNTY4MTIKKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6TGF5ZXJDb21wb3NpdGluZ1RocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjp+TGF5ZXJDb21w
b3NpdGluZ1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFk
OjpkZWxldGVUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhy
ZWFkOjpkcmF3VGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZDo6aGFzTWlzc2luZ1RleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9z
aXRpbmdUaHJlYWQ6OmRyYXdNaXNzaW5nVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDb21wb3NpdGluZ1RocmVhZDo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6YmluZENvbnRlbnRzVGV4dHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpzZXRWaXNpYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNjaGVkdWxlQ29t
bWl0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9z
aXRpbmdUaHJlYWQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGF5ZXJDb21wb3Np
dGluZ1RocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
ckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6On5MYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OmJp
bmRDb250ZW50c1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZENsaWVudDo6aGFzTWlzc2luZ1RleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OmRyYXdNaXNzaW5nVGV4dHVyZXMpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6c2NoZWR1bGVDb21taXQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyOjpkcmF3RGVidWdCb3JkZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclRpbGVyOjpMYXllclRpbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyVGlsZXI6OmxheWVyQ29tcG9zaXRpbmdUaHJlYWREZXN0cm95ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJUaWxlcjo6bGF5ZXJWaXNpYmlsaXR5Q2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRpbGVyOjp1cGxvYWRUZXh0dXJlc0lmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyVGlsZXI6OmRlbGV0ZVRleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyVGlsZXI6OnNjaGVkdWxlQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJUaWxlcjo6YmluZENvbnRlbnRzVGV4dHVyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmg6CisgICAgICAgIChMYXllclRp
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXI6Omhhc01pc3NpbmdUZXh0dXJlcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllcldlYktpdFRocmVhZDo6TGF5ZXJXZWJLaXRU
aHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJL
aXRUaHJlYWQuaDoKKyAgICAgICAgKExheWVyV2ViS2l0VGhyZWFkKToKKworMjAxMi0wNS0yNyAg
QXJ2aWQgTmlsc3NvbiAgPGFuaWxzc29uQHJpbS5jb20+CisKICAgICAgICAgW0JsYWNrQmVycnld
IEFkZCBhbiBvdmVybGF5IGxheWVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NzU2NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhy
ZWFkLmNwcAppbmRleCBmOGNiYzVhODgzM2ZmNGZiY2VlYzJiZGJjYTY2OTM4NTE2ODhhYWFkLi5i
NTQ0YTkyNzllNThkZGQxZjkyMjZhM2UxYzE1OTE2NmE0YmYwNTY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdU
aHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1
ZGUgIkxheWVyQ29tcG9zaXRpbmdUaHJlYWQuaCIKIAorI2luY2x1ZGUgIkxheWVyQ29tcG9zaXRp
bmdUaHJlYWRDbGllbnQuaCIKICNpbmNsdWRlICJMYXllck1lc3NhZ2UuaCIKICNpbmNsdWRlICJM
YXllclJlbmRlcmVyLmgiCiAjaW5jbHVkZSAiTGF5ZXJXZWJLaXRUaHJlYWQuaCIKQEAgLTU0LDEy
ICs1NSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8TGF5ZXJDb21w
b3NpdGluZ1RocmVhZD4gTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6Y3JlYXRlKExheWVyVHlwZSB0
eXBlLCBQYXNzUmVmUHRyPExheWVyVGlsZXI+IHRpbGVyKQorUGFzc1JlZlB0cjxMYXllckNvbXBv
c2l0aW5nVGhyZWFkPiBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpjcmVhdGUoTGF5ZXJUeXBlIHR5
cGUsIExheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IExheWVyQ29tcG9zaXRpbmdUaHJlYWQodHlwZSwgdGlsZXIpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IExheWVyQ29tcG9zaXRpbmdUaHJlYWQodHlwZSwgY2xpZW50KSk7
CiB9CiAKLUxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQoTGF5
ZXJUeXBlIHR5cGUsIFBhc3NSZWZQdHI8TGF5ZXJUaWxlcj4gdGlsZXIpCitMYXllckNvbXBvc2l0
aW5nVGhyZWFkOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkKExheWVyVHlwZSB0eXBlLCBMYXllckNv
bXBvc2l0aW5nVGhyZWFkQ2xpZW50KiBjbGllbnQpCiAgICAgOiBMYXllckRhdGEodHlwZSkKICAg
ICAsIG1fbGF5ZXJSZW5kZXJlcigwKQogICAgICwgbV9zdXBlcmxheWVyKDApCkBAIC02Nyw3ICs2
OCw3IEBAIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQoTGF5
ZXJUeXBlIHR5cGUsIFBhc3NSZWZQdHI8TGF5ZXJUCiAgICAgLCBtX2RyYXdPcGFjaXR5KDApCiAg
ICAgLCBtX3Zpc2libGUoZmFsc2UpCiAgICAgLCBtX2NvbW1pdFNjaGVkdWxlZChmYWxzZSkKLSAg
ICAsIG1fdGlsZXIodGlsZXIpCisgICAgLCBtX2NsaWVudChjbGllbnQpCiB7CiB9CiAKQEAgLTc1
LDkgKzc2LDYgQEAgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6fkxheWVyQ29tcG9zaXRpbmdUaHJl
YWQoKQogewogICAgIEFTU0VSVChpc0NvbXBvc2l0aW5nVGhyZWFkKCkpOwogCi0gICAgaWYgKG1f
dGlsZXIpCi0gICAgICAgIG1fdGlsZXItPmxheWVyQ29tcG9zaXRpbmdUaHJlYWREZXN0cm95ZWQo
KTsKLQogICAgIEFTU0VSVCghc3VwZXJsYXllcigpKTsKIAogICAgIC8vIFJlbW92ZSB0aGUgc3Vw
ZXJsYXllciByZWZlcmVuY2UgZnJvbSBhbGwgc3VibGF5ZXJzLgpAQCAtOTEsNiArODksOSBAQCBM
YXllckNvbXBvc2l0aW5nVGhyZWFkOjp+TGF5ZXJDb21wb3NpdGluZ1RocmVhZCgpCiAgICAgLy8g
bGF5ZXIgcmVuZGVyZXIgdG8gdHJhY2sgdXMgYW55bW9yZQogICAgIGlmIChtX2xheWVyUmVuZGVy
ZXIpCiAgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+cmVtb3ZlTGF5ZXIodGhpcyk7CisKKyAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5sYXllckNvbXBvc2l0aW5nVGhyZWFkRGVz
dHJveWVkKHRoaXMpOwogfQogCiB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNldExheWVy
UmVuZGVyZXIoTGF5ZXJSZW5kZXJlciogcmVuZGVyZXIpCkBAIC0xMDcsOCArMTA4LDggQEAgdm9p
ZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpkZWxldGVUZXh0dXJlcygpCiB7CiAgICAgcmVsZWFz
ZVRleHR1cmVSZXNvdXJjZXMoKTsKIAotICAgIGlmIChtX3RpbGVyKQotICAgICAgICBtX3RpbGVy
LT5kZWxldGVUZXh0dXJlcygpOworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQt
PmRlbGV0ZVRleHR1cmVzKHRoaXMpOwogfQogCiB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6
OnNldERyYXdUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKQEAg
LTI1OCwxNSArMjU5LDggQEAgdm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpkcmF3VGV4dHVy
ZXMoaW50IHBvc2l0aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2EKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmIChtX2xheWVyVHlwZSA9PSBDdXN0b21MYXllcikgewotICAgICAg
ICAvLyBDdXN0b20gbGF5ZXJzIGRvbid0IGhhdmUgYSBMYXllclRpbGVyLCBzbyB0aGV5IGVpdGhl
ciBoYXZlIHRvIHNldAotICAgICAgICAvLyBtX3RleElEIG9yIGltcGxlbWVudCBkcmF3Q3VzdG9t
LgotICAgICAgICBkcmF3Q3VzdG9tKHBvc2l0aW9uTG9jYXRpb24sIHRleENvb3JkTG9jYXRpb24p
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1fdGlsZXIpCi0gICAgICAgIG1f
dGlsZXItPmRyYXdUZXh0dXJlcyh0aGlzLCBwb3NpdGlvbkxvY2F0aW9uLCB0ZXhDb29yZExvY2F0
aW9uKTsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kcmF3VGV4dHVyZXMo
dGhpcywgcG9zaXRpb25Mb2NhdGlvbiwgdGV4Q29vcmRMb2NhdGlvbik7CiB9CiAKIHZvaWQgTGF5
ZXJDb21wb3NpdGluZ1RocmVhZDo6ZHJhd1N1cmZhY2UoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGRyYXdUcmFuc2Zvcm0sIExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIG1hc2ssIGludCBwb3Np
dGlvbkxvY2F0aW9uLCBpbnQgdGV4Q29vcmRMb2NhdGlvbikKQEAgLTI5NSwxOCArMjg5LDE1IEBA
IHZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6ZHJhd1N1cmZhY2UoY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIGRyYXdUcmFuc2ZvCiAgICAgfQogfQogCi12b2lkIExheWVyQ29tcG9zaXRp
bmdUaHJlYWQ6OmRyYXdNaXNzaW5nVGV4dHVyZXMoaW50IHBvc2l0aW9uTG9jYXRpb24sIGludCB0
ZXhDb29yZExvY2F0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHZpc2libGVSZWN0KQorYm9vbCBMYXll
ckNvbXBvc2l0aW5nVGhyZWFkOjpoYXNNaXNzaW5nVGV4dHVyZXMoKSBjb25zdAogewotICAgIGlm
IChtX3BsdWdpblZpZXcgfHwgbV90ZXhJRCkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYgRU5BQkxF
KFZJREVPKQotICAgIGlmIChtX21lZGlhUGxheWVyKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYK
KyAgICByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+aGFzTWlzc2luZ1RleHR1cmVzKHRoaXMp
IDogZmFsc2U7Cit9CiAKLSAgICBpZiAobV90aWxlcikKLSAgICAgICAgbV90aWxlci0+ZHJhd01p
c3NpbmdUZXh0dXJlcyh0aGlzLCBwb3NpdGlvbkxvY2F0aW9uLCB0ZXhDb29yZExvY2F0aW9uKTsK
K3ZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6ZHJhd01pc3NpbmdUZXh0dXJlcyhpbnQgcG9z
aXRpb25Mb2NhdGlvbiwgaW50IHRleENvb3JkTG9jYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgdmlz
aWJsZVJlY3QpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZHJhd01p
c3NpbmdUZXh0dXJlcyh0aGlzLCBwb3NpdGlvbkxvY2F0aW9uLCB0ZXhDb29yZExvY2F0aW9uKTsK
IH0KIAogdm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpyZWxlYXNlVGV4dHVyZVJlc291cmNl
cygpCkBAIC00MjEsMTYgKzQxMiwxNCBAQCB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNl
dFN1YmxheWVycyhjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ29tcG9zaXRpbmdUaAogCiB2b2lk
IExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnVwZGF0ZVRleHR1cmVDb250ZW50c0lmTmVlZGVkKCkK
IHsKLSAgICBpZiAobV90ZXhJRCB8fCBwbHVnaW5WaWV3KCkpCi0gICAgICAgIHJldHVybjsKLQot
I2lmIEVOQUJMRShWSURFTykKLSAgICBpZiAobWVkaWFQbGF5ZXIoKSkKLSAgICAgICAgcmV0dXJu
OwotI2VuZGlmCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+dXBsb2FkVGV4
dHVyZXNJZk5lZWRlZCh0aGlzKTsKK30KIAotICAgIGlmIChtX3RpbGVyKQotICAgICAgICBtX3Rp
bGVyLT51cGxvYWRUZXh0dXJlc0lmTmVlZGVkKCk7Cit2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJl
YWQ6OmJpbmRDb250ZW50c1RleHR1cmUoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAg
bV9jbGllbnQtPmJpbmRDb250ZW50c1RleHR1cmUodGhpcyk7CiB9CiAKIHZvaWQgTGF5ZXJDb21w
b3NpdGluZ1RocmVhZDo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCkBAIC00NDAsMTYgKzQyOSw4
IEBAIHZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6c2V0VmlzaWJsZShib29sIHZpc2libGUp
CiAKICAgICBtX3Zpc2libGUgPSB2aXNpYmxlOwogCi0gICAgaWYgKG1fdGV4SUQgfHwgcGx1Z2lu
VmlldygpKQotICAgICAgICByZXR1cm47Ci0KLSNpZiBFTkFCTEUoVklERU8pCi0gICAgaWYgKG1l
ZGlhUGxheWVyKCkpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotCi0gICAgaWYgKG1fdGlsZXIp
Ci0gICAgICAgIG1fdGlsZXItPmxheWVyVmlzaWJpbGl0eUNoYW5nZWQodmlzaWJsZSk7CisgICAg
aWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bGF5ZXJWaXNpYmlsaXR5Q2hhbmdlZCh0
aGlzLCB2aXNpYmxlKTsKIH0KIAogdm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpzZXROZWVk
c0NvbW1pdCgpCkBAIC00NjAsNyArNDQxLDcgQEAgdm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFk
OjpzZXROZWVkc0NvbW1pdCgpCiAKIHZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6c2NoZWR1
bGVDb21taXQoKQogewotICAgIGlmICghbV90aWxlcikKKyAgICBpZiAoIW1fY2xpZW50KQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoIWlzV2ViS2l0VGhyZWFkKCkpIHsKQEAgLTQ3NSw5ICs0
NTYsNyBAQCB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNjaGVkdWxlQ29tbWl0KCkKIAog
ICAgIG1fY29tbWl0U2NoZWR1bGVkID0gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogVGhlIG9ubHkg
d2F5IHRvIGdldCBhdCBvdXIgTGF5ZXJXZWJLaXRUaHJlYWQgaXMgdG8gZ28gdGhyb3VnaCB0aGUg
dGlsZXIuCi0gICAgaWYgKExheWVyV2ViS2l0VGhyZWFkKiBsYXllciA9IG1fdGlsZXItPmxheWVy
KCkpCi0gICAgICAgIGxheWVyLT5zZXROZWVkc0NvbW1pdCgpOworICAgIG1fY2xpZW50LT5zY2hl
ZHVsZUNvbW1pdCgpOwogfQogCiBib29sIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnVwZGF0ZUFu
aW1hdGlvbnMoZG91YmxlIGN1cnJlbnRUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRp
bmdUaHJlYWQuaAppbmRleCBjYTNmZWU5YmZkNWRhOWM5ZjgwOGVmNDZiNGFiMDNkOTQ4YjQ4OTAz
Li4wODg5YmUyY2VhMTY2NTI1ODEwMmRjMTE0Yjg3N2JiNzY5ODMzNzAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRp
bmdUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaApAQCAtNTQsMTEgKzU0LDEyIEBAIGNsYXNzIEJ1
ZmZlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBMYXllckNvbXBvc2l0aW5nVGhy
ZWFkQ2xpZW50OwogY2xhc3MgTGF5ZXJSZW5kZXJlcjsKIAogY2xhc3MgTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxMYXllckNvbXBvc2l0aW5nVGhy
ZWFkPiwgcHVibGljIExheWVyRGF0YSwgcHVibGljIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHdWFy
ZGVkUG9pbnRlckJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExheWVyQ29t
cG9zaXRpbmdUaHJlYWQ+IGNyZWF0ZShMYXllclR5cGUsIFBhc3NSZWZQdHI8TGF5ZXJUaWxlcj4p
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPExheWVyQ29tcG9zaXRpbmdUaHJlYWQ+IGNyZWF0ZShM
YXllclR5cGUsIExheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQqKTsKIAogICAgIC8vIFRocmVh
ZCBzYWZlCiAgICAgdm9pZCBzZXRQbHVnaW5WaWV3KFBsdWdpblZpZXcqKTsKQEAgLTcyLDExICs3
Myw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2UgaGF2ZSBhbiBhbmltYXRp
b24KICAgICBib29sIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGN1cnJlbnRUaW1lKTsKICAgICB2
b2lkIHVwZGF0ZVRleHR1cmVDb250ZW50c0lmTmVlZGVkKCk7Ci0gICAgdm9pZCBiaW5kQ29udGVu
dHNUZXh0dXJlKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX3RpbGVyKQotICAgICAgICAgICAgbV90
aWxlci0+YmluZENvbnRlbnRzVGV4dHVyZSgpOwotICAgIH0KKyAgICB2b2lkIGJpbmRDb250ZW50
c1RleHR1cmUoKTsKIAogICAgIGNvbnN0IExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIHJvb3RMYXll
cigpIGNvbnN0OwogICAgIHZvaWQgc2V0U3VibGF5ZXJzKGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5
ZXJDb21wb3NpdGluZ1RocmVhZD4gPiYpOwpAQCAtMTEwLDEwICsxMDcsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkZWxldGVUZXh0dXJlcygpOwogCiAgICAgdm9pZCBkcmF3VGV4dHVyZXMoaW50IHBv
c2l0aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2F0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHZp
c2libGVSZWN0KTsKLSAgICBib29sIGhhc01pc3NpbmdUZXh0dXJlcygpIGNvbnN0IHsgcmV0dXJu
IG1fdGlsZXIgPyBtX3RpbGVyLT5oYXNNaXNzaW5nVGV4dHVyZXMoKSA6IGZhbHNlOyB9CisgICAg
Ym9vbCBoYXNNaXNzaW5nVGV4dHVyZXMoKSBjb25zdDsKICAgICB2b2lkIGRyYXdNaXNzaW5nVGV4
dHVyZXMoaW50IHBvc2l0aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2F0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHZpc2libGVSZWN0KTsKICAgICB2b2lkIGRyYXdTdXJmYWNlKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbWFzaywgaW50IHBvc2l0
aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2F0aW9uKTsKLSAgICBib29sIGlzRGlydHkoKSBj
b25zdCB7IHJldHVybiBtX3RpbGVyID8gbV90aWxlci0+aGFzRGlydHlUaWxlcygpIDogZmFsc2U7
IH0KIAogICAgIHZvaWQgcmVsZWFzZVRleHR1cmVSZXNvdXJjZXMoKTsKIApAQCAtMTQ3LDEwICsx
NDMsOCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+TGF5ZXJDb21wb3NpdGlu
Z1RocmVhZCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdDdXN0b20oaW50IHBvc2l0aW9uTG9j
YXRpb24sIGludCB0ZXhDb29yZExvY2F0aW9uKSB7IH0KLQogcHJpdmF0ZToKLSAgICBMYXllckNv
bXBvc2l0aW5nVGhyZWFkKExheWVyVHlwZSwgUGFzc1JlZlB0cjxMYXllclRpbGVyPik7CisgICAg
TGF5ZXJDb21wb3NpdGluZ1RocmVhZChMYXllclR5cGUsIExheWVyQ29tcG9zaXRpbmdUaHJlYWRD
bGllbnQqKTsKIAogICAgIHZvaWQgdXBkYXRlVGlsZUNvbnRlbnRzKGNvbnN0IEludFJlY3QmIHRp
bGUpOwogCkBAIC0xODksOSArMTgzLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Zpc2libGU7
CiAgICAgYm9vbCBtX2NvbW1pdFNjaGVkdWxlZDsKIAotICAgIFJlZlB0cjxMYXllclRpbGVyPiBt
X3RpbGVyOwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJBbmltYXRpb24+ID4gbV9ydW5uaW5nQW5p
bWF0aW9uczsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQW5pbWF0aW9uPiA+IG1fc3VzcGVuZGVk
QW5pbWF0aW9uczsKKworICAgIExheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQqIG1fY2xpZW50
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
Q29tcG9zaXRpbmdUaHJlYWRDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NGViZjllYzE5ODM3NmJhYzg3
NDI0ZWRmODU2YmU5YzE4OWQwODAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50
LmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAq
LworCisjaWZuZGVmIExheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnRfaAorI2RlZmluZSBMYXll
ckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50X2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBMYXllckNvbXBvc2l0aW5nVGhy
ZWFkOworCitjbGFzcyBMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5MYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgbGF5ZXJDb21wb3NpdGluZ1RocmVhZERlc3Ryb3llZChMYXllckNvbXBvc2l0aW5n
VGhyZWFkKikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGxheWVyVmlzaWJpbGl0eUNoYW5nZWQo
TGF5ZXJDb21wb3NpdGluZ1RocmVhZCosIGJvb2wgdmlzaWJsZSkgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIHVwbG9hZFRleHR1cmVzSWZOZWVkZWQoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCopID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmVzKExheWVyQ29tcG9zaXRpbmdUaHJlYWQq
LCBpbnQgcG9zaXRpb25Mb2NhdGlvbiwgaW50IHRleENvb3JkTG9jYXRpb24sIGRvdWJsZSBzY2Fs
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5n
VGhyZWFkKikgPSAwOworCisgICAgLy8gT3B0aW9uYWwuIEFsbG93cyBsYXllcnMgdG8gc2VydmUg
YXMgYSBtYXNrIGZvciBvdGhlciBsYXllcnMKKyAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRz
VGV4dHVyZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKikgeyB9CisKKyAgICAvLyBPcHRpb25hbC4g
QWxsb3dzIGxheWVycyB0byBoYXZlIHVuY2FjaGVkIHJlZ2lvbnMsIHR5cGljYWxseSBkcmF3biBh
cyBjaGVja2VyYm9hcmQKKyAgICB2aXJ0dWFsIGJvb2wgaGFzTWlzc2luZ1RleHR1cmVzKGNvbnN0
IExheWVyQ29tcG9zaXRpbmdUaHJlYWQqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBkcmF3TWlzc2luZ1RleHR1cmVzKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqLCBp
bnQgcG9zaXRpb25Mb2NhdGlvbiwgaW50IHRleENvb3JkTG9jYXRpb24pIHsgfQorCisgICAgLy8g
VW5saWtlIHRoZSBvdGhlciBtZXRob2RzIGhlcmUsIHRoaXMgb25lIHdpbGwgYmUgY2FsbGVkIG9u
IHRoZSBXZWJLaXQgdGhyZWFkCisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tbWl0KCkgeyB9
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHAKaW5kZXgg
NGYwYWY4ZWFmZDZmMTIwNDc1MDhkYzQ4NzIwOWU3ODdmZjRhM2UwZi4uM2NlM2Q4MDIwNDUwODVl
NDExYTc2NWM1ODkyMmVlOWZjNDRjYTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwCkBA
IC00OCw3ICs0OCw2IEBACiAjZGVmaW5lIEVOQUJMRV9TQ0lTU09SIDEKIAogI2RlZmluZSBERUJV
R19TSEFERVJfQ09NUElMQVRJT04gMAotI2RlZmluZSBERUJVR19ESVJUWV9MQVlFUlMgMCAvLyBT
aG93IGRpcnR5IGxheWVycyBhcyByZWQuCiAjZGVmaW5lIERFQlVHX0xBWUVSX0FOSU1BVElPTlMg
MCAvLyBTaG93IHJ1bm5pbmcgYW5pbWF0aW9ucyBhcyBncmVlbi4KICNkZWZpbmUgREVCVUdfQ0xJ
UFBJTkcgMAogCkBAIC01NjgsMTEgKzU2Nyw2IEBAIHZvaWQgTGF5ZXJSZW5kZXJlcjo6ZHJhd0Rl
YnVnQm9yZGVyKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyKQogewogICAgIENvbG9yIGJv
cmRlckNvbG9yID0gbGF5ZXItPmJvcmRlckNvbG9yKCk7CiAKLSNpZiBERUJVR19ESVJUWV9MQVlF
UlMKLSAgICBpZiAobGF5ZXItPmlzRGlydHkoKSkKLSAgICAgICAgYm9yZGVyQ29sb3IgPSBDb2xv
cigweEZGLCAweDAwLCAweDAwLCAweEZGKTsKLSNlbmRpZgotCiAjaWYgREVCVUdfTEFZRVJfQU5J
TUFUSU9OUwogICAgIGlmIChsYXllci0+aGFzUnVubmluZ0FuaW1hdGlvbnMoKSkKICAgICAgICAg
Ym9yZGVyQ29sb3IgPSAgQ29sb3IoMHgwMCwgMHhGRiwgMHgwMCwgMHhGRik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRp
bGVyLmNwcAppbmRleCBkNTE3YWFhN2I0MDI0NDg5MzJkZDQyYmY5ZGFiNDBkMTAyYThkMmM0Li4w
NDEyN2VlNDU1NWM5NzJiNWI1MmJmM2M5MjVkMTA3YTY2NTM5ZmM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxl
ci5jcHAKQEAgLTc1LDYgKzc1LDcgQEAgTGF5ZXJUaWxlcjo6TGF5ZXJUaWxlcihMYXllcldlYktp
dFRocmVhZCogbGF5ZXIpCiAgICAgLCBtX2hhc01pc3NpbmdUZXh0dXJlcyhmYWxzZSkKICAgICAs
IG1fY29udGVudHNTY2FsZSgwLjApCiB7CisgICAgcmVmKCk7IC8vIFRoaXMgcmVmKCkgaXMgbWF0
Y2hlZCBieSBhIGRlcmVmIGluIGxheWVyQ29tcG9zaXRpbmdUaHJlYWREZXN0cm95ZWQoKTsKIH0K
IAogTGF5ZXJUaWxlcjo6fkxheWVyVGlsZXIoKQpAQCAtOTAsOSArOTEsMTAgQEAgdm9pZCBMYXll
clRpbGVyOjpsYXllcldlYktpdFRocmVhZERlc3Ryb3llZCgpCiAgICAgbV9sYXllciA9IDA7CiB9
CiAKLXZvaWQgTGF5ZXJUaWxlcjo6bGF5ZXJDb21wb3NpdGluZ1RocmVhZERlc3Ryb3llZCgpCit2
b2lkIExheWVyVGlsZXI6OmxheWVyQ29tcG9zaXRpbmdUaHJlYWREZXN0cm95ZWQoTGF5ZXJDb21w
b3NpdGluZ1RocmVhZCopCiB7CiAgICAgQVNTRVJUKGlzQ29tcG9zaXRpbmdUaHJlYWQoKSk7Cisg
ICAgZGVyZWYoKTsgLy8gTWF0Y2hlZCBieSByZWYoKSBpbiBjb25zdHJ1Y3RvcjsKIH0KIAogdm9p
ZCBMYXllclRpbGVyOjpzZXROZWVkc0Rpc3BsYXkoY29uc3QgRmxvYXRSZWN0JiBkaXJ0eVJlY3Qp
CkBAIC0zNDksNyArMzUxLDcgQEAgdm9pZCBMYXllclRpbGVyOjpjb21taXRQZW5kaW5nVGV4dHVy
ZVVwbG9hZHMoKQogICAgIG1fcGVuZGluZ1RleHR1cmVKb2JzLmNsZWFyKCk7CiB9CiAKLXZvaWQg
TGF5ZXJUaWxlcjo6bGF5ZXJWaXNpYmlsaXR5Q2hhbmdlZChib29sIHZpc2libGUpCit2b2lkIExh
eWVyVGlsZXI6OmxheWVyVmlzaWJpbGl0eUNoYW5nZWQoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCos
IGJvb2wgdmlzaWJsZSkKIHsKICAgICAvLyBGb3IgdmlzaWJsZSBsYXllcnMsIHdlIGhhbmRsZSB0
aGUgdGlsZS1sZXZlbCB2aXNpYmlsaXR5CiAgICAgLy8gaW4gdGhlIGRyYXcgbG9vcCwgc2VlIExh
eWVyVGlsZXI6OmRyYXdUZXh0dXJlcygpLgpAQCAtMzY5LDcgKzM3MSw3IEBAIHZvaWQgTGF5ZXJU
aWxlcjo6bGF5ZXJWaXNpYmlsaXR5Q2hhbmdlZChib29sIHZpc2libGUpCiAgICAgfQogfQogCi12
b2lkIExheWVyVGlsZXI6OnVwbG9hZFRleHR1cmVzSWZOZWVkZWQoKQordm9pZCBMYXllclRpbGVy
Ojp1cGxvYWRUZXh0dXJlc0lmTmVlZGVkKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqKQogewogICAg
IFRpbGVKb2JzTWFwIHRpbGVKb2JzTWFwOwogICAgIERlcXVlPFRleHR1cmVKb2I+Ojpjb25zdF9p
dGVyYXRvciB0ZXh0dXJlSm9iSXRlckVuZCA9IG1fdGV4dHVyZUpvYnMuZW5kKCk7CkBAIC02MTEs
NyArNjEzLDcgQEAgdm9pZCBMYXllclRpbGVyOjpyZW1vdmVSZW5kZXJKb2IoY29uc3QgVGlsZUlu
ZGV4JiBpbmRleCkKICAgICBtX3JlbmRlckpvYnMucmVtb3ZlKGluZGV4KTsKIH0KIAotdm9pZCBM
YXllclRpbGVyOjpkZWxldGVUZXh0dXJlcygpCit2b2lkIExheWVyVGlsZXI6OmRlbGV0ZVRleHR1
cmVzKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqKQogewogICAgIC8vIFNpbmNlIHRleHR1cmVzIGFy
ZSBkZWxldGVkIGJ5IGEgc3luY2hyb25vdXMgbWVzc2FnZQogICAgIC8vIGZyb20gV2ViS2l0IHRo
cmVhZCB0byBjb21wb3NpdGluZyB0aHJlYWQsIHdlIGRvbid0IG5lZWQKQEAgLTY3NSw2ICs2Nzcs
MTQgQEAgdm9pZCBMYXllclRpbGVyOjpkaXNhYmxlVGlsaW5nKGJvb2wgZGlzYWJsZSkKICAgICB1
cGRhdGVUaWxlU2l6ZSgpOwogfQogCit2b2lkIExheWVyVGlsZXI6OnNjaGVkdWxlQ29tbWl0KCkK
K3sKKyAgICBBU1NFUlQoaXNXZWJLaXRUaHJlYWQoKSk7CisKKyAgICBpZiAobV9sYXllcikKKyAg
ICAgICAgbV9sYXllci0+c2V0TmVlZHNDb21taXQoKTsKK30KKwogYm9vbCBMYXllclRpbGVyOjpz
aG91bGRQcmVmaWxsVGlsZShjb25zdCBUaWxlSW5kZXgmIGluZGV4KQogewogICAgIC8vIEZvciBu
b3csIHdlIHVzZSB0aGUgaGV1cmlzdGljIG9mIHByZWZpbGxpbmcgdGhlIGZpcnN0IHNjcmVlbmZ1
bCBvZiB0aWxlcy4KQEAgLTcxNiwxOCArNzI2LDcgQEAgSW50UmVjdCBMYXllclRpbGVyOjpyZWN0
Rm9yVGlsZShjb25zdCBUaWxlSW5kZXgmIGluZGV4LCBjb25zdCBJbnRTaXplJiBib3VuZHMpCiAg
ICAgcmV0dXJuIEludFJlY3Qob3JpZ2luLCBzaXplKTsKIH0KIAotYm9vbCBMYXllclRpbGVyOjpo
YXNEaXJ0eVRpbGVzKCkgY29uc3QKLXsKLSAgICBmb3IgKFRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV90aWxlc0NvbXBvc2l0aW5nVGhyZWFkLmJlZ2luKCk7IGl0ICE9IG1fdGlsZXNDb21w
b3NpdGluZ1RocmVhZC5lbmQoKTsgKytpdCkgewotICAgICAgICBjb25zdCBMYXllclRpbGUqIHRp
bGUgPSAoKml0KS5zZWNvbmQ7Ci0gICAgICAgIGlmICh0aWxlLT5pc0RpcnR5KCkpCi0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQg
TGF5ZXJUaWxlcjo6YmluZENvbnRlbnRzVGV4dHVyZSgpCit2b2lkIExheWVyVGlsZXI6OmJpbmRD
b250ZW50c1RleHR1cmUoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCopCiB7CiAgICAgQVNTRVJUKG1f
dGlsZXNDb21wb3NpdGluZ1RocmVhZC5zaXplKCkgPT0gMSk7CiAgICAgaWYgKG1fdGlsZXNDb21w
b3NpdGluZ1RocmVhZC5zaXplKCkgIT0gMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmgKaW5kZXggMzc2NjYyOTU1
OWViNDVkOTJiNDMwZTFjYjEzYjE4ZjI0MjcxYjU1OC4uYWM4NjA5ODNhOGVjZjAxMzgxZTk3YjM2
NzhmNWNhMDFkMmU1MzA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNp
bmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJl
Y3QuaCIKKyNpbmNsdWRlICJMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiTGF5ZXJUaWxlLmgiCiAjaW5jbHVkZSAiTGF5ZXJUaWxlSW5kZXguaCIKIApAQCAtMzgsNyAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMYXllckNvbXBvc2l0aW5nVGhyZWFk
OwogY2xhc3MgTGF5ZXJXZWJLaXRUaHJlYWQ7CiAKLWNsYXNzIExheWVyVGlsZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8TGF5ZXJUaWxlcj4geworY2xhc3MgTGF5ZXJUaWxlciA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxMYXllclRpbGVyPiwgcHVibGljIExheWVyQ29tcG9z
aXRpbmdUaHJlYWRDbGllbnQgewogcHVibGljOgogICAgIFRpbGVJbmRleCBpbmRleE9mVGlsZShj
b25zdCBJbnRQb2ludCYgb3JpZ2luKTsKICAgICBJbnRQb2ludCBvcmlnaW5PZlRpbGUoY29uc3Qg
VGlsZUluZGV4Jik7CkBAIC01OCwxOCArNTksMTggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVl
ZHNEaXNwbGF5KCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZChkb3Vi
bGUgc2NhbGUpOwogICAgIHZvaWQgZGlzYWJsZVRpbGluZyhib29sKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVDb21taXQoKTsKIAogICAgIC8vIENvbXBvc2l0aW5nIHRocmVhZAotICAgIHZv
aWQgbGF5ZXJDb21wb3NpdGluZ1RocmVhZERlc3Ryb3llZCgpOwotICAgIHZvaWQgdXBsb2FkVGV4
dHVyZXNJZk5lZWRlZCgpOwotICAgIHZvaWQgZHJhd1RleHR1cmVzKExheWVyQ29tcG9zaXRpbmdU
aHJlYWQqLCBpbnQgcG9zaXRpb25Mb2NhdGlvbiwgaW50IHRleENvb3JkTG9jYXRpb24pOwotICAg
IGJvb2wgaGFzTWlzc2luZ1RleHR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNaXNzaW5nVGV4
dHVyZXM7IH0KLSAgICB2b2lkIGRyYXdNaXNzaW5nVGV4dHVyZXMoTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZCosIGludCBwb3NpdGlvbkxvY2F0aW9uLCBpbnQgdGV4Q29vcmRMb2NhdGlvbik7Ci0gICAg
dm9pZCBkZWxldGVUZXh0dXJlcygpOworICAgIHZpcnR1YWwgdm9pZCBsYXllckNvbXBvc2l0aW5n
VGhyZWFkRGVzdHJveWVkKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgbGF5ZXJWaXNpYmlsaXR5Q2hhbmdlZChMYXllckNvbXBvc2l0aW5nVGhyZWFkKiwgYm9vbCB2
aXNpYmxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZXNJZk5lZWRlZChMYXllckNv
bXBvc2l0aW5nVGhyZWFkKik7CisgICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUo
TGF5ZXJDb21wb3NpdGluZ1RocmVhZCopOworICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZXMo
TGF5ZXJDb21wb3NpdGluZ1RocmVhZCosIGludCBwb3NpdGlvbkxvY2F0aW9uLCBpbnQgdGV4Q29v
cmRMb2NhdGlvbik7CisgICAgdmlydHVhbCBib29sIGhhc01pc3NpbmdUZXh0dXJlcyhjb25zdCBM
YXllckNvbXBvc2l0aW5nVGhyZWFkKikgY29uc3QgeyByZXR1cm4gbV9oYXNNaXNzaW5nVGV4dHVy
ZXM7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZHJhd01pc3NpbmdUZXh0dXJlcyhMYXllckNvbXBvc2l0
aW5nVGhyZWFkKiwgaW50IHBvc2l0aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2F0aW9uKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZXMoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCop
OwogICAgIHZvaWQgY29tbWl0UGVuZGluZ1RleHR1cmVVcGxvYWRzKCk7Ci0gICAgdm9pZCBsYXll
clZpc2liaWxpdHlDaGFuZ2VkKGJvb2wgdmlzaWJsZSk7Ci0gICAgYm9vbCBoYXNEaXJ0eVRpbGVz
KCkgY29uc3Q7Ci0gICAgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJlKCk7CiAKICAgICAvLyBUaHJl
YWQgc2FmZQogICAgIHZvaWQgYWRkUmVuZGVySm9iKGNvbnN0IFRpbGVJbmRleCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldl
YktpdFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0xheWVyV2ViS2l0VGhyZWFkLmNwcAppbmRleCA4YmE1MjRiZmU0Njc2YjdjYmZkZmNhODNj
OTY2NDExNjhlMDNkNGI4Li5mYTUxZjhmNGYzMmQ2MDg3YTgzODk0YzQ2YTRiM2RlM2E3ODNlMjVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyV2ViS2l0VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmNwcApAQCAtNjcsMTkgKzY3LDcgQEAg
TGF5ZXJXZWJLaXRUaHJlYWQ6OkxheWVyV2ViS2l0VGhyZWFkKExheWVyVHlwZSB0eXBlLCBHcmFw
aGljc0xheWVyQmxhY2tCZXJyeSogb3cKIHsKICAgICBpZiAodHlwZSA9PSBMYXllcikKICAgICAg
ICAgbV90aWxlciA9IExheWVyVGlsZXI6OmNyZWF0ZSh0aGlzKTsKLSAgICBtX2xheWVyQ29tcG9z
aXRpbmdUaHJlYWQgPSBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpjcmVhdGUodHlwZSwgbV90aWxl
cik7Ci19Ci0KLUxheWVyV2ViS2l0VGhyZWFkOjpMYXllcldlYktpdFRocmVhZChQYXNzUmVmUHRy
PExheWVyQ29tcG9zaXRpbmdUaHJlYWQ+IGxheWVyQ29tcG9zaXRpbmdUaHJlYWQsIEdyYXBoaWNz
TGF5ZXJCbGFja0JlcnJ5KiBvd25lcikKLSAgICA6IExheWVyRGF0YShDdXN0b21MYXllcikKLSAg
ICAsIG1fb3duZXIob3duZXIpCi0gICAgLCBtX3N1cGVybGF5ZXIoMCkKLSAgICAsIG1fY29udGVu
dHMoMCkKLSAgICAsIG1fc2NhbGUoMS4wKQotICAgICwgbV9pc0RyYXdhYmxlKGZhbHNlKQotICAg
ICwgbV9pc01hc2soZmFsc2UpCi17Ci0gICAgbV9sYXllckNvbXBvc2l0aW5nVGhyZWFkID0gbGF5
ZXJDb21wb3NpdGluZ1RocmVhZDsKKyAgICBtX2xheWVyQ29tcG9zaXRpbmdUaHJlYWQgPSBMYXll
ckNvbXBvc2l0aW5nVGhyZWFkOjpjcmVhdGUodHlwZSwgbV90aWxlci5nZXQoKSk7CiB9CiAKIExh
eWVyV2ViS2l0VGhyZWFkOjp+TGF5ZXJXZWJLaXRUaHJlYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktp
dFRocmVhZC5oCmluZGV4IDlhNjM0OWZmNzJhOGU4YzFhMWEwMmI5MGFhMjA4NWM4YTM5MGYwZmUu
LjY4ODliYmZhMzk5MTAxM2U3NmU3NGQ0ZTI4MGM1NDFjZmM2YTcwN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJl
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyV2ViS2l0VGhyZWFkLmgKQEAgLTE0OSw5ICsxNDksNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6
CiAgICAgTGF5ZXJXZWJLaXRUaHJlYWQoTGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyQmxhY2tCZXJy
eSogb3duZXIpOwogCi0gICAgLy8gQ3JlYXRlIGEgY3VzdG9tIExheWVye1dlYktpdFRocmVhZCwg
Q29tcG9zaXRpbmdUaHJlYWR9IHBhaXIsIHVzZWQgd2hlbiB5b3UgbmVlZCB0byBzdWJjbGFzcyBi
b3RoLgotICAgIExheWVyV2ViS2l0VGhyZWFkKFBhc3NSZWZQdHI8TGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZD4sIEdyYXBoaWNzTGF5ZXJCbGFja0JlcnJ5KiBvd25lcik7Ci0KICAgICB2b2lkIHNldE5l
ZWRzVGV4dHVyZShib29sIG5lZWRzVGV4dHVyZSkgeyBtX25lZWRzVGV4dHVyZSA9IG5lZWRzVGV4
dHVyZTsgfQogICAgIHZvaWQgc2V0TGF5ZXJQcm9ncmFtU2hhZGVyKExheWVyRGF0YTo6TGF5ZXJQ
cm9ncmFtU2hhZGVyIHNoYWRlcikgeyBtX2xheWVyUHJvZ3JhbVNoYWRlciA9IHNoYWRlcjsgfQog
ICAgIHZvaWQgY3JlYXRlRnJvbnRCdWZmZXJMb2NrKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144392</attachid>
            <date>2012-05-28 13:37:18 -0700</date>
            <delta_ts>2012-05-28 14:20:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87600-20120528223717.patch</filename>
            <type>text/plain</type>
            <size>22661</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk1NWQ5YTVlZDY4MjUw
OGY2NTRhYjJiMzBjMmJiZjJhODZmNjVlMC4uZTVhMTcxODFkODcyMDdkOGNhNDg0OGI0NzMyMGUw
YzRjNDExNGUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY1IEBACiAyMDEyLTA1LTI3ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAorICAgICAgICBbQmxhY2tCZXJyeV0gTWFr
ZSBjdXN0b20gY29tcG9zaXRpbmcgdGhyZWFkIGxheWVycyBtb3JlIGZsZXhpYmxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzYwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IFJvYiBCdWlzLgorCisgICAgICAgIEludHJvZHVjZSBhIExheWVyQ29tcG9z
aXRpbmdUaHJlYWRDbGllbnQgdGhhdCdzIHVzZWQgdG8gZmluZSB0dW5lIHRoZQorICAgICAgICBi
ZWhhdmlvdXIgb2YgY3VzdG9tIGxheWVycy4gTGV0IHRoZSBMYXllclRpbGVyIGJlIGEKKyAgICAg
ICAgTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudCBhbmQgdGh1cyBkZWNvdXBsZSBpdCBmcm9t
CisgICAgICAgIExheWVyQ29tcG9zaXRpbmdUaHJlYWQuIEFkanVzdCBtZXRob2Qgc2lnbmF0dXJl
cyB0byBhbGxvdyBhIG9uZS10by1tYW55CisgICAgICAgIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIENs
aWVudCBhbmQgTGF5ZXIuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBvbGQgTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZDo6ZHJhd0N1c3RvbSgpIGluIGZhdm91ciBvZiB0aGlzIG5ldworICAgICAgICBDbGll
bnQgaW50ZXJmYWNlLgorCisgICAgICAgIFBSICMxNTY4MTIKKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjp+TGF5ZXJDb21wb3NpdGlu
Z1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpkZWxl
dGVUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpk
cmF3VGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6
aGFzTWlzc2luZ1RleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdU
aHJlYWQ6OmRyYXdNaXNzaW5nVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21w
b3NpdGluZ1RocmVhZDo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6YmluZENvbnRlbnRzVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpzZXRWaXNpYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNjaGVkdWxlQ29tbWl0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdU
aHJlYWQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBv
c2l0aW5nVGhyZWFkQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6On5MYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OmJpbmRDb250
ZW50c1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZENs
aWVudDo6aGFzTWlzc2luZ1RleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9z
aXRpbmdUaHJlYWRDbGllbnQ6OmRyYXdNaXNzaW5nVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6c2NoZWR1bGVDb21taXQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyOjpkcmF3RGVidWdCb3JkZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRpbGVyOjpMYXllclRpbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
VGlsZXI6OmxheWVyQ29tcG9zaXRpbmdUaHJlYWREZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJUaWxlcjo6bGF5ZXJWaXNpYmlsaXR5Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclRpbGVyOjp1cGxvYWRUZXh0dXJlc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyVGlsZXI6OmRlbGV0ZVRleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGls
ZXI6OnNjaGVkdWxlQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJUaWxlcjo6YmluZENvbnRlbnRzVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmg6CisgICAgICAgIChMYXllclRpbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZXI6Omhhc01pc3NpbmdUZXh0dXJlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXllcldlYktpdFRocmVhZDo6TGF5ZXJXZWJLaXRUaHJlYWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJl
YWQuaDoKKyAgICAgICAgKExheWVyV2ViS2l0VGhyZWFkKToKKworMjAxMi0wNS0yNyAgQXJ2aWQg
Tmlsc3NvbiAgPGFuaWxzc29uQHJpbS5jb20+CisKICAgICAgICAgW0JsYWNrQmVycnldIEFkZCBh
biBvdmVybGF5IGxheWVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04NzU2NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNw
cAppbmRleCBmOGNiYzVhODgzM2ZmNGZiY2VlYzJiZGJjYTY2OTM4NTE2ODhhYWFkLi5iYjUyOTBh
NTE1ZmVkNTJhNWQ2YzYzNmU5ODlkN2M5OGMwZDM3OTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkxh
eWVyQ29tcG9zaXRpbmdUaHJlYWQuaCIKIAorI2luY2x1ZGUgIkxheWVyQ29tcG9zaXRpbmdUaHJl
YWRDbGllbnQuaCIKICNpbmNsdWRlICJMYXllck1lc3NhZ2UuaCIKICNpbmNsdWRlICJMYXllclJl
bmRlcmVyLmgiCiAjaW5jbHVkZSAiTGF5ZXJXZWJLaXRUaHJlYWQuaCIKQEAgLTU0LDEyICs1NSwx
MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8TGF5ZXJDb21wb3NpdGlu
Z1RocmVhZD4gTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6Y3JlYXRlKExheWVyVHlwZSB0eXBlLCBQ
YXNzUmVmUHRyPExheWVyVGlsZXI+IHRpbGVyKQorUGFzc1JlZlB0cjxMYXllckNvbXBvc2l0aW5n
VGhyZWFkPiBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpjcmVhdGUoTGF5ZXJUeXBlIHR5cGUsIExh
eWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IExheWVyQ29tcG9zaXRpbmdUaHJlYWQodHlwZSwgdGlsZXIpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IExheWVyQ29tcG9zaXRpbmdUaHJlYWQodHlwZSwgY2xpZW50KSk7CiB9CiAK
LUxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQoTGF5ZXJUeXBl
IHR5cGUsIFBhc3NSZWZQdHI8TGF5ZXJUaWxlcj4gdGlsZXIpCitMYXllckNvbXBvc2l0aW5nVGhy
ZWFkOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkKExheWVyVHlwZSB0eXBlLCBMYXllckNvbXBvc2l0
aW5nVGhyZWFkQ2xpZW50KiBjbGllbnQpCiAgICAgOiBMYXllckRhdGEodHlwZSkKICAgICAsIG1f
bGF5ZXJSZW5kZXJlcigwKQogICAgICwgbV9zdXBlcmxheWVyKDApCkBAIC02Nyw3ICs2OCw3IEBA
IExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQoTGF5ZXJUeXBl
IHR5cGUsIFBhc3NSZWZQdHI8TGF5ZXJUCiAgICAgLCBtX2RyYXdPcGFjaXR5KDApCiAgICAgLCBt
X3Zpc2libGUoZmFsc2UpCiAgICAgLCBtX2NvbW1pdFNjaGVkdWxlZChmYWxzZSkKLSAgICAsIG1f
dGlsZXIodGlsZXIpCisgICAgLCBtX2NsaWVudChjbGllbnQpCiB7CiB9CiAKQEAgLTc1LDkgKzc2
LDYgQEAgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6fkxheWVyQ29tcG9zaXRpbmdUaHJlYWQoKQog
ewogICAgIEFTU0VSVChpc0NvbXBvc2l0aW5nVGhyZWFkKCkpOwogCi0gICAgaWYgKG1fdGlsZXIp
Ci0gICAgICAgIG1fdGlsZXItPmxheWVyQ29tcG9zaXRpbmdUaHJlYWREZXN0cm95ZWQoKTsKLQog
ICAgIEFTU0VSVCghc3VwZXJsYXllcigpKTsKIAogICAgIC8vIFJlbW92ZSB0aGUgc3VwZXJsYXll
ciByZWZlcmVuY2UgZnJvbSBhbGwgc3VibGF5ZXJzLgpAQCAtOTEsNiArODksOSBAQCBMYXllckNv
bXBvc2l0aW5nVGhyZWFkOjp+TGF5ZXJDb21wb3NpdGluZ1RocmVhZCgpCiAgICAgLy8gbGF5ZXIg
cmVuZGVyZXIgdG8gdHJhY2sgdXMgYW55bW9yZQogICAgIGlmIChtX2xheWVyUmVuZGVyZXIpCiAg
ICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+cmVtb3ZlTGF5ZXIodGhpcyk7CisKKyAgICBpZiAobV9j
bGllbnQpCisgICAgICAgIG1fY2xpZW50LT5sYXllckNvbXBvc2l0aW5nVGhyZWFkRGVzdHJveWVk
KHRoaXMpOwogfQogCiB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNldExheWVyUmVuZGVy
ZXIoTGF5ZXJSZW5kZXJlciogcmVuZGVyZXIpCkBAIC0xMDcsOCArMTA4LDggQEAgdm9pZCBMYXll
ckNvbXBvc2l0aW5nVGhyZWFkOjpkZWxldGVUZXh0dXJlcygpCiB7CiAgICAgcmVsZWFzZVRleHR1
cmVSZXNvdXJjZXMoKTsKIAotICAgIGlmIChtX3RpbGVyKQotICAgICAgICBtX3RpbGVyLT5kZWxl
dGVUZXh0dXJlcygpOworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRlbGV0
ZVRleHR1cmVzKHRoaXMpOwogfQogCiB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNldERy
YXdUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKQEAgLTI1OCwx
NSArMjU5LDggQEAgdm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpkcmF3VGV4dHVyZXMoaW50
IHBvc2l0aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2EKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChtX2xheWVyVHlwZSA9PSBDdXN0b21MYXllcikgewotICAgICAgICAvLyBD
dXN0b20gbGF5ZXJzIGRvbid0IGhhdmUgYSBMYXllclRpbGVyLCBzbyB0aGV5IGVpdGhlciBoYXZl
IHRvIHNldAotICAgICAgICAvLyBtX3RleElEIG9yIGltcGxlbWVudCBkcmF3Q3VzdG9tLgotICAg
ICAgICBkcmF3Q3VzdG9tKHBvc2l0aW9uTG9jYXRpb24sIHRleENvb3JkTG9jYXRpb24pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1fdGlsZXIpCi0gICAgICAgIG1fdGlsZXIt
PmRyYXdUZXh0dXJlcyh0aGlzLCBwb3NpdGlvbkxvY2F0aW9uLCB0ZXhDb29yZExvY2F0aW9uKTsK
KyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kcmF3VGV4dHVyZXModGhpcywg
cG9zaXRpb25Mb2NhdGlvbiwgdGV4Q29vcmRMb2NhdGlvbik7CiB9CiAKIHZvaWQgTGF5ZXJDb21w
b3NpdGluZ1RocmVhZDo6ZHJhd1N1cmZhY2UoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRy
YXdUcmFuc2Zvcm0sIExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIG1hc2ssIGludCBwb3NpdGlvbkxv
Y2F0aW9uLCBpbnQgdGV4Q29vcmRMb2NhdGlvbikKQEAgLTI5NSwxOCArMjg5LDE1IEBAIHZvaWQg
TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6ZHJhd1N1cmZhY2UoY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIGRyYXdUcmFuc2ZvCiAgICAgfQogfQogCi12b2lkIExheWVyQ29tcG9zaXRpbmdUaHJl
YWQ6OmRyYXdNaXNzaW5nVGV4dHVyZXMoaW50IHBvc2l0aW9uTG9jYXRpb24sIGludCB0ZXhDb29y
ZExvY2F0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHZpc2libGVSZWN0KQorYm9vbCBMYXllckNvbXBv
c2l0aW5nVGhyZWFkOjpoYXNNaXNzaW5nVGV4dHVyZXMoKSBjb25zdAogewotICAgIGlmIChtX3Bs
dWdpblZpZXcgfHwgbV90ZXhJRCkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYgRU5BQkxFKFZJREVP
KQotICAgIGlmIChtX21lZGlhUGxheWVyKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKKyAgICBy
ZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+aGFzTWlzc2luZ1RleHR1cmVzKHRoaXMpIDogZmFs
c2U7Cit9CiAKLSAgICBpZiAobV90aWxlcikKLSAgICAgICAgbV90aWxlci0+ZHJhd01pc3NpbmdU
ZXh0dXJlcyh0aGlzLCBwb3NpdGlvbkxvY2F0aW9uLCB0ZXhDb29yZExvY2F0aW9uKTsKK3ZvaWQg
TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6ZHJhd01pc3NpbmdUZXh0dXJlcyhpbnQgcG9zaXRpb25M
b2NhdGlvbiwgaW50IHRleENvb3JkTG9jYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgLyp2aXNpYmxl
UmVjdCovKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRyYXdNaXNz
aW5nVGV4dHVyZXModGhpcywgcG9zaXRpb25Mb2NhdGlvbiwgdGV4Q29vcmRMb2NhdGlvbik7CiB9
CiAKIHZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6cmVsZWFzZVRleHR1cmVSZXNvdXJjZXMo
KQpAQCAtNDIxLDE2ICs0MTIsMTQgQEAgdm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpzZXRT
dWJsYXllcnMoY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGgKIAogdm9pZCBM
YXllckNvbXBvc2l0aW5nVGhyZWFkOjp1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCgpCiB7
Ci0gICAgaWYgKG1fdGV4SUQgfHwgcGx1Z2luVmlldygpKQotICAgICAgICByZXR1cm47Ci0KLSNp
ZiBFTkFCTEUoVklERU8pCi0gICAgaWYgKG1lZGlhUGxheWVyKCkpCi0gICAgICAgIHJldHVybjsK
LSNlbmRpZgorICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnVwbG9hZFRleHR1
cmVzSWZOZWVkZWQodGhpcyk7Cit9CiAKLSAgICBpZiAobV90aWxlcikKLSAgICAgICAgbV90aWxl
ci0+dXBsb2FkVGV4dHVyZXNJZk5lZWRlZCgpOwordm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFk
OjpiaW5kQ29udGVudHNUZXh0dXJlKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1f
Y2xpZW50LT5iaW5kQ29udGVudHNUZXh0dXJlKHRoaXMpOwogfQogCiB2b2lkIExheWVyQ29tcG9z
aXRpbmdUaHJlYWQ6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQpAQCAtNDQwLDE2ICs0MjksOCBA
QCB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQog
CiAgICAgbV92aXNpYmxlID0gdmlzaWJsZTsKIAotICAgIGlmIChtX3RleElEIHx8IHBsdWdpblZp
ZXcoKSkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYgRU5BQkxFKFZJREVPKQotICAgIGlmIChtZWRp
YVBsYXllcigpKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLQotICAgIGlmIChtX3RpbGVyKQot
ICAgICAgICBtX3RpbGVyLT5sYXllclZpc2liaWxpdHlDaGFuZ2VkKHZpc2libGUpOworICAgIGlm
IChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmxheWVyVmlzaWJpbGl0eUNoYW5nZWQodGhp
cywgdmlzaWJsZSk7CiB9CiAKIHZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6c2V0TmVlZHND
b21taXQoKQpAQCAtNDYwLDcgKzQ0MSw3IEBAIHZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6
c2V0TmVlZHNDb21taXQoKQogCiB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNjaGVkdWxl
Q29tbWl0KCkKIHsKLSAgICBpZiAoIW1fdGlsZXIpCisgICAgaWYgKCFtX2NsaWVudCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFpc1dlYktpdFRocmVhZCgpKSB7CkBAIC00NzUsOSArNDU2
LDcgQEAgdm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpzY2hlZHVsZUNvbW1pdCgpCiAKICAg
ICBtX2NvbW1pdFNjaGVkdWxlZCA9IGZhbHNlOwogCi0gICAgLy8gRklYTUU6IFRoZSBvbmx5IHdh
eSB0byBnZXQgYXQgb3VyIExheWVyV2ViS2l0VGhyZWFkIGlzIHRvIGdvIHRocm91Z2ggdGhlIHRp
bGVyLgotICAgIGlmIChMYXllcldlYktpdFRocmVhZCogbGF5ZXIgPSBtX3RpbGVyLT5sYXllcigp
KQotICAgICAgICBsYXllci0+c2V0TmVlZHNDb21taXQoKTsKKyAgICBtX2NsaWVudC0+c2NoZWR1
bGVDb21taXQoKTsKIH0KIAogYm9vbCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjp1cGRhdGVBbmlt
YXRpb25zKGRvdWJsZSBjdXJyZW50VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5n
VGhyZWFkLmgKaW5kZXggY2EzZmVlOWJmZDVkYTljOWY4MDhlZjQ2YjRhYjAzZDk0OGI0ODkwMy4u
MDg4OWJlMmNlYTE2NjUyNTgxMDJkYzExNGI4NzdiYjc2OTgzMzcwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5n
VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmgKQEAgLTU0LDExICs1NCwxMiBAQCBjbGFzcyBCdWZm
ZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZENsaWVudDsKIGNsYXNzIExheWVyUmVuZGVyZXI7CiAKIGNsYXNzIExheWVyQ29tcG9zaXRpbmdU
aHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TGF5ZXJDb21wb3NpdGluZ1RocmVh
ZD4sIHB1YmxpYyBMYXllckRhdGEsIHB1YmxpYyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3VhcmRl
ZFBvaW50ZXJCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxMYXllckNvbXBv
c2l0aW5nVGhyZWFkPiBjcmVhdGUoTGF5ZXJUeXBlLCBQYXNzUmVmUHRyPExheWVyVGlsZXI+KTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFkPiBjcmVhdGUoTGF5
ZXJUeXBlLCBMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50Kik7CiAKICAgICAvLyBUaHJlYWQg
c2FmZQogICAgIHZvaWQgc2V0UGx1Z2luVmlldyhQbHVnaW5WaWV3Kik7CkBAIC03MiwxMSArNzMs
NyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlIGhhdmUgYW4gYW5pbWF0aW9u
CiAgICAgYm9vbCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBjdXJyZW50VGltZSk7CiAgICAgdm9p
ZCB1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCgpOwotICAgIHZvaWQgYmluZENvbnRlbnRz
VGV4dHVyZSgpCi0gICAgewotICAgICAgICBpZiAobV90aWxlcikKLSAgICAgICAgICAgIG1fdGls
ZXItPmJpbmRDb250ZW50c1RleHR1cmUoKTsKLSAgICB9CisgICAgdm9pZCBiaW5kQ29udGVudHNU
ZXh0dXJlKCk7CiAKICAgICBjb25zdCBMYXllckNvbXBvc2l0aW5nVGhyZWFkKiByb290TGF5ZXIo
KSBjb25zdDsKICAgICB2b2lkIHNldFN1YmxheWVycyhjb25zdCBWZWN0b3I8UmVmUHRyPExheWVy
Q29tcG9zaXRpbmdUaHJlYWQ+ID4mKTsKQEAgLTExMCwxMCArMTA3LDkgQEAgcHVibGljOgogICAg
IHZvaWQgZGVsZXRlVGV4dHVyZXMoKTsKIAogICAgIHZvaWQgZHJhd1RleHR1cmVzKGludCBwb3Np
dGlvbkxvY2F0aW9uLCBpbnQgdGV4Q29vcmRMb2NhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiB2aXNp
YmxlUmVjdCk7Ci0gICAgYm9vbCBoYXNNaXNzaW5nVGV4dHVyZXMoKSBjb25zdCB7IHJldHVybiBt
X3RpbGVyID8gbV90aWxlci0+aGFzTWlzc2luZ1RleHR1cmVzKCkgOiBmYWxzZTsgfQorICAgIGJv
b2wgaGFzTWlzc2luZ1RleHR1cmVzKCkgY29uc3Q7CiAgICAgdm9pZCBkcmF3TWlzc2luZ1RleHR1
cmVzKGludCBwb3NpdGlvbkxvY2F0aW9uLCBpbnQgdGV4Q29vcmRMb2NhdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiB2aXNpYmxlUmVjdCk7CiAgICAgdm9pZCBkcmF3U3VyZmFjZShjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIG1hc2ssIGludCBwb3NpdGlv
bkxvY2F0aW9uLCBpbnQgdGV4Q29vcmRMb2NhdGlvbik7Ci0gICAgYm9vbCBpc0RpcnR5KCkgY29u
c3QgeyByZXR1cm4gbV90aWxlciA/IG1fdGlsZXItPmhhc0RpcnR5VGlsZXMoKSA6IGZhbHNlOyB9
CiAKICAgICB2b2lkIHJlbGVhc2VUZXh0dXJlUmVzb3VyY2VzKCk7CiAKQEAgLTE0NywxMCArMTQz
LDggQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkxheWVyQ29tcG9zaXRpbmdU
aHJlYWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3Q3VzdG9tKGludCBwb3NpdGlvbkxvY2F0
aW9uLCBpbnQgdGV4Q29vcmRMb2NhdGlvbikgeyB9Ci0KIHByaXZhdGU6Ci0gICAgTGF5ZXJDb21w
b3NpdGluZ1RocmVhZChMYXllclR5cGUsIFBhc3NSZWZQdHI8TGF5ZXJUaWxlcj4pOworICAgIExh
eWVyQ29tcG9zaXRpbmdUaHJlYWQoTGF5ZXJUeXBlLCBMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xp
ZW50Kik7CiAKICAgICB2b2lkIHVwZGF0ZVRpbGVDb250ZW50cyhjb25zdCBJbnRSZWN0JiB0aWxl
KTsKIApAQCAtMTg5LDkgKzE4MywxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV92aXNpYmxlOwog
ICAgIGJvb2wgbV9jb21taXRTY2hlZHVsZWQ7CiAKLSAgICBSZWZQdHI8TGF5ZXJUaWxlcj4gbV90
aWxlcjsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQW5pbWF0aW9uPiA+IG1fcnVubmluZ0FuaW1h
dGlvbnM7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckFuaW1hdGlvbj4gPiBtX3N1c3BlbmRlZEFu
aW1hdGlvbnM7CisKKyAgICBMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50KiBtX2NsaWVudDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNv
bXBvc2l0aW5nVGhyZWFkQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRlYmY5ZWMxOTgzNzZiYWM4NzQy
NGVkZjg1NmJlOWMxODlkMDgwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5o
CkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8K
KworI2lmbmRlZiBMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50X2gKKyNkZWZpbmUgTGF5ZXJD
b21wb3NpdGluZ1RocmVhZENsaWVudF9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZDsKKworY2xhc3MgTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+TGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudCgpIHsgfQorCisgICAgdmlydHVh
bCB2b2lkIGxheWVyQ29tcG9zaXRpbmdUaHJlYWREZXN0cm95ZWQoTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZCopID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBsYXllclZpc2liaWxpdHlDaGFuZ2VkKExh
eWVyQ29tcG9zaXRpbmdUaHJlYWQqLCBib29sIHZpc2libGUpID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCB1cGxvYWRUZXh0dXJlc0lmTmVlZGVkKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFkKiwg
aW50IHBvc2l0aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2F0aW9uLCBkb3VibGUgc2NhbGUp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZXMoTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZCopID0gMDsKKworICAgIC8vIE9wdGlvbmFsLiBBbGxvd3MgbGF5ZXJzIHRvIHNlcnZlIGFz
IGEgbWFzayBmb3Igb3RoZXIgbGF5ZXJzCisgICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1Rl
eHR1cmUoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCopIHsgfQorCisgICAgLy8gT3B0aW9uYWwuIEFs
bG93cyBsYXllcnMgdG8gaGF2ZSB1bmNhY2hlZCByZWdpb25zLCB0eXBpY2FsbHkgZHJhd24gYXMg
Y2hlY2tlcmJvYXJkCisgICAgdmlydHVhbCBib29sIGhhc01pc3NpbmdUZXh0dXJlcyhjb25zdCBM
YXllckNvbXBvc2l0aW5nVGhyZWFkKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZHJhd01pc3NpbmdUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFkKiwgaW50
IHBvc2l0aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2F0aW9uKSB7IH0KKworICAgIC8vIFVu
bGlrZSB0aGUgb3RoZXIgbWV0aG9kcyBoZXJlLCB0aGlzIG9uZSB3aWxsIGJlIGNhbGxlZCBvbiB0
aGUgV2ViS2l0IHRocmVhZAorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbW1pdCgpIHsgfQor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwCmluZGV4IDRm
MGFmOGVhZmQ2ZjEyMDQ3NTA4ZGM0ODcyMDllNzg3ZmY0YTNlMGYuLjNjZTNkODAyMDQ1MDg1ZTQx
MWE3NjVjNTg5MjJlZTlmYzQ0Y2E5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcApAQCAt
NDgsNyArNDgsNiBAQAogI2RlZmluZSBFTkFCTEVfU0NJU1NPUiAxCiAKICNkZWZpbmUgREVCVUdf
U0hBREVSX0NPTVBJTEFUSU9OIDAKLSNkZWZpbmUgREVCVUdfRElSVFlfTEFZRVJTIDAgLy8gU2hv
dyBkaXJ0eSBsYXllcnMgYXMgcmVkLgogI2RlZmluZSBERUJVR19MQVlFUl9BTklNQVRJT05TIDAg
Ly8gU2hvdyBydW5uaW5nIGFuaW1hdGlvbnMgYXMgZ3JlZW4uCiAjZGVmaW5lIERFQlVHX0NMSVBQ
SU5HIDAKIApAQCAtNTY4LDExICs1NjcsNiBAQCB2b2lkIExheWVyUmVuZGVyZXI6OmRyYXdEZWJ1
Z0JvcmRlcihMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllcikKIHsKICAgICBDb2xvciBib3Jk
ZXJDb2xvciA9IGxheWVyLT5ib3JkZXJDb2xvcigpOwogCi0jaWYgREVCVUdfRElSVFlfTEFZRVJT
Ci0gICAgaWYgKGxheWVyLT5pc0RpcnR5KCkpCi0gICAgICAgIGJvcmRlckNvbG9yID0gQ29sb3Io
MHhGRiwgMHgwMCwgMHgwMCwgMHhGRik7Ci0jZW5kaWYKLQogI2lmIERFQlVHX0xBWUVSX0FOSU1B
VElPTlMKICAgICBpZiAobGF5ZXItPmhhc1J1bm5pbmdBbmltYXRpb25zKCkpCiAgICAgICAgIGJv
cmRlckNvbG9yID0gIENvbG9yKDB4MDAsIDB4RkYsIDB4MDAsIDB4RkYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxl
ci5jcHAKaW5kZXggZDUxN2FhYTdiNDAyNDQ4OTMyZGQ0MmJmOWRhYjQwZDEwMmE4ZDJjNC4uMDQx
MjdlZTQ1NTVjOTcyYjViNTJiZjNjOTI1ZDEwN2E2NjUzOWZjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIu
Y3BwCkBAIC03NSw2ICs3NSw3IEBAIExheWVyVGlsZXI6OkxheWVyVGlsZXIoTGF5ZXJXZWJLaXRU
aHJlYWQqIGxheWVyKQogICAgICwgbV9oYXNNaXNzaW5nVGV4dHVyZXMoZmFsc2UpCiAgICAgLCBt
X2NvbnRlbnRzU2NhbGUoMC4wKQogeworICAgIHJlZigpOyAvLyBUaGlzIHJlZigpIGlzIG1hdGNo
ZWQgYnkgYSBkZXJlZiBpbiBsYXllckNvbXBvc2l0aW5nVGhyZWFkRGVzdHJveWVkKCk7CiB9CiAK
IExheWVyVGlsZXI6On5MYXllclRpbGVyKCkKQEAgLTkwLDkgKzkxLDEwIEBAIHZvaWQgTGF5ZXJU
aWxlcjo6bGF5ZXJXZWJLaXRUaHJlYWREZXN0cm95ZWQoKQogICAgIG1fbGF5ZXIgPSAwOwogfQog
Ci12b2lkIExheWVyVGlsZXI6OmxheWVyQ29tcG9zaXRpbmdUaHJlYWREZXN0cm95ZWQoKQordm9p
ZCBMYXllclRpbGVyOjpsYXllckNvbXBvc2l0aW5nVGhyZWFkRGVzdHJveWVkKExheWVyQ29tcG9z
aXRpbmdUaHJlYWQqKQogewogICAgIEFTU0VSVChpc0NvbXBvc2l0aW5nVGhyZWFkKCkpOworICAg
IGRlcmVmKCk7IC8vIE1hdGNoZWQgYnkgcmVmKCkgaW4gY29uc3RydWN0b3I7CiB9CiAKIHZvaWQg
TGF5ZXJUaWxlcjo6c2V0TmVlZHNEaXNwbGF5KGNvbnN0IEZsb2F0UmVjdCYgZGlydHlSZWN0KQpA
QCAtMzQ5LDcgKzM1MSw3IEBAIHZvaWQgTGF5ZXJUaWxlcjo6Y29tbWl0UGVuZGluZ1RleHR1cmVV
cGxvYWRzKCkKICAgICBtX3BlbmRpbmdUZXh0dXJlSm9icy5jbGVhcigpOwogfQogCi12b2lkIExh
eWVyVGlsZXI6OmxheWVyVmlzaWJpbGl0eUNoYW5nZWQoYm9vbCB2aXNpYmxlKQordm9pZCBMYXll
clRpbGVyOjpsYXllclZpc2liaWxpdHlDaGFuZ2VkKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqLCBi
b29sIHZpc2libGUpCiB7CiAgICAgLy8gRm9yIHZpc2libGUgbGF5ZXJzLCB3ZSBoYW5kbGUgdGhl
IHRpbGUtbGV2ZWwgdmlzaWJpbGl0eQogICAgIC8vIGluIHRoZSBkcmF3IGxvb3AsIHNlZSBMYXll
clRpbGVyOjpkcmF3VGV4dHVyZXMoKS4KQEAgLTM2OSw3ICszNzEsNyBAQCB2b2lkIExheWVyVGls
ZXI6OmxheWVyVmlzaWJpbGl0eUNoYW5nZWQoYm9vbCB2aXNpYmxlKQogICAgIH0KIH0KIAotdm9p
ZCBMYXllclRpbGVyOjp1cGxvYWRUZXh0dXJlc0lmTmVlZGVkKCkKK3ZvaWQgTGF5ZXJUaWxlcjo6
dXBsb2FkVGV4dHVyZXNJZk5lZWRlZChMYXllckNvbXBvc2l0aW5nVGhyZWFkKikKIHsKICAgICBU
aWxlSm9ic01hcCB0aWxlSm9ic01hcDsKICAgICBEZXF1ZTxUZXh0dXJlSm9iPjo6Y29uc3RfaXRl
cmF0b3IgdGV4dHVyZUpvYkl0ZXJFbmQgPSBtX3RleHR1cmVKb2JzLmVuZCgpOwpAQCAtNjExLDcg
KzYxMyw3IEBAIHZvaWQgTGF5ZXJUaWxlcjo6cmVtb3ZlUmVuZGVySm9iKGNvbnN0IFRpbGVJbmRl
eCYgaW5kZXgpCiAgICAgbV9yZW5kZXJKb2JzLnJlbW92ZShpbmRleCk7CiB9CiAKLXZvaWQgTGF5
ZXJUaWxlcjo6ZGVsZXRlVGV4dHVyZXMoKQordm9pZCBMYXllclRpbGVyOjpkZWxldGVUZXh0dXJl
cyhMYXllckNvbXBvc2l0aW5nVGhyZWFkKikKIHsKICAgICAvLyBTaW5jZSB0ZXh0dXJlcyBhcmUg
ZGVsZXRlZCBieSBhIHN5bmNocm9ub3VzIG1lc3NhZ2UKICAgICAvLyBmcm9tIFdlYktpdCB0aHJl
YWQgdG8gY29tcG9zaXRpbmcgdGhyZWFkLCB3ZSBkb24ndCBuZWVkCkBAIC02NzUsNiArNjc3LDE0
IEBAIHZvaWQgTGF5ZXJUaWxlcjo6ZGlzYWJsZVRpbGluZyhib29sIGRpc2FibGUpCiAgICAgdXBk
YXRlVGlsZVNpemUoKTsKIH0KIAordm9pZCBMYXllclRpbGVyOjpzY2hlZHVsZUNvbW1pdCgpCit7
CisgICAgQVNTRVJUKGlzV2ViS2l0VGhyZWFkKCkpOworCisgICAgaWYgKG1fbGF5ZXIpCisgICAg
ICAgIG1fbGF5ZXItPnNldE5lZWRzQ29tbWl0KCk7Cit9CisKIGJvb2wgTGF5ZXJUaWxlcjo6c2hv
dWxkUHJlZmlsbFRpbGUoY29uc3QgVGlsZUluZGV4JiBpbmRleCkKIHsKICAgICAvLyBGb3Igbm93
LCB3ZSB1c2UgdGhlIGhldXJpc3RpYyBvZiBwcmVmaWxsaW5nIHRoZSBmaXJzdCBzY3JlZW5mdWwg
b2YgdGlsZXMuCkBAIC03MTYsMTggKzcyNiw3IEBAIEludFJlY3QgTGF5ZXJUaWxlcjo6cmVjdEZv
clRpbGUoY29uc3QgVGlsZUluZGV4JiBpbmRleCwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQogICAg
IHJldHVybiBJbnRSZWN0KG9yaWdpbiwgc2l6ZSk7CiB9CiAKLWJvb2wgTGF5ZXJUaWxlcjo6aGFz
RGlydHlUaWxlcygpIGNvbnN0Ci17Ci0gICAgZm9yIChUaWxlTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IG1fdGlsZXNDb21wb3NpdGluZ1RocmVhZC5iZWdpbigpOyBpdCAhPSBtX3RpbGVzQ29tcG9z
aXRpbmdUaHJlYWQuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgY29uc3QgTGF5ZXJUaWxlKiB0aWxl
ID0gKCppdCkuc2Vjb25kOwotICAgICAgICBpZiAodGlsZS0+aXNEaXJ0eSgpKQotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIExh
eWVyVGlsZXI6OmJpbmRDb250ZW50c1RleHR1cmUoKQordm9pZCBMYXllclRpbGVyOjpiaW5kQ29u
dGVudHNUZXh0dXJlKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqKQogewogICAgIEFTU0VSVChtX3Rp
bGVzQ29tcG9zaXRpbmdUaHJlYWQuc2l6ZSgpID09IDEpOwogICAgIGlmIChtX3RpbGVzQ29tcG9z
aXRpbmdUaHJlYWQuc2l6ZSgpICE9IDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5oCmluZGV4IDM3NjY2Mjk1NTll
YjQ1ZDkyYjQzMGUxY2IxM2IxOGYyNDI3MWI1NTguLmFjODYwOTgzYThlY2YwMTM4MWU5N2IzNjc4
ZjVjYTAxZDJlNTMwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5j
bHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0
LmgiCisjaW5jbHVkZSAiTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5oIgogI2luY2x1ZGUg
IkxheWVyVGlsZS5oIgogI2luY2x1ZGUgIkxheWVyVGlsZUluZGV4LmgiCiAKQEAgLTM4LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDsK
IGNsYXNzIExheWVyV2ViS2l0VGhyZWFkOwogCi1jbGFzcyBMYXllclRpbGVyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPExheWVyVGlsZXI+IHsKK2NsYXNzIExheWVyVGlsZXIgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TGF5ZXJUaWxlcj4sIHB1YmxpYyBMYXllckNvbXBvc2l0
aW5nVGhyZWFkQ2xpZW50IHsKIHB1YmxpYzoKICAgICBUaWxlSW5kZXggaW5kZXhPZlRpbGUoY29u
c3QgSW50UG9pbnQmIG9yaWdpbik7CiAgICAgSW50UG9pbnQgb3JpZ2luT2ZUaWxlKGNvbnN0IFRp
bGVJbmRleCYpOwpAQCAtNTgsMTggKzU5LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRz
RGlzcGxheSgpOwogICAgIHZvaWQgdXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQoZG91Ymxl
IHNjYWxlKTsKICAgICB2b2lkIGRpc2FibGVUaWxpbmcoYm9vbCk7CisgICAgdmlydHVhbCB2b2lk
IHNjaGVkdWxlQ29tbWl0KCk7CiAKICAgICAvLyBDb21wb3NpdGluZyB0aHJlYWQKLSAgICB2b2lk
IGxheWVyQ29tcG9zaXRpbmdUaHJlYWREZXN0cm95ZWQoKTsKLSAgICB2b2lkIHVwbG9hZFRleHR1
cmVzSWZOZWVkZWQoKTsKLSAgICB2b2lkIGRyYXdUZXh0dXJlcyhMYXllckNvbXBvc2l0aW5nVGhy
ZWFkKiwgaW50IHBvc2l0aW9uTG9jYXRpb24sIGludCB0ZXhDb29yZExvY2F0aW9uKTsKLSAgICBi
b29sIGhhc01pc3NpbmdUZXh0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWlzc2luZ1RleHR1
cmVzOyB9Ci0gICAgdm9pZCBkcmF3TWlzc2luZ1RleHR1cmVzKExheWVyQ29tcG9zaXRpbmdUaHJl
YWQqLCBpbnQgcG9zaXRpb25Mb2NhdGlvbiwgaW50IHRleENvb3JkTG9jYXRpb24pOwotICAgIHZv
aWQgZGVsZXRlVGV4dHVyZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZERlc3Ryb3llZChMYXllckNvbXBvc2l0aW5nVGhyZWFkKik7CisgICAgdmlydHVhbCB2b2lk
IGxheWVyVmlzaWJpbGl0eUNoYW5nZWQoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCosIGJvb2wgdmlz
aWJsZSk7CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmVzSWZOZWVkZWQoTGF5ZXJDb21w
b3NpdGluZ1RocmVhZCopOworICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJlKExh
eWVyQ29tcG9zaXRpbmdUaHJlYWQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmVzKExh
eWVyQ29tcG9zaXRpbmdUaHJlYWQqLCBpbnQgcG9zaXRpb25Mb2NhdGlvbiwgaW50IHRleENvb3Jk
TG9jYXRpb24pOworICAgIHZpcnR1YWwgYm9vbCBoYXNNaXNzaW5nVGV4dHVyZXMoY29uc3QgTGF5
ZXJDb21wb3NpdGluZ1RocmVhZCopIGNvbnN0IHsgcmV0dXJuIG1faGFzTWlzc2luZ1RleHR1cmVz
OyB9CisgICAgdmlydHVhbCB2b2lkIGRyYXdNaXNzaW5nVGV4dHVyZXMoTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZCosIGludCBwb3NpdGlvbkxvY2F0aW9uLCBpbnQgdGV4Q29vcmRMb2NhdGlvbik7Cisg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmVzKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqKTsK
ICAgICB2b2lkIGNvbW1pdFBlbmRpbmdUZXh0dXJlVXBsb2FkcygpOwotICAgIHZvaWQgbGF5ZXJW
aXNpYmlsaXR5Q2hhbmdlZChib29sIHZpc2libGUpOwotICAgIGJvb2wgaGFzRGlydHlUaWxlcygp
IGNvbnN0OwotICAgIHZvaWQgYmluZENvbnRlbnRzVGV4dHVyZSgpOwogCiAgICAgLy8gVGhyZWFk
IHNhZmUKICAgICB2b2lkIGFkZFJlbmRlckpvYihjb25zdCBUaWxlSW5kZXgmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJL
aXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllcldlYktpdFRocmVhZC5jcHAKaW5kZXggOGJhNTI0YmZlNDY3NmI3Y2JmZGZjYTgzYzk2
NjQxMTY4ZTAzZDRiOC4uZmE1MWY4ZjRmMzJkNjA4N2E4Mzg5NGM0NmE0YjNkZTNhNzgzZTI1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllcldlYktpdFRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHAKQEAgLTY3LDE5ICs2Nyw3IEBAIExh
eWVyV2ViS2l0VGhyZWFkOjpMYXllcldlYktpdFRocmVhZChMYXllclR5cGUgdHlwZSwgR3JhcGhp
Y3NMYXllckJsYWNrQmVycnkqIG93CiB7CiAgICAgaWYgKHR5cGUgPT0gTGF5ZXIpCiAgICAgICAg
IG1fdGlsZXIgPSBMYXllclRpbGVyOjpjcmVhdGUodGhpcyk7Ci0gICAgbV9sYXllckNvbXBvc2l0
aW5nVGhyZWFkID0gTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6Y3JlYXRlKHR5cGUsIG1fdGlsZXIp
OwotfQotCi1MYXllcldlYktpdFRocmVhZDo6TGF5ZXJXZWJLaXRUaHJlYWQoUGFzc1JlZlB0cjxM
YXllckNvbXBvc2l0aW5nVGhyZWFkPiBsYXllckNvbXBvc2l0aW5nVGhyZWFkLCBHcmFwaGljc0xh
eWVyQmxhY2tCZXJyeSogb3duZXIpCi0gICAgOiBMYXllckRhdGEoQ3VzdG9tTGF5ZXIpCi0gICAg
LCBtX293bmVyKG93bmVyKQotICAgICwgbV9zdXBlcmxheWVyKDApCi0gICAgLCBtX2NvbnRlbnRz
KDApCi0gICAgLCBtX3NjYWxlKDEuMCkKLSAgICAsIG1faXNEcmF3YWJsZShmYWxzZSkKLSAgICAs
IG1faXNNYXNrKGZhbHNlKQotewotICAgIG1fbGF5ZXJDb21wb3NpdGluZ1RocmVhZCA9IGxheWVy
Q29tcG9zaXRpbmdUaHJlYWQ7CisgICAgbV9sYXllckNvbXBvc2l0aW5nVGhyZWFkID0gTGF5ZXJD
b21wb3NpdGluZ1RocmVhZDo6Y3JlYXRlKHR5cGUsIG1fdGlsZXIuZ2V0KCkpOwogfQogCiBMYXll
cldlYktpdFRocmVhZDo6fkxheWVyV2ViS2l0VGhyZWFkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRU
aHJlYWQuaAppbmRleCA5YTYzNDlmZjcyYThlOGMxYTFhMDJiOTBhYTIwODVjOGEzOTBmMGZlLi42
ODg5YmJmYTM5OTEwMTNlNzZlNzRkNGUyODBjNTQxY2ZjNmE3MDdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
cldlYktpdFRocmVhZC5oCkBAIC0xNDksOSArMTQ5LDYgQEAgcHVibGljOgogcHJvdGVjdGVkOgog
ICAgIExheWVyV2ViS2l0VGhyZWFkKExheWVyVHlwZSwgR3JhcGhpY3NMYXllckJsYWNrQmVycnkq
IG93bmVyKTsKIAotICAgIC8vIENyZWF0ZSBhIGN1c3RvbSBMYXllcntXZWJLaXRUaHJlYWQsIENv
bXBvc2l0aW5nVGhyZWFkfSBwYWlyLCB1c2VkIHdoZW4geW91IG5lZWQgdG8gc3ViY2xhc3MgYm90
aC4KLSAgICBMYXllcldlYktpdFRocmVhZChQYXNzUmVmUHRyPExheWVyQ29tcG9zaXRpbmdUaHJl
YWQ+LCBHcmFwaGljc0xheWVyQmxhY2tCZXJyeSogb3duZXIpOwotCiAgICAgdm9pZCBzZXROZWVk
c1RleHR1cmUoYm9vbCBuZWVkc1RleHR1cmUpIHsgbV9uZWVkc1RleHR1cmUgPSBuZWVkc1RleHR1
cmU7IH0KICAgICB2b2lkIHNldExheWVyUHJvZ3JhbVNoYWRlcihMYXllckRhdGE6OkxheWVyUHJv
Z3JhbVNoYWRlciBzaGFkZXIpIHsgbV9sYXllclByb2dyYW1TaGFkZXIgPSBzaGFkZXI7IH0KICAg
ICB2b2lkIGNyZWF0ZUZyb250QnVmZmVyTG9jaygpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>