<?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>72319</bug_id>
          
          <creation_ts>2011-11-14 15:25:18 -0800</creation_ts>
          <short_desc>[Qt] Support customizing JS alert/confirm/prompt dialogs using QML</short_desc>
          <delta_ts>2011-11-18 06:35:49 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Marcelo de Oliveira Filho">cmarcelo</reporter>
          <assigned_to name="Caio Marcelo de Oliveira Filho">cmarcelo</assigned_to>
          <cc>hausmann</cc>
    
    <cc>menard</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>502381</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-14 15:25:18 -0800</bug_when>
    <thetext>[Qt] Support customizing JS alert/confirm/prompt dialogs using QML</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502384</commentid>
    <comment_count>1</comment_count>
      <attachid>115045</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-14 15:32:26 -0800</bug_when>
    <thetext>Created attachment 115045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502694</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-15 00:20:08 -0800</bug_when>
    <thetext>Great, this is _exactly_ what I had in mind.

Can we make it private first and use it for a while first, before we commit to it? (as a way to give us time to see if there are ways to make it even more convenient to use?)

But yeah, I don&apos;t have any to criticize about this patch. It&apos;s wonderful :). Let&apos;s let the others have a look at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502696</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-15 00:24:09 -0800</bug_when>
    <thetext>One thing I&apos;m curious about: Are there any browsers that support &quot;tab&quot; modal prompts?

It seems that chrome for example brings up an application modal dialog, but does any browser support &quot;per tab&quot; modal prompts, too?

Is it worth exploring that use-case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502895</commentid>
    <comment_count>4</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-15 07:20:32 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; One thing I&apos;m curious about: Are there any browsers that support &quot;tab&quot; modal prompts?

Firefox (https://developer.mozilla.org/en/Using_tab-modal_prompts). Chrome supports too (you can navigate in other tabs) but the dialog still remains on top. Safari doesn&apos;t support it.

I think it&apos;s a good idea. The first step IMHO would be making the synchronous call for the dialogs between webprocess and UI process async and see whether we can &quot;block&quot; just a web page. I proposed this sync-&gt;async change previously in IRC (to avoid our nested mainloop) but the reason wasn&apos;t strong enough. Maybe tied with per tab dialog support it will be more compelling.

I will create a bug for this tomorrow :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503748</commentid>
    <comment_count>5</comment_count>
      <attachid>115045</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-11-16 03:51:25 -0800</bug_when>
    <thetext>Comment on attachment 115045
Patch

I like it too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503782</commentid>
    <comment_count>6</comment_count>
      <attachid>115360</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-16 05:28:28 -0800</bug_when>
    <thetext>Created attachment 115360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503855</commentid>
    <comment_count>7</comment_count>
      <attachid>115360</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-11-16 07:18:13 -0800</bug_when>
    <thetext>Comment on attachment 115360
Patch

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

Overall I like the patch very much. Good job caio!

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:246
&gt; +    confirmItem-&gt;setProperty(&quot;message&quot;, message);

We&apos;ll need to document that at some point at it is totally obscure for the user.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h:159
&gt; +};

Even if I know our C++ headers are private, does that need to be here? Let&apos;s try to keep it clean at least so that if people use webkit-private they don&apos;t end up with our implementation details defined/exposed (well you may say that our private is implementation details of QML items but you got my point).

&gt; Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_javaScriptDialogs.qml:68
&gt; +    }

That&apos;s cool to use, and let people with full customization capabilities.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504271</commentid>
    <comment_count>8</comment_count>
      <attachid>115452</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-16 14:41:33 -0800</bug_when>
    <thetext>Created attachment 115452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504279</commentid>
    <comment_count>9</comment_count>
      <attachid>115360</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-16 14:45:25 -0800</bug_when>
    <thetext>Comment on attachment 115360
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:246
&gt;&gt; +    confirmItem-&gt;setProperty(&quot;message&quot;, message);
&gt; 
&gt; We&apos;ll need to document that at some point at it is totally obscure for the user.

This is still a private feature and with the API still in-flux. I prefer we defer documentation until it stabilizes. At this point I think a good coverage in the QML tests help more.

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h:159
&gt;&gt; +};
&gt; 
&gt; Even if I know our C++ headers are private, does that need to be here? Let&apos;s try to keep it clean at least so that if people use webkit-private they don&apos;t end up with our implementation details defined/exposed (well you may say that our private is implementation details of QML items but you got my point).

Agreed, and fixed. Since DialogRunner has grown a bit, I moved it to its own file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504285</commentid>
    <comment_count>10</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-16 14:49:55 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=115452) [details]
&gt; Patch

This new version reflects also the feedback from Tor-Arne in IRC today. He pointed out that ideally we should expose &quot;models&quot; to the dialogs, instead of setting properties.

I think the new patch fits more in this idea (by exposing things in the QDeclarativeContext used to create the dialog), and take it a step further: we expose slots to be called instead of expecting the dialog to define certain signals. This avoids a lot of &quot;boilerplate&quot; in the code for dialog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504835</commentid>
    <comment_count>11</comment_count>
      <attachid>115587</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-17 07:28:54 -0800</bug_when>
    <thetext>Created attachment 115587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504836</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-17 07:31:10 -0800</bug_when>
    <thetext>Attachment 115587 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:24:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504887</commentid>
    <comment_count>13</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-17 08:33:16 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Attachment 115587 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
&gt; 
&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:24:  Alphabetical sorting problem.  [build/include_order] [4]
&gt; Total errors found: 1 in 12 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Ignore this style error. Created a patch for this https://bugs.webkit.org/show_bug.cgi?id=72620</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504929</commentid>
    <comment_count>14</comment_count>
      <attachid>115607</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-17 09:49:22 -0800</bug_when>
    <thetext>Created attachment 115607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504932</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-17 09:51:39 -0800</bug_when>
    <thetext>Attachment 115607 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:24:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505090</commentid>
    <comment_count>16</comment_count>
      <attachid>115607</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-17 12:21:55 -0800</bug_when>
    <thetext>Comment on attachment 115607
Patch

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

Great start :) Let&apos;s get the experiment in.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h:118
&gt; +    QScopedPointer&lt;QDeclarativeComponent&gt; alertDialog;
&gt; +    QScopedPointer&lt;QDeclarativeComponent&gt; confirmDialog;
&gt; +    QScopedPointer&lt;QDeclarativeComponent&gt; promptDialog;

Are you sure about the use of QScopedPointer here? In QDeclarative I see that for example model delegates aren&apos;t stored with implied ownership transfer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505736</commentid>
    <comment_count>17</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-18 06:34:43 -0800</bug_when>
    <thetext>Committed r100767: &lt;http://trac.webkit.org/changeset/100767&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505738</commentid>
    <comment_count>18</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-18 06:35:49 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Are you sure about the use of QScopedPointer here? In QDeclarative I see that for example model delegates aren&apos;t stored with implied ownership transfer.

Thanks for catching that. Landed without the scoped pointer, following same approach as other QML elements.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115045</attachid>
            <date>2011-11-14 15:32:26 -0800</date>
            <delta_ts>2011-11-16 05:28:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72319-20111114203301.patch</filename>
            <type>text/plain</type>
            <size>18712</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjY4Yzk4MmEwMWUzODhh
ZWRjMjYyNzhhMWQ5NWNjNWM4NWZkZjQ3YS4uZDdjNGZmMDdhNzBhOTZlOWZjZjk0MjYxMGM1Yjk1
MTYyODBhMWE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDExLTExLTE0ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XSBTdXBwb3J0IGN1c3RvbWl6aW5nIEpTIGFsZXJ0L2NvbmZpcm0vcHJv
bXB0IGRpYWxvZ3MgdXNpbmcgUU1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MjMxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZHMgYWxlcnREaWFsb2csIGNvbmZpcm1EaWFsb2cgYW5kIHByb21wdERp
YWxvZyBwcm9wZXJ0aWVzIHRvCisgICAgICAgIFFRdWlja1dlYlZpZXcuIFRoZXNlIGFyZSBRTUwg
Y29tcG9uZW50cyB0aGF0IGFyZSBjcmVhdGVkIGJ5IHRoZSB3ZWJ2aWV3IHdoZW4KKyAgICAgICAg
dGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb24gaXMgY2FsbGVkIGluIEpTLgorCisgICAgICAgIFRo
aXMgY29tbWl0IHJlbW92ZXMgdGhlIG9sZCBjb2RlIGZvciBzdXBwb3J0aW5nIFFXaWRnZXQgYnVp
bHRpbiBkaWFsb2dzLiBUaGUgY29kZQorICAgICAgICB3YXNuJ3Qgd29ya2luZyBwcm9wZXJseSAo
Y2xvc2luZyBhbnkgZGlhbG9nIHdhcyBjbG9zaW5nIHRoZSBhcHAgYWZ0ZXIgUVdpbmRvdworICAg
ICAgICByZWZhY3RvcmluZyBpbiBRdDUpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpjcmVhdGVJ
dGVtRnJvbURpYWxvZyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6cnVuSmF2YVNj
cmlwdEFsZXJ0KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpydW5KYXZhU2NyaXB0
Q29uZmlybSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6cnVuSmF2YVNjcmlwdFBy
b21wdCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3OjphbGVydERpYWxvZyk6CisgICAgICAgIChR
UXVpY2tXZWJWaWV3OjpzZXRBbGVydERpYWxvZyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3Ojpj
b25maXJtRGlhbG9nKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXc6OnNldENvbmZpcm1EaWFsb2cp
OgorICAgICAgICAoUVF1aWNrV2ViVmlldzo6cHJvbXB0RGlhbG9nKToKKyAgICAgICAgKFFRdWlj
a1dlYlZpZXc6OnNldFByb21wdERpYWxvZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3
X3AuaDoKKyAgICAgICAgKERpYWxvZ1J1bm5lcjo6RGlhbG9nUnVubmVyKToKKyAgICAgICAgKERp
YWxvZ1J1bm5lcjo6d2FzQWNjZXB0ZWQpOgorICAgICAgICAoRGlhbG9nUnVubmVyOjpyZXN1bHQp
OgorICAgICAgICAoRGlhbG9nUnVubmVyOjpvbkFjY2VwdGVkKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2phdmFTY3JpcHREaWFsb2dzLnFt
bDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21t
b24vYWxlcnQuaHRtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9x
bWx0ZXN0cy9jb21tb24vY29uZmlybS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9wcm9tcHQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5wcm86CisKIDIwMTEt
MTEtMTQgIFZpYXRjaGVzbGF2IE9zdGFwZW5rbyAgPG9zdGFwZW5rby52aWF0Y2hlc2xhdkBub2tp
YS5jb20+CiAKICAgICAgICAgSW50ZXJtaXR0ZW50IGFzc2VydHMgaW4gVGV4dHVyZU1hcHBlckdM
OjpiaW5kU3VyZmFjZSBvbiBNaW5pQnJvd3NlciBzdGFydHVwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCA2ZDBhNmM2MmQ3MGU3
MTVmZmIwMmY1YjRiZTc3ZTM1ZmI1ZmZkYzRhLi4yMmJlNGY3MDlkNDFmOWY5ZjY2M2RjZTFlYzFj
OTQ5ODU3OTJjZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlldy5jcHAKQEAgLTMyLDkgKzMyLDkgQEAKICNpbmNsdWRlICJxd2VicHJlZmVy
ZW5jZXNfcC5oIgogCiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9RUXVpY2tDYW52YXM+CisjaW5j
bHVkZSA8UXREZWNsYXJhdGl2ZS9RUXVpY2tJdGVtPgogI2luY2x1ZGUgPFF0V2lkZ2V0cy9RRmls
ZURpYWxvZz4KICNpbmNsdWRlIDxRdFdpZGdldHMvUUlucHV0RGlhbG9nPgotI2luY2x1ZGUgPFF0
V2lkZ2V0cy9RTWVzc2FnZUJveD4KICNpbmNsdWRlIDxXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVy
Lmg+CiAKIFFRdWlja1dlYlZpZXdQcml2YXRlOjpRUXVpY2tXZWJWaWV3UHJpdmF0ZSgpCkBAIC0y
MDIsNDggKzIwMiw3OSBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VWaWV3
cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcgogICAgIHVwZGF0ZVZpZXdw
b3J0Q29uc3RyYWludHMoKTsKIH0KIAorUVF1aWNrSXRlbSogUVF1aWNrV2ViVmlld1ByaXZhdGU6
OmNyZWF0ZUl0ZW1Gcm9tRGlhbG9nKFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogY29tcG9uZW50KQor
eworICAgIFFPYmplY3QqIG9iamVjdCA9IGNvbXBvbmVudC0+Y3JlYXRlKGNvbXBvbmVudC0+Y3Jl
YXRpb25Db250ZXh0KCkpOworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIFFRdWlja0l0ZW0qIGl0ZW0gPSBxb2JqZWN0X2Nhc3Q8UVF1aWNrSXRlbSo+KG9iamVjdCk7
CisgICAgaWYgKCFpdGVtKSB7CisgICAgICAgIGRlbGV0ZSBvYmplY3Q7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKKyAgICBpdGVtLT5zZXRQYXJl
bnRJdGVtKHEpOworICAgIHJldHVybiBpdGVtOworfQogCiB2b2lkIFFRdWlja1dlYlZpZXdQcml2
YXRlOjpydW5KYXZhU2NyaXB0QWxlcnQoY29uc3QgUVN0cmluZyYgYWxlcnRUZXh0KQogewotI2lm
bmRlZiBRVF9OT19NRVNTQUdFQk9YCi0gICAgUV9RKFFRdWlja1dlYlZpZXcpOwotICAgIGNvbnN0
IFFTdHJpbmcgdGl0bGUgPSBRT2JqZWN0Ojp0cigiSmF2YVNjcmlwdCBBbGVydCAtICUxIikuYXJn
KHEtPnVybCgpLmhvc3QoKSk7CisgICAgaWYgKCFhbGVydERpYWxvZykKKyAgICAgICAgcmV0dXJu
OworCisgICAgT3duUHRyPFFRdWlja0l0ZW0+IGRpYWxvZ0l0ZW0gPSBhZG9wdFB0cihjcmVhdGVJ
dGVtRnJvbURpYWxvZyhhbGVydERpYWxvZy5kYXRhKCkpKTsKKyAgICBpZiAoIWRpYWxvZ0l0ZW0p
CisgICAgICAgIHJldHVybjsKKyAgICBkaWFsb2dJdGVtLT5zZXRQcm9wZXJ0eSgibWVzc2FnZSIs
IGFsZXJ0VGV4dCk7CisKICAgICBkaXNhYmxlTW91c2VFdmVudHMoKTsKLSAgICBRTWVzc2FnZUJv
eDo6aW5mb3JtYXRpb24oMCwgdGl0bGUsIGVzY2FwZUh0bWwoYWxlcnRUZXh0KSwgUU1lc3NhZ2VC
b3g6Ok9rKTsKKyAgICBEaWFsb2dSdW5uZXIgZGlhbG9nUnVubmVyKGRpYWxvZ0l0ZW0uZ2V0KCks
IERpYWxvZ1J1bm5lcjo6QWxlcnREaWFsb2cpOworICAgIGRpYWxvZ1J1bm5lci5leGVjKCk7CiAg
ICAgZW5hYmxlTW91c2VFdmVudHMoKTsKLSNlbHNlCi0gICAgUV9VTlVTRUQoYWxlcnRUZXh0KTsK
LSNlbmRpZgogfQogCiBib29sIFFRdWlja1dlYlZpZXdQcml2YXRlOjpydW5KYXZhU2NyaXB0Q29u
ZmlybShjb25zdCBRU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsK
LSNpZm5kZWYgUVRfTk9fTUVTU0FHRUJPWAotICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKLSAgICBj
b25zdCBRU3RyaW5nIHRpdGxlID0gUU9iamVjdDo6dHIoIkphdmFTY3JpcHQgQ29uZmlybSAtICUx
IikuYXJnKHEtPnVybCgpLmhvc3QoKSk7CisgICAgaWYgKCFjb25maXJtRGlhbG9nKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIE93blB0cjxRUXVpY2tJdGVtPiBjb25maXJtSXRlbSA9IGFk
b3B0UHRyKGNyZWF0ZUl0ZW1Gcm9tRGlhbG9nKGNvbmZpcm1EaWFsb2cuZGF0YSgpKSk7CisgICAg
aWYgKCFjb25maXJtSXRlbSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY29uZmlybUl0ZW0t
PnNldFByb3BlcnR5KCJtZXNzYWdlIiwgbWVzc2FnZSk7CisKICAgICBkaXNhYmxlTW91c2VFdmVu
dHMoKTsKLSAgICByZXN1bHQgPSBRTWVzc2FnZUJveDo6WWVzID09IFFNZXNzYWdlQm94OjppbmZv
cm1hdGlvbigwLCB0aXRsZSwgZXNjYXBlSHRtbChtZXNzYWdlKSwgUU1lc3NhZ2VCb3g6Olllcywg
UU1lc3NhZ2VCb3g6Ok5vKTsKKyAgICBEaWFsb2dSdW5uZXIgZGlhbG9nUnVubmVyKGNvbmZpcm1J
dGVtLmdldCgpLCBEaWFsb2dSdW5uZXI6OkNvbmZpcm1EaWFsb2cpOworICAgIGRpYWxvZ1J1bm5l
ci5leGVjKCk7CiAgICAgZW5hYmxlTW91c2VFdmVudHMoKTsKLSNlbHNlCi0gICAgUV9VTlVTRUQo
bWVzc2FnZSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gcmVzdWx0OworCisgICAgcmV0dXJuIGRpYWxv
Z1J1bm5lci53YXNBY2NlcHRlZCgpOwogfQogCiBRU3RyaW5nIFFRdWlja1dlYlZpZXdQcml2YXRl
OjpydW5KYXZhU2NyaXB0UHJvbXB0KGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFFTdHJp
bmcmIGRlZmF1bHRWYWx1ZSwgYm9vbCYgb2spCiB7Ci0jaWZuZGVmIFFUX05PX0lOUFVURElBTE9H
Ci0gICAgUV9RKFFRdWlja1dlYlZpZXcpOwotICAgIGNvbnN0IFFTdHJpbmcgdGl0bGUgPSBRT2Jq
ZWN0Ojp0cigiSmF2YVNjcmlwdCBQcm9tcHQgLSAlMSIpLmFyZyhxLT51cmwoKS5ob3N0KCkpOwor
ICAgIGlmICghcHJvbXB0RGlhbG9nKSB7CisgICAgICAgIG9rID0gdHJ1ZTsKKyAgICAgICAgcmV0
dXJuIGRlZmF1bHRWYWx1ZTsKKyAgICB9CisKKyAgICBPd25QdHI8UVF1aWNrSXRlbT4gcHJvbXB0
SXRlbSA9IGFkb3B0UHRyKGNyZWF0ZUl0ZW1Gcm9tRGlhbG9nKHByb21wdERpYWxvZy5kYXRhKCkp
KTsKKyAgICBpZiAoIXByb21wdEl0ZW0pIHsKKyAgICAgICAgb2sgPSB0cnVlOworICAgICAgICBy
ZXR1cm4gZGVmYXVsdFZhbHVlOworICAgIH0KKyAgICBwcm9tcHRJdGVtLT5zZXRQcm9wZXJ0eSgi
bWVzc2FnZSIsIG1lc3NhZ2UpOworICAgIHByb21wdEl0ZW0tPnNldFByb3BlcnR5KCJkZWZhdWx0
VmFsdWUiLCBkZWZhdWx0VmFsdWUpOworCiAgICAgZGlzYWJsZU1vdXNlRXZlbnRzKCk7Ci0gICAg
UVN0cmluZyByZXN1bHQgPSBRSW5wdXREaWFsb2c6OmdldFRleHQoMCwgdGl0bGUsIGVzY2FwZUh0
bWwobWVzc2FnZSksIFFMaW5lRWRpdDo6Tm9ybWFsLCBkZWZhdWx0VmFsdWUsICZvayk7CisgICAg
RGlhbG9nUnVubmVyIGRpYWxvZ1J1bm5lcihwcm9tcHRJdGVtLmdldCgpLCBEaWFsb2dSdW5uZXI6
OlByb21wdERpYWxvZyk7CisgICAgZGlhbG9nUnVubmVyLmV4ZWMoKTsKICAgICBlbmFibGVNb3Vz
ZUV2ZW50cygpOwotICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgIFFfVU5VU0VEKG1lc3Nh
Z2UpOwotICAgIHJldHVybiBkZWZhdWx0VmFsdWU7Ci0jZW5kaWYKKworICAgIG9rID0gZGlhbG9n
UnVubmVyLndhc0FjY2VwdGVkKCk7CisgICAgcmV0dXJuIGRpYWxvZ1J1bm5lci5yZXN1bHQoKTsK
IH0KIAogdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Y2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lclJlZiwgY29uc3QgUVN0cmluZ0xpc3QmIHNlbGVjdGVk
RmlsZU5hbWVzLCBRdFZpZXdJbnRlcmZhY2U6OkZpbGVDaG9vc2VyVHlwZSB0eXBlKQpAQCAtMzg0
LDYgKzQxNSw1MSBAQCBRUXVpY2tXZWJQYWdlKiBRUXVpY2tXZWJWaWV3OjpwYWdlKCkKICAgICBy
ZXR1cm4gZC0+cGFnZVZpZXcuZGF0YSgpOwogfQogCitRRGVjbGFyYXRpdmVDb21wb25lbnQqIFFR
dWlja1dlYlZpZXc6OmFsZXJ0RGlhbG9nKCkgY29uc3QKK3sKKyAgICBRX0QoY29uc3QgUVF1aWNr
V2ViVmlldyk7CisgICAgcmV0dXJuIGQtPmFsZXJ0RGlhbG9nLmRhdGEoKTsKK30KKwordm9pZCBR
UXVpY2tXZWJWaWV3OjpzZXRBbGVydERpYWxvZyhRRGVjbGFyYXRpdmVDb21wb25lbnQqIGFsZXJ0
RGlhbG9nKQoreworICAgIFFfRChRUXVpY2tXZWJWaWV3KTsKKyAgICBpZiAoZC0+YWxlcnREaWFs
b2cuZGF0YSgpID09IGFsZXJ0RGlhbG9nKQorICAgICAgICByZXR1cm47CisgICAgZC0+YWxlcnRE
aWFsb2cucmVzZXQoYWxlcnREaWFsb2cpOworICAgIGVtaXQgYWxlcnREaWFsb2dDaGFuZ2VkKCk7
Cit9CisKK1FEZWNsYXJhdGl2ZUNvbXBvbmVudCogUVF1aWNrV2ViVmlldzo6Y29uZmlybURpYWxv
ZygpIGNvbnN0Cit7CisgICAgUV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOworICAgIHJldHVybiBk
LT5jb25maXJtRGlhbG9nLmRhdGEoKTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3OjpzZXRDb25m
aXJtRGlhbG9nKFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogY29uZmlybURpYWxvZykKK3sKKyAgICBR
X0QoUVF1aWNrV2ViVmlldyk7CisgICAgaWYgKGQtPmNvbmZpcm1EaWFsb2cuZGF0YSgpID09IGNv
bmZpcm1EaWFsb2cpCisgICAgICAgIHJldHVybjsKKyAgICBkLT5jb25maXJtRGlhbG9nLnJlc2V0
KGNvbmZpcm1EaWFsb2cpOworICAgIGVtaXQgY29uZmlybURpYWxvZ0NoYW5nZWQoKTsKK30KKwor
UURlY2xhcmF0aXZlQ29tcG9uZW50KiBRUXVpY2tXZWJWaWV3Ojpwcm9tcHREaWFsb2coKSBjb25z
dAoreworICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3KTsKKyAgICByZXR1cm4gZC0+cHJvbXB0
RGlhbG9nLmRhdGEoKTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3OjpzZXRQcm9tcHREaWFsb2co
UURlY2xhcmF0aXZlQ29tcG9uZW50KiBwcm9tcHREaWFsb2cpCit7CisgICAgUV9EKFFRdWlja1dl
YlZpZXcpOworICAgIGlmIChkLT5wcm9tcHREaWFsb2cuZGF0YSgpID09IHByb21wdERpYWxvZykK
KyAgICAgICAgcmV0dXJuOworICAgIGQtPnByb21wdERpYWxvZy5yZXNldChwcm9tcHREaWFsb2cp
OworICAgIGVtaXQgcHJvbXB0RGlhbG9nQ2hhbmdlZCgpOworfQorCiB2b2lkIFFRdWlja1dlYlZp
ZXc6OmxvYWQoY29uc3QgUVVybCYgdXJsKQogewogICAgIFFfRChRUXVpY2tXZWJWaWV3KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmgKaW5kZXgg
ZjhiYTgxN2ExZjM3NTE5NDM1NDlhM2NlMDA4ZjEyODU2ODkzNjA3My4uMjJkOTAyYjY0NWI4ZDU3
M2Q5ZmE0NWIzNjhjMDg2YTdhNGE2YWZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJx
d2Via2l0Z2xvYmFsLmgiCiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xcXVpY2tpdGVtLmg+CiAK
K2NsYXNzIFFEZWNsYXJhdGl2ZUNvbXBvbmVudDsKIGNsYXNzIFFRdWlja1dlYlBhZ2U7CiBjbGFz
cyBRUXVpY2tXZWJWaWV3UHJpdmF0ZTsKIGNsYXNzIFFXZWJEb3dubG9hZEl0ZW07CkBAIC01Nyw2
ICs1OCw5IEBAIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFRdWlja1dlYlZpZXcgOiBwdWJsaWMgUVF1
aWNrSXRlbSB7CiAgICAgUV9QUk9QRVJUWShib29sIGNhblJlbG9hZCBSRUFEIGNhblJlbG9hZCBO
T1RJRlkgbmF2aWdhdGlvblN0YXRlQ2hhbmdlZCBGSU5BTCkKICAgICBRX1BST1BFUlRZKFFXZWJQ
cmVmZXJlbmNlcyogcHJlZmVyZW5jZXMgUkVBRCBwcmVmZXJlbmNlcyBDT05TVEFOVCBGSU5BTCkK
ICAgICBRX1BST1BFUlRZKFFRdWlja1dlYlBhZ2UqIHBhZ2UgUkVBRCBwYWdlIENPTlNUQU5UIEZJ
TkFMKQorICAgIFFfUFJPUEVSVFkoUURlY2xhcmF0aXZlQ29tcG9uZW50KiBhbGVydERpYWxvZyBS
RUFEIGFsZXJ0RGlhbG9nIFdSSVRFIHNldEFsZXJ0RGlhbG9nIE5PVElGWSBhbGVydERpYWxvZ0No
YW5nZWQpCisgICAgUV9QUk9QRVJUWShRRGVjbGFyYXRpdmVDb21wb25lbnQqIGNvbmZpcm1EaWFs
b2cgUkVBRCBjb25maXJtRGlhbG9nIFdSSVRFIHNldENvbmZpcm1EaWFsb2cgTk9USUZZIGNvbmZp
cm1EaWFsb2dDaGFuZ2VkKQorICAgIFFfUFJPUEVSVFkoUURlY2xhcmF0aXZlQ29tcG9uZW50KiBw
cm9tcHREaWFsb2cgUkVBRCBwcm9tcHREaWFsb2cgV1JJVEUgc2V0UHJvbXB0RGlhbG9nIE5PVElG
WSBwcm9tcHREaWFsb2dDaGFuZ2VkKQogICAgIFFfRU5VTVMoTmF2aWdhdGlvblBvbGljeSkKICAg
ICBRX0VOVU1TKEVycm9yVHlwZSkKIHB1YmxpYzoKQEAgLTg3LDYgKzkxLDE1IEBAIHB1YmxpYzoK
ICAgICBRV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzKCkgY29uc3Q7CiAgICAgUVF1aWNrV2Vi
UGFnZSogcGFnZSgpOwogCisgICAgUURlY2xhcmF0aXZlQ29tcG9uZW50KiBhbGVydERpYWxvZygp
IGNvbnN0OworICAgIHZvaWQgc2V0QWxlcnREaWFsb2coUURlY2xhcmF0aXZlQ29tcG9uZW50Kik7
CisKKyAgICBRRGVjbGFyYXRpdmVDb21wb25lbnQqIGNvbmZpcm1EaWFsb2coKSBjb25zdDsKKyAg
ICB2b2lkIHNldENvbmZpcm1EaWFsb2coUURlY2xhcmF0aXZlQ29tcG9uZW50Kik7CisKKyAgICBR
RGVjbGFyYXRpdmVDb21wb25lbnQqIHByb21wdERpYWxvZygpIGNvbnN0OworICAgIHZvaWQgc2V0
UHJvbXB0RGlhbG9nKFFEZWNsYXJhdGl2ZUNvbXBvbmVudCopOworCiBwdWJsaWMgUV9TTE9UUzoK
ICAgICB2b2lkIGxvYWQoY29uc3QgUVVybCYpOwogICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3Qg
UVN0cmluZyYpOwpAQCAtMTA5LDYgKzEyMiw5IEBAIFFfU0lHTkFMUzoKICAgICB2b2lkIGxpbmtI
b3ZlcmVkKGNvbnN0IFFVcmwmIHVybCwgY29uc3QgUVN0cmluZyYgdGl0bGUpOwogICAgIHZvaWQg
dmlld01vZGVDaGFuZ2VkKCk7CiAgICAgdm9pZCBuYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkKCk7Cisg
ICAgdm9pZCBhbGVydERpYWxvZ0NoYW5nZWQoKTsKKyAgICB2b2lkIGNvbmZpcm1EaWFsb2dDaGFu
Z2VkKCk7CisgICAgdm9pZCBwcm9tcHREaWFsb2dDaGFuZ2VkKCk7CiAKIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIHZvaWQgZ2VvbWV0cnlDaGFuZ2VkKGNvbnN0IFFSZWN0RiYsIGNvbnN0IFFSZWN0
RiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3
ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
d19wLmgKaW5kZXggMTg4M2M3YjdmZTc4ZDExMmFiYzM5YzNhM2JlNzQzMzNkMTQxOTBmZC4uOGUw
M2YyNDU3YjY5MTRlMzVhNjE0MWVmMjFkZWQwN2U3YjJiNzRhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCkBAIC0yOCw4ICsyOCwx
MCBAQAogCiAjaW5jbHVkZSAicXF1aWNrd2Vidmlldy5oIgogCisjaW5jbHVkZSA8UXRDb3JlL1FF
dmVudExvb3A+CiAjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+CiAjaW5jbHVkZSA8UXRDb3JlL1FT
Y29wZWRQb2ludGVyPgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvUURlY2xhcmF0aXZlQ29tcG9u
ZW50PgogCiBjbGFzcyBRdFdlYlBhZ2VQcm94eTsKIApAQCAtNTYsNiArNTgsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoKTsKICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0
Q29uc3RyYWludHMoKTsKIAorICAgIFFRdWlja0l0ZW0qIGNyZWF0ZUl0ZW1Gcm9tRGlhbG9nKFFE
ZWNsYXJhdGl2ZUNvbXBvbmVudCopOworCiAgICAgc3RhdGljIFFRdWlja1dlYlZpZXdQcml2YXRl
KiBnZXQoUVF1aWNrV2ViVmlldyogdmlldykKICAgICB7CiAgICAgICAgIHJldHVybiB2aWV3LT5k
X3B0ci5kYXRhKCk7CkBAIC04OSw5ICs5Myw1NCBAQCBwcml2YXRlOgogICAgIFFRdWlja1dlYlZp
ZXcqIHFfcHRyOwogICAgIFFTY29wZWRQb2ludGVyPFF0V2ViUGFnZVByb3h5PiBwYWdlUHJveHk7
CiAKKyAgICBRU2NvcGVkUG9pbnRlcjxRRGVjbGFyYXRpdmVDb21wb25lbnQ+IGFsZXJ0RGlhbG9n
OworICAgIFFTY29wZWRQb2ludGVyPFFEZWNsYXJhdGl2ZUNvbXBvbmVudD4gY29uZmlybURpYWxv
ZzsKKyAgICBRU2NvcGVkUG9pbnRlcjxRRGVjbGFyYXRpdmVDb21wb25lbnQ+IHByb21wdERpYWxv
ZzsKKwogICAgIGJvb2wgdXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyOwogICAgIFFGaWxl
RGlhbG9nKiBmaWxlRGlhbG9nOwogICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgb3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXI7CiB9OwogCitjbGFzcyBEaWFsb2dSdW5uZXIgOiBwdWJsaWMg
UUV2ZW50TG9vcCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBlbnVtIERpYWxvZ1R5cGUg
eworICAgICAgICBBbGVydERpYWxvZywKKyAgICAgICAgQ29uZmlybURpYWxvZywKKyAgICAgICAg
UHJvbXB0RGlhbG9nCisgICAgfTsKKyAgICBEaWFsb2dSdW5uZXIoUU9iamVjdCogaXRlbSwgRGlh
bG9nVHlwZSB0eXBlKQorICAgICAgICA6IFFFdmVudExvb3AoKQorICAgICAgICAsIG1fd2FzQWNj
ZXB0ZWQoZmFsc2UpCisgICAgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2Fz
ZSBBbGVydERpYWxvZzoKKyAgICAgICAgICAgIGNvbm5lY3QoaXRlbSwgU0lHTkFMKGRpc21pc3Nl
ZCgpKSwgU0xPVChxdWl0KCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENv
bmZpcm1EaWFsb2c6CisgICAgICAgICAgICBjb25uZWN0KGl0ZW0sIFNJR05BTChhY2NlcHRlZCgp
KSwgU0xPVChvbkFjY2VwdGVkKCkpKTsKKyAgICAgICAgICAgIGNvbm5lY3QoaXRlbSwgU0lHTkFM
KGFjY2VwdGVkKCkpLCBTTE9UKHF1aXQoKSkpOworICAgICAgICAgICAgY29ubmVjdChpdGVtLCBT
SUdOQUwocmVqZWN0ZWQoKSksIFNMT1QocXVpdCgpKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBQcm9tcHREaWFsb2c6CisgICAgICAgICAgICBjb25uZWN0KGl0ZW0sIFNJR05B
TChhY2NlcHRlZChRU3RyaW5nKSksIFNMT1Qob25BY2NlcHRlZChRU3RyaW5nKSkpOworICAgICAg
ICAgICAgY29ubmVjdChpdGVtLCBTSUdOQUwoYWNjZXB0ZWQoUVN0cmluZykpLCBTTE9UKHF1aXQo
KSkpOworICAgICAgICAgICAgY29ubmVjdChpdGVtLCBTSUdOQUwocmVqZWN0ZWQoKSksIFNMT1Qo
cXVpdCgpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBib29s
IHdhc0FjY2VwdGVkKCkgY29uc3QgeyByZXR1cm4gbV93YXNBY2NlcHRlZDsgfQorICAgIFFTdHJp
bmcgcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHQ7IH0KK3B1YmxpYyBzbG90czoKKyAg
ICB2b2lkIG9uQWNjZXB0ZWQoY29uc3QgUVN0cmluZyYgcmVzdWx0ID0gUVN0cmluZygpKQorICAg
IHsKKyAgICAgICAgbV93YXNBY2NlcHRlZCA9IHRydWU7CisgICAgICAgIG1fcmVzdWx0ID0gcmVz
dWx0OworICAgIH0KK3ByaXZhdGU6CisgICAgUVN0cmluZyBtX3Jlc3VsdDsKKyAgICBib29sIG1f
d2FzQWNjZXB0ZWQ7Cit9OworCiAjZW5kaWYgLyogcXF1aWNrd2Vidmlld19wX2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2Vi
Vmlldy90c3RfamF2YVNjcmlwdERpYWxvZ3MucW1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9qYXZhU2NyaXB0RGlhbG9ncy5xbWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWJmYzJkZjk4NzcwMmNmMzE0ZjJmODdlMWExZDJlZjZjN2Q2Zjg5NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1s
dGVzdHMvV2ViVmlldy90c3RfamF2YVNjcmlwdERpYWxvZ3MucW1sCkBAIC0wLDAgKzEsMTM1IEBA
CitpbXBvcnQgUXRRdWljayAyLjAKK2ltcG9ydCBRdFRlc3QgMS4wCitpbXBvcnQgUXRXZWJLaXQg
My4wCisKK1dlYlZpZXcgeworICAgIGlkOiB3ZWJWaWV3CisKKyAgICBwcm9wZXJ0eSBzdHJpbmcg
bWVzc2FnZUZyb21BbGVydERpYWxvZzogIiIKKyAgICBwcm9wZXJ0eSBpbnQgY29uZmlybUNvdW50
OiAwCisgICAgcHJvcGVydHkgaW50IHByb21wdENvdW50OiAwCisKKyAgICBhbGVydERpYWxvZzog
SXRlbSB7CisgICAgICAgIGlkOiBkaWFsb2cKKyAgICAgICAgcHJvcGVydHkgc3RyaW5nIG1lc3Nh
Z2UKKyAgICAgICAgc2lnbmFsIGRpc21pc3NlZCgpCisgICAgICAgIFRpbWVyIHsKKyAgICAgICAg
ICAgIHJ1bm5pbmc6IHRydWUKKyAgICAgICAgICAgIGludGVydmFsOiAxCisgICAgICAgICAgICBv
blRyaWdnZXJlZDogeworICAgICAgICAgICAgICAgIHdlYlZpZXcubWVzc2FnZUZyb21BbGVydERp
YWxvZyA9IGRpYWxvZy5tZXNzYWdlCisgICAgICAgICAgICAgICAgZGlhbG9nLmRpc21pc3NlZCgp
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25maXJtRGlhbG9nOiBJ
dGVtIHsKKyAgICAgICAgaWQ6IGRpYWxvZworICAgICAgICBwcm9wZXJ0eSBzdHJpbmcgbWVzc2Fn
ZQorICAgICAgICBzaWduYWwgYWNjZXB0ZWQoKQorICAgICAgICBzaWduYWwgcmVqZWN0ZWQoKQor
ICAgICAgICBUaW1lciB7CisgICAgICAgICAgICBydW5uaW5nOiB0cnVlCisgICAgICAgICAgICBp
bnRlcnZhbDogMQorICAgICAgICAgICAgb25UcmlnZ2VyZWQ6IHsKKyAgICAgICAgICAgICAgICBp
ZiAoZGlhbG9nLm1lc3NhZ2UgPT0gIkFDQ0VQVCIpCisgICAgICAgICAgICAgICAgICAgIGRpYWxv
Zy5hY2NlcHRlZCgpCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBk
aWFsb2cucmVqZWN0ZWQoKQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIENvbXBv
bmVudC5vbkNvbXBsZXRlZDogeworICAgICAgICAgICAgd2ViVmlldy5jb25maXJtQ291bnQgKz0g
MQorICAgICAgICB9CisgICAgfQorCisgICAgcHJvbXB0RGlhbG9nOiBJdGVtIHsKKyAgICAgICAg
aWQ6IGRpYWxvZworICAgICAgICBwcm9wZXJ0eSBzdHJpbmcgbWVzc2FnZQorICAgICAgICBwcm9w
ZXJ0eSBzdHJpbmcgZGVmYXVsdFZhbHVlCisgICAgICAgIHNpZ25hbCBhY2NlcHRlZChzdHJpbmcg
cykKKyAgICAgICAgc2lnbmFsIHJlamVjdGVkKCkKKyAgICAgICAgVGltZXIgeworICAgICAgICAg
ICAgcnVubmluZzogdHJ1ZQorICAgICAgICAgICAgaW50ZXJ2YWw6IDEKKyAgICAgICAgICAgIG9u
VHJpZ2dlcmVkOiB7CisgICAgICAgICAgICAgICAgaWYgKGRpYWxvZy5tZXNzYWdlID09ICJSRUpF
Q1QiKQorICAgICAgICAgICAgICAgICAgICBkaWFsb2cucmVqZWN0ZWQoKQorICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB2YXIgcmV2ZXJzZWREZWZhdWx0VmFsdWUg
PSBkaWFsb2cuZGVmYXVsdFZhbHVlLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIikKKyAgICAg
ICAgICAgICAgICAgICAgZGlhbG9nLmFjY2VwdGVkKHJldmVyc2VkRGVmYXVsdFZhbHVlKQorICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBDb21wb25l
bnQub25Db21wbGV0ZWQ6IHsKKyAgICAgICAgICAgIHdlYlZpZXcucHJvbXB0Q291bnQgKz0gMQor
ICAgICAgICB9CisgICAgfQorCisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6IGxvYWRTcHkK
KyAgICAgICAgdGFyZ2V0OiB3ZWJWaWV3CisgICAgICAgIHNpZ25hbE5hbWU6ICJsb2FkU3VjY2Vl
ZGVkIgorICAgIH0KKworICAgIFRlc3RDYXNlIHsKKyAgICAgICAgaWQ6IHRlc3QKKyAgICAgICAg
bmFtZTogIldlYlZpZXdKYXZhU2NyaXB0RGlhbG9ncyIKKworICAgICAgICBmdW5jdGlvbiBpbml0
KCkgeworICAgICAgICAgICAgd2ViVmlldy5tZXNzYWdlRnJvbUFsZXJ0RGlhbG9nID0gIiIKKyAg
ICAgICAgICAgIHdlYlZpZXcuY29uZmlybUNvdW50ID0gMAorICAgICAgICAgICAgd2ViVmlldy5w
cm9tcHRDb3VudCA9IDAKKyAgICAgICAgICAgIGxvYWRTcHkuY2xlYXIoKQorICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gdGVzdF9hbGVydCgpIHsKKyAgICAgICAgICAgIHdlYlZpZXcubG9h
ZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2FsZXJ0Lmh0bWwiKSkKKyAgICAgICAgICAgIGxv
YWRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKGxvYWRTcHkuY291bnQsIDEpCisgICAg
ICAgICAgICBjb21wYXJlKHdlYlZpZXcubWVzc2FnZUZyb21BbGVydERpYWxvZywgIkhlbGxvIFF0
IikKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RfYWxlcnRXaXRob3V0RGlhbG9n
KCkgeworICAgICAgICAgICAgd2ViVmlldy5hbGVydERpYWxvZyA9IG51bGwKKyAgICAgICAgICAg
IHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2FsZXJ0Lmh0bWwiKSkKKyAg
ICAgICAgICAgIGxvYWRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKGxvYWRTcHkuY291
bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcubWVzc2FnZUZyb21BbGVydERpYWxv
ZywgIiIpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X2NvbmZpcm0oKSB7Cisg
ICAgICAgICAgICB3ZWJWaWV3LmxvYWQoUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9jb25maXJt
Lmh0bWwiKSkKKyAgICAgICAgICAgIGxvYWRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJl
KGxvYWRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY29uZmlybUNv
dW50LCAyKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRpdGxlLCAiQUNDRVBURUQgUkVK
RUNURUQiKQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9jb25maXJtV2l0aG91
dERpYWxvZygpIHsKKyAgICAgICAgICAgIHdlYlZpZXcuY29uZmlybURpYWxvZyA9IG51bGwKKyAg
ICAgICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2NvbmZpcm0u
aHRtbCIpKQorICAgICAgICAgICAgbG9hZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUo
bG9hZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jb25maXJtQ291
bnQsIDApCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUsICJBQ0NFUFRFRCBBQ0NF
UFRFRCIpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X3Byb21wdCgpIHsKKyAg
ICAgICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Byb21wdC5o
dG1sIikpCisgICAgICAgICAgICBsb2FkU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZShs
b2FkU3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnByb21wdENvdW50
LCAyKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRpdGxlLCAidFEgb2xsZUgiKQorICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9wcm9tcHRXaXRob3V0RGlhbG9nKCkgewor
ICAgICAgICAgICAgd2ViVmlldy5wcm9tcHREaWFsb2cgPSBudWxsCisgICAgICAgICAgICB3ZWJW
aWV3LmxvYWQoUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9wcm9tcHQuaHRtbCIpKQorICAgICAg
ICAgICAgbG9hZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUobG9hZFNweS5jb3VudCwg
MSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5wcm9tcHRDb3VudCwgMCkKKyAgICAgICAg
ICAgIGNvbXBhcmUod2ViVmlldy50aXRsZSwgIkZBSUwiKQorICAgICAgICB9CisgICAgfQorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0
cy9jb21tb24vYWxlcnQuaHRtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvcW1sdGVzdHMvY29tbW9uL2FsZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc1YjlhNjBmZDliYWVj
YmE1Yzk2ZGU0Mjc1MDkxZTlkYWNhYmY3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2FsZXJ0Lmh0bWwKQEAg
LTAsMCArMSw4IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PmFs
ZXJ0KCJIZWxsbyBRdCIpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Ft
bHRlc3RzL2NvbW1vbi9jb25maXJtLmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9jb25maXJtLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRkNjA4
MWQ0NWNjMzk3YzBlM2I5NzlkZDAwZDA3OGRjZmQwM2I1OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2NvbmZp
cm0uaHRtbApAQCAtMCwwICsxLDE5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0PgorZG9jdW1lbnQudGl0bGUgPSAiIjsKK2Z1bmN0aW9uIHVwZGF0ZVRpdGxlKGFj
Y2VwdGVkKSB7CisgICAgaWYgKGFjY2VwdGVkKQorICAgICAgICBkb2N1bWVudC50aXRsZSArPSAi
IEFDQ0VQVEVEIjsKKyAgICBlbHNlCisgICAgICAgIGRvY3VtZW50LnRpdGxlICs9ICIgUkVKRUNU
RUQiOworfQorCit1cGRhdGVUaXRsZShjb25maXJtKCJBQ0NFUFQiKSk7Cit1cGRhdGVUaXRsZShj
b25maXJtKCJSRUpFQ1QiKSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xbWx0ZXN0cy9jb21tb24vcHJvbXB0Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9wcm9tcHQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzVl
MzAyMDQwZjgxN2M4NjhkYzFmYjRkYzhkMTZkNjBlZmY2NTdmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vcHJv
bXB0Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK2RvY3VtZW50LnRpdGxlID0gcHJvbXB0KCJQbGVhc2UsIHJldmVyc2UgdGhl
IGRlZmF1bHQgdmFsdWUiLCAiSGVsbG8gUXQiKTsKK2lmIChwcm9tcHQoIlJFSkVDVCIpICE9PSBu
dWxsKSB7CisgICAgZG9jdW1lbnQudGl0bGUgPSAiRkFJTCI7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5wcm8gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybwppbmRleCAy
NjlkYTc0Yzk4MjcxMWE4Y2JmMDVmZDIyNjE3NDdhYjJkMDliYWNjLi41ZTliOWMwMmYwMjhhMGU0
NGRiN2Q4ZmYyNzJkYjkxNzEwYjIwNDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybwpAQCAtMTQs
NiArMTQsNyBAQCBsb2FkKHdlYmtpdDIpCiBERUZJTkVTICs9IFFVSUNLX1RFU1RfU09VUkNFX0RJ
Uj1cIlxcXCIkJFBXRFxcXCJcIgogCiBPVEhFUl9GSUxFUyArPSBcCisgICAgV2ViVmlldy90c3Rf
amF2YVNjcmlwdERpYWxvZ3MucW1sIFwKICAgICBXZWJWaWV3L3RzdF9wcm9wZXJ0aWVzLnFtbCBc
CiAgICAgV2ViVmlldy90c3RfbG9hZFplcm9TaXplVmlldy5xbWwgXAogICAgIFdlYlZpZXcvdHN0
X2xvYWRGYWlsLnFtbCBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115360</attachid>
            <date>2011-11-16 05:28:28 -0800</date>
            <delta_ts>2011-11-16 14:45:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72319-20111116102901.patch</filename>
            <type>text/plain</type>
            <size>18346</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWI0N2E4MDIzMDEzYWFh
