<?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>99668</bug_id>
          
          <creation_ts>2012-10-17 17:53:01 -0700</creation_ts>
          <short_desc>REGRESSION: Crash in WebCore::ScrollingStateScrollingNode::setNonFastScrollableRegion</short_desc>
          <delta_ts>2012-10-18 14:25:55 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.8</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.macupdate.com/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kevin M. Dean">kevin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>744863</commentid>
    <comment_count>0</comment_count>
    <who name="Kevin M. Dean">kevin</who>
    <bug_when>2012-10-17 17:53:01 -0700</bug_when>
    <thetext>Go to macupdate.com. Click on a software link to view it&apos;s details page, but before the page loads or finishes loading, click the back button. If you already have a page history, you can click right away, but if macupdate.com is the first page for the window, then you click the back button as soon as it enables. The difference yields a slightly different crash report.

Clicking when macupdate has no prior page history for the window:

Process:         WebProcess [21082]
Path:            /Applications/WebKit.app/Contents/Frameworks/10.8/WebKit2.framework/WebProcess.app/Contents/MacOS/WebProcess
Identifier:      com.apple.WebProcess
Version:         537+ (537.16+)
Code Type:       X86-64 (Native)
Parent Process:  SafariForWebKitDevelopment [21080]
User ID:         501

Date/Time:       2012-10-17 18:35:49.121 -0400
OS Version:      Mac OS X 10.8.2 (12C60)
Report Version:  10

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000058

VM Regions Near 0x58:
--&gt; 
    __TEXT                 0000000108d84000-0000000108d85000 [    4K] r-x/rwx SM=COW  /Applications/WebKit.app/Contents/Frameworks/10.8/WebKit2.framework/WebProcess.app/Contents/MacOS/WebProcess

Application Specific Information:
Bundle controller class:
BrowserBundleController


Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore                 0x000000010a01c38d WebCore::ScrollingStateScrollingNode::setNonFastScrollableRegion(WebCore::Region const&amp;) + 13
1   com.apple.WebCore                 0x000000010a01a01c WebCore::ScrollingCoordinatorMac::frameViewLayoutUpdated(WebCore::FrameView*) + 92
2   com.apple.WebCore                 0x00000001098cd994 WebCore::FrameView::performPostLayoutTasks() + 436
3   com.apple.WebCore                 0x00000001098cd409 WebCore::FrameView::layout(bool) + 2489
4   com.apple.WebCore                 0x00000001098b7936 WebCore::FrameLoader::commitProvisionalLoad() + 822
5   com.apple.WebCore                 0x00000001098b64b6 WebCore::FrameLoader::continueLoadAfterNavigationPolicy(WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool) + 502
6   com.apple.WebCore                 0x00000001098b65a0 WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy(void*, WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool) + 32
7   com.apple.WebCore                 0x0000000109e65fd4 WebCore::PolicyChecker::checkNavigationPolicy(WebCore::ResourceRequest const&amp;, WebCore::DocumentLoader*, WTF::PassRefPtr&lt;WebCore::FormState&gt;, void (*)(void*, WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool), void*) + 484
8   com.apple.WebCore                 0x00000001098b6167 WebCore::FrameLoader::loadWithDocumentLoader(WebCore::DocumentLoader*, WebCore::FrameLoadType, WTF::PassRefPtr&lt;WebCore::FormState&gt;) + 1287
9   com.apple.WebCore                 0x00000001098b22a0 WebCore::FrameLoader::loadDifferentDocumentItem(WebCore::HistoryItem*, WebCore::FrameLoadType) + 96
10  com.apple.WebCore                 0x000000010990cfbc WebCore::HistoryController::recursiveGoToItem(WebCore::HistoryItem*, WebCore::HistoryItem*, WebCore::FrameLoadType) + 460
11  com.apple.WebCore                 0x000000010990cbc8 WebCore::HistoryController::goToItem(WebCore::HistoryItem*, WebCore::FrameLoadType) + 216
12  com.apple.WebCore                 0x0000000109e3d755 WebCore::Page::goToItem(WebCore::HistoryItem*, WebCore::FrameLoadType) + 85
13  com.apple.WebKit2                 0x0000000108e71b03 WebKit::WebPage::goBack(unsigned long long) + 39
14  com.apple.WebKit2                 0x0000000108e81e22 void CoreIPC::handleMessage&lt;Messages::WebPage::GoBack, WebKit::WebPage, void (WebKit::WebPage::*)(unsigned long long)&gt;(CoreIPC::ArgumentDecoder*, WebKit::WebPage*, void (WebKit::WebPage::*)(unsigned long long)) + 59
15  com.apple.WebKit2                 0x0000000108dcc1b1 CoreIPC::Connection::dispatchMessage(CoreIPC::Connection::Message&lt;CoreIPC::ArgumentDecoder&gt;&amp;) + 165
16  com.apple.WebKit2                 0x0000000108dcd6b5 CoreIPC::Connection::dispatchOneMessage() + 139
17  com.apple.WebCore                 0x0000000109ff346c WebCore::RunLoop::performWork() + 156
18  com.apple.WebCore                 0x0000000109ff3b85 WebCore::RunLoop::performWork(void*) + 53
19  com.apple.CoreFoundation          0x00007fff8d998101 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
20  com.apple.CoreFoundation          0x00007fff8d997a25 __CFRunLoopDoSources0 + 245
21  com.apple.CoreFoundation          0x00007fff8d9badc5 __CFRunLoopRun + 789
22  com.apple.CoreFoundation          0x00007fff8d9ba6b2 CFRunLoopRunSpecific + 290
23  com.apple.HIToolbox               0x00007fff8c2370a4 RunCurrentEventLoopInMode + 209
24  com.apple.HIToolbox               0x00007fff8c236e42 ReceiveNextEventCommon + 356
25  com.apple.HIToolbox               0x00007fff8c236cd3 BlockUntilNextEventMatchingListInMode + 62
26  com.apple.AppKit                  0x00007fff8b346613 _DPSNextEvent + 685
27  com.apple.AppKit                  0x00007fff8b345ed2 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128
28  com.apple.AppKit                  0x00007fff8b33d283 -[NSApplication run] + 517
29  com.apple.WebCore                 0x0000000109ff4163 WebCore::RunLoop::run() + 67
30  com.apple.WebKit2                 0x0000000108ebb820 WebKit::WebProcessMain(WebKit::CommandLine const&amp;) + 3772
31  com.apple.WebKit2                 0x0000000108e65f6f WebKitMain + 299
32  com.apple.WebProcess              0x0000000108d84e7b main + 214
33  libdyld.dylib                     0x00007fff93a917e1 start + 1



