<?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>128282</bug_id>
          
          <creation_ts>2014-02-05 16:49:44 -0800</creation_ts>
          <short_desc>IDB: storage/indexeddb/mozilla/clear.html fails</short_desc>
          <delta_ts>2014-02-06 09:38:01 -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>WebKit2</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>977137</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-05 16:49:44 -0800</bug_when>
    <thetext>IDB: storage/indexeddb/mozilla/clear.html fails

Crashes due to an assert.

ASSERTION FAILED: m_state == Unused || m_state == Running
/Volumes/Data/git/OpenSource/Source/WebCore/Modules/indexeddb/IDBTransactionBackend.cpp(217) : void WebCore::IDBTransactionBackend::commit()
1   0x110f656c0 WTFCrash
2   0x112f6c080 WebCore::IDBTransactionBackend::commit()
3   0x1139a0bf9 WebCore::IDBDatabaseBackend::commit(long long)
4   0x113436454 WebCore::IDBTransaction::setActive(bool)
5   0x113856ba6 WebCore::IDBPendingTransactionMonitor::deactivateNewTransactions()
6   0x112f62d39 WebCore::JSMainThreadExecState::didLeaveScriptContext()
7   0x112cdfb8f WebCore::JSMainThreadExecState::~JSMainThreadExecState()
8   0x112cdfae5 WebCore::JSMainThreadExecState::~JSMainThreadExecState()
9   0x112cdfa3f WebCore::JSMainThreadExecState::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;)
10  0x112e5b1e4 WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*)
11  0x1126e43d1 WebCore::EventTarget::fireEventListeners(WebCore::Event*, WebCore::EventTargetData*, WTF::Vector&lt;WebCore::RegisteredEventListener, 1ul, WTF::CrashOnOverflow&gt;&amp;)
12  0x1126e3d1e WebCore::EventTarget::fireEventListeners(WebCore::Event*)
13  0x112258b89 WebCore::IDBEventDispatcher::dispatch(WebCore::Event*, WTF::Vector&lt;WTF::RefPtr&lt;WebCore::EventTarget&gt;, 0ul, WTF::CrashOnOverflow&gt;&amp;)
14  0x113b0769d WebCore::IDBRequest::dispatchEvent(WTF::PassRefPtr&lt;WebCore::Event&gt;)
15  0x112b06807 WebCore::IDBOpenDBRequest::dispatchEvent(WTF::PassRefPtr&lt;WebCore::Event&gt;)
16  0x112b0684c non-virtual thunk to WebCore::IDBOpenDBRequest::dispatchEvent(WTF::PassRefPtr&lt;WebCore::Event&gt;)
17  0x112538524 WebCore::DocumentEventQueue::dispatchEvent(WebCore::Event&amp;)
18  0x112538404 WebCore::DocumentEventQueue::pendingEventTimerFired()
19  0x11253c202 WebCore::DocumentEventQueue::Timer::fired()
20  0x113c259dc WebCore::ThreadTimers::sharedTimerFiredInternal()
21  0x113c25699 WebCore::ThreadTimers::sharedTimerFired()
22  0x1139556c3 WebCore::timerFired(__CFRunLoopTimer*, void*)
23  0x7fff90da7724 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
24  0x7fff90da725f __CFRunLoopDoTimer
25  0x7fff90e1876a __CFRunLoopDoTimers
26  0x7fff90d62aa5 __CFRunLoopRun
27  0x7fff90d62275 CFRunLoopRunSpecific
28  0x7fff90fd1f0d RunCurrentEventLoopInMode
29  0x7fff90fd1cb7 ReceiveNextEventCommon
30  0x7fff90fd1abc _BlockUntilNextEventMatchingListInModeWithFilter
31  0x7fff91a3028e _DPSNextEvent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977140</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-05 16:51:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/15996653&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977161</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-05 17:30:46 -0800</bug_when>
    <thetext>The ASSERTs were simply wrong in our multi-process universe, so stopping the crashing was a matter of updating the asserts.

The test is outdated.  It tests for a success condition no longer allowed for by the spec.

In updating the test for the current spec I uncovered another correctness bug (WebKit current gives NULL whereas the spec calls for UNDEFINED)

Uploading the current patch in progress so I can grab from a different machine later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977162</commentid>
    <comment_count>3</comment_count>
      <attachid>223283</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-05 17:31:51 -0800</bug_when>
    <thetext>Created attachment 223283
Current patch (still has a layout test bug, so not ready for review/landing)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977163</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-05 17:32:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/15997155&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977264</commentid>
    <comment_count>5</comment_count>
      <attachid>223313</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-05 23:42:51 -0800</bug_when>
    <thetext>Created attachment 223313
Patch v1 - Enable the test, update it to current spec, and make it pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977355</commentid>
    <comment_count>6</comment_count>
      <attachid>223313</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-02-06 08:39:59 -0800</bug_when>
    <thetext>Comment on attachment 223313
Patch v1 - Enable the test, update it to current spec, and make it pass.

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

r=me, but cq- to consider the question about converting a RefPtr&lt;IDBKey&gt; to a bool, and whether to use &quot;!!&quot; syntax for pointer conversion to bool.

&gt; Source/WebCore/ChangeLog:10
&gt; +        Update the value deserializer to take into account whether or not there was an IDBKey

Nit: Can haz period?

&gt; Source/WebCore/ChangeLog:16
&gt; +        * Modules/indexeddb/IDBRequest.cpp:
&gt; +        (WebCore::IDBRequest::onSuccess): Call the new form of deserializeIDBValueBuffer

Ditto.

&gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:290
&gt; -    Deprecated::ScriptValue value = deserializeIDBValueBuffer(requestState(), backend-&gt;valueBuffer());
&gt; +    Deprecated::ScriptValue value = deserializeIDBValueBuffer(requestState(), backend-&gt;valueBuffer(), key);

Technically, shouldn&apos;t this be &quot;key.get()&quot; to match the similar call below?  And would &quot;!!key.get()&quot; be clearer that you&apos;re converting a pointer into a bool?

&gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:421
&gt; -    Deprecated::ScriptValue value = deserializeIDBValueBuffer(requestState(), buffer);
&gt; +    Deprecated::ScriptValue value = deserializeIDBValueBuffer(requestState(), buffer, key.get());

