<?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>65868</bug_id>
          
          <creation_ts>2011-08-08 12:54:40 -0700</creation_ts>
          <short_desc>REGRESSION(r92610): Caused assertion failures when running fast/multicol tests (Requested by andersca on #webkit).</short_desc>
          <delta_ts>2011-08-08 13:31:12 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>65668</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>achicu</cc>
    
    <cc>andersca</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>448193</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 12:54:40 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/92610 broke the build:
Caused assertion failures when running fast/multicol tests (Requested by andersca on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448196</commentid>
    <comment_count>1</comment_count>
      <attachid>103279</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 12:55:08 -0700</bug_when>
    <thetext>Created attachment 103279
ROLLOUT of r92610

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID --ignore-builders

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448197</commentid>
    <comment_count>2</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-08-08 12:56:12 -0700</bug_when>
    <thetext>Specifically:

fast/multicol/float-paginate-complex.html -&gt; crashed
fast/multicol/vertical-lr/float-paginate-complex.html -&gt; crashed
fast/multicol/vertical-rl/float-paginate-complex.html -&gt; crashed

Here&apos;s a crash log:


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

VM Regions Near 0xbbadbeef:
--&gt; 
    __TEXT                 000000010fa11000-000000010fa97000 [  536K] r-x/rwx SM=COW  /Users/USER/*

Application Specific Information:
objc[45371]: garbage collection is OFF

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x0000000111de7ab9 WebCore::RenderBlock::FloatingObject::x() const + 105 (RenderBlock.h:465)
1   com.apple.WebCore             	0x0000000111de6893 WebCore::RenderBlock::logicalTopForFloat(WebCore::RenderBlock::FloatingObject const*) const + 67 (RenderBlock.h:500)
2   com.apple.WebCore             	0x0000000111e1a6e3 WebCore::RenderBlock::positionNewFloatOnLine(WebCore::RenderBlock::FloatingObject*, WebCore::RenderBlock::FloatingObject*, WebCore::LineWidth&amp;) + 883 (RenderBlockLineLayout.cpp:2579)
3   com.apple.WebCore             	0x0000000111e1a302 WebCore::RenderBlock::LineBreaker::skipLeadingWhitespace(WebCore::BidiResolver&lt;WebCore::InlineIterator, WebCore::BidiRun&gt;&amp;, WebCore::LineInfo const&amp;, WebCore::RenderBlock::FloatingObject*, WebCore::LineWidth&amp;) + 226 (RenderBlockLineLayout.cpp:1637)
4   com.apple.WebCore             	0x0000000111e143f7 WebCore::RenderBlock::LineBreaker::nextLineBreak(WebCore::BidiResolver&lt;WebCore::InlineIterator, WebCore::BidiRun&gt;&amp;, WebCore::LineInfo&amp;, std::pair&lt;WebCore::RenderText*, WebCore::LazyLineBreakIterator&gt;&amp;, WebCore::RenderBlock::FloatingObject*) + 327 (RenderBlockLineLayout.cpp:1949)
5   com.apple.WebCore             	0x0000000111e12040 WebCore::RenderBlock::layoutRunsAndFloatsInRange(WebCore::LineLayoutState&amp;, WebCore::BidiResolver&lt;WebCore::InlineIterator, WebCore::BidiRun&gt;&amp;, WebCore::InlineIterator const&amp;, WebCore::BidiStatus const&amp;) + 1008 (RenderBlockLineLayout.cpp:1014)
6   com.apple.WebCore             	0x0000000111e10cf8 WebCore::RenderBlock::layoutRunsAndFloats(WebCore::LineLayoutState&amp;, bool) + 1720 (RenderBlockLineLayout.cpp:983)
7   com.apple.WebCore             	0x0000000111e18c05 WebCore::RenderBlock::layoutInlineChildren(bool, int&amp;, int&amp;) + 2117 (RenderBlockLineLayout.cpp:1266)
8   com.apple.WebCore             	0x0000000111dc4abb WebCore::RenderBlock::layoutBlock(bool, int, WebCore::RenderBlock::BlockLayoutPass) + 2347 (RenderBlock.cpp:1268)
9   com.apple.WebCore             	0x0000000111dc4137 WebCore::RenderBlock::layout() + 71 (RenderBlock.cpp:1165)
10  com.apple.WebCore             	0x0000000111dcd9b5 WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox*, WebCore::RenderBlock::MarginInfo&amp;, int&amp;, int&amp;) + 885 (RenderBlock.cpp:2016)
11  com.apple.WebCore             	0x0000000111dc7799 WebCore::RenderBlock::layoutBlockChildren(bool, int&amp;) + 1513 (RenderBlock.cpp:1952)
12  com.apple.WebCore             	0x0000000111dc4ae1 WebCore::RenderBlock::layoutBlock(bool, int, WebCore::RenderBlock::BlockLayoutPass) + 2385 (RenderBlock.cpp:1270)
13  com.apple.WebCore             	0x0000000111dc4137 WebCore::RenderBlock::layout() + 71 (RenderBlock.cpp:1165)
14  com.apple.WebCore             	0x0000000111dcd9b5 WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox*, WebCore::RenderBlock::MarginInfo&amp;, int&amp;, int&amp;) + 885 (RenderBlock.cpp:2016)
15  com.apple.WebCore             	0x0000000111dc7799 WebCore::RenderBlock::layoutBlockChildren(bool, int&amp;) + 1513 (RenderBlock.cpp:1952)
16  com.apple.WebCore             	0x0000000111dc4ae1 WebCore::RenderBlock::layoutBlock(bool, int, WebCore::RenderBlock::BlockLayoutPass) + 2385 (RenderBlock.cpp:1270)
17  com.apple.WebCore             	0x0000000111dc4137 WebCore::RenderBlock::layout() + 71 (RenderBlock.cpp:1165)
18  com.apple.WebCore             	0x0000000111dcd9b5 WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox*, WebCore::RenderBlock::MarginInfo&amp;, int&amp;, int&amp;) + 885 (RenderBlock.cpp:2016)
19  com.apple.WebCore             	0x0000000111dc7799 WebCore::RenderBlock::layoutBlockChildren(bool, int&amp;) + 1513 (RenderBlock.cpp:1952)
20  com.apple.WebCore             	0x0000000111dc4ae1 WebCore::RenderBlock::layoutBlock(bool, int, WebCore::RenderBlock::BlockLayoutPass) + 2385 (RenderBlock.cpp:1270)
21  com.apple.WebCore             	0x0000000111dc4137 WebCore::RenderBlock::layout() + 71 (RenderBlock.cpp:1165)
22  com.apple.WebCore             	0x0000000111dcd9b5 WebCore::RenderBlock::layoutBlockChild(WebCore::RenderBox*, WebCore::RenderBlock::MarginInfo&amp;, int&amp;, int&amp;) + 885 (RenderBlock.cpp:2016)
23  com.apple.WebCore             	0x0000000111dc7799 WebCore::RenderBlock::layoutBlockChildren(bool, int&amp;) + 1513 (RenderBlock.cpp:1952)
24  com.apple.WebCore             	0x0000000111dc4ae1 WebCore::RenderBlock::layoutBlock(bool, int, WebCore::RenderBlock::BlockLayoutPass) + 2385 (RenderBlock.cpp:1270)
25  com.apple.WebCore             	0x0000000111dc4137 WebCore::RenderBlock::layout() + 71 (RenderBlock.cpp:1165)
26  com.apple.WebCore             	0x0000000111fdc57a WebCore::RenderView::layout() + 842 (RenderView.cpp:131)
27  com.apple.WebCore             	0x0000000111344ba8 WebCore::FrameView::layout(bool) + 4504 (FrameView.cpp:1043)
28  com.apple.WebCore             	0x0000000111046dd1 WebCore::Document::implicitClose() + 1025 (Document.cpp:2177)
29  com.apple.WebCore             	0x00000001113137fb WebCore::FrameLoader::checkCallImplicitClose() + 155 (FrameLoader.cpp:796)
30  com.apple.WebCore             	0x0000000111313583 WebCore::FrameLoader::checkCompleted() + 291 (FrameLoader.cpp:743)
31  com.apple.WebCore             	0x0000000111311e0b WebCore::FrameLoader::finishedParsing() + 187 (FrameLoader.cpp:677)
32  com.apple.WebCore             	0x0000000111054ffe WebCore::Document::finishedParsing() + 686 (Document.cpp:4209)
33  com.apple.WebCore             	0x00000001114f7801 WebCore::HTMLTreeBuilder::finished() + 161 (HTMLTreeBuilder.cpp:2826)
34  com.apple.WebCore             	0x000000011142a7bd WebCore::HTMLDocumentParser::end() + 253 (HTMLDocumentParser.cpp:379)
35  com.apple.WebCore             	0x00000001114293f0 WebCore::HTMLDocumentParser::attemptToRunDeferredScriptsAndEnd() + 304 (HTMLDocumentParser.cpp:388)
36  com.apple.WebCore             	0x000000011142919e WebCore::HTMLDocumentParser::prepareToStopParsing() + 334 (HTMLDocumentParser.cpp:151)
37  com.apple.WebCore             	0x000000011142a813 WebCore::HTMLDocumentParser::attemptToEnd() + 67 (HTMLDocumentParser.cpp:400)
38  com.apple.WebCore             	0x000000011142a868 WebCore::HTMLDocumentParser::finish() + 72 (HTMLDocumentParser.cpp:427)
39  com.apple.WebCore             	0x00000001110b4999 WebCore::DocumentWriter::endIfNotLoadingMainResource() + 329 (DocumentWriter.cpp:230)
40  com.apple.WebCore             	0x00000001110b3e20 WebCore::DocumentWriter::end() + 48 (DocumentWriter.cpp:210)
41  com.apple.WebCore             	0x000000011108d9bb WebCore::DocumentLoader::finishedLoading() + 91 (DocumentLoader.cpp:291)
42  com.apple.WebCore             	0x000000011131fcf9 WebCore::FrameLoader::finishedLoading() + 105 (FrameLoader.cpp:2059)
43  com.apple.WebCore             	0x0000000111c523d8 WebCore::MainResourceLoader::didFinishLoading(double) + 504 (MainResourceLoader.cpp:485)
44  com.apple.WebCore             	0x0000000112010810 WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle*, double) + 224 (ResourceLoader.cpp:475)
45  com.apple.WebCore             	0x000000011200c665 -[WebCoreResourceHandleAsDelegate connectionDidFinishLoading:] + 261 (ResourceHandleMac.mm:878)
46  com.apple.Foundation          	0x00007fff8ca0465a ___NSURLConnectionDidFinishLoading_block_invoke_1 + 122
47  com.apple.Foundation          	0x00007fff8ca045da _NSURLConnectionDidFinishLoading + 81
48  com.apple.CFNetwork           	0x00007fff8f3bc19a URLConnectionClient::_clientDidFinishLoading(URLConnectionClient::ClientConnectionEventQueue*) + 296
49  com.apple.CFNetwork           	0x00007fff8f46be62 URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo&lt;XClientEvent, XClientEventParams&gt;*, long) + 862
50  com.apple.CFNetwork           	0x00007fff8f3970e1 URLConnectionClient::processEvents() + 185
51  com.apple.CFNetwork           	0x00007fff8f396f86 MultiplexerSource::perform() + 212
52  com.apple.CoreFoundation      	0x00007fff8a177c51 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
53  com.apple.CoreFoundation      	0x00007fff8a1774bd __CFRunLoopDoSources0 + 253
54  com.apple.CoreFoundation      	0x00007fff8a19e2d9 __CFRunLoopRun + 905
55  com.apple.CoreFoundation      	0x00007fff8a19dc16 CFRunLoopRunSpecific + 230
56  com.apple.Foundation          	0x00007fff8c9a7f97 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 267
57  DumpRenderTree                	0x000000010fa26508 _ZL7runTestRKSs + 3016 (DumpRenderTree.mm:1156)
58  DumpRenderTree                	0x000000010fa2587f _ZL20runTestingServerLoopv + 223 (DumpRenderTree.mm:632)
59  DumpRenderTree                	0x000000010fa25159 dumpRenderTree(int, char const**) + 361 (DumpRenderTree.mm:685)
60  DumpRenderTree                	0x000000010fa26c9c main + 124 (DumpRenderTree.mm:726)
61  DumpRenderTree                	0x000000010fa12c74 start + 52</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448208</commentid>
    <comment_count>3</comment_count>
      <attachid>103279</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 13:14:02 -0700</bug_when>
    <thetext>Comment on attachment 103279
ROLLOUT of r92610

Clearing flags on attachment: 103279

Committed r92626: &lt;http://trac.webkit.org/changeset/92626&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448209</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 13:14:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448230</commentid>
    <comment_count>5</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-08-08 13:31:12 -0700</bug_when>
    <thetext>I&apos;ve added https://bugs.webkit.org/show_bug.cgi?id=65871 and submitted a fix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103279</attachid>
            <date>2011-08-08 12:55:08 -0700</date>
            <delta_ts>2011-08-08 13:14:02 -0700</delta_ts>
            <desc>ROLLOUT of r92610</desc>
            <filename>bug-65868-20110808195440.patch</filename>
            <type>text/plain</type>
            <size>51061</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI2MjEKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
Q2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDhlZDY0OGU1ZTMz
ZGY5ZTQ5NDFmODdlYzU5YjZjMWMwMGJhY2QzYS4uZmIyYjk0NGRhNWU0NzI5ZjM2ZGI1YWJlOTBi
ZTVjZDE2NWUxODNlYiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0wOC0w
OCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjkyNjEwLgorICAgICAgICBodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC85MjYxMAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjU4NjgKKworICAgICAgICBDYXVzZWQgYXNzZXJ0aW9uIGZhaWx1cmVz
IHdoZW4gcnVubmluZyBmYXN0L211bHRpY29sIHRlc3RzCisgICAgICAgIChSZXF1ZXN0ZWQgYnkg
YW5kZXJzY2Egb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBMYXlvdXQvZmxvYXRzLmh0bWw6CisK
IDIwMTEtMDgtMDggIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgogCiAg
ICAgICAgIE9wdGltaXplIGZsb2F0aW5nIGVsZW1lbnRzIGxvb2t1cApkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9MYXlvdXQvZmxvYXRzLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0xheW91
dC9mbG9hdHMuaHRtbAppbmRleCA1MmY5NWJhMDRlMjA0YjcxMjY1MWRmMzAzMTgwOWJjNDRhNjFh
MGMzLi42NzgwNWQ4OGY5N2EwZDI4Y2Q2M2JiZWZjZmQ0MmZmZjU1ZjdjNjc3IDEwMDY0NAotLS0g
YS9QZXJmb3JtYW5jZVRlc3RzL0xheW91dC9mbG9hdHMuaHRtbAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL0xheW91dC9mbG9hdHMuaHRtbApAQCAtMzAsMTcgKzMwLDEyIEBACiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVsOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBjcmVh
dGVTZXQod2lkdGgsIGhlaWdodCwgbmVzdGVkKQorICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRl
U2V0KHdpZHRoLCBoZWlnaHQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdmFyIGNv
bnRhaW5lciA9IGNyZWF0ZUVsZW1lbnQoImRpdiIsIGRvY3VtZW50LmJvZHksICJjb250YWluZXIi
KTsKICAgICAgICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7CiAg
ICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgd2lkdGg7ICsreCkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoImRpdiIsIGNvbnRhaW5lciwgImZsb2F0
IiwgImZsb2F0IiArIHggKyAiXyIgKyB5KTsKLQotICAgICAgICAgICAgICAgICAgICB2YXIgbmVz
dGVkQ29udGFpbmVyID0gY29udGFpbmVyOwotICAgICAgICAgICAgICAgICAgICBmb3IgKCA7IG5l
c3RlZCA+IDA7IC0tbmVzdGVkKQotICAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkQ29udGFp
bmVyID0gY3JlYXRlRWxlbWVudCgiZGl2IiwgbmVzdGVkQ29udGFpbmVyLCAibmVzdGVkIiwgIm5l
c3RlZCIgKyB4ICsgIl8iICsgbmVzdGVkKTsKLSAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoImRpdiIsIGNvbnRhaW5lciwgImZsb2F0LWVuZCIs
ICJlbmQiICsgeCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC01MiwxNCAr
NDcsMTIgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gc3RyMTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgZnVuY3Rpb24gdGVzdCh3aWR0aCwgaGVpZ2h0LCBuZXN0ZWQpIAorICAgICAg
ICAgICAgZnVuY3Rpb24gdGVzdCh3aWR0aCwgaGVpZ2h0KSAKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBuZXN0ZWQgPSBuZXN0ZWQgfHwgMDsKLQogICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0X3BhbmVsIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsK
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWVyYXRlX3BhbmVs
Iikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAKLSAgICAgICAgICAgICAgICBjcmVhdGVTZXQo
d2lkdGgsIGhlaWdodCwgbmVzdGVkKTsKKyAgICAgICAgICAgICAgICBjcmVhdGVTZXQod2lkdGgs
IGhlaWdodCk7CiAgICAgICAgICAgICAgICAgdmFyIHVwZGF0ZXMgPSAwOwogICAgICAgICAgICAg
ICAgIHZhciBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpOwogCkBAIC05OCwxMSArOTEsNiBAQAogICAg
ICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJ0ZXN0KDIwLCAxMDApIj4yMCBieSAxMDA8L2J1dHRv
bj4KICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0idGVzdCg1MCwgMTAwKSI+NTAgYnkgMTAw
PC9idXR0b24+CiAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InRlc3QoMTAwLCAxMDApIj4x
MDAgYnkgMTAwPC9idXR0b24+Ci0gICAgICAgICAgICA8cD5OZXN0ZWQgZGl2czo8L3A+Ci0gICAg
ICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InRlc3QoMiwgMTAwLCAxMDApIj4yIGJ5IDEwMCwgMTAw
IG5lc3RlZDwvYnV0dG9uPgotICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJ0ZXN0KDIwLCAx
MDAsIDEwMCkiPjIwIGJ5IDEwMCwgMTAwIG5lc3RlZDwvYnV0dG9uPgotICAgICAgICAgICAgPGJ1
dHRvbiBvbmNsaWNrPSJ0ZXN0KDUwLCAxMDAsIDEwMCkiPjUwIGJ5IDEwMCwgMTAwIG5lc3RlZDwv
YnV0dG9uPgotICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJ0ZXN0KDEwMCwgMTAwLCAxMDAp
Ij4xMDAgYnkgMTAwLCAxMDAgbmVzdGVkPC9idXR0b24+CiAgICAgICAgIDwvZGl2PgogICAgIDwv
Ym9keT4KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
N2E1NTIyMzQxNDQ0ZjJhNzQ2ODUzNmIwMmViYmQ1NTIxNTEzZDQwMC4uZTVjYWIxMzJjNzMzNjQx
YTk1YzQxMjJkOTRiYzYyNDU1YjdhYTYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisy
MDExLTA4LTA4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKwor
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTI2MTAuCisgICAgICAgIGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyNjEwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTg2OAorCisgICAgICAgIENhdXNlZCBhc3NlcnRpb24g
ZmFpbHVyZXMgd2hlbiBydW5uaW5nIGZhc3QvbXVsdGljb2wgdGVzdHMKKyAgICAgICAgKFJlcXVl
c3RlZCBieSBhbmRlcnNjYSBvbiAjd2Via2l0KS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9QT0RJbnRlcnZhbFRyZWUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBPREludGVydmFsVHJlZTo6YWxsT3ZlcmxhcHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UE9ESW50ZXJ2YWxUcmVlOjpzZWFyY2hGb3JPdmVybGFwc0Zyb20pOgor
ICAgICAgICAqIHBsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UE9EUmVkQmxhY2tUcmVlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6UE9EUmVkQmxhY2tUcmVl
OjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6UE9EUmVkQmxhY2tUcmVlOjpjb250YWlucyk6
CisgICAgICAgIChXZWJDb3JlOjpQT0RSZWRCbGFja1RyZWU6OnZpc2l0SW5vcmRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpQT0RSZWRCbGFja1RyZWU6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
UE9EUmVkQmxhY2tUcmVlOjpjaGVja0ludmFyaWFudHMpOgorICAgICAgICAoV2ViQ29yZTo6UE9E
UmVkQmxhY2tUcmVlOjpkdW1wKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGRPdmVyZmxvd0Zyb21GbG9hdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJlcGFpbnRPdmVyaGFuZ2luZ0Zsb2F0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnRGbG9hdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OnNlbGVjdGlvbkdhcHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6Omluc2VydEZsb2F0aW5nT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpyZW1vdmVGbG9hdGluZ09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6cmVtb3ZlRmxvYXRpbmdPYmplY3RzQmVsb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
Ojpsb2dpY2FsTGVmdE9mZnNldEZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmxvZ2ljYWxSaWdodE9mZnNldEZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6Om5leHRGbG9hdExvZ2ljYWxCb3R0b21CZWxvdyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6bG93ZXN0RmxvYXRMb2dpY2FsQm90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjphZGRQb3NpdGlvbmVkRmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpjbGVhckZsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
YWRkT3ZlcmhhbmdpbmdGbG9hdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Omhh
c092ZXJoYW5naW5nRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkZElu
dHJ1ZGluZ0Zsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bWFya1NpYmxp
bmdzV2l0aEZsb2F0c0ZvckxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
aGl0VGVzdEZsb2F0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRqdXN0Rm9y
Qm9yZGVyRml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVj
dHM6OmNsZWFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6RmxvYXRpbmdPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0OjpzZXRYKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6c2V0WSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OnNldFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6c2V0SGVpZ2h0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6c2V0RnJhbWVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdHM6OkZs
b2F0aW5nT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6RmxvYXRpbmdP
YmplY3RzOjpzZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dFJ1bnNBbmRGbG9hdHNJ
blJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsaW5rVG9FbmRMaW5lSWZO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Om1hdGNoZWRFbmRMaW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwb3NpdGlvbk5ld0Zsb2F0T25MaW5lKToK
KwogMjAxMS0wOC0wOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZW1vdmUgcmVkdW5kYW50IGlubGluZSBzdHlsZXMgZnJvbSB0aGUgcGFzdGVkIGNvbnRlbnRz
IG1vcmUgYWdncmVzc2l2ZWx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDg5NTAxMzE3YTNiOWVjMGRiMTE2NzMwNzM2Yjc1ZDJi
Y2Y4NWQzMC4uN2Q2ZjdhZTM5ODY5NzE1M2Y0Y2ZkZjU1OGQ2NTgzZTEwYTQzODViOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTMzNiwxMCArMTMzNiw2IEBACiAJCTUwMUJBQUE5MTM5NTBFMkMwMEY3QUNFQiAvKiBXaW5kUnVs
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAxQkFB
QTgxMzk1MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTA4Q0NBNEYxM0NGMTA2QjAwMzE1MUYzIC8qIFJl
bmRlckZsb3dUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmggKi87
IH07CiAJCTUwOENDQTUwMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwOENDQTRFMTND
RjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCAqLzsgfTsKLQkJNTA5N0M1QTMx
M0VBQkE3RTAwMkRFNEFGIC8qIFBPREFyZW5hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MDk3QzU5RjEzRUFCQTdFMDAyREU0QUYgLyogUE9EQXJlbmEu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MDk3
QzVBNDEzRUFCQTdFMDAyREU0QUYgLyogUE9ESW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwOTdDNUEwMTNFQUJBN0UwMDJERTRBRiAvKiBQ
T0RJbnRlcnZhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTUwOTdDNUE1MTNFQUJBN0UwMDJERTRBRiAvKiBQT0RJbnRlcnZhbFRyZWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwOTdDNUExMTNFQUJB
N0UwMDJERTRBRiAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MDk3QzVBNjEzRUFCQTdFMDAyREU0QUYgLyogUE9E
UmVkQmxhY2tUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MDk3QzVBMjEzRUFCQTdFMDAyREU0QUYgLyogUE9EUmVkQmxhY2tUcmVlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTBFNTY2RDYxMzlF
MzhDNTAwMjE0NDMzIC8qIENTU1dyYXBTaGFwZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAxQkFBQjExMzk1MTE0QjAwRjdBQ0VCIC8qIENTU1dy
YXBTaGFwZXMuY3BwICovOyB9OwogCQk1MTAxODQ2OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVk
UGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
MTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTAxODQ2QTBCMDg2MDJBMDA0QTgyNUYg
LyogQ2FjaGVkUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi87IH07
CkBAIC03OTQxLDEwICs3OTM3LDYgQEAKIAkJNTAxQkFBQjExMzk1MTE0QjAwRjdBQ0VCIC8qIENT
U1dyYXBTaGFwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NT
V3JhcFNoYXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwOENDQTREMTND
RjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbmRlckZsb3dUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRmxvd1RocmVhZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUwOTdDNTlGMTNFQUJBN0UwMDJERTRBRiAv
KiBQT0RBcmVuYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQT0RBcmVuYS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MDk3QzVBMDEzRUFCQTdFMDAyREU0QUYg
LyogUE9ESW50ZXJ2YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUE9ESW50
ZXJ2YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTA5N0M1QTExM0VBQkE3RTAw
MkRFNEFGIC8qIFBPREludGVydmFsVHJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQT0RJbnRlcnZhbFRyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTA5
N0M1QTIxM0VBQkE3RTAwMkRFNEFGIC8qIFBPRFJlZEJsYWNrVHJlZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQT0RSZWRCbGFja1RyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQYWdlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8q
IFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTkwMTYsMTAgKzE5MDA4LDYgQEAKIAkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIz
IC8qIHBsYXRmb3JtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQk1MDk3QzU5RjEzRUFCQTdFMDAyREU0QUYgLyogUE9EQXJlbmEuaCAqLywKLQkJCQk1MDk3
QzVBMDEzRUFCQTdFMDAyREU0QUYgLyogUE9ESW50ZXJ2YWwuaCAqLywKLQkJCQk1MDk3QzVBMTEz
RUFCQTdFMDAyREU0QUYgLyogUE9ESW50ZXJ2YWxUcmVlLmggKi8sCi0JCQkJNTA5N0M1QTIxM0VB
QkE3RTAwMkRFNEFGIC8qIFBPRFJlZEJsYWNrVHJlZS5oICovLAogCQkJCTQ5RTkxMkE0MEVGQUM4
RTYwMDlEMENBRiAvKiBhbmltYXRpb24gKi8sCiAJCQkJRkQzMTYwNDAxMkIwMjZBMzAwQzFBMzU5
IC8qIGF1ZGlvICovLAogCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLywKQEAg
LTIzMzY2LDEwICsyMzM1NCw2IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhT
TFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEz
Mzc5IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzUzMTM3QjY1MTgw
MDAwOERDRSAvKiBaZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTA5N0M1QTMxM0VBQkE3
RTAwMkRFNEFGIC8qIFBPREFyZW5hLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MDk3QzVBNDEzRUFC
QTdFMDAyREU0QUYgLyogUE9ESW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTUwOTdDNUE1
MTNFQUJBN0UwMDJERTRBRiAvKiBQT0RJbnRlcnZhbFRyZWUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTUwOTdDNUE2MTNFQUJBN0UwMDJERTRBRiAvKiBQT0RSZWRCbGFja1RyZWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZhbFRyZWUuaAppbmRleCA5NjIz
M2M1NTgyYjUzY2ZkYTI1ZjRhNzI5ZTNmMzIwYThlN2MzM2RjLi41YmYzZGUwNzI3MDdjODU0ZGZh
NDkwYzg5YzdiZDhlOGMxOGJmNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QT0RJbnRlcnZhbFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJbnRl
cnZhbFRyZWUuaApAQCAtNDAsMzIgKzQwLDYgQEAgdGVtcGxhdGU8Y2xhc3MgVD4KIHN0cnVjdCBW
YWx1ZVRvU3RyaW5nOwogI2VuZGlmCiAKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVc2VyRGF0
YSA9IHZvaWQqPgotY2xhc3MgUE9ESW50ZXJ2YWxTZWFyY2hBZGFwdGVyIHsKLXB1YmxpYzoKLSAg
ICB0eXBlZGVmIFBPREludGVydmFsPFQsIFVzZXJEYXRhPiBJbnRlcnZhbFR5cGU7Ci0gICAgCi0g
ICAgUE9ESW50ZXJ2YWxTZWFyY2hBZGFwdGVyKFZlY3RvcjxJbnRlcnZhbFR5cGU+JiByZXN1bHQs
IGNvbnN0IFQmIGxvd1ZhbHVlLCBjb25zdCBUJiBoaWdoVmFsdWUpCi0gICAgICAgIDogbV9yZXN1
bHQocmVzdWx0KQotICAgICAgICAsIG1fbG93VmFsdWUobG93VmFsdWUpCi0gICAgICAgICwgbV9o
aWdoVmFsdWUoaGlnaFZhbHVlKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgY29uc3QgVCYgbG93
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2xvd1ZhbHVlOyB9Ci0gICAgY29uc3QgVCYgaGlnaFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9oaWdoVmFsdWU7IH0KLSAgICB2b2lkIGNvbGxlY3RJZk5l
ZWRlZChjb25zdCBJbnRlcnZhbFR5cGUmIGRhdGEpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAo
ZGF0YS5vdmVybGFwcyhtX2xvd1ZhbHVlLCBtX2hpZ2hWYWx1ZSkpCi0gICAgICAgICAgICBtX3Jl
c3VsdC5hcHBlbmQoZGF0YSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFZlY3RvcjxJbnRlcnZh
bFR5cGU+JiBtX3Jlc3VsdDsKLSAgICBUIG1fbG93VmFsdWU7Ci0gICAgVCBtX2hpZ2hWYWx1ZTsK
LX07Ci0KIC8vIEFuIGludGVydmFsIHRyZWUsIHdoaWNoIGlzIGEgZm9ybSBvZiBhdWdtZW50ZWQg
cmVkLWJsYWNrIHRyZWUuIEl0CiAvLyBzdXBwb3J0cyBlZmZpY2llbnQgKE8obGcgbikpIGluc2Vy
dGlvbiwgcmVtb3ZhbCBhbmQgcXVlcnlpbmcgb2YKIC8vIGludGVydmFscyBpbiB0aGUgdHJlZS4K
QEAgLTc2LDE0ICs1MCw3IEBAIHB1YmxpYzoKICAgICAvLyBUeXBlZGVmIHRvIHJlZHVjZSB0eXBp
bmcgd2hlbiBkZWNsYXJpbmcgaW50ZXJ2YWxzIHRvIGJlIHN0b3JlZCBpbgogICAgIC8vIHRoaXMg
dHJlZS4KICAgICB0eXBlZGVmIFBPREludGVydmFsPFQsIFVzZXJEYXRhPiBJbnRlcnZhbFR5cGU7
Ci0gICAgdHlwZWRlZiBQT0RJbnRlcnZhbFNlYXJjaEFkYXB0ZXI8VCwgVXNlckRhdGE+IEludGVy
dmFsU2VhcmNoQWRhcHRlclR5cGU7CiAKLSAgICBQT0RJbnRlcnZhbFRyZWUoVW5pbml0aWFsaXpl
ZFRyZWVFbnVtIHVuaXRpYWxpemVkVHJlZSkKLSAgICAgICAgOiBQT0RSZWRCbGFja1RyZWU8SW50
ZXJ2YWxUeXBlPih1bml0aWFsaXplZFRyZWUpCi0gICAgewotICAgICAgICBpbml0KCk7Ci0gICAg
fQotICAgIAogICAgIFBPREludGVydmFsVHJlZSgpCiAgICAgICAgIDogUE9EUmVkQmxhY2tUcmVl
PEludGVydmFsVHlwZT4oKQogICAgIHsKQEAgLTExMywxNiArODAsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICAvLyBFeHBsaWNpdCBkZXJlZmVyZW5jZSBvZiAidGhpcyIgcmVxdWlyZWQgYmVj
YXVzZSBvZgogICAgICAgICAvLyBpbmhlcml0YW5jZSBydWxlcyBpbiB0ZW1wbGF0ZSBjbGFzc2Vz
LgotICAgICAgICBJbnRlcnZhbFNlYXJjaEFkYXB0ZXJUeXBlIGFkYXB0ZXIocmVzdWx0LCBpbnRl
cnZhbC5sb3coKSwgaW50ZXJ2YWwuaGlnaCgpKTsKLSAgICAgICAgc2VhcmNoRm9yT3ZlcmxhcHNG
cm9tPEludGVydmFsU2VhcmNoQWRhcHRlclR5cGU+KHRoaXMtPnJvb3QoKSwgYWRhcHRlcik7Ci0g
ICAgfQotICAgIAotICAgIHRlbXBsYXRlIDxjbGFzcyBBZGFwdGVyVHlwZT4KLSAgICB2b2lkIGFs
bE92ZXJsYXBzV2l0aEFkYXB0ZXIoQWRhcHRlclR5cGUmIGFkYXB0ZXIpIGNvbnN0Ci0gICAgewot
ICAgICAgICAvLyBFeHBsaWNpdCBkZXJlZmVyZW5jZSBvZiAidGhpcyIgcmVxdWlyZWQgYmVjYXVz
ZSBvZgotICAgICAgICAvLyBpbmhlcml0YW5jZSBydWxlcyBpbiB0ZW1wbGF0ZSBjbGFzc2VzLgot
ICAgICAgICBzZWFyY2hGb3JPdmVybGFwc0Zyb208QWRhcHRlclR5cGU+KHRoaXMtPnJvb3QoKSwg
YWRhcHRlcik7CisgICAgICAgIHNlYXJjaEZvck92ZXJsYXBzRnJvbSh0aGlzLT5yb290KCksIGlu
dGVydmFsLCByZXN1bHQpOwogICAgIH0KIAogICAgIC8vIEhlbHBlciB0byBjcmVhdGUgaW50ZXJ2
YWwgb2JqZWN0cy4KQEAgLTE1NCw4ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIC8vIFN0YXJ0aW5n
IGZyb20gdGhlIGdpdmVuIG5vZGUsIGFkZHMgYWxsIG92ZXJsYXBzIHdpdGggdGhlIGdpdmVuCiAg
ICAgLy8gaW50ZXJ2YWwgdG8gdGhlIHJlc3VsdCB2ZWN0b3IuIFRoZSBpbnRlcnZhbHMgYXJlIHNv
cnRlZCBieQogICAgIC8vIGluY3JlYXNpbmcgbG93IGVuZHBvaW50LgotICAgIHRlbXBsYXRlIDxj
bGFzcyBBZGFwdGVyVHlwZT4KLSAgICB2b2lkIHNlYXJjaEZvck92ZXJsYXBzRnJvbShJbnRlcnZh
bE5vZGUqIG5vZGUsIEFkYXB0ZXJUeXBlJiBhZGFwdGVyKSBjb25zdAorICAgIHZvaWQgc2VhcmNo
Rm9yT3ZlcmxhcHNGcm9tKEludGVydmFsTm9kZSogbm9kZSwgY29uc3QgSW50ZXJ2YWxUeXBlJiBp
bnRlcnZhbCwgVmVjdG9yPEludGVydmFsVHlwZT4mIHJlcykgY29uc3QKICAgICB7CiAgICAgICAg
IGlmICghbm9kZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2OCwxNyArMTI1LDE4IEBAIHBy
aXZhdGU6CiAgICAgICAgIGlmIChsZWZ0CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHBocmFzZWQg
dGhpcyB3YXkgdG8gYXZvaWQgdGhlIG5lZWQgZm9yIG9wZXJhdG9yCiAgICAgICAgICAgICAvLyA8
PSBvbiB0eXBlIFQuCi0gICAgICAgICAgICAmJiAhKGxlZnQtPmRhdGEoKS5tYXhIaWdoKCkgPCBh
ZGFwdGVyLmxvd1ZhbHVlKCkpKQotICAgICAgICAgICAgc2VhcmNoRm9yT3ZlcmxhcHNGcm9tPEFk
YXB0ZXJUeXBlPihsZWZ0LCBhZGFwdGVyKTsKKyAgICAgICAgICAgICYmICEobGVmdC0+ZGF0YSgp
Lm1heEhpZ2goKSA8IGludGVydmFsLmxvdygpKSkKKyAgICAgICAgICAgIHNlYXJjaEZvck92ZXJs
YXBzRnJvbShsZWZ0LCBpbnRlcnZhbCwgcmVzKTsKIAogICAgICAgICAvLyBDaGVjayBmb3Igb3Zl
cmxhcCB3aXRoIGN1cnJlbnQgbm9kZS4KLSAgICAgICAgYWRhcHRlci5jb2xsZWN0SWZOZWVkZWQo
bm9kZS0+ZGF0YSgpKTsKKyAgICAgICAgaWYgKG5vZGUtPmRhdGEoKS5vdmVybGFwcyhpbnRlcnZh
bCkpCisgICAgICAgICAgICByZXMuYXBwZW5kKG5vZGUtPmRhdGEoKSk7CiAKICAgICAgICAgLy8g
U2VlIHdoZXRoZXIgd2UgbmVlZCB0byB0cmF2ZXJzZSB0aGUgcmlnaHQgc3VidHJlZS4KICAgICAg
ICAgLy8gVGhpcyBpcyBwaHJhc2VkIHRoaXMgd2F5IHRvIGF2b2lkIHRoZSBuZWVkIGZvciBvcGVy
YXRvciA8PQogICAgICAgICAvLyBvbiB0eXBlIFQuCi0gICAgICAgIGlmICghKGFkYXB0ZXIuaGln
aFZhbHVlKCkgPCBub2RlLT5kYXRhKCkubG93KCkpKQotICAgICAgICAgICAgc2VhcmNoRm9yT3Zl
cmxhcHNGcm9tPEFkYXB0ZXJUeXBlPihub2RlLT5yaWdodCgpLCBhZGFwdGVyKTsKKyAgICAgICAg
aWYgKCEoaW50ZXJ2YWwuaGlnaCgpIDwgbm9kZS0+ZGF0YSgpLmxvdygpKSkKKyAgICAgICAgICAg
IHNlYXJjaEZvck92ZXJsYXBzRnJvbShub2RlLT5yaWdodCgpLCBpbnRlcnZhbCwgcmVzKTsKICAg
ICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlTm9kZShJbnRlcnZhbE5vZGUqIG5vZGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RSZWRCbGFja1RyZWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5oCmluZGV4IDFjMmNjODRhNDE3
YTU3ZWEyMzEzMzI5YmNhOTJiMjg3ZTgzMDY5YmIuLjgzYjIxNzZiMDYxNzQ4ODZkMjQwNWE1NThj
NDUzMzQxMjA0MTZlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPRFJl
ZEJsYWNrVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPRFJlZEJsYWNrVHJl
ZS5oCkBAIC05MCwxMCArOTAsNiBAQCB0ZW1wbGF0ZTxjbGFzcyBUPgogc3RydWN0IFZhbHVlVG9T
dHJpbmc7CiAjZW5kaWYKIAotZW51bSBVbmluaXRpYWxpemVkVHJlZUVudW0gewotICAgIFVuaW5p
dGlhbGl6ZWRUcmVlCi19OwotCiB0ZW1wbGF0ZTxjbGFzcyBUPgogY2xhc3MgUE9EUmVkQmxhY2tU
cmVlIHsKIHB1YmxpYzoKQEAgLTEwNSwxOSArMTAxLDYgQEAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIH5WaXNpdG9yKCkgeyB9CiAgICAgfTsKIAotICAgIC8vIENvbnN0cnVjdHMgYSBuZXcgcmVk
LWJsYWNrIHRyZWUgd2l0aG91dCBhbGxvY2F0aW5nIGFuIGFyZW5hLgotICAgIC8vIGlzSW5pdGlh
bGl6ZWQgd2lsbCByZXR1cm4gZmFsc2UgaW4gdGhpcyBjYXNlLiBpbml0SWZOZWVkZWQgY2FuIGJl
IHVzZWQKLSAgICAvLyB0byBpbml0IHRoZSBzdHJ1Y3R1cmUuIFRoaXMgY29uc3RydWN0b3IgaXMg
dXNlZnVsbCBmb3IgY3JlYXRpbmcKLSAgICAvLyBsYXp5IGluaXRpYWxpemVkIHRyZWUuCi0gICAg
UE9EUmVkQmxhY2tUcmVlKFVuaW5pdGlhbGl6ZWRUcmVlRW51bSkKLSAgICAgICAgOiBtX3Jvb3Qo
MCkKLSAgICAgICAgLCBtX25lZWRzRnVsbE9yZGVyaW5nQ29tcGFyaXNvbnMoZmFsc2UpCi0jaWZu
ZGVmIE5ERUJVRwotICAgICAgICAsIG1fdmVyYm9zZURlYnVnZ2luZyhmYWxzZSkKLSNlbmRpZgot
ICAgIHsKLSAgICB9Ci0KICAgICAvLyBDb25zdHJ1Y3RzIGEgbmV3IHJlZC1ibGFjayB0cmVlLCBh
bGxvY2F0aW5nIHRlbXBvcmFyeSBvYmplY3RzCiAgICAgLy8gZnJvbSBhIG5ld2x5IGNvbnN0cnVj
dGVkIFBPREFyZW5hLgogICAgIFBPRFJlZEJsYWNrVHJlZSgpCkBAIC0xNDQsMjggKzEyNyw4IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflBPRFJlZEJsYWNrVHJlZSgpIHsgfQogCi0gICAgLy8g
Q2xlYXJpbmcgd2lsbCBkZWxldGUgdGhlIGNvbnRlbnRzIG9mIHRoZSB0cmVlLiBBZnRlciB0aGlz
IGNhbGwKLSAgICAvLyBpc0luaXRpYWxpemVkIHdpbGwgcmV0dXJuIGZhbHNlLgotICAgIHZvaWQg
Y2xlYXIoKQotICAgIHsKLSAgICAgICAgbV9hcmVuYSA9IDA7Ci0gICAgICAgIG1fcm9vdCA9IDA7
Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9hcmVuYTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBpbml0SWZOZWVkZWQo
KQotICAgIHsKLSAgICAgICAgaWYgKCFtX2FyZW5hKQotICAgICAgICAgICAgbV9hcmVuYSA9IFBP
REFyZW5hOjpjcmVhdGUoKTsKLSAgICB9Ci0KICAgICB2b2lkIGFkZChjb25zdCBUJiBkYXRhKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgICAgIE5vZGUqIG5v
ZGUgPSBtX2FyZW5hLT5hbGxvY2F0ZU9iamVjdDxOb2RlLCBUPihkYXRhKTsKICAgICAgICAgaW5z
ZXJ0Tm9kZShub2RlKTsKICAgICB9CkBAIC0xNzMsNyArMTM2LDYgQEAgcHVibGljOgogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgZGF0dW0gd2FzIGZvdW5kIGluIHRoZSB0cmVlLgogICAgIGJv
b2wgcmVtb3ZlKGNvbnN0IFQmIGRhdGEpCiAgICAgewotICAgICAgICBBU1NFUlQoaXNJbml0aWFs
aXplZCgpKTsKICAgICAgICAgTm9kZSogbm9kZSA9IHRyZWVTZWFyY2goZGF0YSk7CiAgICAgICAg
IGlmIChub2RlKSB7CiAgICAgICAgICAgICBkZWxldGVOb2RlKG5vZGUpOwpAQCAtMTgyLDE1ICsx
NDQsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYm9v
bCBjb250YWlucyhjb25zdCBUJiBkYXRhKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGlz
SW5pdGlhbGl6ZWQoKSk7Ci0gICAgICAgIHJldHVybiB0cmVlU2VhcmNoKGRhdGEpOwotICAgIH0K
KyAgICBib29sIGNvbnRhaW5zKGNvbnN0IFQmIGRhdGEpIGNvbnN0IHsgcmV0dXJuIHRyZWVTZWFy
Y2goZGF0YSk7IH0KIAogICAgIHZvaWQgdmlzaXRJbm9yZGVyKFZpc2l0b3IqIHZpc2l0b3IpIGNv
bnN0CiAgICAgewotICAgICAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKICAgICAgICAgaWYg
KCFtX3Jvb3QpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHZpc2l0SW5vcmRlckltcGwo
bV9yb290LCB2aXNpdG9yKTsKQEAgLTE5OCw3ICsxNTUsNiBAQCBwdWJsaWM6CiAKICAgICBpbnQg
c2l6ZSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKICAg
ICAgICAgQ291bnRlciBjb3VudGVyOwogICAgICAgICB2aXNpdElub3JkZXIoJmNvdW50ZXIpOwog
ICAgICAgICByZXR1cm4gY291bnRlci5jb3VudCgpOwpAQCAtMjEyLDcgKzE2OCw2IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgYm9vbCBjaGVja0ludmFyaWFudHMoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7CiAgICAgICAgIGludCBibGFja0NvdW50Owog
ICAgICAgICByZXR1cm4gY2hlY2tJbnZhcmlhbnRzRnJvbU5vZGUobV9yb290LCAmYmxhY2tDb3Vu
dCk7CiAgICAgfQpAQCAtMjIyLDggKzE3Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBkZWJ1Z2dpbmcg
cHVycG9zZXMuCiAgICAgdm9pZCBkdW1wKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChtX2Fy
ZW5hKQotICAgICAgICAgICAgZHVtcEZyb21Ob2RlKG1fcm9vdCwgMCk7CisgICAgICAgIGR1bXBG
cm9tTm9kZShtX3Jvb3QsIDApOwogICAgIH0KIAogICAgIC8vIFR1cm5zIG9uIG9yIG9mZiB2ZXJi
b3NlIGRlYnVnZ2luZyBvZiB0aGUgdHJlZSwgY2F1c2luZyBtYW55CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCAzNzBjMjI1NzRmMDg4NzczN2ZjY2UzZGI2ZTRk
NzlhMTc4YzA5Yjc3Li4yNjMyZGQ1M2YyOWY5NDk4NWI4NTEzYTA4NzBkYzE3YTUzYjUwY2UyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTI3NCw3ICsyNzQs
NyBAQCB2b2lkIFJlbmRlckJsb2NrOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eQogICAgIGJvb2wgY2FuUHJvcGFnYXRlRmxvYXRJ
bnRvU2libGluZyA9ICFpc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkgJiYgIWF2b2lkc0Zsb2F0cygp
OwogICAgIGlmIChkaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91dCAmJiBzX2NhblByb3BhZ2F0
ZUZsb2F0SW50b1NpYmxpbmcgJiYgIWNhblByb3BhZ2F0ZUZsb2F0SW50b1NpYmxpbmcgJiYgaGFz
T3ZlcmhhbmdpbmdGbG9hdHMoKSkgewogICAgICAgICBSZW5kZXJCbG9jayogcGFyZW50QmxvY2sg
PSB0aGlzOwotICAgICAgICBjb25zdCBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RT
ZXQgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7CisgICAgICAgIEZsb2F0aW5nT2JqZWN0U2V0
JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKICAgICAgICAg
RmxvYXRpbmdPYmplY3RTZXRJdGVyYXRvciBlbmQgPSBmbG9hdGluZ09iamVjdFNldC5lbmQoKTsK
IAogICAgICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VyciA9IHBhcmVudCgpOyBjdXJyICYmICFj
dXJyLT5pc1JlbmRlclZpZXcoKTsgY3VyciA9IGN1cnItPnBhcmVudCgpKSB7CkBAIC0xNDM2LDcg
KzE0MzYsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRPdmVyZmxvd0Zyb21GbG9hdHMoKQogICAg
IGlmICghbV9mbG9hdGluZ09iamVjdHMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IEZs
b2F0aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5z
ZXQoKTsKKyAgICBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zsb2F0
aW5nT2JqZWN0cy0+c2V0KCk7CiAgICAgRmxvYXRpbmdPYmplY3RTZXRJdGVyYXRvciBlbmQgPSBm
bG9hdGluZ09iamVjdFNldC5lbmQoKTsKICAgICBmb3IgKEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0
b3IgaXQgPSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAg
ICAgICAgRmxvYXRpbmdPYmplY3QqIHIgPSAqaXQ7CkBAIC0yMjk0LDcgKzIyOTQsNyBAQCB2b2lk
IFJlbmRlckJsb2NrOjpyZXBhaW50T3ZlcmhhbmdpbmdGbG9hdHMoYm9vbCBwYWludEFsbERlc2Nl
bmRhbnRzKQogICAgIC8vIEZJWE1FOiBBdm9pZCBkaXNhYmxpbmcgTGF5b3V0U3RhdGUuIEF0IHRo
ZSB2ZXJ5IGxlYXN0LCBkb24ndCBkaXNhYmxlIGl0IGZvciBmbG9hdHMgb3JpZ2luYXRpbmcKICAg
ICAvLyBpbiB0aGlzIGJsb2NrLiBCZXR0ZXIgeWV0IHdvdWxkIGJlIHRvIHB1c2ggZXh0cmEgc3Rh
dGUgZm9yIHRoZSBjb250YWluZXJzIG9mIG90aGVyIGZsb2F0cy4KICAgICBMYXlvdXRTdGF0ZURp
c2FibGVyIGxheW91dFN0YXRlRGlzYWJsZXIodmlldygpKTsKLSAgICBjb25zdCBGbG9hdGluZ09i
amVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7Cisg
ICAgRmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5nT2JqZWN0U2V0ID0gbV9mbG9hdGluZ09iamVj
dHMtPnNldCgpOwogICAgIEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgZW5kID0gZmxvYXRpbmdP
YmplY3RTZXQuZW5kKCk7CiAgICAgZm9yIChGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIGl0ID0g
ZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIEZs
b2F0aW5nT2JqZWN0KiByID0gKml0OwpAQCAtMjYyNyw3ICsyNjI3LDcgQEAgdm9pZCBSZW5kZXJC
bG9jazo6cGFpbnRGbG9hdHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnMKICAgICBpZiAoIW1fZmxvYXRpbmdPYmplY3RzKQogICAgICAgICByZXR1cm47
CiAKLSAgICBjb25zdCBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zs
b2F0aW5nT2JqZWN0cy0+c2V0KCk7CisgICAgRmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5nT2Jq
ZWN0U2V0ID0gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpOwogICAgIEZsb2F0aW5nT2JqZWN0U2V0
SXRlcmF0b3IgZW5kID0gZmxvYXRpbmdPYmplY3RTZXQuZW5kKCk7CiAgICAgZm9yIChGbG9hdGlu
Z09iamVjdFNldEl0ZXJhdG9yIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CiAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiByID0gKml0OwpAQCAtMjg3OSw3
ICsyODc5LDcgQEAgR2FwUmVjdHMgUmVuZGVyQmxvY2s6OnNlbGVjdGlvbkdhcHMoUmVuZGVyQmxv
Y2sqIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG9pbnQmIHIKICAgICAgICAgICAgIGZvciAoUmVu
ZGVyQmxvY2sqIGNiID0gY29udGFpbmluZ0Jsb2NrKCk7IGNiICYmICFjYi0+aXNSZW5kZXJWaWV3
KCk7IGNiID0gY2ItPmNvbnRhaW5pbmdCbG9jaygpKQogICAgICAgICAgICAgICAgIGNsaXBPdXRQ
b3NpdGlvbmVkT2JqZWN0cyhwYWludEluZm8sIEludFBvaW50KGNiLT54KCksIGNiLT55KCkpLCBj
Yi0+bV9wb3NpdGlvbmVkT2JqZWN0cy5nZXQoKSk7IC8vIEZJWE1FOiBOb3QgcmlnaHQgZm9yIGZs
aXBwZWQgd3JpdGluZyBtb2Rlcy4KICAgICAgICAgaWYgKG1fZmxvYXRpbmdPYmplY3RzKSB7Ci0g
ICAgICAgICAgICBjb25zdCBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQgPSBt
X2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7CisgICAgICAgICAgICBGbG9hdGluZ09iamVjdFNldCYg
ZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7CiAgICAgICAgICAg
ICBGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIGVuZCA9IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgp
OwogICAgICAgICAgICAgZm9yIChGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIGl0ID0gZmxvYXRp
bmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICAgICAg
RmxvYXRpbmdPYmplY3QqIHIgPSAqaXQ7CkBAIC0zMTkwLDEwICszMTkwLDEwIEBAIFJlbmRlckJs
b2NrOjpGbG9hdGluZ09iamVjdCogUmVuZGVyQmxvY2s6Omluc2VydEZsb2F0aW5nT2JqZWN0KFJl
bmRlckJveCogbykKIAogICAgIC8vIENyZWF0ZSB0aGUgbGlzdCBvZiBzcGVjaWFsIG9iamVjdHMg
aWYgd2UgZG9uJ3QgYWxlYWR5IGhhdmUgb25lCiAgICAgaWYgKCFtX2Zsb2F0aW5nT2JqZWN0cykK
LSAgICAgICAgbV9mbG9hdGluZ09iamVjdHMgPSBhZG9wdFB0cihuZXcgRmxvYXRpbmdPYmplY3Rz
KGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpKTsKKyAgICAgICAgbV9mbG9hdGluZ09iamVjdHMg
PSBhZG9wdFB0cihuZXcgRmxvYXRpbmdPYmplY3RzKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8g
RG9uJ3QgaW5zZXJ0IHRoZSBvYmplY3QgYWdhaW4gaWYgaXQncyBhbHJlYWR5IGluIHRoZSBsaXN0
Ci0gICAgICAgIGNvbnN0IEZsb2F0aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1f
ZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKKyAgICAgICAgRmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0
aW5nT2JqZWN0U2V0ID0gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpOwogICAgICAgICBGbG9hdGlu
Z09iamVjdFNldEl0ZXJhdG9yIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuZmluZDxSZW5kZXJCb3gq
LCBGbG9hdGluZ09iamVjdEhhc2hUcmFuc2xhdG9yPihvKTsKICAgICAgICAgaWYgKGl0ICE9IGZs
b2F0aW5nT2JqZWN0U2V0LmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuICppdDsKQEAgLTMyMjQs
NyArMzIyNCw4IEBAIFJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdCogUmVuZGVyQmxvY2s6Omlu
c2VydEZsb2F0aW5nT2JqZWN0KFJlbmRlckJveCogbykKICAgICBuZXdPYmotPm1faXNEZXNjZW5k
YW50ID0gdHJ1ZTsKICAgICBuZXdPYmotPm1fcmVuZGVyZXIgPSBvOwogCi0gICAgbV9mbG9hdGlu
Z09iamVjdHMtPmFkZChuZXdPYmopOworICAgIG1fZmxvYXRpbmdPYmplY3RzLT5pbmNyZWFzZU9i
amVjdHNDb3VudChuZXdPYmotPnR5cGUoKSk7CisgICAgbV9mbG9hdGluZ09iamVjdHMtPnNldCgp
LmFkZChuZXdPYmopOwogICAgIAogICAgIHJldHVybiBuZXdPYmo7CiB9CkBAIC0zMjMyLDggKzMy
MzMsOCBAQCBSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3QqIFJlbmRlckJsb2NrOjppbnNlcnRG
bG9hdGluZ09iamVjdChSZW5kZXJCb3gqIG8pCiB2b2lkIFJlbmRlckJsb2NrOjpyZW1vdmVGbG9h
dGluZ09iamVjdChSZW5kZXJCb3gqIG8pCiB7CiAgICAgaWYgKG1fZmxvYXRpbmdPYmplY3RzKSB7
Ci0gICAgICAgIGNvbnN0IEZsb2F0aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1f
ZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKLSAgICAgICAgRmxvYXRpbmdPYmplY3RTZXRJdGVyYXRv
ciBpdCA9IGZsb2F0aW5nT2JqZWN0U2V0LmZpbmQ8UmVuZGVyQm94KiwgRmxvYXRpbmdPYmplY3RI
YXNoVHJhbnNsYXRvcj4obyk7CisgICAgICAgIEZsb2F0aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09i
amVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKKyAgICAgICAgRmxvYXRpbmdPYmpl
Y3RTZXQ6Oml0ZXJhdG9yIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuZmluZDxSZW5kZXJCb3gqLCBG
bG9hdGluZ09iamVjdEhhc2hUcmFuc2xhdG9yPihvKTsKICAgICAgICAgaWYgKGl0ICE9IGZsb2F0
aW5nT2JqZWN0U2V0LmVuZCgpKSB7CiAgICAgICAgICAgICBGbG9hdGluZ09iamVjdCogciA9ICpp
dDsKICAgICAgICAgICAgIGlmIChjaGlsZHJlbklubGluZSgpKSB7CkBAIC0zMjU4LDcgKzMyNTks
OCBAQCB2b2lkIFJlbmRlckJsb2NrOjpyZW1vdmVGbG9hdGluZ09iamVjdChSZW5kZXJCb3gqIG8p
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1hcmtMaW5lc0RpcnR5SW5CbG9j
a1JhbmdlKDAsIGxvZ2ljYWxCb3R0b20pOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9m
bG9hdGluZ09iamVjdHMtPnJlbW92ZShyKTsKKyAgICAgICAgICAgIG1fZmxvYXRpbmdPYmplY3Rz
LT5kZWNyZWFzZU9iamVjdHNDb3VudChyLT50eXBlKCkpOworICAgICAgICAgICAgZmxvYXRpbmdP
YmplY3RTZXQucmVtb3ZlKGl0KTsKICAgICAgICAgICAgIEFTU0VSVCghci0+bV9vcmlnaW5hdGlu
Z0xpbmUpOwogICAgICAgICAgICAgZGVsZXRlIHI7CiAgICAgICAgIH0KQEAgLTMyNzAsMTAgKzMy
NzIsMTEgQEAgdm9pZCBSZW5kZXJCbG9jazo6cmVtb3ZlRmxvYXRpbmdPYmplY3RzQmVsb3coRmxv
YXRpbmdPYmplY3QqIGxhc3RGbG9hdCwgaW50IGxvZ2kKICAgICBpZiAoIW1fZmxvYXRpbmdPYmpl
Y3RzKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgY29uc3QgRmxvYXRpbmdPYmplY3RTZXQm
IGZsb2F0aW5nT2JqZWN0U2V0ID0gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpOworICAgIEZsb2F0
aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQo
KTsKICAgICBGbG9hdGluZ09iamVjdCogY3VyciA9IGZsb2F0aW5nT2JqZWN0U2V0Lmxhc3QoKTsK
ICAgICB3aGlsZSAoY3VyciAhPSBsYXN0RmxvYXQgJiYgKCFjdXJyLT5pc1BsYWNlZCgpIHx8IGxv
Z2ljYWxUb3BGb3JGbG9hdChjdXJyKSA+PSBsb2dpY2FsT2Zmc2V0KSkgewotICAgICAgICBtX2Zs
b2F0aW5nT2JqZWN0cy0+cmVtb3ZlKGN1cnIpOworICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+
ZGVjcmVhc2VPYmplY3RzQ291bnQoY3Vyci0+dHlwZSgpKTsKKyAgICAgICAgZmxvYXRpbmdPYmpl
Y3RTZXQucmVtb3ZlTGFzdCgpOwogICAgICAgICBBU1NFUlQoIWN1cnItPm1fb3JpZ2luYXRpbmdM
aW5lKTsKICAgICAgICAgZGVsZXRlIGN1cnI7CiAgICAgICAgIGN1cnIgPSBmbG9hdGluZ09iamVj
dFNldC5sYXN0KCk7CkBAIC0zMjg1LDcgKzMyODgsNyBAQCBib29sIFJlbmRlckJsb2NrOjpwb3Np
dGlvbk5ld0Zsb2F0cygpCiAgICAgaWYgKCFtX2Zsb2F0aW5nT2JqZWN0cykKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgY29uc3QgRmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5nT2JqZWN0
U2V0ID0gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpOworICAgIEZsb2F0aW5nT2JqZWN0U2V0JiBm
bG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKICAgICBpZiAoZmxv
YXRpbmdPYmplY3RTZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM0
MDAsNyArMzQwMyw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRzKCkKICAg
ICAgICAgc2V0TG9naWNhbFRvcEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0LCBsb2dpY2FsVG9wKTsK
ICAgICAgICAgc2V0TG9naWNhbEhlaWdodEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0LCBsb2dpY2Fs
SGVpZ2h0Rm9yQ2hpbGQoY2hpbGRCb3gpICsgbWFyZ2luQmVmb3JlRm9yQ2hpbGQoY2hpbGRCb3gp
ICsgbWFyZ2luQWZ0ZXJGb3JDaGlsZChjaGlsZEJveCkpOwogCi0gICAgICAgIG1fZmxvYXRpbmdP
YmplY3RzLT5hZGRQbGFjZWRPYmplY3QoZmxvYXRpbmdPYmplY3QpOworICAgICAgICBmbG9hdGlu
Z09iamVjdC0+c2V0SXNQbGFjZWQoKTsKIAogICAgICAgICAvLyBJZiB0aGUgY2hpbGQgbW92ZWQs
IHdlIGhhdmUgdG8gcmVwYWludCBpdC4KICAgICAgICAgaWYgKGNoaWxkQm94LT5jaGVja0ZvclJl
cGFpbnREdXJpbmdMYXlvdXQoKSkKQEAgLTM1MDIsMzAgKzM1MDUsMTEgQEAgYm9vbCBSZW5kZXJC
bG9jazo6aGFzUGVyY2VudEhlaWdodERlc2NlbmRhbnQoUmVuZGVyQm94KiBkZXNjZW5kYW50KQog
fQogI2VuZGlmCiAKLXRlbXBsYXRlIDxSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OlR5cGUg
RmxvYXRUeXBlVmFsdWU+Ci1pbmxpbmUgdm9pZCBSZW5kZXJCbG9jazo6RmxvYXRJbnRlcnZhbFNl
YXJjaEFkYXB0ZXI8RmxvYXRUeXBlVmFsdWU+Ojpjb2xsZWN0SWZOZWVkZWQoY29uc3QgSW50ZXJ2
YWxUeXBlJiBpbnRlcnZhbCkgY29uc3QKLXsKLSAgICBjb25zdCBGbG9hdGluZ09iamVjdCogciA9
IGludGVydmFsLmRhdGEoKTsKLSAgICBpZiAoci0+dHlwZSgpID09IEZsb2F0VHlwZVZhbHVlICYm
IGludGVydmFsLmxvdygpIDw9IG1fdmFsdWUgJiYgbV92YWx1ZSA8IGludGVydmFsLmhpZ2goKSkg
ewotICAgICAgICAvLyBBbGwgdGhlIG9iamVjdHMgcmV0dXJuZWQgZnJvbSB0aGUgdHJlZSBzaG91
bGQgYmUgYWxyZWFkeSBwbGFjZWQuCi0gICAgICAgIEFTU0VSVChyLT5pc1BsYWNlZCgpICYmIG1f
cmVuZGVyZXItPmxvZ2ljYWxUb3BGb3JGbG9hdChyKSA8PSBtX3ZhbHVlICYmIG1fcmVuZGVyZXIt
PmxvZ2ljYWxCb3R0b21Gb3JGbG9hdChyKSA+IG1fdmFsdWUpOwotCi0gICAgICAgIGlmIChGbG9h
dFR5cGVWYWx1ZSA9PSBGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0IAotICAgICAgICAgICAgJiYg
bV9yZW5kZXJlci0+bG9naWNhbFJpZ2h0Rm9yRmxvYXQocikgPiBtX29mZnNldCkgewotICAgICAg
ICAgICAgbV9vZmZzZXQgPSBtX3JlbmRlcmVyLT5sb2dpY2FsUmlnaHRGb3JGbG9hdChyKTsKLSAg
ICAgICAgICAgIGlmIChtX2hlaWdodFJlbWFpbmluZykKLSAgICAgICAgICAgICAgICAqbV9oZWln
aHRSZW1haW5pbmcgPSBtX3JlbmRlcmVyLT5sb2dpY2FsQm90dG9tRm9yRmxvYXQocikgLSBtX3Zh
bHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKEZsb2F0VHlwZVZhbHVlID09IEZsb2F0aW5n
T2JqZWN0OjpGbG9hdFJpZ2h0Ci0gICAgICAgICAgICAmJiBtX3JlbmRlcmVyLT5sb2dpY2FsTGVm
dEZvckZsb2F0KHIpIDwgbV9vZmZzZXQpIHsKLSAgICAgICAgICAgIG1fb2Zmc2V0ID0gbV9yZW5k
ZXJlci0+bG9naWNhbExlZnRGb3JGbG9hdChyKTsKLSAgICAgICAgICAgIGlmIChtX2hlaWdodFJl
bWFpbmluZykKLSAgICAgICAgICAgICAgICAqbV9oZWlnaHRSZW1haW5pbmcgPSBtX3JlbmRlcmVy
LT5sb2dpY2FsQm90dG9tRm9yRmxvYXQocikgLSBtX3ZhbHVlOwotICAgICAgICB9Ci0gICAgfQot
fQotCisvLyBGSVhNRTogVGhlIGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yTGluZS9sb2dpY2FsUmlnaHRP
ZmZzZXRGb3JMaW5lIGZ1bmN0aW9ucyBhcmUgdmVyeSBzbG93IGlmIHRoZXJlIGFyZSBtYW55IGZs
b2F0cworLy8gcHJlc2VudC4gV2UgbmVlZCB0byBhZGQgYSBzdHJ1Y3R1cmUgdG8gZmxvYXRpbmcg
b2JqZWN0cyB0byByZXByZXNlbnQgImxpbmVzIiBvZiBmbG9hdHMuICBUaGVuIGluc3RlYWQgb2Yg
Y2hlY2tpbmcKKy8vIGVhY2ggZmxvYXQgaW5kaXZpZHVhbGx5LCB3ZSdkIGp1c3Qgd2FsayBiYWNr
d2FyZHMgdGhyb3VnaCB0aGUgImxpbmVzIiBhbmQgc3RvcCB3aGVuIHdlIGhpdCBhIGxpbmUgdGhh
dCBpcyBmdWxseSBhYm92ZQorLy8gdGhlIHZlcnRpY2FsIG9mZnNldCB0aGF0IHdlJ2QgbGlrZSB0
byBjaGVjay4gIENvbXB1dGluZyB0aGUgImxpbmVzIiB3b3VsZCBiZSByYXRoZXIgY29tcGxpY2F0
ZWQsIGJ1dCBjb3VsZCByZXBsYWNlIHRoZSBsZWZ0CisvLyBvYmplY3RzIGFuZCByaWdodCBvYmpl
Y3RzIGNvdW50IGhhY2sgdGhhdCBpcyBjdXJyZW50bHkgdXNlZCBoZXJlLgogTGF5b3V0VW5pdCBS
ZW5kZXJCbG9jazo6bG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKExheW91dFVuaXQgbG9naWNhbFRv
cCwgTGF5b3V0VW5pdCBmaXhlZE9mZnNldCwgYm9vbCBhcHBseVRleHRJbmRlbnQsIExheW91dFVu
aXQqIGhlaWdodFJlbWFpbmluZykgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IGxlZnQgPSBmaXhl
ZE9mZnNldDsKQEAgLTM1MzMsOCArMzUxNywyMyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjps
b2dpY2FsTGVmdE9mZnNldEZvckxpbmUoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbgog
ICAgICAgICBpZiAoaGVpZ2h0UmVtYWluaW5nKQogICAgICAgICAgICAgKmhlaWdodFJlbWFpbmlu
ZyA9IDE7CiAKLSAgICAgICAgRmxvYXRJbnRlcnZhbFNlYXJjaEFkYXB0ZXI8RmxvYXRpbmdPYmpl
Y3Q6OkZsb2F0TGVmdD4gYWRhcHRlcih0aGlzLCBsb2dpY2FsVG9wLCBsZWZ0LCBoZWlnaHRSZW1h
aW5pbmcpOwotICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+cGxhY2VkRmxvYXRzVHJlZSgpLmFs
bE92ZXJsYXBzV2l0aEFkYXB0ZXIoYWRhcHRlcik7CisgICAgICAgIC8vIFdlIGtub3cgdGhlIGxp
c3QgaXMgbm9uLWVtcHR5LCBzaW5jZSB3ZSBoYXZlICJsZWZ0IiBvYmplY3RzIHRvIHNlYXJjaCBm
b3IuCisgICAgICAgIC8vIFRoZXJlZm9yZSB3ZSBjYW4gYXNzdW1lIHRoYXQgYmVnaW4gIT0gZW5k
LCBhbmQgdGhhdCB3ZSBjYW4gZG8gYXQgbGVhc3Qgb25lCisgICAgICAgIC8vIGRlY3JlbWVudC4K
KyAgICAgICAgRmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5nT2JqZWN0U2V0ID0gbV9mbG9hdGlu
Z09iamVjdHMtPnNldCgpOworICAgICAgICBGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIGJlZ2lu
ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsKKyAgICAgICAgRmxvYXRpbmdPYmplY3RTZXRJ
dGVyYXRvciBpdCA9IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOworICAgICAgICBkbyB7CisgICAg
ICAgICAgICAtLWl0OworICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QqIHIgPSAqaXQ7CisgICAg
ICAgICAgICBpZiAoci0+aXNQbGFjZWQoKSAmJiBsb2dpY2FsVG9wRm9yRmxvYXQocikgPD0gbG9n
aWNhbFRvcCAmJiBsb2dpY2FsQm90dG9tRm9yRmxvYXQocikgPiBsb2dpY2FsVG9wCisgICAgICAg
ICAgICAgICAgJiYgci0+dHlwZSgpID09IEZsb2F0aW5nT2JqZWN0OjpGbG9hdExlZnQKKyAgICAg
ICAgICAgICAgICAmJiBsb2dpY2FsUmlnaHRGb3JGbG9hdChyKSA+IGxlZnQpIHsKKyAgICAgICAg
ICAgICAgICBsZWZ0ID0gbWF4KGxlZnQsIGxvZ2ljYWxSaWdodEZvckZsb2F0KHIpKTsKKyAgICAg
ICAgICAgICAgICBpZiAoaGVpZ2h0UmVtYWluaW5nKQorICAgICAgICAgICAgICAgICAgICAqaGVp
Z2h0UmVtYWluaW5nID0gbG9naWNhbEJvdHRvbUZvckZsb2F0KHIpIC0gbG9naWNhbFRvcDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoaXQgIT0gYmVnaW4pOwogICAgIH0KIAogICAg
IGlmIChhcHBseVRleHRJbmRlbnQgJiYgc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
KSB7CkBAIC0zNTU0LDkgKzM1NTMsMjQgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6bG9naWNh
bFJpZ2h0T2Zmc2V0Rm9yTGluZShMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFUKICAgICBp
ZiAobV9mbG9hdGluZ09iamVjdHMgJiYgbV9mbG9hdGluZ09iamVjdHMtPmhhc1JpZ2h0T2JqZWN0
cygpKSB7CiAgICAgICAgIGlmIChoZWlnaHRSZW1haW5pbmcpCiAgICAgICAgICAgICAqaGVpZ2h0
UmVtYWluaW5nID0gMTsKLQotICAgICAgICBGbG9hdEludGVydmFsU2VhcmNoQWRhcHRlcjxGbG9h
dGluZ09iamVjdDo6RmxvYXRSaWdodD4gYWRhcHRlcih0aGlzLCBsb2dpY2FsVG9wLCByaWdodCwg
aGVpZ2h0UmVtYWluaW5nKTsKLSAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPnBsYWNlZEZsb2F0
c1RyZWUoKS5hbGxPdmVybGFwc1dpdGhBZGFwdGVyKGFkYXB0ZXIpOworICAgICAgICAgICAgCisg
ICAgICAgIC8vIFdlIGtub3cgdGhlIGxpc3QgaXMgbm9uLWVtcHR5LCBzaW5jZSB3ZSBoYXZlICJy
aWdodCIgb2JqZWN0cyB0byBzZWFyY2ggZm9yLgorICAgICAgICAvLyBUaGVyZWZvcmUgd2UgY2Fu
IGFzc3VtZSB0aGF0IGJlZ2luICE9IGVuZCwgYW5kIHRoYXQgd2UgY2FuIGRvIGF0IGxlYXN0IG9u
ZQorICAgICAgICAvLyBkZWNyZW1lbnQuCisgICAgICAgIEZsb2F0aW5nT2JqZWN0U2V0JiBmbG9h
dGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKKyAgICAgICAgRmxvYXRp
bmdPYmplY3RTZXRJdGVyYXRvciBiZWdpbiA9IGZsb2F0aW5nT2JqZWN0U2V0LmJlZ2luKCk7Cisg
ICAgICAgIEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgaXQgPSBmbG9hdGluZ09iamVjdFNldC5l
bmQoKTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgLS1pdDsKKyAgICAgICAgICAgIEZsb2F0
aW5nT2JqZWN0KiByID0gKml0OworICAgICAgICAgICAgaWYgKHItPmlzUGxhY2VkKCkgJiYgbG9n
aWNhbFRvcEZvckZsb2F0KHIpIDw9IGxvZ2ljYWxUb3AgJiYgbG9naWNhbEJvdHRvbUZvckZsb2F0
KHIpID4gbG9naWNhbFRvcAorICAgICAgICAgICAgICAgICYmIHItPnR5cGUoKSA9PSBGbG9hdGlu
Z09iamVjdDo6RmxvYXRSaWdodAorICAgICAgICAgICAgICAgICYmIGxvZ2ljYWxMZWZ0Rm9yRmxv
YXQocikgPCByaWdodCkgeworICAgICAgICAgICAgICAgIHJpZ2h0ID0gbWluKHJpZ2h0LCBsb2dp
Y2FsTGVmdEZvckZsb2F0KHIpKTsKKyAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0UmVtYWluaW5n
KQorICAgICAgICAgICAgICAgICAgICAqaGVpZ2h0UmVtYWluaW5nID0gbG9naWNhbEJvdHRvbUZv
ckZsb2F0KHIpIC0gbG9naWNhbFRvcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAo
aXQgIT0gYmVnaW4pOwogICAgIH0KICAgICAKICAgICBpZiAoYXBwbHlUZXh0SW5kZW50ICYmICFz
dHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpIHsKQEAgLTM1ODEsNyArMzU5NSw3IEBA
IGludCBSZW5kZXJCbG9jazo6bmV4dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93KGludCBsb2dpY2Fs
SGVpZ2h0KSBjb25zdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIGludCBib3R0b20gPSBJTlRf
TUFYOwotICAgIGNvbnN0IEZsb2F0aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1f
ZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKKyAgICBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdP
YmplY3RTZXQgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7CiAgICAgRmxvYXRpbmdPYmplY3RT
ZXRJdGVyYXRvciBlbmQgPSBmbG9hdGluZ09iamVjdFNldC5lbmQoKTsKICAgICBmb3IgKEZsb2F0
aW5nT2JqZWN0U2V0SXRlcmF0b3IgaXQgPSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKICAgICAgICAgRmxvYXRpbmdPYmplY3QqIHIgPSAqaXQ7CkBAIC0zNTk4
LDcgKzM2MTIsNyBAQCBpbnQgUmVuZGVyQmxvY2s6Omxvd2VzdEZsb2F0TG9naWNhbEJvdHRvbShG
bG9hdGluZ09iamVjdDo6VHlwZSBmbG9hdFR5cGUpIGNvbnN0CiAgICAgaWYgKCFtX2Zsb2F0aW5n
T2JqZWN0cykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaW50IGxvd2VzdEZsb2F0Qm90dG9tID0g
MDsKLSAgICBjb25zdCBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zs
b2F0aW5nT2JqZWN0cy0+c2V0KCk7CisgICAgRmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5nT2Jq
ZWN0U2V0ID0gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpOwogICAgIEZsb2F0aW5nT2JqZWN0U2V0
SXRlcmF0b3IgZW5kID0gZmxvYXRpbmdPYmplY3RTZXQuZW5kKCk7CiAgICAgZm9yIChGbG9hdGlu
Z09iamVjdFNldEl0ZXJhdG9yIGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CiAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiByID0gKml0OwpAQCAtMzY0Niw4
ICszNjYwLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRkUG9zaXRpb25lZEZsb2F0cygpCiAgICAg
ICAgIHNldExvZ2ljYWxMZWZ0Rm9yRmxvYXQoZmxvYXRpbmdPYmplY3QsIGxvZ2ljYWxMZWZ0Rm9y
Q2hpbGQocG9zaXRpb25lZE9iamVjdCkgLSBtYXJnaW5Mb2dpY2FsTGVmdEZvckNoaWxkKHBvc2l0
aW9uZWRPYmplY3QpKTsKICAgICAgICAgc2V0TG9naWNhbFRvcEZvckZsb2F0KGZsb2F0aW5nT2Jq
ZWN0LCBsb2dpY2FsVG9wRm9yQ2hpbGQocG9zaXRpb25lZE9iamVjdCkgLSBtYXJnaW5CZWZvcmVG
b3JDaGlsZChwb3NpdGlvbmVkT2JqZWN0KSk7CiAgICAgICAgIHNldExvZ2ljYWxIZWlnaHRGb3JG
bG9hdChmbG9hdGluZ09iamVjdCwgbG9naWNhbEhlaWdodEZvckNoaWxkKHBvc2l0aW9uZWRPYmpl
Y3QpICsgbWFyZ2luQmVmb3JlRm9yQ2hpbGQocG9zaXRpb25lZE9iamVjdCkgKyBtYXJnaW5BZnRl
ckZvckNoaWxkKHBvc2l0aW9uZWRPYmplY3QpKTsKLQotICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0
cy0+YWRkUGxhY2VkT2JqZWN0KGZsb2F0aW5nT2JqZWN0KTsKKyAgICAgICAgZmxvYXRpbmdPYmpl
Y3QtPnNldElzUGxhY2VkKHRydWUpOwogICAgICAgICAKICAgICAgICAgbV9oYXNQb3NpdGlvbmVk
RmxvYXRzID0gdHJ1ZTsKICAgICB9CkBAIC0zNjU1LDkgKzM2NjgsNiBAQCB2b2lkIFJlbmRlckJs
b2NrOjphZGRQb3NpdGlvbmVkRmxvYXRzKCkKIAogdm9pZCBSZW5kZXJCbG9jazo6Y2xlYXJGbG9h
dHMoQmxvY2tMYXlvdXRQYXNzIGxheW91dFBhc3MpCiB7Ci0gICAgaWYgKG1fZmxvYXRpbmdPYmpl
Y3RzKQotICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0SG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpOwotCiAgICAgLy8gQ2xlYXIgb3VyIHBvc2l0aW9u
ZWQgZmxvYXRzIGJvb2xlYW4uCiAgICAgbV9oYXNQb3NpdGlvbmVkRmxvYXRzID0gZmFsc2U7CiAK
QEAgLTM2NzYsMTAgKzM2ODYsMTAgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y2xlYXJGbG9hdHMoQmxv
Y2tMYXlvdXRQYXNzIGxheW91dFBhc3MpCiAgICAgUmVuZGVyZXJUb0Zsb2F0SW5mb01hcCBmbG9h
dE1hcDsKIAogICAgIGlmIChtX2Zsb2F0aW5nT2JqZWN0cykgewotICAgICAgICBjb25zdCBGbG9h
dGluZ09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0
KCk7CisgICAgICAgIEZsb2F0aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxv
YXRpbmdPYmplY3RzLT5zZXQoKTsKICAgICAgICAgaWYgKGNoaWxkcmVuSW5saW5lKCkpIHsKLSAg
ICAgICAgICAgIEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgZW5kID0gZmxvYXRpbmdPYmplY3RT
ZXQuZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgaXQg
PSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
ICAgIEZsb2F0aW5nT2JqZWN0U2V0OjppdGVyYXRvciBlbmQgPSBmbG9hdGluZ09iamVjdFNldC5l
bmQoKTsKKyAgICAgICAgICAgIGZvciAoRmxvYXRpbmdPYmplY3RTZXQ6Oml0ZXJhdG9yIGl0ID0g
ZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAg
ICAgICAgRmxvYXRpbmdPYmplY3QqIGYgPSAqaXQ7CiAgICAgICAgICAgICAgICAgZmxvYXRNYXAu
YWRkKGYtPm1fcmVuZGVyZXIsIGYpOwogICAgICAgICAgICAgfQpAQCAtMzczMSw3ICszNzQxLDcg
QEAgdm9pZCBSZW5kZXJCbG9jazo6Y2xlYXJGbG9hdHMoQmxvY2tMYXlvdXRQYXNzIGxheW91dFBh
c3MpCiAgICAgICAgIGludCBjaGFuZ2VMb2dpY2FsVG9wID0gbnVtZXJpY19saW1pdHM8aW50Pjo6
bWF4KCk7CiAgICAgICAgIGludCBjaGFuZ2VMb2dpY2FsQm90dG9tID0gbnVtZXJpY19saW1pdHM8
aW50Pjo6bWluKCk7CiAgICAgICAgIGlmIChtX2Zsb2F0aW5nT2JqZWN0cykgewotICAgICAgICAg
ICAgY29uc3QgRmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5nT2JqZWN0U2V0ID0gbV9mbG9hdGlu
Z09iamVjdHMtPnNldCgpOworICAgICAgICAgICAgRmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5n
T2JqZWN0U2V0ID0gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpOwogICAgICAgICAgICAgRmxvYXRp
bmdPYmplY3RTZXRJdGVyYXRvciBlbmQgPSBmbG9hdGluZ09iamVjdFNldC5lbmQoKTsKICAgICAg
ICAgICAgIGZvciAoRmxvYXRpbmdPYmplY3RTZXRJdGVyYXRvciBpdCA9IGZsb2F0aW5nT2JqZWN0
U2V0LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgICAgIEZsb2F0aW5n
T2JqZWN0KiBmID0gKml0OwpAQCAtMzgxMyw5ICszODIzLDEwIEBAIGludCBSZW5kZXJCbG9jazo6
YWRkT3ZlcmhhbmdpbmdGbG9hdHMoUmVuZGVyQmxvY2sqIGNoaWxkLCBpbnQgbG9naWNhbExlZnRP
ZmZzZXQsCiAKICAgICAgICAgICAgICAgICAvLyBXZSBjcmVhdGUgdGhlIGZsb2F0aW5nIG9iamVj
dCBsaXN0IGxhemlseS4KICAgICAgICAgICAgICAgICBpZiAoIW1fZmxvYXRpbmdPYmplY3RzKQot
ICAgICAgICAgICAgICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cyA9IGFkb3B0UHRyKG5ldyBGbG9h
dGluZ09iamVjdHMoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkpOworICAgICAgICAgICAgICAg
ICAgICBtX2Zsb2F0aW5nT2JqZWN0cyA9IGFkb3B0UHRyKG5ldyBGbG9hdGluZ09iamVjdHMpOwog
Ci0gICAgICAgICAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPmFkZChmbG9hdGluZ09iaik7Cisg
ICAgICAgICAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPmluY3JlYXNlT2JqZWN0c0NvdW50KGZs
b2F0aW5nT2JqLT50eXBlKCkpOworICAgICAgICAgICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5z
ZXQoKS5hZGQoZmxvYXRpbmdPYmopOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgaWYgKG1ha2VDaGlsZFBhaW50T3RoZXJGbG9hdHMgJiYgIXItPm1fc2hvdWxk
UGFpbnQgJiYgIXItPm1fcmVuZGVyZXItPmhhc1NlbGZQYWludGluZ0xheWVyKCkgJiYKQEAgLTM4
NDIsNyArMzg1Myw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6Omhhc092ZXJoYW5naW5nRmxvYXQoUmVu
ZGVyQm94KiByZW5kZXJlcikKICAgICBpZiAoIW1fZmxvYXRpbmdPYmplY3RzIHx8IGhhc0NvbHVt
bnMoKSB8fCAhcGFyZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0IEZs
b2F0aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5z
ZXQoKTsKKyAgICBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zsb2F0
aW5nT2JqZWN0cy0+c2V0KCk7CiAgICAgRmxvYXRpbmdPYmplY3RTZXRJdGVyYXRvciBpdCA9IGZs
b2F0aW5nT2JqZWN0U2V0LmZpbmQ8UmVuZGVyQm94KiwgRmxvYXRpbmdPYmplY3RIYXNoVHJhbnNs
YXRvcj4ocmVuZGVyZXIpOwogICAgIGlmIChpdCA9PSBmbG9hdGluZ09iamVjdFNldC5lbmQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzg1OCw3ICszODY5LDcgQEAgdm9pZCBSZW5kZXJC
bG9jazo6YWRkSW50cnVkaW5nRmxvYXRzKFJlbmRlckJsb2NrKiBwcmV2LCBpbnQgbG9naWNhbExl
ZnRPZmZzZXQsIGkKIAogICAgIGxvZ2ljYWxMZWZ0T2Zmc2V0ICs9IChpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpID8gbWFyZ2luTGVmdCgpIDogbWFyZ2luVG9wKCkpOwogCi0gICAgY29uc3QgRmxv
YXRpbmdPYmplY3RTZXQmIHByZXZTZXQgPSBwcmV2LT5tX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7
CisgICAgRmxvYXRpbmdPYmplY3RTZXQmIHByZXZTZXQgPSBwcmV2LT5tX2Zsb2F0aW5nT2JqZWN0
cy0+c2V0KCk7CiAgICAgRmxvYXRpbmdPYmplY3RTZXRJdGVyYXRvciBwcmV2RW5kID0gcHJldlNl
dC5lbmQoKTsKICAgICBmb3IgKEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgcHJldkl0ID0gcHJl
dlNldC5iZWdpbigpOyBwcmV2SXQgIT0gcHJldkVuZDsgKytwcmV2SXQpIHsKICAgICAgICAgRmxv
YXRpbmdPYmplY3QqIHIgPSAqcHJldkl0OwpAQCAtMzg4Niw4ICszODk3LDkgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6YWRkSW50cnVkaW5nRmxvYXRzKFJlbmRlckJsb2NrKiBwcmV2LCBpbnQgbG9naWNh
bExlZnRPZmZzZXQsIGkKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAvLyBXZSBj
cmVhdGUgdGhlIGZsb2F0aW5nIG9iamVjdCBsaXN0IGxhemlseS4KICAgICAgICAgICAgICAgICBp
ZiAoIW1fZmxvYXRpbmdPYmplY3RzKQotICAgICAgICAgICAgICAgICAgICBtX2Zsb2F0aW5nT2Jq
ZWN0cyA9IGFkb3B0UHRyKG5ldyBGbG9hdGluZ09iamVjdHMoaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSkpOwotICAgICAgICAgICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5hZGQoZmxvYXRpbmdP
YmopOworICAgICAgICAgICAgICAgICAgICBtX2Zsb2F0aW5nT2JqZWN0cyA9IGFkb3B0UHRyKG5l
dyBGbG9hdGluZ09iamVjdHMpOworICAgICAgICAgICAgICAgIG1fZmxvYXRpbmdPYmplY3RzLT5p
bmNyZWFzZU9iamVjdHNDb3VudChmbG9hdGluZ09iai0+dHlwZSgpKTsKKyAgICAgICAgICAgICAg
ICBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCkuYWRkKGZsb2F0aW5nT2JqKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KQEAgLTM5MjgsNyArMzk0MCw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2s6Om1hcmtBbGxEZXNjZW5kYW50c1dpdGhGbG9hdHNGb3JMYXlvdXQoUmVuZGVyQm94KiBmbG9h
dFRvUmVtb3ZlCiAKIHZvaWQgUmVuZGVyQmxvY2s6Om1hcmtTaWJsaW5nc1dpdGhGbG9hdHNGb3JM
YXlvdXQoKQogewotICAgIGNvbnN0IEZsb2F0aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09iamVjdFNl
dCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKKyAgICBGbG9hdGluZ09iamVjdFNldCYgZmxv
YXRpbmdPYmplY3RTZXQgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7CiAgICAgRmxvYXRpbmdP
YmplY3RTZXRJdGVyYXRvciBlbmQgPSBmbG9hdGluZ09iamVjdFNldC5lbmQoKTsKICAgICBmb3Ig
KEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgaXQgPSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKGxvZ2ljYWxCb3R0b21Gb3JGbG9hdCgq
aXQpID4gbG9naWNhbEhlaWdodCgpKSB7CkBAIC00MDgwLDcgKzQwOTIsNyBAQCBib29sIFJlbmRl
ckJsb2NrOjpoaXRUZXN0RmxvYXRzKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRU
ZXN0UmVzdWx0JiByZQogICAgICAgICBhZGp1c3RlZExvY2F0aW9uICs9IHRvU2l6ZSh0b1JlbmRl
clZpZXcodGhpcyktPmZyYW1lVmlldygpLT5zY3JvbGxQb3NpdGlvbigpKTsKICAgICB9CiAKLSAg
ICBjb25zdCBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zsb2F0aW5n
T2JqZWN0cy0+c2V0KCk7CisgICAgRmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5nT2JqZWN0U2V0
ID0gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpOwogICAgIEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0
b3IgYmVnaW4gPSBmbG9hdGluZ09iamVjdFNldC5iZWdpbigpOwogICAgIGZvciAoRmxvYXRpbmdP
YmplY3RTZXRJdGVyYXRvciBpdCA9IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOyBpdCAhPSBiZWdp
bjspIHsKICAgICAgICAgLS1pdDsKQEAgLTU2ODcsNyArNTY5OSw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmFkanVzdEZvckJvcmRlckZpdChpbnQgeCwgaW50JiBsZWZ0LCBpbnQmIHJpZ2h0KSBjb25z
dAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobV9mbG9hdGluZ09iamVjdHMpIHsK
LSAgICAgICAgICAgIGNvbnN0IEZsb2F0aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09iamVjdFNldCA9
IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKKyAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0U2V0
JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKICAgICAgICAg
ICAgIEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgZW5kID0gZmxvYXRpbmdPYmplY3RTZXQuZW5k
KCk7CiAgICAgICAgICAgICBmb3IgKEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgaXQgPSBmbG9h
dGluZ09iamVjdFNldC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgICAg
ICBGbG9hdGluZ09iamVjdCogciA9ICppdDsKQEAgLTY0MzEsNyArNjQ0Myw2IEBAIGNvbnN0IGNo
YXIqIFJlbmRlckJsb2NrOjpyZW5kZXJOYW1lKCkgY29uc3QKIGlubGluZSB2b2lkIFJlbmRlckJs
b2NrOjpGbG9hdGluZ09iamVjdHM6OmNsZWFyKCkKIHsKICAgICBtX3NldC5jbGVhcigpOwotICAg
IG1fcGxhY2VkRmxvYXRzVHJlZS5jbGVhcigpOwogICAgIG1fbGVmdE9iamVjdHNDb3VudCA9IDA7
CiAgICAgbV9yaWdodE9iamVjdHNDb3VudCA9IDA7CiAgICAgbV9wb3NpdGlvbmVkT2JqZWN0c0Nv
dW50ID0gMDsKQEAgLTY0NTcsNzMgKzY0NjgsNiBAQCBpbmxpbmUgdm9pZCBSZW5kZXJCbG9jazo6
RmxvYXRpbmdPYmplY3RzOjpkZWNyZWFzZU9iamVjdHNDb3VudChGbG9hdGluZ09iamVjdDo6VAog
ICAgICAgICBtX3Bvc2l0aW9uZWRPYmplY3RzQ291bnQtLTsKIH0KIAotaW5saW5lIFJlbmRlckJs
b2NrOjpGbG9hdGluZ09iamVjdEludGVydmFsIFJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdHM6
OmludGVydmFsRm9yRmxvYXRpbmdPYmplY3QoRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0
KQotewotICAgIGlmIChtX2hvcml6b250YWxXcml0aW5nTW9kZSkKLSAgICAgICAgcmV0dXJuIFJl
bmRlckJsb2NrOjpGbG9hdGluZ09iamVjdEludGVydmFsKGZsb2F0aW5nT2JqZWN0LT55KCksIGZs
b2F0aW5nT2JqZWN0LT5tYXhZKCksIGZsb2F0aW5nT2JqZWN0KTsKLSAgICByZXR1cm4gUmVuZGVy
QmxvY2s6OkZsb2F0aW5nT2JqZWN0SW50ZXJ2YWwoZmxvYXRpbmdPYmplY3QtPngoKSwgZmxvYXRp
bmdPYmplY3QtPm1heFgoKSwgZmxvYXRpbmdPYmplY3QpOwotfQotCi12b2lkIFJlbmRlckJsb2Nr
OjpGbG9hdGluZ09iamVjdHM6OmFkZFBsYWNlZE9iamVjdChGbG9hdGluZ09iamVjdCogZmxvYXRp
bmdPYmplY3QpCi17Ci0gICAgQVNTRVJUKCFmbG9hdGluZ09iamVjdC0+aXNJblBsYWNlZFRyZWUo
KSk7Ci0KLSAgICBmbG9hdGluZ09iamVjdC0+c2V0SXNQbGFjZWQodHJ1ZSk7Ci0gICAgaWYgKG1f
cGxhY2VkRmxvYXRzVHJlZS5pc0luaXRpYWxpemVkKCkpCi0gICAgICAgIG1fcGxhY2VkRmxvYXRz
VHJlZS5hZGQoaW50ZXJ2YWxGb3JGbG9hdGluZ09iamVjdChmbG9hdGluZ09iamVjdCkpOwotCi0j
aWZuZGVmIE5ERUJVRwotICAgIGZsb2F0aW5nT2JqZWN0LT5zZXRJc0luUGxhY2VkVHJlZSh0cnVl
KTsgICAgICAKLSNlbmRpZgotfQotCi12b2lkIFJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdHM6
OnJlbW92ZVBsYWNlZE9iamVjdChGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QpCi17Ci0g
ICAgQVNTRVJUKGZsb2F0aW5nT2JqZWN0LT5pc1BsYWNlZCgpICYmIGZsb2F0aW5nT2JqZWN0LT5p
c0luUGxhY2VkVHJlZSgpKTsKLQotICAgIGlmIChtX3BsYWNlZEZsb2F0c1RyZWUuaXNJbml0aWFs
aXplZCgpKSB7Ci0gICAgICAgIGJvb2wgcmVtb3ZlZCA9IG1fcGxhY2VkRmxvYXRzVHJlZS5yZW1v
dmUoaW50ZXJ2YWxGb3JGbG9hdGluZ09iamVjdChmbG9hdGluZ09iamVjdCkpOwotICAgICAgICBB
U1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwotICAgIH0KLSAgICAKLSAgICBmbG9hdGlu
Z09iamVjdC0+c2V0SXNQbGFjZWQoZmFsc2UpOwotI2lmbmRlZiBOREVCVUcKLSAgICBmbG9hdGlu
Z09iamVjdC0+c2V0SXNJblBsYWNlZFRyZWUoZmFsc2UpOwotI2VuZGlmCi19Ci0KLWlubGluZSB2
b2lkIFJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdHM6OmFkZChGbG9hdGluZ09iamVjdCogZmxv
YXRpbmdPYmplY3QpCi17Ci0gICAgaW5jcmVhc2VPYmplY3RzQ291bnQoZmxvYXRpbmdPYmplY3Qt
PnR5cGUoKSk7Ci0gICAgbV9zZXQuYWRkKGZsb2F0aW5nT2JqZWN0KTsKLSAgICBpZiAoZmxvYXRp
bmdPYmplY3QtPmlzUGxhY2VkKCkpCi0gICAgICAgIGFkZFBsYWNlZE9iamVjdChmbG9hdGluZ09i
amVjdCk7Ci19Ci0KLWlubGluZSB2b2lkIFJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdHM6OnJl
bW92ZShGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QpCi17Ci0gICAgZGVjcmVhc2VPYmpl
Y3RzQ291bnQoZmxvYXRpbmdPYmplY3QtPnR5cGUoKSk7Ci0gICAgbV9zZXQucmVtb3ZlKGZsb2F0
aW5nT2JqZWN0KTsKLSAgICBBU1NFUlQoZmxvYXRpbmdPYmplY3QtPmlzUGxhY2VkKCkgfHwgIWZs
b2F0aW5nT2JqZWN0LT5pc0luUGxhY2VkVHJlZSgpKTsKLSAgICBpZiAoZmxvYXRpbmdPYmplY3Qt
PmlzUGxhY2VkKCkpCi0gICAgICAgIHJlbW92ZVBsYWNlZE9iamVjdChmbG9hdGluZ09iamVjdCk7
Ci19Ci0KLXZvaWQgUmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0czo6Y29tcHV0ZVBsYWNlZEZs
b2F0c1RyZWUoKQotewotICAgIEFTU0VSVCghbV9wbGFjZWRGbG9hdHNUcmVlLmlzSW5pdGlhbGl6
ZWQoKSk7Ci0gICAgaWYgKG1fc2V0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1f
cGxhY2VkRmxvYXRzVHJlZS5pbml0SWZOZWVkZWQoKTsKLSAgICBGbG9hdGluZ09iamVjdFNldEl0
ZXJhdG9yIGl0ID0gbV9zZXQuYmVnaW4oKTsKLSAgICBGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9y
IGVuZCA9IG1fc2V0LmVuZCgpOwotICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0ID0gKml0OwotICAgICAgICBpZiAoZmxv
YXRpbmdPYmplY3QtPmlzUGxhY2VkKCkpCi0gICAgICAgICAgICBtX3BsYWNlZEZsb2F0c1RyZWUu
YWRkKGludGVydmFsRm9yRmxvYXRpbmdPYmplY3QoZmxvYXRpbmdPYmplY3QpKTsKLSAgICB9Ci19
Ci0KIFRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBj
b250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxl
bmd0aCwgUmVuZGVyU3R5bGUqIHN0eWxlLCBUZXh0UnVuOjpFeHBhbnNpb25CZWhhdmlvciBleHBh
bnNpb24sIFRleHRSdW5GbGFncyBmbGFncykKIHsKICAgICBBU1NFUlQoc3R5bGUpOwpAQCAtNjU1
OCwxNyArNjUwMiw2IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnNob3dMaW5lVHJlZUFuZE1hcmsoY29u
c3QgSW5saW5lQm94KiBtYXJrZWRCb3gxLCBjb25zdCBjaGFyKiBtCiAgICAgICAgIHJvb3QtPnNo
b3dMaW5lVHJlZUFuZE1hcmsobWFya2VkQm94MSwgbWFya2VkTGFiZWwxLCBtYXJrZWRCb3gyLCBt
YXJrZWRMYWJlbDIsIG9iaiwgMSk7CiB9CiAKLS8vIFRoZXNlIGhlbHBlcnMgYXJlIG9ubHkgdXNl
ZCBieSB0aGUgUE9ESW50ZXJ2YWxUcmVlIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCi1TdHJpbmcg
VmFsdWVUb1N0cmluZzxpbnQ+OjpzdHJpbmcoY29uc3QgaW50IHZhbHVlKQotewotICAgIHJldHVy
biBTdHJpbmc6Om51bWJlcih2YWx1ZSk7Ci19Ci0KLVN0cmluZyBWYWx1ZVRvU3RyaW5nPFJlbmRl
ckJsb2NrOjpGbG9hdGluZ09iamVjdCo+OjpzdHJpbmcoY29uc3QgUmVuZGVyQmxvY2s6OkZsb2F0
aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQo
IiVwICglZHglZCAlZHglZCkiLCBmbG9hdGluZ09iamVjdCwgZmxvYXRpbmdPYmplY3QtPngoKSwg
ZmxvYXRpbmdPYmplY3QtPnkoKSwgZmxvYXRpbmdPYmplY3QtPm1heFgoKSwgZmxvYXRpbmdPYmpl
Y3QtPm1heFkoKSk7Ci19Ci0KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDliNGY3ZmEwMmE4ZGE4MTc3N2Iz
NjdhYmRkZDcxMDQ0ZWE0NmExZGIuLjZjZGYyMGFhMjkwMjRhOTZlNTY4NDdmNDI4N2MwNzRmMjI0
M2MzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0yNCw3ICsy
NCw2IEBACiAjZGVmaW5lIFJlbmRlckJsb2NrX2gKIAogI2luY2x1ZGUgIkdhcFJlY3RzLmgiCi0j
aW5jbHVkZSAiUE9ESW50ZXJ2YWxUcmVlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5j
bHVkZSAiUmVuZGVyTGluZUJveExpc3QuaCIKICNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCkBA
IC02OCwxMSArNjcsNiBAQCB0eXBlZGVmIHVuc2lnbmVkIFRleHRSdW5GbGFnczsKIGNsYXNzIFJl
bmRlckJsb2NrIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNz
IExpbmVMYXlvdXRTdGF0ZTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgLy8gVXNlZCBieSB0aGUgUE9E
SW50ZXJ2YWxUcmVlIGZvciBkZWJ1Z2dpbmcgdGhlIEZsb2F0aW5nT2JqZWN0LgotICAgIHRlbXBs
YXRlIDxjbGFzcz4gZnJpZW5kIHN0cnVjdCBWYWx1ZVRvU3RyaW5nOwotI2VuZGlmCi0KICAgICBS
ZW5kZXJCbG9jayhOb2RlKik7CiAgICAgdmlydHVhbCB+UmVuZGVyQmxvY2soKTsKIApAQCAtNDI4
LDkgKzQyMiw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAsIG1fc2hvdWxkUGFpbnQoZmFsc2Up
CiAgICAgICAgICAgICAsIG1faXNEZXNjZW5kYW50KGZhbHNlKQogICAgICAgICAgICAgLCBtX2lz
UGxhY2VkKGZhbHNlKQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgICwgbV9pc0luUGxhY2Vk
VHJlZShmYWxzZSkKLSNlbmRpZgogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQodHlwZSAh
PSBOb0Zsb2F0KTsKICAgICAgICAgICAgIGlmICh0eXBlID09IExlZnRGbG9hdCkKQEAgLTQ1MCw5
ICs0NDEsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgLCBtX3Nob3VsZFBhaW50KHR5cGUgIT0g
RmxvYXRQb3NpdGlvbmVkKQogICAgICAgICAgICAgLCBtX2lzRGVzY2VuZGFudChmYWxzZSkKICAg
ICAgICAgICAgICwgbV9pc1BsYWNlZCh0cnVlKQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAg
ICwgbV9pc0luUGxhY2VkVHJlZShmYWxzZSkKLSNlbmRpZgogICAgICAgICB7CiAgICAgICAgIH0K
IApAQCAtNDY5LDE4ICs0NTcsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgaW50IHdpZHRoKCkgY29u
c3QgeyByZXR1cm4gbV9mcmFtZVJlY3Qud2lkdGgoKTsgfQogICAgICAgICBpbnQgaGVpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9mcmFtZVJlY3QuaGVpZ2h0KCk7IH0KIAotICAgICAgICB2b2lkIHNl
dFgoaW50IHgpIHsgQVNTRVJUKCFpc0luUGxhY2VkVHJlZSgpKTsgbV9mcmFtZVJlY3Quc2V0WCh4
KTsgfQotICAgICAgICB2b2lkIHNldFkoaW50IHkpIHsgQVNTRVJUKCFpc0luUGxhY2VkVHJlZSgp
KTsgbV9mcmFtZVJlY3Quc2V0WSh5KTsgfQotICAgICAgICB2b2lkIHNldFdpZHRoKGludCB3aWR0
aCkgeyBBU1NFUlQoIWlzSW5QbGFjZWRUcmVlKCkpOyBtX2ZyYW1lUmVjdC5zZXRXaWR0aCh3aWR0
aCk7IH0KLSAgICAgICAgdm9pZCBzZXRIZWlnaHQoaW50IGhlaWdodCkgeyBBU1NFUlQoIWlzSW5Q
bGFjZWRUcmVlKCkpOyBtX2ZyYW1lUmVjdC5zZXRIZWlnaHQoaGVpZ2h0KTsgfQorICAgICAgICB2
b2lkIHNldFgoaW50IHgpIHsgbV9mcmFtZVJlY3Quc2V0WCh4KTsgfQorICAgICAgICB2b2lkIHNl
dFkoaW50IHkpIHsgbV9mcmFtZVJlY3Quc2V0WSh5KTsgfQorICAgICAgICB2b2lkIHNldFdpZHRo
KGludCB3aWR0aCkgeyBtX2ZyYW1lUmVjdC5zZXRXaWR0aCh3aWR0aCk7IH0KKyAgICAgICAgdm9p
ZCBzZXRIZWlnaHQoaW50IGhlaWdodCkgeyBtX2ZyYW1lUmVjdC5zZXRIZWlnaHQoaGVpZ2h0KTsg
fQogCiAgICAgICAgIGNvbnN0IEludFJlY3QmIGZyYW1lUmVjdCgpIGNvbnN0IHsgQVNTRVJUKGlz
UGxhY2VkKCkpOyByZXR1cm4gbV9mcmFtZVJlY3Q7IH0KLSAgICAgICAgdm9pZCBzZXRGcmFtZVJl
Y3QoY29uc3QgSW50UmVjdCYgZnJhbWVSZWN0KSB7IEFTU0VSVCghaXNJblBsYWNlZFRyZWUoKSk7
IG1fZnJhbWVSZWN0ID0gZnJhbWVSZWN0OyB9Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGJv
b2wgaXNJblBsYWNlZFRyZWUoKSBjb25zdCB7IHJldHVybiBtX2lzSW5QbGFjZWRUcmVlOyB9Ci0g
ICAgICAgIHZvaWQgc2V0SXNJblBsYWNlZFRyZWUoYm9vbCB2YWx1ZSkgeyBtX2lzSW5QbGFjZWRU
cmVlID0gdmFsdWU7IH0KLSNlbmRpZgorICAgICAgICB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJ
bnRSZWN0JiBmcmFtZVJlY3QpIHsgbV9mcmFtZVJlY3QgPSBmcmFtZVJlY3Q7IH0KIAogICAgICAg
ICBSZW5kZXJCb3gqIG1fcmVuZGVyZXI7CiAgICAgICAgIFJvb3RJbmxpbmVCb3gqIG1fb3JpZ2lu
YXRpbmdMaW5lOwpAQCAtNDkwLDkgKzQ3Myw2IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgbV9z
aG91bGRQYWludCA6IDE7CiAgICAgICAgIGJvb2wgbV9pc0Rlc2NlbmRhbnQgOiAxOwogICAgICAg
ICBib29sIG1faXNQbGFjZWQgOiAxOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgYm9vbCBtX2lz
SW5QbGFjZWRUcmVlIDogMTsKLSNlbmRpZgogICAgIH07CiAKICAgICBJbnRQb2ludCBmbGlwRmxv
YXRGb3JXcml0aW5nTW9kZShjb25zdCBGbG9hdGluZ09iamVjdCosIGNvbnN0IEludFBvaW50Jikg
Y29uc3Q7CkBAIC04MTksNzcgKzc5OSwyOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgdHlwZWRl
ZiBMaXN0SGFzaFNldDxGbG9hdGluZ09iamVjdCosIDQsIEZsb2F0aW5nT2JqZWN0SGFzaEZ1bmN0
aW9ucz4gRmxvYXRpbmdPYmplY3RTZXQ7CiAgICAgdHlwZWRlZiBGbG9hdGluZ09iamVjdFNldDo6
Y29uc3RfaXRlcmF0b3IgRmxvYXRpbmdPYmplY3RTZXRJdGVyYXRvcjsKLSAgICB0eXBlZGVmIFBP
REludGVydmFsPExheW91dFVuaXQsIEZsb2F0aW5nT2JqZWN0Kj4gRmxvYXRpbmdPYmplY3RJbnRl
cnZhbDsKLSAgICB0eXBlZGVmIFBPREludGVydmFsVHJlZTxMYXlvdXRVbml0LCBGbG9hdGluZ09i
amVjdCo+IEZsb2F0aW5nT2JqZWN0VHJlZTsKLSAgICAKLSAgICB0ZW1wbGF0ZSA8RmxvYXRpbmdP
YmplY3Q6OlR5cGUgRmxvYXRUeXBlVmFsdWU+Ci0gICAgY2xhc3MgRmxvYXRJbnRlcnZhbFNlYXJj
aEFkYXB0ZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBGbG9hdGluZ09iamVjdElu
dGVydmFsIEludGVydmFsVHlwZTsKLSAgICAgICAgCi0gICAgICAgIEZsb2F0SW50ZXJ2YWxTZWFy
Y2hBZGFwdGVyKGNvbnN0IFJlbmRlckJsb2NrKiByZW5kZXJlciwgTGF5b3V0VW5pdCB2YWx1ZSwg
TGF5b3V0VW5pdCYgb2Zmc2V0LCBMYXlvdXRVbml0KiBoZWlnaHRSZW1haW5pbmcpCi0gICAgICAg
ICAgICA6IG1fcmVuZGVyZXIocmVuZGVyZXIpCi0gICAgICAgICAgICAsIG1fdmFsdWUodmFsdWUp
Ci0gICAgICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKLSAgICAgICAgICAgICwgbV9oZWlnaHRS
ZW1haW5pbmcoaGVpZ2h0UmVtYWluaW5nKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIGlubGluZSBMYXlvdXRVbml0IGxvd1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZTsgfQotICAgICAgICBpbmxpbmUgTGF5b3V0VW5pdCBoaWdoVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlOyB9Ci0gICAgICAgIHZvaWQgY29sbGVjdElmTmVlZGVkKGNvbnN0IEludGVy
dmFsVHlwZSYpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgY29uc3QgUmVuZGVyQmxv
Y2sqIG1fcmVuZGVyZXI7Ci0gICAgICAgIExheW91dFVuaXQgbV92YWx1ZTsKLSAgICAgICAgTGF5
b3V0VW5pdCYgbV9vZmZzZXQ7Ci0gICAgICAgIExheW91dFVuaXQqIG1faGVpZ2h0UmVtYWluaW5n
OwotICAgIH07Ci0KICAgICBjbGFzcyBGbG9hdGluZ09iamVjdHMgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgRmxvYXRpbmdPYmplY3RzKGJvb2wgaG9yaXpvbnRhbFdyaXRpbmdNb2RlKQotICAgICAg
ICAgICAgOiBtX3BsYWNlZEZsb2F0c1RyZWUoVW5pbml0aWFsaXplZFRyZWUpCi0gICAgICAgICAg
ICAsIG1fbGVmdE9iamVjdHNDb3VudCgwKQorICAgICAgICBGbG9hdGluZ09iamVjdHMoKQorICAg
ICAgICAgICAgOiBtX2xlZnRPYmplY3RzQ291bnQoMCkKICAgICAgICAgICAgICwgbV9yaWdodE9i
amVjdHNDb3VudCgwKQogICAgICAgICAgICAgLCBtX3Bvc2l0aW9uZWRPYmplY3RzQ291bnQoMCkK
LSAgICAgICAgICAgICwgbV9ob3Jpem9udGFsV3JpdGluZ01vZGUoaG9yaXpvbnRhbFdyaXRpbmdN
b2RlKQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGNsZWFyKCk7Ci0gICAg
ICAgIHZvaWQgYWRkKEZsb2F0aW5nT2JqZWN0Kik7Ci0gICAgICAgIHZvaWQgcmVtb3ZlKEZsb2F0
aW5nT2JqZWN0Kik7Ci0gICAgICAgIHZvaWQgYWRkUGxhY2VkT2JqZWN0KEZsb2F0aW5nT2JqZWN0
Kik7Ci0gICAgICAgIHZvaWQgcmVtb3ZlUGxhY2VkT2JqZWN0KEZsb2F0aW5nT2JqZWN0Kik7Ci0g
ICAgICAgIHZvaWQgc2V0SG9yaXpvbnRhbFdyaXRpbmdNb2RlKGJvb2wgYiA9IHRydWUpIHsgbV9o
b3Jpem9udGFsV3JpdGluZ01vZGUgPSBiOyB9Ci0KKyAgICAgICAgdm9pZCBpbmNyZWFzZU9iamVj
dHNDb3VudChGbG9hdGluZ09iamVjdDo6VHlwZSk7CisgICAgICAgIHZvaWQgZGVjcmVhc2VPYmpl
Y3RzQ291bnQoRmxvYXRpbmdPYmplY3Q6OlR5cGUpOwogICAgICAgICBib29sIGhhc0xlZnRPYmpl
Y3RzKCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0T2JqZWN0c0NvdW50ID4gMDsgfQogICAgICAgICBi
b29sIGhhc1JpZ2h0T2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHRPYmplY3RzQ291bnQg
PiAwOyB9CiAgICAgICAgIGJvb2wgaGFzUG9zaXRpb25lZE9iamVjdHMoKSBjb25zdCB7IHJldHVy
biBtX3Bvc2l0aW9uZWRPYmplY3RzQ291bnQgPiAwOyB9Ci0gICAgICAgIGNvbnN0IEZsb2F0aW5n
T2JqZWN0U2V0JiBzZXQoKSBjb25zdCB7IHJldHVybiBtX3NldDsgfQotICAgICAgICBjb25zdCBG
bG9hdGluZ09iamVjdFRyZWUmIHBsYWNlZEZsb2F0c1RyZWUoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBjb21wdXRlUGxhY2VkRmxvYXRzVHJlZUlmTmVlZGVkKCk7Ci0gICAgICAgICAgICByZXR1
cm4gbV9wbGFjZWRGbG9hdHNUcmVlOyAKLSAgICAgICAgfQotICAgIHByaXZhdGU6Ci0gICAgICAg
IHZvaWQgY29tcHV0ZVBsYWNlZEZsb2F0c1RyZWUoKTsKLSAgICAgICAgaW5saW5lIHZvaWQgY29t
cHV0ZVBsYWNlZEZsb2F0c1RyZWVJZk5lZWRlZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9wbGFjZWRGbG9hdHNUcmVlLmlzSW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgICAgICAgICBj
b21wdXRlUGxhY2VkRmxvYXRzVHJlZSgpOwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgaW5jcmVh
c2VPYmplY3RzQ291bnQoRmxvYXRpbmdPYmplY3Q6OlR5cGUpOwotICAgICAgICB2b2lkIGRlY3Jl
YXNlT2JqZWN0c0NvdW50KEZsb2F0aW5nT2JqZWN0OjpUeXBlKTsKLSAgICAgICAgRmxvYXRpbmdP
YmplY3RJbnRlcnZhbCBpbnRlcnZhbEZvckZsb2F0aW5nT2JqZWN0KEZsb2F0aW5nT2JqZWN0Kik7
CisgICAgICAgIEZsb2F0aW5nT2JqZWN0U2V0JiBzZXQoKSB7IHJldHVybiBtX3NldDsgfQogCisg
ICAgcHJpdmF0ZToKICAgICAgICAgRmxvYXRpbmdPYmplY3RTZXQgbV9zZXQ7Ci0gICAgICAgIEZs
b2F0aW5nT2JqZWN0VHJlZSBtX3BsYWNlZEZsb2F0c1RyZWU7CiAgICAgICAgIHVuc2lnbmVkIG1f
bGVmdE9iamVjdHNDb3VudDsKICAgICAgICAgdW5zaWduZWQgbV9yaWdodE9iamVjdHNDb3VudDsK
ICAgICAgICAgdW5zaWduZWQgbV9wb3NpdGlvbmVkT2JqZWN0c0NvdW50OwotICAgICAgICBib29s
IG1faG9yaXpvbnRhbFdyaXRpbmdNb2RlOwogICAgIH07CiAgICAgT3duUHRyPEZsb2F0aW5nT2Jq
ZWN0cz4gbV9mbG9hdGluZ09iamVjdHM7CiAgICAgCkBAIC05NjQsMTYgKzg5NSw2IEBAIGlubGlu
ZSBjb25zdCBSZW5kZXJCbG9jayogdG9SZW5kZXJCbG9jayhjb25zdCBSZW5kZXJPYmplY3QqIG9i
amVjdCkKIC8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2Fz
dC4KIHZvaWQgdG9SZW5kZXJCbG9jayhjb25zdCBSZW5kZXJCbG9jayopOwogCi0jaWZuZGVmIE5E
RUJVRwotLy8gVGhlc2Ugc3RydWN0dXJlcyBhcmUgdXNlZCBieSBQT0RJbnRlcnZhbFRyZWUgZm9y
IGRlYnVnZ2luZyBwdXJwb3Nlcy4KLXRlbXBsYXRlIDw+IHN0cnVjdCBWYWx1ZVRvU3RyaW5nPGlu
dD4gewotICAgIHN0YXRpYyBTdHJpbmcgc3RyaW5nKGNvbnN0IGludCB2YWx1ZSk7Ci19OwotdGVt
cGxhdGU8PiBzdHJ1Y3QgVmFsdWVUb1N0cmluZzxSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmplY3Qq
PiB7Ci0gICAgc3RhdGljIFN0cmluZyBzdHJpbmcoY29uc3QgUmVuZGVyQmxvY2s6OkZsb2F0aW5n
T2JqZWN0Kik7Ci19OwotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIFJlbmRlckJsb2NrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggNTUwOTYzNDdiMmYwN2U0YzY2NWNiMzE5YjcxYjdm
MmExYzIwNzYxYy4uNWRjMjdjNjA0NjAzYWFhZmZjYzM1M2NmODgxZjAzY2U0ZGQxYzc0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5j
cHAKQEAgLTEwOTEsNyArMTA5MSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dFJ1bnNBbmRG
bG9hdHNJblJhbmdlKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIElubGluCiAgICAgICAg
IH0KIAogICAgICAgICBpZiAobV9mbG9hdGluZ09iamVjdHMgJiYgbGFzdFJvb3RCb3goKSkgewot
ICAgICAgICAgICAgY29uc3QgRmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5nT2JqZWN0U2V0ID0g
bV9mbG9hdGluZ09iamVjdHMtPnNldCgpOworICAgICAgICAgICAgRmxvYXRpbmdPYmplY3RTZXQm
IGZsb2F0aW5nT2JqZWN0U2V0ID0gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpOwogICAgICAgICAg
ICAgRmxvYXRpbmdPYmplY3RTZXRJdGVyYXRvciBpdCA9IGZsb2F0aW5nT2JqZWN0U2V0LmJlZ2lu
KCk7CiAgICAgICAgICAgICBGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIGVuZCA9IGZsb2F0aW5n
T2JqZWN0U2V0LmVuZCgpOwogICAgICAgICAgICAgaWYgKGxheW91dFN0YXRlLmxhc3RGbG9hdCgp
KSB7CkBAIC0xMTcyLDcgKzExNzIsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpsaW5rVG9FbmRMaW5l
SWZOZWVkZWQoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKICAgICAgICAgICAgIHRyYWls
aW5nRmxvYXRzTGluZUJveC0+c2V0QmxvY2tMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSk7
CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdP
YmplY3RTZXQgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7CisgICAgICAgIEZsb2F0aW5nT2Jq
ZWN0U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKICAg
ICAgICAgRmxvYXRpbmdPYmplY3RTZXRJdGVyYXRvciBpdCA9IGZsb2F0aW5nT2JqZWN0U2V0LmJl
Z2luKCk7CiAgICAgICAgIEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgZW5kID0gZmxvYXRpbmdP
YmplY3RTZXQuZW5kKCk7CiAgICAgICAgIGlmIChsYXlvdXRTdGF0ZS5sYXN0RmxvYXQoKSkgewpA
QCAtMTQ5MSw3ICsxNDkxLDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6bWF0Y2hlZEVuZExpbmUoTGlu
ZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgSW5saW5lQmlkaVIKIAogICAgICAgICBp
bnQgbG9naWNhbEJvdHRvbSA9IGxhc3RMaW5lLT5ibG9ja0xvZ2ljYWxIZWlnaHQoKSArIGFicyhk
ZWx0YSk7CiAKLSAgICAgICAgY29uc3QgRmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5nT2JqZWN0
U2V0ID0gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpOworICAgICAgICBGbG9hdGluZ09iamVjdFNl
dCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCk7CiAgICAgICAg
IEZsb2F0aW5nT2JqZWN0U2V0SXRlcmF0b3IgZW5kID0gZmxvYXRpbmdPYmplY3RTZXQuZW5kKCk7
CiAgICAgICAgIGZvciAoRmxvYXRpbmdPYmplY3RTZXRJdGVyYXRvciBpdCA9IGZsb2F0aW5nT2Jq
ZWN0U2V0LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgRmxvYXRpbmdP
YmplY3QqIGYgPSAqaXQ7CkBAIC0xNTI4LDcgKzE1MjgsNyBAQCBib29sIFJlbmRlckJsb2NrOjpt
YXRjaGVkRW5kTGluZShMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBJbmxpbmVC
aWRpUgogCiAgICAgICAgICAgICAgICAgaW50IGxvZ2ljYWxCb3R0b20gPSBsYXN0TGluZS0+Ymxv
Y2tMb2dpY2FsSGVpZ2h0KCkgKyBhYnMoZGVsdGEpOwogCi0gICAgICAgICAgICAgICAgY29uc3Qg
RmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5nT2JqZWN0U2V0ID0gbV9mbG9hdGluZ09iamVjdHMt
PnNldCgpOworICAgICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0U2V0JiBmbG9hdGluZ09iamVj
dFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKICAgICAgICAgICAgICAgICBGbG9hdGlu
Z09iamVjdFNldEl0ZXJhdG9yIGVuZCA9IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOwogICAgICAg
ICAgICAgICAgIGZvciAoRmxvYXRpbmdPYmplY3RTZXRJdGVyYXRvciBpdCA9IGZsb2F0aW5nT2Jq
ZWN0U2V0LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgICAgICAgICBG
bG9hdGluZ09iamVjdCogZiA9ICppdDsKQEAgLTI1NTAsNyArMjU1MCw3IEBAIGJvb2wgUmVuZGVy
QmxvY2s6OnBvc2l0aW9uTmV3RmxvYXRPbkxpbmUoRmxvYXRpbmdPYmplY3QqIG5ld0Zsb2F0LCBG
bG9hdGluZ09iamVjCiAgICAgaWYgKCFuZXdGbG9hdC0+bV9wYWdpbmF0aW9uU3RydXQpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgY29uc3QgRmxvYXRpbmdPYmplY3RTZXQmIGZsb2F0aW5n
T2JqZWN0U2V0ID0gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpOworICAgIEZsb2F0aW5nT2JqZWN0
U2V0JiBmbG9hdGluZ09iamVjdFNldCA9IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKTsKICAgICBB
U1NFUlQoZmxvYXRpbmdPYmplY3RTZXQubGFzdCgpID09IG5ld0Zsb2F0KTsKIAogICAgIGludCBm
bG9hdExvZ2ljYWxUb3AgPSBsb2dpY2FsVG9wRm9yRmxvYXQobmV3RmxvYXQpOwpAQCAtMjU3NSw5
ICsyNTc1LDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdE9uTGluZShGbG9h
dGluZ09iamVjdCogbmV3RmxvYXQsIEZsb2F0aW5nT2JqZWMKICAgICAgICAgICAgIGlmIChvLT5p
c1JlbmRlckJsb2NrKCkpCiAgICAgICAgICAgICAgICAgdG9SZW5kZXJCbG9jayhvKS0+c2V0Q2hp
bGROZWVkc0xheW91dCh0cnVlLCBmYWxzZSk7CiAgICAgICAgICAgICBvLT5sYXlvdXRJZk5lZWRl
ZCgpOwotICAgICAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPnJlbW92ZVBsYWNlZE9iamVjdChm
KTsKICAgICAgICAgICAgIHNldExvZ2ljYWxUb3BGb3JGbG9hdChmLCBsb2dpY2FsVG9wRm9yRmxv
YXQoZikgKyBmLT5tX3BhZ2luYXRpb25TdHJ1dCk7Ci0gICAgICAgICAgICBtX2Zsb2F0aW5nT2Jq
ZWN0cy0+YWRkUGxhY2VkT2JqZWN0KGYpOwogICAgICAgICB9CiAgICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>