NmRmMmM5NDEwNTdjY2Q0ZGFjZWFjM2U3OC4uOThhYWQwODhmNDdkMjg2Y2U2NmE3MmY1Yzk3MWFl
M2YxNmExN2VhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDExLTExLTE2ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XSBTdXBwb3J0IGN1c3RvbWl6aW5nIEpTIGFsZXJ0L2NvbmZpcm0vcHJv
bXB0IGRpYWxvZ3MgdXNpbmcgUU1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MjMxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZHMgYWxlcnREaWFsb2csIGNvbmZpcm1EaWFsb2cgYW5kIHByb21wdERp
YWxvZyBwcm9wZXJ0aWVzIHRvIFFRdWlja1dlYlZpZXcncworICAgICAgICBwcml2YXRlT2JqZWN0
LiBUaGVzZSBhcmUgUU1MIGNvbXBvbmVudHMgdGhhdCBhcmUgY3JlYXRlZCBieSB0aGUgd2Vidmll
dyB3aGVuIHRoZQorICAgICAgICBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBK
Uy4KKworICAgICAgICBUaGlzIGNvbW1pdCByZW1vdmVzIHRoZSBvbGQgY29kZSBmb3Igc3VwcG9y
dGluZyBRV2lkZ2V0IGJ1aWx0aW4gZGlhbG9ncy4gVGhlIGNvZGUKKyAgICAgICAgd2Fzbid0IHdv
cmtpbmcgcHJvcGVybHkgKGNsb3NpbmcgYW55IGRpYWxvZyB3YXMgY2xvc2luZyB0aGUgYXBwIGFm
dGVyIFFXaW5kb3cKKyAgICAgICAgcmVmYWN0b3JpbmcgaW4gUXQ1KS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHA6CisgICAgICAgIChRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6Y3JlYXRlSXRlbUZyb21EaWFsb2cpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1By
aXZhdGU6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6
OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmFs
ZXJ0RGlhbG9nKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpzZXRBbGVydERpYWxv
Zyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Y29uZmlybURpYWxvZyk6CisgICAg
ICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6c2V0Q29uZmlybURpYWxvZyk6CisgICAgICAgIChR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6cHJvbXB0RGlhbG9nKToKKyAgICAgICAgKFFRdWlja1dlYlZp
ZXdQcml2YXRlOjpzZXRQcm9tcHREaWFsb2cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlld19wLmg6CisgICAgICAgIChEaWFsb2dSdW5uZXI6OkRpYWxvZ1J1bm5lcik6
CisgICAgICAgIChEaWFsb2dSdW5uZXI6Ondhc0FjY2VwdGVkKToKKyAgICAgICAgKERpYWxvZ1J1
bm5lcjo6cmVzdWx0KToKKyAgICAgICAgKERpYWxvZ1J1bm5lcjo6b25BY2NlcHRlZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9qYXZhU2Ny
aXB0RGlhbG9ncy5xbWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
cW1sdGVzdHMvY29tbW9uL2FsZXJ0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2NvbmZpcm0uaHRtbDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vcHJvbXB0Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVzdHMu
cHJvOgorCiAyMDExLTExLTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgd2Via2l0X3dlYl92aWV3X2xvYWRfcmVxdWVzdCgp
IHRvIFdlYktpdDIgR1RLKyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IDZkMGE2YzYyZDcwZTcxNWZmYjAyZjViNGJlNzdl
MzVmYjVmZmRjNGEuLmJjOWFiYThjM2I5OWNjNTdjNmNmM2ViMzQzYmJmYWMxMjE4NDVmNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNw
cApAQCAtMzIsOSArMzIsOSBAQAogI2luY2x1ZGUgInF3ZWJwcmVmZXJlbmNlc19wLmgiCiAKICNp
bmNsdWRlIDxRdERlY2xhcmF0aXZlL1FRdWlja0NhbnZhcz4KKyNpbmNsdWRlIDxRdERlY2xhcmF0
aXZlL1FRdWlja0l0ZW0+CiAjaW5jbHVkZSA8UXRXaWRnZXRzL1FGaWxlRGlhbG9nPgogI2luY2x1
ZGUgPFF0V2lkZ2V0cy9RSW5wdXREaWFsb2c+Ci0jaW5jbHVkZSA8UXRXaWRnZXRzL1FNZXNzYWdl
Qm94PgogI2luY2x1ZGUgPFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaD4KIAogUVF1aWNrV2Vi
Vmlld1ByaXZhdGU6OlFRdWlja1dlYlZpZXdQcml2YXRlKCkKQEAgLTIwMiw0OCArMjAyLDc5IEBA
IHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhj
b25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyCiAgICAgdXBkYXRlVmlld3BvcnRDb25zdHJhaW50cygp
OwogfQogCitRUXVpY2tJdGVtKiBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Y3JlYXRlSXRlbUZyb21E
aWFsb2coUURlY2xhcmF0aXZlQ29tcG9uZW50KiBjb21wb25lbnQpCit7CisgICAgUU9iamVjdCog
b2JqZWN0ID0gY29tcG9uZW50LT5jcmVhdGUoY29tcG9uZW50LT5jcmVhdGlvbkNvbnRleHQoKSk7
CisgICAgaWYgKCFvYmplY3QpCisgICAgICAgIHJldHVybiAwOworCisgICAgUVF1aWNrSXRlbSog
aXRlbSA9IHFvYmplY3RfY2FzdDxRUXVpY2tJdGVtKj4ob2JqZWN0KTsKKyAgICBpZiAoIWl0ZW0p
IHsKKyAgICAgICAgZGVsZXRlIG9iamVjdDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisg
ICAgUV9RKFFRdWlja1dlYlZpZXcpOworICAgIGl0ZW0tPnNldFBhcmVudEl0ZW0ocSk7CisgICAg
cmV0dXJuIGl0ZW07Cit9CiAKIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnJ1bkphdmFTY3Jp
cHRBbGVydChjb25zdCBRU3RyaW5nJiBhbGVydFRleHQpCiB7Ci0jaWZuZGVmIFFUX05PX01FU1NB
R0VCT1gKLSAgICBRX1EoUVF1aWNrV2ViVmlldyk7Ci0gICAgY29uc3QgUVN0cmluZyB0aXRsZSA9
IFFPYmplY3Q6OnRyKCJKYXZhU2NyaXB0IEFsZXJ0IC0gJTEiKS5hcmcocS0+dXJsKCkuaG9zdCgp
KTsKKyAgICBpZiAoIW1fYWxlcnREaWFsb2cpCisgICAgICAgIHJldHVybjsKKworICAgIE93blB0
cjxRUXVpY2tJdGVtPiBkaWFsb2dJdGVtID0gYWRvcHRQdHIoY3JlYXRlSXRlbUZyb21EaWFsb2co
bV9hbGVydERpYWxvZy5kYXRhKCkpKTsKKyAgICBpZiAoIWRpYWxvZ0l0ZW0pCisgICAgICAgIHJl
dHVybjsKKyAgICBkaWFsb2dJdGVtLT5zZXRQcm9wZXJ0eSgibWVzc2FnZSIsIGFsZXJ0VGV4dCk7
CisKICAgICBkaXNhYmxlTW91c2VFdmVudHMoKTsKLSAgICBRTWVzc2FnZUJveDo6aW5mb3JtYXRp
b24oMCwgdGl0bGUsIGVzY2FwZUh0bWwoYWxlcnRUZXh0KSwgUU1lc3NhZ2VCb3g6Ok9rKTsKKyAg
ICBEaWFsb2dSdW5uZXIgZGlhbG9nUnVubmVyKGRpYWxvZ0l0ZW0uZ2V0KCksIERpYWxvZ1J1bm5l
cjo6QWxlcnREaWFsb2cpOworICAgIGRpYWxvZ1J1bm5lci5leGVjKCk7CiAgICAgZW5hYmxlTW91
c2VFdmVudHMoKTsKLSNlbHNlCi0gICAgUV9VTlVTRUQoYWxlcnRUZXh0KTsKLSNlbmRpZgogfQog
CiBib29sIFFRdWlja1dlYlZpZXdQcml2YXRlOjpydW5KYXZhU2NyaXB0Q29uZmlybShjb25zdCBR
U3RyaW5nJiBtZXNzYWdlKQogewotICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKLSNpZm5kZWYgUVRf
Tk9fTUVTU0FHRUJPWAotICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKLSAgICBjb25zdCBRU3RyaW5n
IHRpdGxlID0gUU9iamVjdDo6dHIoIkphdmFTY3JpcHQgQ29uZmlybSAtICUxIikuYXJnKHEtPnVy
bCgpLmhvc3QoKSk7CisgICAgaWYgKCFtX2NvbmZpcm1EaWFsb2cpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgT3duUHRyPFFRdWlja0l0ZW0+IGNvbmZpcm1JdGVtID0gYWRvcHRQdHIoY3Jl
YXRlSXRlbUZyb21EaWFsb2cobV9jb25maXJtRGlhbG9nLmRhdGEoKSkpOworICAgIGlmICghY29u
ZmlybUl0ZW0pCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNvbmZpcm1JdGVtLT5zZXRQcm9w
ZXJ0eSgibWVzc2FnZSIsIG1lc3NhZ2UpOworCiAgICAgZGlzYWJsZU1vdXNlRXZlbnRzKCk7Ci0g
ICAgcmVzdWx0ID0gUU1lc3NhZ2VCb3g6OlllcyA9PSBRTWVzc2FnZUJveDo6aW5mb3JtYXRpb24o
MCwgdGl0bGUsIGVzY2FwZUh0bWwobWVzc2FnZSksIFFNZXNzYWdlQm94OjpZZXMsIFFNZXNzYWdl
Qm94OjpObyk7CisgICAgRGlhbG9nUnVubmVyIGRpYWxvZ1J1bm5lcihjb25maXJtSXRlbS5nZXQo
KSwgRGlhbG9nUnVubmVyOjpDb25maXJtRGlhbG9nKTsKKyAgICBkaWFsb2dSdW5uZXIuZXhlYygp
OwogICAgIGVuYWJsZU1vdXNlRXZlbnRzKCk7Ci0jZWxzZQotICAgIFFfVU5VU0VEKG1lc3NhZ2Up
OwotI2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKKworICAgIHJldHVybiBkaWFsb2dSdW5uZXIu
d2FzQWNjZXB0ZWQoKTsKIH0KIAogUVN0cmluZyBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6cnVuSmF2
YVNjcmlwdFByb21wdChjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBRU3RyaW5nJiBkZWZh
dWx0VmFsdWUsIGJvb2wmIG9rKQogewotI2lmbmRlZiBRVF9OT19JTlBVVERJQUxPRwotICAgIFFf
UShRUXVpY2tXZWJWaWV3KTsKLSAgICBjb25zdCBRU3RyaW5nIHRpdGxlID0gUU9iamVjdDo6dHIo
IkphdmFTY3JpcHQgUHJvbXB0IC0gJTEiKS5hcmcocS0+dXJsKCkuaG9zdCgpKTsKKyAgICBpZiAo
IW1fcHJvbXB0RGlhbG9nKSB7CisgICAgICAgIG9rID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGRl
ZmF1bHRWYWx1ZTsKKyAgICB9CisKKyAgICBPd25QdHI8UVF1aWNrSXRlbT4gcHJvbXB0SXRlbSA9
IGFkb3B0UHRyKGNyZWF0ZUl0ZW1Gcm9tRGlhbG9nKG1fcHJvbXB0RGlhbG9nLmRhdGEoKSkpOwor
ICAgIGlmICghcHJvbXB0SXRlbSkgeworICAgICAgICBvayA9IHRydWU7CisgICAgICAgIHJldHVy
biBkZWZhdWx0VmFsdWU7CisgICAgfQorICAgIHByb21wdEl0ZW0tPnNldFByb3BlcnR5KCJtZXNz
YWdlIiwgbWVzc2FnZSk7CisgICAgcHJvbXB0SXRlbS0+c2V0UHJvcGVydHkoImRlZmF1bHRWYWx1
ZSIsIGRlZmF1bHRWYWx1ZSk7CisKICAgICBkaXNhYmxlTW91c2VFdmVudHMoKTsKLSAgICBRU3Ry
aW5nIHJlc3VsdCA9IFFJbnB1dERpYWxvZzo6Z2V0VGV4dCgwLCB0aXRsZSwgZXNjYXBlSHRtbCht
ZXNzYWdlKSwgUUxpbmVFZGl0OjpOb3JtYWwsIGRlZmF1bHRWYWx1ZSwgJm9rKTsKKyAgICBEaWFs
b2dSdW5uZXIgZGlhbG9nUnVubmVyKHByb21wdEl0ZW0uZ2V0KCksIERpYWxvZ1J1bm5lcjo6UHJv
bXB0RGlhbG9nKTsKKyAgICBkaWFsb2dSdW5uZXIuZXhlYygpOwogICAgIGVuYWJsZU1vdXNlRXZl
bnRzKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgUV9VTlVTRUQobWVzc2FnZSk7
Ci0gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKLSNlbmRpZgorCisgICAgb2sgPSBkaWFsb2dSdW5u
ZXIud2FzQWNjZXB0ZWQoKTsKKyAgICByZXR1cm4gZGlhbG9nUnVubmVyLnJlc3VsdCgpOwogfQog
CiB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpjaG9vc2VGaWxlcyhXS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRGaWxl
TmFtZXMsIFF0Vmlld0ludGVyZmFjZTo6RmlsZUNob29zZXJUeXBlIHR5cGUpCkBAIC0yOTQsNiAr
MzI1LDQ1IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6Ol9xX29uT3BlblBhbmVsRmluaXNo
ZWQoaW50IHJlc3VsdCkKICAgICBmaWxlRGlhbG9nID0gMDsKIH0KIAorUURlY2xhcmF0aXZlQ29t
cG9uZW50KiBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6YWxlcnREaWFsb2coKSBjb25zdAoreworICAg
IHJldHVybiBtX2FsZXJ0RGlhbG9nLmRhdGEoKTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3UHJp
dmF0ZTo6c2V0QWxlcnREaWFsb2coUURlY2xhcmF0aXZlQ29tcG9uZW50KiBhbGVydERpYWxvZykK
K3sKKyAgICBpZiAobV9hbGVydERpYWxvZy5kYXRhKCkgPT0gYWxlcnREaWFsb2cpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2FsZXJ0RGlhbG9nLnJlc2V0KGFsZXJ0RGlhbG9nKTsKKyAgICBlbWl0
IGFsZXJ0RGlhbG9nQ2hhbmdlZCgpOworfQorCitRRGVjbGFyYXRpdmVDb21wb25lbnQqIFFRdWlj
a1dlYlZpZXdQcml2YXRlOjpjb25maXJtRGlhbG9nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9j
b25maXJtRGlhbG9nLmRhdGEoKTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6c2V0
Q29uZmlybURpYWxvZyhRRGVjbGFyYXRpdmVDb21wb25lbnQqIGNvbmZpcm1EaWFsb2cpCit7Cisg
ICAgaWYgKG1fY29uZmlybURpYWxvZy5kYXRhKCkgPT0gY29uZmlybURpYWxvZykKKyAgICAgICAg
cmV0dXJuOworICAgIG1fY29uZmlybURpYWxvZy5yZXNldChjb25maXJtRGlhbG9nKTsKKyAgICBl
bWl0IGNvbmZpcm1EaWFsb2dDaGFuZ2VkKCk7Cit9CisKK1FEZWNsYXJhdGl2ZUNvbXBvbmVudCog
UVF1aWNrV2ViVmlld1ByaXZhdGU6OnByb21wdERpYWxvZygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcHJvbXB0RGlhbG9nLmRhdGEoKTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6
c2V0UHJvbXB0RGlhbG9nKFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogcHJvbXB0RGlhbG9nKQorewor
ICAgIGlmIChtX3Byb21wdERpYWxvZy5kYXRhKCkgPT0gcHJvbXB0RGlhbG9nKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9wcm9tcHREaWFsb2cucmVzZXQocHJvbXB0RGlhbG9nKTsKKyAgICBlbWl0
IHByb21wdERpYWxvZ0NoYW5nZWQoKTsKK30KKwogdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6
c2V0VXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKGJvb2wgZW5hYmxlKQogewogICAgIFFf
UShRUXVpY2tXZWJWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlld19wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXdfcC5oCmluZGV4IDE4ODNjN2I3ZmU3OGQxMTJhYmMzOWMzYTNiZTc0MzMz
ZDE0MTkwZmQuLmNkNTcwNDgxNjk2NGVjM2IzOTMzNDhkNTFhOGU0M2M0ODYxNDcyZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaApA
QCAtMjgsOCArMjgsMTAgQEAKIAogI2luY2x1ZGUgInFxdWlja3dlYnZpZXcuaCIKIAorI2luY2x1
ZGUgPFF0Q29yZS9RRXZlbnRMb29wPgogI2luY2x1ZGUgPFF0Q29yZS9RT2JqZWN0PgogI2luY2x1
ZGUgPFF0Q29yZS9RU2NvcGVkUG9pbnRlcj4KKyNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL1FEZWNs
YXJhdGl2ZUNvbXBvbmVudD4KIAogY2xhc3MgUXRXZWJQYWdlUHJveHk7CiAKQEAgLTQwLDYgKzQy
LDkgQEAgUVRfRU5EX05BTUVTUEFDRQogY2xhc3MgUVdFQktJVF9FWFBPUlQgUVF1aWNrV2ViVmll
d1ByaXZhdGUgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIFdlYktpdDo6UXRQb2xpY3lJbnRlcmZh
Y2UgewogICAgIFFfT0JKRUNUCiAgICAgUV9ERUNMQVJFX1BVQkxJQyhRUXVpY2tXZWJWaWV3KQor
ICAgIFFfUFJPUEVSVFkoUURlY2xhcmF0aXZlQ29tcG9uZW50KiBhbGVydERpYWxvZyBSRUFEIGFs
ZXJ0RGlhbG9nIFdSSVRFIHNldEFsZXJ0RGlhbG9nIE5PVElGWSBhbGVydERpYWxvZ0NoYW5nZWQp
CisgICAgUV9QUk9QRVJUWShRRGVjbGFyYXRpdmVDb21wb25lbnQqIGNvbmZpcm1EaWFsb2cgUkVB
RCBjb25maXJtRGlhbG9nIFdSSVRFIHNldENvbmZpcm1EaWFsb2cgTk9USUZZIGNvbmZpcm1EaWFs
b2dDaGFuZ2VkKQorICAgIFFfUFJPUEVSVFkoUURlY2xhcmF0aXZlQ29tcG9uZW50KiBwcm9tcHRE
aWFsb2cgUkVBRCBwcm9tcHREaWFsb2cgV1JJVEUgc2V0UHJvbXB0RGlhbG9nIE5PVElGWSBwcm9t
cHREaWFsb2dDaGFuZ2VkKQogcHVibGljOgogICAgIFFRdWlja1dlYlZpZXdQcml2YXRlKCk7CiAg
ICAgdmlydHVhbCB+UVF1aWNrV2ViVmlld1ByaXZhdGUoKSB7IH0KQEAgLTU2LDYgKzYxLDggQEAg
cHVibGljOgogICAgIHZvaWQgdXBkYXRlVmlld3BvcnRTaXplKCk7CiAgICAgdm9pZCB1cGRhdGVW
aWV3cG9ydENvbnN0cmFpbnRzKCk7CiAKKyAgICBRUXVpY2tJdGVtKiBjcmVhdGVJdGVtRnJvbURp
YWxvZyhRRGVjbGFyYXRpdmVDb21wb25lbnQqKTsKKwogICAgIHN0YXRpYyBRUXVpY2tXZWJWaWV3
UHJpdmF0ZSogZ2V0KFFRdWlja1dlYlZpZXcqIHZpZXcpCiAgICAgewogICAgICAgICByZXR1cm4g
dmlldy0+ZF9wdHIuZGF0YSgpOwpAQCAtNzYsOSArODMsMjEgQEAgcHVibGljOgogICAgIFFTdHJp
bmcgcnVuSmF2YVNjcmlwdFByb21wdChjb25zdCBRU3RyaW5nJiwgY29uc3QgUVN0cmluZyYgZGVm
YXVsdFZhbHVlLCBib29sJiBvayk7CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRp
ZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3MpOwogCisgICAgUURlY2xh
cmF0aXZlQ29tcG9uZW50KiBhbGVydERpYWxvZygpIGNvbnN0OworICAgIHZvaWQgc2V0QWxlcnRE
aWFsb2coUURlY2xhcmF0aXZlQ29tcG9uZW50Kik7CisgICAgUURlY2xhcmF0aXZlQ29tcG9uZW50
KiBjb25maXJtRGlhbG9nKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDb25maXJtRGlhbG9nKFFEZWNs
YXJhdGl2ZUNvbXBvbmVudCopOworICAgIFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogcHJvbXB0RGlh
bG9nKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQcm9tcHREaWFsb2coUURlY2xhcmF0aXZlQ29tcG9u
ZW50Kik7CisKIHB1YmxpYyBzbG90czoKICAgICB2b2lkIHNldFVzZVRyYWRpdGlvbmFsRGVza3Rv
cEJlaGF2aW91cihib29sIGVuYWJsZSk7CiAKK3NpZ25hbHM6CisgICAgdm9pZCBhbGVydERpYWxv
Z0NoYW5nZWQoKTsKKyAgICB2b2lkIGNvbmZpcm1EaWFsb2dDaGFuZ2VkKCk7CisgICAgdm9pZCBw
cm9tcHREaWFsb2dDaGFuZ2VkKCk7CisKIHByaXZhdGU6CiAgICAgUVNjb3BlZFBvaW50ZXI8UVF1
aWNrV2ViUGFnZT4gcGFnZVZpZXc7CiAgICAgUVNjb3BlZFBvaW50ZXI8V2ViS2l0OjpRdFZpZXdJ
bnRlcmZhY2U+IHZpZXdJbnRlcmZhY2U7CkBAIC04OSw5ICsxMDgsNTQgQEAgcHJpdmF0ZToKICAg
ICBRUXVpY2tXZWJWaWV3KiBxX3B0cjsKICAgICBRU2NvcGVkUG9pbnRlcjxRdFdlYlBhZ2VQcm94
eT4gcGFnZVByb3h5OwogCisgICAgUVNjb3BlZFBvaW50ZXI8UURlY2xhcmF0aXZlQ29tcG9uZW50
PiBtX2FsZXJ0RGlhbG9nOworICAgIFFTY29wZWRQb2ludGVyPFFEZWNsYXJhdGl2ZUNvbXBvbmVu
dD4gbV9jb25maXJtRGlhbG9nOworICAgIFFTY29wZWRQb2ludGVyPFFEZWNsYXJhdGl2ZUNvbXBv
bmVudD4gbV9wcm9tcHREaWFsb2c7CisKICAgICBib29sIHVzZVRyYWRpdGlvbmFsRGVza3RvcEJl
aGF2aW91cjsKICAgICBRRmlsZURpYWxvZyogZmlsZURpYWxvZzsKICAgICBXS09wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUmVmIG9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOwogfTsKIAorY2xhc3MgRGlh
bG9nUnVubmVyIDogcHVibGljIFFFdmVudExvb3AgeworICAgIFFfT0JKRUNUCitwdWJsaWM6Cisg
ICAgZW51bSBEaWFsb2dUeXBlIHsKKyAgICAgICAgQWxlcnREaWFsb2csCisgICAgICAgIENvbmZp
cm1EaWFsb2csCisgICAgICAgIFByb21wdERpYWxvZworICAgIH07CisgICAgRGlhbG9nUnVubmVy
KFFPYmplY3QqIGl0ZW0sIERpYWxvZ1R5cGUgdHlwZSkKKyAgICAgICAgOiBRRXZlbnRMb29wKCkK
KyAgICAgICAgLCBtX3dhc0FjY2VwdGVkKGZhbHNlKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0
eXBlKSB7CisgICAgICAgIGNhc2UgQWxlcnREaWFsb2c6CisgICAgICAgICAgICBjb25uZWN0KGl0
ZW0sIFNJR05BTChkaXNtaXNzZWQoKSksIFNMT1QocXVpdCgpKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBDb25maXJtRGlhbG9nOgorICAgICAgICAgICAgY29ubmVjdChpdGVt
LCBTSUdOQUwoYWNjZXB0ZWQoKSksIFNMT1Qob25BY2NlcHRlZCgpKSk7CisgICAgICAgICAgICBj
b25uZWN0KGl0ZW0sIFNJR05BTChhY2NlcHRlZCgpKSwgU0xPVChxdWl0KCkpKTsKKyAgICAgICAg
ICAgIGNvbm5lY3QoaXRlbSwgU0lHTkFMKHJlamVjdGVkKCkpLCBTTE9UKHF1aXQoKSkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHJvbXB0RGlhbG9nOgorICAgICAgICAgICAg
Y29ubmVjdChpdGVtLCBTSUdOQUwoYWNjZXB0ZWQoUVN0cmluZykpLCBTTE9UKG9uQWNjZXB0ZWQo
UVN0cmluZykpKTsKKyAgICAgICAgICAgIGNvbm5lY3QoaXRlbSwgU0lHTkFMKGFjY2VwdGVkKFFT
dHJpbmcpKSwgU0xPVChxdWl0KCkpKTsKKyAgICAgICAgICAgIGNvbm5lY3QoaXRlbSwgU0lHTkFM
KHJlamVjdGVkKCkpLCBTTE9UKHF1aXQoKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CisgICAgYm9vbCB3YXNBY2NlcHRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzQWNj
ZXB0ZWQ7IH0KKyAgICBRU3RyaW5nIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0OyB9
CitwdWJsaWMgc2xvdHM6CisgICAgdm9pZCBvbkFjY2VwdGVkKGNvbnN0IFFTdHJpbmcmIHJlc3Vs
dCA9IFFTdHJpbmcoKSkKKyAgICB7CisgICAgICAgIG1fd2FzQWNjZXB0ZWQgPSB0cnVlOworICAg
ICAgICBtX3Jlc3VsdCA9IHJlc3VsdDsKKyAgICB9Citwcml2YXRlOgorICAgIFFTdHJpbmcgbV9y
ZXN1bHQ7CisgICAgYm9vbCBtX3dhc0FjY2VwdGVkOworfTsKKwogI2VuZGlmIC8qIHFxdWlja3dl
YnZpZXdfcF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2phdmFTY3JpcHREaWFsb2dzLnFtbCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfamF2
YVNjcmlwdERpYWxvZ3MucW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwNTFiYTI3YzEyYzg1MTZmZWExYmQzOTBj
NTdmMzY5ZjlmZWUzMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2phdmFTY3JpcHREaWFsb2dzLnFt
bApAQCAtMCwwICsxLDEzOSBAQAoraW1wb3J0IFF0UXVpY2sgMi4wCitpbXBvcnQgUXRUZXN0IDEu
MAoraW1wb3J0IFF0V2ViS2l0IDMuMAoraW1wb3J0IFF0V2ViS2l0LnByaXZhdGUgMy4wCisKK1dl
YlZpZXcgeworICAgIGlkOiB3ZWJWaWV3CisKKyAgICBwcm9wZXJ0eSBzdHJpbmcgbWVzc2FnZUZy
b21BbGVydERpYWxvZzogIiIKKyAgICBwcm9wZXJ0eSBpbnQgY29uZmlybUNvdW50OiAwCisgICAg
cHJvcGVydHkgaW50IHByb21wdENvdW50OiAwCisKKyAgICBwcml2YXRlT2JqZWN0LmFsZXJ0RGlh
bG9nOiBJdGVtIHsKKyAgICAgICAgaWQ6IGRpYWxvZworICAgICAgICBwcm9wZXJ0eSBzdHJpbmcg
bWVzc2FnZQorICAgICAgICBzaWduYWwgZGlzbWlzc2VkKCkKKyAgICAgICAgVGltZXIgeworICAg
ICAgICAgICAgcnVubmluZzogdHJ1ZQorICAgICAgICAgICAgaW50ZXJ2YWw6IDEKKyAgICAgICAg
ICAgIG9uVHJpZ2dlcmVkOiB7CisgICAgICAgICAgICAgICAgd2ViVmlldy5tZXNzYWdlRnJvbUFs
ZXJ0RGlhbG9nID0gZGlhbG9nLm1lc3NhZ2UKKyAgICAgICAgICAgICAgICBkaWFsb2cuZGlzbWlz
c2VkKCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGVPYmpl
Y3QuY29uZmlybURpYWxvZzogSXRlbSB7CisgICAgICAgIGlkOiBkaWFsb2cKKyAgICAgICAgcHJv
cGVydHkgc3RyaW5nIG1lc3NhZ2UKKyAgICAgICAgc2lnbmFsIGFjY2VwdGVkKCkKKyAgICAgICAg
c2lnbmFsIHJlamVjdGVkKCkKKyAgICAgICAgVGltZXIgeworICAgICAgICAgICAgcnVubmluZzog
dHJ1ZQorICAgICAgICAgICAgaW50ZXJ2YWw6IDEKKyAgICAgICAgICAgIG9uVHJpZ2dlcmVkOiB7
CisgICAgICAgICAgICAgICAgaWYgKGRpYWxvZy5tZXNzYWdlID09ICJBQ0NFUFQiKQorICAgICAg
ICAgICAgICAgICAgICBkaWFsb2cuYWNjZXB0ZWQoKQorICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgZGlhbG9nLnJlamVjdGVkKCkKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBDb21wb25lbnQub25Db21wbGV0ZWQ6IHsKKyAgICAgICAgICAgIHdlYlZp
ZXcuY29uZmlybUNvdW50ICs9IDEKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGVPYmpl
Y3QucHJvbXB0RGlhbG9nOiBJdGVtIHsKKyAgICAgICAgaWQ6IGRpYWxvZworICAgICAgICBwcm9w
ZXJ0eSBzdHJpbmcgbWVzc2FnZQorICAgICAgICBwcm9wZXJ0eSBzdHJpbmcgZGVmYXVsdFZhbHVl
CisgICAgICAgIHNpZ25hbCBhY2NlcHRlZChzdHJpbmcgcykKKyAgICAgICAgc2lnbmFsIHJlamVj
dGVkKCkKKyAgICAgICAgVGltZXIgeworICAgICAgICAgICAgcnVubmluZzogdHJ1ZQorICAgICAg
ICAgICAgaW50ZXJ2YWw6IDEKKyAgICAgICAgICAgIG9uVHJpZ2dlcmVkOiB7CisgICAgICAgICAg
ICAgICAgaWYgKGRpYWxvZy5tZXNzYWdlID09ICJSRUpFQ1QiKQorICAgICAgICAgICAgICAgICAg
ICBkaWFsb2cucmVqZWN0ZWQoKQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICB2YXIgcmV2ZXJzZWREZWZhdWx0VmFsdWUgPSBkaWFsb2cuZGVmYXVsdFZhbHVlLnNw
bGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIikKKyAgICAgICAgICAgICAgICAgICAgZGlhbG9nLmFj
Y2VwdGVkKHJldmVyc2VkRGVmYXVsdFZhbHVlKQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBDb21wb25lbnQub25Db21wbGV0ZWQ6IHsKKyAgICAg
ICAgICAgIHdlYlZpZXcucHJvbXB0Q291bnQgKz0gMQorICAgICAgICB9CisgICAgfQorCisgICAg
U2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6IGxvYWRTcHkKKyAgICAgICAgdGFyZ2V0OiB3ZWJWaWV3
CisgICAgICAgIHNpZ25hbE5hbWU6ICJsb2FkU3VjY2VlZGVkIgorICAgIH0KKworICAgIFRlc3RD
YXNlIHsKKyAgICAgICAgaWQ6IHRlc3QKKyAgICAgICAgbmFtZTogIldlYlZpZXdKYXZhU2NyaXB0
RGlhbG9ncyIKKworICAgICAgICBmdW5jdGlvbiBpbml0KCkgeworICAgICAgICAgICAgd2ViVmll
dy5tZXNzYWdlRnJvbUFsZXJ0RGlhbG9nID0gIiIKKyAgICAgICAgICAgIHdlYlZpZXcuY29uZmly
bUNvdW50ID0gMAorICAgICAgICAgICAgd2ViVmlldy5wcm9tcHRDb3VudCA9IDAKKyAgICAgICAg
ICAgIGxvYWRTcHkuY2xlYXIoKQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9h
bGVydCgpIHsKKyAgICAgICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29t
bW9uL2FsZXJ0Lmh0bWwiKSkKKyAgICAgICAgICAgIGxvYWRTcHkud2FpdCgpCisgICAgICAgICAg
ICBjb21wYXJlKGxvYWRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcu
bWVzc2FnZUZyb21BbGVydERpYWxvZywgIkhlbGxvIFF0IikKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHRlc3RfYWxlcnRXaXRob3V0RGlhbG9nKCkgeworICAgICAgICAgICAgc2tpcCgi
U2V0dGluZyBwcml2YXRlT2JqZWN0IHByb3BlcnRpZXMgZnJvbSBKUyBjb2RlIGlzbid0IHdvcmtp
bmciKQorICAgICAgICAgICAgd2ViVmlldy5wcml2YXRlT2JqZWN0LmFsZXJ0RGlhbG9nID0gbnVs
bAorICAgICAgICAgICAgd2ViVmlldy5sb2FkKFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vYWxl
cnQuaHRtbCIpKQorICAgICAgICAgICAgbG9hZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBh
cmUobG9hZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5tZXNzYWdl
RnJvbUFsZXJ0RGlhbG9nLCAiIikKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3Rf
Y29uZmlybSgpIHsKKyAgICAgICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4v
Y29tbW9uL2NvbmZpcm0uaHRtbCIpKQorICAgICAgICAgICAgbG9hZFNweS53YWl0KCkKKyAgICAg
ICAgICAgIGNvbXBhcmUobG9hZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUod2Vi
Vmlldy5jb25maXJtQ291bnQsIDIpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUs
ICJBQ0NFUFRFRCBSRUpFQ1RFRCIpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0
X2NvbmZpcm1XaXRob3V0RGlhbG9nKCkgeworICAgICAgICAgICAgc2tpcCgiU2V0dGluZyBwcml2
YXRlT2JqZWN0IHByb3BlcnRpZXMgZnJvbSBKUyBjb2RlIGlzbid0IHdvcmtpbmciKQorICAgICAg
ICAgICAgd2ViVmlldy5wcml2YXRlT2JqZWN0LmNvbmZpcm1EaWFsb2cgPSBudWxsCisgICAgICAg
ICAgICB3ZWJWaWV3LmxvYWQoUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9jb25maXJtLmh0bWwi
KSkKKyAgICAgICAgICAgIGxvYWRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKGxvYWRT
cHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY29uZmlybUNvdW50LCAw
KQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRpdGxlLCAiQUNDRVBURUQgQUNDRVBURUQi
KQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9wcm9tcHQoKSB7CisgICAgICAg
ICAgICB3ZWJWaWV3LmxvYWQoUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9wcm9tcHQuaHRtbCIp
KQorICAgICAgICAgICAgbG9hZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUobG9hZFNw
eS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5wcm9tcHRDb3VudCwgMikK
KyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy50aXRsZSwgInRRIG9sbGVIIikKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RfcHJvbXB0V2l0aG91dERpYWxvZygpIHsKKyAgICAg
ICAgICAgIHNraXAoIlNldHRpbmcgcHJpdmF0ZU9iamVjdCBwcm9wZXJ0aWVzIGZyb20gSlMgY29k
ZSBpc24ndCB3b3JraW5nIikKKyAgICAgICAgICAgIHdlYlZpZXcucHJpdmF0ZU9iamVjdC5wcm9t
cHREaWFsb2cgPSBudWxsCisgICAgICAgICAgICB3ZWJWaWV3LmxvYWQoUXQucmVzb2x2ZWRVcmwo
Ii4uL2NvbW1vbi9wcm9tcHQuaHRtbCIpKQorICAgICAgICAgICAgbG9hZFNweS53YWl0KCkKKyAg
ICAgICAgICAgIGNvbXBhcmUobG9hZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUo
d2ViVmlldy5wcm9tcHRDb3VudCwgMCkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy50aXRs
ZSwgIkZBSUwiKQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vYWxlcnQuaHRtbCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2FsZXJ0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTc1YjlhNjBmZDliYWVjYmE1Yzk2ZGU0Mjc1MDkxZTlkYWNhYmY3
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvcW1sdGVzdHMvY29tbW9uL2FsZXJ0Lmh0bWwKQEAgLTAsMCArMSw4IEBACis8IWRvY3R5cGUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PmFsZXJ0KCJIZWxsbyBRdCIpOzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9jb25maXJtLmh0
bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1v
bi9jb25maXJtLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRkNjA4MWQ0NWNjMzk3YzBlM2I5NzlkZDAwZDA3
OGRjZmQwM2I1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2NvbmZpcm0uaHRtbApAQCAtMCwwICsxLDE5IEBA
Cis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZG9jdW1lbnQudGl0
bGUgPSAiIjsKK2Z1bmN0aW9uIHVwZGF0ZVRpdGxlKGFjY2VwdGVkKSB7CisgICAgaWYgKGFjY2Vw
dGVkKQorICAgICAgICBkb2N1bWVudC50aXRsZSArPSAiIEFDQ0VQVEVEIjsKKyAgICBlbHNlCisg
ICAgICAgIGRvY3VtZW50LnRpdGxlICs9ICIgUkVKRUNURUQiOworfQorCit1cGRhdGVUaXRsZShj
b25maXJtKCJBQ0NFUFQiKSk7Cit1cGRhdGVUaXRsZShjb25maXJtKCJSRUpFQ1QiKSk7Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vcHJvbXB0
Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2Nv
bW1vbi9wcm9tcHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzVlMzAyMDQwZjgxN2M4NjhkYzFmYjRkYzhk
MTZkNjBlZmY2NTdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vcHJvbXB0Lmh0bWwKQEAgLTAsMCArMSwxMyBA
QAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2RvY3VtZW50LnRp
dGxlID0gcHJvbXB0KCJQbGVhc2UsIHJldmVyc2UgdGhlIGRlZmF1bHQgdmFsdWUiLCAiSGVsbG8g
UXQiKTsKK2lmIChwcm9tcHQoIlJFSkVDVCIpICE9PSBudWxsKSB7CisgICAgZG9jdW1lbnQudGl0
bGUgPSAiRkFJTCI7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9x
bWx0ZXN0cy9xbWx0ZXN0cy5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybwppbmRleCAyNjlkYTc0Yzk4MjcxMWE4Y2JmMDVmZDIy
NjE3NDdhYjJkMDliYWNjLi41ZTliOWMwMmYwMjhhMGU0NGRiN2Q4ZmYyNzJkYjkxNzEwYjIwNDc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRl
c3RzL3FtbHRlc3RzLnBybworKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybwpAQCAtMTQsNiArMTQsNyBAQCBsb2FkKHdlYmtpdDIp
CiBERUZJTkVTICs9IFFVSUNLX1RFU1RfU09VUkNFX0RJUj1cIlxcXCIkJFBXRFxcXCJcIgogCiBP
VEhFUl9GSUxFUyArPSBcCisgICAgV2ViVmlldy90c3RfamF2YVNjcmlwdERpYWxvZ3MucW1sIFwK
ICAgICBXZWJWaWV3L3RzdF9wcm9wZXJ0aWVzLnFtbCBcCiAgICAgV2ViVmlldy90c3RfbG9hZFpl
cm9TaXplVmlldy5xbWwgXAogICAgIFdlYlZpZXcvdHN0X2xvYWRGYWlsLnFtbCBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115452</attachid>
            <date>2011-11-16 14:41:33 -0800</date>
            <delta_ts>2011-11-17 07:28:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72319-20111116194208.patch</filename>
            <type>text/plain</type>
            <size>24799</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWYyOGJlNTg1OTBhNDdm
