<?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>181985</bug_id>
          
          <creation_ts>2018-01-23 06:45:53 -0800</creation_ts>
          <short_desc>WebDriver: test imported/w3c/webdriver/tests/sessions/new_session/merge.py::test_merge_browserName fails</short_desc>
          <delta_ts>2018-01-25 05:53:19 -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>WebDriver</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>clopez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1392044</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-23 06:45:53 -0800</bug_when>
    <thetext>It seems we are failing if the first match capabilities doesn&apos;t match instead of continuing iterating.

___________________________________________________________________________________ test_merge_browserName ___________________________________________________________________________________

new_session = &lt;function create_session at 0x7fa92c0291b8&gt;, add_browser_capabilites = &lt;function update_capabilities at 0x7fa92c029230&gt;

    def test_merge_browserName(new_session, add_browser_capabilites):
        resp, session = new_session({&quot;capabilities&quot;: {&quot;alwaysMatch&quot;: add_browser_capabilites({})}})
        browser_settings = {
            &quot;browserName&quot;: resp[&quot;capabilities&quot;][&quot;browserName&quot;],
            &quot;browserVersion&quot;: resp[&quot;capabilities&quot;][&quot;browserVersion&quot;],
            &quot;platformName&quot;: resp[&quot;capabilities&quot;][&quot;platformName&quot;]
        }
        session.end()
    
        resp, _ = new_session({&quot;capabilities&quot;:
                            {&quot;alwaysMatch&quot;: add_browser_capabilites({&quot;timeouts&quot;: {&quot;script&quot;: 10}}),
                            &quot;firstMatch&quot;: [
                                {
                                    &quot;browserName&quot;: browser_settings[&quot;browserName&quot;] + &quot;invalid&quot;,
                                    &quot;pageLoadStrategy&quot;: &quot;none&quot;
                                },
                                {
                                    &quot;browserName&quot;: browser_settings[&quot;browserName&quot;],
&gt;                                   &quot;pageLoadStrategy&quot;: &quot;eager&quot;
                                }
                            ]}})

add_browser_capabilites = &lt;function update_capabilities at 0x7fa92c029230&gt;
browser_settings = {&apos;browserName&apos;: &apos;MiniBrowser&apos;, &apos;browserVersion&apos;: &apos;2.19.6&apos;, &apos;platformName&apos;: &apos;linux&apos;}
new_session = &lt;function create_session at 0x7fa92c0291b8&gt;
resp       = {&apos;capabilities&apos;: {&apos;acceptInsecureCerts&apos;: False, &apos;browserName&apos;: &apos;MiniBrowser&apos;, &apos;browserVersion&apos;: &apos;2.19.6&apos;, &apos;pageLoadStrategy&apos;: &apos;normal&apos;, ...}, &apos;sessionId&apos;: &apos;68c46075-d837-4f79-b51d-67ace08ed7f1&apos;}
session    = &lt;webdriver.client.Session object at 0x7fa92c075f10&gt;

WebDriverTests/imported/w3c/webdriver/tests/sessions/new_session/merge.py:76: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
WebDriverTests/imported/w3c/webdriver/tests/support/fixtures.py:192: in create_session
    value = _session.send_command(&quot;POST&quot;, &quot;session&quot;, body=body)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = &lt;webdriver.client.Session object at 0x7fa92c075c10&gt;, method = &apos;POST&apos;, url = &apos;session&apos;
