<?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>74882</bug_id>
          
          <creation_ts>2011-12-19 13:31:20 -0800</creation_ts>
          <short_desc>implement layout tests for &lt;video&gt; with media stream</short_desc>
          <delta_ts>2012-01-12 10:24:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>74930</dependson>
          <blocked>56587</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>wjia</reporter>
          <assigned_to>wjia</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>harald</cc>
    
    <cc>tkent</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>524142</commentid>
    <comment_count>0</comment_count>
    <who name="">wjia</who>
    <bug_when>2011-12-19 13:31:20 -0800</bug_when>
    <thetext>Implement the needed code to facilitate integration test for &lt;video&gt; with src from media stream.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524191</commentid>
    <comment_count>1</comment_count>
      <attachid>119919</attachid>
    <who name="">wjia</who>
    <bug_when>2011-12-19 14:25:21 -0800</bug_when>
    <thetext>Created attachment 119919
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524195</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-19 14:34:33 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524327</commentid>
    <comment_count>3</comment_count>
      <attachid>119919</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-12-19 17:23:37 -0800</bug_when>
    <thetext>Comment on attachment 119919
Patch

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

&gt; Tools/DumpRenderTree/chromium/TestMediaStreamClient.cpp:38
&gt; +#include &quot;media/base/message_loop_factory.h&quot;
&gt; +#include &quot;media/base/pipeline.h&quot;
&gt; +#include &quot;media/video/capture/fake_capture_video_decoder.h&quot;

We have to avoid using Chromium code other than webkit/support/ in DRT.

&gt; Tools/DumpRenderTree/chromium/TestMediaStreamClient.cpp:46
&gt; +namespace {
&gt; +
&gt; +static const int kVideoCaptureWidth = 352;
&gt; +static const int kVideoCaptureHeight = 288;
&gt; +static const int kVideoCaptureFramePerSecond = 30;
&gt; +
&gt; +} // namespace

Do not use anonymous namespace and k-prefix in WebKit code.

&gt; Tools/DumpRenderTree/chromium/TestMediaStreamClient.h:38
&gt; +#include &quot;webkit/media/media_stream_client.h&quot;

