<?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>85758</bug_id>
          
          <creation_ts>2012-05-06 19:00:05 -0700</creation_ts>
          <short_desc>[Chromium] Move clipboard to Platform.h</short_desc>
          <delta_ts>2012-05-09 15:50:14 -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 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>82948</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Mark Pilgrim (Google)">pilgrim</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>617272</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-06 19:00:05 -0700</bug_when>
    <thetext>[Chromium] Move clipboard to Platform.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617273</commentid>
    <comment_count>1</comment_count>
      <attachid>140449</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-06 19:00:37 -0700</bug_when>
    <thetext>Created attachment 140449
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617276</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-06 19:02:57 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617340</commentid>
    <comment_count>3</comment_count>
      <attachid>140449</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-06 20:44:59 -0700</bug_when>
    <thetext>Comment on attachment 140449
Patch

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

&gt; Source/WebKit/chromium/public/platform/WebKitPlatformSupport.h:-54
&gt; -class WebClipboard;

You can probably guess what I&apos;m going to say at this point.  :)

WebClipboard.h and its dependencies are already in Source/WebKit/chromium/public/platform, so they should be easy to move at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617581</commentid>
    <comment_count>4</comment_count>
      <attachid>140525</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-07 07:19:07 -0700</bug_when>
    <thetext>Created attachment 140525
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617583</commentid>
    <comment_count>5</comment_count>
      <attachid>140525</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-07 07:25:14 -0700</bug_when>
    <thetext>Comment on attachment 140525
Patch

Attachment 140525 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12647056</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617675</commentid>
    <comment_count>6</comment_count>
      <attachid>140525</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-07 10:20:51 -0700</bug_when>
    <thetext>Comment on attachment 140525
Patch

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

&gt; Source/Platform/chromium/public/WebClipboard.h:42
&gt; +class WebDragData;
&gt; +class WebImage;

Please move these dependencies too.  The idea is that there shouldn&apos;t be any dependencies from the Platform layer to the WebKit layer.  (Dependencies from WebKit to Platform are fine.)  Here&apos;s a diagram that&apos;s intended to illustrate that relation:

https://docs.google.com/drawings/d/1GJXd6XSLEehvuqA7Xbvbz0OH6Znnr2iTijihjrEY0ts/edit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617678</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-07 10:22:52 -0700</bug_when>
    <thetext>To avoid breaking the compile when moving these APIs around, we&apos;ve been introducing &quot;forwarding&quot; headers like the following:

http://trac.webkit.org/browser/trunk/Source/WebKit/chromium/public/platform/WebURL.h

Once we&apos;ve finished factoring the Platform API out of the WebKit API, we&apos;ll update all the users of the API to use the new header locations and remove these forwarding headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617800</commentid>
    <comment_count>8</comment_count>
      <attachid>140566</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-07 12:03:39 -0700</bug_when>
    <thetext>Created attachment 140566
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617802</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-07 12:05:17 -0700</bug_when>
    <thetext>Still WIP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619683</commentid>
    <comment_count>10</comment_count>
      <attachid>140986</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-09 11:36:01 -0700</bug_when>
    <thetext>Created attachment 140986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619684</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-09 11:36:37 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 140525 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140525&amp;action=review
&gt; 
&gt; &gt; Source/Platform/chromium/public/WebClipboard.h:42
&gt; &gt; +class WebDragData;
&gt; &gt; +class WebImage;
&gt; 
&gt; Please move these dependencies too.

Done in latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619690</commentid>
    <comment_count>12</comment_count>
      <attachid>140986</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-09 11:41:48 -0700</bug_when>
    <thetext>Comment on attachment 140986
Patch

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

&gt; Source/Platform/chromium/public/Platform.h:67
&gt;      // Must return non-null.
&gt; +    virtual WebClipboard* clipboard() { return 0; }
&gt; +
&gt; +    // Must return non-null.
&gt;      virtual WebMimeRegistry* mimeRegistry() { return 0; }

these comments are kind of weird with the default impls

&gt; Source/Platform/chromium/public/WebImage.h:40
&gt; +#elif WEBKIT_USING_CG
&gt; +typedef struct CGImage* CGImageRef;
&gt; +#endif

this isn&apos;t necessarily something you have to do, but we should delete all the WEBKIT_USING_CG code from chromium code ASAPly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619694</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-09 11:46:17 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 140986 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140986&amp;action=review
&gt; &gt; Source/Platform/chromium/public/WebImage.h:40
&gt; &gt; +#elif WEBKIT_USING_CG
&gt; &gt; +typedef struct CGImage* CGImageRef;
&gt; &gt; +#endif
&gt; 
&gt; this isn&apos;t necessarily something you have to do, but we should delete all the WEBKIT_USING_CG code from chromium code ASAPly

When I was looking at removing BUILDING_ON_LEOPARD code the other day, I looked at removing CHROMIUM branches from various bits of cg, mac and cocoa files, but it was&apos;t clear to me what parts were still in use by Chromium and which weren&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619700</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-09 11:50:18 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (From update of attachment 140986 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140986&amp;action=review
&gt; &gt; &gt; Source/Platform/chromium/public/WebImage.h:40
&gt; &gt; &gt; +#elif WEBKIT_USING_CG
&gt; &gt; &gt; +typedef struct CGImage* CGImageRef;
&gt; &gt; &gt; +#endif
&gt; &gt; 
&gt; &gt; this isn&apos;t necessarily something you have to do, but we should delete all the WEBKIT_USING_CG code from chromium code ASAPly
&gt; 
&gt; When I was looking at removing BUILDING_ON_LEOPARD code the other day, I looked at removing CHROMIUM branches from various bits of cg, mac and cocoa files, but it was&apos;t clear to me what parts were still in use by Chromium and which weren&apos;t.

That&apos;s slightly different.  We never use CoreGraphics as the backend for GraphicsContext in Chromium, but we do still use some CG stuff in various bits of system integration (like theming code, iirc).  My understanding is that WEBKIT_USING_CG means &quot;Using CoreGraphics as the raster backend&quot;, which we never set, but that may not be the meaning of all the code in cg/ mac/ cocoa/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619730</commentid>
    <comment_count>15</comment_count>
      <attachid>140986</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 12:34:05 -0700</bug_when>
    <thetext>Comment on attachment 140986
Patch

Attachment 140986 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12665003</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619736</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-09 12:37:50 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 140986 [details])
&gt; Attachment 140986 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/12665003

Is this because I removed WebClipboard.h from Source/WebKit/chromium/WebKit.gyp?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619737</commentid>
    <comment_count>17</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-09 12:38:37 -0700</bug_when>
    <thetext>...and if so, why didn&apos;t I catch this in my local build? What am I doing differently from the bots?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619815</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-09 14:04:07 -0700</bug_when>
    <thetext>Looks like you forgot to svn add Source/Platform/chromium/public/WebClipboard.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619841</commentid>
    <comment_count>19</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-09 14:33:58 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Looks like you forgot to svn add Source/Platform/chromium/public/WebClipboard.h

Grr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619844</commentid>
    <comment_count>20</comment_count>
      <attachid>141016</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-09 14:37:39 -0700</bug_when>
    <thetext>Created attachment 141016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619853</commentid>
    <comment_count>21</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-09 14:41:12 -0700</bug_when>
    <thetext>Filed bug bug 86018 for removing code behind WEBKIT_USING_CG</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619874</commentid>
    <comment_count>22</comment_count>
      <attachid>141016</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-09 14:53:53 -0700</bug_when>
    <thetext>Comment on attachment 141016
Patch

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

&gt; Source/Platform/chromium/public/Platform.h:67
&gt;      // Must return non-null.
&gt; +    virtual WebClipboard* clipboard() { return 0; }
&gt; +
&gt; +    // Must return non-null.
&gt;      virtual WebMimeRegistry* mimeRegistry() { return 0; }

These comments do seem odd next to these default implementations, but I think its ok.  Can we use ASSERT_NOT_REACHED() in API headers?  I suspect we&apos;re not able to.

&gt; Source/WebKit/chromium/src/DragClientImpl.cpp:43
&gt;  
&gt; +#include &lt;public/WebDragData.h&gt;

There&apos;s no need for this blank line.

&gt; Source/WebKit/chromium/src/WebDragData.cpp:42
&gt; +#include &lt;public/WebDragData.h&gt;

This header should have been left just after config.  You probably got a style warning, but that&apos;s a bug in the style checker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619939</commentid>
    <comment_count>23</comment_count>
      <attachid>141016</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 15:50:08 -0700</bug_when>
    <thetext>Comment on attachment 141016
Patch

Clearing flags on attachment: 141016

Committed r116566: &lt;http://trac.webkit.org/changeset/116566&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619940</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 15:50:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140449</attachid>
            <date>2012-05-06 19:00:37 -0700</date>
            <delta_ts>2012-05-07 07:18:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85758-20120506215954.patch</filename>
            <type>text/plain</type>
            <size>4318</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2MjU4KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA1LTA2ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1v
dmUgY2xpcGJvYXJkIHRvIFBsYXRmb3JtLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg1NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFydCBvZiBhIHJlZmFjdG9yaW5nIHNlcmllcy4gU2VlIHRyYWNr
aW5nIGJ1ZyA4Mjk0OC4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBsYXRmb3JtKToKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm06OmNsaXBib2FyZCk6CisKIDIwMTItMDUtMDQgIFRvbW15IFdpZGVuZmx5Y2h0ICA8
dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBNYWtlIFBlZXJD
b25uZWN0aW9uMDAncyBBUEkgZnVsbHkgY29tcGxpYW50IHdpdGggdGhlIGRyYWZ0CkluZGV4OiBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxMTYy
NTUpCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBX
ZWJBdWRpb0J1czsKK2NsYXNzIFdlYkNsaXBib2FyZDsKIGNsYXNzIFdlYk1lZGlhU3RyZWFtQ2Vu
dGVyOwogY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQ7CiBjbGFzcyBXZWJNaW1lUmVn
aXN0cnk7CkBAIC01OSw2ICs2MCw5IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRp
YyBQbGF0Zm9ybSogY3VycmVudCgpOwogCiAgICAgLy8gTXVzdCByZXR1cm4gbm9uLW51bGwuCisg
ICAgdmlydHVhbCBXZWJDbGlwYm9hcmQqIGNsaXBib2FyZCgpIHsgcmV0dXJuIDA7IH0KKworICAg
IC8vIE11c3QgcmV0dXJuIG5vbi1udWxsLgogICAgIHZpcnR1YWwgV2ViTWltZVJlZ2lzdHJ5KiBt
aW1lUmVnaXN0cnkoKSB7IHJldHVybiAwOyB9CiAKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDExNjI1OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDUtMDYgIE1hcmsgUGls
Z3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gTW92ZSBj
bGlwYm9hcmQgdG8gUGxhdGZvcm0uaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODU3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBQYXJ0IG9mIGEgcmVmYWN0b3Jpbmcgc2VyaWVzLiBTZWUgdHJhY2tpbmcg
YnVnIDgyOTQ4LgorCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3Vw
cG9ydC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdFBsYXRmb3JtU3VwcG9y
dCk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpjb3B5KToKKwogMjAxMi0wNS0wNiAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIENTUCBzaG91bGQgbGV0IHNp
dGVzIGJvdGggZW5mb3JjZSBvbmUgcG9saWN5IGFuZCBtb25pdG9yIGFub3RoZXIKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9y
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCShyZXZpc2lvbiAxMTYyNTUpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdl
YkFwcGxpY2F0aW9uQ2FjaGVIb3N0OyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0
Zm9ybT8KIGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50OyAvLyBGSVhNRTogRG9l
cyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYkJsb2JSZWdpc3RyeTsKLWNsYXNz
IFdlYkNsaXBib2FyZDsKIGNsYXNzIFdlYkNvb2tpZUphcjsKIGNsYXNzIFdlYkZpbGVTeXN0ZW07
CiBjbGFzcyBXZWJGaWxlVXRpbGl0aWVzOwpAQCAtNjksOSArNjgsNiBAQCBjbGFzcyBXZWJXb3Jr
ZXJSdW5Mb29wOwogY2xhc3MgV2ViS2l0UGxhdGZvcm1TdXBwb3J0IDogcHVibGljIFBsYXRmb3Jt
IHsKIHB1YmxpYzoKICAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KLSAgICB2aXJ0dWFsIFdl
YkNsaXBib2FyZCogY2xpcGJvYXJkKCkgeyByZXR1cm4gMDsgfQotCi0gICAgLy8gTXVzdCByZXR1
cm4gbm9uLW51bGwuCiAgICAgdmlydHVhbCBXZWJGaWxlVXRpbGl0aWVzKiBmaWxlVXRpbGl0aWVz
KCkgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gTWF5IHJldHVybiBudWxsIGlmIHNhbmRib3ggc3Vw
cG9ydCBpcyBub3QgbmVjZXNzYXJ5CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAkocmV2aXNpb24gMTE2MjU1KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50
LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJXZWJL
aXQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNs
dWRlICJXZWJQbHVnaW4uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCkBAIC03NSw2ICs3NCw3IEBACiAjaW5jbHVkZSAiU2Ny
b2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1
ZGUgIldoZWVsRXZlbnQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KIAogI2lmIEVO
QUJMRShHRVNUVVJFX0VWRU5UUykKICNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgpA
QCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6Y29weSgpCiAg
ICAgaWYgKCFtX3dlYlBsdWdpbi0+aGFzU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jbGlwYm9hcmQoKS0+d3JpdGVIVE1MKG1fd2Vi
UGx1Z2luLT5zZWxlY3Rpb25Bc01hcmt1cCgpLCBXZWJVUkwoKSwgbV93ZWJQbHVnaW4tPnNlbGVj
dGlvbkFzVGV4dCgpLCBmYWxzZSk7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5j
bGlwYm9hcmQoKS0+d3JpdGVIVE1MKG1fd2ViUGx1Z2luLT5zZWxlY3Rpb25Bc01hcmt1cCgpLCBX
ZWJVUkwoKSwgbV93ZWJQbHVnaW4tPnNlbGVjdGlvbkFzVGV4dCgpLCBmYWxzZSk7CiB9CiAKIFdl
YkVsZW1lbnQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6ZWxlbWVudCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140525</attachid>
            <date>2012-05-07 07:19:07 -0700</date>
            <delta_ts>2012-05-07 12:03:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85758-20120507101822.patch</filename>
            <type>text/plain</type>
            <size>16220</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2MzA3KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA1LTA3ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1v
