<?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>118431</bug_id>
          
          <creation_ts>2013-07-05 11:04:16 -0700</creation_ts>
          <short_desc>[GTK] Migrate WebKitDOMDOMWindow unit tests to WebKit2</short_desc>
          <delta_ts>2017-03-11 11:04:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>118427</dependson>
          <blocked>118426</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Enrique Ocaña">eocanha</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eocanha</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rego</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>906459</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-07-05 11:04:16 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936212</commentid>
    <comment_count>1</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2013-10-04 09:12:54 -0700</bug_when>
    <thetext>I&apos;m working on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958816</commentid>
    <comment_count>2</comment_count>
      <attachid>218981</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2013-12-11 11:23:25 -0800</bug_when>
    <thetext>Created attachment 218981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958819</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-11 11:24:58 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959158</commentid>
    <comment_count>4</comment_count>
      <attachid>218981</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-12-12 04:01:10 -0800</bug_when>
    <thetext>Comment on attachment 218981
Patch

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

Thanks for the patch. I think you have focused too much on migrating the wk1 test, but we can adapt it to the constraints of the webkit2. See my comments below.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/DOMDOMWindowTest.cpp:27
&gt; +class WebKitDOMDOMWindowTest;

Do you really need this forward declaration here?

&gt; Source/WebKit2/UIProcess/API/gtk/tests/DOMDOMWindowTest.cpp:29
&gt; +static gboolean loadedCallback(WebKitDOMDOMWindow*, WebKitDOMEvent*, WebKitDOMDOMWindowTest*);
&gt; +static gboolean clickedCallback(WebKitDOMDOMWindow*, WebKitDOMEvent*, WebKitDOMDOMWindowTest*);

Do not do this, add the callbacks as static members of the WebKitDOMDOMWindowTest class.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/DOMDOMWindowTest.cpp:54
&gt; +        notify(&quot;ready&quot;, &quot;&quot;);

The idea of these web process tests is that, ideally, the run on their own, without needing any interaction back to the ui process.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/DOMDOMWindowTest.cpp:62
&gt; +        g_assert(domWindow);

g_assert(WEBKIT_DOM_IS_DOM_WINDOW(domWindow));

&gt; Source/WebKit2/UIProcess/API/gtk/tests/DOMDOMWindowTest.cpp:74
&gt; +        // The &quot;load&quot; WebKitDOMDOMWindow signal is issued before this test is
&gt; +        // called. There&apos;s no way to capture it here. We simply assume that
&gt; +        // the document is loaded and notify the uiprocess accordingly
&gt; +        // notify(&quot;loaded&quot;, &quot;&quot;);
&gt; +
&gt; +        webkit_dom_event_target_add_event_listener(
&gt; +            WEBKIT_DOM_EVENT_TARGET(domWindow),
&gt; +            &quot;load&quot;,
&gt; +            G_CALLBACK(loadedCallback),
&gt; +            false,
&gt; +            this);

This test is about testing signals, not about testing the load signal specifically. If testing the load signal is a problem because of the way these tests are designed, choose any other signal to test.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/DOMDOMWindowTest.cpp:83
&gt; +        g_assert(element);

g_assert(WEBKIT_DOM_IS_ELEMENT(element));

&gt; Source/WebKit2/UIProcess/API/gtk/tests/DOMDOMWindowTest.cpp:95
&gt; +        webkit_dom_event_target_add_event_listener(
&gt; +            WEBKIT_DOM_EVENT_TARGET(element),
&gt; +            &quot;click&quot;,
&gt; +            G_CALLBACK(clickedCallback),
&gt; +            false,
&gt; +            this);
&gt; +
&gt; +        // The &quot;click&quot; action will be issued in the uiprocess and that will
&gt; +        // trigger the dom event here.
&gt; +        // clickedCallback() will stop this loop
&gt; +        RunLoop::run();

I think we can merge the first too tests, so that we dispatch the event here and we check the callbacks set with webkit_dom_event_target_add_event_listener are called. This way we don&apos;t need interaction with the UI process.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/DOMDOMWindowTest.cpp:110
&gt; +        g_assert(domWindow);

Use always GObject macros

&gt; Source/WebKit2/UIProcess/API/gtk/tests/DOMDOMWindowTest.cpp:125
&gt; +        // The &quot;load&quot; WebKitDOMDOMWindow signal is issued before this test is
&gt; +        // called. There&apos;s no way to capture it here. We simply assume that
&gt; +        // the document is loaded and notify the uiprocess accordingly
&gt; +        // notify(&quot;loaded&quot;, &quot;&quot;);
&gt; +
&gt; +        webkit_dom_event_target_add_event_listener(
&gt; +            WEBKIT_DOM_EVENT_TARGET(domWindow),
&gt; +            &quot;load&quot;,
&gt; +            G_CALLBACK(loadedCallback),
&gt; +            false,
&gt; +            this);
&gt; +
&gt; +        // loadedCallback() will stop this loop
&gt; +        RunLoop::run();

Why do you need to connect to load again if the page has already been loaded at this point?

&gt; Source/WebKit2/UIProcess/API/gtk/tests/DOMDOMWindowTest.cpp:135
&gt; +        g_assert(event);
&gt; +        g_assert(WEBKIT_DOM_IS_EVENT(event));

GObject macros will fail when the pointer is NULL so the first assert is redundant

&gt; Source/WebKit2/UIProcess/API/gtk/tests/DOMDOMWindowTest.cpp:136
&gt; +        g_assert(WEBKIT_DOM_IS_MOUSE_EVENT(event));

I think this one is enough, since a DOMMourseEVent is always a DOMEvent

&gt; Source/WebKit2/UIProcess/API/gtk/tests/DOMDOMWindowTest.cpp:170
&gt; +        g_assert(domWindow);

Use GObject macros

&gt; Source/WebKit2/UIProcess/API/gtk/tests/DOMDOMWindowTest.cpp:173
&gt; +        g_assert(element);
&gt; +        g_assert(WEBKIT_DOM_IS_ELEMENT(element));

Same comment here, the first assert is redundant

&gt; Source/WebKit2/UIProcess/API/gtk/tests/DOMDOMWindowTest.cpp:206
&gt; +    // Stop the loop and let testSignals() or testDispatchEvent() continue its course

Nit: Comments should finish with a period. Comment is probably redundant , though

&gt; Source/WebKit2/UIProcess/API/gtk/tests/DOMDOMWindowTest.cpp:217
&gt; +    // Stop the loop and let testSignals() or testDispatchEvent() continue its course

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestDOMDOMWindow.cpp:27
&gt; +#define HTML_DOCUMENT &quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;&lt;/title&gt;&lt;/head&gt;&lt;style type=&apos;text/css&apos;&gt;#test { font-size: 16px; }&lt;/style&gt;&lt;body&gt;&lt;p id=&apos;test&apos;&gt;test&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&quot;

Use a static global var instead, or not global if it&apos;s only used in one place.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestDOMDOMWindow.cpp:34
&gt; +typedef struct {
&gt; +    gboolean loaded;
&gt; +    gboolean clicked;
&gt; +    WebProcessTestRunner* testRunner;
&gt; +    WebViewTest* test;
&gt; +} DomDomWindowTestStatus;

I hope we don&apos;t need all thse, this file should just launch the web proces tests like TestFrame does, for instance.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/WebProcessTest.cpp:46
&gt; +void WebProcessTest::notify(const char* key, const char* value)

And we won&apos;t need this signal either. In any case, this is specific to a test, so I think it should be done there, instead of here in case it&apos;s still needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961829</commentid>
    <comment_count>5</comment_count>
      <attachid>219751</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2013-12-20 04:37:32 -0800</bug_when>
    <thetext>Created attachment 219751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151803</commentid>
    <comment_count>6</comment_count>
      <attachid>219751</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-12-31 16:06:41 -0800</bug_when>
    <thetext>Comment on attachment 219751
Patch

This patch includes changes to old Autotools files. Removing from request queue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218981</attachid>
            <date>2013-12-11 11:23:25 -0800</date>
            <delta_ts>2013-12-20 04:37:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118431-20131211192323.patch</filename>
            <type>text/plain</type>
            <size>27009</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMjk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTYxNzU3NjYxNmUzMzlh