We have to avoid using Chromium code other than webkit/support/ in DRT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524360</commentid>
    <comment_count>4</comment_count>
      <attachid>119969</attachid>
    <who name="">wjia</who>
    <bug_when>2011-12-19 18:45:14 -0800</bug_when>
    <thetext>Created attachment 119969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524363</commentid>
    <comment_count>5</comment_count>
    <who name="">wjia</who>
    <bug_when>2011-12-19 18:47:34 -0800</bug_when>
    <thetext>please take another look. The TestMediaStreamClient has been moved into webkit/support in chromium (http://codereview.chromium.org/8887004/).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524605</commentid>
    <comment_count>6</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-12-20 07:22:06 -0800</bug_when>
    <thetext>This patch must be split into two to keep the build green at all times, so please wait with the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524773</commentid>
    <comment_count>7</comment_count>
      <attachid>119969</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-20 13:04:39 -0800</bug_when>
    <thetext>Comment on attachment 119969
Patch

Attachment 119969 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10991359</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525202</commentid>
    <comment_count>8</comment_count>
      <attachid>120163</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-12-21 02:31:33 -0800</bug_when>
    <thetext>Created attachment 120163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530715</commentid>
    <comment_count>9</comment_count>
      <attachid>121353</attachid>
    <who name="">wjia</who>
    <bug_when>2012-01-05 15:40:37 -0800</bug_when>
    <thetext>Created attachment 121353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530722</commentid>
    <comment_count>10</comment_count>
    <who name="">wjia</who>
    <bug_when>2012-01-05 15:46:08 -0800</bug_when>
    <thetext>Please take another look.

patch (id=121353) moved WebUserMediaClientMock from Source/WebKit/chromium to Tools/DumpRenderTree/chromium. Now there is no need to have 2 patches (the other is in bug 74930). This patch only depends on chromium patch http://codereview.chromium.org/8887004/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530908</commentid>
    <comment_count>11</comment_count>
      <attachid>121353</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-05 20:57:08 -0800</bug_when>
    <thetext>Comment on attachment 121353
Patch

Attachment 121353 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11122209</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531476</commentid>
    <comment_count>12</comment_count>
    <who name="">wjia</who>
    <bug_when>2012-01-06 15:59:55 -0800</bug_when>
    <thetext>The chromium patch has been landed as http://src.chromium.org/viewvc/chrome?view=rev&amp;revision=116749. With chromium r116749, this patch should work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532791</commentid>
    <comment_count>13</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-01-09 20:16:34 -0800</bug_when>
    <thetext>Would you post the same patch again please? I&apos;d like to see EWS bot results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533285</commentid>
    <comment_count>14</comment_count>
      <attachid>121889</attachid>
    <who name="">wjia</who>
    <bug_when>2012-01-10 12:10:17 -0800</bug_when>
    <thetext>Created attachment 121889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533488</commentid>
    <comment_count>15</comment_count>
      <attachid>121889</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-01-10 16:54:16 -0800</bug_when>
    <thetext>Comment on attachment 121889
Patch

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

Some style nits and a test question.

&gt; Tools/DumpRenderTree/chromium/WebUserMediaClientMock.cpp:45
&gt; +WebUserMediaClientMock* WebUserMediaClientMock::create()
&gt; +{
&gt; +    return new WebUserMediaClientMock();

This should be:

PassOwnPtr&lt;WebUserMediaClientMock&gt; WebUserMediaClientMock::create()
{
    return adoptPtr(new WebuserMediaClientMock());

&gt; Tools/DumpRenderTree/chromium/WebUserMediaClientMock.cpp:71
&gt; +    size_t size = 1;

nit: This should be &apos;const size_t&apos;.

&gt; Tools/DumpRenderTree/chromium/WebUserMediaClientMock.h:52
&gt; +};

We had better have

private:
      WebUserMediaClientMock();

&gt; LayoutTests/platform/chromium/media/video-capture-preview.html:11
&gt; +var preview_url = &quot;&quot;;
&gt; +var localStream = null;

We usually use camelCase for variable names though we don&apos;t have an official JavaScript style.
preview_url -&gt; previewURL

&gt; LayoutTests/platform/chromium/media/video-capture-preview.html:18
&gt; +function gotStream(s)

One-letter variable name is not good.

&gt; LayoutTests/platform/chromium/media/video-capture-preview.html:33
&gt; +    var milliseconds = 2000;
&gt; +    var replayIfTimeIsReached = function ()
&gt; +    {
&gt; +        startPreview();
&gt; +        consoleWrite(&quot;restart preview&quot;);
&gt; +        setTimeout(endTest, 2500);
&gt; +    }
&gt; +
&gt; +    setTimeout(replayIfTimeIsReached, milliseconds + 100);

What do these magic numbers mean?
 - milliseconds = 2000
 - setTimeout(..., 2500)
 - setTimeout(..., milliseconds + 100)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534092</commentid>
    <comment_count>16</comment_count>
      <attachid>122064</attachid>
    <who name="">wjia</who>
    <bug_when>2012-01-11 11:53:31 -0800</bug_when>
    <thetext>Created attachment 122064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534093</commentid>
    <comment_count>17</comment_count>
    <who name="">wjia</who>
    <bug_when>2012-01-11 11:55:44 -0800</bug_when>
    <thetext>Thanks, Kent! The magic numbers in LayoutTests/platform/chromium/media/video-capture-preview.html are play time. In the new patch, I have consolidated them to one number. Please take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534330</commentid>
    <comment_count>18</comment_count>
      <attachid>122064</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-01-11 15:24:03 -0800</bug_when>
    <thetext>Comment on attachment 122064
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534385</commentid>
    <comment_count>19</comment_count>
      <attachid>122064</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-11 16:27:12 -0800</bug_when>
    <thetext>Comment on attachment 122064
Patch

Clearing flags on attachment: 122064

Committed r104764: &lt;http://trac.webkit.org/changeset/104764&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534387</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-11 16:27:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534947</commentid>
    <comment_count>21</comment_count>
    <who name="">wjia</who>
    <bug_when>2012-01-12 10:24:42 -0800</bug_when>
    <thetext>*** Bug 74930 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119919</attachid>
            <date>2011-12-19 14:25:21 -0800</date>
            <delta_ts>2011-12-19 18:45:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74882-20111219142520.patch</filename>
            <type>text/plain</type>
            <size>24444</size>
            <attacher>wjia</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMyNjYpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5
IEBACisyMDExLTEyLTE5ICBXZWkgSmlhICA8d2ppYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
aW1wbGVtZW50IGxheW91dCB0ZXN0cyBmb3IgPHZpZGVvPiB3aXRoIG1lZGlhIHN0cmVhbQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ4ODIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6
CisgICAgICAgICogcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6On5XZWJVc2VyTWVkaWFDbGllbnRN
b2NrKToKKyAgICAgICAgKiBzcmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjppc1N0cmVhbSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0
KToKKwogMjAxMS0xMi0xOSAgSWFpbiBNZXJyaWNrICA8aHVza3lAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBbY2hyb21pdW1dIEFjY2VsZXJhdGVkIGNhbnZhcyBicm9rZW4gaW4gdGhyZWFkZWQgY29t
cG9zaXRpbmcgbW9kZQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24g
MTAzMjYxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTksNiArMjU5LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRS
dW4uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxMb2FkZXJPcHRpb25zLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50LmgnLAorICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJWaWV3LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVmlld0NsaWVudC5oJywK
QEAgLTY1OSw2ICs2NjAsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVzcG9uc2Uu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVSTFJlc3BvbnNlUHJpdmF0ZS5oJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYlVSTEVycm9yLmNwcCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJV
c2VyTWVkaWFSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWV3SW1wbC5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwuaCcsCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50TW9j
ay5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNl
ck1lZGlhQ2xpZW50TW9jay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKKyNkZWZpbmUgV2ViVXNlck1lZGlhQ2xpZW50TW9ja19o
CisKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJDb21tb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJVUkwuaCIKKworI2luY2x1ZGUgPGxpc3Q+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrIDogcHVibGljIFdlYlVzZXJNZWRpYUNs
aWVudCB7CitwdWJsaWM6CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViVXNlck1lZGlhQ2xp
ZW50TW9jayogY3JlYXRlKCk7CisgICAgfldlYlVzZXJNZWRpYUNsaWVudE1vY2soKSB7IH0KKwor
ICAgIFdFQktJVF9FWFBPUlQgYm9vbCBpc1N0cmVhbShjb25zdCBXZWJVUkwmKTsKKworICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmLCBj
b25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+Jik7CisgICAgdmlydHVhbCB2b2lk
IGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpOworCitw
cml2YXRlOgorICAgIHN0ZDo6bGlzdDxXZWJTdHJpbmc+IG1fc3RyZWFtTGFiZWxzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
X2gKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUK
ICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRpYUNs
aWVudE1vY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlVzZXJNZWRpYUNsaWVudE1vY2suY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xp
ZW50TW9jay5oIgorCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgorI2luY2x1
ZGUgIldlYlVzZXJNZWRpYVJlcXVlc3QuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0
cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJj
ZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworV2ViVXNlck1lZGlhQ2xpZW50TW9jayogV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y3Jl
YXRlKCkKK3sKKyAgICByZXR1cm4gbmV3IFdlYlVzZXJNZWRpYUNsaWVudE1vY2soKTsKK30KKwor
Ym9vbCBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjppc1N0cmVhbShjb25zdCBXZWJVUkwmIHVybCkK
K3sKKyAgICBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IgZGVzY3JpcHRvcihXZWJNZWRpYVN0cmVh
bVJlZ2lzdHJ5Ojpsb29rdXBNZWRpYVN0cmVhbURlc2NyaXB0b3IodXJsKSk7CisgICAgaWYgKGRl
c2NyaXB0b3IuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYlZlY3Rv
cjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4gc291cmNlVmVjdG9yOworICAgIGRlc2NyaXB0b3Iuc291
cmNlcyhzb3VyY2VWZWN0b3IpOworICAgIFdlYlN0cmluZyBsYWJlbDsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNvdXJjZVZlY3Rvci5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoc291
cmNlVmVjdG9yW2ldLnR5cGUoKSA9PSBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvKSB7
CisgICAgICAgICAgICBsYWJlbCA9IHNvdXJjZVZlY3RvcltpXS5pZCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGxhYmVsLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgc3RkOjpsaXN0PFdlYlN0cmluZz46Oml0ZXJhdG9yIGl0
OworICAgIGZvciAoaXQgPSBtX3N0cmVhbUxhYmVscy5iZWdpbigpOworICAgICAgICAgaXQgIT0g
bV9zdHJlYW1MYWJlbHMuZW5kKCkgJiYgISgqaXQpLmVxdWFscyhsYWJlbCk7CisgICAgICAgICBp
dCsrKTsKKworICAgIHJldHVybiAoaXQgIT0gbV9zdHJlYW1MYWJlbHMuZW5kKCkpID8gdHJ1ZSA6
IGZhbHNlOworfQorCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVk
aWEoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYgc3RyZWFtUmVxdWVzdCwgY29uc3QgV2ViVmVj
dG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgc3RyZWFtU291cmNlVmVjdG9yKQoreworICAgIEFT
U0VSVCghc3RyZWFtUmVxdWVzdC5pc051bGwoKSk7CisKKyAgICBXZWJTdHJpbmcgbGFiZWwoIm1l
ZGlhc3RyZWFtdGVzdCIpOworICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QgcmVxdWVzdCA9IHN0cmVh
bVJlcXVlc3Q7CisgICAgbV9zdHJlYW1MYWJlbHMucHVzaF9iYWNrKGxhYmVsKTsKKyAgICBzaXpl
X3Qgc2l6ZSA9IDE7CisgICAgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiBzb3VyY2VW
ZWN0b3Ioc2l6ZSk7CisgICAgV2ViU3RyaW5nIHRyYWNrTGFiZWxWaWRlbygiVmlkZW9DYXB0dXJl
Iik7CisgICAgc291cmNlVmVjdG9yWzBdLmluaXRpYWxpemUobGFiZWwsIFdlYk1lZGlhU3RyZWFt
U291cmNlOjpUeXBlVmlkZW8sIHRyYWNrTGFiZWxWaWRlbyk7CisgICAgcmVxdWVzdC5yZXF1ZXN0
U3VjY2VlZGVkKHNvdXJjZVZlY3Rvcik7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9j
azo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JikKK3sK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMyNjYpCisrKyBUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxMS0xMi0xOSAgV2Vp
IEppYSAgPHdqaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGltcGxlbWVudCBsYXlvdXQgdGVz
dHMgZm9yIDx2aWRlbz4gd2l0aCBtZWRpYSBzdHJlYW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5n
eXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RNZWRpYVN0cmVhbUNs
aWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdE1lZGlhU3RyZWFtQ2xpZW50OjpUZXN0TWVk
aWFTdHJlYW1DbGllbnQpOgorICAgICAgICAoVGVzdE1lZGlhU3RyZWFtQ2xpZW50OjpHZXRWaWRl
b0RlY29kZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RNZWRpYVN0
cmVhbUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFRlc3RNZWRpYVN0cmVhbUNsaWVudDo6flRl
c3RNZWRpYVN0cmVhbUNsaWVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnVzZXJNZWRpYUNsaWVudCk6
CisgICAgICAgIChXZWJWaWV3SG9zdDo6dXNlck1lZGlhQ2xpZW50TW9jayk6CisgICAgICAgIChX
ZWJWaWV3SG9zdDo6Y3JlYXRlTWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViVmlld0hvc3Q6Om1l
ZGlhU3RyZWFtQ2xpZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJW
aWV3SG9zdC5oOgorCiAyMDExLTEyLTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIHdlYmtpdHB5OiByZW1vdmUgZXhlY3V0aXZlLGZpbGVzeXN0ZW0sdXNl
ciBwYXJhbWV0ZXJzIGZyb20gUG9ydCBjb25zdHJ1Y3RvcgpJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCShyZXZpc2lvbiAxMDMyNjEpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz
MCw4IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGFzay5jcHAnLAogICAgICAgICAgICAgJ2No
cm9taXVtL1Rlc3RFdmVudFByaW50ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdEV2
ZW50UHJpbnRlci5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RNZWRpYVN0cmVhbUNs
aWVudC5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RNZWRpYVN0cmVhbUNsaWVudC5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0TmF2aWdhdGlvbkNvbnRyb2xsZXIuY3BwJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0TmF2aWdhdGlvbkNvbnRyb2xsZXIuaCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsLmNwcCcsCkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0TWVkaWFTdHJlYW1DbGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RNZWRpYVN0cmVhbUNsaWVudC5jcHAJKHJl
dmlzaW9uIDApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0TWVkaWFTdHJl
YW1DbGllbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlRlc3RNZWRpYVN0cmVhbUNsaWVudC5oIgorCisjaW5jbHVkZSAiV2Vi
VXNlck1lZGlhQ2xpZW50TW9jay5oIgorI2luY2x1ZGUgImdvb2dsZXVybC9zcmMvZ3VybC5oIgor
I2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVzc2FnZV9sb29wX2ZhY3RvcnkuaCIKKyNpbmNsdWRlICJt
ZWRpYS9iYXNlL3BpcGVsaW5lLmgiCisjaW5jbHVkZSAibWVkaWEvdmlkZW8vY2FwdHVyZS9mYWtl
X2NhcHR1cmVfdmlkZW9fZGVjb2Rlci5oIgorCituYW1lc3BhY2UgeworCitzdGF0aWMgY29uc3Qg
aW50IGtWaWRlb0NhcHR1cmVXaWR0aCA9IDM1MjsKK3N0YXRpYyBjb25zdCBpbnQga1ZpZGVvQ2Fw
dHVyZUhlaWdodCA9IDI4ODsKK3N0YXRpYyBjb25zdCBpbnQga1ZpZGVvQ2FwdHVyZUZyYW1lUGVy
U2Vjb25kID0gMzA7CisKK30gLy8gbmFtZXNwYWNlCisKK1Rlc3RNZWRpYVN0cmVhbUNsaWVudDo6
VGVzdE1lZGlhU3RyZWFtQ2xpZW50KFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jayogdXNl
ck1lZGlhQ2xpZW50TW9jaykKKyAgICA6IG1fdXNlck1lZGlhQ2xpZW50TW9jayh1c2VyTWVkaWFD
bGllbnRNb2NrKQoreworfQorCitzY29wZWRfcmVmcHRyPG1lZGlhOjpWaWRlb0RlY29kZXI+IFRl
c3RNZWRpYVN0cmVhbUNsaWVudDo6R2V0VmlkZW9EZWNvZGVyKGNvbnN0IEdVUkwmIHVybCwgbWVk
aWE6Ok1lc3NhZ2VMb29wRmFjdG9yeSogbWVzc2FnZUxvb3BGYWN0b3J5KQoreworICAgIGlmICgh
bV91c2VyTWVkaWFDbGllbnRNb2NrKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGJvb2wgcmF3
TWVkaWEgPSBtX3VzZXJNZWRpYUNsaWVudE1vY2stPmlzU3RyZWFtKHVybCk7CisgICAgbWVkaWE6
OlZpZGVvRGVjb2RlciogZGVjb2RlciA9IDA7CisgICAgaWYgKHJhd01lZGlhKSB7CisgICAgICAg
IG1lZGlhOjpWaWRlb0NhcHR1cmU6OlZpZGVvQ2FwdHVyZUNhcGFiaWxpdHkgY2FwYWJpbGl0eTsK
KyAgICAgICAgY2FwYWJpbGl0eS53aWR0aCA9IGtWaWRlb0NhcHR1cmVXaWR0aDsKKyAgICAgICAg
Y2FwYWJpbGl0eS5oZWlnaHQgPSBrVmlkZW9DYXB0dXJlSGVpZ2h0OworICAgICAgICBjYXBhYmls
aXR5Lm1heF9mcHMgPSBrVmlkZW9DYXB0dXJlRnJhbWVQZXJTZWNvbmQ7CisgICAgICAgIGNhcGFi
aWxpdHkuZXhwZWN0ZWRfY2FwdHVyZV9kZWxheSA9IDA7CisgICAgICAgIGNhcGFiaWxpdHkucmF3
X3R5cGUgPSBtZWRpYTo6VmlkZW9GcmFtZTo6STQyMDsKKyAgICAgICAgY2FwYWJpbGl0eS5pbnRl
cmxhY2VkID0gZmFsc2U7CisKKyAgICAgICAgZGVjb2RlciA9IG5ldyBtZWRpYTo6RmFrZUNhcHR1
cmVWaWRlb0RlY29kZXIobWVzc2FnZUxvb3BGYWN0b3J5LT5HZXRNZXNzYWdlTG9vcFByb3h5KCJD
YXB0dXJlVmlkZW9EZWNvZGVyIikuZ2V0KCksIGNhcGFiaWxpdHkpOworICAgIH0KKyAgICByZXR1
cm4gZGVjb2RlcjsKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RNZWRpYVN0cmVhbUNsaWVudC5jcHAKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3Zu
OmVvbC1zdHlsZQogICArIExGCgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdE1lZGlhU3RyZWFtQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdE1lZGlhU3RyZWFtQ2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0TWVkaWFTdHJlYW1DbGllbnQuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRlc3RNZWRpYVN0cmVhbUNsaWVudCBpcyBhbiBpbXBs
ZW1lbnRhdGlvbiBvZiB3ZWJraXRfbWVkaWE6Ok1lZGlhU3RyZWFtQ2xpZW50CisvLyBhbmQgdXNl
ZCB3aXRoIFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jayB0byBwcm92aWRlIGNvcnJlc3Bv
bmRpbmcgdmlkZW8KKy8vIGRlY29kZXIgdG8gbWVkaWEgcGlwZWxpbmUuCisKKyNpZm5kZWYgVGVz
dE1lZGlhU3RyZWFtQ2xpZW50X2gKKyNkZWZpbmUgVGVzdE1lZGlhU3RyZWFtQ2xpZW50X2gKKwor
I2luY2x1ZGUgIndlYmtpdC9tZWRpYS9tZWRpYV9zdHJlYW1fY2xpZW50LmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50TW9jazsKK30KKworY2xhc3MgVGVz
dE1lZGlhU3RyZWFtQ2xpZW50IDogcHVibGljIHdlYmtpdF9tZWRpYTo6TWVkaWFTdHJlYW1DbGll
bnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFRlc3RNZWRpYVN0cmVhbUNsaWVudChXZWJLaXQ6
OldlYlVzZXJNZWRpYUNsaWVudE1vY2sqKTsKKyAgICB2aXJ0dWFsIH5UZXN0TWVkaWFTdHJlYW1D
bGllbnQoKSB7IH0KKworICAgIC8vIEltcGxlbWVudCB3ZWJraXRfbWVkaWE6Ok1lZGlhU3RyZWFt
Q2xpZW50LgorICAgIHZpcnR1YWwgc2NvcGVkX3JlZnB0cjxtZWRpYTo6VmlkZW9EZWNvZGVyPiBH
ZXRWaWRlb0RlY29kZXIoY29uc3QgR1VSTCYsIG1lZGlhOjpNZXNzYWdlTG9vcEZhY3RvcnkqKTsK
KworcHJpdmF0ZToKKyAgICBXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2sqIG1fdXNlck1l
ZGlhQ2xpZW50TW9jazsKK307CisKKyNlbmRpZiAvLyBUZXN0TWVkaWFTdHJlYW1DbGllbnRfaAoK
UHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdE1l
ZGlhU3RyZWFtQ2xpZW50LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExG
CgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cAkocmV2aXNpb24gMTAzMjYxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
V2ViVmlld0hvc3QuaCIKIAogI2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyLmgiCisjaW5j
bHVkZSAiVGVzdE1lZGlhU3RyZWFtQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGVzdE5hdmlnYXRpb25D
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVGVzdFNoZWxsLmgiCiAjaW5jbHVkZSAiVGVzdFdlYlBs
dWdpbi5oIgpAQCAtNTksNiArNjAsNyBAQAogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2Uu
aCIKICNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uLmgiCiAjaW5jbHVkZSAiV2Vi
VGV4dENoZWNraW5nUmVzdWx0LmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50TW9jay5o
IgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRocmVhZC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlVSTFJlcXVlc3QuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxSZXNwb25zZS5oIgpAQCAt
Njk0LDYgKzY5NiwxOCBAQCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogV2ViVmlld0hvc3Q6
CiAgICAgcmV0dXJuIGRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpOwogfQogCitXZWJVc2Vy
TWVkaWFDbGllbnQqIFdlYlZpZXdIb3N0Ojp1c2VyTWVkaWFDbGllbnQoKQoreworICAgIHJldHVy
biB1c2VyTWVkaWFDbGllbnRNb2NrKCk7Cit9CisKK1dlYlVzZXJNZWRpYUNsaWVudE1vY2sqIFdl
YlZpZXdIb3N0Ojp1c2VyTWVkaWFDbGllbnRNb2NrKCkKK3sKKyAgICBpZiAoIW1fdXNlck1lZGlh
Q2xpZW50TW9jay5nZXQoKSkKKyAgICAgICAgbV91c2VyTWVkaWFDbGllbnRNb2NrID0gYWRvcHRQ
dHIoV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKCkpOworICAgIHJldHVybiBtX3VzZXJN
ZWRpYUNsaWVudE1vY2suZ2V0KCk7Cit9CisKIC8vIFdlYldpZGdldENsaWVudCAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lk
IFdlYlZpZXdIb3N0OjpkaWRJbnZhbGlkYXRlUmVjdChjb25zdCBXZWJSZWN0JiByZWN0KQpAQCAt
ODQzLDcgKzg1Nyw3IEBAIFdlYldvcmtlciogV2ViVmlld0hvc3Q6OmNyZWF0ZVdvcmtlcihXZWIK
IAogV2ViTWVkaWFQbGF5ZXIqIFdlYlZpZXdIb3N0OjpjcmVhdGVNZWRpYVBsYXllcihXZWJGcmFt
ZSogZnJhbWUsIFdlYk1lZGlhUGxheWVyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHdl
YmtpdF9zdXBwb3J0OjpDcmVhdGVNZWRpYVBsYXllcihmcmFtZSwgY2xpZW50KTsKKyAgICByZXR1
cm4gd2Via2l0X3N1cHBvcnQ6OkNyZWF0ZU1lZGlhUGxheWVyKGZyYW1lLCBjbGllbnQsIG1lZGlh
U3RyZWFtQ2xpZW50KCkpOwogfQogCiBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdCogV2ViVmlld0hv
c3Q6OmNyZWF0ZUFwcGxpY2F0aW9uQ2FjaGVIb3N0KFdlYkZyYW1lKiBmcmFtZSwgV2ViQXBwbGlj
YXRpb25DYWNoZUhvc3RDbGllbnQqIGNsaWVudCkKQEAgLTE1NDIsNiArMTU1NiwxMyBAQCB2b2lk
IFdlYlZpZXdIb3N0OjpleGl0RnVsbFNjcmVlbk5vdygpCiAgICAgd2ViVmlldygpLT5kaWRFeGl0
RnVsbFNjcmVlbigpOwogfQogCit3ZWJraXRfbWVkaWE6Ok1lZGlhU3RyZWFtQ2xpZW50KiBXZWJW
aWV3SG9zdDo6bWVkaWFTdHJlYW1DbGllbnQoKQoreworICAgIGlmICghbV90ZXN0TWVkaWFTdHJl
YW1DbGllbnQuZ2V0KCkpCisgICAgICAgIG1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50ID0gYWRvcHRQ
dHIobmV3IFRlc3RNZWRpYVN0cmVhbUNsaWVudCh1c2VyTWVkaWFDbGllbnRNb2NrKCkpKTsKKyAg
ICByZXR1cm4gbV90ZXN0TWVkaWFTdHJlYW1DbGllbnQuZ2V0KCk7Cit9CisKIC8vIFBhaW50aW5n
IGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogdm9pZCBXZWJWaWV3SG9zdDo6dXBkYXRlUGFpbnRSZWN0KGNvbnN0IFdl
YlJlY3QmIHJlY3QpCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmgJKHJldmlzaW9uIDEwMzI2MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKIAogY2xh
c3MgTGF5b3V0VGVzdENvbnRyb2xsZXI7CiBjbGFzcyBTa0NhbnZhczsKK2NsYXNzIFRlc3RNZWRp
YVN0cmVhbUNsaWVudDsKIGNsYXNzIFRlc3RTaGVsbDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC01OSw2ICs2MCw3IEBAIGNsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlcjsKIGNsYXNzIFdl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dExpc3RlbmVy
OwogY2xhc3MgV2ViVVJMOworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50TW9jazsKIHN0cnVjdCBX
ZWJSZWN0Owogc3RydWN0IFdlYlVSTEVycm9yOwogc3RydWN0IFdlYldpbmRvd0ZlYXR1cmVzOwpA
QCAtMTQ5LDYgKzE1MSw3IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2Vi
U3AKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQqIGdlb2xvY2F0aW9u
Q2xpZW50KCk7CiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlciog
c3BlZWNoSW5wdXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciopOwog
ICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogZGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQoKTsKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50
KiB1c2VyTWVkaWFDbGllbnQoKTsKIAogICAgIC8vIFdlYktpdDo6V2ViV2lkZ2V0Q2xpZW50CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEludmFsaWRhdGVSZWN0KGNvbnN0IFdlYktpdDo6V2ViUmVjdCYp
OwpAQCAtMjc4LDYgKzI4MSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNldFNjcm9sbFJlY3Qo
KTsKICAgICB2b2lkIGRpc2NhcmRCYWNraW5nU3RvcmUoKTsKIAorICAgIFdlYktpdDo6V2ViVXNl
ck1lZGlhQ2xpZW50TW9jayogdXNlck1lZGlhQ2xpZW50TW9jaygpOworICAgIHdlYmtpdF9tZWRp
YTo6TWVkaWFTdHJlYW1DbGllbnQqIG1lZGlhU3RyZWFtQ2xpZW50KCk7CisKICAgICAvLyBDYXVz
ZXMgbmF2aWdhdGlvbiBhY3Rpb25zIGp1c3QgcHJpbnRvdXQgdGhlIGludGVuZGVkIG5hdmlnYXRp
b24gaW5zdGVhZAogICAgIC8vIG9mIHRha2luZyB5b3UgdG8gdGhlIHBhZ2UuIFRoaXMgaXMgdXNl
ZCBmb3IgY2FzZXMgbGlrZSBtYWlsdG8sIHdoZXJlIHlvdQogICAgIC8vIGRvbid0IGFjdHVhbGx5
IHdhbnQgdG8gb3BlbiB0aGUgbWFpbCBwcm9ncmFtLgpAQCAtMzU0LDYgKzM2MCw5IEBAIHByaXZh
dGU6CiAgICAgT3duUHRyPFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPiBt
X2RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazsKICAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrPiBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CiAKKyAg
ICBPd25QdHI8V2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiBtX3VzZXJNZWRpYUNsaWVu
dE1vY2s7CisgICAgT3duUHRyPFRlc3RNZWRpYVN0cmVhbUNsaWVudD4gbV90ZXN0TWVkaWFTdHJl
YW1DbGllbnQ7CisKICAgICBPd25QdHI8VGVzdE5hdmlnYXRpb25Db250cm9sbGVyPiBtX25hdmln
YXRpb25Db250cm9sbGVyOwogCiAgICAgV2ViS2l0OjpXZWJTdHJpbmcgbV9sYXN0UmVxdWVzdGVk
VGV4dENoZWNrU3RyaW5nOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMjY2KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMTkg
IFdlaSBKaWEgIDx3amlhQGNocm9taXVtLm9yZz4KKworICAgICAgICBpbXBsZW1lbnQgbGF5b3V0
IHRlc3RzIGZvciA8dmlkZW8+IHdpdGggbWVkaWEgc3RyZWFtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDg4MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vbWVkaWEvdmlk
ZW8tY2FwdHVyZS1wcmV2aWV3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vbWVkaWEvdmlkZW8tY2FwdHVyZS1wcmV2aWV3Lmh0bWw6IEFkZGVkLgorCiAy
MDExLTEyLTE5ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZy4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL21lZGlhL3ZpZGVvLWNhcHR1cmUtcHJldmlldy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vbWVkaWEvdmlkZW8tY2FwdHVy
ZS1wcmV2aWV3LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL21lZGlhL3ZpZGVvLWNhcHR1cmUtcHJldmlldy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKK3JlcXVlc3QgYWNjZXNzIHRvIGxvY2FsIG1lZGlh
Citnb3QgYSBzdHJlYW0KK3N0YXJ0IHByZXZpZXcKK0VWRU5UKGxvYWRzdGFydCkKK0VWRU5UKGxv
YWRlZGRhdGEpCitFVkVOVChjYW5wbGF5KQorRVZFTlQoY2FucGxheXRocm91Z2gpCitFVkVOVChw
bGF5KQorcmVzdGFydCBwcmV2aWV3CitFVkVOVChsb2Fkc3RhcnQpCitFVkVOVChsb2FkZWRkYXRh
KQorRVZFTlQoY2FucGxheSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorRVZFTlQocGxheSkKK0VO
RCBPRiBURVNUCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL21lZGlhL3ZpZGVvLWNhcHR1cmUtcHJldmlldy1leHBlY3RlZC50eHQKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vbWVkaWEvdmlkZW8tY2FwdHVyZS1wcmV2aWV3Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vbWVkaWEvdmlkZW8tY2FwdHVyZS1wcmV2
aWV3Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9t
ZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
NiBAQAorPCFET0NUWVBFIEhUTUwiPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPW1lZGlh
LWZpbGUuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz12aWRlby10ZXN0LmpzPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9dmlkZW8tcGxheWVkLmpzPjwvc2NyaXB0PgorCis8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+CisKK3ZhciBwcmV2aWV3X3VybCA9ICIiOwordmFyIGxvY2FsU3RyZWFt
ID0gbnVsbDsKKworZnVuY3Rpb24gc3RhcnRQcmV2aWV3KCkKK3sKKyAgICB2aWRlby5zcmMgPSBw
cmV2aWV3X3VybDsKK30KKworZnVuY3Rpb24gZ290U3RyZWFtKHMpCit7CisgICAgY29uc29sZVdy
aXRlKCJnb3QgYSBzdHJlYW0iKTsKKyAgICBwcmV2aWV3X3VybCA9IHdlYmtpdFVSTC5jcmVhdGVP
YmplY3RVUkwocyk7CisgICAgc3RhcnRQcmV2aWV3KCk7CisgICAgY29uc29sZVdyaXRlKCJzdGFy
dCBwcmV2aWV3Iik7CisgICAgbG9jYWxTdHJlYW0gPSBzOworICAgIHZhciBtaWxsaXNlY29uZHMg
PSAyMDAwOworICAgIHZhciByZXBsYXlJZlRpbWVJc1JlYWNoZWQgPSBmdW5jdGlvbiAoKQorICAg
IHsKKyAgICAgICAgc3RhcnRQcmV2aWV3KCk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgicmVzdGFy
dCBwcmV2aWV3Iik7CisgICAgICAgIHNldFRpbWVvdXQoZW5kVGVzdCwgMjUwMCk7CisgICAgfQor
CisgICAgc2V0VGltZW91dChyZXBsYXlJZlRpbWVJc1JlYWNoZWQsIG1pbGxpc2Vjb25kcyArIDEw
MCk7Cit9CisKK2Z1bmN0aW9uIGdvdFN0cmVhbUZhaWxlZChlcnJvcikKK3sKKyAgICBjb25zb2xl
V3JpdGUoIkZhaWxlZCB0byBnZXQgYWNjZXNzIHRvIGxvY2FsIG1lZGlhLiBFcnJvciBjb2RlIHdh
cyAiICsgZXJyb3IuY29kZSk7Cit9CisKK2Z1bmN0aW9uIHBsYXlQcmV2aWV3KCkKK3sKKyAgICBm
aW5kTWVkaWFFbGVtZW50KCk7CisgICAgdHJ5IHsKKyAgICAgICAgY29uc29sZVdyaXRlKCJyZXF1
ZXN0IGFjY2VzcyB0byBsb2NhbCBtZWRpYSIpOworICAgICAgICBuYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKCJ2aWRlbyIsIGdvdFN0cmVhbSwgZ290U3RyZWFtRmFpbGVkKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIGNvbnNvbGVXcml0ZSgiZ2V0VXNlck1lZGlhIGVycm9yICIgKyAi
KCIgKyBlLm5hbWUgKyAiIC8gIiArIGUubWVzc2FnZSArICIpIik7CisgICAgfQorCisgICAgd2Fp
dEZvckV2ZW50KCJlcnJvciIpOworICAgIHdhaXRGb3JFdmVudCgibG9hZHN0YXJ0Iik7CisgICAg
d2FpdEZvckV2ZW50KCJsb2FkZWRkYXRhIik7CisgICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5Iik7
CisgICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5dGhyb3VnaCIpOworICAgIHdhaXRGb3JFdmVudCgi
cGxheSIpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJwbGF5UHJl
dmlldygpIj4KKzx2aWRlbyB3aWR0aD0iMzIwIiBoZWlnaHQ9IjI0MCIgYXV0b3BsYXk9ImF1dG9w
bGF5Ij48L3ZpZGVvPgorPC9ib2R5PiAKKzwvaHRtbD4gCisKClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL21lZGlhL3ZpZGVvLWNhcHR1cmUtcHJldmll
dy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119969</attachid>
            <date>2011-12-19 18:45:14 -0800</date>
            <delta_ts>2011-12-21 02:31:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74882-20111219184513.patch</filename>
            <type>text/plain</type>
            <size>17293</size>
            <attacher>wjia</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMyNjYpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5
IEBACisyMDExLTEyLTE5ICBXZWkgSmlhICA8d2ppYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
aW1wbGVtZW50IGxheW91dCB0ZXN0cyBmb3IgPHZpZGVvPiB3aXRoIG1lZGlhIHN0cmVhbQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ4ODIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6
CisgICAgICAgICogcHVibGljL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6On5XZWJVc2VyTWVkaWFDbGllbnRN
b2NrKToKKyAgICAgICAgKiBzcmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjppc1N0cmVhbSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0
KToKKwogMjAxMS0xMi0xOSAgSWFpbiBNZXJyaWNrICA8aHVza3lAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBbY2hyb21pdW1dIEFjY2VsZXJhdGVkIGNhbnZhcyBicm9rZW4gaW4gdGhyZWFkZWQgY29t
cG9zaXRpbmcgbW9kZQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24g
MTAzMjYxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTksNiArMjU5LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRS
dW4uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJVUkxMb2FkZXJPcHRpb25zLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50LmgnLAorICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlVzZXJNZWRpYVJlcXVlc3QuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJWaWV3LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVmlld0NsaWVudC5oJywK
QEAgLTY1OSw2ICs2NjAsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMUmVzcG9uc2Uu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVSTFJlc3BvbnNlUHJpdmF0ZS5oJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYlVSTEVycm9yLmNwcCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJV
c2VyTWVkaWFSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWV3SW1wbC5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwuaCcsCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNlck1lZGlhQ2xpZW50TW9j
ay5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVXNl
ck1lZGlhQ2xpZW50TW9jay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKKyNkZWZpbmUgV2ViVXNlck1lZGlhQ2xpZW50TW9ja19o
CisKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJDb21tb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJVUkwuaCIKKworI2luY2x1ZGUgPGxpc3Q+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrIDogcHVibGljIFdlYlVzZXJNZWRpYUNs
aWVudCB7CitwdWJsaWM6CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViVXNlck1lZGlhQ2xp
ZW50TW9jayogY3JlYXRlKCk7CisgICAgfldlYlVzZXJNZWRpYUNsaWVudE1vY2soKSB7IH0KKwor
ICAgIFdFQktJVF9FWFBPUlQgYm9vbCBpc1N0cmVhbShjb25zdCBXZWJVUkwmKTsKKworICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhKGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmLCBj
b25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+Jik7CisgICAgdmlydHVhbCB2b2lk
IGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpOworCitw
cml2YXRlOgorICAgIHN0ZDo6bGlzdDxXZWJTdHJpbmc+IG1fc3RyZWFtTGFiZWxzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
X2gKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUK
ICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlVzZXJNZWRpYUNs
aWVudE1vY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlVzZXJNZWRpYUNsaWVudE1vY2suY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xp
ZW50TW9jay5oIgorCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgorI2luY2x1
ZGUgIldlYlVzZXJNZWRpYVJlcXVlc3QuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0
cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJj
ZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworV2ViVXNlck1lZGlhQ2xpZW50TW9jayogV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y3Jl
YXRlKCkKK3sKKyAgICByZXR1cm4gbmV3IFdlYlVzZXJNZWRpYUNsaWVudE1vY2soKTsKK30KKwor
Ym9vbCBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjppc1N0cmVhbShjb25zdCBXZWJVUkwmIHVybCkK
K3sKKyAgICBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IgZGVzY3JpcHRvcihXZWJNZWRpYVN0cmVh
bVJlZ2lzdHJ5Ojpsb29rdXBNZWRpYVN0cmVhbURlc2NyaXB0b3IodXJsKSk7CisgICAgaWYgKGRl
c2NyaXB0b3IuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYlZlY3Rv
cjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4gc291cmNlVmVjdG9yOworICAgIGRlc2NyaXB0b3Iuc291
cmNlcyhzb3VyY2VWZWN0b3IpOworICAgIFdlYlN0cmluZyBsYWJlbDsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNvdXJjZVZlY3Rvci5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoc291
cmNlVmVjdG9yW2ldLnR5cGUoKSA9PSBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvKSB7
CisgICAgICAgICAgICBsYWJlbCA9IHNvdXJjZVZlY3RvcltpXS5pZCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGxhYmVsLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgc3RkOjpsaXN0PFdlYlN0cmluZz46Oml0ZXJhdG9yIGl0
OworICAgIGZvciAoaXQgPSBtX3N0cmVhbUxhYmVscy5iZWdpbigpOworICAgICAgICAgaXQgIT0g
bV9zdHJlYW1MYWJlbHMuZW5kKCkgJiYgISgqaXQpLmVxdWFscyhsYWJlbCk7CisgICAgICAgICBp
dCsrKTsKKworICAgIHJldHVybiAoaXQgIT0gbV9zdHJlYW1MYWJlbHMuZW5kKCkpID8gdHJ1ZSA6
IGZhbHNlOworfQorCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVk
aWEoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYgc3RyZWFtUmVxdWVzdCwgY29uc3QgV2ViVmVj
dG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgc3RyZWFtU291cmNlVmVjdG9yKQoreworICAgIEFT
U0VSVCghc3RyZWFtUmVxdWVzdC5pc051bGwoKSk7CisKKyAgICBXZWJTdHJpbmcgbGFiZWwoIm1l
ZGlhc3RyZWFtdGVzdCIpOworICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QgcmVxdWVzdCA9IHN0cmVh
bVJlcXVlc3Q7CisgICAgbV9zdHJlYW1MYWJlbHMucHVzaF9iYWNrKGxhYmVsKTsKKyAgICBzaXpl
X3Qgc2l6ZSA9IDE7CisgICAgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiBzb3VyY2VW
ZWN0b3Ioc2l6ZSk7CisgICAgV2ViU3RyaW5nIHRyYWNrTGFiZWxWaWRlbygiVmlkZW9DYXB0dXJl
Iik7CisgICAgc291cmNlVmVjdG9yWzBdLmluaXRpYWxpemUobGFiZWwsIFdlYk1lZGlhU3RyZWFt
U291cmNlOjpUeXBlVmlkZW8sIHRyYWNrTGFiZWxWaWRlbyk7CisgICAgcmVxdWVzdC5yZXF1ZXN0
U3VjY2VlZGVkKHNvdXJjZVZlY3Rvcik7Cit9CisKK3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9j
azo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdChjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0JikKK3sK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMyNjYpCisrKyBUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMi0xOSAgV2Vp
IEppYSAgPHdqaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGltcGxlbWVudCBsYXlvdXQgdGVz
dHMgZm9yIDx2aWRlbz4gd2l0aCBtZWRpYSBzdHJlYW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6dXNlck1lZGlhQ2xpZW50KToKKyAgICAg
ICAgKFdlYlZpZXdIb3N0Ojp1c2VyTWVkaWFDbGllbnRNb2NrKToKKyAgICAgICAgKFdlYlZpZXdI
b3N0OjpjcmVhdGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJWaWV3SG9zdDo6bWVkaWFTdHJl
YW1DbGllbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
Lmg6CisKIDIwMTEtMTItMTkgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgd2Via2l0cHk6IHJlbW92ZSBleGVjdXRpdmUsZmlsZXN5c3RlbSx1c2VyIHBhcmFt
ZXRlcnMgZnJvbSBQb3J0IGNvbnN0cnVjdG9yCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCShyZXZpc2lvbiAxMDMyNjEpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU5LDEyICs1OSwxNCBAQAogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2UuaCIKICNpbmNs
dWRlICJXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uLmgiCiAjaW5jbHVkZSAiV2ViVGV4dENoZWNr
aW5nUmVzdWx0LmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIgogI2luY2x1
ZGUgInBsYXRmb3JtL1dlYlRocmVhZC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTFJlcXVl
c3QuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldl
YlZpZXcuaCIKICNpbmNsdWRlICJXZWJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgInNraWEv
ZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgorI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3Rlc3RfbWVk
aWFfc3RyZWFtX2NsaWVudC5oIgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBw
b3J0LmgiCiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtNjk0LDYgKzY5NiwxOCBA
QCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogV2ViVmlld0hvc3Q6CiAgICAgcmV0dXJuIGRl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpOwogfQogCitXZWJVc2VyTWVkaWFDbGllbnQqIFdl
YlZpZXdIb3N0Ojp1c2VyTWVkaWFDbGllbnQoKQoreworICAgIHJldHVybiB1c2VyTWVkaWFDbGll
bnRNb2NrKCk7Cit9CisKK1dlYlVzZXJNZWRpYUNsaWVudE1vY2sqIFdlYlZpZXdIb3N0Ojp1c2Vy
TWVkaWFDbGllbnRNb2NrKCkKK3sKKyAgICBpZiAoIW1fdXNlck1lZGlhQ2xpZW50TW9jay5nZXQo
KSkKKyAgICAgICAgbV91c2VyTWVkaWFDbGllbnRNb2NrID0gYWRvcHRQdHIoV2ViVXNlck1lZGlh
Q2xpZW50TW9jazo6Y3JlYXRlKCkpOworICAgIHJldHVybiBtX3VzZXJNZWRpYUNsaWVudE1vY2su
Z2V0KCk7Cit9CisKIC8vIFdlYldpZGdldENsaWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIFdlYlZpZXdIb3N0Ojpk
aWRJbnZhbGlkYXRlUmVjdChjb25zdCBXZWJSZWN0JiByZWN0KQpAQCAtODQzLDcgKzg1Nyw3IEBA
IFdlYldvcmtlciogV2ViVmlld0hvc3Q6OmNyZWF0ZVdvcmtlcihXZWIKIAogV2ViTWVkaWFQbGF5
ZXIqIFdlYlZpZXdIb3N0OjpjcmVhdGVNZWRpYVBsYXllcihXZWJGcmFtZSogZnJhbWUsIFdlYk1l
ZGlhUGxheWVyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHdlYmtpdF9zdXBwb3J0OjpD
cmVhdGVNZWRpYVBsYXllcihmcmFtZSwgY2xpZW50KTsKKyAgICByZXR1cm4gd2Via2l0X3N1cHBv
cnQ6OkNyZWF0ZU1lZGlhUGxheWVyKGZyYW1lLCBjbGllbnQsIHRlc3RNZWRpYVN0cmVhbUNsaWVu
dCgpKTsKIH0KIAogV2ViQXBwbGljYXRpb25DYWNoZUhvc3QqIFdlYlZpZXdIb3N0OjpjcmVhdGVB
cHBsaWNhdGlvbkNhY2hlSG9zdChXZWJGcmFtZSogZnJhbWUsIFdlYkFwcGxpY2F0aW9uQ2FjaGVI
b3N0Q2xpZW50KiBjbGllbnQpCkBAIC0xNTQyLDYgKzE1NTYsMTMgQEAgdm9pZCBXZWJWaWV3SG9z
dDo6ZXhpdEZ1bGxTY3JlZW5Ob3coKQogICAgIHdlYlZpZXcoKS0+ZGlkRXhpdEZ1bGxTY3JlZW4o
KTsKIH0KIAord2Via2l0X3N1cHBvcnQ6OlRlc3RNZWRpYVN0cmVhbUNsaWVudCogV2ViVmlld0hv
c3Q6OnRlc3RNZWRpYVN0cmVhbUNsaWVudCgpCit7CisgICAgaWYgKCFtX3Rlc3RNZWRpYVN0cmVh
bUNsaWVudC5nZXQoKSkKKyAgICAgICAgbV90ZXN0TWVkaWFTdHJlYW1DbGllbnQgPSBhZG9wdFB0
cihuZXcgd2Via2l0X3N1cHBvcnQ6OlRlc3RNZWRpYVN0cmVhbUNsaWVudCh1c2VyTWVkaWFDbGll
bnRNb2NrKCkpKTsKKyAgICByZXR1cm4gbV90ZXN0TWVkaWFTdHJlYW1DbGllbnQuZ2V0KCk7Cit9
CisKIC8vIFBhaW50aW5nIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBXZWJWaWV3SG9zdDo6dXBkYXRlUGFp
bnRSZWN0KGNvbnN0IFdlYlJlY3QmIHJlY3QpCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmgJKHJldmlzaW9uIDEwMzI2MSkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDEx
ICs1OSwxNiBAQCBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI7CiBjbGFzcyBXZWJTcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lcjsKIGNs
YXNzIFdlYlVSTDsKK2NsYXNzIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s7CiBzdHJ1Y3QgV2ViUmVj
dDsKIHN0cnVjdCBXZWJVUkxFcnJvcjsKIHN0cnVjdCBXZWJXaW5kb3dGZWF0dXJlczsKIH0KIAor
bmFtZXNwYWNlIHdlYmtpdF9zdXBwb3J0IHsKK2NsYXNzIFRlc3RNZWRpYVN0cmVhbUNsaWVudDsK
K30KKwogY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJTcGVsbENoZWNrQ2xp
ZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFt
ZUNsaWVudCwgcHVibGljIE5hdmlnYXRpb25Ib3N0IHsKICBwdWJsaWM6CiAgICAgV2ViVmlld0hv
c3QoVGVzdFNoZWxsKik7CkBAIC0xNDksNiArMTU0LDcgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBw
dWJsaWMgV2ViS2l0OjpXZWJTcAogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNs
aWVudCogZ2VvbG9jYXRpb25DbGllbnQoKTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyKiBzcGVlY2hJbnB1dENvbnRyb2xsZXIoV2ViS2l0OjpXZWJTcGVlY2hJ
bnB1dExpc3RlbmVyKik7CiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9u
Q2xpZW50KiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpOworICAgIHZpcnR1YWwgV2ViS2l0OjpX
ZWJVc2VyTWVkaWFDbGllbnQqIHVzZXJNZWRpYUNsaWVudCgpOwogCiAgICAgLy8gV2ViS2l0OjpX
ZWJXaWRnZXRDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkSW52YWxpZGF0ZVJlY3QoY29uc3Qg
V2ViS2l0OjpXZWJSZWN0Jik7CkBAIC0yNzgsNiArMjg0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlc2V0U2Nyb2xsUmVjdCgpOwogICAgIHZvaWQgZGlzY2FyZEJhY2tpbmdTdG9yZSgpOwogCisg
ICAgV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrKiB1c2VyTWVkaWFDbGllbnRNb2NrKCk7
CisgICAgd2Via2l0X3N1cHBvcnQ6OlRlc3RNZWRpYVN0cmVhbUNsaWVudCogdGVzdE1lZGlhU3Ry
ZWFtQ2xpZW50KCk7CisKICAgICAvLyBDYXVzZXMgbmF2aWdhdGlvbiBhY3Rpb25zIGp1c3QgcHJp
bnRvdXQgdGhlIGludGVuZGVkIG5hdmlnYXRpb24gaW5zdGVhZAogICAgIC8vIG9mIHRha2luZyB5
b3UgdG8gdGhlIHBhZ2UuIFRoaXMgaXMgdXNlZCBmb3IgY2FzZXMgbGlrZSBtYWlsdG8sIHdoZXJl
IHlvdQogICAgIC8vIGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gb3BlbiB0aGUgbWFpbCBwcm9ncmFt
LgpAQCAtMzU0LDYgKzM2Myw5IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYktpdDo6V2ViRGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPiBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazsK
ICAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrPiBtX3NwZWVj
aElucHV0Q29udHJvbGxlck1vY2s7CiAKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJVc2VyTWVkaWFD
bGllbnRNb2NrPiBtX3VzZXJNZWRpYUNsaWVudE1vY2s7CisgICAgT3duUHRyPHdlYmtpdF9zdXBw
b3J0OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQ+IG1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50OworCiAg
ICAgT3duUHRyPFRlc3ROYXZpZ2F0aW9uQ29udHJvbGxlcj4gbV9uYXZpZ2F0aW9uQ29udHJvbGxl
cjsKIAogICAgIFdlYktpdDo6V2ViU3RyaW5nIG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmlu
ZzsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzI2NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTEyLTE5ICBXZWkgSmlhICA8d2pp
YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgaW1wbGVtZW50IGxheW91dCB0ZXN0cyBmb3IgPHZp
ZGVvPiB3aXRoIG1lZGlhIHN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzQ4ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL21lZGlhL3ZpZGVvLWNhcHR1cmUtcHJl
dmlldy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL21l
ZGlhL3ZpZGVvLWNhcHR1cmUtcHJldmlldy5odG1sOiBBZGRlZC4KKwogMjAxMS0xMi0xOSAgQ3Nh
YmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZp
ZXdlZCBnYXJkZW5pbmcuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9tZWRp
YS92aWRlby1jYXB0dXJlLXByZXZpZXctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL21lZGlhL3ZpZGVvLWNhcHR1cmUtcHJldmlldy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9t
ZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE2IEBACityZXF1ZXN0IGFjY2VzcyB0byBsb2NhbCBtZWRpYQorZ290IGEgc3RyZWFt
CitzdGFydCBwcmV2aWV3CitFVkVOVChsb2Fkc3RhcnQpCitFVkVOVChsb2FkZWRkYXRhKQorRVZF
TlQoY2FucGxheSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorRVZFTlQocGxheSkKK3Jlc3RhcnQg
cHJldmlldworRVZFTlQobG9hZHN0YXJ0KQorRVZFTlQobG9hZGVkZGF0YSkKK0VWRU5UKGNhbnBs
YXkpCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK0VWRU5UKHBsYXkpCitFTkQgT0YgVEVTVAorCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9tZWRpYS92
aWRlby1jYXB0dXJlLXByZXZpZXctZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpl
b2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL21l
ZGlhL3ZpZGVvLWNhcHR1cmUtcHJldmlldy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL21lZGlhL3ZpZGVvLWNhcHR1cmUtcHJldmlldy5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vbWVkaWEvdmlkZW8tY2Fw
dHVyZS1wcmV2aWV3Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQ
RSBIVE1MIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0uLi8uLi8uLi9tZWRpYS9tZWRp
YS1maWxlLmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Li4vLi4vLi4vbWVkaWEvdmlkZW8tdGVz
dC5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS4uLy4uLy4uL21lZGlhL3ZpZGVvLXBsYXllZC5q
cz48L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCit2YXIgcHJl
dmlld191cmwgPSAiIjsKK3ZhciBsb2NhbFN0cmVhbSA9IG51bGw7CisKK2Z1bmN0aW9uIHN0YXJ0
UHJldmlldygpCit7CisgICAgdmlkZW8uc3JjID0gcHJldmlld191cmw7Cit9CisKK2Z1bmN0aW9u
IGdvdFN0cmVhbShzKQoreworICAgIGNvbnNvbGVXcml0ZSgiZ290IGEgc3RyZWFtIik7CisgICAg
cHJldmlld191cmwgPSB3ZWJraXRVUkwuY3JlYXRlT2JqZWN0VVJMKHMpOworICAgIHN0YXJ0UHJl
dmlldygpOworICAgIGNvbnNvbGVXcml0ZSgic3RhcnQgcHJldmlldyIpOworICAgIGxvY2FsU3Ry
ZWFtID0gczsKKyAgICB2YXIgbWlsbGlzZWNvbmRzID0gMjAwMDsKKyAgICB2YXIgcmVwbGF5SWZU
aW1lSXNSZWFjaGVkID0gZnVuY3Rpb24gKCkKKyAgICB7CisgICAgICAgIHN0YXJ0UHJldmlldygp
OworICAgICAgICBjb25zb2xlV3JpdGUoInJlc3RhcnQgcHJldmlldyIpOworICAgICAgICBzZXRU
aW1lb3V0KGVuZFRlc3QsIDI1MDApOworICAgIH0KKworICAgIHNldFRpbWVvdXQocmVwbGF5SWZU
aW1lSXNSZWFjaGVkLCBtaWxsaXNlY29uZHMgKyAxMDApOworfQorCitmdW5jdGlvbiBnb3RTdHJl
YW1GYWlsZWQoZXJyb3IpCit7CisgICAgY29uc29sZVdyaXRlKCJGYWlsZWQgdG8gZ2V0IGFjY2Vz
cyB0byBsb2NhbCBtZWRpYS4gRXJyb3IgY29kZSB3YXMgIiArIGVycm9yLmNvZGUpOworfQorCitm
dW5jdGlvbiBwbGF5UHJldmlldygpCit7CisgICAgZmluZE1lZGlhRWxlbWVudCgpOworICAgIHRy
eSB7CisgICAgICAgIGNvbnNvbGVXcml0ZSgicmVxdWVzdCBhY2Nlc3MgdG8gbG9jYWwgbWVkaWEi
KTsKKyAgICAgICAgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBnb3RTdHJl
YW0sIGdvdFN0cmVhbUZhaWxlZCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBjb25zb2xl
V3JpdGUoImdldFVzZXJNZWRpYSBlcnJvciAiICsgIigiICsgZS5uYW1lICsgIiAvICIgKyBlLm1l
c3NhZ2UgKyAiKSIpOworICAgIH0KKworICAgIHdhaXRGb3JFdmVudCgiZXJyb3IiKTsKKyAgICB3
YWl0Rm9yRXZlbnQoImxvYWRzdGFydCIpOworICAgIHdhaXRGb3JFdmVudCgibG9hZGVkZGF0YSIp
OworICAgIHdhaXRGb3JFdmVudCgiY2FucGxheSIpOworICAgIHdhaXRGb3JFdmVudCgiY2FucGxh
eXRocm91Z2giKTsKKyAgICB3YWl0Rm9yRXZlbnQoInBsYXkiKTsKK30KKworPC9zY3JpcHQ+Cis8
L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icGxheVByZXZpZXcoKSI+Cis8dmlkZW8gd2lkdGg9IjMy
MCIgaGVpZ2h0PSIyNDAiIGF1dG9wbGF5PSJhdXRvcGxheSI+PC92aWRlbz4KKzwvYm9keT4gCis8
L2h0bWw+IAorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcuaHRtbApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120163</attachid>
            <date>2011-12-21 02:31:33 -0800</date>
            <delta_ts>2012-01-05 15:40:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74882-20111221113132.patch</filename>
            <type>text/plain</type>
            <size>8675</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNDAwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDNmNTY0NTIxMWZmNzA4NmEyOGFjYjc1NjMzZDk3OTRk
ZGI2MTA0ZS4uMTVhMzQ2ZjcxMDgyNjQ5YjVkMzE1OWI2MTlmMThiNWFhMGYzN2IyZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDExLTEyLTE5ICBXZWkgSmlhICA8d2ppYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
aW1wbGVtZW50IGxheW91dCB0ZXN0cyBmb3IgPHZpZGVvPiB3aXRoIG1lZGlhIHN0cmVhbQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ4ODIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojp1c2Vy
TWVkaWFDbGllbnQpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnVzZXJNZWRpYUNsaWVudE1vY2sp
OgorICAgICAgICAoV2ViVmlld0hvc3Q6OmNyZWF0ZU1lZGlhUGxheWVyKToKKyAgICAgICAgKFdl
YlZpZXdIb3N0OjptZWRpYVN0cmVhbUNsaWVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKwogMjAxMS0xMi0yMSAgS2VudGFybyBIYXJhICA8aGFy
YWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW4gcHJlcGFyZS1DaGFuZ2VMb2csIHJlcGxh
Y2UgY29uc3RhbnQgZ2xvYmFsIHZhcmlhYmxlcyB3aXRoICJ1c2UgY29uc3RhbnQiCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggZmZlM2IxNjQ2
ZjFjNDA3ZWNmZTMwZDYyMDcyODZkYTQyMGM5ZGI0Mi4uN2UzZTc4ZDVhZDBkMmJjN2JiODg4Zjk2
NDM3MGE2YzcxMDFmMWE5NSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmNwcApAQCAtNTksMTIgKzU5LDE0IEBACiAjaW5jbHVkZSAiV2ViU3RvcmFnZU5h
bWVzcGFjZS5oIgogI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ0NvbXBsZXRpb24uaCIKICNpbmNs
dWRlICJXZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCIKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGll
bnRNb2NrLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVGhyZWFkLmgiCiAjaW5jbHVkZSAicGxh
dGZvcm0vV2ViVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTFJlc3BvbnNl
LmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgIldlYldpbmRvd0ZlYXR1cmVzLmgi
CiAjaW5jbHVkZSAic2tpYS9leHQvcGxhdGZvcm1fY2FudmFzLmgiCisjaW5jbHVkZSAid2Via2l0
L3N1cHBvcnQvdGVzdF9tZWRpYV9zdHJlYW1fY2xpZW50LmgiCiAjaW5jbHVkZSAid2Via2l0L3N1
cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBA
IC02OTQsNiArNjk2LDE4IEBAIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBXZWJWaWV3SG9z
dDo6ZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKQogICAgIHJldHVybiBkZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2soKTsKIH0KIAorV2ViVXNlck1lZGlhQ2xpZW50KiBXZWJWaWV3SG9zdDo6dXNl
ck1lZGlhQ2xpZW50KCkKK3sKKyAgICByZXR1cm4gdXNlck1lZGlhQ2xpZW50TW9jaygpOworfQor
CitXZWJVc2VyTWVkaWFDbGllbnRNb2NrKiBXZWJWaWV3SG9zdDo6dXNlck1lZGlhQ2xpZW50TW9j
aygpCit7CisgICAgaWYgKCFtX3VzZXJNZWRpYUNsaWVudE1vY2suZ2V0KCkpCisgICAgICAgIG1f
dXNlck1lZGlhQ2xpZW50TW9jayA9IGFkb3B0UHRyKFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6OmNy
ZWF0ZSgpKTsKKyAgICByZXR1cm4gbV91c2VyTWVkaWFDbGllbnRNb2NrLmdldCgpOworfQorCiAv
LyBXZWJXaWRnZXRDbGllbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBXZWJWaWV3SG9zdDo6ZGlkSW52YWxpZGF0ZVJl
Y3QoY29uc3QgV2ViUmVjdCYgcmVjdCkKQEAgLTg0Myw3ICs4NTcsNyBAQCBXZWJXb3JrZXIqIFdl
YlZpZXdIb3N0OjpjcmVhdGVXb3JrZXIoV2ViRnJhbWUqLCBXZWJXb3JrZXJDbGllbnQqKQogCiBX
ZWJNZWRpYVBsYXllciogV2ViVmlld0hvc3Q6OmNyZWF0ZU1lZGlhUGxheWVyKFdlYkZyYW1lKiBm
cmFtZSwgV2ViTWVkaWFQbGF5ZXJDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gd2Via2l0
X3N1cHBvcnQ6OkNyZWF0ZU1lZGlhUGxheWVyKGZyYW1lLCBjbGllbnQpOworICAgIHJldHVybiB3
ZWJraXRfc3VwcG9ydDo6Q3JlYXRlTWVkaWFQbGF5ZXIoZnJhbWUsIGNsaWVudCwgdGVzdE1lZGlh
U3RyZWFtQ2xpZW50KCkpOwogfQogCiBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdCogV2ViVmlld0hv
c3Q6OmNyZWF0ZUFwcGxpY2F0aW9uQ2FjaGVIb3N0KFdlYkZyYW1lKiBmcmFtZSwgV2ViQXBwbGlj
YXRpb25DYWNoZUhvc3RDbGllbnQqIGNsaWVudCkKQEAgLTE1NDIsNiArMTU1NiwxMyBAQCB2b2lk
IFdlYlZpZXdIb3N0OjpleGl0RnVsbFNjcmVlbk5vdygpCiAgICAgd2ViVmlldygpLT5kaWRFeGl0
RnVsbFNjcmVlbigpOwogfQogCit3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlhU3RyZWFtQ2xpZW50
KiBXZWJWaWV3SG9zdDo6dGVzdE1lZGlhU3RyZWFtQ2xpZW50KCkKK3sKKyAgICBpZiAoIW1fdGVz
dE1lZGlhU3RyZWFtQ2xpZW50LmdldCgpKQorICAgICAgICBtX3Rlc3RNZWRpYVN0cmVhbUNsaWVu
dCA9IGFkb3B0UHRyKG5ldyB3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlhU3RyZWFtQ2xpZW50KHVz
ZXJNZWRpYUNsaWVudE1vY2soKSkpOworICAgIHJldHVybiBtX3Rlc3RNZWRpYVN0cmVhbUNsaWVu
dC5nZXQoKTsKK30KKwogLy8gUGFpbnRpbmcgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIFdlYlZpZXdIb3N0
Ojp1cGRhdGVQYWludFJlY3QoY29uc3QgV2ViUmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4IDkyMjE2M2FiOWFlNThmZGQ0NDZiYjQ5
MGViNTJlNzQzMjRhNzBiMmUuLmU4NmNhZTkwMmVjNDg1MmQxMjU2NGQ0M2E3MzBiMWNiZWViNjli
MjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAt
NTksMTEgKzU5LDE2IEBAIGNsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlcjsKIGNsYXNzIFdl
YlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dExpc3RlbmVy
OwogY2xhc3MgV2ViVVJMOworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50TW9jazsKIHN0cnVjdCBX
ZWJSZWN0Owogc3RydWN0IFdlYlVSTEVycm9yOwogc3RydWN0IFdlYldpbmRvd0ZlYXR1cmVzOwog
fQogCituYW1lc3BhY2Ugd2Via2l0X3N1cHBvcnQgeworY2xhc3MgVGVzdE1lZGlhU3RyZWFtQ2xp
ZW50OworfQorCiBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNwZWxsQ2hl
Y2tDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6Oldl
YkZyYW1lQ2xpZW50LCBwdWJsaWMgTmF2aWdhdGlvbkhvc3QgewogIHB1YmxpYzoKICAgICBXZWJW
aWV3SG9zdChUZXN0U2hlbGwqKTsKQEAgLTE0OSw2ICsxNTQsNyBAQCBjbGFzcyBXZWJWaWV3SG9z
dCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNwZWxsQ2hlY2tDbGllbnQsIHB1YmxpYyBXZWJLaXQ6Oldl
YlZpZXdDbAogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudCogZ2VvbG9j
YXRpb25DbGllbnQoKTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyKiBzcGVlY2hJbnB1dENvbnRyb2xsZXIoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dExpc3RlbmVy
Kik7CiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBkZXZp
Y2VPcmllbnRhdGlvbkNsaWVudCgpOworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJVc2VyTWVkaWFD
bGllbnQqIHVzZXJNZWRpYUNsaWVudCgpOwogCiAgICAgLy8gV2ViS2l0OjpXZWJXaWRnZXRDbGll
bnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkSW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViS2l0OjpXZWJS
ZWN0Jik7CkBAIC0yNzgsNiArMjg0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0U2Nyb2xs
UmVjdCgpOwogICAgIHZvaWQgZGlzY2FyZEJhY2tpbmdTdG9yZSgpOwogCisgICAgV2ViS2l0OjpX
ZWJVc2VyTWVkaWFDbGllbnRNb2NrKiB1c2VyTWVkaWFDbGllbnRNb2NrKCk7CisgICAgd2Via2l0
X3N1cHBvcnQ6OlRlc3RNZWRpYVN0cmVhbUNsaWVudCogdGVzdE1lZGlhU3RyZWFtQ2xpZW50KCk7
CisKICAgICAvLyBDYXVzZXMgbmF2aWdhdGlvbiBhY3Rpb25zIGp1c3QgcHJpbnRvdXQgdGhlIGlu
dGVuZGVkIG5hdmlnYXRpb24gaW5zdGVhZAogICAgIC8vIG9mIHRha2luZyB5b3UgdG8gdGhlIHBh
Z2UuIFRoaXMgaXMgdXNlZCBmb3IgY2FzZXMgbGlrZSBtYWlsdG8sIHdoZXJlIHlvdQogICAgIC8v
IGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gb3BlbiB0aGUgbWFpbCBwcm9ncmFtLgpAQCAtMzU0LDYg
KzM2Myw5IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrPiBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazsKICAgICBPd25QdHI8
V2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrPiBtX3NwZWVjaElucHV0Q29udHJv
bGxlck1vY2s7CiAKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiBt
X3VzZXJNZWRpYUNsaWVudE1vY2s7CisgICAgT3duUHRyPHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVk
aWFTdHJlYW1DbGllbnQ+IG1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50OworCiAgICAgT3duUHRyPFRl
c3ROYXZpZ2F0aW9uQ29udHJvbGxlcj4gbV9uYXZpZ2F0aW9uQ29udHJvbGxlcjsKIAogICAgIFdl
YktpdDo6V2ViU3RyaW5nIG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZzsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0
OTIzNDExODk1ZDZhNDgzMDAzNDYzMGMwMWU4MGRhNjY4ZWQ2YjMxLi45YWM0ZDVhNTZhN2MzYWFj
Mjc5NTBiYWJkMjFiNDViMWVmOGFlNzMwIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTIt
MTkgIFdlaSBKaWEgIDx3amlhQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgbGF5
b3V0IHRlc3RzIGZvciA8dmlkZW8+IHdpdGggbWVkaWEgc3RyZWFtCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDg4MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vbWVkaWEv
dmlkZW8tY2FwdHVyZS1wcmV2aWV3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vbWVkaWEvdmlkZW8tY2FwdHVyZS1wcmV2aWV3Lmh0bWw6IEFkZGVkLgor
CiAyMDExLTEyLTIxICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkIHVwZGF0ZSB0ZXN0IGV4cGVjdGF0aW9uIGZvciBzdmcvY3VzdG9t
L2xpbmtpbmctdXJpLTAxLWIuc3ZnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vbWVkaWEvdmlkZW8tY2FwdHVyZS1wcmV2aWV3LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40YjE4ZmEyYWRiZjNiZjdiNWVjNGNjYTdjMjdkODZiODczOWY0
YmZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vbWVk
aWEvdmlkZW8tY2FwdHVyZS1wcmV2aWV3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACity
ZXF1ZXN0IGFjY2VzcyB0byBsb2NhbCBtZWRpYQorZ290IGEgc3RyZWFtCitzdGFydCBwcmV2aWV3
CitFVkVOVChsb2Fkc3RhcnQpCitFVkVOVChsb2FkZWRkYXRhKQorRVZFTlQoY2FucGxheSkKK0VW
RU5UKGNhbnBsYXl0aHJvdWdoKQorRVZFTlQocGxheSkKK3Jlc3RhcnQgcHJldmlldworRVZFTlQo
bG9hZHN0YXJ0KQorRVZFTlQobG9hZGVkZGF0YSkKK0VWRU5UKGNhbnBsYXkpCitFVkVOVChjYW5w
bGF5dGhyb3VnaCkKK0VWRU5UKHBsYXkpCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcuaHRt
bCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL21lZGlhL3ZpZGVvLWNhcHR1cmUtcHJl
dmlldy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNDI4ZmRiODQ4ZjI2YjM5OTIyNzhmNDdiZDMyYjdhYTg4
MTMwMjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9t
ZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcuaHRtbApAQCAtMCwwICsxLDY2IEBACis8IURPQ1RZ
UEUgSFRNTCI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Li4vLi4vLi4vbWVkaWEvbWVk
aWEtZmlsZS5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS4uLy4uLy4uL21lZGlhL3ZpZGVvLXRl
c3QuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0uLi8uLi8uLi9tZWRpYS92aWRlby1wbGF5ZWQu
anM+PC9zY3JpcHQ+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwordmFyIHBy
ZXZpZXdfdXJsID0gIiI7Cit2YXIgbG9jYWxTdHJlYW0gPSBudWxsOworCitmdW5jdGlvbiBzdGFy
dFByZXZpZXcoKQoreworICAgIHZpZGVvLnNyYyA9IHByZXZpZXdfdXJsOworfQorCitmdW5jdGlv
biBnb3RTdHJlYW0ocykKK3sKKyAgICBjb25zb2xlV3JpdGUoImdvdCBhIHN0cmVhbSIpOworICAg
IHByZXZpZXdfdXJsID0gd2Via2l0VVJMLmNyZWF0ZU9iamVjdFVSTChzKTsKKyAgICBzdGFydFBy
ZXZpZXcoKTsKKyAgICBjb25zb2xlV3JpdGUoInN0YXJ0IHByZXZpZXciKTsKKyAgICBsb2NhbFN0
cmVhbSA9IHM7CisgICAgdmFyIG1pbGxpc2Vjb25kcyA9IDIwMDA7CisgICAgdmFyIHJlcGxheUlm
VGltZUlzUmVhY2hlZCA9IGZ1bmN0aW9uICgpCisgICAgeworICAgICAgICBzdGFydFByZXZpZXco
KTsKKyAgICAgICAgY29uc29sZVdyaXRlKCJyZXN0YXJ0IHByZXZpZXciKTsKKyAgICAgICAgc2V0
VGltZW91dChlbmRUZXN0LCAyNTAwKTsKKyAgICB9CisKKyAgICBzZXRUaW1lb3V0KHJlcGxheUlm
VGltZUlzUmVhY2hlZCwgbWlsbGlzZWNvbmRzICsgMTAwKTsKK30KKworZnVuY3Rpb24gZ290U3Ry
ZWFtRmFpbGVkKGVycm9yKQoreworICAgIGNvbnNvbGVXcml0ZSgiRmFpbGVkIHRvIGdldCBhY2Nl
c3MgdG8gbG9jYWwgbWVkaWEuIEVycm9yIGNvZGUgd2FzICIgKyBlcnJvci5jb2RlKTsKK30KKwor
ZnVuY3Rpb24gcGxheVByZXZpZXcoKQoreworICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICB0
cnkgeworICAgICAgICBjb25zb2xlV3JpdGUoInJlcXVlc3QgYWNjZXNzIHRvIGxvY2FsIG1lZGlh
Iik7CisgICAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwgZ290U3Ry
ZWFtLCBnb3RTdHJlYW1GYWlsZWQpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgY29uc29s
ZVdyaXRlKCJnZXRVc2VyTWVkaWEgZXJyb3IgIiArICIoIiArIGUubmFtZSArICIgLyAiICsgZS5t
ZXNzYWdlICsgIikiKTsKKyAgICB9CisKKyAgICB3YWl0Rm9yRXZlbnQoImVycm9yIik7CisgICAg
d2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiKTsKKyAgICB3YWl0Rm9yRXZlbnQoImxvYWRlZGRhdGEi
KTsKKyAgICB3YWl0Rm9yRXZlbnQoImNhbnBsYXkiKTsKKyAgICB3YWl0Rm9yRXZlbnQoImNhbnBs
YXl0aHJvdWdoIik7CisgICAgd2FpdEZvckV2ZW50KCJwbGF5Iik7Cit9CisKKzwvc2NyaXB0Pgor
PC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InBsYXlQcmV2aWV3KCkiPgorPHZpZGVvIHdpZHRoPSIz
MjAiIGhlaWdodD0iMjQwIiBhdXRvcGxheT0iYXV0b3BsYXkiPjwvdmlkZW8+Cis8L2JvZHk+IAor
PC9odG1sPiAKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121353</attachid>
            <date>2012-01-05 15:40:37 -0800</date>
            <delta_ts>2012-01-10 12:10:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74882-20120105154036.patch</filename>
            <type>text/plain</type>
            <size>16597</size>
            <attacher>wjia</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEwNDA0NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDExLTEyLTE5ICBXZWkgSmlhICA8d2ppYUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgaW1wbGVtZW50IGxheW91dCB0ZXN0cyBmb3IgPHZpZGVvPiB3aXRoIG1lZGlhIHN0cmVh
bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ4ODIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0
Ojp1c2VyTWVkaWFDbGllbnQpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnVzZXJNZWRpYUNsaWVu
dE1vY2spOgorICAgICAgICAoV2ViVmlld0hvc3Q6OmNyZWF0ZU1lZGlhUGxheWVyKToKKyAgICAg
ICAgKFdlYlZpZXdIb3N0OjptZWRpYVN0cmVhbUNsaWVudCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKwogMjAxMi0wMS0wNCAgVG9yIEFybmUgVmVz
dGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBGaXggbGlu
ayBvcmRlciBvZiBzdGF0aWMgbGlicmFyaWVzIGFuZCB1bmJyZWFrIFF0V2luMzIKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQkocmV2aXNpb24gMTA0MDQ3KQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtNDYsNiArNDYsOCBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlBlcm1pc3Npb25z
LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0v
V2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlVz
ZXJNZWRpYUNsaWVudE1vY2suaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJWaWV3SG9zdC5oJywKICAgICAgICAgXSwK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1v
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVz
ZXJNZWRpYUNsaWVudE1vY2suY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xp
ZW50TW9jay5oIgorCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJlYW1SZWdpc3RyeS5oIgorI2luY2x1
ZGUgIldlYlVzZXJNZWRpYVJlcXVlc3QuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0
cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbVNvdXJj
ZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
KiBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjcmVhdGUoKQoreworICAgIHJldHVybiBuZXcgV2Vi
VXNlck1lZGlhQ2xpZW50TW9jaygpOworfQorCitib29sIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6
OklzTW9ja1N0cmVhbShjb25zdCBXZWJVUkwmIHVybCkKK3sKKyAgICBXZWJNZWRpYVN0cmVhbURl
c2NyaXB0b3IgZGVzY3JpcHRvcihXZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5Ojpsb29rdXBNZWRpYVN0
cmVhbURlc2NyaXB0b3IodXJsKSk7CisgICAgaWYgKGRlc2NyaXB0b3IuaXNOdWxsKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4g
c291cmNlVmVjdG9yOworICAgIGRlc2NyaXB0b3Iuc291cmNlcyhzb3VyY2VWZWN0b3IpOworICAg
IFdlYlN0cmluZyB0cmFja0lkOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc291cmNlVmVj
dG9yLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChzb3VyY2VWZWN0b3JbaV0udHlwZSgpID09
IFdlYk1lZGlhU3RyZWFtU291cmNlOjpUeXBlVmlkZW8pIHsKKyAgICAgICAgICAgIHRyYWNrSWQg
PSBzb3VyY2VWZWN0b3JbaV0uaWQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiB0cmFja0lkLmVxdWFscygibWVkaWFzdHJlYW10ZXN0Iik7Cit9CisK
K3ZvaWQgV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6cmVxdWVzdFVzZXJNZWRpYShjb25zdCBXZWJV
c2VyTWVkaWFSZXF1ZXN0JiBzdHJlYW1SZXF1ZXN0LCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFT
dHJlYW1Tb3VyY2U+JiBzdHJlYW1Tb3VyY2VWZWN0b3IpCit7CisgICAgQVNTRVJUKCFzdHJlYW1S
ZXF1ZXN0LmlzTnVsbCgpKTsKKworICAgIFdlYlVzZXJNZWRpYVJlcXVlc3QgcmVxdWVzdCA9IHN0
cmVhbVJlcXVlc3Q7CisgICAgc2l6ZV90IHNpemUgPSAxOworICAgIFdlYlZlY3RvcjxXZWJNZWRp
YVN0cmVhbVNvdXJjZT4gc291cmNlVmVjdG9yKHNpemUpOworICAgIFdlYlN0cmluZyB0cmFja0lk
KCJtZWRpYXN0cmVhbXRlc3QiKTsKKyAgICBXZWJTdHJpbmcgdHJhY2tOYW1lKCJWaWRlb0NhcHR1
cmUiKTsKKyAgICBzb3VyY2VWZWN0b3JbMF0uaW5pdGlhbGl6ZSh0cmFja0lkLCBXZWJNZWRpYVN0
cmVhbVNvdXJjZTo6VHlwZVZpZGVvLCB0cmFja05hbWUpOworICAgIHJlcXVlc3QucmVxdWVzdFN1
Y2NlZWRlZChzb3VyY2VWZWN0b3IpOworfQorCit2b2lkIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s6
OmNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYpCit7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHAKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaAkocmV2aXNp
b24gMCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVu
dE1vY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVXNlck1lZGlh
Q2xpZW50TW9ja19oCisjZGVmaW5lIFdlYlVzZXJNZWRpYUNsaWVudE1vY2tfaAorCisjaW5jbHVk
ZSAiV2ViVXNlck1lZGlhQ2xpZW50LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgi
CisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
VVJMLmgiCisjaW5jbHVkZSAid2Via2l0L3N1cHBvcnQvdGVzdF9tZWRpYV9zdHJlYW1fY2xpZW50
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
IDogcHVibGljIFdlYlVzZXJNZWRpYUNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgd2Via2l0X3N1cHBvcnQ6Ok1lZGlhU3RyZWFtVXRpbCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFdlYlVzZXJNZWRpYUNsaWVudE1vY2sqIGNyZWF0ZSgpOworICAgIH5XZWJVc2Vy
TWVkaWFDbGllbnRNb2NrKCkgeyB9CisKKyAgICBib29sIElzTW9ja1N0cmVhbShjb25zdCBXZWJV
UkwmKTsKKworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VXNlck1lZGlhKGNvbnN0IFdlYlVzZXJN
ZWRpYVJlcXVlc3QmLCBjb25zdCBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+Jik7Cisg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbFVzZXJNZWRpYVJlcXVlc3QoY29uc3QgV2ViVXNlck1lZGlh
UmVxdWVzdCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJV
c2VyTWVkaWFDbGllbnRNb2NrX2gKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVk
OiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCShyZXZpc2lvbiAxMDQwNDcpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTYwLDEyICs2MCwxNCBAQAogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3Bh
Y2UuaCIKICNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uLmgiCiAjaW5jbHVkZSAi
V2ViVGV4dENoZWNraW5nUmVzdWx0LmgiCisjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50TW9j
ay5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRocmVhZC5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlVSTFJlcXVlc3QuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxSZXNwb25zZS5oIgog
I2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJXaW5kb3dGZWF0dXJlcy5oIgogI2lu
Y2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgorI2luY2x1ZGUgIndlYmtpdC9zdXBw
b3J0L3Rlc3RfbWVkaWFfc3RyZWFtX2NsaWVudC5oIgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0
L3dlYmtpdF9zdXBwb3J0LmgiCiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtNjk1
LDYgKzY5NywxOCBAQCBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogV2ViVmlld0hvc3Q6CiAg
ICAgcmV0dXJuIGRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpOwogfQogCitXZWJVc2VyTWVk
aWFDbGllbnQqIFdlYlZpZXdIb3N0Ojp1c2VyTWVkaWFDbGllbnQoKQoreworICAgIHJldHVybiB1
c2VyTWVkaWFDbGllbnRNb2NrKCk7Cit9CisKK1dlYlVzZXJNZWRpYUNsaWVudE1vY2sqIFdlYlZp
ZXdIb3N0Ojp1c2VyTWVkaWFDbGllbnRNb2NrKCkKK3sKKyAgICBpZiAoIW1fdXNlck1lZGlhQ2xp
ZW50TW9jay5nZXQoKSkKKyAgICAgICAgbV91c2VyTWVkaWFDbGllbnRNb2NrID0gYWRvcHRQdHIo
V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKCkpOworICAgIHJldHVybiBtX3VzZXJNZWRp
YUNsaWVudE1vY2suZ2V0KCk7Cit9CisKIC8vIFdlYldpZGdldENsaWVudCAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIFdl
YlZpZXdIb3N0OjpkaWRJbnZhbGlkYXRlUmVjdChjb25zdCBXZWJSZWN0JiByZWN0KQpAQCAtODQ0
LDcgKzg1OCw3IEBAIFdlYldvcmtlciogV2ViVmlld0hvc3Q6OmNyZWF0ZVdvcmtlcihXZWIKIAog
V2ViTWVkaWFQbGF5ZXIqIFdlYlZpZXdIb3N0OjpjcmVhdGVNZWRpYVBsYXllcihXZWJGcmFtZSog
ZnJhbWUsIFdlYk1lZGlhUGxheWVyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHdlYmtp
dF9zdXBwb3J0OjpDcmVhdGVNZWRpYVBsYXllcihmcmFtZSwgY2xpZW50KTsKKyAgICByZXR1cm4g
d2Via2l0X3N1cHBvcnQ6OkNyZWF0ZU1lZGlhUGxheWVyKGZyYW1lLCBjbGllbnQsIHRlc3RNZWRp
YVN0cmVhbUNsaWVudCgpKTsKIH0KIAogV2ViQXBwbGljYXRpb25DYWNoZUhvc3QqIFdlYlZpZXdI
b3N0OjpjcmVhdGVBcHBsaWNhdGlvbkNhY2hlSG9zdChXZWJGcmFtZSogZnJhbWUsIFdlYkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0Q2xpZW50KiBjbGllbnQpCkBAIC0xNTUzLDYgKzE1NjcsMTggQEAgdm9p
ZCBXZWJWaWV3SG9zdDo6ZXhpdEZ1bGxTY3JlZW5Ob3coKQogICAgIHdlYlZpZXcoKS0+ZGlkRXhp
dEZ1bGxTY3JlZW4oKTsKIH0KIAord2Via2l0X3N1cHBvcnQ6Ok1lZGlhU3RyZWFtVXRpbCogV2Vi
Vmlld0hvc3Q6Om1lZGlhU3RyZWFtVXRpbCgpCit7CisgICAgcmV0dXJuIHVzZXJNZWRpYUNsaWVu
dE1vY2soKTsKK30KKword2Via2l0X3N1cHBvcnQ6OlRlc3RNZWRpYVN0cmVhbUNsaWVudCogV2Vi
Vmlld0hvc3Q6OnRlc3RNZWRpYVN0cmVhbUNsaWVudCgpCit7CisgICAgaWYgKCFtX3Rlc3RNZWRp
YVN0cmVhbUNsaWVudC5nZXQoKSkKKyAgICAgICAgbV90ZXN0TWVkaWFTdHJlYW1DbGllbnQgPSBh
ZG9wdFB0cihuZXcgd2Via2l0X3N1cHBvcnQ6OlRlc3RNZWRpYVN0cmVhbUNsaWVudChtZWRpYVN0
cmVhbVV0aWwoKSkpOworICAgIHJldHVybiBtX3Rlc3RNZWRpYVN0cmVhbUNsaWVudC5nZXQoKTsK
K30KKwogLy8gUGFpbnRpbmcgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIFdlYlZpZXdIb3N0Ojp1cGRhdGVQ
YWludFJlY3QoY29uc3QgV2ViUmVjdCYgcmVjdCkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAkocmV2aXNpb24gMTA0MDQ3KQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNjAsMTEg
KzYwLDE3IEBAIGNsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlcjsKIGNsYXNzIFdlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2s7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyOwogY2xh
c3MgV2ViVVJMOworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50TW9jazsKIHN0cnVjdCBXZWJSZWN0
Owogc3RydWN0IFdlYlVSTEVycm9yOwogc3RydWN0IFdlYldpbmRvd0ZlYXR1cmVzOwogfQogCitu
YW1lc3BhY2Ugd2Via2l0X3N1cHBvcnQgeworY2xhc3MgTWVkaWFTdHJlYW1VdGlsOworY2xhc3Mg
VGVzdE1lZGlhU3RyZWFtQ2xpZW50OworfQorCiBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBX
ZWJLaXQ6OldlYlNwZWxsQ2hlY2tDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQs
IHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LCBwdWJsaWMgTmF2aWdhdGlvbkhvc3Qgewog
IHB1YmxpYzoKICAgICBXZWJWaWV3SG9zdChUZXN0U2hlbGwqKTsKQEAgLTE1MCw2ICsxNTYsNyBA
QCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNwCiAgICAgdmlydHVhbCBX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50KiBnZW9sb2NhdGlvbkNsaWVudCgpOwogICAgIHZp
cnR1YWwgV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIHNwZWVjaElucHV0Q29udHJv
bGxlcihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqKTsKICAgICB2aXJ0dWFsIFdlYktp
dDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGRldmljZU9yaWVudGF0aW9uQ2xpZW50KCk7
CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudCogdXNlck1lZGlhQ2xpZW50
KCk7CiAKICAgICAvLyBXZWJLaXQ6OldlYldpZGdldENsaWVudAogICAgIHZpcnR1YWwgdm9pZCBk
aWRJbnZhbGlkYXRlUmVjdChjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKQEAgLTI4MCw2ICsyODcs
MTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0U2Nyb2xsUmVjdCgpOwogICAgIHZvaWQgZGlz
Y2FyZEJhY2tpbmdTdG9yZSgpOwogCisgICAgV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
KiB1c2VyTWVkaWFDbGllbnRNb2NrKCk7CisgICAgd2Via2l0X3N1cHBvcnQ6Ok1lZGlhU3RyZWFt
VXRpbCogbWVkaWFTdHJlYW1VdGlsKCk7CisgICAgd2Via2l0X3N1cHBvcnQ6OlRlc3RNZWRpYVN0
cmVhbUNsaWVudCogdGVzdE1lZGlhU3RyZWFtQ2xpZW50KCk7CisKICAgICAvLyBDYXVzZXMgbmF2
aWdhdGlvbiBhY3Rpb25zIGp1c3QgcHJpbnRvdXQgdGhlIGludGVuZGVkIG5hdmlnYXRpb24gaW5z
dGVhZAogICAgIC8vIG9mIHRha2luZyB5b3UgdG8gdGhlIHBhZ2UuIFRoaXMgaXMgdXNlZCBmb3Ig
Y2FzZXMgbGlrZSBtYWlsdG8sIHdoZXJlIHlvdQogICAgIC8vIGRvbid0IGFjdHVhbGx5IHdhbnQg
dG8gb3BlbiB0aGUgbWFpbCBwcm9ncmFtLgpAQCAtMzU2LDYgKzM2Nyw5IEBAIHByaXZhdGU6CiAg
ICAgT3duUHRyPFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPiBtX2Rldmlj
ZU9yaWVudGF0aW9uQ2xpZW50TW9jazsKICAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrPiBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CiAKKyAgICBPd25Q
dHI8V2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiBtX3VzZXJNZWRpYUNsaWVudE1vY2s7
CisgICAgT3duUHRyPHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQ+IG1fdGVz
dE1lZGlhU3RyZWFtQ2xpZW50OworCiAgICAgT3duUHRyPFRlc3ROYXZpZ2F0aW9uQ29udHJvbGxl
cj4gbV9uYXZpZ2F0aW9uQ29udHJvbGxlcjsKIAogICAgIFdlYktpdDo6V2ViU3RyaW5nIG1fbGFz
dFJlcXVlc3RlZFRleHRDaGVja1N0cmluZzsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNDA0NykKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDExLTEyLTE5ICBXZWkgSmlhICA8d2ppYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgaW1wbGVt
ZW50IGxheW91dCB0ZXN0cyBmb3IgPHZpZGVvPiB3aXRoIG1lZGlhIHN0cmVhbQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ4ODIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L21lZGlhL3ZpZGVvLWNhcHR1cmUtcHJldmlldy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL21lZGlhL3ZpZGVvLWNhcHR1cmUtcHJldmlldy5odG1sOiBB
ZGRlZC4KKwogMjAxMi0wMS0wNCAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIE5vdCByZXZpZXdlZC4gVXBkYXRlIENocm9taXVtIHBvcnQgdGVzdCBleHBlY3RhdGlv
bnMuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9tZWRpYS92aWRlby1jYXB0
dXJlLXByZXZpZXctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL21lZGlhL3ZpZGVvLWNhcHR1cmUtcHJldmlldy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9tZWRpYS92aWRlby1j
YXB0dXJlLXByZXZpZXctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBA
CityZXF1ZXN0IGFjY2VzcyB0byBsb2NhbCBtZWRpYQorZ290IGEgc3RyZWFtCitzdGFydCBwcmV2
aWV3CitFVkVOVChsb2Fkc3RhcnQpCitFVkVOVChsb2FkZWRkYXRhKQorRVZFTlQoY2FucGxheSkK
K0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorRVZFTlQocGxheSkKK3Jlc3RhcnQgcHJldmlldworRVZF
TlQobG9hZHN0YXJ0KQorRVZFTlQobG9hZGVkZGF0YSkKK0VWRU5UKGNhbnBsYXkpCitFVkVOVChj
YW5wbGF5dGhyb3VnaCkKK0VWRU5UKHBsYXkpCitFTkQgT0YgVEVTVAorCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9tZWRpYS92aWRlby1jYXB0dXJl
LXByZXZpZXctZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAg
KyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL21lZGlhL3ZpZGVvLWNh
cHR1cmUtcHJldmlldy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL21lZGlhL3ZpZGVvLWNhcHR1cmUtcHJldmlldy5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vbWVkaWEvdmlkZW8tY2FwdHVyZS1wcmV2aWV3
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBIVE1MIj4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0uLi8uLi8uLi9tZWRpYS9tZWRpYS1maWxlLmpzPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Li4vLi4vLi4vbWVkaWEvdmlkZW8tdGVzdC5qcz48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPS4uLy4uLy4uL21lZGlhL3ZpZGVvLXBsYXllZC5qcz48L3NjcmlwdD4K
KworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCit2YXIgcHJldmlld191cmwgPSAi
IjsKK3ZhciBsb2NhbFN0cmVhbSA9IG51bGw7CisKK2Z1bmN0aW9uIHN0YXJ0UHJldmlldygpCit7
CisgICAgdmlkZW8uc3JjID0gcHJldmlld191cmw7Cit9CisKK2Z1bmN0aW9uIGdvdFN0cmVhbShz
KQoreworICAgIGNvbnNvbGVXcml0ZSgiZ290IGEgc3RyZWFtIik7CisgICAgcHJldmlld191cmwg
PSB3ZWJraXRVUkwuY3JlYXRlT2JqZWN0VVJMKHMpOworICAgIHN0YXJ0UHJldmlldygpOworICAg
IGNvbnNvbGVXcml0ZSgic3RhcnQgcHJldmlldyIpOworICAgIGxvY2FsU3RyZWFtID0gczsKKyAg
ICB2YXIgbWlsbGlzZWNvbmRzID0gMjAwMDsKKyAgICB2YXIgcmVwbGF5SWZUaW1lSXNSZWFjaGVk
ID0gZnVuY3Rpb24gKCkKKyAgICB7CisgICAgICAgIHN0YXJ0UHJldmlldygpOworICAgICAgICBj
b25zb2xlV3JpdGUoInJlc3RhcnQgcHJldmlldyIpOworICAgICAgICBzZXRUaW1lb3V0KGVuZFRl
c3QsIDI1MDApOworICAgIH0KKworICAgIHNldFRpbWVvdXQocmVwbGF5SWZUaW1lSXNSZWFjaGVk
LCBtaWxsaXNlY29uZHMgKyAxMDApOworfQorCitmdW5jdGlvbiBnb3RTdHJlYW1GYWlsZWQoZXJy
b3IpCit7CisgICAgY29uc29sZVdyaXRlKCJGYWlsZWQgdG8gZ2V0IGFjY2VzcyB0byBsb2NhbCBt
ZWRpYS4gRXJyb3IgY29kZSB3YXMgIiArIGVycm9yLmNvZGUpOworfQorCitmdW5jdGlvbiBwbGF5
UHJldmlldygpCit7CisgICAgZmluZE1lZGlhRWxlbWVudCgpOworICAgIHRyeSB7CisgICAgICAg
IGNvbnNvbGVXcml0ZSgicmVxdWVzdCBhY2Nlc3MgdG8gbG9jYWwgbWVkaWEiKTsKKyAgICAgICAg
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSgidmlkZW8iLCBnb3RTdHJlYW0sIGdvdFN0cmVh
bUZhaWxlZCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBjb25zb2xlV3JpdGUoImdldFVz
ZXJNZWRpYSBlcnJvciAiICsgIigiICsgZS5uYW1lICsgIiAvICIgKyBlLm1lc3NhZ2UgKyAiKSIp
OworICAgIH0KKworICAgIHdhaXRGb3JFdmVudCgiZXJyb3IiKTsKKyAgICB3YWl0Rm9yRXZlbnQo
ImxvYWRzdGFydCIpOworICAgIHdhaXRGb3JFdmVudCgibG9hZGVkZGF0YSIpOworICAgIHdhaXRG
b3JFdmVudCgiY2FucGxheSIpOworICAgIHdhaXRGb3JFdmVudCgiY2FucGxheXRocm91Z2giKTsK
KyAgICB3YWl0Rm9yRXZlbnQoInBsYXkiKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxi
b2R5IG9ubG9hZD0icGxheVByZXZpZXcoKSI+Cis8dmlkZW8gd2lkdGg9IjMyMCIgaGVpZ2h0PSIy
NDAiIGF1dG9wbGF5PSJhdXRvcGxheSI+PC92aWRlbz4KKzwvYm9keT4gCis8L2h0bWw+IAorCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9tZWRpYS92
aWRlby1jYXB0dXJlLXByZXZpZXcuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxl
CiAgICsgTEYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121889</attachid>
            <date>2012-01-10 12:10:17 -0800</date>
            <delta_ts>2012-01-11 11:53:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74882-20120110121016.patch</filename>
            <type>text/plain</type>
            <size>17129</size>
            <attacher>wjia</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEwNDYxNCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI2IEBACisyMDEyLTAxLTEwICBXZWkgSmlhICA8d2ppYUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgaW1wbGVtZW50IGxheW91dCB0ZXN0cyBmb3IgPHZpZGVvPiB3aXRoIG1lZGlhIHN0cmVh
bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ4ODIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpJc01vY2tTdHJlYW0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpyZXF1ZXN0VXNlck1lZGlhKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6fldlYlVzZXJN
ZWRpYUNsaWVudE1vY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojp1c2VyTWVkaWFDbGllbnQpOgorICAg
ICAgICAoV2ViVmlld0hvc3Q6OnVzZXJNZWRpYUNsaWVudE1vY2spOgorICAgICAgICAoV2ViVmll
d0hvc3Q6OmNyZWF0ZU1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjptZWRpYVN0
cmVhbVV0aWwpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnRlc3RNZWRpYVN0cmVhbUNsaWVudCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKwogMjAx
Mi0wMS0xMCAgQmVuIFdlbGxzICA8YmVud2VsbHNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFk
ZGluZyBteXNlbGYgKGJlbndlbGxzKSB0byBjb21taXR0ZXJzLnB5CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkJKHJldmlzaW9uIDEwNDYxMykKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDYgKzQ2LDggQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJQZXJtaXNzaW9ucy5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5jcHAnLAogICAgICAgICAgICAgJ2No
cm9taXVtL1dlYlByZWZlcmVuY2VzLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlVzZXJN
ZWRpYUNsaWVudE1vY2suY3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9XZWJVc2VyTWVkaWFD
bGllbnRNb2NrLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3QuaCcsCiAgICAgICAgIF0sCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFD
bGllbnRNb2NrLmNwcAkocmV2aXNpb24gMCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudE1vY2su
aCIKKworI2luY2x1ZGUgIldlYk1lZGlhU3RyZWFtUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJXZWJV
c2VyTWVkaWFSZXF1ZXN0LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViVXNlck1lZGlhQ2xpZW50TW9jayogV2ViVXNl
ck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gbmV3IFdlYlVzZXJNZWRp
YUNsaWVudE1vY2soKTsKK30KKworYm9vbCBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpJc01vY2tT
dHJlYW0oY29uc3QgV2ViVVJMJiB1cmwpCit7CisgICAgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
IGRlc2NyaXB0b3IoV2ViTWVkaWFTdHJlYW1SZWdpc3RyeTo6bG9va3VwTWVkaWFTdHJlYW1EZXNj
cmlwdG9yKHVybCkpOworICAgIGlmIChkZXNjcmlwdG9yLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+IHNvdXJjZVZl
Y3RvcjsKKyAgICBkZXNjcmlwdG9yLnNvdXJjZXMoc291cmNlVmVjdG9yKTsKKyAgICBXZWJTdHJp
bmcgdHJhY2tJZDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNvdXJjZVZlY3Rvci5zaXpl
KCk7ICsraSkgeworICAgICAgICBpZiAoc291cmNlVmVjdG9yW2ldLnR5cGUoKSA9PSBXZWJNZWRp
YVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvKSB7CisgICAgICAgICAgICB0cmFja0lkID0gc291cmNl
VmVjdG9yW2ldLmlkKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAg
ICByZXR1cm4gdHJhY2tJZC5lcXVhbHMoIm1lZGlhc3RyZWFtdGVzdCIpOworfQorCit2b2lkIFdl
YlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlh
UmVxdWVzdCYgc3RyZWFtUmVxdWVzdCwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291
cmNlPiYgc3RyZWFtU291cmNlVmVjdG9yKQoreworICAgIEFTU0VSVCghc3RyZWFtUmVxdWVzdC5p
c051bGwoKSk7CisKKyAgICBXZWJVc2VyTWVkaWFSZXF1ZXN0IHJlcXVlc3QgPSBzdHJlYW1SZXF1
ZXN0OworICAgIHNpemVfdCBzaXplID0gMTsKKyAgICBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1T
b3VyY2U+IHNvdXJjZVZlY3RvcihzaXplKTsKKyAgICBXZWJTdHJpbmcgdHJhY2tJZCgibWVkaWFz
dHJlYW10ZXN0Iik7CisgICAgV2ViU3RyaW5nIHRyYWNrTmFtZSgiVmlkZW9DYXB0dXJlIik7Cisg
ICAgc291cmNlVmVjdG9yWzBdLmluaXRpYWxpemUodHJhY2tJZCwgV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2U6OlR5cGVWaWRlbywgdHJhY2tOYW1lKTsKKyAgICByZXF1ZXN0LnJlcXVlc3RTdWNjZWVkZWQo
c291cmNlVmVjdG9yKTsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjYW5jZWxV
c2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmKQoreworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6
IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgJKHJldmlzaW9uIDApCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlVzZXJNZWRpYUNsaWVudE1v
Y2tfaAorI2RlZmluZSBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKKworI2luY2x1ZGUgIldlYlVz
ZXJNZWRpYUNsaWVudC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1
ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgor
I2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3Rlc3RfbWVkaWFfc3RyZWFtX2NsaWVudC5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50TW9jayA6IHB1Ymxp
YyBXZWJVc2VyTWVkaWFDbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIHdlYmtpdF9zdXBwb3J0OjpNZWRpYVN0cmVhbVV0aWwgeworcHVibGljOgorICAgIHN0YXRp
YyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrKiBjcmVhdGUoKTsKKyAgICB+V2ViVXNlck1lZGlhQ2xp
ZW50TW9jaygpIHsgfQorCisgICAgYm9vbCBJc01vY2tTdHJlYW0oY29uc3QgV2ViVVJMJik7CisK
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShjb25zdCBXZWJVc2VyTWVkaWFSZXF1
ZXN0JiwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYpOworICAgIHZpcnR1
YWwgdm9pZCBjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3Qm
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViVXNlck1lZGlh
Q2xpZW50TW9ja19oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVv
bC1zdHlsZQogICArIExGCgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlZpZXdIb3N0LmNwcAkocmV2aXNpb24gMTA0NjEzKQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC02MCwxMiArNjAsMTQgQEAKICNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlLmgiCiAj
aW5jbHVkZSAiV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbi5oIgogI2luY2x1ZGUgIldlYlRleHRD
aGVja2luZ1Jlc3VsdC5oIgorI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudE1vY2suaCIKICNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJUaHJlYWQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMUmVzcG9uc2UuaCIKICNpbmNsdWRl
ICJXZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViV2luZG93RmVhdHVyZXMuaCIKICNpbmNsdWRlICJz
a2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKKyNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC90ZXN0
X21lZGlhX3N0cmVhbV9jbGllbnQuaCIKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRf
c3VwcG9ydC5oIgogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTY5NSw2ICs2OTcs
MTggQEAgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIFdlYlZpZXdIb3N0OgogICAgIHJldHVy
biBkZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKTsKIH0KIAorV2ViVXNlck1lZGlhQ2xpZW50
KiBXZWJWaWV3SG9zdDo6dXNlck1lZGlhQ2xpZW50KCkKK3sKKyAgICByZXR1cm4gdXNlck1lZGlh
Q2xpZW50TW9jaygpOworfQorCitXZWJVc2VyTWVkaWFDbGllbnRNb2NrKiBXZWJWaWV3SG9zdDo6
dXNlck1lZGlhQ2xpZW50TW9jaygpCit7CisgICAgaWYgKCFtX3VzZXJNZWRpYUNsaWVudE1vY2su
Z2V0KCkpCisgICAgICAgIG1fdXNlck1lZGlhQ2xpZW50TW9jayA9IGFkb3B0UHRyKFdlYlVzZXJN
ZWRpYUNsaWVudE1vY2s6OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gbV91c2VyTWVkaWFDbGllbnRN
b2NrLmdldCgpOworfQorCiAvLyBXZWJXaWRnZXRDbGllbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBXZWJWaWV3SG9z
dDo6ZGlkSW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViUmVjdCYgcmVjdCkKQEAgLTg1MSw3ICs4NjUs
NyBAQCBXZWJXb3JrZXIqIFdlYlZpZXdIb3N0OjpjcmVhdGVXb3JrZXIoV2ViCiAKIFdlYk1lZGlh
UGxheWVyKiBXZWJWaWV3SG9zdDo6Y3JlYXRlTWVkaWFQbGF5ZXIoV2ViRnJhbWUqIGZyYW1lLCBX
ZWJNZWRpYVBsYXllckNsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiB3ZWJraXRfc3VwcG9y
dDo6Q3JlYXRlTWVkaWFQbGF5ZXIoZnJhbWUsIGNsaWVudCk7CisgICAgcmV0dXJuIHdlYmtpdF9z
dXBwb3J0OjpDcmVhdGVNZWRpYVBsYXllcihmcmFtZSwgY2xpZW50LCB0ZXN0TWVkaWFTdHJlYW1D
bGllbnQoKSk7CiB9CiAKIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBXZWJWaWV3SG9zdDo6Y3Jl
YXRlQXBwbGljYXRpb25DYWNoZUhvc3QoV2ViRnJhbWUqIGZyYW1lLCBXZWJBcHBsaWNhdGlvbkNh
Y2hlSG9zdENsaWVudCogY2xpZW50KQpAQCAtMTU2MCw2ICsxNTc0LDE4IEBAIHZvaWQgV2ViVmll
d0hvc3Q6OmV4aXRGdWxsU2NyZWVuTm93KCkKICAgICB3ZWJWaWV3KCktPmRpZEV4aXRGdWxsU2Ny
ZWVuKCk7CiB9CiAKK3dlYmtpdF9zdXBwb3J0OjpNZWRpYVN0cmVhbVV0aWwqIFdlYlZpZXdIb3N0
OjptZWRpYVN0cmVhbVV0aWwoKQoreworICAgIHJldHVybiB1c2VyTWVkaWFDbGllbnRNb2NrKCk7
Cit9CisKK3dlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQqIFdlYlZpZXdIb3N0
Ojp0ZXN0TWVkaWFTdHJlYW1DbGllbnQoKQoreworICAgIGlmICghbV90ZXN0TWVkaWFTdHJlYW1D
bGllbnQuZ2V0KCkpCisgICAgICAgIG1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50ID0gYWRvcHRQdHIo
bmV3IHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQobWVkaWFTdHJlYW1VdGls
KCkpKTsKKyAgICByZXR1cm4gbV90ZXN0TWVkaWFTdHJlYW1DbGllbnQuZ2V0KCk7Cit9CisKIC8v
IFBhaW50aW5nIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBXZWJWaWV3SG9zdDo6dXBkYXRlUGFpbnRSZWN0
KGNvbnN0IFdlYlJlY3QmIHJlY3QpCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmgJKHJldmlzaW9uIDEwNDYxMykKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTYwLDExICs2MCwxNyBA
QCBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXJNb2NrOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lcjsKIGNsYXNzIFdlYlVS
TDsKK2NsYXNzIFdlYlVzZXJNZWRpYUNsaWVudE1vY2s7CiBzdHJ1Y3QgV2ViUmVjdDsKIHN0cnVj
dCBXZWJVUkxFcnJvcjsKIHN0cnVjdCBXZWJXaW5kb3dGZWF0dXJlczsKIH0KIAorbmFtZXNwYWNl
IHdlYmtpdF9zdXBwb3J0IHsKK2NsYXNzIE1lZGlhU3RyZWFtVXRpbDsKK2NsYXNzIFRlc3RNZWRp
YVN0cmVhbUNsaWVudDsKK30KKwogY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpX
ZWJTcGVsbENoZWNrQ2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMg
V2ViS2l0OjpXZWJGcmFtZUNsaWVudCwgcHVibGljIE5hdmlnYXRpb25Ib3N0IHsKICBwdWJsaWM6
CiAgICAgV2ViVmlld0hvc3QoVGVzdFNoZWxsKik7CkBAIC0xNTAsNiArMTU2LDcgQEAgY2xhc3Mg
V2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJTcAogICAgIHZpcnR1YWwgV2ViS2l0OjpX
ZWJHZW9sb2NhdGlvbkNsaWVudCogZ2VvbG9jYXRpb25DbGllbnQoKTsKICAgICB2aXJ0dWFsIFdl
YktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBzcGVlY2hJbnB1dENvbnRyb2xsZXIoV2Vi
S2l0OjpXZWJTcGVlY2hJbnB1dExpc3RlbmVyKik7CiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50KiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpOworICAgIHZp
cnR1YWwgV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnQqIHVzZXJNZWRpYUNsaWVudCgpOwogCiAg
ICAgLy8gV2ViS2l0OjpXZWJXaWRnZXRDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkSW52YWxp
ZGF0ZVJlY3QoY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CkBAIC0yODEsNiArMjg4LDEwIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZXNldFNjcm9sbFJlY3QoKTsKICAgICB2b2lkIGRpc2NhcmRCYWNr
aW5nU3RvcmUoKTsKIAorICAgIFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jayogdXNlck1l
ZGlhQ2xpZW50TW9jaygpOworICAgIHdlYmtpdF9zdXBwb3J0OjpNZWRpYVN0cmVhbVV0aWwqIG1l
ZGlhU3RyZWFtVXRpbCgpOworICAgIHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1DbGll
bnQqIHRlc3RNZWRpYVN0cmVhbUNsaWVudCgpOworCiAgICAgLy8gQ2F1c2VzIG5hdmlnYXRpb24g
YWN0aW9ucyBqdXN0IHByaW50b3V0IHRoZSBpbnRlbmRlZCBuYXZpZ2F0aW9uIGluc3RlYWQKICAg
ICAvLyBvZiB0YWtpbmcgeW91IHRvIHRoZSBwYWdlLiBUaGlzIGlzIHVzZWQgZm9yIGNhc2VzIGxp
a2UgbWFpbHRvLCB3aGVyZSB5b3UKICAgICAvLyBkb24ndCBhY3R1YWxseSB3YW50IHRvIG9wZW4g
dGhlIG1haWwgcHJvZ3JhbS4KQEAgLTM1Nyw2ICszNjgsOSBAQCBwcml2YXRlOgogICAgIE93blB0
cjxXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4gbV9kZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2s7CiAgICAgT3duUHRyPFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9s
bGVyTW9jaz4gbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOwogCisgICAgT3duUHRyPFdlYktp
dDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jaz4gbV91c2VyTWVkaWFDbGllbnRNb2NrOworICAgIE93
blB0cjx3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlhU3RyZWFtQ2xpZW50PiBtX3Rlc3RNZWRpYVN0
cmVhbUNsaWVudDsKKwogICAgIE93blB0cjxUZXN0TmF2aWdhdGlvbkNvbnRyb2xsZXI+IG1fbmF2
aWdhdGlvbkNvbnRyb2xsZXI7CiAKICAgICBXZWJLaXQ6OldlYlN0cmluZyBtX2xhc3RSZXF1ZXN0
ZWRUZXh0Q2hlY2tTdHJpbmc7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDQ2MTQpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMS0x
MCAgV2VpIEppYSAgPHdqaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGltcGxlbWVudCBsYXlv
dXQgdGVzdHMgZm9yIDx2aWRlbz4gd2l0aCBtZWRpYSBzdHJlYW0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODgyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9tZWRpYS92
aWRlby1jYXB0dXJlLXByZXZpZXctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcuaHRtbDogQWRkZWQuCisK
IDIwMTItMDEtMTAgIERhbmllbCBTaWV2ZXJzICA8c2lldmVyc0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW0Nocm9taXVtXSBEbyBub3QgcmVjcmVhdGUgdGV4dHVyZSB1cGRhdGVyIGZvciBpbWFn
ZSBsYXllciBpZiBvbmUgZXhpc3RzLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vbWVkaWEvdmlkZW8tY2FwdHVyZS1wcmV2aWV3LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZp
ZXctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vbWVkaWEvdmlkZW8tY2FwdHVyZS1wcmV2aWV3LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNiBAQAorcmVxdWVzdCBhY2Nlc3MgdG8gbG9jYWwgbWVkaWEKK2dvdCBh
IHN0cmVhbQorc3RhcnQgcHJldmlldworRVZFTlQobG9hZHN0YXJ0KQorRVZFTlQobG9hZGVkZGF0
YSkKK0VWRU5UKGNhbnBsYXkpCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK0VWRU5UKHBsYXkpCity
ZXN0YXJ0IHByZXZpZXcKK0VWRU5UKGxvYWRzdGFydCkKK0VWRU5UKGxvYWRlZGRhdGEpCitFVkVO
VChjYW5wbGF5KQorRVZFTlQoY2FucGxheXRocm91Z2gpCitFVkVOVChwbGF5KQorRU5EIE9GIFRF
U1QKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
bWVkaWEvdmlkZW8tY2FwdHVyZS1wcmV2aWV3LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVk
OiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXcuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL21lZGlhL3Zp
ZGVvLWNhcHR1cmUtcHJldmlldy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACis8
IURPQ1RZUEUgSFRNTCI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Li4vLi4vLi4vbWVk
aWEvbWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS4uLy4uLy4uL21lZGlhL3Zp
ZGVvLXRlc3QuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0uLi8uLi8uLi9tZWRpYS92aWRlby1w
bGF5ZWQuanM+PC9zY3JpcHQ+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwor
dmFyIHByZXZpZXdfdXJsID0gIiI7Cit2YXIgbG9jYWxTdHJlYW0gPSBudWxsOworCitmdW5jdGlv
biBzdGFydFByZXZpZXcoKQoreworICAgIHZpZGVvLnNyYyA9IHByZXZpZXdfdXJsOworfQorCitm
dW5jdGlvbiBnb3RTdHJlYW0ocykKK3sKKyAgICBjb25zb2xlV3JpdGUoImdvdCBhIHN0cmVhbSIp
OworICAgIHByZXZpZXdfdXJsID0gd2Via2l0VVJMLmNyZWF0ZU9iamVjdFVSTChzKTsKKyAgICBz
dGFydFByZXZpZXcoKTsKKyAgICBjb25zb2xlV3JpdGUoInN0YXJ0IHByZXZpZXciKTsKKyAgICBs
b2NhbFN0cmVhbSA9IHM7CisgICAgdmFyIG1pbGxpc2Vjb25kcyA9IDIwMDA7CisgICAgdmFyIHJl
cGxheUlmVGltZUlzUmVhY2hlZCA9IGZ1bmN0aW9uICgpCisgICAgeworICAgICAgICBzdGFydFBy
ZXZpZXcoKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCJyZXN0YXJ0IHByZXZpZXciKTsKKyAgICAg
ICAgc2V0VGltZW91dChlbmRUZXN0LCAyNTAwKTsKKyAgICB9CisKKyAgICBzZXRUaW1lb3V0KHJl
cGxheUlmVGltZUlzUmVhY2hlZCwgbWlsbGlzZWNvbmRzICsgMTAwKTsKK30KKworZnVuY3Rpb24g
Z290U3RyZWFtRmFpbGVkKGVycm9yKQoreworICAgIGNvbnNvbGVXcml0ZSgiRmFpbGVkIHRvIGdl
dCBhY2Nlc3MgdG8gbG9jYWwgbWVkaWEuIEVycm9yIGNvZGUgd2FzICIgKyBlcnJvci5jb2RlKTsK
K30KKworZnVuY3Rpb24gcGxheVByZXZpZXcoKQoreworICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsK
KyAgICB0cnkgeworICAgICAgICBjb25zb2xlV3JpdGUoInJlcXVlc3QgYWNjZXNzIHRvIGxvY2Fs
IG1lZGlhIik7CisgICAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoInZpZGVvIiwg
Z290U3RyZWFtLCBnb3RTdHJlYW1GYWlsZWQpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
Y29uc29sZVdyaXRlKCJnZXRVc2VyTWVkaWEgZXJyb3IgIiArICIoIiArIGUubmFtZSArICIgLyAi
ICsgZS5tZXNzYWdlICsgIikiKTsKKyAgICB9CisKKyAgICB3YWl0Rm9yRXZlbnQoImVycm9yIik7
CisgICAgd2FpdEZvckV2ZW50KCJsb2Fkc3RhcnQiKTsKKyAgICB3YWl0Rm9yRXZlbnQoImxvYWRl
ZGRhdGEiKTsKKyAgICB3YWl0Rm9yRXZlbnQoImNhbnBsYXkiKTsKKyAgICB3YWl0Rm9yRXZlbnQo
ImNhbnBsYXl0aHJvdWdoIik7CisgICAgd2FpdEZvckV2ZW50KCJwbGF5Iik7Cit9CisKKzwvc2Ny
aXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InBsYXlQcmV2aWV3KCkiPgorPHZpZGVvIHdp
ZHRoPSIzMjAiIGhlaWdodD0iMjQwIiBhdXRvcGxheT0iYXV0b3BsYXkiPjwvdmlkZW8+Cis8L2Jv
ZHk+IAorPC9odG1sPiAKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vbWVkaWEvdmlkZW8tY2FwdHVyZS1wcmV2aWV3Lmh0bWwKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122064</attachid>
            <date>2012-01-11 11:53:31 -0800</date>
            <delta_ts>2012-01-11 16:27:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74882-20120111115330.patch</filename>
            <type>text/plain</type>
            <size>17349</size>
            <attacher>wjia</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEwNDcyOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI3IEBACisyMDEyLTAxLTExICBXZWkgSmlhICA8d2ppYUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgaW1wbGVtZW50IGxheW91dCB0ZXN0cyBmb3IgPHZpZGVvPiB3aXRoIG1lZGlhIHN0cmVh
bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ4ODIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpJc01vY2tTdHJlYW0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpyZXF1ZXN0VXNlck1lZGlhKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y2FuY2VsVXNlck1lZGlhUmVxdWVzdCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jazo6fldlYlVzZXJN
ZWRpYUNsaWVudE1vY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
OjpXZWJVc2VyTWVkaWFDbGllbnRNb2NrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6dXNlck1lZGlhQ2xp
ZW50KToKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojp1c2VyTWVkaWFDbGllbnRNb2NrKToKKyAgICAg
ICAgKFdlYlZpZXdIb3N0OjpjcmVhdGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJWaWV3SG9z
dDo6bWVkaWFTdHJlYW1VdGlsKToKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojp0ZXN0TWVkaWFTdHJl
YW1DbGllbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
Lmg6CisKIDIwMTItMDEtMTEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgd2Via2l0cHk6IGNsZWFuIHVwIHZlcnNpb24gZGV0ZWN0aW9uIGluIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5wb3J0CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLmd5cGkJKHJldmlzaW9uIDEwNDcyNCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDggQEAKICAgICAgICAg
ICAgICdjaHJvbWl1bS9XZWJQZXJtaXNzaW9ucy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9X
ZWJQcmVmZXJlbmNlcy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlByZWZlcmVuY2Vz
LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwJywK
KyAgICAgICAgICAgICdjaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
V2ViVmlld0hvc3QuaCcsCiAgICAgICAgIF0sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcAkocmV2aXNp
b24gMCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVu
dE1vY2suY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVudE1vY2suaCIKKworI2luY2x1ZGUgIldlYk1l
ZGlhU3RyZWFtUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJXZWJVc2VyTWVkaWFSZXF1ZXN0LmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJW
ZWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworUGFzc093blB0cjxXZWJVc2VyTWVkaWFDbGllbnRNb2NrPiBXZWJVc2VyTWVkaWFDbGll
bnRNb2NrOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViVXNlck1lZGlh
Q2xpZW50TW9jaygpKTsKK30KKworYm9vbCBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpJc01vY2tT
dHJlYW0oY29uc3QgV2ViVVJMJiB1cmwpCit7CisgICAgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
IGRlc2NyaXB0b3IoV2ViTWVkaWFTdHJlYW1SZWdpc3RyeTo6bG9va3VwTWVkaWFTdHJlYW1EZXNj
cmlwdG9yKHVybCkpOworICAgIGlmIChkZXNjcmlwdG9yLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+IHNvdXJjZVZl
Y3RvcjsKKyAgICBkZXNjcmlwdG9yLnNvdXJjZXMoc291cmNlVmVjdG9yKTsKKyAgICBXZWJTdHJp
bmcgdHJhY2tJZDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNvdXJjZVZlY3Rvci5zaXpl
KCk7ICsraSkgeworICAgICAgICBpZiAoc291cmNlVmVjdG9yW2ldLnR5cGUoKSA9PSBXZWJNZWRp
YVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvKSB7CisgICAgICAgICAgICB0cmFja0lkID0gc291cmNl
VmVjdG9yW2ldLmlkKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAg
ICByZXR1cm4gdHJhY2tJZC5lcXVhbHMoIm1lZGlhc3RyZWFtdGVzdCIpOworfQorCit2b2lkIFdl
YlVzZXJNZWRpYUNsaWVudE1vY2s6OnJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlh
UmVxdWVzdCYgc3RyZWFtUmVxdWVzdCwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291
cmNlPiYgc3RyZWFtU291cmNlVmVjdG9yKQoreworICAgIEFTU0VSVCghc3RyZWFtUmVxdWVzdC5p
c051bGwoKSk7CisKKyAgICBXZWJVc2VyTWVkaWFSZXF1ZXN0IHJlcXVlc3QgPSBzdHJlYW1SZXF1
ZXN0OworICAgIGNvbnN0IHNpemVfdCBzaXplID0gMTsKKyAgICBXZWJWZWN0b3I8V2ViTWVkaWFT
dHJlYW1Tb3VyY2U+IHNvdXJjZVZlY3RvcihzaXplKTsKKyAgICBXZWJTdHJpbmcgdHJhY2tJZCgi
bWVkaWFzdHJlYW10ZXN0Iik7CisgICAgV2ViU3RyaW5nIHRyYWNrTmFtZSgiVmlkZW9DYXB0dXJl
Iik7CisgICAgc291cmNlVmVjdG9yWzBdLmluaXRpYWxpemUodHJhY2tJZCwgV2ViTWVkaWFTdHJl
YW1Tb3VyY2U6OlR5cGVWaWRlbywgdHJhY2tOYW1lKTsKKyAgICByZXF1ZXN0LnJlcXVlc3RTdWNj
ZWVkZWQoc291cmNlVmVjdG9yKTsKK30KKwordm9pZCBXZWJVc2VyTWVkaWFDbGllbnRNb2NrOjpj
YW5jZWxVc2VyTWVkaWFSZXF1ZXN0KGNvbnN0IFdlYlVzZXJNZWRpYVJlcXVlc3QmKQoreworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgJKHJldmlzaW9u
IDApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJVc2VyTWVkaWFDbGllbnRN
b2NrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlVzZXJNZWRpYUNs
aWVudE1vY2tfaAorI2RlZmluZSBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKKworI2luY2x1ZGUg
IldlYlVzZXJNZWRpYUNsaWVudC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgor
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVS
TC5oIgorI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3Rlc3RfbWVkaWFfc3RyZWFtX2NsaWVudC5o
IgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrIDogcHVibGljIFdlYlVzZXJNZWRpYUNsaWVudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgd2Via2l0X3N1cHBvcnQ6Ok1l
ZGlhU3RyZWFtVXRpbCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViVXNlck1l
ZGlhQ2xpZW50TW9jaz4gY3JlYXRlKCk7CisgICAgfldlYlVzZXJNZWRpYUNsaWVudE1vY2soKSB7
IH0KKworICAgIGJvb2wgSXNNb2NrU3RyZWFtKGNvbnN0IFdlYlVSTCYpOworCisgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoY29uc3QgV2ViVXNlck1lZGlhUmVxdWVzdCYsIGNvbnN0
IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsVXNlck1lZGlhUmVxdWVzdChjb25zdCBXZWJVc2VyTWVkaWFSZXF1ZXN0Jik7CisKK3ByaXZh
dGU6CisgICAgV2ViVXNlck1lZGlhQ2xpZW50TW9jaygpIHsgfQorfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJVc2VyTWVkaWFDbGllbnRNb2NrX2gKClByb3BlcnR5
IGNoYW5nZXMgb246IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlVzZXJNZWRpYUNs
aWVudE1vY2suaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCShyZXZp
c2lvbiAxMDQ3MjQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTU5LDEyICs1OSwxNCBAQAog
I2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2UuaCIKICNpbmNsdWRlICJXZWJUZXh0Q2hlY2tp
bmdDb21wbGV0aW9uLmgiCiAjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nUmVzdWx0LmgiCisjaW5j
bHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRo
cmVhZC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTFJlcXVlc3QuaCIKICNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRl
ICJXZWJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZh
cy5oIgorI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3Rlc3RfbWVkaWFfc3RyZWFtX2NsaWVudC5o
IgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCiAKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtNjk0LDYgKzY5NiwxOCBAQCBXZWJEZXZpY2VPcmllbnRh
dGlvbkNsaWVudCogV2ViVmlld0hvc3Q6CiAgICAgcmV0dXJuIGRldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jaygpOwogfQogCitXZWJVc2VyTWVkaWFDbGllbnQqIFdlYlZpZXdIb3N0Ojp1c2VyTWVk
aWFDbGllbnQoKQoreworICAgIHJldHVybiB1c2VyTWVkaWFDbGllbnRNb2NrKCk7Cit9CisKK1dl
YlVzZXJNZWRpYUNsaWVudE1vY2sqIFdlYlZpZXdIb3N0Ojp1c2VyTWVkaWFDbGllbnRNb2NrKCkK
K3sKKyAgICBpZiAoIW1fdXNlck1lZGlhQ2xpZW50TW9jay5nZXQoKSkKKyAgICAgICAgbV91c2Vy
TWVkaWFDbGllbnRNb2NrID0gV2ViVXNlck1lZGlhQ2xpZW50TW9jazo6Y3JlYXRlKCk7CisgICAg
cmV0dXJuIG1fdXNlck1lZGlhQ2xpZW50TW9jay5nZXQoKTsKK30KKwogLy8gV2ViV2lkZ2V0Q2xp
ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKIHZvaWQgV2ViVmlld0hvc3Q6OmRpZEludmFsaWRhdGVSZWN0KGNvbnN0IFdlYlJl
Y3QmIHJlY3QpCkBAIC04NDUsNyArODU5LDcgQEAgV2ViUGx1Z2luKiBXZWJWaWV3SG9zdDo6Y3Jl
YXRlUGx1Z2luKFdlYgogCiBXZWJNZWRpYVBsYXllciogV2ViVmlld0hvc3Q6OmNyZWF0ZU1lZGlh
UGxheWVyKFdlYkZyYW1lKiBmcmFtZSwgV2ViTWVkaWFQbGF5ZXJDbGllbnQqIGNsaWVudCkKIHsK
LSAgICByZXR1cm4gd2Via2l0X3N1cHBvcnQ6OkNyZWF0ZU1lZGlhUGxheWVyKGZyYW1lLCBjbGll
bnQpOworICAgIHJldHVybiB3ZWJraXRfc3VwcG9ydDo6Q3JlYXRlTWVkaWFQbGF5ZXIoZnJhbWUs
IGNsaWVudCwgdGVzdE1lZGlhU3RyZWFtQ2xpZW50KCkpOwogfQogCiBXZWJBcHBsaWNhdGlvbkNh
Y2hlSG9zdCogV2ViVmlld0hvc3Q6OmNyZWF0ZUFwcGxpY2F0aW9uQ2FjaGVIb3N0KFdlYkZyYW1l
KiBmcmFtZSwgV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQqIGNsaWVudCkKQEAgLTE1NTQs
NiArMTU2OCwxOCBAQCB2b2lkIFdlYlZpZXdIb3N0OjpleGl0RnVsbFNjcmVlbk5vdygpCiAgICAg
d2ViVmlldygpLT5kaWRFeGl0RnVsbFNjcmVlbigpOwogfQogCit3ZWJraXRfc3VwcG9ydDo6TWVk
aWFTdHJlYW1VdGlsKiBXZWJWaWV3SG9zdDo6bWVkaWFTdHJlYW1VdGlsKCkKK3sKKyAgICByZXR1
cm4gdXNlck1lZGlhQ2xpZW50TW9jaygpOworfQorCit3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlh
U3RyZWFtQ2xpZW50KiBXZWJWaWV3SG9zdDo6dGVzdE1lZGlhU3RyZWFtQ2xpZW50KCkKK3sKKyAg
ICBpZiAoIW1fdGVzdE1lZGlhU3RyZWFtQ2xpZW50LmdldCgpKQorICAgICAgICBtX3Rlc3RNZWRp
YVN0cmVhbUNsaWVudCA9IGFkb3B0UHRyKG5ldyB3ZWJraXRfc3VwcG9ydDo6VGVzdE1lZGlhU3Ry
ZWFtQ2xpZW50KG1lZGlhU3RyZWFtVXRpbCgpKSk7CisgICAgcmV0dXJuIG1fdGVzdE1lZGlhU3Ry
ZWFtQ2xpZW50LmdldCgpOworfQorCiAvLyBQYWludGluZyBmdW5jdGlvbnMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHZvaWQgV2Vi
Vmlld0hvc3Q6OnVwZGF0ZVBhaW50UmVjdChjb25zdCBXZWJSZWN0JiByZWN0KQpJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCShyZXZpc2lvbiAxMDQ3
MjQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCkBAIC02MCwxMSArNjAsMTcgQEAgY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
OwogY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jazsKIGNsYXNzIFdlYlNwZWVjaElu
cHV0TGlzdGVuZXI7CiBjbGFzcyBXZWJVUkw7CitjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnRNb2Nr
Owogc3RydWN0IFdlYlJlY3Q7CiBzdHJ1Y3QgV2ViVVJMRXJyb3I7CiBzdHJ1Y3QgV2ViV2luZG93
RmVhdHVyZXM7CiB9CiAKK25hbWVzcGFjZSB3ZWJraXRfc3VwcG9ydCB7CitjbGFzcyBNZWRpYVN0
cmVhbVV0aWw7CitjbGFzcyBUZXN0TWVkaWFTdHJlYW1DbGllbnQ7Cit9CisKIGNsYXNzIFdlYlZp
ZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViU3BlbGxDaGVja0NsaWVudCwgcHVibGljIFdlYktp
dDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQsIHB1YmxpYyBO
YXZpZ2F0aW9uSG9zdCB7CiAgcHVibGljOgogICAgIFdlYlZpZXdIb3N0KFRlc3RTaGVsbCopOwpA
QCAtMTUwLDYgKzE1Niw3IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2Vi
U3AKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViR2VvbG9jYXRpb25DbGllbnQqIGdlb2xvY2F0aW9u
Q2xpZW50KCk7CiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlciog
c3BlZWNoSW5wdXRDb250cm9sbGVyKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRMaXN0ZW5lciopOwog
ICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogZGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQoKTsKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50
KiB1c2VyTWVkaWFDbGllbnQoKTsKIAogICAgIC8vIFdlYktpdDo6V2ViV2lkZ2V0Q2xpZW50CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEludmFsaWRhdGVSZWN0KGNvbnN0IFdlYktpdDo6V2ViUmVjdCYp
OwpAQCAtMjgwLDYgKzI4NywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzZXRTY3JvbGxSZWN0
KCk7CiAgICAgdm9pZCBkaXNjYXJkQmFja2luZ1N0b3JlKCk7CiAKKyAgICBXZWJLaXQ6OldlYlVz
ZXJNZWRpYUNsaWVudE1vY2sqIHVzZXJNZWRpYUNsaWVudE1vY2soKTsKKyAgICB3ZWJraXRfc3Vw
cG9ydDo6TWVkaWFTdHJlYW1VdGlsKiBtZWRpYVN0cmVhbVV0aWwoKTsKKyAgICB3ZWJraXRfc3Vw
cG9ydDo6VGVzdE1lZGlhU3RyZWFtQ2xpZW50KiB0ZXN0TWVkaWFTdHJlYW1DbGllbnQoKTsKKwog
ICAgIC8vIENhdXNlcyBuYXZpZ2F0aW9uIGFjdGlvbnMganVzdCBwcmludG91dCB0aGUgaW50ZW5k
ZWQgbmF2aWdhdGlvbiBpbnN0ZWFkCiAgICAgLy8gb2YgdGFraW5nIHlvdSB0byB0aGUgcGFnZS4g
VGhpcyBpcyB1c2VkIGZvciBjYXNlcyBsaWtlIG1haWx0bywgd2hlcmUgeW91CiAgICAgLy8gZG9u
J3QgYWN0dWFsbHkgd2FudCB0byBvcGVuIHRoZSBtYWlsIHByb2dyYW0uCkBAIC0zNTYsNiArMzY3
LDkgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8V2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNs
aWVudE1vY2s+IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOwogICAgIE93blB0cjxXZWJL
aXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s+IG1fc3BlZWNoSW5wdXRDb250cm9sbGVy
TW9jazsKIAorICAgIE93blB0cjxXZWJLaXQ6OldlYlVzZXJNZWRpYUNsaWVudE1vY2s+IG1fdXNl
ck1lZGlhQ2xpZW50TW9jazsKKyAgICBPd25QdHI8d2Via2l0X3N1cHBvcnQ6OlRlc3RNZWRpYVN0
cmVhbUNsaWVudD4gbV90ZXN0TWVkaWFTdHJlYW1DbGllbnQ7CisKICAgICBPd25QdHI8VGVzdE5h
dmlnYXRpb25Db250cm9sbGVyPiBtX25hdmlnYXRpb25Db250cm9sbGVyOwogCiAgICAgV2ViS2l0
OjpXZWJTdHJpbmcgbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nOwpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMTA0NzI4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTItMDEtMTEgIFdlaSBKaWEgIDx3amlhQGNocm9taXVtLm9yZz4K
KworICAgICAgICBpbXBsZW1lbnQgbGF5b3V0IHRlc3RzIGZvciA8dmlkZW8+IHdpdGggbWVkaWEg
c3RyZWFtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NDg4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vbWVkaWEvdmlkZW8tY2FwdHVyZS1wcmV2aWV3LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vbWVkaWEvdmlkZW8tY2FwdHVy
ZS1wcmV2aWV3Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTExICBKb2VsIFdlYmJlciAgPGpnd0Bn
b29nbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBzZXRDdXJyZW50VGltZSgpIGFuZCBwYXVz
ZUFuaW1hdGlvbnMoKSBvbiBTVkdTVkdFbGVtZW50CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXctZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL21lZGlhL3ZpZGVvLWNhcHR1
cmUtcHJldmlldy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXctZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACityZXF1ZXN0IGFjY2VzcyB0byBsb2NhbCBtZWRp
YQorZ290IGEgc3RyZWFtCitzdGFydCBwcmV2aWV3CitFVkVOVChsb2Fkc3RhcnQpCitFVkVOVChs
b2FkZWRkYXRhKQorRVZFTlQoY2FucGxheSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorRVZFTlQo
cGxheSkKK3Jlc3RhcnQgcHJldmlldworRVZFTlQobG9hZHN0YXJ0KQorRVZFTlQobG9hZGVkZGF0
YSkKK0VWRU5UKGNhbnBsYXkpCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK0VWRU5UKHBsYXkpCitF
TkQgT0YgVEVTVAorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9tZWRpYS92aWRlby1jYXB0dXJlLXByZXZpZXctZXhwZWN0ZWQudHh0Cl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL21lZGlhL3ZpZGVvLWNhcHR1cmUtcHJldmlldy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL21lZGlhL3ZpZGVvLWNhcHR1cmUtcHJl
dmlldy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
bWVkaWEvdmlkZW8tY2FwdHVyZS1wcmV2aWV3Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjYgQEAKKzwhRE9DVFlQRSBIVE1MIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0uLi8u
Li8uLi9tZWRpYS9tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Li4vLi4vLi4v
bWVkaWEvdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS4uLy4uLy4uL21lZGlh
L3ZpZGVvLXBsYXllZC5qcz48L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorCit2YXIgcHJldmlld1VSTCA9ICIiOwordmFyIGxvY2FsU3RyZWFtID0gbnVsbDsKKwor
ZnVuY3Rpb24gc3RhcnRQcmV2aWV3KCkKK3sKKyAgICB2aWRlby5zcmMgPSBwcmV2aWV3VVJMOwor
fQorCitmdW5jdGlvbiBnb3RTdHJlYW0oc3RyZWFtKQoreworICAgIGNvbnNvbGVXcml0ZSgiZ290
IGEgc3RyZWFtIik7CisgICAgcHJldmlld1VSTCA9IHdlYmtpdFVSTC5jcmVhdGVPYmplY3RVUkwo
c3RyZWFtKTsKKyAgICBzdGFydFByZXZpZXcoKTsKKyAgICBjb25zb2xlV3JpdGUoInN0YXJ0IHBy
ZXZpZXciKTsKKyAgICBsb2NhbFN0cmVhbSA9IHN0cmVhbTsKKyAgICB2YXIgcGxheVRpbWVJbk1p
bGxpc2Vjb25kID0gMjUwMDsKKyAgICB2YXIgcmVwbGF5SWZUaW1lSXNSZWFjaGVkID0gZnVuY3Rp
b24gKCkKKyAgICB7CisgICAgICAgIHN0YXJ0UHJldmlldygpOworICAgICAgICBjb25zb2xlV3Jp
dGUoInJlc3RhcnQgcHJldmlldyIpOworICAgICAgICBzZXRUaW1lb3V0KGVuZFRlc3QsIHBsYXlU
aW1lSW5NaWxsaXNlY29uZCk7CisgICAgfQorCisgICAgc2V0VGltZW91dChyZXBsYXlJZlRpbWVJ
c1JlYWNoZWQsIHBsYXlUaW1lSW5NaWxsaXNlY29uZCk7Cit9CisKK2Z1bmN0aW9uIGdvdFN0cmVh
bUZhaWxlZChlcnJvcikKK3sKKyAgICBjb25zb2xlV3JpdGUoIkZhaWxlZCB0byBnZXQgYWNjZXNz
IHRvIGxvY2FsIG1lZGlhLiBFcnJvciBjb2RlIHdhcyAiICsgZXJyb3IuY29kZSk7Cit9CisKK2Z1
bmN0aW9uIHBsYXlQcmV2aWV3KCkKK3sKKyAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisgICAgdHJ5
IHsKKyAgICAgICAgY29uc29sZVdyaXRlKCJyZXF1ZXN0IGFjY2VzcyB0byBsb2NhbCBtZWRpYSIp
OworICAgICAgICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCJ2aWRlbyIsIGdvdFN0cmVh
bSwgZ290U3RyZWFtRmFpbGVkKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGNvbnNvbGVX
cml0ZSgiZ2V0VXNlck1lZGlhIGVycm9yICIgKyAiKCIgKyBlLm5hbWUgKyAiIC8gIiArIGUubWVz
c2FnZSArICIpIik7CisgICAgfQorCisgICAgd2FpdEZvckV2ZW50KCJlcnJvciIpOworICAgIHdh
aXRGb3JFdmVudCgibG9hZHN0YXJ0Iik7CisgICAgd2FpdEZvckV2ZW50KCJsb2FkZWRkYXRhIik7
CisgICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5Iik7CisgICAgd2FpdEZvckV2ZW50KCJjYW5wbGF5
dGhyb3VnaCIpOworICAgIHdhaXRGb3JFdmVudCgicGxheSIpOworfQorCis8L3NjcmlwdD4KKzwv
aGVhZD4KKworPGJvZHkgb25sb2FkPSJwbGF5UHJldmlldygpIj4KKzx2aWRlbyB3aWR0aD0iMzIw
IiBoZWlnaHQ9IjI0MCIgYXV0b3BsYXk9ImF1dG9wbGF5Ij48L3ZpZGVvPgorPC9ib2R5PiAKKzwv
aHRtbD4gCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL21lZGlhL3ZpZGVvLWNhcHR1cmUtcHJldmlldy5odG1sCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2
bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
      

    </bug>

</bugzilla>