dmUgY2xpcGJvYXJkIHRvIFBsYXRmb3JtLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg1NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFydCBvZiBhIHJlZmFjdG9yaW5nIHNlcmllcy4gU2VlIHRyYWNr
aW5nIGJ1ZyA4Mjk0OC4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hy
b21pdW0vcHVibGljL1BsYXRmb3JtLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUGxh
dGZvcm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6Y2xpcGJvYXJkKToKKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViQ2xpcGJvYXJkLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkNsaXBib2FyZC5oLgorICAgICAgICAoV2Vi
S2l0OjpXZWJDbGlwYm9hcmQ6On5XZWJDbGlwYm9hcmQpOgorCiAyMDEyLTA1LTA0ICBUb21teSBX
aWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQ
STogTWFrZSBQZWVyQ29ubmVjdGlvbjAwJ3MgQVBJIGZ1bGx5IGNvbXBsaWFudCB3aXRoIHRoZSBk
cmFmdApJbmRleDogU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkJKHJldmlzaW9uIDExNjMwNykKKysrIFNvdXJj
ZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBA
CiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkF1ZGlvRGV2aWNlLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDU3RyaW5nLmgnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL3B1YmxpYy9XZWJDYW52YXMuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dl
YkNsaXBib2FyZC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29sb3IuaCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbi5oJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmgnLApJbmRleDogU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAkocmV2aXNpb24gMTE2MzA3KQorKysgU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw2ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQXVkaW9CdXM7
CitjbGFzcyBXZWJDbGlwYm9hcmQ7CiBjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlcjsKIGNsYXNz
IFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50OwogY2xhc3MgV2ViTWltZVJlZ2lzdHJ5OwpAQCAt
NTksNiArNjAsOSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgUGxhdGZvcm0q
IGN1cnJlbnQoKTsKIAogICAgIC8vIE11c3QgcmV0dXJuIG5vbi1udWxsLgorICAgIHZpcnR1YWwg
V2ViQ2xpcGJvYXJkKiBjbGlwYm9hcmQoKSB7IHJldHVybiAwOyB9CisKKyAgICAvLyBNdXN0IHJl
dHVybiBub24tbnVsbC4KICAgICB2aXJ0dWFsIFdlYk1pbWVSZWdpc3RyeSogbWltZVJlZ2lzdHJ5
KCkgeyByZXR1cm4gMDsgfQogCiAKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViQ2xpcGJvYXJkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJDbGlwYm9hcmQuaAkocmV2aXNpb24gMTE2MzA1KQkoZnJvbSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDbGlwYm9hcmQuaDoxMTYzMDUpCisrKyBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNsaXBib2FyZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNsaXBib2FyZF9oCisjZGVmaW5lIFdlYkNs
aXBib2FyZF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJEYXRhLmgi
CisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJEcmFnRGF0YTsKK2NsYXNzIFdlYkltYWdlOworY2xh
c3MgV2ViVVJMOworCitjbGFzcyBXZWJDbGlwYm9hcmQgeworcHVibGljOgorICAgIGVudW0gRm9y
bWF0IHsKKyAgICAgICAgRm9ybWF0UGxhaW5UZXh0LAorICAgICAgICBGb3JtYXRIVE1MLAorICAg
ICAgICBGb3JtYXRCb29rbWFyaywKKyAgICAgICAgRm9ybWF0U21hcnRQYXN0ZQorICAgIH07CisK
KyAgICBlbnVtIEJ1ZmZlciB7CisgICAgICAgIEJ1ZmZlclN0YW5kYXJkLAorICAgICAgICAvLyBV
c2VkIG9uIHBsYXRmb3JtcyBsaWtlIHRoZSBYIFdpbmRvdyBTeXN0ZW0gdGhhdCB0cmVhdCBzZWxl
Y3Rpb24KKyAgICAgICAgLy8gYXMgYSB0eXBlIG9mIGNsaXBib2FyZC4KKyAgICAgICAgQnVmZmVy
U2VsZWN0aW9uLAorICAgIH07CisKKyAgICAvLyBSZXR1cm5zIGFuIGlkZW50aWZpZXIgd2hpY2gg
Y2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGRhdGEKKyAgICAvLyBjb250YWlu
ZWQgd2l0aGluIHRoZSBjbGlwYm9hcmQgaGFzIGNoYW5nZWQuCisgICAgdmlydHVhbCB1aW50NjQg
c2VxdWVuY2VOdW1iZXIoQnVmZmVyKSB7IHJldHVybiAwOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wg
aXNGb3JtYXRBdmFpbGFibGUoRm9ybWF0LCBCdWZmZXIpIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAg
ICB2aXJ0dWFsIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHJlYWRBdmFpbGFibGVUeXBlcygKKyAgICAg
ICAgQnVmZmVyLCBib29sKiBjb250YWluc0ZpbGVuYW1lcykgeyByZXR1cm4gV2ViVmVjdG9yPFdl
YlN0cmluZz4oKTsgfQorICAgIHZpcnR1YWwgV2ViU3RyaW5nIHJlYWRQbGFpblRleHQoQnVmZmVy
KSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQorICAgIC8vIGZyYWdtZW50U3RhcnQgYW5kIGZyYWdt
ZW50RW5kIGFyZSBpbmRleGVzIGludG8gdGhlIHJldHVybmVkIG1hcmt1cCB0aGF0CisgICAgLy8g
aW5kaWNhdGUgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIGZyYWdtZW50IGlmIHRoZSByZXR1cm5l
ZCBtYXJrdXAKKyAgICAvLyBjb250YWlucyBhZGRpdGlvbmFsIGNvbnRleHQuIElmIHRoZXJlIGlz
IG5vIGFkZGl0aW9uYWwgY29udGV4dCwKKyAgICAvLyBmcmFnbWVudFN0YXJ0IHdpbGwgYmUgemVy
byBhbmQgZnJhZ21lbnRFbmQgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgbGVuZ3RoCisgICAgLy8g
b2YgdGhlIHJldHVybmVkIG1hcmt1cC4KKyAgICB2aXJ0dWFsIFdlYlN0cmluZyByZWFkSFRNTCgK
KyAgICAgICAgQnVmZmVyIGJ1ZmZlciwgV2ViVVJMKiBwYWdlVVJMLCB1bnNpZ25lZCogZnJhZ21l
bnRTdGFydCwKKyAgICAgICAgdW5zaWduZWQqIGZyYWdtZW50RW5kKSB7IHJldHVybiBXZWJTdHJp
bmcoKTsgfQorICAgIHZpcnR1YWwgV2ViRGF0YSByZWFkSW1hZ2UoQnVmZmVyKSB7IHJldHVybiBX
ZWJEYXRhKCk7IH0KKyAgICB2aXJ0dWFsIFdlYlN0cmluZyByZWFkQ3VzdG9tRGF0YSgKKyAgICAg
ICAgQnVmZmVyLCBjb25zdCBXZWJTdHJpbmcmIHR5cGUpIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVQbGFpblRleHQoY29uc3QgV2ViU3RyaW5nJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIHdyaXRlSFRNTCgKKyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBo
dG1sVGV4dCwgY29uc3QgV2ViVVJMJiwKKyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBwbGFpblRl
eHQsIGJvb2wgd3JpdGVTbWFydFBhc3RlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVVUkwo
CisgICAgICAgIGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlN0cmluZyYgdGl0bGUpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCB3cml0ZUltYWdlKAorICAgICAgICBjb25zdCBXZWJJbWFnZSYsIGNvbnN0
IFdlYlVSTCYsIGNvbnN0IFdlYlN0cmluZyYgdGl0bGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3
cml0ZURhdGFPYmplY3QoY29uc3QgV2ViRHJhZ0RhdGEmKSB7IH0KKworcHJvdGVjdGVkOgorICAg
IH5XZWJDbGlwYm9hcmQoKSB7fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDbGlwYm9hcmQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNsaXBib2Fy
ZC5oCShyZXZpc2lvbiAxMTYzMDUpCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkNsaXBib2FyZC5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVEYXRhT2JqZWN0KGNvbnN0IFdlYkRyYWdEYXRhJikgeyB9
CiAKIHByb3RlY3RlZDoKLSAgICB+V2ViQ2xpcGJvYXJkKCkge30KKyAgICB+V2ViQ2xpcGJvYXJk
KCkgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMTYzMDcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA1LTA3ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1v
dmUgY2xpcGJvYXJkIHRvIFBsYXRmb3JtLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg1NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFydCBvZiBhIHJlZmFjdG9yaW5nIHNlcmllcy4gU2VlIHRyYWNr
aW5nIGJ1ZyA4Mjk0OC4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGlj
L3BsYXRmb3JtL1dlYkNsaXBib2FyZC5oOiBSZW1vdmVkLgorICAgICAgICAqIHB1YmxpYy9wbGF0
Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXRQbGF0Zm9ybVN1cHBvcnQpOgorICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0Vu
dW1zLmNwcDoKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKiBz
cmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdp
bkNvbnRhaW5lckltcGw6OmNvcHkpOgorCiAyMDEyLTA1LTA3ICBLaW51a28gWWFzdWRhICA8a2lu
dWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkOiB0aGUgc2FtZSBmaXggaW4g
YW5vdGhlciBmaWxlIGZvciBjaHJvbWl1bSB3aW4gYnVpbGQuICBBZGRpbmcgV2ViQ29yZSBuYW1l
c3BhY2UgdG8gRmlsZVN5c3RlbVR5cGVzLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAkocmV2aXNpb24gMTE2MzA3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTksNyArMjk5LDYgQEAKICAgICAgICAgICAgICAgICAncHVi
bGljL3BsYXRmb3JtL1dlYkJsb2JEYXRhLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxh
dGZvcm0vV2ViQmxvYlJlZ2lzdHJ5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZv
cm0vV2ViQ2FudmFzLmgnLAotICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViQ2xp
cGJvYXJkLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViQ29sb3IuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJDb21tb24uaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJDb250ZW50TGF5ZXIuaCcsCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDbGlwYm9hcmQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDbGlwYm9h
cmQuaAkocmV2aXNpb24gMTE2MzA3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViQ2xpcGJvYXJkLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsOTggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgV2ViQ2xpcGJvYXJkX2gKLSNkZWZpbmUgV2ViQ2xpcGJvYXJkX2gKLQotI2luY2x1ZGUg
IldlYkNvbW1vbi5oIgotI2luY2x1ZGUgIldlYkRhdGEuaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcu
aCIKLSNpbmNsdWRlICJXZWJWZWN0b3IuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNz
IFdlYkRyYWdEYXRhOwotY2xhc3MgV2ViSW1hZ2U7Ci1jbGFzcyBXZWJVUkw7Ci0KLWNsYXNzIFdl
YkNsaXBib2FyZCB7Ci1wdWJsaWM6Ci0gICAgZW51bSBGb3JtYXQgewotICAgICAgICBGb3JtYXRQ
bGFpblRleHQsCi0gICAgICAgIEZvcm1hdEhUTUwsCi0gICAgICAgIEZvcm1hdEJvb2ttYXJrLAot
ICAgICAgICBGb3JtYXRTbWFydFBhc3RlCi0gICAgfTsKLQotICAgIGVudW0gQnVmZmVyIHsKLSAg
ICAgICAgQnVmZmVyU3RhbmRhcmQsCi0gICAgICAgIC8vIFVzZWQgb24gcGxhdGZvcm1zIGxpa2Ug
dGhlIFggV2luZG93IFN5c3RlbSB0aGF0IHRyZWF0IHNlbGVjdGlvbgotICAgICAgICAvLyBhcyBh
IHR5cGUgb2YgY2xpcGJvYXJkLgotICAgICAgICBCdWZmZXJTZWxlY3Rpb24sCi0gICAgfTsKLQot
ICAgIC8vIFJldHVybnMgYW4gaWRlbnRpZmllciB3aGljaCBjYW4gYmUgdXNlZCB0byBkZXRlcm1p
bmUgd2hldGhlciB0aGUgZGF0YQotICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGNsaXBib2Fy
ZCBoYXMgY2hhbmdlZC4KLSAgICB2aXJ0dWFsIHVpbnQ2NCBzZXF1ZW5jZU51bWJlcihCdWZmZXIp
IHsgcmV0dXJuIDA7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBpc0Zvcm1hdEF2YWlsYWJsZShGb3Jt
YXQsIEJ1ZmZlcikgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgV2ViVmVjdG9yPFdl
YlN0cmluZz4gcmVhZEF2YWlsYWJsZVR5cGVzKAotICAgICAgICBCdWZmZXIsIGJvb2wqIGNvbnRh
aW5zRmlsZW5hbWVzKSB7IHJldHVybiBXZWJWZWN0b3I8V2ViU3RyaW5nPigpOyB9Ci0gICAgdmly
dHVhbCBXZWJTdHJpbmcgcmVhZFBsYWluVGV4dChCdWZmZXIpIHsgcmV0dXJuIFdlYlN0cmluZygp
OyB9Ci0gICAgLy8gZnJhZ21lbnRTdGFydCBhbmQgZnJhZ21lbnRFbmQgYXJlIGluZGV4ZXMgaW50
byB0aGUgcmV0dXJuZWQgbWFya3VwIHRoYXQKLSAgICAvLyBpbmRpY2F0ZSB0aGUgc3RhcnQgYW5k
IGVuZCBvZiB0aGUgZnJhZ21lbnQgaWYgdGhlIHJldHVybmVkIG1hcmt1cAotICAgIC8vIGNvbnRh
aW5zIGFkZGl0aW9uYWwgY29udGV4dC4gSWYgdGhlcmUgaXMgbm8gYWRkaXRpb25hbCBjb250ZXh0
LAotICAgIC8vIGZyYWdtZW50U3RhcnQgd2lsbCBiZSB6ZXJvIGFuZCBmcmFnbWVudEVuZCB3aWxs
IGJlIHRoZSBzYW1lIGFzIHRoZSBsZW5ndGgKLSAgICAvLyBvZiB0aGUgcmV0dXJuZWQgbWFya3Vw
LgotICAgIHZpcnR1YWwgV2ViU3RyaW5nIHJlYWRIVE1MKAotICAgICAgICBCdWZmZXIgYnVmZmVy
LCBXZWJVUkwqIHBhZ2VVUkwsIHVuc2lnbmVkKiBmcmFnbWVudFN0YXJ0LAotICAgICAgICB1bnNp
Z25lZCogZnJhZ21lbnRFbmQpIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBX
ZWJEYXRhIHJlYWRJbWFnZShCdWZmZXIpIHsgcmV0dXJuIFdlYkRhdGEoKTsgfQotICAgIHZpcnR1
YWwgV2ViU3RyaW5nIHJlYWRDdXN0b21EYXRhKAotICAgICAgICBCdWZmZXIsIGNvbnN0IFdlYlN0
cmluZyYgdHlwZSkgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KLQotICAgIHZpcnR1YWwgdm9pZCB3
cml0ZVBsYWluVGV4dChjb25zdCBXZWJTdHJpbmcmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGVIVE1MKAotICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGh0bWxUZXh0LCBjb25zdCBXZWJVUkwm
LAotICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHBsYWluVGV4dCwgYm9vbCB3cml0ZVNtYXJ0UGFz
dGUpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3cml0ZVVSTCgKLSAgICAgICAgY29uc3QgV2ViVVJM
JiwgY29uc3QgV2ViU3RyaW5nJiB0aXRsZSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHdyaXRlSW1h
Z2UoCi0gICAgICAgIGNvbnN0IFdlYkltYWdlJiwgY29uc3QgV2ViVVJMJiwgY29uc3QgV2ViU3Ry
aW5nJiB0aXRsZSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHdyaXRlRGF0YU9iamVjdChjb25zdCBX
ZWJEcmFnRGF0YSYpIHsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgfldlYkNsaXBib2FyZCgpIHt9Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0
Zm9ybVN1cHBvcnQuaAkocmV2aXNpb24gMTE2MzA3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDcgKzUxLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBcHBsaWNhdGlv
bkNhY2hlSG9zdDsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CiBjbGFz
cyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudDsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxv
bmcgaW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJCbG9iUmVnaXN0cnk7Ci1jbGFzcyBXZWJDbGlwYm9h
cmQ7CiBjbGFzcyBXZWJDb29raWVKYXI7CiBjbGFzcyBXZWJGaWxlU3lzdGVtOwogY2xhc3MgV2Vi
RmlsZVV0aWxpdGllczsKQEAgLTY5LDkgKzY4LDYgQEAgY2xhc3MgV2ViV29ya2VyUnVuTG9vcDsK
IGNsYXNzIFdlYktpdFBsYXRmb3JtU3VwcG9ydCA6IHB1YmxpYyBQbGF0Zm9ybSB7CiBwdWJsaWM6
CiAgICAgLy8gTXVzdCByZXR1cm4gbm9uLW51bGwuCi0gICAgdmlydHVhbCBXZWJDbGlwYm9hcmQq
IGNsaXBib2FyZCgpIHsgcmV0dXJuIDA7IH0KLQotICAgIC8vIE11c3QgcmV0dXJuIG5vbi1udWxs
LgogICAgIHZpcnR1YWwgV2ViRmlsZVV0aWxpdGllcyogZmlsZVV0aWxpdGllcygpIHsgcmV0dXJu
IDA7IH0KIAogICAgIC8vIE1heSByZXR1cm4gbnVsbCBpZiBzYW5kYm94IHN1cHBvcnQgaXMgbm90
IG5lY2Vzc2FyeQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJKHJldmlzaW9uIDExNjMwNykKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
OSwxMiArOTksMTIgQEAKICNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCIKICNpbmNs
dWRlICJXZWJUZXh0Q2hlY2tpbmdUeXBlLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgotI2luY2x1
ZGUgInBsYXRmb3JtL1dlYkNsaXBib2FyZC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJQ0VPcHRpb25zLmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQ
ZWVyQ29ubmVjdGlvbjAwSGFuZGxlci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBlZXJDb25u
ZWN0aW9uMDBIYW5kbGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkNsaXBib2FyZC5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaD4KICNpbmNsdWRlIDxwdWJs
aWMvV2ViUmVmZXJyZXJQb2xpY3kuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCShy
ZXZpc2lvbiAxMTYzMDcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1
cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2IEBACiAjaW5jbHVkZSAiV2Vi
V29ya2VyQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIldlYldvcmtlclJ1bkxvb3AuaCIKICNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJBdWRpb0J1cy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNsaXBi
b2FyZC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvb2tpZS5oIgogI2luY2x1ZGUgInBsYXRm
b3JtL1dlYkNvb2tpZUphci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkRhdGEuaCIKQEAgLTEw
MSw2ICsxMDAsNyBAQAogCiAjaW5jbHVkZSAiV29ya2VyLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29u
dGV4dFByb3h5LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkNsaXBib2FyZC5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJNaW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5D
b250YWluZXJJbXBsLmNwcAkocmV2aXNpb24gMTE2MzA3KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDE0ICszNCwxMiBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVu
dEltcGwuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJHcm91cC5oIgotI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNsaXBib2FyZC5oIgogI2luY2x1ZGUgIldlYkN1cnNvckluZm8uaCIKICNpbmNsdWRlICJX
ZWJEYXRhU291cmNlSW1wbC5oIgogI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKICNpbmNsdWRlICJX
ZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaCIKICNp
bmNsdWRlICJXZWJLaXQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBv
cnQuaCIKICNpbmNsdWRlICJXZWJQbHVnaW4uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0
LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCkBAIC03NSw2ICs3Myw4IEBACiAj
aW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRv
ci5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0u
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ2xpcGJvYXJkLmg+CiAKICNpZiBFTkFCTEUoR0VTVFVS
RV9FVkVOVFMpCiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIKQEAgLTI3OSw3ICsy
NzksNyBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmNvcHkoKQogICAgIGlmICghbV93
ZWJQbHVnaW4tPmhhc1NlbGVjdGlvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQoKS0+Y2xpcGJvYXJkKCktPndyaXRlSFRNTChtX3dlYlBsdWdpbi0+c2Vs
ZWN0aW9uQXNNYXJrdXAoKSwgV2ViVVJMKCksIG1fd2ViUGx1Z2luLT5zZWxlY3Rpb25Bc1RleHQo
KSwgZmFsc2UpOworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y2xpcGJvYXJkKCkt
PndyaXRlSFRNTChtX3dlYlBsdWdpbi0+c2VsZWN0aW9uQXNNYXJrdXAoKSwgV2ViVVJMKCksIG1f
d2ViUGx1Z2luLT5zZWxlY3Rpb25Bc1RleHQoKSwgZmFsc2UpOwogfQogCiBXZWJFbGVtZW50IFdl
YlBsdWdpbkNvbnRhaW5lckltcGw6OmVsZW1lbnQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140566</attachid>
            <date>2012-05-07 12:03:39 -0700</date>
            <delta_ts>2012-05-09 11:35:57 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-85758-20120507150253.patch</filename>
            <type>text/plain</type>
            <size>14818</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2MzM1KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA1LTA3ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1v