Clicking immediately before the page loads when there&apos;s already a history prior to macupdate.com:

Process:         WebProcess [21168]
Path:            /Applications/WebKit.app/Contents/Frameworks/10.8/WebKit2.framework/WebProcess.app/Contents/MacOS/WebProcess
Identifier:      com.apple.WebProcess
Version:         537+ (537.16+)
Code Type:       X86-64 (Native)
Parent Process:  SafariForWebKitDevelopment [21166]
User ID:         501

Date/Time:       2012-10-17 18:39:19.983 -0400
OS Version:      Mac OS X 10.8.2 (12C60)
Report Version:  10

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000058

VM Regions Near 0x58:
--&gt; 
    __TEXT                 0000000109125000-0000000109126000 [    4K] r-x/rwx SM=COW  /Applications/WebKit.app/Contents/Frameworks/10.8/WebKit2.framework/WebProcess.app/Contents/MacOS/WebProcess

Application Specific Information:
Bundle controller class:
BrowserBundleController


Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore                 0x000000010a3c02dd WebCore::ScrollingStateScrollingNode::setNonFastScrollableRegion(WebCore::Region const&amp;) + 13
1   com.apple.WebCore                 0x000000010a3bdf6c WebCore::ScrollingCoordinatorMac::frameViewLayoutUpdated(WebCore::FrameView*) + 92
2   com.apple.WebCore                 0x0000000109c6fe54 WebCore::FrameView::performPostLayoutTasks() + 436
3   com.apple.WebCore                 0x0000000109c6f8c9 WebCore::FrameView::layout(bool) + 2489
4   com.apple.WebCore                 0x0000000109c72c68 WebCore::FrameView::visibleContentsResized() + 104
5   com.apple.WebCore                 0x000000010a3c3a50 WebCore::ScrollView::updateScrollbars(WebCore::IntSize const&amp;) + 960
6   com.apple.WebCore                 0x000000010a3c449b WebCore::ScrollView::setContentsSize(WebCore::IntSize const&amp;) + 107
7   com.apple.WebCore                 0x0000000109c6df0c WebCore::FrameView::setContentsSize(WebCore::IntSize const&amp;) + 60
8   com.apple.WebCore                 0x0000000109c6e01c WebCore::FrameView::adjustViewSize() + 172
9   com.apple.WebCore                 0x0000000109c6f67a WebCore::FrameView::layout(bool) + 1898
10  com.apple.WebCore                 0x0000000109c59df6 WebCore::FrameLoader::commitProvisionalLoad() + 822
11  com.apple.WebCore                 0x0000000109c58976 WebCore::FrameLoader::continueLoadAfterNavigationPolicy(WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool) + 502
12  com.apple.WebCore                 0x0000000109c58a60 WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy(void*, WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool) + 32
13  com.apple.WebCore                 0x000000010a209ad4 WebCore::PolicyChecker::checkNavigationPolicy(WebCore::ResourceRequest const&amp;, WebCore::DocumentLoader*, WTF::PassRefPtr&lt;WebCore::FormState&gt;, void (*)(void*, WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool), void*) + 484
14  com.apple.WebCore                 0x0000000109c58627 WebCore::FrameLoader::loadWithDocumentLoader(WebCore::DocumentLoader*, WebCore::FrameLoadType, WTF::PassRefPtr&lt;WebCore::FormState&gt;) + 1287
15  com.apple.WebCore                 0x0000000109c54760 WebCore::FrameLoader::loadDifferentDocumentItem(WebCore::HistoryItem*, WebCore::FrameLoadType) + 96
16  com.apple.WebCore                 0x0000000109caf6ac WebCore::HistoryController::recursiveGoToItem(WebCore::HistoryItem*, WebCore::HistoryItem*, WebCore::FrameLoadType) + 460
17  com.apple.WebCore                 0x0000000109caf2b8 WebCore::HistoryController::goToItem(WebCore::HistoryItem*, WebCore::FrameLoadType) + 216
18  com.apple.WebCore                 0x000000010a1e1135 WebCore::Page::goToItem(WebCore::HistoryItem*, WebCore::FrameLoadType) + 85
19  com.apple.WebKit2                 0x0000000109212193 WebKit::WebPage::goBack(unsigned long long) + 39
20  com.apple.WebKit2                 0x000000010922243a void CoreIPC::handleMessage&lt;Messages::WebPage::GoBack, WebKit::WebPage, void (WebKit::WebPage::*)(unsigned long long)&gt;(CoreIPC::ArgumentDecoder*, WebKit::WebPage*, void (WebKit::WebPage::*)(unsigned long long)) + 59
21  com.apple.WebKit2                 0x000000010916d21b CoreIPC::Connection::dispatchMessage(CoreIPC::Connection::Message&lt;CoreIPC::ArgumentDecoder&gt;&amp;) + 165
22  com.apple.WebKit2                 0x000000010916e71f CoreIPC::Connection::dispatchOneMessage() + 139
23  com.apple.WebCore                 0x000000010a39736c WebCore::RunLoop::performWork() + 156
24  com.apple.WebCore                 0x000000010a397a85 WebCore::RunLoop::performWork(void*) + 53
25  com.apple.CoreFoundation          0x00007fff8d998101 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
26  com.apple.CoreFoundation          0x00007fff8d997a25 __CFRunLoopDoSources0 + 245
27  com.apple.CoreFoundation          0x00007fff8d9badc5 __CFRunLoopRun + 789
28  com.apple.CoreFoundation          0x00007fff8d9ba6b2 CFRunLoopRunSpecific + 290
29  com.apple.HIToolbox               0x00007fff8c2370a4 RunCurrentEventLoopInMode + 209
30  com.apple.HIToolbox               0x00007fff8c236e42 ReceiveNextEventCommon + 356
31  com.apple.HIToolbox               0x00007fff8c236cd3 BlockUntilNextEventMatchingListInMode + 62
32  com.apple.AppKit                  0x00007fff8b346613 _DPSNextEvent + 685
33  com.apple.AppKit                  0x00007fff8b345ed2 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128
34  com.apple.AppKit                  0x00007fff8b33d283 -[NSApplication run] + 517
35  com.apple.WebCore                 0x000000010a398063 WebCore::RunLoop::run() + 67
36  com.apple.WebKit2                 0x000000010925c980 WebKit::WebProcessMain(WebKit::CommandLine const&amp;) + 3772
37  com.apple.WebKit2                 0x00000001092065ff WebKitMain + 299
38  com.apple.WebProcess              0x0000000109125e7b main + 214
39  libdyld.dylib                     0x00007fff93a917e1 start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744867</commentid>
    <comment_count>1</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-17 17:54:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/12491901&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744872</commentid>
    <comment_count>2</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-17 17:59:04 -0700</bug_when>
    <thetext>Other ways to repro this bug:

