<?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>90637</bug_id>
          
          <creation_ts>2012-07-05 14:58:22 -0700</creation_ts>
          <short_desc>[Qt] Add support for the Gamepad API</short_desc>
          <delta_ts>2012-08-08 06:18:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>92873</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Marcelo Lira">marcelo.lira</reporter>
          <assigned_to name="Marcelo Lira">marcelo.lira</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>jesus</cc>
    
    <cc>menard</cc>
    
    <cc>rafael.lobo</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>663746</commentid>
    <comment_count>0</comment_count>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-07-05 14:58:22 -0700</bug_when>
    <thetext>[Qt] Add support for the Gamepad API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663748</commentid>
    <comment_count>1</comment_count>
      <attachid>150988</attachid>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-07-05 14:59:07 -0700</bug_when>
    <thetext>Created attachment 150988
[Qt] Add support for the Gamepad API

The Qt port doesn&apos;t have support for the Gamepad API. The attached patch is an initial and unpolished implementation of the API. It depends on libudev for watching the gamepads. As the other ports it works only on Linux.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663751</commentid>
    <comment_count>2</comment_count>
      <attachid>150991</attachid>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-07-05 15:01:56 -0700</bug_when>
    <thetext>Created attachment 150991
WebView to test the patch.

To run:
qmlscene joystick.qml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663752</commentid>
    <comment_count>3</comment_count>
      <attachid>150992</attachid>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-07-05 15:03:01 -0700</bug_when>
    <thetext>Created attachment 150992
HTML to test the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664103</commentid>
    <comment_count>4</comment_count>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-07-06 07:31:15 -0700</bug_when>
    <thetext>*** Bug 90636 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664810</commentid>
    <comment_count>5</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-07-09 05:08:26 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=150988) [details]
&gt; [Qt] Add support for the Gamepad API
&gt; 
&gt; The Qt port doesn&apos;t have support for the Gamepad API. The attached patch is an initial and unpolished implementation of the API. It depends on libudev for watching the gamepads. As the other ports it works only on Linux.

Then you need to at least protect the new code with ifdef otherwise as it is today it will break Windows.

Does it unskip layout test (if you can even make one)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684220</commentid>
    <comment_count>6</comment_count>
      <attachid>155818</attachid>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-08-01 09:09:55 -0700</bug_when>
    <thetext>Created attachment 155818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684222</commentid>
    <comment_count>7</comment_count>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-08-01 09:13:12 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #1)
&gt; &gt; Created an attachment (id=150988) [details] [details]
&gt; &gt; [Qt] Add support for the Gamepad API
&gt; &gt; 
&gt; &gt; The Qt port doesn&apos;t have support for the Gamepad API. The attached patch is an initial and unpolished implementation of the API. It depends on libudev for watching the gamepads. As the other ports it works only on Linux.
&gt; 
&gt; Then you need to at least protect the new code with ifdef otherwise as it is today it will break Windows.
Done.

&gt; Does it unskip layout test (if you can even make one)?
Now it unskips the simpler layout test, that only checks if the Gamepade API is there.
The more complex one that requires including a gamepad controller to be manipulated via javascript is still skipped. I thought it would be best follow the EFL approach and make it a separated issue, so I created bug 92873.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684250</commentid>
    <comment_count>8</comment_count>
      <attachid>155823</attachid>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-08-01 09:42:41 -0700</bug_when>
    <thetext>Created attachment 155823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684572</commentid>
    <comment_count>9</comment_count>
      <attachid>155823</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2012-08-01 14:18:23 -0700</bug_when>
    <thetext>Comment on attachment 155823
Patch

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

Cool! And there is a lot of &quot;raw&quot; udev code around, huh?! :)

&gt; Source/WebCore/platform/qt/GamepadsQt.cpp:33
&gt; +#include &quot;GamepadDeviceLinux.h&quot;

Does it make sense to include a Linux specific header for all QtWebKit supported platorms? I got that GamepadDevice is only available for GNU/Linux, but shouldn&apos;t we then add this only for this specific platform? Or am I missing something here?