dmUgY2xpcGJvYXJkIHRvIFBsYXRmb3JtLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg1NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFydCBvZiBhIHJlZmFjdG9yaW5nIHNlcmllcy4gU2VlIHRyYWNr
aW5nIGJ1ZyA4Mjk0OC4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hy
b21pdW0vcHVibGljL1BsYXRmb3JtLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUGxh
dGZvcm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6Y2xpcGJvYXJkKToKKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViQ2xpcGJvYXJkLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYkNsaXBib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNsaXBib2Fy
ZDo6c2VxdWVuY2VOdW1iZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDbGlwYm9hcmQ6OmlzRm9y
bWF0QXZhaWxhYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2xpcGJvYXJkOjpyZWFkQXZhaWxh
YmxlVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDbGlwYm9hcmQ6OnJlYWRQbGFpblRleHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDbGlwYm9hcmQ6OnJlYWRIVE1MKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ2xpcGJvYXJkOjpyZWFkSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDbGlw
Ym9hcmQ6OnJlYWRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2xpcGJvYXJkOjp3
cml0ZVBsYWluVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNsaXBib2FyZDo6d3JpdGVIVE1M
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2xpcGJvYXJkOjp3cml0ZVVSTCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNsaXBib2FyZDo6d3JpdGVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNs
aXBib2FyZDo6d3JpdGVEYXRhT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2xpcGJvYXJk
Ojp+V2ViQ2xpcGJvYXJkKToKKwogMjAxMi0wNS0wNyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21t
eXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IFJlbmFtZSBNZWRpYVN0
cmVhbUNlbnRlcjo6ZGlkQ29uc3RydWN0TWVkaWFTdHJlYW0KSW5kZXg6IFNvdXJjZS9QbGF0Zm9y
bS9QbGF0Zm9ybS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5n
eXBpCShyZXZpc2lvbiAxMTYzMzIpCisrKyBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQko
d29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJBdWRpb0RldmljZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
Q1N0cmluZy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ2FudmFzLmgnLAor
ICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDbGlwYm9hcmQuaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYkNvbG9yLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJDb21tb24uaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbnRl
bnRMYXllci5oJywKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZv
cm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRm
b3JtLmgJKHJldmlzaW9uIDExNjMzMikKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFdlYkF1ZGlvQnVzOworY2xhc3MgV2ViQ2xpcGJvYXJkOwogY2xh
c3MgV2ViTWVkaWFTdHJlYW1DZW50ZXI7CiBjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVu
dDsKIGNsYXNzIFdlYk1pbWVSZWdpc3RyeTsKQEAgLTU5LDYgKzYwLDkgQEAgcHVibGljOgogICAg
IFdFQktJVF9FWFBPUlQgc3RhdGljIFBsYXRmb3JtKiBjdXJyZW50KCk7CiAKICAgICAvLyBNdXN0
IHJldHVybiBub24tbnVsbC4KKyAgICB2aXJ0dWFsIFdlYkNsaXBib2FyZCogY2xpcGJvYXJkKCkg
eyByZXR1cm4gMDsgfQorCisgICAgLy8gTXVzdCByZXR1cm4gbm9uLW51bGwuCiAgICAgdmlydHVh
bCBXZWJNaW1lUmVnaXN0cnkqIG1pbWVSZWdpc3RyeSgpIHsgcmV0dXJuIDA7IH0KIAogCkluZGV4
OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNsaXBib2FyZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ2xpcGJvYXJkLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNsaXBib2Fy
ZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDbGlwYm9hcmRfaAor
I2RlZmluZSBXZWJDbGlwYm9hcmRfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVk
ZSAiV2ViRGF0YS5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlZlY3Rv
ci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRHJhZ0RhdGE7CitjbGFzcyBX
ZWJJbWFnZTsKK2NsYXNzIFdlYlVSTDsKKworY2xhc3MgV2ViQ2xpcGJvYXJkIHsKK3B1YmxpYzoK
KyAgICBlbnVtIEZvcm1hdCB7CisgICAgICAgIEZvcm1hdFBsYWluVGV4dCwKKyAgICAgICAgRm9y
bWF0SFRNTCwKKyAgICAgICAgRm9ybWF0Qm9va21hcmssCisgICAgICAgIEZvcm1hdFNtYXJ0UGFz
dGUKKyAgICB9OworCisgICAgZW51bSBCdWZmZXIgeworICAgICAgICBCdWZmZXJTdGFuZGFyZCwK
KyAgICAgICAgLy8gVXNlZCBvbiBwbGF0Zm9ybXMgbGlrZSB0aGUgWCBXaW5kb3cgU3lzdGVtIHRo
YXQgdHJlYXQgc2VsZWN0aW9uCisgICAgICAgIC8vIGFzIGEgdHlwZSBvZiBjbGlwYm9hcmQuCisg
ICAgICAgIEJ1ZmZlclNlbGVjdGlvbiwKKyAgICB9OworCisgICAgLy8gUmV0dXJucyBhbiBpZGVu
dGlmaWVyIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBkYXRhCisg
ICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY2xpcGJvYXJkIGhhcyBjaGFuZ2VkLgorICAgIHZp
cnR1YWwgdWludDY0IHNlcXVlbmNlTnVtYmVyKEJ1ZmZlcikgeyByZXR1cm4gMDsgfQorCisgICAg
dmlydHVhbCBib29sIGlzRm9ybWF0QXZhaWxhYmxlKEZvcm1hdCwgQnVmZmVyKSB7IHJldHVybiBm
YWxzZTsgfQorCisgICAgdmlydHVhbCBXZWJWZWN0b3I8V2ViU3RyaW5nPiByZWFkQXZhaWxhYmxl
VHlwZXMoCisgICAgICAgIEJ1ZmZlciwgYm9vbCogY29udGFpbnNGaWxlbmFtZXMpIHsgcmV0dXJu
IFdlYlZlY3RvcjxXZWJTdHJpbmc+KCk7IH0KKyAgICB2aXJ0dWFsIFdlYlN0cmluZyByZWFkUGxh
aW5UZXh0KEJ1ZmZlcikgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KKyAgICAvLyBmcmFnbWVudFN0
YXJ0IGFuZCBmcmFnbWVudEVuZCBhcmUgaW5kZXhlcyBpbnRvIHRoZSByZXR1cm5lZCBtYXJrdXAg
dGhhdAorICAgIC8vIGluZGljYXRlIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBmcmFnbWVudCBp
ZiB0aGUgcmV0dXJuZWQgbWFya3VwCisgICAgLy8gY29udGFpbnMgYWRkaXRpb25hbCBjb250ZXh0
LiBJZiB0aGVyZSBpcyBubyBhZGRpdGlvbmFsIGNvbnRleHQsCisgICAgLy8gZnJhZ21lbnRTdGFy
dCB3aWxsIGJlIHplcm8gYW5kIGZyYWdtZW50RW5kIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIGxl
bmd0aAorICAgIC8vIG9mIHRoZSByZXR1cm5lZCBtYXJrdXAuCisgICAgdmlydHVhbCBXZWJTdHJp
bmcgcmVhZEhUTUwoCisgICAgICAgIEJ1ZmZlciBidWZmZXIsIFdlYlVSTCogcGFnZVVSTCwgdW5z
aWduZWQqIGZyYWdtZW50U3RhcnQsCisgICAgICAgIHVuc2lnbmVkKiBmcmFnbWVudEVuZCkgeyBy
ZXR1cm4gV2ViU3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIFdlYkRhdGEgcmVhZEltYWdlKEJ1ZmZl
cikgeyByZXR1cm4gV2ViRGF0YSgpOyB9CisgICAgdmlydHVhbCBXZWJTdHJpbmcgcmVhZEN1c3Rv
bURhdGEoCisgICAgICAgIEJ1ZmZlciwgY29uc3QgV2ViU3RyaW5nJiB0eXBlKSB7IHJldHVybiBX
ZWJTdHJpbmcoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIHdyaXRlUGxhaW5UZXh0KGNvbnN0IFdl
YlN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3cml0ZUhUTUwoCisgICAgICAgIGNvbnN0
IFdlYlN0cmluZyYgaHRtbFRleHQsIGNvbnN0IFdlYlVSTCYsCisgICAgICAgIGNvbnN0IFdlYlN0
cmluZyYgcGxhaW5UZXh0LCBib29sIHdyaXRlU21hcnRQYXN0ZSkgeyB9CisgICAgdmlydHVhbCB2
b2lkIHdyaXRlVVJMKAorICAgICAgICBjb25zdCBXZWJVUkwmLCBjb25zdCBXZWJTdHJpbmcmIHRp
dGxlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVJbWFnZSgKKyAgICAgICAgY29uc3QgV2Vi
SW1hZ2UmLCBjb25zdCBXZWJVUkwmLCBjb25zdCBXZWJTdHJpbmcmIHRpdGxlKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgd3JpdGVEYXRhT2JqZWN0KGNvbnN0IFdlYkRyYWdEYXRhJikgeyB9CisKK3By
b3RlY3RlZDoKKyAgICB+V2ViQ2xpcGJvYXJkKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24g
MTE2MzM1KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wNS0wNyAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBNb3ZlIGNsaXBib2FyZCB0byBQbGF0
Zm9ybS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBh
cnQgb2YgYSByZWZhY3RvcmluZyBzZXJpZXMuIFNlZSB0cmFja2luZyBidWcgODI5NDguCisKKyAg
ICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJDbGlwYm9h
cmQuaDoKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmg6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0UGxhdGZvcm1TdXBwb3J0KToKKyAg
ICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL1BsYXRm
b3JtU3VwcG9ydC5jcHA6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpjb3B5KToKKwogMjAx
Mi0wNS0wNyAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBDcmVhdGUgTGlua0hpZ2hsaWdodExheWVyQ2hyb21pdW0gY2xhc3Mg
dG8gcHJvdmlkZSBsaW5rLWhpZ2hsaWdodCBwcmV2aWV3IGFuaW1hdGlvbnMgZm9yIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9u
IDExNjMzMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBj
b3B5KQpAQCAtMjk5LDcgKzI5OSw2IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9y
bS9XZWJCbG9iRGF0YS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkJs
b2JSZWdpc3RyeS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkNhbnZh
cy5oJywKLSAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkNsaXBib2FyZC5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkNvbG9yLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViQ29tbW9uLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvcGxhdGZvcm0vV2ViQ29udGVudExheWVyLmgnLApJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ2xpcGJvYXJkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ2xpcGJvYXJkLmgJKHJldmlz
aW9uIDExNjMzMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dl
YkNsaXBib2FyZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3MSArMjgsNCBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkNsaXBib2FyZF9oCi0jZGVmaW5lIFdlYkNsaXBib2Fy
ZF9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJEYXRhLmgiCi0jaW5j
bHVkZSAiV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAiV2ViVmVjdG9yLmgiCi0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1jbGFzcyBXZWJEcmFnRGF0YTsKLWNsYXNzIFdlYkltYWdlOwotY2xhc3MgV2Vi
VVJMOwotCi1jbGFzcyBXZWJDbGlwYm9hcmQgewotcHVibGljOgotICAgIGVudW0gRm9ybWF0IHsK
LSAgICAgICAgRm9ybWF0UGxhaW5UZXh0LAotICAgICAgICBGb3JtYXRIVE1MLAotICAgICAgICBG
b3JtYXRCb29rbWFyaywKLSAgICAgICAgRm9ybWF0U21hcnRQYXN0ZQotICAgIH07Ci0KLSAgICBl
bnVtIEJ1ZmZlciB7Ci0gICAgICAgIEJ1ZmZlclN0YW5kYXJkLAotICAgICAgICAvLyBVc2VkIG9u
IHBsYXRmb3JtcyBsaWtlIHRoZSBYIFdpbmRvdyBTeXN0ZW0gdGhhdCB0cmVhdCBzZWxlY3Rpb24K
LSAgICAgICAgLy8gYXMgYSB0eXBlIG9mIGNsaXBib2FyZC4KLSAgICAgICAgQnVmZmVyU2VsZWN0
aW9uLAotICAgIH07Ci0KLSAgICAvLyBSZXR1cm5zIGFuIGlkZW50aWZpZXIgd2hpY2ggY2FuIGJl
IHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGRhdGEKLSAgICAvLyBjb250YWluZWQgd2l0
aGluIHRoZSBjbGlwYm9hcmQgaGFzIGNoYW5nZWQuCi0gICAgdmlydHVhbCB1aW50NjQgc2VxdWVu
Y2VOdW1iZXIoQnVmZmVyKSB7IHJldHVybiAwOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGb3Jt
YXRBdmFpbGFibGUoRm9ybWF0LCBCdWZmZXIpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0
dWFsIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHJlYWRBdmFpbGFibGVUeXBlcygKLSAgICAgICAgQnVm
ZmVyLCBib29sKiBjb250YWluc0ZpbGVuYW1lcykgeyByZXR1cm4gV2ViVmVjdG9yPFdlYlN0cmlu
Zz4oKTsgfQotICAgIHZpcnR1YWwgV2ViU3RyaW5nIHJlYWRQbGFpblRleHQoQnVmZmVyKSB7IHJl
dHVybiBXZWJTdHJpbmcoKTsgfQotICAgIC8vIGZyYWdtZW50U3RhcnQgYW5kIGZyYWdtZW50RW5k
IGFyZSBpbmRleGVzIGludG8gdGhlIHJldHVybmVkIG1hcmt1cCB0aGF0Ci0gICAgLy8gaW5kaWNh
dGUgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIGZyYWdtZW50IGlmIHRoZSByZXR1cm5lZCBtYXJr
dXAKLSAgICAvLyBjb250YWlucyBhZGRpdGlvbmFsIGNvbnRleHQuIElmIHRoZXJlIGlzIG5vIGFk
ZGl0aW9uYWwgY29udGV4dCwKLSAgICAvLyBmcmFnbWVudFN0YXJ0IHdpbGwgYmUgemVybyBhbmQg
ZnJhZ21lbnRFbmQgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgbGVuZ3RoCi0gICAgLy8gb2YgdGhl
IHJldHVybmVkIG1hcmt1cC4KLSAgICB2aXJ0dWFsIFdlYlN0cmluZyByZWFkSFRNTCgKLSAgICAg
ICAgQnVmZmVyIGJ1ZmZlciwgV2ViVVJMKiBwYWdlVVJMLCB1bnNpZ25lZCogZnJhZ21lbnRTdGFy
dCwKLSAgICAgICAgdW5zaWduZWQqIGZyYWdtZW50RW5kKSB7IHJldHVybiBXZWJTdHJpbmcoKTsg
fQotICAgIHZpcnR1YWwgV2ViRGF0YSByZWFkSW1hZ2UoQnVmZmVyKSB7IHJldHVybiBXZWJEYXRh
KCk7IH0KLSAgICB2aXJ0dWFsIFdlYlN0cmluZyByZWFkQ3VzdG9tRGF0YSgKLSAgICAgICAgQnVm
ZmVyLCBjb25zdCBXZWJTdHJpbmcmIHR5cGUpIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgd3JpdGVQbGFpblRleHQoY29uc3QgV2ViU3RyaW5nJikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHdyaXRlSFRNTCgKLSAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBodG1sVGV4
dCwgY29uc3QgV2ViVVJMJiwKLSAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBwbGFpblRleHQsIGJv
b2wgd3JpdGVTbWFydFBhc3RlKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVVUkwoCi0gICAg
ICAgIGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlN0cmluZyYgdGl0bGUpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCB3cml0ZUltYWdlKAotICAgICAgICBjb25zdCBXZWJJbWFnZSYsIGNvbnN0IFdlYlVS
TCYsIGNvbnN0IFdlYlN0cmluZyYgdGl0bGUpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3cml0ZURh
dGFPYmplY3QoY29uc3QgV2ViRHJhZ0RhdGEmKSB7IH0KLQotcHJvdGVjdGVkOgotICAgIH5XZWJD
bGlwYm9hcmQoKSB7fQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgorI2lu
Y2x1ZGUgIi4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDbGlwYm9hcmQu
aCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBs
YXRmb3JtU3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCShyZXZpc2lvbiAxMTYzMzIpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1
cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0OyAvLyBGSVhNRTogRG9lcyB0aGlzIGJl
bG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50OyAv
LyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYkJsb2JSZWdp
c3RyeTsKLWNsYXNzIFdlYkNsaXBib2FyZDsKIGNsYXNzIFdlYkNvb2tpZUphcjsKIGNsYXNzIFdl
YkZpbGVTeXN0ZW07CiBjbGFzcyBXZWJGaWxlVXRpbGl0aWVzOwpAQCAtNjksOSArNjgsNiBAQCBj
bGFzcyBXZWJXb3JrZXJSdW5Mb29wOwogY2xhc3MgV2ViS2l0UGxhdGZvcm1TdXBwb3J0IDogcHVi
bGljIFBsYXRmb3JtIHsKIHB1YmxpYzoKICAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KLSAg
ICB2aXJ0dWFsIFdlYkNsaXBib2FyZCogY2xpcGJvYXJkKCkgeyByZXR1cm4gMDsgfQotCi0gICAg
Ly8gTXVzdCByZXR1cm4gbm9uLW51bGwuCiAgICAgdmlydHVhbCBXZWJGaWxlVXRpbGl0aWVzKiBm
aWxlVXRpbGl0aWVzKCkgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gTWF5IHJldHVybiBudWxsIGlm
IHNhbmRib3ggc3VwcG9ydCBpcyBub3QgbmVjZXNzYXJ5CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAkocmV2aXNpb24gMTE2
MzMyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDEyICs5OSwxMiBAQAogI2luY2x1ZGUgIldlYlRleHRD
aGVja2luZ1Jlc3VsdC5oIgogI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ1R5cGUuaCIKICNpbmNs
dWRlICJXZWJWaWV3LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ2xpcGJvYXJkLmgiCiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYklD
RU9wdGlvbnMuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oIgog
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyLmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXJDbGllbnQuaCIKKyNpbmNsdWRl
IDxwdWJsaWMvV2ViQ2xpcGJvYXJkLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJh
dGlvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWZlcnJlclBvbGljeS5oPgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0
Zm9ybVN1cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1BsYXRmb3JtU3VwcG9ydC5jcHAJKHJldmlzaW9uIDExNjMzMikKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcg
KzUwLDYgQEAKICNpbmNsdWRlICJXZWJXb3JrZXJDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2Vi
V29ya2VyUnVuTG9vcC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkF1ZGlvQnVzLmgiCi0jaW5j
bHVkZSAicGxhdGZvcm0vV2ViQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29v
a2llLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29va2llSmFyLmgiCiAjaW5jbHVkZSAicGxh
dGZvcm0vV2ViRGF0YS5oIgpAQCAtMTAxLDYgKzEwMCw3IEBACiAKICNpbmNsdWRlICJXb3JrZXIu
aCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0UHJveHkuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
Q2xpcGJvYXJkLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYk1pbWVSZWdpc3RyeS5oPgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCShyZXZpc2lvbiAxMTYzMzIp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTQgKzM0LDEyIEBACiAjaW5jbHVkZSAiQ2hyb21lLmgi
CiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIlNjcm9sbGJhckdyb3Vw
LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiV2ViQ3Vy
c29ySW5mby5oIgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2VJbXBsLmgiCiAjaW5jbHVkZSAiV2Vi
RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlICJXZWJJbnB1
dEV2ZW50Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIldlYktpdC5oIgotI2luY2x1ZGUgInBsYXRm
b3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgIldlYlBsdWdpbi5oIgogI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcu
aCIKQEAgLTc1LDYgKzczLDggQEAKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1
ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgorI2lu
Y2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDbGlwYm9hcmQu
aD4KIAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKICNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1
cmVFdmVudC5oIgpAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1w
bDo6Y29weSgpCiAgICAgaWYgKCFtX3dlYlBsdWdpbi0+aGFzU2VsZWN0aW9uKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jbGlwYm9hcmQoKS0+d3Jp
dGVIVE1MKG1fd2ViUGx1Z2luLT5zZWxlY3Rpb25Bc01hcmt1cCgpLCBXZWJVUkwoKSwgbV93ZWJQ
bHVnaW4tPnNlbGVjdGlvbkFzVGV4dCgpLCBmYWxzZSk7CisgICAgV2ViS2l0OjpQbGF0Zm9ybTo6
Y3VycmVudCgpLT5jbGlwYm9hcmQoKS0+d3JpdGVIVE1MKG1fd2ViUGx1Z2luLT5zZWxlY3Rpb25B
c01hcmt1cCgpLCBXZWJVUkwoKSwgbV93ZWJQbHVnaW4tPnNlbGVjdGlvbkFzVGV4dCgpLCBmYWxz
ZSk7CiB9CiAKIFdlYkVsZW1lbnQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6ZWxlbWVudCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140986</attachid>
            <date>2012-05-09 11:36:01 -0700</date>
            <delta_ts>2012-05-09 14:37:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85758-20120509143559.patch</filename>
            <type>text/plain</type>
            <size>30397</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2NTQ2KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA1LTA5ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1v