body = {&apos;capabilities&apos;: {&apos;alwaysMatch&apos;: {&apos;timeouts&apos;: {&apos;script&apos;: 10}, &apos;webkitgtk:browserOptions&apos;: {&apos;args&apos;: [&apos;--automation&apos;, &apos;-...ame&apos;: &apos;MiniBrowserinvalid&apos;, &apos;pageLoadStrategy&apos;: &apos;none&apos;}, {&apos;browserName&apos;: &apos;MiniBrowser&apos;, &apos;pageLoadStrategy&apos;: &apos;eager&apos;}]}}

    def send_command(self, method, url, body=None):
        &quot;&quot;&quot;
            Send a command to the remote end and validate its success.
    
            :param method: HTTP method to use in request.
            :param uri: &quot;Command part&quot; of the HTTP request URL,
                e.g. `window/rect`.
            :param body: Optional body of the HTTP request.
    
            :return: `None` if the HTTP response body was empty, otherwise
                the `value` field returned after parsing the response
                body as JSON.
    
            :raises ValueError: If the response body does not contain a
                `value` key.
            :raises error.WebDriverException: If the remote end returns
                an error.
            &quot;&quot;&quot;
        response = self.transport.send(
            method, url, body,
            encoder=protocol.Encoder, decoder=protocol.Decoder,
            session=self)
    
        if response.status != 200:
&gt;           raise error.from_response(response)
E           SessionNotCreatedException: session not created (500): expected browserName MiniBrowserinvalid but got MiniBrowser

body       = {&apos;capabilities&apos;: {&apos;alwaysMatch&apos;: {&apos;timeouts&apos;: {&apos;script&apos;: 10}, &apos;webkitgtk:browserOptions&apos;: {&apos;args&apos;: [&apos;--automation&apos;, &apos;-...ame&apos;: &apos;MiniBrowserinvalid&apos;, &apos;pageLoadStrategy&apos;: &apos;none&apos;}, {&apos;browserName&apos;: &apos;MiniBrowser&apos;, &apos;pageLoadStrategy&apos;: &apos;eager&apos;}]}}
method     = &apos;POST&apos;
response   = &lt;Response status=500 error=&lt;SessionNotCreatedException http_status=500&gt;&gt;
self       = &lt;webdriver.client.Session object at 0x7fa92c075c10&gt;
url        = &apos;session&apos;

WebDriverTests/imported/w3c/tools/webdriver/webdriver/client.py:439: SessionNotCreatedException</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1392976</commentid>
    <comment_count>1</comment_count>
      <attachid>332246</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-25 02:55:04 -0800</bug_when>
    <thetext>Created attachment 332246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393012</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-25 05:52:48 -0800</bug_when>
    <thetext>Committed r227603: &lt;https://trac.webkit.org/changeset/227603&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393013</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-25 05:53:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/36865236&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332246</attachid>
            <date>2018-01-25 02:55:04 -0800</date>
            <delta_ts>2018-01-25 03:41:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wd-first-match-caps.diff</filename>
            <type>text/plain</type>
            <size>33309</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZl
ci9DaGFuZ2VMb2cKaW5kZXggNWI5MThjZmE3MzEuLjU5ZmI4NzQ5NWYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ4IEBACisyMDE4LTAxLTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBXZWJEcml2ZXI6IHRlc3QgaW1wb3J0ZWQvdzNj
L3dlYmRyaXZlci90ZXN0cy9zZXNzaW9ucy9uZXdfc2Vzc2lvbi9tZXJnZS5weTo6dGVzdF9tZXJn
ZV9icm93c2VyTmFtZSBmYWlscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgxOTg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgdGhhdCB3ZSBhcmUgY29uc2lkZXJpbmcgYSBmYWls
dXJlIHdoZW4gdGhlIGJyb3dzZXIgbmFtZSBkb2Vzbid0IG1hdGNoIHRoZSBjYXBhYmlsaXRpZXMs
IGluc3RlYWQKKyAgICAgICAgb2YgdHJ5aW5nIHdpdGggdGhlIG5leHQgbWVyZ2VkIGNhcGFiaWxp
dGllcy4gVGhpcyBpcyBoYXBwZW5pbmcgYmVjYXVzZSB3aGVuIHByb2Nlc3NpbmcgY2FwYWJpbGl0
aWVzLCB3ZSBvbmx5CisgICAgICAgIG1hdGNoIHRoZSBvbmVzIHRoYXQgd2Uga25vdyB3aXRob3V0
IGhhdmluZyB0byBsYXVuY2ggdGhlIGJyb3dzZXIuIEJyb3dzZXIgbmFtZSBhbmQgdmVyc2lvbiBh
cmUgcHJvdmlkZWQgYnkgdGhlCisgICAgICAgIGJyb3dzZXIgZHVyaW5nIHRoZSBzZXNzaW9uIGlu
aXRpYWxpemF0aW9uLiBUaGlzIHBhdGNoIHJld29ya3MgdGhlIHNlc3Npb24gY3JlYXRpb24gdG8g
bWFrZSBpdCBwb3NzaWJsZSB0byB0cnkKKyAgICAgICAgd2l0aCB0aGUgbmV4dCBtZXJnZWQgY2Fw
YWJpbGl0aWVzIHdoZW4gbWF0Y2hpbmcgZmFpbHMgYWZ0ZXIgdGhlIGJyb3dzZXIgaXMgbGF1bmNo
ZWQuCisKKyAgICAgICAgKiBTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lv
bjo6U2Vzc2lvbik6IEluaXRpYWxpemUgdGltZW91dHMgZnJvbSBjYXBhYmlsaXRpZXMsIGJlY2F1
c2Ugbm93IHdlIGhhdmUgdGhlIGZpbmFsIGNhcGFiaWxpdGllcyBoZXJlLgorICAgICAgICAoV2Vi
RHJpdmVyOjpTZXNzaW9uOjppZCBjb25zdCk6IFJldHVybiB0aGUgc2Vzc2lvbiBJRCBmcm9tIHRo
ZSBTZXNzaW9uSG9zdCwgc2luY2UgaXQncyBub3cgY3JlYXRlZCB0aGVyZS4KKyAgICAgICAgKFdl
YkRyaXZlcjo6U2Vzc2lvbjo6Y3JlYXRlVG9wTGV2ZWxCcm93c2luZ0NvbnRleHQpOiBEbyBub3Qg
c3RhcnQgdGhlIHNlc3Npb24sIGl0IGhhcyBhbHJlYWR5IGJlZW4gc3RhcnRlZCBhCisgICAgICAg
IHRoaXMgcG9pbnQuCisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmNyZWF0ZUVsZW1lbnQp
OiBVc2UgaWQoKSBpbnN0ZWFkIG9mIG1faWQuCisgICAgICAgICogU2Vzc2lvbi5oOgorICAgICAg
ICAqIFNlc3Npb25Ib3N0Lmg6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0OjpzZXNz
aW9uSUQgY29uc3QpOiBSZXR1cm4gdGhlIHNlc3Npb24gSUQuCisgICAgICAgICogV2ViRHJpdmVy
U2VydmljZS5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OldlYkRyaXZlclNlcnZpY2U6Om1hdGNo
Q2FwYWJpbGl0aWVzIGNvbnN0KTogUmVtb3ZlIHRoZSBlcnJvciBoYW5kbGluZywgYW5kIHJldHVy
biBhIGJvb2xlYW4gaW5zdGVhZCwKKyAgICAgICAgc2luY2Ugbm90IG1hdGhpbmcgaXMgbm90IGFu
IGVycm9yLgorICAgICAgICAoV2ViRHJpdmVyOjpXZWJEcml2ZXJTZXJ2aWNlOjpwcm9jZXNzQ2Fw
YWJpbGl0aWVzIGNvbnN0KTogUmV0dXJuIGEgbGlzdCBvZiBtYXRjaGVkIGNhcGFiaWxpdGllcywg
aW5zdGVhZCBvZiB0aGUKKyAgICAgICAgSlNPTiBvYmplY3QgY29ycmVzcG9uZGluZyB0byB0aGUg
Zmlyc3QgbWF0Y2guCisgICAgICAgIChXZWJEcml2ZXI6OldlYkRyaXZlclNlcnZpY2U6Om5ld1Nl
c3Npb24pOiBVc2UgaGVscGVyIGNvbm5lY3RUb0Jyb3dzZXIoKS4KKyAgICAgICAgKFdlYkRyaXZl
cjo6V2ViRHJpdmVyU2VydmljZTo6Y29ubmVjdFRvQnJvd3Nlcik6IENyZWF0ZSBhIHNlc3Npb24g
aG9zdCBmb3IgdGhlIG5leHQgbWVyZ2VkIGNhcGFiaWxpdGllcyBhbmQKKyAgICAgICAgY29ubmVj
dCB0byB0aGUgYnJvd3Nlci4KKyAgICAgICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVyU2VydmljZTo6
Y3JlYXRlU2Vzc2lvbik6IFN0YXJ0IGEgbmV3IGF1dG9tYXRpb24gc2Vzc2lvbi4gSWYgY2FwYWJp
bGl0aWVzIGRpZG4ndCBtYXRjaCwKKyAgICAgICAgc3RhcnQgdGhlIHByb2Nlc3MgYWdhaW4gY2Fs
bGluZyBjb25uZWN0VG9Ccm93c2VyKCksIG90aGVyd2lzZSBjcmVhdGUgdGhlIG5ldyBzZXNzaW9u
IGFuZCB0b3AgbGV2ZWwuCisgICAgICAgICogV2ViRHJpdmVyU2VydmljZS5oOgorICAgICAgICAq
IGdsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6bWF0Y2hCcm93
c2VyT3B0aW9ucyk6IEhlbHBlciB0byBjaGVjayBicm93c2VyIG9wdGlvbnMuCisgICAgICAgIChX
ZWJEcml2ZXI6OlNlc3Npb25Ib3N0OjptYXRjaENhcGFiaWxpdGllcyk6IFVzZSBtYXRjaEJyb3dz
ZXJPcHRpb25zKCkgYW5kIHJldHVybiB0cnVlIG9yIGZhbHNlIGluc3RlYWQgb2YgYW4KKyAgICAg
ICAgb3B0aW9uYWwgZXJyb3IgbWVzc2FnZS4KKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbkhv
c3Q6OnN0YXJ0QXV0b21hdGlvblNlc3Npb24pOiBDcmVhdGUgdGhlIHNlc3Npb24gSUQgaGVyZSBh
bmQgbm90aWZ5IHRoZSBjYWxsZXIgaW4gY2FzZQorICAgICAgICBjYXBhYmlsaXRpZXMgZGlkbid0
IG1hdGNoLgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6c2V0VGFyZ2V0TGlzdCk6
IE5vdGlmeSB0aGF0IGNhcGFiaWxpdGllcyBkaWQgbWF0Y2guCisgICAgICAgICogZ3RrL1dlYkRy
aXZlclNlcnZpY2VHdGsuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpXZWJEcml2ZXJTZXJ2aWNl
OjpwbGF0Zm9ybU1hdGNoQ2FwYWJpbGl0eSBjb25zdCk6IE1ha2UgaXQgcmV0dXJuIGJvb2wuCisg
ICAgICAgICogd3BlL1dlYkRyaXZlclNlcnZpY2VXUEUuY3BwOgorICAgICAgICAoV2ViRHJpdmVy
OjpXZWJEcml2ZXJTZXJ2aWNlOjpwbGF0Zm9ybU1hdGNoQ2FwYWJpbGl0eSBjb25zdCk6IERpdHRv
LgorCiAyMDE4LTAxLTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBXZWJEcml2ZXI6IHRlc3QgaW1wb3J0ZWQvdzNjL3dlYmRyaXZlci90ZXN0
cy9zZXNzaW9ucy9uZXdfc2Vzc2lvbi9tZXJnZS5weTo6dGVzdF9tZXJnZV9wbGF0Zm9ybU5hbWUg
ZmFpbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDZhMWFiYzRiYzNhLi40OGFkZmU4MDIzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJp
dmVyL1Nlc3Npb24uY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiV2ViRHJpdmVyQXRv
bXMuaCIKICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KICNp
bmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL1VVSUQuaD4KIAogbmFtZXNw
YWNlIFdlYkRyaXZlciB7CiAKQEAgLTQ4LDE3ICs0NywyMyBAQCBzdGF0aWMgY29uc3QgU2Vjb25k
cyBkZWZhdWx0SW1wbGljaXRXYWl0VGltZW91dCA9IDBfczsKIAogU2Vzc2lvbjo6U2Vzc2lvbihz
dGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkhvc3Q+JiYgaG9zdCkKICAgICA6IG1faG9zdChXVEZNb3Zl
KGhvc3QpKQotICAgICwgbV9pZChjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCiAgICAgLCBt
X3NjcmlwdFRpbWVvdXQoZGVmYXVsdFNjcmlwdFRpbWVvdXQpCiAgICAgLCBtX3BhZ2VMb2FkVGlt
ZW91dChkZWZhdWx0UGFnZUxvYWRUaW1lb3V0KQogICAgICwgbV9pbXBsaWNpdFdhaXRUaW1lb3V0
KGRlZmF1bHRJbXBsaWNpdFdhaXRUaW1lb3V0KQogeworICAgIGlmIChjYXBhYmlsaXRpZXMoKS50
aW1lb3V0cykKKyAgICAgICAgc2V0VGltZW91dHMoY2FwYWJpbGl0aWVzKCkudGltZW91dHMudmFs
dWUoKSwgW10oQ29tbWFuZFJlc3VsdCYmKSB7IH0pOwogfQogCiBTZXNzaW9uOjp+U2Vzc2lvbigp
CiB7CiB9CiAKK2NvbnN0IFN0cmluZyYgU2Vzc2lvbjo6aWQoKSBjb25zdAoreworICAgIHJldHVy
biBtX2hvc3QtPnNlc3Npb25JRCgpOworfQorCiBjb25zdCBDYXBhYmlsaXRpZXMmIFNlc3Npb246
OmNhcGFiaWxpdGllcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faG9zdC0+Y2FwYWJpbGl0aWVz
KCk7CkBAIC0xNjIsMjQgKzE2NywxOCBAQCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gU2Vzc2lvbjo6
cGFnZUxvYWRTdHJhdGVneVN0cmluZygpIGNvbnN0CiB2b2lkIFNlc3Npb246OmNyZWF0ZVRvcExl
dmVsQnJvd3NpbmdDb250ZXh0KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0
LnZhbHVlKCkpOwotICAgIG1faG9zdC0+c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihtX2lkLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3JNZXNz
YWdlKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkgewotICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJv
ckNvZGU6OlVua25vd25FcnJvciwgZXJyb3JNZXNzYWdlLnZhbHVlKCkpKTsKKyAgICBtX2hvc3Qt
PnNlbmRDb21tYW5kVG9CYWNrZW5kKEFTQ0lJTGl0ZXJhbCgiY3JlYXRlQnJvd3NpbmdDb250ZXh0
IiksIG51bGxwdHIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpD
b21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CisgICAgICAgIGlmIChyZXNwb25z
ZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3Bv
bnNlT2JqZWN0KSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG1f
aG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoQVNDSUlMaXRlcmFsKCJjcmVhdGVCcm93c2luZ0Nv
bnRleHQiKSwgbnVsbHB0ciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhv
c3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlm
IChyZXNwb25zZS5pc0Vycm9yIHx8ICFyZXNwb25zZS5yZXNwb25zZU9iamVjdCkgewotICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShy
ZXNwb25zZS5yZXNwb25zZU9iamVjdCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBTdHJpbmcgaGFuZGxlOwotICAgICAgICAgICAgaWYgKCFy
ZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiaGFuZGxlIiks
IGhhbmRsZSkpIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVz
dWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVycm9yKSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3dpdGNoVG9U
b3BMZXZlbEJyb3dzaW5nQ29udGV4dChoYW5kbGUpOwotICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoQ29tbWFuZFJlc3VsdDo6c3VjY2VzcygpKTsKLSAgICAgICAgfSk7CisgICAgICAgIFN0
cmluZyBoYW5kbGU7CisgICAgICAgIGlmICghcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldFN0
cmluZyhBU0NJSUxpdGVyYWwoImhhbmRsZSIpLCBoYW5kbGUpKSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29k
ZTo6VW5rbm93bkVycm9yKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgc3dpdGNoVG9Ub3BMZXZlbEJyb3dzaW5nQ29udGV4dChoYW5kbGUpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpzdWNjZXNzKCkpOwogICAgIH0pOwogfQogCkBA
IC04MTgsNyArODE3LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gU2Vzc2lvbjo6Y3JlYXRlRWxl
bWVudChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgdmFsdWUpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgU3RyaW5nIGVsZW1lbnRJRDsKLSAgICBpZiAoIXZhbHVlT2JqZWN0LT5nZXRTdHJp
bmcoInNlc3Npb24tbm9kZS0iICsgbV9pZCwgZWxlbWVudElEKSkKKyAgICBpZiAoIXZhbHVlT2Jq
ZWN0LT5nZXRTdHJpbmcoInNlc3Npb24tbm9kZS0iICsgaWQoKSwgZWxlbWVudElEKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBlbGVtZW50T2Jq
ZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKQEAgLTgyOSw3ICs4MjgsNyBAQCBSZWZQdHI8
SlNPTjo6T2JqZWN0PiBTZXNzaW9uOjpjcmVhdGVFbGVtZW50KFJlZlB0cjxKU09OOjpWYWx1ZT4m
JiB2YWx1ZSkKIFJlZlB0cjxKU09OOjpPYmplY3Q+IFNlc3Npb246OmNyZWF0ZUVsZW1lbnQoY29u
c3QgU3RyaW5nJiBlbGVtZW50SUQpCiB7CiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gZWxlbWVu
dE9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZWxlbWVudE9iamVjdC0+c2V0
U3RyaW5nKCJzZXNzaW9uLW5vZGUtIiArIG1faWQsIGVsZW1lbnRJRCk7CisgICAgZWxlbWVudE9i
amVjdC0+c2V0U3RyaW5nKCJzZXNzaW9uLW5vZGUtIiArIGlkKCksIGVsZW1lbnRJRCk7CiAgICAg
cmV0dXJuIGVsZW1lbnRPYmplY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIv
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmgKaW5kZXggNWJjZDlmNjhjMDYu
LjAzZjc3ZGYwNzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAg
ICAgfQogICAgIH5TZXNzaW9uKCk7CiAKLSAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZDsgfQorICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdDsKICAgICBjb25zdCBD
YXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0OwogICAgIFNlY29uZHMgc2NyaXB0VGlt
ZW91dCgpIGNvbnN0ICB7IHJldHVybiBtX3NjcmlwdFRpbWVvdXQ7IH0KICAgICBTZWNvbmRzIHBh
Z2VMb2FkVGltZW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUxvYWRUaW1lb3V0OyB9CkBAIC0x
ODEsNyArMTgxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBlcmZvcm1LZXlib2FyZEludGVyYWN0
aW9ucyhWZWN0b3I8S2V5Ym9hcmRJbnRlcmFjdGlvbj4mJiwgRnVuY3Rpb248dm9pZCAoQ29tbWFu
ZFJlc3VsdCYmKT4mJik7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkhvc3Q+IG1faG9z
dDsKLSAgICBTdHJpbmcgbV9pZDsKICAgICBTZWNvbmRzIG1fc2NyaXB0VGltZW91dDsKICAgICBT
ZWNvbmRzIG1fcGFnZUxvYWRUaW1lb3V0OwogICAgIFNlY29uZHMgbV9pbXBsaWNpdFdhaXRUaW1l
b3V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5oIGIvU291cmNl
L1dlYkRyaXZlci9TZXNzaW9uSG9zdC5oCmluZGV4IGNiYjA1MTJlZDJhLi5lZmFmMTI3ZDE0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uSG9zdC5oCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvU2Vzc2lvbkhvc3QuaApAQCAtNTEsMTAgKzUxLDExIEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdDsKIAorICAgIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklE
KCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAgICBjb25zdCBDYXBhYmlsaXRpZXMm
IGNhcGFiaWxpdGllcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FwYWJpbGl0aWVzOyB9CiAKICAgICB2
b2lkIGNvbm5lY3RUb0Jyb3dzZXIoRnVuY3Rpb248dm9pZCAoc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGVycm9yKT4mJik7Ci0gICAgdm9pZCBzdGFydEF1dG9tYXRpb25TZXNzaW9uKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFN0cmluZz4pPiYmKTsK
KyAgICB2b2lkIHN0YXJ0QXV0b21hdGlvblNlc3Npb24oRnVuY3Rpb248dm9pZCAoYm9vbCwgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+KT4mJik7CiAKICAgICBzdHJ1Y3QgQ29tbWFuZFJlc3BvbnNlIHsK
ICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gcmVzcG9uc2VPYmplY3Q7CkBAIC03OCw3ICs3
OSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNf
aW50ZXJmYWNlVlRhYmxlOwogICAgIHZvaWQgbGF1bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lkIChz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiYmKTsKICAgICB2b2lkIGNvbm5lY3RUb0Jyb3dz
ZXIoc3RkOjp1bmlxdWVfcHRyPENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGE+JiYpOwotICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXRjaENhcGFiaWxpdGllcyhHVmFyaWFudCopOworICAgIGJv
b2wgbWF0Y2hDYXBhYmlsaXRpZXMoR1ZhcmlhbnQqKTsKICAgICB2b2lkIHNldHVwQ29ubmVjdGlv
bihHUmVmUHRyPEdEQnVzQ29ubmVjdGlvbj4mJik7CiAgICAgdm9pZCBzZXRUYXJnZXRMaXN0KHVp
bnQ2NF90IGNvbm5lY3Rpb25JRCwgVmVjdG9yPFRhcmdldD4mJik7CiAgICAgdm9pZCBzZW5kTWVz
c2FnZVRvRnJvbnRlbmQodWludDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRfdCB0YXJnZXRJRCwg
Y29uc3QgY2hhciogbWVzc2FnZSk7CkBAIC04NiwxMyArODcsMTQgQEAgcHJpdmF0ZToKIAogICAg
IENhcGFiaWxpdGllcyBtX2NhcGFiaWxpdGllczsKIAorICAgIFN0cmluZyBtX3Nlc3Npb25JRDsK
ICAgICB1aW50NjRfdCBtX2Nvbm5lY3Rpb25JRCB7IDAgfTsKICAgICBUYXJnZXQgbV90YXJnZXQ7
CiAKICAgICBIYXNoTWFwPGxvbmcsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXNwb25zZSYmKT4+
IG1fY29tbWFuZFJlcXVlc3RzOwogCiAjaWYgVVNFKEdMSUIpCi0gICAgRnVuY3Rpb248dm9pZCAo
c3RkOjpvcHRpb25hbDxTdHJpbmc+KT4gbV9zdGFydFNlc3Npb25Db21wbGV0aW9uSGFuZGxlcjsK
KyAgICBGdW5jdGlvbjx2b2lkIChib29sLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4pPiBtX3N0YXJ0
U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVyOwogICAgIEdSZWZQdHI8R1N1YnByb2Nlc3M+IG1fYnJv
d3NlcjsKICAgICBHUmVmUHRyPEdEQnVzQ29ubmVjdGlvbj4gbV9kYnVzQ29ubmVjdGlvbjsKICAg
ICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDMzNDlkOTdhMGU3Li43NWZlYTJjOGQ0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgUmVmUHRyPEpT
T046Ok9iamVjdD4gV2ViRHJpdmVyU2VydmljZTo6bWVyZ2VDYXBhYmlsaXRpZXMoY29uc3QgSlNP
Tjo6T2JqZWN0JiByZXEKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8SlNPTjo6T2Jq
ZWN0PiBXZWJEcml2ZXJTZXJ2aWNlOjptYXRjaENhcGFiaWxpdGllcyhjb25zdCBKU09OOjpPYmpl
Y3QmIG1lcmdlZENhcGFiaWxpdGllcywgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiBlcnJvclN0cmlu
ZykgY29uc3QKK1JlZlB0cjxKU09OOjpPYmplY3Q+IFdlYkRyaXZlclNlcnZpY2U6Om1hdGNoQ2Fw
YWJpbGl0aWVzKGNvbnN0IEpTT046Ok9iamVjdCYgbWVyZ2VkQ2FwYWJpbGl0aWVzKSBjb25zdAog
ewogICAgIC8vIMKnNy4yIFByb2Nlc3NpbmcgQ2FwYWJpbGl0aWVzLgogICAgIC8vIGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby93ZWJkcml2ZXIvd2ViZHJpdmVyLXNwZWMuaHRtbCNkZm4tbWF0Y2hpbmct
Y2FwYWJpbGl0aWVzCkBAIC00OTEsNDQgKzQ5MSwzNCBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBX
ZWJEcml2ZXJTZXJ2aWNlOjptYXRjaENhcGFiaWxpdGllcyhjb25zdCBKU09OOjpPYmplY3QmIG1l
cgogICAgICAgICBpZiAoaXQtPmtleSA9PSAiYnJvd3Nlck5hbWUiICYmIHBsYXRmb3JtQ2FwYWJp
bGl0aWVzLmJyb3dzZXJOYW1lKSB7CiAgICAgICAgICAgICBTdHJpbmcgYnJvd3Nlck5hbWU7CiAg
ICAgICAgICAgICBpdC0+dmFsdWUtPmFzU3RyaW5nKGJyb3dzZXJOYW1lKTsKLSAgICAgICAgICAg
IGlmICghZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShwbGF0Zm9ybUNhcGFiaWxpdGllcy5icm93c2Vy
TmFtZS52YWx1ZSgpLCBicm93c2VyTmFtZSkpIHsKLSAgICAgICAgICAgICAgICBlcnJvclN0cmlu
ZyA9IG1ha2VTdHJpbmcoImV4cGVjdGVkIGJyb3dzZXJOYW1lICIsIHBsYXRmb3JtQ2FwYWJpbGl0
aWVzLmJyb3dzZXJOYW1lLnZhbHVlKCksICIgYnV0IGdvdCAiLCBicm93c2VyTmFtZSk7CisgICAg
ICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdBU0NJSUNhc2UocGxhdGZvcm1DYXBhYmlsaXRpZXMu
YnJvd3Nlck5hbWUudmFsdWUoKSwgYnJvd3Nlck5hbWUpKQogICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGl0LT5rZXkgPT0g
ImJyb3dzZXJWZXJzaW9uIiAmJiBwbGF0Zm9ybUNhcGFiaWxpdGllcy5icm93c2VyVmVyc2lvbikg
ewogICAgICAgICAgICAgU3RyaW5nIGJyb3dzZXJWZXJzaW9uOwogICAgICAgICAgICAgaXQtPnZh
bHVlLT5hc1N0cmluZyhicm93c2VyVmVyc2lvbik7Ci0gICAgICAgICAgICBpZiAoIXBsYXRmb3Jt
Q29tcGFyZUJyb3dzZXJWZXJzaW9ucyhicm93c2VyVmVyc2lvbiwgcGxhdGZvcm1DYXBhYmlsaXRp
ZXMuYnJvd3NlclZlcnNpb24udmFsdWUoKSkpIHsKLSAgICAgICAgICAgICAgICBlcnJvclN0cmlu
ZyA9IG1ha2VTdHJpbmcoInJlcXVlc3RlZCBicm93c2VyVmVyc2lvbiBpcyAiLCBicm93c2VyVmVy
c2lvbiwgIiBidXQgYWN0dWFsIHZlcnNpb24gaXMgIiwgcGxhdGZvcm1DYXBhYmlsaXRpZXMuYnJv
d3NlclZlcnNpb24udmFsdWUoKSk7CisgICAgICAgICAgICBpZiAoIXBsYXRmb3JtQ29tcGFyZUJy
b3dzZXJWZXJzaW9ucyhicm93c2VyVmVyc2lvbiwgcGxhdGZvcm1DYXBhYmlsaXRpZXMuYnJvd3Nl
clZlcnNpb24udmFsdWUoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoaXQtPmtleSA9PSAicGxhdGZvcm1OYW1lIiAm
JiBwbGF0Zm9ybUNhcGFiaWxpdGllcy5wbGF0Zm9ybU5hbWUpIHsKICAgICAgICAgICAgIFN0cmlu
ZyBwbGF0Zm9ybU5hbWU7CiAgICAgICAgICAgICBpdC0+dmFsdWUtPmFzU3RyaW5nKHBsYXRmb3Jt
TmFtZSk7Ci0gICAgICAgICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBs
YXRmb3JtTmFtZSwgImFueSIpICYmIHBsYXRmb3JtQ2FwYWJpbGl0aWVzLnBsYXRmb3JtTmFtZS52
YWx1ZSgpICE9IHBsYXRmb3JtTmFtZSkgewotICAgICAgICAgICAgICAgIGVycm9yU3RyaW5nID0g
bWFrZVN0cmluZygiZXhwZWN0ZWQgcGxhdGZvcm1OYW1lICIsIHBsYXRmb3JtQ2FwYWJpbGl0aWVz
LnBsYXRmb3JtTmFtZS52YWx1ZSgpLCAiIGJ1dCBnb3QgIiwgcGxhdGZvcm1OYW1lKTsKKyAgICAg
ICAgICAgIGlmICghZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocGxhdGZvcm1OYW1lLCAi
YW55IikgJiYgcGxhdGZvcm1DYXBhYmlsaXRpZXMucGxhdGZvcm1OYW1lLnZhbHVlKCkgIT0gcGxh
dGZvcm1OYW1lKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgaWYgKGl0LT5rZXkgPT0gImFjY2VwdEluc2VjdXJlQ2VydHMiICYm
IHBsYXRmb3JtQ2FwYWJpbGl0aWVzLmFjY2VwdEluc2VjdXJlQ2VydHMpIHsKICAgICAgICAgICAg
IGJvb2wgYWNjZXB0SW5zZWN1cmVDZXJ0czsKICAgICAgICAgICAgIGl0LT52YWx1ZS0+YXNCb29s
ZWFuKGFjY2VwdEluc2VjdXJlQ2VydHMpOwotICAgICAgICAgICAgaWYgKGFjY2VwdEluc2VjdXJl
Q2VydHMgJiYgIXBsYXRmb3JtQ2FwYWJpbGl0aWVzLmFjY2VwdEluc2VjdXJlQ2VydHMudmFsdWUo
KSkgewotICAgICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gU3RyaW5nKCJicm93c2VyIGRvZXNu
J3QgYWNjZXB0IGluc2VjdXJlIFRMUyBjZXJ0aWZpY2F0ZXMiKTsKKyAgICAgICAgICAgIGlmIChh
Y2NlcHRJbnNlY3VyZUNlcnRzICYmICFwbGF0Zm9ybUNhcGFiaWxpdGllcy5hY2NlcHRJbnNlY3Vy
ZUNlcnRzLnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
ICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoaXQtPmtleSA9PSAicHJveHkiKSB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHByb3h5IHN1cHBvcnQuCi0gICAgICAgIH0gZWxzZSBp
ZiAoYXV0byBwbGF0Zm9ybUVycm9yU3RyaW5nID0gcGxhdGZvcm1NYXRjaENhcGFiaWxpdHkoaXQt
PmtleSwgaXQtPnZhbHVlKSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBwbGF0Zm9ybUVy
cm9yU3RyaW5nOworICAgICAgICB9IGVsc2UgaWYgKCFwbGF0Zm9ybU1hdGNoQ2FwYWJpbGl0eShp
dC0+a2V5LCBpdC0+dmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IH0KICAgICAgICAgbWF0Y2hlZENhcGFiaWxpdGllcy0+c2V0VmFsdWUoaXQtPmtleSwgUmVmUHRy
PEpTT046OlZhbHVlPihpdC0+dmFsdWUpKTsKICAgICB9CiAKICAgICByZXR1cm4gbWF0Y2hlZENh
cGFiaWxpdGllczsKIH0KIAotUmVmUHRyPEpTT046Ok9iamVjdD4gV2ViRHJpdmVyU2VydmljZTo6
cHJvY2Vzc0NhcGFiaWxpdGllcyhjb25zdCBKU09OOjpPYmplY3QmIHBhcmFtZXRlcnMsIEZ1bmN0
aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK1Zl
Y3RvcjxDYXBhYmlsaXRpZXM+IFdlYkRyaXZlclNlcnZpY2U6OnByb2Nlc3NDYXBhYmlsaXRpZXMo
Y29uc3QgSlNPTjo6T2JqZWN0JiBwYXJhbWV0ZXJzLCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVz
dWx0JiYpPiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgLy8gwqc3LjIgUHJvY2Vz
c2luZyBDYXBhYmlsaXRpZXMuCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmRyaXZl
ci93ZWJkcml2ZXItc3BlYy5odG1sI3Byb2Nlc3NpbmctY2FwYWJpbGl0aWVzCkBAIC01MzcsNyAr
NTI3LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gV2ViRHJpdmVyU2VydmljZTo6cHJvY2Vzc0Nh
cGFiaWxpdGllcyhjb25zdCBKU09OOjpPYmplY3QmIHAKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0
PiBjYXBhYmlsaXRpZXNPYmplY3Q7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLmdldE9iamVjdChBU0NJ
SUxpdGVyYWwoImNhcGFiaWxpdGllcyIpLCBjYXBhYmlsaXRpZXNPYmplY3QpKSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpJbnZhbGlkQXJndW1lbnQpKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgLy8gMi4gTGV0IHJlcXVpcmVkIGNhcGFiaWxp
dGllcyBiZSB0aGUgcmVzdWx0IG9mIGdldHRpbmcgdGhlIHByb3BlcnR5ICJhbHdheXNNYXRjaCIg
ZnJvbSBjYXBhYmlsaXRpZXMgcmVxdWVzdC4KQEAgLTU0OCwxNCArNTM4LDE0IEBAIFJlZlB0cjxK
U09OOjpPYmplY3Q+IFdlYkRyaXZlclNlcnZpY2U6OnByb2Nlc3NDYXBhYmlsaXRpZXMoY29uc3Qg
SlNPTjo6T2JqZWN0JiBwCiAgICAgICAgIHJlcXVpcmVkQ2FwYWJpbGl0aWVzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBlbHNlIGlmICghcmVxdWlyZWRDYXBhYmlsaXRpZXNWYWx1ZS0+
YXNPYmplY3QocmVxdWlyZWRDYXBhYmlsaXRpZXMpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpJbnZhbGlk
QXJndW1lbnQsIFN0cmluZygiYWx3YXlzTWF0Y2ggaXMgaW52YWxpZCBpbiBjYXBhYmlsaXRpZXMi
KSkpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CiAKICAgICAvLyAyLjIuIExldCByZXF1aXJlZCBjYXBhYmlsaXRpZXMgYmUgdGhlIHJlc3VsdCBv
ZiB0cnlpbmcgdG8gdmFsaWRhdGUgY2FwYWJpbGl0aWVzIHdpdGggYXJndW1lbnQgcmVxdWlyZWQg
Y2FwYWJpbGl0aWVzLgogICAgIHJlcXVpcmVkQ2FwYWJpbGl0aWVzID0gdmFsaWRhdGVkQ2FwYWJp
bGl0aWVzKCpyZXF1aXJlZENhcGFiaWxpdGllcyk7CiAgICAgaWYgKCFyZXF1aXJlZENhcGFiaWxp
dGllcykgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENv
bW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6SW52YWxpZEFyZ3VtZW50LCBTdHJpbmcoIkludmFsaWQg
YWx3YXlzTWF0Y2ggY2FwYWJpbGl0aWVzIikpKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgLy8gMy4gTGV0IGFsbCBmaXJzdCBtYXRj
aCBjYXBhYmlsaXRpZXMgYmUgdGhlIHJlc3VsdCBvZiBnZXR0aW5nIHRoZSBwcm9wZXJ0eSAiZmly
c3RNYXRjaCIgZnJvbSBjYXBhYmlsaXRpZXMgcmVxdWVzdC4KQEAgLTU2OCw3ICs1NTgsNyBAQCBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiBXZWJEcml2ZXJTZXJ2aWNlOjpwcm9jZXNzQ2FwYWJpbGl0aWVz
KGNvbnN0IEpTT046Ok9iamVjdCYgcAogICAgIH0gZWxzZSBpZiAoIWZpcnN0TWF0Y2hDYXBhYmls
aXRpZXNWYWx1ZS0+YXNBcnJheShmaXJzdE1hdGNoQ2FwYWJpbGl0aWVzTGlzdCkpIHsKICAgICAg
ICAgLy8gMy4yLiBJZiBhbGwgZmlyc3QgbWF0Y2ggY2FwYWJpbGl0aWVzIGlzIG5vdCBhIEpTT04g
TGlzdCwgcmV0dXJuIGVycm9yIHdpdGggZXJyb3IgY29kZSBpbnZhbGlkIGFyZ3VtZW50LgogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6
OkVycm9yQ29kZTo6SW52YWxpZEFyZ3VtZW50LCBTdHJpbmcoImZpcnN0TWF0Y2ggaXMgaW52YWxp
ZCBpbiBjYXBhYmlsaXRpZXMiKSkpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CiAKICAgICAvLyA0LiBMZXQgdmFsaWRhdGVkIGZpcnN0IG1hdGNo
IGNhcGFiaWxpdGllcyBiZSBhbiBlbXB0eSBKU09OIExpc3QuCkBAIC01ODEsMTMgKzU3MSwxMyBA
QCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBXZWJEcml2ZXJTZXJ2aWNlOjpwcm9jZXNzQ2FwYWJpbGl0
aWVzKGNvbnN0IEpTT046Ok9iamVjdCYgcAogICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBm
aXJzdE1hdGNoQ2FwYWJpbGl0aWVzOwogICAgICAgICBpZiAoIWZpcnN0TWF0Y2hDYXBhYmlsaXRp
ZXNWYWx1ZS0+YXNPYmplY3QoZmlyc3RNYXRjaENhcGFiaWxpdGllcykpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpJbnZhbGlkQXJndW1lbnQsIFN0cmluZygiSW52YWxpZCBjYXBhYmlsaXRpZXMgZm91
bmQgaW4gZmlyc3RNYXRjaCIpKSk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgLy8gNS4xLiBMZXQgdmFsaWRh
dGVkIGNhcGFiaWxpdGllcyBiZSB0aGUgcmVzdWx0IG9mIHRyeWluZyB0byB2YWxpZGF0ZSBjYXBh
YmlsaXRpZXMgd2l0aCBhcmd1bWVudCBmaXJzdCBtYXRjaCBjYXBhYmlsaXRpZXMuCiAgICAgICAg
IGZpcnN0TWF0Y2hDYXBhYmlsaXRpZXMgPSB2YWxpZGF0ZWRDYXBhYmlsaXRpZXMoKmZpcnN0TWF0
Y2hDYXBhYmlsaXRpZXMpOwogICAgICAgICBpZiAoIWZpcnN0TWF0Y2hDYXBhYmlsaXRpZXMpIHsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpJbnZhbGlkQXJndW1lbnQsIFN0cmluZygiSW52YWxpZCBmaXJz
dE1hdGNoIGNhcGFiaWxpdGllcyIpKSk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KIAogICAgICAgICAvLyBWYWxpZGF0ZSBo
ZXJlIHRoYXQgZmlyc3RNYXRjaENhcGFiaWxpdGllcyBkb24ndCBzaGFkb3cgYWx3YXlzTWF0Y2hD
YXBhYmlsaXRpZXMuCkBAIC01OTcsNyArNTg3LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gV2Vi
RHJpdmVyU2VydmljZTo6cHJvY2Vzc0NhcGFiaWxpdGllcyhjb25zdCBKU09OOjpPYmplY3QmIHAK
ICAgICAgICAgICAgIGlmIChyZXF1aXJlZENhcGFiaWxpdGllcy0+ZmluZChpdC0+a2V5KSAhPSBy
ZXF1aXJlZEVuZCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRS
ZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpJbnZhbGlkQXJndW1lbnQsCiAg
ICAgICAgICAgICAgICAgICAgIG1ha2VTdHJpbmcoIkludmFsaWQgZmlyc3RNYXRjaCBjYXBhYmls
aXRpZXM6IGtleSAiLCBpdC0+a2V5LCAiIGlzIHByZXNlbnQgaW4gYWx3YXlzTWF0Y2giKSkpOwot
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgIHJldHVybiB7
IH07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNjA2LDI0ICs1OTYsMjcgQEAgUmVm
UHRyPEpTT046Ok9iamVjdD4gV2ViRHJpdmVyU2VydmljZTo6cHJvY2Vzc0NhcGFiaWxpdGllcyhj
b25zdCBKU09OOjpPYmplY3QmIHAKICAgICB9CiAKICAgICAvLyA2LiBGb3IgZWFjaCBmaXJzdCBt
YXRjaCBjYXBhYmlsaXRpZXMgY29ycmVzcG9uZGluZyB0byBhbiBpbmRleGVkIHByb3BlcnR5IGlu
IHZhbGlkYXRlZCBmaXJzdCBtYXRjaCBjYXBhYmlsaXRpZXMuCi0gICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGVycm9yU3RyaW5nOworICAgIFZlY3RvcjxDYXBhYmlsaXRpZXM+IG1hdGNoZWRDYXBh
YmlsaXRpZXNMaXN0OworICAgIG1hdGNoZWRDYXBhYmlsaXRpZXNMaXN0LnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkodmFsaWRhdGVkRmlyc3RNYXRjaENhcGFiaWxpdGllc0xpc3Quc2l6ZSgpKTsKICAg
ICBmb3IgKGF1dG8mIHZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBhYmlsaWVzIDogdmFsaWRhdGVkRmly
c3RNYXRjaENhcGFiaWxpdGllc0xpc3QpIHsKICAgICAgICAgLy8gNi4xLiBMZXQgbWVyZ2VkIGNh
cGFiaWxpdGllcyBiZSB0aGUgcmVzdWx0IG9mIHRyeWluZyB0byBtZXJnZSBjYXBhYmlsaXRpZXMg
d2l0aCByZXF1aXJlZCBjYXBhYmlsaXRpZXMgYW5kIGZpcnN0IG1hdGNoIGNhcGFiaWxpdGllcyBh
cyBhcmd1bWVudHMuCiAgICAgICAgIGF1dG8gbWVyZ2VkQ2FwYWJpbGl0aWVzID0gbWVyZ2VDYXBh
YmlsaXRpZXMoKnJlcXVpcmVkQ2FwYWJpbGl0aWVzLCAqdmFsaWRhdGVkRmlyc3RNYXRjaENhcGFi
aWxpZXMpOwotICAgICAgICBpZiAoIW1lcmdlZENhcGFiaWxpdGllcykgewotICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJv
ckNvZGU6OkludmFsaWRBcmd1bWVudCwgU3RyaW5nKCJTYW1lIGNhcGFiaWxpdHkgZm91bmQgaW4g
Zmlyc3RNYXRjaCBhbmQgYWx3YXlzTWF0Y2giKSkpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIH0KKwogICAgICAgICAvLyA2LjIuIExldCBtYXRjaGVkIGNhcGFiaWxpdGll
cyBiZSB0aGUgcmVzdWx0IG9mIHRyeWluZyB0byBtYXRjaCBjYXBhYmlsaXRpZXMgd2l0aCBtZXJn
ZWQgY2FwYWJpbGl0aWVzIGFzIGFuIGFyZ3VtZW50LgotICAgICAgICBhdXRvIG1hdGNoZWRDYXBh
YmlsaXRpZXMgPSBtYXRjaENhcGFiaWxpdGllcygqbWVyZ2VkQ2FwYWJpbGl0aWVzLCBlcnJvclN0
cmluZyk7Ci0gICAgICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzKSB7CisgICAgICAgIGlmIChh
dXRvIG1hdGNoZWRDYXBhYmlsaXRpZXMgPSBtYXRjaENhcGFiaWxpdGllcygqbWVyZ2VkQ2FwYWJp
bGl0aWVzKSkgewogICAgICAgICAgICAgLy8gNi4zLiBJZiBtYXRjaGVkIGNhcGFiaWxpdGllcyBp
cyBub3QgbnVsbCByZXR1cm4gbWF0Y2hlZCBjYXBhYmlsaXRpZXMuCi0gICAgICAgICAgICByZXR1
cm4gbWF0Y2hlZENhcGFiaWxpdGllczsKKyAgICAgICAgICAgIENhcGFiaWxpdGllcyBjYXBhYmls
aXRpZXM7CisgICAgICAgICAgICBwYXJzZUNhcGFiaWxpdGllcygqbWF0Y2hlZENhcGFiaWxpdGll
cywgY2FwYWJpbGl0aWVzKTsKKyAgICAgICAgICAgIG1hdGNoZWRDYXBhYmlsaXRpZXNMaXN0LnVu
Y2hlY2tlZEFwcGVuZChXVEZNb3ZlKGNhcGFiaWxpdGllcykpOwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0
OjpFcnJvckNvZGU6OkludmFsaWRBcmd1bWVudCwgZXJyb3JTdHJpbmcgPyBlcnJvclN0cmluZy52
YWx1ZSgpIDogU3RyaW5nKCJJbnZhbGlkIGNhcGFiaWxpdGllcyIpKSk7Ci0gICAgcmV0dXJuIG51
bGxwdHI7CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXNMaXN0LmlzRW1wdHkoKSkgeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6
OkVycm9yQ29kZTo6U2Vzc2lvbk5vdENyZWF0ZWQsIFN0cmluZygiRmFpbGVkIHRvIG1hdGNoIGNh
cGFiaWxpdGllcyIpKSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgcmV0dXJu
IG1hdGNoZWRDYXBhYmlsaXRpZXNMaXN0OwogfQogCiB2b2lkIFdlYkRyaXZlclNlcnZpY2U6Om5l
d1Nlc3Npb24oUmVmUHRyPEpTT046Ok9iamVjdD4mJiBwYXJhbWV0ZXJzLCBGdW5jdGlvbjx2b2lk
IChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNjM1LDIwICs2Mjgs
NDcgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpuZXdTZXNzaW9uKFJlZlB0cjxKU09OOjpPYmpl
Y3Q+JiYgcGFyYW1ldGVycywgRnVuY3Rpb248dm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8gbWF0Y2hlZENhcGFiaWxpdGllcyA9IHByb2Nlc3NDYXBhYmlsaXRpZXMoKnBhcmFt
ZXRlcnMsIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBpZiAoIW1hdGNoZWRDYXBhYmlsaXRpZXMp
CisgICAgYXV0byBtYXRjaGVkQ2FwYWJpbGl0aWVzTGlzdCA9IHByb2Nlc3NDYXBhYmlsaXRpZXMo
KnBhcmFtZXRlcnMsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBpZiAobWF0Y2hlZENhcGFiaWxp
dGllc0xpc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBSZXZlcnNlIHRo
ZSB2ZWN0b3IgdG8gYWx3YXlzIHRha2UgbGFzdCBpdGVtLgorICAgIG1hdGNoZWRDYXBhYmlsaXRp
ZXNMaXN0LnJldmVyc2UoKTsKKyAgICBjb25uZWN0VG9Ccm93c2VyKFdURk1vdmUobWF0Y2hlZENh
cGFiaWxpdGllc0xpc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQg
V2ViRHJpdmVyU2VydmljZTo6Y29ubmVjdFRvQnJvd3NlcihWZWN0b3I8Q2FwYWJpbGl0aWVzPiYm
IGNhcGFiaWxpdGllc0xpc3QsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGNhcGFiaWxpdGllc0xpc3QuaXNFbXB0eSgpKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJl
c3VsdDo6RXJyb3JDb2RlOjpTZXNzaW9uTm90Q3JlYXRlZCwgU3RyaW5nKCJGYWlsZWQgdG8gbWF0
Y2ggY2FwYWJpbGl0aWVzIikpKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIENhcGFi
aWxpdGllcyBjYXBhYmlsaXRpZXM7Ci0gICAgcGFyc2VDYXBhYmlsaXRpZXMoKm1hdGNoZWRDYXBh
YmlsaXRpZXMsIGNhcGFiaWxpdGllcyk7Ci0gICAgYXV0byBzZXNzaW9uSG9zdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8U2Vzc2lvbkhvc3Q+KFdURk1vdmUoY2FwYWJpbGl0aWVzKSk7CisgICAgYXV0byBz
ZXNzaW9uSG9zdCA9IHN0ZDo6bWFrZV91bmlxdWU8U2Vzc2lvbkhvc3Q+KGNhcGFiaWxpdGllc0xp
c3QudGFrZUxhc3QoKSk7CiAgICAgYXV0byogc2Vzc2lvbkhvc3RQdHIgPSBzZXNzaW9uSG9zdC5n
ZXQoKTsKLSAgICBzZXNzaW9uSG9zdFB0ci0+Y29ubmVjdFRvQnJvd3NlcihbdGhpcywgc2Vzc2lv
bkhvc3QgPSBXVEZNb3ZlKHNlc3Npb25Ib3N0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVycm9yKSBtdXRhYmxl
IHsKKyAgICBzZXNzaW9uSG9zdFB0ci0+Y29ubmVjdFRvQnJvd3NlcihbdGhpcywgY2FwYWJpbGl0
aWVzTGlzdCA9IFdURk1vdmUoY2FwYWJpbGl0aWVzTGlzdCksIHNlc3Npb25Ib3N0ID0gV1RGTW92
ZShzZXNzaW9uSG9zdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlm
IChlcnJvcikgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6
ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlNlc3Npb25Ob3RDcmVhdGVkLCBtYWtlU3Ry
aW5nKCJGYWlsZWQgdG8gY29ubmVjdCB0byBicm93c2VyOiAiLCBlcnJvci52YWx1ZSgpKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgY3JlYXRlU2Vzc2lvbihX
VEZNb3ZlKGNhcGFiaWxpdGllc0xpc3QpLCBXVEZNb3ZlKHNlc3Npb25Ib3N0KSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIFdlYkRyaXZlclNlcnZpY2U6
OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBz
dGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkhvc3Q+JiYgc2Vzc2lvbkhvc3QsIEZ1bmN0aW9uPHZvaWQg
KENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogc2Vz
c2lvbkhvc3RQdHIgPSBzZXNzaW9uSG9zdC5nZXQoKTsKKyAgICBzZXNzaW9uSG9zdFB0ci0+c3Rh
cnRBdXRvbWF0aW9uU2Vzc2lvbihbdGhpcywgY2FwYWJpbGl0aWVzTGlzdCA9IFdURk1vdmUoY2Fw
YWJpbGl0aWVzTGlzdCksIHNlc3Npb25Ib3N0ID0gV1RGTW92ZShzZXNzaW9uSG9zdCksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgY2FwYWJpbGl0
aWVzRGlkTWF0Y2gsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlcnJvck1lc3NhZ2UpIG11dGFibGUg
eworICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5rbm93
bkVycm9yLCBlcnJvck1lc3NhZ2UudmFsdWUoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGlmICghY2FwYWJpbGl0aWVzRGlkTWF0Y2gpIHsKKyAgICAgICAgICAg
IGNvbm5lY3RUb0Jyb3dzZXIoV1RGTW92ZShjYXBhYmlsaXRpZXNMaXN0KSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAg
ICAgUmVmUHRyPFNlc3Npb24+IHNlc3Npb24gPSBTZXNzaW9uOjpjcmVhdGUoV1RGTW92ZShzZXNz
aW9uSG9zdCkpOwogICAgICAgICBzZXNzaW9uLT5jcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4
dChbdGhpcywgc2Vzc2lvbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAocmVzdWx0LmlzRXJyb3IoKSkgewpAQCAtNjU4LDEzICs2NzgsMTAgQEAgdm9pZCBXZWJEcml2
ZXJTZXJ2aWNlOjpuZXdTZXNzaW9uKFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgcGFyYW1ldGVycywg
RnVuY3Rpb248dm8KIAogICAgICAgICAgICAgbV9zZXNzaW9uID0gV1RGTW92ZShzZXNzaW9uKTsK
IAotICAgICAgICAgICAgY29uc3QgYXV0byYgY2FwYWJpbGl0aWVzID0gbV9zZXNzaW9uLT5jYXBh
YmlsaXRpZXMoKTsKLSAgICAgICAgICAgIGlmIChjYXBhYmlsaXRpZXMudGltZW91dHMpCi0gICAg
ICAgICAgICAgICAgbV9zZXNzaW9uLT5zZXRUaW1lb3V0cyhjYXBhYmlsaXRpZXMudGltZW91dHMu
dmFsdWUoKSwgW10oQ29tbWFuZFJlc3VsdCYmKSB7IH0pOwotCiAgICAgICAgICAgICBSZWZQdHI8
SlNPTjo6T2JqZWN0PiByZXN1bHRPYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAg
ICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzZXNzaW9uSWQi
KSwgbV9zZXNzaW9uLT5pZCgpKTsKICAgICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IGNh
cGFiaWxpdGllc09iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgICAgICBj
b25zdCBhdXRvJiBjYXBhYmlsaXRpZXMgPSBtX3Nlc3Npb24tPmNhcGFiaWxpdGllcygpOwogICAg
ICAgICAgICAgaWYgKGNhcGFiaWxpdGllcy5icm93c2VyTmFtZSkKICAgICAgICAgICAgICAgICBj
YXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImJyb3dzZXJOYW1lIiks
IGNhcGFiaWxpdGllcy5icm93c2VyTmFtZS52YWx1ZSgpKTsKICAgICAgICAgICAgIGlmIChjYXBh
YmlsaXRpZXMuYnJvd3NlclZlcnNpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dl
YkRyaXZlclNlcnZpY2UuaCBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5oCmlu
ZGV4IGU2YjZmYmMzMmU2Li40MGUzN2VkMzg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZl
ci9XZWJEcml2ZXJTZXJ2aWNlLmgKKysrIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2
aWNlLmgKQEAgLTExMSwxNCArMTExLDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0YWtlRWxlbWVu
dFNjcmVlbnNob3QoUmVmUHRyPEpTT046Ok9iamVjdD4mJiwgRnVuY3Rpb248dm9pZCAoQ29tbWFu
ZFJlc3VsdCYmKT4mJik7CiAKICAgICBzdGF0aWMgQ2FwYWJpbGl0aWVzIHBsYXRmb3JtQ2FwYWJp
bGl0aWVzKCk7Ci0gICAgUmVmUHRyPEpTT046Ok9iamVjdD4gcHJvY2Vzc0NhcGFiaWxpdGllcyhj
b25zdCBKU09OOjpPYmplY3QmLCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYpIGNv
bnN0OworICAgIFZlY3RvcjxDYXBhYmlsaXRpZXM+IHByb2Nlc3NDYXBhYmlsaXRpZXMoY29uc3Qg
SlNPTjo6T2JqZWN0JiwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mKSBjb25zdDsK
ICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiB2YWxpZGF0ZWRDYXBhYmlsaXRpZXMoY29uc3QgSlNP
Tjo6T2JqZWN0JikgY29uc3Q7CiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gbWVyZ2VDYXBhYmls
aXRpZXMoY29uc3QgSlNPTjo6T2JqZWN0JiwgY29uc3QgSlNPTjo6T2JqZWN0JikgY29uc3Q7Ci0g
ICAgUmVmUHRyPEpTT046Ok9iamVjdD4gbWF0Y2hDYXBhYmlsaXRpZXMoY29uc3QgSlNPTjo6T2Jq
ZWN0Jiwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JikgY29uc3Q7CisgICAgUmVmUHRyPEpTT046Ok9i
amVjdD4gbWF0Y2hDYXBhYmlsaXRpZXMoY29uc3QgSlNPTjo6T2JqZWN0JikgY29uc3Q7CiAgICAg
Ym9vbCBwbGF0Zm9ybVZhbGlkYXRlQ2FwYWJpbGl0eShjb25zdCBTdHJpbmcmLCBjb25zdCBSZWZQ
dHI8SlNPTjo6VmFsdWU+JikgY29uc3Q7Ci0gICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHBsYXRm
b3JtTWF0Y2hDYXBhYmlsaXR5KGNvbnN0IFN0cmluZyYsIGNvbnN0IFJlZlB0cjxKU09OOjpWYWx1
ZT4mKSBjb25zdDsKKyAgICBib29sIHBsYXRmb3JtTWF0Y2hDYXBhYmlsaXR5KGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFJlZlB0cjxKU09OOjpWYWx1ZT4mKSBjb25zdDsKICAgICB2b2lkIHBhcnNlQ2Fw
YWJpbGl0aWVzKGNvbnN0IEpTT046Ok9iamVjdCYgZGVzaXJlZENhcGFiaWxpdGllcywgQ2FwYWJp
bGl0aWVzJikgY29uc3Q7CiAgICAgdm9pZCBwbGF0Zm9ybVBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgZGVzaXJlZENhcGFiaWxpdGllcywgQ2FwYWJpbGl0aWVzJikgY29uc3Q7
CisgICAgdm9pZCBjb25uZWN0VG9Ccm93c2VyKFZlY3RvcjxDYXBhYmlsaXRpZXM+JiYsIEZ1bmN0
aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOworICAgIHZvaWQgY3JlYXRlU2Vzc2lvbihW
ZWN0b3I8Q2FwYWJpbGl0aWVzPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvbkhvc3Q+JiYsIEZ1
bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwogICAgIGJvb2wgZmluZFNlc3Npb25P
ckNvbXBsZXRlV2l0aEVycm9yKEpTT046Ok9iamVjdCYsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRS
ZXN1bHQmJik+Jik7CiAKICAgICB2b2lkIGhhbmRsZVJlcXVlc3QoSFRUUFJlcXVlc3RIYW5kbGVy
OjpSZXF1ZXN0JiYsIEZ1bmN0aW9uPHZvaWQgKEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2Um
Jik+JiYgcmVwbHlIYW5kbGVyKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2
ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwIGIvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Np
b25Ib3N0R2xpYi5jcHAKaW5kZXggYjJiNDE0YzZlYjAuLjc5NWIwOTIxMzljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcAorKysgYi9Tb3VyY2Uv
V2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIldlYkRyaXZlclNlcnZpY2UuaCIKICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi9n
bGliL0dVbmlxdWVQdHIuaD4KIAogI2RlZmluZSBSRU1PVEVfSU5TUEVDVE9SX0NMSUVOVF9EQlVT
X0lOVEVSRkFDRSAib3JnLndlYmtpdC5SZW1vdGVJbnNwZWN0b3JDbGllbnQiCkBAIC0yMzQsMzcg
KzIzNSw0MyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpzZXR1cENvbm5lY3Rpb24oR1JlZlB0cjxHREJ1
c0Nvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAgICBnX2RidXNfY29ubmVjdGlvbl9yZWdpc3Rl
cl9vYmplY3QobV9kYnVzQ29ubmVjdGlvbi5nZXQoKSwgUkVNT1RFX0lOU1BFQ1RPUl9DTElFTlRf
T0JKRUNUX1BBVEgsIGludHJvc3BlY3Rpb25EYXRhLT5pbnRlcmZhY2VzWzBdLCAmc19pbnRlcmZh
Y2VWVGFibGUsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFN0
cmluZz4gU2Vzc2lvbkhvc3Q6Om1hdGNoQ2FwYWJpbGl0aWVzKEdWYXJpYW50KiBjYXBhYmlsaXRp
ZXMpCitzdGF0aWMgYm9vbCBtYXRjaEJyb3dzZXJPcHRpb25zKGNvbnN0IFN0cmluZyYgYnJvd3Nl
ck5hbWUsIGNvbnN0IFN0cmluZyYgYnJvd3NlclZlcnNpb24sIGNvbnN0IENhcGFiaWxpdGllcyYg
Y2FwYWJpbGl0aWVzKQogewotICAgIGNvbnN0IGNoYXIqIGJyb3dzZXJOYW1lOwotICAgIGNvbnN0
IGNoYXIqIGJyb3dzZXJWZXJzaW9uOwotICAgIGdfdmFyaWFudF9nZXQoY2FwYWJpbGl0aWVzLCAi
KCZzJnMpIiwgJmJyb3dzZXJOYW1lLCAmYnJvd3NlclZlcnNpb24pOwotCi0gICAgaWYgKG1fY2Fw
YWJpbGl0aWVzLmJyb3dzZXJOYW1lKSB7Ci0gICAgICAgIGlmIChtX2NhcGFiaWxpdGllcy5icm93
c2VyTmFtZS52YWx1ZSgpICE9IGJyb3dzZXJOYW1lKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoImV4cGVjdGVkIGJyb3dzZXJOYW1lICIsIG1fY2FwYWJpbGl0aWVzLmJyb3dzZXJOYW1l
LnZhbHVlKCksICIgYnV0IGdvdCAiLCBicm93c2VyTmFtZSk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IG1fY2FwYWJpbGl0aWVzLmJyb3dzZXJOYW1lID0gU3RyaW5nKGJyb3dzZXJOYW1lKTsKLQotICAg
IGlmIChtX2NhcGFiaWxpdGllcy5icm93c2VyVmVyc2lvbikgewotICAgICAgICBpZiAoIVdlYkRy
aXZlclNlcnZpY2U6OnBsYXRmb3JtQ29tcGFyZUJyb3dzZXJWZXJzaW9ucyhtX2NhcGFiaWxpdGll
cy5icm93c2VyVmVyc2lvbi52YWx1ZSgpLCBicm93c2VyVmVyc2lvbikpCi0gICAgICAgICAgICBy
ZXR1cm4gbWFrZVN0cmluZygicmVxdWVzdGVkIGJyb3dzZXJWZXJzaW9uIGlzICIsIG1fY2FwYWJp
bGl0aWVzLmJyb3dzZXJWZXJzaW9uLnZhbHVlKCksICIgYnV0IGFjdHVhbCB2ZXJzaW9uIGlzICIs
IGJyb3dzZXJWZXJzaW9uKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9jYXBhYmlsaXRpZXMuYnJv
d3NlclZlcnNpb24gPSBTdHJpbmcoYnJvd3NlclZlcnNpb24pOwotCi0gICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICBpZiAoY2FwYWJpbGl0aWVzLmJyb3dzZXJOYW1lICYmIGNhcGFiaWxpdGll
cy5icm93c2VyTmFtZS52YWx1ZSgpICE9IGJyb3dzZXJOYW1lKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoY2FwYWJpbGl0aWVzLmJyb3dzZXJWZXJzaW9uICYmICFXZWJEcml2ZXJT
ZXJ2aWNlOjpwbGF0Zm9ybUNvbXBhcmVCcm93c2VyVmVyc2lvbnMoY2FwYWJpbGl0aWVzLmJyb3dz
ZXJWZXJzaW9uLnZhbHVlKCksIGJyb3dzZXJWZXJzaW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU2Vzc2lvbkhvc3Q6Om1hdGNoQ2FwYWJp
bGl0aWVzKEdWYXJpYW50KiBjYXBhYmlsaXRpZXMpCit7CisgICAgY29uc3QgY2hhciogbmFtZTsK
KyAgICBjb25zdCBjaGFyKiB2ZXJzaW9uOworICAgIGdfdmFyaWFudF9nZXQoY2FwYWJpbGl0aWVz
LCAiKCZzJnMpIiwgJm5hbWUsICZ2ZXJzaW9uKTsKKworICAgIGF1dG8gYnJvd3Nlck5hbWUgPSBT
dHJpbmc6OmZyb21VVEY4KG5hbWUpOworICAgIGF1dG8gYnJvd3NlclZlcnNpb24gPSBTdHJpbmc6
OmZyb21VVEY4KHZlcnNpb24pOworICAgIGJvb2wgZGlkTWF0Y2ggPSBtYXRjaEJyb3dzZXJPcHRp
b25zKGJyb3dzZXJOYW1lLCBicm93c2VyVmVyc2lvbiwgbV9jYXBhYmlsaXRpZXMpOworICAgIG1f
Y2FwYWJpbGl0aWVzLmJyb3dzZXJOYW1lID0gYnJvd3Nlck5hbWU7CisgICAgbV9jYXBhYmlsaXRp
ZXMuYnJvd3NlclZlcnNpb24gPSBicm93c2VyVmVyc2lvbjsKKworICAgIHJldHVybiBkaWRNYXRj
aDsKIH0KIAotdm9pZCBTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBT
dHJpbmcmIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZCAoc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU2Vzc2lvbkhvc3Q6OnN0YXJ0QXV0b21hdGlvblNl
c3Npb24oRnVuY3Rpb248dm9pZCAoYm9vbCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9kYnVzQ29ubmVjdGlvbik7CiAgICAgQVNT
RVJUKCFtX3N0YXJ0U2Vzc2lvbkNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBtX3N0YXJ0U2Vzc2lv
bkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CisgICAgbV9z
ZXNzaW9uSUQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CiAgICAgZ19kYnVzX2Nvbm5l
Y3Rpb25fY2FsbChtX2RidXNDb25uZWN0aW9uLmdldCgpLCBudWxscHRyLAogICAgICAgICBJTlNQ
RUNUT1JfREJVU19PQkpFQ1RfUEFUSCwKICAgICAgICAgSU5TUEVDVE9SX0RCVVNfSU5URVJGQUNF
LAogICAgICAgICAiU3RhcnRBdXRvbWF0aW9uU2Vzc2lvbiIsCi0gICAgICAgIGdfdmFyaWFudF9u
ZXcoIihzKSIsIHNlc3Npb25JRC51dGY4KCkuZGF0YSgpKSwKKyAgICAgICAgZ192YXJpYW50X25l
dygiKHMpIiwgbV9zZXNzaW9uSUQudXRmOCgpLmRhdGEoKSksCiAgICAgICAgIG51bGxwdHIsIEdf
REJVU19DQUxMX0ZMQUdTX05PX0FVVE9fU1RBUlQsCiAgICAgICAgIC0xLCBtX2NhbmNlbGxhYmxl
LmdldCgpLCBbXShHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRl
ciB1c2VyRGF0YSkgewogICAgICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwpA
QCAtMjc1LDE0ICsyODIsMTMgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c3RhcnRBdXRvbWF0aW9uU2Vz
c2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgRnVuY3Rpb248dm9pZAogICAgICAgICAgICAg
YXV0byBzZXNzaW9uSG9zdCA9IHN0YXRpY19jYXN0PFNlc3Npb25Ib3N0Kj4odXNlckRhdGEpOwog
ICAgICAgICAgICAgaWYgKCFyZXN1bHRWYXJpYW50KSB7CiAgICAgICAgICAgICAgICAgYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2Uoc2Vzc2lvbkhvc3QtPm1fc3RhcnRTZXNz
aW9uQ29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFN0cmluZygiRmFpbGVkIHRvIHN0YXJ0IGF1dG9tYXRpb24gc2Vzc2lvbiIpKTsK
KyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSwgU3RyaW5nKCJGYWlsZWQg
dG8gc3RhcnQgYXV0b21hdGlvbiBzZXNzaW9uIikpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBlcnJvclN0cmluZyA9IHNlc3Npb25I
b3N0LT5tYXRjaENhcGFiaWxpdGllcyhyZXN1bHRWYXJpYW50LmdldCgpKTsKLSAgICAgICAgICAg
IGlmIChlcnJvclN0cmluZykgeworICAgICAgICAgICAgaWYgKCFzZXNzaW9uSG9zdC0+bWF0Y2hD
YXBhYmlsaXRpZXMocmVzdWx0VmFyaWFudC5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBhdXRv
IGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShzZXNzaW9uSG9zdC0+bV9zdGFydFNl
c3Npb25Db21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZXJyb3JTdHJpbmcpOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSwgdGhpcwpAQCAtMzI0LDcgKzMzMCw3IEBAIHZvaWQgU2Vzc2lv
bkhvc3Q6OnNldFRhcmdldExpc3QodWludDY0X3QgY29ubmVjdGlvbklELCBWZWN0b3I8VGFyZ2V0
PiYmIHRhcmdldExpCiAgICAgICAgIC0xLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBkYnVzQ29ubmVj
dGlvbkNhbGxBc3luY1JlYWR5Q2FsbGJhY2ssIG51bGxwdHIpOwogCiAgICAgYXV0byBzdGFydFNl
c3Npb25Db21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9zdGFydFNlc3Npb25Db21w
bGV0aW9uSGFuZGxlciwgbnVsbHB0cik7Ci0gICAgc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRs
ZXIoc3RkOjpudWxsb3B0KTsKKyAgICBzdGFydFNlc3Npb25Db21wbGV0aW9uSGFuZGxlcih0cnVl
LCBzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFNlc3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRvRnJv
bnRlbmQodWludDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRfdCB0YXJnZXRJRCwgY29uc3QgY2hh
ciogbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvZ3RrL1dlYkRyaXZlclNl
cnZpY2VHdGsuY3BwIGIvU291cmNlL1dlYkRyaXZlci9ndGsvV2ViRHJpdmVyU2VydmljZUd0ay5j
cHAKaW5kZXggMTkxMzQyZGQyMTcuLjBjNGQyNzQxNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
RHJpdmVyL2d0ay9XZWJEcml2ZXJTZXJ2aWNlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVy
L2d0ay9XZWJEcml2ZXJTZXJ2aWNlR3RrLmNwcApAQCAtODEsOSArODEsOSBAQCBib29sIFdlYkRy
aXZlclNlcnZpY2U6OnBsYXRmb3JtVmFsaWRhdGVDYXBhYmlsaXR5KGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgUmVmUAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gV2ViRHJpdmVyU2VydmljZTo6cGxhdGZvcm1NYXRjaENhcGFiaWxpdHkoY29uc3QgU3RyaW5n
JiwgY29uc3QgUmVmUHRyPEpTT046OlZhbHVlPiYpIGNvbnN0Citib29sIFdlYkRyaXZlclNlcnZp
Y2U6OnBsYXRmb3JtTWF0Y2hDYXBhYmlsaXR5KGNvbnN0IFN0cmluZyYsIGNvbnN0IFJlZlB0cjxK
U09OOjpWYWx1ZT4mKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHZvaWQgV2ViRHJpdmVyU2VydmljZTo6cGxhdGZvcm1QYXJzZUNhcGFi
aWxpdGllcyhjb25zdCBKU09OOjpPYmplY3QmIG1hdGNoZWRDYXBhYmlsaXRpZXMsIENhcGFiaWxp
dGllcyYgY2FwYWJpbGl0aWVzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci93
cGUvV2ViRHJpdmVyU2VydmljZVdQRS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3dwZS9XZWJEcml2
ZXJTZXJ2aWNlV1BFLmNwcAppbmRleCA2MDhjYjdjNzY2NC4uNTIzZThlNzcyNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJEcml2ZXIvd3BlL1dlYkRyaXZlclNlcnZpY2VXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJEcml2ZXIvd3BlL1dlYkRyaXZlclNlcnZpY2VXUEUuY3BwCkBAIC03NCw5ICs3NCw5
IEBAIGJvb2wgV2ViRHJpdmVyU2VydmljZTo6cGxhdGZvcm1WYWxpZGF0ZUNhcGFiaWxpdHkoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBSZWZQCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBXZWJEcml2ZXJTZXJ2aWNlOjpwbGF0Zm9ybU1hdGNoQ2FwYWJpbGl0
eShjb25zdCBTdHJpbmcmLCBjb25zdCBSZWZQdHI8SlNPTjo6VmFsdWU+JikgY29uc3QKK2Jvb2wg
V2ViRHJpdmVyU2VydmljZTo6cGxhdGZvcm1NYXRjaENhcGFiaWxpdHkoY29uc3QgU3RyaW5nJiwg
Y29uc3QgUmVmUHRyPEpTT046OlZhbHVlPiYpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpwbGF0
Zm9ybVBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxp
dGllcywgQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJE
cml2ZXJUZXN0cy9DaGFuZ2VMb2cgYi9XZWJEcml2ZXJUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjli
ODk3YzYxNmYuLmY5Mjk2NzQ0ZTc1IDEwMDY0NAotLS0gYS9XZWJEcml2ZXJUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvV2ViRHJpdmVyVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgt
MDEtMjUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFdlYkRyaXZlcjogdGVzdCBpbXBvcnRlZC93M2Mvd2ViZHJpdmVyL3Rlc3RzL3Nlc3Npb25z
L25ld19zZXNzaW9uL21lcmdlLnB5Ojp0ZXN0X21lcmdlX2Jyb3dzZXJOYW1lIGZhaWxzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE5ODUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgZXhwZWN0
YXRpb25zIGZvciBpbXBvcnRlZC93M2Mvd2ViZHJpdmVyL3Rlc3RzL3Nlc3Npb25zL25ld19zZXNz
aW9uL21lcmdlLnB5Ojp0ZXN0X21lcmdlX2Jyb3dzZXJOYW1lLgorCisgICAgICAgICogVGVzdEV4
cGVjdGF0aW9ucy5qc29uOgorCiAyMDE4LTAxLTI0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBXZWJEcml2ZXI6IHRlc3QgaW1wb3J0ZWQvdzNj
L3dlYmRyaXZlci90ZXN0cy9zZXNzaW9ucy9uZXdfc2Vzc2lvbi9tZXJnZS5weTo6dGVzdF9tZXJn
ZV9wbGF0Zm9ybU5hbWUgZmFpbHMKZGlmZiAtLWdpdCBhL1dlYkRyaXZlclRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMuanNvbiBiL1dlYkRyaXZlclRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMuanNvbgppbmRl
eCBmNTI3MDEzNDMzYS4uZTAxNjdiMjI3NWUgMTAwNjQ0Ci0tLSBhL1dlYkRyaXZlclRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMuanNvbgorKysgYi9XZWJEcml2ZXJUZXN0cy9UZXN0RXhwZWN0YXRpb25z
Lmpzb24KQEAgLTE5MSwxMyArMTkxLDYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0sCi0gICAgImltcG9ydGVkL3czYy93ZWJkcml2ZXIvdGVzdHMvc2Vzc2lvbnMvbmV3X3Nlc3Np
b24vbWVyZ2UucHkiOiB7Ci0gICAgICAgICJzdWJ0ZXN0cyI6IHsKLSAgICAgICAgICAgICJ0ZXN0
X21lcmdlX2Jyb3dzZXJOYW1lIjogewotICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHsiYWxs
IjogeyJzdGF0dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2IvMTgxOTg1In19Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9LAogICAgICJpbXBvcnRlZC93M2Mvd2ViZHJp
dmVyL3Rlc3RzL3Nlc3Npb25zL25ld19zZXNzaW9uL2ludmFsaWRfY2FwYWJpbGl0aWVzLnB5Ijog
ewogICAgICAgICAic3VidGVzdHMiOiB7CiAgICAgICAgICAgICAidGVzdF9pbnZhbGlkX3ZhbHVl
c1twcm94eS0xLWJvZHkwXSI6IHsK
</data>
<flag name="review"
          id="351217"
          type_id="1"
          status="+"
          setter="clopez"
    />
          </attachment>
      

    </bug>

</bugzilla>