<?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>157198</bug_id>
          
          <creation_ts>2016-04-29 12:56:46 -0700</creation_ts>
          <short_desc>Web Inspector: Issues inspecting the inspector, pausing on breakpoints causes content to not load</short_desc>
          <delta_ts>2016-04-29 18:46:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mattbaker</cc>
    
    <cc>msaboff</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1188755</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-04-29 12:56:46 -0700</bug_when>
    <thetext>* SUMMARY
Mysterious issues inspecting the inspector, pausing on breakpoints causes content to not load.

* STEPS TO REPRODUCE
1. Inspect &lt;http://bogojoker.com/shell/&gt;
2. Set a breakpoint on formatted easySlider.min.js:56:21 (&quot;if (autoplay)&quot;)
3. Select another resource in sidebar (facebox.js)
4. Reload
5. Inspect the inspector
6. inspector^2: Set breakpoint in TextEditor.prototype.revealPosition
7. inspector^1: Select breakpoint in sidebar to reveal its position
  =&gt; inspector^2 breakpoint triggers a few times, but ultimately continues
  =&gt; inspector^1 content never loads

* NOTES
Some logging and logging of protocol traffic is mysterious:

file:///Users/pecoraro/Build/Release/WebInspectorUI.framework/Resources/Models/SourceCode.js:113:20: CONSOLE LOG requestContent http://bogojoker.com/shell/js/easySlider.min.js
[native code]: CONSOLE LOG request: {&quot;id&quot;:94,&quot;method&quot;:&quot;Network.getResponseBody&quot;,&quot;params&quot;:{&quot;requestId&quot;:&quot;0.73&quot;}}
file:///Users/pecoraro/Build/Release/WebInspectorUI.framework/Resources/Models/SourceCode.js:113:20: CONSOLE LOG requestContent http://bogojoker.com/shell/js/easySlider.min.js
file:///Users/pecoraro/Build/Release/WebInspectorUI.framework/Resources/Views/TextEditor.js:441:20: CONSOLE LOG revealPosition - REVEAL
file:///Users/pecoraro/Build/Release/WebInspectorUI.framework/Resources/Views/TextEditor.js:433:24: CONSOLE LOG revealPosition - STASH
file:///Users/pecoraro/Build/Release/WebInspectorUI.framework/Resources/Views/TextEditor.js:441:20: CONSOLE LOG revealPosition - REVEAL
file:///Users/pecoraro/Build/Release/WebInspectorUI.framework/Resources/Models/GarbageCollection.js:32:23: CONSOLE ERROR

We never got a response for Network.getResponseBody. In fact, the promise is still pending within the Resource. How is this possible?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188757</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-04-29 12:57:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/26011049&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188809</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-04-29 15:20:44 -0700</bug_when>
    <thetext>I think I found the issue.

When the Web Inspector itself is paused but the Inspected Page is not paused, then when the Web Inspector Process goes to dispatch a message (evaluating script in the page) we fail.

Here is the chain of events:

    InspectorProcess
      -&gt; sendMessageToBackend( &quot;Network.getResponseBody&quot; )
        -&gt; send Messages::WebInspector::SendMessageToBackend to WebContentProcess

    InspectorProcess
      -&gt; PAUSE evaluating Web Inspector page JavaScript
        -&gt; Run Nested Run Loop

    WebContentProcess
      - receive Messages::WebInspector::SendMessageToBackend message
        -&gt; InspectorNetworkAgent::getResponseBody
          -&gt; InspectorBackendDispatcher::sendMessageToFrontend
            -&gt; WebInspector::sendMessageToFrontend (WebKit2 FrontendClient)
              -&gt; send Messages::WebInspectorUI::SendMessageToFrontend to InspectorProcess

    InspectorProcess* (in nested runloop)
      - receive Messages::WebInspectorUI::SendMessageToFrontend
        -&gt; WebInspectorUI::sendMessageToFrontend
          -&gt; WebInspectorFrontendAPIDispatcher::dispatchMessageAsync
            -&gt; ScriptController::executeScript
              -&gt; Cannot execute script, we are paused, the message NEVER gets sent

So, in this scenario, WebInspectorFrontendAPIDispatcher can queue up messages while the inspector page is paused (something that we don&apos;t normally expect).