OTU5MjY2N2ZlMmYzNzA3NjgwODVkNTAyMS4uYTE3YjYxZTFkZjJjYTA3Yzk2MmNjNjczYmQ4NzNm
MDRiMTEyOTgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDExLTExLTE2ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XSBTdXBwb3J0IGN1c3RvbWl6aW5nIEpTIGFsZXJ0L2NvbmZpcm0vcHJv
bXB0IGRpYWxvZ3MgdXNpbmcgUU1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MjMxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZHMgYWxlcnREaWFsb2csIGNvbmZpcm1EaWFsb2cgYW5kIHByb21wdERp
YWxvZyBwcm9wZXJ0aWVzIHRvIFFRdWlja1dlYlZpZXcncworICAgICAgICBwcml2YXRlT2JqZWN0
LiBUaGVzZSBhcmUgUU1MIGNvbXBvbmVudHMgdGhhdCBhcmUgY3JlYXRlZCBieSB0aGUgd2Vidmll
dyB3aGVuIHRoZQorICAgICAgICBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBK
Uy4KKworICAgICAgICBUaGUgZGlhbG9ncyBhcmUgY3JlYXRlZCBpbiBhIGNvbnRleHQgdGhhdCBj
b250YWlucyBhIG1vZGVsIG9iamVjdCwgc2ltaWxhciB0bworICAgICAgICBMaXN0VmlldyBkZWxl
Z2F0ZXMuIFRoZSAibWVzc2FnZSIgYW5kICJkZWZhdWx0VmFsdWUiIHBhcmFtZXRlcnMgYXJlIGF2
YWlsYWJsZQorICAgICAgICBpbiB0aGUgbW9kZWwgb2JqZWN0LCBhcyB3ZWxsIGFzIHNsb3RzIGV4
cGVjdGVkIHRvIGJlIGNhbGxlZCBieSB0aGUgZGlhbG9nLgorCisgICAgICAgIFRoaXMgY29tbWl0
IHJlbW92ZXMgdGhlIG9sZCBjb2RlIGZvciBzdXBwb3J0aW5nIFFXaWRnZXQgYnVpbHRpbiBkaWFs
b2dzLiBUaGUgY29kZQorICAgICAgICB3YXNuJ3Qgd29ya2luZyBwcm9wZXJseSAoY2xvc2luZyBh
bnkgZGlhbG9nIHdhcyBjbG9zaW5nIHRoZSBhcHAgYWZ0ZXIgUVdpbmRvdworICAgICAgICByZWZh
Y3RvcmluZyBpbiBRdDUpLgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1aWNrV2ViVmlld1By
aXZhdGU6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6
OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OmFs
ZXJ0RGlhbG9nKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpzZXRBbGVydERpYWxv
Zyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Y29uZmlybURpYWxvZyk6CisgICAg
ICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6c2V0Q29uZmlybURpYWxvZyk6CisgICAgICAgIChR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6cHJvbXB0RGlhbG9nKToKKyAgICAgICAgKFFRdWlja1dlYlZp
ZXdQcml2YXRlOjpzZXRQcm9tcHREaWFsb2cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlld19wLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0
ZXN0cy9XZWJWaWV3L3RzdF9qYXZhU2NyaXB0RGlhbG9ncy5xbWw6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2FsZXJ0Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2NvbmZp
cm0uaHRtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0
cy9jb21tb24vcHJvbXB0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvcW1sdGVzdHMvcW1sdGVzdHMucHJvOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdERp
YWxvZ1J1bm5lci5jcHA6IEFkZGVkLgorICAgICAgICAoUXREaWFsb2dSdW5uZXI6OlF0RGlhbG9n
UnVubmVyKToKKyAgICAgICAgKFF0RGlhbG9nUnVubmVyOjp+UXREaWFsb2dSdW5uZXIpOgorICAg
ICAgICAoRGlhbG9nQ29udGV4dE9iamVjdDo6RGlhbG9nQ29udGV4dE9iamVjdCk6CisgICAgICAg
IChEaWFsb2dDb250ZXh0T2JqZWN0OjptZXNzYWdlKToKKyAgICAgICAgKERpYWxvZ0NvbnRleHRP
YmplY3Q6OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgIChEaWFsb2dDb250ZXh0T2JqZWN0OjpkaXNt
aXNzKToKKyAgICAgICAgKERpYWxvZ0NvbnRleHRPYmplY3Q6OmFjY2VwdCk6CisgICAgICAgIChE
aWFsb2dDb250ZXh0T2JqZWN0OjpyZWplY3QpOgorICAgICAgICAoUXREaWFsb2dSdW5uZXI6Omlu
aXRGb3JBbGVydCk6CisgICAgICAgIChRdERpYWxvZ1J1bm5lcjo6aW5pdEZvckNvbmZpcm0pOgor
ICAgICAgICAoUXREaWFsb2dSdW5uZXI6OmluaXRGb3JQcm9tcHQpOgorICAgICAgICAoUXREaWFs
b2dSdW5uZXI6OmNyZWF0ZURpYWxvZyk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0RGlhbG9n
UnVubmVyLmg6IEFkZGVkLgorICAgICAgICAoUXREaWFsb2dSdW5uZXI6Ondhc0FjY2VwdGVkKToK
KyAgICAgICAgKFF0RGlhbG9nUnVubmVyOjpyZXN1bHQpOgorICAgICAgICAoUXREaWFsb2dSdW5u
ZXI6Om9uQWNjZXB0ZWQpOgorCiAyMDExLTExLTE2ICBaZW5vIEFsYmlzc2VyICA8emVub0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtRdF1bV0syXVtNYWNdIE1pbmlCcm93c2VyIGNhbm5vdCBjcmVh
dGUgc29ja2V0cGFpci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IGQzNzhjNTRkNTAxNzJkYzNhZjFiMTJkNzQ2
OGY3NjI2YjYwOTIzZmIuLmJmZjc3MzM5MzQ1ZTc3MzBlNzI4ODlhMmM3ZmE3ZDg1NjE5OWYwOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktp
dDIvVGFyZ2V0LnByaQpAQCAtMzE5LDYgKzMxOSw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJv
Y2Vzcy9xdC9RdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0
VGFwR2VzdHVyZVJlY29nbml6ZXIuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViRXJyb3IuaCBc
CisgICAgVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVyLmggXAogICAgIFVJUHJvY2Vzcy9xdC9R
dERvd25sb2FkTWFuYWdlci5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaCBc
CiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuaCBcCkBAIC02MjYsNiArNjI3LDcgQEAgU09V
UkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVjb2duaXplci5jcHAg
XAogICAgIFVJUHJvY2Vzcy9xdC9RdFRhcEdlc3R1cmVSZWNvZ25pemVyLmNwcCBcCiAgICAgVUlQ
cm9jZXNzL3F0L1F0V2ViRXJyb3IuY3BwIFwKKyAgICBVSVByb2Nlc3MvcXQvUXREaWFsb2dSdW5u
ZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuY3BwIFwKICAgICBV
SVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvcXdraGlz
dG9yeS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlldy5jcHAKaW5kZXggNmQwYTZjNjJkNzBlNzE1ZmZiMDJmNWI0YmU3N2UzNWZiNWZmZGM0
YS4uNjRmNjJjOGZlMzkyNmVhYzNkNjUzOTY3MDI1MmJkYmFkYjdkMTc4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC0yMSw2
ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAicXF1aWNrd2Vidmlldy5o
IgogCisjaW5jbHVkZSAiUXREaWFsb2dSdW5uZXIuaCIKICNpbmNsdWRlICJRdFZpZXdJbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIlV0aWxzUXQuaCIK
QEAgLTM0LDcgKzM1LDYgQEAKICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL1FRdWlja0NhbnZhcz4K
ICNpbmNsdWRlIDxRdFdpZGdldHMvUUZpbGVEaWFsb2c+CiAjaW5jbHVkZSA8UXRXaWRnZXRzL1FJ
bnB1dERpYWxvZz4KLSNpbmNsdWRlIDxRdFdpZGdldHMvUU1lc3NhZ2VCb3g+CiAjaW5jbHVkZSA8
V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oPgogCiBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6UVF1
aWNrV2ViVmlld1ByaXZhdGUoKQpAQCAtMjAyLDQ4ICsyMDIsNTggQEAgdm9pZCBRUXVpY2tXZWJW
aWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZp
ZXdwb3J0QXIKICAgICB1cGRhdGVWaWV3cG9ydENvbnN0cmFpbnRzKCk7CiB9CiAKLQogdm9pZCBR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KGNvbnN0IFFTdHJpbmcmIGFs
ZXJ0VGV4dCkKIHsKLSNpZm5kZWYgUVRfTk9fTUVTU0FHRUJPWAorICAgIGlmICghbV9hbGVydERp
YWxvZykKKyAgICAgICAgcmV0dXJuOworCiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwotICAgIGNv
bnN0IFFTdHJpbmcgdGl0bGUgPSBRT2JqZWN0Ojp0cigiSmF2YVNjcmlwdCBBbGVydCAtICUxIiku
YXJnKHEtPnVybCgpLmhvc3QoKSk7CisgICAgUXREaWFsb2dSdW5uZXIgZGlhbG9nUnVubmVyOwor
ICAgIGlmICghZGlhbG9nUnVubmVyLmluaXRGb3JBbGVydChtX2FsZXJ0RGlhbG9nLmRhdGEoKSwg
cSwgYWxlcnRUZXh0KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZGlzYWJsZU1vdXNlRXZlbnRz
KCk7Ci0gICAgUU1lc3NhZ2VCb3g6OmluZm9ybWF0aW9uKDAsIHRpdGxlLCBlc2NhcGVIdG1sKGFs
ZXJ0VGV4dCksIFFNZXNzYWdlQm94OjpPayk7CisgICAgZGlhbG9nUnVubmVyLmV4ZWMoKTsKICAg
ICBlbmFibGVNb3VzZUV2ZW50cygpOwotI2Vsc2UKLSAgICBRX1VOVVNFRChhbGVydFRleHQpOwot
I2VuZGlmCiB9CiAKIGJvb2wgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnJ1bkphdmFTY3JpcHRDb25m
aXJtKGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgYm9vbCByZXN1bHQgPSB0cnVlOwot
I2lmbmRlZiBRVF9OT19NRVNTQUdFQk9YCisgICAgaWYgKCFtX2NvbmZpcm1EaWFsb2cpCisgICAg
ICAgIHJldHVybiB0cnVlOworCiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwotICAgIGNvbnN0IFFT
dHJpbmcgdGl0bGUgPSBRT2JqZWN0Ojp0cigiSmF2YVNjcmlwdCBDb25maXJtIC0gJTEiKS5hcmco
cS0+dXJsKCkuaG9zdCgpKTsKKyAgICBRdERpYWxvZ1J1bm5lciBkaWFsb2dSdW5uZXI7CisgICAg
aWYgKCFkaWFsb2dSdW5uZXIuaW5pdEZvckNvbmZpcm0obV9jb25maXJtRGlhbG9nLmRhdGEoKSwg
cSwgbWVzc2FnZSkpCisgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgZGlzYWJsZU1vdXNlRXZl
bnRzKCk7Ci0gICAgcmVzdWx0ID0gUU1lc3NhZ2VCb3g6OlllcyA9PSBRTWVzc2FnZUJveDo6aW5m
b3JtYXRpb24oMCwgdGl0bGUsIGVzY2FwZUh0bWwobWVzc2FnZSksIFFNZXNzYWdlQm94OjpZZXMs
IFFNZXNzYWdlQm94OjpObyk7CisgICAgZGlhbG9nUnVubmVyLmV4ZWMoKTsKICAgICBlbmFibGVN
b3VzZUV2ZW50cygpOwotI2Vsc2UKLSAgICBRX1VOVVNFRChtZXNzYWdlKTsKLSNlbmRpZgotICAg
IHJldHVybiByZXN1bHQ7CisKKyAgICByZXR1cm4gZGlhbG9nUnVubmVyLndhc0FjY2VwdGVkKCk7
CiB9CiAKIFFTdHJpbmcgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnJ1bkphdmFTY3JpcHRQcm9tcHQo
Y29uc3QgUVN0cmluZyYgbWVzc2FnZSwgY29uc3QgUVN0cmluZyYgZGVmYXVsdFZhbHVlLCBib29s
JiBvaykKIHsKLSNpZm5kZWYgUVRfTk9fSU5QVVRESUFMT0cKKyAgICBpZiAoIW1fcHJvbXB0RGlh
bG9nKSB7CisgICAgICAgIG9rID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsK
KyAgICB9CisKICAgICBRX1EoUVF1aWNrV2ViVmlldyk7Ci0gICAgY29uc3QgUVN0cmluZyB0aXRs
ZSA9IFFPYmplY3Q6OnRyKCJKYXZhU2NyaXB0IFByb21wdCAtICUxIikuYXJnKHEtPnVybCgpLmhv
c3QoKSk7CisgICAgUXREaWFsb2dSdW5uZXIgZGlhbG9nUnVubmVyOworICAgIGlmICghZGlhbG9n
UnVubmVyLmluaXRGb3JQcm9tcHQobV9wcm9tcHREaWFsb2cuZGF0YSgpLCBxLCBtZXNzYWdlLCBk
ZWZhdWx0VmFsdWUpKSB7CisgICAgICAgIG9rID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGRlZmF1
bHRWYWx1ZTsKKyAgICB9CisKICAgICBkaXNhYmxlTW91c2VFdmVudHMoKTsKLSAgICBRU3RyaW5n
IHJlc3VsdCA9IFFJbnB1dERpYWxvZzo6Z2V0VGV4dCgwLCB0aXRsZSwgZXNjYXBlSHRtbChtZXNz
YWdlKSwgUUxpbmVFZGl0OjpOb3JtYWwsIGRlZmF1bHRWYWx1ZSwgJm9rKTsKKyAgICBkaWFsb2dS
dW5uZXIuZXhlYygpOwogICAgIGVuYWJsZU1vdXNlRXZlbnRzKCk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLSNlbHNlCi0gICAgUV9VTlVTRUQobWVzc2FnZSk7Ci0gICAgcmV0dXJuIGRlZmF1bHRWYWx1
ZTsKLSNlbmRpZgorCisgICAgb2sgPSBkaWFsb2dSdW5uZXIud2FzQWNjZXB0ZWQoKTsKKyAgICBy
ZXR1cm4gZGlhbG9nUnVubmVyLnJlc3VsdCgpOwogfQogCiB2b2lkIFFRdWlja1dlYlZpZXdQcml2
YXRlOjpjaG9vc2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVm
LCBjb25zdCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRGaWxlTmFtZXMsIFF0Vmlld0ludGVyZmFjZTo6
RmlsZUNob29zZXJUeXBlIHR5cGUpCkBAIC0yOTQsNiArMzA0LDQ1IEBAIHZvaWQgUVF1aWNrV2Vi
Vmlld1ByaXZhdGU6Ol9xX29uT3BlblBhbmVsRmluaXNoZWQoaW50IHJlc3VsdCkKICAgICBmaWxl
RGlhbG9nID0gMDsKIH0KIAorUURlY2xhcmF0aXZlQ29tcG9uZW50KiBRUXVpY2tXZWJWaWV3UHJp
dmF0ZTo6YWxlcnREaWFsb2coKSBjb25zdAoreworICAgIHJldHVybiBtX2FsZXJ0RGlhbG9nLmRh
dGEoKTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6c2V0QWxlcnREaWFsb2coUURl
Y2xhcmF0aXZlQ29tcG9uZW50KiBhbGVydERpYWxvZykKK3sKKyAgICBpZiAobV9hbGVydERpYWxv
Zy5kYXRhKCkgPT0gYWxlcnREaWFsb2cpCisgICAgICAgIHJldHVybjsKKyAgICBtX2FsZXJ0RGlh
bG9nLnJlc2V0KGFsZXJ0RGlhbG9nKTsKKyAgICBlbWl0IGFsZXJ0RGlhbG9nQ2hhbmdlZCgpOwor
fQorCitRRGVjbGFyYXRpdmVDb21wb25lbnQqIFFRdWlja1dlYlZpZXdQcml2YXRlOjpjb25maXJt
RGlhbG9nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25maXJtRGlhbG9nLmRhdGEoKTsKK30K
Kwordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6c2V0Q29uZmlybURpYWxvZyhRRGVjbGFyYXRp
dmVDb21wb25lbnQqIGNvbmZpcm1EaWFsb2cpCit7CisgICAgaWYgKG1fY29uZmlybURpYWxvZy5k
YXRhKCkgPT0gY29uZmlybURpYWxvZykKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29uZmlybURp
YWxvZy5yZXNldChjb25maXJtRGlhbG9nKTsKKyAgICBlbWl0IGNvbmZpcm1EaWFsb2dDaGFuZ2Vk
KCk7Cit9CisKK1FEZWNsYXJhdGl2ZUNvbXBvbmVudCogUVF1aWNrV2ViVmlld1ByaXZhdGU6OnBy
b21wdERpYWxvZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvbXB0RGlhbG9nLmRhdGEoKTsK
K30KKwordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6c2V0UHJvbXB0RGlhbG9nKFFEZWNsYXJh
dGl2ZUNvbXBvbmVudCogcHJvbXB0RGlhbG9nKQoreworICAgIGlmIChtX3Byb21wdERpYWxvZy5k
YXRhKCkgPT0gcHJvbXB0RGlhbG9nKQorICAgICAgICByZXR1cm47CisgICAgbV9wcm9tcHREaWFs
b2cucmVzZXQocHJvbXB0RGlhbG9nKTsKKyAgICBlbWl0IHByb21wdERpYWxvZ0NoYW5nZWQoKTsK
K30KKwogdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6c2V0VXNlVHJhZGl0aW9uYWxEZXNrdG9w
QmVoYXZpb3VyKGJvb2wgZW5hYmxlKQogewogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCmluZGV4
IDE4ODNjN2I3ZmU3OGQxMTJhYmMzOWMzYTNiZTc0MzMzZDE0MTkwZmQuLmRkYTQyMTBmNzM0NjU2
ZDMzYzdjOTM1YmJiMjBiN2FmZjYxMGVhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5j
bHVkZSA8UXRDb3JlL1FPYmplY3Q+CiAjaW5jbHVkZSA8UXRDb3JlL1FTY29wZWRQb2ludGVyPgor
I2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvUURlY2xhcmF0aXZlQ29tcG9uZW50PgogCiBjbGFzcyBR
dFdlYlBhZ2VQcm94eTsKIApAQCAtNDAsNiArNDEsOSBAQCBRVF9FTkRfTkFNRVNQQUNFCiBjbGFz
cyBRV0VCS0lUX0VYUE9SVCBRUXVpY2tXZWJWaWV3UHJpdmF0ZSA6IHB1YmxpYyBRT2JqZWN0LCBw
dWJsaWMgV2ViS2l0OjpRdFBvbGljeUludGVyZmFjZSB7CiAgICAgUV9PQkpFQ1QKICAgICBRX0RF
Q0xBUkVfUFVCTElDKFFRdWlja1dlYlZpZXcpCisgICAgUV9QUk9QRVJUWShRRGVjbGFyYXRpdmVD
b21wb25lbnQqIGFsZXJ0RGlhbG9nIFJFQUQgYWxlcnREaWFsb2cgV1JJVEUgc2V0QWxlcnREaWFs
b2cgTk9USUZZIGFsZXJ0RGlhbG9nQ2hhbmdlZCkKKyAgICBRX1BST1BFUlRZKFFEZWNsYXJhdGl2
ZUNvbXBvbmVudCogY29uZmlybURpYWxvZyBSRUFEIGNvbmZpcm1EaWFsb2cgV1JJVEUgc2V0Q29u
ZmlybURpYWxvZyBOT1RJRlkgY29uZmlybURpYWxvZ0NoYW5nZWQpCisgICAgUV9QUk9QRVJUWShR
RGVjbGFyYXRpdmVDb21wb25lbnQqIHByb21wdERpYWxvZyBSRUFEIHByb21wdERpYWxvZyBXUklU
RSBzZXRQcm9tcHREaWFsb2cgTk9USUZZIHByb21wdERpYWxvZ0NoYW5nZWQpCiBwdWJsaWM6CiAg
ICAgUVF1aWNrV2ViVmlld1ByaXZhdGUoKTsKICAgICB2aXJ0dWFsIH5RUXVpY2tXZWJWaWV3UHJp
dmF0ZSgpIHsgfQpAQCAtNzYsOSArODAsMjEgQEAgcHVibGljOgogICAgIFFTdHJpbmcgcnVuSmF2
YVNjcmlwdFByb21wdChjb25zdCBRU3RyaW5nJiwgY29uc3QgUVN0cmluZyYgZGVmYXVsdFZhbHVl
LCBib29sJiBvayk7CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3Qg
V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3MpOwogCisgICAgUURlY2xhcmF0aXZlQ29t
cG9uZW50KiBhbGVydERpYWxvZygpIGNvbnN0OworICAgIHZvaWQgc2V0QWxlcnREaWFsb2coUURl
Y2xhcmF0aXZlQ29tcG9uZW50Kik7CisgICAgUURlY2xhcmF0aXZlQ29tcG9uZW50KiBjb25maXJt
RGlhbG9nKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDb25maXJtRGlhbG9nKFFEZWNsYXJhdGl2ZUNv
bXBvbmVudCopOworICAgIFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogcHJvbXB0RGlhbG9nKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRQcm9tcHREaWFsb2coUURlY2xhcmF0aXZlQ29tcG9uZW50Kik7CisK
IHB1YmxpYyBzbG90czoKICAgICB2b2lkIHNldFVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91
cihib29sIGVuYWJsZSk7CiAKK3NpZ25hbHM6CisgICAgdm9pZCBhbGVydERpYWxvZ0NoYW5nZWQo
KTsKKyAgICB2b2lkIGNvbmZpcm1EaWFsb2dDaGFuZ2VkKCk7CisgICAgdm9pZCBwcm9tcHREaWFs
b2dDaGFuZ2VkKCk7CisKIHByaXZhdGU6CiAgICAgUVNjb3BlZFBvaW50ZXI8UVF1aWNrV2ViUGFn
ZT4gcGFnZVZpZXc7CiAgICAgUVNjb3BlZFBvaW50ZXI8V2ViS2l0OjpRdFZpZXdJbnRlcmZhY2U+
IHZpZXdJbnRlcmZhY2U7CkBAIC04OSw2ICsxMDUsMTAgQEAgcHJpdmF0ZToKICAgICBRUXVpY2tX
ZWJWaWV3KiBxX3B0cjsKICAgICBRU2NvcGVkUG9pbnRlcjxRdFdlYlBhZ2VQcm94eT4gcGFnZVBy
b3h5OwogCisgICAgUVNjb3BlZFBvaW50ZXI8UURlY2xhcmF0aXZlQ29tcG9uZW50PiBtX2FsZXJ0
RGlhbG9nOworICAgIFFTY29wZWRQb2ludGVyPFFEZWNsYXJhdGl2ZUNvbXBvbmVudD4gbV9jb25m
aXJtRGlhbG9nOworICAgIFFTY29wZWRQb2ludGVyPFFEZWNsYXJhdGl2ZUNvbXBvbmVudD4gbV9w
cm9tcHREaWFsb2c7CisKICAgICBib29sIHVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cjsK
ICAgICBRRmlsZURpYWxvZyogZmlsZURpYWxvZzsKICAgICBXS09wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUmVmIG9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9qYXZhU2NyaXB0
RGlhbG9ncy5xbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRl
c3RzL1dlYlZpZXcvdHN0X2phdmFTY3JpcHREaWFsb2dzLnFtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hM2RiY2U4
ZGI2YmM3Zjg5Yzk2MjdlYTUyMjc2MWU4ODRkMmViODdmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9q
YXZhU2NyaXB0RGlhbG9ncy5xbWwKQEAgLTAsMCArMSwxMjcgQEAKK2ltcG9ydCBRdFF1aWNrIDIu
MAoraW1wb3J0IFF0VGVzdCAxLjAKK2ltcG9ydCBRdFdlYktpdCAzLjAKK2ltcG9ydCBRdFdlYktp
dC5wcml2YXRlIDMuMAorCitXZWJWaWV3IHsKKyAgICBpZDogd2ViVmlldworCisgICAgcHJvcGVy
dHkgYm9vbCBtb2RlbE1lc3NhZ2VFcXVhbHNNZXNzYWdlOiBmYWxzZQorICAgIHByb3BlcnR5IHN0
cmluZyBtZXNzYWdlRnJvbUFsZXJ0RGlhbG9nOiAiIgorICAgIHByb3BlcnR5IGludCBjb25maXJt
Q291bnQ6IDAKKyAgICBwcm9wZXJ0eSBpbnQgcHJvbXB0Q291bnQ6IDAKKworICAgIHByaXZhdGVP
YmplY3QuYWxlcnREaWFsb2c6IEl0ZW0geworICAgICAgICBUaW1lciB7CisgICAgICAgICAgICBy
dW5uaW5nOiB0cnVlCisgICAgICAgICAgICBpbnRlcnZhbDogMQorICAgICAgICAgICAgb25Ucmln
Z2VyZWQ6IHsKKyAgICAgICAgICAgICAgICB3ZWJWaWV3Lm1lc3NhZ2VGcm9tQWxlcnREaWFsb2cg
PSBtZXNzYWdlCisgICAgICAgICAgICAgICAgd2ViVmlldy5tb2RlbE1lc3NhZ2VFcXVhbHNNZXNz
YWdlID0gQm9vbGVhbihtb2RlbC5tZXNzYWdlID09IG1lc3NhZ2UpCisgICAgICAgICAgICAgICAg
bW9kZWwuZGlzbWlzcygpCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBw
cml2YXRlT2JqZWN0LmNvbmZpcm1EaWFsb2c6IEl0ZW0geworICAgICAgICBUaW1lciB7CisgICAg
ICAgICAgICBydW5uaW5nOiB0cnVlCisgICAgICAgICAgICBpbnRlcnZhbDogMQorICAgICAgICAg
ICAgb25UcmlnZ2VyZWQ6IHsKKyAgICAgICAgICAgICAgICB3ZWJWaWV3LmNvbmZpcm1Db3VudCAr
PSAxCisgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UgPT0gIkFDQ0VQVCIpCisgICAgICAgICAg
ICAgICAgICAgIG1vZGVsLmFjY2VwdCgpCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICBtb2RlbC5yZWplY3QoKQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgcHJpdmF0ZU9iamVjdC5wcm9tcHREaWFsb2c6IEl0ZW0geworICAgICAgICBUaW1l
ciB7CisgICAgICAgICAgICBydW5uaW5nOiB0cnVlCisgICAgICAgICAgICBpbnRlcnZhbDogMQor
ICAgICAgICAgICAgb25UcmlnZ2VyZWQ6IHsKKyAgICAgICAgICAgICAgICB3ZWJWaWV3LnByb21w
dENvdW50ICs9IDEKKyAgICAgICAgICAgICAgICBpZiAobWVzc2FnZSA9PSAiUkVKRUNUIikKKyAg
ICAgICAgICAgICAgICAgICAgbW9kZWwucmVqZWN0KCkKKyAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIHJldmVyc2VkRGVmYXVsdFZhbHVlID0gZGVmYXVsdFZh
bHVlLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIikKKyAgICAgICAgICAgICAgICAgICAgbW9k
ZWwuYWNjZXB0KHJldmVyc2VkRGVmYXVsdFZhbHVlKQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlk
OiBsb2FkU3B5CisgICAgICAgIHRhcmdldDogd2ViVmlldworICAgICAgICBzaWduYWxOYW1lOiAi
bG9hZFN1Y2NlZWRlZCIKKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7CisgICAgICAgIGlkOiB0ZXN0
CisgICAgICAgIG5hbWU6ICJXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MiCisKKyAgICAgICAgZnVu
Y3Rpb24gaW5pdCgpIHsKKyAgICAgICAgICAgIHdlYlZpZXcubW9kZWxNZXNzYWdlRXF1YWxzTWVz
c2FnZSA9IGZhbHNlCisgICAgICAgICAgICB3ZWJWaWV3Lm1lc3NhZ2VGcm9tQWxlcnREaWFsb2cg
PSAiIgorICAgICAgICAgICAgd2ViVmlldy5jb25maXJtQ291bnQgPSAwCisgICAgICAgICAgICB3
ZWJWaWV3LnByb21wdENvdW50ID0gMAorICAgICAgICAgICAgbG9hZFNweS5jbGVhcigpCisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X2FsZXJ0KCkgeworICAgICAgICAgICAgd2Vi
Vmlldy5sb2FkKFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vYWxlcnQuaHRtbCIpKQorICAgICAg
ICAgICAgbG9hZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUobG9hZFNweS5jb3VudCwg
MSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5tZXNzYWdlRnJvbUFsZXJ0RGlhbG9nLCAi
SGVsbG8gUXQiKQorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcubW9kZWxNZXNzYWdlRXF1YWxz
TWVzc2FnZSkKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RfYWxlcnRXaXRob3V0
RGlhbG9nKCkgeworICAgICAgICAgICAgc2tpcCgiU2V0dGluZyBwcml2YXRlT2JqZWN0IHByb3Bl
cnRpZXMgZnJvbSBKUyBjb2RlIGlzbid0IHdvcmtpbmciKQorICAgICAgICAgICAgd2ViVmlldy5w
cml2YXRlT2JqZWN0LmFsZXJ0RGlhbG9nID0gbnVsbAorICAgICAgICAgICAgd2ViVmlldy5sb2Fk
KFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vYWxlcnQuaHRtbCIpKQorICAgICAgICAgICAgbG9h
ZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUobG9hZFNweS5jb3VudCwgMSkKKyAgICAg
ICAgICAgIGNvbXBhcmUod2ViVmlldy5tZXNzYWdlRnJvbUFsZXJ0RGlhbG9nLCAiIikKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RfY29uZmlybSgpIHsKKyAgICAgICAgICAgIHdl
YlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2NvbmZpcm0uaHRtbCIpKQorICAg
ICAgICAgICAgbG9hZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUobG9hZFNweS5jb3Vu
dCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jb25maXJtQ291bnQsIDIpCisgICAg
ICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUsICJBQ0NFUFRFRCBSRUpFQ1RFRCIpCisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X2NvbmZpcm1XaXRob3V0RGlhbG9nKCkgewor
ICAgICAgICAgICAgc2tpcCgiU2V0dGluZyBwcml2YXRlT2JqZWN0IHByb3BlcnRpZXMgZnJvbSBK
UyBjb2RlIGlzbid0IHdvcmtpbmciKQorICAgICAgICAgICAgd2ViVmlldy5wcml2YXRlT2JqZWN0
LmNvbmZpcm1EaWFsb2cgPSBudWxsCisgICAgICAgICAgICB3ZWJWaWV3LmxvYWQoUXQucmVzb2x2
ZWRVcmwoIi4uL2NvbW1vbi9jb25maXJtLmh0bWwiKSkKKyAgICAgICAgICAgIGxvYWRTcHkud2Fp
dCgpCisgICAgICAgICAgICBjb21wYXJlKGxvYWRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBj
b21wYXJlKHdlYlZpZXcuY29uZmlybUNvdW50LCAwKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJW
aWV3LnRpdGxlLCAiQUNDRVBURUQgQUNDRVBURUQiKQorICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gdGVzdF9wcm9tcHQoKSB7CisgICAgICAgICAgICB3ZWJWaWV3LmxvYWQoUXQucmVzb2x2
ZWRVcmwoIi4uL2NvbW1vbi9wcm9tcHQuaHRtbCIpKQorICAgICAgICAgICAgbG9hZFNweS53YWl0
KCkKKyAgICAgICAgICAgIGNvbXBhcmUobG9hZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNv
bXBhcmUod2ViVmlldy5wcm9tcHRDb3VudCwgMikKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmll
dy50aXRsZSwgInRRIG9sbGVIIikKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3Rf
cHJvbXB0V2l0aG91dERpYWxvZygpIHsKKyAgICAgICAgICAgIHNraXAoIlNldHRpbmcgcHJpdmF0
ZU9iamVjdCBwcm9wZXJ0aWVzIGZyb20gSlMgY29kZSBpc24ndCB3b3JraW5nIikKKyAgICAgICAg
ICAgIHdlYlZpZXcucHJpdmF0ZU9iamVjdC5wcm9tcHREaWFsb2cgPSBudWxsCisgICAgICAgICAg
ICB3ZWJWaWV3LmxvYWQoUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9wcm9tcHQuaHRtbCIpKQor
ICAgICAgICAgICAgbG9hZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUobG9hZFNweS5j
b3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5wcm9tcHRDb3VudCwgMCkKKyAg
ICAgICAgICAgIGNvbXBhcmUod2ViVmlldy50aXRsZSwgIkZBSUwiKQorICAgICAgICB9CisgICAg
fQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9x
bWx0ZXN0cy9jb21tb24vYWxlcnQuaHRtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2FsZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc1YjlhNjBm
ZDliYWVjYmE1Yzk2ZGU0Mjc1MDkxZTlkYWNhYmY3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2FsZXJ0Lmh0
bWwKQEAgLTAsMCArMSw4IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0PmFsZXJ0KCJIZWxsbyBRdCIpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FtbHRlc3RzL2NvbW1vbi9jb25maXJtLmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9jb25maXJtLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWRkNjA4MWQ0NWNjMzk3YzBlM2I5NzlkZDAwZDA3OGRjZmQwM2I1OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9u
L2NvbmZpcm0uaHRtbApAQCAtMCwwICsxLDE5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgorZG9jdW1lbnQudGl0bGUgPSAiIjsKK2Z1bmN0aW9uIHVwZGF0ZVRp
dGxlKGFjY2VwdGVkKSB7CisgICAgaWYgKGFjY2VwdGVkKQorICAgICAgICBkb2N1bWVudC50aXRs
ZSArPSAiIEFDQ0VQVEVEIjsKKyAgICBlbHNlCisgICAgICAgIGRvY3VtZW50LnRpdGxlICs9ICIg
UkVKRUNURUQiOworfQorCit1cGRhdGVUaXRsZShjb25maXJtKCJBQ0NFUFQiKSk7Cit1cGRhdGVU
aXRsZShjb25maXJtKCJSRUpFQ1QiKSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vcHJvbXB0Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9wcm9tcHQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMzVlMzAyMDQwZjgxN2M4NjhkYzFmYjRkYzhkMTZkNjBlZmY2NTdmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21t
b24vcHJvbXB0Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdD4KK2RvY3VtZW50LnRpdGxlID0gcHJvbXB0KCJQbGVhc2UsIHJldmVy
c2UgdGhlIGRlZmF1bHQgdmFsdWUiLCAiSGVsbG8gUXQiKTsKK2lmIChwcm9tcHQoIlJFSkVDVCIp
ICE9PSBudWxsKSB7CisgICAgZG9jdW1lbnQudGl0bGUgPSAiRkFJTCI7Cit9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5wcm8gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybwpp
bmRleCAyNjlkYTc0Yzk4MjcxMWE4Y2JmMDVmZDIyNjE3NDdhYjJkMDliYWNjLi41ZTliOWMwMmYw
MjhhMGU0NGRiN2Q4ZmYyNzJkYjkxNzEwYjIwNDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybwpA
QCAtMTQsNiArMTQsNyBAQCBsb2FkKHdlYmtpdDIpCiBERUZJTkVTICs9IFFVSUNLX1RFU1RfU09V
UkNFX0RJUj1cIlxcXCIkJFBXRFxcXCJcIgogCiBPVEhFUl9GSUxFUyArPSBcCisgICAgV2ViVmll
dy90c3RfamF2YVNjcmlwdERpYWxvZ3MucW1sIFwKICAgICBXZWJWaWV3L3RzdF9wcm9wZXJ0aWVz
LnFtbCBcCiAgICAgV2ViVmlldy90c3RfbG9hZFplcm9TaXplVmlldy5xbWwgXAogICAgIFdlYlZp
ZXcvdHN0X2xvYWRGYWlsLnFtbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXREaWFsb2dSdW5uZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
RGlhbG9nUnVubmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2IyMDliZWIyOGJkYmUyN2NkOGU2YWY5YWVm
MzM3YTQ3ZWEyM2VmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0RGlhbG9nUnVubmVyLmNwcApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9n
cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJRdERpYWxvZ1J1bm5lci5oIgorCisj
aW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9RRGVjbGFyYXRpdmVDb21wb25lbnQ+CisjaW5jbHVkZSA8
UXREZWNsYXJhdGl2ZS9RRGVjbGFyYXRpdmVDb250ZXh0PgorI2luY2x1ZGUgPFF0RGVjbGFyYXRp
dmUvUURlY2xhcmF0aXZlRW5naW5lPgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvUVF1aWNrSXRl
bT4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCitRdERpYWxvZ1J1bm5lcjo6UXREaWFs
b2dSdW5uZXIoKQorICAgIDogUUV2ZW50TG9vcCgpCisgICAgLCBtX3dhc0FjY2VwdGVkKGZhbHNl
KQoreworfQorCitRdERpYWxvZ1J1bm5lcjo6flF0RGlhbG9nUnVubmVyKCkKK3sKK30KKworY2xh
c3MgRGlhbG9nQ29udGV4dE9iamVjdCA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAor
ICAgIFFfUFJPUEVSVFkoUVN0cmluZyBtZXNzYWdlIFJFQUQgbWVzc2FnZSBDT05TVEFOVCkKKyAg
ICBRX1BST1BFUlRZKFFTdHJpbmcgZGVmYXVsdFZhbHVlIFJFQUQgZGVmYXVsdFZhbHVlIENPTlNU
QU5UKQorCitwdWJsaWM6CisgICAgRGlhbG9nQ29udGV4dE9iamVjdChjb25zdCBRU3RyaW5nJiBt
ZXNzYWdlLCBjb25zdCBRU3RyaW5nJiBkZWZhdWx0VmFsdWUgPSBRU3RyaW5nKCkpCisgICAgICAg
IDogUU9iamVjdCgpCisgICAgICAgICwgbV9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgICwgbV9k
ZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlKQorICAgIHsKKyAgICB9CisgICAgUVN0cmluZyBtZXNz
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9CisgICAgUVN0cmluZyBkZWZhdWx0VmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRWYWx1ZTsgfQorCitwdWJsaWMgc2xvdHM6Cisg
ICAgdm9pZCBkaXNtaXNzKCkgeyBlbWl0IGRpc21pc3NlZCgpOyB9CisgICAgdm9pZCBhY2NlcHQo
KSB7IGVtaXQgYWNjZXB0ZWQoKTsgfQorICAgIHZvaWQgYWNjZXB0KGNvbnN0IFFTdHJpbmcmIHJl
c3VsdCkgeyBlbWl0IGFjY2VwdGVkKHJlc3VsdCk7IH0KKyAgICB2b2lkIHJlamVjdCgpIHsgZW1p
dCByZWplY3RlZCgpOyB9CisKK3NpZ25hbHM6CisgICAgdm9pZCBkaXNtaXNzZWQoKTsKKyAgICB2
b2lkIGFjY2VwdGVkKCk7CisgICAgdm9pZCBhY2NlcHRlZChjb25zdCBRU3RyaW5nJiByZXN1bHQp
OworICAgIHZvaWQgcmVqZWN0ZWQoKTsKKworcHJpdmF0ZToKKyAgICBRU3RyaW5nIG1fbWVzc2Fn
ZTsKKyAgICBRU3RyaW5nIG1fZGVmYXVsdFZhbHVlOworfTsKKworYm9vbCBRdERpYWxvZ1J1bm5l
cjo6aW5pdEZvckFsZXJ0KFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogY29tcG9uZW50LCBRUXVpY2tJ
dGVtKiBkaWFsb2dQYXJlbnQsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgRGlhbG9n
Q29udGV4dE9iamVjdCogY29udGV4dE9iamVjdCA9IG5ldyBEaWFsb2dDb250ZXh0T2JqZWN0KG1l
c3NhZ2UpOworICAgIGlmICghY3JlYXRlRGlhbG9nKGNvbXBvbmVudCwgZGlhbG9nUGFyZW50LCBj
b250ZXh0T2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29ubmVjdChjb250
ZXh0T2JqZWN0LCBTSUdOQUwoZGlzbWlzc2VkKCkpLCBTTE9UKHF1aXQoKSkpOworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIFF0RGlhbG9nUnVubmVyOjppbml0Rm9yQ29uZmlybShRRGVjbGFy
YXRpdmVDb21wb25lbnQqIGNvbXBvbmVudCwgUVF1aWNrSXRlbSogZGlhbG9nUGFyZW50LCBjb25z
dCBRU3RyaW5nJiBtZXNzYWdlKQoreworICAgIERpYWxvZ0NvbnRleHRPYmplY3QqIGNvbnRleHRP
YmplY3QgPSBuZXcgRGlhbG9nQ29udGV4dE9iamVjdChtZXNzYWdlKTsKKyAgICBpZiAoIWNyZWF0
ZURpYWxvZyhjb21wb25lbnQsIGRpYWxvZ1BhcmVudCwgY29udGV4dE9iamVjdCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKGFjY2Vw
dGVkKCkpLCBTTE9UKG9uQWNjZXB0ZWQoKSkpOworICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwg
U0lHTkFMKGFjY2VwdGVkKCkpLCBTTE9UKHF1aXQoKSkpOworICAgIGNvbm5lY3QoY29udGV4dE9i
amVjdCwgU0lHTkFMKHJlamVjdGVkKCkpLCBTTE9UKHF1aXQoKSkpOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFF0RGlhbG9nUnVubmVyOjppbml0Rm9yUHJvbXB0KFFEZWNsYXJhdGl2ZUNv
bXBvbmVudCogY29tcG9uZW50LCBRUXVpY2tJdGVtKiBkaWFsb2dQYXJlbnQsIGNvbnN0IFFTdHJp
bmcmIG1lc3NhZ2UsIGNvbnN0IFFTdHJpbmcmIGRlZmF1bHRWYWx1ZSkKK3sKKyAgICBEaWFsb2dD
b250ZXh0T2JqZWN0KiBjb250ZXh0T2JqZWN0ID0gbmV3IERpYWxvZ0NvbnRleHRPYmplY3QobWVz
c2FnZSwgZGVmYXVsdFZhbHVlKTsKKyAgICBpZiAoIWNyZWF0ZURpYWxvZyhjb21wb25lbnQsIGRp
YWxvZ1BhcmVudCwgY29udGV4dE9iamVjdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKGFjY2VwdGVkKFFTdHJpbmcpKSwgU0xPVChv
bkFjY2VwdGVkKFFTdHJpbmcpKSk7CisgICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwo
YWNjZXB0ZWQoUVN0cmluZykpLCBTTE9UKHF1aXQoKSkpOworICAgIGNvbm5lY3QoY29udGV4dE9i
amVjdCwgU0lHTkFMKHJlamVjdGVkKCkpLCBTTE9UKHF1aXQoKSkpOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFF0RGlhbG9nUnVubmVyOjpjcmVhdGVEaWFsb2coUURlY2xhcmF0aXZlQ29t
cG9uZW50KiBjb21wb25lbnQsIFFRdWlja0l0ZW0qIGRpYWxvZ1BhcmVudCwgUU9iamVjdCogY29u
dGV4dE9iamVjdCkKK3sKKyAgICBRRGVjbGFyYXRpdmVDb250ZXh0KiBiYXNlQ29udGV4dCA9IGNv
bXBvbmVudC0+Y3JlYXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFiYXNlQ29udGV4dCkKKyAgICAg
ICAgYmFzZUNvbnRleHQgPSBRRGVjbGFyYXRpdmVFbmdpbmU6OmNvbnRleHRGb3JPYmplY3QoZGlh
bG9nUGFyZW50KTsKKyAgICBtX2RpYWxvZ0NvbnRleHQgPSBhZG9wdFB0cihuZXcgUURlY2xhcmF0
aXZlQ29udGV4dChiYXNlQ29udGV4dCkpOworCisgICAgLy8gVGhpcyBtYWtlcyBib3RoICJtZXNz
YWdlIiBhbmQgIm1vZGVsLm1lc3NhZ2UiIHdvcmsgZm9yIHRoZSBkaWFsb2csIGp1c3QgbGlrZSBR
dFF1aWNrJ3MgTGlzdFZpZXcgZGVsZWdhdGVzLgorICAgIGNvbnRleHRPYmplY3QtPnNldFBhcmVu
dChtX2RpYWxvZ0NvbnRleHQuZ2V0KCkpOworICAgIG1fZGlhbG9nQ29udGV4dC0+c2V0Q29udGV4
dFByb3BlcnR5KFFMYXRpbjFTdHJpbmcoIm1vZGVsIiksIGNvbnRleHRPYmplY3QpOworICAgIG1f
ZGlhbG9nQ29udGV4dC0+c2V0Q29udGV4dE9iamVjdChjb250ZXh0T2JqZWN0KTsKKworICAgIFFP
YmplY3QqIG9iamVjdCA9IGNvbXBvbmVudC0+Y3JlYXRlKG1fZGlhbG9nQ29udGV4dC5nZXQoKSk7
CisgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgbV9kaWFsb2dDb250ZXh0LmNsZWFyKCk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX2RpYWxvZyA9IGFkb3B0UHRyKHFv
YmplY3RfY2FzdDxRUXVpY2tJdGVtKj4ob2JqZWN0KSk7CisgICAgaWYgKCFtX2RpYWxvZykgewor
ICAgICAgICBtX2RpYWxvZ0NvbnRleHQuY2xlYXIoKTsKKyAgICAgICAgbV9kaWFsb2cuY2xlYXIo
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1fZGlhbG9nLT5zZXRQYXJl
bnRJdGVtKGRpYWxvZ1BhcmVudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNpbmNsdWRlICJR
dERpYWxvZ1J1bm5lci5tb2MiCisjaW5jbHVkZSAibW9jX1F0RGlhbG9nUnVubmVyLmNwcCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1bm5lci5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmQxYzlmMzFlZGM2OTIyMzFjYWVkMmZkNzAyYmJlNjQ4YjdkMDlmNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1bm5lci5oCkBAIC0wLDAg
KzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFF0RGlhbG9nUnVubmVyX2gKKyNk
ZWZpbmUgUXREaWFsb2dSdW5uZXJfaAorCisjaW5jbHVkZSA8UXRDb3JlL1FFdmVudExvb3A+Cisj
aW5jbHVkZSA8d3RmL093blB0ci5oPgorCitjbGFzcyBRRGVjbGFyYXRpdmVDb21wb25lbnQ7Citj
bGFzcyBRRGVjbGFyYXRpdmVDb250ZXh0OworY2xhc3MgUVF1aWNrSXRlbTsKKworY2xhc3MgUXRE
aWFsb2dSdW5uZXIgOiBwdWJsaWMgUUV2ZW50TG9vcCB7CisgICAgUV9PQkpFQ1QKKworcHVibGlj
OgorICAgIFF0RGlhbG9nUnVubmVyKCk7CisgICAgdmlydHVhbCB+UXREaWFsb2dSdW5uZXIoKTsK
KworICAgIGJvb2wgaW5pdEZvckFsZXJ0KFFEZWNsYXJhdGl2ZUNvbXBvbmVudCosIFFRdWlja0l0
ZW0qIGRpYWxvZ1BhcmVudCwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSk7CisgICAgYm9vbCBpbml0
Rm9yQ29uZmlybShRRGVjbGFyYXRpdmVDb21wb25lbnQqLCBRUXVpY2tJdGVtKiBkaWFsb2dQYXJl
bnQsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpOworICAgIGJvb2wgaW5pdEZvclByb21wdChRRGVj
bGFyYXRpdmVDb21wb25lbnQqLCBRUXVpY2tJdGVtKiBkaWFsb2dQYXJlbnQsIGNvbnN0IFFTdHJp
bmcmIG1lc3NhZ2UsIGNvbnN0IFFTdHJpbmcmIGRlZmF1bHRWYWx1ZSk7CisKKyAgICBib29sIHdh
c0FjY2VwdGVkKCkgY29uc3QgeyByZXR1cm4gbV93YXNBY2NlcHRlZDsgfQorICAgIFFTdHJpbmcg
cmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHQ7IH0KKworcHVibGljIHNsb3RzOgorICAg
IHZvaWQgb25BY2NlcHRlZChjb25zdCBRU3RyaW5nJiByZXN1bHQgPSBRU3RyaW5nKCkpCisgICAg
eworICAgICAgICBtX3dhc0FjY2VwdGVkID0gdHJ1ZTsKKyAgICAgICAgbV9yZXN1bHQgPSByZXN1
bHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgY3JlYXRlRGlhbG9nKFFEZWNsYXJhdGl2
ZUNvbXBvbmVudCosIFFRdWlja0l0ZW0qIGRpYWxvZ1BhcmVudCwgUU9iamVjdCogY29udGV4dE9i
amVjdCk7CisKKyAgICBPd25QdHI8UURlY2xhcmF0aXZlQ29udGV4dD4gbV9kaWFsb2dDb250ZXh0
OworICAgIE93blB0cjxRUXVpY2tJdGVtPiBtX2RpYWxvZzsKKyAgICBRU3RyaW5nIG1fcmVzdWx0
OworICAgIGJvb2wgbV93YXNBY2NlcHRlZDsKK307CisKKyNlbmRpZiAvLyBRdERpYWxvZ1J1bm5l
cl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115587</attachid>
            <date>2011-11-17 07:28:54 -0800</date>
            <delta_ts>2011-11-17 09:49:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72319-20111117122930.patch</filename>
            <type>text/plain</type>
            <size>25744</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDg2NTQwOTdjMmQ2YTdk