Would it be clearer to use &quot;!!key.get()&quot; here instead to show you&apos;re converting a pointer into a bool?

&gt; Source/WebCore/bindings/js/IDBBindingUtilities.cpp:311
&gt; +    // If the key doesn&apos;t exist, then the value must be undefined (as opposed to null)

Nit: Plz add period.

&gt; Source/WebCore/bindings/js/IDBBindingUtilities.cpp:313
&gt; +        // We either shouldn&apos;t have a buffer or it should be of size 0

Nit: Add period.

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:104
&gt; +    const char* modeString;

Should probably initialize this to NULL:

const char* modeString = NULL;

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/SQLiteIDBTransaction.cpp:70
&gt; +    // It&apos;s okay to not have a SQLite transaction or not have started it yet because its okay for a WebProcess

Typo:  &quot;its&quot; =&gt; &quot;it&apos;s&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977386</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-06 09:32:10 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 223313 [details])
&gt;
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBRequest.cpp:290
&gt; &gt; -    Deprecated::ScriptValue value = deserializeIDBValueBuffer(requestState(), backend-&gt;valueBuffer());
&gt; &gt; +    Deprecated::ScriptValue value = deserializeIDBValueBuffer(requestState(), backend-&gt;valueBuffer(), key);
&gt; 
&gt; Technically, shouldn&apos;t this be &quot;key.get()&quot; to match the similar call below? 

I guess the reason I wrote them differently is because this one is a RefPtr whereas the key.get() below is a PassRefPtr.  That said, they both have unspecifiedbooltype operators declared, so I&apos;m not sure why I treat them differently in this context...

&gt; And would &quot;!!key.get()&quot; be clearer that you&apos;re converting a pointer into a bool?

We have no coding style guideline about this, and in general I&apos;m not sure when !! would be preferred with ptr -&gt; bool conversion, the same way I&apos;m not sure when it might be preferred with int -&gt; bool conversion.

Searching for !! use in WebCore shows that we use it...  but not nearly as much as one might suspect.

I don&apos;t feel strongly about it one way or the other, but am annoyed that we don&apos;t have a standard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977389</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-06 09:38:01 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/163538</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223283</attachid>
            <date>2014-02-05 17:31:51 -0800</date>
            <delta_ts>2014-02-05 23:42:51 -0800</delta_ts>
            <desc>Current patch (still has a layout test bug, so not ready for review/landing)</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>7938</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5
