<?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>127757</bug_id>
          
          <creation_ts>2014-01-27 19:50:25 -0800</creation_ts>
          <short_desc>Web Inspector: CRASH when debugger closes while paused and remote inspecting a JSContext</short_desc>
          <delta_ts>2014-02-14 19:02:12 -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>Web Inspector</component>
          <version>528+ (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="Joseph Pecoraro">joepeck</assigned_to>
          <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>mark.lam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>972750</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-27 19:50:25 -0800</bug_when>
    <thetext>* SUMMARY
JSContext hosting application crashes when a remote debugger disconnects when it was paused during inspection.

* STEPS TO REPRODUCE
1. Launch JSContext test application
2. Inspect JSContext from remote debugger
3. Trigger a breakpoint in the remote debugger
4. Close the remote debugger
  =&gt; CRASH

* NOTES
It looks like this is because of our nested runloop.

    1. Inspector is connected JSGlobalObjectInspectorController and JSGlobalObjectScriptDebugServer are created.
    2. Breakpoint is triggered, JSGlobalObjectInspectorController and JSGlobalObjectScriptDebugServer are below the nested runloop on the call stack.
    3. Debugger disconnected, while in the nested runloop we receive the disconnect method and decide to teardown the connection
          =&gt; destroy debugger agent, script debug server, and inspector controller
    4. Nested call stack resumes inside of a now destructed object =&gt; CRASH

WebCore gets around this debugging a WebCore::Page by always keeping InspectorController/PageDebuggerAgent/PageScriptDebugServer alive. It just connects/disconnects them.

It seems like we need to handle some special kind of connection closing when we are inside a nested runloop. This is very ugly unless we can just say &quot;continue now, and cleanup on the next runloop&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972751</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-01-27 19:50:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/15922131&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972752</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-27 19:52:08 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; It seems like we need to handle some special kind of connection closing when we are inside a nested runloop. This is very ugly unless we can just say &quot;continue now, and cleanup on the next runloop&quot;.

Or we could decide to lazily keep the JSGlobalObjectInspectorController object and some agents around. That could be somewhat useful. E.g. what if you wanted to store console messages, or $1..$9 inspector objects variables.

That would mean storing those objects on the JSGlobalObject instead of JSGlobalObjectRemoteDebuggable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980447</commentid>
    <comment_count>3</comment_count>
      <attachid>224109</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-13 14:17:32 -0800</bug_when>
    <thetext>Created attachment 224109
[PATCH] Proposed Fix

This addresses 2 known crashes:

    1. Crash when RWI paused and closing RWI
    2. Crash when RWI connected and JSGlobalObject is destroyed

This does mean that each JSGlobalObject allocated an InspectorController / Inspector{,Runtime,Debugger,Console} agent. But they do nothing unless you open an RWI connection to the inspector. Soon I will take advantage of the agents being available outside of a remote debug session and stash exception info.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981065</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-14 19:02:04 -0800</bug_when>
    <thetext>&lt;http://trac.webkit.org/changeset/164151&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224109</attachid>
            <date>2014-02-13 14:17:32 -0800</date>
            <delta_ts>2014-02-14 19:02:12 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>fix-crash.patch</filename>
            <type>text/plain</type>
            <size>15695</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDFiYmViMmYuLjVjNzliNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE0LTAyLTEzICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ1JBU0gg
d2hlbiBkZWJ1Z2dlciBjbG9zZXMgd2hpbGUgcGF1c2VkIGFuZCByZW1vdGUgaW5zcGVjdGluZyBh
IEpTQ29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI3NzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIHByb2JsZW0gd2FzIHRoYXQgdGhlIGxpZmV0aW1lIG9mIHRoZSBJbnNwZWN0b3JDb250
cm9sbGVyIGFuZCBhbGwgYWdlbnRzCisgICAgICAgIHdhcyB0aWVkIHRvIHRoZSByZW1vdGUgaW5z
cGVjdG9yIHNlc3Npb24uIFNvLCBpZiBhIHJlbW90ZSBpbnNwZWN0b3Igd2FzCisgICAgICAgIGRp
c2Nvbm5lY3RlZCB3aGlsZSBpbiB0aGUgbmVzdGVkIHJ1biBsb29wLCBldmVyeXRoaW5nIHdvdWxk
IGdldCB0b3JuCisgICAgICAgIGRvd24gYW5kIHdoZW4gZXhlY3V0aW9uIGNvbnRpbnVlZCBvdXQg
b2YgdGhlIG5lc3RlZCBydW5sb29wIHdlIHdvdWxkIGJlCisgICAgICAgIGJhY2sgaW4gdGhlIG9y
aWdpbmFsIGNhbGwgc3RhY2sgb2YgZGVzdHJveWVkIG9iamVjdHMuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBjaGFuZ2VzIHRoZSBsaWZldGltZSBvZiB0aGUgSW5zcGVjdG9yQ29udHJvbGxlciBhbmQg
YWdlbnRzIHRvCisgICAgICAgIHRoZSBKU0dsb2JhbE9iamVjdC4gVGhpcyB3YXkgdGhlIGFnZW50
cyBhcmUgYWx3YXlzIGFsaXZlLCBqdXN0IHRoZQorICAgICAgICBmcm9udGVuZCBhbmQgYmFja2Vu
ZCBjaGFubmVscyBhcmUgZGVzdHJveWVkIGFuZCByZWNyZWF0ZWQgZWFjaCByZW1vdGUKKyAgICAg
ICAgaW5zcGVjdG9yIHNlc3Npb24uIFRoaXMgbWF0Y2hlcyB0aGUgYWdlbnQgbGlmZXRpbWUgZm9y
IFdlYkNvcmUgYWdlbnRzLgorICAgICAgICBXZSBjYW4gYWxzbyBsYXRlciB0YWtlIGFkdmFudGFn
ZSBvZiB0aGUgYWdlbnRzIGJlaW5nIGFsaXZlIGJlZm9yZQorICAgICAgICBhbmQgYmV0d2VlbiBp
bnNwZWN0b3IgZGVidWcgc2Vzc2lvbnMgdG8gc3Rhc2ggZXhjZXB0aW9uIG1lc3NhZ2VzIHRvCisg
ICAgICAgIHBhc3Mgb24gdG8gYSBkZWJ1Z2dlciBpZiBhIGRlYnVnZ2VyIGlzIGNvbm5lY3RlZCBs
YXRlci4KKworICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICBD
bGVhbmVyIGluaXRpYWxpemF0aW9uIG9mIGFnZW50cy4gRWFzaWVyIHRvIGZvbGxvdy4KKworICAg
ICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nv
bm5lY3RGcm9udGVuZCk6CisgICAgICAgIE1vdmUgSW5qZWN0ZWRTY3JpcHQgZGlzY29ubmVjdGlv
biBvbmx5IG9uY2UgdGhlIGdsb2JhbCBvYmplY3QgaXMgZGVzdHJveWVkLgorICAgICAgICBUaGlz
IHdheSBpZiBhIGRldmVsb3BlciBoYXMgYXR0YWNoZWQgb25jZSBhbmQgaW5jbHVkZWQgYW4gaW5q
ZWN0ZWQgc2NyaXB0LAorICAgICAgICB3ZSB3aWxsIGtlZXAgaXQgYXJvdW5kIHdpdGggYW55IHN0
YXRlIGl0IG1pZ2h0IHdhbnQgdG8gcmVtZW1iZXIgdW50aWwKKyAgICAgICAgdGhlIGdsb2JhbCBv
YmplY3QgaXMgZGVzdHJveWVkLgorCisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlcjo6Z2xvYmFsT2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAgRGlz
Y29ubmVjdCBhZ2VudHMgYW5kIGluamVjdGVkIHNjcmlwdHMgd2hlbiB0aGUgZ2xvYmFsIG9iamVj
dCBpcyBkZXN0cm95ZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNj
b25uZWN0KToKKyAgICAgICAgTm93IHRoYXQgdGhlIGluamVjdGVkIHNjcmlwdCBtYW5hZ2VyIGlz
IHJldXNlZCBiZXR3ZWVuIHJlbW90ZQorICAgICAgICBpbnNwZWN0b3Igc2Vzc2lvbnMsIGRvbid0
IGNsZWFyIHRoZSBwb2ludGVyIG9uIGRpc2Nvbm5lY3QgY2FsbHMuCisgICAgICAgIFdlIG5vdyBv
bmx5IGNhbGwgdGhpcyBvbmNlIHdoZW4gdGhlIGdsb2JhbCBvYmplY3QgaXMgZ2V0dGluZworICAg
ICAgICBkZXN0cm95ZWQgYW55d2F5cyBzbyBpdCBkb2Vzbid0IG1hdHRlci4gQnV0IGlmIHdlIHdh
bnRlZCB0byBjYWxsCisgICAgICAgIGRpc2Nvbm5lY3QgbXVsdGlwbGUgdGltZXMsIGUuZy4gb25j
ZSBwZXIgc2Vzc2lvbiwgd2UgY291bGQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlz
cGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKToKKyAgICAgICAgSWYgdGhlIG9ubHkgbGlzdGVuZXIg
d2FzIHJlbW92ZWQgZHVyaW5nIHRoZSBuZXN0ZWQgcnVubG9vcCwgdGhlbiB3aGVuCisgICAgICAg
IHdlIGRpc3BhdGNoIGFuIGV2ZW50IGFmdGVyIHRoZSBuZXN0ZWQgcnVubG9vcCB0aGUgbGlzdGVu
ZXIgbGlzdCB3aWxsCisgICAgICAgIGJlIGVtcHR5LiBJbnN0ZWFkIG9mIGFzc2VydGluZywganVz
dCBwYXNzIGJ5IGFuIGVtcHR5IGxpc3QuCisKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjppbnNwZWN0b3JDb250cm9sbGVy
KToKKyAgICAgICAgVGllIHRoZSBpbnNwZWN0b3IgY29udHJvbGxlciBsaWZldGltZSB0byB0aGUg
SlNHbG9iYWxPYmplY3QuCisKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgQ3JlYXRlIHRoZSBpbnNwZWN0
b3IgY29udHJvbGxlciwgYW5kIGVhZ2VybHkgc2lnbmFsIHRlYXJkb3duCisgICAgICAgIGluIGRl
c3RydWN0aW9uLgorCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6Y29ubmVjdCk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzY29ubmVjdCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250
ZW5kKToKKyAgICAgICAgU2ltcGxpZnkgYnkgdXNpbmcgdGhlIGluc3BlY3RvciBjb250cm9sbGVy
IG9uIEpTR2xvYmFsT2JqZWN0LgorCiAyMDE0LTAyLTEzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJv
ZmZAYXBwbGUuY29tPgogCiAgICAgICAgIENTdGFjayBCcmFuY2g6IFZNOjpjdXJyZW50UmV0dXJu
VGh1bmtQQyBhcHBlYXJzIHRvIGJlIHVudXNlZCBhbmQgc2hvdWxkIGJlIHJlbW92ZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmNwcAppbmRleCA3MmQyMGRmLi5iOTRiZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBA
IC02MCw3ICs2MCw2IEBAIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6fkluamVjdGVkU2NyaXB0TWFu
YWdlcigpCiB2b2lkIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY29ubmVjdCgpCiB7CiAgICAg
ZGlzY2FyZEluamVjdGVkU2NyaXB0cygpOwotICAgIG1faW5qZWN0ZWRTY3JpcHRIb3N0ID0gbnVs
bHB0cjsKIH0KIAogSW5qZWN0ZWRTY3JpcHRIb3N0KiBJbmplY3RlZFNjcmlwdE1hbmFnZXI6Omlu
amVjdGVkU2NyaXB0SG9zdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKaW5kZXggNzVkYmRiNy4uNGRlYzk5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcApAQCAtNDgsMjEgKzQ4LDE2IEBAIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFsT2Jq
CiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPEluamVjdGVk
U2NyaXB0TWFuYWdlcj4oKnRoaXMsIEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQogICAg
ICwgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwobnVsbHB0cikKIHsKLSAgICBtX2FnZW50cy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBZ2VudD4oKSk7Ci0KLSAgICBhdXRvIHJ1
bnRpbWVBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RSdW50aW1lQWdl
bnQ+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX2dsb2JhbE9iamVjdCk7Ci0gICAg
SW5zcGVjdG9yUnVudGltZUFnZW50KiBydW50aW1lQWdlbnQgPSBydW50aW1lQWdlbnRQdHIuZ2V0
KCk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bW92ZShydW50aW1lQWdlbnRQdHIpKTsKLQot
ICAgIGF1dG8gY29uc29sZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVj
dENvbnNvbGVBZ2VudD4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCkpOwotICAgIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gY29uc29sZUFnZW50UHRyLmdldCgpOwot
ICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1vdmUoY29uc29sZUFnZW50UHRyKSk7Ci0KLSAgICBh
dXRvIGRlYnVnZ2VyQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0RGVi
dWdnZXJBZ2VudD4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIG1fZ2xvYmFsT2JqZWN0
LCBjb25zb2xlQWdlbnQpOwotICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdl
bnQgPSBkZWJ1Z2dlckFnZW50UHRyLmdldCgpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1v
dmUoZGVidWdnZXJBZ2VudFB0cikpOworICAgIGF1dG8gcnVudGltZUFnZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudD4obV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIuZ2V0KCksIG1fZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQ+KG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmdldCgpKTsKKyAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudD4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0
KCksIG1fZ2xvYmFsT2JqZWN0LCBjb25zb2xlQWdlbnQuZ2V0KCkpOwogCiAgICAgcnVudGltZUFn
ZW50LT5zZXRTY3JpcHREZWJ1Z1NlcnZlcigmZGVidWdnZXJBZ2VudC0+c2NyaXB0RGVidWdTZXJ2
ZXIoKSk7CisKKyAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JB
Z2VudD4oKSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bW92ZShydW50aW1lQWdlbnQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptb3ZlKGNvbnNvbGVBZ2VudCkpOworICAgIG1fYWdl
bnRzLmFwcGVuZChzdGQ6Om1vdmUoZGVidWdnZXJBZ2VudCkpOwogfQogCiBKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6On5KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIo
KQpAQCAtNzAsNiArNjUsMTMgQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjp+
SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKCkKICAgICBtX2FnZW50cy5kaXNjYXJk
QWdlbnRzKCk7CiB9CiAKK3ZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpn
bG9iYWxPYmplY3REZXN0cm95ZWQoKQoreworICAgIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0
b3JEaXNjb25uZWN0UmVhc29uOjpJbnNwZWN0ZWRUYXJnZXREZXN0cm95ZWQpOworCisgICAgbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXItPmRpc2Nvbm5lY3QoKTsKK30KKwogdm9pZCBKU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkKIHsKICAgICBBU1NFUlQoIW1faW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKTsKQEAgLTkxLDggKzkzLDYgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0UmUK
ICAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLT5jbGVhckZyb250ZW5kKCk7CiAgICAg
bV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jbGVhcigpOwogICAgIG1faW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsID0gbnVsbHB0cjsKLQotICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5k
aXNjb25uZWN0KCk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggNGI0MmIyOS4uMzc3ZjQwZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC01Niw2ICs1Niw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JEaXNjb25uZWN0
UmVhc29uIHJlYXNvbik7CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29u
c3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIGdsb2JhbE9iamVjdERlc3Ryb3llZCgpOworCiAgICAg
dmlydHVhbCBib29sIGRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGNhbkFjY2Vzc0luc3BlY3RlZFNjcmlwdFN0
YXRlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgSW5zcGVjdG9yRnVuY3Rpb25DYWxsSGFuZGxlciBmdW5jdGlvbkNhbGxIYW5kbGVy
KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGU0NDYwOWQuLjEyZGJhZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwCkBAIC0yNzksOCArMjc5LDggQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0
Y2hGdW5jdGlvblRvTGlzdGVuZXJzKEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjawogICAgIFRl
bXBvcmFyeUNoYW5nZTxib29sPiBjaGFuZ2UobV9jYWxsaW5nTGlzdGVuZXJzLCB0cnVlKTsKIAog
ICAgIGlmIChMaXN0ZW5lclNldCogbGlzdGVuZXJzID0gZ2V0TGlzdGVuZXJzRm9yR2xvYmFsT2Jq
ZWN0KGdsb2JhbE9iamVjdCkpIHsKLSAgICAgICAgQVNTRVJUKCFsaXN0ZW5lcnMtPmlzRW1wdHko
KSk7Ci0gICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygqbGlzdGVuZXJzLCBjYWxs
YmFjayk7CisgICAgICAgIGlmICghbGlzdGVuZXJzLT5pc0VtcHR5KCkpCisgICAgICAgICAgICBk
aXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoKmxpc3RlbmVycywgY2FsbGJhY2spOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDZhYzQ3N2MuLjNkZmFhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTcsMTMgKzcsMTMgQEAKICAqIGFyZSBt
ZXQ6CiAgKgogICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKICAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KICAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCiAgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4gCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCiAgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclByb3RvdHlw
ZS5oIgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5j
dGlvbi5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrQ29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0NhbGxiYWNrT2JqZWN0LmgiCkBAIC0xMDAsNyArMTAxLDYgQEAKICNpbmNsdWRlICJPYmpDQ2Fs
bGJhY2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiT2JqZWN0UHJvdG90eXBlLmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IlBhcnNlckVycm9yLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJSZWdFeHBNYXRjaGVzQXJyYXkuaCIKQEAgLTEyNCw3ICsxMjQsNyBAQAogCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgi
Ci0jaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9yLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQpA
QCAtMTcxLDYgKzE3MSwxMCBAQCBKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3QoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgR2xvYmFsT2JqZWN0TQogCiBKU0dsb2JhbE9i
amVjdDo6fkpTR2xvYmFsT2JqZWN0KCkKIHsKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
KyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmdsb2JhbE9iamVjdERlc3Ryb3llZCgpOworI2Vu
ZGlmCisKICAgICBpZiAobV9kZWJ1Z2dlcikKICAgICAgICAgbV9kZWJ1Z2dlci0+ZGV0YWNoKHRo
aXMsIERlYnVnZ2VyOjpHbG9iYWxPYmplY3RJc0Rlc3RydWN0aW5nKTsKIApAQCAtMTg0LDcgKzE4
OCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogfQogCiB2
b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXRHbG9iYWxUaGlzKFZNJiB2bSwgSlNPYmplY3QqIGdsb2Jh
bFRoaXMpCi17IAorewogICAgIG1fZ2xvYmFsVGhpcy5zZXQodm0sIHRoaXMsIGdsb2JhbFRoaXMp
OwogfQogCkBAIC0xOTgsNiArMjAyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChKU09i
amVjdCogdGhpc1ZhbHVlKQogICAgIG1fZGVidWdnZXIgPSAwOwogCiAjaWYgRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpOwog
ICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlPigqdGhpcyk7CiAgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5pbml0KCk7
CiAgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5zZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKHRy
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
aW5kZXggNmU5NDkyOS4uODBlYTcwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC00Niw2ICs0NiwxMCBAQAogc3RydWN0IE9wYXF1ZUpT
Q2xhc3M7CiBzdHJ1Y3QgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOwogCituYW1lc3BhY2UgSW5z
cGVjdG9yIHsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjsKK30KKwog
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFycmF5UHJvdG90eXBlOwpAQCAtMjMzLDYgKzIzNyw3
IEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisg
ICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyPiBtX2luc3BlY3RvckNvbnRyb2xsZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZT4gbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlOwogI2VuZGlmCiAKQEAg
LTQzMCw2ICs0MzUsMTAgQEAgcHVibGljOgogICAgIElucHV0Q3Vyc29yJiBpbnB1dEN1cnNvcigp
IGNvbnN0IHsgcmV0dXJuICptX2lucHV0Q3Vyc29yOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQorICAgIEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1faW5zcGVj
dG9yQ29udHJvbGxlci5nZXQoKTsgfQorI2VuZGlmCisKICAgICB2b2lkIHNldE5hbWUoY29uc3Qg
U3RyaW5nJik7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1l
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCmluZGV4IDJiODk1MDcuLmM3ODk5NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlLmNwcApAQCAtNDMsMTIgKzQzLDYgQEAgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxl
OjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
IHsKIH0KIAotSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjp+SlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlKCkKLXsKLSAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQotICAgICAgICBkaXNjb25u
ZWN0SW50ZXJuYWwoSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVz
dHJveWVkKTsKLX0KLQogU3RyaW5nIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZTo6bmFtZSgpIGNv
bnN0CiB7CiAgICAgU3RyaW5nIG5hbWUgPSBtX2dsb2JhbE9iamVjdC5uYW1lKCk7CkBAIC01OSwy
OSArNTMsMjEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmNvbm5lY3QoSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwKIHsKICAgICBBUElFbnRyeVNoaW0g
ZW50cnlTaGltKCZtX2dsb2JhbE9iamVjdC52bSgpKTsKIAotICAgIEFTU0VSVCghbV9pbnNwZWN0
b3JDb250cm9sbGVyKTsKLSAgICBtX2luc3BlY3RvckNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyPihtX2dsb2Jh
bE9iamVjdCk7Ci0gICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jb25uZWN0RnJvbnRlbmQoZnJv
bnRlbmRDaGFubmVsKTsKKyAgICBtX2dsb2JhbE9iamVjdC5pbnNwZWN0b3JDb250cm9sbGVyKCku
Y29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlOjpkaXNjb25uZWN0KCkKIHsKLSAgICBkaXNjb25uZWN0SW50ZXJuYWwoSW5z
cGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdG9yRGVzdHJveWVkKTsKLX0KLQotdm9pZCBK
U0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmRpc2Nvbm5lY3RJbnRlcm5hbChJbnNwZWN0b3JEaXNj
b25uZWN0UmVhc29uIHJlYXNvbikKLXsKICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKCZtX2ds
b2JhbE9iamVjdC52bSgpKTsKIAotICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGlzY29ubmVj
dEZyb250ZW5kKHJlYXNvbik7Ci0gICAgbV9pbnNwZWN0b3JDb250cm9sbGVyID0gbnVsbHB0cjsK
KyAgICBtX2dsb2JhbE9iamVjdC5pbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzY29ubmVjdEZyb250
ZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb246Okluc3BlY3RvckRlc3Ryb3llZCk7CiB9CiAK
IHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3Rl
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIEFQSUVudHJ5U2hpbSBlbnRy
eVNoaW0oJm1fZ2xvYmFsT2JqZWN0LnZtKCkpOwogCi0gICAgbV9pbnNwZWN0b3JDb250cm9sbGVy
LT5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZSk7CisgICAgbV9nbG9iYWxPYmpl
Y3QuaW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChtZXNz
YWdlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oCmluZGV4IGNmM2Vm
MWUuLjlmNGI2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEpT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZSBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6OlJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FiCiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlKTsKIHB1YmxpYzoKICAgICBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUoSlNHbG9i
YWxPYmplY3QmKTsKLSAgICB+SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlKCk7CisgICAgfkpTR2xv
YmFsT2JqZWN0RGVidWdnYWJsZSgpIHsgfQogCiAgICAgdmlydHVhbCBJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGU6OkRlYnVnZ2FibGVUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGU6OkphdmFTY3Jp
cHQ7IH0KIApAQCAtNTYsMTAgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGRpc2Nvbm5lY3RJbnRlcm5hbChJbnNwZWN0b3I6
Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKTsKLQogICAgIEpTR2xvYmFsT2JqZWN0
JiBtX2dsb2JhbE9iamVjdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpKU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI+IG1faW5zcGVjdG9yQ29udHJvbGxlcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>
<flag name="review"
          id="248196"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>