NDZlMjNkYzNiZTBlZDIwY2Q1MWY3OTBmZC4uYmE2ZWYyOGMzZWMzZGE2MGU2YjcyM2YzYTRjOTkw
NWE3ZmI4NDRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDExLTExLTE3ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XSBTdXBwb3J0IGN1c3RvbWl6aW5nIEpTIGFsZXJ0L2NvbmZpcm0vcHJv
bXB0IGRpYWxvZ3MgdXNpbmcgUU1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MjMxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZHMgYWxlcnREaWFsb2csIGNvbmZpcm1EaWFsb2cgYW5kIHByb21wdERp
YWxvZyBwcm9wZXJ0aWVzIHRvIFFRdWlja1dlYlZpZXcncworICAgICAgICBwcml2YXRlT2JqZWN0
LiBUaGVzZSBhcmUgUU1MIGNvbXBvbmVudHMgdGhhdCBhcmUgY3JlYXRlZCBieSB0aGUgd2Vidmll
dyB3aGVuIHRoZQorICAgICAgICBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBK
Uy4KKworICAgICAgICBUaGUgZGlhbG9ncyBhcmUgY3JlYXRlZCBpbiBhIGNvbnRleHQgdGhhdCBj
b250YWlucyBhIG1vZGVsIG9iamVjdCwgc2ltaWxhciB0bworICAgICAgICBMaXN0VmlldyBkZWxl
Z2F0ZXMuIFRoZSAibWVzc2FnZSIgYW5kICJkZWZhdWx0VmFsdWUiIHBhcmFtZXRlcnMgYXJlIGF2
YWlsYWJsZQorICAgICAgICBpbiB0aGUgbW9kZWwgb2JqZWN0LCBhcyB3ZWxsIGFzIHNsb3RzIGV4
cGVjdGVkIHRvIGJlIGNhbGxlZCBieSB0aGUgZGlhbG9nLgorCisgICAgICAgIFRoaXMgY29tbWl0
IHJlbW92ZXMgdGhlIG9sZCBjb2RlIGZvciBzdXBwb3J0aW5nIFFXaWRnZXQgYnVpbHRpbiBkaWFs
b2dzLiBUaGUgY29kZQorICAgICAgICB3YXNuJ3Qgd29ya2luZyBwcm9wZXJseSAoY2xvc2luZyBh
bnkgZGlhbG9nIHdhcyBjbG9zaW5nIHRoZSBhcHAgYWZ0ZXIgUVdpbmRvdworICAgICAgICByZWZh
Y3RvcmluZyBpbiBRdDUpLgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1aWNrV2ViVmlld1By
aXZhdGU6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6
OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRh
bDo6YWxlcnREaWFsb2cpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6c2V0
QWxlcnREaWFsb2cpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6Y29uZmly
bURpYWxvZyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpzZXRDb25maXJt
RGlhbG9nKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnByb21wdERpYWxv
Zyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpzZXRQcm9tcHREaWFsb2cp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfamF2YVNjcmlwdERpYWxvZ3Mu
cW1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2Nv
bW1vbi9hbGVydC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3Rz
L3FtbHRlc3RzL2NvbW1vbi9jb25maXJtLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL3Byb21wdC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybzoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvcXQvUXREaWFsb2dSdW5uZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFF0
RGlhbG9nUnVubmVyOjpRdERpYWxvZ1J1bm5lcik6CisgICAgICAgIChRdERpYWxvZ1J1bm5lcjo6
flF0RGlhbG9nUnVubmVyKToKKyAgICAgICAgKERpYWxvZ0NvbnRleHRPYmplY3Q6OkRpYWxvZ0Nv
bnRleHRPYmplY3QpOgorICAgICAgICAoRGlhbG9nQ29udGV4dE9iamVjdDo6bWVzc2FnZSk6Cisg
ICAgICAgIChEaWFsb2dDb250ZXh0T2JqZWN0OjpkZWZhdWx0VmFsdWUpOgorICAgICAgICAoRGlh
bG9nQ29udGV4dE9iamVjdDo6ZGlzbWlzcyk6CisgICAgICAgIChEaWFsb2dDb250ZXh0T2JqZWN0
OjphY2NlcHQpOgorICAgICAgICAoRGlhbG9nQ29udGV4dE9iamVjdDo6cmVqZWN0KToKKyAgICAg
ICAgKFF0RGlhbG9nUnVubmVyOjppbml0Rm9yQWxlcnQpOgorICAgICAgICAoUXREaWFsb2dSdW5u
ZXI6OmluaXRGb3JDb25maXJtKToKKyAgICAgICAgKFF0RGlhbG9nUnVubmVyOjppbml0Rm9yUHJv
bXB0KToKKyAgICAgICAgKFF0RGlhbG9nUnVubmVyOjpjcmVhdGVEaWFsb2cpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1bm5lci5oOiBBZGRlZC4KKyAgICAgICAgKFF0RGlhbG9n
UnVubmVyOjp3YXNBY2NlcHRlZCk6CisgICAgICAgIChRdERpYWxvZ1J1bm5lcjo6cmVzdWx0KToK
KyAgICAgICAgKFF0RGlhbG9nUnVubmVyOjpvbkFjY2VwdGVkKToKKwogMjAxMS0xMS0xNyAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBbUXRd
W1dLMl0gQ2xlYW51cCBkZWFkIGNvZGUgaW4gUXRXZWJQYWdlUHJveHkuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRl
eCBkNGE3NDA1MTlkNmVmZTBhMzU5NzdkN2M0YTAxYThmNzQ2NmQ4ODg5Li44MWY2NzFkOGVmNGY2
NWYwNGUyNTVlMmM5NzY4MTExN2I5YTYyMThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9U
YXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTMxOCw2ICszMTgs
NyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvUXRQaW5jaEdlc3R1cmVSZWNvZ25p
emVyLmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFRhcEdlc3R1cmVSZWNvZ25pemVyLmggXAogICAg
IFVJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmggXAorICAgIFVJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1
bm5lci5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaCBcCiAgICAgVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5
LmggXApAQCAtNjI0LDYgKzYyNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9xdC9R
dFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRUYXBHZXN0
dXJlUmVjb2duaXplci5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmNwcCBcCisg
ICAgVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0
RG93bmxvYWRNYW5hZ2VyLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNw
cCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IDU2MmU3OTRkZmZm
MTVlMDRhMWIzZDVjMjhlZjQxMDcxY2ZhNjZmYTUuLjdkNTk0MjkwYmJiZjUwMjIyZjI4MzVmMGE3
NWZmMDE3ZWY3N2EzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcC5oIgogCisjaW5jbHVkZSAiUXREaWFsb2dSdW5u
ZXIuaCIKICNpbmNsdWRlICJRdFZpZXdJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VQ
cm94eS5oIgogI2luY2x1ZGUgIlV0aWxzUXQuaCIKQEAgLTM0LDcgKzM1LDYgQEAKICNpbmNsdWRl
IDxRdERlY2xhcmF0aXZlL1FRdWlja0NhbnZhcz4KICNpbmNsdWRlIDxRdFdpZGdldHMvUUZpbGVE
aWFsb2c+CiAjaW5jbHVkZSA8UXRXaWRnZXRzL1FJbnB1dERpYWxvZz4KLSNpbmNsdWRlIDxRdFdp
ZGdldHMvUU1lc3NhZ2VCb3g+CiAjaW5jbHVkZSA8V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5o
PgogCiBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6UVF1aWNrV2ViVmlld1ByaXZhdGUoKQpAQCAtMjIz
LDQ1ICsyMjMsNTYgQEAgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cyBR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6Y29tcHV0ZVZpZXdwb3J0Q28KIAogdm9pZCBRUXVpY2tXZWJW
aWV3UHJpdmF0ZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KGNvbnN0IFFTdHJpbmcmIGFsZXJ0VGV4dCkK
IHsKLSNpZm5kZWYgUVRfTk9fTUVTU0FHRUJPWAorICAgIGlmICghYWxlcnREaWFsb2cpCisgICAg
ICAgIHJldHVybjsKKwogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKLSAgICBjb25zdCBRU3RyaW5n
IHRpdGxlID0gUU9iamVjdDo6dHIoIkphdmFTY3JpcHQgQWxlcnQgLSAlMSIpLmFyZyhxLT51cmwo
KS5ob3N0KCkpOworICAgIFF0RGlhbG9nUnVubmVyIGRpYWxvZ1J1bm5lcjsKKyAgICBpZiAoIWRp
YWxvZ1J1bm5lci5pbml0Rm9yQWxlcnQoYWxlcnREaWFsb2cuZGF0YSgpLCBxLCBhbGVydFRleHQp
KQorICAgICAgICByZXR1cm47CisKICAgICBkaXNhYmxlTW91c2VFdmVudHMoKTsKLSAgICBRTWVz
c2FnZUJveDo6aW5mb3JtYXRpb24oMCwgdGl0bGUsIGVzY2FwZUh0bWwoYWxlcnRUZXh0KSwgUU1l
c3NhZ2VCb3g6Ok9rKTsKKyAgICBkaWFsb2dSdW5uZXIuZXhlYygpOwogICAgIGVuYWJsZU1vdXNl
RXZlbnRzKCk7Ci0jZWxzZQotICAgIFFfVU5VU0VEKGFsZXJ0VGV4dCk7Ci0jZW5kaWYKIH0KIAog
Ym9vbCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oY29uc3QgUVN0
cmluZyYgbWVzc2FnZSkKIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0jaWZuZGVmIFFUX05P
X01FU1NBR0VCT1gKKyAgICBpZiAoIWNvbmZpcm1EaWFsb2cpCisgICAgICAgIHJldHVybiB0cnVl
OworCiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwotICAgIGNvbnN0IFFTdHJpbmcgdGl0bGUgPSBR
T2JqZWN0Ojp0cigiSmF2YVNjcmlwdCBDb25maXJtIC0gJTEiKS5hcmcocS0+dXJsKCkuaG9zdCgp
KTsKKyAgICBRdERpYWxvZ1J1bm5lciBkaWFsb2dSdW5uZXI7CisgICAgaWYgKCFkaWFsb2dSdW5u
ZXIuaW5pdEZvckNvbmZpcm0oY29uZmlybURpYWxvZy5kYXRhKCksIHEsIG1lc3NhZ2UpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIGRpc2FibGVNb3VzZUV2ZW50cygpOwotICAgIHJlc3Vs
dCA9IFFNZXNzYWdlQm94OjpZZXMgPT0gUU1lc3NhZ2VCb3g6OmluZm9ybWF0aW9uKDAsIHRpdGxl
LCBlc2NhcGVIdG1sKG1lc3NhZ2UpLCBRTWVzc2FnZUJveDo6WWVzLCBRTWVzc2FnZUJveDo6Tm8p
OworICAgIGRpYWxvZ1J1bm5lci5leGVjKCk7CiAgICAgZW5hYmxlTW91c2VFdmVudHMoKTsKLSNl
bHNlCi0gICAgUV9VTlVTRUQobWVzc2FnZSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gcmVzdWx0Owor
CisgICAgcmV0dXJuIGRpYWxvZ1J1bm5lci53YXNBY2NlcHRlZCgpOwogfQogCiBRU3RyaW5nIFFR
dWlja1dlYlZpZXdQcml2YXRlOjpydW5KYXZhU2NyaXB0UHJvbXB0KGNvbnN0IFFTdHJpbmcmIG1l
c3NhZ2UsIGNvbnN0IFFTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgYm9vbCYgb2spCiB7Ci0jaWZuZGVm
IFFUX05PX0lOUFVURElBTE9HCisgICAgaWYgKCFwcm9tcHREaWFsb2cpIHsKKyAgICAgICAgb2sg
PSB0cnVlOworICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOworICAgIH0KKwogICAgIFFfUShR
UXVpY2tXZWJWaWV3KTsKLSAgICBjb25zdCBRU3RyaW5nIHRpdGxlID0gUU9iamVjdDo6dHIoIkph
dmFTY3JpcHQgUHJvbXB0IC0gJTEiKS5hcmcocS0+dXJsKCkuaG9zdCgpKTsKKyAgICBRdERpYWxv
Z1J1bm5lciBkaWFsb2dSdW5uZXI7CisgICAgaWYgKCFkaWFsb2dSdW5uZXIuaW5pdEZvclByb21w
dChwcm9tcHREaWFsb2cuZGF0YSgpLCBxLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUpKSB7CisgICAg
ICAgIG9rID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKKyAgICB9CisKICAg
ICBkaXNhYmxlTW91c2VFdmVudHMoKTsKLSAgICBRU3RyaW5nIHJlc3VsdCA9IFFJbnB1dERpYWxv
Zzo6Z2V0VGV4dCgwLCB0aXRsZSwgZXNjYXBlSHRtbChtZXNzYWdlKSwgUUxpbmVFZGl0OjpOb3Jt
YWwsIGRlZmF1bHRWYWx1ZSwgJm9rKTsKKyAgICBkaWFsb2dSdW5uZXIuZXhlYygpOwogICAgIGVu
YWJsZU1vdXNlRXZlbnRzKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgUV9VTlVT
RUQobWVzc2FnZSk7Ci0gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKLSNlbmRpZgorCisgICAgb2sg
PSBkaWFsb2dSdW5uZXIud2FzQWNjZXB0ZWQoKTsKKyAgICByZXR1cm4gZGlhbG9nUnVubmVyLnJl
c3VsdCgpOwogfQogCiB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpjaG9vc2VGaWxlcyhXS09w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYg
c2VsZWN0ZWRGaWxlTmFtZXMsIFF0Vmlld0ludGVyZmFjZTo6RmlsZUNob29zZXJUeXBlIHR5cGUp
CkBAIC0zOTAsNiArNDAxLDUxIEBAIHZvaWQgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6c2V0
VXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKGJvb2wgZW5hYmxlKQogICAgIGQtPnNldFVz
ZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cihlbmFibGUpOwogfQogCitRRGVjbGFyYXRpdmVD
b21wb25lbnQqIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OmFsZXJ0RGlhbG9nKCkgY29uc3QK
K3sKKyAgICBRX0QoY29uc3QgUVF1aWNrV2ViVmlldyk7CisgICAgcmV0dXJuIGQtPmFsZXJ0RGlh
bG9nLmRhdGEoKTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpzZXRBbGVy
dERpYWxvZyhRRGVjbGFyYXRpdmVDb21wb25lbnQqIGFsZXJ0RGlhbG9nKQoreworICAgIFFfRChR
UXVpY2tXZWJWaWV3KTsKKyAgICBpZiAoZC0+YWxlcnREaWFsb2cuZGF0YSgpID09IGFsZXJ0RGlh
bG9nKQorICAgICAgICByZXR1cm47CisgICAgZC0+YWxlcnREaWFsb2cucmVzZXQoYWxlcnREaWFs
b2cpOworICAgIGVtaXQgYWxlcnREaWFsb2dDaGFuZ2VkKCk7Cit9CisKK1FEZWNsYXJhdGl2ZUNv
bXBvbmVudCogUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6Y29uZmlybURpYWxvZygpIGNvbnN0
Cit7CisgICAgUV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOworICAgIHJldHVybiBkLT5jb25maXJt
RGlhbG9nLmRhdGEoKTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpzZXRD
b25maXJtRGlhbG9nKFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogY29uZmlybURpYWxvZykKK3sKKyAg
ICBRX0QoUVF1aWNrV2ViVmlldyk7CisgICAgaWYgKGQtPmNvbmZpcm1EaWFsb2cuZGF0YSgpID09
IGNvbmZpcm1EaWFsb2cpCisgICAgICAgIHJldHVybjsKKyAgICBkLT5jb25maXJtRGlhbG9nLnJl
c2V0KGNvbmZpcm1EaWFsb2cpOworICAgIGVtaXQgY29uZmlybURpYWxvZ0NoYW5nZWQoKTsKK30K
KworUURlY2xhcmF0aXZlQ29tcG9uZW50KiBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpwcm9t
cHREaWFsb2coKSBjb25zdAoreworICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3KTsKKyAgICBy
ZXR1cm4gZC0+cHJvbXB0RGlhbG9nLmRhdGEoKTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3RXhw
ZXJpbWVudGFsOjpzZXRQcm9tcHREaWFsb2coUURlY2xhcmF0aXZlQ29tcG9uZW50KiBwcm9tcHRE
aWFsb2cpCit7CisgICAgUV9EKFFRdWlja1dlYlZpZXcpOworICAgIGlmIChkLT5wcm9tcHREaWFs
b2cuZGF0YSgpID09IHByb21wdERpYWxvZykKKyAgICAgICAgcmV0dXJuOworICAgIGQtPnByb21w
dERpYWxvZy5yZXNldChwcm9tcHREaWFsb2cpOworICAgIGVtaXQgcHJvbXB0RGlhbG9nQ2hhbmdl
ZCgpOworfQorCiBRUXVpY2tXZWJWaWV3OjpRUXVpY2tXZWJWaWV3KFFRdWlja0l0ZW0qIHBhcmVu
dCkKICAgICA6IFFRdWlja0l0ZW0ocGFyZW50KQogICAgICwgZF9wdHIobmV3IFFRdWlja1dlYlZp
ZXdQcml2YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlld19wLmgKaW5kZXggZDczZmFhNjllMjZjYTU3YmQ0MjBmNjA0YWU0Zjg3MmE2ZTQ2ZTg4
Mi4uYWY4NmFjNDE0ZGQyNjM3NzU2MWRlYzFmYjdiYWFjMjg1MDg5M2JiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCkBAIC0yNCw2
ICsyNCw3IEBACiAjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgogI2luY2x1ZGUgPFF0RGVjbGFy
YXRpdmUvcXF1aWNraXRlbS5oPgogCitjbGFzcyBRRGVjbGFyYXRpdmVDb21wb25lbnQ7CiBjbGFz
cyBRUXVpY2tXZWJQYWdlOwogY2xhc3MgUVF1aWNrV2ViVmlld1ByaXZhdGU7CiBjbGFzcyBRUXVp
Y2tXZWJWaWV3RXhwZXJpbWVudGFsOwpAQCAtMTQyLDExICsxNDMsMjggQEAgUU1MX0RFQ0xBUkVf
VFlQRShRUXVpY2tXZWJWaWV3KQogCiBjbGFzcyBRV0VCS0lUX0VYUE9SVCBRUXVpY2tXZWJWaWV3
RXhwZXJpbWVudGFsIDogcHVibGljIFFPYmplY3QgewogICAgIFFfT0JKRUNUCisgICAgUV9QUk9Q
RVJUWShRRGVjbGFyYXRpdmVDb21wb25lbnQqIGFsZXJ0RGlhbG9nIFJFQUQgYWxlcnREaWFsb2cg
V1JJVEUgc2V0QWxlcnREaWFsb2cgTk9USUZZIGFsZXJ0RGlhbG9nQ2hhbmdlZCkKKyAgICBRX1BS
T1BFUlRZKFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogY29uZmlybURpYWxvZyBSRUFEIGNvbmZpcm1E
aWFsb2cgV1JJVEUgc2V0Q29uZmlybURpYWxvZyBOT1RJRlkgY29uZmlybURpYWxvZ0NoYW5nZWQp
CisgICAgUV9QUk9QRVJUWShRRGVjbGFyYXRpdmVDb21wb25lbnQqIHByb21wdERpYWxvZyBSRUFE
IHByb21wdERpYWxvZyBXUklURSBzZXRQcm9tcHREaWFsb2cgTk9USUZZIHByb21wdERpYWxvZ0No
YW5nZWQpCisKIHB1YmxpYzoKICAgICBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsKFFRdWlja1dl
YlZpZXcqIHdlYlZpZXcpOwogICAgIHZpcnR1YWwgflFRdWlja1dlYlZpZXdFeHBlcmltZW50YWwo
KTsKIAogICAgIHZvaWQgc2V0VXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKGJvb2wgZW5h
YmxlKTsKKworICAgIFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogYWxlcnREaWFsb2coKSBjb25zdDsK
KyAgICB2b2lkIHNldEFsZXJ0RGlhbG9nKFFEZWNsYXJhdGl2ZUNvbXBvbmVudCopOworICAgIFFE
ZWNsYXJhdGl2ZUNvbXBvbmVudCogY29uZmlybURpYWxvZygpIGNvbnN0OworICAgIHZvaWQgc2V0
Q29uZmlybURpYWxvZyhRRGVjbGFyYXRpdmVDb21wb25lbnQqKTsKKyAgICBRRGVjbGFyYXRpdmVD
b21wb25lbnQqIHByb21wdERpYWxvZygpIGNvbnN0OworICAgIHZvaWQgc2V0UHJvbXB0RGlhbG9n
KFFEZWNsYXJhdGl2ZUNvbXBvbmVudCopOworCitRX1NJR05BTFM6CisgICAgdm9pZCBhbGVydERp
YWxvZ0NoYW5nZWQoKTsKKyAgICB2b2lkIGNvbmZpcm1EaWFsb2dDaGFuZ2VkKCk7CisgICAgdm9p
ZCBwcm9tcHREaWFsb2dDaGFuZ2VkKCk7CisKIHByaXZhdGU6CiAgICAgUVF1aWNrV2ViVmlldyog
cV9wdHI7CiAgICAgUVF1aWNrV2ViVmlld1ByaXZhdGUqIGRfcHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCmluZGV4IDdkYjE2
ZTc2YjhkYzljMjU5ZWM4NDgyMjI1ZjgxNzdlYWRiMmFjYmEuLmU5YjFiMjQzYzdjMDhmNzA0M2Uw
Yjc3NGUzMThiNzRmNzVjZGI1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgPFF0Q29yZS9RT2JqZWN0PgogI2luY2x1ZGUgPFF0Q29yZS9RU2NvcGVkUG9pbnRlcj4KKyNp
bmNsdWRlIDxRdERlY2xhcmF0aXZlL1FEZWNsYXJhdGl2ZUNvbXBvbmVudD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAKIGNsYXNzIFF0V2ViUGFnZVByb3h5OwpAQCAtMzksOCArNDAsOCBAQCBj
bGFzcyBRRmlsZURpYWxvZzsKIFFUX0VORF9OQU1FU1BBQ0UKIAogY2xhc3MgUVdFQktJVF9FWFBP
UlQgUVF1aWNrV2ViVmlld1ByaXZhdGUgOiBwdWJsaWMgV2ViS2l0OjpRdFBvbGljeUludGVyZmFj
ZSB7Ci0KICAgICBRX0RFQ0xBUkVfUFVCTElDKFFRdWlja1dlYlZpZXcpCisgICAgZnJpZW5kIGNs
YXNzIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw7CiBwdWJsaWM6CiAgICAgUVF1aWNrV2ViVmll
d1ByaXZhdGUoKTsKICAgICB2aXJ0dWFsIH5RUXVpY2tXZWJWaWV3UHJpdmF0ZSgpIHsgfQpAQCAt
MTEwLDYgKzExMSwxMCBAQCBwcml2YXRlOgogICAgIFFTY29wZWRQb2ludGVyPFdlYktpdDo6UXRW
aWV3SW50ZXJmYWNlPiB2aWV3SW50ZXJmYWNlOwogICAgIFFTY29wZWRQb2ludGVyPFF0Vmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZT4gaW50ZXJhY3Rpb25FbmdpbmU7CiAKKyAgICBRU2NvcGVkUG9p
bnRlcjxRRGVjbGFyYXRpdmVDb21wb25lbnQ+IGFsZXJ0RGlhbG9nOworICAgIFFTY29wZWRQb2lu
dGVyPFFEZWNsYXJhdGl2ZUNvbXBvbmVudD4gY29uZmlybURpYWxvZzsKKyAgICBRU2NvcGVkUG9p
bnRlcjxRRGVjbGFyYXRpdmVDb21wb25lbnQ+IHByb21wdERpYWxvZzsKKwogICAgIFFRdWlja1dl
YlZpZXcqIHFfcHRyOwogICAgIFFTY29wZWRQb2ludGVyPFF0V2ViUGFnZVByb3h5PiBwYWdlUHJv
eHk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
cW1sdGVzdHMvV2ViVmlldy90c3RfamF2YVNjcmlwdERpYWxvZ3MucW1sIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9qYXZhU2NyaXB0
RGlhbG9ncy5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYwYmU0MWZiMzZmYmVjMjk0OGMzNDM4ZmE1N2JlNjBi
NjQ2YTdjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfamF2YVNjcmlwdERpYWxvZ3MucW1sCkBAIC0w
LDAgKzEsMTI3IEBACitpbXBvcnQgUXRRdWljayAyLjAKK2ltcG9ydCBRdFRlc3QgMS4wCitpbXBv
cnQgUXRXZWJLaXQgMy4wCitpbXBvcnQgUXRXZWJLaXQuZXhwZXJpbWVudGFsIDMuMAorCitXZWJW
aWV3IHsKKyAgICBpZDogd2ViVmlldworCisgICAgcHJvcGVydHkgYm9vbCBtb2RlbE1lc3NhZ2VF
cXVhbHNNZXNzYWdlOiBmYWxzZQorICAgIHByb3BlcnR5IHN0cmluZyBtZXNzYWdlRnJvbUFsZXJ0
RGlhbG9nOiAiIgorICAgIHByb3BlcnR5IGludCBjb25maXJtQ291bnQ6IDAKKyAgICBwcm9wZXJ0
eSBpbnQgcHJvbXB0Q291bnQ6IDAKKworICAgIGV4cGVyaW1lbnRhbC5hbGVydERpYWxvZzogSXRl
bSB7CisgICAgICAgIFRpbWVyIHsKKyAgICAgICAgICAgIHJ1bm5pbmc6IHRydWUKKyAgICAgICAg
ICAgIGludGVydmFsOiAxCisgICAgICAgICAgICBvblRyaWdnZXJlZDogeworICAgICAgICAgICAg
ICAgIHdlYlZpZXcubWVzc2FnZUZyb21BbGVydERpYWxvZyA9IG1lc3NhZ2UKKyAgICAgICAgICAg
ICAgICB3ZWJWaWV3Lm1vZGVsTWVzc2FnZUVxdWFsc01lc3NhZ2UgPSBCb29sZWFuKG1vZGVsLm1l
c3NhZ2UgPT0gbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBtb2RlbC5kaXNtaXNzKCkKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGV4cGVyaW1lbnRhbC5jb25maXJtRGlh
bG9nOiBJdGVtIHsKKyAgICAgICAgVGltZXIgeworICAgICAgICAgICAgcnVubmluZzogdHJ1ZQor
ICAgICAgICAgICAgaW50ZXJ2YWw6IDEKKyAgICAgICAgICAgIG9uVHJpZ2dlcmVkOiB7CisgICAg
ICAgICAgICAgICAgd2ViVmlldy5jb25maXJtQ291bnQgKz0gMQorICAgICAgICAgICAgICAgIGlm
IChtZXNzYWdlID09ICJBQ0NFUFQiKQorICAgICAgICAgICAgICAgICAgICBtb2RlbC5hY2NlcHQo
KQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbW9kZWwucmVqZWN0
KCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGV4cGVyaW1lbnRhbC5w
cm9tcHREaWFsb2c6IEl0ZW0geworICAgICAgICBUaW1lciB7CisgICAgICAgICAgICBydW5uaW5n
OiB0cnVlCisgICAgICAgICAgICBpbnRlcnZhbDogMQorICAgICAgICAgICAgb25UcmlnZ2VyZWQ6
IHsKKyAgICAgICAgICAgICAgICB3ZWJWaWV3LnByb21wdENvdW50ICs9IDEKKyAgICAgICAgICAg
ICAgICBpZiAobWVzc2FnZSA9PSAiUkVKRUNUIikKKyAgICAgICAgICAgICAgICAgICAgbW9kZWwu
cmVqZWN0KCkKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IHJldmVyc2VkRGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlLnNwbGl0KCIiKS5yZXZlcnNlKCku
am9pbigiIikKKyAgICAgICAgICAgICAgICAgICAgbW9kZWwuYWNjZXB0KHJldmVyc2VkRGVmYXVs
dFZhbHVlKQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlkOiBsb2FkU3B5CisgICAgICAgIHRhcmdl
dDogd2ViVmlldworICAgICAgICBzaWduYWxOYW1lOiAibG9hZFN1Y2NlZWRlZCIKKyAgICB9CisK
KyAgICBUZXN0Q2FzZSB7CisgICAgICAgIGlkOiB0ZXN0CisgICAgICAgIG5hbWU6ICJXZWJWaWV3
SmF2YVNjcmlwdERpYWxvZ3MiCisKKyAgICAgICAgZnVuY3Rpb24gaW5pdCgpIHsKKyAgICAgICAg
ICAgIHdlYlZpZXcubW9kZWxNZXNzYWdlRXF1YWxzTWVzc2FnZSA9IGZhbHNlCisgICAgICAgICAg
ICB3ZWJWaWV3Lm1lc3NhZ2VGcm9tQWxlcnREaWFsb2cgPSAiIgorICAgICAgICAgICAgd2ViVmll
dy5jb25maXJtQ291bnQgPSAwCisgICAgICAgICAgICB3ZWJWaWV3LnByb21wdENvdW50ID0gMAor
ICAgICAgICAgICAgbG9hZFNweS5jbGVhcigpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biB0ZXN0X2FsZXJ0KCkgeworICAgICAgICAgICAgd2ViVmlldy5sb2FkKFF0LnJlc29sdmVkVXJs
KCIuLi9jb21tb24vYWxlcnQuaHRtbCIpKQorICAgICAgICAgICAgbG9hZFNweS53YWl0KCkKKyAg
ICAgICAgICAgIGNvbXBhcmUobG9hZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUo
d2ViVmlldy5tZXNzYWdlRnJvbUFsZXJ0RGlhbG9nLCAiSGVsbG8gUXQiKQorICAgICAgICAgICAg
dmVyaWZ5KHdlYlZpZXcubW9kZWxNZXNzYWdlRXF1YWxzTWVzc2FnZSkKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHRlc3RfYWxlcnRXaXRob3V0RGlhbG9nKCkgeworICAgICAgICAgICAg
c2tpcCgiU2V0dGluZyBleHBlcmltZW50YWwgcHJvcGVydGllcyBmcm9tIEpTIGNvZGUgaXNuJ3Qg
d29ya2luZyIpCisgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC5hbGVydERpYWxvZyA9
IG51bGwKKyAgICAgICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9u
L2FsZXJ0Lmh0bWwiKSkKKyAgICAgICAgICAgIGxvYWRTcHkud2FpdCgpCisgICAgICAgICAgICBj
b21wYXJlKGxvYWRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcubWVz
c2FnZUZyb21BbGVydERpYWxvZywgIiIpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0
ZXN0X2NvbmZpcm0oKSB7CisgICAgICAgICAgICB3ZWJWaWV3LmxvYWQoUXQucmVzb2x2ZWRVcmwo
Ii4uL2NvbW1vbi9jb25maXJtLmh0bWwiKSkKKyAgICAgICAgICAgIGxvYWRTcHkud2FpdCgpCisg
ICAgICAgICAgICBjb21wYXJlKGxvYWRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJl
KHdlYlZpZXcuY29uZmlybUNvdW50LCAyKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRp
dGxlLCAiQUNDRVBURUQgUkVKRUNURUQiKQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
dGVzdF9jb25maXJtV2l0aG91dERpYWxvZygpIHsKKyAgICAgICAgICAgIHNraXAoIlNldHRpbmcg
ZXhwZXJpbWVudGFsIHByb3BlcnRpZXMgZnJvbSBKUyBjb2RlIGlzbid0IHdvcmtpbmciKQorICAg
ICAgICAgICAgd2ViVmlldy5leHBlcmltZW50YWwuY29uZmlybURpYWxvZyA9IG51bGwKKyAgICAg
ICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2NvbmZpcm0uaHRt
bCIpKQorICAgICAgICAgICAgbG9hZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUobG9h
ZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jb25maXJtQ291bnQs
IDApCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUsICJBQ0NFUFRFRCBBQ0NFUFRF
RCIpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X3Byb21wdCgpIHsKKyAgICAg
ICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Byb21wdC5odG1s
IikpCisgICAgICAgICAgICBsb2FkU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZShsb2Fk
U3B5LmNvdW50LCAxKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnByb21wdENvdW50LCAy
KQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRpdGxlLCAidFEgb2xsZUgiKQorICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9wcm9tcHRXaXRob3V0RGlhbG9nKCkgeworICAg
ICAgICAgICAgc2tpcCgiU2V0dGluZyBleHBlcmltZW50YWwgcHJvcGVydGllcyBmcm9tIEpTIGNv
ZGUgaXNuJ3Qgd29ya2luZyIpCisgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC5wcm9t
cHREaWFsb2cgPSBudWxsCisgICAgICAgICAgICB3ZWJWaWV3LmxvYWQoUXQucmVzb2x2ZWRVcmwo
Ii4uL2NvbW1vbi9wcm9tcHQuaHRtbCIpKQorICAgICAgICAgICAgbG9hZFNweS53YWl0KCkKKyAg
ICAgICAgICAgIGNvbXBhcmUobG9hZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUo
d2ViVmlldy5wcm9tcHRDb3VudCwgMCkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy50aXRs
ZSwgIkZBSUwiKQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vYWxlcnQuaHRtbCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2FsZXJ0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTc1YjlhNjBmZDliYWVjYmE1Yzk2ZGU0Mjc1MDkxZTlkYWNhYmY3
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvcW1sdGVzdHMvY29tbW9uL2FsZXJ0Lmh0bWwKQEAgLTAsMCArMSw4IEBACis8IWRvY3R5cGUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PmFsZXJ0KCJIZWxsbyBRdCIpOzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9jb25maXJtLmh0
bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1v
bi9jb25maXJtLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRkNjA4MWQ0NWNjMzk3YzBlM2I5NzlkZDAwZDA3
OGRjZmQwM2I1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2NvbmZpcm0uaHRtbApAQCAtMCwwICsxLDE5IEBA
Cis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZG9jdW1lbnQudGl0
bGUgPSAiIjsKK2Z1bmN0aW9uIHVwZGF0ZVRpdGxlKGFjY2VwdGVkKSB7CisgICAgaWYgKGFjY2Vw
dGVkKQorICAgICAgICBkb2N1bWVudC50aXRsZSArPSAiIEFDQ0VQVEVEIjsKKyAgICBlbHNlCisg
ICAgICAgIGRvY3VtZW50LnRpdGxlICs9ICIgUkVKRUNURUQiOworfQorCit1cGRhdGVUaXRsZShj
b25maXJtKCJBQ0NFUFQiKSk7Cit1cGRhdGVUaXRsZShjb25maXJtKCJSRUpFQ1QiKSk7Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vcHJvbXB0
Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2Nv
bW1vbi9wcm9tcHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzVlMzAyMDQwZjgxN2M4NjhkYzFmYjRkYzhk
MTZkNjBlZmY2NTdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vcHJvbXB0Lmh0bWwKQEAgLTAsMCArMSwxMyBA
QAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2RvY3VtZW50LnRp
dGxlID0gcHJvbXB0KCJQbGVhc2UsIHJldmVyc2UgdGhlIGRlZmF1bHQgdmFsdWUiLCAiSGVsbG8g
UXQiKTsKK2lmIChwcm9tcHQoIlJFSkVDVCIpICE9PSBudWxsKSB7CisgICAgZG9jdW1lbnQudGl0
bGUgPSAiRkFJTCI7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9x
bWx0ZXN0cy9xbWx0ZXN0cy5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybwppbmRleCA1OTk0N2IwOTFlYjk5MWM4MTc0YzAyOGIz
ZWUzOTQyMjM3YWY0NDc0Li4yNmJjZmRjNjY1ZmExOWIwMGY5MTgxNGUyOGQ5ZWE4Y2IyOGM2NDA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRl
c3RzL3FtbHRlc3RzLnBybworKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybwpAQCAtMTYsNiArMTYsNyBAQCBERUZJTkVTICs9IFFV
SUNLX1RFU1RfU09VUkNFX0RJUj1cIlxcXCIkJFBXRFxcXCJcIgogREVGSU5FUyArPSBJTVBPUlRf
RElSPVwiXFxcIiQke1JPT1RfQlVJTERfRElSfSQke1FNQUtFX0RJUl9TRVB9aW1wb3J0c1xcXCJc
IgogCiBPVEhFUl9GSUxFUyArPSBcCisgICAgV2ViVmlldy90c3RfamF2YVNjcmlwdERpYWxvZ3Mu
cW1sIFwKICAgICBXZWJWaWV3L3RzdF9wcm9wZXJ0aWVzLnFtbCBcCiAgICAgV2ViVmlldy90c3Rf
bG9hZFplcm9TaXplVmlldy5xbWwgXAogICAgIFdlYlZpZXcvdHN0X2xvYWRGYWlsLnFtbCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREaWFsb2dSdW5uZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44Y2IyMDliZWIyOGJkYmUyN2NkOGU2YWY5YWVmMzM3YTQ3ZWEyM2VmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVyLmNwcApA
QCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJRdERpYWxvZ1J1bm5lci5oIgorCisjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9R
RGVjbGFyYXRpdmVDb21wb25lbnQ+CisjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9RRGVjbGFyYXRp
dmVDb250ZXh0PgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvUURlY2xhcmF0aXZlRW5naW5lPgor
I2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvUVF1aWNrSXRlbT4KKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorCitRdERpYWxvZ1J1bm5lcjo6UXREaWFsb2dSdW5uZXIoKQorICAgIDogUUV2ZW50
TG9vcCgpCisgICAgLCBtX3dhc0FjY2VwdGVkKGZhbHNlKQoreworfQorCitRdERpYWxvZ1J1bm5l
cjo6flF0RGlhbG9nUnVubmVyKCkKK3sKK30KKworY2xhc3MgRGlhbG9nQ29udGV4dE9iamVjdCA6
IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAorICAgIFFfUFJPUEVSVFkoUVN0cmluZyBt
ZXNzYWdlIFJFQUQgbWVzc2FnZSBDT05TVEFOVCkKKyAgICBRX1BST1BFUlRZKFFTdHJpbmcgZGVm
YXVsdFZhbHVlIFJFQUQgZGVmYXVsdFZhbHVlIENPTlNUQU5UKQorCitwdWJsaWM6CisgICAgRGlh
bG9nQ29udGV4dE9iamVjdChjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBRU3RyaW5nJiBk
ZWZhdWx0VmFsdWUgPSBRU3RyaW5nKCkpCisgICAgICAgIDogUU9iamVjdCgpCisgICAgICAgICwg
bV9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgICwgbV9kZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVl
KQorICAgIHsKKyAgICB9CisgICAgUVN0cmluZyBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9t
ZXNzYWdlOyB9CisgICAgUVN0cmluZyBkZWZhdWx0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2Rl
ZmF1bHRWYWx1ZTsgfQorCitwdWJsaWMgc2xvdHM6CisgICAgdm9pZCBkaXNtaXNzKCkgeyBlbWl0
IGRpc21pc3NlZCgpOyB9CisgICAgdm9pZCBhY2NlcHQoKSB7IGVtaXQgYWNjZXB0ZWQoKTsgfQor
ICAgIHZvaWQgYWNjZXB0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCkgeyBlbWl0IGFjY2VwdGVkKHJl
c3VsdCk7IH0KKyAgICB2b2lkIHJlamVjdCgpIHsgZW1pdCByZWplY3RlZCgpOyB9CisKK3NpZ25h
bHM6CisgICAgdm9pZCBkaXNtaXNzZWQoKTsKKyAgICB2b2lkIGFjY2VwdGVkKCk7CisgICAgdm9p
ZCBhY2NlcHRlZChjb25zdCBRU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgcmVqZWN0ZWQoKTsK
KworcHJpdmF0ZToKKyAgICBRU3RyaW5nIG1fbWVzc2FnZTsKKyAgICBRU3RyaW5nIG1fZGVmYXVs
dFZhbHVlOworfTsKKworYm9vbCBRdERpYWxvZ1J1bm5lcjo6aW5pdEZvckFsZXJ0KFFEZWNsYXJh
dGl2ZUNvbXBvbmVudCogY29tcG9uZW50LCBRUXVpY2tJdGVtKiBkaWFsb2dQYXJlbnQsIGNvbnN0
IFFTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgRGlhbG9nQ29udGV4dE9iamVjdCogY29udGV4dE9i
amVjdCA9IG5ldyBEaWFsb2dDb250ZXh0T2JqZWN0KG1lc3NhZ2UpOworICAgIGlmICghY3JlYXRl
RGlhbG9nKGNvbXBvbmVudCwgZGlhbG9nUGFyZW50LCBjb250ZXh0T2JqZWN0KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwoZGlzbWlz
c2VkKCkpLCBTTE9UKHF1aXQoKSkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFF0RGlh
bG9nUnVubmVyOjppbml0Rm9yQ29uZmlybShRRGVjbGFyYXRpdmVDb21wb25lbnQqIGNvbXBvbmVu
dCwgUVF1aWNrSXRlbSogZGlhbG9nUGFyZW50LCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKQorewor
ICAgIERpYWxvZ0NvbnRleHRPYmplY3QqIGNvbnRleHRPYmplY3QgPSBuZXcgRGlhbG9nQ29udGV4
dE9iamVjdChtZXNzYWdlKTsKKyAgICBpZiAoIWNyZWF0ZURpYWxvZyhjb21wb25lbnQsIGRpYWxv
Z1BhcmVudCwgY29udGV4dE9iamVjdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNv
bm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKGFjY2VwdGVkKCkpLCBTTE9UKG9uQWNjZXB0ZWQo
KSkpOworICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKGFjY2VwdGVkKCkpLCBTTE9U
KHF1aXQoKSkpOworICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKHJlamVjdGVkKCkp
LCBTTE9UKHF1aXQoKSkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFF0RGlhbG9nUnVu
bmVyOjppbml0Rm9yUHJvbXB0KFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogY29tcG9uZW50LCBRUXVp
Y2tJdGVtKiBkaWFsb2dQYXJlbnQsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFFTdHJp
bmcmIGRlZmF1bHRWYWx1ZSkKK3sKKyAgICBEaWFsb2dDb250ZXh0T2JqZWN0KiBjb250ZXh0T2Jq
ZWN0ID0gbmV3IERpYWxvZ0NvbnRleHRPYmplY3QobWVzc2FnZSwgZGVmYXVsdFZhbHVlKTsKKyAg
ICBpZiAoIWNyZWF0ZURpYWxvZyhjb21wb25lbnQsIGRpYWxvZ1BhcmVudCwgY29udGV4dE9iamVj
dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwg
U0lHTkFMKGFjY2VwdGVkKFFTdHJpbmcpKSwgU0xPVChvbkFjY2VwdGVkKFFTdHJpbmcpKSk7Cisg
ICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwoYWNjZXB0ZWQoUVN0cmluZykpLCBTTE9U
KHF1aXQoKSkpOworICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKHJlamVjdGVkKCkp
LCBTTE9UKHF1aXQoKSkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFF0RGlhbG9nUnVu
bmVyOjpjcmVhdGVEaWFsb2coUURlY2xhcmF0aXZlQ29tcG9uZW50KiBjb21wb25lbnQsIFFRdWlj
a0l0ZW0qIGRpYWxvZ1BhcmVudCwgUU9iamVjdCogY29udGV4dE9iamVjdCkKK3sKKyAgICBRRGVj
bGFyYXRpdmVDb250ZXh0KiBiYXNlQ29udGV4dCA9IGNvbXBvbmVudC0+Y3JlYXRpb25Db250ZXh0
KCk7CisgICAgaWYgKCFiYXNlQ29udGV4dCkKKyAgICAgICAgYmFzZUNvbnRleHQgPSBRRGVjbGFy
YXRpdmVFbmdpbmU6OmNvbnRleHRGb3JPYmplY3QoZGlhbG9nUGFyZW50KTsKKyAgICBtX2RpYWxv
Z0NvbnRleHQgPSBhZG9wdFB0cihuZXcgUURlY2xhcmF0aXZlQ29udGV4dChiYXNlQ29udGV4dCkp
OworCisgICAgLy8gVGhpcyBtYWtlcyBib3RoICJtZXNzYWdlIiBhbmQgIm1vZGVsLm1lc3NhZ2Ui
IHdvcmsgZm9yIHRoZSBkaWFsb2csIGp1c3QgbGlrZSBRdFF1aWNrJ3MgTGlzdFZpZXcgZGVsZWdh
dGVzLgorICAgIGNvbnRleHRPYmplY3QtPnNldFBhcmVudChtX2RpYWxvZ0NvbnRleHQuZ2V0KCkp
OworICAgIG1fZGlhbG9nQ29udGV4dC0+c2V0Q29udGV4dFByb3BlcnR5KFFMYXRpbjFTdHJpbmco
Im1vZGVsIiksIGNvbnRleHRPYmplY3QpOworICAgIG1fZGlhbG9nQ29udGV4dC0+c2V0Q29udGV4
dE9iamVjdChjb250ZXh0T2JqZWN0KTsKKworICAgIFFPYmplY3QqIG9iamVjdCA9IGNvbXBvbmVu
dC0+Y3JlYXRlKG1fZGlhbG9nQ29udGV4dC5nZXQoKSk7CisgICAgaWYgKCFvYmplY3QpIHsKKyAg
ICAgICAgbV9kaWFsb2dDb250ZXh0LmNsZWFyKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBtX2RpYWxvZyA9IGFkb3B0UHRyKHFvYmplY3RfY2FzdDxRUXVpY2tJdGVtKj4o
b2JqZWN0KSk7CisgICAgaWYgKCFtX2RpYWxvZykgeworICAgICAgICBtX2RpYWxvZ0NvbnRleHQu
Y2xlYXIoKTsKKyAgICAgICAgbV9kaWFsb2cuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIG1fZGlhbG9nLT5zZXRQYXJlbnRJdGVtKGRpYWxvZ1BhcmVudCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKKyNpbmNsdWRlICJRdERpYWxvZ1J1bm5lci5tb2MiCisjaW5j
bHVkZSAibW9jX1F0RGlhbG9nUnVubmVyLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1bm5lci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0RGlhbG9nUnVubmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQxYzlmMzFlZGM2OTIyMzFjYWVkMmZk
NzAyYmJlNjQ4YjdkMDlmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdERpYWxvZ1J1bm5lci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJv
Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaWZuZGVmIFF0RGlhbG9nUnVubmVyX2gKKyNkZWZpbmUgUXREaWFsb2dSdW5uZXJfaAor
CisjaW5jbHVkZSA8UXRDb3JlL1FFdmVudExvb3A+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgor
CitjbGFzcyBRRGVjbGFyYXRpdmVDb21wb25lbnQ7CitjbGFzcyBRRGVjbGFyYXRpdmVDb250ZXh0
OworY2xhc3MgUVF1aWNrSXRlbTsKKworY2xhc3MgUXREaWFsb2dSdW5uZXIgOiBwdWJsaWMgUUV2
ZW50TG9vcCB7CisgICAgUV9PQkpFQ1QKKworcHVibGljOgorICAgIFF0RGlhbG9nUnVubmVyKCk7
CisgICAgdmlydHVhbCB+UXREaWFsb2dSdW5uZXIoKTsKKworICAgIGJvb2wgaW5pdEZvckFsZXJ0
KFFEZWNsYXJhdGl2ZUNvbXBvbmVudCosIFFRdWlja0l0ZW0qIGRpYWxvZ1BhcmVudCwgY29uc3Qg
UVN0cmluZyYgbWVzc2FnZSk7CisgICAgYm9vbCBpbml0Rm9yQ29uZmlybShRRGVjbGFyYXRpdmVD
b21wb25lbnQqLCBRUXVpY2tJdGVtKiBkaWFsb2dQYXJlbnQsIGNvbnN0IFFTdHJpbmcmIG1lc3Nh
Z2UpOworICAgIGJvb2wgaW5pdEZvclByb21wdChRRGVjbGFyYXRpdmVDb21wb25lbnQqLCBRUXVp
Y2tJdGVtKiBkaWFsb2dQYXJlbnQsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFFTdHJp
bmcmIGRlZmF1bHRWYWx1ZSk7CisKKyAgICBib29sIHdhc0FjY2VwdGVkKCkgY29uc3QgeyByZXR1
cm4gbV93YXNBY2NlcHRlZDsgfQorICAgIFFTdHJpbmcgcmVzdWx0KCkgY29uc3QgeyByZXR1cm4g
bV9yZXN1bHQ7IH0KKworcHVibGljIHNsb3RzOgorICAgIHZvaWQgb25BY2NlcHRlZChjb25zdCBR
U3RyaW5nJiByZXN1bHQgPSBRU3RyaW5nKCkpCisgICAgeworICAgICAgICBtX3dhc0FjY2VwdGVk
ID0gdHJ1ZTsKKyAgICAgICAgbV9yZXN1bHQgPSByZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgor
ICAgIGJvb2wgY3JlYXRlRGlhbG9nKFFEZWNsYXJhdGl2ZUNvbXBvbmVudCosIFFRdWlja0l0ZW0q
IGRpYWxvZ1BhcmVudCwgUU9iamVjdCogY29udGV4dE9iamVjdCk7CisKKyAgICBPd25QdHI8UURl
Y2xhcmF0aXZlQ29udGV4dD4gbV9kaWFsb2dDb250ZXh0OworICAgIE93blB0cjxRUXVpY2tJdGVt
PiBtX2RpYWxvZzsKKyAgICBRU3RyaW5nIG1fcmVzdWx0OworICAgIGJvb2wgbV93YXNBY2NlcHRl
ZDsKK307CisKKyNlbmRpZiAvLyBRdERpYWxvZ1J1bm5lcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115607</attachid>
            <date>2011-11-17 09:49:22 -0800</date>
            <delta_ts>2011-11-17 12:21:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72319-20111117144959.patch</filename>
            <type>text/plain</type>
            <size>25726</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTI0NmU3ZDhlMmY0ZGM2