MjZmNjM1Li42YjcwMzE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zCkBAIC00NzEsNiArNDcxLDcgQEAgZnVsbHNjcmVlbi9hbm9ueW1vdXMtYmxv
Y2stbWVyZ2UtY3Jhc2guaHRtbCBbIFBhc3MgXQogIyBSZWVuYWJsZSBpbmRpdmlkdWFsIHRlc3Rz
IGhlcmUgdGhhdCBhcmUga25vd24gdG8gcGFzcywgd2l0aCB0aGUgZXZlbnR1YWwgZ29hbCBvZiBy
ZS1lbmFibGluZyB0aGUgZW50aXJlIGRpcmVjdG9yeS4KIHN0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvYWRkLXR3aWNlLWZhaWx1cmUuaHRtbCBbIFBhc3MgXQogc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9hdXRvaW5jcmVtZW50LWluZGV4ZXMuaHRtbCBbIFBhc3MgXQorc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9jbGVhci5odG1sIFsgUGFzcyBdCiAKIAogIyMjIEVORCBPRiAoNSkgRmVhdHVy
ZXMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBpbiBXZWJLaXQxLCBzbyBza2lwcGVkIGluIG1hYy9U
ZXN0RXhwZWN0YXRpb25zIHRoZW4gcmUtZW5hYmxlZCBoZXJlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy9jbGVhci5qcyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NsZWFyLmpzCmluZGV4
IGM1YTBjNjIuLjYzYTg4ZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvcmVzb3VyY2VzL2NsZWFyLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NsZWFyLmpzCkBAIC0zNyw5ICszNywyOCBAQCBm
dW5jdGlvbiBjbGVhcmVkKCkKICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKIH0KIAorLy8gVGhlIHZlcnNpb24gb2YgdGhpcyB0ZXN0IHRoYXQgZXhpc3RlZCB1
cCB1bnRpbCBGZWIgNXRoLCAyMDE0IGhhZCB0aGUgZm9sbG93aW5nIGFyZVdlQ2xlYXJZZXQgaGFu
ZGxlci4KKy8vIFRoZSBpbnRlbnRpb24gd2FzIGFwcGFyZW50bHkgdG8gdmVyaWZ5IHRoYXQgY2Fs
bGluZyBvcGVuQ3Vyc29yKCkgb24gYW4gZW1wdHkgb2JqZWN0IHN0b3JlIHJldHVybmVkIGEgbnVs
bCBjdXJzb3IuCisvKgogZnVuY3Rpb24gYXJlV2VDbGVhcllldCgpCiB7CiAgICAgY3Vyc29yID0g
ZXZhbEFuZExvZygiY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQ7Iik7CiAgICAgc2hvdWxkQmUoImN1
cnNvciIsICJudWxsIik7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9CisqLworCisvLyBUaGUgc3Bl
YydzIGN1cnJlbnQgZGVzY3JpcHRpb24gb2YgSURCT2JqZWN0U3RvcmUub3BlbkN1cnNvcigpLCBh
cyBmb3VuZCBoZXJlOgorLy8gaHR0cDovL3d3dy53My5vcmcvVFIvSW5kZXhlZERCLyN3aWRsLUlE
Qk9iamVjdFN0b3JlLW9wZW5DdXJzb3ItSURCUmVxdWVzdC1hbnktcmFuZ2UtSURCQ3Vyc29yRGly
ZWN0aW9uLWRpcmVjdGlvbgorLy8gZG9lcyBub3QgYWxsb3cgZm9yIGEgbnVsbCBjdXJzb3IgdG8g
YmUgcmV0dXJuZWQuIEl0IHN0YXRlczoKKy8vICIuLi50aGlzIG1ldGhvZCBjcmVhdGVzIGEgY3Vy
c29yLiBUaGUgY3Vyc29yIG11c3QgaW1wbGVtZW50IHRoZSBJREJDdXJzb3JXaXRoVmFsdWUgaW50
ZXJmYWNlLiIKKy8vIGFuZCB0aGVuIGdpdmVzIG5vIGFsbG93YW5jZSBmb3Igbm90IHJldHVybmlu
ZyB0aGF0IGNyZWF0ZWQgY3Vyc29yLgorLy8gLS0tCisvLyBTbyBvdXIgY3VycmVudCByZWFkaW5n
IG9mIHRoZSBzcGVjIGlzIHRoYXQgYSBjdXJzb3IgbXVzdCBiZSByZXR1cm5lZCwgYnV0IGl0IG11
c3QgYmUgcG9pbnRpbmcgdG8gYW4gdW5kZWZpbmVkIGtleS92YWx1ZSByZWNvcmQuCitmdW5jdGlv
biBhcmVXZUNsZWFyWWV0KCkKK3sKKyAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJjdXJzb3IgPSBy
ZXF1ZXN0LnJlc3VsdDsiKTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLmtleSIsICJ1bmRlZmluZWQi
KTsKKyAgICBzaG91bGRCZSgiY3Vyc29yLnZhbHVlIiwgInVuZGVmaW5lZCIpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvci5jcHAKaW5kZXggZjZlYTMwZS4uZjJhMDUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC0yNjUsNiArMjY1LDkgQEAgdm9pZCBJ
REJDdXJzb3I6OmNsb3NlKCkKIAogdm9pZCBJREJDdXJzb3I6OnNldFZhbHVlUmVhZHkoRE9NUmVx
dWVzdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJL
ZXk+IHByaW1hcnlLZXksIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSkKIHsKKyAgICAv
LyBGSVhNRTogRm9yIGFuIHVuZGVmaW5lZCBjdXJzb3IgcmVjb3JkLCB0aGUga2V5IGFuZCB2YWx1
ZSBzaG91bGQgYmUgdW5kZWZpbmVkLgorICAgIC8vIFdlJ3JlIGdldHRpbmcgdW5kZWZpbmVkIGtl
eSBidXQgKm51bGwqIHZhbHVlLgorICAgIAogICAgIG1fY3VycmVudEtleSA9IGtleTsKICAgICBt
X2N1cnJlbnRLZXlWYWx1ZSA9IGlkYktleVRvU2NyaXB0VmFsdWUoc3RhdGUsIG1fY3VycmVudEtl
eSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmQuY3BwCmluZGV4IDEyODczYmEuLmI3NzRlYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmNw
cApAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kOjpkZWxldGVSYW5n
ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJCiAKIHZvaWQgSURC
RGF0YWJhc2VCYWNrZW5kOjpjbGVhck9iamVjdFN0b3JlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQogewotICAgIExPRyhTdG9yYWdlQVBJLCAiSURCRGF0YWJhc2VCYWNrZW5kOjpjbGVhciIpOwor
ICAgIExPRyhTdG9yYWdlQVBJLCAiSURCRGF0YWJhc2VCYWNrZW5kOjpjbGVhck9iamVjdFN0b3Jl
ICVsbGkgaW4gdHJhbnNhY3Rpb24gJWxsaSIsIG9iamVjdFN0b3JlSWQsIHRyYW5zYWN0aW9uSWQp
OwogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9u
cy5nZXQodHJhbnNhY3Rpb25JZCk7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwCmluZGV4IDVkMmYzZjguLjhkNmQ1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTE5Myw2ICsxOTMs
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZURlbGV0ZWQoY29uc3QgU3RyaW5n
JiBuYW1lKQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiB7
CisgICAgTE9HKFN0b3JhZ2VBUEksICJJREJUcmFuc2FjdGlvbjo6c2V0QWN0aXZlKCVzKSBmb3Ig
dHJhbnNhY3Rpb24gaWQgJWxsaSIsIGFjdGl2ZSA/ICJ0cnVlIiA6ICJmYWxzZSIsIG1faWQpOwog
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9zdGF0ZSAhPSBGaW5pc2hlZCwgIkEgZmluaXNoZWQg
dHJhbnNhY3Rpb24gdHJpZWQgdG8gc2V0QWN0aXZlKCVzKSIsIGFjdGl2ZSA/ICJ0cnVlIiA6ICJm
YWxzZSIpOwogICAgIGlmIChtX3N0YXRlID09IEZpbmlzaGluZykKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMGZkOGQ3My4uMTQyMDFiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tl
bmQuY3BwCkBAIC0yMDcsMTQgKzIwNywxNCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZDo6
c3RhcnQoKQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZDo6Y29tbWl0KCkKIHsKLSAgICBM
T0coU3RvcmFnZUFQSSwgIklEQlRyYW5zYWN0aW9uQmFja2VuZDo6Y29tbWl0IChUcmFuc2FjdGlv
biAlbGxpKSIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obV9pZCkpOworICAgIExPRyhTdG9yYWdl
QVBJLCAiSURCVHJhbnNhY3Rpb25CYWNrZW5kOjpjb21taXQgdHJhbnNhY3Rpb24gJWxsaSBpbiBz
dGF0ZSAldSIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obV9pZCksIG1fc3RhdGUpOwogCiAgICAg
Ly8gSW4gbXVsdGlwcm9jZXNzIHBvcnRzLCBmcm9udC1lbmQgbWF5IGhhdmUgcmVxdWVzdGVkIGEg
Y29tbWl0IGJ1dCBhbiBhYm9ydCBoYXMgYWxyZWFkeQogICAgIC8vIGJlZW4gaW5pdGlhdGVkIGFz
eW5jaHJvbm91c2x5IGJ5IHRoZSBiYWNrLWVuZC4KICAgICBpZiAobV9zdGF0ZSA9PSBGaW5pc2hl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1fc3RhdGUgPT0gVW51c2VkIHx8IG1f
c3RhdGUgPT0gUnVubmluZyk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gVW5vcGVuZWQgfHwgbV9z
dGF0ZSA9PSBVbnVzZWQgfHwgbV9zdGF0ZSA9PSBSdW5uaW5nKTsKICAgICBtX2NvbW1pdFBlbmRp
bmcgPSB0cnVlOwogCiAgICAgLy8gRnJvbnQtZW5kIGhhcyByZXF1ZXN0ZWQgYSBjb21taXQsIGJ1
dCB0aGVyZSBtYXkgYmUgdGFza3MgbGlrZSBjcmVhdGVJbmRleCB3aGljaApAQCAtMjI5LDcgKzIy
OSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kOjpjb21taXQoKQogICAgIC8vIGFsaXZl
IHdoaWxlIGV4ZWN1dGluZyB0aGlzIG1ldGhvZC4KICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kPiBiYWNrZW5kKHRoaXMpOwogCi0gICAgYm9vbCB1bnVzZWQgPSBtX3N0YXRlID09IFVu
dXNlZDsKKyAgICBib29sIHVudXNlZCA9IG1fc3RhdGUgPT0gVW51c2VkIHx8IG1fc3RhdGUgPT0g
VW5vcGVuZWQ7CiAgICAgbV9zdGF0ZSA9IEZpbmlzaGVkOwogCiAgICAgYm9vbCBjb21taXR0ZWQg
PSB1bnVzZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5k
ZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmNw
cAppbmRleCA3ZDg0MDc0Li42YzgwMTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRh
YmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9j
ZXNzSURCQ29ubmVjdGlvbi5jcHAKQEAgLTEwMCw3ICsxMDAsMjIgQEAgdm9pZCBEYXRhYmFzZVBy
b2Nlc3NJREJDb25uZWN0aW9uOjpvcGVuVHJhbnNhY3Rpb24odWludDY0X3QgcmVxdWVzdElELCBp
bnQ2NF90IHQKIHsKICAgICBBU1NFUlQobV91bmlxdWVJREJEYXRhYmFzZSk7CiAKLSAgICBMT0co
SURCLCAiRGF0YWJhc2VQcm9jZXNzIG9wZW5UcmFuc2FjdGlvbiByZXF1ZXN0IElEICVsbHUiLCBy
ZXF1ZXN0SUQpOworI2lmbmRlZiBOREVCVUcKKyAgICBjb25zdCBjaGFyKiBtb2RlU3RyaW5nOwor
ICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU+KGludE1v
ZGUpKSB7CisgICAgY2FzZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZTo6UmVhZE9ubHk6Cisg
ICAgICAgIG1vZGVTdHJpbmcgPSAicmVhZG9ubHkiOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlOjpSZWFkV3JpdGU6CisgICAgICAgIG1vZGVTdHJp
bmcgPSAicmVhZHdyaXRlIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbmRleGVkREI6OlRy
YW5zYWN0aW9uTW9kZTo6VmVyc2lvbkNoYW5nZToKKyAgICAgICAgbW9kZVN0cmluZyA9ICJ2ZXJz
aW9uY2hhbmdlIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgTE9HKElEQiwgIkRhdGFi
YXNlUHJvY2VzcyBvcGVuVHJhbnNhY3Rpb24gaWQgJWxsdSBpbiBtb2RlICclcycsIHJlcXVlc3Qg
SUQgJWxsdSIsIHRyYW5zYWN0aW9uSUQsIG1vZGVTdHJpbmcsIHJlcXVlc3RJRCk7CisjZW5kaWYK
IAogICAgIGlmIChpbnRNb2RlID4gSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGVNYXhpbXVtKSB7
CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZE9wZW5U
cmFuc2FjdGlvbihyZXF1ZXN0SUQsIGZhbHNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJUcmFuc2FjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxp
dGVJREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggMjJiY2NjYy4uNTdjY2M2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURC
VHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRl
eGVkREIvc3FsaXRlL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcApAQCAtNjcsOCArNjcsOSBAQCBi
b29sIFNRTGl0ZUlEQlRyYW5zYWN0aW9uOjpiZWdpbihTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2Up
CiAKIGJvb2wgU1FMaXRlSURCVHJhbnNhY3Rpb246OmNvbW1pdCgpCiB7Ci0gICAgQVNTRVJUKG1f
c3FsaXRlVHJhbnNhY3Rpb24pOwotICAgIGlmICghbV9zcWxpdGVUcmFuc2FjdGlvbi0+aW5Qcm9n
cmVzcygpKQorICAgIC8vIEl0J3Mgb2theSB0byBub3QgaGF2ZSBhIFNRTGl0ZSB0cmFuc2FjdGlv
biBvciBub3QgaGF2ZSBzdGFydGVkIGl0IHlldCBiZWNhdXNlIGl0cyBva2F5IGZvciBhIFdlYlBy
b2Nlc3MKKyAgICAvLyB0byByZXF1ZXN0IHRoZSBjb21taXQgb2YgYSB0cmFuc2FjdGlvbiBpbW1l
ZGlhdGVseSBhZnRlciBjcmVhdGluZyBpdCBiZWZvcmUgaXQgaGFzIGV2ZW4gYmVlbiB1c2VkLgor
ICAgIGlmICghbV9zcWxpdGVUcmFuc2FjdGlvbiB8fCAhbV9zcWxpdGVUcmFuc2FjdGlvbi0+aW5Q
cm9ncmVzcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX3NxbGl0ZVRyYW5zYWN0
aW9uLT5jb21taXQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223313</attachid>
            <date>2014-02-05 23:42:51 -0800</date>
            <delta_ts>2014-02-06 08:39:58 -0800</delta_ts>
            <desc>Patch v1 - Enable the test, update it to current spec, and make it pass.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16004</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ZWNkOWVjLi42YmUzOTRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTQtMDIt
MDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIElEQjogc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9jbGVhci5odG1sIGZhaWxzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xNTk5NzE1NT4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjgyODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczogRW5hYmxlIHRoaXMgdGVz
dC4KKworICAgICAgICBVcGRhdGUgdGhlIHRlc3QgZm9yICh3aGF0IEkgY2FuIG9ubHkgYXNzdW1l
IGFyZSkgY2hhbmdlcyBpbiB0aGUgc3BlYzoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL2NsZWFyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3Jlc291cmNlcy9jbGVhci5qczoKKyAgICAgICAgKGFyZVdlQ2xlYXJZZXQpOgorCisy
MDE0LTAyLTA1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwogICAgICAgICBJ
REI6IHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvYXV0b2luY3JlbWVudC1pbmRleGVzLmh0bWwg
ZmFpbHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
ODI1NwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggOTI2ZjYzNS4uNmI3MDMxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDcxLDYgKzQ3MSw3IEBAIGZ1bGxzY3JlZW4vYW5vbnlt
b3VzLWJsb2NrLW1lcmdlLWNyYXNoLmh0bWwgWyBQYXNzIF0KICMgUmVlbmFibGUgaW5kaXZpZHVh
bCB0ZXN0cyBoZXJlIHRoYXQgYXJlIGtub3duIHRvIHBhc3MsIHdpdGggdGhlIGV2ZW50dWFsIGdv
YWwgb2YgcmUtZW5hYmxpbmcgdGhlIGVudGlyZSBkaXJlY3RvcnkuCiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2FkZC10d2ljZS1mYWlsdXJlLmh0bWwgWyBQYXNzIF0KIHN0b3JhZ2UvaW5kZXhl
ZGRiL21vemlsbGEvYXV0b2luY3JlbWVudC1pbmRleGVzLmh0bWwgWyBQYXNzIF0KK3N0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvY2xlYXIuaHRtbCBbIFBhc3MgXQogCiAKICMjIyBFTkQgT0YgKDUp
IEZlYXR1cmVzIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gV2ViS2l0MSwgc28gc2tpcHBlZCBp
biBtYWMvVGVzdEV4cGVjdGF0aW9ucyB0aGVuIHJlLWVuYWJsZWQgaGVyZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9jbGVhci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLWV4cGVjdGVkLnR4
dAppbmRleCA1MDVmZTc1Li40OTI0NjIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2NsZWFyLWV4cGVjdGVkLnR4dApAQCAtMTgsNyArMTgs
OCBAQCBkYi50cmFuc2FjdGlvbignZm9vJywgJ3JlYWR3cml0ZScpCiB0cmFuc2FjdGlvbi5vYmpl
Y3RTdG9yZSgnZm9vJykuY2xlYXIoKTsKIHJlcXVlc3QgPSBkYi50cmFuc2FjdGlvbignZm9vJyku
b2JqZWN0U3RvcmUoJ2ZvbycpLm9wZW5DdXJzb3IoKTsKIGN1cnNvciA9IHJlcXVlc3QucmVzdWx0
OwotUEFTUyBjdXJzb3IgaXMgbnVsbAorUEFTUyBjdXJzb3Iua2V5IGlzIHVuZGVmaW5lZAorUEFT
UyBjdXJzb3IudmFsdWUgaXMgdW5kZWZpbmVkCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL2NsZWFyLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvY2xlYXIuanMKaW5kZXggYzVhMGM2Mi4uMmYwOWMy
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNv
dXJjZXMvY2xlYXIuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxs
YS9yZXNvdXJjZXMvY2xlYXIuanMKQEAgLTM3LDkgKzM3LDI4IEBAIGZ1bmN0aW9uIGNsZWFyZWQo
KQogICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwogfQogCisv
LyBUaGUgdmVyc2lvbiBvZiB0aGlzIHRlc3QgdGhhdCBleGlzdGVkIHVwIHVudGlsIHJldmlzaW9u
IH4xNjM1MDAgaGFkIHRoZSBmb2xsb3dpbmcgYXJlV2VDbGVhcllldCBoYW5kbGVyLgorLy8gVGhl
IGludGVudGlvbiB3YXMgYXBwYXJlbnRseSB0byB2ZXJpZnkgdGhhdCBjYWxsaW5nIG9wZW5DdXJz
b3IoKSBvbiBhbiBlbXB0eSBvYmplY3Qgc3RvcmUgcmV0dXJuZWQgYSBudWxsIGN1cnNvci4KKy8q
CiBmdW5jdGlvbiBhcmVXZUNsZWFyWWV0KCkKIHsKICAgICBjdXJzb3IgPSBldmFsQW5kTG9nKCJj
dXJzb3IgPSByZXF1ZXN0LnJlc3VsdDsiKTsKICAgICBzaG91bGRCZSgiY3Vyc29yIiwgIm51bGwi
KTsKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0KKyovCisKKy8vIFRoZSBzcGVjJ3MgY3VycmVudCBk
ZXNjcmlwdGlvbiBvZiBJREJPYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCksIGFzIGZvdW5kIGhlcmU6
CisvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9JbmRleGVkREIvI3dpZGwtSURCT2JqZWN0U3RvcmUt
b3BlbkN1cnNvci1JREJSZXF1ZXN0LWFueS1yYW5nZS1JREJDdXJzb3JEaXJlY3Rpb24tZGlyZWN0
aW9uCisvLyBkb2VzIG5vdCBhbGxvdyBmb3IgYSBudWxsIGN1cnNvciB0byBiZSByZXR1cm5lZC4g
SXQgc3RhdGVzOgorLy8gIi4uLnRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBjdXJzb3IuIFRoZSBjdXJz
b3IgbXVzdCBpbXBsZW1lbnQgdGhlIElEQkN1cnNvcldpdGhWYWx1ZSBpbnRlcmZhY2UuIgorLy8g
YW5kIHRoZW4gZ2l2ZXMgbm8gYWxsb3dhbmNlIGZvciBub3QgcmV0dXJuaW5nIHRoYXQgY3JlYXRl
ZCBjdXJzb3IuCisvLyAtLS0KKy8vIFNvIG91ciBjdXJyZW50IHJlYWRpbmcgb2YgdGhlIHNwZWMg
aXMgdGhhdCBhIGN1cnNvciBtdXN0IGJlIHJldHVybmVkLCBidXQgaXQgbXVzdCBiZSBwb2ludGlu
ZyB0byBhbiB1bmRlZmluZWQga2V5L3ZhbHVlIHJlY29yZC4KK2Z1bmN0aW9uIGFyZVdlQ2xlYXJZ
ZXQoKQoreworICAgIGN1cnNvciA9IGV2YWxBbmRMb2coImN1cnNvciA9IHJlcXVlc3QucmVzdWx0
OyIpOworICAgIHNob3VsZEJlKCJjdXJzb3Iua2V5IiwgInVuZGVmaW5lZCIpOworICAgIHNob3Vs
ZEJlKCJjdXJzb3IudmFsdWUiLCAidW5kZWZpbmVkIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMzRjMGIxYy4uMzdmMTY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDE0LTAyLTA1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBJREI6IHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXIuaHRtbCBmYWlscworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTU5OTcxNTU+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI4MjgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2Ns
ZWFyLmh0bWwgKGFuZCBwcm9iYWJseSBvdGhlcnMpCisKKyAgICAgICAgVXBkYXRlIHRoZSB2YWx1
ZSBkZXNlcmlhbGl6ZXIgdG8gdGFrZSBpbnRvIGFjY291bnQgd2hldGhlciBvciBub3QgdGhlcmUg
d2FzIGFuIElEQktleQorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oOgorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1
ZXN0OjpvblN1Y2Nlc3MpOiBDYWxsIHRoZSBuZXcgZm9ybSBvZiBkZXNlcmlhbGl6ZUlEQlZhbHVl
QnVmZmVyCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kOjpjbGVhck9iamVjdFN0
b3JlKTogVXBkYXRlIGxvZ2dpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6c2V0QWN0
aXZlKTogVXBkYXRlIGxvZ2dpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25C
YWNrZW5kOjpjb21taXQpOiBGaXggQVNTRVJUcyB0byByZWZsZWN0IG11bHRpLXByb2Nlc3Mgd29y
bGRzLgorCiAyMDE0LTAyLTA1ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4K
IAogICAgICAgICBbRUZMXVtHVEtdIFNoYXJlIHBsdWdpbidzIGltcGxlbWVudGF0aW9uIGJldHdl
ZW4gRUZMIGFuZCBHdGsgcG9ydHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmNwcAppbmRleCAxMjg3M2JhLi5iNzc0ZWIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZC5jcHAKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZDo6ZGVsZXRlUmFuZ2UoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSQogCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZDo6Y2xlYXJPYmplY3RTdG9yZShpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBMT0coU3RvcmFnZUFQSSwgIklEQkRhdGFiYXNlQmFj
a2VuZDo6Y2xlYXIiKTsKKyAgICBMT0coU3RvcmFnZUFQSSwgIklEQkRhdGFiYXNlQmFja2VuZDo6
Y2xlYXJPYmplY3RTdG9yZSAlbGxpIGluIHRyYW5zYWN0aW9uICVsbGkiLCBvYmplY3RTdG9yZUlk
LCB0cmFuc2FjdGlvbklkKTsKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9u
ID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogICAgIGlmICghdHJhbnNhY3Rp
b24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggNWIyZWFkNS4uZWI3OGRhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTI4Nyw3ICsyODcs
NyBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tl
bmQ+IHBycEJhY2tlbmQpCiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gYmFja2VuZC0+a2V5KCk7
CiAgICAgUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSA9IGJhY2tlbmQtPnByaW1hcnlLZXkoKTsK
IAotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1
ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgYmFja2VuZC0+dmFsdWVCdWZmZXIoKSk7CisgICAgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJl
cXVlc3RTdGF0ZSgpLCBiYWNrZW5kLT52YWx1ZUJ1ZmZlcigpLCBrZXkpOwogCiAgICAgQVNTRVJU
KCFtX3BlbmRpbmdDdXJzb3IpOwogICAgIFJlZlB0cjxJREJDdXJzb3I+IGN1cnNvcjsKQEAgLTMy
Nyw3ICszMjcsMTAgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IHZhbHVlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICBET01SZXF1ZXN0
U3RhdGU6OlNjb3BlIHNjb3BlKG1fcmVxdWVzdFN0YXRlKTsKLSAgICBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCks
IHZhbHVlQnVmZmVyKTsKKworICAgIC8vIEZJWE1FOiBCeSBub3Qga25vd2luZyB3aGV0aGVyIG9y
IG5vdCB0aGUga2V5IGlzIGRlZmluZWQgaGVyZSwgd2UgZG9uJ3Qga25vdworICAgIC8vIGlmIGEg
bnVsbCB2YWx1ZUJ1ZmZlciBtZWFucyB0aGUgdmFsdWUgaXMgbnVsbCBvciB0aGUgdmFsdWUgaXMg
dW5kZWZpbmVkLgorICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gZGVzZXJpYWxp
emVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgdmFsdWVCdWZmZXIsIHRydWUpOwogICAg
IG9uU3VjY2Vzc0ludGVybmFsKHZhbHVlKTsKIH0KIApAQCAtMzU0LDcgKzM1NywxMCBAQCB2b2lk
IElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZm
ZXIsIFBhc3NSZWZQdHI8SURCSwogICAgIEFTU0VSVChrZXlQYXRoID09IGVmZmVjdGl2ZU9iamVj
dFN0b3JlKG1fc291cmNlKS0+a2V5UGF0aCgpKTsKICNlbmRpZgogICAgIERPTVJlcXVlc3RTdGF0
ZTo6U2NvcGUgc2NvcGUobV9yZXF1ZXN0U3RhdGUpOwotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIHZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgdmFs
dWVCdWZmZXIpOworCisgICAgLy8gRklYTUU6IEJ5IG5vdCBrbm93aW5nIHdoZXRoZXIgb3Igbm90
IHRoZSBrZXkgaXMgZGVmaW5lZCBoZXJlLCB3ZSBkb24ndCBrbm93CisgICAgLy8gaWYgYSBudWxs
IHZhbHVlQnVmZmVyIG1lYW5zIHRoZSB2YWx1ZSBpcyBudWxsIG9yIHRoZSB2YWx1ZSBpcyB1bmRl
ZmluZWQuCisgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlE
QlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCB2YWx1ZUJ1ZmZlciwgdHJ1ZSk7CiAKICAgICBS
ZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5ID0gcHJwUHJpbWFyeUtleTsKICNpZm5kZWYgTkRFQlVH
CkBAIC00MTIsNyArNDE4LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkKIAogICAgIERPTVJl
cXVlc3RTdGF0ZTo6U2NvcGUgc2NvcGUobV9yZXF1ZXN0U3RhdGUpOwogCi0gICAgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgdmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKHJlcXVlc3RT
dGF0ZSgpLCBidWZmZXIpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIHZhbHVlID0gZGVz
ZXJpYWxpemVJREJWYWx1ZUJ1ZmZlcihyZXF1ZXN0U3RhdGUoKSwgYnVmZmVyLCBrZXkuZ2V0KCkp
OwogCiAgICAgQVNTRVJUKG1fcGVuZGluZ0N1cnNvcik7CiAgICAgc2V0UmVzdWx0Q3Vyc29yKG1f
cGVuZGluZ0N1cnNvci5yZWxlYXNlKCksIGtleSwgcHJpbWFyeUtleSwgdmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IDVkMmYzZjguLjhkNmQ1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTE5Myw2ICsxOTMsNyBAQCB2b2lkIElE
QlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZURlbGV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiB7CisgICAgTE9HKFN0
b3JhZ2VBUEksICJJREJUcmFuc2FjdGlvbjo6c2V0QWN0aXZlKCVzKSBmb3IgdHJhbnNhY3Rpb24g
aWQgJWxsaSIsIGFjdGl2ZSA/ICJ0cnVlIiA6ICJmYWxzZSIsIG1faWQpOwogICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UobV9zdGF0ZSAhPSBGaW5pc2hlZCwgIkEgZmluaXNoZWQgdHJhbnNhY3Rpb24g
dHJpZWQgdG8gc2V0QWN0aXZlKCVzKSIsIGFjdGl2ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICAg
IGlmIChtX3N0YXRlID09IEZpbmlzaGluZykKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2Vu
ZC5jcHAKaW5kZXggMGZkOGQ3My4uMTQyMDFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCkBAIC0y
MDcsMTQgKzIwNywxNCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZDo6c3RhcnQoKQogCiB2
b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZDo6Y29tbWl0KCkKIHsKLSAgICBMT0coU3RvcmFnZUFQ
SSwgIklEQlRyYW5zYWN0aW9uQmFja2VuZDo6Y29tbWl0IChUcmFuc2FjdGlvbiAlbGxpKSIsIHN0
YXRpY19jYXN0PGxvbmcgbG9uZz4obV9pZCkpOworICAgIExPRyhTdG9yYWdlQVBJLCAiSURCVHJh
bnNhY3Rpb25CYWNrZW5kOjpjb21taXQgdHJhbnNhY3Rpb24gJWxsaSBpbiBzdGF0ZSAldSIsIHN0
YXRpY19jYXN0PGxvbmcgbG9uZz4obV9pZCksIG1fc3RhdGUpOwogCiAgICAgLy8gSW4gbXVsdGlw
cm9jZXNzIHBvcnRzLCBmcm9udC1lbmQgbWF5IGhhdmUgcmVxdWVzdGVkIGEgY29tbWl0IGJ1dCBh
biBhYm9ydCBoYXMgYWxyZWFkeQogICAgIC8vIGJlZW4gaW5pdGlhdGVkIGFzeW5jaHJvbm91c2x5
IGJ5IHRoZSBiYWNrLWVuZC4KICAgICBpZiAobV9zdGF0ZSA9PSBGaW5pc2hlZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQVNTRVJUKG1fc3RhdGUgPT0gVW51c2VkIHx8IG1fc3RhdGUgPT0gUnVu
bmluZyk7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gVW5vcGVuZWQgfHwgbV9zdGF0ZSA9PSBVbnVz
ZWQgfHwgbV9zdGF0ZSA9PSBSdW5uaW5nKTsKICAgICBtX2NvbW1pdFBlbmRpbmcgPSB0cnVlOwog
CiAgICAgLy8gRnJvbnQtZW5kIGhhcyByZXF1ZXN0ZWQgYSBjb21taXQsIGJ1dCB0aGVyZSBtYXkg
YmUgdGFza3MgbGlrZSBjcmVhdGVJbmRleCB3aGljaApAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQg
SURCVHJhbnNhY3Rpb25CYWNrZW5kOjpjb21taXQoKQogICAgIC8vIGFsaXZlIHdoaWxlIGV4ZWN1
dGluZyB0aGlzIG1ldGhvZC4KICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiBiYWNr
ZW5kKHRoaXMpOwogCi0gICAgYm9vbCB1bnVzZWQgPSBtX3N0YXRlID09IFVudXNlZDsKKyAgICBi
b29sIHVudXNlZCA9IG1fc3RhdGUgPT0gVW51c2VkIHx8IG1fc3RhdGUgPT0gVW5vcGVuZWQ7CiAg
ICAgbV9zdGF0ZSA9IEZpbmlzaGVkOwogCiAgICAgYm9vbCBjb21taXR0ZWQgPSB1bnVzZWQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3Bw
CmluZGV4IDdhNzdkYjQuLjcyYTY2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC0zMDMsMTAgKzMwMywxOCBAQCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlKERPTVJlcXVlc3RTdGF0ZSog
cmVxdWVzdFN0YXRlLCBQYXNzUgogICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShl
eGVjLT52bSgpLCBqc051bGwoKSk7CiB9CiAKLURlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2Vy
aWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiByZXF1ZXN0U3RhdGUsIFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBwcnBCdWZmZXIpCitEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBk
ZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0YXRlLCBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHJwQnVmZmVyLCBib29sIGtleUlzRGVmaW5lZCkKIHsK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSByZXF1ZXN0U3RhdGUtPmV4ZWMoKTsKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwcnBCdWZmZXI7CisKKyAgICAvLyBJZiB0aGUga2V5IGRv
ZXNuJ3QgZXhpc3QsIHRoZW4gdGhlIHZhbHVlIG11c3QgYmUgdW5kZWZpbmVkIChhcyBvcHBvc2Vk
IHRvIG51bGwpCisgICAgaWYgKCFrZXlJc0RlZmluZWQpIHsKKyAgICAgICAgLy8gV2UgZWl0aGVy
IHNob3VsZG4ndCBoYXZlIGEgYnVmZmVyIG9yIGl0IHNob3VsZCBiZSBvZiBzaXplIDAKKyAgICAg
ICAgQVNTRVJUKCFidWZmZXIgfHwgIWJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKGV4ZWMtPnZtKCksIGpzVW5kZWZpbmVkKCkpOworICAgIH0K
KwogICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgLy8gRklYTUU6IFRoZSBleHRyYSBjb3B5IGhl
cmUgY2FuIGJlIGVsaW1pbmF0ZWQgYnkgYWxsb3dpbmcgU2VyaWFsaXplZFNjcmlwdFZhbHVlIHRv
IHRha2UgYSByYXcgY29uc3QgY2hhciogb3IgY29uc3QgdWludDhfdCouCiAgICAgICAgIFZlY3Rv
cjx1aW50OF90PiB2YWx1ZTsKQEAgLTMxNCw2ICszMjIsNyBAQCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBkZXNlcmlhbGl6ZUlEQlZhbHVlQnVmZmVyKERPTVJlcXVlc3RTdGF0ZSogcmVxdWVzdFN0
YXRlLAogICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFs
dWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXModmFsdWUpOwog
ICAgICAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShleGVjLCBz
ZXJpYWxpemVkVmFsdWUuZ2V0KCksIE5vblRocm93aW5nKTsKICAgICB9CisKICAgICByZXR1cm4g
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwganNOdWxsKCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKaW5kZXgg
ZjAxMmFlZi4uODA0N2Y4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lE
QkJpbmRpbmdVdGlsaXRpZXMuaApAQCAtNDUsNyArNDUsNyBAQCBib29sIGluamVjdElEQktleUlu
dG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4sIERlcHJl
Y2F0ZQogUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtl
eVBhdGgoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBj
b25zdCBJREJLZXlQYXRoJik7CiBib29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShE
T01SZXF1ZXN0U3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IElE
QktleVBhdGgmKTsKIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWUo
RE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKLURl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVz
dFN0YXRlKiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKK0RlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIoRE9NUmVxdWVzdFN0YXRlKiwgUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+LCBib29sIGtleUlzRGVmaW5lZCk7CiBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBpZGJLZXlUb1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8SURC
S2V5Pik7CiBQYXNzUmVmUHRyPElEQktleT4gc2NyaXB0VmFsdWVUb0lEQktleShET01SZXF1ZXN0
U3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
NDBhNzkwZi4uY2FkYWY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE0LTAyLTA1
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJREI6IHN0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvY2xlYXIuaHRtbCBmYWlscworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTU5OTcxNTU+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI4MjgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpv
cGVuVHJhbnNhY3Rpb24pOiBVcGRhdGUgbG9nZ2luZy4KKworICAgICAgICAqIERhdGFiYXNlUHJv
Y2Vzcy9JbmRleGVkREIvc3FsaXRlL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U1FMaXRlSURCVHJhbnNhY3Rpb246OmNvbW1pdCk6IFVwZGF0ZSBBU1NFUlQuCisK
IDIwMTQtMDItMDUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgLVtXS05hdmlnYXRpb25BY3Rpb24gcmVxdWVzdF0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0Rh
dGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwCmluZGV4IDdkODQwNzQuLjZjODAxMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJh
c2VQcm9jZXNzSURCQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmNwcApAQCAtMTAw
LDcgKzEwMCwyMiBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246Om9wZW5UcmFu
c2FjdGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgdAogewogICAgIEFTU0VSVChtX3Vu
aXF1ZUlEQkRhdGFiYXNlKTsKIAotICAgIExPRyhJREIsICJEYXRhYmFzZVByb2Nlc3Mgb3BlblRy
YW5zYWN0aW9uIHJlcXVlc3QgSUQgJWxsdSIsIHJlcXVlc3RJRCk7CisjaWZuZGVmIE5ERUJVRwor
ICAgIGNvbnN0IGNoYXIqIG1vZGVTdHJpbmc7CisgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxJbmRl
eGVkREI6OlRyYW5zYWN0aW9uTW9kZT4oaW50TW9kZSkpIHsKKyAgICBjYXNlIEluZGV4ZWREQjo6
VHJhbnNhY3Rpb25Nb2RlOjpSZWFkT25seToKKyAgICAgICAgbW9kZVN0cmluZyA9ICJyZWFkb25s
eSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU6
OlJlYWRXcml0ZToKKyAgICAgICAgbW9kZVN0cmluZyA9ICJyZWFkd3JpdGUiOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uQ2hhbmdl
OgorICAgICAgICBtb2RlU3RyaW5nID0gInZlcnNpb25jaGFuZ2UiOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBMT0coSURCLCAiRGF0YWJhc2VQcm9jZXNzIG9wZW5UcmFuc2FjdGlvbiBp
ZCAlbGx1IGluIG1vZGUgJyVzJywgcmVxdWVzdCBJRCAlbGx1IiwgdHJhbnNhY3Rpb25JRCwgbW9k
ZVN0cmluZywgcmVxdWVzdElEKTsKKyNlbmRpZgogCiAgICAgaWYgKGludE1vZGUgPiBJbmRleGVk
REI6OlRyYW5zYWN0aW9uTW9kZU1heGltdW0pIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
SURCU2VydmVyQ29ubmVjdGlvbjo6RGlkT3BlblRyYW5zYWN0aW9uKHJlcXVlc3RJRCwgZmFsc2Up
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
c3FsaXRlL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAppbmRleCAy
MmJjY2NjLi41N2NjYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURCVHJhbnNh
Y3Rpb24uY3BwCkBAIC02Nyw4ICs2Nyw5IEBAIGJvb2wgU1FMaXRlSURCVHJhbnNhY3Rpb246OmJl
Z2luKFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKIAogYm9vbCBTUUxpdGVJREJUcmFuc2FjdGlv
bjo6Y29tbWl0KCkKIHsKLSAgICBBU1NFUlQobV9zcWxpdGVUcmFuc2FjdGlvbik7Ci0gICAgaWYg
KCFtX3NxbGl0ZVRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCisgICAgLy8gSXQncyBva2F5IHRv
IG5vdCBoYXZlIGEgU1FMaXRlIHRyYW5zYWN0aW9uIG9yIG5vdCBoYXZlIHN0YXJ0ZWQgaXQgeWV0
IGJlY2F1c2UgaXRzIG9rYXkgZm9yIGEgV2ViUHJvY2VzcworICAgIC8vIHRvIHJlcXVlc3QgdGhl
IGNvbW1pdCBvZiBhIHRyYW5zYWN0aW9uIGltbWVkaWF0ZWx5IGFmdGVyIGNyZWF0aW5nIGl0IGJl
Zm9yZSBpdCBoYXMgZXZlbiBiZWVuIHVzZWQuCisgICAgaWYgKCFtX3NxbGl0ZVRyYW5zYWN0aW9u
IHx8ICFtX3NxbGl0ZVRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24tPmNvbW1pdCgpOwo=
</data>
<flag name="review"
          id="247319"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="247320"
          type_id="3"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>