1: go to http://www.ateliermaitrealbert.com
enter the site in English
Close the video pop op on top of the page
Click on &quot;pictures&quot; at the top right

And
1. Log into iCloud (I&apos;m using this test account: UserID: yps.j.yaya@me.com PW: Test1234)
2. Open mail
3. scroll inbox</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744886</commentid>
    <comment_count>3</comment_count>
      <attachid>169320</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-17 18:22:25 -0700</bug_when>
    <thetext>Created attachment 169320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745576</commentid>
    <comment_count>4</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-18 14:25:55 -0700</bug_when>
    <thetext>Thanks, Simon!

http://trac.webkit.org/changeset/131804</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169320</attachid>
            <date>2012-10-17 18:22:25 -0700</date>
            <delta_ts>2012-10-18 14:07:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>17302</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMTY4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg4IEBACisyMDEyLTEwLTE3ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTk2NjgKKyAgICAgICAgUkVHUkVTU0lPTjogQ3Jhc2ggaW4gCisg
ICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0Tm9uRmFzdFNj
cm9sbGFibGVSZWdpb24KKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTI0OTE5MDE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTMwNzgzIGNo
YW5nZWQgdGhlIGxpZmV0aW1lIG9mIHRoZSAKKyAgICAgICAgU2Nyb2xsaW5nU3RhdGVUcmVlJ3Mg
cm9vdFN0YXRlTm9kZS4gQmVmb3JlIHRoYXQgcGF0Y2gsIHRoZSByb290IHN0YXRlIAorICAgICAg
ICBub2RlIHdhcyBuZXZlciBkZXN0cm95ZWQuIEl0IHdhcyBqdXN0IGNvbnN0YW50bHkgcmUtdXNl
ZCBmb3IgCisgICAgICAgIGRpZmZlcmVudCBSZW5kZXJMYXllckJhY2tpbmdzLiBUaGlzIGNyYXNo
IGlzIGp1c3Qgb25lIG9mIGEgZmV3IGJ1Z3MgCisgICAgICAgIHRoYXQgaGFzIG9jY3VycmVkIGJl
Y2F1c2Ugb2YgdGhhdCBjaGFuZ2UuIEkgaGF2ZSBmaXhlZCB0aGUgb3RoZXIgYnVncyAKKyAgICAg
ICAgaW5kaXZpZHVhbGx5LCBidXQgSSB0aGluayB0aGF0IGxvbmctdGVybSwgaXQgaXMgdGhlIHNh
ZmVzdCBzb2x1dGlvbiAKKyAgICAgICAgdG8gZ28gYmFjayB0byB0aGUgb3JpZ2luYWwgb3duZXJz
aGlwIG1vZGVsLgorCisgICAgICAgIFNvIHRoaXMgcGF0Y2ggZW5zdXJlcyB0aGF0IHRoZSBzdGF0
ZSB0cmVlIHdpbGwgYWx3YXlzIGhhdmUgYSByb290IAorICAgICAgICBzdGF0ZSBub2RlLiBJbnN0
ZWFkIG9mIGRlc3Ryb3lpbmcgYW5kIHJlLWNyZWF0aW5nIHRoZSByb290IG5vZGUgd2hlbiAKKyAg
ICAgICAgaXQncyBzY3JvbGwgSUQgY2hhbmdlcywgd2UganVzdCB1cGRhdGUgdGhlIElELgorCisg
ICAgICAgIGF0dGFjaFRvU3RhdGVUcmVlKCkgbm93IHRha2VzIGFuIGFkZGl0aW9uYWwgSUQgcmVw
cmVzZW50aW5nIHRoZSBJRCBvZiAKKyAgICAgICAgdGhlIHBhcmVudCBub2RlLgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6YXR0YWNoVG9TdGF0ZVRyZWUpOgorCisgICAgICAgIEFk
ZCBhIHdheSB0byBzZXQgdGhlIHNjcm9sbGluZyBub2RlIElELgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVOb2RlOjpzZXRTY3JvbGxpbmdOb2RlSUQpOgorCisgICAgICAgIFRoaXMgY29kZSB0aGF0
IHByb3ZpZGVkIGEgd2F5IHRvIG1hcmsgYWxsIHByb3BlcnRpZXMgYXMgaGF2aW5nIAorICAgICAg
ICBjaGFuZ2VkIHdhcyBhZGRlZCBpbiBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8x
MzA5ODkgYXMgYSB3YXkgCisgICAgICAgIHRvIGVuc3VyZSB3ZSB3b3VsZCByZS1zZXQgU2Nyb2xs
aW5nVGhyZWFkJ3Mgbm9kZXMgd2hlbiB3ZSBkZXN0cm95ZWQgCisgICAgICAgIGFuZCByZS1jcmVh
dGVkIHRoZSByb290U3RhdGVOb2RlLiBOb3cgdGhhdCB3ZSBhcmUgbm8gbG9uZ2VyIAorICAgICAg
ICBkZXN0cm95aW5nIGFuZCByZS1jcmVhdGluZyB0aGUgcm9vdFN0YXRlTm9kZSwgdGhpcyBjb2Rl
IGlzIG5vIGxvbmdlciAKKyAgICAgICAgbmVjZXNzYXJ5LgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHA6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmg6CisKKyAgICAgICAgY3JlYXRlIG1f
cm9vdFN0YXRlTm9kZSByaWdodCBpbiB0aGUgU2Nyb2xsaW5nU3RhdGVUcmVlJ3MgY29uc3RydWN0
b3IuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlVHJlZTo6U2Nyb2xsaW5nU3RhdGVUcmVlKToK
KworICAgICAgICBEb24ndCBsZXQgcmVtb3ZlTm9kZSgpIGRlc3Ryb3kgbV9yb290U3RhdGVOb2Rl
LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVUcmVlOjpyZW1vdmVOb2RlKToKKwor
ICAgICAgICBBbHNvIGEgcGFydCBvZiByMTMwOTg5IHRoYXQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlVHJlZTo6cm9vdExheWVyRGlkQ2hhbmdl
KCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OnJvb3RTdGF0ZU5vZGUpOgorICAgICAg
ICAoU2Nyb2xsaW5nU3RhdGVUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRl
VHJlZTo6c2V0Um9vdFN0YXRlTm9kZSk6CisKKyAgICAgICAgYXR0YWNoVG9TdGF0ZVRyZWUoKSBu
b3cgdGFrZXMgYW4gYWRkaXRpb25hbCBJRCByZXByZXNlbnRpbmcgdGhlIElEIG9mIAorICAgICAg
ICB0aGUgcGFyZW50IG5vZGUuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yTWFjLmg6CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvck1hYyk6CisK
KyAgICAgICAgV2Ugbm8gbG9uZ2VyIG5lZWQgU2Nyb2xsaW5nU3RhdGVUcmVlOjpyb290TGF5ZXJE
aWRDaGFuZ2UoKQorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGlu
YXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpm
cmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UpOgorCisgICAgICAgIERvIG5vdCBkZXN0cm95IGFu
ZCByZS1jcmVhdGUgdGhlIHN0YXRlIG5vZGUuIEp1c3QgdXBkYXRlIGl0cyBJRC4gV2hlbiAKKyAg
ICAgICAgd2Ugc3VwcG9ydCBjaGlsZCBub2RlcyBzb29uLCB3ZSB3aWxsIGNyZWF0ZSB0aGVtIGlu
IHRoaXMgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvck1h
Yzo6YXR0YWNoVG9TdGF0ZVRyZWUpOgorCisgICAgICAgIE5vIG5lZWQgdG8gbnVsbC1jaGVjayB0
aGUgcm9vdFN0YXRlTm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9y
TWFjOjpjbGVhclN0YXRlVHJlZSk6CisKKyAgICAgICAgU2VuZCAwIGFzIHRoZSBwYXJlbnQgbm9k
ZSBJRCB0byBhdHRhY2hUb1N0YXRlVHJlZSgpIHRvIHJlcHJlc2VudCB0aGUgCisgICAgICAgIHJv
b3Qgbm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjplbnN1
cmVSb290U3RhdGVOb2RlRm9yRnJhbWVWaWV3KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcDoKKworICAgICAgICBSZW5kZXJMYXllckJhY2tpbmc6OmF0dGFjaFRv
U2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSBub3cgdGFrZXMgYSBwYXJlbnQgCisgICAgICAgIGxheWVy
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjphdHRhY2hUb1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmg6
CisgICAgICAgIChSZW5kZXJMYXllckJhY2tpbmcpOgorCisgICAgICAgIFNpbmNlIHRoaXMgaXMg
dGhlIHJvb3QsIHNlbmQgMCB0byByZXByZXNlbnQgdGhlIHBhcmVudCBsYXllci4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQmFja2luZyk6CisKIDIwMTItMTAtMTcgIEVs
bGlvdHQgU3ByZWhuICA8ZXNwcmVobkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIFN0
eWxlQ29udGVudFR5cGUgc2luY2UgaXQncyBub3QgdXNlZCBhbnltb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgJ
KHJldmlzaW9uIDEzMTQ4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShGcmFtZVZp
ZXcqLCBjb25zdCBJbnRQb2ludCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGhhbmRsZVdoZWVsRXZlbnQoRnJhbWVWaWV3KiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVNYWluRnJhbWVTY3JvbGxQ
b3NpdGlvbkFuZFNjcm9sbExheWVyUG9zaXRpb24oKSB7IH0KLSAgICB2aXJ0dWFsIFNjcm9sbGlu
Z05vZGVJRCBhdHRhY2hUb1N0YXRlVHJlZShTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKSB7IHJldHVy
biBub2RlSUQ7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGluZ05vZGVJRCBhdHRhY2hUb1N0YXRlVHJl
ZShTY3JvbGxpbmdOb2RlSUQgbmV3Tm9kZUlELCBTY3JvbGxpbmdOb2RlSUQgLypwYXJlbnRJRCov
KSB7IHJldHVybiBuZXdOb2RlSUQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVN0YXRl
VHJlZShTY3JvbGxpbmdOb2RlSUQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhclN0YXRlVHJl
ZSgpIHsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdT
dGF0ZU5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZU5vZGUuaAkocmV2aXNpb24gMTMxNDkwKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDYgKzcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Nyb2xsaW5nU3RhdGVUcmVlKFNjcm9s
bGluZ1N0YXRlVHJlZSogdHJlZSkgeyBtX3Njcm9sbGluZ1N0YXRlVHJlZSA9IHRyZWU7IH0KIAog
ICAgIFNjcm9sbGluZ05vZGVJRCBzY3JvbGxpbmdOb2RlSUQoKSBjb25zdCB7IHJldHVybiBtX25v
ZGVJRDsgfQorICAgIHZvaWQgc2V0U2Nyb2xsaW5nTm9kZUlEKFNjcm9sbGluZ05vZGVJRCBub2Rl
SUQpIHsgbV9ub2RlSUQgPSBub2RlSUQ7IH0KIAogICAgIFNjcm9sbGluZ1N0YXRlTm9kZSogcGFy
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KICAgICB2b2lkIHNldFBhcmVudChTY3Jv
bGxpbmdTdGF0ZU5vZGUqIHBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGUuY3BwCShyZXZpc2lvbiAxMzE0ODkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NywxMiArNzcsNiBAQCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6On5T
Y3JvbGxpbmdTCiB7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRI
YXNDaGFuZ2VkUHJvcGVydGllcygpCi17Ci0gICAgbV9jaGFuZ2VkUHJvcGVydGllcyA9IEFsbDsK
LSAgICBTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldEhhc0NoYW5nZWRQcm9wZXJ0aWVzKCk7Ci19Ci0K
IFBhc3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OmNsb25lQW5kUmVzZXROb2RlKCkKIHsKICAgICBPd25QdHI8U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlPiBjbG9uZSA9IGFkb3B0UHRyKG5ldyBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUodGhpcykpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgJKHJldmlzaW9uIDEzMTQ4OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw2IEBAIHB1YmxpYzoKICAgICAgICAg
VmVydGljYWxTY3JvbGxiYXJNb2RlID0gMSA8PCAxMCwKICAgICAgICAgU2Nyb2xsT3JpZ2luID0g
MSA8PCAxMSwKICAgICAgICAgUmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24gPSAxIDw8IDEyLAotICAg
ICAgICBBbGwgPSAoMSA8PCAxMykgLSAxIC8vIFRoaXMgd2lsbCBuZWVkIHRvIGJlIHVwZGF0ZWQg
aWYgd2UgYWRkIG9yIHJlbW92ZSBhbnl0aGluZyB0aGUgQ2hhbmdlZFByb3BlcnRpZXMuCiAgICAg
fTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSgpIE9W
RVJSSURFIHsgcmV0dXJuIHRydWU7IH0KQEAgLTY2LDcgKzY1LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBoYXNDaGFuZ2VkUHJvcGVydGllcygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IG1fY2hhbmdlZFByb3BlcnRpZXM7IH0KICAgICB2aXJ0dWFsIHVuc2lnbmVkIGNoYW5nZWRQcm9w
ZXJ0aWVzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jaGFuZ2VkUHJvcGVydGllczsgfQog
ICAgIHZpcnR1YWwgdm9pZCByZXNldENoYW5nZWRQcm9wZXJ0aWVzKCkgT1ZFUlJJREUgeyBtX2No
YW5nZWRQcm9wZXJ0aWVzID0gMDsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRIYXNDaGFuZ2VkUHJv
cGVydGllcygpOwogCiAgICAgY29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV92aWV3cG9ydFJlY3Q7IH0KICAgICB2b2lkIHNldFZpZXdwb3J0UmVjdChjb25zdCBJ
bnRSZWN0Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdT
dGF0ZVRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAJKHJldmlzaW9uIDEzMTQ4OSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDcgKzM2LDggQEAgUGFzc093blB0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IFNjcm9sbGlu
ZwogfQogCiBTY3JvbGxpbmdTdGF0ZVRyZWU6OlNjcm9sbGluZ1N0YXRlVHJlZSgpCi0gICAgOiBt
X2hhc0NoYW5nZWRQcm9wZXJ0aWVzKGZhbHNlKQorICAgIDogbV9yb290U3RhdGVOb2RlKFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Y3JlYXRlKHRoaXMsIDApKQorICAgICwgbV9oYXNDaGFu
Z2VkUHJvcGVydGllcyhmYWxzZSkKIHsKIH0KIApAQCAtNjMsMTMgKzY0LDYgQEAgUGFzc093blB0
cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IFNjcm9sbGluZwogdm9pZCBTY3JvbGxpbmdTdGF0ZVRyZWU6
OnJlbW92ZU5vZGUoU2Nyb2xsaW5nU3RhdGVOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChtX3Jv
b3RTdGF0ZU5vZGUpOwotCi0gICAgaWYgKG5vZGUgPT0gbV9yb290U3RhdGVOb2RlKSB7Ci0gICAg
ICAgIGRpZFJlbW92ZU5vZGUobV9yb290U3RhdGVOb2RlLT5zY3JvbGxpbmdOb2RlSUQoKSk7Ci0g
ICAgICAgIG1fcm9vdFN0YXRlTm9kZSA9IDA7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAg
ICBtX3Jvb3RTdGF0ZU5vZGUtPnJlbW92ZUNoaWxkKG5vZGUpOwogfQogCkBAIC03OCwxNiArNzIs
NiBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlVHJlZTo6ZGlkUmVtb3ZlTm9kZShTCiAgICAgbV9ub2Rl
c1JlbW92ZWRTaW5jZUxhc3RDb21taXQuYXBwZW5kKG5vZGVJRCk7CiB9CiAKLXZvaWQgU2Nyb2xs
aW5nU3RhdGVUcmVlOjpyb290TGF5ZXJEaWRDaGFuZ2UoKQotewotICAgIC8vIElmIHRoZSByb290
IGxheWVyIGhhcyBjaGFuZ2VkLCB0aGVuIGRlc3Ryb3llZCBhbmQgcmUtY3JlYXRlZCB0aGUgcm9v
dCBzdGF0ZSBub2RlLiBUaGF0IG1lYW5zIHRoYXQgdGhlCi0gICAgLy8gY2FjaGVkIHByb3BlcnRp
ZXMgaW4gU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlIGFyZSBubyBsb25nZXIgcmVmbGVjdGl2
ZSBvZiB0aGUgcHJvcGVydGllcyB3ZSBoYXZlCi0gICAgLy8gY2FjaGVkIG92ZXIgaW4gdGhlIFNj
cm9sbGluZ1RyZWUuIFRvIHJlc29sdmUgdGhpcywgd2Ugd2lsbCBtYXJrIGFsbCBvZiB0aGUgcHJv
cGVydGllcyBhcyBoYXZpbmcgY2hhbmdlZAotICAgIC8vIHNvIHRoYXQgdGhlIFNjcm9sbGluZ1Ry
ZWUgd2lsbCBiZSBpbiBzeW5jaCB3aXRoIHRoZSBzdGF0ZSB0cmVlLgotICAgIHNldEhhc0NoYW5n
ZWRQcm9wZXJ0aWVzKHRydWUpOwotICAgIHJvb3RTdGF0ZU5vZGUoKS0+c2V0SGFzQ2hhbmdlZFBy
b3BlcnRpZXMoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFRIUkVBREVEX1NDUk9MTElORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5oCShyZXZpc2lvbiAxMzE0ODkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQCBwdWJsaWM6CiAgICAgflNjcm9sbGluZ1N0YXRlVHJl
ZSgpOwogCiAgICAgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKiByb290U3RhdGVOb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9yb290U3RhdGVOb2RlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRSb290
U3RhdGVOb2RlKFBhc3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPiByb290U3Rh
dGVOb2RlKSB7IG1fcm9vdFN0YXRlTm9kZSA9IHJvb3RTdGF0ZU5vZGU7IH0KIAogICAgIC8vIENv
cGllcyB0aGUgY3VycmVudCB0cmVlIHN0YXRlIGFuZCBjbGVhcnMgdGhlIGNoYW5nZWQgcHJvcGVy
dGllcyBtYXNrIGluIHRoZSBvcmlnaW5hbC4KICAgICBQYXNzT3duUHRyPFNjcm9sbGluZ1N0YXRl
VHJlZT4gY29tbWl0KCk7CkBAIC02NCwxNCArNjMsMTQgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
UmVtb3ZlTm9kZShTY3JvbGxpbmdOb2RlSUQpOwogICAgIGNvbnN0IFZlY3RvcjxTY3JvbGxpbmdO
b2RlSUQ+JiByZW1vdmVkTm9kZXMoKSBjb25zdCB7IHJldHVybiBtX25vZGVzUmVtb3ZlZFNpbmNl
TGFzdENvbW1pdDsgfQogCi0gICAgdm9pZCByb290TGF5ZXJEaWRDaGFuZ2UoKTsKLQogICAgIHZv
aWQgc2V0SGFzQ2hhbmdlZFByb3BlcnRpZXMoYm9vbCBjaGFuZ2VkUHJvcGVydGllcykgeyBtX2hh
c0NoYW5nZWRQcm9wZXJ0aWVzID0gY2hhbmdlZFByb3BlcnRpZXM7IH0KICAgICBib29sIGhhc0No
YW5nZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDaGFuZ2VkUHJvcGVydGllczsg
fQogCiBwcml2YXRlOgogICAgIFNjcm9sbGluZ1N0YXRlVHJlZSgpOwogCisgICAgdm9pZCBzZXRS
b290U3RhdGVOb2RlKFBhc3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPiByb290
U3RhdGVOb2RlKSB7IG1fcm9vdFN0YXRlTm9kZSA9IHJvb3RTdGF0ZU5vZGU7IH0KKwogICAgIFBh
c3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiBjbG9uZSgpOwogCiAgICAgT3duUHRyPFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4gbV9yb290U3RhdGVOb2RlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjLmgJKHJldmlzaW9uIDEzMTQ4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Niw3ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCB0
byBpbmRpY2F0ZSB0aGF0IGEgbGF5ZXIgc2hvdWxkIGJlIChvciBzaG91bGQgbm90IGxvbmdlciBi
ZSkgcmVwcmVzZW50ZWQgYnkgYSBub2RlCiAgICAgLy8gaW4gdGhlIHNjcm9sbGluZyB0cmVlLgot
ICAgIHZpcnR1YWwgU2Nyb2xsaW5nTm9kZUlEIGF0dGFjaFRvU3RhdGVUcmVlKFNjcm9sbGluZ05v
ZGVJRCk7CisgICAgdmlydHVhbCBTY3JvbGxpbmdOb2RlSUQgYXR0YWNoVG9TdGF0ZVRyZWUoU2Ny
b2xsaW5nTm9kZUlEIG5ld05vZGVJRCwgU2Nyb2xsaW5nTm9kZUlEIHBhcmVudElEKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVN0YXRlVHJlZShTY3JvbGxpbmdOb2RlSUQpOwogCiAgICAg
Ly8gVGhpcyBmdW5jdGlvbiB3aXBlcyBvdXQgdGhlIGN1cnJlbnQgdHJlZS4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JNYWMubW0JKHJldmlzaW9uIDEzMTQ4OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTQ3LDcgKzE0Nyw2IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmZyYW1l
Vmlld1IKICAgICAvLyBJZiB0aGUgcm9vdCBsYXllciBkb2VzIG5vdCBoYXZlIGEgU2Nyb2xsaW5n
U3RhdGVOb2RlLCB0aGVuIHdlIHNob3VsZCBjcmVhdGUgb25lLgogICAgIGVuc3VyZVJvb3RTdGF0
ZU5vZGVGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KTsKICAgICBBU1NFUlQobV9zY3JvbGxpbmdTdGF0
ZVRyZWUtPnJvb3RTdGF0ZU5vZGUoKSk7Ci0gICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RM
YXllckRpZENoYW5nZSgpOwogCiAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jv
b3RMYXllckRpZENoYW5nZShmcmFtZVZpZXcpOwogCkBAIC0yMzQsMjIgKzIzMywyNiBAQCB2b2lk
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjp1cGRhdGVNYWluCiAgICAgICAgIHNjcm9sbExheWVy
LT5zZXRQb3NpdGlvbigtZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlvbigpKTsKIH0KIAotU2Nyb2xs
aW5nTm9kZUlEIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjphdHRhY2hUb1N0YXRlVHJlZShTY3Jv
bGxpbmdOb2RlSUQgc2Nyb2xsTGF5ZXJJRCkKK1Njcm9sbGluZ05vZGVJRCBTY3JvbGxpbmdDb29y
ZGluYXRvck1hYzo6YXR0YWNoVG9TdGF0ZVRyZWUoU2Nyb2xsaW5nTm9kZUlEIG5ld05vZGVJRCwg
U2Nyb2xsaW5nTm9kZUlEIHBhcmVudElEKQogewotICAgIEFTU0VSVChzY3JvbGxMYXllcklEKTsK
KyAgICBBU1NFUlQobmV3Tm9kZUlEKTsKIAotICAgIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZSogZXhpc3RpbmdOb2RlID0gc3RhdGVOb2RlRm9ySUQoc2Nyb2xsTGF5ZXJJRCk7CisgICAgU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKiBleGlzdGluZ05vZGUgPSBzdGF0ZU5vZGVGb3JJRChu
ZXdOb2RlSUQpOwogICAgIGlmIChleGlzdGluZ05vZGUgJiYgZXhpc3RpbmdOb2RlID09IG1fc2Ny
b2xsaW5nU3RhdGVUcmVlLT5yb290U3RhdGVOb2RlKCkpCi0gICAgICAgIHJldHVybiBzY3JvbGxM
YXllcklEOworICAgICAgICByZXR1cm4gbmV3Tm9kZUlEOwogCi0gICAgY2xlYXJTdGF0ZVRyZWUo
KTsKKyAgICAvLyBJZiB0aGVyZSBpcyBubyBwYXJlbnQsIHRoaXMgaXMgdGhlIHJvb3Qgbm9kZS4g
UmlnaHQgbm93LCB3ZSBvbmx5IHN1cHBvcnQgdGhlIHJvb3Qgbm9kZS4KKyAgICAvLyBGSVhNRTog
SW4gdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGFwcGVuZCBjaGlsZCBub2RlcyBpbiB0aGUgYXBwcm9w
cmlhdGUgc3BvdCBpbiB0aGUgc3RhdGUKKyAgICAvLyB0cmVlLgorICAgIGlmICghcGFyZW50SUQp
IHsKKyAgICAgICAgLy8gSWYgd2UncmUgcmVzZXR0aW5nIHRoZSByb290IG5vZGUsIHdlIHNob3Vs
ZCBjbGVhciB0aGUgSGFzaE1hcCBhbmQgZGVzdHJveSB0aGUgY3VycmVudCBjaGlsZHJlbi4KKyAg
ICAgICAgY2xlYXJTdGF0ZVRyZWUoKTsKIAotICAgIC8vIEZJWE1FOiBJbiB0aGUgZnV0dXJlLCB0
aGlzIGZ1bmN0aW9uIHdpbGwgaGF2ZSB0byB0YWtlIGEgcGFyZW50IElEIHNvIHRoYXQgaXQgY2Fu
Ci0gICAgLy8gYXBwZW5kIHRoZSBub2RlIGluIHRoZSBhcHByb3ByaWF0ZSBzcG90IGluIHRoZSBz
dGF0ZSB0cmVlLiBGb3Igbm93IHdlIGFsd2F5cyBhc3N1bWUKLSAgICAvLyB0aGlzIGlzIHRoZSBy
b290IG5vZGUuCi0gICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnNldFJvb3RTdGF0ZU5vZGUoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpjcmVhdGUobV9zY3JvbGxpbmdTdGF0ZVRyZWUuZ2V0
KCksIHNjcm9sbExheWVySUQpKTsKLSAgICBtX3N0YXRlTm9kZU1hcC5zZXQoc2Nyb2xsTGF5ZXJJ
RCwgbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5vZGUoKSk7Ci0gICAgcmV0dXJuIHNj
cm9sbExheWVySUQ7CisgICAgICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5yb290U3RhdGVOb2Rl
KCktPnNldFNjcm9sbGluZ05vZGVJRChuZXdOb2RlSUQpOworICAgICAgICBtX3N0YXRlTm9kZU1h
cC5zZXQobmV3Tm9kZUlELCBtX3Njcm9sbGluZ1N0YXRlVHJlZS0+cm9vdFN0YXRlTm9kZSgpKTsK
KyAgICB9CisKKyAgICByZXR1cm4gbmV3Tm9kZUlEOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjOjpkZXRhY2hGcm9tU3RhdGVUcmVlKFNjcm9sbGluZ05vZGVJRCBzY3JvbGxMYXll
cklEKQpAQCAtMjc1LDggKzI3OCw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmRl
dGFjaEZyb20KIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmNsZWFyU3RhdGVUcmVlKCkK
IHsKICAgICBtX3N0YXRlTm9kZU1hcC5jbGVhcigpOwotICAgIGlmIChTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUqIG5vZGUgPSBtX3Njcm9sbGluZ1N0YXRlVHJlZS0+cm9vdFN0YXRlTm9kZSgp
KQotICAgICAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZS0+cmVtb3ZlTm9kZShub2RlKTsKKyAgICBt
X3Njcm9sbGluZ1N0YXRlVHJlZS0+cmVtb3ZlTm9kZShtX3Njcm9sbGluZ1N0YXRlVHJlZS0+cm9v
dFN0YXRlTm9kZSgpKTsKIH0KIAogU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKiBTY3JvbGxp
bmdDb29yZGluYXRvck1hYzo6c3RhdGVOb2RlRm9ySUQoU2Nyb2xsaW5nTm9kZUlEIHNjcm9sbExh
eWVySUQpCkBAIC0yOTQsNyArMjk2LDcgQEAgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKiBT
Y3JvbGxpbmdDbwogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjplbnN1cmVSb290U3Rh
dGVOb2RlRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3KQogewotICAgIGF0dGFjaFRv
U3RhdGVUcmVlKGZyYW1lVmlldy0+c2Nyb2xsTGF5ZXJJRCgpKTsKKyAgICBhdHRhY2hUb1N0YXRl
VHJlZShmcmFtZVZpZXctPnNjcm9sbExheWVySUQoKSwgMCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5n
Q29vcmRpbmF0b3JNYWM6OnNldFNjcm9sbExheWVyRm9yTm9kZShHcmFwaGljc0xheWVyKiBzY3Jv
bGxMYXllciwgU2Nyb2xsaW5nU3RhdGVOb2RlKiBub2RlKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDEzMTQ4OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NjUsNyArOTY1LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZVNjcm9sbGluZwogICAgIHJldHVybiBsYXllckNoYW5nZWQ7CiB9CiAKLXZvaWQgUmVuZGVy
TGF5ZXJCYWNraW5nOjphdHRhY2hUb1Njcm9sbGluZ0Nvb3JkaW5hdG9yKCkKK3ZvaWQgUmVuZGVy
TGF5ZXJCYWNraW5nOjphdHRhY2hUb1Njcm9sbGluZ0Nvb3JkaW5hdG9yKFJlbmRlckxheWVyQmFj
a2luZyogcGFyZW50KQogewogICAgIC8vIElmIG1fc2Nyb2xsTGF5ZXJJRCBub24temVybywgdGhl
biB0aGlzIGJhY2tpbmcgaXMgYWxyZWFkeSBhdHRhY2hlZCB0byB0aGUgU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuCiAgICAgaWYgKG1fc2Nyb2xsTGF5ZXJJRCkKQEAgLTk3OCw4ICs5NzgsOSBAQCB2b2lk
IFJlbmRlckxheWVyQmFja2luZzo6YXR0YWNoVG9TY3JvbGxpCiAgICAgU2Nyb2xsaW5nQ29vcmRp
bmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3Io
KTsKICAgICBpZiAoIXNjcm9sbGluZ0Nvb3JkaW5hdG9yKQogICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgbV9zY3JvbGxMYXllcklEID0gc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmF0dGFjaFRvU3Rh
dGVUcmVlKHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT51bmlxdWVTY3JvbGxMYXllcklEKCkpOworCisg
ICAgU2Nyb2xsaW5nTm9kZUlEIHBhcmVudElEID0gcGFyZW50ID8gcGFyZW50LT5zY3JvbGxMYXll
cklEKCkgOiAwOworICAgIG1fc2Nyb2xsTGF5ZXJJRCA9IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5h
dHRhY2hUb1N0YXRlVHJlZShzY3JvbGxpbmdDb29yZGluYXRvci0+dW5pcXVlU2Nyb2xsTGF5ZXJJ
RCgpLCBwYXJlbnRJRCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpkZXRhY2hGcm9t
U2Nyb2xsaW5nQ29vcmRpbmF0b3IoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuaAkocmV2aXNpb24gMTMxNDg5KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3
ICs4OCw3IEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0xheWVyKiBzY3JvbGxpbmdMYXllcigpIGNv
bnN0IHsgcmV0dXJuIG1fc2Nyb2xsaW5nTGF5ZXIuZ2V0KCk7IH0KICAgICBHcmFwaGljc0xheWVy
KiBzY3JvbGxpbmdDb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxpbmdDb250
ZW50c0xheWVyLmdldCgpOyB9CiAKLSAgICB2b2lkIGF0dGFjaFRvU2Nyb2xsaW5nQ29vcmRpbmF0
b3IoKTsKKyAgICB2b2lkIGF0dGFjaFRvU2Nyb2xsaW5nQ29vcmRpbmF0b3IoUmVuZGVyTGF5ZXJC
YWNraW5nKiBwYXJlbnQpOwogICAgIHVpbnQ2NF90IHNjcm9sbExheWVySUQoKSBjb25zdCB7IHJl
dHVybiBtX3Njcm9sbExheWVySUQ7IH0KICAgICAKICAgICBib29sIGhhc01hc2tMYXllcigpIGNv
bnN0IHsgcmV0dXJuIG1fbWFza0xheWVyICE9IDA7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCShyZXZpc2lvbiAxMzE0
ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDk2LDcgKzQ5Niw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjp1cGRhdGVCYWNraW4KIAogICAgICAgICAgICAgLy8gQXQgdGhpcyB0aW1lLCB0aGUg
U2Nyb2xsaW5nQ29vcmlkbmF0b3Igb25seSBzdXBwb3J0cyB0aGUgdG9wLWxldmVsIGZyYW1lLgog
ICAgICAgICAgICAgaWYgKGxheWVyLT5pc1Jvb3RMYXllcigpICYmICFtX3JlbmRlclZpZXctPmRv
Y3VtZW50KCktPm93bmVyRWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgbGF5ZXItPmJhY2tp
bmcoKS0+YXR0YWNoVG9TY3JvbGxpbmdDb29yZGluYXRvcigpOworICAgICAgICAgICAgICAgIGxh
eWVyLT5iYWNraW5nKCktPmF0dGFjaFRvU2Nyb2xsaW5nQ29vcmRpbmF0b3IoMCk7CiAgICAgICAg
ICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9
IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCiAgICAgICAgICAgICAgICAgICAgIHNjcm9s
bGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3
LT5mcmFtZVZpZXcoKSk7CiAgICAgICAgICAgICB9Cg==
</data>
<flag name="review"
          id="182576"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>