dmUgY2xpcGJvYXJkIHRvIFBsYXRmb3JtLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg1NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFydCBvZiBhIHJlZmFjdG9yaW5nIHNlcmllcy4gU2VlIHRyYWNr
aW5nIGJ1ZyA4Mjk0OC4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hy
b21pdW0vcHVibGljL1BsYXRmb3JtLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUGxh
dGZvcm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6Y2xpcGJvYXJkKToKKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViRHJhZ0RhdGEuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViRHJhZ0RhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnRGF0YTo6
fldlYkRyYWdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0RhdGE6OldlYkRyYWdEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0RhdGE6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkRyYWdEYXRhOjppc051bGwpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9X
ZWJJbWFnZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJJbWFnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjp+V2ViSW1hZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbWFnZTo6V2ViSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6b3BlcmF0
b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmdldFNrQml0bWFwKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW1hZ2U6OmluaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Z2V0
Q0dJbWFnZVJlZik6CisKIDIwMTItMDUtMDkgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBBZGRpbmcgdGhlIHBvc3NpYmls
aXR5IG9mIHBvcnQgc3BlY2lmaWMgaW5mb3JtYXRpb24gaW4gTWVkaWFTdHJlYW1EZXNjcmlwdG9y
CkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQkocmV2aXNpb24gMTE2NTI0KQorKysgU291cmNlL1Bs
YXRmb3JtL1BsYXRmb3JtLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM2LDExICszNiwxMyBAQAog
ICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJBdWRpb0RldmljZS5oJywKICAgICAgICAg
ICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ1N0cmluZy5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViQ2FudmFzLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJD
bGlwYm9hcmQuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbG9yLmgnLAog
ICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb24uaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViQ29udGVudExheWVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJEYXRhLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJEcmFn
RGF0YS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oJywKQEAg
LTU2LDYgKzU4LDcgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViSFRUUExvYWRJ
bmZvLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJJQ0VDYW5kaWRhdGVEZXNj
cmlwdG9yLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJJQ0VPcHRpb25zLmgn
LAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZS5oJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9wdWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYkxheWVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9X
ZWJMYXllclRyZWVWaWV3LmgnLApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvUGxhdGZvcm0uaAkocmV2aXNpb24gMTE2NTI0KQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQXVkaW9CdXM7CitjbGFzcyBXZWJDbGlwYm9h
cmQ7CiBjbGFzcyBXZWJGaWxlU3lzdGVtOwogY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXI7CiBj
bGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudDsKQEAgLTYwLDYgKzYxLDkgQEAgcHVibGlj
OgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFBsYXRmb3JtKiBjdXJyZW50KCk7CiAKICAgICAv
LyBNdXN0IHJldHVybiBub24tbnVsbC4KKyAgICB2aXJ0dWFsIFdlYkNsaXBib2FyZCogY2xpcGJv
YXJkKCkgeyByZXR1cm4gMDsgfQorCisgICAgLy8gTXVzdCByZXR1cm4gbm9uLW51bGwuCiAgICAg
dmlydHVhbCBXZWJNaW1lUmVnaXN0cnkqIG1pbWVSZWdpc3RyeSgpIHsgcmV0dXJuIDA7IH0KIAog
CkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkRyYWdEYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJEcmFnRGF0YS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJEcmFn
RGF0YS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRHJhZ0RhdGFf
aAorI2RlZmluZSBXZWJEcmFnRGF0YV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNs
dWRlICJXZWJEYXRhLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJM
LmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xh
c3MgQ2hyb21pdW1EYXRhT2JqZWN0OyB9CituYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7IH0KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViRHJhZ0RhdGFQcml2YXRlOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz
IFdlYlZlY3RvcjsKKworLy8gSG9sZHMgZGF0YSB0aGF0IG1heSBiZSBleGNoYW5nZWQgdGhyb3Vn
aCBhIGRyYWctbi1kcm9wIG9wZXJhdGlvbi4gSXQgaXMKKy8vIGluZXhwZW5zaXZlIHRvIGNvcHkg
YSBXZWJEcmFnRGF0YSBvYmplY3QuCitjbGFzcyBXZWJEcmFnRGF0YSB7CitwdWJsaWM6CisgICAg
c3RydWN0IEl0ZW0geworICAgICAgICBlbnVtIFN0b3JhZ2VUeXBlIHsKKyAgICAgICAgICAgIC8v
IFN0cmluZyBkYXRhIHdpdGggYW4gYXNzb2NpYXRlZCBNSU1FIHR5cGUuIERlcGVuZGluZyBvbiB0
aGUgTUlNRSB0eXBlLCB0aGVyZSBtYXkgYmUKKyAgICAgICAgICAgIC8vIG9wdGlvbmFsIG1ldGFk
YXRhIGF0dHJpYnV0ZXMgYXMgd2VsbC4KKyAgICAgICAgICAgIFN0b3JhZ2VUeXBlU3RyaW5nLAor
ICAgICAgICAgICAgLy8gU3RvcmVzIHRoZSBuYW1lIG9mIG9uZSBmaWxlIGJlaW5nIGRyYWdnZWQg
aW50byB0aGUgcmVuZGVyZXIuCisgICAgICAgICAgICBTdG9yYWdlVHlwZUZpbGVuYW1lLAorICAg
ICAgICAgICAgLy8gQW4gaW1hZ2UgYmVpbmcgZHJhZ2dlZCBvdXQgb2YgdGhlIHJlbmRlcmVyLiBD
b250YWlucyBhIGJ1ZmZlciBob2xkaW5nIHRoZSBpbWFnZSBkYXRhCisgICAgICAgICAgICAvLyBh
cyB3ZWxsIGFzIHRoZSBzdWdnZXN0ZWQgbmFtZSBmb3Igc2F2aW5nIHRoZSBpbWFnZSB0by4KKyAg
ICAgICAgICAgIFN0b3JhZ2VUeXBlQmluYXJ5RGF0YSwKKyAgICAgICAgfTsKKworICAgICAgICBT
dG9yYWdlVHlwZSBzdG9yYWdlVHlwZTsKKworICAgICAgICAvLyBPbmx5IHZhbGlkIHdoZW4gc3Rv
cmFnZVR5cGUgPT0gU3RvcmFnZVR5cGVTdHJpbmcuCisgICAgICAgIFdlYlN0cmluZyBzdHJpbmdU
eXBlOworICAgICAgICBXZWJTdHJpbmcgc3RyaW5nRGF0YTsKKworICAgICAgICAvLyBPbmx5IHZh
bGlkIHdoZW4gc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGVGaWxlbmFtZS4KKyAgICAgICAgV2Vi
U3RyaW5nIGZpbGVuYW1lRGF0YTsKKyAgICAgICAgV2ViU3RyaW5nIGRpc3BsYXlOYW1lRGF0YTsK
KworICAgICAgICAvLyBPbmx5IHZhbGlkIHdoZW4gc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGVC
aW5hcnlEYXRhLgorICAgICAgICBXZWJEYXRhIGJpbmFyeURhdGE7CisKKyAgICAgICAgLy8gVGl0
bGUgYXNzb2NpYXRlZCB3aXRoIGEgbGluayB3aGVuIHN0cmluZ1R5cGUgPT0gInRleHQvdXJpLWxp
c3QiLgorICAgICAgICAvLyBGaWxlbmFtZSB3aGVuIHN0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBl
QmluYXJ5RGF0YS4KKyAgICAgICAgV2ViU3RyaW5nIHRpdGxlOworCisgICAgICAgIC8vIE9ubHkg
dmFsaWQgd2hlbiBzdHJpbmdUeXBlID09ICJ0ZXh0L2h0bWwiLgorICAgICAgICBXZWJVUkwgYmFz
ZVVSTDsKKyAgICB9OworCisgICAgfldlYkRyYWdEYXRhKCkgeyByZXNldCgpOyB9CisKKyAgICBX
ZWJEcmFnRGF0YSgpIDogbV9wcml2YXRlKDApIHsgfQorICAgIFdlYkRyYWdEYXRhKGNvbnN0IFdl
YkRyYWdEYXRhJiBkKSA6IG1fcHJpdmF0ZSgwKSB7IGFzc2lnbihkKTsgfQorICAgIFdlYkRyYWdE
YXRhJiBvcGVyYXRvcj0oY29uc3QgV2ViRHJhZ0RhdGEmIGQpCisgICAgeworICAgICAgICBhc3Np
Z24oZCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViRHJhZ0RhdGEmKTsKKworICAgIGJv
b2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJpdmF0ZTsgfQorCisgICAgV0VCS0lUX0VY
UE9SVCBXZWJWZWN0b3I8SXRlbT4gaXRlbXMoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0SXRlbXMoY29uc3QgV2ViVmVjdG9yPEl0ZW0+Jik7CisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIGFkZEl0ZW0oY29uc3QgSXRlbSYpOworCisgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcg
ZmlsZXN5c3RlbUlkKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpbGVzeXN0
ZW1JZChjb25zdCBXZWJTdHJpbmcmKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAg
IFdlYkRyYWdEYXRhKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDaHJvbWl1bURhdGFP
YmplY3Q+Jik7CisgICAgV2ViRHJhZ0RhdGEmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6Q2hyb21pdW1EYXRhT2JqZWN0PiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpDaHJvbWl1bURhdGFPYmplY3Q+KCkgY29uc3Q7CisjZW5kaWYKKwor
cHJpdmF0ZToKKyAgICB2b2lkIGFzc2lnbihXZWJEcmFnRGF0YVByaXZhdGUqKTsKKyAgICB2b2lk
IGVuc3VyZU11dGFibGUoKTsKKyAgICBXZWJEcmFnRGF0YVByaXZhdGUqIG1fcHJpdmF0ZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJJbWFnZV9oCisjZGVmaW5lIFdlYkltYWdlX2gKKworI2luY2x1ZGUg
IldlYkNvbW1vbi5oIgorCisjaWYgV0VCS0lUX1VTSU5HX1NLSUEKKyNpbmNsdWRlIDxTa0JpdG1h
cC5oPgorI2VsaWYgV0VCS0lUX1VTSU5HX0NHCit0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0lt
YWdlUmVmOworI2VuZGlmCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBX
ZWJDb3JlIHsgY2xhc3MgSW1hZ2U7IH0KK25hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsgfQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJEYXRhOworc3RydWN0IFdlYlNpemU7CisKKy8vIEEgY29udGFpbmVyIGZvciBh
biBBUkdCIGJpdG1hcC4KK2NsYXNzIFdlYkltYWdlIHsKK3B1YmxpYzoKKyAgICB+V2ViSW1hZ2Uo
KSB7IHJlc2V0KCk7IH0KKworICAgIFdlYkltYWdlKCkgeyBpbml0KCk7IH0KKyAgICBXZWJJbWFn
ZShjb25zdCBXZWJJbWFnZSYgaW1hZ2UpCisgICAgeworICAgICAgICBpbml0KCk7CisgICAgICAg
IGFzc2lnbihpbWFnZSk7CisgICAgfQorCisgICAgV2ViSW1hZ2UmIG9wZXJhdG9yPShjb25zdCBX
ZWJJbWFnZSYgaW1hZ2UpCisgICAgeworICAgICAgICBhc3NpZ24oaW1hZ2UpOworICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgLy8gRGVjb2RlcyB0aGUgZ2l2ZW4gaW1hZ2UgZGF0
YS4gSWYgdGhlIGltYWdlIGhhcyBtdWx0aXBsZSBmcmFtZXMsCisgICAgLy8gdGhlbiB0aGUgZnJh
bWUgd2hvc2Ugc2l6ZSBpcyBkZXNpcmVkU2l6ZSBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLAorICAg
IC8vIHRoZSBmaXJzdCBmcmFtZSBpcyByZXR1cm5lZC4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRp
YyBXZWJJbWFnZSBmcm9tRGF0YShjb25zdCBXZWJEYXRhJiwgY29uc3QgV2ViU2l6ZSYgZGVzaXJl
ZFNpemUpOworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0VY
UE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJJbWFnZSYpOworCisgICAgV0VCS0lUX0VYUE9SVCBi
b29sIGlzTnVsbCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViU2l6ZSBzaXplKCkgY29u
c3Q7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJJbWFnZShjb25zdCBXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+Jik7CisgICAgV2ViSW1hZ2UmIG9wZXJhdG9yPShj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+Jik7CisjZW5kaWYKKworI2lmIFdF
QktJVF9VU0lOR19TS0lBCisgICAgV2ViSW1hZ2UoY29uc3QgU2tCaXRtYXAmIGJpdG1hcCkgOiBt
X2JpdG1hcChiaXRtYXApIHsgfQorCisgICAgV2ViSW1hZ2UmIG9wZXJhdG9yPShjb25zdCBTa0Jp
dG1hcCYgYml0bWFwKQorICAgIHsKKyAgICAgICAgbV9iaXRtYXAgPSBiaXRtYXA7CisgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBTa0JpdG1hcCYgZ2V0U2tCaXRtYXAoKSB7IHJl
dHVybiBtX2JpdG1hcDsgfQorICAgIGNvbnN0IFNrQml0bWFwJiBnZXRTa0JpdG1hcCgpIGNvbnN0
IHsgcmV0dXJuIG1fYml0bWFwOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbml0KCkgeyB9Cisg
ICAgU2tCaXRtYXAgbV9iaXRtYXA7CisKKyNlbGlmIFdFQktJVF9VU0lOR19DRworICAgIFdlYklt
YWdlKENHSW1hZ2VSZWYgaW1hZ2VSZWYpCisgICAgeworICAgICAgICBpbml0KCk7CisgICAgICAg
IGFzc2lnbihpbWFnZVJlZik7CisgICAgfQorCisgICAgV2ViSW1hZ2UmIG9wZXJhdG9yPShDR0lt
YWdlUmVmIGltYWdlUmVmKQorICAgIHsKKyAgICAgICAgYXNzaWduKGltYWdlUmVmKTsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigp
IGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VSZWY7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGluaXQo
KSB7IG1faW1hZ2VSZWYgPSAwOyB9CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihDR0lt
YWdlUmVmKTsKKyAgICBDR0ltYWdlUmVmIG1faW1hZ2VSZWY7CisjZW5kaWYKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMTY1NDYpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA1LTA5ICBNYXJrIFBpbGdyaW0g
IDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUgY2xpcGJv
YXJkIHRvIFBsYXRmb3JtLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg1NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUGFydCBvZiBhIHJlZmFjdG9yaW5nIHNlcmllcy4gU2VlIHRyYWNraW5nIGJ1ZyA4
Mjk0OC4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL3BsYXRmb3Jt
L1dlYkNsaXBib2FyZC5oOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJEcmFnRGF0YS5o
OgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJJbWFnZS5oOgorICAgICAgICAqIHB1Ymxp
Yy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXRQbGF0Zm9ybVN1cHBvcnQpOgorICAgICAgICAqIHNyYy9Bc3NlcnRNYXRj
aGluZ0VudW1zLmNwcDoKKyAgICAgICAgKiBzcmMvRHJhZ0NsaWVudEltcGwuY3BwOgorICAgICAg
ICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAqIHNyYy9XZWJEcmFnRGF0YS5j
cHA6CisgICAgICAgICogc3JjL1dlYkltYWdlQ0cuY3BwOgorICAgICAgICAqIHNyYy9XZWJJbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAqIHNyYy9XZWJJbWFnZVNraWEuY3BwOgorICAgICAgICAq
IHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1
Z2luQ29udGFpbmVySW1wbDo6Y29weSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoK
KwogMjAxMi0wNS0wOSAgTWFyY3VzIEJ1bGFjaCAgPGJ1bGFjaEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBFeHBvc2VzIE9yaWVudGF0aW9uQ2hhbmdlRXZlbnQuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiAxMTY1MjQpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTI5OSw3ICsyOTksNiBA
QAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViQmxvYkRhdGEuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJCbG9iUmVnaXN0cnkuaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJDYW52YXMuaCcsCi0gICAgICAgICAgICAgICAg
J3B1YmxpYy9wbGF0Zm9ybS9XZWJDbGlwYm9hcmQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJDb2xvci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3Jt
L1dlYkNvbW1vbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkNvbnRl
bnRMYXllci5oJywKQEAgLTMwNyw3ICszMDYsNiBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMv
cGxhdGZvcm0vV2ViQ29va2llLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0v
V2ViQ29va2llSmFyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViRGF0
YS5oJywKLSAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkRyYWdEYXRhLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViRmxvYXRRdWFkLmgnLApAQCAtMzE4
LDcgKzMxNiw2IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJIVFRQQm9k
eS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkhUVFBIZWFkZXJWaXNp
dG9yLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViSFRUUExvYWRJbmZv
LmgnLAotICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViSW1hZ2UuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJMYXllci5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL3BsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXcuaCcsCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDbGlwYm9hcmQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDbGlwYm9hcmQu
aAkocmV2aXNpb24gMTE2NTI0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViQ2xpcGJvYXJkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcxICsyOCw0IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ2xpcGJvYXJkX2gKLSNkZWZpbmUgV2Vi
Q2xpcGJvYXJkX2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2luY2x1ZGUgIldlYkRhdGEu
aCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJXZWJWZWN0b3IuaCIKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkRyYWdEYXRhOwotY2xhc3MgV2ViSW1hZ2U7Ci1j
bGFzcyBXZWJVUkw7Ci0KLWNsYXNzIFdlYkNsaXBib2FyZCB7Ci1wdWJsaWM6Ci0gICAgZW51bSBG
b3JtYXQgewotICAgICAgICBGb3JtYXRQbGFpblRleHQsCi0gICAgICAgIEZvcm1hdEhUTUwsCi0g
ICAgICAgIEZvcm1hdEJvb2ttYXJrLAotICAgICAgICBGb3JtYXRTbWFydFBhc3RlCi0gICAgfTsK
LQotICAgIGVudW0gQnVmZmVyIHsKLSAgICAgICAgQnVmZmVyU3RhbmRhcmQsCi0gICAgICAgIC8v
IFVzZWQgb24gcGxhdGZvcm1zIGxpa2UgdGhlIFggV2luZG93IFN5c3RlbSB0aGF0IHRyZWF0IHNl
bGVjdGlvbgotICAgICAgICAvLyBhcyBhIHR5cGUgb2YgY2xpcGJvYXJkLgotICAgICAgICBCdWZm
ZXJTZWxlY3Rpb24sCi0gICAgfTsKLQotICAgIC8vIFJldHVybnMgYW4gaWRlbnRpZmllciB3aGlj
aCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgZGF0YQotICAgIC8vIGNvbnRh
aW5lZCB3aXRoaW4gdGhlIGNsaXBib2FyZCBoYXMgY2hhbmdlZC4KLSAgICB2aXJ0dWFsIHVpbnQ2
NCBzZXF1ZW5jZU51bWJlcihCdWZmZXIpIHsgcmV0dXJuIDA7IH0KLQotICAgIHZpcnR1YWwgYm9v
bCBpc0Zvcm1hdEF2YWlsYWJsZShGb3JtYXQsIEJ1ZmZlcikgeyByZXR1cm4gZmFsc2U7IH0KLQot
ICAgIHZpcnR1YWwgV2ViVmVjdG9yPFdlYlN0cmluZz4gcmVhZEF2YWlsYWJsZVR5cGVzKAotICAg
ICAgICBCdWZmZXIsIGJvb2wqIGNvbnRhaW5zRmlsZW5hbWVzKSB7IHJldHVybiBXZWJWZWN0b3I8
V2ViU3RyaW5nPigpOyB9Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcgcmVhZFBsYWluVGV4dChCdWZm
ZXIpIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9Ci0gICAgLy8gZnJhZ21lbnRTdGFydCBhbmQgZnJh
Z21lbnRFbmQgYXJlIGluZGV4ZXMgaW50byB0aGUgcmV0dXJuZWQgbWFya3VwIHRoYXQKLSAgICAv
LyBpbmRpY2F0ZSB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGUgZnJhZ21lbnQgaWYgdGhlIHJldHVy
bmVkIG1hcmt1cAotICAgIC8vIGNvbnRhaW5zIGFkZGl0aW9uYWwgY29udGV4dC4gSWYgdGhlcmUg
aXMgbm8gYWRkaXRpb25hbCBjb250ZXh0LAotICAgIC8vIGZyYWdtZW50U3RhcnQgd2lsbCBiZSB6
ZXJvIGFuZCBmcmFnbWVudEVuZCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBsZW5ndGgKLSAgICAv
LyBvZiB0aGUgcmV0dXJuZWQgbWFya3VwLgotICAgIHZpcnR1YWwgV2ViU3RyaW5nIHJlYWRIVE1M
KAotICAgICAgICBCdWZmZXIgYnVmZmVyLCBXZWJVUkwqIHBhZ2VVUkwsIHVuc2lnbmVkKiBmcmFn
bWVudFN0YXJ0LAotICAgICAgICB1bnNpZ25lZCogZnJhZ21lbnRFbmQpIHsgcmV0dXJuIFdlYlN0
cmluZygpOyB9Ci0gICAgdmlydHVhbCBXZWJEYXRhIHJlYWRJbWFnZShCdWZmZXIpIHsgcmV0dXJu
IFdlYkRhdGEoKTsgfQotICAgIHZpcnR1YWwgV2ViU3RyaW5nIHJlYWRDdXN0b21EYXRhKAotICAg
ICAgICBCdWZmZXIsIGNvbnN0IFdlYlN0cmluZyYgdHlwZSkgeyByZXR1cm4gV2ViU3RyaW5nKCk7
IH0KLQotICAgIHZpcnR1YWwgdm9pZCB3cml0ZVBsYWluVGV4dChjb25zdCBXZWJTdHJpbmcmKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVIVE1MKAotICAgICAgICBjb25zdCBXZWJTdHJpbmcm
IGh0bWxUZXh0LCBjb25zdCBXZWJVUkwmLAotICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHBsYWlu
VGV4dCwgYm9vbCB3cml0ZVNtYXJ0UGFzdGUpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3cml0ZVVS
TCgKLSAgICAgICAgY29uc3QgV2ViVVJMJiwgY29uc3QgV2ViU3RyaW5nJiB0aXRsZSkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHdyaXRlSW1hZ2UoCi0gICAgICAgIGNvbnN0IFdlYkltYWdlJiwgY29u
c3QgV2ViVVJMJiwgY29uc3QgV2ViU3RyaW5nJiB0aXRsZSkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHdyaXRlRGF0YU9iamVjdChjb25zdCBXZWJEcmFnRGF0YSYpIHsgfQotCi1wcm90ZWN0ZWQ6Ci0g
ICAgfldlYkNsaXBib2FyZCgpIHt9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNs
aXBib2FyZC5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViRHJhZ0RhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJEcmFnRGF0YS5oCShyZXZpc2lvbiAxMTY1MjQpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJEcmFnRGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw5NiArMjgsNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkRy
YWdEYXRhX2gKLSNkZWZpbmUgV2ViRHJhZ0RhdGFfaAotCi0jaW5jbHVkZSAiV2ViQ29tbW9uLmgi
Ci0jaW5jbHVkZSAiV2ViRGF0YS5oIgotI2luY2x1ZGUgIldlYlN0cmluZy5oIgotI2luY2x1ZGUg
IldlYlVSTC5oIgotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7IGNsYXNzIENocm9taXVtRGF0YU9iamVjdDsgfQotbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOyB9Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLWNsYXNzIFdlYkRyYWdEYXRhUHJpdmF0ZTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBXZWJWZWN0b3I7Ci0KLS8vIEhvbGRzIGRhdGEgdGhhdCBtYXkgYmUgZXhjaGFuZ2Vk
IHRocm91Z2ggYSBkcmFnLW4tZHJvcCBvcGVyYXRpb24uICBJdCBpcwotLy8gaW5leHBlbnNpdmUg
dG8gY29weSBhIFdlYkRyYWdEYXRhIG9iamVjdC4KLWNsYXNzIFdlYkRyYWdEYXRhIHsKLXB1Ymxp
YzoKLSAgICBzdHJ1Y3QgSXRlbSB7Ci0gICAgICAgIGVudW0gU3RvcmFnZVR5cGUgewotICAgICAg
ICAgICAgLy8gU3RyaW5nIGRhdGEgd2l0aCBhbiBhc3NvY2lhdGVkIE1JTUUgdHlwZS4gRGVwZW5k
aW5nIG9uIHRoZSBNSU1FIHR5cGUsIHRoZXJlIG1heSBiZQotICAgICAgICAgICAgLy8gb3B0aW9u
YWwgbWV0YWRhdGEgYXR0cmlidXRlcyBhcyB3ZWxsLgotICAgICAgICAgICAgU3RvcmFnZVR5cGVT
dHJpbmcsCi0gICAgICAgICAgICAvLyBTdG9yZXMgdGhlIG5hbWUgb2Ygb25lIGZpbGUgYmVpbmcg
ZHJhZ2dlZCBpbnRvIHRoZSByZW5kZXJlci4KLSAgICAgICAgICAgIFN0b3JhZ2VUeXBlRmlsZW5h
bWUsCi0gICAgICAgICAgICAvLyBBbiBpbWFnZSBiZWluZyBkcmFnZ2VkIG91dCBvZiB0aGUgcmVu
ZGVyZXIuIENvbnRhaW5zIGEgYnVmZmVyIGhvbGRpbmcgdGhlIGltYWdlIGRhdGEKLSAgICAgICAg
ICAgIC8vIGFzIHdlbGwgYXMgdGhlIHN1Z2dlc3RlZCBuYW1lIGZvciBzYXZpbmcgdGhlIGltYWdl
IHRvLgotICAgICAgICAgICAgU3RvcmFnZVR5cGVCaW5hcnlEYXRhLAotICAgICAgICB9OwotCi0g
ICAgICAgIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlOwotCi0gICAgICAgIC8vIE9ubHkgdmFsaWQg
d2hlbiBzdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZVN0cmluZy4KLSAgICAgICAgV2ViU3RyaW5n
IHN0cmluZ1R5cGU7Ci0gICAgICAgIFdlYlN0cmluZyBzdHJpbmdEYXRhOwotCi0gICAgICAgIC8v
IE9ubHkgdmFsaWQgd2hlbiBzdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZUZpbGVuYW1lLgotICAg
ICAgICBXZWJTdHJpbmcgZmlsZW5hbWVEYXRhOwotICAgICAgICBXZWJTdHJpbmcgZGlzcGxheU5h
bWVEYXRhOwotCi0gICAgICAgIC8vIE9ubHkgdmFsaWQgd2hlbiBzdG9yYWdlVHlwZSA9PSBTdG9y
YWdlVHlwZUJpbmFyeURhdGEuCi0gICAgICAgIFdlYkRhdGEgYmluYXJ5RGF0YTsKLQotICAgICAg
ICAvLyBUaXRsZSBhc3NvY2lhdGVkIHdpdGggYSBsaW5rIHdoZW4gc3RyaW5nVHlwZSA9PSAidGV4
dC91cmktbGlzdCIuCi0gICAgICAgIC8vIEZpbGVuYW1lIHdoZW4gc3RvcmFnZVR5cGUgPT0gU3Rv
cmFnZVR5cGVCaW5hcnlEYXRhLgotICAgICAgICBXZWJTdHJpbmcgdGl0bGU7Ci0KLSAgICAgICAg
Ly8gT25seSB2YWxpZCB3aGVuIHN0cmluZ1R5cGUgPT0gInRleHQvaHRtbCIuCi0gICAgICAgIFdl
YlVSTCBiYXNlVVJMOwotICAgIH07Ci0KLSAgICB+V2ViRHJhZ0RhdGEoKSB7IHJlc2V0KCk7IH0K
LQotICAgIFdlYkRyYWdEYXRhKCkgOiBtX3ByaXZhdGUoMCkgeyB9Ci0gICAgV2ViRHJhZ0RhdGEo
Y29uc3QgV2ViRHJhZ0RhdGEmIGQpIDogbV9wcml2YXRlKDApIHsgYXNzaWduKGQpOyB9Ci0gICAg
V2ViRHJhZ0RhdGEmIG9wZXJhdG9yPShjb25zdCBXZWJEcmFnRGF0YSYgZCkKLSAgICB7Ci0gICAg
ICAgIGFzc2lnbihkKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0
KCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJEcmFnRGF0YSYpOwot
Ci0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9wcml2YXRlOyB9Ci0KLSAgICBX
RUJLSVRfRVhQT1JUIFdlYlZlY3RvcjxJdGVtPiBpdGVtcygpIGNvbnN0OwotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXRJdGVtcyhjb25zdCBXZWJWZWN0b3I8SXRlbT4mKTsKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgYWRkSXRlbShjb25zdCBJdGVtJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdl
YlN0cmluZyBmaWxlc3lzdGVtSWQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
RmlsZXN5c3RlbUlkKGNvbnN0IFdlYlN0cmluZyYpOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCi0gICAgV2ViRHJhZ0RhdGEoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkNocm9t
aXVtRGF0YU9iamVjdD4mKTsKLSAgICBXZWJEcmFnRGF0YSYgb3BlcmF0b3I9KGNvbnN0IFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpDaHJvbWl1bURhdGFPYmplY3Q+Jik7Ci0gICAgb3BlcmF0b3Ig
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkNocm9taXVtRGF0YU9iamVjdD4oKSBjb25zdDsKLSNl
bmRpZgotCi1wcml2YXRlOgotICAgIHZvaWQgYXNzaWduKFdlYkRyYWdEYXRhUHJpdmF0ZSopOwot
ICAgIHZvaWQgZW5zdXJlTXV0YWJsZSgpOwotICAgIFdlYkRyYWdEYXRhUHJpdmF0ZSogbV9wcml2
YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgorI2luY2x1ZGUgIi4u
Ly4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJEcmFnRGF0YS5oIgpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSW1hZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJJbWFnZS5o
CShyZXZpc2lvbiAxMTY1MjQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5OSArMjgsNCBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkltYWdlX2gKLSNkZWZpbmUgV2ViSW1hZ2VfaAot
Ci0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0KLSNpZiBXRUJLSVRfVVNJTkdfU0tJQQotI2luY2x1
ZGUgPFNrQml0bWFwLmg+Ci0jZWxpZiBXRUJLSVRfVVNJTkdfQ0cKLXR5cGVkZWYgc3RydWN0IENH
SW1hZ2UqIENHSW1hZ2VSZWY7Ci0jZW5kaWYKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgot
bmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJbWFnZTsgfQotbmFtZXNwYWNlIFdURiB7IHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOyB9Ci0jZW5kaWYKLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLWNsYXNzIFdlYkRhdGE7Ci1zdHJ1Y3QgV2ViU2l6ZTsKLQotLy8gQSBjb250
YWluZXIgZm9yIGFuIEFSR0IgYml0bWFwLgotY2xhc3MgV2ViSW1hZ2UgewotcHVibGljOgotICAg
IH5XZWJJbWFnZSgpIHsgcmVzZXQoKTsgfQotCi0gICAgV2ViSW1hZ2UoKSB7IGluaXQoKTsgfQot
ICAgIFdlYkltYWdlKGNvbnN0IFdlYkltYWdlJiBpbWFnZSkKLSAgICB7Ci0gICAgICAgIGluaXQo
KTsKLSAgICAgICAgYXNzaWduKGltYWdlKTsKLSAgICB9Ci0KLSAgICBXZWJJbWFnZSYgb3BlcmF0
b3I9KGNvbnN0IFdlYkltYWdlJiBpbWFnZSkKLSAgICB7Ci0gICAgICAgIGFzc2lnbihpbWFnZSk7
Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICAvLyBEZWNvZGVzIHRoZSBnaXZl
biBpbWFnZSBkYXRhLiAgSWYgdGhlIGltYWdlIGhhcyBtdWx0aXBsZSBmcmFtZXMsCi0gICAgLy8g
dGhlbiB0aGUgZnJhbWUgd2hvc2Ugc2l6ZSBpcyBkZXNpcmVkU2l6ZSBpcyByZXR1cm5lZC4gIE90
aGVyd2lzZSwKLSAgICAvLyB0aGUgZmlyc3QgZnJhbWUgaXMgcmV0dXJuZWQuCi0gICAgV0VCS0lU
X0VYUE9SVCBzdGF0aWMgV2ViSW1hZ2UgZnJvbURhdGEoY29uc3QgV2ViRGF0YSYsIGNvbnN0IFdl
YlNpemUmIGRlc2lyZWRTaXplKTsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViSW1hZ2UmKTsKLQotICAgIFdF
QktJVF9FWFBPUlQgYm9vbCBpc051bGwoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIFdlYlNp
emUgc2l6ZSgpIGNvbnN0OwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViSW1h
Z2UoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkltYWdlPiYpOwotICAgIFdlYkltYWdl
JiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkltYWdlPiYpOwotI2Vu
ZGlmCi0KLSNpZiBXRUJLSVRfVVNJTkdfU0tJQQotICAgIFdlYkltYWdlKGNvbnN0IFNrQml0bWFw
JiBiaXRtYXApIDogbV9iaXRtYXAoYml0bWFwKSB7IH0KLQotICAgIFdlYkltYWdlJiBvcGVyYXRv
cj0oY29uc3QgU2tCaXRtYXAmIGJpdG1hcCkKLSAgICB7Ci0gICAgICAgIG1fYml0bWFwID0gYml0
bWFwOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgU2tCaXRtYXAmIGdldFNr
Qml0bWFwKCkgeyByZXR1cm4gbV9iaXRtYXA7IH0KLSAgICBjb25zdCBTa0JpdG1hcCYgZ2V0U2tC
aXRtYXAoKSBjb25zdCB7IHJldHVybiBtX2JpdG1hcDsgfQotCi1wcml2YXRlOgotICAgIHZvaWQg
aW5pdCgpIHsgfQotICAgIFNrQml0bWFwIG1fYml0bWFwOwotCi0jZWxpZiBXRUJLSVRfVVNJTkdf
Q0cKLSAgICBXZWJJbWFnZShDR0ltYWdlUmVmIGltYWdlUmVmKQotICAgIHsKLSAgICAgICAgaW5p
dCgpOwotICAgICAgICBhc3NpZ24oaW1hZ2VSZWYpOwotICAgIH0KLQotICAgIFdlYkltYWdlJiBv
cGVyYXRvcj0oQ0dJbWFnZVJlZiBpbWFnZVJlZikKLSAgICB7Ci0gICAgICAgIGFzc2lnbihpbWFn
ZVJlZik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBDR0ltYWdlUmVmIGdl
dENHSW1hZ2VSZWYoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlUmVmOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgdm9pZCBpbml0KCkgeyBtX2ltYWdlUmVmID0gMDsgfQotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBhc3NpZ24oQ0dJbWFnZVJlZik7Ci0gICAgQ0dJbWFnZVJlZiBtX2ltYWdlUmVmOwotI2VuZGlm
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCisjaW5jbHVkZSAiLi4vLi4v
Li4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlLmgiCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJL
aXRQbGF0Zm9ybVN1cHBvcnQuaAkocmV2aXNpb24gMTE2NTI0KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDcgKzUxLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBcHBs
aWNhdGlvbkNhY2hlSG9zdDsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/
CiBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudDsgLy8gRklYTUU6IERvZXMgdGhp
cyBiZWxvbmcgaW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJCbG9iUmVnaXN0cnk7Ci1jbGFzcyBXZWJD
bGlwYm9hcmQ7CiBjbGFzcyBXZWJDb29raWVKYXI7CiBjbGFzcyBXZWJGaWxlVXRpbGl0aWVzOwog
Y2xhc3MgV2ViSURCRmFjdG9yeTsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZv
cm0/CkBAIC02OCw5ICs2Nyw2IEBAIGNsYXNzIFdlYldvcmtlclJ1bkxvb3A7CiBjbGFzcyBXZWJL
aXRQbGF0Zm9ybVN1cHBvcnQgOiBwdWJsaWMgUGxhdGZvcm0gewogcHVibGljOgogICAgIC8vIE11
c3QgcmV0dXJuIG5vbi1udWxsLgotICAgIHZpcnR1YWwgV2ViQ2xpcGJvYXJkKiBjbGlwYm9hcmQo
KSB7IHJldHVybiAwOyB9Ci0KLSAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KICAgICB2aXJ0
dWFsIFdlYkZpbGVVdGlsaXRpZXMqIGZpbGVVdGlsaXRpZXMoKSB7IHJldHVybiAwOyB9CiAKICAg
ICAvLyBNYXkgcmV0dXJuIG51bGwgaWYgc2FuZGJveCBzdXBwb3J0IGlzIG5vdCBuZWNlc3NhcnkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5n
RW51bXMuY3BwCShyZXZpc2lvbiAxMTY1MjQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksMTEgKzk5LDEx
IEBACiAjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nUmVzdWx0LmgiCiAjaW5jbHVkZSAiV2ViVGV4
dENoZWNraW5nVHlwZS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJQ0VPcHRpb25zLmgiCiAj
aW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaCIKICNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJQZWVyQ29ubmVjdGlvbjAwSGFuZGxlci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkNs
aXBib2FyZC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWZlcnJl
clBvbGljeS5oPgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRHJhZ0NsaWVudElt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RyYWdDbGll
bnRJbXBsLmNwcAkocmV2aXNpb24gMTE2NTI0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRHJhZ0NsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMSArMzYsMTIgQEAK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlU2tpYS5oIgogI2luY2x1
ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkRyYWdEYXRh
LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xp
ZW50LmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKIAorI2luY2x1ZGUgPHB1YmxpYy9XZWJE
cmFnRGF0YS5oPgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9y
dC5jcHAJKHJldmlzaW9uIDExNjUyNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Bs
YXRmb3JtU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDYgQEAKICNpbmNs
dWRlICJXZWJXb3JrZXJDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViV29ya2VyUnVuTG9vcC5o
IgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkF1ZGlvQnVzLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0v
V2ViQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29va2llLmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViQ29va2llSmFyLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViRGF0YS5o
IgpAQCAtMTAxLDYgKzEwMCw3IEBACiAKICNpbmNsdWRlICJXb3JrZXIuaCIKICNpbmNsdWRlICJX
b3JrZXJDb250ZXh0UHJveHkuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ2xpcGJvYXJkLmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYk1pbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRyYWdEYXRhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEcmFnRGF0YS5j
cHAJKHJldmlzaW9uIDExNjUyNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRy
YWdEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJEcmFnRGF0YS5oIgogCiAjaW5j
bHVkZSAiQ2hyb21pdW1EYXRhT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkTWltZVR5cGVz
LmgiCkBAIC00MCw2ICszOSw3IEBACiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMLmgiCiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCiAKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRHJhZ0Rh
dGEuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlQ0cuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlQ0cuY3BwCShy
ZXZpc2lvbiAxMTY1MjQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUNH
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJbWFnZS5oIgogCiAjaW5jbHVkZSAiSW1h
Z2UuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgpAQCAtNDAsNiArMzksNyBAQAogCiAjaW5j
bHVkZSA8Q29yZUdyYXBoaWNzL0NHSW1hZ2UuaD4KIAorI2luY2x1ZGUgPHB1YmxpYy9XZWJJbWFn
ZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZURlY29kZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlRGVj
b2Rlci5jcHAJKHJldmlzaW9uIDExNjUyNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDEwIEBACiAj
aW5jbHVkZSAiSUNPSW1hZ2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAicGxhdGZvcm0vV2ViRGF0YS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkltYWdl
LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgogCisjaW5jbHVkZSA8cHVibGljL1dl
YkltYWdlLmg+CisKICNpZiBXRUJLSVRfVVNJTkdfU0tJQQogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwCShyZXZpc2lvbiAxMTY1MjQpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw2IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgInBsYXRm
b3JtL1dlYkltYWdlLmgiCiAKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlU291
cmNlLmgiCkBAIC0zOSw2ICszOCw3IEBACiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViRGF0YS5oIgog
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKIAorI2luY2x1ZGUgPHB1YmxpYy9XZWJJbWFn
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAkocmV2aXNpb24g
MTE2NTI0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVy
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE0ICszNCwxMiBAQAogI2luY2x1ZGUgIkNo
cm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJTY3JvbGxi
YXJHcm91cC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNsaXBib2FyZC5oIgogI2luY2x1ZGUg
IldlYkN1cnNvckluZm8uaCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlSW1wbC5oIgogI2luY2x1
ZGUgIldlYkVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAi
V2ViSW5wdXRFdmVudENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKLSNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJXZWJQbHVnaW4u
aCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
U3RyaW5nLmgiCkBAIC03NSw2ICs3Myw4IEBACiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIK
ICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQu
aCIKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ2xp
cGJvYXJkLmg+CiAKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAjaW5jbHVkZSAiUGxhdGZv
cm1HZXN0dXJlRXZlbnQuaCIKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIFdlYlBsdWdpbkNvbnRh
aW5lckltcGw6OmNvcHkoKQogICAgIGlmICghbV93ZWJQbHVnaW4tPmhhc1NlbGVjdGlvbigpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y2xpcGJvYXJk
KCktPndyaXRlSFRNTChtX3dlYlBsdWdpbi0+c2VsZWN0aW9uQXNNYXJrdXAoKSwgV2ViVVJMKCks
IG1fd2ViUGx1Z2luLT5zZWxlY3Rpb25Bc1RleHQoKSwgZmFsc2UpOworICAgIFdlYktpdDo6UGxh
dGZvcm06OmN1cnJlbnQoKS0+Y2xpcGJvYXJkKCktPndyaXRlSFRNTChtX3dlYlBsdWdpbi0+c2Vs
ZWN0aW9uQXNNYXJrdXAoKSwgV2ViVVJMKCksIG1fd2ViUGx1Z2luLT5zZWxlY3Rpb25Bc1RleHQo
KSwgZmFsc2UpOwogfQogCiBXZWJFbGVtZW50IFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmVsZW1l
bnQoKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAko
cmV2aXNpb24gMTE2NTI0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsMTQgKzE0MywxNCBAQAogI2luY2x1ZGUgIldo
ZWVsRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAicGFpbnRpbmcv
R3JhcGhpY3NDb250ZXh0QnVpbGRlci5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkRyYWdEYXRh
LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIK
ICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZv
cm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViRmxvYXRQb2ludC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJJbWFnZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXll
ci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYlBvaW50Lmg+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141016</attachid>
            <date>2012-05-09 14:37:39 -0700</date>
            <delta_ts>2012-05-09 15:50:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85758-20120509173736.patch</filename>
            <type>text/plain</type>
            <size>35198</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2NTU4KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEyLTA1LTA5ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1v