NTA0NGU1ZjRjNjUzZjAwODgzZTJhNTVmOC4uMmFiZGY3MjY1ODdiZmYxZjhiYmIwNzBlODdiYmI1
M2FiMTk5YTI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEzLTEyLTExICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dU
S10gTWlncmF0ZSBXZWJLaXRET01ET01XaW5kb3cgdW5pdCB0ZXN0cyB0byBXZWJLaXQyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg0MzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL0RPTURPTVdpbmRvd1Rlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dERPTURPTVdpbmRvd1Rlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXRET01ET01XaW5kb3dU
ZXN0Ojp3ZWJQYWdlRnJvbUFyZ3MpOgorICAgICAgICAoV2ViS2l0RE9NRE9NV2luZG93VGVzdDo6
dGVzdFNpZ25hbHMpOgorICAgICAgICAoV2ViS2l0RE9NRE9NV2luZG93VGVzdDo6dGVzdERpc3Bh
dGNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0RE9NRE9NV2luZG93VGVzdDo6dGVzdEdldENvbXB1
dGVkU3R5bGUpOgorICAgICAgICAoV2ViS2l0RE9NRE9NV2luZG93VGVzdDo6cnVuVGVzdCk6Cisg
ICAgICAgIChyZWdpc3RlclRlc3RzKToKKyAgICAgICAgKGxvYWRlZENhbGxiYWNrKToKKyAgICAg
ICAgKGNsaWNrZWRDYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
R05VbWFrZWZpbGUuYW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdERP
TURPTVdpbmRvdy5jcHA6IEFkZGVkLgorICAgICAgICAoc2lnbmFsc05vdGlmeUNhbGxiYWNrKToK
KyAgICAgICAgKGRpc3BhdGNoRXZlbnROb3RpZnlDYWxsYmFjayk6CisgICAgICAgICh0ZXN0V2Vi
S2l0RE9NRE9NV2luZG93U2lnbmFscyk6CisgICAgICAgICh0ZXN0V2ViS2l0RE9NRE9NV2luZG93
RGlzcGF0Y2hFdmVudCk6CisgICAgICAgICh0ZXN0V2ViS2l0RE9NRE9NV2luZG93R2V0Q29tcHV0
ZWRTdHlsZSk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAoYWZ0ZXJBbGwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlByb2Nlc3NUZXN0LmNwcDoKKyAgICAg
ICAgKFdlYlByb2Nlc3NUZXN0Ojpub3RpZnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1dlYlByb2Nlc3NUZXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvV2ViUHJvY2Vzc1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV2ViUHJvY2Vzc1Rlc3RSdW5u
ZXI6OldlYlByb2Nlc3NUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlByb2Nlc3NUZXN0UnVubmVy
OjpzZXROb3RpZnlDYWxsYmFjayk6CisgICAgICAgIChXZWJQcm9jZXNzVGVzdFJ1bm5lcjo6bm90
aWZ5U2lnbmFsQ2FsbGJhY2spOgorICAgICAgICAoV2ViUHJvY2Vzc1Rlc3RSdW5uZXI6OnJ1blRl
c3QpOgorICAgICAgICAoV2ViUHJvY2Vzc1Rlc3RSdW5uZXI6OnJ1blRlc3RBbmRXYWl0KToKKyAg
ICAgICAgKFdlYlByb2Nlc3NUZXN0UnVubmVyOjpnZXRUZXN0UmVzdWx0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJQcm9jZXNzVGVzdFJ1bm5lci5oOgorCiAyMDEzLTEy
LTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0NvY29hXSBSZW1v
dmUgd2ViUHJvY2Vzc1BsdWdJbkluaXRpYWxpemU6IGZyb20gdGhlIFdLV2ViUHJvY2Vzc1BsdWdJ
biBwcm90b2NvbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvRE9NRE9NV2luZG93VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9ET01ET01XaW5kb3dUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2FhZDU0OGEzZTk2
MzNmZWY2MjYwMjA2MWUzNTkyOGRjMWMwNzZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvRE9NRE9NV2luZG93VGVzdC5jcHAKQEAgLTAs
MCArMSwyMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Rlc3QuaCIKKyNpbmNsdWRlIDxn
aW8vZ2lvLmg+CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK2NsYXNzIFdlYktpdERPTURPTVdpbmRvd1Rlc3Q7Citz
dGF0aWMgZ2Jvb2xlYW4gbG9hZGVkQ2FsbGJhY2soV2ViS2l0RE9NRE9NV2luZG93KiwgV2ViS2l0
RE9NRXZlbnQqLCBXZWJLaXRET01ET01XaW5kb3dUZXN0Kik7CitzdGF0aWMgZ2Jvb2xlYW4gY2xp
Y2tlZENhbGxiYWNrKFdlYktpdERPTURPTVdpbmRvdyosIFdlYktpdERPTUV2ZW50KiwgV2ViS2l0
RE9NRE9NV2luZG93VGVzdCopOworCitjbGFzcyBXZWJLaXRET01ET01XaW5kb3dUZXN0IDogcHVi
bGljIFdlYlByb2Nlc3NUZXN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJQ
cm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFdlYktpdERPTURPTVdp
bmRvd1Rlc3QoKSk7IH0KKworcHJpdmF0ZToKKyAgICBndWludDY0IHdlYlBhZ2VGcm9tQXJncyhH
VmFyaWFudCogYXJncykKKyAgICB7CisgICAgICAgIEdWYXJpYW50SXRlciBpdGVyOworICAgICAg
ICBnX3ZhcmlhbnRfaXRlcl9pbml0KCZpdGVyLCBhcmdzKTsKKworICAgICAgICBjb25zdCBjaGFy
KiBrZXk7CisgICAgICAgIEdWYXJpYW50KiB2YWx1ZTsKKyAgICAgICAgd2hpbGUgKGdfdmFyaWFu
dF9pdGVyX2xvb3AoJml0ZXIsICJ7JnN2fSIsICZrZXksICZ2YWx1ZSkpIHsKKyAgICAgICAgICAg
IGlmICghc3RyY21wKGtleSwgInBhZ2VJRCIpICYmIGdfdmFyaWFudF9jbGFzc2lmeSh2YWx1ZSkg
PT0gR19WQVJJQU5UX0NMQVNTX1VJTlQ2NCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZ192YXJp
YW50X2dldF91aW50NjQodmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgZ19hc3NlcnRfbm90
X3JlYWNoZWQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgYm9vbCB0ZXN0U2ln
bmFscyhXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgR1ZhcmlhbnQqIGFyZ3MpCisgICAg
eworICAgICAgICBub3RpZnkoInJlYWR5IiwgIiIpOworCisgICAgICAgIFdlYktpdFdlYlBhZ2Uq
IHBhZ2UgPSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZShleHRlbnNpb24sIHdlYlBhZ2VG
cm9tQXJncyhhcmdzKSk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfUEFHRShwYWdl
KSk7CisgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFn
ZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lT
X0RPQ1VNRU5UKGRvY3VtZW50KSk7CisKKyAgICAgICAgV2ViS2l0RE9NRE9NV2luZG93KiBkb21X
aW5kb3cgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9kZWZhdWx0X3ZpZXcoZG9jdW1lbnQpOwor
ICAgICAgICBnX2Fzc2VydChkb21XaW5kb3cpOworCisgICAgICAgIC8vIFRoZSAibG9hZCIgV2Vi
S2l0RE9NRE9NV2luZG93IHNpZ25hbCBpcyBpc3N1ZWQgYmVmb3JlIHRoaXMgdGVzdCBpcworICAg
ICAgICAvLyBjYWxsZWQuIFRoZXJlJ3Mgbm8gd2F5IHRvIGNhcHR1cmUgaXQgaGVyZS4gV2Ugc2lt
cGx5IGFzc3VtZSB0aGF0CisgICAgICAgIC8vIHRoZSBkb2N1bWVudCBpcyBsb2FkZWQgYW5kIG5v
dGlmeSB0aGUgdWlwcm9jZXNzIGFjY29yZGluZ2x5CisgICAgICAgIC8vIG5vdGlmeSgibG9hZGVk
IiwgIiIpOworCisgICAgICAgIHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2FkZF9ldmVudF9saXN0
ZW5lcigKKyAgICAgICAgICAgIFdFQktJVF9ET01fRVZFTlRfVEFSR0VUKGRvbVdpbmRvdyksCisg
ICAgICAgICAgICAibG9hZCIsCisgICAgICAgICAgICBHX0NBTExCQUNLKGxvYWRlZENhbGxiYWNr
KSwKKyAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgdGhpcyk7CisKKyAgICAgICAgLy8g
bG9hZGVkQ2FsbGJhY2soKSB3aWxsIHN0b3AgdGhpcyBsb29wCisgICAgICAgIFJ1bkxvb3A6OnJ1
bigpOworCisgICAgICAgIGRvY3VtZW50ID0gd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1l
bnQocGFnZSk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1l
bnQpKTsKKworICAgICAgICBXZWJLaXRET01FbGVtZW50KiBlbGVtZW50ID0gd2Via2l0X2RvbV9k
b2N1bWVudF9nZXRfZWxlbWVudF9ieV9pZChkb2N1bWVudCwgInRlc3QiKTsKKyAgICAgICAgZ19h
c3NlcnQoZWxlbWVudCk7CisKKyAgICAgICAgd2Via2l0X2RvbV9ldmVudF90YXJnZXRfYWRkX2V2
ZW50X2xpc3RlbmVyKAorICAgICAgICAgICAgV0VCS0lUX0RPTV9FVkVOVF9UQVJHRVQoZWxlbWVu
dCksCisgICAgICAgICAgICAiY2xpY2siLAorICAgICAgICAgICAgR19DQUxMQkFDSyhjbGlja2Vk
Q2FsbGJhY2spLAorICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICB0aGlzKTsKKworICAg
ICAgICAvLyBUaGUgImNsaWNrIiBhY3Rpb24gd2lsbCBiZSBpc3N1ZWQgaW4gdGhlIHVpcHJvY2Vz
cyBhbmQgdGhhdCB3aWxsCisgICAgICAgIC8vIHRyaWdnZXIgdGhlIGRvbSBldmVudCBoZXJlLgor
ICAgICAgICAvLyBjbGlja2VkQ2FsbGJhY2soKSB3aWxsIHN0b3AgdGhpcyBsb29wCisgICAgICAg
IFJ1bkxvb3A6OnJ1bigpOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJv
b2wgdGVzdERpc3BhdGNoRXZlbnQoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIEdWYXJp
YW50KiBhcmdzKQorICAgIHsKKyAgICAgICAgbm90aWZ5KCJyZWFkeSIsICIiKTsKKworICAgICAg
ICBXZWJLaXRXZWJQYWdlKiBwYWdlID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2UoZXh0
ZW5zaW9uLCB3ZWJQYWdlRnJvbUFyZ3MoYXJncykpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRf
SVNfV0VCX1BBR0UocGFnZSkpOworICAgICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQg
PSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChwYWdlKTsKKyAgICAgICAgZ19hc3Nl
cnQoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOworCisgICAgICAgIFdlYktpdERP
TURPTVdpbmRvdyogZG9tV2luZG93ID0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZGVmYXVsdF92
aWV3KGRvY3VtZW50KTsKKyAgICAgICAgZ19hc3NlcnQoZG9tV2luZG93KTsKKworICAgICAgICAv
LyBUaGUgImxvYWQiIFdlYktpdERPTURPTVdpbmRvdyBzaWduYWwgaXMgaXNzdWVkIGJlZm9yZSB0
aGlzIHRlc3QgaXMKKyAgICAgICAgLy8gY2FsbGVkLiBUaGVyZSdzIG5vIHdheSB0byBjYXB0dXJl
IGl0IGhlcmUuIFdlIHNpbXBseSBhc3N1bWUgdGhhdAorICAgICAgICAvLyB0aGUgZG9jdW1lbnQg
aXMgbG9hZGVkIGFuZCBub3RpZnkgdGhlIHVpcHJvY2VzcyBhY2NvcmRpbmdseQorICAgICAgICAv
LyBub3RpZnkoImxvYWRlZCIsICIiKTsKKworICAgICAgICB3ZWJraXRfZG9tX2V2ZW50X3Rhcmdl
dF9hZGRfZXZlbnRfbGlzdGVuZXIoCisgICAgICAgICAgICBXRUJLSVRfRE9NX0VWRU5UX1RBUkdF
VChkb21XaW5kb3cpLAorICAgICAgICAgICAgImxvYWQiLAorICAgICAgICAgICAgR19DQUxMQkFD
Syhsb2FkZWRDYWxsYmFjayksCisgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgIHRoaXMp
OworCisgICAgICAgIC8vIGxvYWRlZENhbGxiYWNrKCkgd2lsbCBzdG9wIHRoaXMgbG9vcAorICAg
ICAgICBSdW5Mb29wOjpydW4oKTsKKworICAgICAgICBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFn
ZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lT
X0RPQ1VNRU5UKGRvY3VtZW50KSk7CisKKyAgICAgICAgV2ViS2l0RE9NRWxlbWVudCogZWxlbWVu
dCA9IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2VsZW1lbnRfYnlfaWQoZG9jdW1lbnQsICJ0ZXN0
Iik7CisgICAgICAgIGdfYXNzZXJ0KGVsZW1lbnQpOworCisgICAgICAgIFdlYktpdERPTUV2ZW50
KiBldmVudCA9IHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX2V2ZW50KGRvY3VtZW50LCAiTW91
c2VFdmVudCIsIDApOworICAgICAgICBnX2Fzc2VydChldmVudCk7CisgICAgICAgIGdfYXNzZXJ0
KFdFQktJVF9ET01fSVNfRVZFTlQoZXZlbnQpKTsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RP
TV9JU19NT1VTRV9FVkVOVChldmVudCkpOworCisgICAgICAgIGdsb25nIGNsaWVudFgsIGNsaWVu
dFk7CisgICAgICAgIGNsaWVudFggPSB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X2NsaWVudF9sZWZ0
KGVsZW1lbnQpOworICAgICAgICBjbGllbnRZID0gd2Via2l0X2RvbV9lbGVtZW50X2dldF9jbGll
bnRfdG9wKGVsZW1lbnQpOworCisgICAgICAgIHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2FkZF9l
dmVudF9saXN0ZW5lcigKKyAgICAgICAgICAgIFdFQktJVF9ET01fRVZFTlRfVEFSR0VUKGVsZW1l
bnQpLAorICAgICAgICAgICAgImNsaWNrIiwKKyAgICAgICAgICAgIEdfQ0FMTEJBQ0soY2xpY2tl
ZENhbGxiYWNrKSwKKyAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgdGhpcyk7CisKKyAg
ICAgICAgd2Via2l0X2RvbV9tb3VzZV9ldmVudF9pbml0X21vdXNlX2V2ZW50KFdFQktJVF9ET01f
TU9VU0VfRVZFTlQoZXZlbnQpLAorICAgICAgICAgICAgImNsaWNrIiwgVFJVRSwgVFJVRSwKKyAg
ICAgICAgICAgIGRvbVdpbmRvdywgMCwgMCwgMCwgY2xpZW50WCwgY2xpZW50WSwKKyAgICAgICAg
ICAgIEZBTFNFLCBGQUxTRSwgRkFMU0UsIEZBTFNFLAorICAgICAgICAgICAgMSwgV0VCS0lUX0RP
TV9FVkVOVF9UQVJHRVQoZWxlbWVudCkpOworCisgICAgICAgIHdlYmtpdF9kb21fZXZlbnRfdGFy
Z2V0X2Rpc3BhdGNoX2V2ZW50KFdFQktJVF9ET01fRVZFTlRfVEFSR0VUKGVsZW1lbnQpLCBldmVu
dCwgMCk7CisKKyAgICAgICAgLy8gY2xpY2tlZENhbGxiYWNrKCkgd2lsbCBzdG9wIHRoaXMgbG9v
cAorICAgICAgICBSdW5Mb29wOjpydW4oKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICBib29sIHRlc3RHZXRDb21wdXRlZFN0eWxlKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0
ZW5zaW9uLCBHVmFyaWFudCogYXJncykKKyAgICB7CisgICAgICAgIFdlYktpdFdlYlBhZ2UqIHBh
Z2UgPSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZShleHRlbnNpb24sIHdlYlBhZ2VGcm9t
QXJncyhhcmdzKSk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfUEFHRShwYWdlKSk7
CisgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9n
ZXRfZG9tX2RvY3VtZW50KHBhZ2UpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RP
Q1VNRU5UKGRvY3VtZW50KSk7CisgICAgICAgIFdlYktpdERPTURPTVdpbmRvdyogZG9tV2luZG93
ID0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZGVmYXVsdF92aWV3KGRvY3VtZW50KTsKKyAgICAg
ICAgZ19hc3NlcnQoZG9tV2luZG93KTsKKyAgICAgICAgV2ViS2l0RE9NRWxlbWVudCogZWxlbWVu
dCA9IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2VsZW1lbnRfYnlfaWQoZG9jdW1lbnQsICJ0ZXN0
Iik7CisgICAgICAgIGdfYXNzZXJ0KGVsZW1lbnQpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRf
RE9NX0lTX0VMRU1FTlQoZWxlbWVudCkpOworICAgICAgICBXZWJLaXRET01DU1NTdHlsZURlY2xh
cmF0aW9uKiBjc3NTdHlsZSA9IHdlYmtpdF9kb21fZG9tX3dpbmRvd19nZXRfY29tcHV0ZWRfc3R5
bGUoZG9tV2luZG93LCBlbGVtZW50LCAwKTsKKyAgICAgICAgZ2NoYXIqIGZvbnRTaXplID0gd2Vi
a2l0X2RvbV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fZ2V0X3Byb3BlcnR5X3ZhbHVlKGNzc1N0eWxl
LCAiZm9udC1zaXplIik7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihmb250U2l6ZSwgPT0sICIx
NnB4Iik7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdmlydHVhbCBib29s
IHJ1blRlc3QoY29uc3QgY2hhciogdGVzdE5hbWUsIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5z
aW9uLCBHVmFyaWFudCogYXJncykKKyAgICB7CisgICAgICAgIGlmICghc3RyY21wKHRlc3ROYW1l
LCAic2lnbmFscyIpKQorICAgICAgICAgICAgcmV0dXJuIHRlc3RTaWduYWxzKGV4dGVuc2lvbiwg
YXJncyk7CisgICAgICAgIGlmICghc3RyY21wKHRlc3ROYW1lLCAiZGlzcGF0Y2gtZXZlbnQiKSkK
KyAgICAgICAgICAgIHJldHVybiB0ZXN0RGlzcGF0Y2hFdmVudChleHRlbnNpb24sIGFyZ3MpOwor
ICAgICAgICBpZiAoIXN0cmNtcCh0ZXN0TmFtZSwgImdldC1jb21wdXRlZC1zdHlsZSIpKQorICAg
ICAgICAgICAgcmV0dXJuIHRlc3RHZXRDb21wdXRlZFN0eWxlKGV4dGVuc2lvbiwgYXJncyk7CisK
KyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KK307CisKK3N0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9yKSkgcmVn
aXN0ZXJUZXN0cygpCit7CisgICAgUkVHSVNURVJfVEVTVChXZWJLaXRET01ET01XaW5kb3dUZXN0
LCAiV2ViS2l0RE9NRE9NV2luZG93L3NpZ25hbHMiKTsKKyAgICBSRUdJU1RFUl9URVNUKFdlYktp
dERPTURPTVdpbmRvd1Rlc3QsICJXZWJLaXRET01ET01XaW5kb3cvZGlzcGF0Y2gtZXZlbnQiKTsK
KyAgICBSRUdJU1RFUl9URVNUKFdlYktpdERPTURPTVdpbmRvd1Rlc3QsICJXZWJLaXRET01ET01X
aW5kb3cvZ2V0LWNvbXB1dGVkLXN0eWxlIik7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiBsb2FkZWRD
YWxsYmFjayhXZWJLaXRET01ET01XaW5kb3cqIHZpZXcsIFdlYktpdERPTUV2ZW50KiBldmVudCwg
V2ViS2l0RE9NRE9NV2luZG93VGVzdCogdGVzdCkKK3sKKyAgICB0ZXN0LT5ub3RpZnkoImxvYWRl
ZCIsICIiKTsKKworICAgIC8vIFN0b3AgdGhlIGxvb3AgYW5kIGxldCB0ZXN0U2lnbmFscygpIG9y
IHRlc3REaXNwYXRjaEV2ZW50KCkgY29udGludWUgaXRzIGNvdXJzZQorICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS0+c3RvcCgpOworCisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xl
YW4gY2xpY2tlZENhbGxiYWNrKFdlYktpdERPTURPTVdpbmRvdyogdmlldywgV2ViS2l0RE9NRXZl
bnQqIGV2ZW50LCBXZWJLaXRET01ET01XaW5kb3dUZXN0KiB0ZXN0KQoreworICAgIHRlc3QtPm5v
dGlmeSgiY2xpY2tlZCIsICIiKTsKKyAgICB0ZXN0LT5ub3RpZnkoImZpbmlzaCIsICIiKTsKKwor
ICAgIC8vIFN0b3AgdGhlIGxvb3AgYW5kIGxldCB0ZXN0U2lnbmFscygpIG9yIHRlc3REaXNwYXRj
aEV2ZW50KCkgY29udGludWUgaXRzIGNvdXJzZQorICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS0+c3Rv
cCgpOworCisgICAgcmV0dXJuIEZBTFNFOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbQppbmRleCBlMDA4YWQwOWY1ODE3
NzBmMTI5MmVjYTYyYThmZWE1Yjc1MjFkY2UzLi5hMWVmZDIxNmFjZjU1NDA0ZGYyYjEzNzFjZmQy
ODAyOTZmOTBlYzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbQpAQCAtNSw2ICs1LDcgQEAgVEVTVF9QUk9HUyArPSBc
CiAJUHJvZ3JhbXMvV2ViS2l0MkFQSVRlc3RzL1Rlc3RCYWNrRm9yd2FyZExpc3QgXAogCVByb2dy
YW1zL1dlYktpdDJBUElUZXN0cy9UZXN0Q29udGV4dE1lbnUgXAogCVByb2dyYW1zL1dlYktpdDJB
UElUZXN0cy9UZXN0Q29va2llTWFuYWdlciBcCisJUHJvZ3JhbXMvV2ViS2l0MkFQSVRlc3RzL1Rl
c3RET01ET01XaW5kb3cgXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0RE9NTm9kZSBc
CiAJUHJvZ3JhbXMvV2ViS2l0MkFQSVRlc3RzL1Rlc3REb3dubG9hZHMgXAogCVByb2dyYW1zL1dl
YktpdDJBUElUZXN0cy9UZXN0RnJhbWUgXApAQCAtMTI2LDYgKzEyNyw3IEBAIExpYnJhcmllc19X
ZWJFeHRlbnNpb25zX2xpYldlYkV4dGVuc2lvblRlc3RfbGFfQ0ZMQUdTID0gXAogCiBub2luc3Rf
TFRMSUJSQVJJRVMgKz0gTGlicmFyaWVzL1dlYkV4dGVuc2lvbnMvbGliV2ViUHJvY2Vzc1Rlc3Qu
bGEKIExpYnJhcmllc19XZWJFeHRlbnNpb25zX2xpYldlYlByb2Nlc3NUZXN0X2xhX1NPVVJDRVMg
PSBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvRE9NRE9NV2luZG93
VGVzdC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0RPTU5v
ZGVUZXN0LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvRnJh
bWVUZXN0LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2Vi
UHJvY2Vzc1Rlc3QuY3BwIFwKQEAgLTI5OCw2ICszMDAsMTIgQEAgUHJvZ3JhbXNfV2ViS2l0MkFQ
SVRlc3RzX1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXBfQ1BQRkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNf
Y3BwZmwKIFByb2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0V2ViS2l0V2ViVmlld0dyb3VwX0xE
QUREID0gJCh3ZWJraXQyX3Rlc3RzX2xkYWRkKQogUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rl
c3RXZWJLaXRXZWJWaWV3R3JvdXBfTERGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19sZGZsYWdzKQog
CitQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdERPTURPTVdpbmRvd19TT1VSQ0VTID0gXAor
ICAgICAgICBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0RE9NRE9N
V2luZG93LmNwcAorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RET01ET01XaW5kb3dfQ1BQ
RkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfY3BwZmxhZ3MpCitQcm9ncmFtc19XZWJLaXQyQVBJVGVz
dHNfVGVzdERPTURPTVdpbmRvd19MREFERCA9ICQod2Via2l0Ml90ZXN0c19sZGFkZCkKK1Byb2dy
YW1zX1dlYktpdDJBUElUZXN0c19UZXN0RE9NRE9NV2luZG93X0xERkxBR1MgPSAkKHdlYmtpdDJf
dGVzdHNfbGRmbGFncykKKwogUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RET01Ob2RlX1NP
VVJDRVMgPSBcCiAgICAgICAgIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L1Rlc3RET01Ob2RlLmNwcAogUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RET01Ob2RlX0NQ
UEZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2NwcGZsYWdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdERPTURPTVdpbmRvdy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0RE9NRE9NV2luZG93LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45OGM2ZTEwNjQxZjU5ZDhmMmZjNGJhYTk1NTFjYjlhNmU0ZTcyYmRhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVz
dERPTURPTVdpbmRvdy5jcHAKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYlBy
b2Nlc3NUZXN0UnVubmVyLmgiCisjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlIDxn
dGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CisKKyNkZWZpbmUgSFRNTF9E
T0NVTUVOVCAiPGh0bWw+PGhlYWQ+PHRpdGxlPjwvdGl0bGU+PC9oZWFkPjxzdHlsZSB0eXBlPSd0
ZXh0L2Nzcyc+I3Rlc3QgeyBmb250LXNpemU6IDE2cHg7IH08L3N0eWxlPjxib2R5PjxwIGlkPSd0
ZXN0Jz50ZXN0PC9wPjwvYm9keT48L2h0bWw+IgorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgZ2Jv
b2xlYW4gbG9hZGVkOworICAgIGdib29sZWFuIGNsaWNrZWQ7CisgICAgV2ViUHJvY2Vzc1Rlc3RS
dW5uZXIqIHRlc3RSdW5uZXI7CisgICAgV2ViVmlld1Rlc3QqIHRlc3Q7Cit9IERvbURvbVdpbmRv
d1Rlc3RTdGF0dXM7CisKK3N0YXRpYyBEb21Eb21XaW5kb3dUZXN0U3RhdHVzIHN0YXR1czsKKwor
c3RhdGljIHZvaWQgc2lnbmFsc05vdGlmeUNhbGxiYWNrKGNvbnN0IGdjaGFyICprZXksIGNvbnN0
IGdjaGFyICp2YWx1ZSwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBpZiAoZ19zdHJfZXF1YWwoa2V5
LCAicmVhZHkiKSkgeworICAgICAgICAvLyBUaGUgZG9jdW1lbnQgd2FzIGFscmVhZHkgbG9hZGVk
IGluIHRoZSB3ZWJwcm9jZXNzLCBhbmQgaXRzICJsb2FkIgorICAgICAgICAvLyBzaWduYWwgY291
bGRuJ3QgYmUgY2FwdHVyZWQgb24gdGltZSAod2FzIGlzc3VlZCBiZWZvcmUgdGhlIHRlc3QKKyAg
ICAgICAgLy8gc3RhcnRlZCkuIFdlIGxvYWQgaXQgYWdhaW4gdG8gZm9yY2UgYSBuZXcgImxvYWQi
IHNpZ25hbCBpbiB0aGUKKyAgICAgICAgLy8gd2VicHJvY2Vzcywgd2hpY2ggd2lsbCBiZSBjYXB0
dXJlZCB0aGlzIHRpbWUKKyAgICAgICAgc3RhdHVzLnRlc3QtPmxvYWRIdG1sKEhUTUxfRE9DVU1F
TlQsIDApOworICAgIH0KKworICAgIGlmIChnX3N0cl9lcXVhbChrZXksICJsb2FkZWQiKSkgewor
ICAgICAgICBzdGF0dXMubG9hZGVkID0gVFJVRTsKKyAgICAgICAgc3RhdHVzLnRlc3QtPnNob3dJ
bldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworCisgICAgICAgIC8vIENsaWNrIGluIGEga25v
d24gbG9jYXRpb24gd2hlcmUgdGhlIHRleHQgaXMKKyAgICAgICAgc3RhdHVzLnRlc3QtPmNsaWNr
TW91c2VCdXR0b24oMjAsIDE4LCAxLCAwKTsKKyAgICB9CisKKyAgICBpZiAoZ19zdHJfZXF1YWwo
a2V5LCAiY2xpY2tlZCIpKQorICAgICAgICBzdGF0dXMuY2xpY2tlZCA9IFRSVUU7CisKKyAgICBp
ZiAoZ19zdHJfZXF1YWwoa2V5LCAiZmluaXNoIikpIHsKKyAgICAgICAgc3RhdHVzLnRlc3QgPSAw
OworICAgICAgICBzdGF0dXMudGVzdFJ1bm5lci0+ZmluaXNoVGVzdChzdGF0dXMubG9hZGVkICYm
IHN0YXR1cy5jbGlja2VkKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGRpc3BhdGNoRXZlbnRO
b3RpZnlDYWxsYmFjayhjb25zdCBnY2hhciAqa2V5LCBjb25zdCBnY2hhciAqdmFsdWUsIGdjb25z
dHBvaW50ZXIpCit7CisgICAgaWYgKGdfc3RyX2VxdWFsKGtleSwgInJlYWR5IikpIHsKKyAgICAg
ICAgLy8gVGhlIGRvY3VtZW50IHdhcyBhbHJlYWR5IGxvYWRlZCBpbiB0aGUgd2VicHJvY2Vzcywg
YW5kIGl0cyAibG9hZCIKKyAgICAgICAgLy8gc2lnbmFsIGNvdWxkbid0IGJlIGNhcHR1cmVkIG9u
IHRpbWUgKHdhcyBpc3N1ZWQgYmVmb3JlIHRoZSB0ZXN0CisgICAgICAgIC8vIHN0YXJ0ZWQpLiBX
ZSBsb2FkIGl0IGFnYWluIHRvIGZvcmNlIGEgbmV3ICJsb2FkIiBzaWduYWwgaW4gdGhlCisgICAg
ICAgIC8vIHdlYnByb2Nlc3MsIHdoaWNoIHdpbGwgYmUgY2FwdHVyZWQgdGhpcyB0aW1lCisgICAg
ICAgIHN0YXR1cy50ZXN0LT5sb2FkSHRtbChIVE1MX0RPQ1VNRU5ULCAwKTsKKyAgICB9CisKKyAg
ICBpZiAoZ19zdHJfZXF1YWwoa2V5LCAibG9hZGVkIikpCisgICAgICAgIHN0YXR1cy5sb2FkZWQg
PSBUUlVFOworCisgICAgaWYgKGdfc3RyX2VxdWFsKGtleSwgImNsaWNrZWQiKSkKKyAgICAgICAg
c3RhdHVzLmNsaWNrZWQgPSBUUlVFOworCisgICAgaWYgKGdfc3RyX2VxdWFsKGtleSwgImZpbmlz
aCIpKSB7CisgICAgICAgIHN0YXR1cy50ZXN0ID0gMDsKKyAgICAgICAgc3RhdHVzLnRlc3RSdW5u
ZXItPmZpbmlzaFRlc3Qoc3RhdHVzLmxvYWRlZCAmJiBzdGF0dXMuY2xpY2tlZCk7CisgICAgfQor
fQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NRE9NV2luZG93U2lnbmFscyhXZWJWaWV3VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBzdGF0dXMubG9hZGVkID0gRkFMU0U7Cisg
ICAgc3RhdHVzLmNsaWNrZWQgPSBGQUxTRTsKKyAgICBzdGF0dXMudGVzdCA9IHRlc3Q7CisKKyAg
ICBzdGF0dXMudGVzdFJ1bm5lci0+c2V0Tm90aWZ5Q2FsbGJhY2soR19DQUxMQkFDSyhzaWduYWxz
Tm90aWZ5Q2FsbGJhY2spLCAwKTsKKworICAgIC8vIFRoZSBIVE1MIGRvY3VtZW50IHdpbGwgd2Ug
bG9hZGVkIGxhdGVyLCB3aGVuIHRoZSB0ZXN0IGlzICJyZWFkeSIgYmVjYXVzZQorICAgIC8vIHdl
IHdhbnQgdG8gdGVzdCB0aGUgImxvYWQiIHNpZ25hbAorCisgICAgR1ZhcmlhbnRCdWlsZGVyIGJ1
aWxkZXI7CisgICAgZ192YXJpYW50X2J1aWxkZXJfaW5pdCgmYnVpbGRlciwgR19WQVJJQU5UX1RZ
UEVfVkFSRElDVCk7CisgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAie3N2fSIs
ICJwYWdlSUQiLCBnX3ZhcmlhbnRfbmV3X3VpbnQ2NCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2Vf
aWQoc3RhdHVzLnRlc3QtPm1fd2ViVmlldykpKTsKKyAgICBzdGF0dXMudGVzdFJ1bm5lci0+cnVu
VGVzdEFuZFdhaXQoIldlYktpdERPTURPTVdpbmRvdyIsICJzaWduYWxzIiwgZ192YXJpYW50X2J1
aWxkZXJfZW5kKCZidWlsZGVyKSk7CisgICAgZ19hc3NlcnQoc3RhdHVzLnRlc3RSdW5uZXItPmdl
dFRlc3RSZXN1bHQoKSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRET01ET01XaW5kb3dE
aXNwYXRjaEV2ZW50KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHN0
YXR1cy5sb2FkZWQgPSBGQUxTRTsKKyAgICBzdGF0dXMuY2xpY2tlZCA9IEZBTFNFOworICAgIHN0
YXR1cy50ZXN0ID0gdGVzdDsKKworICAgIHN0YXR1cy50ZXN0UnVubmVyLT5zZXROb3RpZnlDYWxs
YmFjayhHX0NBTExCQUNLKGRpc3BhdGNoRXZlbnROb3RpZnlDYWxsYmFjayksIDApOworCisgICAg
Ly8gVGhlIEhUTUwgZG9jdW1lbnQgd2lsbCB3ZSBsb2FkZWQgbGF0ZXIsIHdoZW4gdGhlIHRlc3Qg
aXMgInJlYWR5IiBiZWNhdXNlCisgICAgLy8gd2Ugd2FudCB0byB0ZXN0IHRoZSAibG9hZCIgc2ln
bmFsCisKKyAgICBHVmFyaWFudEJ1aWxkZXIgYnVpbGRlcjsKKyAgICBnX3ZhcmlhbnRfYnVpbGRl
cl9pbml0KCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKKyAgICBnX3ZhcmlhbnRf
YnVpbGRlcl9hZGQoJmJ1aWxkZXIsICJ7c3Z9IiwgInBhZ2VJRCIsIGdfdmFyaWFudF9uZXdfdWlu
dDY0KHdlYmtpdF93ZWJfdmlld19nZXRfcGFnZV9pZChzdGF0dXMudGVzdC0+bV93ZWJWaWV3KSkp
OworICAgIHN0YXR1cy50ZXN0UnVubmVyLT5ydW5UZXN0QW5kV2FpdCgiV2ViS2l0RE9NRE9NV2lu
ZG93IiwgImRpc3BhdGNoLWV2ZW50IiwgZ192YXJpYW50X2J1aWxkZXJfZW5kKCZidWlsZGVyKSk7
CisgICAgZ19hc3NlcnQoc3RhdHVzLnRlc3RSdW5uZXItPmdldFRlc3RSZXN1bHQoKSk7Cit9CisK
K3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRET01ET01XaW5kb3dHZXRDb21wdXRlZFN0eWxlKFdlYlZp
ZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHN0YXR1cy5sb2FkZWQgPSBGQUxT
RTsKKyAgICBzdGF0dXMuY2xpY2tlZCA9IEZBTFNFOworICAgIHN0YXR1cy50ZXN0ID0gdGVzdDsK
KworICAgIHN0YXRpYyBjb25zdCBjaGFyKiB0ZXN0SFRNTCA9IEhUTUxfRE9DVU1FTlQ7CisgICAg
c3RhdHVzLnRlc3QtPmxvYWRIdG1sKHRlc3RIVE1MLCAwKTsKKyAgICBzdGF0dXMudGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBHVmFyaWFudEJ1aWxkZXIgYnVpbGRlcjsKKyAg
ICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNU
KTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJmJ1aWxkZXIsICJ7c3Z9IiwgInBhZ2VJRCIs
IGdfdmFyaWFudF9uZXdfdWludDY0KHdlYmtpdF93ZWJfdmlld19nZXRfcGFnZV9pZChzdGF0dXMu
dGVzdC0+bV93ZWJWaWV3KSkpOworICAgIGdfYXNzZXJ0KHN0YXR1cy50ZXN0UnVubmVyLT5ydW5U
ZXN0KCJXZWJLaXRET01ET01XaW5kb3ciLCAiZ2V0LWNvbXB1dGVkLXN0eWxlIiwgZ192YXJpYW50
X2J1aWxkZXJfZW5kKCZidWlsZGVyKSkpOworfQorCit2b2lkIGJlZm9yZUFsbCgpCit7CisgICAg
c3RhdHVzLnRlc3RSdW5uZXIgPSBuZXcgV2ViUHJvY2Vzc1Rlc3RSdW5uZXIoKTsKKyAgICB3ZWJr
aXRfd2ViX2NvbnRleHRfc2V0X3dlYl9leHRlbnNpb25zX2RpcmVjdG9yeSh3ZWJraXRfd2ViX2Nv
bnRleHRfZ2V0X2RlZmF1bHQoKSwgV0VCS0lUX1RFU1RfV0VCX0VYVEVOU0lPTlNfRElSKTsKKwor
ICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdERPTURPTVdpbmRvdyIsICJzaWduYWxzIiwgdGVz
dFdlYktpdERPTURPTVdpbmRvd1NpZ25hbHMpOworICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktp
dERPTURPTVdpbmRvdyIsICJkaXNwYXRjaC1ldmVudCIsIHRlc3RXZWJLaXRET01ET01XaW5kb3dE
aXNwYXRjaEV2ZW50KTsKKyAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRET01ET01XaW5kb3ci
LCAiZ2V0LWNvbXB1dGVkLXN0eWxlIiwgdGVzdFdlYktpdERPTURPTVdpbmRvd0dldENvbXB1dGVk
U3R5bGUpOworfQorCit2b2lkIGFmdGVyQWxsKCkKK3sKKyAgICBkZWxldGUgc3RhdHVzLnRlc3RS
dW5uZXI7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9XZWJQcm9jZXNzVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9XZWJQcm9jZXNzVGVzdC5jcHAKaW5kZXggZThlNjNkY2ZmODNkZDhiNzNjMmJlYWE1
ZmEzM2I5MjgzM2VkOTFmYS4uMWRmMWIxZmQzYjg3ZGEyMTQ0YjQ2NzcyZTMxYzgyMzUxNTljMzdl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2Vi
UHJvY2Vzc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1dlYlByb2Nlc3NUZXN0LmNwcApAQCAtMjMsNiArMjMsOCBAQAogI2luY2x1ZGUgPGdpby9n
aW8uaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAKK3N0YXRpYyBHREJ1c0Nv
bm5lY3Rpb24qIGRidXNDb25uZWN0aW9uID0gMDsKKwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywg
RnVuY3Rpb248UGFzc093blB0cjxXZWJQcm9jZXNzVGVzdD4oKT4+IFRlc3RzTWFwOwogc3RhdGlj
IFRlc3RzTWFwJiB0ZXN0c01hcCgpCiB7CkBAIC00MSw2ICs0MywyMSBAQCBQYXNzT3duUHRyPFdl
YlByb2Nlc3NUZXN0PiBXZWJQcm9jZXNzVGVzdDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdGVzdE5h
bWUpCiAgICAgcmV0dXJuIHRlc3RzTWFwKCkuZ2V0KHRlc3ROYW1lKSgpOwogfQogCit2b2lkIFdl
YlByb2Nlc3NUZXN0Ojpub3RpZnkoY29uc3QgY2hhcioga2V5LCBjb25zdCBjaGFyKiB2YWx1ZSkK
K3sKKyAgICBnX2Fzc2VydChkYnVzQ29ubmVjdGlvbik7CisgICAgZ19hc3NlcnQoa2V5KTsKKyAg
ICBnX2Fzc2VydCh2YWx1ZSk7CisgICAgZ19kYnVzX2Nvbm5lY3Rpb25fZW1pdF9zaWduYWwoCisg
ICAgICAgIGRidXNDb25uZWN0aW9uLAorICAgICAgICAwLAorICAgICAgICAiL29yZy93ZWJraXQv
Z3RrL1dlYlByb2Nlc3NUZXN0IiwKKyAgICAgICAgIm9yZy53ZWJraXQuZ3RrLldlYlByb2Nlc3NU
ZXN0IiwKKyAgICAgICAgIk5vdGlmeSIsCisgICAgICAgIGdfdmFyaWFudF9uZXcoIihzcykiLCBr
ZXksIHZhbHVlKSwKKyAgICAgICAgMCk7Cit9CisKIHN0YXRpYyBjb25zdCBjaGFyIGludHJvc3Bl
Y3Rpb25YTUxbXSA9CiAgICAgIjxub2RlPiIKICAgICAiIDxpbnRlcmZhY2UgbmFtZT0nb3JnLndl
YmtpdC5ndGsuV2ViUHJvY2Vzc1Rlc3QnPiIKQEAgLTQ5LDYgKzY2LDEwIEBAIHN0YXRpYyBjb25z
dCBjaGFyIGludHJvc3BlY3Rpb25YTUxbXSA9CiAgICAgIiAgIDxhcmcgdHlwZT0nYXtzdn0nIG5h
bWU9J2FyZ3MnIGRpcmVjdGlvbj0naW4nLz4iCiAgICAgIiAgIDxhcmcgdHlwZT0nYicgbmFtZT0n
cmVzdWx0JyBkaXJlY3Rpb249J291dCcvPiIKICAgICAiICA8L21ldGhvZD4iCisgICAgIiAgPHNp
Z25hbCBuYW1lPSdOb3RpZnknPiIKKyAgICAiICAgPGFyZyB0eXBlPSdzJyBuYW1lPSdrZXknIGRp
cmVjdGlvbj0nb3V0Jy8+IgorICAgICIgICA8YXJnIHR5cGU9J3MnIG5hbWU9J3ZhbHVlJyBkaXJl
Y3Rpb249J291dCcvPiIKKyAgICAiICA8L3NpZ25hbD4iCiAgICAgIiA8L2ludGVyZmFjZT4iCiAg
ICAgIjwvbm9kZT4iOwogCkBAIC04MSw2ICsxMDIsNyBAQCBzdGF0aWMgdm9pZCBidXNBY3F1aXJl
ZENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogbmFtZSwg
ZwogICAgICAgICBpbnRyb3NwZWN0aW9uRGF0YSA9IGdfZGJ1c19ub2RlX2luZm9fbmV3X2Zvcl94
bWwoaW50cm9zcGVjdGlvblhNTCwgMCk7CiAKICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Cisg
ICAgZGJ1c0Nvbm5lY3Rpb24gPSBjb25uZWN0aW9uOwogICAgIHVuc2lnbmVkIHJlZ2lzdHJhdGlv
bklEID0gZ19kYnVzX2Nvbm5lY3Rpb25fcmVnaXN0ZXJfb2JqZWN0KAogICAgICAgICBjb25uZWN0
aW9uLAogICAgICAgICAiL29yZy93ZWJraXQvZ3RrL1dlYlByb2Nlc3NUZXN0IiwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlByb2Nlc3NUZXN0
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJQcm9jZXNzVGVz
dC5oCmluZGV4IDEzMzMyN2Q2MDU2ZmUwZWY2YmNjZjE0NzVhZWNmYjQzYmMzZTFkZmMuLjVlNzM1
OWFhZjkwMTMyMTg0NjllNTY3MjI1MmExYzBjNDNkMzQzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlByb2Nlc3NUZXN0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViUHJvY2Vzc1Rlc3QuaApAQCAt
MjksNiArMjksNyBAQCBjbGFzcyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+V2ViUHJvY2Vzc1Rlc3QoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcnVuVGVzdChjb25zdCBj
aGFyKiB0ZXN0TmFtZSwgV2ViS2l0V2ViRXh0ZW5zaW9uKiwgR1ZhcmlhbnQqIGFyZ3MpID0gMDsK
KyAgICB2b2lkIG5vdGlmeShjb25zdCBjaGFyKiBrZXksIGNvbnN0IGNoYXIqIHZhbHVlKTsKIAog
ICAgIHN0YXRpYyB2b2lkIGFkZChjb25zdCBTdHJpbmcmIHRlc3ROYW1lLCBGdW5jdGlvbjxQYXNz
T3duUHRyPFdlYlByb2Nlc3NUZXN0PigpPik7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViUHJv
Y2Vzc1Rlc3Q+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRlc3ROYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlByb2Nlc3NUZXN0UnVubmVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlByb2Nlc3NU
ZXN0UnVubmVyLmNwcAppbmRleCA3YWY3NDA4YzczMjEzNjljZjk0ODRhZmJlMWI5MzY5ZDY2NGM5
ZTA1Li4xYThhNmM5ZGIxOGMyMTE5MTU3NjZlYTgwZGRhOGIxNWI3NzM5Y2RhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJQcm9jZXNzVGVzdFJ1
bm5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2Vi
UHJvY2Vzc1Rlc3RSdW5uZXIuY3BwCkBAIC0yNSw2ICsyNSw4IEBACiBXZWJQcm9jZXNzVGVzdFJ1
bm5lcjo6V2ViUHJvY2Vzc1Rlc3RSdW5uZXIoKQogICAgIDogbV9tYWluTG9vcChnX21haW5fbG9v
cF9uZXcoMCwgVFJVRSkpCiAgICAgLCBtX2J1cyhhZG9wdEdSZWYoZ190ZXN0X2RidXNfbmV3KEdf
VEVTVF9EQlVTX05PTkUpKSkKKyAgICAsIG1fbm90aWZ5X2NhbGxiYWNrKDApCisgICAgLCBtX25v
dGlmeV9jYWxsYmFja191c2VyX2RhdGEoMCkKIHsKICAgICBnX3Rlc3RfZGJ1c191cChtX2J1cy5n
ZXQoKSk7CiAgICAgbV9jb25uZWN0aW9uID0gYWRvcHRHUmVmKGdfYnVzX2dldF9zeW5jKEdfQlVT
X1RZUEVfU0VTU0lPTiwgMCwgMCkpOwpAQCAtODAsNiArODIsMjMgQEAgdm9pZCBXZWJQcm9jZXNz
VGVzdFJ1bm5lcjo6dGVzdEZpbmlzaGVkQ2FsbGJhY2soR0RCdXNQcm94eSogcHJveHksIEdBc3lu
Y1Jlc3VsdCoKICAgICB0ZXN0UnVubmVyLT5maW5pc2hUZXN0KHRlc3RSZXN1bHQpOwogfQogCit2
b2lkIFdlYlByb2Nlc3NUZXN0UnVubmVyOjpzZXROb3RpZnlDYWxsYmFjayhHQ2FsbGJhY2sgbm90
aWZ5Q2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIG1fbm90aWZ5X2NhbGxiYWNr
ID0gbm90aWZ5Q2FsbGJhY2s7CisgICAgbV9ub3RpZnlfY2FsbGJhY2tfdXNlcl9kYXRhID0gdXNl
ckRhdGE7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Rlc3RSdW5uZXI6Om5vdGlmeVNpZ25hbENhbGxi
YWNrKEdEQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwgY29uc3QgZ2NoYXIgKnNlbmRlcl9uYW1l
LCBjb25zdCBnY2hhciAqb2JqZWN0X3BhdGgsIGNvbnN0IGdjaGFyICppbnRlcmZhY2VfbmFtZSwg
Y29uc3QgZ2NoYXIgKnNpZ25hbF9uYW1lLCBHVmFyaWFudCAqcGFyYW1ldGVycywgV2ViUHJvY2Vz
c1Rlc3RSdW5uZXIqIHRlc3RSdW5uZXIpCit7CisgICAgY29uc3QgZ2NoYXIgKmtleSwgKnZhbHVl
OworCisgICAgZ19hc3NlcnQodGVzdFJ1bm5lcik7CisgICAgaWYgKHRlc3RSdW5uZXItPm1fbm90
aWZ5X2NhbGxiYWNrKSB7CisgICAgICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIigmcyZz
KSIsICZrZXksICZ2YWx1ZSk7CisgICAgICAgIChyZWludGVycHJldF9jYXN0PHZvaWQoKikoY29u
c3QgZ2NoYXIqLCBjb25zdCBnY2hhciosIGdwb2ludGVyKT4odGVzdFJ1bm5lci0+bV9ub3RpZnlf
Y2FsbGJhY2spKShrZXksIHZhbHVlLCB0ZXN0UnVubmVyLT5tX25vdGlmeV9jYWxsYmFja191c2Vy
X2RhdGEpOworICAgIH0KK30KKwogYm9vbCBXZWJQcm9jZXNzVGVzdFJ1bm5lcjo6cnVuVGVzdChj
b25zdCBjaGFyKiBzdWl0ZU5hbWUsIGNvbnN0IGNoYXIqIHRlc3ROYW1lLCBHVmFyaWFudCogYXJn
cykKIHsKICAgICBnX2Fzc2VydChnX3ZhcmlhbnRfaXNfb2ZfdHlwZShhcmdzLCBHX1ZBUklBTlRf
VFlQRV9WQVJESUNUKSk7CkBAIC04OCw2ICsxMDcsMTggQEAgYm9vbCBXZWJQcm9jZXNzVGVzdFJ1
bm5lcjo6cnVuVGVzdChjb25zdCBjaGFyKiBzdWl0ZU5hbWUsIGNvbnN0IGNoYXIqIHRlc3ROYW1l
LAogICAgICAgICBXZWJQcm9jZXNzVGVzdFJ1bm5lcjo6b25OYW1lQXBwZWFyZWQsIFdlYlByb2Nl
c3NUZXN0UnVubmVyOjpvbk5hbWVWYW5pc2hlZCwgdGhpcywgMCk7CiAgICAgZ19tYWluX2xvb3Bf
cnVuKG1fbWFpbkxvb3ApOwogCisgICAgZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3N1YnNjcmli
ZSgKKyAgICAgICAgbV9jb25uZWN0aW9uLmdldCgpLAorICAgICAgICAwIC8qIHNlbmRlciAqLywK
KyAgICAgICAgIm9yZy53ZWJraXQuZ3RrLldlYlByb2Nlc3NUZXN0IiwKKyAgICAgICAgIk5vdGlm
eSIsCisgICAgICAgICIvb3JnL3dlYmtpdC9ndGsvV2ViUHJvY2Vzc1Rlc3QiLAorICAgICAgICAw
LAorICAgICAgICBHX0RCVVNfU0lHTkFMX0ZMQUdTX05PTkUsCisgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8R0RCdXNTaWduYWxDYWxsYmFjaz4oV2ViUHJvY2Vzc1Rlc3RSdW5uZXI6Om5vdGlmeVNp
Z25hbENhbGxiYWNrKSwKKyAgICAgICAgdGhpcywKKyAgICAgICAgMCk7CisKICAgICBtX3Rlc3RS
ZXN1bHQgPSBmYWxzZTsKICAgICBHT3duUHRyPGNoYXI+IHRlc3RQYXRoKGdfc3RyZHVwX3ByaW50
ZigiJXMvJXMiLCBzdWl0ZU5hbWUsIHRlc3ROYW1lKSk7CiAgICAgZ19kYnVzX3Byb3h5X2NhbGwo
CkBAIC0xMDQsOCArMTM1LDQ3IEBAIGJvb2wgV2ViUHJvY2Vzc1Rlc3RSdW5uZXI6OnJ1blRlc3Qo
Y29uc3QgY2hhciogc3VpdGVOYW1lLCBjb25zdCBjaGFyKiB0ZXN0TmFtZSwKICAgICByZXR1cm4g
bV90ZXN0UmVzdWx0OwogfQogCit2b2lkIFdlYlByb2Nlc3NUZXN0UnVubmVyOjpydW5UZXN0QW5k
V2FpdChjb25zdCBjaGFyKiBzdWl0ZU5hbWUsIGNvbnN0IGNoYXIqIHRlc3ROYW1lLCBHVmFyaWFu
dCogYXJncykKK3sKKyAgICBnX2Fzc2VydChnX3ZhcmlhbnRfaXNfb2ZfdHlwZShhcmdzLCBHX1ZB
UklBTlRfVFlQRV9WQVJESUNUKSk7CisKKyAgICB1bnNpZ25lZCB3YXRjaGVySUQgPSBnX2J1c193
YXRjaF9uYW1lX29uX2Nvbm5lY3Rpb24obV9jb25uZWN0aW9uLmdldCgpLCAib3JnLndlYmtpdC5n
dGsuV2ViUHJvY2Vzc1Rlc3QiLCBHX0JVU19OQU1FX1dBVENIRVJfRkxBR1NfTk9ORSwKKyAgICAg
ICAgV2ViUHJvY2Vzc1Rlc3RSdW5uZXI6Om9uTmFtZUFwcGVhcmVkLCAwLCB0aGlzLCAwKTsKKyAg
ICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisKKyAgICBnX2RidXNfY29ubmVjdGlvbl9z
aWduYWxfc3Vic2NyaWJlKAorICAgICAgICBtX2Nvbm5lY3Rpb24uZ2V0KCksCisgICAgICAgIDAg
Lyogc2VuZGVyICovLAorICAgICAgICAib3JnLndlYmtpdC5ndGsuV2ViUHJvY2Vzc1Rlc3QiLAor
ICAgICAgICAiTm90aWZ5IiwKKyAgICAgICAgIi9vcmcvd2Via2l0L2d0ay9XZWJQcm9jZXNzVGVz
dCIsCisgICAgICAgIDAsCisgICAgICAgIEdfREJVU19TSUdOQUxfRkxBR1NfTk9ORSwKKyAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxHREJ1c1NpZ25hbENhbGxiYWNrPihXZWJQcm9jZXNzVGVzdFJ1
bm5lcjo6bm90aWZ5U2lnbmFsQ2FsbGJhY2spLAorICAgICAgICB0aGlzLAorICAgICAgICAwKTsK
KworICAgIG1fdGVzdFJlc3VsdCA9IGZhbHNlOworICAgIEdPd25QdHI8Y2hhcj4gdGVzdFBhdGgo
Z19zdHJkdXBfcHJpbnRmKCIlcy8lcyIsIHN1aXRlTmFtZSwgdGVzdE5hbWUpKTsKKyAgICBnX2Ri
dXNfcHJveHlfY2FsbCgKKyAgICAgICAgcHJveHkoKSwKKyAgICAgICAgIlJ1blRlc3QiLAorICAg
ICAgICBnX3ZhcmlhbnRfbmV3KCIoc0Bhe3N2fSkiLCB0ZXN0UGF0aC5nZXQoKSwgYXJncyksCisg
ICAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsCisgICAgICAgIC0xLCAwLAorICAgICAgICAw
LAorICAgICAgICB0aGlzKTsKKyAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAg
Z19idXNfdW53YXRjaF9uYW1lKHdhdGNoZXJJRCk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Rlc3RS
dW5uZXI6OmZpbmlzaFRlc3QoYm9vbCByZXN1bHQpCiB7CiAgICAgbV90ZXN0UmVzdWx0ID0gcmVz
dWx0OwogICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcCk7CiB9CisKK2Jvb2wgV2ViUHJv
Y2Vzc1Rlc3RSdW5uZXI6OmdldFRlc3RSZXN1bHQoKQoreworICAgIHJldHVybiBtX3Rlc3RSZXN1
bHQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9XZWJQcm9jZXNzVGVzdFJ1bm5lci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvV2ViUHJvY2Vzc1Rlc3RSdW5uZXIuaAppbmRleCBjNDBmYTk2MTVjNjYyMzFkNTk4
NGI3MWEzZjM4OGQ0OTdkNThhMDkwLi5lN2UwNzNlOWY1YmE4NDIxMDIzM2VkNDZlMjUzYTRiZWJk
ZTYxM2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9XZWJQcm9jZXNzVGVzdFJ1bm5lci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1dlYlByb2Nlc3NUZXN0UnVubmVyLmgKQEAgLTMwLDIxICszMCwyNiBAQCBw
dWJsaWM6CiAgICAgfldlYlByb2Nlc3NUZXN0UnVubmVyKCk7CiAKICAgICBib29sIHJ1blRlc3Qo
Y29uc3QgY2hhciogc3VpdGVOYW1lLCBjb25zdCBjaGFyKiB0ZXN0TmFtZSwgR1ZhcmlhbnQqIGFy
Z3MpOworICAgIHZvaWQgc2V0Tm90aWZ5Q2FsbGJhY2soR0NhbGxiYWNrIG5vdGlmeUNhbGxiYWNr
LCBncG9pbnRlciB1c2VyRGF0YSk7CisgICAgdm9pZCBydW5UZXN0QW5kV2FpdChjb25zdCBjaGFy
KiBzdWl0ZU5hbWUsIGNvbnN0IGNoYXIqIHRlc3ROYW1lLCBHVmFyaWFudCogYXJncyk7CisgICAg
dm9pZCBmaW5pc2hUZXN0KGJvb2wgcmVzdWx0KTsKKyAgICBib29sIGdldFRlc3RSZXN1bHQoKTsK
IAogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBwcm94eUNyZWF0ZWRDYWxsYmFjayhHT2JqZWN0
KiwgR0FzeW5jUmVzdWx0KiwgV2ViUHJvY2Vzc1Rlc3RSdW5uZXIqKTsKICAgICBzdGF0aWMgdm9p
ZCBvbk5hbWVBcHBlYXJlZChHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBjaGFyKiwgY29uc3QgY2hh
ciosIGdwb2ludGVyKTsKICAgICBzdGF0aWMgdm9pZCBvbk5hbWVWYW5pc2hlZChHREJ1c0Nvbm5l
Y3Rpb24qLCBjb25zdCBjaGFyKiwgZ3BvaW50ZXIpOwogICAgIHN0YXRpYyB2b2lkIHRlc3RGaW5p
c2hlZENhbGxiYWNrKEdEQnVzUHJveHkqLCBHQXN5bmNSZXN1bHQqLCBXZWJQcm9jZXNzVGVzdFJ1
bm5lciopOwotCisgICAgc3RhdGljIHZvaWQgbm90aWZ5U2lnbmFsQ2FsbGJhY2soR0RCdXNDb25u
ZWN0aW9uICosIGNvbnN0IGdjaGFyICosIGNvbnN0IGdjaGFyICosIGNvbnN0IGdjaGFyICosIGNv
bnN0IGdjaGFyICosIEdWYXJpYW50ICosIFdlYlByb2Nlc3NUZXN0UnVubmVyKik7CiAgICAgR0RC
dXNQcm94eSogcHJveHkoKTsKLSAgICB2b2lkIGZpbmlzaFRlc3QoYm9vbCByZXN1bHQpOwogCiAg
ICAgR01haW5Mb29wKiBtX21haW5Mb29wOwogICAgIEdSZWZQdHI8R1Rlc3REQnVzPiBtX2J1czsK
ICAgICBHUmVmUHRyPEdEQnVzQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIEdSZWZQdHI8
R0RCdXNQcm94eT4gbV9wcm94eTsKICAgICBib29sIG1fdGVzdFJlc3VsdDsKKyAgICBHQ2FsbGJh
Y2sgbV9ub3RpZnlfY2FsbGJhY2s7CisgICAgZ3BvaW50ZXIgbV9ub3RpZnlfY2FsbGJhY2tfdXNl
cl9kYXRhOwogfTsKIAogI2VuZGlmIC8vIFdlYlByb2Nlc3NUZXN0UnVubmVyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219751</attachid>
            <date>2013-12-20 04:37:32 -0800</date>
            <delta_ts>2015-12-31 16:06:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118431-20131220123730.patch</filename>
            <type>text/plain</type>
            <size>11797</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwODI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTdkZDM1MzI2ZTJhZmVj