&gt; Source/WebCore/platform/qt/GamepadsQt.cpp:50
&gt; +class GamepadDeviceQt : public QObject, public GamepadDeviceLinux {

Ditto. (inheritance from the mentioned class)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685280</commentid>
    <comment_count>10</comment_count>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-08-02 06:09:04 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 155823 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=155823&amp;action=review
&gt; 
&gt; Cool! And there is a lot of &quot;raw&quot; udev code around, huh?! :)
&gt; 
&gt; &gt; Source/WebCore/platform/qt/GamepadsQt.cpp:33
&gt; &gt; +#include &quot;GamepadDeviceLinux.h&quot;
&gt; 
&gt; Does it make sense to include a Linux specific header for all QtWebKit supported platorms? I got that GamepadDevice is only available for GNU/Linux, but shouldn&apos;t we then add this only for this specific platform? Or am I missing something here?
&gt; 
&gt; &gt; Source/WebCore/platform/qt/GamepadsQt.cpp:50
&gt; &gt; +class GamepadDeviceQt : public QObject, public GamepadDeviceLinux {
&gt; 
&gt; Ditto. (inheritance from the mentioned class)

Until now the working (as in &quot;with real gamepads&quot;) implementations (first Gtk and then Qt) were done only for linux. Since the Gamepad API is still in development, and behind a flag it is acceptable to go this way for the time being, to have something to test and work on, and later on we can try in platforms other than linux.

On the other hand, I would like to see how the compilation goes with the --gamepad in a windows machine, i.e. if the flag is properly ignored. Any volunteers? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685324</commentid>
    <comment_count>11</comment_count>
      <attachid>155823</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-08-02 06:56:30 -0700</bug_when>
    <thetext>Comment on attachment 155823
Patch

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

&gt; Source/WebCore/Target.pri:3100
&gt; +contains(DEFINES, ENABLE_GAMEPAD=1) {

Make this conditional on linux based paltforms. qmake handle that easily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685386</commentid>
    <comment_count>12</comment_count>
      <attachid>156083</attachid>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-08-02 07:49:43 -0700</bug_when>
    <thetext>Created attachment 156083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685387</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-02 07:52:06 -0700</bug_when>
    <thetext>Attachment 156083 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1
Source/WebCore/platform/qt/GamepadsQt.cpp:44:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/qt/GamepadsQt.cpp:135:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685401</commentid>
    <comment_count>14</comment_count>
      <attachid>156086</attachid>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-08-02 08:10:40 -0700</bug_when>
    <thetext>Created attachment 156086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686711</commentid>
    <comment_count>15</comment_count>
      <attachid>156371</attachid>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-08-03 07:21:18 -0700</bug_when>
    <thetext>Created attachment 156371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686721</commentid>
    <comment_count>16</comment_count>
      <attachid>156376</attachid>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-08-03 07:28:58 -0700</bug_when>
    <thetext>Created attachment 156376
HTML to test the patch.

This is a nice test/demo for the gamepad API.
Just saying. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686748</commentid>
    <comment_count>17</comment_count>
      <attachid>156371</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-08-03 07:54:07 -0700</bug_when>
    <thetext>Comment on attachment 156371
Patch

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

It&apos;s unclear from the filenames and some of the other naming choices that this is linux specific.

&gt; Source/WebCore/platform/qt/GamepadsQt.cpp:31
&gt; +// We do not use ENABLE or USE because moc does not expand these macros.
&gt; +#if defined(ENABLE_GAMEPAD)

So, if we pass ENABLE_GAMEPAD=0 this would still be compiled in?
I prefer something like #if (ENABLE(GAMEPAD) || (MOC &amp;&amp; ...))  or something like that.

&gt; Source/WebCore/platform/qt/GamepadsQt.cpp:50
&gt; +class GamepadDeviceQt : public QObject, public GamepadDeviceLinux {

Maybe GamepadDeviceLinuxQt?

&gt; Source/WebCore/platform/qt/GamepadsQt.cpp:80
&gt; +    delete m_notifier;

QSocketNotifier is a QObject, why not just make it a child of GamepadDeviceQt?

&gt; Source/WebCore/platform/qt/GamepadsQt.cpp:201
&gt; +        if (m_slots[i].get() &amp;&amp; m_slots[i]-&gt;connected()) {

you don&apos;t need .get()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687457</commentid>
    <comment_count>18</comment_count>
      <attachid>156371</attachid>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-08-04 10:11:02 -0700</bug_when>
    <thetext>Comment on attachment 156371
Patch

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

&gt;&gt; Source/WebCore/platform/qt/GamepadsQt.cpp:31
&gt;&gt; +#if defined(ENABLE_GAMEPAD)
&gt; 
&gt; So, if we pass ENABLE_GAMEPAD=0 this would still be compiled in?
&gt; I prefer something like #if (ENABLE(GAMEPAD) || (MOC &amp;&amp; ...))  or something like that.

It would, except that with ENABLE_GAMEPAD=0 the file will not even be included in the build by qmake.
Considering this the define should not even be there, but it was kinda informative so I made as the others do for features as this.

Your suggestion looks good, but moc can&apos;t handle &quot;ENABLE()&quot; in any way.
I will remove this #if completely, since the conditional exclusion of this file is already done in the &quot;*.pri&quot; files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687458</commentid>
    <comment_count>19</comment_count>
      <attachid>156533</attachid>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-08-04 10:14:46 -0700</bug_when>
    <thetext>Created attachment 156533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689161</commentid>
    <comment_count>20</comment_count>
      <attachid>156533</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 08:30:40 -0700</bug_when>
    <thetext>Comment on attachment 156533
Patch

Rejecting attachment 156533 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
D at 169.
Hunk #2 succeeded at 216 with fuzz 2 (offset -29 lines).
1 out of 2 hunks FAILED -- saving rejects to file Tools/qmake/mkspecs/features/features.prf.rej
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/platform/qt/TestExpectations
Hunk #1 succeeded at 117 (offset -1 lines).

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Alexis Men...&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/13446744</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689174</commentid>
    <comment_count>21</comment_count>
      <attachid>156951</attachid>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-08-07 08:49:36 -0700</bug_when>
    <thetext>Created attachment 156951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689256</commentid>
    <comment_count>22</comment_count>
      <attachid>156951</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 12:04:15 -0700</bug_when>
    <thetext>Comment on attachment 156951
Patch

Clearing flags on attachment: 156951

Committed r124904: &lt;http://trac.webkit.org/changeset/124904&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689257</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 12:04:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690212</commentid>
    <comment_count>24</comment_count>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2012-08-08 05:47:06 -0700</bug_when>
    <thetext>I&apos;m getting this when I build:
&quot;Source/WebCore/platform/qt/GamepadsQt.cpp:83:62: error: &apos;read&apos; was not declared in this scope&quot;, but I&apos;m not sure of how to fix though. I didn&apos;t find this read being defined anywhere, so this kind of makes sense. Can you double check what is missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690250</commentid>
    <comment_count>25</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-08-08 06:18:51 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; I&apos;m getting this when I build:
&gt; &quot;Source/WebCore/platform/qt/GamepadsQt.cpp:83:62: error: &apos;read&apos; was not declared in this scope&quot;, but I&apos;m not sure of how to fix though. I didn&apos;t find this read being defined anywhere, so this kind of makes sense. Can you double check what is missing?

Build fix landed : Committed r125027: &lt;http://trac.webkit.org/changeset/125027&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150988</attachid>
            <date>2012-07-05 14:59:07 -0700</date>
            <delta_ts>2012-08-01 09:09:48 -0700</delta_ts>
            <desc>[Qt] Add support for the Gamepad API</desc>
            <filename>bug-90637-20120705185905.patch</filename>
            <type>text/plain</type>
            <size>10837</size>
            <attacher name="Marcelo Lira">marcelo.lira</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxOTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKaW5k
ZXggYzZkYzgwZGMwNjRjZmVhZTc4ZDM3ZWY0MWZhN2ZlMWM4ZTVlNjJiNi4uODE2YWI4NWJiMmNj
YzYzZWRhZDgzNWQ2NGVmNTk0NjBiZjdmMjFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnBy
aQpAQCAtNjE0LDYgKzYxNCwxMyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsK
ICAgICAkJFBXRC9zdmcvU1ZHWm9vbUV2ZW50LmlkbAogfQogCitjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfR0FNRVBBRD0xKSB7CisgIElETF9CSU5ESU5HUyArPSBcCisgICAgJCRQV0QvTW9kdWxl
cy9nYW1lcGFkL0dhbWVwYWQuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBh
ZExpc3QuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5p
ZGwKK30KKwogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPX1RSQUNLPTEpIHsKICAgSURM
X0JJTkRJTkdTICs9IFwKICAgICAkJFBXRC9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKaW5kZXggNTc3MDhlZGM0ODIwMGNkY2JhNDQ4ODhmMmRiZTg4ZDRjNjMzNDk3NS4uMzQ5
NjZiODNmMjI2NTI0Y2JmZTY5M2UwZjYyN2Q0MjhjN2NlNGNlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0z
MzAzLDYgKzMzMDMsMjIgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1FVT1RBPTEpIHsKICAg
ICAgICAgTW9kdWxlcy9xdW90YS9TdG9yYWdlSW5mby5jcHAKIH0KIAorY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX0dBTUVQQUQ9MSkgeworICAgIEhFQURFUlMgKz0gXAorICAgICAgICBNb2R1bGVz
L2dhbWVwYWQvR2FtZXBhZC5oXAorICAgICAgICBNb2R1bGVzL2dhbWVwYWQvR2FtZXBhZExpc3Qu
aCBcCisgICAgICAgIE1vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmggXAorICAgICAg
ICBwbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguaCBcCisgICAgICAgIHBsYXRmb3Jt
L0dhbWVwYWRzLmgKKworICAgIFNPVVJDRVMgKz0gXAorICAgICAgICBNb2R1bGVzL2dhbWVwYWQv
R2FtZXBhZC5jcHAgXAorICAgICAgICBNb2R1bGVzL2dhbWVwYWQvR2FtZXBhZExpc3QuY3BwIFwK
KyAgICAgICAgTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwIFwKKyAgICAgICAg
cGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcCBcCisgICAgICAgIHBsYXRmb3Jt
L3F0L0dhbWVwYWRzUXQuY3BwCit9CisKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9WSURFTz0x
KSB7CiAgICAgU09VUkNFUyArPSBcCiAgICAgICAgIGh0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnByaQppbmRleCBiOWNkZTE3MzA0Yzc4YWM5MTczOWM4ZjRhOWM5Mjk2ZGUyNmI5
YWIzLi5mMGYxNTA4MTMzYTQ3ZmU4MTA0Zjc1NjFiNTYyNDhiZjhmNzNmYzE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnByaQpAQCAtMTgzLDYgKzE4MywxMyBAQCBjb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1FUX01P
QklMSVRZX1NZU1RFTUlORk89MSkgewogICAgICBNT0JJTElUWSAqPSBzeXN0ZW1pbmZvCiB9CiAK
K2NvbnRhaW5zKERFRklORVMsIEVOQUJMRV9HQU1FUEFEPTEpIHsKKyAgICBJTkNMVURFUEFUSCAr
PSBcCisgICAgICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9saW51eCBcCisgICAgICAgICQkU09V
UkNFX0RJUi9Nb2R1bGVzL2dhbWVwYWQKKyAgICBQS0dDT05GSUcgKz0gbGlidWRldgorfQorCiBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU89MSkgewogICAgIGNvbnRhaW5zKERFRklORVMs
IFdURl9VU0VfUVRLSVQ9MSkgewogICAgICAgICBJTkNMVURFUEFUSCArPSAkJFNPVVJDRV9ESVIv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9HYW1lcGFkc1F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0dhbWVwYWRz
UXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQzMjExODBiMzI3NjdjYjE2ZjQ0Y2Y0MzQzNTRiMDBhZGQyYjFm
MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9HYW1lcGFk
c1F0LmNwcApAQCAtMCwwICsxLDIyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJTmRU
IC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKKyAqIENvcHlyaWdodCAoQykgMjAxMiBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVwYWRzLmgiCisKKyNpbmNsdWRlICJH
YW1lcGFkRGV2aWNlTGludXguaCIKKyNpbmNsdWRlICJHYW1lcGFkTGlzdC5oIgorCisjaW5jbHVk
ZSA8UU9iamVjdD4KKyNpbmNsdWRlIDxRU29ja2V0Tm90aWZpZXI+CisKKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworZXh0ZXJu
ICJDIiB7CisjaW5jbHVkZSA8bGlidWRldi5oPgorfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEdhbWVwYWREZXZpY2VRdCA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgR2FtZXBhZERl
dmljZUxpbnV4IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRy
PEdhbWVwYWREZXZpY2VRdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZGV2aWNlRmlsZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgR2FtZXBhZERldmljZVF0KGRldmljZUZpbGUp
KTsKKyAgICB9CisgICAgfkdhbWVwYWREZXZpY2VRdCgpOworCitwcml2YXRlOgorICAgIEdhbWVw
YWREZXZpY2VRdChjb25zdCBTdHJpbmcmKTsKKyAgICBRU29ja2V0Tm90aWZpZXIqIG1fbm90aWZp
ZXI7CisKK3ByaXZhdGUgc2xvdHM6CisgICAgYm9vbCByZWFkQ2FsbGJhY2soKTsKK307CisKK0dh
bWVwYWREZXZpY2VRdDo6R2FtZXBhZERldmljZVF0KGNvbnN0IFN0cmluZyYgZGV2aWNlRmlsZSkK
KyAgICA6IFFPYmplY3QoKQorICAgICwgR2FtZXBhZERldmljZUxpbnV4KGRldmljZUZpbGUpCit7
CisgICAgaWYgKG1fZmlsZURlc2NyaXB0b3IgPT0gLTEpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fbm90aWZpZXIgPSBuZXcgUVNvY2tldE5vdGlmaWVyKG1fZmlsZURlc2NyaXB0b3IsIFFTb2Nr
ZXROb3RpZmllcjo6UmVhZCk7CisgICAgY29ubmVjdChtX25vdGlmaWVyLCBTSUdOQUwoYWN0aXZh
dGVkKGludCkpLCB0aGlzLCBTTE9UKHJlYWRDYWxsYmFjaygpKSk7Cit9CisKK0dhbWVwYWREZXZp
Y2VRdDo6fkdhbWVwYWREZXZpY2VRdCgpCit7CisgICAgZGVsZXRlIG1fbm90aWZpZXI7Cit9CisK
K2Jvb2wgR2FtZXBhZERldmljZVF0OjpyZWFkQ2FsbGJhY2soKQoreworICAgIGpzX2V2ZW50IGV2
ZW50OworICAgIGludCBsZW4gPSByZWFkKG1fZmlsZURlc2NyaXB0b3IsICZldmVudCwgc2l6ZW9m
KGpzX2V2ZW50KSk7CisgICAgaWYgKGxlbiAhPSBzaXplb2YoZXZlbnQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgdXBkYXRlRm9yRXZlbnQoZXZlbnQpOworICAgIHJldHVybiB0cnVlOwor
fQorCitjbGFzcyBHYW1lcGFkc1F0IDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCitw
dWJsaWM6CisgICAgR2FtZXBhZHNRdCh1bnNpZ25lZCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRGV2
aWNlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgdW5yZWdpc3RlckRldmljZShjb25zdCBTdHJp
bmcmKTsKKworICAgIHZvaWQgdXBkYXRlR2FtZXBhZExpc3QoR2FtZXBhZExpc3QqKTsKKworcHJp
dmF0ZSBzbG90czoKKyAgICB2b2lkIG9uR2FtZVBhZENoYW5nZSgpOworCitwcml2YXRlOgorICAg
IH5HYW1lcGFkc1F0KCk7CisgICAgYm9vbCBpc0dhbWVwYWREZXZpY2Uoc3RydWN0IHVkZXZfZGV2
aWNlKik7CisKKyAgICBWZWN0b3I8T3duUHRyPEdhbWVwYWREZXZpY2VRdD4gPiBtX3Nsb3RzOwor
ICAgIEhhc2hNYXA8U3RyaW5nLCBHYW1lcGFkRGV2aWNlUXQqPiBtX2RldmljZU1hcDsKKworICAg
IHN0cnVjdCB1ZGV2KiBtX3VkZXY7CisgICAgc3RydWN0IHVkZXZfbW9uaXRvciogbV9nYW1lcGFk
c01vbml0b3I7CisgICAgUVNvY2tldE5vdGlmaWVyKiBtX2dhbWVwYWRzTm90aWZpZXI7Cit9Owor
CitHYW1lcGFkc1F0OjpHYW1lcGFkc1F0KHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IFFPYmplY3Qo
KQorICAgICwgbV9zbG90cyhsZW5ndGgpCit7CisgICAgbV91ZGV2ID0gdWRldl9uZXcoKTsKKyAg
ICBtX2dhbWVwYWRzTW9uaXRvciA9IHVkZXZfbW9uaXRvcl9uZXdfZnJvbV9uZXRsaW5rKG1fdWRl
diwgInVkZXYiKTsKKyAgICB1ZGV2X21vbml0b3JfZW5hYmxlX3JlY2VpdmluZyhtX2dhbWVwYWRz
TW9uaXRvcik7CisgICAgdWRldl9tb25pdG9yX2ZpbHRlcl9hZGRfbWF0Y2hfc3Vic3lzdGVtX2Rl
dnR5cGUobV9nYW1lcGFkc01vbml0b3IsICJpbnB1dCIsIDApOworICAgIG1fZ2FtZXBhZHNOb3Rp
ZmllciA9IG5ldyBRU29ja2V0Tm90aWZpZXIodWRldl9tb25pdG9yX2dldF9mZChtX2dhbWVwYWRz
TW9uaXRvciksIFFTb2NrZXROb3RpZmllcjo6UmVhZCwgdGhpcyk7CisgICAgY29ubmVjdChtX2dh
bWVwYWRzTm90aWZpZXIsIFNJR05BTChhY3RpdmF0ZWQoaW50KSksIHRoaXMsIFNMT1Qob25HYW1l
UGFkQ2hhbmdlKCkpKTsKKworICAgIC8vIFRPRE86IGdvIHRocm91Z2ggdGhlIGpveXN0aWNrIGRl
dmljZSBsaXN0LCByZWdpc3RlcmluZyBldmVyeW9uZS4KKyAgICBzdHJ1Y3QgdWRldl9lbnVtZXJh
dGUqIGVudW1lcmF0ZSA9IHVkZXZfZW51bWVyYXRlX25ldyhtX3VkZXYpOworICAgIHVkZXZfZW51
bWVyYXRlX2FkZF9tYXRjaF9zdWJzeXN0ZW0oZW51bWVyYXRlLCAiaW5wdXQiKTsKKyAgICB1ZGV2
X2VudW1lcmF0ZV9hZGRfbWF0Y2hfcHJvcGVydHkoZW51bWVyYXRlLCAiSURfSU5QVVRfSk9ZU1RJ
Q0siLCAiMSIpOworICAgIHVkZXZfZW51bWVyYXRlX3NjYW5fZGV2aWNlcyhlbnVtZXJhdGUpOwor
ICAgIHN0cnVjdCB1ZGV2X2xpc3RfZW50cnkqIGN1cjsKKyAgICBzdHJ1Y3QgdWRldl9saXN0X2Vu
dHJ5KiBkZXZzID0gdWRldl9lbnVtZXJhdGVfZ2V0X2xpc3RfZW50cnkoZW51bWVyYXRlKTsKKyAg
ICB1ZGV2X2xpc3RfZW50cnlfZm9yZWFjaChjdXIsIGRldnMpIHsKKyAgICAgICAgY29uc3QgY2hh
ciogZGV2bmFtZSA9IHVkZXZfbGlzdF9lbnRyeV9nZXRfbmFtZShjdXIpOworICAgICAgICBzdHJ1
Y3QgdWRldl9kZXZpY2UqIGRldmljZSA9IHVkZXZfZGV2aWNlX25ld19mcm9tX3N5c3BhdGgobV91
ZGV2LCBkZXZuYW1lKTsKKyAgICAgICAgaWYgKGlzR2FtZXBhZERldmljZShkZXZpY2UpKQorICAg
ICAgICAgICAgcmVnaXN0ZXJEZXZpY2UoU3RyaW5nOjpmcm9tVVRGOCh1ZGV2X2RldmljZV9nZXRf
ZGV2bm9kZShkZXZpY2UpKSk7CisgICAgICAgIHVkZXZfZGV2aWNlX3VucmVmKGRldmljZSk7Cisg
ICAgfQorICAgIHVkZXZfZW51bWVyYXRlX3VucmVmKGVudW1lcmF0ZSk7Cit9CisKK0dhbWVwYWRz
UXQ6On5HYW1lcGFkc1F0KCkKK3sKK30KKworYm9vbCBHYW1lcGFkc1F0Ojppc0dhbWVwYWREZXZp
Y2Uoc3RydWN0IHVkZXZfZGV2aWNlKiBkZXZpY2UpCit7CisgICAgY29uc3QgY2hhciogZGV2aWNl
RmlsZSA9IHVkZXZfZGV2aWNlX2dldF9kZXZub2RlKGRldmljZSk7CisgICAgY29uc3QgY2hhciog
c3lzZnNQYXRoID0gdWRldl9kZXZpY2VfZ2V0X3N5c3BhdGgoZGV2aWNlKTsKKyAgICBpZiAoIWRl
dmljZUZpbGUgfHwgIXN5c2ZzUGF0aCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
dWRldl9kZXZpY2VfZ2V0X3Byb3BlcnR5X3ZhbHVlKGRldmljZSwgIklEX0lOUFVUIikgfHwgIXVk
ZXZfZGV2aWNlX2dldF9wcm9wZXJ0eV92YWx1ZShkZXZpY2UsICJJRF9JTlBVVF9KT1lTVElDSyIp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIFFCeXRlQXJyYXkoZGV2aWNlRmls
ZSkuc3RhcnRzV2l0aCgiL2Rldi9pbnB1dC9qcyIpOworfQorCit2b2lkIEdhbWVwYWRzUXQ6Om9u
R2FtZVBhZENoYW5nZSgpCit7CisgICAgc3RydWN0IHVkZXZfZGV2aWNlKiBkZXZpY2UgPSB1ZGV2
X21vbml0b3JfcmVjZWl2ZV9kZXZpY2UobV9nYW1lcGFkc01vbml0b3IpOworICAgIGlmICghaXNH
YW1lcGFkRGV2aWNlKGRldmljZSkpCisgICAgICAgIHJldHVybjsKKyAgICBRQnl0ZUFycmF5IGFj
dGlvbih1ZGV2X2RldmljZV9nZXRfYWN0aW9uKGRldmljZSkpOworICAgIGlmIChhY3Rpb24gPT0g
ImFkZCIpCisgICAgICAgIHJlZ2lzdGVyRGV2aWNlKHVkZXZfZGV2aWNlX2dldF9kZXZub2RlKGRl
dmljZSkpOworICAgIGVsc2UgaWYgKGFjdGlvbiA9PSAicmVtb3ZlIikKKyAgICAgICAgdW5yZWdp
c3RlckRldmljZSh1ZGV2X2RldmljZV9nZXRfZGV2bm9kZShkZXZpY2UpKTsKK30KKwordm9pZCBH
YW1lcGFkc1F0OjpyZWdpc3RlckRldmljZShjb25zdCBTdHJpbmcmIGRldmljZUZpbGUpCit7Cisg
ICAgQVNTRVJUKCFtX2RldmljZU1hcC5jb250YWlucyhkZXZpY2VGaWxlKSk7CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBtX3Nsb3RzLnNpemUoKTsgaW5kZXgrKykgewor
ICAgICAgICBpZiAoIW1fc2xvdHNbaW5kZXhdKSB7CisgICAgICAgICAgICBtX3Nsb3RzW2luZGV4
XSA9IEdhbWVwYWREZXZpY2VRdDo6Y3JlYXRlKGRldmljZUZpbGUpOworICAgICAgICAgICAgbV9k
ZXZpY2VNYXAuYWRkKGRldmljZUZpbGUsIG1fc2xvdHNbaW5kZXhdLmdldCgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEdhbWVwYWRzUXQ6OnVucmVn
aXN0ZXJEZXZpY2UoY29uc3QgU3RyaW5nJiBkZXZpY2VGaWxlKQoreworICAgIEFTU0VSVChtX2Rl
dmljZU1hcC5jb250YWlucyhkZXZpY2VGaWxlKSk7CisKKyAgICBHYW1lcGFkRGV2aWNlUXQqIGdh
bWVwYWREZXZpY2UgPSBtX2RldmljZU1hcC50YWtlKGRldmljZUZpbGUpOworICAgIHVuc2lnbmVk
IGluZGV4ID0gbV9zbG90cy5maW5kKGdhbWVwYWREZXZpY2UpOworCisgICAgbV9zbG90c1tpbmRl
eF0uY2xlYXIoKTsKK30KKwordm9pZCBHYW1lcGFkc1F0Ojp1cGRhdGVHYW1lcGFkTGlzdChHYW1l
cGFkTGlzdCogaW50bykKK3sKKyAgICBBU1NFUlQobV9zbG90cy5zaXplKCkgPT0gaW50by0+bGVu
Z3RoKCkpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2xvdHMuc2l6ZSgpOyBp
KyspIHsKKyAgICAgICAgaWYgKG1fc2xvdHNbaV0uZ2V0KCkgJiYgbV9zbG90c1tpXS0+Y29ubmVj
dGVkKCkpIHsKKyAgICAgICAgICAgIEdhbWVwYWREZXZpY2VRdCogZ2FtZXBhZERldmljZSA9IG1f
c2xvdHNbaV0uZ2V0KCk7CisgICAgICAgICAgICBSZWZQdHI8R2FtZXBhZD4gZ2FtZXBhZCA9IGlu
dG8tPml0ZW0oaSk7CisgICAgICAgICAgICBpZiAoIWdhbWVwYWQpCisgICAgICAgICAgICAgICAg
Z2FtZXBhZCA9IEdhbWVwYWQ6OmNyZWF0ZSgpOworCisgICAgICAgICAgICBnYW1lcGFkLT5pbmRl
eChpKTsKKyAgICAgICAgICAgIGdhbWVwYWQtPmlkKGdhbWVwYWREZXZpY2UtPmlkKCkpOworICAg
ICAgICAgICAgZ2FtZXBhZC0+dGltZXN0YW1wKGdhbWVwYWREZXZpY2UtPnRpbWVzdGFtcCgpKTsK
KyAgICAgICAgICAgIGdhbWVwYWQtPmF4ZXMoZ2FtZXBhZERldmljZS0+YXhlc0NvdW50KCksIGdh
bWVwYWREZXZpY2UtPmF4ZXNEYXRhKCkpOworICAgICAgICAgICAgZ2FtZXBhZC0+YnV0dG9ucyhn
YW1lcGFkRGV2aWNlLT5idXR0b25zQ291bnQoKSwgZ2FtZXBhZERldmljZS0+YnV0dG9uc0RhdGEo
KSk7CisKKyAgICAgICAgICAgIGludG8tPnNldChpLCBnYW1lcGFkKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBpbnRvLT5zZXQoaSwgMCk7CisgICAgfQorfQorCit2b2lkIHNhbXBsZUdh
bWVwYWRzKEdhbWVwYWRMaXN0KiBpbnRvKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoR2Ft
ZXBhZHNRdCwgZ2FtZXBhZHNRdCwgKGludG8tPmxlbmd0aCgpKSk7CisgICAgZ2FtZXBhZHNRdC51
cGRhdGVHYW1lcGFkTGlzdChpbnRvKTsKK30KKworI2luY2x1ZGUgIkdhbWVwYWRzUXQubW9jIgor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxp
c3QucG0KaW5kZXggNDA3ZmJiOTZjYzNkYTU3N2M5ZDBjZmJjYjJkMDU2NDFiMGQzMDkwNy4uZWI3
N2QwMDA5Yzg3NTgwMDAwM2U1ODE2OGU5MDAyNzU1ZmI1Nzg4YiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjExLDcgKzIxMSw3IEBAIG15IEBmZWF0dXJlcyA9
ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0ZVTExTQ1JFRU5fQVBJIiwgZGVmYXVsdCA9PiAo
aXNBcHBsZU1hY1dlYktpdCgpIHx8IGlzRWZsKCkgfHwgaXNHdGsoKSB8fCBpc0JsYWNrQmVycnko
KSB8fCBpc1F0KCkpLCB2YWx1ZSA9PiBcJGZ1bGxzY3JlZW5BUElTdXBwb3J0IH0sCiAKICAgICB7
IG9wdGlvbiA9PiAiZ2FtZXBhZCIsIGRlc2MgPT4gIlRvZ2dsZSBHYW1lcGFkIHN1cHBvcnQiLAot
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfR0FNRVBBRCIsIGRlZmF1bHQgPT4gKGlzRWZsKCkgfHwg
aXNHdGsoKSksIHZhbHVlID0+IFwkZ2FtZXBhZFN1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAi
RU5BQkxFX0dBTUVQQUQiLCBkZWZhdWx0ID0+IChpc0VmbCgpIHx8IGlzR3RrKCkgfHwgaXNRdCgp
KSwgdmFsdWUgPT4gXCRnYW1lcGFkU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gImdlb2xv
Y2F0aW9uIiwgZGVzYyA9PiAiVG9nZ2xlIEdlb2xvY2F0aW9uIHN1cHBvcnQiLAogICAgICAgZGVm
aW5lID0+ICJFTkFCTEVfR0VPTE9DQVRJT04iLCBkZWZhdWx0ID0+IChpc0FwcGxlV2ViS2l0KCkg
fHwgaXNHdGsoKSB8fCBpc0JsYWNrQmVycnkoKSksIHZhbHVlID0+IFwkZ2VvbG9jYXRpb25TdXBw
b3J0IH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>150991</attachid>
            <date>2012-07-05 15:01:56 -0700</date>
            <delta_ts>2012-07-05 15:01:56 -0700</delta_ts>
            <desc>WebView to test the patch.</desc>
            <filename>joystick.qml</filename>
            <type>text/x-qml</type>
            <size>108</size>
            <attacher name="Marcelo Lira">marcelo.lira</attacher>
            
              <data encoding="base64">aW1wb3J0IFF0UXVpY2sgMi4wCmltcG9ydCBRdFdlYktpdCAzLjAKCldlYlZpZXcgewogICAgd2lk
dGg6IDg1NAogICAgaGVpZ2h0OiA0ODAKICAgIHVybDogJ2pveXN0aWNrLmh0bWwnCn0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>150992</attachid>
            <date>2012-07-05 15:03:01 -0700</date>
            <delta_ts>2012-08-03 07:28:58 -0700</delta_ts>
            <desc>HTML to test the patch.</desc>
            <filename>joystick.html</filename>
            <type>text/html</type>
            <size>889</size>
            <attacher name="Marcelo Lira">marcelo.lira</attacher>
            
              <data encoding="base64">77u/PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+CiAgICA8dGl0bGU+R2FtZXBhZCBBUEk8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5
PgogICAgPGgxPkdhbWVwYWQgQVBJPC9oMT4KICAKICAgIDxkaXYgaWQ9ImdhbWVwYWRzIj48L2Rp
dj4KICAgIDxzY3JpcHQ+CiAgICBmdW5jdGlvbiBwb2xsR2FtZXBhZCgpIHsKICAgICAgICB3aW5k
b3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKHBvbGxHYW1lcGFkKTsKICAgICAgICB2YXIg
Z2FtZXBhZCA9IG5hdmlnYXRvci53ZWJraXRHYW1lcGFkc1swXTsKICAgICAgICB2YXIgaW5mbyA9
ICcnOwogICAgICAgIGlmIChnYW1lcGFkKSB7CiAgICAgICAgICAgIGluZm8gKz0gJzxwPmlkOiAn
ICsgZ2FtZXBhZC5pZCArICc8YnIvPic7CiAgICAgICAgICAgIGluZm8gKz0gJ2luZGV4OiAnICsg
Z2FtZXBhZC5pbmRleCArICc8YnIvPic7CiAgICAgICAgICAgIGluZm8gKz0gJ3RpbWVzdGFtcDog
JyArIGdhbWVwYWQudGltZXN0YW1wICsgJzxici8+JzsKICAgICAgICAgICAgaW5mbyArPSAnYXhl
czogJyArIGdhbWVwYWQuYXhlcyArICc8YnIvPic7CiAgICAgICAgICAgIGluZm8gKz0gJ2J1dHRv
bnM6ICcgKyBnYW1lcGFkLmJ1dHRvbnMgKyAnPC9wPic7CiAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgaW5mbyArPSAnPHA+Q29ubmVjdCBhIGdhbWVwYWQsIHByZXNzIGEgYnV0dG9uLCBtb3Zl
IHRoZSBqb3lzdGljay48L3A+JzsKICAgICAgICB9CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2dhbWVwYWRzJykuaW5uZXJIVE1MID0gaW5mbzsKICAgIH0KICAgIHBvbGxHYW1lcGFk
KCk7CiAgICA8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155818</attachid>
            <date>2012-08-01 09:09:55 -0700</date>
            <delta_ts>2012-08-01 09:42:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90637-20120801130936.patch</filename>
            <type>text/plain</type>
            <size>14549</size>
            <attacher name="Marcelo Lira">marcelo.lira</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhkMGE5YzBkMzEzOThm
MWExMWM3ZTI2ZjAzYjI1ZTY2OTAxNjllZS4uOGNjZDM3ZDZhMjUwYmQ3ZWY3ZTlhNzhlOGNkYTFi
N2Y0ZTJlMTAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA4LTAxICBNYXJj
ZWxvIExpcmEgIDxtYXJjZWxvLmxpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIEFk
ZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciBHYW1lcGFkIEFQSSBvbiB0aGUg
UXQgcG9ydC4KKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBjbGFzcyByZWxp
ZXMgb24gdGhlIExpbnV4CisgICAgICAgIGtlcm5lbCBqb3lzdGljayBBUEkuCisKKyAgICAgICAg
R2FtZXBhZCBkZXZpY2VzIGFyZSByZWNvZ25pemVkIHRocm91Z2ggdGhlIEdhbWVwYWRzUXQKKyAg
ICAgICAgY2xhc3MsIHdoaWNoIHVzZXMgdWRldiBsaWJyYXJ5IHRvIHdhdGNoIGZvciBjb25uZWN0
aW9uCisgICAgICAgIGFuZCBkaXNjb25uZWN0aW9uIG9mIGdhbWVwYWQgZGV2aWNlcy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLnByaToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIFdlYkNvcmUucHJpOgorCiAyMDEyLTA4LTAxICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xv
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiB0ZXN0IG5hdGl2ZSBtZW1v
cnkgaW5zdHJ1bWVudGF0aW9uIGNvZGUgd2l0aCBoZWxwIG9mIHVuaXR0ZXN0cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMucHJpCmluZGV4IDkzZjNkZGE2YTMwNjdiOTcxZjk3ZGRkMjc4ZDQ1NzkwNjNk
ZTlmYTIuLjA3MjZjNmJkMmVjZDQzNGM5N2Q4YzUwZDAwMjg2NTAwZTUyZTk4MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5wcmkKQEAgLTYxMyw2ICs2MTMsMTMgQEAgY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX1NWRz0xKSB7CiAgICAgJCRQV0Qvc3ZnL1NWR1pvb21FdmVudC5pZGwKIH0KIAor
Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX0dBTUVQQUQ9MSkgeworICBJRExfQklORElOR1MgKz0g
XAorICAgICQkUFdEL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmlkbCBcCisgICAgJCRQV0QvTW9k
dWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9nYW1lcGFk
L05hdmlnYXRvckdhbWVwYWQuaWRsCit9CisKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9WSURF
T19UUkFDSz0xKSB7CiAgIElETF9CSU5ESU5HUyArPSBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9U
ZXh0VHJhY2suaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDQ1YWVlY2ZhM2IyMWU5MTkxZjRhYjFhNDg5
ZGI1NDJiYWI0NTVhNTAuLmYwNWMwMzQ2MDQ0YWZjMjcxMDI0YjQxZWRiMGNjNDJmYjJmMGY3MjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQpAQCAtMzA5Nyw2ICszMDk3LDIyIEBAIGNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9RVU9UQT0xKSB7CiAgICAgICAgIE1vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uY3BwCiB9
CiAKK2NvbnRhaW5zKERFRklORVMsIEVOQUJMRV9HQU1FUEFEPTEpIHsKKyAgICBIRUFERVJTICs9
IFwKKyAgICAgICAgTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaFwKKyAgICAgICAgTW9kdWxlcy9n
YW1lcGFkL0dhbWVwYWRMaXN0LmggXAorICAgICAgICBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9y
R2FtZXBhZC5oIFwKKyAgICAgICAgcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4Lmgg
XAorICAgICAgICBwbGF0Zm9ybS9HYW1lcGFkcy5oCisKKyAgICBTT1VSQ0VTICs9IFwKKyAgICAg
ICAgTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuY3BwIFwKKyAgICAgICAgTW9kdWxlcy9nYW1lcGFk
L0dhbWVwYWRMaXN0LmNwcCBcCisgICAgICAgIE1vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1l
cGFkLmNwcCBcCisgICAgICAgIHBsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAg
XAorICAgICAgICBwbGF0Zm9ybS9xdC9HYW1lcGFkc1F0LmNwcAorfQorCiBjb250YWlucyhERUZJ
TkVTLCBFTkFCTEVfVklERU89MSkgewogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICBodG1sL0hU
TUxBdWRpb0VsZW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKaW5kZXggNTEzZDI2MWE0YTU4NjRhZjky
NTU0MjIyYWJkMGIxYTZjZGE2ODU3ZS4uYWQ3MTM5OGJmN2ZlMmZhMjcyOWFlZDk5MGUzZjRiOWJk
MmYwMDUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKQEAgLTE2OSw2ICsxNjksMTMgQEAgY29udGFpbnMoREVG
SU5FUywgV1RGX1VTRV9RVF9NT0JJTElUWV9TWVNURU1JTkZPPTEpIHsKICAgICAgTU9CSUxJVFkg
Kj0gc3lzdGVtaW5mbwogfQogCitjb250YWlucyhERUZJTkVTLCBFTkFCTEVfR0FNRVBBRD0xKSB7
CisgICAgSU5DTFVERVBBVEggKz0gXAorICAgICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vbGlu
dXggXAorICAgICAgICAkJFNPVVJDRV9ESVIvTW9kdWxlcy9nYW1lcGFkCisgICAgUEtHQ09ORklH
ICs9IGxpYnVkZXYKK30KKwogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPPTEpIHsKICAg
ICBjb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1FUS0lUPTEpIHsKICAgICAgICAgSU5DTFVERVBB
VEggKz0gJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2dyYXBoaWNzL21hYwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvR2FtZXBhZHNRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9HYW1lcGFkc1F0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDdjMzIzNTVlYTUzZGI0OWNj
ZjBiZWUyNjU3MmIyM2IxMDY2Y2IwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvR2FtZXBhZHNRdC5jcHAKQEAgLTAsMCArMSwyMjkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHYW1lcGFk
cy5oIgorCisvLyBXZSBkbyBub3QgdXNlIEVOQUJMRSBvciBVU0UgYmVjYXVzZSBtb2MgZG9lcyBu
b3QgZXhwYW5kIHRoZXNlIG1hY3Jvcy4KKyNpZiBkZWZpbmVkKEVOQUJMRV9HQU1FUEFEKQorCisj
aW5jbHVkZSAiR2FtZXBhZERldmljZUxpbnV4LmgiCisjaW5jbHVkZSAiR2FtZXBhZExpc3QuaCIK
KworI2luY2x1ZGUgPFFPYmplY3Q+CisjaW5jbHVkZSA8UVNvY2tldE5vdGlmaWVyPgorCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CisKK2V4dGVybiAiQyIgeworI2luY2x1ZGUgPGxpYnVkZXYuaD4KK30KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBHYW1lcGFkRGV2aWNlUXQgOiBwdWJsaWMgUU9iamVjdCwgcHVibGlj
IEdhbWVwYWREZXZpY2VMaW51eCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxHYW1lcGFkRGV2aWNlUXQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGRldmljZUZp
bGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdhbWVwYWREZXZpY2VRdChk
ZXZpY2VGaWxlKSk7CisgICAgfQorICAgIH5HYW1lcGFkRGV2aWNlUXQoKTsKKworcHJpdmF0ZToK
KyAgICBHYW1lcGFkRGV2aWNlUXQoY29uc3QgU3RyaW5nJik7CisgICAgUVNvY2tldE5vdGlmaWVy
KiBtX25vdGlmaWVyOworCitwcml2YXRlIHNsb3RzOgorICAgIGJvb2wgcmVhZENhbGxiYWNrKCk7
Cit9OworCitHYW1lcGFkRGV2aWNlUXQ6OkdhbWVwYWREZXZpY2VRdChjb25zdCBTdHJpbmcmIGRl
dmljZUZpbGUpCisgICAgOiBRT2JqZWN0KCkKKyAgICAsIEdhbWVwYWREZXZpY2VMaW51eChkZXZp
Y2VGaWxlKQoreworICAgIGlmIChtX2ZpbGVEZXNjcmlwdG9yID09IC0xKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX25vdGlmaWVyID0gbmV3IFFTb2NrZXROb3RpZmllcihtX2ZpbGVEZXNjcmlw
dG9yLCBRU29ja2V0Tm90aWZpZXI6OlJlYWQpOworICAgIGNvbm5lY3QobV9ub3RpZmllciwgU0lH
TkFMKGFjdGl2YXRlZChpbnQpKSwgdGhpcywgU0xPVChyZWFkQ2FsbGJhY2soKSkpOworfQorCitH
YW1lcGFkRGV2aWNlUXQ6On5HYW1lcGFkRGV2aWNlUXQoKQoreworICAgIGRlbGV0ZSBtX25vdGlm
aWVyOworfQorCitib29sIEdhbWVwYWREZXZpY2VRdDo6cmVhZENhbGxiYWNrKCkKK3sKKyAgICBq
c19ldmVudCBldmVudDsKKyAgICBpbnQgbGVuID0gcmVhZChtX2ZpbGVEZXNjcmlwdG9yLCAmZXZl
bnQsIHNpemVvZihqc19ldmVudCkpOworICAgIGlmIChsZW4gIT0gc2l6ZW9mKGV2ZW50KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVwZGF0ZUZvckV2ZW50KGV2ZW50KTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworY2xhc3MgR2FtZXBhZHNRdCA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBR
X09CSkVDVAorcHVibGljOgorICAgIEdhbWVwYWRzUXQodW5zaWduZWQpOworCisgICAgdm9pZCBy
ZWdpc3RlckRldmljZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJEZXZpY2Uo
Y29uc3QgU3RyaW5nJik7CisKKyAgICB2b2lkIHVwZGF0ZUdhbWVwYWRMaXN0KEdhbWVwYWRMaXN0
Kik7CisKK3ByaXZhdGUgc2xvdHM6CisgICAgdm9pZCBvbkdhbWVQYWRDaGFuZ2UoKTsKKworcHJp
dmF0ZToKKyAgICB+R2FtZXBhZHNRdCgpOworICAgIGJvb2wgaXNHYW1lcGFkRGV2aWNlKHN0cnVj
dCB1ZGV2X2RldmljZSopOworCisgICAgVmVjdG9yPE93blB0cjxHYW1lcGFkRGV2aWNlUXQ+ID4g
bV9zbG90czsKKyAgICBIYXNoTWFwPFN0cmluZywgR2FtZXBhZERldmljZVF0Kj4gbV9kZXZpY2VN
YXA7CisKKyAgICBzdHJ1Y3QgdWRldiogbV91ZGV2OworICAgIHN0cnVjdCB1ZGV2X21vbml0b3Iq
IG1fZ2FtZXBhZHNNb25pdG9yOworICAgIFFTb2NrZXROb3RpZmllciogbV9nYW1lcGFkc05vdGlm
aWVyOworfTsKKworR2FtZXBhZHNRdDo6R2FtZXBhZHNRdCh1bnNpZ25lZCBsZW5ndGgpCisgICAg
OiBRT2JqZWN0KCkKKyAgICAsIG1fc2xvdHMobGVuZ3RoKQoreworICAgIG1fdWRldiA9IHVkZXZf
bmV3KCk7CisgICAgbV9nYW1lcGFkc01vbml0b3IgPSB1ZGV2X21vbml0b3JfbmV3X2Zyb21fbmV0
bGluayhtX3VkZXYsICJ1ZGV2Iik7CisgICAgdWRldl9tb25pdG9yX2VuYWJsZV9yZWNlaXZpbmco
bV9nYW1lcGFkc01vbml0b3IpOworICAgIHVkZXZfbW9uaXRvcl9maWx0ZXJfYWRkX21hdGNoX3N1
YnN5c3RlbV9kZXZ0eXBlKG1fZ2FtZXBhZHNNb25pdG9yLCAiaW5wdXQiLCAwKTsKKyAgICBtX2dh
bWVwYWRzTm90aWZpZXIgPSBuZXcgUVNvY2tldE5vdGlmaWVyKHVkZXZfbW9uaXRvcl9nZXRfZmQo
bV9nYW1lcGFkc01vbml0b3IpLCBRU29ja2V0Tm90aWZpZXI6OlJlYWQsIHRoaXMpOworICAgIGNv
bm5lY3QobV9nYW1lcGFkc05vdGlmaWVyLCBTSUdOQUwoYWN0aXZhdGVkKGludCkpLCB0aGlzLCBT
TE9UKG9uR2FtZVBhZENoYW5nZSgpKSk7CisKKyAgICAvLyBUT0RPOiBnbyB0aHJvdWdoIHRoZSBq
b3lzdGljayBkZXZpY2UgbGlzdCwgcmVnaXN0ZXJpbmcgZXZlcnlvbmUuCisgICAgc3RydWN0IHVk
ZXZfZW51bWVyYXRlKiBlbnVtZXJhdGUgPSB1ZGV2X2VudW1lcmF0ZV9uZXcobV91ZGV2KTsKKyAg
ICB1ZGV2X2VudW1lcmF0ZV9hZGRfbWF0Y2hfc3Vic3lzdGVtKGVudW1lcmF0ZSwgImlucHV0Iik7
CisgICAgdWRldl9lbnVtZXJhdGVfYWRkX21hdGNoX3Byb3BlcnR5KGVudW1lcmF0ZSwgIklEX0lO
UFVUX0pPWVNUSUNLIiwgIjEiKTsKKyAgICB1ZGV2X2VudW1lcmF0ZV9zY2FuX2RldmljZXMoZW51
bWVyYXRlKTsKKyAgICBzdHJ1Y3QgdWRldl9saXN0X2VudHJ5KiBjdXI7CisgICAgc3RydWN0IHVk
ZXZfbGlzdF9lbnRyeSogZGV2cyA9IHVkZXZfZW51bWVyYXRlX2dldF9saXN0X2VudHJ5KGVudW1l
cmF0ZSk7CisgICAgdWRldl9saXN0X2VudHJ5X2ZvcmVhY2goY3VyLCBkZXZzKSB7CisgICAgICAg
IGNvbnN0IGNoYXIqIGRldm5hbWUgPSB1ZGV2X2xpc3RfZW50cnlfZ2V0X25hbWUoY3VyKTsKKyAg
ICAgICAgc3RydWN0IHVkZXZfZGV2aWNlKiBkZXZpY2UgPSB1ZGV2X2RldmljZV9uZXdfZnJvbV9z
eXNwYXRoKG1fdWRldiwgZGV2bmFtZSk7CisgICAgICAgIGlmIChpc0dhbWVwYWREZXZpY2UoZGV2
aWNlKSkKKyAgICAgICAgICAgIHJlZ2lzdGVyRGV2aWNlKFN0cmluZzo6ZnJvbVVURjgodWRldl9k
ZXZpY2VfZ2V0X2Rldm5vZGUoZGV2aWNlKSkpOworICAgICAgICB1ZGV2X2RldmljZV91bnJlZihk
ZXZpY2UpOworICAgIH0KKyAgICB1ZGV2X2VudW1lcmF0ZV91bnJlZihlbnVtZXJhdGUpOworfQor
CitHYW1lcGFkc1F0Ojp+R2FtZXBhZHNRdCgpCit7Cit9CisKK2Jvb2wgR2FtZXBhZHNRdDo6aXNH
YW1lcGFkRGV2aWNlKHN0cnVjdCB1ZGV2X2RldmljZSogZGV2aWNlKQoreworICAgIGNvbnN0IGNo
YXIqIGRldmljZUZpbGUgPSB1ZGV2X2RldmljZV9nZXRfZGV2bm9kZShkZXZpY2UpOworICAgIGNv
bnN0IGNoYXIqIHN5c2ZzUGF0aCA9IHVkZXZfZGV2aWNlX2dldF9zeXNwYXRoKGRldmljZSk7Cisg
ICAgaWYgKCFkZXZpY2VGaWxlIHx8ICFzeXNmc1BhdGgpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIXVkZXZfZGV2aWNlX2dldF9wcm9wZXJ0eV92YWx1ZShkZXZpY2UsICJJRF9JTlBV
VCIpIHx8ICF1ZGV2X2RldmljZV9nZXRfcHJvcGVydHlfdmFsdWUoZGV2aWNlLCAiSURfSU5QVVRf
Sk9ZU1RJQ0siKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBRQnl0ZUFycmF5
KGRldmljZUZpbGUpLnN0YXJ0c1dpdGgoIi9kZXYvaW5wdXQvanMiKTsKK30KKwordm9pZCBHYW1l
cGFkc1F0OjpvbkdhbWVQYWRDaGFuZ2UoKQoreworICAgIHN0cnVjdCB1ZGV2X2RldmljZSogZGV2
aWNlID0gdWRldl9tb25pdG9yX3JlY2VpdmVfZGV2aWNlKG1fZ2FtZXBhZHNNb25pdG9yKTsKKyAg
ICBpZiAoIWlzR2FtZXBhZERldmljZShkZXZpY2UpKQorICAgICAgICByZXR1cm47CisgICAgUUJ5
dGVBcnJheSBhY3Rpb24odWRldl9kZXZpY2VfZ2V0X2FjdGlvbihkZXZpY2UpKTsKKyAgICBpZiAo
YWN0aW9uID09ICJhZGQiKQorICAgICAgICByZWdpc3RlckRldmljZSh1ZGV2X2RldmljZV9nZXRf
ZGV2bm9kZShkZXZpY2UpKTsKKyAgICBlbHNlIGlmIChhY3Rpb24gPT0gInJlbW92ZSIpCisgICAg
ICAgIHVucmVnaXN0ZXJEZXZpY2UodWRldl9kZXZpY2VfZ2V0X2Rldm5vZGUoZGV2aWNlKSk7Cit9
CisKK3ZvaWQgR2FtZXBhZHNRdDo6cmVnaXN0ZXJEZXZpY2UoY29uc3QgU3RyaW5nJiBkZXZpY2VG
aWxlKQoreworICAgIEFTU0VSVCghbV9kZXZpY2VNYXAuY29udGFpbnMoZGV2aWNlRmlsZSkpOwor
CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbV9zbG90cy5zaXplKCk7IGlu
ZGV4KyspIHsKKyAgICAgICAgaWYgKCFtX3Nsb3RzW2luZGV4XSkgeworICAgICAgICAgICAgbV9z
bG90c1tpbmRleF0gPSBHYW1lcGFkRGV2aWNlUXQ6OmNyZWF0ZShkZXZpY2VGaWxlKTsKKyAgICAg
ICAgICAgIG1fZGV2aWNlTWFwLmFkZChkZXZpY2VGaWxlLCBtX3Nsb3RzW2luZGV4XS5nZXQoKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBHYW1lcGFk
c1F0Ojp1bnJlZ2lzdGVyRGV2aWNlKGNvbnN0IFN0cmluZyYgZGV2aWNlRmlsZSkKK3sKKyAgICBB
U1NFUlQobV9kZXZpY2VNYXAuY29udGFpbnMoZGV2aWNlRmlsZSkpOworCisgICAgR2FtZXBhZERl
dmljZVF0KiBnYW1lcGFkRGV2aWNlID0gbV9kZXZpY2VNYXAudGFrZShkZXZpY2VGaWxlKTsKKyAg
ICB1bnNpZ25lZCBpbmRleCA9IG1fc2xvdHMuZmluZChnYW1lcGFkRGV2aWNlKTsKKworICAgIG1f
c2xvdHNbaW5kZXhdLmNsZWFyKCk7Cit9CisKK3ZvaWQgR2FtZXBhZHNRdDo6dXBkYXRlR2FtZXBh
ZExpc3QoR2FtZXBhZExpc3QqIGludG8pCit7CisgICAgQVNTRVJUKG1fc2xvdHMuc2l6ZSgpID09
IGludG8tPmxlbmd0aCgpKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Nsb3Rz
LnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmIChtX3Nsb3RzW2ldLmdldCgpICYmIG1fc2xvdHNb
aV0tPmNvbm5lY3RlZCgpKSB7CisgICAgICAgICAgICBHYW1lcGFkRGV2aWNlUXQqIGdhbWVwYWRE
ZXZpY2UgPSBtX3Nsb3RzW2ldLmdldCgpOworICAgICAgICAgICAgUmVmUHRyPEdhbWVwYWQ+IGdh
bWVwYWQgPSBpbnRvLT5pdGVtKGkpOworICAgICAgICAgICAgaWYgKCFnYW1lcGFkKQorICAgICAg
ICAgICAgICAgIGdhbWVwYWQgPSBHYW1lcGFkOjpjcmVhdGUoKTsKKworICAgICAgICAgICAgZ2Ft
ZXBhZC0+aW5kZXgoaSk7CisgICAgICAgICAgICBnYW1lcGFkLT5pZChnYW1lcGFkRGV2aWNlLT5p
ZCgpKTsKKyAgICAgICAgICAgIGdhbWVwYWQtPnRpbWVzdGFtcChnYW1lcGFkRGV2aWNlLT50aW1l
c3RhbXAoKSk7CisgICAgICAgICAgICBnYW1lcGFkLT5heGVzKGdhbWVwYWREZXZpY2UtPmF4ZXND
b3VudCgpLCBnYW1lcGFkRGV2aWNlLT5heGVzRGF0YSgpKTsKKyAgICAgICAgICAgIGdhbWVwYWQt
PmJ1dHRvbnMoZ2FtZXBhZERldmljZS0+YnV0dG9uc0NvdW50KCksIGdhbWVwYWREZXZpY2UtPmJ1
dHRvbnNEYXRhKCkpOworCisgICAgICAgICAgICBpbnRvLT5zZXQoaSwgZ2FtZXBhZCk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgaW50by0+c2V0KGksIDApOworICAgIH0KK30KKwordm9p
ZCBzYW1wbGVHYW1lcGFkcyhHYW1lcGFkTGlzdCogaW50bykKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEdhbWVwYWRzUXQsIGdhbWVwYWRzUXQsIChpbnRvLT5sZW5ndGgoKSkpOworICAgIGdh
bWVwYWRzUXQudXBkYXRlR2FtZXBhZExpc3QoaW50byk7Cit9CisKKyNpbmNsdWRlICJHYW1lcGFk
c1F0Lm1vYyIKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdB
TUVQQUQpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggMWRlZjc4YTM1NjJjYjkxOTU5MWMzNzdjMWNhYzUzNTdjYmQ5YzI0My4uNzI2NjExOGJmNTg2
YzZjMGIwY2ZiZmRhMzkyOGRmNjllOWUyYzU5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTAxICBNYXJj
ZWxvIExpcmEgIDxtYXJjZWxvLmxpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIEFk
ZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVHVybiBvbiBHQU1FUEFEIGZsYWcgYnkgZGVmYXVsdCBmb3Ig
UXQgcG9ydC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToK
KwogMjAxMi0wOC0wMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNDMyNS4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCAzNDQ1MDlmNmY3ODVlZmJlOTM0ZGJkM2Rl
M2ZiZTEwM2FmMDIxMmRmLi4xMmI1YmQ2ZWY0YWJjYjg3NGU5NDU3MmEyNzhjYmQxZTBkZGU0NzI5
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0yMjYsNyArMjI2
LDcgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRlVMTFNDUkVF
Tl9BUEkiLCBkZWZhdWx0ID0+IChpc0FwcGxlTWFjV2ViS2l0KCkgfHwgaXNFZmwoKSB8fCBpc0d0
aygpIHx8IGlzQmxhY2tCZXJyeSgpIHx8IGlzUXQoKSksIHZhbHVlID0+IFwkZnVsbHNjcmVlbkFQ
SVN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJnYW1lcGFkIiwgZGVzYyA9PiAiVG9nZ2xl
IEdhbWVwYWQgc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9HQU1FUEFEIiwgZGVm
YXVsdCA9PiAoaXNFZmwoKSB8fCBpc0d0aygpKSwgdmFsdWUgPT4gXCRnYW1lcGFkU3VwcG9ydCB9
LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfR0FNRVBBRCIsIGRlZmF1bHQgPT4gKGlzRWZsKCkg
fHwgaXNHdGsoKSB8fCBpc1F0KCkpLCB2YWx1ZSA9PiBcJGdhbWVwYWRTdXBwb3J0IH0sCiAKICAg
ICB7IG9wdGlvbiA9PiAiZ2VvbG9jYXRpb24iLCBkZXNjID0+ICJUb2dnbGUgR2VvbG9jYXRpb24g
c3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9HRU9MT0NBVElPTiIsIGRlZmF1bHQg
PT4gKGlzQXBwbGVXZWJLaXQoKSB8fCBpc0d0aygpIHx8IGlzQmxhY2tCZXJyeSgpKSwgdmFsdWUg
PT4gXCRnZW9sb2NhdGlvblN1cHBvcnQgfSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2NTMxMGY1MTM0OGVmYmJhMzAzYTc0
ODcxNzhlMjAyMzNjZjk0ZDc1Li42OWE5NDdiY2I1YjI2MTcyZjVmYmZlZjFlMjFhYzFjMWUwM2Vk
ZWUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDgtMDEgIE1hcmNlbG8gTGlyYSAgPG1h
cmNlbG8ubGlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF0gQWRkIHN1cHBvcnQgZm9y
IHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTA2MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVbnNraXAgZ2FtZXBhZC1hcGkuaHRtbCBmb3IgdGhlIFF0IHBvcnQsIGJ1dCBnYW1l
cGFkLXBvbGxpbmctYWNjZXNzLmh0bWwKKyAgICAgICAgaXMgc3RpbGwgZXhwZWN0ZWQgdG8gZmFp
bCBiZWNhdXNlIGl0IHJlcXVpcmVzIGFkZGl0aW9uYWwgdGVzdAorICAgICAgICBpbmZyYXN0cnVj
dHVyZS4gU2VlIGFsc28gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTky
ODczCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3Jt
L3F0L1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTItMDgtMDEgIEtlaXNoaSBIYXR0b3JpICA8a2Vp
c2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggZmxha2luZXNzIG9mIGNv
bG9yLXN1Z2dlc3Rpb24tcGlja2VyLWFwcGVhcmFuY2UuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBw
ZWQKaW5kZXggYTA1NmU5NjhlMWFhNjJiZTUyZDQ4ODIzNjlkYzQ5NTAxNjIwNjJlMC4uM2Q1MjAz
YzdlZGNhNGQ0NzY4YTIyYjQ0MjUzMzQ2YmExNzhjZjIxNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lw
cGVkCkBAIC04Miw5ICs4Miw2IEBAIGZhc3QvZm9ybXMvdGltZQogZmFzdC9mb3Jtcy93ZWVrCiBm
YXN0L2Zvcm1zL2lucHV0LWluLXRhYmxlLWNlbGwtbm8tdmFsdWUuaHRtbAogCi0jIEVOQUJMRV9H
QU1FUEFEIG5vdCBlbmFibGVkLgotZ2FtZXBhZC8KLQogIyBFTkFCTEUoSU5QVVRfU1BFRUNIKSBp
cyBkaXNhYmxlZC4KIGZhc3Qvc3BlZWNoCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDgwOGZjZjljNmI1ZmI5ZDlmOTJiYTA2MWU4NWI4MTVkMDE3OGYzZGQu
LjBlZDllMjA2NTAyYTFlMjg0NzY0NTU3ZTRjZTEzM2NlMzk1MGRkYTcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTI0LDMgKzEyNCw2IEBAIEJVR1dLOTEz
NzkgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wb2xpY3ktZG9l
cy1ub3QtYWZmZWN0LWNoCiBCVUdXSzkxMzc5IDogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvb2JqZWN0LXNyYy1ub25lLWFsbG93ZWQuaHRtbCA9IFRFWFQgUEFTUwog
CiBCVUdXSzg1ODExIERFQlVHIDogZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNsb3NlLmh0bWwg
PSBDUkFTSAorCisvLyBNaXNzaW5nIHRlc3QgaW5mcmFzdHJ1Y3R1cmUsIG5vIGdhbWVwYWRzIGF2
YWlsYWJsZS4KK0JVR1dLOTI4NzMgU0tJUCA6IGdhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vz
cy5odG1sID0gVEVYVAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155823</attachid>
            <date>2012-08-01 09:42:41 -0700</date>
            <delta_ts>2012-08-02 07:49:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90637-20120801134222.patch</filename>
            <type>text/plain</type>
            <size>15874</size>
            <attacher name="Marcelo Lira">marcelo.lira</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMxNzQ1Mzk2YjUzYjFm
YjU3YThiMzA1YWU5NzcwNDU2MjA0ZmVmYi4uZDlkODFlNmNlOTI0ZTM0ZDVkNzkxMmFkOGFlZWZm
MDZlZjlmNTRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA4LTAxICBNYXJj
ZWxvIExpcmEgIDxtYXJjZWxvLmxpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIEFk
ZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciBHYW1lcGFkIEFQSSBvbiB0aGUg
UXQgcG9ydC4KKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBjbGFzcyByZWxp
ZXMgb24gdGhlIExpbnV4CisgICAgICAgIGtlcm5lbCBqb3lzdGljayBBUEkuCisKKyAgICAgICAg
R2FtZXBhZCBkZXZpY2VzIGFyZSByZWNvZ25pemVkIHRocm91Z2ggdGhlIEdhbWVwYWRzUXQKKyAg
ICAgICAgY2xhc3MsIHdoaWNoIHVzZXMgdWRldiBsaWJyYXJ5IHRvIHdhdGNoIGZvciBjb25uZWN0
aW9uCisgICAgICAgIGFuZCBkaXNjb25uZWN0aW9uIG9mIGdhbWVwYWQgZGV2aWNlcy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLnByaToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0dhbWVwYWRzUXQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoR2FtZXBhZERldmljZVF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VRdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdhbWVwYWREZXZpY2VRdDo6R2FtZXBhZERldmljZVF0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWREZXZpY2VRdDo6fkdhbWVwYWREZXZpY2VRdCk6CisgICAgICAgIChXZWJDb3JlOjpH
YW1lcGFkRGV2aWNlUXQ6OnJlYWRDYWxsYmFjayk6CisgICAgICAgIChHYW1lcGFkc1F0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzUXQ6OkdhbWVwYWRzUXQpOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZXBhZHNRdDo6fkdhbWVwYWRzUXQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZHNR
dDo6aXNHYW1lcGFkRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzUXQ6Om9uR2Ft
ZVBhZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc1F0OjpyZWdpc3RlckRldmlj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc1F0Ojp1bnJlZ2lzdGVyRGV2aWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzUXQ6OnVwZGF0ZUdhbWVwYWRMaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnNhbXBsZUdhbWVwYWRzKToKKwogMjAxMi0wOC0wMSAgVnNldm9sb2QgVmxhc292
ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDcmFzaGVz
IGluIE5ldHdvcmtSZXNvdXJjZXNEYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMucHJpIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCmluZGV4
IDkzZjNkZGE2YTMwNjdiOTcxZjk3ZGRkMjc4ZDQ1NzkwNjNkZTlmYTIuLjA3MjZjNmJkMmVjZDQz
NGM5N2Q4YzUwZDAwMjg2NTAwZTUyZTk4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkK
QEAgLTYxMyw2ICs2MTMsMTMgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0xKSB7CiAg
ICAgJCRQV0Qvc3ZnL1NWR1pvb21FdmVudC5pZGwKIH0KIAorY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX0dBTUVQQUQ9MSkgeworICBJRExfQklORElOR1MgKz0gXAorICAgICQkUFdEL01vZHVsZXMv
Z2FtZXBhZC9HYW1lcGFkLmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRM
aXN0LmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuaWRs
Cit9CisKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9WSURFT19UUkFDSz0xKSB7CiAgIElETF9C
SU5ESU5HUyArPSBcCiAgICAgJCRQV0QvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCmluZGV4IDQ1YWVlY2ZhM2IyMWU5MTkxZjRhYjFhNDg5ZGI1NDJiYWI0NTVhNTAuLmYwNWMw
MzQ2MDQ0YWZjMjcxMDI0YjQxZWRiMGNjNDJmYjJmMGY3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMzA5
Nyw2ICszMDk3LDIyIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9RVU9UQT0xKSB7CiAgICAg
ICAgIE1vZHVsZXMvcXVvdGEvU3RvcmFnZUluZm8uY3BwCiB9CiAKK2NvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9HQU1FUEFEPTEpIHsKKyAgICBIRUFERVJTICs9IFwKKyAgICAgICAgTW9kdWxlcy9n
YW1lcGFkL0dhbWVwYWQuaFwKKyAgICAgICAgTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0Lmgg
XAorICAgICAgICBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5oIFwKKyAgICAgICAg
cGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmggXAorICAgICAgICBwbGF0Zm9ybS9H
YW1lcGFkcy5oCisKKyAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgTW9kdWxlcy9nYW1lcGFkL0dh
bWVwYWQuY3BwIFwKKyAgICAgICAgTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmNwcCBcCisg
ICAgICAgIE1vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcCBcCisgICAgICAgIHBs
YXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9x
dC9HYW1lcGFkc1F0LmNwcAorfQorCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU89MSkg
ewogICAgIFNPVVJDRVMgKz0gXAogICAgICAgICBodG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcmkKaW5kZXggNTEzZDI2MWE0YTU4NjRhZjkyNTU0MjIyYWJkMGIxYTZjZGE2ODU3
ZS4uYWQ3MTM5OGJmN2ZlMmZhMjcyOWFlZDk5MGUzZjRiOWJkMmYwMDUyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cmkKQEAgLTE2OSw2ICsxNjksMTMgQEAgY29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9RVF9NT0JJ
TElUWV9TWVNURU1JTkZPPTEpIHsKICAgICAgTU9CSUxJVFkgKj0gc3lzdGVtaW5mbwogfQogCitj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfR0FNRVBBRD0xKSB7CisgICAgSU5DTFVERVBBVEggKz0g
XAorICAgICAgICAkJFNPVVJDRV9ESVIvcGxhdGZvcm0vbGludXggXAorICAgICAgICAkJFNPVVJD
RV9ESVIvTW9kdWxlcy9nYW1lcGFkCisgICAgUEtHQ09ORklHICs9IGxpYnVkZXYKK30KKwogY29u
dGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPPTEpIHsKICAgICBjb250YWlucyhERUZJTkVTLCBX
VEZfVVNFX1FUS0lUPTEpIHsKICAgICAgICAgSU5DTFVERVBBVEggKz0gJCRTT1VSQ0VfRElSL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvR2FtZXBhZHNRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9HYW1lcGFkc1F0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hMjk5OThkZDliYmNkOTU1MGQxYTFhNmJmNGYxYTllOTVlOTRlNTkx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvR2FtZXBhZHNR
dC5jcHAKQEAgLTAsMCArMSwyMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSU5kVCAt
IEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lhCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHYW1lcGFkcy5oIgorCisvLyBXZSBkbyBub3Qg
dXNlIEVOQUJMRSBvciBVU0UgYmVjYXVzZSBtb2MgZG9lcyBub3QgZXhwYW5kIHRoZXNlIG1hY3Jv
cy4KKyNpZiBkZWZpbmVkKEVOQUJMRV9HQU1FUEFEKQorCisjaW5jbHVkZSAiR2FtZXBhZERldmlj
ZUxpbnV4LmgiCisjaW5jbHVkZSAiR2FtZXBhZExpc3QuaCIKKworI2luY2x1ZGUgPFFPYmplY3Q+
CisjaW5jbHVkZSA8UVNvY2tldE5vdGlmaWVyPgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK2V4dGVybiAiQyIgeworI2lu
Y2x1ZGUgPGxpYnVkZXYuaD4KK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1l
cGFkRGV2aWNlUXQgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIEdhbWVwYWREZXZpY2VMaW51eCB7
CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxHYW1lcGFkRGV2
aWNlUXQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGRldmljZUZpbGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEdhbWVwYWREZXZpY2VRdChkZXZpY2VGaWxlKSk7CisgICAgfQor
ICAgIH5HYW1lcGFkRGV2aWNlUXQoKTsKKworcHJpdmF0ZToKKyAgICBHYW1lcGFkRGV2aWNlUXQo
Y29uc3QgU3RyaW5nJik7CisgICAgUVNvY2tldE5vdGlmaWVyKiBtX25vdGlmaWVyOworCitwcml2
YXRlIHNsb3RzOgorICAgIGJvb2wgcmVhZENhbGxiYWNrKCk7Cit9OworCitHYW1lcGFkRGV2aWNl
UXQ6OkdhbWVwYWREZXZpY2VRdChjb25zdCBTdHJpbmcmIGRldmljZUZpbGUpCisgICAgOiBRT2Jq
ZWN0KCkKKyAgICAsIEdhbWVwYWREZXZpY2VMaW51eChkZXZpY2VGaWxlKQoreworICAgIGlmICht
X2ZpbGVEZXNjcmlwdG9yID09IC0xKQorICAgICAgICByZXR1cm47CisKKyAgICBtX25vdGlmaWVy
ID0gbmV3IFFTb2NrZXROb3RpZmllcihtX2ZpbGVEZXNjcmlwdG9yLCBRU29ja2V0Tm90aWZpZXI6
OlJlYWQpOworICAgIGNvbm5lY3QobV9ub3RpZmllciwgU0lHTkFMKGFjdGl2YXRlZChpbnQpKSwg
dGhpcywgU0xPVChyZWFkQ2FsbGJhY2soKSkpOworfQorCitHYW1lcGFkRGV2aWNlUXQ6On5HYW1l
cGFkRGV2aWNlUXQoKQoreworICAgIGRlbGV0ZSBtX25vdGlmaWVyOworfQorCitib29sIEdhbWVw
YWREZXZpY2VRdDo6cmVhZENhbGxiYWNrKCkKK3sKKyAgICBqc19ldmVudCBldmVudDsKKyAgICBp
bnQgbGVuID0gcmVhZChtX2ZpbGVEZXNjcmlwdG9yLCAmZXZlbnQsIHNpemVvZihqc19ldmVudCkp
OworICAgIGlmIChsZW4gIT0gc2l6ZW9mKGV2ZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHVwZGF0ZUZvckV2ZW50KGV2ZW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworY2xhc3Mg
R2FtZXBhZHNRdCA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAg
IEdhbWVwYWRzUXQodW5zaWduZWQpOworCisgICAgdm9pZCByZWdpc3RlckRldmljZShjb25zdCBT
dHJpbmcmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJEZXZpY2UoY29uc3QgU3RyaW5nJik7CisKKyAg
ICB2b2lkIHVwZGF0ZUdhbWVwYWRMaXN0KEdhbWVwYWRMaXN0Kik7CisKK3ByaXZhdGUgc2xvdHM6
CisgICAgdm9pZCBvbkdhbWVQYWRDaGFuZ2UoKTsKKworcHJpdmF0ZToKKyAgICB+R2FtZXBhZHNR
dCgpOworICAgIGJvb2wgaXNHYW1lcGFkRGV2aWNlKHN0cnVjdCB1ZGV2X2RldmljZSopOworCisg
ICAgVmVjdG9yPE93blB0cjxHYW1lcGFkRGV2aWNlUXQ+ID4gbV9zbG90czsKKyAgICBIYXNoTWFw
PFN0cmluZywgR2FtZXBhZERldmljZVF0Kj4gbV9kZXZpY2VNYXA7CisKKyAgICBzdHJ1Y3QgdWRl
diogbV91ZGV2OworICAgIHN0cnVjdCB1ZGV2X21vbml0b3IqIG1fZ2FtZXBhZHNNb25pdG9yOwor
ICAgIFFTb2NrZXROb3RpZmllciogbV9nYW1lcGFkc05vdGlmaWVyOworfTsKKworR2FtZXBhZHNR
dDo6R2FtZXBhZHNRdCh1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBRT2JqZWN0KCkKKyAgICAsIG1f
c2xvdHMobGVuZ3RoKQoreworICAgIG1fdWRldiA9IHVkZXZfbmV3KCk7CisgICAgbV9nYW1lcGFk
c01vbml0b3IgPSB1ZGV2X21vbml0b3JfbmV3X2Zyb21fbmV0bGluayhtX3VkZXYsICJ1ZGV2Iik7
CisgICAgdWRldl9tb25pdG9yX2VuYWJsZV9yZWNlaXZpbmcobV9nYW1lcGFkc01vbml0b3IpOwor
ICAgIHVkZXZfbW9uaXRvcl9maWx0ZXJfYWRkX21hdGNoX3N1YnN5c3RlbV9kZXZ0eXBlKG1fZ2Ft
ZXBhZHNNb25pdG9yLCAiaW5wdXQiLCAwKTsKKyAgICBtX2dhbWVwYWRzTm90aWZpZXIgPSBuZXcg
UVNvY2tldE5vdGlmaWVyKHVkZXZfbW9uaXRvcl9nZXRfZmQobV9nYW1lcGFkc01vbml0b3IpLCBR
U29ja2V0Tm90aWZpZXI6OlJlYWQsIHRoaXMpOworICAgIGNvbm5lY3QobV9nYW1lcGFkc05vdGlm
aWVyLCBTSUdOQUwoYWN0aXZhdGVkKGludCkpLCB0aGlzLCBTTE9UKG9uR2FtZVBhZENoYW5nZSgp
KSk7CisKKyAgICBzdHJ1Y3QgdWRldl9lbnVtZXJhdGUqIGVudW1lcmF0ZSA9IHVkZXZfZW51bWVy
YXRlX25ldyhtX3VkZXYpOworICAgIHVkZXZfZW51bWVyYXRlX2FkZF9tYXRjaF9zdWJzeXN0ZW0o
ZW51bWVyYXRlLCAiaW5wdXQiKTsKKyAgICB1ZGV2X2VudW1lcmF0ZV9hZGRfbWF0Y2hfcHJvcGVy
dHkoZW51bWVyYXRlLCAiSURfSU5QVVRfSk9ZU1RJQ0siLCAiMSIpOworICAgIHVkZXZfZW51bWVy
YXRlX3NjYW5fZGV2aWNlcyhlbnVtZXJhdGUpOworICAgIHN0cnVjdCB1ZGV2X2xpc3RfZW50cnkq
IGN1cjsKKyAgICBzdHJ1Y3QgdWRldl9saXN0X2VudHJ5KiBkZXZzID0gdWRldl9lbnVtZXJhdGVf
Z2V0X2xpc3RfZW50cnkoZW51bWVyYXRlKTsKKyAgICB1ZGV2X2xpc3RfZW50cnlfZm9yZWFjaChj
dXIsIGRldnMpIHsKKyAgICAgICAgY29uc3QgY2hhciogZGV2bmFtZSA9IHVkZXZfbGlzdF9lbnRy
eV9nZXRfbmFtZShjdXIpOworICAgICAgICBzdHJ1Y3QgdWRldl9kZXZpY2UqIGRldmljZSA9IHVk
ZXZfZGV2aWNlX25ld19mcm9tX3N5c3BhdGgobV91ZGV2LCBkZXZuYW1lKTsKKyAgICAgICAgaWYg
KGlzR2FtZXBhZERldmljZShkZXZpY2UpKQorICAgICAgICAgICAgcmVnaXN0ZXJEZXZpY2UoU3Ry
aW5nOjpmcm9tVVRGOCh1ZGV2X2RldmljZV9nZXRfZGV2bm9kZShkZXZpY2UpKSk7CisgICAgICAg
IHVkZXZfZGV2aWNlX3VucmVmKGRldmljZSk7CisgICAgfQorICAgIHVkZXZfZW51bWVyYXRlX3Vu
cmVmKGVudW1lcmF0ZSk7Cit9CisKK0dhbWVwYWRzUXQ6On5HYW1lcGFkc1F0KCkKK3sKK30KKwor
Ym9vbCBHYW1lcGFkc1F0Ojppc0dhbWVwYWREZXZpY2Uoc3RydWN0IHVkZXZfZGV2aWNlKiBkZXZp
Y2UpCit7CisgICAgY29uc3QgY2hhciogZGV2aWNlRmlsZSA9IHVkZXZfZGV2aWNlX2dldF9kZXZu
b2RlKGRldmljZSk7CisgICAgY29uc3QgY2hhciogc3lzZnNQYXRoID0gdWRldl9kZXZpY2VfZ2V0
X3N5c3BhdGgoZGV2aWNlKTsKKyAgICBpZiAoIWRldmljZUZpbGUgfHwgIXN5c2ZzUGF0aCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghdWRldl9kZXZpY2VfZ2V0X3Byb3BlcnR5X3Zh
bHVlKGRldmljZSwgIklEX0lOUFVUIikgfHwgIXVkZXZfZGV2aWNlX2dldF9wcm9wZXJ0eV92YWx1
ZShkZXZpY2UsICJJRF9JTlBVVF9KT1lTVElDSyIpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIFFCeXRlQXJyYXkoZGV2aWNlRmlsZSkuc3RhcnRzV2l0aCgiL2Rldi9pbnB1dC9q
cyIpOworfQorCit2b2lkIEdhbWVwYWRzUXQ6Om9uR2FtZVBhZENoYW5nZSgpCit7CisgICAgc3Ry
dWN0IHVkZXZfZGV2aWNlKiBkZXZpY2UgPSB1ZGV2X21vbml0b3JfcmVjZWl2ZV9kZXZpY2UobV9n
YW1lcGFkc01vbml0b3IpOworICAgIGlmICghaXNHYW1lcGFkRGV2aWNlKGRldmljZSkpCisgICAg
ICAgIHJldHVybjsKKyAgICBRQnl0ZUFycmF5IGFjdGlvbih1ZGV2X2RldmljZV9nZXRfYWN0aW9u
KGRldmljZSkpOworICAgIGlmIChhY3Rpb24gPT0gImFkZCIpCisgICAgICAgIHJlZ2lzdGVyRGV2
aWNlKHVkZXZfZGV2aWNlX2dldF9kZXZub2RlKGRldmljZSkpOworICAgIGVsc2UgaWYgKGFjdGlv
biA9PSAicmVtb3ZlIikKKyAgICAgICAgdW5yZWdpc3RlckRldmljZSh1ZGV2X2RldmljZV9nZXRf
ZGV2bm9kZShkZXZpY2UpKTsKK30KKwordm9pZCBHYW1lcGFkc1F0OjpyZWdpc3RlckRldmljZShj
b25zdCBTdHJpbmcmIGRldmljZUZpbGUpCit7CisgICAgQVNTRVJUKCFtX2RldmljZU1hcC5jb250
YWlucyhkZXZpY2VGaWxlKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXgg
PCBtX3Nsb3RzLnNpemUoKTsgaW5kZXgrKykgeworICAgICAgICBpZiAoIW1fc2xvdHNbaW5kZXhd
KSB7CisgICAgICAgICAgICBtX3Nsb3RzW2luZGV4XSA9IEdhbWVwYWREZXZpY2VRdDo6Y3JlYXRl
KGRldmljZUZpbGUpOworICAgICAgICAgICAgbV9kZXZpY2VNYXAuYWRkKGRldmljZUZpbGUsIG1f
c2xvdHNbaW5kZXhdLmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorfQorCit2b2lkIEdhbWVwYWRzUXQ6OnVucmVnaXN0ZXJEZXZpY2UoY29uc3QgU3RyaW5nJiBk
ZXZpY2VGaWxlKQoreworICAgIEFTU0VSVChtX2RldmljZU1hcC5jb250YWlucyhkZXZpY2VGaWxl
KSk7CisKKyAgICBHYW1lcGFkRGV2aWNlUXQqIGdhbWVwYWREZXZpY2UgPSBtX2RldmljZU1hcC50
YWtlKGRldmljZUZpbGUpOworICAgIHVuc2lnbmVkIGluZGV4ID0gbV9zbG90cy5maW5kKGdhbWVw
YWREZXZpY2UpOworCisgICAgbV9zbG90c1tpbmRleF0uY2xlYXIoKTsKK30KKwordm9pZCBHYW1l
cGFkc1F0Ojp1cGRhdGVHYW1lcGFkTGlzdChHYW1lcGFkTGlzdCogaW50bykKK3sKKyAgICBBU1NF
UlQobV9zbG90cy5zaXplKCkgPT0gaW50by0+bGVuZ3RoKCkpOworCisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fc2xvdHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKG1fc2xvdHNb
aV0uZ2V0KCkgJiYgbV9zbG90c1tpXS0+Y29ubmVjdGVkKCkpIHsKKyAgICAgICAgICAgIEdhbWVw
YWREZXZpY2VRdCogZ2FtZXBhZERldmljZSA9IG1fc2xvdHNbaV0uZ2V0KCk7CisgICAgICAgICAg
ICBSZWZQdHI8R2FtZXBhZD4gZ2FtZXBhZCA9IGludG8tPml0ZW0oaSk7CisgICAgICAgICAgICBp
ZiAoIWdhbWVwYWQpCisgICAgICAgICAgICAgICAgZ2FtZXBhZCA9IEdhbWVwYWQ6OmNyZWF0ZSgp
OworCisgICAgICAgICAgICBnYW1lcGFkLT5pbmRleChpKTsKKyAgICAgICAgICAgIGdhbWVwYWQt
PmlkKGdhbWVwYWREZXZpY2UtPmlkKCkpOworICAgICAgICAgICAgZ2FtZXBhZC0+dGltZXN0YW1w
KGdhbWVwYWREZXZpY2UtPnRpbWVzdGFtcCgpKTsKKyAgICAgICAgICAgIGdhbWVwYWQtPmF4ZXMo
Z2FtZXBhZERldmljZS0+YXhlc0NvdW50KCksIGdhbWVwYWREZXZpY2UtPmF4ZXNEYXRhKCkpOwor
ICAgICAgICAgICAgZ2FtZXBhZC0+YnV0dG9ucyhnYW1lcGFkRGV2aWNlLT5idXR0b25zQ291bnQo
KSwgZ2FtZXBhZERldmljZS0+YnV0dG9uc0RhdGEoKSk7CisKKyAgICAgICAgICAgIGludG8tPnNl
dChpLCBnYW1lcGFkKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpbnRvLT5zZXQoaSwg
MCk7CisgICAgfQorfQorCit2b2lkIHNhbXBsZUdhbWVwYWRzKEdhbWVwYWRMaXN0KiBpbnRvKQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoR2FtZXBhZHNRdCwgZ2FtZXBhZHNRdCwgKGludG8t
Pmxlbmd0aCgpKSk7CisgICAgZ2FtZXBhZHNRdC51cGRhdGVHYW1lcGFkTGlzdChpbnRvKTsKK30K
KworI2luY2x1ZGUgIkdhbWVwYWRzUXQubW9jIgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxZGVmNzhhMzU2MmNiOTE5NTkxYzM3N2MxY2FjNTM1N2Ni
ZDljMjQzLi43MjY2MTE4YmY1ODZjNmMwYjBjZmJmZGEzOTI4ZGY2OWU5ZTJjNTlmIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTItMDgtMDEgIE1hcmNlbG8gTGlyYSAgPG1hcmNlbG8ubGlyYUBvcGVuYm9zc2Eub3Jn
PgorCisgICAgICAgIFtRdF0gQWRkIHN1cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA2MzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUdXJuIG9uIEdBTUVQQUQg
ZmxhZyBieSBkZWZhdWx0IGZvciBRdCBwb3J0LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
ZXJsL0ZlYXR1cmVMaXN0LnBtOgorCiAyMDEyLTA4LTAxICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTI0MzI1LgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0
LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4IDM0NDUw
OWY2Zjc4NWVmYmU5MzRkYmQzZGUzZmJlMTAzYWYwMjEyZGYuLjEyYjViZDZlZjRhYmNiODc0ZTk0
NTcyYTI3OGNiZDFlMGRkZTQ3MjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxp
c3QucG0KQEAgLTIyNiw3ICsyMjYsNyBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZpbmUg
PT4gIkVOQUJMRV9GVUxMU0NSRUVOX0FQSSIsIGRlZmF1bHQgPT4gKGlzQXBwbGVNYWNXZWJLaXQo
KSB8fCBpc0VmbCgpIHx8IGlzR3RrKCkgfHwgaXNCbGFja0JlcnJ5KCkgfHwgaXNRdCgpKSwgdmFs
dWUgPT4gXCRmdWxsc2NyZWVuQVBJU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gImdhbWVw
YWQiLCBkZXNjID0+ICJUb2dnbGUgR2FtZXBhZCBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAi
RU5BQkxFX0dBTUVQQUQiLCBkZWZhdWx0ID0+IChpc0VmbCgpIHx8IGlzR3RrKCkpLCB2YWx1ZSA9
PiBcJGdhbWVwYWRTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9HQU1FUEFEIiwg
ZGVmYXVsdCA9PiAoaXNFZmwoKSB8fCBpc0d0aygpIHx8IGlzUXQoKSksIHZhbHVlID0+IFwkZ2Ft
ZXBhZFN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJnZW9sb2NhdGlvbiIsIGRlc2MgPT4g
IlRvZ2dsZSBHZW9sb2NhdGlvbiBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0dF
T0xPQ0FUSU9OIiwgZGVmYXVsdCA9PiAoaXNBcHBsZVdlYktpdCgpIHx8IGlzR3RrKCkgfHwgaXNC
bGFja0JlcnJ5KCkpLCB2YWx1ZSA9PiBcJGdlb2xvY2F0aW9uU3VwcG9ydCB9LApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJi
NDE2ODlkNGZjYmVmMzUzY2MzOTA0MDBhNzYxM2FlZmI3MTUzYjkuLjNkM2NhNTMzNDI5MjZlYTg2
ZWM2ZDFiY2MxNzg5NTJmZjM0YThkMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wOC0w
MSAgTWFyY2VsbyBMaXJhICA8bWFyY2Vsby5saXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAg
W1F0XSBBZGQgc3VwcG9ydCBmb3IgdGhlIEdhbWVwYWQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDYzNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuc2tpcCBnYW1lcGFkLWFwaS5odG1sIGZvciB0
aGUgUXQgcG9ydCwgYnV0IGdhbWVwYWQtcG9sbGluZy1hY2Nlc3MuaHRtbAorICAgICAgICBpcyBz
dGlsbCBleHBlY3RlZCB0byBmYWlsIGJlY2F1c2UgaXQgcmVxdWlyZXMgYWRkaXRpb25hbCB0ZXN0
CisgICAgICAgIGluZnJhc3RydWN0dXJlLiBTZWUgYWxzbyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTI4NzMKKworICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6
CisgICAgICAgICogcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMi0wOC0wMSAg
WmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdUkVHUkVTU0lP
TihyMTIzNzg2KTogSXQgbWFkZSAzIGZhc3QvYW5pbWF0aW9uIHRlc3RzIGZhaWwuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZAppbmRleCA1NDc2ZmJiZDBjOGMwNDA5ZTk0YTY5NDVhN2U1NmI5NDI0YjYz
OTJjLi4zZDUyMDNjN2VkY2E0ZDQ3NjhhMjJiNDQyNTMzNDZiYTE3OGNmMjE2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQKQEAgLTgyLDkgKzgyLDYgQEAgZmFzdC9mb3Jtcy90aW1lCiBmYXN0L2Zv
cm1zL3dlZWsKIGZhc3QvZm9ybXMvaW5wdXQtaW4tdGFibGUtY2VsbC1uby12YWx1ZS5odG1sCiAK
LSMgRU5BQkxFX0dBTUVQQUQgbm90IGVuYWJsZWQuCi1nYW1lcGFkLwotCiAjIEVOQUJMRShJTlBV
VF9TUEVFQ0gpIGlzIGRpc2FibGVkLgogZmFzdC9zcGVlY2gKIApAQCAtMTk2OCw2ICsxOTY1LDE0
IEBAIGZhc3QveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtZ2V0LnhodG1sCiAjIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDAxMwogZmFzdC9yZXBhaW50L2xp
bmUtZmxvdy13aXRoLWZsb2F0cy1pbi1yZWdpb25zLmh0bWwKIAorIyBbUXRdUkVHUkVTU0lPTihy
MTIzNzg2KSBJdCBtYWRlIDMgZmFzdC9hbmltYXRpb24gdGVzdHMgZmFpbAorIyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI0OTAKK2Zhc3QvYW5pbWF0aW9uL3JlcXVl
c3QtYW5pbWF0aW9uLWZyYW1lLWNhbmNlbDIuaHRtbAorZmFzdC9hbmltYXRpb24vcmVxdWVzdC1h
bmltYXRpb24tZnJhbWUtZGV0YWNoLWVsZW1lbnQuaHRtbAorZmFzdC9hbmltYXRpb24vcmVxdWVz
dC1hbmltYXRpb24tZnJhbWUtZHVyaW5nLW1vZGFsLmh0bWwKK2Zhc3QvYW5pbWF0aW9uL3JlcXVl
c3QtYW5pbWF0aW9uLWZyYW1lLXRpbWVzdGFtcHMuaHRtbAorZmFzdC9kb20vV2luZG93L3Bvc3Qt
bWVzc2FnZS1jcmFzaC5odG1sCisKICMgW1F0XSBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL29mZnNl
dExlZnQtb2Zmc2V0VG9wLW11bHRpY29sdW1uLmh0bWwgaXMgZmFpbGluZwogIyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYxMzAKIGZhc3QvYmxvY2svcG9zaXRpb25p
bmcvb2Zmc2V0TGVmdC1vZmZzZXRUb3AtbXVsdGljb2x1bW4uaHRtbApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODA4ZmNmOWM2YjVmYjlkOWY5MmJhMDYxZTg1
YjgxNWQwMTc4ZjNkZC4uMGVkOWUyMDY1MDJhMWUyODQ3NjQ1NTdlNGNlMTMzY2UzOTUwZGRhNyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMjQsMyArMTI0
LDYgQEAgQlVHV0s5MTM3OSA6IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3BvbGljeS1kb2VzLW5vdC1hZmZlY3QtY2gKIEJVR1dLOTEzNzkgOiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9vYmplY3Qtc3JjLW5vbmUtYWxsb3dlZC5odG1s
ID0gVEVYVCBQQVNTCiAKIEJVR1dLODU4MTEgREVCVUcgOiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBv
cnQtY2xvc2UuaHRtbCA9IENSQVNICisKKy8vIE1pc3NpbmcgdGVzdCBpbmZyYXN0cnVjdHVyZSwg
bm8gZ2FtZXBhZHMgYXZhaWxhYmxlLgorQlVHV0s5Mjg3MyBTS0lQIDogZ2FtZXBhZC9nYW1lcGFk
LXBvbGxpbmctYWNjZXNzLmh0bWwgPSBURVhUCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156083</attachid>
            <date>2012-08-02 07:49:43 -0700</date>
            <delta_ts>2012-08-02 08:10:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90637-20120802114923.patch</filename>
            <type>text/plain</type>
            <size>15299</size>
            <attacher name="Marcelo Lira">marcelo.lira</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA0YzVjZThkYzFiYTFh
ZmU1MmZlNzNlMjQ5M2U1Y2VkMzk0Y2E2Mi4uOTI0MThiYjA5NzM5Y2JlNTVlMDI1ZTEzNjVkOTAx
YWE3ZmVlNGRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA4LTAyICBNYXJj
ZWxvIExpcmEgIDxtYXJjZWxvLmxpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIEFk
ZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciBHYW1lcGFkIEFQSSBvbiB0aGUg
UXQgcG9ydC4KKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBjbGFzcyByZWxp
ZXMgb24gdGhlIExpbnV4CisgICAgICAgIGtlcm5lbCBqb3lzdGljayBBUEkuCisKKyAgICAgICAg
R2FtZXBhZCBkZXZpY2VzIGFyZSByZWNvZ25pemVkIHRocm91Z2ggdGhlIEdhbWVwYWRzUXQKKyAg
ICAgICAgY2xhc3MsIHdoaWNoIHVzZXMgdWRldiBsaWJyYXJ5IHRvIHdhdGNoIGZvciBjb25uZWN0
aW9uCisgICAgICAgIGFuZCBkaXNjb25uZWN0aW9uIG9mIGdhbWVwYWQgZGV2aWNlcy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLnByaToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0dhbWVwYWRzUXQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoR2FtZXBhZERldmljZVF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VRdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdhbWVwYWREZXZpY2VRdDo6R2FtZXBhZERldmljZVF0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWREZXZpY2VRdDo6fkdhbWVwYWREZXZpY2VRdCk6CisgICAgICAgIChXZWJDb3JlOjpH
YW1lcGFkRGV2aWNlUXQ6OnJlYWRDYWxsYmFjayk6CisgICAgICAgIChHYW1lcGFkc1F0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzUXQ6OkdhbWVwYWRzUXQpOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZXBhZHNRdDo6fkdhbWVwYWRzUXQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZHNR
dDo6aXNHYW1lcGFkRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzUXQ6Om9uR2Ft
ZVBhZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc1F0OjpyZWdpc3RlckRldmlj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc1F0Ojp1bnJlZ2lzdGVyRGV2aWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzUXQ6OnVwZGF0ZUdhbWVwYWRMaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnNhbXBsZUdhbWVwYWRzKToKKwogMjAxMi0wOC0wMSAgUGF0cmljayBHYW5zdGVy
ZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXBsYWNlIFdURjo6Z2V0Q3VycmVu
dExvY2FsVGltZSgpIHdpdGggR3JlZ29yaWFuRGF0ZVRpbWU6OnNldFRvQ3VycmVudExvY2FsVGlt
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKaW5kZXggOTNmM2RkYTZhMzA2N2I5NzFmOTdk
ZGQyNzhkNDU3OTA2M2RlOWZhMi4uNGI5MTk5NmUxMzBmMjIxZmFmODMxNWI1NTkzYTU5ZWViMmI1
ODczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtNjEzLDYgKzYxMywxMyBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAgICAkJFBXRC9zdmcvU1ZHWm9vbUV2
ZW50LmlkbAogfQogCitsaW51eC0qOmNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9HQU1FUEFEPTEp
IHsKKyAgSURMX0JJTkRJTkdTICs9IFwKKyAgICAkJFBXRC9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBh
ZC5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTGlzdC5pZGwgXAorICAg
ICQkUFdEL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmlkbAorfQorCiBjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfVklERU9fVFJBQ0s9MSkgewogICBJRExfQklORElOR1MgKz0gXAog
ICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA0NWFl
ZWNmYTNiMjFlOTE5MWY0YWIxYTQ4OWRiNTQyYmFiNDU1YTUwLi44Y2UyZDZiZTkxMTcyMjQ1ODUz
YzE2NTgxMTk2YWZiZmRhMDliZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTMwOTcsNiArMzA5NywyMiBA
QCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfUVVPVEE9MSkgewogICAgICAgICBNb2R1bGVzL3F1
b3RhL1N0b3JhZ2VJbmZvLmNwcAogfQogCitsaW51eC0qOmNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9HQU1FUEFEPTEpIHsKKyAgICBIRUFERVJTICs9IFwKKyAgICAgICAgTW9kdWxlcy9nYW1lcGFk
L0dhbWVwYWQuaFwKKyAgICAgICAgTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmggXAorICAg
ICAgICBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5oIFwKKyAgICAgICAgcGxhdGZv
cm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmggXAorICAgICAgICBwbGF0Zm9ybS9HYW1lcGFk
cy5oCisKKyAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQu
Y3BwIFwKKyAgICAgICAgTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmNwcCBcCisgICAgICAg
IE1vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcCBcCisgICAgICAgIHBsYXRmb3Jt
L2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9xdC9HYW1l
cGFkc1F0LmNwcAorfQorCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU89MSkgewogICAg
IFNPVVJDRVMgKz0gXAogICAgICAgICBodG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcmkKaW5kZXggNTEzZDI2MWE0YTU4NjRhZjkyNTU0MjIyYWJkMGIxYTZjZGE2ODU3ZS4uOGRm
MmNiZjMwNjlhODBjYWRjZjdmY2E4NWNmOGZmMjdlZjBlNjA0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKQEAg
LTE2OSw2ICsxNjksMTMgQEAgY29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9RVF9NT0JJTElUWV9T
WVNURU1JTkZPPTEpIHsKICAgICAgTU9CSUxJVFkgKj0gc3lzdGVtaW5mbwogfQogCitsaW51eC0q
OmNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9HQU1FUEFEPTEpIHsKKyAgICBJTkNMVURFUEFUSCAr
PSBcCisgICAgICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9saW51eCBcCisgICAgICAgICQkU09V
UkNFX0RJUi9Nb2R1bGVzL2dhbWVwYWQKKyAgICBQS0dDT05GSUcgKz0gbGlidWRldgorfQorCiBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU89MSkgewogICAgIGNvbnRhaW5zKERFRklORVMs
IFdURl9VU0VfUVRLSVQ9MSkgewogICAgICAgICBJTkNMVURFUEFUSCArPSAkJFNPVVJDRV9ESVIv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9HYW1lcGFkc1F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0dhbWVwYWRz
UXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVjOGU1MjNjNjRmZGIyZWMwZmM2ZGM2MzVkZTBlNTJjOTQ4NmQ0
YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9HYW1lcGFk
c1F0LmNwcApAQCAtMCwwICsxLDIyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJTmRU
IC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKKyAqIENvcHlyaWdodCAoQykgMjAxMiBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVwYWRzLmgiCisKKy8vIFdlIGRvIG5v
dCB1c2UgRU5BQkxFIG9yIFVTRSBiZWNhdXNlIG1vYyBkb2VzIG5vdCBleHBhbmQgdGhlc2UgbWFj
cm9zLgorI2lmIGRlZmluZWQoRU5BQkxFX0dBTUVQQUQpIHx8IDEKKworI2luY2x1ZGUgIkdhbWVw
YWREZXZpY2VMaW51eC5oIgorI2luY2x1ZGUgIkdhbWVwYWRMaXN0LmgiCisKKyNpbmNsdWRlIDxR
T2JqZWN0PgorI2luY2x1ZGUgPFFTb2NrZXROb3RpZmllcj4KKworI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCitleHRlcm4gIkMi
IHsKKyNpbmNsdWRlIDxsaWJ1ZGV2Lmg+Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgR2FtZXBhZERldmljZVF0IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBHYW1lcGFkRGV2aWNl
TGludXggeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8R2Ft
ZXBhZERldmljZVF0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBkZXZpY2VGaWxlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHYW1lcGFkRGV2aWNlUXQoZGV2aWNlRmlsZSkpOwor
ICAgIH0KKyAgICB+R2FtZXBhZERldmljZVF0KCk7CisKK3ByaXZhdGU6CisgICAgR2FtZXBhZERl
dmljZVF0KGNvbnN0IFN0cmluZyYpOworICAgIFFTb2NrZXROb3RpZmllciogbV9ub3RpZmllcjsK
KworcHJpdmF0ZSBzbG90czoKKyAgICBib29sIHJlYWRDYWxsYmFjaygpOworfTsKKworR2FtZXBh
ZERldmljZVF0OjpHYW1lcGFkRGV2aWNlUXQoY29uc3QgU3RyaW5nJiBkZXZpY2VGaWxlKQorICAg
IDogUU9iamVjdCgpCisgICAgLCBHYW1lcGFkRGV2aWNlTGludXgoZGV2aWNlRmlsZSkKK3sKKyAg
ICBpZiAobV9maWxlRGVzY3JpcHRvciA9PSAtMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9u
b3RpZmllciA9IG5ldyBRU29ja2V0Tm90aWZpZXIobV9maWxlRGVzY3JpcHRvciwgUVNvY2tldE5v
dGlmaWVyOjpSZWFkKTsKKyAgICBjb25uZWN0KG1fbm90aWZpZXIsIFNJR05BTChhY3RpdmF0ZWQo
aW50KSksIHRoaXMsIFNMT1QocmVhZENhbGxiYWNrKCkpKTsKK30KKworR2FtZXBhZERldmljZVF0
Ojp+R2FtZXBhZERldmljZVF0KCkKK3sKKyAgICBkZWxldGUgbV9ub3RpZmllcjsKK30KKworYm9v
bCBHYW1lcGFkRGV2aWNlUXQ6OnJlYWRDYWxsYmFjaygpCit7CisgICAganNfZXZlbnQgZXZlbnQ7
CisgICAgaW50IGxlbiA9IHJlYWQobV9maWxlRGVzY3JpcHRvciwgJmV2ZW50LCBzaXplb2YoanNf
ZXZlbnQpKTsKKyAgICBpZiAobGVuICE9IHNpemVvZihldmVudCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB1cGRhdGVGb3JFdmVudChldmVudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2NsYXNzIEdhbWVwYWRzUXQgOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKK3B1Ymxp
YzoKKyAgICBHYW1lcGFkc1F0KHVuc2lnbmVkKTsKKworICAgIHZvaWQgcmVnaXN0ZXJEZXZpY2Uo
Y29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyRGV2aWNlKGNvbnN0IFN0cmluZyYp
OworCisgICAgdm9pZCB1cGRhdGVHYW1lcGFkTGlzdChHYW1lcGFkTGlzdCopOworCitwcml2YXRl
IHNsb3RzOgorICAgIHZvaWQgb25HYW1lUGFkQ2hhbmdlKCk7CisKK3ByaXZhdGU6CisgICAgfkdh
bWVwYWRzUXQoKTsKKyAgICBib29sIGlzR2FtZXBhZERldmljZShzdHJ1Y3QgdWRldl9kZXZpY2Uq
KTsKKworICAgIFZlY3RvcjxPd25QdHI8R2FtZXBhZERldmljZVF0PiA+IG1fc2xvdHM7CisgICAg
SGFzaE1hcDxTdHJpbmcsIEdhbWVwYWREZXZpY2VRdCo+IG1fZGV2aWNlTWFwOworCisgICAgc3Ry
dWN0IHVkZXYqIG1fdWRldjsKKyAgICBzdHJ1Y3QgdWRldl9tb25pdG9yKiBtX2dhbWVwYWRzTW9u
aXRvcjsKKyAgICBRU29ja2V0Tm90aWZpZXIqIG1fZ2FtZXBhZHNOb3RpZmllcjsKK307CisKK0dh
bWVwYWRzUXQ6OkdhbWVwYWRzUXQodW5zaWduZWQgbGVuZ3RoKQorICAgIDogUU9iamVjdCgpCisg
ICAgLCBtX3Nsb3RzKGxlbmd0aCkKK3sKKyAgICBtX3VkZXYgPSB1ZGV2X25ldygpOworICAgIG1f
Z2FtZXBhZHNNb25pdG9yID0gdWRldl9tb25pdG9yX25ld19mcm9tX25ldGxpbmsobV91ZGV2LCAi
dWRldiIpOworICAgIHVkZXZfbW9uaXRvcl9lbmFibGVfcmVjZWl2aW5nKG1fZ2FtZXBhZHNNb25p
dG9yKTsKKyAgICB1ZGV2X21vbml0b3JfZmlsdGVyX2FkZF9tYXRjaF9zdWJzeXN0ZW1fZGV2dHlw
ZShtX2dhbWVwYWRzTW9uaXRvciwgImlucHV0IiwgMCk7CisgICAgbV9nYW1lcGFkc05vdGlmaWVy
ID0gbmV3IFFTb2NrZXROb3RpZmllcih1ZGV2X21vbml0b3JfZ2V0X2ZkKG1fZ2FtZXBhZHNNb25p
dG9yKSwgUVNvY2tldE5vdGlmaWVyOjpSZWFkLCB0aGlzKTsKKyAgICBjb25uZWN0KG1fZ2FtZXBh
ZHNOb3RpZmllciwgU0lHTkFMKGFjdGl2YXRlZChpbnQpKSwgdGhpcywgU0xPVChvbkdhbWVQYWRD
aGFuZ2UoKSkpOworCisgICAgc3RydWN0IHVkZXZfZW51bWVyYXRlKiBlbnVtZXJhdGUgPSB1ZGV2
X2VudW1lcmF0ZV9uZXcobV91ZGV2KTsKKyAgICB1ZGV2X2VudW1lcmF0ZV9hZGRfbWF0Y2hfc3Vi
c3lzdGVtKGVudW1lcmF0ZSwgImlucHV0Iik7CisgICAgdWRldl9lbnVtZXJhdGVfYWRkX21hdGNo
X3Byb3BlcnR5KGVudW1lcmF0ZSwgIklEX0lOUFVUX0pPWVNUSUNLIiwgIjEiKTsKKyAgICB1ZGV2
X2VudW1lcmF0ZV9zY2FuX2RldmljZXMoZW51bWVyYXRlKTsKKyAgICBzdHJ1Y3QgdWRldl9saXN0
X2VudHJ5KiBjdXI7CisgICAgc3RydWN0IHVkZXZfbGlzdF9lbnRyeSogZGV2cyA9IHVkZXZfZW51
bWVyYXRlX2dldF9saXN0X2VudHJ5KGVudW1lcmF0ZSk7CisgICAgdWRldl9saXN0X2VudHJ5X2Zv
cmVhY2goY3VyLCBkZXZzKSB7CisgICAgICAgIGNvbnN0IGNoYXIqIGRldm5hbWUgPSB1ZGV2X2xp
c3RfZW50cnlfZ2V0X25hbWUoY3VyKTsKKyAgICAgICAgc3RydWN0IHVkZXZfZGV2aWNlKiBkZXZp
Y2UgPSB1ZGV2X2RldmljZV9uZXdfZnJvbV9zeXNwYXRoKG1fdWRldiwgZGV2bmFtZSk7CisgICAg
ICAgIGlmIChpc0dhbWVwYWREZXZpY2UoZGV2aWNlKSkKKyAgICAgICAgICAgIHJlZ2lzdGVyRGV2
aWNlKFN0cmluZzo6ZnJvbVVURjgodWRldl9kZXZpY2VfZ2V0X2Rldm5vZGUoZGV2aWNlKSkpOwor
ICAgICAgICB1ZGV2X2RldmljZV91bnJlZihkZXZpY2UpOworICAgIH0KKyAgICB1ZGV2X2VudW1l
cmF0ZV91bnJlZihlbnVtZXJhdGUpOworfQorCitHYW1lcGFkc1F0Ojp+R2FtZXBhZHNRdCgpCit7
Cit9CisKK2Jvb2wgR2FtZXBhZHNRdDo6aXNHYW1lcGFkRGV2aWNlKHN0cnVjdCB1ZGV2X2Rldmlj
ZSogZGV2aWNlKQoreworICAgIGNvbnN0IGNoYXIqIGRldmljZUZpbGUgPSB1ZGV2X2RldmljZV9n
ZXRfZGV2bm9kZShkZXZpY2UpOworICAgIGNvbnN0IGNoYXIqIHN5c2ZzUGF0aCA9IHVkZXZfZGV2
aWNlX2dldF9zeXNwYXRoKGRldmljZSk7CisgICAgaWYgKCFkZXZpY2VGaWxlIHx8ICFzeXNmc1Bh
dGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXVkZXZfZGV2aWNlX2dldF9wcm9w
ZXJ0eV92YWx1ZShkZXZpY2UsICJJRF9JTlBVVCIpIHx8ICF1ZGV2X2RldmljZV9nZXRfcHJvcGVy
dHlfdmFsdWUoZGV2aWNlLCAiSURfSU5QVVRfSk9ZU1RJQ0siKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBRQnl0ZUFycmF5KGRldmljZUZpbGUpLnN0YXJ0c1dpdGgoIi9kZXYv
aW5wdXQvanMiKTsKK30KKwordm9pZCBHYW1lcGFkc1F0OjpvbkdhbWVQYWRDaGFuZ2UoKQorewor
ICAgIHN0cnVjdCB1ZGV2X2RldmljZSogZGV2aWNlID0gdWRldl9tb25pdG9yX3JlY2VpdmVfZGV2
aWNlKG1fZ2FtZXBhZHNNb25pdG9yKTsKKyAgICBpZiAoIWlzR2FtZXBhZERldmljZShkZXZpY2Up
KQorICAgICAgICByZXR1cm47CisgICAgUUJ5dGVBcnJheSBhY3Rpb24odWRldl9kZXZpY2VfZ2V0
X2FjdGlvbihkZXZpY2UpKTsKKyAgICBpZiAoYWN0aW9uID09ICJhZGQiKQorICAgICAgICByZWdp
c3RlckRldmljZSh1ZGV2X2RldmljZV9nZXRfZGV2bm9kZShkZXZpY2UpKTsKKyAgICBlbHNlIGlm
IChhY3Rpb24gPT0gInJlbW92ZSIpCisgICAgICAgIHVucmVnaXN0ZXJEZXZpY2UodWRldl9kZXZp
Y2VfZ2V0X2Rldm5vZGUoZGV2aWNlKSk7Cit9CisKK3ZvaWQgR2FtZXBhZHNRdDo6cmVnaXN0ZXJE
ZXZpY2UoY29uc3QgU3RyaW5nJiBkZXZpY2VGaWxlKQoreworICAgIEFTU0VSVCghbV9kZXZpY2VN
YXAuY29udGFpbnMoZGV2aWNlRmlsZSkpOworCisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgbV9zbG90cy5zaXplKCk7IGluZGV4KyspIHsKKyAgICAgICAgaWYgKCFtX3Nsb3Rz
W2luZGV4XSkgeworICAgICAgICAgICAgbV9zbG90c1tpbmRleF0gPSBHYW1lcGFkRGV2aWNlUXQ6
OmNyZWF0ZShkZXZpY2VGaWxlKTsKKyAgICAgICAgICAgIG1fZGV2aWNlTWFwLmFkZChkZXZpY2VG
aWxlLCBtX3Nsb3RzW2luZGV4XS5nZXQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KK30KKwordm9pZCBHYW1lcGFkc1F0Ojp1bnJlZ2lzdGVyRGV2aWNlKGNvbnN0IFN0
cmluZyYgZGV2aWNlRmlsZSkKK3sKKyAgICBBU1NFUlQobV9kZXZpY2VNYXAuY29udGFpbnMoZGV2
aWNlRmlsZSkpOworCisgICAgR2FtZXBhZERldmljZVF0KiBnYW1lcGFkRGV2aWNlID0gbV9kZXZp
Y2VNYXAudGFrZShkZXZpY2VGaWxlKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IG1fc2xvdHMuZmlu
ZChnYW1lcGFkRGV2aWNlKTsKKworICAgIG1fc2xvdHNbaW5kZXhdLmNsZWFyKCk7Cit9CisKK3Zv
aWQgR2FtZXBhZHNRdDo6dXBkYXRlR2FtZXBhZExpc3QoR2FtZXBhZExpc3QqIGludG8pCit7Cisg
ICAgQVNTRVJUKG1fc2xvdHMuc2l6ZSgpID09IGludG8tPmxlbmd0aCgpKTsKKworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3Nsb3RzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmICht
X3Nsb3RzW2ldLmdldCgpICYmIG1fc2xvdHNbaV0tPmNvbm5lY3RlZCgpKSB7CisgICAgICAgICAg
ICBHYW1lcGFkRGV2aWNlUXQqIGdhbWVwYWREZXZpY2UgPSBtX3Nsb3RzW2ldLmdldCgpOworICAg
ICAgICAgICAgUmVmUHRyPEdhbWVwYWQ+IGdhbWVwYWQgPSBpbnRvLT5pdGVtKGkpOworICAgICAg
ICAgICAgaWYgKCFnYW1lcGFkKQorICAgICAgICAgICAgICAgIGdhbWVwYWQgPSBHYW1lcGFkOjpj
cmVhdGUoKTsKKworICAgICAgICAgICAgZ2FtZXBhZC0+aW5kZXgoaSk7CisgICAgICAgICAgICBn
YW1lcGFkLT5pZChnYW1lcGFkRGV2aWNlLT5pZCgpKTsKKyAgICAgICAgICAgIGdhbWVwYWQtPnRp
bWVzdGFtcChnYW1lcGFkRGV2aWNlLT50aW1lc3RhbXAoKSk7CisgICAgICAgICAgICBnYW1lcGFk
LT5heGVzKGdhbWVwYWREZXZpY2UtPmF4ZXNDb3VudCgpLCBnYW1lcGFkRGV2aWNlLT5heGVzRGF0
YSgpKTsKKyAgICAgICAgICAgIGdhbWVwYWQtPmJ1dHRvbnMoZ2FtZXBhZERldmljZS0+YnV0dG9u
c0NvdW50KCksIGdhbWVwYWREZXZpY2UtPmJ1dHRvbnNEYXRhKCkpOworCisgICAgICAgICAgICBp
bnRvLT5zZXQoaSwgZ2FtZXBhZCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaW50by0+
c2V0KGksIDApOworICAgIH0KK30KKwordm9pZCBzYW1wbGVHYW1lcGFkcyhHYW1lcGFkTGlzdCog
aW50bykKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEdhbWVwYWRzUXQsIGdhbWVwYWRzUXQs
IChpbnRvLT5sZW5ndGgoKSkpOworICAgIGdhbWVwYWRzUXQudXBkYXRlR2FtZXBhZExpc3QoaW50
byk7Cit9CisKKyNpbmNsdWRlICJHYW1lcGFkc1F0Lm1vYyIKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGY0NTU4Y2RmY2Q1MjU1N2Q0MjgxNDYzOTAy
YzRhN2QyM2IzYmQwNi4uZmE1NmZjMDYxN2JlMzM4NzMxNWI1NDQwZTRkZWMxMjdiNmNlYjlkMiAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDEyLTA4LTAyICBNYXJjZWxvIExpcmEgIDxtYXJjZWxvLmxpcmFAb3BlbmJv
c3NhLm9yZz4KKworICAgICAgICBbUXRdIEFkZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNjM3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVHVybiBvbiBH
QU1FUEFEIGZsYWcgYnkgZGVmYXVsdCBmb3IgUXQgcG9ydC4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKwogMjAxMi0wOC0wMSAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBydW4tcGVyZi10ZXN0cyAtLWJ1aWxkLWRpcmVj
dG9yeSBkb2Vzbid0IHdvcmsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9G
ZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpp
bmRleCAzNDQ1MDlmNmY3ODVlZmJlOTM0ZGJkM2RlM2ZiZTEwM2FmMDIxMmRmLi4xMmI1YmQ2ZWY0
YWJjYjg3NGU5NDU3MmEyNzhjYmQxZTBkZGU0NzI5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L0ZlYXR1cmVMaXN0LnBtCkBAIC0yMjYsNyArMjI2LDcgQEAgbXkgQGZlYXR1cmVzID0gKAogICAg
ICAgZGVmaW5lID0+ICJFTkFCTEVfRlVMTFNDUkVFTl9BUEkiLCBkZWZhdWx0ID0+IChpc0FwcGxl
TWFjV2ViS2l0KCkgfHwgaXNFZmwoKSB8fCBpc0d0aygpIHx8IGlzQmxhY2tCZXJyeSgpIHx8IGlz
UXQoKSksIHZhbHVlID0+IFwkZnVsbHNjcmVlbkFQSVN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9u
ID0+ICJnYW1lcGFkIiwgZGVzYyA9PiAiVG9nZ2xlIEdhbWVwYWQgc3VwcG9ydCIsCi0gICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9HQU1FUEFEIiwgZGVmYXVsdCA9PiAoaXNFZmwoKSB8fCBpc0d0aygp
KSwgdmFsdWUgPT4gXCRnYW1lcGFkU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
R0FNRVBBRCIsIGRlZmF1bHQgPT4gKGlzRWZsKCkgfHwgaXNHdGsoKSB8fCBpc1F0KCkpLCB2YWx1
ZSA9PiBcJGdhbWVwYWRTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAiZ2VvbG9jYXRpb24i
LCBkZXNjID0+ICJUb2dnbGUgR2VvbG9jYXRpb24gc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4g
IkVOQUJMRV9HRU9MT0NBVElPTiIsIGRlZmF1bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8fCBpc0d0
aygpIHx8IGlzQmxhY2tCZXJyeSgpKSwgdmFsdWUgPT4gXCRnZW9sb2NhdGlvblN1cHBvcnQgfSwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNTUyODMxNGJhNmViYTI5YWVkMWFmNjA2OTkzODY1YWJmMGU3YjAwLi5mM2NkNDg4
N2E4MTE1YzZhY2VlZDc3NTA5ZjQ0OGU0MTVhMmVhMmFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTItMDgtMDIgIE1hcmNlbG8gTGlyYSAgPG1hcmNlbG8ubGlyYUBvcGVuYm9zc2Eub3JnPgor
CisgICAgICAgIFtRdF0gQWRkIHN1cHBvcnQgZm9yIHRoZSBHYW1lcGFkIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA2MzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbnNraXAgZ2FtZXBhZC1hcGku
aHRtbCBmb3IgdGhlIFF0IHBvcnQsIGJ1dCBnYW1lcGFkLXBvbGxpbmctYWNjZXNzLmh0bWwKKyAg
ICAgICAgaXMgc3RpbGwgZXhwZWN0ZWQgdG8gZmFpbCBiZWNhdXNlIGl0IHJlcXVpcmVzIGFkZGl0
aW9uYWwgdGVzdAorICAgICAgICBpbmZyYXN0cnVjdHVyZS4gU2VlIGFsc28gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyODczCisKKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIw
MTItMDgtMDEgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJ
bmRleGVkREI6IElEQkN1cnNvci5jb250aW51ZShrZXkpIGRvZXMgbm90IHRocm93IGZvciBrZXkg
ImJlaGluZCIgY3Vyc29yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lw
cGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCA1NDc2ZmJiZDBjOGMw
NDA5ZTk0YTY5NDVhN2U1NmI5NDI0YjYzOTJjLi43ZDA1NjRlMWY4ZDIzOTA4NTI5MzY0NzVhOGQx
ZmFkODY1ODE0Mjg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTgyLDkgKzgyLDYgQEAg
ZmFzdC9mb3Jtcy90aW1lCiBmYXN0L2Zvcm1zL3dlZWsKIGZhc3QvZm9ybXMvaW5wdXQtaW4tdGFi
bGUtY2VsbC1uby12YWx1ZS5odG1sCiAKLSMgRU5BQkxFX0dBTUVQQUQgbm90IGVuYWJsZWQuCi1n
YW1lcGFkLwotCiAjIEVOQUJMRShJTlBVVF9TUEVFQ0gpIGlzIGRpc2FibGVkLgogZmFzdC9zcGVl
Y2gKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNTk4NTMz
MzVjNDNmNTNlMmY5ZTRkY2ViODVmYzVkNWE3MzAxMTg2Mi4uZWQ3MDMxYTRhZmM1YWJjOWQxZWZj
NGYzNTQwNTIxMDVkYTFjOGRjNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0
YXRpb25zCkBAIC0xMTgsNiArMTE4LDkgQEAgQlVHV0s4NDYzNSBTS0lQIDogZmFzdC9kb20vSFRN
TERpYWxvZ0VsZW1lbnQgPSBURVhUCiAvLyBTa2lwIHRlc3RzIGluIGZhc3QvdGV4dC9zaGFwaW5n
CiBCVUdXSzkwOTUxIFNLSVAgOiBmYXN0L3RleHQvc2hhcGluZyA9IFBBU1MKIAorLy8gTWlzc2lu
ZyB0ZXN0IGluZnJhc3RydWN0dXJlLCBubyBnYW1lcGFkcyBhdmFpbGFibGUuCitCVUdXSzkyODcz
IFNLSVAgOiBnYW1lcGFkL2dhbWVwYWQtcG9sbGluZy1hY2Nlc3MuaHRtbCA9IFRFWFQKKwogLy8g
Rmxha3kgdGVzdHMKIEJVR1dLOTEzNzYgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3hlZC1p
ZnJhbWUtbW9kaWZ5LXNlbGYuaHRtbCA9IFRFWFQgUEFTUwogQlVHV0s5MTM3OSA6IGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3BvbGljeS1kb2VzLW5vdC1hZmZlY3Qt
Y2hpbGQuaHRtbCA9IFRFWFQgUEFTUwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156086</attachid>
            <date>2012-08-02 08:10:40 -0700</date>
            <delta_ts>2012-08-03 07:21:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90637-20120802121020.patch</filename>
            <type>text/plain</type>
            <size>15303</size>
            <attacher name="Marcelo Lira">marcelo.lira</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA0YzVjZThkYzFiYTFh
ZmU1MmZlNzNlMjQ5M2U1Y2VkMzk0Y2E2Mi4uOTI0MThiYjA5NzM5Y2JlNTVlMDI1ZTEzNjVkOTAx
YWE3ZmVlNGRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA4LTAyICBNYXJj
ZWxvIExpcmEgIDxtYXJjZWxvLmxpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIEFk
ZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciBHYW1lcGFkIEFQSSBvbiB0aGUg
UXQgcG9ydC4KKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBjbGFzcyByZWxp
ZXMgb24gdGhlIExpbnV4CisgICAgICAgIGtlcm5lbCBqb3lzdGljayBBUEkuCisKKyAgICAgICAg
R2FtZXBhZCBkZXZpY2VzIGFyZSByZWNvZ25pemVkIHRocm91Z2ggdGhlIEdhbWVwYWRzUXQKKyAg
ICAgICAgY2xhc3MsIHdoaWNoIHVzZXMgdWRldiBsaWJyYXJ5IHRvIHdhdGNoIGZvciBjb25uZWN0
aW9uCisgICAgICAgIGFuZCBkaXNjb25uZWN0aW9uIG9mIGdhbWVwYWQgZGV2aWNlcy4KKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLnByaToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0dhbWVwYWRzUXQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoR2FtZXBhZERldmljZVF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VRdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdhbWVwYWREZXZpY2VRdDo6R2FtZXBhZERldmljZVF0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWREZXZpY2VRdDo6fkdhbWVwYWREZXZpY2VRdCk6CisgICAgICAgIChXZWJDb3JlOjpH
YW1lcGFkRGV2aWNlUXQ6OnJlYWRDYWxsYmFjayk6CisgICAgICAgIChHYW1lcGFkc1F0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzUXQ6OkdhbWVwYWRzUXQpOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZXBhZHNRdDo6fkdhbWVwYWRzUXQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZHNR
dDo6aXNHYW1lcGFkRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzUXQ6Om9uR2Ft
ZVBhZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc1F0OjpyZWdpc3RlckRldmlj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc1F0Ojp1bnJlZ2lzdGVyRGV2aWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzUXQ6OnVwZGF0ZUdhbWVwYWRMaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnNhbXBsZUdhbWVwYWRzKToKKwogMjAxMi0wOC0wMSAgUGF0cmljayBHYW5zdGVy
ZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXBsYWNlIFdURjo6Z2V0Q3VycmVu
dExvY2FsVGltZSgpIHdpdGggR3JlZ29yaWFuRGF0ZVRpbWU6OnNldFRvQ3VycmVudExvY2FsVGlt
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKaW5kZXggOTNmM2RkYTZhMzA2N2I5NzFmOTdk
ZGQyNzhkNDU3OTA2M2RlOWZhMi4uNGI5MTk5NmUxMzBmMjIxZmFmODMxNWI1NTkzYTU5ZWViMmI1
ODczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtNjEzLDYgKzYxMywxMyBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAgICAkJFBXRC9zdmcvU1ZHWm9vbUV2
ZW50LmlkbAogfQogCitsaW51eC0qOmNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9HQU1FUEFEPTEp
IHsKKyAgSURMX0JJTkRJTkdTICs9IFwKKyAgICAkJFBXRC9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBh
ZC5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTGlzdC5pZGwgXAorICAg
ICQkUFdEL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmlkbAorfQorCiBjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfVklERU9fVFJBQ0s9MSkgewogICBJRExfQklORElOR1MgKz0gXAog
ICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA0NWFl
ZWNmYTNiMjFlOTE5MWY0YWIxYTQ4OWRiNTQyYmFiNDU1YTUwLi44Y2UyZDZiZTkxMTcyMjQ1ODUz
YzE2NTgxMTk2YWZiZmRhMDliZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTMwOTcsNiArMzA5NywyMiBA
QCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfUVVPVEE9MSkgewogICAgICAgICBNb2R1bGVzL3F1
b3RhL1N0b3JhZ2VJbmZvLmNwcAogfQogCitsaW51eC0qOmNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9HQU1FUEFEPTEpIHsKKyAgICBIRUFERVJTICs9IFwKKyAgICAgICAgTW9kdWxlcy9nYW1lcGFk
L0dhbWVwYWQuaFwKKyAgICAgICAgTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmggXAorICAg
ICAgICBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5oIFwKKyAgICAgICAgcGxhdGZv
cm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmggXAorICAgICAgICBwbGF0Zm9ybS9HYW1lcGFk
cy5oCisKKyAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQu
Y3BwIFwKKyAgICAgICAgTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmNwcCBcCisgICAgICAg
IE1vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcCBcCisgICAgICAgIHBsYXRmb3Jt
L2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9xdC9HYW1l
cGFkc1F0LmNwcAorfQorCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU89MSkgewogICAg
IFNPVVJDRVMgKz0gXAogICAgICAgICBodG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcmkKaW5kZXggNTEzZDI2MWE0YTU4NjRhZjkyNTU0MjIyYWJkMGIxYTZjZGE2ODU3ZS4uOGRm
MmNiZjMwNjlhODBjYWRjZjdmY2E4NWNmOGZmMjdlZjBlNjA0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKQEAg
LTE2OSw2ICsxNjksMTMgQEAgY29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9RVF9NT0JJTElUWV9T
WVNURU1JTkZPPTEpIHsKICAgICAgTU9CSUxJVFkgKj0gc3lzdGVtaW5mbwogfQogCitsaW51eC0q
OmNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9HQU1FUEFEPTEpIHsKKyAgICBJTkNMVURFUEFUSCAr
PSBcCisgICAgICAgICQkU09VUkNFX0RJUi9wbGF0Zm9ybS9saW51eCBcCisgICAgICAgICQkU09V
UkNFX0RJUi9Nb2R1bGVzL2dhbWVwYWQKKyAgICBQS0dDT05GSUcgKz0gbGlidWRldgorfQorCiBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU89MSkgewogICAgIGNvbnRhaW5zKERFRklORVMs
IFdURl9VU0VfUVRLSVQ9MSkgewogICAgICAgICBJTkNMVURFUEFUSCArPSAkJFNPVVJDRV9ESVIv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9HYW1lcGFkc1F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0dhbWVwYWRz
UXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjkzNjI2OTczYTdhZWFjNmMzMTI4ZjM5Y2MyNDg3ZDg5MDZlZmI3
ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9HYW1lcGFk
c1F0LmNwcApAQCAtMCwwICsxLDIyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJTmRU
IC0gSW5zdGl0dXRvIE5va2lhIGRlIFRlY25vbG9naWEKKyAqIENvcHlyaWdodCAoQykgMjAxMiBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVwYWRzLmgiCisKKy8vIFdlIGRvIG5v
dCB1c2UgRU5BQkxFIG9yIFVTRSBiZWNhdXNlIG1vYyBkb2VzIG5vdCBleHBhbmQgdGhlc2UgbWFj
cm9zLgorI2lmIGRlZmluZWQoRU5BQkxFX0dBTUVQQUQpCisKKyNpbmNsdWRlICJHYW1lcGFkRGV2
aWNlTGludXguaCIKKyNpbmNsdWRlICJHYW1lcGFkTGlzdC5oIgorCisjaW5jbHVkZSA8UU9iamVj
dD4KKyNpbmNsdWRlIDxRU29ja2V0Tm90aWZpZXI+CisKK2V4dGVybiAiQyIgeworICAgICNpbmNs
dWRlIDxsaWJ1ZGV2Lmg+Cit9CisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBHYW1lcGFkRGV2aWNlUXQgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIEdhbWVwYWREZXZpY2VM
aW51eCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxHYW1l
cGFkRGV2aWNlUXQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGRldmljZUZpbGUpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdhbWVwYWREZXZpY2VRdChkZXZpY2VGaWxlKSk7Cisg
ICAgfQorICAgIH5HYW1lcGFkRGV2aWNlUXQoKTsKKworcHJpdmF0ZToKKyAgICBHYW1lcGFkRGV2
aWNlUXQoY29uc3QgU3RyaW5nJik7CisgICAgUVNvY2tldE5vdGlmaWVyKiBtX25vdGlmaWVyOwor
Citwcml2YXRlIHNsb3RzOgorICAgIGJvb2wgcmVhZENhbGxiYWNrKCk7Cit9OworCitHYW1lcGFk
RGV2aWNlUXQ6OkdhbWVwYWREZXZpY2VRdChjb25zdCBTdHJpbmcmIGRldmljZUZpbGUpCisgICAg
OiBRT2JqZWN0KCkKKyAgICAsIEdhbWVwYWREZXZpY2VMaW51eChkZXZpY2VGaWxlKQoreworICAg
IGlmIChtX2ZpbGVEZXNjcmlwdG9yID09IC0xKQorICAgICAgICByZXR1cm47CisKKyAgICBtX25v
dGlmaWVyID0gbmV3IFFTb2NrZXROb3RpZmllcihtX2ZpbGVEZXNjcmlwdG9yLCBRU29ja2V0Tm90
aWZpZXI6OlJlYWQpOworICAgIGNvbm5lY3QobV9ub3RpZmllciwgU0lHTkFMKGFjdGl2YXRlZChp
bnQpKSwgdGhpcywgU0xPVChyZWFkQ2FsbGJhY2soKSkpOworfQorCitHYW1lcGFkRGV2aWNlUXQ6
On5HYW1lcGFkRGV2aWNlUXQoKQoreworICAgIGRlbGV0ZSBtX25vdGlmaWVyOworfQorCitib29s
IEdhbWVwYWREZXZpY2VRdDo6cmVhZENhbGxiYWNrKCkKK3sKKyAgICBqc19ldmVudCBldmVudDsK
KyAgICBpbnQgbGVuID0gcmVhZChtX2ZpbGVEZXNjcmlwdG9yLCAmZXZlbnQsIHNpemVvZihqc19l
dmVudCkpOworICAgIGlmIChsZW4gIT0gc2l6ZW9mKGV2ZW50KSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHVwZGF0ZUZvckV2ZW50KGV2ZW50KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Y2xhc3MgR2FtZXBhZHNRdCA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorcHVibGlj
OgorICAgIEdhbWVwYWRzUXQodW5zaWduZWQpOworCisgICAgdm9pZCByZWdpc3RlckRldmljZShj
b25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJEZXZpY2UoY29uc3QgU3RyaW5nJik7
CisKKyAgICB2b2lkIHVwZGF0ZUdhbWVwYWRMaXN0KEdhbWVwYWRMaXN0Kik7CisKK3ByaXZhdGUg
c2xvdHM6CisgICAgdm9pZCBvbkdhbWVQYWRDaGFuZ2UoKTsKKworcHJpdmF0ZToKKyAgICB+R2Ft
ZXBhZHNRdCgpOworICAgIGJvb2wgaXNHYW1lcGFkRGV2aWNlKHN0cnVjdCB1ZGV2X2RldmljZSop
OworCisgICAgVmVjdG9yPE93blB0cjxHYW1lcGFkRGV2aWNlUXQ+ID4gbV9zbG90czsKKyAgICBI
YXNoTWFwPFN0cmluZywgR2FtZXBhZERldmljZVF0Kj4gbV9kZXZpY2VNYXA7CisKKyAgICBzdHJ1
Y3QgdWRldiogbV91ZGV2OworICAgIHN0cnVjdCB1ZGV2X21vbml0b3IqIG1fZ2FtZXBhZHNNb25p
dG9yOworICAgIFFTb2NrZXROb3RpZmllciogbV9nYW1lcGFkc05vdGlmaWVyOworfTsKKworR2Ft
ZXBhZHNRdDo6R2FtZXBhZHNRdCh1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBRT2JqZWN0KCkKKyAg
ICAsIG1fc2xvdHMobGVuZ3RoKQoreworICAgIG1fdWRldiA9IHVkZXZfbmV3KCk7CisgICAgbV9n
YW1lcGFkc01vbml0b3IgPSB1ZGV2X21vbml0b3JfbmV3X2Zyb21fbmV0bGluayhtX3VkZXYsICJ1
ZGV2Iik7CisgICAgdWRldl9tb25pdG9yX2VuYWJsZV9yZWNlaXZpbmcobV9nYW1lcGFkc01vbml0
b3IpOworICAgIHVkZXZfbW9uaXRvcl9maWx0ZXJfYWRkX21hdGNoX3N1YnN5c3RlbV9kZXZ0eXBl
KG1fZ2FtZXBhZHNNb25pdG9yLCAiaW5wdXQiLCAwKTsKKyAgICBtX2dhbWVwYWRzTm90aWZpZXIg
PSBuZXcgUVNvY2tldE5vdGlmaWVyKHVkZXZfbW9uaXRvcl9nZXRfZmQobV9nYW1lcGFkc01vbml0
b3IpLCBRU29ja2V0Tm90aWZpZXI6OlJlYWQsIHRoaXMpOworICAgIGNvbm5lY3QobV9nYW1lcGFk
c05vdGlmaWVyLCBTSUdOQUwoYWN0aXZhdGVkKGludCkpLCB0aGlzLCBTTE9UKG9uR2FtZVBhZENo
YW5nZSgpKSk7CisKKyAgICBzdHJ1Y3QgdWRldl9lbnVtZXJhdGUqIGVudW1lcmF0ZSA9IHVkZXZf
ZW51bWVyYXRlX25ldyhtX3VkZXYpOworICAgIHVkZXZfZW51bWVyYXRlX2FkZF9tYXRjaF9zdWJz
eXN0ZW0oZW51bWVyYXRlLCAiaW5wdXQiKTsKKyAgICB1ZGV2X2VudW1lcmF0ZV9hZGRfbWF0Y2hf
cHJvcGVydHkoZW51bWVyYXRlLCAiSURfSU5QVVRfSk9ZU1RJQ0siLCAiMSIpOworICAgIHVkZXZf
ZW51bWVyYXRlX3NjYW5fZGV2aWNlcyhlbnVtZXJhdGUpOworICAgIHN0cnVjdCB1ZGV2X2xpc3Rf
ZW50cnkqIGN1cjsKKyAgICBzdHJ1Y3QgdWRldl9saXN0X2VudHJ5KiBkZXZzID0gdWRldl9lbnVt
ZXJhdGVfZ2V0X2xpc3RfZW50cnkoZW51bWVyYXRlKTsKKyAgICB1ZGV2X2xpc3RfZW50cnlfZm9y
ZWFjaChjdXIsIGRldnMpCisgICAgeworICAgICAgICBjb25zdCBjaGFyKiBkZXZuYW1lID0gdWRl
dl9saXN0X2VudHJ5X2dldF9uYW1lKGN1cik7CisgICAgICAgIHN0cnVjdCB1ZGV2X2RldmljZSog
ZGV2aWNlID0gdWRldl9kZXZpY2VfbmV3X2Zyb21fc3lzcGF0aChtX3VkZXYsIGRldm5hbWUpOwor
ICAgICAgICBpZiAoaXNHYW1lcGFkRGV2aWNlKGRldmljZSkpCisgICAgICAgICAgICByZWdpc3Rl
ckRldmljZShTdHJpbmc6OmZyb21VVEY4KHVkZXZfZGV2aWNlX2dldF9kZXZub2RlKGRldmljZSkp
KTsKKyAgICAgICAgdWRldl9kZXZpY2VfdW5yZWYoZGV2aWNlKTsKKyAgICB9CisgICAgdWRldl9l
bnVtZXJhdGVfdW5yZWYoZW51bWVyYXRlKTsKK30KKworR2FtZXBhZHNRdDo6fkdhbWVwYWRzUXQo
KQoreworfQorCitib29sIEdhbWVwYWRzUXQ6OmlzR2FtZXBhZERldmljZShzdHJ1Y3QgdWRldl9k
ZXZpY2UqIGRldmljZSkKK3sKKyAgICBjb25zdCBjaGFyKiBkZXZpY2VGaWxlID0gdWRldl9kZXZp
Y2VfZ2V0X2Rldm5vZGUoZGV2aWNlKTsKKyAgICBjb25zdCBjaGFyKiBzeXNmc1BhdGggPSB1ZGV2
X2RldmljZV9nZXRfc3lzcGF0aChkZXZpY2UpOworICAgIGlmICghZGV2aWNlRmlsZSB8fCAhc3lz
ZnNQYXRoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCF1ZGV2X2RldmljZV9nZXRf
cHJvcGVydHlfdmFsdWUoZGV2aWNlLCAiSURfSU5QVVQiKSB8fCAhdWRldl9kZXZpY2VfZ2V0X3By
b3BlcnR5X3ZhbHVlKGRldmljZSwgIklEX0lOUFVUX0pPWVNUSUNLIikpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gUUJ5dGVBcnJheShkZXZpY2VGaWxlKS5zdGFydHNXaXRoKCIv
ZGV2L2lucHV0L2pzIik7Cit9CisKK3ZvaWQgR2FtZXBhZHNRdDo6b25HYW1lUGFkQ2hhbmdlKCkK
K3sKKyAgICBzdHJ1Y3QgdWRldl9kZXZpY2UqIGRldmljZSA9IHVkZXZfbW9uaXRvcl9yZWNlaXZl
X2RldmljZShtX2dhbWVwYWRzTW9uaXRvcik7CisgICAgaWYgKCFpc0dhbWVwYWREZXZpY2UoZGV2
aWNlKSkKKyAgICAgICAgcmV0dXJuOworICAgIFFCeXRlQXJyYXkgYWN0aW9uKHVkZXZfZGV2aWNl
X2dldF9hY3Rpb24oZGV2aWNlKSk7CisgICAgaWYgKGFjdGlvbiA9PSAiYWRkIikKKyAgICAgICAg
cmVnaXN0ZXJEZXZpY2UodWRldl9kZXZpY2VfZ2V0X2Rldm5vZGUoZGV2aWNlKSk7CisgICAgZWxz
ZSBpZiAoYWN0aW9uID09ICJyZW1vdmUiKQorICAgICAgICB1bnJlZ2lzdGVyRGV2aWNlKHVkZXZf
ZGV2aWNlX2dldF9kZXZub2RlKGRldmljZSkpOworfQorCit2b2lkIEdhbWVwYWRzUXQ6OnJlZ2lz
dGVyRGV2aWNlKGNvbnN0IFN0cmluZyYgZGV2aWNlRmlsZSkKK3sKKyAgICBBU1NFUlQoIW1fZGV2
aWNlTWFwLmNvbnRhaW5zKGRldmljZUZpbGUpKTsKKworICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IG1fc2xvdHMuc2l6ZSgpOyBpbmRleCsrKSB7CisgICAgICAgIGlmICghbV9z
bG90c1tpbmRleF0pIHsKKyAgICAgICAgICAgIG1fc2xvdHNbaW5kZXhdID0gR2FtZXBhZERldmlj
ZVF0OjpjcmVhdGUoZGV2aWNlRmlsZSk7CisgICAgICAgICAgICBtX2RldmljZU1hcC5hZGQoZGV2
aWNlRmlsZSwgbV9zbG90c1tpbmRleF0uZ2V0KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgR2FtZXBhZHNRdDo6dW5yZWdpc3RlckRldmljZShjb25z
dCBTdHJpbmcmIGRldmljZUZpbGUpCit7CisgICAgQVNTRVJUKG1fZGV2aWNlTWFwLmNvbnRhaW5z
KGRldmljZUZpbGUpKTsKKworICAgIEdhbWVwYWREZXZpY2VRdCogZ2FtZXBhZERldmljZSA9IG1f
ZGV2aWNlTWFwLnRha2UoZGV2aWNlRmlsZSk7CisgICAgdW5zaWduZWQgaW5kZXggPSBtX3Nsb3Rz
LmZpbmQoZ2FtZXBhZERldmljZSk7CisKKyAgICBtX3Nsb3RzW2luZGV4XS5jbGVhcigpOworfQor
Cit2b2lkIEdhbWVwYWRzUXQ6OnVwZGF0ZUdhbWVwYWRMaXN0KEdhbWVwYWRMaXN0KiBpbnRvKQor
eworICAgIEFTU0VSVChtX3Nsb3RzLnNpemUoKSA9PSBpbnRvLT5sZW5ndGgoKSk7CisKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zbG90cy5zaXplKCk7IGkrKykgeworICAgICAgICBp
ZiAobV9zbG90c1tpXS5nZXQoKSAmJiBtX3Nsb3RzW2ldLT5jb25uZWN0ZWQoKSkgeworICAgICAg
ICAgICAgR2FtZXBhZERldmljZVF0KiBnYW1lcGFkRGV2aWNlID0gbV9zbG90c1tpXS5nZXQoKTsK
KyAgICAgICAgICAgIFJlZlB0cjxHYW1lcGFkPiBnYW1lcGFkID0gaW50by0+aXRlbShpKTsKKyAg
ICAgICAgICAgIGlmICghZ2FtZXBhZCkKKyAgICAgICAgICAgICAgICBnYW1lcGFkID0gR2FtZXBh
ZDo6Y3JlYXRlKCk7CisKKyAgICAgICAgICAgIGdhbWVwYWQtPmluZGV4KGkpOworICAgICAgICAg
ICAgZ2FtZXBhZC0+aWQoZ2FtZXBhZERldmljZS0+aWQoKSk7CisgICAgICAgICAgICBnYW1lcGFk
LT50aW1lc3RhbXAoZ2FtZXBhZERldmljZS0+dGltZXN0YW1wKCkpOworICAgICAgICAgICAgZ2Ft
ZXBhZC0+YXhlcyhnYW1lcGFkRGV2aWNlLT5heGVzQ291bnQoKSwgZ2FtZXBhZERldmljZS0+YXhl
c0RhdGEoKSk7CisgICAgICAgICAgICBnYW1lcGFkLT5idXR0b25zKGdhbWVwYWREZXZpY2UtPmJ1
dHRvbnNDb3VudCgpLCBnYW1lcGFkRGV2aWNlLT5idXR0b25zRGF0YSgpKTsKKworICAgICAgICAg
ICAgaW50by0+c2V0KGksIGdhbWVwYWQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGlu
dG8tPnNldChpLCAwKTsKKyAgICB9Cit9CisKK3ZvaWQgc2FtcGxlR2FtZXBhZHMoR2FtZXBhZExp
c3QqIGludG8pCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChHYW1lcGFkc1F0LCBnYW1lcGFk
c1F0LCAoaW50by0+bGVuZ3RoKCkpKTsKKyAgICBnYW1lcGFkc1F0LnVwZGF0ZUdhbWVwYWRMaXN0
KGludG8pOworfQorCisjaW5jbHVkZSAiR2FtZXBhZHNRdC5tb2MiCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDRmNDU1OGNkZmNkNTI1NTdkNDI4MTQ2
MzkwMmM0YTdkMjNiM2JkMDYuLmZhNTZmYzA2MTdiZTMzODczMTViNTQ0MGU0ZGVjMTI3YjZjZWI5
ZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxMi0wOC0wMiAgTWFyY2VsbyBMaXJhICA8bWFyY2Vsby5saXJhQG9w
ZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBBZGQgc3VwcG9ydCBmb3IgdGhlIEdhbWVwYWQg
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDYz
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFR1cm4g
b24gR0FNRVBBRCBmbGFnIGJ5IGRlZmF1bHQgZm9yIFF0IHBvcnQuCisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06CisKIDIwMTItMDgtMDEgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgcnVuLXBlcmYtdGVzdHMgLS1idWlsZC1k
aXJlY3RvcnkgZG9lc24ndCB3b3JrCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3Qu
cG0KaW5kZXggMzQ0NTA5ZjZmNzg1ZWZiZTkzNGRiZDNkZTNmYmUxMDNhZjAyMTJkZi4uMTJiNWJk
NmVmNGFiY2I4NzRlOTQ1NzJhMjc4Y2JkMWUwZGRlNDcyOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjI2LDcgKzIyNiw3IEBAIG15IEBmZWF0dXJlcyA9ICgK
ICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0ZVTExTQ1JFRU5fQVBJIiwgZGVmYXVsdCA9PiAoaXNB
cHBsZU1hY1dlYktpdCgpIHx8IGlzRWZsKCkgfHwgaXNHdGsoKSB8fCBpc0JsYWNrQmVycnkoKSB8
fCBpc1F0KCkpLCB2YWx1ZSA9PiBcJGZ1bGxzY3JlZW5BUElTdXBwb3J0IH0sCiAKICAgICB7IG9w
dGlvbiA9PiAiZ2FtZXBhZCIsIGRlc2MgPT4gIlRvZ2dsZSBHYW1lcGFkIHN1cHBvcnQiLAotICAg
ICAgZGVmaW5lID0+ICJFTkFCTEVfR0FNRVBBRCIsIGRlZmF1bHQgPT4gKGlzRWZsKCkgfHwgaXNH
dGsoKSksIHZhbHVlID0+IFwkZ2FtZXBhZFN1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX0dBTUVQQUQiLCBkZWZhdWx0ID0+IChpc0VmbCgpIHx8IGlzR3RrKCkgfHwgaXNRdCgpKSwg
dmFsdWUgPT4gXCRnYW1lcGFkU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gImdlb2xvY2F0
aW9uIiwgZGVzYyA9PiAiVG9nZ2xlIEdlb2xvY2F0aW9uIHN1cHBvcnQiLAogICAgICAgZGVmaW5l
ID0+ICJFTkFCTEVfR0VPTE9DQVRJT04iLCBkZWZhdWx0ID0+IChpc0FwcGxlV2ViS2l0KCkgfHwg
aXNHdGsoKSB8fCBpc0JsYWNrQmVycnkoKSksIHZhbHVlID0+IFwkZ2VvbG9jYXRpb25TdXBwb3J0
IH0sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggMjU1MjgzMTRiYTZlYmEyOWFlZDFhZjYwNjk5Mzg2NWFiZjBlN2IwMC4uZjNj
ZDQ4ODdhODExNWM2YWNlZWQ3NzUwOWY0NDhlNDE1YTJlYTJhYSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDEyLTA4LTAyICBNYXJjZWxvIExpcmEgIDxtYXJjZWxvLmxpcmFAb3BlbmJvc3NhLm9y
Zz4KKworICAgICAgICBbUXRdIEFkZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNjM3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5za2lwIGdhbWVwYWQt
YXBpLmh0bWwgZm9yIHRoZSBRdCBwb3J0LCBidXQgZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy5odG1s
CisgICAgICAgIGlzIHN0aWxsIGV4cGVjdGVkIHRvIGZhaWwgYmVjYXVzZSBpdCByZXF1aXJlcyBh
ZGRpdGlvbmFsIHRlc3QKKyAgICAgICAgaW5mcmFzdHJ1Y3R1cmUuIFNlZSBhbHNvIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjg3MworCisgICAgICAgICogcGxhdGZv
cm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zOgor
CiAyMDEyLTA4LTAxICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgSW5kZXhlZERCOiBJREJDdXJzb3IuY29udGludWUoa2V5KSBkb2VzIG5vdCB0aHJvdyBmb3Ig
a2V5ICJiZWhpbmQiIGN1cnNvcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
U2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggNTQ3NmZiYmQw
YzhjMDQwOWU5NGE2OTQ1YTdlNTZiOTQyNGI2MzkyYy4uN2QwNTY0ZTFmOGQyMzkwODUyOTM2NDc1
YThkMWZhZDg2NTgxNDI4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC04Miw5ICs4Miw2
IEBAIGZhc3QvZm9ybXMvdGltZQogZmFzdC9mb3Jtcy93ZWVrCiBmYXN0L2Zvcm1zL2lucHV0LWlu
LXRhYmxlLWNlbGwtbm8tdmFsdWUuaHRtbAogCi0jIEVOQUJMRV9HQU1FUEFEIG5vdCBlbmFibGVk
LgotZ2FtZXBhZC8KLQogIyBFTkFCTEUoSU5QVVRfU1BFRUNIKSBpcyBkaXNhYmxlZC4KIGZhc3Qv
c3BlZWNoCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDU5
ODUzMzM1YzQzZjUzZTJmOWU0ZGNlYjg1ZmM1ZDVhNzMwMTE4NjIuLmVkNzAzMWE0YWZjNWFiYzlk
MWVmYzRmMzU0MDUyMTA1ZGExYzhkYzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMTE4LDYgKzExOCw5IEBAIEJVR1dLODQ2MzUgU0tJUCA6IGZhc3QvZG9t
L0hUTUxEaWFsb2dFbGVtZW50ID0gVEVYVAogLy8gU2tpcCB0ZXN0cyBpbiBmYXN0L3RleHQvc2hh
cGluZwogQlVHV0s5MDk1MSBTS0lQIDogZmFzdC90ZXh0L3NoYXBpbmcgPSBQQVNTCiAKKy8vIE1p
c3NpbmcgdGVzdCBpbmZyYXN0cnVjdHVyZSwgbm8gZ2FtZXBhZHMgYXZhaWxhYmxlLgorQlVHV0s5
Mjg3MyBTS0lQIDogZ2FtZXBhZC9nYW1lcGFkLXBvbGxpbmctYWNjZXNzLmh0bWwgPSBURVhUCisK
IC8vIEZsYWt5IHRlc3RzCiBCVUdXSzkxMzc2IDogaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94
ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwgPSBURVhUIFBBU1MKIEJVR1dLOTEzNzkgOiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wb2xpY3ktZG9lcy1ub3QtYWZm
ZWN0LWNoaWxkLmh0bWwgPSBURVhUIFBBU1MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156371</attachid>
            <date>2012-08-03 07:21:18 -0700</date>
            <delta_ts>2012-08-04 10:14:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90637-20120803112058.patch</filename>
            <type>text/plain</type>
            <size>16407</size>
            <attacher name="Marcelo Lira">marcelo.lira</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZlODRiNjVlMjZjOGZm
NzZkNGRiMjhlZjRmYzA2MTI0YTZlZjc1Ni4uZDU0MmM0YzEyYWVmMDJjMzljOTdjYTc2MTBkNzEy
YzBlYTAxZThlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA4LTAzICBNYXJj
ZWxvIExpcmEgIDxtYXJjZWxvLmxpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIEFk
ZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciBHYW1lcGFkIEFQSSBvbiB0aGUg
UXQgcG9ydC4KKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBjbGFzcyByZWxp
ZXMgb24gdGhlIExpbnV4CisgICAgICAgIGtlcm5lbCBqb3lzdGljayBBUEkuCisKKyAgICAgICAg
R2FtZXBhZCBkZXZpY2VzIGFyZSByZWNvZ25pemVkIHRocm91Z2ggdGhlIEdhbWVwYWRzUXQKKyAg
ICAgICAgY2xhc3MsIHdoaWNoIHVzZXMgdGhlIHVkZXYgbGlicmFyeSB0byB3YXRjaCBmb3IgY29u
bmVjdGlvbiwKKyAgICAgICAgZGlzY29ubmVjdGlvbiBhbmQgb3RoZXIgZ2FtZXBhZCByZWxhdGVk
IGV2ZW50cy4KKworICAgICAgICBUZXN0cyBmb3IgdGhpcyBmZWF0dXJlIGFscmVhZHkgZXhpc3Qu
CisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5wcmk6CisgICAgICAgICogVGFyZ2V0LnByaToK
KyAgICAgICAgKiBXZWJDb3JlLnByaToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9HYW1lcGFkc1F0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEdhbWVwYWREZXZpY2VR
dCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlUXQ6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlUXQ6OkdhbWVwYWREZXZpY2VRdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHYW1lcGFkRGV2aWNlUXQ6On5HYW1lcGFkRGV2aWNlUXQpOgorICAgICAgICAoV2Vi
Q29yZTo6R2FtZXBhZERldmljZVF0OjpyZWFkQ2FsbGJhY2spOgorICAgICAgICAoR2FtZXBhZHNR
dCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc1F0OjpHYW1lcGFkc1F0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdhbWVwYWRzUXQ6On5HYW1lcGFkc1F0KToKKyAgICAgICAgKFdlYkNvcmU6Okdh
bWVwYWRzUXQ6OmlzR2FtZXBhZERldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc1F0
OjpvbkdhbWVQYWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZHNRdDo6cmVnaXN0
ZXJEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZHNRdDo6dW5yZWdpc3RlckRldmlj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc1F0Ojp1cGRhdGVHYW1lcGFkTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzYW1wbGVHYW1lcGFkcyk6CisKIDIwMTItMDgtMDMgIFRvciBBcm5l
IFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgogCiAgICAgICAgIEFkZCBtaXNz
aW5nIGluY2x1ZGUgdG8gYnVpbGQgb24gTWFjIE9TIDEwLjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LnByaQppbmRleCA5M2YzZGRhNmEzMDY3Yjk3MWY5N2RkZDI3OGQ0NTc5MDYzZGU5ZmEyLi4wNzI2
YzZiZDJlY2Q0MzRjOTdkOGM1MGQwMDI4NjUwMGU1MmU5ODMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMucHJpCkBAIC02MTMsNiArNjEzLDEzIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9T
Vkc9MSkgewogICAgICQkUFdEL3N2Zy9TVkdab29tRXZlbnQuaWRsCiB9CiAKK2NvbnRhaW5zKERF
RklORVMsIEVOQUJMRV9HQU1FUEFEPTEpIHsKKyAgSURMX0JJTkRJTkdTICs9IFwKKyAgICAkJFBX
RC9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvZ2FtZXBh
ZC9HYW1lcGFkTGlzdC5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JH
YW1lcGFkLmlkbAorfQorCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU9fVFJBQ0s9MSkg
ewogICBJRExfQklORElOR1MgKz0gXAogICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlk
bCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQppbmRleCA2YjdlYTM3NjA1NWYxZTMxOTA1NTRiYWU3OGNiMjRmYWYwNGVj
MDVjLi4zZmUxNzEzNzc1NGVjMWU0NjJhOTRkOGRlNGU5MTlhZDIxNDViOTIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKQEAgLTMwOTgsNiArMzA5OCwyMiBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfUVVPVEE9
MSkgewogICAgICAgICBNb2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmNwcAogfQogCitjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfR0FNRVBBRD0xKSB7CisgICAgSEVBREVSUyArPSBcCisgICAgICAg
IE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmhcCisgICAgICAgIE1vZHVsZXMvZ2FtZXBhZC9HYW1l
cGFkTGlzdC5oIFwKKyAgICAgICAgTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuaCBc
CisgICAgICAgIHBsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oIFwKKyAgICAgICAg
cGxhdGZvcm0vR2FtZXBhZHMuaAorCisgICAgU09VUkNFUyArPSBcCisgICAgICAgIE1vZHVsZXMv
Z2FtZXBhZC9HYW1lcGFkLmNwcCBcCisgICAgICAgIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTGlz
dC5jcHAgXAorICAgICAgICBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAgXAor
ICAgICAgICBwbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguY3BwIFwKKyAgICAgICAg
cGxhdGZvcm0vcXQvR2FtZXBhZHNRdC5jcHAKK30KKwogY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X1ZJREVPPTEpIHsKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgaHRtbC9IVE1MQXVkaW9FbGVt
ZW50LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJpCmluZGV4IDJhNTlkYzAzMTc5MDNlYjc1YzUzYThmMTFmNGUy
NTU5MTUzODdhOWQuLjBmZmJmOWM4Nzk4Yzc4NWY0MGJkYWRkYzAwMWFlNzlkYjdkNGNkNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJpCkBAIC0xNjksNiArMTY5LDEzIEBAIGNvbnRhaW5zKERFRklORVMsIFdURl9V
U0VfUVRfTU9CSUxJVFlfU1lTVEVNSU5GTz0xKSB7CiAgICAgIE1PQklMSVRZICo9IHN5c3RlbWlu
Zm8KIH0KIAorY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0dBTUVQQUQ9MSkgeworICAgIElOQ0xV
REVQQVRIICs9IFwKKyAgICAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2xpbnV4IFwKKyAgICAg
ICAgJCRTT1VSQ0VfRElSL01vZHVsZXMvZ2FtZXBhZAorICAgIFBLR0NPTkZJRyArPSBsaWJ1ZGV2
Cit9CisKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9WSURFTz0xKSB7CiAgICAgY29udGFpbnMo
REVGSU5FUywgV1RGX1VTRV9RVEtJVD0xKSB7CiAgICAgICAgIElOQ0xVREVQQVRIICs9ICQkU09V
UkNFX0RJUi9wbGF0Zm9ybS9ncmFwaGljcy9tYWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L0dhbWVwYWRzUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQv
R2FtZXBhZHNRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTM2MjY5NzNhN2FlYWM2YzMxMjhmMzljYzI0ODdk
ODkwNmVmYjdmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0
L0dhbWVwYWRzUXQuY3BwCkBAIC0wLDAgKzEsMjI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIElOZFQgLSBJbnN0aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQorICogQ29weXJpZ2h0IChD
KSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBhZHMuaCIKKworLy8g
V2UgZG8gbm90IHVzZSBFTkFCTEUgb3IgVVNFIGJlY2F1c2UgbW9jIGRvZXMgbm90IGV4cGFuZCB0
aGVzZSBtYWNyb3MuCisjaWYgZGVmaW5lZChFTkFCTEVfR0FNRVBBRCkKKworI2luY2x1ZGUgIkdh
bWVwYWREZXZpY2VMaW51eC5oIgorI2luY2x1ZGUgIkdhbWVwYWRMaXN0LmgiCisKKyNpbmNsdWRl
IDxRT2JqZWN0PgorI2luY2x1ZGUgPFFTb2NrZXROb3RpZmllcj4KKworZXh0ZXJuICJDIiB7Cisg
ICAgI2luY2x1ZGUgPGxpYnVkZXYuaD4KK30KKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEdhbWVwYWREZXZpY2VRdCA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgR2FtZXBh
ZERldmljZUxpbnV4IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPEdhbWVwYWREZXZpY2VRdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZGV2aWNlRmlsZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgR2FtZXBhZERldmljZVF0KGRldmljZUZp
bGUpKTsKKyAgICB9CisgICAgfkdhbWVwYWREZXZpY2VRdCgpOworCitwcml2YXRlOgorICAgIEdh
bWVwYWREZXZpY2VRdChjb25zdCBTdHJpbmcmKTsKKyAgICBRU29ja2V0Tm90aWZpZXIqIG1fbm90
aWZpZXI7CisKK3ByaXZhdGUgc2xvdHM6CisgICAgYm9vbCByZWFkQ2FsbGJhY2soKTsKK307CisK
K0dhbWVwYWREZXZpY2VRdDo6R2FtZXBhZERldmljZVF0KGNvbnN0IFN0cmluZyYgZGV2aWNlRmls
ZSkKKyAgICA6IFFPYmplY3QoKQorICAgICwgR2FtZXBhZERldmljZUxpbnV4KGRldmljZUZpbGUp
Cit7CisgICAgaWYgKG1fZmlsZURlc2NyaXB0b3IgPT0gLTEpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fbm90aWZpZXIgPSBuZXcgUVNvY2tldE5vdGlmaWVyKG1fZmlsZURlc2NyaXB0b3IsIFFT
b2NrZXROb3RpZmllcjo6UmVhZCk7CisgICAgY29ubmVjdChtX25vdGlmaWVyLCBTSUdOQUwoYWN0
aXZhdGVkKGludCkpLCB0aGlzLCBTTE9UKHJlYWRDYWxsYmFjaygpKSk7Cit9CisKK0dhbWVwYWRE
ZXZpY2VRdDo6fkdhbWVwYWREZXZpY2VRdCgpCit7CisgICAgZGVsZXRlIG1fbm90aWZpZXI7Cit9
CisKK2Jvb2wgR2FtZXBhZERldmljZVF0OjpyZWFkQ2FsbGJhY2soKQoreworICAgIGpzX2V2ZW50
IGV2ZW50OworICAgIGludCBsZW4gPSByZWFkKG1fZmlsZURlc2NyaXB0b3IsICZldmVudCwgc2l6
ZW9mKGpzX2V2ZW50KSk7CisgICAgaWYgKGxlbiAhPSBzaXplb2YoZXZlbnQpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgdXBkYXRlRm9yRXZlbnQoZXZlbnQpOworICAgIHJldHVybiB0cnVl
OworfQorCitjbGFzcyBHYW1lcGFkc1F0IDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNU
CitwdWJsaWM6CisgICAgR2FtZXBhZHNRdCh1bnNpZ25lZCk7CisKKyAgICB2b2lkIHJlZ2lzdGVy
RGV2aWNlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgdW5yZWdpc3RlckRldmljZShjb25zdCBT
dHJpbmcmKTsKKworICAgIHZvaWQgdXBkYXRlR2FtZXBhZExpc3QoR2FtZXBhZExpc3QqKTsKKwor
cHJpdmF0ZSBzbG90czoKKyAgICB2b2lkIG9uR2FtZVBhZENoYW5nZSgpOworCitwcml2YXRlOgor
ICAgIH5HYW1lcGFkc1F0KCk7CisgICAgYm9vbCBpc0dhbWVwYWREZXZpY2Uoc3RydWN0IHVkZXZf
ZGV2aWNlKik7CisKKyAgICBWZWN0b3I8T3duUHRyPEdhbWVwYWREZXZpY2VRdD4gPiBtX3Nsb3Rz
OworICAgIEhhc2hNYXA8U3RyaW5nLCBHYW1lcGFkRGV2aWNlUXQqPiBtX2RldmljZU1hcDsKKwor
ICAgIHN0cnVjdCB1ZGV2KiBtX3VkZXY7CisgICAgc3RydWN0IHVkZXZfbW9uaXRvciogbV9nYW1l
cGFkc01vbml0b3I7CisgICAgUVNvY2tldE5vdGlmaWVyKiBtX2dhbWVwYWRzTm90aWZpZXI7Cit9
OworCitHYW1lcGFkc1F0OjpHYW1lcGFkc1F0KHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IFFPYmpl
Y3QoKQorICAgICwgbV9zbG90cyhsZW5ndGgpCit7CisgICAgbV91ZGV2ID0gdWRldl9uZXcoKTsK
KyAgICBtX2dhbWVwYWRzTW9uaXRvciA9IHVkZXZfbW9uaXRvcl9uZXdfZnJvbV9uZXRsaW5rKG1f
dWRldiwgInVkZXYiKTsKKyAgICB1ZGV2X21vbml0b3JfZW5hYmxlX3JlY2VpdmluZyhtX2dhbWVw
YWRzTW9uaXRvcik7CisgICAgdWRldl9tb25pdG9yX2ZpbHRlcl9hZGRfbWF0Y2hfc3Vic3lzdGVt
X2RldnR5cGUobV9nYW1lcGFkc01vbml0b3IsICJpbnB1dCIsIDApOworICAgIG1fZ2FtZXBhZHNO
b3RpZmllciA9IG5ldyBRU29ja2V0Tm90aWZpZXIodWRldl9tb25pdG9yX2dldF9mZChtX2dhbWVw
YWRzTW9uaXRvciksIFFTb2NrZXROb3RpZmllcjo6UmVhZCwgdGhpcyk7CisgICAgY29ubmVjdCht
X2dhbWVwYWRzTm90aWZpZXIsIFNJR05BTChhY3RpdmF0ZWQoaW50KSksIHRoaXMsIFNMT1Qob25H
YW1lUGFkQ2hhbmdlKCkpKTsKKworICAgIHN0cnVjdCB1ZGV2X2VudW1lcmF0ZSogZW51bWVyYXRl
ID0gdWRldl9lbnVtZXJhdGVfbmV3KG1fdWRldik7CisgICAgdWRldl9lbnVtZXJhdGVfYWRkX21h
dGNoX3N1YnN5c3RlbShlbnVtZXJhdGUsICJpbnB1dCIpOworICAgIHVkZXZfZW51bWVyYXRlX2Fk
ZF9tYXRjaF9wcm9wZXJ0eShlbnVtZXJhdGUsICJJRF9JTlBVVF9KT1lTVElDSyIsICIxIik7Cisg
ICAgdWRldl9lbnVtZXJhdGVfc2Nhbl9kZXZpY2VzKGVudW1lcmF0ZSk7CisgICAgc3RydWN0IHVk
ZXZfbGlzdF9lbnRyeSogY3VyOworICAgIHN0cnVjdCB1ZGV2X2xpc3RfZW50cnkqIGRldnMgPSB1
ZGV2X2VudW1lcmF0ZV9nZXRfbGlzdF9lbnRyeShlbnVtZXJhdGUpOworICAgIHVkZXZfbGlzdF9l
bnRyeV9mb3JlYWNoKGN1ciwgZGV2cykKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIqIGRldm5h
bWUgPSB1ZGV2X2xpc3RfZW50cnlfZ2V0X25hbWUoY3VyKTsKKyAgICAgICAgc3RydWN0IHVkZXZf
ZGV2aWNlKiBkZXZpY2UgPSB1ZGV2X2RldmljZV9uZXdfZnJvbV9zeXNwYXRoKG1fdWRldiwgZGV2
bmFtZSk7CisgICAgICAgIGlmIChpc0dhbWVwYWREZXZpY2UoZGV2aWNlKSkKKyAgICAgICAgICAg
IHJlZ2lzdGVyRGV2aWNlKFN0cmluZzo6ZnJvbVVURjgodWRldl9kZXZpY2VfZ2V0X2Rldm5vZGUo
ZGV2aWNlKSkpOworICAgICAgICB1ZGV2X2RldmljZV91bnJlZihkZXZpY2UpOworICAgIH0KKyAg
ICB1ZGV2X2VudW1lcmF0ZV91bnJlZihlbnVtZXJhdGUpOworfQorCitHYW1lcGFkc1F0Ojp+R2Ft
ZXBhZHNRdCgpCit7Cit9CisKK2Jvb2wgR2FtZXBhZHNRdDo6aXNHYW1lcGFkRGV2aWNlKHN0cnVj
dCB1ZGV2X2RldmljZSogZGV2aWNlKQoreworICAgIGNvbnN0IGNoYXIqIGRldmljZUZpbGUgPSB1
ZGV2X2RldmljZV9nZXRfZGV2bm9kZShkZXZpY2UpOworICAgIGNvbnN0IGNoYXIqIHN5c2ZzUGF0
aCA9IHVkZXZfZGV2aWNlX2dldF9zeXNwYXRoKGRldmljZSk7CisgICAgaWYgKCFkZXZpY2VGaWxl
IHx8ICFzeXNmc1BhdGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXVkZXZfZGV2
aWNlX2dldF9wcm9wZXJ0eV92YWx1ZShkZXZpY2UsICJJRF9JTlBVVCIpIHx8ICF1ZGV2X2Rldmlj
ZV9nZXRfcHJvcGVydHlfdmFsdWUoZGV2aWNlLCAiSURfSU5QVVRfSk9ZU1RJQ0siKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBRQnl0ZUFycmF5KGRldmljZUZpbGUpLnN0YXJ0
c1dpdGgoIi9kZXYvaW5wdXQvanMiKTsKK30KKwordm9pZCBHYW1lcGFkc1F0OjpvbkdhbWVQYWRD
aGFuZ2UoKQoreworICAgIHN0cnVjdCB1ZGV2X2RldmljZSogZGV2aWNlID0gdWRldl9tb25pdG9y
X3JlY2VpdmVfZGV2aWNlKG1fZ2FtZXBhZHNNb25pdG9yKTsKKyAgICBpZiAoIWlzR2FtZXBhZERl
dmljZShkZXZpY2UpKQorICAgICAgICByZXR1cm47CisgICAgUUJ5dGVBcnJheSBhY3Rpb24odWRl
dl9kZXZpY2VfZ2V0X2FjdGlvbihkZXZpY2UpKTsKKyAgICBpZiAoYWN0aW9uID09ICJhZGQiKQor
ICAgICAgICByZWdpc3RlckRldmljZSh1ZGV2X2RldmljZV9nZXRfZGV2bm9kZShkZXZpY2UpKTsK
KyAgICBlbHNlIGlmIChhY3Rpb24gPT0gInJlbW92ZSIpCisgICAgICAgIHVucmVnaXN0ZXJEZXZp
Y2UodWRldl9kZXZpY2VfZ2V0X2Rldm5vZGUoZGV2aWNlKSk7Cit9CisKK3ZvaWQgR2FtZXBhZHNR
dDo6cmVnaXN0ZXJEZXZpY2UoY29uc3QgU3RyaW5nJiBkZXZpY2VGaWxlKQoreworICAgIEFTU0VS
VCghbV9kZXZpY2VNYXAuY29udGFpbnMoZGV2aWNlRmlsZSkpOworCisgICAgZm9yICh1bnNpZ25l
ZCBpbmRleCA9IDA7IGluZGV4IDwgbV9zbG90cy5zaXplKCk7IGluZGV4KyspIHsKKyAgICAgICAg
aWYgKCFtX3Nsb3RzW2luZGV4XSkgeworICAgICAgICAgICAgbV9zbG90c1tpbmRleF0gPSBHYW1l
cGFkRGV2aWNlUXQ6OmNyZWF0ZShkZXZpY2VGaWxlKTsKKyAgICAgICAgICAgIG1fZGV2aWNlTWFw
LmFkZChkZXZpY2VGaWxlLCBtX3Nsb3RzW2luZGV4XS5nZXQoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBHYW1lcGFkc1F0Ojp1bnJlZ2lzdGVyRGV2
aWNlKGNvbnN0IFN0cmluZyYgZGV2aWNlRmlsZSkKK3sKKyAgICBBU1NFUlQobV9kZXZpY2VNYXAu
Y29udGFpbnMoZGV2aWNlRmlsZSkpOworCisgICAgR2FtZXBhZERldmljZVF0KiBnYW1lcGFkRGV2
aWNlID0gbV9kZXZpY2VNYXAudGFrZShkZXZpY2VGaWxlKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9
IG1fc2xvdHMuZmluZChnYW1lcGFkRGV2aWNlKTsKKworICAgIG1fc2xvdHNbaW5kZXhdLmNsZWFy
KCk7Cit9CisKK3ZvaWQgR2FtZXBhZHNRdDo6dXBkYXRlR2FtZXBhZExpc3QoR2FtZXBhZExpc3Qq
IGludG8pCit7CisgICAgQVNTRVJUKG1fc2xvdHMuc2l6ZSgpID09IGludG8tPmxlbmd0aCgpKTsK
KworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Nsb3RzLnNpemUoKTsgaSsrKSB7Cisg
ICAgICAgIGlmIChtX3Nsb3RzW2ldLmdldCgpICYmIG1fc2xvdHNbaV0tPmNvbm5lY3RlZCgpKSB7
CisgICAgICAgICAgICBHYW1lcGFkRGV2aWNlUXQqIGdhbWVwYWREZXZpY2UgPSBtX3Nsb3RzW2ld
LmdldCgpOworICAgICAgICAgICAgUmVmUHRyPEdhbWVwYWQ+IGdhbWVwYWQgPSBpbnRvLT5pdGVt
KGkpOworICAgICAgICAgICAgaWYgKCFnYW1lcGFkKQorICAgICAgICAgICAgICAgIGdhbWVwYWQg
PSBHYW1lcGFkOjpjcmVhdGUoKTsKKworICAgICAgICAgICAgZ2FtZXBhZC0+aW5kZXgoaSk7Cisg
ICAgICAgICAgICBnYW1lcGFkLT5pZChnYW1lcGFkRGV2aWNlLT5pZCgpKTsKKyAgICAgICAgICAg
IGdhbWVwYWQtPnRpbWVzdGFtcChnYW1lcGFkRGV2aWNlLT50aW1lc3RhbXAoKSk7CisgICAgICAg
ICAgICBnYW1lcGFkLT5heGVzKGdhbWVwYWREZXZpY2UtPmF4ZXNDb3VudCgpLCBnYW1lcGFkRGV2
aWNlLT5heGVzRGF0YSgpKTsKKyAgICAgICAgICAgIGdhbWVwYWQtPmJ1dHRvbnMoZ2FtZXBhZERl
dmljZS0+YnV0dG9uc0NvdW50KCksIGdhbWVwYWREZXZpY2UtPmJ1dHRvbnNEYXRhKCkpOworCisg
ICAgICAgICAgICBpbnRvLT5zZXQoaSwgZ2FtZXBhZCk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgaW50by0+c2V0KGksIDApOworICAgIH0KK30KKwordm9pZCBzYW1wbGVHYW1lcGFkcyhH
YW1lcGFkTGlzdCogaW50bykKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEdhbWVwYWRzUXQs
IGdhbWVwYWRzUXQsIChpbnRvLT5sZW5ndGgoKSkpOworICAgIGdhbWVwYWRzUXQudXBkYXRlR2Ft
ZXBhZExpc3QoaW50byk7Cit9CisKKyNpbmNsdWRlICJHYW1lcGFkc1F0Lm1vYyIKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODM5NjU2YTJlYmI2MGI3
NzFjNzA3Y2JjYzU0Zjk3YjY2NDk2YTdkNy4uZGU2NzNlOGEwMTc2NjE1NWFmNGY2MzdjNjFmNzc0
NzNkOGFlZTgwZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA4LTAzICBNYXJjZWxvIExpcmEgIDxtYXJjZWxv
LmxpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIEFkZCBzdXBwb3J0IGZvciB0aGUg
R2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkwNjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSWYgdGhlIGxpYnVkZXYgbGlicmFyeSBpcyBwcmVzZW50LCB0aGUgR0FNRVBBRCBmbGFnIGlz
CisgICAgICAgIHR1cm5lZCBvbiBieSBkZWZhdWx0IGZvciB0aGUgUXQgcG9ydC4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKyAgICAgICAgKiBxbWFrZS9t
a3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZjoKKwogMjAxMi0wOC0wMyAgTWFyaW8gU2FuY2hl
eiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWls
ZCBmaXggZm9yIEdUSyBhZnRlciByMTI0NTgxLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1
cmVMaXN0LnBtCmluZGV4IGVjNDMzYTRjY2I2ZjY3ZWIxZTA4YmFjZmEzNTA1NzJiNzg1YjQ1YWMu
LmJmZThjZjAzYjlhZTNlYjZmZGVhMGFhZDg3YjkzZGY1YWJjYzAyOWUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KQEAgLTIyNiw3ICsyMjYsNyBAQCBteSBAZmVhdHVy
ZXMgPSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9GVUxMU0NSRUVOX0FQSSIsIGRlZmF1bHQg
PT4gKGlzQXBwbGVNYWNXZWJLaXQoKSB8fCBpc0VmbCgpIHx8IGlzR3RrKCkgfHwgaXNCbGFja0Jl
cnJ5KCkgfHwgaXNRdCgpKSwgdmFsdWUgPT4gXCRmdWxsc2NyZWVuQVBJU3VwcG9ydCB9LAogCiAg
ICAgeyBvcHRpb24gPT4gImdhbWVwYWQiLCBkZXNjID0+ICJUb2dnbGUgR2FtZXBhZCBzdXBwb3J0
IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0dBTUVQQUQiLCBkZWZhdWx0ID0+IChpc0VmbCgp
IHx8IGlzR3RrKCkpLCB2YWx1ZSA9PiBcJGdhbWVwYWRTdXBwb3J0IH0sCisgICAgICBkZWZpbmUg
PT4gIkVOQUJMRV9HQU1FUEFEIiwgZGVmYXVsdCA9PiAoaXNFZmwoKSB8fCBpc0d0aygpIHx8IGlz
UXQoKSksIHZhbHVlID0+IFwkZ2FtZXBhZFN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJn
ZW9sb2NhdGlvbiIsIGRlc2MgPT4gIlRvZ2dsZSBHZW9sb2NhdGlvbiBzdXBwb3J0IiwKICAgICAg
IGRlZmluZSA9PiAiRU5BQkxFX0dFT0xPQ0FUSU9OIiwgZGVmYXVsdCA9PiAoaXNBcHBsZVdlYktp
dCgpIHx8IGlzR3RrKCkgfHwgaXNCbGFja0JlcnJ5KCkpLCB2YWx1ZSA9PiBcJGdlb2xvY2F0aW9u
U3VwcG9ydCB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0
dXJlcy5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgppbmRl
eCA0YTY0NDM0MjcwNDFhMjliYWFkZTgwZjFiOWU4OGQ5N2IwZTJhYjJlLi5kYjgxZjRkODJiNzZl
MGU5ZmViNzViM2M0NmZjODUwNzNhZDE1NThjIDEwMDY0NAotLS0gYS9Ub29scy9xbWFrZS9ta3Nw
ZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZgorKysgYi9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1
cmVzL2ZlYXR1cmVzLnByZgpAQCAtMTY5LDYgKzE2OSwxMSBAQCBoYXZlUXQoNSkgewogICAgICFu
b193ZWJraXQyOiBERUZJTkVTICs9IEVOQUJMRV9GVUxMU0NSRUVOX0FQST0xCiB9CiAKKyMgR2Ft
ZXBhZCBBUEkgU3VwcG9ydAorbGludXgtKjohY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0dBTUVQ
QUQ9LikgeworICAgIHBhY2thZ2VzRXhpc3QobGlidWRldik6IERFRklORVMgKz0gRU5BQkxFX0dB
TUVQQUQ9MQorfQorCiBoYXZlUXQoNCkgewogICAgIGhhdmVRdE1vZHVsZShkZWNsYXJhdGl2ZSk6
IERFRklORVMgKz0gSEFWRV9RUVVJQ0sxPTEKIH0gZWxzZSB7CkBAIC0yNDUsNiArMjUwLDE0IEBA
IGhhdmVRdCg0KTpjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9MSk6Y29udGFpbnMoREVG
SU5FUywgV1RGX1VTRV8zRF9HUkFQSElDCiAgICAgZXJyb3IoIldlYkdMIHJlcXVpcmVzIFF0IHRv
IGJlIGNvbmZpZ3VyZWQgd2l0aCBPcGVuR0wuIFBsZWFzZSByZWNvbmZpZ3VyZSBRdCB3aXRoIE9w
ZW5HTCwgb3IgYnVpbGQgV2ViS2l0IHdpdGhvdXQgV2ViR0wuIikKIH0KIAorY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX0dBTUVQQUQ9MSkgeworICAgICFwYWNrYWdlc0V4aXN0KGxpYnVkZXYpIHsK
KyAgICAgICAgZXJyb3IoIkdhbWVwYWQgQVBJIHJlcXVpcmVzIGxpYnVkZXYgdG8gYnVpbGQuIFBs
ZWFzZSBpbnN0YWxsIGxpYnVkZXYgZGV2ZWxvcG1lbnQgZmlsZXMsIG9yIGJ1aWxkIFdlYktpdCB3
aXRob3V0IGdhbWVwYWQuIikKKyAgICB9IGVsc2U6IWxpbnV4LSogeworICAgICAgICBlcnJvcigi
Q3VycmVudGx5IHRoZSBHYW1lcGFkIEFQSSBpcyBzdXBwb3J0ZWQgb25seSBvbiBMaW51eCwgYnVp
bGQgV2ViS2l0IHdpdGhvdXQgZ2FtZXBhZC4iKQorICAgIH0KK30KKwogIyBTbGlkZXIgVG91Y2gg
aXMgc2Vuc2libGUgdG8gdXNlIHdoZW4gY29tcGlsaW5nIFdlYktpdDIKIGhhdmVRdCg1KTpjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfVE9VQ0hfRVZFTlRTPTEpIHsKICAgICBERUZJTkVTICs9IEVO
QUJMRV9UT1VDSF9TTElERVI9MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE2ZWRmMzI0MGNiNWIxYTVhZTEwM2ZlZGVlM2Vj
M2RjNGFhZTA0NjcuLmVmNmI5NDM5ZjMxMGYxMDNhNjUxOTNlNGI1MzgyN2M0M2ZlMjJkMWIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOC0wMyAgTWFyY2VsbyBMaXJhICA8bWFyY2Vsby5s
aXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBBZGQgc3VwcG9ydCBmb3IgdGhlIEdh
bWVwYWQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDYzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IERpZCBub3QgdW5za2lwIHRoZSBnYW1lcGFkIHRlc3RzIGZvciB0aGUgUXQgcG9ydCwgc2luY2Ug
dGhlIGZsYWcgaXMgb3B0aW9uYWwKKyAgICAgICAgdGhlIHRlc3Qgd291bGQgbm90IHBhc3Mgd2l0
aG91dCBpdC4gVGhlIHVzZXIgbWF5IHVuc2tpcCBpdCBtYW51YWxseS4KKworICAgICAgICBPbiB0
aGUgb3RoZXIgaGFuZCwgdGhlIGdhbWVwYWQtcG9sbGluZy1hY2Nlc3MuaHRtbCB0ZXN0IGlzIHN0
aWxsIGV4cGVjdGVkCisgICAgICAgIHRvIGZhaWwgYmVjYXVzZSBpdCByZXF1aXJlcyBhZGRpdGlv
bmFsIHRlc3QgaW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI4NzMKKworICAgICAgICAqIHBsYXRmb3JtL3F0L1Rlc3RF
eHBlY3RhdGlvbnM6CisKIDIwMTItMDgtMDMgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQ29sb3JTdWdnZXN0aW9uUGlja2VyIHBvcHVwJ3MgaGVpZ2h0IGRv
ZXNuJ3QgZ2V0IHNtYWxsZXIgdGhhbiAxMDAgcHgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDU5ODUzMzM1YzQzZjUzZTJmOWU0ZGNlYjg1ZmM1ZDVhNzMwMTE4
NjIuLmVkNzAzMWE0YWZjNWFiYzlkMWVmYzRmMzU0MDUyMTA1ZGExYzhkYzUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTE4LDYgKzExOCw5IEBAIEJVR1dL
ODQ2MzUgU0tJUCA6IGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50ID0gVEVYVAogLy8gU2tpcCB0
ZXN0cyBpbiBmYXN0L3RleHQvc2hhcGluZwogQlVHV0s5MDk1MSBTS0lQIDogZmFzdC90ZXh0L3No
YXBpbmcgPSBQQVNTCiAKKy8vIE1pc3NpbmcgdGVzdCBpbmZyYXN0cnVjdHVyZSwgbm8gZ2FtZXBh
ZHMgYXZhaWxhYmxlLgorQlVHV0s5Mjg3MyBTS0lQIDogZ2FtZXBhZC9nYW1lcGFkLXBvbGxpbmct
YWNjZXNzLmh0bWwgPSBURVhUCisKIC8vIEZsYWt5IHRlc3RzCiBCVUdXSzkxMzc2IDogaHR0cC90
ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZyYW1lLW1vZGlmeS1zZWxmLmh0bWwgPSBURVhUIFBB
U1MKIEJVR1dLOTEzNzkgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9wb2xpY3ktZG9lcy1ub3QtYWZmZWN0LWNoaWxkLmh0bWwgPSBURVhUIFBBU1MK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>156376</attachid>
            <date>2012-08-03 07:28:58 -0700</date>
            <delta_ts>2012-08-03 07:28:58 -0700</delta_ts>
            <desc>HTML to test the patch.</desc>
            <filename>joytest.html</filename>
            <type>text/html</type>
            <size>8059</size>
            <attacher name="Marcelo Lira">marcelo.lira</attacher>
            
              <data encoding="base64">PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+CiAgICA8dGl0bGU+R2FtZXBhZCBBUEk8L3RpdGxlPgogICAgPHN0eWxlIHR5cGU9
InRleHQvY3NzIj4KICAgIHRhYmxlIHsKICAgICAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRl
OwogICAgICAgIGJvcmRlci1zcGFjaW5nOiA0cHg7CiAgICB9CiAgICB0ZCB7CiAgICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogI2NjYzsKICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICB9CiAgICB0ZC5s
YWJlbCB7CiAgICAgICAgd2lkdGg6IDEwMHB4OwogICAgfQogICAgdGQuZGF0YSB7CiAgICAgICAg
d2lkdGg6IDYwMHB4OwogICAgfQogICAgZGl2LmdhbWVwYWQgewogICAgICAgIGJvcmRlcjogMXB4
IGxpZ2h0Z3JleSBzb2xpZDsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgICAgIHBh
ZGRpbmc6IDEwcHg7CiAgICAgICAgbWFyZ2luOiAxMHB4OwogICAgfQogICAgaDIgewogICAgICAg
IG1hcmdpbjogMHB4OwogICAgfQogICAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KICAgIDxoMT5H
YW1lcGFkIEFQSTwvaDE+CgogICAgPGRpdiBpZD0id2FybmluZyI+PC9kaXY+CiAgICA8ZGl2IGlk
PSJnYW1lcGFkcyI+PC9kaXY+CgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgog
ICAgZnVuY3Rpb24gQXhpcyhpZCwgcmFkaXVzKQogICAgewogICAgICAgIHRoaXMuY2FudmFzID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CiAgICAgICAgdGhpcy5jYW52YXMuaWQg
PSBpZDsKICAgICAgICB0aGlzLnJhZGl1cyA9IHJhZGl1czsKICAgICAgICB0aGlzLmlubmVyUmFk
aXVzID0gcmFkaXVzIC8gMjsKICAgICAgICB0aGlzLnggPSAwOwogICAgICAgIHRoaXMueSA9IDA7
CiAgICAgICAgdGhpcy5jYW52YXMud2lkdGggPSB0aGlzLnJhZGl1cyAqIDI7CiAgICAgICAgdGhp
cy5jYW52YXMuaGVpZ2h0ID0gdGhpcy5jYW52YXMud2lkdGgKICAgIH0KCiAgICBBeGlzLnByb3Rv
dHlwZS5kcmF3ID0gZnVuY3Rpb24oKQogICAgewogICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5j
YW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKCiAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwg
dGhpcy5jYW52YXMud2lkdGgsIHRoaXMuY2FudmFzLmhlaWdodCk7CgogICAgICAgIGNvbnRleHQu
YmVnaW5QYXRoKCk7CiAgICAgICAgY29udGV4dC5hcmModGhpcy5yYWRpdXMsIHRoaXMucmFkaXVz
LCB0aGlzLnJhZGl1cyAqIDAuOCwgMCwgTWF0aC5QSSAqIDIsIHRydWUpOwogICAgICAgIGNvbnRl
eHQubW92ZVRvKDAsIHRoaXMucmFkaXVzKTsKICAgICAgICBjb250ZXh0LmxpbmVUbyh0aGlzLmNh
bnZhcy53aWR0aCwgdGhpcy5yYWRpdXMpOwogICAgICAgIGNvbnRleHQubW92ZVRvKHRoaXMucmFk
aXVzLCAwKTsKICAgICAgICBjb250ZXh0LmxpbmVUbyh0aGlzLnJhZGl1cywgdGhpcy5jYW52YXMu
aGVpZ2h0KTsKICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDI7CiAgICAgICAgY29udGV4dC5z
dHJva2VTdHlsZSA9ICdsaWdodGdyYXknOwogICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7CgogICAg
ICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7CiAgICAgICAgY29udGV4dC5hcmModGhpcy5yYWRpdXMg
KyB0aGlzLngsIHRoaXMucmFkaXVzICsgdGhpcy55LCB0aGlzLmlubmVyUmFkaXVzLCAwLCBNYXRo
LlBJICogMiwgdHJ1ZSk7CiAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSAncmdiYSgwLCAwLCAw
LCAwLjcpJzsKICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpOwogICAgICAgIGNvbnRleHQuZmls
bCgpOwogICAgfQoKCiAgICBmdW5jdGlvbiBCdXR0b24oaWQsIGxhYmVsKQogICAgewogICAgICAg
IHRoaXMuc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgICB0aGlz
LnNwYW4uaWQgPSBpZDsKICAgICAgICB0aGlzLnNwYW4uc3R5bGUuYm9yZGVyID0gJzFweCBzb2xp
ZCc7CiAgICAgICAgdGhpcy5zcGFuLnN0eWxlLm1hcmdpbiA9ICczcHgnOwogICAgICAgIHRoaXMu
c3Bhbi5zdHlsZS5wYWRkaW5nID0gJzNweCc7CiAgICAgICAgdGhpcy5zcGFuLmlubmVySFRNTCA9
IGxhYmVsOwogICAgICAgIHRoaXMuc2V0UHJlc3NlZChmYWxzZSk7CiAgICB9CgogICAgQnV0dG9u
LnByb3RvdHlwZS5zZXRQcmVzc2VkID0gZnVuY3Rpb24ocHJlc3NlZCkKICAgIHsKICAgICAgICB0
aGlzLnByZXNzZWQgPSBwcmVzc2VkOwogICAgICAgIGlmICh0aGlzLnByZXNzZWQpCiAgICAgICAg
dGhpcy5zcGFuLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjYmJiJzsKICAgICAgICBlbHNlCiAg
ICAgICAgdGhpcy5zcGFuLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZmZmJzsKICAgIH0KCiAg
ICBmdW5jdGlvbiBHYW1lcGFkKGdhbWVwYWQpCiAgICB7CiAgICAgICAgdGhpcy5pbmRleCA9IGdh
bWVwYWQuaW5kZXg7CiAgICAgICAgdGhpcy5udW1BeGVzID0gZ2FtZXBhZC5heGVzLmxlbmd0aDsK
CiAgICAgICAgdGhpcy5kaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAg
ICB0aGlzLmRpdi5pZCA9IHRoaXMuZ2V0R2FtZXBhZERpdklkKCk7CiAgICAgICAgdGhpcy5kaXYu
c2V0QXR0cmlidXRlKCdjbGFzcycsICdnYW1lcGFkJyk7CgogICAgICAgIHZhciBoID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaDIiKTsKICAgICAgICBoLmlubmVySFRNTCA9ICdHYW1lcGFkICcg
KyB0aGlzLmluZGV4OwogICAgICAgIHRoaXMuZGl2LmFwcGVuZENoaWxkKGgpOwoKICAgICAgICB2
YXIgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpOwogICAgICAgIHRhYmxl
LmlubmVySFRNTCA9ICc8dHI+PHRkIGNsYXNzPSJsYWJlbCI+SWQ6PC90ZD4nICsKICAgICAgICAg
ICAgICAgICAgJzx0ZCBjbGFzcz0iZGF0YSI+JyArIGdhbWVwYWQuaWQgKyAnPC90ZD48L3RyPicg
KwogICAgICAgICAgICAgICAgICAnPHRyPjx0ZD5UeXBlOjwvdGQ+PHRkPicgKyB0aGlzLnR5cGUo
KSArICc8L3RkPjwvdHI+JzsKICAgICAgICB0aGlzLmRpdi5hcHBlbmRDaGlsZCh0YWJsZSk7Cgog
ICAgICAgIGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoMycpOwogICAgICAgIGguaW5uZXJI
VE1MID0gJ0F4ZXMnOwogICAgICAgIHRoaXMuZGl2LmFwcGVuZENoaWxkKGgpOwogICAgICAgIHRo
aXMuYXhlc0RpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIHRoaXMu
YXhlc0Rpdi5pZCA9IHRoaXMuZ2V0QXhlc0RpdklkKCk7CiAgICAgICAgdGhpcy5kaXYuYXBwZW5k
Q2hpbGQodGhpcy5heGVzRGl2KTsKCiAgICAgICAgaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2gzJyk7CiAgICAgICAgaC5pbm5lckhUTUwgPSAnQnV0dG9ucyc7CiAgICAgICAgdGhpcy5kaXYu
YXBwZW5kQ2hpbGQoaCk7CiAgICAgICAgdGhpcy5idXR0b25zRGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CiAgICAgICAgdGhpcy5idXR0b25zRGl2LmlkID0gdGhpcy5nZXRCdXR0
b25zRGl2SWQoKTsKICAgICAgICB0aGlzLmRpdi5hcHBlbmRDaGlsZCh0aGlzLmJ1dHRvbnNEaXYp
OwoKICAgICAgICB0aGlzLmJ1dHRvbnMgPSBbXTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGdhbWVwYWQuYnV0dG9ucy5sZW5ndGg7ICsraSkgewogICAgICAgIHZhciBidXR0b24gPSBuZXcg
QnV0dG9uKHRoaXMuZ2V0QnV0dG9uSWQoaSksIGkpOwogICAgICAgIHRoaXMuYnV0dG9uc0Rpdi5h
cHBlbmRDaGlsZChidXR0b24uc3Bhbik7CiAgICAgICAgdGhpcy5idXR0b25zLnB1c2goYnV0dG9u
KTsKICAgICAgICB9CgogICAgICAgIHRoaXMuYXhlcyA9IFtdOwogICAgICAgIHRoaXMubnVtU3Rp
Y2tzID0gTWF0aC5mbG9vcih0aGlzLm51bUF4ZXMgLyAyKTsKICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRoaXMubnVtU3RpY2tzOyArK2kpIHsKICAgICAgICB2YXIgYXhpcyA9IG5ldyBBeGlz
KHRoaXMuZ2V0QXhpc0lkKGkpLCA1MCk7CiAgICAgICAgYXhpcy5oSW5kZXggPSBpICogMjsKICAg
ICAgICBheGlzLnZJbmRleCA9IGF4aXMuaEluZGV4ICsgMTsKCiAgICAgICAgLy8gSnVtcCB1bnVz
ZWQgYXhlcycgYXJyYXkgcG9zaXRpb24uCiAgICAgICAgaWYgKCh0aGlzLm51bUF4ZXMgPT0gR2Ft
ZXBhZC5GaWdodGVyc3RpY2sgfHwKICAgICAgICAgICAgIHRoaXMubnVtQXhlcyA9PSBHYW1lcGFk
LkR1YWxBbmFsb2dHZW5lcmljKSAmJiBpID4gMCkgewogICAgICAgICAgICBheGlzLmhJbmRleCAr
PSAxOwogICAgICAgICAgICBheGlzLnZJbmRleCArPSAxOwogICAgICAgIH0KCiAgICAgICAgLy8g
U3dpdGNoZWQgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgYXhlcycgYXJyYXkgcG9zaXRpb25zLgog
ICAgICAgIGlmICh0aGlzLm51bUF4ZXMgPT0gR2FtZXBhZC5EdWFsQW5hbG9nR2VuZXJpYyAmJiBp
ID09IDEpIHsKICAgICAgICAgICAgdmFyIHRtcCA9IGF4aXMuaEluZGV4OwogICAgICAgICAgICBh
eGlzLmhJbmRleCA9IGF4aXMudkluZGV4OwogICAgICAgICAgICBheGlzLnZJbmRleCA9IHRtcDsK
ICAgICAgICB9CgogICAgICAgIHRoaXMuYXhlc0Rpdi5hcHBlbmRDaGlsZChheGlzLmNhbnZhcyk7
CiAgICAgICAgdGhpcy5heGVzLnB1c2goYXhpcyk7CiAgICAgICAgfQoKICAgICAgICB0aGlzLnVw
ZGF0ZShnYW1lcGFkKTsKCiAgICAgICAgZ2FtZXBhZHNEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZ2FtZXBhZHMnKTsKICAgICAgICBnYW1lcGFkc0Rpdi5hcHBlbmRDaGlsZCh0aGlzLmRp
dik7CiAgICB9CgogICAgLy8gVGhlIGpveXN0aWNrIHR5cGUgaXMgZGV0ZXJtaW5lZCBieSBpdHMg
YXhlcyBjb3VudC4KICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL0dydW1iZWwvanN0ZXN0
LWd0ay9ibG9iL21hc3Rlci9zcmMvam95c3RpY2tfdGVzdF93aWRnZXQuY3BwCiAgICBHYW1lcGFk
LlNpbXBsZXN0aWNrID0gMjsKICAgIEdhbWVwYWQuRmlnaHRlcnN0aWNrID0gNTsKICAgIEdhbWVw
YWQuRmxpZ2h0c3RpY2sgPSA2OwogICAgR2FtZXBhZC5EdWFsQW5hbG9nR2VuZXJpYyA9IDc7CiAg
ICBHYW1lcGFkLkR1YWxBbmFsb2dXaXRoVHJpZ2dlciA9IDg7CiAgICBHYW1lcGFkLlBTM0NvbnRy
b2xsZXIgPSAyODsKICAgIEdhbWVwYWQuSm95c3RpY2tUeXBlcyA9IHsKICAgICAgICAyICA6ICdT
aW1wbGUgc3RpY2snLAogICAgICAgIDUgIDogJ0ZpZ2h0ZXJzdGljaycsCiAgICAgICAgNiAgOiAn
RmxpZ2h0c3RpY2snLAogICAgICAgIDcgIDogJ0R1YWwgQW5hbG9nIEdhbWVwYWQgRHJhZ29uUmlz
ZSBJbmMuIEdlbmVyaWMgVVNCIEpveXN0aWNrJywKICAgICAgICA4ICA6ICdEdWFsIEFuYWxvZyBH
YW1lcGFkICsgQW5hbG9nIFRyaWdnZXInLAogICAgICAgIDI4IDogJ1BsYXlzdGF0aW9uIDMgQ29u
dHJvbGxlcicKICAgIH0KCiAgICBHYW1lcGFkLnByb3RvdHlwZS5nZXRCdXR0b25JZCA9IGZ1bmN0
aW9uKGJ1dHRvbkluZGV4KQogICAgewogICAgICAgIHJldHVybiAnR2FtZXBhZCcgKyB0aGlzLmlu
ZGV4ICsgJ0J1dHRvbicgKyBidXR0b25JbmRleDsKICAgIH0KCiAgICBHYW1lcGFkLnByb3RvdHlw
ZS5nZXRBeGlzSWQgPSBmdW5jdGlvbihheGlzSW5kZXgpCiAgICB7CiAgICAgICAgcmV0dXJuICdH
YW1lcGFkJyArIHRoaXMuaW5kZXggKyAnQXhpcycgKyBheGlzSW5kZXg7CiAgICB9CgogICAgR2Ft
ZXBhZC5wcm90b3R5cGUuZ2V0R2FtZXBhZERpdklkID0gZnVuY3Rpb24oKQogICAgewogICAgICAg
IHJldHVybiAnR2FtZXBhZCcgKyB0aGlzLmluZGV4ICsgJ0Rpdic7CiAgICB9CgogICAgR2FtZXBh
ZC5wcm90b3R5cGUuZ2V0QnV0dG9uc0RpdklkID0gZnVuY3Rpb24oKQogICAgewogICAgICAgIHJl
dHVybiAnR2FtZXBhZCcgKyB0aGlzLmluZGV4ICsgJ0J1dHRvbnNEaXYnOwogICAgfQoKICAgIEdh
bWVwYWQucHJvdG90eXBlLmdldEF4ZXNEaXZJZCA9IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICBy
ZXR1cm4gJ0dhbWVwYWQnICsgdGhpcy5pbmRleCArICdBeGVzRGl2JzsKICAgIH0KCiAgICBHYW1l
cGFkLnByb3RvdHlwZS50eXBlID0gZnVuY3Rpb24oKQogICAgewogICAgICAgIHJldHVybiBHYW1l
cGFkLkpveXN0aWNrVHlwZXNbdGhpcy5udW1BeGVzXTsKICAgIH0KCiAgICBHYW1lcGFkLnByb3Rv
dHlwZS51cGRhdGUgPSBmdW5jdGlvbihnYW1lcGFkKQogICAgewogICAgICAgIGlmIChnYW1lcGFk
LmluZGV4ICE9IHRoaXMuaW5kZXgpIHsKICAgICAgICBjb25zb2xlLmxvZygnR2FtZXBhZCB1cGRh
dGVkIHdpdGggd3JvbmcgZ2FtZXBhZCBkYXRhLicpOwogICAgICAgIHJldHVybjsKICAgICAgICB9
CgogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ2FtZXBhZC5idXR0b25zLmxlbmd0aDsgKytp
KQogICAgICAgIHRoaXMuYnV0dG9uc1tpXS5zZXRQcmVzc2VkKGdhbWVwYWQuYnV0dG9uc1tpXSk7
CgogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5udW1TdGlja3M7ICsraSkgewogICAg
ICAgIHZhciBheGlzID0gdGhpcy5heGVzW2ldOwogICAgICAgIGF4aXMueCA9IGdhbWVwYWQuYXhl
c1theGlzLmhJbmRleF0gKiBheGlzLmlubmVyUmFkaXVzCiAgICAgICAgYXhpcy55ID0gZ2FtZXBh
ZC5heGVzW2F4aXMudkluZGV4XSAqIGF4aXMuaW5uZXJSYWRpdXMKICAgICAgICBheGlzLmRyYXco
KTsKICAgICAgICB9CiAgICB9CgogICAgR2FtZXBhZC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlv
bigpCiAgICB7CiAgICAgICAgd2hpbGUgKHRoaXMuZGl2Lmhhc0NoaWxkTm9kZXMoKSkKICAgICAg
ICB0aGlzLmRpdi5yZW1vdmVDaGlsZCh0aGlzLmRpdi5sYXN0Q2hpbGQpOwogICAgICAgIHRoaXMu
ZGl2LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5kaXYpOwogICAgICAgIHRoaXMuZGl2
ID0gdW5kZWZpbmVkOwogICAgICAgIHRoaXMuaW5kZXggPSB1bmRlZmluZWQ7CiAgICAgICAgdGhp
cy5idXR0b25zID0gdW5kZWZpbmVkOwogICAgICAgIHRoaXMuYXhlcyA9IHVuZGVmaW5lZDsKICAg
IH0KCiAgICB2YXIgZ2FtZXBhZHMgPSBbXTsKICAgIGZ1bmN0aW9uIHBvbGxHYW1lcGFkcygpIHsK
ICAgICAgICB3aW5kb3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKHBvbGxHYW1lcGFkcyk7
CiAgICAgICAgdmFyIG5vR2FtZXBhZHMgPSB0cnVlOwogICAgICAgIHZhciBuYXZHYW1lcGFkcyA9
IG5hdmlnYXRvci53ZWJraXRHZXRHYW1lcGFkcygpOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbmF2R2FtZXBhZHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgdmFyIGRhdGEgPSBuYXZH
YW1lcGFkc1tpXTsKICAgICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd3YXJuaW5nJykuaW5uZXJIVE1MID0gJyc7CiAgICAgICAgICAg
ICAgICB2YXIgZ2FtZXBhZCA9IHdpbmRvdy5nYW1lcGFkc1tpXTsKICAgICAgICAgICAgICAgIGlm
IChnYW1lcGFkKSB7CiAgICAgICAgICAgICAgICAgICAgZ2FtZXBhZC51cGRhdGUoZGF0YSk7CiAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGdhbWVwYWQgPSBuZXcg
R2FtZXBhZChkYXRhKTsKICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZ2FtZXBhZHNbaV0gPSBn
YW1lcGFkOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbm9HYW1lcGFkcyA9IGZh
bHNlOwogICAgICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5nYW1lcGFkc1tpXSkgewogICAgICAg
ICAgICAgICAgd2luZG93LmdhbWVwYWRzW2ldLmNsZWFyKCk7CiAgICAgICAgICAgICAgICBkZWxl
dGUgd2luZG93LmdhbWVwYWRzW2ldOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlm
IChub0dhbWVwYWRzKQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2Fybmlu
ZycpLmlubmVySFRNTCA9ICc8cD5Db25uZWN0IGEgZ2FtZXBhZCwgcHJlc3MgYSBidXR0b24sIG1v
dmUgdGhlIGpveXN0aWNrLjwvcD4nOwogICAgfQogICAgcG9sbEdhbWVwYWRzKCk7CiAgICA8L3Nj
cmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156533</attachid>
            <date>2012-08-04 10:14:46 -0700</date>
            <delta_ts>2012-08-07 08:49:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90637-20120804141423.patch</filename>
            <type>text/plain</type>
            <size>16437</size>
            <attacher name="Marcelo Lira">marcelo.lira</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDExZDc0OGQ3MTMyODlh
YzFhZDk5ZTAwN2ZiNzBmZjg4NzNmZTQ1Ny4uYmFkOTAwMmIyYjk3NTVmNzBhZTYxZDhhNWQ2YjNm
ZTdmOTM1OTY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA4LTA0ICBNYXJj
ZWxvIExpcmEgIDxtYXJjZWxvLmxpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIEFk
ZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciBHYW1lcGFkIEFQSSBvbiB0aGUg
UXQgcG9ydC4KKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBjbGFzcyByZWxp
ZXMgb24gdGhlIExpbnV4CisgICAgICAgIGtlcm5lbCBqb3lzdGljayBBUEkuCisKKyAgICAgICAg
R2FtZXBhZCBkZXZpY2VzIGFyZSByZWNvZ25pemVkIHRocm91Z2ggdGhlIEdhbWVwYWRzUXQKKyAg
ICAgICAgY2xhc3MsIHdoaWNoIHVzZXMgdGhlIHVkZXYgbGlicmFyeSB0byB3YXRjaCBmb3IgY29u
bmVjdGlvbiwKKyAgICAgICAgZGlzY29ubmVjdGlvbiBhbmQgb3RoZXIgZ2FtZXBhZCByZWxhdGVk
IGV2ZW50cy4KKworICAgICAgICBUZXN0cyBmb3IgdGhpcyBmZWF0dXJlIGFscmVhZHkgZXhpc3Qu
CisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5wcmk6CisgICAgICAgICogVGFyZ2V0LnByaToK
KyAgICAgICAgKiBXZWJDb3JlLnByaToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9HYW1lcGFkc1F0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEdhbWVwYWREZXZpY2VM
aW51eFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VMaW51eFF0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4UXQ6OkdhbWVwYWREZXZpY2VM
aW51eFF0KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWREZXZpY2VMaW51eFF0Ojp+R2FtZXBh
ZERldmljZUxpbnV4UXQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4UXQ6
OnJlYWRDYWxsYmFjayk6CisgICAgICAgIChHYW1lcGFkc1F0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWRzUXQ6OkdhbWVwYWRzUXQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZHNRdDo6
fkdhbWVwYWRzUXQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZHNRdDo6aXNHYW1lcGFkRGV2
aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzUXQ6Om9uR2FtZVBhZENoYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc1F0OjpyZWdpc3RlckRldmljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHYW1lcGFkc1F0Ojp1bnJlZ2lzdGVyRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWRzUXQ6OnVwZGF0ZUdhbWVwYWRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNhbXBs
ZUdhbWVwYWRzKToKKwogMjAxMi0wOC0wMyAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQ1NTIDIuMSBmYWlsdXJlOiBvdmVyZmxvdy1hcHBsaWVzLXRvLTAwMSBm
YWlscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCmluZGV4IDkzZjNkZGE2YTMwNjdiOTcxZjk3
ZGRkMjc4ZDQ1NzkwNjNkZTlmYTIuLjA3MjZjNmJkMmVjZDQzNGM5N2Q4YzUwZDAwMjg2NTAwZTUy
ZTk4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKQEAgLTYxMyw2ICs2MTMsMTMgQEAg
Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0xKSB7CiAgICAgJCRQV0Qvc3ZnL1NWR1pvb21F
dmVudC5pZGwKIH0KIAorY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0dBTUVQQUQ9MSkgeworICBJ
RExfQklORElOR1MgKz0gXAorICAgICQkUFdEL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmlkbCBc
CisgICAgJCRQV0QvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmlkbCBcCisgICAgJCRQV0Qv
TW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuaWRsCit9CisKIGNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9WSURFT19UUkFDSz0xKSB7CiAgIElETF9CSU5ESU5HUyArPSBcCiAgICAgJCRQ
V0QvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDZiN2VhMzc2MDU1
ZjFlMzE5MDU1NGJhZTc4Y2IyNGZhZjA0ZWMwNWMuLjNmZTE3MTM3NzU0ZWMxZTQ2MmE5NGQ4ZGU0
ZTkxOWFkMjE0NWI5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysr
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMzA5OCw2ICszMDk4LDIyIEBAIGNvbnRh
aW5zKERFRklORVMsIEVOQUJMRV9RVU9UQT0xKSB7CiAgICAgICAgIE1vZHVsZXMvcXVvdGEvU3Rv
cmFnZUluZm8uY3BwCiB9CiAKK2NvbnRhaW5zKERFRklORVMsIEVOQUJMRV9HQU1FUEFEPTEpIHsK
KyAgICBIRUFERVJTICs9IFwKKyAgICAgICAgTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaFwKKyAg
ICAgICAgTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmggXAorICAgICAgICBNb2R1bGVzL2dh
bWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5oIFwKKyAgICAgICAgcGxhdGZvcm0vbGludXgvR2FtZXBh
ZERldmljZUxpbnV4LmggXAorICAgICAgICBwbGF0Zm9ybS9HYW1lcGFkcy5oCisKKyAgICBTT1VS
Q0VTICs9IFwKKyAgICAgICAgTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuY3BwIFwKKyAgICAgICAg
TW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmNwcCBcCisgICAgICAgIE1vZHVsZXMvZ2FtZXBh
ZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcCBcCisgICAgICAgIHBsYXRmb3JtL2xpbnV4L0dhbWVwYWRE
ZXZpY2VMaW51eC5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9xdC9HYW1lcGFkc1F0LmNwcAorfQor
CiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU89MSkgewogICAgIFNPVVJDRVMgKz0gXAog
ICAgICAgICBodG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKaW5kZXggMmE1
OWRjMDMxNzkwM2ViNzVjNTNhOGYxMWY0ZTI1NTkxNTM4N2E5ZC4uMGZmYmY5Yzg3OThjNzg1ZjQw
YmRhZGRjMDAxYWU3OWRiN2Q0Y2Q2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKQEAgLTE2OSw2ICsxNjksMTMg
QEAgY29udGFpbnMoREVGSU5FUywgV1RGX1VTRV9RVF9NT0JJTElUWV9TWVNURU1JTkZPPTEpIHsK
ICAgICAgTU9CSUxJVFkgKj0gc3lzdGVtaW5mbwogfQogCitjb250YWlucyhERUZJTkVTLCBFTkFC
TEVfR0FNRVBBRD0xKSB7CisgICAgSU5DTFVERVBBVEggKz0gXAorICAgICAgICAkJFNPVVJDRV9E
SVIvcGxhdGZvcm0vbGludXggXAorICAgICAgICAkJFNPVVJDRV9ESVIvTW9kdWxlcy9nYW1lcGFk
CisgICAgUEtHQ09ORklHICs9IGxpYnVkZXYKK30KKwogY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X1ZJREVPPTEpIHsKICAgICBjb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1FUS0lUPTEpIHsKICAg
ICAgICAgSU5DTFVERVBBVEggKz0gJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2dyYXBoaWNzL21hYwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvR2FtZXBhZHNRdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9HYW1lcGFkc1F0LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDIw
ZDc2YmM1MDkzYTMyYzRkMzJmNDk5NDE2YmIzNWEyNDEyZDFmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvR2FtZXBhZHNRdC5jcHAKQEAgLTAsMCArMSwyMjUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBU
ZWNub2xvZ2lhCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJHYW1lcGFkcy5oIgorCisjaW5jbHVkZSAiR2FtZXBhZERldmljZUxpbnV4LmgiCisj
aW5jbHVkZSAiR2FtZXBhZExpc3QuaCIKKworI2luY2x1ZGUgPFFPYmplY3Q+CisjaW5jbHVkZSA8
UVNvY2tldE5vdGlmaWVyPgorCitleHRlcm4gIkMiIHsKKyAgICAjaW5jbHVkZSA8bGlidWRldi5o
PgorfQorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR2FtZXBhZERldmlj
ZUxpbnV4UXQgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIEdhbWVwYWREZXZpY2VMaW51eCB7Cisg
ICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxHYW1lcGFkRGV2aWNl
TGludXhRdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZGV2aWNlRmlsZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgR2FtZXBhZERldmljZUxpbnV4UXQoZGV2aWNlRmlsZSkpOwor
ICAgIH0KKyAgICB+R2FtZXBhZERldmljZUxpbnV4UXQoKTsKKworcHJpdmF0ZToKKyAgICBHYW1l
cGFkRGV2aWNlTGludXhRdChjb25zdCBTdHJpbmcmKTsKKyAgICBRU29ja2V0Tm90aWZpZXIqIG1f
bm90aWZpZXI7CisKK3ByaXZhdGUgc2xvdHM6CisgICAgYm9vbCByZWFkQ2FsbGJhY2soKTsKK307
CisKK0dhbWVwYWREZXZpY2VMaW51eFF0OjpHYW1lcGFkRGV2aWNlTGludXhRdChjb25zdCBTdHJp
bmcmIGRldmljZUZpbGUpCisgICAgOiBRT2JqZWN0KCkKKyAgICAsIEdhbWVwYWREZXZpY2VMaW51
eChkZXZpY2VGaWxlKQoreworICAgIGlmIChtX2ZpbGVEZXNjcmlwdG9yID09IC0xKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX25vdGlmaWVyID0gbmV3IFFTb2NrZXROb3RpZmllcihtX2ZpbGVE
ZXNjcmlwdG9yLCBRU29ja2V0Tm90aWZpZXI6OlJlYWQsIHRoaXMpOworICAgIGNvbm5lY3QobV9u
b3RpZmllciwgU0lHTkFMKGFjdGl2YXRlZChpbnQpKSwgdGhpcywgU0xPVChyZWFkQ2FsbGJhY2so
KSkpOworfQorCitHYW1lcGFkRGV2aWNlTGludXhRdDo6fkdhbWVwYWREZXZpY2VMaW51eFF0KCkK
K3sKK30KKworYm9vbCBHYW1lcGFkRGV2aWNlTGludXhRdDo6cmVhZENhbGxiYWNrKCkKK3sKKyAg
ICBqc19ldmVudCBldmVudDsKKyAgICBpbnQgbGVuID0gcmVhZChtX2ZpbGVEZXNjcmlwdG9yLCAm
ZXZlbnQsIHNpemVvZihqc19ldmVudCkpOworICAgIGlmIChsZW4gIT0gc2l6ZW9mKGV2ZW50KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVwZGF0ZUZvckV2ZW50KGV2ZW50KTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworY2xhc3MgR2FtZXBhZHNRdCA6IHB1YmxpYyBRT2JqZWN0IHsKKyAg
ICBRX09CSkVDVAorcHVibGljOgorICAgIEdhbWVwYWRzUXQodW5zaWduZWQpOworCisgICAgdm9p
ZCByZWdpc3RlckRldmljZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJEZXZp
Y2UoY29uc3QgU3RyaW5nJik7CisKKyAgICB2b2lkIHVwZGF0ZUdhbWVwYWRMaXN0KEdhbWVwYWRM
aXN0Kik7CisKK3ByaXZhdGUgc2xvdHM6CisgICAgdm9pZCBvbkdhbWVQYWRDaGFuZ2UoKTsKKwor
cHJpdmF0ZToKKyAgICB+R2FtZXBhZHNRdCgpOworICAgIGJvb2wgaXNHYW1lcGFkRGV2aWNlKHN0
cnVjdCB1ZGV2X2RldmljZSopOworCisgICAgVmVjdG9yPE93blB0cjxHYW1lcGFkRGV2aWNlTGlu
dXhRdD4gPiBtX3Nsb3RzOworICAgIEhhc2hNYXA8U3RyaW5nLCBHYW1lcGFkRGV2aWNlTGludXhR
dCo+IG1fZGV2aWNlTWFwOworCisgICAgc3RydWN0IHVkZXYqIG1fdWRldjsKKyAgICBzdHJ1Y3Qg
dWRldl9tb25pdG9yKiBtX2dhbWVwYWRzTW9uaXRvcjsKKyAgICBRU29ja2V0Tm90aWZpZXIqIG1f
Z2FtZXBhZHNOb3RpZmllcjsKK307CisKK0dhbWVwYWRzUXQ6OkdhbWVwYWRzUXQodW5zaWduZWQg
bGVuZ3RoKQorICAgIDogUU9iamVjdCgpCisgICAgLCBtX3Nsb3RzKGxlbmd0aCkKK3sKKyAgICBt
X3VkZXYgPSB1ZGV2X25ldygpOworICAgIG1fZ2FtZXBhZHNNb25pdG9yID0gdWRldl9tb25pdG9y
X25ld19mcm9tX25ldGxpbmsobV91ZGV2LCAidWRldiIpOworICAgIHVkZXZfbW9uaXRvcl9lbmFi
bGVfcmVjZWl2aW5nKG1fZ2FtZXBhZHNNb25pdG9yKTsKKyAgICB1ZGV2X21vbml0b3JfZmlsdGVy
X2FkZF9tYXRjaF9zdWJzeXN0ZW1fZGV2dHlwZShtX2dhbWVwYWRzTW9uaXRvciwgImlucHV0Iiwg
MCk7CisgICAgbV9nYW1lcGFkc05vdGlmaWVyID0gbmV3IFFTb2NrZXROb3RpZmllcih1ZGV2X21v
bml0b3JfZ2V0X2ZkKG1fZ2FtZXBhZHNNb25pdG9yKSwgUVNvY2tldE5vdGlmaWVyOjpSZWFkLCB0
aGlzKTsKKyAgICBjb25uZWN0KG1fZ2FtZXBhZHNOb3RpZmllciwgU0lHTkFMKGFjdGl2YXRlZChp
bnQpKSwgdGhpcywgU0xPVChvbkdhbWVQYWRDaGFuZ2UoKSkpOworCisgICAgc3RydWN0IHVkZXZf
ZW51bWVyYXRlKiBlbnVtZXJhdGUgPSB1ZGV2X2VudW1lcmF0ZV9uZXcobV91ZGV2KTsKKyAgICB1
ZGV2X2VudW1lcmF0ZV9hZGRfbWF0Y2hfc3Vic3lzdGVtKGVudW1lcmF0ZSwgImlucHV0Iik7Cisg
ICAgdWRldl9lbnVtZXJhdGVfYWRkX21hdGNoX3Byb3BlcnR5KGVudW1lcmF0ZSwgIklEX0lOUFVU
X0pPWVNUSUNLIiwgIjEiKTsKKyAgICB1ZGV2X2VudW1lcmF0ZV9zY2FuX2RldmljZXMoZW51bWVy
YXRlKTsKKyAgICBzdHJ1Y3QgdWRldl9saXN0X2VudHJ5KiBjdXI7CisgICAgc3RydWN0IHVkZXZf
bGlzdF9lbnRyeSogZGV2cyA9IHVkZXZfZW51bWVyYXRlX2dldF9saXN0X2VudHJ5KGVudW1lcmF0
ZSk7CisgICAgdWRldl9saXN0X2VudHJ5X2ZvcmVhY2goY3VyLCBkZXZzKQorICAgIHsKKyAgICAg
ICAgY29uc3QgY2hhciogZGV2bmFtZSA9IHVkZXZfbGlzdF9lbnRyeV9nZXRfbmFtZShjdXIpOwor
ICAgICAgICBzdHJ1Y3QgdWRldl9kZXZpY2UqIGRldmljZSA9IHVkZXZfZGV2aWNlX25ld19mcm9t
X3N5c3BhdGgobV91ZGV2LCBkZXZuYW1lKTsKKyAgICAgICAgaWYgKGlzR2FtZXBhZERldmljZShk
ZXZpY2UpKQorICAgICAgICAgICAgcmVnaXN0ZXJEZXZpY2UoU3RyaW5nOjpmcm9tVVRGOCh1ZGV2
X2RldmljZV9nZXRfZGV2bm9kZShkZXZpY2UpKSk7CisgICAgICAgIHVkZXZfZGV2aWNlX3VucmVm
KGRldmljZSk7CisgICAgfQorICAgIHVkZXZfZW51bWVyYXRlX3VucmVmKGVudW1lcmF0ZSk7Cit9
CisKK0dhbWVwYWRzUXQ6On5HYW1lcGFkc1F0KCkKK3sKKyAgICB1ZGV2X3VucmVmKG1fdWRldik7
CisgICAgdWRldl9tb25pdG9yX3VucmVmKG1fZ2FtZXBhZHNNb25pdG9yKTsKK30KKworYm9vbCBH
YW1lcGFkc1F0Ojppc0dhbWVwYWREZXZpY2Uoc3RydWN0IHVkZXZfZGV2aWNlKiBkZXZpY2UpCit7
CisgICAgY29uc3QgY2hhciogZGV2aWNlRmlsZSA9IHVkZXZfZGV2aWNlX2dldF9kZXZub2RlKGRl
dmljZSk7CisgICAgY29uc3QgY2hhciogc3lzZnNQYXRoID0gdWRldl9kZXZpY2VfZ2V0X3N5c3Bh
dGgoZGV2aWNlKTsKKyAgICBpZiAoIWRldmljZUZpbGUgfHwgIXN5c2ZzUGF0aCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghdWRldl9kZXZpY2VfZ2V0X3Byb3BlcnR5X3ZhbHVlKGRl
dmljZSwgIklEX0lOUFVUIikgfHwgIXVkZXZfZGV2aWNlX2dldF9wcm9wZXJ0eV92YWx1ZShkZXZp
Y2UsICJJRF9JTlBVVF9KT1lTVElDSyIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIFFCeXRlQXJyYXkoZGV2aWNlRmlsZSkuc3RhcnRzV2l0aCgiL2Rldi9pbnB1dC9qcyIpOwor
fQorCit2b2lkIEdhbWVwYWRzUXQ6Om9uR2FtZVBhZENoYW5nZSgpCit7CisgICAgc3RydWN0IHVk
ZXZfZGV2aWNlKiBkZXZpY2UgPSB1ZGV2X21vbml0b3JfcmVjZWl2ZV9kZXZpY2UobV9nYW1lcGFk
c01vbml0b3IpOworICAgIGlmICghaXNHYW1lcGFkRGV2aWNlKGRldmljZSkpCisgICAgICAgIHJl
dHVybjsKKyAgICBRQnl0ZUFycmF5IGFjdGlvbih1ZGV2X2RldmljZV9nZXRfYWN0aW9uKGRldmlj
ZSkpOworICAgIGlmIChhY3Rpb24gPT0gImFkZCIpCisgICAgICAgIHJlZ2lzdGVyRGV2aWNlKHVk
ZXZfZGV2aWNlX2dldF9kZXZub2RlKGRldmljZSkpOworICAgIGVsc2UgaWYgKGFjdGlvbiA9PSAi
cmVtb3ZlIikKKyAgICAgICAgdW5yZWdpc3RlckRldmljZSh1ZGV2X2RldmljZV9nZXRfZGV2bm9k
ZShkZXZpY2UpKTsKK30KKwordm9pZCBHYW1lcGFkc1F0OjpyZWdpc3RlckRldmljZShjb25zdCBT
dHJpbmcmIGRldmljZUZpbGUpCit7CisgICAgQVNTRVJUKCFtX2RldmljZU1hcC5jb250YWlucyhk
ZXZpY2VGaWxlKSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBtX3Ns
b3RzLnNpemUoKTsgaW5kZXgrKykgeworICAgICAgICBpZiAoIW1fc2xvdHNbaW5kZXhdKSB7Cisg
ICAgICAgICAgICBtX3Nsb3RzW2luZGV4XSA9IEdhbWVwYWREZXZpY2VMaW51eFF0OjpjcmVhdGUo
ZGV2aWNlRmlsZSk7CisgICAgICAgICAgICBtX2RldmljZU1hcC5hZGQoZGV2aWNlRmlsZSwgbV9z
bG90c1tpbmRleF0uZ2V0KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgR2FtZXBhZHNRdDo6dW5yZWdpc3RlckRldmljZShjb25zdCBTdHJpbmcmIGRl
dmljZUZpbGUpCit7CisgICAgQVNTRVJUKG1fZGV2aWNlTWFwLmNvbnRhaW5zKGRldmljZUZpbGUp
KTsKKworICAgIEdhbWVwYWREZXZpY2VMaW51eFF0KiBnYW1lcGFkRGV2aWNlID0gbV9kZXZpY2VN
YXAudGFrZShkZXZpY2VGaWxlKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IG1fc2xvdHMuZmluZChn
YW1lcGFkRGV2aWNlKTsKKworICAgIG1fc2xvdHNbaW5kZXhdLmNsZWFyKCk7Cit9CisKK3ZvaWQg
R2FtZXBhZHNRdDo6dXBkYXRlR2FtZXBhZExpc3QoR2FtZXBhZExpc3QqIGludG8pCit7CisgICAg
QVNTRVJUKG1fc2xvdHMuc2l6ZSgpID09IGludG8tPmxlbmd0aCgpKTsKKworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3Nsb3RzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmIChtX3Ns
b3RzW2ldICYmIG1fc2xvdHNbaV0tPmNvbm5lY3RlZCgpKSB7CisgICAgICAgICAgICBHYW1lcGFk
RGV2aWNlTGludXhRdCogZ2FtZXBhZERldmljZSA9IG1fc2xvdHNbaV0uZ2V0KCk7CisgICAgICAg
ICAgICBSZWZQdHI8R2FtZXBhZD4gZ2FtZXBhZCA9IGludG8tPml0ZW0oaSk7CisgICAgICAgICAg
ICBpZiAoIWdhbWVwYWQpCisgICAgICAgICAgICAgICAgZ2FtZXBhZCA9IEdhbWVwYWQ6OmNyZWF0
ZSgpOworCisgICAgICAgICAgICBnYW1lcGFkLT5pbmRleChpKTsKKyAgICAgICAgICAgIGdhbWVw
YWQtPmlkKGdhbWVwYWREZXZpY2UtPmlkKCkpOworICAgICAgICAgICAgZ2FtZXBhZC0+dGltZXN0
YW1wKGdhbWVwYWREZXZpY2UtPnRpbWVzdGFtcCgpKTsKKyAgICAgICAgICAgIGdhbWVwYWQtPmF4
ZXMoZ2FtZXBhZERldmljZS0+YXhlc0NvdW50KCksIGdhbWVwYWREZXZpY2UtPmF4ZXNEYXRhKCkp
OworICAgICAgICAgICAgZ2FtZXBhZC0+YnV0dG9ucyhnYW1lcGFkRGV2aWNlLT5idXR0b25zQ291
bnQoKSwgZ2FtZXBhZERldmljZS0+YnV0dG9uc0RhdGEoKSk7CisKKyAgICAgICAgICAgIGludG8t
PnNldChpLCBnYW1lcGFkKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpbnRvLT5zZXQo
aSwgMCk7CisgICAgfQorfQorCit2b2lkIHNhbXBsZUdhbWVwYWRzKEdhbWVwYWRMaXN0KiBpbnRv
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoR2FtZXBhZHNRdCwgZ2FtZXBhZHNRdCwgKGlu
dG8tPmxlbmd0aCgpKSk7CisgICAgZ2FtZXBhZHNRdC51cGRhdGVHYW1lcGFkTGlzdChpbnRvKTsK
K30KKworI2luY2x1ZGUgIkdhbWVwYWRzUXQubW9jIgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjFl
OWQ4MTZkZDY0NWNlNzU4ZmZhZThhMmZhYTM1OTNhMzVhMDU3OS4uZWRlMjg5OWNhOTAzMTgyYjM0
MGMwNDY2MGEwODQ3YjI5ZjZmOGYzYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA4LTA0ICBNYXJjZWxvIExp
cmEgIDxtYXJjZWxvLmxpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIEFkZCBzdXBw
b3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkwNjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSWYgdGhlIGxpYnVkZXYgbGlicmFyeSBpcyBwcmVzZW50LCB0aGUgR0FN
RVBBRCBmbGFnIGlzCisgICAgICAgIHR1cm5lZCBvbiBieSBkZWZhdWx0IGZvciB0aGUgUXQgcG9y
dC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKyAgICAg
ICAgKiBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZjoKKwogMjAxMi0wOC0wNCAg
SWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZDogV2ViIEluc3BlY3RvcjogZXh0ZW5kIGluc3RydW1lbnRpbmcgbWV0aG9kcyBzZXQgaW4g
UmVwb3J0TWVtb3J5VXNhZ2UgY2xhbmcgcGx1Z2luCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG0KaW5kZXggZWM0MzNhNGNjYjZmNjdlYjFlMDhiYWNmYTM1MDU3MmI3ODViNDVh
Yy4uYmZlOGNmMDNiOWFlM2ViNmZkZWEwYWFkODdiOTNkZjVhYmNjMDI5ZSAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjI2LDcgKzIyNiw3IEBAIG15IEBmZWF0
dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0ZVTExTQ1JFRU5fQVBJIiwgZGVmYXVs
dCA9PiAoaXNBcHBsZU1hY1dlYktpdCgpIHx8IGlzRWZsKCkgfHwgaXNHdGsoKSB8fCBpc0JsYWNr
QmVycnkoKSB8fCBpc1F0KCkpLCB2YWx1ZSA9PiBcJGZ1bGxzY3JlZW5BUElTdXBwb3J0IH0sCiAK
ICAgICB7IG9wdGlvbiA9PiAiZ2FtZXBhZCIsIGRlc2MgPT4gIlRvZ2dsZSBHYW1lcGFkIHN1cHBv
cnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfR0FNRVBBRCIsIGRlZmF1bHQgPT4gKGlzRWZs
KCkgfHwgaXNHdGsoKSksIHZhbHVlID0+IFwkZ2FtZXBhZFN1cHBvcnQgfSwKKyAgICAgIGRlZmlu
ZSA9PiAiRU5BQkxFX0dBTUVQQUQiLCBkZWZhdWx0ID0+IChpc0VmbCgpIHx8IGlzR3RrKCkgfHwg
aXNRdCgpKSwgdmFsdWUgPT4gXCRnYW1lcGFkU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4g
Imdlb2xvY2F0aW9uIiwgZGVzYyA9PiAiVG9nZ2xlIEdlb2xvY2F0aW9uIHN1cHBvcnQiLAogICAg
ICAgZGVmaW5lID0+ICJFTkFCTEVfR0VPTE9DQVRJT04iLCBkZWZhdWx0ID0+IChpc0FwcGxlV2Vi
S2l0KCkgfHwgaXNHdGsoKSB8fCBpc0JsYWNrQmVycnkoKSksIHZhbHVlID0+IFwkZ2VvbG9jYXRp
b25TdXBwb3J0IH0sCmRpZmYgLS1naXQgYS9Ub29scy9xbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2Zl
YXR1cmVzLnByZiBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCmlu
ZGV4IDRhNjQ0MzQyNzA0MWEyOWJhYWRlODBmMWI5ZTg4ZDk3YjBlMmFiMmUuLmRiODFmNGQ4MmI3
NmUwZTlmZWI3NWIzYzQ2ZmM4NTA3M2FkMTU1OGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3FtYWtlL21r
c3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmCisrKyBiL1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVh
dHVyZXMvZmVhdHVyZXMucHJmCkBAIC0xNjksNiArMTY5LDExIEBAIGhhdmVRdCg1KSB7CiAgICAg
IW5vX3dlYmtpdDI6IERFRklORVMgKz0gRU5BQkxFX0ZVTExTQ1JFRU5fQVBJPTEKIH0KIAorIyBH
YW1lcGFkIEFQSSBTdXBwb3J0CitsaW51eC0qOiFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfR0FN
RVBBRD0uKSB7CisgICAgcGFja2FnZXNFeGlzdChsaWJ1ZGV2KTogREVGSU5FUyArPSBFTkFCTEVf
R0FNRVBBRD0xCit9CisKIGhhdmVRdCg0KSB7CiAgICAgaGF2ZVF0TW9kdWxlKGRlY2xhcmF0aXZl
KTogREVGSU5FUyArPSBIQVZFX1FRVUlDSzE9MQogfSBlbHNlIHsKQEAgLTI0NSw2ICsyNTAsMTQg
QEAgaGF2ZVF0KDQpOmNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0xKTpjb250YWlucyhE
RUZJTkVTLCBXVEZfVVNFXzNEX0dSQVBISUMKICAgICBlcnJvcigiV2ViR0wgcmVxdWlyZXMgUXQg
dG8gYmUgY29uZmlndXJlZCB3aXRoIE9wZW5HTC4gUGxlYXNlIHJlY29uZmlndXJlIFF0IHdpdGgg
T3BlbkdMLCBvciBidWlsZCBXZWJLaXQgd2l0aG91dCBXZWJHTC4iKQogfQogCitjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfR0FNRVBBRD0xKSB7CisgICAgIXBhY2thZ2VzRXhpc3QobGlidWRldikg
eworICAgICAgICBlcnJvcigiR2FtZXBhZCBBUEkgcmVxdWlyZXMgbGlidWRldiB0byBidWlsZC4g
UGxlYXNlIGluc3RhbGwgbGlidWRldiBkZXZlbG9wbWVudCBmaWxlcywgb3IgYnVpbGQgV2ViS2l0
IHdpdGhvdXQgZ2FtZXBhZC4iKQorICAgIH0gZWxzZTohbGludXgtKiB7CisgICAgICAgIGVycm9y
KCJDdXJyZW50bHkgdGhlIEdhbWVwYWQgQVBJIGlzIHN1cHBvcnRlZCBvbmx5IG9uIExpbnV4LCBi
dWlsZCBXZWJLaXQgd2l0aG91dCBnYW1lcGFkLiIpCisgICAgfQorfQorCiAjIFNsaWRlciBUb3Vj
aCBpcyBzZW5zaWJsZSB0byB1c2Ugd2hlbiBjb21waWxpbmcgV2ViS2l0MgogaGF2ZVF0KDUpOmNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9UT1VDSF9FVkVOVFM9MSkgewogICAgIERFRklORVMgKz0g
RU5BQkxFX1RPVUNIX1NMSURFUj0xCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWJjNzU4ODRkNjMzYzRjODhhZDJkZmUwYTNl
MWUxYTQ0NjA5MjhlYi4uNmIwMTI4NDkxOTc0ZGFiYWM0M2RiMTE1NGFjZjFhYzU3ZTQwYjIyNyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA4LTA0ICBNYXJjZWxvIExpcmEgIDxtYXJjZWxv
LmxpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIEFkZCBzdXBwb3J0IGZvciB0aGUg
R2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkwNjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRGlkIG5vdCB1bnNraXAgdGhlIGdhbWVwYWQgdGVzdHMgZm9yIHRoZSBRdCBwb3J0LCBzaW5j
ZSB0aGUgZmxhZyBpcyBvcHRpb25hbAorICAgICAgICB0aGUgdGVzdCB3b3VsZCBub3QgcGFzcyB3
aXRob3V0IGl0LiBUaGUgdXNlciBtYXkgdW5za2lwIGl0IG1hbnVhbGx5LgorCisgICAgICAgIE9u
IHRoZSBvdGhlciBoYW5kLCB0aGUgZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy5odG1sIHRlc3QgaXMg
c3RpbGwgZXhwZWN0ZWQKKyAgICAgICAgdG8gZmFpbCBiZWNhdXNlIGl0IHJlcXVpcmVzIGFkZGl0
aW9uYWwgdGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjg3MworCisgICAgICAgICogcGxhdGZvcm0vcXQvVGVz
dEV4cGVjdGF0aW9uczoKKwogMjAxMi0wOC0wNCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmViYXNlbGluZSBDaHJvbWl1bSByZXN1bHRzIGFmdGVyIHIxMjQ2
OTcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGFhZTMwNDdm
NTU3MzBiZjc4MzIzZDdmYmFmNTBmYjk5YjMwZDYyNTguLmY0ZDk5YzZmNDE1NzRiMzI2ZWY4NDkw
OTYxNWU5ZDg1MTYyNTMzOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMTE4LDYgKzExOCw5IEBAIEJVR1dLODQ2MzUgU0tJUCA6IGZhc3QvZG9tL0hUTUxE
aWFsb2dFbGVtZW50ID0gVEVYVAogLy8gU2tpcCB0ZXN0cyBpbiBmYXN0L3RleHQvc2hhcGluZwog
QlVHV0s5MDk1MSBTS0lQIDogZmFzdC90ZXh0L3NoYXBpbmcgPSBQQVNTCiAKKy8vIE1pc3Npbmcg
dGVzdCBpbmZyYXN0cnVjdHVyZSwgbm8gZ2FtZXBhZHMgYXZhaWxhYmxlLgorQlVHV0s5Mjg3MyBT
S0lQIDogZ2FtZXBhZC9nYW1lcGFkLXBvbGxpbmctYWNjZXNzLmh0bWwgPSBURVhUCisKIC8vIEZs
YWt5IHRlc3RzCiBCVUdXSzkxMzc2IDogaHR0cC90ZXN0cy9zZWN1cml0eS9zYW5kYm94ZWQtaWZy
YW1lLW1vZGlmeS1zZWxmLmh0bWwgPSBURVhUIFBBU1MKIEJVR1dLOTEzNzkgOiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9wb2xpY3ktZG9lcy1ub3QtYWZmZWN0LWNo
aWxkLmh0bWwgPSBURVhUIFBBU1MK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156951</attachid>
            <date>2012-08-07 08:49:36 -0700</date>
            <delta_ts>2012-08-07 12:04:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90637-20120807124910.patch</filename>
            <type>text/plain</type>
            <size>16228</size>
            <attacher name="Marcelo Lira">marcelo.lira</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTBhZTQxMzc4YWU3MDA4
NDAzMGZhNzJkYWEzNjFmODdjYzUxMzQzOS4uZTEzOTI3OTk0NzBiODlkMzQwNGI1M2ViMjY0MjVm
ZmJhNDA1ZDkzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA4LTA3ICBNYXJj
ZWxvIExpcmEgIDxtYXJjZWxvLmxpcmFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdIEFk
ZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGlz
IE1lbmFyZC4KKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIEdhbWVwYWQgQVBJIG9uIHRoZSBR
dCBwb3J0LgorCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGNsYXNzIHJlbGll
cyBvbiB0aGUgTGludXgKKyAgICAgICAga2VybmVsIGpveXN0aWNrIEFQSS4KKworICAgICAgICBH
YW1lcGFkIGRldmljZXMgYXJlIHJlY29nbml6ZWQgdGhyb3VnaCB0aGUgR2FtZXBhZHNRdAorICAg
ICAgICBjbGFzcywgd2hpY2ggdXNlcyB0aGUgdWRldiBsaWJyYXJ5IHRvIHdhdGNoIGZvciBjb25u
ZWN0aW9uLAorICAgICAgICBkaXNjb25uZWN0aW9uIGFuZCBvdGhlciBnYW1lcGFkIHJlbGF0ZWQg
ZXZlbnRzLgorCisgICAgICAgIFRlc3RzIGZvciB0aGlzIGZlYXR1cmUgYWxyZWFkeSBleGlzdC4K
KworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLnByaToKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFdlYkNvcmUucHJpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0dhbWVwYWRzUXQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoR2FtZXBhZERldmljZUxp
bnV4UXQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4UXQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlTGludXhRdDo6R2FtZXBhZERldmljZUxp
bnV4UXQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZERldmljZUxpbnV4UXQ6On5HYW1lcGFk
RGV2aWNlTGludXhRdCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlTGludXhRdDo6
cmVhZENhbGxiYWNrKToKKyAgICAgICAgKEdhbWVwYWRzUXQpOgorICAgICAgICAoV2ViQ29yZTo6
R2FtZXBhZHNRdDo6R2FtZXBhZHNRdCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc1F0Ojp+
R2FtZXBhZHNRdCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc1F0Ojppc0dhbWVwYWREZXZp
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZHNRdDo6b25HYW1lUGFkQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdhbWVwYWRzUXQ6OnJlZ2lzdGVyRGV2aWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdhbWVwYWRzUXQ6OnVucmVnaXN0ZXJEZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6
R2FtZXBhZHNRdDo6dXBkYXRlR2FtZXBhZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6c2FtcGxl
R2FtZXBhZHMpOgorCiAyMDEyLTA4LTA3ICBSb2JpbiBDYW8gIDxyb2Jpbi5jYW9AdG9yY2htb2Jp
bGUuY29tLmNuPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBHTCBzY2lzc29yIHRlc3QgaXMgYWNj
aWRlbnRhbGx5IHR1cm5lZCBvZmYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCA5M2Yz
ZGRhNmEzMDY3Yjk3MWY5N2RkZDI3OGQ0NTc5MDYzZGU5ZmEyLi4wNzI2YzZiZDJlY2Q0MzRjOTdk
OGM1MGQwMDI4NjUwMGU1MmU5ODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC02
MTMsNiArNjEzLDEzIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSkgewogICAgICQk
UFdEL3N2Zy9TVkdab29tRXZlbnQuaWRsCiB9CiAKK2NvbnRhaW5zKERFRklORVMsIEVOQUJMRV9H
QU1FUEFEPTEpIHsKKyAgSURMX0JJTkRJTkdTICs9IFwKKyAgICAkJFBXRC9Nb2R1bGVzL2dhbWVw
YWQvR2FtZXBhZC5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTGlzdC5p
ZGwgXAorICAgICQkUFdEL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmlkbAorfQor
CiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU9fVFJBQ0s9MSkgewogICBJRExfQklORElO
R1MgKz0gXAogICAgICQkUFdEL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpp
bmRleCAwOTVjNzg4MTNlY2MxMDFiOTU2ZmUwMGFmNmQ0ODAxYTAxYWE1YTBjLi4zMDRjNGI3MDZl
ODgyNmM1NzBmYmRjNjliNjNjNWZiNDExMDJjNjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTMwODYsNiAr
MzA4NiwyMiBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfUVVPVEE9MSkgewogICAgICAgICBN
b2R1bGVzL3F1b3RhL1N0b3JhZ2VJbmZvLmNwcAogfQogCitjb250YWlucyhERUZJTkVTLCBFTkFC
TEVfR0FNRVBBRD0xKSB7CisgICAgSEVBREVSUyArPSBcCisgICAgICAgIE1vZHVsZXMvZ2FtZXBh
ZC9HYW1lcGFkLmhcCisgICAgICAgIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTGlzdC5oIFwKKyAg
ICAgICAgTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuaCBcCisgICAgICAgIHBsYXRm
b3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oIFwKKyAgICAgICAgcGxhdGZvcm0vR2FtZXBh
ZHMuaAorCisgICAgU09VUkNFUyArPSBcCisgICAgICAgIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFk
LmNwcCBcCisgICAgICAgIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTGlzdC5jcHAgXAorICAgICAg
ICBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAgXAorICAgICAgICBwbGF0Zm9y
bS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguY3BwIFwKKyAgICAgICAgcGxhdGZvcm0vcXQvR2Ft
ZXBhZHNRdC5jcHAKK30KKwogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPPTEpIHsKICAg
ICBTT1VSQ0VTICs9IFwKICAgICAgICAgaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJpCmluZGV4IDU1NTIwMzk0YTRkODQwYzc5OGU5OTc4NjFmZjAxYjVlNjkzMTdhOWQuLjAy
MTkzMzQ2NzJhMWRjZjk4YTQwMDg2NzgwNjEzMGQyOTNkYzk2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBA
IC0xNTgsNiArMTU4LDEzIEBAIGNvbnRhaW5zKERFRklORVMsIFdURl9VU0VfUVRfTU9CSUxJVFlf
U1lTVEVNSU5GTz0xKSB7CiAgICAgIE1PQklMSVRZICo9IHN5c3RlbWluZm8KIH0KIAorY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX0dBTUVQQUQ9MSkgeworICAgIElOQ0xVREVQQVRIICs9IFwKKyAg
ICAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL2xpbnV4IFwKKyAgICAgICAgJCRTT1VSQ0VfRElS
L01vZHVsZXMvZ2FtZXBhZAorICAgIFBLR0NPTkZJRyArPSBsaWJ1ZGV2Cit9CisKIGNvbnRhaW5z
KERFRklORVMsIEVOQUJMRV9WSURFTz0xKSB7CiAgICAgY29udGFpbnMoREVGSU5FUywgV1RGX1VT
RV9RVEtJVD0xKSB7CiAgICAgICAgIElOQ0xVREVQQVRIICs9ICQkU09VUkNFX0RJUi9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0dh
bWVwYWRzUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvR2FtZXBhZHNRdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzAyMGQ3NmJjNTA5M2EzMmM0ZDMyZjQ5OTQxNmJiMzVhMjQxMmQxZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0dhbWVwYWRzUXQuY3Bw
CkBAIC0wLDAgKzEsMjI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElOZFQgLSBJbnN0
aXR1dG8gTm9raWEgZGUgVGVjbm9sb2dpYQorICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBhZHMuaCIKKworI2luY2x1ZGUgIkdhbWVwYWRE
ZXZpY2VMaW51eC5oIgorI2luY2x1ZGUgIkdhbWVwYWRMaXN0LmgiCisKKyNpbmNsdWRlIDxRT2Jq
ZWN0PgorI2luY2x1ZGUgPFFTb2NrZXROb3RpZmllcj4KKworZXh0ZXJuICJDIiB7CisgICAgI2lu
Y2x1ZGUgPGxpYnVkZXYuaD4KK30KKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEdhbWVwYWREZXZpY2VMaW51eFF0IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBHYW1lcGFk
RGV2aWNlTGludXggeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8R2FtZXBhZERldmljZUxpbnV4UXQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGRldmljZUZpbGUp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdhbWVwYWREZXZpY2VMaW51eFF0
KGRldmljZUZpbGUpKTsKKyAgICB9CisgICAgfkdhbWVwYWREZXZpY2VMaW51eFF0KCk7CisKK3By
aXZhdGU6CisgICAgR2FtZXBhZERldmljZUxpbnV4UXQoY29uc3QgU3RyaW5nJik7CisgICAgUVNv
Y2tldE5vdGlmaWVyKiBtX25vdGlmaWVyOworCitwcml2YXRlIHNsb3RzOgorICAgIGJvb2wgcmVh
ZENhbGxiYWNrKCk7Cit9OworCitHYW1lcGFkRGV2aWNlTGludXhRdDo6R2FtZXBhZERldmljZUxp
bnV4UXQoY29uc3QgU3RyaW5nJiBkZXZpY2VGaWxlKQorICAgIDogUU9iamVjdCgpCisgICAgLCBH
YW1lcGFkRGV2aWNlTGludXgoZGV2aWNlRmlsZSkKK3sKKyAgICBpZiAobV9maWxlRGVzY3JpcHRv
ciA9PSAtMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ub3RpZmllciA9IG5ldyBRU29ja2V0
Tm90aWZpZXIobV9maWxlRGVzY3JpcHRvciwgUVNvY2tldE5vdGlmaWVyOjpSZWFkLCB0aGlzKTsK
KyAgICBjb25uZWN0KG1fbm90aWZpZXIsIFNJR05BTChhY3RpdmF0ZWQoaW50KSksIHRoaXMsIFNM
T1QocmVhZENhbGxiYWNrKCkpKTsKK30KKworR2FtZXBhZERldmljZUxpbnV4UXQ6On5HYW1lcGFk
RGV2aWNlTGludXhRdCgpCit7Cit9CisKK2Jvb2wgR2FtZXBhZERldmljZUxpbnV4UXQ6OnJlYWRD
YWxsYmFjaygpCit7CisgICAganNfZXZlbnQgZXZlbnQ7CisgICAgaW50IGxlbiA9IHJlYWQobV9m
aWxlRGVzY3JpcHRvciwgJmV2ZW50LCBzaXplb2YoanNfZXZlbnQpKTsKKyAgICBpZiAobGVuICE9
IHNpemVvZihldmVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB1cGRhdGVGb3JFdmVu
dChldmVudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2NsYXNzIEdhbWVwYWRzUXQgOiBwdWJs
aWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBHYW1lcGFkc1F0KHVuc2ln
bmVkKTsKKworICAgIHZvaWQgcmVnaXN0ZXJEZXZpY2UoY29uc3QgU3RyaW5nJik7CisgICAgdm9p
ZCB1bnJlZ2lzdGVyRGV2aWNlKGNvbnN0IFN0cmluZyYpOworCisgICAgdm9pZCB1cGRhdGVHYW1l
cGFkTGlzdChHYW1lcGFkTGlzdCopOworCitwcml2YXRlIHNsb3RzOgorICAgIHZvaWQgb25HYW1l
UGFkQ2hhbmdlKCk7CisKK3ByaXZhdGU6CisgICAgfkdhbWVwYWRzUXQoKTsKKyAgICBib29sIGlz
R2FtZXBhZERldmljZShzdHJ1Y3QgdWRldl9kZXZpY2UqKTsKKworICAgIFZlY3RvcjxPd25QdHI8
R2FtZXBhZERldmljZUxpbnV4UXQ+ID4gbV9zbG90czsKKyAgICBIYXNoTWFwPFN0cmluZywgR2Ft
ZXBhZERldmljZUxpbnV4UXQqPiBtX2RldmljZU1hcDsKKworICAgIHN0cnVjdCB1ZGV2KiBtX3Vk
ZXY7CisgICAgc3RydWN0IHVkZXZfbW9uaXRvciogbV9nYW1lcGFkc01vbml0b3I7CisgICAgUVNv
Y2tldE5vdGlmaWVyKiBtX2dhbWVwYWRzTm90aWZpZXI7Cit9OworCitHYW1lcGFkc1F0OjpHYW1l
cGFkc1F0KHVuc2lnbmVkIGxlbmd0aCkKKyAgICA6IFFPYmplY3QoKQorICAgICwgbV9zbG90cyhs
ZW5ndGgpCit7CisgICAgbV91ZGV2ID0gdWRldl9uZXcoKTsKKyAgICBtX2dhbWVwYWRzTW9uaXRv
ciA9IHVkZXZfbW9uaXRvcl9uZXdfZnJvbV9uZXRsaW5rKG1fdWRldiwgInVkZXYiKTsKKyAgICB1
ZGV2X21vbml0b3JfZW5hYmxlX3JlY2VpdmluZyhtX2dhbWVwYWRzTW9uaXRvcik7CisgICAgdWRl
dl9tb25pdG9yX2ZpbHRlcl9hZGRfbWF0Y2hfc3Vic3lzdGVtX2RldnR5cGUobV9nYW1lcGFkc01v
bml0b3IsICJpbnB1dCIsIDApOworICAgIG1fZ2FtZXBhZHNOb3RpZmllciA9IG5ldyBRU29ja2V0
Tm90aWZpZXIodWRldl9tb25pdG9yX2dldF9mZChtX2dhbWVwYWRzTW9uaXRvciksIFFTb2NrZXRO
b3RpZmllcjo6UmVhZCwgdGhpcyk7CisgICAgY29ubmVjdChtX2dhbWVwYWRzTm90aWZpZXIsIFNJ
R05BTChhY3RpdmF0ZWQoaW50KSksIHRoaXMsIFNMT1Qob25HYW1lUGFkQ2hhbmdlKCkpKTsKKwor
ICAgIHN0cnVjdCB1ZGV2X2VudW1lcmF0ZSogZW51bWVyYXRlID0gdWRldl9lbnVtZXJhdGVfbmV3
KG1fdWRldik7CisgICAgdWRldl9lbnVtZXJhdGVfYWRkX21hdGNoX3N1YnN5c3RlbShlbnVtZXJh
dGUsICJpbnB1dCIpOworICAgIHVkZXZfZW51bWVyYXRlX2FkZF9tYXRjaF9wcm9wZXJ0eShlbnVt
ZXJhdGUsICJJRF9JTlBVVF9KT1lTVElDSyIsICIxIik7CisgICAgdWRldl9lbnVtZXJhdGVfc2Nh
bl9kZXZpY2VzKGVudW1lcmF0ZSk7CisgICAgc3RydWN0IHVkZXZfbGlzdF9lbnRyeSogY3VyOwor
ICAgIHN0cnVjdCB1ZGV2X2xpc3RfZW50cnkqIGRldnMgPSB1ZGV2X2VudW1lcmF0ZV9nZXRfbGlz
dF9lbnRyeShlbnVtZXJhdGUpOworICAgIHVkZXZfbGlzdF9lbnRyeV9mb3JlYWNoKGN1ciwgZGV2
cykKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIqIGRldm5hbWUgPSB1ZGV2X2xpc3RfZW50cnlf
Z2V0X25hbWUoY3VyKTsKKyAgICAgICAgc3RydWN0IHVkZXZfZGV2aWNlKiBkZXZpY2UgPSB1ZGV2
X2RldmljZV9uZXdfZnJvbV9zeXNwYXRoKG1fdWRldiwgZGV2bmFtZSk7CisgICAgICAgIGlmIChp
c0dhbWVwYWREZXZpY2UoZGV2aWNlKSkKKyAgICAgICAgICAgIHJlZ2lzdGVyRGV2aWNlKFN0cmlu
Zzo6ZnJvbVVURjgodWRldl9kZXZpY2VfZ2V0X2Rldm5vZGUoZGV2aWNlKSkpOworICAgICAgICB1
ZGV2X2RldmljZV91bnJlZihkZXZpY2UpOworICAgIH0KKyAgICB1ZGV2X2VudW1lcmF0ZV91bnJl
ZihlbnVtZXJhdGUpOworfQorCitHYW1lcGFkc1F0Ojp+R2FtZXBhZHNRdCgpCit7CisgICAgdWRl
dl91bnJlZihtX3VkZXYpOworICAgIHVkZXZfbW9uaXRvcl91bnJlZihtX2dhbWVwYWRzTW9uaXRv
cik7Cit9CisKK2Jvb2wgR2FtZXBhZHNRdDo6aXNHYW1lcGFkRGV2aWNlKHN0cnVjdCB1ZGV2X2Rl
dmljZSogZGV2aWNlKQoreworICAgIGNvbnN0IGNoYXIqIGRldmljZUZpbGUgPSB1ZGV2X2Rldmlj
ZV9nZXRfZGV2bm9kZShkZXZpY2UpOworICAgIGNvbnN0IGNoYXIqIHN5c2ZzUGF0aCA9IHVkZXZf
ZGV2aWNlX2dldF9zeXNwYXRoKGRldmljZSk7CisgICAgaWYgKCFkZXZpY2VGaWxlIHx8ICFzeXNm
c1BhdGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXVkZXZfZGV2aWNlX2dldF9w
cm9wZXJ0eV92YWx1ZShkZXZpY2UsICJJRF9JTlBVVCIpIHx8ICF1ZGV2X2RldmljZV9nZXRfcHJv
cGVydHlfdmFsdWUoZGV2aWNlLCAiSURfSU5QVVRfSk9ZU1RJQ0siKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBRQnl0ZUFycmF5KGRldmljZUZpbGUpLnN0YXJ0c1dpdGgoIi9k
ZXYvaW5wdXQvanMiKTsKK30KKwordm9pZCBHYW1lcGFkc1F0OjpvbkdhbWVQYWRDaGFuZ2UoKQor
eworICAgIHN0cnVjdCB1ZGV2X2RldmljZSogZGV2aWNlID0gdWRldl9tb25pdG9yX3JlY2VpdmVf
ZGV2aWNlKG1fZ2FtZXBhZHNNb25pdG9yKTsKKyAgICBpZiAoIWlzR2FtZXBhZERldmljZShkZXZp
Y2UpKQorICAgICAgICByZXR1cm47CisgICAgUUJ5dGVBcnJheSBhY3Rpb24odWRldl9kZXZpY2Vf
Z2V0X2FjdGlvbihkZXZpY2UpKTsKKyAgICBpZiAoYWN0aW9uID09ICJhZGQiKQorICAgICAgICBy
ZWdpc3RlckRldmljZSh1ZGV2X2RldmljZV9nZXRfZGV2bm9kZShkZXZpY2UpKTsKKyAgICBlbHNl
IGlmIChhY3Rpb24gPT0gInJlbW92ZSIpCisgICAgICAgIHVucmVnaXN0ZXJEZXZpY2UodWRldl9k
ZXZpY2VfZ2V0X2Rldm5vZGUoZGV2aWNlKSk7Cit9CisKK3ZvaWQgR2FtZXBhZHNRdDo6cmVnaXN0
ZXJEZXZpY2UoY29uc3QgU3RyaW5nJiBkZXZpY2VGaWxlKQoreworICAgIEFTU0VSVCghbV9kZXZp
Y2VNYXAuY29udGFpbnMoZGV2aWNlRmlsZSkpOworCisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9
IDA7IGluZGV4IDwgbV9zbG90cy5zaXplKCk7IGluZGV4KyspIHsKKyAgICAgICAgaWYgKCFtX3Ns
b3RzW2luZGV4XSkgeworICAgICAgICAgICAgbV9zbG90c1tpbmRleF0gPSBHYW1lcGFkRGV2aWNl
TGludXhRdDo6Y3JlYXRlKGRldmljZUZpbGUpOworICAgICAgICAgICAgbV9kZXZpY2VNYXAuYWRk
KGRldmljZUZpbGUsIG1fc2xvdHNbaW5kZXhdLmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEdhbWVwYWRzUXQ6OnVucmVnaXN0ZXJEZXZpY2Uo
Y29uc3QgU3RyaW5nJiBkZXZpY2VGaWxlKQoreworICAgIEFTU0VSVChtX2RldmljZU1hcC5jb250
YWlucyhkZXZpY2VGaWxlKSk7CisKKyAgICBHYW1lcGFkRGV2aWNlTGludXhRdCogZ2FtZXBhZERl
dmljZSA9IG1fZGV2aWNlTWFwLnRha2UoZGV2aWNlRmlsZSk7CisgICAgdW5zaWduZWQgaW5kZXgg
PSBtX3Nsb3RzLmZpbmQoZ2FtZXBhZERldmljZSk7CisKKyAgICBtX3Nsb3RzW2luZGV4XS5jbGVh
cigpOworfQorCit2b2lkIEdhbWVwYWRzUXQ6OnVwZGF0ZUdhbWVwYWRMaXN0KEdhbWVwYWRMaXN0
KiBpbnRvKQoreworICAgIEFTU0VSVChtX3Nsb3RzLnNpemUoKSA9PSBpbnRvLT5sZW5ndGgoKSk7
CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zbG90cy5zaXplKCk7IGkrKykgewor
ICAgICAgICBpZiAobV9zbG90c1tpXSAmJiBtX3Nsb3RzW2ldLT5jb25uZWN0ZWQoKSkgeworICAg
ICAgICAgICAgR2FtZXBhZERldmljZUxpbnV4UXQqIGdhbWVwYWREZXZpY2UgPSBtX3Nsb3RzW2ld
LmdldCgpOworICAgICAgICAgICAgUmVmUHRyPEdhbWVwYWQ+IGdhbWVwYWQgPSBpbnRvLT5pdGVt
KGkpOworICAgICAgICAgICAgaWYgKCFnYW1lcGFkKQorICAgICAgICAgICAgICAgIGdhbWVwYWQg
PSBHYW1lcGFkOjpjcmVhdGUoKTsKKworICAgICAgICAgICAgZ2FtZXBhZC0+aW5kZXgoaSk7Cisg
ICAgICAgICAgICBnYW1lcGFkLT5pZChnYW1lcGFkRGV2aWNlLT5pZCgpKTsKKyAgICAgICAgICAg
IGdhbWVwYWQtPnRpbWVzdGFtcChnYW1lcGFkRGV2aWNlLT50aW1lc3RhbXAoKSk7CisgICAgICAg
ICAgICBnYW1lcGFkLT5heGVzKGdhbWVwYWREZXZpY2UtPmF4ZXNDb3VudCgpLCBnYW1lcGFkRGV2
aWNlLT5heGVzRGF0YSgpKTsKKyAgICAgICAgICAgIGdhbWVwYWQtPmJ1dHRvbnMoZ2FtZXBhZERl
dmljZS0+YnV0dG9uc0NvdW50KCksIGdhbWVwYWREZXZpY2UtPmJ1dHRvbnNEYXRhKCkpOworCisg
ICAgICAgICAgICBpbnRvLT5zZXQoaSwgZ2FtZXBhZCk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgaW50by0+c2V0KGksIDApOworICAgIH0KK30KKwordm9pZCBzYW1wbGVHYW1lcGFkcyhH
YW1lcGFkTGlzdCogaW50bykKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEdhbWVwYWRzUXQs
IGdhbWVwYWRzUXQsIChpbnRvLT5sZW5ndGgoKSkpOworICAgIGdhbWVwYWRzUXQudXBkYXRlR2Ft
ZXBhZExpc3QoaW50byk7Cit9CisKKyNpbmNsdWRlICJHYW1lcGFkc1F0Lm1vYyIKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDUzMmQ1YzhlNzNiZWIwMDJlNWEwNmNkYmY3ZmU0YTgzZmQ2Nzk5NzYuLjhl
ZDNhYmJiOWFlNzM4YjZjZGYxZDk1MDYxMTI1MjFlYTU4OGRkNzAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0w
OC0wNyAgTWFyY2VsbyBMaXJhICA8bWFyY2Vsby5saXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAg
ICAgW1F0XSBBZGQgc3VwcG9ydCBmb3IgdGhlIEdhbWVwYWQgQVBJCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDYzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhpcyBNZW5hcmQuCisKKyAgICAgICAgSWYgdGhlIGxpYnVkZXYgbGlicmFyeSBpcyBw
cmVzZW50LCB0aGUgR0FNRVBBRCBmbGFnIGlzCisgICAgICAgIHR1cm5lZCBvbiBieSBkZWZhdWx0
IGZvciB0aGUgUXQgcG9ydC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJl
TGlzdC5wbToKKyAgICAgICAgKiBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL2ZlYXR1cmVzLnByZjoK
KwogMjAxMi0wOC0wNyAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29t
PgogCiAgICAgICAgIFtRdF0gTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCB3aXRob3V0IFF0UXVp
Y2sKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCAwMjc0MzQ1N2Nm
ZmZmNWI2ZGUxZThkZmMwOGZkNzAzMDIxNzUwNjAyLi5mNmEwNWRmMDA3MTM2MjY0NGQ4NjM3ZDkx
ZmNiNGNiNzU1ZjNkZDczIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBt
CkBAIC0yMjYsNyArMjI2LDcgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgICAgZGVmaW5lID0+ICJF
TkFCTEVfRlVMTFNDUkVFTl9BUEkiLCBkZWZhdWx0ID0+IChpc0FwcGxlTWFjV2ViS2l0KCkgfHwg
aXNFZmwoKSB8fCBpc0d0aygpIHx8IGlzQmxhY2tCZXJyeSgpIHx8IGlzUXQoKSksIHZhbHVlID0+
IFwkZnVsbHNjcmVlbkFQSVN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJnYW1lcGFkIiwg
ZGVzYyA9PiAiVG9nZ2xlIEdhbWVwYWQgc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9HQU1FUEFEIiwgZGVmYXVsdCA9PiAoaXNFZmwoKSB8fCBpc0d0aygpKSwgdmFsdWUgPT4gXCRn
YW1lcGFkU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfR0FNRVBBRCIsIGRlZmF1
bHQgPT4gKGlzRWZsKCkgfHwgaXNHdGsoKSB8fCBpc1F0KCkpLCB2YWx1ZSA9PiBcJGdhbWVwYWRT
dXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAiZ2VvbG9jYXRpb24iLCBkZXNjID0+ICJUb2dn
bGUgR2VvbG9jYXRpb24gc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9HRU9MT0NB
VElPTiIsIGRlZmF1bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8fCBpc0d0aygpIHx8IGlzQmxhY2tC
ZXJyeSgpKSwgdmFsdWUgPT4gXCRnZW9sb2NhdGlvblN1cHBvcnQgfSwKZGlmZiAtLWdpdCBhL1Rv
b2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvZmVhdHVyZXMucHJmIGIvVG9vbHMvcW1ha2UvbWtz
cGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYKaW5kZXggZDRhYThiYjJmODI5MTcwMzk5MWRlODY0
YTMwMjQ5MTJlMzllODJmNy4uYzljZGRkNTFkNzM0NGZmMWQ4ZjJkOGNkNGExM2Q4MDBlOTdlMWE3
MyAxMDA2NDQKLS0tIGEvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYK
KysrIGIvVG9vbHMvcW1ha2UvbWtzcGVjcy9mZWF0dXJlcy9mZWF0dXJlcy5wcmYKQEAgLTE1Miw2
ICsxNTIsMTEgQEAgaGF2ZVF0TW9kdWxlKHNlbnNvcnMpIHsKICAgICAhbm9fd2Via2l0MjogREVG
SU5FUyArPSBFTkFCTEVfRlVMTFNDUkVFTl9BUEk9MQogfQogCisjIEdhbWVwYWQgQVBJIFN1cHBv
cnQKK2xpbnV4LSo6IWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9HQU1FUEFEPS4pIHsKKyAgICBw
YWNrYWdlc0V4aXN0KGxpYnVkZXYpOiBERUZJTkVTICs9IEVOQUJMRV9HQU1FUEFEPTEKK30KKwog
IyBYY29tcG9zaXRlIFN1cHBvcnQKIGxpbnV4LSo6Y29uZmlnX2xpYlhjb21wb3NpdGU6IERFRklO
RVMgKz0gSEFWRV9YQ09NUE9TSVRFPTEKIApAQCAtMjE1LDYgKzIyMCwxMyBAQCBmb3IoZGVmaW5l
LCBERUZJTkVTKSB7CiAgICAgfQogfQogCitjb250YWlucyhERUZJTkVTLCBFTkFCTEVfR0FNRVBB
RD0xKSB7CisgICAgIXBhY2thZ2VzRXhpc3QobGlidWRldikgeworICAgICAgICBlcnJvcigiR2Ft
ZXBhZCBBUEkgcmVxdWlyZXMgbGlidWRldiB0byBidWlsZC4gUGxlYXNlIGluc3RhbGwgbGlidWRl
diBkZXZlbG9wbWVudCBmaWxlcywgb3IgYnVpbGQgV2ViS2l0IHdpdGhvdXQgZ2FtZXBhZC4iKQor
ICAgIH0gZWxzZTohbGludXgtKiB7CisgICAgICAgIGVycm9yKCJDdXJyZW50bHkgdGhlIEdhbWVw
YWQgQVBJIGlzIHN1cHBvcnRlZCBvbmx5IG9uIExpbnV4LCBidWlsZCBXZWJLaXQgd2l0aG91dCBn
YW1lcGFkLiIpCisgICAgfQorfQogCiAjIFNsaWRlciBUb3VjaCBpcyBzZW5zaWJsZSB0byB1c2Ug
d2hlbiBjb21waWxpbmcgV2ViS2l0MgogaGF2ZVF0KDUpOmNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9UT1VDSF9FVkVOVFM9MSkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE3OTM1ZDQ5M2I5ZWQ1ZmQzYTA0ZDgyOTZjYmM3
OTA4ZmJiZTAyYjcuLmEzNjE5MTkxN2YzOTEwOWI3OGJhOWUyZWNjYjQyMGE1OGQ2YTRhYTkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOC0wNyAgTWFyY2VsbyBMaXJhICA8bWFyY2Vsby5s
aXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBBZGQgc3VwcG9ydCBmb3IgdGhlIEdh
bWVwYWQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDYzNworCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhpcyBNZW5hcmQuCisKKyAgICAgICAg
VGhpcyBkb2VzIG5vdCB1bnNraXAgdGhlIGdhbWVwYWQgdGVzdHMgZm9yIHRoZSBRdCBwb3J0LCBz
aW5jZSB0aGUgZmxhZyBpcworICAgICAgICBvcHRpb25hbCB0aGUgdGVzdCB3b3VsZCBub3QgcGFz
cyB3aXRob3V0IGl0LiBUaGUgdXNlciBtYXkgdW5za2lwIGl0IG1hbnVhbGx5LgorCisgICAgICAg
IE9uIHRoZSBvdGhlciBoYW5kLCB0aGUgZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy5odG1sIHRlc3Qg
aXMgc3RpbGwgZXhwZWN0ZWQKKyAgICAgICAgdG8gZmFpbCBiZWNhdXNlIGl0IHJlcXVpcmVzIGFk
ZGl0aW9uYWwgdGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgU2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjg3MworCisgICAgICAgICogcGxhdGZvcm0vcXQv
VGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMi0wOC0wNyAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3Mg
IDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBBZGQgdGVzdCBleHBl
Y3RhdGlvbiBhZnRlciByMTI0ODc0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCA2ZjVkZmUwNWEwNzc3MmNlNGEyZjk2YjNlMDIxMmRkYTY4NzcxOTkxLi5hNGQ0
YTFmYzk2MDVkZjI2NWNkZTZmYmRmMmYzOWZiZjg4ODJmZjQ0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTExNyw2ICsxMTcsOSBAQCBCVUdXSzg0NjM1IFNL
SVAgOiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudCA9IFRFWFQKIC8vIFNraXAgdGVzdHMgaW4g
ZmFzdC90ZXh0L3NoYXBpbmcKIEJVR1dLOTA5NTEgU0tJUCA6IGZhc3QvdGV4dC9zaGFwaW5nID0g
UEFTUwogCisvLyBNaXNzaW5nIHRlc3QgaW5mcmFzdHJ1Y3R1cmUsIG5vIGdhbWVwYWRzIGF2YWls
YWJsZS4KK0JVR1dLOTI4NzMgU0tJUCA6IGdhbWVwYWQvZ2FtZXBhZC1wb2xsaW5nLWFjY2Vzcy5o
dG1sID0gVEVYVAorCiAvLyBGbGFreSB0ZXN0cwogQlVHV0s5MTM3NiA6IGh0dHAvdGVzdHMvc2Vj
dXJpdHkvc2FuZGJveGVkLWlmcmFtZS1tb2RpZnktc2VsZi5odG1sID0gVEVYVCBQQVNTCiBCVUdX
SzkxMzc5IDogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcG9saWN5
LWRvZXMtbm90LWFmZmVjdC1jaGlsZC5odG1sID0gVEVYVCBQQVNTCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>