dmUgY2xpcGJvYXJkIHRvIFBsYXRmb3JtLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg1NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFydCBvZiBhIHJlZmFjdG9yaW5nIHNlcmllcy4gU2VlIHRyYWNr
aW5nIGJ1ZyA4Mjk0OC4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hy
b21pdW0vcHVibGljL1BsYXRmb3JtLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUGxh
dGZvcm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6Y2xpcGJvYXJkKToKKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViQ2xpcGJvYXJkLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYkNsaXBib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNsaXBib2Fy
ZDo6c2VxdWVuY2VOdW1iZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDbGlwYm9hcmQ6OmlzRm9y
bWF0QXZhaWxhYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2xpcGJvYXJkOjpyZWFkQXZhaWxh
YmxlVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDbGlwYm9hcmQ6OnJlYWRQbGFpblRleHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDbGlwYm9hcmQ6OnJlYWRIVE1MKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ2xpcGJvYXJkOjpyZWFkSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDbGlw
Ym9hcmQ6OnJlYWRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2xpcGJvYXJkOjp3
cml0ZVBsYWluVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNsaXBib2FyZDo6d3JpdGVIVE1M
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2xpcGJvYXJkOjp3cml0ZVVSTCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNsaXBib2FyZDo6d3JpdGVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNs
aXBib2FyZDo6d3JpdGVEYXRhT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2xpcGJvYXJk
Ojp+V2ViQ2xpcGJvYXJkKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViRHJhZ0RhdGEu
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViRHJhZ0RhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEcmFnRGF0YTo6fldlYkRyYWdEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRHJhZ0RhdGE6OldlYkRyYWdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0Rh
dGE6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdEYXRhOjppc051bGwpOgor
ICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJbWFnZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjp+
V2ViSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6V2ViSW1hZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbWFnZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1h
Z2U6OmdldFNrQml0bWFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmluaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6CisKIDIwMTItMDUtMDkgIFRv
bW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJl
YW0gQVBJOiBBZGRpbmcgdGhlIHBvc3NpYmlsaXR5IG9mIHBvcnQgc3BlY2lmaWMgaW5mb3JtYXRp
b24gaW4gTWVkaWFTdHJlYW1EZXNjcmlwdG9yCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vUGxhdGZv
cm0uZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQkocmV2
aXNpb24gMTE2NTUwKQorKysgU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDExICszNiwxMyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9X
ZWJBdWRpb0RldmljZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ1N0cmlu
Zy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ2FudmFzLmgnLAorICAgICAg
ICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDbGlwYm9hcmQuaCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYkNvbG9yLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9X
ZWJDb21tb24uaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXll
ci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyQ2xpZW50
LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJEYXRhLmgnLAorICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJEcmFnRGF0YS5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYkZpbHRlck9wZXJhdGlvbi5oJywKQEAgLTU2LDYgKzU4LDcgQEAKICAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViSFRUUExvYWRJbmZvLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yLmgnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL3B1YmxpYy9XZWJJQ0VPcHRpb25zLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1Ymxp
Yy9XZWJJbWFnZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViSU9TdXJmYWNl
TGF5ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgnLApJbmRleDogU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAkocmV2aXNpb24gMTE2NTUw
KQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2Vi
QXVkaW9CdXM7CitjbGFzcyBXZWJDbGlwYm9hcmQ7CiBjbGFzcyBXZWJGaWxlU3lzdGVtOwogY2xh
c3MgV2ViTWVkaWFTdHJlYW1DZW50ZXI7CiBjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVu
dDsKQEAgLTYwLDYgKzYxLDkgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFBs
YXRmb3JtKiBjdXJyZW50KCk7CiAKICAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KKyAgICB2
aXJ0dWFsIFdlYkNsaXBib2FyZCogY2xpcGJvYXJkKCkgeyByZXR1cm4gMDsgfQorCisgICAgLy8g
TXVzdCByZXR1cm4gbm9uLW51bGwuCiAgICAgdmlydHVhbCBXZWJNaW1lUmVnaXN0cnkqIG1pbWVS
ZWdpc3RyeSgpIHsgcmV0dXJuIDA7IH0KIAogCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkNsaXBib2FyZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViQ2xpcGJvYXJkLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNsaXBib2FyZC5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJDbGlwYm9hcmRfaAorI2RlZmluZSBXZWJDbGlwYm9hcmRfaAor
CisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViRGF0YS5oIgorI2luY2x1ZGUg
IldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViRHJhZ0RhdGE7CitjbGFzcyBXZWJJbWFnZTsKK2NsYXNzIFdlYlVSTDsK
KworY2xhc3MgV2ViQ2xpcGJvYXJkIHsKK3B1YmxpYzoKKyAgICBlbnVtIEZvcm1hdCB7CisgICAg
ICAgIEZvcm1hdFBsYWluVGV4dCwKKyAgICAgICAgRm9ybWF0SFRNTCwKKyAgICAgICAgRm9ybWF0
Qm9va21hcmssCisgICAgICAgIEZvcm1hdFNtYXJ0UGFzdGUKKyAgICB9OworCisgICAgZW51bSBC
dWZmZXIgeworICAgICAgICBCdWZmZXJTdGFuZGFyZCwKKyAgICAgICAgLy8gVXNlZCBvbiBwbGF0
Zm9ybXMgbGlrZSB0aGUgWCBXaW5kb3cgU3lzdGVtIHRoYXQgdHJlYXQgc2VsZWN0aW9uCisgICAg
ICAgIC8vIGFzIGEgdHlwZSBvZiBjbGlwYm9hcmQuCisgICAgICAgIEJ1ZmZlclNlbGVjdGlvbiwK
KyAgICB9OworCisgICAgLy8gUmV0dXJucyBhbiBpZGVudGlmaWVyIHdoaWNoIGNhbiBiZSB1c2Vk
IHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBkYXRhCisgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0
aGUgY2xpcGJvYXJkIGhhcyBjaGFuZ2VkLgorICAgIHZpcnR1YWwgdWludDY0IHNlcXVlbmNlTnVt
YmVyKEJ1ZmZlcikgeyByZXR1cm4gMDsgfQorCisgICAgdmlydHVhbCBib29sIGlzRm9ybWF0QXZh
aWxhYmxlKEZvcm1hdCwgQnVmZmVyKSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCBX
ZWJWZWN0b3I8V2ViU3RyaW5nPiByZWFkQXZhaWxhYmxlVHlwZXMoCisgICAgICAgIEJ1ZmZlciwg
Ym9vbCogY29udGFpbnNGaWxlbmFtZXMpIHsgcmV0dXJuIFdlYlZlY3RvcjxXZWJTdHJpbmc+KCk7
IH0KKyAgICB2aXJ0dWFsIFdlYlN0cmluZyByZWFkUGxhaW5UZXh0KEJ1ZmZlcikgeyByZXR1cm4g
V2ViU3RyaW5nKCk7IH0KKyAgICAvLyBmcmFnbWVudFN0YXJ0IGFuZCBmcmFnbWVudEVuZCBhcmUg
aW5kZXhlcyBpbnRvIHRoZSByZXR1cm5lZCBtYXJrdXAgdGhhdAorICAgIC8vIGluZGljYXRlIHRo
ZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBmcmFnbWVudCBpZiB0aGUgcmV0dXJuZWQgbWFya3VwCisg
ICAgLy8gY29udGFpbnMgYWRkaXRpb25hbCBjb250ZXh0LiBJZiB0aGVyZSBpcyBubyBhZGRpdGlv
bmFsIGNvbnRleHQsCisgICAgLy8gZnJhZ21lbnRTdGFydCB3aWxsIGJlIHplcm8gYW5kIGZyYWdt
ZW50RW5kIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIGxlbmd0aAorICAgIC8vIG9mIHRoZSByZXR1
cm5lZCBtYXJrdXAuCisgICAgdmlydHVhbCBXZWJTdHJpbmcgcmVhZEhUTUwoCisgICAgICAgIEJ1
ZmZlciBidWZmZXIsIFdlYlVSTCogcGFnZVVSTCwgdW5zaWduZWQqIGZyYWdtZW50U3RhcnQsCisg
ICAgICAgIHVuc2lnbmVkKiBmcmFnbWVudEVuZCkgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KKyAg
ICB2aXJ0dWFsIFdlYkRhdGEgcmVhZEltYWdlKEJ1ZmZlcikgeyByZXR1cm4gV2ViRGF0YSgpOyB9
CisgICAgdmlydHVhbCBXZWJTdHJpbmcgcmVhZEN1c3RvbURhdGEoCisgICAgICAgIEJ1ZmZlciwg
Y29uc3QgV2ViU3RyaW5nJiB0eXBlKSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQorCisgICAgdmly
dHVhbCB2b2lkIHdyaXRlUGxhaW5UZXh0KGNvbnN0IFdlYlN0cmluZyYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCB3cml0ZUhUTUwoCisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgaHRtbFRleHQsIGNv
bnN0IFdlYlVSTCYsCisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgcGxhaW5UZXh0LCBib29sIHdy
aXRlU21hcnRQYXN0ZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHdyaXRlVVJMKAorICAgICAgICBj
b25zdCBXZWJVUkwmLCBjb25zdCBXZWJTdHJpbmcmIHRpdGxlKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgd3JpdGVJbWFnZSgKKyAgICAgICAgY29uc3QgV2ViSW1hZ2UmLCBjb25zdCBXZWJVUkwmLCBj
b25zdCBXZWJTdHJpbmcmIHRpdGxlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVEYXRhT2Jq
ZWN0KGNvbnN0IFdlYkRyYWdEYXRhJikgeyB9CisKK3Byb3RlY3RlZDoKKyAgICB+V2ViQ2xpcGJv
YXJkKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkRyYWdEYXRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJEcmFnRGF0YS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJEcmFnRGF0YS5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRHJhZ0RhdGFfaAorI2RlZmlu
ZSBXZWJEcmFnRGF0YV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJE
YXRhLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisKKyNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgQ2hyb21p
dW1EYXRhT2JqZWN0OyB9CituYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIFBhc3NSZWZQdHI7IH0KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViRHJhZ0RhdGFQcml2YXRlOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYlZlY3Rv
cjsKKworLy8gSG9sZHMgZGF0YSB0aGF0IG1heSBiZSBleGNoYW5nZWQgdGhyb3VnaCBhIGRyYWct
bi1kcm9wIG9wZXJhdGlvbi4gSXQgaXMKKy8vIGluZXhwZW5zaXZlIHRvIGNvcHkgYSBXZWJEcmFn
RGF0YSBvYmplY3QuCitjbGFzcyBXZWJEcmFnRGF0YSB7CitwdWJsaWM6CisgICAgc3RydWN0IEl0
ZW0geworICAgICAgICBlbnVtIFN0b3JhZ2VUeXBlIHsKKyAgICAgICAgICAgIC8vIFN0cmluZyBk
YXRhIHdpdGggYW4gYXNzb2NpYXRlZCBNSU1FIHR5cGUuIERlcGVuZGluZyBvbiB0aGUgTUlNRSB0
eXBlLCB0aGVyZSBtYXkgYmUKKyAgICAgICAgICAgIC8vIG9wdGlvbmFsIG1ldGFkYXRhIGF0dHJp
YnV0ZXMgYXMgd2VsbC4KKyAgICAgICAgICAgIFN0b3JhZ2VUeXBlU3RyaW5nLAorICAgICAgICAg
ICAgLy8gU3RvcmVzIHRoZSBuYW1lIG9mIG9uZSBmaWxlIGJlaW5nIGRyYWdnZWQgaW50byB0aGUg
cmVuZGVyZXIuCisgICAgICAgICAgICBTdG9yYWdlVHlwZUZpbGVuYW1lLAorICAgICAgICAgICAg
Ly8gQW4gaW1hZ2UgYmVpbmcgZHJhZ2dlZCBvdXQgb2YgdGhlIHJlbmRlcmVyLiBDb250YWlucyBh
IGJ1ZmZlciBob2xkaW5nIHRoZSBpbWFnZSBkYXRhCisgICAgICAgICAgICAvLyBhcyB3ZWxsIGFz
IHRoZSBzdWdnZXN0ZWQgbmFtZSBmb3Igc2F2aW5nIHRoZSBpbWFnZSB0by4KKyAgICAgICAgICAg
IFN0b3JhZ2VUeXBlQmluYXJ5RGF0YSwKKyAgICAgICAgfTsKKworICAgICAgICBTdG9yYWdlVHlw
ZSBzdG9yYWdlVHlwZTsKKworICAgICAgICAvLyBPbmx5IHZhbGlkIHdoZW4gc3RvcmFnZVR5cGUg
PT0gU3RvcmFnZVR5cGVTdHJpbmcuCisgICAgICAgIFdlYlN0cmluZyBzdHJpbmdUeXBlOworICAg
ICAgICBXZWJTdHJpbmcgc3RyaW5nRGF0YTsKKworICAgICAgICAvLyBPbmx5IHZhbGlkIHdoZW4g
c3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGVGaWxlbmFtZS4KKyAgICAgICAgV2ViU3RyaW5nIGZp
bGVuYW1lRGF0YTsKKyAgICAgICAgV2ViU3RyaW5nIGRpc3BsYXlOYW1lRGF0YTsKKworICAgICAg
ICAvLyBPbmx5IHZhbGlkIHdoZW4gc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGVCaW5hcnlEYXRh
LgorICAgICAgICBXZWJEYXRhIGJpbmFyeURhdGE7CisKKyAgICAgICAgLy8gVGl0bGUgYXNzb2Np
YXRlZCB3aXRoIGEgbGluayB3aGVuIHN0cmluZ1R5cGUgPT0gInRleHQvdXJpLWxpc3QiLgorICAg
ICAgICAvLyBGaWxlbmFtZSB3aGVuIHN0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlQmluYXJ5RGF0
YS4KKyAgICAgICAgV2ViU3RyaW5nIHRpdGxlOworCisgICAgICAgIC8vIE9ubHkgdmFsaWQgd2hl
biBzdHJpbmdUeXBlID09ICJ0ZXh0L2h0bWwiLgorICAgICAgICBXZWJVUkwgYmFzZVVSTDsKKyAg
ICB9OworCisgICAgfldlYkRyYWdEYXRhKCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJEcmFnRGF0
YSgpIDogbV9wcml2YXRlKDApIHsgfQorICAgIFdlYkRyYWdEYXRhKGNvbnN0IFdlYkRyYWdEYXRh
JiBkKSA6IG1fcHJpdmF0ZSgwKSB7IGFzc2lnbihkKTsgfQorICAgIFdlYkRyYWdEYXRhJiBvcGVy
YXRvcj0oY29uc3QgV2ViRHJhZ0RhdGEmIGQpCisgICAgeworICAgICAgICBhc3NpZ24oZCk7Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5p
dGlhbGl6ZSgpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViRHJhZ0RhdGEmKTsKKworICAgIGJvb2wgaXNOdWxs
KCkgY29uc3QgeyByZXR1cm4gIW1fcHJpdmF0ZTsgfQorCisgICAgV0VCS0lUX0VYUE9SVCBXZWJW
ZWN0b3I8SXRlbT4gaXRlbXMoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SXRl
bXMoY29uc3QgV2ViVmVjdG9yPEl0ZW0+Jik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFkZEl0
ZW0oY29uc3QgSXRlbSYpOworCisgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgZmlsZXN5c3Rl
bUlkKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpbGVzeXN0ZW1JZChjb25z
dCBXZWJTdHJpbmcmKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkRyYWdE
YXRhKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDaHJvbWl1bURhdGFPYmplY3Q+Jik7
CisgICAgV2ViRHJhZ0RhdGEmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6Q2hyb21pdW1EYXRhT2JqZWN0PiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpDaHJvbWl1bURhdGFPYmplY3Q+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToK
KyAgICB2b2lkIGFzc2lnbihXZWJEcmFnRGF0YVByaXZhdGUqKTsKKyAgICB2b2lkIGVuc3VyZU11
dGFibGUoKTsKKyAgICBXZWJEcmFnRGF0YVByaXZhdGUqIG1fcHJpdmF0ZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkltYWdlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkltYWdlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJJbWFnZV9oCisjZGVmaW5lIFdlYkltYWdlX2gKKworI2luY2x1ZGUgIldlYkNvbW1v
bi5oIgorCisjaWYgV0VCS0lUX1VTSU5HX1NLSUEKKyNpbmNsdWRlIDxTa0JpdG1hcC5oPgorI2Vs
aWYgV0VCS0lUX1VTSU5HX0NHCit0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwor
I2VuZGlmCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXZWJDb3JlIHsg
Y2xhc3MgSW1hZ2U7IH0KK25hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgUGFzc1JlZlB0cjsgfQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJEYXRhOworc3RydWN0IFdlYlNpemU7CisKKy8vIEEgY29udGFpbmVyIGZvciBhbiBBUkdCIGJp
dG1hcC4KK2NsYXNzIFdlYkltYWdlIHsKK3B1YmxpYzoKKyAgICB+V2ViSW1hZ2UoKSB7IHJlc2V0
KCk7IH0KKworICAgIFdlYkltYWdlKCkgeyBpbml0KCk7IH0KKyAgICBXZWJJbWFnZShjb25zdCBX
ZWJJbWFnZSYgaW1hZ2UpCisgICAgeworICAgICAgICBpbml0KCk7CisgICAgICAgIGFzc2lnbihp
bWFnZSk7CisgICAgfQorCisgICAgV2ViSW1hZ2UmIG9wZXJhdG9yPShjb25zdCBXZWJJbWFnZSYg
aW1hZ2UpCisgICAgeworICAgICAgICBhc3NpZ24oaW1hZ2UpOworICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgfQorCisgICAgLy8gRGVjb2RlcyB0aGUgZ2l2ZW4gaW1hZ2UgZGF0YS4gSWYgdGhl
IGltYWdlIGhhcyBtdWx0aXBsZSBmcmFtZXMsCisgICAgLy8gdGhlbiB0aGUgZnJhbWUgd2hvc2Ug
c2l6ZSBpcyBkZXNpcmVkU2l6ZSBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLAorICAgIC8vIHRoZSBm
aXJzdCBmcmFtZSBpcyByZXR1cm5lZC4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJbWFn
ZSBmcm9tRGF0YShjb25zdCBXZWJEYXRhJiwgY29uc3QgV2ViU2l6ZSYgZGVzaXJlZFNpemUpOwor
CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IGFzc2lnbihjb25zdCBXZWJJbWFnZSYpOworCisgICAgV0VCS0lUX0VYUE9SVCBib29sIGlzTnVs
bCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViU2l6ZSBzaXplKCkgY29uc3Q7CisKKyNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJJbWFnZShjb25zdCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6SW1hZ2U+Jik7CisgICAgV2ViSW1hZ2UmIG9wZXJhdG9yPShjb25zdCBXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+Jik7CisjZW5kaWYKKworI2lmIFdFQktJVF9VU0lO
R19TS0lBCisgICAgV2ViSW1hZ2UoY29uc3QgU2tCaXRtYXAmIGJpdG1hcCkgOiBtX2JpdG1hcChi
aXRtYXApIHsgfQorCisgICAgV2ViSW1hZ2UmIG9wZXJhdG9yPShjb25zdCBTa0JpdG1hcCYgYml0
bWFwKQorICAgIHsKKyAgICAgICAgbV9iaXRtYXAgPSBiaXRtYXA7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisKKyAgICBTa0JpdG1hcCYgZ2V0U2tCaXRtYXAoKSB7IHJldHVybiBtX2Jp
dG1hcDsgfQorICAgIGNvbnN0IFNrQml0bWFwJiBnZXRTa0JpdG1hcCgpIGNvbnN0IHsgcmV0dXJu
IG1fYml0bWFwOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbml0KCkgeyB9CisgICAgU2tCaXRt
YXAgbV9iaXRtYXA7CisKKyNlbGlmIFdFQktJVF9VU0lOR19DRworICAgIFdlYkltYWdlKENHSW1h
Z2VSZWYgaW1hZ2VSZWYpCisgICAgeworICAgICAgICBpbml0KCk7CisgICAgICAgIGFzc2lnbihp
bWFnZVJlZik7CisgICAgfQorCisgICAgV2ViSW1hZ2UmIG9wZXJhdG9yPShDR0ltYWdlUmVmIGlt
YWdlUmVmKQorICAgIHsKKyAgICAgICAgYXNzaWduKGltYWdlUmVmKTsKKyAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgIH0KKworICAgIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigpIGNvbnN0IHsg
cmV0dXJuIG1faW1hZ2VSZWY7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGluaXQoKSB7IG1faW1h
Z2VSZWYgPSAwOyB9CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihDR0ltYWdlUmVmKTsK
KyAgICBDR0ltYWdlUmVmIG1faW1hZ2VSZWY7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lv
biAxMTY1NTgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA1LTA5ICBNYXJrIFBpbGdyaW0gIDxwaWxncmlt
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUgY2xpcGJvYXJkIHRvIFBs
YXRmb3JtLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg1NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UGFydCBvZiBhIHJlZmFjdG9yaW5nIHNlcmllcy4gU2VlIHRyYWNraW5nIGJ1ZyA4Mjk0OC4KKwor
ICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYkNsaXBi
b2FyZC5oOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJEcmFnRGF0YS5oOgorICAgICAg
ICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJJbWFnZS5oOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9y
bS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQpOgorICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1z
LmNwcDoKKyAgICAgICAgKiBzcmMvRHJhZ0NsaWVudEltcGwuY3BwOgorICAgICAgICAqIHNyYy9Q
bGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAqIHNyYy9XZWJEcmFnRGF0YS5jcHA6CisgICAg
ICAgICogc3JjL1dlYkltYWdlQ0cuY3BwOgorICAgICAgICAqIHNyYy9XZWJJbWFnZURlY29kZXIu
Y3BwOgorICAgICAgICAqIHNyYy9XZWJJbWFnZVNraWEuY3BwOgorICAgICAgICAqIHNyYy9XZWJQ
bHVnaW5Db250YWluZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFp
bmVySW1wbDo6Y29weSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKwogMjAxMi0w
NS0wOSAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Y2hyb21pdW1dIHJlbW92ZSB0aGUgb2Jzb2xldGUgV2ViRnJhbWU6OnJlZmVycmVyUG9saWN5IG1l
dGhvZApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gMTE2NTUwKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OTksNyArMjk5LDYgQEAKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkJsb2JE
YXRhLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViQmxvYlJlZ2lzdHJ5
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViQ2FudmFzLmgnLAotICAg
ICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViQ2xpcGJvYXJkLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViQ29sb3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9wbGF0Zm9ybS9XZWJDb21tb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0
Zm9ybS9XZWJDb250ZW50TGF5ZXIuaCcsCkBAIC0zMDcsNyArMzA2LDYgQEAKICAgICAgICAgICAg
ICAgICAncHVibGljL3BsYXRmb3JtL1dlYkNvb2tpZS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL3BsYXRmb3JtL1dlYkNvb2tpZUphci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3Bs
YXRmb3JtL1dlYkRhdGEuaCcsCi0gICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJE
cmFnRGF0YS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkV4dGVybmFs
VGV4dHVyZUxheWVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViRmxv
YXRQb2ludC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYkZsb2F0UXVh
ZC5oJywKQEAgLTMxOCw3ICszMTYsNiBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZv
cm0vV2ViSFRUUEJvZHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJI
VFRQSGVhZGVyVmlzaXRvci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dl
YkhUVFBMb2FkSW5mby5oJywKLSAgICAgICAgICAgICAgICAncHVibGljL3BsYXRmb3JtL1dlYklt
YWdlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1T
dXBwb3J0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvcGxhdGZvcm0vV2ViTGF5ZXIuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9wbGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3LmgnLApJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ2xpcGJvYXJk
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViQ2xpcGJvYXJkLmgJKHJldmlzaW9uIDExNjU1MCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYkNsaXBib2FyZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3
MSArMjgsNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkNsaXBib2FyZF9o
Ci0jZGVmaW5lIFdlYkNsaXBib2FyZF9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNs
dWRlICJXZWJEYXRhLmgiCi0jaW5jbHVkZSAiV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAiV2ViVmVj
dG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJEcmFnRGF0YTsKLWNsYXNz
IFdlYkltYWdlOwotY2xhc3MgV2ViVVJMOwotCi1jbGFzcyBXZWJDbGlwYm9hcmQgewotcHVibGlj
OgotICAgIGVudW0gRm9ybWF0IHsKLSAgICAgICAgRm9ybWF0UGxhaW5UZXh0LAotICAgICAgICBG
b3JtYXRIVE1MLAotICAgICAgICBGb3JtYXRCb29rbWFyaywKLSAgICAgICAgRm9ybWF0U21hcnRQ
YXN0ZQotICAgIH07Ci0KLSAgICBlbnVtIEJ1ZmZlciB7Ci0gICAgICAgIEJ1ZmZlclN0YW5kYXJk
LAotICAgICAgICAvLyBVc2VkIG9uIHBsYXRmb3JtcyBsaWtlIHRoZSBYIFdpbmRvdyBTeXN0ZW0g
dGhhdCB0cmVhdCBzZWxlY3Rpb24KLSAgICAgICAgLy8gYXMgYSB0eXBlIG9mIGNsaXBib2FyZC4K
LSAgICAgICAgQnVmZmVyU2VsZWN0aW9uLAotICAgIH07Ci0KLSAgICAvLyBSZXR1cm5zIGFuIGlk
ZW50aWZpZXIgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGRhdGEK
LSAgICAvLyBjb250YWluZWQgd2l0aGluIHRoZSBjbGlwYm9hcmQgaGFzIGNoYW5nZWQuCi0gICAg
dmlydHVhbCB1aW50NjQgc2VxdWVuY2VOdW1iZXIoQnVmZmVyKSB7IHJldHVybiAwOyB9Ci0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNGb3JtYXRBdmFpbGFibGUoRm9ybWF0LCBCdWZmZXIpIHsgcmV0dXJu
IGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHJlYWRBdmFpbGFi
bGVUeXBlcygKLSAgICAgICAgQnVmZmVyLCBib29sKiBjb250YWluc0ZpbGVuYW1lcykgeyByZXR1
cm4gV2ViVmVjdG9yPFdlYlN0cmluZz4oKTsgfQotICAgIHZpcnR1YWwgV2ViU3RyaW5nIHJlYWRQ
bGFpblRleHQoQnVmZmVyKSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQotICAgIC8vIGZyYWdtZW50
U3RhcnQgYW5kIGZyYWdtZW50RW5kIGFyZSBpbmRleGVzIGludG8gdGhlIHJldHVybmVkIG1hcmt1
cCB0aGF0Ci0gICAgLy8gaW5kaWNhdGUgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIGZyYWdtZW50
IGlmIHRoZSByZXR1cm5lZCBtYXJrdXAKLSAgICAvLyBjb250YWlucyBhZGRpdGlvbmFsIGNvbnRl
eHQuIElmIHRoZXJlIGlzIG5vIGFkZGl0aW9uYWwgY29udGV4dCwKLSAgICAvLyBmcmFnbWVudFN0
YXJ0IHdpbGwgYmUgemVybyBhbmQgZnJhZ21lbnRFbmQgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUg
bGVuZ3RoCi0gICAgLy8gb2YgdGhlIHJldHVybmVkIG1hcmt1cC4KLSAgICB2aXJ0dWFsIFdlYlN0
cmluZyByZWFkSFRNTCgKLSAgICAgICAgQnVmZmVyIGJ1ZmZlciwgV2ViVVJMKiBwYWdlVVJMLCB1
bnNpZ25lZCogZnJhZ21lbnRTdGFydCwKLSAgICAgICAgdW5zaWduZWQqIGZyYWdtZW50RW5kKSB7
IHJldHVybiBXZWJTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgV2ViRGF0YSByZWFkSW1hZ2UoQnVm
ZmVyKSB7IHJldHVybiBXZWJEYXRhKCk7IH0KLSAgICB2aXJ0dWFsIFdlYlN0cmluZyByZWFkQ3Vz
dG9tRGF0YSgKLSAgICAgICAgQnVmZmVyLCBjb25zdCBXZWJTdHJpbmcmIHR5cGUpIHsgcmV0dXJu
IFdlYlN0cmluZygpOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVQbGFpblRleHQoY29uc3Qg
V2ViU3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHdyaXRlSFRNTCgKLSAgICAgICAgY29u
c3QgV2ViU3RyaW5nJiBodG1sVGV4dCwgY29uc3QgV2ViVVJMJiwKLSAgICAgICAgY29uc3QgV2Vi
U3RyaW5nJiBwbGFpblRleHQsIGJvb2wgd3JpdGVTbWFydFBhc3RlKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgd3JpdGVVUkwoCi0gICAgICAgIGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlN0cmluZyYg
dGl0bGUpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3cml0ZUltYWdlKAotICAgICAgICBjb25zdCBX
ZWJJbWFnZSYsIGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlN0cmluZyYgdGl0bGUpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCB3cml0ZURhdGFPYmplY3QoY29uc3QgV2ViRHJhZ0RhdGEmKSB7IH0KLQot
cHJvdGVjdGVkOgotICAgIH5XZWJDbGlwYm9hcmQoKSB7fQotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZgorI2luY2x1ZGUgIi4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJDbGlwYm9hcmQuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYkRyYWdEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRHJhZ0RhdGEuaAkocmV2aXNpb24gMTE2NTUwKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRHJhZ0RhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMjgsOTYgKzI4LDQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBXZWJEcmFnRGF0YV9oCi0jZGVmaW5lIFdlYkRyYWdEYXRhX2gKLQotI2luY2x1ZGUg
IldlYkNvbW1vbi5oIgotI2luY2x1ZGUgIldlYkRhdGEuaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcu
aCIKLSNpbmNsdWRlICJXZWJVUkwuaCIKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotbmFt
ZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBDaHJvbWl1bURhdGFPYmplY3Q7IH0KLW5hbWVzcGFjZSBX
VEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsgfQotI2VuZGlmCi0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJEcmFnRGF0YVByaXZhdGU7Ci10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2ViVmVjdG9yOwotCi0vLyBIb2xkcyBkYXRhIHRoYXQgbWF5
IGJlIGV4Y2hhbmdlZCB0aHJvdWdoIGEgZHJhZy1uLWRyb3Agb3BlcmF0aW9uLiAgSXQgaXMKLS8v
IGluZXhwZW5zaXZlIHRvIGNvcHkgYSBXZWJEcmFnRGF0YSBvYmplY3QuCi1jbGFzcyBXZWJEcmFn
RGF0YSB7Ci1wdWJsaWM6Ci0gICAgc3RydWN0IEl0ZW0gewotICAgICAgICBlbnVtIFN0b3JhZ2VU
eXBlIHsKLSAgICAgICAgICAgIC8vIFN0cmluZyBkYXRhIHdpdGggYW4gYXNzb2NpYXRlZCBNSU1F
IHR5cGUuIERlcGVuZGluZyBvbiB0aGUgTUlNRSB0eXBlLCB0aGVyZSBtYXkgYmUKLSAgICAgICAg
ICAgIC8vIG9wdGlvbmFsIG1ldGFkYXRhIGF0dHJpYnV0ZXMgYXMgd2VsbC4KLSAgICAgICAgICAg
IFN0b3JhZ2VUeXBlU3RyaW5nLAotICAgICAgICAgICAgLy8gU3RvcmVzIHRoZSBuYW1lIG9mIG9u
ZSBmaWxlIGJlaW5nIGRyYWdnZWQgaW50byB0aGUgcmVuZGVyZXIuCi0gICAgICAgICAgICBTdG9y
YWdlVHlwZUZpbGVuYW1lLAotICAgICAgICAgICAgLy8gQW4gaW1hZ2UgYmVpbmcgZHJhZ2dlZCBv
dXQgb2YgdGhlIHJlbmRlcmVyLiBDb250YWlucyBhIGJ1ZmZlciBob2xkaW5nIHRoZSBpbWFnZSBk
YXRhCi0gICAgICAgICAgICAvLyBhcyB3ZWxsIGFzIHRoZSBzdWdnZXN0ZWQgbmFtZSBmb3Igc2F2
aW5nIHRoZSBpbWFnZSB0by4KLSAgICAgICAgICAgIFN0b3JhZ2VUeXBlQmluYXJ5RGF0YSwKLSAg
ICAgICAgfTsKLQotICAgICAgICBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZTsKLQotICAgICAgICAv
LyBPbmx5IHZhbGlkIHdoZW4gc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGVTdHJpbmcuCi0gICAg
ICAgIFdlYlN0cmluZyBzdHJpbmdUeXBlOwotICAgICAgICBXZWJTdHJpbmcgc3RyaW5nRGF0YTsK
LQotICAgICAgICAvLyBPbmx5IHZhbGlkIHdoZW4gc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGVG
aWxlbmFtZS4KLSAgICAgICAgV2ViU3RyaW5nIGZpbGVuYW1lRGF0YTsKLSAgICAgICAgV2ViU3Ry
aW5nIGRpc3BsYXlOYW1lRGF0YTsKLQotICAgICAgICAvLyBPbmx5IHZhbGlkIHdoZW4gc3RvcmFn
ZVR5cGUgPT0gU3RvcmFnZVR5cGVCaW5hcnlEYXRhLgotICAgICAgICBXZWJEYXRhIGJpbmFyeURh
dGE7Ci0KLSAgICAgICAgLy8gVGl0bGUgYXNzb2NpYXRlZCB3aXRoIGEgbGluayB3aGVuIHN0cmlu
Z1R5cGUgPT0gInRleHQvdXJpLWxpc3QiLgotICAgICAgICAvLyBGaWxlbmFtZSB3aGVuIHN0b3Jh
Z2VUeXBlID09IFN0b3JhZ2VUeXBlQmluYXJ5RGF0YS4KLSAgICAgICAgV2ViU3RyaW5nIHRpdGxl
OwotCi0gICAgICAgIC8vIE9ubHkgdmFsaWQgd2hlbiBzdHJpbmdUeXBlID09ICJ0ZXh0L2h0bWwi
LgotICAgICAgICBXZWJVUkwgYmFzZVVSTDsKLSAgICB9OwotCi0gICAgfldlYkRyYWdEYXRhKCkg
eyByZXNldCgpOyB9Ci0KLSAgICBXZWJEcmFnRGF0YSgpIDogbV9wcml2YXRlKDApIHsgfQotICAg
IFdlYkRyYWdEYXRhKGNvbnN0IFdlYkRyYWdEYXRhJiBkKSA6IG1fcHJpdmF0ZSgwKSB7IGFzc2ln
bihkKTsgfQotICAgIFdlYkRyYWdEYXRhJiBvcGVyYXRvcj0oY29uc3QgV2ViRHJhZ0RhdGEmIGQp
Ci0gICAgewotICAgICAgICBhc3NpZ24oZCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9
Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZSgpOwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCByZXNldCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2Vi
RHJhZ0RhdGEmKTsKLQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJpdmF0
ZTsgfQotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJWZWN0b3I8SXRlbT4gaXRlbXMoKSBjb25zdDsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SXRlbXMoY29uc3QgV2ViVmVjdG9yPEl0ZW0+Jik7
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFkZEl0ZW0oY29uc3QgSXRlbSYpOwotCi0gICAgV0VC
S0lUX0VYUE9SVCBXZWJTdHJpbmcgZmlsZXN5c3RlbUlkKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldEZpbGVzeXN0ZW1JZChjb25zdCBXZWJTdHJpbmcmKTsKLQotI2lmIFdFQktJ
VF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkRyYWdEYXRhKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpDaHJvbWl1bURhdGFPYmplY3Q+Jik7Ci0gICAgV2ViRHJhZ0RhdGEmIG9wZXJhdG9y
PShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q2hyb21pdW1EYXRhT2JqZWN0PiYpOwot
ICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDaHJvbWl1bURhdGFPYmplY3Q+
KCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICB2b2lkIGFzc2lnbihXZWJEcmFnRGF0
YVByaXZhdGUqKTsKLSAgICB2b2lkIGVuc3VyZU11dGFibGUoKTsKLSAgICBXZWJEcmFnRGF0YVBy
aXZhdGUqIG1fcHJpdmF0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYK
KyNpbmNsdWRlICIuLi8uLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRHJhZ0Rh
dGEuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYklt
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vV2ViSW1hZ2UuaAkocmV2aXNpb24gMTE2NTUwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOTkgKzI4
LDQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJJbWFnZV9oCi0jZGVmaW5l
IFdlYkltYWdlX2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotCi0jaWYgV0VCS0lUX1VTSU5H
X1NLSUEKLSNpbmNsdWRlIDxTa0JpdG1hcC5oPgotI2VsaWYgV0VCS0lUX1VTSU5HX0NHCi10eXBl
ZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwotI2VuZGlmCi0KLSNpZiBXRUJLSVRfSU1Q
TEVNRU5UQVRJT04KLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSW1hZ2U7IH0KLW5hbWVzcGFj
ZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsgfQotI2VuZGlm
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJEYXRhOwotc3RydWN0IFdlYlNpemU7
Ci0KLS8vIEEgY29udGFpbmVyIGZvciBhbiBBUkdCIGJpdG1hcC4KLWNsYXNzIFdlYkltYWdlIHsK
LXB1YmxpYzoKLSAgICB+V2ViSW1hZ2UoKSB7IHJlc2V0KCk7IH0KLQotICAgIFdlYkltYWdlKCkg
eyBpbml0KCk7IH0KLSAgICBXZWJJbWFnZShjb25zdCBXZWJJbWFnZSYgaW1hZ2UpCi0gICAgewot
ICAgICAgICBpbml0KCk7Ci0gICAgICAgIGFzc2lnbihpbWFnZSk7Ci0gICAgfQotCi0gICAgV2Vi
SW1hZ2UmIG9wZXJhdG9yPShjb25zdCBXZWJJbWFnZSYgaW1hZ2UpCi0gICAgewotICAgICAgICBh
c3NpZ24oaW1hZ2UpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgLy8gRGVj
b2RlcyB0aGUgZ2l2ZW4gaW1hZ2UgZGF0YS4gIElmIHRoZSBpbWFnZSBoYXMgbXVsdGlwbGUgZnJh
bWVzLAotICAgIC8vIHRoZW4gdGhlIGZyYW1lIHdob3NlIHNpemUgaXMgZGVzaXJlZFNpemUgaXMg
cmV0dXJuZWQuICBPdGhlcndpc2UsCi0gICAgLy8gdGhlIGZpcnN0IGZyYW1lIGlzIHJldHVybmVk
LgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkltYWdlIGZyb21EYXRhKGNvbnN0IFdlYkRh
dGEmLCBjb25zdCBXZWJTaXplJiBkZXNpcmVkU2l6ZSk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgcmVzZXQoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYkltYWdl
Jik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNOdWxsKCkgY29uc3Q7Ci0gICAgV0VCS0lU
X0VYUE9SVCBXZWJTaXplIHNpemUoKSBjb25zdDsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgotICAgIFdlYkltYWdlKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJbWFnZT4mKTsK
LSAgICBXZWJJbWFnZSYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJ
bWFnZT4mKTsKLSNlbmRpZgotCi0jaWYgV0VCS0lUX1VTSU5HX1NLSUEKLSAgICBXZWJJbWFnZShj
b25zdCBTa0JpdG1hcCYgYml0bWFwKSA6IG1fYml0bWFwKGJpdG1hcCkgeyB9Ci0KLSAgICBXZWJJ
bWFnZSYgb3BlcmF0b3I9KGNvbnN0IFNrQml0bWFwJiBiaXRtYXApCi0gICAgewotICAgICAgICBt
X2JpdG1hcCA9IGJpdG1hcDsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIFNr
Qml0bWFwJiBnZXRTa0JpdG1hcCgpIHsgcmV0dXJuIG1fYml0bWFwOyB9Ci0gICAgY29uc3QgU2tC
aXRtYXAmIGdldFNrQml0bWFwKCkgY29uc3QgeyByZXR1cm4gbV9iaXRtYXA7IH0KLQotcHJpdmF0
ZToKLSAgICB2b2lkIGluaXQoKSB7IH0KLSAgICBTa0JpdG1hcCBtX2JpdG1hcDsKLQotI2VsaWYg
V0VCS0lUX1VTSU5HX0NHCi0gICAgV2ViSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZVJlZikKLSAgICB7
Ci0gICAgICAgIGluaXQoKTsKLSAgICAgICAgYXNzaWduKGltYWdlUmVmKTsKLSAgICB9Ci0KLSAg
ICBXZWJJbWFnZSYgb3BlcmF0b3I9KENHSW1hZ2VSZWYgaW1hZ2VSZWYpCi0gICAgewotICAgICAg
ICBhc3NpZ24oaW1hZ2VSZWYpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAg
Q0dJbWFnZVJlZiBnZXRDR0ltYWdlUmVmKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZVJlZjsgfQot
Ci1wcml2YXRlOgotICAgIHZvaWQgaW5pdCgpIHsgbV9pbWFnZVJlZiA9IDA7IH0KLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgYXNzaWduKENHSW1hZ2VSZWYpOwotICAgIENHSW1hZ2VSZWYgbV9pbWFn
ZVJlZjsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgorI2lu
Y2x1ZGUgIi4uLy4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZS5oIgpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZv
cm1TdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgJKHJldmlzaW9uIDExNjU1MCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9y
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3Q7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25n
IGluIHBsYXRmb3JtPwogY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQ7IC8vIEZJ
WE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3JtPwogY2xhc3MgV2ViQmxvYlJlZ2lzdHJ5
OwotY2xhc3MgV2ViQ2xpcGJvYXJkOwogY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViRmls
ZVV0aWxpdGllczsKIGNsYXNzIFdlYklEQkZhY3Rvcnk7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVs
b25nIGluIHBsYXRmb3JtPwpAQCAtNjgsOSArNjcsNiBAQCBjbGFzcyBXZWJXb3JrZXJSdW5Mb29w
OwogY2xhc3MgV2ViS2l0UGxhdGZvcm1TdXBwb3J0IDogcHVibGljIFBsYXRmb3JtIHsKIHB1Ymxp
YzoKICAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KLSAgICB2aXJ0dWFsIFdlYkNsaXBib2Fy
ZCogY2xpcGJvYXJkKCkgeyByZXR1cm4gMDsgfQotCi0gICAgLy8gTXVzdCByZXR1cm4gbm9uLW51
bGwuCiAgICAgdmlydHVhbCBXZWJGaWxlVXRpbGl0aWVzKiBmaWxlVXRpbGl0aWVzKCkgeyByZXR1
cm4gMDsgfQogCiAgICAgLy8gTWF5IHJldHVybiBudWxsIGlmIHNhbmRib3ggc3VwcG9ydCBpcyBu
b3QgbmVjZXNzYXJ5CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRj
aGluZ0VudW1zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
c3NlcnRNYXRjaGluZ0VudW1zLmNwcAkocmV2aXNpb24gMTE2NTUwKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk5LDExICs5OSwxMSBAQAogI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ1Jlc3VsdC5oIgogI2lu
Y2x1ZGUgIldlYlRleHRDaGVja2luZ1R5cGUuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCi0jaW5j
bHVkZSAicGxhdGZvcm0vV2ViQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViSUNF
T3B0aW9ucy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlLmgiCiAj
aW5jbHVkZSAicGxhdGZvcm0vV2ViUGVlckNvbm5lY3Rpb24wMEhhbmRsZXIuaCIKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJQZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudC5oIgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJDbGlwYm9hcmQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaD4KICNpbmNsdWRlIDxwdWJs
aWMvV2ViUmVmZXJyZXJQb2xpY3kuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0RyYWdDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9EcmFnQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDExNjU1MCkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0RyYWdDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYs
MTEgKzM2LDEyIEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFnZVNr
aWEuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJEcmFnRGF0YS5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkltYWdlLmgiCiAjaW5jbHVk
ZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAKKyNpbmNsdWRl
IDxwdWJsaWMvV2ViRHJhZ0RhdGEuaD4KKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZv
cm1TdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Q
bGF0Zm9ybVN1cHBvcnQuY3BwCShyZXZpc2lvbiAxMTY1NTApCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1
MCw2IEBACiAjaW5jbHVkZSAiV2ViV29ya2VyQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIldlYldv
cmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJBdWRpb0J1cy5oIgotI2luY2x1
ZGUgInBsYXRmb3JtL1dlYkNsaXBib2FyZC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvb2tp
ZS5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvb2tpZUphci5oIgogI2luY2x1ZGUgInBsYXRm
b3JtL1dlYkRhdGEuaCIKQEAgLTEwMSw2ICsxMDAsNyBAQAogCiAjaW5jbHVkZSAiV29ya2VyLmgi
CiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dFByb3h5LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkNs
aXBib2FyZC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJNaW1lUmVnaXN0cnkuaD4KICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEcmFnRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRHJhZ0RhdGEuY3BwCShyZXZpc2lvbiAxMTY1NTApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJEcmFnRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViRHJhZ0Rh
dGEuaCIKIAogI2luY2x1ZGUgIkNocm9taXVtRGF0YU9iamVjdC5oIgogI2luY2x1ZGUgIkNsaXBi
b2FyZE1pbWVUeXBlcy5oIgpAQCAtNDAsNiArMzksNyBAQAogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlVSTC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgogCisjaW5jbHVkZSA8cHVi
bGljL1dlYkRyYWdEYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
bWFnZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
bWFnZUNHLmNwcAkocmV2aXNpb24gMTE2NTUwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSW1hZ2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViSW1hZ2UuaCIKIAog
I2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKQEAgLTQwLDYgKzM5
LDcgQEAKIAogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0ltYWdlLmg+CiAKKyNpbmNsdWRlIDxw
dWJsaWMvV2ViSW1hZ2UuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJbWFnZURlY29kZXIuY3BwCShyZXZpc2lvbiAxMTY1NTApCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbWFnZURlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw5
ICszNSwxMCBAQAogI2luY2x1ZGUgIklDT0ltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkRhdGEuaCIKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJJbWFnZS5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKIAorI2luY2x1
ZGUgPHB1YmxpYy9XZWJJbWFnZS5oPgorCiAjaWYgV0VCS0lUX1VTSU5HX1NLSUEKICNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcAkocmV2aXNpb24gMTE2NTUw
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VTa2lhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJJbWFnZS5oIgogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJJbWFnZVNvdXJjZS5oIgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkRhdGEuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTaXplLmgiCiAKKyNpbmNsdWRlIDxw
dWJsaWMvV2ViSW1hZ2UuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5j
cHAJKHJldmlzaW9uIDExNjU1MCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBs
dWdpbkNvbnRhaW5lckltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNCArMzQsMTIgQEAK
ICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnRJbXBsLmgiCiAjaW5j
bHVkZSAiU2Nyb2xsYmFyR3JvdXAuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDbGlwYm9hcmQu
aCIKICNpbmNsdWRlICJXZWJDdXJzb3JJbmZvLmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZUlt
cGwuaCIKICNpbmNsdWRlICJXZWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5o
IgogI2luY2x1ZGUgIldlYklucHV0RXZlbnRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiV2ViS2l0
LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVk
ZSAiV2ViUGx1Z2luLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgogI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlN0cmluZy5oIgpAQCAtNzUsNiArNzMsOCBAQAogI2luY2x1ZGUgIlNjcm9s
bGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRl
ICJXaGVlbEV2ZW50LmgiCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8
cHVibGljL1dlYkNsaXBib2FyZC5oPgogCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQogI2lu
Y2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBX
ZWJQbHVnaW5Db250YWluZXJJbXBsOjpjb3B5KCkKICAgICBpZiAoIW1fd2ViUGx1Z2luLT5oYXNT
ZWxlY3Rpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0
KCktPmNsaXBib2FyZCgpLT53cml0ZUhUTUwobV93ZWJQbHVnaW4tPnNlbGVjdGlvbkFzTWFya3Vw
KCksIFdlYlVSTCgpLCBtX3dlYlBsdWdpbi0+c2VsZWN0aW9uQXNUZXh0KCksIGZhbHNlKTsKKyAg
ICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNsaXBib2FyZCgpLT53cml0ZUhUTUwobV93
ZWJQbHVnaW4tPnNlbGVjdGlvbkFzTWFya3VwKCksIFdlYlVSTCgpLCBtX3dlYlBsdWdpbi0+c2Vs
ZWN0aW9uQXNUZXh0KCksIGZhbHNlKTsKIH0KIAogV2ViRWxlbWVudCBXZWJQbHVnaW5Db250YWlu
ZXJJbXBsOjplbGVtZW50KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAJKHJldmlzaW9uIDExNjU1MCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDE0ICsxNDMsMTQgQEAK
ICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1
ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxkZXIuaCIKLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJEcmFnRGF0YS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkltYWdlLmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0v
V2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCiAjaW5jbHVkZSA8
cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkRyYWdEYXRhLmg+CiAjaW5j
bHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViR3JhcGhp
Y3NDb250ZXh0M0QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViSW1hZ2UuaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViTGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oPgog
I2luY2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>