NDY1ZDgzMDljYWNkNzk4YmY0YmI3YjM1My4uNmI4OTJjZDg2N2M4MjgyMDVmZTY5MWFkYjc1YTE5
ZDBjOTcwYzg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDExLTExLTE3ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XSBTdXBwb3J0IGN1c3RvbWl6aW5nIEpTIGFsZXJ0L2NvbmZpcm0vcHJv
bXB0IGRpYWxvZ3MgdXNpbmcgUU1MCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MjMxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZHMgYWxlcnREaWFsb2csIGNvbmZpcm1EaWFsb2cgYW5kIHByb21wdERp
YWxvZyBwcm9wZXJ0aWVzIHRvIFFRdWlja1dlYlZpZXcncworICAgICAgICBwcml2YXRlT2JqZWN0
LiBUaGVzZSBhcmUgUU1MIGNvbXBvbmVudHMgdGhhdCBhcmUgY3JlYXRlZCBieSB0aGUgd2Vidmll
dyB3aGVuIHRoZQorICAgICAgICBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBK
Uy4KKworICAgICAgICBUaGUgZGlhbG9ncyBhcmUgY3JlYXRlZCBpbiBhIGNvbnRleHQgdGhhdCBj
b250YWlucyBhIG1vZGVsIG9iamVjdCwgc2ltaWxhciB0bworICAgICAgICBMaXN0VmlldyBkZWxl
Z2F0ZXMuIFRoZSAibWVzc2FnZSIgYW5kICJkZWZhdWx0VmFsdWUiIHBhcmFtZXRlcnMgYXJlIGF2
YWlsYWJsZQorICAgICAgICBpbiB0aGUgbW9kZWwgb2JqZWN0LCBhcyB3ZWxsIGFzIHNsb3RzIGV4
cGVjdGVkIHRvIGJlIGNhbGxlZCBieSB0aGUgZGlhbG9nLgorCisgICAgICAgIFRoaXMgY29tbWl0
IHJlbW92ZXMgdGhlIG9sZCBjb2RlIGZvciBzdXBwb3J0aW5nIFFXaWRnZXQgYnVpbHRpbiBkaWFs
b2dzLiBUaGUgY29kZQorICAgICAgICB3YXNuJ3Qgd29ya2luZyBwcm9wZXJseSAoY2xvc2luZyBh
bnkgZGlhbG9nIHdhcyBjbG9zaW5nIHRoZSBhcHAgYWZ0ZXIgUVdpbmRvdworICAgICAgICByZWZh
Y3RvcmluZyBpbiBRdDUpLgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1aWNrV2ViVmlld1By
aXZhdGU6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6
OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRh
bDo6YWxlcnREaWFsb2cpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6c2V0
QWxlcnREaWFsb2cpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6Y29uZmly
bURpYWxvZyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpzZXRDb25maXJt
RGlhbG9nKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnByb21wdERpYWxv
Zyk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpzZXRQcm9tcHREaWFsb2cp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfamF2YVNjcmlwdERpYWxvZ3Mu
cW1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2Nv
bW1vbi9hbGVydC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3Rz
L3FtbHRlc3RzL2NvbW1vbi9jb25maXJtLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL3Byb21wdC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybzoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvcXQvUXREaWFsb2dSdW5uZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFF0
RGlhbG9nUnVubmVyOjpRdERpYWxvZ1J1bm5lcik6CisgICAgICAgIChRdERpYWxvZ1J1bm5lcjo6
flF0RGlhbG9nUnVubmVyKToKKyAgICAgICAgKERpYWxvZ0NvbnRleHRPYmplY3Q6OkRpYWxvZ0Nv
bnRleHRPYmplY3QpOgorICAgICAgICAoRGlhbG9nQ29udGV4dE9iamVjdDo6bWVzc2FnZSk6Cisg
ICAgICAgIChEaWFsb2dDb250ZXh0T2JqZWN0OjpkZWZhdWx0VmFsdWUpOgorICAgICAgICAoRGlh
bG9nQ29udGV4dE9iamVjdDo6ZGlzbWlzcyk6CisgICAgICAgIChEaWFsb2dDb250ZXh0T2JqZWN0
OjphY2NlcHQpOgorICAgICAgICAoRGlhbG9nQ29udGV4dE9iamVjdDo6cmVqZWN0KToKKyAgICAg
ICAgKFF0RGlhbG9nUnVubmVyOjppbml0Rm9yQWxlcnQpOgorICAgICAgICAoUXREaWFsb2dSdW5u
ZXI6OmluaXRGb3JDb25maXJtKToKKyAgICAgICAgKFF0RGlhbG9nUnVubmVyOjppbml0Rm9yUHJv
bXB0KToKKyAgICAgICAgKFF0RGlhbG9nUnVubmVyOjpjcmVhdGVEaWFsb2cpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1bm5lci5oOiBBZGRlZC4KKyAgICAgICAgKFF0RGlhbG9n
UnVubmVyOjp3YXNBY2NlcHRlZCk6CisgICAgICAgIChRdERpYWxvZ1J1bm5lcjo6cmVzdWx0KToK
KyAgICAgICAgKFF0RGlhbG9nUnVubmVyOjpvbkFjY2VwdGVkKToKKwogMjAxMS0xMS0xNyAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBbUXRd
W1dLMl0gRG9uJ3QgZXhwb3J0IHRoZSBwcml2YXRlIFFRdWlja1ZpZXcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRl
eCBkNGE3NDA1MTlkNmVmZTBhMzU5NzdkN2M0YTAxYThmNzQ2NmQ4ODg5Li44MWY2NzFkOGVmNGY2
NWYwNGUyNTVlMmM5NzY4MTExN2I5YTYyMThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9U
YXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTMxOCw2ICszMTgs
NyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvUXRQaW5jaEdlc3R1cmVSZWNvZ25p
emVyLmggXAogICAgIFVJUHJvY2Vzcy9xdC9RdFRhcEdlc3R1cmVSZWNvZ25pemVyLmggXAogICAg
IFVJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmggXAorICAgIFVJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1
bm5lci5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXREb3dubG9hZE1hbmFnZXIuaCBcCiAgICAgVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5
LmggXApAQCAtNjI0LDYgKzYyNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9xdC9R
dFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRUYXBHZXN0
dXJlUmVjb2duaXplci5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9RdFdlYkVycm9yLmNwcCBcCisg
ICAgVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0
RG93bmxvYWRNYW5hZ2VyLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNw
cCBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2hpc3RvcnkuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IDU2MmU3OTRkZmZm
MTVlMDRhMWIzZDVjMjhlZjQxMDcxY2ZhNjZmYTUuLjdkNTk0MjkwYmJiZjUwMjIyZjI4MzVmMGE3
NWZmMDE3ZWY3N2EzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcC5oIgogCisjaW5jbHVkZSAiUXREaWFsb2dSdW5u
ZXIuaCIKICNpbmNsdWRlICJRdFZpZXdJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VQ
cm94eS5oIgogI2luY2x1ZGUgIlV0aWxzUXQuaCIKQEAgLTM0LDcgKzM1LDYgQEAKICNpbmNsdWRl
IDxRdERlY2xhcmF0aXZlL1FRdWlja0NhbnZhcz4KICNpbmNsdWRlIDxRdFdpZGdldHMvUUZpbGVE
aWFsb2c+CiAjaW5jbHVkZSA8UXRXaWRnZXRzL1FJbnB1dERpYWxvZz4KLSNpbmNsdWRlIDxRdFdp
ZGdldHMvUU1lc3NhZ2VCb3g+CiAjaW5jbHVkZSA8V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5o
PgogCiBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6UVF1aWNrV2ViVmlld1ByaXZhdGUoKQpAQCAtMjIz
LDQ1ICsyMjMsNTYgQEAgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cyBR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6Y29tcHV0ZVZpZXdwb3J0Q28KIAogdm9pZCBRUXVpY2tXZWJW
aWV3UHJpdmF0ZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KGNvbnN0IFFTdHJpbmcmIGFsZXJ0VGV4dCkK
IHsKLSNpZm5kZWYgUVRfTk9fTUVTU0FHRUJPWAorICAgIGlmICghYWxlcnREaWFsb2cpCisgICAg
ICAgIHJldHVybjsKKwogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKLSAgICBjb25zdCBRU3RyaW5n
IHRpdGxlID0gUU9iamVjdDo6dHIoIkphdmFTY3JpcHQgQWxlcnQgLSAlMSIpLmFyZyhxLT51cmwo
KS5ob3N0KCkpOworICAgIFF0RGlhbG9nUnVubmVyIGRpYWxvZ1J1bm5lcjsKKyAgICBpZiAoIWRp
YWxvZ1J1bm5lci5pbml0Rm9yQWxlcnQoYWxlcnREaWFsb2cuZGF0YSgpLCBxLCBhbGVydFRleHQp
KQorICAgICAgICByZXR1cm47CisKICAgICBkaXNhYmxlTW91c2VFdmVudHMoKTsKLSAgICBRTWVz
c2FnZUJveDo6aW5mb3JtYXRpb24oMCwgdGl0bGUsIGVzY2FwZUh0bWwoYWxlcnRUZXh0KSwgUU1l
c3NhZ2VCb3g6Ok9rKTsKKyAgICBkaWFsb2dSdW5uZXIuZXhlYygpOwogICAgIGVuYWJsZU1vdXNl
RXZlbnRzKCk7Ci0jZWxzZQotICAgIFFfVU5VU0VEKGFsZXJ0VGV4dCk7Ci0jZW5kaWYKIH0KIAog
Ym9vbCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6cnVuSmF2YVNjcmlwdENvbmZpcm0oY29uc3QgUVN0
cmluZyYgbWVzc2FnZSkKIHsKLSAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0jaWZuZGVmIFFUX05P
X01FU1NBR0VCT1gKKyAgICBpZiAoIWNvbmZpcm1EaWFsb2cpCisgICAgICAgIHJldHVybiB0cnVl
OworCiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwotICAgIGNvbnN0IFFTdHJpbmcgdGl0bGUgPSBR
T2JqZWN0Ojp0cigiSmF2YVNjcmlwdCBDb25maXJtIC0gJTEiKS5hcmcocS0+dXJsKCkuaG9zdCgp
KTsKKyAgICBRdERpYWxvZ1J1bm5lciBkaWFsb2dSdW5uZXI7CisgICAgaWYgKCFkaWFsb2dSdW5u
ZXIuaW5pdEZvckNvbmZpcm0oY29uZmlybURpYWxvZy5kYXRhKCksIHEsIG1lc3NhZ2UpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIGRpc2FibGVNb3VzZUV2ZW50cygpOwotICAgIHJlc3Vs
dCA9IFFNZXNzYWdlQm94OjpZZXMgPT0gUU1lc3NhZ2VCb3g6OmluZm9ybWF0aW9uKDAsIHRpdGxl
LCBlc2NhcGVIdG1sKG1lc3NhZ2UpLCBRTWVzc2FnZUJveDo6WWVzLCBRTWVzc2FnZUJveDo6Tm8p
OworICAgIGRpYWxvZ1J1bm5lci5leGVjKCk7CiAgICAgZW5hYmxlTW91c2VFdmVudHMoKTsKLSNl
bHNlCi0gICAgUV9VTlVTRUQobWVzc2FnZSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gcmVzdWx0Owor
CisgICAgcmV0dXJuIGRpYWxvZ1J1bm5lci53YXNBY2NlcHRlZCgpOwogfQogCiBRU3RyaW5nIFFR
dWlja1dlYlZpZXdQcml2YXRlOjpydW5KYXZhU2NyaXB0UHJvbXB0KGNvbnN0IFFTdHJpbmcmIG1l
c3NhZ2UsIGNvbnN0IFFTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgYm9vbCYgb2spCiB7Ci0jaWZuZGVm
IFFUX05PX0lOUFVURElBTE9HCisgICAgaWYgKCFwcm9tcHREaWFsb2cpIHsKKyAgICAgICAgb2sg
PSB0cnVlOworICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOworICAgIH0KKwogICAgIFFfUShR
UXVpY2tXZWJWaWV3KTsKLSAgICBjb25zdCBRU3RyaW5nIHRpdGxlID0gUU9iamVjdDo6dHIoIkph
dmFTY3JpcHQgUHJvbXB0IC0gJTEiKS5hcmcocS0+dXJsKCkuaG9zdCgpKTsKKyAgICBRdERpYWxv
Z1J1bm5lciBkaWFsb2dSdW5uZXI7CisgICAgaWYgKCFkaWFsb2dSdW5uZXIuaW5pdEZvclByb21w
dChwcm9tcHREaWFsb2cuZGF0YSgpLCBxLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUpKSB7CisgICAg
ICAgIG9rID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKKyAgICB9CisKICAg
ICBkaXNhYmxlTW91c2VFdmVudHMoKTsKLSAgICBRU3RyaW5nIHJlc3VsdCA9IFFJbnB1dERpYWxv
Zzo6Z2V0VGV4dCgwLCB0aXRsZSwgZXNjYXBlSHRtbChtZXNzYWdlKSwgUUxpbmVFZGl0OjpOb3Jt
YWwsIGRlZmF1bHRWYWx1ZSwgJm9rKTsKKyAgICBkaWFsb2dSdW5uZXIuZXhlYygpOwogICAgIGVu
YWJsZU1vdXNlRXZlbnRzKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgUV9VTlVT
RUQobWVzc2FnZSk7Ci0gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKLSNlbmRpZgorCisgICAgb2sg
PSBkaWFsb2dSdW5uZXIud2FzQWNjZXB0ZWQoKTsKKyAgICByZXR1cm4gZGlhbG9nUnVubmVyLnJl
c3VsdCgpOwogfQogCiB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpjaG9vc2VGaWxlcyhXS09w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYg
c2VsZWN0ZWRGaWxlTmFtZXMsIFF0Vmlld0ludGVyZmFjZTo6RmlsZUNob29zZXJUeXBlIHR5cGUp
CkBAIC0zOTAsNiArNDAxLDUxIEBAIHZvaWQgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6c2V0
VXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKGJvb2wgZW5hYmxlKQogICAgIGQtPnNldFVz
ZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cihlbmFibGUpOwogfQogCitRRGVjbGFyYXRpdmVD
b21wb25lbnQqIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OmFsZXJ0RGlhbG9nKCkgY29uc3QK
K3sKKyAgICBRX0QoY29uc3QgUVF1aWNrV2ViVmlldyk7CisgICAgcmV0dXJuIGQtPmFsZXJ0RGlh
bG9nLmRhdGEoKTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpzZXRBbGVy
dERpYWxvZyhRRGVjbGFyYXRpdmVDb21wb25lbnQqIGFsZXJ0RGlhbG9nKQoreworICAgIFFfRChR
UXVpY2tXZWJWaWV3KTsKKyAgICBpZiAoZC0+YWxlcnREaWFsb2cuZGF0YSgpID09IGFsZXJ0RGlh
bG9nKQorICAgICAgICByZXR1cm47CisgICAgZC0+YWxlcnREaWFsb2cucmVzZXQoYWxlcnREaWFs
b2cpOworICAgIGVtaXQgYWxlcnREaWFsb2dDaGFuZ2VkKCk7Cit9CisKK1FEZWNsYXJhdGl2ZUNv
bXBvbmVudCogUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6Y29uZmlybURpYWxvZygpIGNvbnN0
Cit7CisgICAgUV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOworICAgIHJldHVybiBkLT5jb25maXJt
RGlhbG9nLmRhdGEoKTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpzZXRD
b25maXJtRGlhbG9nKFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogY29uZmlybURpYWxvZykKK3sKKyAg
ICBRX0QoUVF1aWNrV2ViVmlldyk7CisgICAgaWYgKGQtPmNvbmZpcm1EaWFsb2cuZGF0YSgpID09
IGNvbmZpcm1EaWFsb2cpCisgICAgICAgIHJldHVybjsKKyAgICBkLT5jb25maXJtRGlhbG9nLnJl
c2V0KGNvbmZpcm1EaWFsb2cpOworICAgIGVtaXQgY29uZmlybURpYWxvZ0NoYW5nZWQoKTsKK30K
KworUURlY2xhcmF0aXZlQ29tcG9uZW50KiBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjpwcm9t
cHREaWFsb2coKSBjb25zdAoreworICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3KTsKKyAgICBy
ZXR1cm4gZC0+cHJvbXB0RGlhbG9nLmRhdGEoKTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3RXhw
ZXJpbWVudGFsOjpzZXRQcm9tcHREaWFsb2coUURlY2xhcmF0aXZlQ29tcG9uZW50KiBwcm9tcHRE
aWFsb2cpCit7CisgICAgUV9EKFFRdWlja1dlYlZpZXcpOworICAgIGlmIChkLT5wcm9tcHREaWFs
b2cuZGF0YSgpID09IHByb21wdERpYWxvZykKKyAgICAgICAgcmV0dXJuOworICAgIGQtPnByb21w
dERpYWxvZy5yZXNldChwcm9tcHREaWFsb2cpOworICAgIGVtaXQgcHJvbXB0RGlhbG9nQ2hhbmdl
ZCgpOworfQorCiBRUXVpY2tXZWJWaWV3OjpRUXVpY2tXZWJWaWV3KFFRdWlja0l0ZW0qIHBhcmVu
dCkKICAgICA6IFFRdWlja0l0ZW0ocGFyZW50KQogICAgICwgZF9wdHIobmV3IFFRdWlja1dlYlZp
ZXdQcml2YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlld19wLmgKaW5kZXggYmNkZDZiYzBkMzllNGJhNzExZTVlYjc3NzJkZTg0ZWQ3YzY0YTFi
Yi4uMGY5NjgwNTQ2MjY0M2YxMDE3YmNjMjk5NmM4YTI1OGYwMTE5NjNhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCkBAIC0yNCw2
ICsyNCw3IEBACiAjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgogI2luY2x1ZGUgPFF0RGVjbGFy
YXRpdmUvcXF1aWNraXRlbS5oPgogCitjbGFzcyBRRGVjbGFyYXRpdmVDb21wb25lbnQ7CiBjbGFz
cyBRUXVpY2tXZWJQYWdlOwogY2xhc3MgUVF1aWNrV2ViVmlld1ByaXZhdGU7CiBjbGFzcyBRUXVp
Y2tXZWJWaWV3RXhwZXJpbWVudGFsOwpAQCAtMTQyLDEzICsxNDMsMjkgQEAgUU1MX0RFQ0xBUkVf
VFlQRShRUXVpY2tXZWJWaWV3KQogCiBjbGFzcyBRV0VCS0lUX0VYUE9SVCBRUXVpY2tXZWJWaWV3
RXhwZXJpbWVudGFsIDogcHVibGljIFFPYmplY3QgewogICAgIFFfT0JKRUNUCisgICAgUV9QUk9Q
RVJUWShRRGVjbGFyYXRpdmVDb21wb25lbnQqIGFsZXJ0RGlhbG9nIFJFQUQgYWxlcnREaWFsb2cg
V1JJVEUgc2V0QWxlcnREaWFsb2cgTk9USUZZIGFsZXJ0RGlhbG9nQ2hhbmdlZCkKKyAgICBRX1BS
T1BFUlRZKFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogY29uZmlybURpYWxvZyBSRUFEIGNvbmZpcm1E
aWFsb2cgV1JJVEUgc2V0Q29uZmlybURpYWxvZyBOT1RJRlkgY29uZmlybURpYWxvZ0NoYW5nZWQp
CisgICAgUV9QUk9QRVJUWShRRGVjbGFyYXRpdmVDb21wb25lbnQqIHByb21wdERpYWxvZyBSRUFE
IHByb21wdERpYWxvZyBXUklURSBzZXRQcm9tcHREaWFsb2cgTk9USUZZIHByb21wdERpYWxvZ0No
YW5nZWQpCisKIHB1YmxpYzoKICAgICBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsKFFRdWlja1dl
YlZpZXcqIHdlYlZpZXcpOwogICAgIHZpcnR1YWwgflFRdWlja1dlYlZpZXdFeHBlcmltZW50YWwo
KTsKIAorICAgIFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogYWxlcnREaWFsb2coKSBjb25zdDsKKyAg
ICB2b2lkIHNldEFsZXJ0RGlhbG9nKFFEZWNsYXJhdGl2ZUNvbXBvbmVudCopOworICAgIFFEZWNs
YXJhdGl2ZUNvbXBvbmVudCogY29uZmlybURpYWxvZygpIGNvbnN0OworICAgIHZvaWQgc2V0Q29u
ZmlybURpYWxvZyhRRGVjbGFyYXRpdmVDb21wb25lbnQqKTsKKyAgICBRRGVjbGFyYXRpdmVDb21w
b25lbnQqIHByb21wdERpYWxvZygpIGNvbnN0OworICAgIHZvaWQgc2V0UHJvbXB0RGlhbG9nKFFE
ZWNsYXJhdGl2ZUNvbXBvbmVudCopOworCiBwdWJsaWMgUV9TTE9UUzoKICAgICB2b2lkIHNldFVz
ZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cihib29sIGVuYWJsZSk7CiAKK1FfU0lHTkFMUzoK
KyAgICB2b2lkIGFsZXJ0RGlhbG9nQ2hhbmdlZCgpOworICAgIHZvaWQgY29uZmlybURpYWxvZ0No
YW5nZWQoKTsKKyAgICB2b2lkIHByb21wdERpYWxvZ0NoYW5nZWQoKTsKKwogcHJpdmF0ZToKICAg
ICBRUXVpY2tXZWJWaWV3KiBxX3B0cjsKICAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZSogZF9wdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZp
ZXdfcF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdf
cF9wLmgKaW5kZXggN2IyOGZkZjdjYjY1MzZkNmMwNjQ0NmUwY2MxNjBiNzYwMzZlNjQ2Yy4uZmI1
MDlhY2FhYmNkN2NiOWJkODU2ZmQ5NWE3MWM1Yzk1MDllYzZiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaApAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+CiAjaW5jbHVkZSA8UXRDb3JlL1FT
Y29wZWRQb2ludGVyPgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvUURlY2xhcmF0aXZlQ29tcG9u
ZW50PgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogY2xhc3MgUXRXZWJQYWdlUHJveHk7CkBA
IC00MSw2ICs0Miw4IEBAIFFUX0VORF9OQU1FU1BBQ0UKIGNsYXNzIFFRdWlja1dlYlZpZXdQcml2
YXRlIDogcHVibGljIFdlYktpdDo6UXRQb2xpY3lJbnRlcmZhY2UgewogCiAgICAgUV9ERUNMQVJF
X1BVQkxJQyhRUXVpY2tXZWJWaWV3KQorICAgIGZyaWVuZCBjbGFzcyBRUXVpY2tXZWJWaWV3RXhw
ZXJpbWVudGFsOworCiBwdWJsaWM6CiAgICAgUVF1aWNrV2ViVmlld1ByaXZhdGUoKTsKICAgICB2
aXJ0dWFsIH5RUXVpY2tXZWJWaWV3UHJpdmF0ZSgpIHsgfQpAQCAtMTEwLDYgKzExMywxMCBAQCBw
cml2YXRlOgogICAgIFFTY29wZWRQb2ludGVyPFdlYktpdDo6UXRWaWV3SW50ZXJmYWNlPiB2aWV3
SW50ZXJmYWNlOwogICAgIFFTY29wZWRQb2ludGVyPFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZT4gaW50ZXJhY3Rpb25FbmdpbmU7CiAKKyAgICBRU2NvcGVkUG9pbnRlcjxRRGVjbGFyYXRpdmVD
b21wb25lbnQ+IGFsZXJ0RGlhbG9nOworICAgIFFTY29wZWRQb2ludGVyPFFEZWNsYXJhdGl2ZUNv
bXBvbmVudD4gY29uZmlybURpYWxvZzsKKyAgICBRU2NvcGVkUG9pbnRlcjxRRGVjbGFyYXRpdmVD
b21wb25lbnQ+IHByb21wdERpYWxvZzsKKwogICAgIFFRdWlja1dlYlZpZXcqIHFfcHRyOwogICAg
IFFTY29wZWRQb2ludGVyPFF0V2ViUGFnZVByb3h5PiBwYWdlUHJveHk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90
c3RfamF2YVNjcmlwdERpYWxvZ3MucW1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9qYXZhU2NyaXB0RGlhbG9ncy5xbWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmYwYmU0MWZiMzZmYmVjMjk0OGMzNDM4ZmE1N2JlNjBiNjQ2YTdjOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMv
V2ViVmlldy90c3RfamF2YVNjcmlwdERpYWxvZ3MucW1sCkBAIC0wLDAgKzEsMTI3IEBACitpbXBv
cnQgUXRRdWljayAyLjAKK2ltcG9ydCBRdFRlc3QgMS4wCitpbXBvcnQgUXRXZWJLaXQgMy4wCitp
bXBvcnQgUXRXZWJLaXQuZXhwZXJpbWVudGFsIDMuMAorCitXZWJWaWV3IHsKKyAgICBpZDogd2Vi
VmlldworCisgICAgcHJvcGVydHkgYm9vbCBtb2RlbE1lc3NhZ2VFcXVhbHNNZXNzYWdlOiBmYWxz
ZQorICAgIHByb3BlcnR5IHN0cmluZyBtZXNzYWdlRnJvbUFsZXJ0RGlhbG9nOiAiIgorICAgIHBy
b3BlcnR5IGludCBjb25maXJtQ291bnQ6IDAKKyAgICBwcm9wZXJ0eSBpbnQgcHJvbXB0Q291bnQ6
IDAKKworICAgIGV4cGVyaW1lbnRhbC5hbGVydERpYWxvZzogSXRlbSB7CisgICAgICAgIFRpbWVy
IHsKKyAgICAgICAgICAgIHJ1bm5pbmc6IHRydWUKKyAgICAgICAgICAgIGludGVydmFsOiAxCisg
ICAgICAgICAgICBvblRyaWdnZXJlZDogeworICAgICAgICAgICAgICAgIHdlYlZpZXcubWVzc2Fn
ZUZyb21BbGVydERpYWxvZyA9IG1lc3NhZ2UKKyAgICAgICAgICAgICAgICB3ZWJWaWV3Lm1vZGVs
TWVzc2FnZUVxdWFsc01lc3NhZ2UgPSBCb29sZWFuKG1vZGVsLm1lc3NhZ2UgPT0gbWVzc2FnZSkK
KyAgICAgICAgICAgICAgICBtb2RlbC5kaXNtaXNzKCkKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIGV4cGVyaW1lbnRhbC5jb25maXJtRGlhbG9nOiBJdGVtIHsKKyAgICAg
ICAgVGltZXIgeworICAgICAgICAgICAgcnVubmluZzogdHJ1ZQorICAgICAgICAgICAgaW50ZXJ2
YWw6IDEKKyAgICAgICAgICAgIG9uVHJpZ2dlcmVkOiB7CisgICAgICAgICAgICAgICAgd2ViVmll
dy5jb25maXJtQ291bnQgKz0gMQorICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlID09ICJBQ0NF
UFQiKQorICAgICAgICAgICAgICAgICAgICBtb2RlbC5hY2NlcHQoKQorICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbW9kZWwucmVqZWN0KCkKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIGV4cGVyaW1lbnRhbC5wcm9tcHREaWFsb2c6IEl0ZW0g
eworICAgICAgICBUaW1lciB7CisgICAgICAgICAgICBydW5uaW5nOiB0cnVlCisgICAgICAgICAg
ICBpbnRlcnZhbDogMQorICAgICAgICAgICAgb25UcmlnZ2VyZWQ6IHsKKyAgICAgICAgICAgICAg
ICB3ZWJWaWV3LnByb21wdENvdW50ICs9IDEKKyAgICAgICAgICAgICAgICBpZiAobWVzc2FnZSA9
PSAiUkVKRUNUIikKKyAgICAgICAgICAgICAgICAgICAgbW9kZWwucmVqZWN0KCkKKyAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHJldmVyc2VkRGVmYXVsdFZh
bHVlID0gZGVmYXVsdFZhbHVlLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIikKKyAgICAgICAg
ICAgICAgICAgICAgbW9kZWwuYWNjZXB0KHJldmVyc2VkRGVmYXVsdFZhbHVlKQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIFNpZ25hbFNw
eSB7CisgICAgICAgIGlkOiBsb2FkU3B5CisgICAgICAgIHRhcmdldDogd2ViVmlldworICAgICAg
ICBzaWduYWxOYW1lOiAibG9hZFN1Y2NlZWRlZCIKKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7Cisg
ICAgICAgIGlkOiB0ZXN0CisgICAgICAgIG5hbWU6ICJXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3Mi
CisKKyAgICAgICAgZnVuY3Rpb24gaW5pdCgpIHsKKyAgICAgICAgICAgIHdlYlZpZXcubW9kZWxN
ZXNzYWdlRXF1YWxzTWVzc2FnZSA9IGZhbHNlCisgICAgICAgICAgICB3ZWJWaWV3Lm1lc3NhZ2VG
cm9tQWxlcnREaWFsb2cgPSAiIgorICAgICAgICAgICAgd2ViVmlldy5jb25maXJtQ291bnQgPSAw
CisgICAgICAgICAgICB3ZWJWaWV3LnByb21wdENvdW50ID0gMAorICAgICAgICAgICAgbG9hZFNw
eS5jbGVhcigpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X2FsZXJ0KCkgewor
ICAgICAgICAgICAgd2ViVmlldy5sb2FkKFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vYWxlcnQu
aHRtbCIpKQorICAgICAgICAgICAgbG9hZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUo
bG9hZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5tZXNzYWdlRnJv
bUFsZXJ0RGlhbG9nLCAiSGVsbG8gUXQiKQorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcubW9k
ZWxNZXNzYWdlRXF1YWxzTWVzc2FnZSkKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRl
c3RfYWxlcnRXaXRob3V0RGlhbG9nKCkgeworICAgICAgICAgICAgc2tpcCgiU2V0dGluZyBleHBl
cmltZW50YWwgcHJvcGVydGllcyBmcm9tIEpTIGNvZGUgaXNuJ3Qgd29ya2luZyIpCisgICAgICAg
ICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC5hbGVydERpYWxvZyA9IG51bGwKKyAgICAgICAgICAg
IHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2FsZXJ0Lmh0bWwiKSkKKyAg
ICAgICAgICAgIGxvYWRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKGxvYWRTcHkuY291
bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcubWVzc2FnZUZyb21BbGVydERpYWxv
ZywgIiIpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X2NvbmZpcm0oKSB7Cisg
ICAgICAgICAgICB3ZWJWaWV3LmxvYWQoUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9jb25maXJt
Lmh0bWwiKSkKKyAgICAgICAgICAgIGxvYWRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJl
KGxvYWRTcHkuY291bnQsIDEpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcuY29uZmlybUNv
dW50LCAyKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRpdGxlLCAiQUNDRVBURUQgUkVK
RUNURUQiKQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9jb25maXJtV2l0aG91
dERpYWxvZygpIHsKKyAgICAgICAgICAgIHNraXAoIlNldHRpbmcgZXhwZXJpbWVudGFsIHByb3Bl
cnRpZXMgZnJvbSBKUyBjb2RlIGlzbid0IHdvcmtpbmciKQorICAgICAgICAgICAgd2ViVmlldy5l
eHBlcmltZW50YWwuY29uZmlybURpYWxvZyA9IG51bGwKKyAgICAgICAgICAgIHdlYlZpZXcubG9h
ZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2NvbmZpcm0uaHRtbCIpKQorICAgICAgICAgICAg
bG9hZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUobG9hZFNweS5jb3VudCwgMSkKKyAg
ICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5jb25maXJtQ291bnQsIDApCisgICAgICAgICAgICBj
b21wYXJlKHdlYlZpZXcudGl0bGUsICJBQ0NFUFRFRCBBQ0NFUFRFRCIpCisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiB0ZXN0X3Byb21wdCgpIHsKKyAgICAgICAgICAgIHdlYlZpZXcubG9h
ZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Byb21wdC5odG1sIikpCisgICAgICAgICAgICBs
b2FkU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZShsb2FkU3B5LmNvdW50LCAxKQorICAg
ICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnByb21wdENvdW50LCAyKQorICAgICAgICAgICAgY29t
cGFyZSh3ZWJWaWV3LnRpdGxlLCAidFEgb2xsZUgiKQorICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gdGVzdF9wcm9tcHRXaXRob3V0RGlhbG9nKCkgeworICAgICAgICAgICAgc2tpcCgiU2V0
dGluZyBleHBlcmltZW50YWwgcHJvcGVydGllcyBmcm9tIEpTIGNvZGUgaXNuJ3Qgd29ya2luZyIp
CisgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC5wcm9tcHREaWFsb2cgPSBudWxsCisg
ICAgICAgICAgICB3ZWJWaWV3LmxvYWQoUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9wcm9tcHQu
aHRtbCIpKQorICAgICAgICAgICAgbG9hZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUo
bG9hZFNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy5wcm9tcHRDb3Vu
dCwgMCkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy50aXRsZSwgIkZBSUwiKQorICAgICAg
ICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vYWxlcnQuaHRtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2FsZXJ0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YTc1YjlhNjBmZDliYWVjYmE1Yzk2ZGU0Mjc1MDkxZTlkYWNhYmY3OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9u
L2FsZXJ0Lmh0bWwKQEAgLTAsMCArMSw4IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0PmFsZXJ0KCJIZWxsbyBRdCIpOzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9jb25maXJtLmh0bWwgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9jb25maXJtLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWRkNjA4MWQ0NWNjMzk3YzBlM2I5NzlkZDAwZDA3OGRjZmQwM2I1OQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVz
dHMvY29tbW9uL2NvbmZpcm0uaHRtbApAQCAtMCwwICsxLDE5IEBACis8IWRvY3R5cGUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZG9jdW1lbnQudGl0bGUgPSAiIjsKK2Z1bmN0aW9u
IHVwZGF0ZVRpdGxlKGFjY2VwdGVkKSB7CisgICAgaWYgKGFjY2VwdGVkKQorICAgICAgICBkb2N1
bWVudC50aXRsZSArPSAiIEFDQ0VQVEVEIjsKKyAgICBlbHNlCisgICAgICAgIGRvY3VtZW50LnRp
dGxlICs9ICIgUkVKRUNURUQiOworfQorCit1cGRhdGVUaXRsZShjb25maXJtKCJBQ0NFUFQiKSk7
Cit1cGRhdGVUaXRsZShjb25maXJtKCJSRUpFQ1QiKSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vcHJvbXB0Lmh0bWwgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9wcm9tcHQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mMzVlMzAyMDQwZjgxN2M4NjhkYzFmYjRkYzhkMTZkNjBlZmY2NTdmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0
ZXN0cy9jb21tb24vcHJvbXB0Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFkb2N0eXBlIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2RvY3VtZW50LnRpdGxlID0gcHJvbXB0KCJQbGVh
c2UsIHJldmVyc2UgdGhlIGRlZmF1bHQgdmFsdWUiLCAiSGVsbG8gUXQiKTsKK2lmIChwcm9tcHQo
IlJFSkVDVCIpICE9PSBudWxsKSB7CisgICAgZG9jdW1lbnQudGl0bGUgPSAiRkFJTCI7Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5w
cm8gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRl
c3RzLnBybwppbmRleCA1OTk0N2IwOTFlYjk5MWM4MTc0YzAyOGIzZWUzOTQyMjM3YWY0NDc0Li4y
NmJjZmRjNjY1ZmExOWIwMGY5MTgxNGUyOGQ5ZWE4Y2IyOGM2NDA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRl
c3RzLnBybwpAQCAtMTYsNiArMTYsNyBAQCBERUZJTkVTICs9IFFVSUNLX1RFU1RfU09VUkNFX0RJ
Uj1cIlxcXCIkJFBXRFxcXCJcIgogREVGSU5FUyArPSBJTVBPUlRfRElSPVwiXFxcIiQke1JPT1Rf
QlVJTERfRElSfSQke1FNQUtFX0RJUl9TRVB9aW1wb3J0c1xcXCJcIgogCiBPVEhFUl9GSUxFUyAr
PSBcCisgICAgV2ViVmlldy90c3RfamF2YVNjcmlwdERpYWxvZ3MucW1sIFwKICAgICBXZWJWaWV3
L3RzdF9wcm9wZXJ0aWVzLnFtbCBcCiAgICAgV2ViVmlldy90c3RfbG9hZFplcm9TaXplVmlldy5x
bWwgXAogICAgIFdlYlZpZXcvdHN0X2xvYWRGYWlsLnFtbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREaWFsb2dSdW5uZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Y2IyMDliZWIyOGJk
YmUyN2NkOGU2YWY5YWVmMzM3YTQ3ZWEyM2VmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVyLmNwcApAQCAtMCwwICsxLDEzNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJRdERpYWxv
Z1J1bm5lci5oIgorCisjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9RRGVjbGFyYXRpdmVDb21wb25l
bnQ+CisjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9RRGVjbGFyYXRpdmVDb250ZXh0PgorI2luY2x1
ZGUgPFF0RGVjbGFyYXRpdmUvUURlY2xhcmF0aXZlRW5naW5lPgorI2luY2x1ZGUgPFF0RGVjbGFy
YXRpdmUvUVF1aWNrSXRlbT4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCitRdERpYWxv
Z1J1bm5lcjo6UXREaWFsb2dSdW5uZXIoKQorICAgIDogUUV2ZW50TG9vcCgpCisgICAgLCBtX3dh
c0FjY2VwdGVkKGZhbHNlKQoreworfQorCitRdERpYWxvZ1J1bm5lcjo6flF0RGlhbG9nUnVubmVy
KCkKK3sKK30KKworY2xhc3MgRGlhbG9nQ29udGV4dE9iamVjdCA6IHB1YmxpYyBRT2JqZWN0IHsK
KyAgICBRX09CSkVDVAorICAgIFFfUFJPUEVSVFkoUVN0cmluZyBtZXNzYWdlIFJFQUQgbWVzc2Fn
ZSBDT05TVEFOVCkKKyAgICBRX1BST1BFUlRZKFFTdHJpbmcgZGVmYXVsdFZhbHVlIFJFQUQgZGVm
YXVsdFZhbHVlIENPTlNUQU5UKQorCitwdWJsaWM6CisgICAgRGlhbG9nQ29udGV4dE9iamVjdChj
b25zdCBRU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBRU3RyaW5nJiBkZWZhdWx0VmFsdWUgPSBRU3Ry
aW5nKCkpCisgICAgICAgIDogUU9iamVjdCgpCisgICAgICAgICwgbV9tZXNzYWdlKG1lc3NhZ2Up
CisgICAgICAgICwgbV9kZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlKQorICAgIHsKKyAgICB9Cisg
ICAgUVN0cmluZyBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9CisgICAgUVN0
cmluZyBkZWZhdWx0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRWYWx1ZTsgfQorCitw
dWJsaWMgc2xvdHM6CisgICAgdm9pZCBkaXNtaXNzKCkgeyBlbWl0IGRpc21pc3NlZCgpOyB9Cisg
ICAgdm9pZCBhY2NlcHQoKSB7IGVtaXQgYWNjZXB0ZWQoKTsgfQorICAgIHZvaWQgYWNjZXB0KGNv
bnN0IFFTdHJpbmcmIHJlc3VsdCkgeyBlbWl0IGFjY2VwdGVkKHJlc3VsdCk7IH0KKyAgICB2b2lk
IHJlamVjdCgpIHsgZW1pdCByZWplY3RlZCgpOyB9CisKK3NpZ25hbHM6CisgICAgdm9pZCBkaXNt
aXNzZWQoKTsKKyAgICB2b2lkIGFjY2VwdGVkKCk7CisgICAgdm9pZCBhY2NlcHRlZChjb25zdCBR
U3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgcmVqZWN0ZWQoKTsKKworcHJpdmF0ZToKKyAgICBR
U3RyaW5nIG1fbWVzc2FnZTsKKyAgICBRU3RyaW5nIG1fZGVmYXVsdFZhbHVlOworfTsKKworYm9v
bCBRdERpYWxvZ1J1bm5lcjo6aW5pdEZvckFsZXJ0KFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogY29t
cG9uZW50LCBRUXVpY2tJdGVtKiBkaWFsb2dQYXJlbnQsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2Up
Cit7CisgICAgRGlhbG9nQ29udGV4dE9iamVjdCogY29udGV4dE9iamVjdCA9IG5ldyBEaWFsb2dD
b250ZXh0T2JqZWN0KG1lc3NhZ2UpOworICAgIGlmICghY3JlYXRlRGlhbG9nKGNvbXBvbmVudCwg
ZGlhbG9nUGFyZW50LCBjb250ZXh0T2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwoZGlzbWlzc2VkKCkpLCBTTE9UKHF1aXQo
KSkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFF0RGlhbG9nUnVubmVyOjppbml0Rm9y
Q29uZmlybShRRGVjbGFyYXRpdmVDb21wb25lbnQqIGNvbXBvbmVudCwgUVF1aWNrSXRlbSogZGlh
bG9nUGFyZW50LCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKQoreworICAgIERpYWxvZ0NvbnRleHRP
YmplY3QqIGNvbnRleHRPYmplY3QgPSBuZXcgRGlhbG9nQ29udGV4dE9iamVjdChtZXNzYWdlKTsK
KyAgICBpZiAoIWNyZWF0ZURpYWxvZyhjb21wb25lbnQsIGRpYWxvZ1BhcmVudCwgY29udGV4dE9i
amVjdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbm5lY3QoY29udGV4dE9iamVj
dCwgU0lHTkFMKGFjY2VwdGVkKCkpLCBTTE9UKG9uQWNjZXB0ZWQoKSkpOworICAgIGNvbm5lY3Qo
Y29udGV4dE9iamVjdCwgU0lHTkFMKGFjY2VwdGVkKCkpLCBTTE9UKHF1aXQoKSkpOworICAgIGNv
bm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKHJlamVjdGVkKCkpLCBTTE9UKHF1aXQoKSkpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFF0RGlhbG9nUnVubmVyOjppbml0Rm9yUHJvbXB0
KFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogY29tcG9uZW50LCBRUXVpY2tJdGVtKiBkaWFsb2dQYXJl
bnQsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFFTdHJpbmcmIGRlZmF1bHRWYWx1ZSkK
K3sKKyAgICBEaWFsb2dDb250ZXh0T2JqZWN0KiBjb250ZXh0T2JqZWN0ID0gbmV3IERpYWxvZ0Nv
bnRleHRPYmplY3QobWVzc2FnZSwgZGVmYXVsdFZhbHVlKTsKKyAgICBpZiAoIWNyZWF0ZURpYWxv
Zyhjb21wb25lbnQsIGRpYWxvZ1BhcmVudCwgY29udGV4dE9iamVjdCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKGFjY2VwdGVkKFFT
dHJpbmcpKSwgU0xPVChvbkFjY2VwdGVkKFFTdHJpbmcpKSk7CisgICAgY29ubmVjdChjb250ZXh0
T2JqZWN0LCBTSUdOQUwoYWNjZXB0ZWQoUVN0cmluZykpLCBTTE9UKHF1aXQoKSkpOworICAgIGNv
bm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKHJlamVjdGVkKCkpLCBTTE9UKHF1aXQoKSkpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFF0RGlhbG9nUnVubmVyOjpjcmVhdGVEaWFsb2co
UURlY2xhcmF0aXZlQ29tcG9uZW50KiBjb21wb25lbnQsIFFRdWlja0l0ZW0qIGRpYWxvZ1BhcmVu
dCwgUU9iamVjdCogY29udGV4dE9iamVjdCkKK3sKKyAgICBRRGVjbGFyYXRpdmVDb250ZXh0KiBi
YXNlQ29udGV4dCA9IGNvbXBvbmVudC0+Y3JlYXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFiYXNl
Q29udGV4dCkKKyAgICAgICAgYmFzZUNvbnRleHQgPSBRRGVjbGFyYXRpdmVFbmdpbmU6OmNvbnRl
eHRGb3JPYmplY3QoZGlhbG9nUGFyZW50KTsKKyAgICBtX2RpYWxvZ0NvbnRleHQgPSBhZG9wdFB0
cihuZXcgUURlY2xhcmF0aXZlQ29udGV4dChiYXNlQ29udGV4dCkpOworCisgICAgLy8gVGhpcyBt
YWtlcyBib3RoICJtZXNzYWdlIiBhbmQgIm1vZGVsLm1lc3NhZ2UiIHdvcmsgZm9yIHRoZSBkaWFs
b2csIGp1c3QgbGlrZSBRdFF1aWNrJ3MgTGlzdFZpZXcgZGVsZWdhdGVzLgorICAgIGNvbnRleHRP
YmplY3QtPnNldFBhcmVudChtX2RpYWxvZ0NvbnRleHQuZ2V0KCkpOworICAgIG1fZGlhbG9nQ29u
dGV4dC0+c2V0Q29udGV4dFByb3BlcnR5KFFMYXRpbjFTdHJpbmcoIm1vZGVsIiksIGNvbnRleHRP
YmplY3QpOworICAgIG1fZGlhbG9nQ29udGV4dC0+c2V0Q29udGV4dE9iamVjdChjb250ZXh0T2Jq
ZWN0KTsKKworICAgIFFPYmplY3QqIG9iamVjdCA9IGNvbXBvbmVudC0+Y3JlYXRlKG1fZGlhbG9n
Q29udGV4dC5nZXQoKSk7CisgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgbV9kaWFsb2dDb250
ZXh0LmNsZWFyKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX2RpYWxv
ZyA9IGFkb3B0UHRyKHFvYmplY3RfY2FzdDxRUXVpY2tJdGVtKj4ob2JqZWN0KSk7CisgICAgaWYg
KCFtX2RpYWxvZykgeworICAgICAgICBtX2RpYWxvZ0NvbnRleHQuY2xlYXIoKTsKKyAgICAgICAg
bV9kaWFsb2cuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1f
ZGlhbG9nLT5zZXRQYXJlbnRJdGVtKGRpYWxvZ1BhcmVudCk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKKyNpbmNsdWRlICJRdERpYWxvZ1J1bm5lci5tb2MiCisjaW5jbHVkZSAibW9jX1F0RGlhbG9n
UnVubmVyLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERp
YWxvZ1J1bm5lci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0RGlhbG9nUnVubmVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmQxYzlmMzFlZGM2OTIyMzFjYWVkMmZkNzAyYmJlNjQ4YjdkMDlmNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERpYWxvZ1J1
bm5lci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFF0RGlh
bG9nUnVubmVyX2gKKyNkZWZpbmUgUXREaWFsb2dSdW5uZXJfaAorCisjaW5jbHVkZSA8UXRDb3Jl
L1FFdmVudExvb3A+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCitjbGFzcyBRRGVjbGFyYXRp
dmVDb21wb25lbnQ7CitjbGFzcyBRRGVjbGFyYXRpdmVDb250ZXh0OworY2xhc3MgUVF1aWNrSXRl
bTsKKworY2xhc3MgUXREaWFsb2dSdW5uZXIgOiBwdWJsaWMgUUV2ZW50TG9vcCB7CisgICAgUV9P
QkpFQ1QKKworcHVibGljOgorICAgIFF0RGlhbG9nUnVubmVyKCk7CisgICAgdmlydHVhbCB+UXRE
aWFsb2dSdW5uZXIoKTsKKworICAgIGJvb2wgaW5pdEZvckFsZXJ0KFFEZWNsYXJhdGl2ZUNvbXBv
bmVudCosIFFRdWlja0l0ZW0qIGRpYWxvZ1BhcmVudCwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSk7
CisgICAgYm9vbCBpbml0Rm9yQ29uZmlybShRRGVjbGFyYXRpdmVDb21wb25lbnQqLCBRUXVpY2tJ
dGVtKiBkaWFsb2dQYXJlbnQsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpOworICAgIGJvb2wgaW5p
dEZvclByb21wdChRRGVjbGFyYXRpdmVDb21wb25lbnQqLCBRUXVpY2tJdGVtKiBkaWFsb2dQYXJl
bnQsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFFTdHJpbmcmIGRlZmF1bHRWYWx1ZSk7
CisKKyAgICBib29sIHdhc0FjY2VwdGVkKCkgY29uc3QgeyByZXR1cm4gbV93YXNBY2NlcHRlZDsg
fQorICAgIFFTdHJpbmcgcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHQ7IH0KKworcHVi
bGljIHNsb3RzOgorICAgIHZvaWQgb25BY2NlcHRlZChjb25zdCBRU3RyaW5nJiByZXN1bHQgPSBR
U3RyaW5nKCkpCisgICAgeworICAgICAgICBtX3dhc0FjY2VwdGVkID0gdHJ1ZTsKKyAgICAgICAg
bV9yZXN1bHQgPSByZXN1bHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgY3JlYXRlRGlh
bG9nKFFEZWNsYXJhdGl2ZUNvbXBvbmVudCosIFFRdWlja0l0ZW0qIGRpYWxvZ1BhcmVudCwgUU9i
amVjdCogY29udGV4dE9iamVjdCk7CisKKyAgICBPd25QdHI8UURlY2xhcmF0aXZlQ29udGV4dD4g
bV9kaWFsb2dDb250ZXh0OworICAgIE93blB0cjxRUXVpY2tJdGVtPiBtX2RpYWxvZzsKKyAgICBR
U3RyaW5nIG1fcmVzdWx0OworICAgIGJvb2wgbV93YXNBY2NlcHRlZDsKK307CisKKyNlbmRpZiAv
LyBRdERpYWxvZ1J1bm5lcl9oCg==
</data>
<flag name="review"
          id="114557"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
      

    </bug>

</bugzilla>