This also sheds light on another possible issue of APIs (JSContext / WKWebView) attempting to evaluating JavaScript on a paused page will just have their scripts dropped on the floor. However, that has always been the case, so I&apos;m going to address that now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188905</commentid>
    <comment_count>3</comment_count>
      <attachid>277765</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-04-29 17:21:54 -0700</bug_when>
    <thetext>Created attachment 277765
[PATCH] Proposed Fix

Not going to commit-queue until I have tested a Debug build at least once. But this works.

I&apos;m not sure it is perfect (pause/unpause happens while stepping, so in theory you could pause inside the new evaluation in between statements), however in practice InspectorFrontendAPIDispatcher is adding to a queue, so it actually isn&apos;t a problem. And again, this is only for inspecting the inspector right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188906</commentid>
    <comment_count>4</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-04-29 17:26:45 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=277765&amp;action=review

&gt; Source/WebKit2/WebProcess/WebPage/WebInspectorFrontendAPIDispatcher.cpp:59
&gt; +    ASSERT(m_queue.isEmpty());

This assertion seems wrong. What if evaluating a dequeued expression caused us to hit a breakpoint and suspend?

&gt; Source/WebKit2/WebProcess/WebPage/WebInspectorFrontendAPIDispatcher.cpp:75
&gt; +    evaluateOrQueueExpression(makeString(&quot;InspectorFrontendAPI.dispatch([\&quot;&quot;, command, &quot;\&quot;])&quot;));

Nit: evaluateOrEnqueueExpression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188919</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-04-29 17:56:07 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=277765&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebInspectorFrontendAPIDispatcher.cpp:59
&gt; &gt; +    ASSERT(m_queue.isEmpty());
&gt; 
&gt; This assertion seems wrong. What if evaluating a dequeued expression caused
&gt; us to hit a breakpoint and suspend?

We don&apos;t appear to allow pausing when running when already nested. Or at least I was unable to (console.log worked, but hitting a breakpoint did not).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188942</commentid>
    <comment_count>6</comment_count>
      <attachid>277765</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-29 18:46:52 -0700</bug_when>
    <thetext>Comment on attachment 277765
[PATCH] Proposed Fix

Clearing flags on attachment: 277765

Committed r200276: &lt;http://trac.webkit.org/changeset/200276&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188943</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-29 18:46:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277765</attachid>
            <date>2016-04-29 17:21:54 -0700</date>
            <delta_ts>2016-04-29 18:46:52 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>queue-messages.patch</filename>
            <type>text/plain</type>
            <size>15677</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDlkODU2OGUuLjBmMjczNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA0LTI5ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSXNzdWVz
IGluc3BlY3RpbmcgdGhlIGluc3BlY3RvciwgcGF1c2luZyBvbiBicmVha3BvaW50cyBjYXVzZXMg
Y29udGVudCB0byBub3QgbG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU3MTk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjAxMTA0OT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkJh
Y2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UpOgorICAgICAgICBXaGlsZSBhdWRpdGluZyB0
aGUgY29kZSwgYWRkIGEgV1RGTW92ZS4KKwogMjAxNi0wNC0yOCAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgYm9vbCBwYXJhbWV0
ZXIgaW4gQ29kZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ci5jcHAKaW5kZXggMDZjM2MxNi4uYTFkZTYxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5j
cHAKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUmVzcG9u
c2UobG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgcgogICAgIC8vIFRo
ZSBKU09OLVJQQyAyLjAgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyB0aGF0IHRoZSAiZXJyb3IiIG1l
bWJlciBoYXZlIHRoZSB2YWx1ZSAnbnVsbCcKICAgICAvLyBpZiBubyBlcnJvciBvY2N1cnJlZCBk
dXJpbmcgYW4gaW52b2NhdGlvbiwgYnV0IHdlIGRvIG5vdCBpbmNsdWRlIGl0IGF0IGFsbC4KICAg
ICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXNwb25zZU1lc3NhZ2UgPSBJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOwotICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgi
cmVzdWx0IiksIHJlc3VsdCk7CisgICAgcmVzcG9uc2VNZXNzYWdlLT5zZXRPYmplY3QoQVNDSUlM
aXRlcmFsKCJyZXN1bHQiKSwgV1RGTW92ZShyZXN1bHQpKTsKICAgICByZXNwb25zZU1lc3NhZ2Ut
PnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJpZCIpLCByZXF1ZXN0SWQpOwogICAgIG1fZnJvbnRl
bmRSb3V0ZXItPnNlbmRSZXNwb25zZShyZXNwb25zZU1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBjMzdiNmI4Li5mZDQyYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTYtMDQtMjkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJc3N1ZXMgaW5zcGVjdGluZyB0aGUgaW5zcGVjdG9y
LCBwYXVzaW5nIG9uIGJyZWFrcG9pbnRzIGNhdXNlcyBjb250ZW50IHRvIG5vdCBsb2FkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcxOTgKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzI2MDExMDQ5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBvbmx5IGFmZmVjdHMgaW5z
cGVjdGluZyBhbiBpbnNwZWN0b3IuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnBhZ2VQYXVzZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnBhZ2VVbnBhdXNl
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQp
OgorICAgICAgICBJbmZvcm0gYSBmcm9udGVuZCBjbGllbnQgaWYgdGhlIGZyb250ZW5kIHBhZ2Ug
aXRzZWxmIHBhdXNlcy91bnBhdXNlcy4KKwogMjAxNi0wNC0yOCAgSm9hbm1hcmllIERpZ2dzICA8
amRpZ2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQVg6IFtBVEtdIEV4cG9zZSBzdWJzY3JpcHQg
YW5kIHN1cGVyc2NyaXB0IGZvcm1hdCBzdHlsZSBncm91cHMgdXNpbmcgQVRLX1JPTEVfU1VCU0NS
SVBUIGFuZCBBVEtfUk9MRV9TVVBFUlNDUklQVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggOTNiNzgzMC4uY2JmNWMxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xMTUsNiAr
MTE1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGVnYWN5UHJvZmls
ZXJFbmFibGVkKGJvb2wpOwogCiAgICAgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQo
KSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckNsaWVudDsgfQorICAgIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50KiBpbnNwZWN0b3JGcm9udGVuZENsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ7IH0KICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUFnZW50OyB9CiAKICAgICBib29sIGRldmVsb3BlckV4
dHJhc0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmgKaW5kZXggNWFhNDZlMC4uYTNhYzFiYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmgKQEAgLTcyLDYgKzcyLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluc3Bl
Y3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJikgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIHBh
Z2VQYXVzZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFnZVVucGF1c2VkKCkgeyB9CisKICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3Qg
U3RyaW5nJikgPSAwOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIGlzVW5kZXJU
ZXN0KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERl
YnVnU2VydmVyLmNwcAppbmRleCA2YmFjNWNjLi5iNGFmMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMzAsNiArMzAs
OCBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dD
dXN0b20uaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0x
NDIsNiArMTQ0LDEzIEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0
UGF1c2VkKFBhZ2UqIHBhZ2UsIGJvb2wgcGF1c2VkKQogCiAgICAgZm9yIChGcmFtZSogZnJhbWUg
PSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVy
c2VOZXh0KCkpCiAgICAgICAgIHNldEphdmFTY3JpcHRQYXVzZWQoZnJhbWUsIHBhdXNlZCk7CisK
KyAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIGZyb250ZW5kQ2xpZW50ID0gcGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3RvckZyb250ZW5kQ2xpZW50KCkpIHsKKyAgICAg
ICAgaWYgKHBhdXNlZCkKKyAgICAgICAgICAgIGZyb250ZW5kQ2xpZW50LT5wYWdlUGF1c2VkKCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZyb250ZW5kQ2xpZW50LT5wYWdlVW5wYXVzZWQo
KTsKKyAgICB9CiB9CiAKIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRKYXZhU2NyaXB0
UGF1c2VkKEZyYW1lKiBmcmFtZSwgYm9vbCBwYXVzZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpp
bmRleCA5MGZkYTNkLi5kYTUzZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSwyMiBAQAogMjAxNi0wNC0yOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29t
PgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IElzc3VlcyBpbnNwZWN0aW5nIHRoZSBpbnNwZWN0
b3IsIHBhdXNpbmcgb24gYnJlYWtwb2ludHMgY2F1c2VzIGNvbnRlbnQgdG8gbm90IGxvYWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzE5OAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjYwMTEwNDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rv
ckJhY2tlbmQuanM6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLl9z
ZW5kQ29tbWFuZFRvQmFja2VuZFdpdGhDYWxsYmFjayk6CisgICAgICAgIChJbnNwZWN0b3JCYWNr
ZW5kQ2xhc3MucHJvdG90eXBlLl9zZW5kQ29tbWFuZFRvQmFja2VuZEV4cGVjdGluZ1Byb21pc2Up
OgorICAgICAgICBXaGlsZSBhdWRpdGluZywgdXNlIHNpbXBsZXIgY2hlY2suCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1Byb3hpZXMvRm9ybWF0dGVyV29ya2VyUHJveHkuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRm9ybWF0dGVyV29ya2VyUHJveHkuY2FuRm9ybWF0KTogRGVsZXRlZC4K
KyAgICAgICAgV2hpbGUgYXVkaXRpbmcsIHJlbW92ZSBkZWFkIGNvZGUuCisKKzIwMTYtMDQtMjkg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBKdW1wIHRvIExpbmUgaW4gYXV0byBmb3JtYXR0ZWQgSmF2YVNjcmlwdCBkb2VzIG5v
dCB3b3JrIHRoZSBmaXJzdCB0aW1lCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTcxOTQKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2MDA4NDcxPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
SW5zcGVjdG9yQmFja2VuZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMKaW5kZXggMzQ3NDllNS4uOGI4ZjAzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5z
cGVjdG9yQmFja2VuZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpzCkBAIC0yMDAsNyArMjAwLDcgQEAgSW5zcGVj
dG9yQmFja2VuZENsYXNzID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENsYXNzCiAgICAgICAgICAg
ICAibWV0aG9kIjogY29tbWFuZC5xdWFsaWZpZWROYW1lLAogICAgICAgICB9OwogCi0gICAgICAg
IGlmIChPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKS5sZW5ndGgpCisgICAgICAgIGlmICghaXNFbXB0
eU9iamVjdChwYXJhbWV0ZXJzKSkKICAgICAgICAgICAgIG1lc3NhZ2VPYmplY3RbInBhcmFtcyJd
ID0gcGFyYW1ldGVyczsKIAogICAgICAgICBsZXQgcmVzcG9uc2VEYXRhID0ge2NvbW1hbmQsIGNh
bGxiYWNrfTsKQEAgLTIyMSw3ICsyMjEsNyBAQCBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MgPSBjbGFz
cyBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MKICAgICAgICAgICAgICJtZXRob2QiOiBjb21tYW5kLnF1
YWxpZmllZE5hbWUsCiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKE9iamVjdC5rZXlzKHBhcmFt
ZXRlcnMpLmxlbmd0aCkKKyAgICAgICAgaWYgKCFpc0VtcHR5T2JqZWN0KHBhcmFtZXRlcnMpKQog
ICAgICAgICAgICAgbWVzc2FnZU9iamVjdFsicGFyYW1zIl0gPSBwYXJhbWV0ZXJzOwogCiAgICAg
ICAgIGxldCByZXNwb25zZURhdGEgPSB7Y29tbWFuZH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm94aWVzL0Zvcm1hdHRlcldvcmtlclByb3h5Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJveGllcy9Gb3JtYXR0ZXJX
b3JrZXJQcm94eS5qcwppbmRleCA0ODhkMmY1Li44ZGU1MWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm94aWVzL0Zvcm1hdHRlcldvcmtlclByb3h5
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3hpZXMvRm9y
bWF0dGVyV29ya2VyUHJveHkuanMKQEAgLTQ1LDEwICs0NSw2IEBAIFdlYkluc3BlY3Rvci5Gb3Jt
YXR0ZXJXb3JrZXJQcm94eSA9IGNsYXNzIEZvcm1hdHRlcldvcmtlclByb3h5IGV4dGVuZHMgV2Vi
SW5zcGVjCiAgICAgICAgIHJldHVybiBGb3JtYXR0ZXJXb3JrZXJQcm94eS5pbnN0YW5jZTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgY2FuRm9ybWF0KG1pbWVUeXBlKQotICAgIHsKLSAgICB9Ci0KICAg
ICAvLyBBY3Rpb25zCiAKICAgICBmb3JtYXRKYXZhU2NyaXB0KHNvdXJjZVRleHQsIGluZGVudFN0
cmluZywgaW5jbHVkZVNvdXJjZU1hcERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTg3N2YxMC4uZDNhZDFm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA0LTI5ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSXNzdWVz
IGluc3BlY3RpbmcgdGhlIGluc3BlY3RvciwgcGF1c2luZyBvbiBicmVha3BvaW50cyBjYXVzZXMg
Y29udGVudCB0byBub3QgbG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU3MTk4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjAxMTA0OT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpy
ZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hl
cjo6ZnJvbnRlbmRMb2FkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVu
ZEFQSURpc3BhdGNoZXI6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JG
cm9udGVuZEFQSURpc3BhdGNoZXI6OnVuc3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6ZGlzcGF0Y2hDb21tYW5kKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpkaXNwYXRjaE1lc3Nh
Z2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0
Y2hlcjo6ZXZhbHVhdGVPclF1ZXVlRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6ZXZhbHVhdGVRdWV1ZWRFeHByZXNzaW9ucyk6
CisgICAgICAgIEF2b2lkIGV2YWx1YXRpbmcgZXhwcmVzc2lvbnMgd2hlbiB0aGUgcGFnZSBpcyBw
YXVzZWQuIEdlbmVyYWxpemUgdGhlCisgICAgICAgIG1lc3NhZ2UgcXVldWVpbmcgYW5kIGRpc3Bh
dGNoaW5nIGZvciBwYXVzZS9zdXNwZW5kIHRoYXQgd2UgYWxyZWFkeQorICAgICAgICBoYWQgZm9y
IHdhaXRpbmcgZm9yIHRoZSBmcm9udGVuZCBwYWdlIHRvIGJlIGxvYWRlZC4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclVJOjpwYWdlUGF1c2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OnBh
Z2VVbnBhdXNlZCk6CisgICAgICAgIFdoZW4gdGhlIGZyb250ZW5kIHBhZ2UgcGF1c2VzL3VucGF1
c2VzLCBzdXNwZW5kL3Jlc3VtZSB0aGUgZGlzcGF0Y2hlci4KKwogMjAxNi0wNC0yOCAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgUlRMIDxzZWxlY3Q+IHBvcHVwIG1l
bnUgaXMgaW4gdGhlIHdyb25nIGxvY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JGcm9udGVuZEFQ
SURpc3BhdGNoZXIuY3BwCmluZGV4IDkzMmMxYWMuLjUyNTc3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3Bh
dGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVk
ZSAiV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmgiCiAKICNpbmNsdWRlICJXZWJQ
YWdlLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0U3RhdGUuaD4KQEAgLTQyLDcgKzQxLDcgQEAg
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpXZWJJbnNwZWN0b3JGcm9udGVuZEFQ
SURpc3BhdGNoZXIoV2ViUGFnZSYgcGEKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyOjpyZXNldCgpCiB7CiAgICAgbV9mcm9udGVuZExvYWRlZCA9IGZhbHNlOwotCisgICAg
bV9zdXNwZW5kZWQgPSBmYWxzZTsKICAgICBtX3F1ZXVlLmNsZWFyKCk7CiB9CiAKQEAgLTUwLDQx
ICs0OSw3MCBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6ZnJvbnRl
bmRMb2FkZWQoKQogewogICAgIG1fZnJvbnRlbmRMb2FkZWQgPSB0cnVlOwogCi0gICAgZm9yIChj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24gOiBtX3F1ZXVlKQotICAgICAgICBtX3BhZ2UuY29yZVBh
Z2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNzaW9uKTsKKyAg
ICBldmFsdWF0ZVF1ZXVlZEV4cHJlc3Npb25zKCk7Cit9CiAKLSAgICBtX3F1ZXVlLmNsZWFyKCk7
Cit2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6c3VzcGVuZCgpCit7Cisg
ICAgQVNTRVJUKG1fZnJvbnRlbmRMb2FkZWQpOworICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOwor
ICAgIEFTU0VSVChtX3F1ZXVlLmlzRW1wdHkoKSk7CisKKyAgICBtX3N1c3BlbmRlZCA9IHRydWU7
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjp1bnN1c3BlbmQo
KQoreworICAgIEFTU0VSVChtX3N1c3BlbmRlZCk7CisKKyAgICBtX3N1c3BlbmRlZCA9IGZhbHNl
OworCisgICAgZXZhbHVhdGVRdWV1ZWRFeHByZXNzaW9ucygpOwogfQogCiB2b2lkIFdlYkluc3Bl
Y3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6ZGlzcGF0Y2hDb21tYW5kKGNvbnN0IFN0cmluZyYg
Y29tbWFuZCkKIHsKLSAgICBldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQobWFrZVN0cmluZygiSW5z
cGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2goW1wiIiwgY29tbWFuZCwgIlwiXSkiKSk7CisgICAg
ZXZhbHVhdGVPclF1ZXVlRXhwcmVzc2lvbihtYWtlU3RyaW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQ
SS5kaXNwYXRjaChbXCIiLCBjb21tYW5kLCAiXCJdKSIpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmRpc3BhdGNoQ29tbWFuZChjb25zdCBTdHJpbmcmIGNv
bW1hbmQsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQpCiB7Ci0gICAgZXZhbHVhdGVFeHByZXNzaW9u
T25Mb2FkKG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoKFtcIiIsIGNv
bW1hbmQsICJcIiwgXCIiLCBhcmd1bWVudCwgIlwiXSkiKSk7CisgICAgZXZhbHVhdGVPclF1ZXVl
RXhwcmVzc2lvbihtYWtlU3RyaW5nKCJJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaChbXCIi
LCBjb21tYW5kLCAiXCIsIFwiIiwgYXJndW1lbnQsICJcIl0pIikpOwogfQogCiB2b2lkIFdlYklu
c3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6ZGlzcGF0Y2hDb21tYW5kKGNvbnN0IFN0cmlu
ZyYgY29tbWFuZCwgYm9vbCBhcmd1bWVudCkKIHsKLSAgICBldmFsdWF0ZUV4cHJlc3Npb25Pbkxv
YWQobWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2goW1wiIiwgY29tbWFu
ZCwgIlwiLCAiLCBhcmd1bWVudCA/ICJ0cnVlIiA6ICJmYWxzZSIsICJdKSIpKTsKKyAgICBldmFs
dWF0ZU9yUXVldWVFeHByZXNzaW9uKG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmRp
c3BhdGNoKFtcIiIsIGNvbW1hbmQsICJcIiwgIiwgYXJndW1lbnQgPyAidHJ1ZSIgOiAiZmFsc2Ui
LCAiXSkiKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpk
aXNwYXRjaE1lc3NhZ2VBc3luYyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgZXZhbHVh
dGVFeHByZXNzaW9uT25Mb2FkKG1ha2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmRpc3Bh
dGNoTWVzc2FnZUFzeW5jKCIsIG1lc3NhZ2UsICIpIikpOworICAgIGV2YWx1YXRlT3JRdWV1ZUV4
cHJlc3Npb24obWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2hNZXNzYWdl
QXN5bmMoIiwgbWVzc2FnZSwgIikiKSk7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRB
UElEaXNwYXRjaGVyOjpldmFsdWF0ZUV4cHJlc3Npb25PbkxvYWQoY29uc3QgU3RyaW5nJiBleHBy
ZXNzaW9uKQordm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1YXRl
T3JRdWV1ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKQogewotICAgIGlmICht
X2Zyb250ZW5kTG9hZGVkKSB7Ci0gICAgICAgIEFTU0VSVChtX3F1ZXVlLmlzRW1wdHkoKSk7Cisg
ICAgaWYgKCFtX2Zyb250ZW5kTG9hZGVkIHx8IG1fc3VzcGVuZGVkKSB7CisgICAgICAgIG1fcXVl
dWUuYXBwZW5kKGV4cHJlc3Npb24pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNT
RVJUKG1fcXVldWUuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIW1fcGFnZS5jb3JlUGFnZSgpLT5t
YWluRnJhbWUoKS5zY3JpcHQoKS5pc1BhdXNlZCgpKTsKKyAgICBtX3BhZ2UuY29yZVBhZ2UoKS0+
bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChleHByZXNzaW9uKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmV2YWx1YXRlUXVldWVkRXhwcmVz
c2lvbnMoKQoreworICAgIGlmIChtX3F1ZXVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZm9yIChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24gOiBtX3F1ZXVlKSB7CisgICAgICAg
IEFTU0VSVCghbV9wYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnNjcmlwdCgpLmlzUGF1c2Vk
KCkpOwogICAgICAgICBtX3BhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXhl
Y3V0ZVNjcmlwdChleHByZXNzaW9uKTsKLSAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1f
cXVldWUuYXBwZW5kKGV4cHJlc3Npb24pOworICAgIG1fcXVldWUuY2xlYXIoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
LmgKaW5kZXggOTdiNzNkMS4uMWFlNzFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JGcm9udGVuZEFQ
SURpc3BhdGNoZXIuaApAQCAtMzUsMjIgKzM1LDI3IEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNz
IFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgV2ViSW5z
cGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyKFdlYlBhZ2UmIHBhZ2UpOworICAgIFdlYkluc3Bl
Y3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcihXZWJQYWdlJik7CiAKICAgICB2b2lkIHJlc2V0KCk7
CiAgICAgdm9pZCBmcm9udGVuZExvYWRlZCgpOwogCisgICAgdm9pZCBzdXNwZW5kKCk7CisgICAg
dm9pZCB1bnN1c3BlbmQoKTsKKwogICAgIHZvaWQgZGlzcGF0Y2hDb21tYW5kKGNvbnN0IFN0cmlu
ZyYgY29tbWFuZCk7CiAgICAgdm9pZCBkaXNwYXRjaENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21t
YW5kLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50KTsKICAgICB2b2lkIGRpc3BhdGNoQ29tbWFuZChj
b25zdCBTdHJpbmcmIGNvbW1hbmQsIGJvb2wgYXJndW1lbnQpOwogICAgIHZvaWQgZGlzcGF0Y2hN
ZXNzYWdlQXN5bmMoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IGV2YWx1YXRlRXhwcmVzc2lvbk9uTG9hZChjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24pOworICAg
IHZvaWQgZXZhbHVhdGVPclF1ZXVlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IGV2YWx1YXRlUXVldWVkRXhwcmVzc2lvbnMoKTsKIAogICAgIFdlYlBhZ2UmIG1fcGFnZTsKICAg
ICBEZXF1ZTxTdHJpbmc+IG1fcXVldWU7CiAgICAgYm9vbCBtX2Zyb250ZW5kTG9hZGVkIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fc3VzcGVuZGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggODg3ZWJhMy4uYzU5ZWY3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC0y
NTgsNiArMjU4LDE2IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9Gcm9udGVu
ZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgbV9mcm9udGVuZEFQSURpc3BhdGNoZXIuZGlz
cGF0Y2hNZXNzYWdlQXN5bmMobWVzc2FnZSk7CiB9CiAKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OnBh
Z2VQYXVzZWQoKQoreworICAgIG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLnN1c3BlbmQoKTsKK30K
Kwordm9pZCBXZWJJbnNwZWN0b3JVSTo6cGFnZVVucGF1c2VkKCkKK3sKKyAgICBtX2Zyb250ZW5k
QVBJRGlzcGF0Y2hlci51bnN1c3BlbmQoKTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JVSTo6c2Vu
ZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmIChtX2Jh
Y2tlbmRDb25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yVUkuaAppbmRleCAxNGUyNDYzLi4yM2RiZWE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaApAQCAtMTA0
LDYgKzEwNCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHBhZ2VQYXVzZWQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHBhZ2VVbnBhdXNlZCgpIG92ZXJyaWRlOworCiAgICAgYm9vbCBpc1VuZGVyVGVz
dCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdW5kZXJUZXN0OyB9CiAgICAgdW5zaWduZWQgaW5zcGVj
dGlvbkxldmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbnNwZWN0aW9uTGV2ZWw7IH0K
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>