Yzk3ZDRhY2FkNWFlNDgwMWU0NDg2YmFiYy4uZGMzMWNmZGEyNWM2NzRhYmRmM2FjODJlMTMzNzVj
M2I4MGIzZDdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTEyLTIwICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dU
S10gTWlncmF0ZSBXZWJLaXRET01ET01XaW5kb3cgdW5pdCB0ZXN0cyB0byBXZWJLaXQyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg0MzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL0RPTURPTVdpbmRvd1Rlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dERPTURPTVdpbmRvd1Rlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXRET01ET01XaW5kb3dU
ZXN0Ojp3ZWJQYWdlRnJvbUFyZ3MpOgorICAgICAgICAoV2ViS2l0RE9NRE9NV2luZG93VGVzdDo6
Y2xpY2tlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdERPTURPTVdpbmRvd1Rlc3Q6OnRlc3RT
aWduYWxzQW5kRGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXRET01ET01XaW5kb3dUZXN0
Ojp0ZXN0R2V0Q29tcHV0ZWRTdHlsZSk6CisgICAgICAgIChXZWJLaXRET01ET01XaW5kb3dUZXN0
OjpydW5UZXN0KToKKyAgICAgICAgKHJlZ2lzdGVyVGVzdHMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL1Rlc3RET01ET01XaW5kb3cuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRlc3RXZWJL
aXRET01ET01XaW5kb3dTaWduYWxzQW5kRGlzcGF0Y2hFdmVudCk6CisgICAgICAgICh0ZXN0V2Vi
S2l0RE9NRE9NV2luZG93R2V0Q29tcHV0ZWRTdHlsZSk6CisgICAgICAgIChiZWZvcmVBbGwpOgor
ICAgICAgICAoYWZ0ZXJBbGwpOgorCiAyMDEzLTEyLTE4ICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdDIgVmlldyBHZXN0dXJlczogTW92ZSBX
ZWJQcm9jZXNzLXNpZGUgZ2VvbWV0cnkgY29sbGVjdGlvbiBpbnRvIGl0cyBvd24gY2xhc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0RPTURPTVdp
bmRvd1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvRE9N
RE9NV2luZG93VGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTlkZTk3YWQ3Yzk1ODQ3ODBjNzNiODYxYjZj
MTA2MzU4ZmMyMTEwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL0RPTURPTVdpbmRvd1Rlc3QuY3BwCkBAIC0wLDAgKzEsMTI4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2luY2x1ZGUgIldlYlByb2Nlc3NUZXN0LmgiCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2lu
Y2x1ZGUgPHdlYmtpdDIvd2Via2l0LXdlYi1leHRlbnNpb24uaD4KKyNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgorCitjbGFzcyBXZWJLaXRET01ET01XaW5kb3dUZXN0IDogcHVibGljIFdlYlByb2Nl
c3NUZXN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJQcm9jZXNzVGVzdD4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFdlYktpdERPTURPTVdpbmRvd1Rlc3QoKSk7
IH0KKworcHJpdmF0ZToKKyAgICBnYm9vbGVhbiBjbGlja2VkID0gRkFMU0U7CisKKyAgICBndWlu
dDY0IHdlYlBhZ2VGcm9tQXJncyhHVmFyaWFudCogYXJncykKKyAgICB7CisgICAgICAgIEdWYXJp
YW50SXRlciBpdGVyOworICAgICAgICBnX3ZhcmlhbnRfaXRlcl9pbml0KCZpdGVyLCBhcmdzKTsK
KworICAgICAgICBjb25zdCBjaGFyKiBrZXk7CisgICAgICAgIEdWYXJpYW50KiB2YWx1ZTsKKyAg
ICAgICAgd2hpbGUgKGdfdmFyaWFudF9pdGVyX2xvb3AoJml0ZXIsICJ7JnN2fSIsICZrZXksICZ2
YWx1ZSkpIHsKKyAgICAgICAgICAgIGlmICghc3RyY21wKGtleSwgInBhZ2VJRCIpICYmIGdfdmFy
aWFudF9jbGFzc2lmeSh2YWx1ZSkgPT0gR19WQVJJQU5UX0NMQVNTX1VJTlQ2NCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ192YXJpYW50X2dldF91aW50NjQodmFsdWUpOworICAgICAgICB9CisK
KyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorCisgICAgc3RhdGljIGdib29sZWFuIGNsaWNrZWRDYWxsYmFjayhXZWJLaXRET01ET01XaW5k
b3cqLCBXZWJLaXRET01FdmVudCosIFdlYktpdERPTURPTVdpbmRvd1Rlc3QqIHdlYktpdERPTURP
TVdpbmRvd1Rlc3QpCisgICAgeworICAgICAgICB3ZWJLaXRET01ET01XaW5kb3dUZXN0LT5jbGlj
a2VkID0gVFJVRTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIGJvb2wgdGVz
dFNpZ25hbHNBbmREaXNwYXRjaEV2ZW50KFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBH
VmFyaWFudCogYXJncykKKyAgICB7CisgICAgICAgIFdlYktpdFdlYlBhZ2UqIHBhZ2UgPSB3ZWJr
aXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZShleHRlbnNpb24sIHdlYlBhZ2VGcm9tQXJncyhhcmdz
KSk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfUEFHRShwYWdlKSk7CisgICAgICAg
IFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2Rv
Y3VtZW50KHBhZ2UpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRv
Y3VtZW50KSk7CisgICAgICAgIFdlYktpdERPTURPTVdpbmRvdyogZG9tV2luZG93ID0gd2Via2l0
X2RvbV9kb2N1bWVudF9nZXRfZGVmYXVsdF92aWV3KGRvY3VtZW50KTsKKyAgICAgICAgZ19hc3Nl
cnQoV0VCS0lUX0RPTV9JU19ET01fV0lORE9XKGRvbVdpbmRvdykpOworICAgICAgICBXZWJLaXRE
T01FbGVtZW50KiBlbGVtZW50ID0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudF9ieV9p
ZChkb2N1bWVudCwgInRlc3QiKTsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19FTEVN
RU5UKGVsZW1lbnQpKTsKKyAgICAgICAgV2ViS2l0RE9NRXZlbnQqIGV2ZW50ID0gd2Via2l0X2Rv
bV9kb2N1bWVudF9jcmVhdGVfZXZlbnQoZG9jdW1lbnQsICJNb3VzZUV2ZW50IiwgMCk7CisgICAg
ICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTU9VU0VfRVZFTlQoZXZlbnQpKTsKKworICAgICAg
ICBnbG9uZyBjbGllbnRYLCBjbGllbnRZOworICAgICAgICBjbGllbnRYID0gd2Via2l0X2RvbV9l
bGVtZW50X2dldF9jbGllbnRfbGVmdChlbGVtZW50KTsKKyAgICAgICAgY2xpZW50WSA9IHdlYmtp
dF9kb21fZWxlbWVudF9nZXRfY2xpZW50X3RvcChlbGVtZW50KTsKKworICAgICAgICBjbGlja2Vk
ID0gRkFMU0U7CisgICAgICAgIHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2FkZF9ldmVudF9saXN0
ZW5lcigKKyAgICAgICAgICAgIFdFQktJVF9ET01fRVZFTlRfVEFSR0VUKGVsZW1lbnQpLAorICAg
ICAgICAgICAgImNsaWNrIiwKKyAgICAgICAgICAgIEdfQ0FMTEJBQ0soY2xpY2tlZENhbGxiYWNr
KSwKKyAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgdGhpcyk7CisKKyAgICAgICAgd2Vi
a2l0X2RvbV9tb3VzZV9ldmVudF9pbml0X21vdXNlX2V2ZW50KFdFQktJVF9ET01fTU9VU0VfRVZF
TlQoZXZlbnQpLAorICAgICAgICAgICAgImNsaWNrIiwgVFJVRSwgVFJVRSwKKyAgICAgICAgICAg
IGRvbVdpbmRvdywgMCwgMCwgMCwgY2xpZW50WCwgY2xpZW50WSwKKyAgICAgICAgICAgIEZBTFNF
LCBGQUxTRSwgRkFMU0UsIEZBTFNFLAorICAgICAgICAgICAgMSwgV0VCS0lUX0RPTV9FVkVOVF9U
QVJHRVQoZWxlbWVudCkpOworCisgICAgICAgIHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2Rpc3Bh
dGNoX2V2ZW50KFdFQktJVF9ET01fRVZFTlRfVEFSR0VUKGVsZW1lbnQpLCBldmVudCwgMCk7CisK
KyAgICAgICAgZ19hc3NlcnQoY2xpY2tlZCA9PSBUUlVFKTsKKworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICBib29sIHRlc3RHZXRDb21wdXRlZFN0eWxlKFdlYktpdFdlYkV4dGVu
c2lvbiogZXh0ZW5zaW9uLCBHVmFyaWFudCogYXJncykKKyAgICB7CisgICAgICAgIFdlYktpdFdl
YlBhZ2UqIHBhZ2UgPSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZShleHRlbnNpb24sIHdl
YlBhZ2VGcm9tQXJncyhhcmdzKSk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfUEFH
RShwYWdlKSk7CisgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93
ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRf
RE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CisgICAgICAgIFdlYktpdERPTURPTVdpbmRvdyog
ZG9tV2luZG93ID0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZGVmYXVsdF92aWV3KGRvY3VtZW50
KTsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19ET01fV0lORE9XKGRvbVdpbmRvdykp
OworICAgICAgICBXZWJLaXRET01FbGVtZW50KiBlbGVtZW50ID0gd2Via2l0X2RvbV9kb2N1bWVu
dF9nZXRfZWxlbWVudF9ieV9pZChkb2N1bWVudCwgInRlc3QiKTsKKyAgICAgICAgZ19hc3NlcnQo
V0VCS0lUX0RPTV9JU19FTEVNRU5UKGVsZW1lbnQpKTsKKyAgICAgICAgV2ViS2l0RE9NQ1NTU3R5
bGVEZWNsYXJhdGlvbiogY3NzU3R5bGUgPSB3ZWJraXRfZG9tX2RvbV93aW5kb3dfZ2V0X2NvbXB1
dGVkX3N0eWxlKGRvbVdpbmRvdywgZWxlbWVudCwgMCk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJ
VF9ET01fSVNfQ1NTX1NUWUxFX0RFQ0xBUkFUSU9OKGNzc1N0eWxlKSk7CisgICAgICAgIGdjaGFy
KiBmb250U2l6ZSA9IHdlYmtpdF9kb21fY3NzX3N0eWxlX2RlY2xhcmF0aW9uX2dldF9wcm9wZXJ0
eV92YWx1ZShjc3NTdHlsZSwgImZvbnQtc2l6ZSIpOworICAgICAgICBnX2Fzc2VydF9jbXBzdHIo
Zm9udFNpemUsID09LCAiMTZweCIpOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIHZpcnR1YWwgYm9vbCBydW5UZXN0KGNvbnN0IGNoYXIqIHRlc3ROYW1lLCBXZWJLaXRXZWJF
eHRlbnNpb24qIGV4dGVuc2lvbiwgR1ZhcmlhbnQqIGFyZ3MpCisgICAgeworICAgICAgICBpZiAo
IXN0cmNtcCh0ZXN0TmFtZSwgInNpZ25hbHMtYW5kLWRpc3BhdGNoLWV2ZW50IikpCisgICAgICAg
ICAgICByZXR1cm4gdGVzdFNpZ25hbHNBbmREaXNwYXRjaEV2ZW50KGV4dGVuc2lvbiwgYXJncyk7
CisgICAgICAgIGlmICghc3RyY21wKHRlc3ROYW1lLCAiZ2V0LWNvbXB1dGVkLXN0eWxlIikpCisg
ICAgICAgICAgICByZXR1cm4gdGVzdEdldENvbXB1dGVkU3R5bGUoZXh0ZW5zaW9uLCBhcmdzKTsK
KworICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorfTsKKworc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygoY29uc3RydWN0b3IpKSBy
ZWdpc3RlclRlc3RzKCkKK3sKKyAgICBSRUdJU1RFUl9URVNUKFdlYktpdERPTURPTVdpbmRvd1Rl
c3QsICJXZWJLaXRET01ET01XaW5kb3cvc2lnbmFscy1hbmQtZGlzcGF0Y2gtZXZlbnQiKTsKKyAg
ICBSRUdJU1RFUl9URVNUKFdlYktpdERPTURPTVdpbmRvd1Rlc3QsICJXZWJLaXRET01ET01XaW5k
b3cvZ2V0LWNvbXB1dGVkLXN0eWxlIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCmluZGV4IGUwMDhhZDA5ZjU4MTc3
MGYxMjkyZWNhNjJhOGZlYTViNzUyMWRjZTMuLmExZWZkMjE2YWNmNTU0MDRkZjJiMTM3MWNmZDI4
MDI5NmY5MGVjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCkBAIC01LDYgKzUsNyBAQCBURVNUX1BST0dTICs9IFwK
IAlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdEJhY2tGb3J3YXJkTGlzdCBcCiAJUHJvZ3Jh
bXMvV2ViS2l0MkFQSVRlc3RzL1Rlc3RDb250ZXh0TWVudSBcCiAJUHJvZ3JhbXMvV2ViS2l0MkFQ
SVRlc3RzL1Rlc3RDb29raWVNYW5hZ2VyIFwKKwlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVz
dERPTURPTVdpbmRvdyBcCiAJUHJvZ3JhbXMvV2ViS2l0MkFQSVRlc3RzL1Rlc3RET01Ob2RlIFwK
IAlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdERvd25sb2FkcyBcCiAJUHJvZ3JhbXMvV2Vi
S2l0MkFQSVRlc3RzL1Rlc3RGcmFtZSBcCkBAIC0xMjYsNiArMTI3LDcgQEAgTGlicmFyaWVzX1dl
YkV4dGVuc2lvbnNfbGliV2ViRXh0ZW5zaW9uVGVzdF9sYV9DRkxBR1MgPSBcCiAKIG5vaW5zdF9M
VExJQlJBUklFUyArPSBMaWJyYXJpZXMvV2ViRXh0ZW5zaW9ucy9saWJXZWJQcm9jZXNzVGVzdC5s
YQogTGlicmFyaWVzX1dlYkV4dGVuc2lvbnNfbGliV2ViUHJvY2Vzc1Rlc3RfbGFfU09VUkNFUyA9
IFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9ET01ET01XaW5kb3dU
ZXN0LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvRE9NTm9k
ZVRlc3QuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9GcmFt
ZVRlc3QuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJQ
cm9jZXNzVGVzdC5jcHAgXApAQCAtMjk4LDYgKzMwMCwxMiBAQCBQcm9ncmFtc19XZWJLaXQyQVBJ
VGVzdHNfVGVzdFdlYktpdFdlYlZpZXdHcm91cF9DUFBGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19j
cHBmbAogUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXBfTERB
REQgPSAkKHdlYmtpdDJfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVz
dFdlYktpdFdlYlZpZXdHcm91cF9MREZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2xkZmxhZ3MpCiAK
K1Byb2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0RE9NRE9NV2luZG93X1NPVVJDRVMgPSBcCisg
ICAgICAgIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RET01ET01X
aW5kb3cuY3BwCitQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdERPTURPTVdpbmRvd19DUFBG
TEFHUyA9ICQod2Via2l0Ml90ZXN0c19jcHBmbGFncykKK1Byb2dyYW1zX1dlYktpdDJBUElUZXN0
c19UZXN0RE9NRE9NV2luZG93X0xEQUREID0gJCh3ZWJraXQyX3Rlc3RzX2xkYWRkKQorUHJvZ3Jh
bXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RET01ET01XaW5kb3dfTERGTEFHUyA9ICQod2Via2l0Ml90
ZXN0c19sZGZsYWdzKQorCiBQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdERPTU5vZGVfU09V
UkNFUyA9IFwKICAgICAgICAgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdERPTU5vZGUuY3BwCiBQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdERPTU5vZGVfQ1BQ
RkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNfY3BwZmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0RE9NRE9NV2luZG93LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RET01ET01XaW5kb3cuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4OWRhNmYyY2ViNTJkYjljOTA1ZDg1ZDYwZmQ5ODg2YmZkMDJjNzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0
RE9NRE9NV2luZG93LmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIs
MSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzVGVzdFJ1bm5lci5oIgorI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCisjaW5jbHVkZSA8Z3Rr
L2d0ay5oPgorI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgorCitzdGF0aWMgY29uc3QgY2hh
ciogdGVzdEhUTUwgPQorICAgICI8aHRtbD4iCisgICAgIjxoZWFkPjx0aXRsZT48L3RpdGxlPjwv
aGVhZD4iCisgICAgIjxzdHlsZSB0eXBlPSd0ZXh0L2Nzcyc+I3Rlc3QgeyBmb250LXNpemU6IDE2
cHg7IH08L3N0eWxlPiIKKyAgICAiPGJvZHk+PHAgaWQ9J3Rlc3QnPnRlc3Q8L3A+PC9ib2R5PiIK
KyAgICAiPC9odG1sPiI7CitzdGF0aWMgV2ViUHJvY2Vzc1Rlc3RSdW5uZXIqIHRlc3RSdW5uZXI7
CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJLaXRET01ET01XaW5kb3dTaWduYWxzQW5kRGlzcGF0Y2hF
dmVudChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5sb2Fk
SHRtbCh0ZXN0SFRNTCwgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisK
KyAgICBHVmFyaWFudEJ1aWxkZXIgYnVpbGRlcjsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0
KCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRl
cl9hZGQoJmJ1aWxkZXIsICJ7c3Z9IiwgInBhZ2VJRCIsIGdfdmFyaWFudF9uZXdfdWludDY0KHdl
YmtpdF93ZWJfdmlld19nZXRfcGFnZV9pZCh0ZXN0LT5tX3dlYlZpZXcpKSk7CisgICAgZ19hc3Nl
cnQodGVzdFJ1bm5lci0+cnVuVGVzdCgiV2ViS2l0RE9NRE9NV2luZG93IiwgInNpZ25hbHMtYW5k
LWRpc3BhdGNoLWV2ZW50IiwgZ192YXJpYW50X2J1aWxkZXJfZW5kKCZidWlsZGVyKSkpOworfQor
CitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NRE9NV2luZG93R2V0Q29tcHV0ZWRTdHlsZShXZWJW
aWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5sb2FkSHRtbCh0ZXN0
SFRNTCwgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBHVmFy
aWFudEJ1aWxkZXIgYnVpbGRlcjsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZidWlsZGVy
LCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJmJ1
aWxkZXIsICJ7c3Z9IiwgInBhZ2VJRCIsIGdfdmFyaWFudF9uZXdfdWludDY0KHdlYmtpdF93ZWJf
dmlld19nZXRfcGFnZV9pZCh0ZXN0LT5tX3dlYlZpZXcpKSk7CisgICAgZ19hc3NlcnQodGVzdFJ1
bm5lci0+cnVuVGVzdCgiV2ViS2l0RE9NRE9NV2luZG93IiwgImdldC1jb21wdXRlZC1zdHlsZSIs
IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmYnVpbGRlcikpKTsKK30KKwordm9pZCBiZWZvcmVBbGwo
KQoreworICAgIHRlc3RSdW5uZXIgPSBuZXcgV2ViUHJvY2Vzc1Rlc3RSdW5uZXIoKTsKKyAgICB3
ZWJraXRfd2ViX2NvbnRleHRfc2V0X3dlYl9leHRlbnNpb25zX2RpcmVjdG9yeSh3ZWJraXRfd2Vi
X2NvbnRleHRfZ2V0X2RlZmF1bHQoKSwgV0VCS0lUX1RFU1RfV0VCX0VYVEVOU0lPTlNfRElSKTsK
KworICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdERPTURPTVdpbmRvdyIsICJzaWduYWxzLWFu
ZC1kaXNwYXRjaC1ldmVudCIsIHRlc3RXZWJLaXRET01ET01XaW5kb3dTaWduYWxzQW5kRGlzcGF0
Y2hFdmVudCk7CisgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0RE9NRE9NV2luZG93IiwgImdl
dC1jb21wdXRlZC1zdHlsZSIsIHRlc3RXZWJLaXRET01ET01XaW5kb3dHZXRDb21wdXRlZFN0eWxl
KTsKK30KKwordm9pZCBhZnRlckFsbCgpCit7CisgICAgZGVsZXRlIHRlc3RSdW5uZXI7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>