<?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>100219</bug_id>
          
          <creation_ts>2012-10-24 03:08:05 -0700</creation_ts>
          <short_desc>[WK2][WTR] Text input controller needs firstRectForCharacterRange implementation</short_desc>
          <delta_ts>2014-04-16 10:25:59 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>UNCONFIRMED</bug_status>
          <resolution></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>
          <dependson>99438</dependson>
          <blocked>42337</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Mariusz Grzegorczyk">mariusz.g</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>jussi.kukkonen</cc>
    
    <cc>kenneth</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>749493</commentid>
    <comment_count>0</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-10-24 03:08:05 -0700</bug_when>
    <thetext>Tests which use textInputController.firstRectForCharacterRange function:

editing/inserting/caret-position.html
editing/selection/5825350-1.html
editing/selection/5825350-2.html
editing/selection/mixed-editability-10.html
editing/selection/move-left-right.html
editing/style/text-indent.html
fast/dom/tab-in-right-alignment.html
fast/forms/cursor-at-editable-content-boundary.html
fast/text/international/thai-cursor-position.html
platform/mac/editing/input/caret-primary-bidi.html
platform/mac/editing/input/firstrectforcharacterrange-plain.html
platform/mac/editing/input/firstrectforcharacterrange-styled.html
platform/mac/editing/input/range-for-empty-document.html
platform/mac/editing/input/text-input-controller.html
platform/mac/editing/input/wrapped-line-char-rect.html
platform/mac/fast/text/justified-text-rect.html
svg/text/caret-in-svg-text.xhtml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750723</commentid>
    <comment_count>1</comment_count>
    <who name="Jussi Kukkonen (jku)">jussi.kukkonen</who>
    <bug_when>2012-10-25 05:53:44 -0700</bug_when>
    <thetext>I&apos;ll take a look at this unless you&apos;ve already got something in the works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750727</commentid>
    <comment_count>2</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-10-25 06:02:20 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; I&apos;ll take a look at this unless you&apos;ve already got something in the works.

I have some patch for this, but waiting for depending one to upload. Also I&apos;m analysing upper tests. Unfortunatelly I have no possibility to run mac ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750746</commentid>
    <comment_count>3</comment_count>
    <who name="Jussi Kukkonen (jku)">jussi.kukkonen</who>
    <bug_when>2012-10-25 06:29:01 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; I&apos;ll take a look at this unless you&apos;ve already got something in the works.
&gt; 
&gt; I have some patch for this, but waiting for depending one to upload.

ok, cool. It shouldn&apos;t really depend on the other bug at all, right? They just happen to touch same files. Feel free to upload your patch even if 99438 isn&apos;t in yet, I can take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754388</commentid>
    <comment_count>4</comment_count>
      <attachid>171459</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-10-30 08:30:30 -0700</bug_when>
    <thetext>Created attachment 171459
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754492</commentid>
    <comment_count>5</comment_count>
      <attachid>171459</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-10-30 10:27:17 -0700</bug_when>
    <thetext>Comment on attachment 171459
patch

I do not think that this is the right approach. the goal here is to test API on UI process side. If you add a separate implementation just for testing, and then break the one in WebPageProxy, the regression test won&apos;t notice that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755101</commentid>
    <comment_count>6</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-10-31 02:59:34 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 171459 [details])
&gt; I do not think that this is the right approach. the goal here is to test API on UI process side. If you add a separate implementation just for testing, and then break the one in WebPageProxy, the regression test won&apos;t notice that.

This is done for WebKitTestRunner. See discussion on https://bugs.webkit.org/show_bug.cgi?id=99438. All functions in TextInputController uses WKBundle... functionality which uses WebPage. For API on UI process (in mac) everything should be the same. There is a lot of functions like setTracksRepaints which are accessible from API and through bundle. Do you suggest to make all my changes as functionForTesting ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755116</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-31 03:19:51 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 171459 [details] [details])
&gt; &gt; I do not think that this is the right approach. the goal here is to test API on UI process side. If you add a separate implementation just for testing, and then break the one in WebPageProxy, the regression test won&apos;t notice that.
&gt; 
&gt; This is done for WebKitTestRunner. See discussion on https://bugs.webkit.org/show_bug.cgi?id=99438. All functions in TextInputController uses WKBundle... functionality which uses WebPage. For API on UI process (in mac) everything should be the same. There is a lot of functions like setTracksRepaints which are accessible from API and through bundle. Do you suggest to make all my changes as functionForTesting ?

Like ap said. Some tests are for testing functionality in the engine, others are for testing that public API works correctly.

In WebKit we are trying to split these test up so that those testing the engine use internals methods (shared across ports) where as others will use the testRunner methods (per port).

This is not finished so many in the former category are implemented using testRunner.

So basically you need to find out which group these tests belong in. If they are for testing API they should should call to public API methods and not implement them in the testRunner itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755133</commentid>
    <comment_count>8</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-31 04:13:02 -0700</bug_when>
    <thetext>Maybe it&apos;s worth also modifying of WebPageProxy so that firstRectForCharacterRange is declared and defined there for all the WK2 ports, since you&apos;ve added common implementation already on WebProcess side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755146</commentid>
    <comment_count>9</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-10-31 04:25:48 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Maybe it&apos;s worth also modifying of WebPageProxy so that firstRectForCharacterRange is declared and defined there for all the WK2 ports, since you&apos;ve added common implementation already on WebProcess side.

The problem is that TextInputController is in WebProcess, so cannot use UIProcess&apos; api, but injected bundle one. So we have 2 ways to achieve WebPage class&apos; implementation. 
1. application -&gt; API -&gt; WebPageProxy -&gt; WebPage
2. WebKitTestRunner -&gt; TextInputController -&gt; WKBundle -&gt; WebPage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755286</commentid>
    <comment_count>10</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-31 07:25:12 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Maybe it&apos;s worth also modifying of WebPageProxy so that firstRectForCharacterRange is declared and defined there for all the WK2 ports, since you&apos;ve added common implementation already on WebProcess side.
&gt; 
&gt; The problem is that TextInputController is in WebProcess, so cannot use UIProcess&apos; api, but injected bundle one. So we have 2 ways to achieve WebPage class&apos; implementation. 
&gt; 1. application -&gt; API -&gt; WebPageProxy -&gt; WebPage
&gt; 2. WebKitTestRunner -&gt; TextInputController -&gt; WKBundle -&gt; WebPage

I&apos;m not telling to use WebPageProxy from test runner but just make the patch more consistent by modifying UI process code as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755330</commentid>
    <comment_count>11</comment_count>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2012-10-31 08:41:16 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; Maybe it&apos;s worth also modifying of WebPageProxy so that firstRectForCharacterRange is declared and defined there for all the WK2 ports, since you&apos;ve added common implementation already on WebProcess side.
&gt; &gt; 
&gt; &gt; The problem is that TextInputController is in WebProcess, so cannot use UIProcess&apos; api, but injected bundle one. So we have 2 ways to achieve WebPage class&apos; implementation. 
&gt; &gt; 1. application -&gt; API -&gt; WebPageProxy -&gt; WebPage
&gt; &gt; 2. WebKitTestRunner -&gt; TextInputController -&gt; WKBundle -&gt; WebPage
&gt; 
&gt; I&apos;m not telling to use WebPageProxy from test runner but just make the patch more consistent by modifying UI process code as well.

So as I understand you want to make common implementation for WebPageProxy class. Is it for future plans? Still only one port which will use this, and export to API will be Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851011</commentid>
    <comment_count>12</comment_count>
      <attachid>192183</attachid>
    <who name="Mariusz Grzegorczyk">mariusz.g</who>
    <bug_when>2013-03-08 02:20:19 -0800</bug_when>
    <thetext>Created attachment 192183
Rebased, make asynchronous</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976990</commentid>
    <comment_count>13</comment_count>
      <attachid>192183</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-02-05 11:20:04 -0800</bug_when>
    <thetext>Comment on attachment 192183
Rebased, make asynchronous

Clearing review flag on patches from before 2014. If this patch is still relevant, please reset the r? flag.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171459</attachid>
            <date>2012-10-30 08:30:30 -0700</date>
            <delta_ts>2013-03-08 02:20:19 -0800</delta_ts>
            <desc>patch</desc>
            <filename>amsung.com]-[[WK2][WTR] Text input controller needs firstRectForCharacterRange implementation].patch</filename>
            <type>text/plain</type>
            <size>17644</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3M2M4MzE4Li5hNWFkMDhmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMTAt
MzAgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW1dLMl1bV1RSXSBUZXh0IGlucHV0IGNvbnRyb2xsZXIgbmVlZHMgZmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2UgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMDIxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEdhcmRlbmluZyBmb3Igd2Via2l0MiByZWxhdGVkIHdpdGggdGV4
dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSBpbXBsZW1lbnRhdGlv
bi4KKworICAgICAgICAqIHBsYXRmb3JtL2VmbC13azEvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZv
cm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZWZsL2VkaXRpbmcv
c2VsZWN0aW9uLzU4MjUzNTAtMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2VmbC9lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvZWRpdGluZy9zZWxlY3Rpb24vbWl4ZWQtZWRpdGFiaWxp
dHktMTAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4
cGVjdGF0aW9uczoKKwogMjAxMi0xMC0yNiAgTWFyaXVzeiBHcnplZ29yY3p5ayAgPG1hcml1c3ou
Z0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBbV0syXVtXVFJdIFRleHQgaW5wdXQgY29udHJvbGxl
ciBuZWVkcyBzZWxlY3RlZFJhbmdlIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9lZmwtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMTQxMDg5Zi4uYWVlOTc3ZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMS9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjMz
LDggKzIzMyw2IEBAIHdlYmtpdC5vcmcvYi84Nzk3NCBodHRwL3Rlc3RzL2Rvd25sb2FkIFsgRmFp
bHVyZSBdCiAKIHdlYmtpdC5vcmcvYi85ODU3MCBmYXN0L3JlcGxhY2VkL29iamVjdC13aXRoLWVt
YmVkLXVybC1wYXJhbS5odG1sIFsgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi81Mzk4NiBzdmcv
dGV4dC9jYXJldC1pbi1zdmctdGV4dC54aHRtbCBbIEZhaWx1cmUgXQotCiAjIFJlbGllcyBvbiBX
ZWJLaXQgQVBJIFtXZWJWaWV3IF9sb2FkQmFja0ZvcndhcmRMaXN0RnJvbU90aGVyVmlldzpdCiBm
YXN0L2xvYWRlci9jcmFzaC1jb3B5aW5nLWJhY2tmb3J3YXJkbGlzdC5odG1sCiAKQEAgLTI1NSwx
NCArMjUzLDEwIEBAIGh0dHAvdGVzdHMvbWlzYy9yZWRpcmVjdC10by1leHRlcm5hbC11cmwuaHRt
bAogaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVzZW5kLXdyb25nLWNyZWRlbnRpYWxz
Lmh0bWwKIAogIyBCVUc6IHdyb25nIHRlc3QgcmVzdWx0cyB0aGF0IG5lZWQgaW52ZXN0aWdhdGlv
bgotZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0xLmh0bWwgWyBGYWlsdXJlIF0KLWVkaXRpbmcv
c2VsZWN0aW9uLzU4MjUzNTAtMi5odG1sIFsgRmFpbHVyZSBdCiBlZGl0aW5nL3NlbGVjdGlvbi9k
aXJlY3Rpb25hbGl0eS1hZnRlci11bmRvLXJlcGxhY2UuaHRtbCBbIEZhaWx1cmUgXQogZWRpdGlu
Zy9zZWxlY3Rpb24vZG91YmxlY2xpY2stYmVzaWRlLWNyLXNwYW4uaHRtbCBbIEZhaWx1cmUgXQog
ZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS5odG1sIFsgRmFpbHVyZSBd
CiBlZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWFmdGVyLWRvdWJsZS1jbGljay5o
dG1sIFsgRmFpbHVyZSBdCi1lZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJpbGl0eS0xMC5o
dG1sIFsgRmFpbHVyZSBdCi1lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWxlZnQtcmlnaHQuaHRtbCBb
IEZhaWx1cmUgXQogZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWJpZGktcnVuLmh0bWwgWyBGYWls
dXJlIF0KIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9nby1iYWNrLXRvLWVycm9yLXBhZ2UuaHRtbAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
NTdlZTM4NS4uZTE1ZTFiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMjMwLDkgKzIzMCw2IEBAIHdlYmtpdC5vcmcvYi85OTQzNiBlZGl0
aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWNyYXNoLmh0bWwgWyBGYWlsdXJl
CiB3ZWJraXQub3JnL2IvOTk0MzYgZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVz
cGFjZS1pbWctY3Jhc2guaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzk5NDM2IGVkaXRp
bmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbCBbIEZhaWx1cmUgXQogCi0j
IFRleHQgaW5wdXQgY29udHJvbGxlciBuZWVkcyBzZWxlY3RlZFJhbmdlIGltcGxlbWVudGF0aW9u
Ci13ZWJraXQub3JnL2IvOTk0MzggZWRpdGluZy9zZWxlY3Rpb24vbWl4ZWQtZWRpdGFiaWxpdHkt
MTAuaHRtbCBbIEZhaWx1cmUgXQotCiAjIEJVRzogd3JvbmcgdGVzdCByZXN1bHRzIHRoYXQgbmVl
ZCBpbnZlc3RpZ2F0aW9uCiBlZGl0aW5nL3NlbGVjdGlvbi9hbmNob3ItZm9jdXMzLmh0bWwgWyBG
YWlsdXJlIF0KIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRh
YmxlLWRpdi5odG1sIFsgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDU5MDY0OTkuLjkyMWU3ZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMzIsNiArMTMyLDcgQEAgY29tcG9zaXRpbmcvaW1h
Z2VzL2RpcmVjdC1wZGYtaW1hZ2UuaHRtbAogY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvYmFja2Zh
Y2UtaGlkZGVuLXJlZmxlY3Rpb24uaHRtbAogY29tcG9zaXRpbmcvdGlsaW5nL2NvbnN0cmFpbmVk
LWxheWVyLXNpemUuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1hZnRl
ci1kb3VibGUtY2xpY2suaHRtbAorZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1sZWZ0LXJpZ2h0Lmh0
bWwKIGZhc3QvZm9ybXMvbGlzdGJveC1vbmNoYW5nZS5odG1sCiBmYXN0L2Zvcm1zL29uc2VsZWN0
LXRleHRmaWVsZC5odG1sCiBmYXN0L2Zvcm1zL29wdGlvbi1tb3VzZWV2ZW50cy5odG1sCkBAIC02
NTIsNiArNjUzLDggQEAgZmFzdC9kb20vdGltZXItdGhyb3R0bGluZy1oaWRkZW4tcGFnZS5odG1s
IFsgV29udEZpeCBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtUlRGRC5odG1sIFsgV29udEZp
eCBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtVElGRi5odG1sIFsgV29udEZpeCBdCiAKKyMg
W0VGTF1bR1RLXSBzdmcvdGV4dC9jYXJldC1pbi1zdmctdGV4dC54aHRtbCBmYWlscword2Via2l0
Lm9yZy9iLzUzOTg2IHN2Zy90ZXh0L2NhcmV0LWluLXN2Zy10ZXh0LnhodG1sIFsgRmFpbHVyZSBd
CiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBDUkFTSEVTCiAjLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
ZWZsL2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9lZmwvZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0xLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTExNjIwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAt
MS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3RzIGZvciBhIGJ1ZyB3aGVy
ZSBtb3ZpbmcgdGhlIGNhcmV0IGxlZnQgdG93YXJkcyBhIG5vbi1lZGl0YWJsZSBwb2NrZXQgb2Yg
YW4gZWRpdGFibGUgcmVnaW9uIHdvdWxkIG1ha2UgdGhlIGNhcmV0IGRpc2FwcGVhci4gVGhlIGNh
cmV0IHNob3VsZCBiZSBqdXN0IGJlZm9yZSB0aGUgJ0InIGluICJCb2IiLgorCitDYXJldDogKDgs
IDQ0KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2VkaXRpbmcvc2VsZWN0
aW9uLzU4MjUzNTAtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZWRp
dGluZy9zZWxlY3Rpb24vNTgyNTM1MC0yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5mM2MzNjNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZWZsL2VkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzIEBACitUaGlzIHRlc3RzIGZvciBhIGJ1ZyB3aGVyZSBtb3ZpbmcgdGhlIGNhcmV0
IHJpZ2h0IHRvd2FyZHMgYSBub24tZWRpdGFibGUgcG9ja2V0IG9mIGFuIGVkaXRhYmxlIHJlZ2lv
biB3b3VsZCBtYWtlIHRoZSBjYXJldCBkaXNhcHBlYXIuIFRoZSBjYXJldCBzaG91bGQgYmUganVz
dCBhZnRlciB0aGUgJ3knIGluICJTYWxseSIuCisKK0NhcmV0OiAoNzksIDQ0KQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2VkaXRpbmcvc2VsZWN0aW9uL21peGVkLWVkaXRh
YmlsaXR5LTEwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9lZGl0aW5n
L3NlbGVjdGlvbi9taXhlZC1lZGl0YWJpbGl0eS0xMC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFhZThkMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2VmbC9lZGl0aW5nL3NlbGVjdGlvbi9taXhlZC1lZGl0YWJpbGl0eS0x
MC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNSBAQAorIzEgRElWIGVsZW1lbnQgd2l0aCBhIG5v
bi1lZGl0YWJsZSBlbGVtZW50IG9ubHkgYWxpZ24gY2VudGVyOgorCitIZWxsbworIzIgRElWIGVs
ZW1lbnQgd2l0aCBhIG5vbi1lZGl0YWJsZSBlbGVtZW50IG9ubHkgYWxpZ24gbGVmdDoKKworSGVs
bG8KKyMzIERJViBlbGVtZW50IHdpdGggYSBub24tZWRpdGFibGUgZWxlbWVudCBvbmx5IGFsaWdu
IHJpZ2h0OgorCitIZWxsbworIzQgRElWIGVsZW1lbnQgd2l0aCB0d28gbm9uLWVkaXRhYmxlIGVs
ZW1lbnR3aXRoIHBhZGRpbmc6CisKK0hlbGxvIFdvcmxkCisjNSBESVYgZWxlbWVudCBlbXB0eQor
CisjNiBub24gZWRpdGFibGUgRElWIGVsZW1lbnQgd2l0aCBhbiBlZGl0YWJsZSBlbXB0eSBzcGFu
IGVsZW1lbnQKKworSGVsbG86wqAKK0FuY2hvciAoW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIDAg
Y2FyZXRbNDAsNDJdIHJlZnBvcz00MCkgaXMgY29ycmVjdC4KK0FuY2hvciAoW29iamVjdCBIVE1M
RGl2RWxlbWVudF0sIDMgY2FyZXRbNzUsNDJdIHJlZnBvcz03NikgaXMgaW5jb3JyZWN0LgorQW5j
aG9yIChbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgMSBjYXJldFs0MywxMTBdIHJlZnBvcz00Mykg
aXMgY29ycmVjdC4KK0FuY2hvciAoW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIDAgY2FyZXRbOCwx
MTBdIHJlZnBvcz04KSBpcyBjb3JyZWN0LgorQW5jaG9yIChbb2JqZWN0IEhUTUxEaXZFbGVtZW50
XSwgMCBjYXJldFs3MywxNzhdIHJlZnBvcz03MykgaXMgY29ycmVjdC4KK0FuY2hvciAoW29iamVj
dCBIVE1MRGl2RWxlbWVudF0sIDMgY2FyZXRbNDcsMjQ2XSByZWZwb3M9NDcpIGlzIGNvcnJlY3Qu
CitBbmNob3IgKFtvYmplY3QgSFRNTERpdkVsZW1lbnRdLCAwIGNhcmV0WzU4LDMxNF0gcmVmcG9z
PTU4KSBpcyBjb3JyZWN0LgorQW5jaG9yIChbb2JqZWN0IEhUTUxTcGFuRWxlbWVudF0sIDAgY2Fy
ZXRbMCwwXSByZWZwb3M9MCkgaXMgY29ycmVjdC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggZTYzN2RmNC4uOTU1YTE1MiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI2MywxOSArMjYzLDYgQEAgcGxhdGZvcm0v
bWFjL2Zhc3QvdGV4dC9hdHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLWluLXRleHRmaWVs
ZC5odG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20t
cmFuZ2UuaHRtbAogcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9qdXN0aWZpZWQtdGV4dC1yZWN0Lmh0
bWwKIAotIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UKLSMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDAyMTk+Ci1lZGl0aW5nL2luc2VydGluZy9jYXJldC1wb3NpdGlvbi5odG1sCi1l
ZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1
MC0yLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLmh0bWwKLWVk
aXRpbmcvc2VsZWN0aW9uL21vdmUtbGVmdC1yaWdodC5odG1sCi1lZGl0aW5nL3N0eWxlL3RleHQt
aW5kZW50Lmh0bWwKLWZhc3QvZG9tL3RhYi1pbi1yaWdodC1hbGlnbm1lbnQuaHRtbAotZmFzdC9m
b3Jtcy9jdXJzb3ItYXQtZWRpdGFibGUtY29udGVudC1ib3VuZGFyeS5odG1sCi1mYXN0L3RleHQv
aW50ZXJuYXRpb25hbC90aGFpLWN1cnNvci1wb3NpdGlvbi5odG1sCi1zdmcvdGV4dC9jYXJldC1p
bi1zdmctdGV4dC54aHRtbAotCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdGV4dElucHV0Q29u
dHJvbGxlci5tYXJrZWRSYW5nZQogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMDIyMj4KIGVkaXRpbmcvaW5wdXQvc2V0dGluZy1pbnB1dC12YWx1ZS1jYW5jZWwt
aW1lLWNvbXBvc2l0aW9uLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhYmNlNzM5Li5kZGJmNGFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMTAtMzAgIE1hcml1c3ogR3J6ZWdvcmN6eWsg
IDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW1dLMl1bV1RSXSBUZXh0IGlucHV0
IGNvbnRyb2xsZXIgbmVlZHMgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDIx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudGF0aW9uIG9mIGdldHRpbmcgZmlyc3QgcmVjdGFuZ2xlIGZvciBjaGFyYWN0ZXIgcmFuZ2Ug
ZnJvbSB3ZWJwYWdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlRmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2UpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAoV2ViUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9SYW5nZSk6
CisKIDIwMTItMTAtMjYgIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW1dLMl1bV1RSXSBUZXh0IGlucHV0IGNvbnRyb2xsZXIgbmVlZHMgc2Vs
ZWN0ZWRSYW5nZSBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmlu
ZGV4IGMzZjkxMjQuLmNhOGVhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAg
LTQyNiw2ICs0MjYsMTMgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZWxlY3RlZFJhbmdlKFdLQnVuZGxl
UGFnZVJlZiBwYWdlUmVmLCB1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQKICAgICByZXR1cm4gdG9J
bXBsKHBhZ2VSZWYpLT5nZXRTZWxlY3RlZFJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOwogfQogCitX
S1JlY3QgV0tCdW5kbGVQYWdlRmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoV0tCdW5kbGVQYWdl
UmVmIHBhZ2VSZWYsIGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkKK3sKKyAgICBXZWJDb3JlOjpJ
bnRSZWN0IHJlY3Q7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5maXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZShsb2NhdGlvbiwgbGVuZ3RoLCByZWN0KTsKKyAgICByZXR1cm4gdG9BUEkocmVjdCk7Cit9
CisKIGJvb2wgV0tCdW5kbGVQYWdlQ2FuU2hvd01JTUVUeXBlKFdLQnVuZGxlUGFnZVJlZiwgV0tT
dHJpbmdSZWYgbWltZVR5cGVSZWYpCiB7CiAgICAgY29uc3QgU3RyaW5nIG1pbWVUeXBlID0gdG9X
VEZTdHJpbmcobWltZVR5cGVSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZh
dGUuaAppbmRleCA4YjI5YTI5Li5jY2JlMjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZVByaXZhdGUuaApAQCAtNjgsNiArNjgsNyBAQCBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBh
Z2VSZXNldFRyYWNrZWRSZXBhaW50cyhXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQg
V0tBcnJheVJlZiBXS0J1bmRsZVBhZ2VDb3B5VHJhY2tlZFJlcGFpbnRSZWN0cyhXS0J1bmRsZVBh
Z2VSZWYgcGFnZSk7CiAKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNlbGVjdGVkUmFuZ2Uo
V0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxl
bmd0aCk7CitXS19FWFBPUlQgV0tSZWN0IFdLQnVuZGxlUGFnZUZpcnN0UmVjdEZvckNoYXJhY3Rl
clJhbmdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpOwog
CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb21wb3NpdGlvbihXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tTdHJpbmdSZWYgdGV4dCwgaW50IGZyb20sIGludCBsZW5ndGgpOwogV0tfRVhQ
T1JUIGJvb2wgV0tCdW5kbGVQYWdlSGFzQ29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IDhjMWFhN2UuLjg4MjczZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTMzNDcsNiArMzM0NywyOSBAQCB2b2lkIFdlYlBhZ2U6OmdldFNl
bGVjdGVkUmFuZ2UodWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKQogICAgIH0K
IH0KIAordm9pZCBXZWJQYWdlOjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSh1aW50NjRfdCBs
b2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBJbnRSZWN0JiByZXN1bHRSZWN0KQoreworICAgIEZy
YW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOworICAgIHJlc3VsdFJlY3Quc2V0TG9jYXRpb24oSW50UG9pbnQoMCwgMCkpOworICAgIHJl
c3VsdFJlY3Quc2V0U2l6ZShJbnRTaXplKDAsIDApKTsKKworICAgIGlmIChsb2NhdGlvbiA+IElO
VF9NQVgpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChsZW5ndGggPiBJTlRfTUFYIHx8IGxv
Y2F0aW9uICsgbGVuZ3RoID4gSU5UX01BWCkKKyAgICAgICAgbGVuZ3RoID0gSU5UX01BWCAtIGxv
Y2F0aW9uOworCisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVt
ZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgbG9jYXRpb24sIGxlbmd0aCk7CisgICAgaWYgKCFyYW5n
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKHJhbmdlLT5zdGFydENvbnRhaW5lcigp
KTsKKyAgICBBU1NFUlQocmFuZ2UtPmVuZENvbnRhaW5lcigpKTsKKworICAgIEludFJlY3QgcmVj
dCA9IGZyYW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpOworICAg
IHJlc3VsdFJlY3QgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHJlY3QpOworfQor
CiB2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIGNv
bXBvc2l0aW9uU3RyaW5nLCB1aW50NjRfdCBmcm9tLCB1aW50NjRfdCBsZW5ndGgpCiB7CiAgICAg
RnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCAzMWFkZDJkLi43ZjEyOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTQ0Niw3ICs0NDYsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRNYXJr
ZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpOwogICAgIHZvaWQg
Z2V0QXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0
X3QgbGVuZ3RoLCBBdHRyaWJ1dGVkU3RyaW5nJik7CiAgICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZv
clBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50NjRfdCYgcmVzdWx0KTsK
LSAgICB2b2lkIGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1
aW50NjRfdCBsZW5ndGgsIFdlYkNvcmU6OkludFJlY3QmIHJlc3VsdFJlY3QpOwogICAgIHZvaWQg
ZXhlY3V0ZUtleXByZXNzQ29tbWFuZHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29t
bWFuZD4mLCBib29sJiBoYW5kbGVkLCBFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpOwogICAgIHZvaWQg
cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFdURjo6U3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgYm9vbCYgcmVzdWx0KTsKICAgICB2b2lkIGdldFN0cmluZ1NlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoV1RGOjpTdHJpbmcmIHN0cmluZ1ZhbHVlKTsKQEAgLTQ3Niw2ICs0NzUsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIHZvaWQgZ2V0U2VsZWN0ZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRp
b24sIHVpbnQ2NF90JiBsZW5ndGgpOworICAgIHZvaWQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFu
Z2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgV2ViQ29yZTo6SW50UmVjdCYg
cmVzdWx0UmVjdCk7CiAKICAgICB2b2lkIHNldENvbXBvc2l0aW9uRm9yVGVzdGluZyhjb25zdCBT
dHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCB1aW50NjRfdCBmcm9tLCB1aW50NjRfdCBsZW5ndGgp
OwogICAgIGJvb2wgaGFzQ29tcG9zaXRpb25Gb3JUZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZjhjMzE3
My4uZmEzODhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMzk0LDIzICszOTQsNiBAQCBQYXNzUmVmUHRyPFJhbmdl
PiBjb252ZXJ0VG9SYW5nZShGcmFtZSogZnJhbWUsIE5TUmFuZ2UgbnNyYW5nZSkKICAgICAvLyBU
aGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0IGNvbnRleHQuCiAgICAgcmV0
dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUtPnNlbGVj
dGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKSwgbnNyYW5nZS5s
b2NhdGlvbiwgbnNyYW5nZS5sZW5ndGgpOwogfQotICAgIAotdm9pZCBXZWJQYWdlOjpmaXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoLCBX
ZWJDb3JlOjpJbnRSZWN0JiByZXN1bHRSZWN0KQotewotICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIHJlc3VsdFJl
Y3Quc2V0TG9jYXRpb24oSW50UG9pbnQoMCwgMCkpOwotICAgIHJlc3VsdFJlY3Quc2V0U2l6ZShJ
bnRTaXplKDAsIDApKTsKLSAgICAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gY29udmVydFRv
UmFuZ2UoZnJhbWUsIE5TTWFrZVJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpKTsKLSAgICBpZiAoIXJh
bmdlKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQVNTRVJUKHJhbmdlLT5zdGFydENvbnRh
aW5lcigpKTsKLSAgICBBU1NFUlQocmFuZ2UtPmVuZENvbnRhaW5lcigpKTsKLSAgICAgCi0gICAg
SW50UmVjdCByZWN0ID0gZnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5n
ZXQoKSk7Ci0gICAgcmVzdWx0UmVjdCA9IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3co
cmVjdCk7Ci19CiAKIHZvaWQgV2ViUGFnZTo6ZXhlY3V0ZUtleXByZXNzQ29tbWFuZHMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mIGNvbW1hbmRzLCBib29sJiBoYW5kbGVk
LCBFZGl0b3JTdGF0ZSYgbmV3U3RhdGUpCiB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTBjNDU0My4uMzgxYjBmNyAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEy
LTEwLTMwICBNYXJpdXN6IEdyemVnb3JjenlrICA8bWFyaXVzei5nQHNhbXN1bmcuY29tPgorCisg
ICAgICAgIFtXSzJdW1dUUl0gVGV4dCBpbnB1dCBjb250cm9sbGVyIG5lZWRzIGZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAyMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBEZWNsYXJhdGlvbiBhbmQgaW1wbGVtZW50YXRpb24gb2Yg
Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UgZnVuY3Rpb24gaW4gVGV4dElucHV0Q29udHJvbGxl
ci4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGV4dElucHV0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGV4dElu
cHV0Q29udHJvbGxlcjo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UpOgorICAgICAgICAoV1RS
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKFRleHRJbnB1dENvbnRyb2xsZXIpOgorCiAyMDEyLTEwLTI2
ICBNYXJpdXN6IEdyemVnb3JjenlrICA8bWFyaXVzei5nQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IFtXSzJdW1dUUl0gVGV4dCBpbnB1dCBjb250cm9sbGVyIG5lZWRzIHNlbGVjdGVkUmFuZ2UgaW1w
bGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGV4dElucHV0Q29udHJvbGxlci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1RleHRJbnB1dENvbnRyb2xsZXIuaWRsCmlu
ZGV4IDZkODVmNzguLmViNjNjMWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGV4dElucHV0Q29udHJvbGxlci5pZGwKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXh0SW5wdXRDb250
cm9sbGVyLmlkbApAQCAtMjksNSArMjksNiBAQCBpbnRlcmZhY2UgVGV4dElucHV0Q29udHJvbGxl
ciB7CiAgICAgdm9pZCB1bm1hcmtUZXh0KCk7CiAgICAgdm9pZCBpbnNlcnRUZXh0KGluIERPTVN0
cmluZyBzdHJpbmcpOwogICAgIG9iamVjdCBzZWxlY3RlZFJhbmdlKCk7CisgICAgb2JqZWN0IGZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKGluIGxvbmcgbG9jYXRpb24sIGluIGxvbmcgbGVuZ3Ro
KTsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGV4dElucHV0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuY3BwCmluZGV4IDE3YWVhZDUuLjBjODYyZGIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElu
cHV0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmNwcApAQCAtOTUsNCArOTUsMjAgQEAgSlNWYWx1ZVJl
ZiBUZXh0SW5wdXRDb250cm9sbGVyOjpzZWxlY3RlZFJhbmdlKCkKICAgICByZXR1cm4gSlNPYmpl
Y3RNYWtlQXJyYXkoY29udGV4dCwgMiwgYXJyYXlWYWx1ZXMsIDApOwogfQogCitKU1ZhbHVlUmVm
IFRleHRJbnB1dENvbnRyb2xsZXI6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKGludCBsb2Nh
dGlvbiwgaW50IGxlbmd0aCkKK3sKKyAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKTsKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1h
aW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShwYWdlKTsKKyAgICBKU0NvbnRleHRS
ZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUp
OworCisgICAgV0tSZWN0IHJlY3QgPSBXS0J1bmRsZVBhZ2VGaXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZShwYWdlLCBsb2NhdGlvbiwgbGVuZ3RoKTsKKworICAgIEpTVmFsdWVSZWYgYXJyYXlWYWx1
ZXNbNF07CisgICAgYXJyYXlWYWx1ZXNbMF0gPSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBy
ZWN0Lm9yaWdpbi54KTsKKyAgICBhcnJheVZhbHVlc1sxXSA9IEpTVmFsdWVNYWtlTnVtYmVyKGNv
bnRleHQsIHJlY3Qub3JpZ2luLnkpOworICAgIGFycmF5VmFsdWVzWzJdID0gSlNWYWx1ZU1ha2VO
dW1iZXIoY29udGV4dCwgcmVjdC5zaXplLndpZHRoKTsKKyAgICBhcnJheVZhbHVlc1szXSA9IEpT
VmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIHJlY3Quc2l6ZS5oZWlnaHQpOworICAgIHJldHVybiBK
U09iamVjdE1ha2VBcnJheShjb250ZXh0LCA0LCBhcnJheVZhbHVlcywgMCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuaAppbmRleCBlNmI5ZGYyLi4yN2ViNDJi
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJ
bnB1dENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuaApAQCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1bm1hcmtUZXh0KCk7CiAgICAgdm9pZCBpbnNlcnRUZXh0KEpTU3RyaW5nUmVmIHRleHQp
OwogICAgIEpTVmFsdWVSZWYgc2VsZWN0ZWRSYW5nZSgpOworICAgIEpTVmFsdWVSZWYgZmlyc3RS
ZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKTsKIAogcHJpdmF0
ZToKICAgICBUZXh0SW5wdXRDb250cm9sbGVyKCk7Cg==
</data>
<flag name="review"
          id="185390"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192183</attachid>
            <date>2013-03-08 02:20:19 -0800</date>
            <delta_ts>2014-02-05 11:20:04 -0800</delta_ts>
            <desc>Rebased, make asynchronous</desc>
            <filename>bug100219.patch</filename>
            <type>text/plain</type>
            <size>23887</size>
            <attacher name="Mariusz Grzegorczyk">mariusz.g</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZjljOTQ0Li4yMzVkOGQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTMtMDMt
MDggIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW1dLMl1bV1RSXSBUZXh0IGlucHV0IGNvbnRyb2xsZXIgbmVlZHMgZmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2UgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMDIxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEdhcmRlbmluZyBmb3Igd2Via2l0MiByZWxhdGVkIHdpdGggdGV4
dElucHV0Q29udHJvbGxlci5maXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSBpbXBsZW1lbnRhdGlv
bi4KKworICAgICAgICAqIHBsYXRmb3JtL2VmbC13azEvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZv
cm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZWZsL2VkaXRpbmcv
c2VsZWN0aW9uLzU4MjUzNTAtMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2VmbC9lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvZWRpdGluZy9zZWxlY3Rpb24vbWl4ZWQtZWRpdGFiaWxp
dHktMTAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4
cGVjdGF0aW9uczoKKwogMjAxMy0wMy0wNyAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBGaXggcGFpbnRpbmcgcGhhc2VzIGZvciBjb21wb3NpdGVkIHNjcm9s
bGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMS9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMS9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDNlMTczNGQuLjJjOWRkYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI1Nyw4ICsyNTcsNiBAQCB3ZWJraXQub3JnL2IvODc5NzQg
aHR0cC90ZXN0cy9kb3dubG9hZCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvOTg1NzAgZmFz
dC9yZXBsYWNlZC9vYmplY3Qtd2l0aC1lbWJlZC11cmwtcGFyYW0uaHRtbCBbIEZhaWx1cmUgXQog
Ci13ZWJraXQub3JnL2IvNTM5ODYgc3ZnL3RleHQvY2FyZXQtaW4tc3ZnLXRleHQueGh0bWwgWyBG
YWlsdXJlIF0KLQogIyBSZWxpZXMgb24gV2ViS2l0IEFQSSBbV2ViVmlldyBfbG9hZEJhY2tGb3J3
YXJkTGlzdEZyb21PdGhlclZpZXc6XQogZmFzdC9sb2FkZXIvY3Jhc2gtY29weWluZy1iYWNrZm9y
d2FyZGxpc3QuaHRtbAogCkBAIC0yNzksMTQgKzI3NywxMCBAQCBodHRwL3Rlc3RzL21pc2MvcmVk
aXJlY3QtdG8tZXh0ZXJuYWwtdXJsLmh0bWwKIGh0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1hdXRo
LXJlc2VuZC13cm9uZy1jcmVkZW50aWFscy5odG1sCiAKICMgQlVHOiB3cm9uZyB0ZXN0IHJlc3Vs
dHMgdGhhdCBuZWVkIGludmVzdGlnYXRpb24KLWVkaXRpbmcvc2VsZWN0aW9uLzU4MjUzNTAtMS5o
dG1sIFsgRmFpbHVyZSBdCi1lZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTIuaHRtbCBbIEZhaWx1
cmUgXQogZWRpdGluZy9zZWxlY3Rpb24vZGlyZWN0aW9uYWxpdHktYWZ0ZXItdW5kby1yZXBsYWNl
Lmh0bWwgWyBGYWlsdXJlIF0KIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1j
ci1zcGFuLmh0bWwgWyBGYWlsdXJlIF0KIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdo
aXRlc3BhY2UuaHRtbCBbIEZhaWx1cmUgXQogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVj
dGlvbi1hZnRlci1kb3VibGUtY2xpY2suaHRtbCBbIEZhaWx1cmUgXQotZWRpdGluZy9zZWxlY3Rp
b24vbWl4ZWQtZWRpdGFiaWxpdHktMTAuaHRtbCBbIEZhaWx1cmUgXQotZWRpdGluZy9zZWxlY3Rp
b24vbW92ZS1sZWZ0LXJpZ2h0Lmh0bWwgWyBGYWlsdXJlIF0KIGVkaXRpbmcvc2VsZWN0aW9uL3Nl
bGVjdC1iaWRpLXJ1bi5odG1sIFsgRmFpbHVyZSBdCiBodHRwL3Rlc3RzL25hdmlnYXRpb24vZ28t
YmFjay10by1lcnJvci1wYWdlLmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCBjMGRhMTE1Li5kM2ZjNmM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTE4LDYgKzExOCw3IEBAIGZhc3QvZXZlbnRzL21v
dXNlb3V0LW9uLXdpbmRvdy5odG1sCiBjb21wb3NpdGluZy9pbWFnZXMvZGlyZWN0LXBkZi1pbWFn
ZS5odG1sCiBjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9iYWNrZmFjZS1oaWRkZW4tcmVmbGVjdGlv
bi5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWFmdGVyLWRvdWJsZS1j
bGljay5odG1sCitlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWxlZnQtcmlnaHQuaHRtbAogZmFzdC9m
b3Jtcy9saXN0Ym94LW9uY2hhbmdlLmh0bWwKIGZhc3QvZm9ybXMvb25zZWxlY3QtdGV4dGZpZWxk
Lmh0bWwKIGZhc3QvZm9ybXMvb3B0aW9uLW1vdXNlZXZlbnRzLmh0bWwKQEAgLTY2Myw2ICs2NjQs
OCBAQCB3ZWJraXQub3JnL2IvMTAwNTE5IGZhc3QvaW1hZ2VzL3BhbGV0dGVkLXBuZy13aXRoLWNv
bG9yLXByb2ZpbGUuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEwNTU0MiBmYXN0L2NhbnZh
cy9jYW52YXMtYmxlbmQtaW1hZ2UuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEwNTU0MiBm
YXN0L2NhbnZhcy9jYW52YXMtYmxlbmQtc29saWQuaHRtbCBbIFNraXAgXQogCisjIFtFRkxdW0dU
S10gc3ZnL3RleHQvY2FyZXQtaW4tc3ZnLXRleHQueGh0bWwgZmFpbHMKK3dlYmtpdC5vcmcvYi81
Mzk4NiBzdmcvdGV4dC9jYXJldC1pbi1zdmctdGV4dC54aHRtbCBbIEZhaWx1cmUgXQogIy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgQ1JBU0hFUwogIy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggYzk5ODIyYi4uMzM2NGFiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTE2NCwxOSArMTY0LDYgQEAgcGxhdGZvcm0vbWFjL2Zhc3QvdGV4dC9h
dHRyaWJ1dGVkLXN1YnN0cmluZy1mcm9tLXJhbmdlLWluLXRleHRmaWVsZC5odG1sCiBwbGF0Zm9y
bS9tYWMvZmFzdC90ZXh0L2F0dHJpYnV0ZWQtc3Vic3RyaW5nLWZyb20tcmFuZ2UuaHRtbAogcGxh
dGZvcm0vbWFjL2Zhc3QvdGV4dC9qdXN0aWZpZWQtdGV4dC1yZWN0Lmh0bWwKIAotIyBXZWJLaXRU
ZXN0UnVubmVyIG5lZWRzIHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2UKLSMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAyMTk+
Ci1lZGl0aW5nL2luc2VydGluZy9jYXJldC1wb3NpdGlvbi5odG1sCi1lZGl0aW5nL3NlbGVjdGlv
bi81ODI1MzUwLTEuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0yLmh0bWwKLWVkaXRp
bmcvc2VsZWN0aW9uL21peGVkLWVkaXRhYmlsaXR5LTEwLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9u
L21vdmUtbGVmdC1yaWdodC5odG1sCi1lZGl0aW5nL3N0eWxlL3RleHQtaW5kZW50Lmh0bWwKLWZh
c3QvZG9tL3RhYi1pbi1yaWdodC1hbGlnbm1lbnQuaHRtbAotZmFzdC9mb3Jtcy9jdXJzb3ItYXQt
ZWRpdGFibGUtY29udGVudC1ib3VuZGFyeS5odG1sCi1mYXN0L3RleHQvaW50ZXJuYXRpb25hbC90
aGFpLWN1cnNvci1wb3NpdGlvbi5odG1sCi1zdmcvdGV4dC9jYXJldC1pbi1zdmctdGV4dC54aHRt
bAotCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdGV4dElucHV0Q29udHJvbGxlci5tYXJrZWRS
YW5nZQogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDIyMj4K
IGVkaXRpbmcvaW5wdXQvc2V0dGluZy1pbnB1dC12YWx1ZS1jYW5jZWwtaW1lLWNvbXBvc2l0aW9u
Lmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCAwNjlhMGE1Li44MzEzZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzcgQEAKKzIwMTMtMDMtMDggIE1hcml1c3ogR3J6ZWdvcmN6eWsgIDxtYXJpdXN6LmdAc2Ft
c3VuZy5jb20+CisKKyAgICAgICAgW1dLMl1bV1RSXSBUZXh0IGlucHV0IGNvbnRyb2xsZXIgbmVl
ZHMgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDIxOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIGdl
dHRpbmcgZmlyc3QgcmVjdGFuZ2xlIGZvciBjaGFyYWN0ZXIgcmFuZ2UgZnJvbSB3ZWJwYWdlLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1Zp
ZXcgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2U6YWN0dWFsUmFuZ2U6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6IEltcGxlbWVudGF0aW9uIG1vdmVkIGZyb20gTWFj
IHBvcnQgdG8gY29tbW9uIHBsYWNlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omdl
dEZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjdENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDogQWRkIGNhbGxiYWNrIGZvciBnZXR0aW5nIFdlYlJlY3QgZnJvbSBXZWJQcm9j
ZXNzLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VGaXJz
dFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmaXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpnZXRGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYlBhZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFRv
UmFuZ2UpOgorCiAyMDEzLTAzLTA2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgogCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZSByYWlzZXMgYW4gdW5j
YXVnaHQgT2JqZWN0aXZlLUMgZXhjZXB0aW9uIGlmIHBhdGggaXMgZW1wdHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCA5NDY0ZjZmLi4xMWExMmI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0xNjM1LDI4
ICsxNjM1LDkgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3Ry
aW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKIAogLSAoTlNSZWN0KWZpcnN0UmVj
dEZvckNoYXJhY3RlclJhbmdlOihOU1JhbmdlKXRoZVJhbmdlIGFjdHVhbFJhbmdlOihOU1Jhbmdl
UG9pbnRlcilhY3R1YWxSYW5nZQogeyAKLSAgICBbc2VsZiBfZXhlY3V0ZVNhdmVkS2V5cHJlc3ND
b21tYW5kc107Ci0KLSAgICAvLyBKdXN0IHRvIG1hdGNoIE5TVGV4dFZpZXcncyBiZWhhdmlvci4g
UmVncmVzc2lvbiB0ZXN0cyBjYW5ub3QgZGV0ZWN0IHRoaXM7Ci0gICAgLy8gdG8gcmVwcm9kdWNl
LCB1c2UgYSB0ZXN0IGFwcGxpY2F0aW9uIGZyb20gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDY4MgotICAgIC8vICh0eXBlIHNvbWV0aGluZzsgdHJ5IHJhbmdlcyAoMSwg
LTEpIGFuZCAoMiwgLTEpLgotICAgIGlmICgodGhlUmFuZ2UubG9jYXRpb24gKyB0aGVSYW5nZS5s
ZW5ndGggPCB0aGVSYW5nZS5sb2NhdGlvbikgJiYgKHRoZVJhbmdlLmxvY2F0aW9uICsgdGhlUmFu
Z2UubGVuZ3RoICE9IDApKQotICAgICAgICB0aGVSYW5nZS5sZW5ndGggPSAwOwotICAgIAotICAg
IE5TUmVjdCByZXN1bHRSZWN0ID0gX2RhdGEtPl9wYWdlLT5maXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZSh0aGVSYW5nZS5sb2NhdGlvbiwgdGhlUmFuZ2UubGVuZ3RoKTsKLSAgICByZXN1bHRSZWN0
ID0gW3NlbGYgY29udmVydFJlY3Q6cmVzdWx0UmVjdCB0b1ZpZXc6bmlsXTsKLSAgICAKLSAgICBO
U1dpbmRvdyAqd2luZG93ID0gW3NlbGYgd2luZG93XTsKLSAgICBpZiAod2luZG93KQotICAgICAg
ICByZXN1bHRSZWN0Lm9yaWdpbiA9IFt3aW5kb3cgY29udmVydEJhc2VUb1NjcmVlbjpyZXN1bHRS
ZWN0Lm9yaWdpbl07Ci0KLSAgICBpZiAoYWN0dWFsUmFuZ2UpIHsKLSAgICAgICAgLy8gRklYTUU6
IFVwZGF0ZSBhY3R1YWxSYW5nZSB0byBtYXRjaCB0aGUgcmFuZ2Ugb2YgZmlyc3QgcmVjdC4KLSAg
ICAgICAgKmFjdHVhbFJhbmdlID0gdGhlUmFuZ2U7Ci0gICAgfQogCi0gICAgTE9HKFRleHRJbnB1
dCwgImZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlOigldSwgJXUpIC0+ICglZiwgJWYsICVmLCAl
ZikiLCB0aGVSYW5nZS5sb2NhdGlvbiwgdGhlUmFuZ2UubGVuZ3RoLCByZXN1bHRSZWN0Lm9yaWdp
bi54LCByZXN1bHRSZWN0Lm9yaWdpbi55LCByZXN1bHRSZWN0LnNpemUud2lkdGgsIHJlc3VsdFJl
Y3Quc2l6ZS5oZWlnaHQpOwotICAgIHJldHVybiByZXN1bHRSZWN0OworICAgIC8vIE5vdCBpbXBs
ZW1lbnRlZAorICAgIHJldHVybiBOU01ha2VSZWN0KDAsIDAsIDAsIDApOwogfQogCiAjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggZGJlZDg5ZC4uZTZlOGU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTEwMjQsNiArMTAyNCwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0U2VsZWN0ZWRSYW5nZShQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlKGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRGaXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZShQYXNzUmVmUHRyPFJlY3RDYWxsYmFjaz4gcHJwQ2FsbGJhY2ss
IHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgpCit7CisgICAgUmVmUHRyPFJlY3RD
YWxsYmFjaz4gY2FsbGJhY2sgPSBwcnBDYWxsYmFjazsKKyAgICBpZiAoIWlzVmFsaWQoKSkgewor
ICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAg
bV9yZWN0Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5nZXQoKSk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRGaXJzdFJlY3RGb3JDaGFyYWN0ZXJS
YW5nZShjYWxsYmFja0lELCBsb2NhdGlvbiwgbGVuZ3RoKSwgbV9wYWdlSUQpOworfQorCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5h
bWUpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCkBAIC0zNjY5LDYgKzM2ODIsMTggQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYgY29tbWFu
ZE5hbWUsIGJvb2wgaXNFbmEKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVy
blZhbHVlKGNvbW1hbmROYW1lLmltcGwoKSwgaXNFbmFibGVkLCBzdGF0ZSk7CiB9CiAKK3ZvaWQg
V2ViUGFnZVByb3h5OjpyZWN0Q2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVzdWx0
UmVjdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBSZWZQdHI8UmVjdENhbGxiYWNrPiBj
YWxsYmFjayA9IG1fcmVjdENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOworICAgIGlmICghY2Fs
bGJhY2spIHsKKyAgICAgICAgLy8gRklYTUU6IExvZyBlcnJvciBvciBhc3NlcnQuCisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8V2ViUmVjdD4gd2ViUmVjdCA9IFdlYlJlY3Q6
OmNyZWF0ZSh0b0FQSShyZXN1bHRSZWN0KSk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFj
a1dpdGhSZXR1cm5WYWx1ZSh3ZWJSZWN0LmdldCgpKTsKK30KKwogI2lmIFBMQVRGT1JNKEdUSykK
IHZvaWQgV2ViUGFnZVByb3h5OjpwcmludEZpbmlzaGVkQ2FsbGJhY2soY29uc3QgUmVzb3VyY2VF
cnJvciYgcHJpbnRFcnJvciwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKQEAgLTM4MTAsNiArMzgz
NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQ3Jhc2goKQogICAgIGludmFsaWRh
dGVDYWxsYmFja01hcChtX3NjcmlwdFZhbHVlQ2FsbGJhY2tzKTsKICAgICBpbnZhbGlkYXRlQ2Fs
bGJhY2tNYXAobV9jb21wdXRlZFBhZ2VzQ2FsbGJhY2tzKTsKICAgICBpbnZhbGlkYXRlQ2FsbGJh
Y2tNYXAobV92YWxpZGF0ZUNvbW1hbmRDYWxsYmFja3MpOworICAgIGludmFsaWRhdGVDYWxsYmFj
a01hcChtX3JlY3RDYWxsYmFja3MpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBpbnZhbGlkYXRl
Q2FsbGJhY2tNYXAobV9wcmludEZpbmlzaGVkQ2FsbGJhY2tzKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDcwMmUwZDYuLmFhMjI1MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE2OCw2ICsxNjgsNyBAQCBj
bGFzcyBXZWJWaWJyYXRpb25Qcm94eTsKIAogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8V0tTdHJp
bmdSZWYsIFN0cmluZ0ltcGwqPiBTdHJpbmdDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxi
YWNrPFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmLCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUq
PiBTY3JpcHRWYWx1ZUNhbGxiYWNrOwordHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8V0tSZWN0UmVm
LCBXZWJSZWN0Kj4gUmVjdENhbGxiYWNrOwogCiAjaWYgUExBVEZPUk0oR1RLKQogdHlwZWRlZiBH
ZW5lcmljQ2FsbGJhY2s8V0tFcnJvclJlZj4gUHJpbnRGaW5pc2hlZENhbGxiYWNrOwpAQCAtMzU5
LDYgKzM2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1haW50YWluc0luYWN0aXZlU2VsZWN0
aW9uKGJvb2wpOwogCiAgICAgdm9pZCBnZXRTZWxlY3RlZFJhbmdlKFBhc3NSZWZQdHI8RGF0YUNh
bGxiYWNrPik7CisgICAgdm9pZCBnZXRGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShQYXNzUmVm
UHRyPFJlY3RDYWxsYmFjaz4sIHVpbnQ2NF90LCB1aW50NjRfdCk7CiAKICNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkgCiAgICAgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0
KTsKQEAgLTM5OSw3ICs0MDEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRNYXJrZWRSYW5nZSh1
aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90JiBsZW5ndGgpOwogICAgIHZvaWQgZ2V0QXR0cmli
dXRlZFN1YnN0cmluZ0Zyb21SYW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3Ro
LCBBdHRyaWJ1dGVkU3RyaW5nJik7CiAgICAgdWludDY0X3QgY2hhcmFjdGVySW5kZXhGb3JQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCk7Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBmaXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZSh1aW50NjRfdCwgdWludDY0X3QpOwogICAgIGJvb2wgZXhlY3V0
ZUtleXByZXNzQ29tbWFuZHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4m
KTsKIAogICAgIHZvaWQgc2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbih1aW50NjRfdCBwbHVn
aW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0ZXh0SW5wdXQpOwpA
QCAtOTg5LDYgKzk5MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY3JpcHRWYWx1ZUNhbGxiYWNr
KGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmLCB1aW50NjRfdCk7CiAgICAgdm9pZCBjb21w
dXRlZFBhZ2VzQ2FsbGJhY2soY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgZG91Ymxl
IHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgdWludDY0X3QpOwogICAgIHZvaWQgdmFsaWRh
dGVDb21tYW5kQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCB1aW50NjRfdCk7Cisg
ICAgdm9pZCByZWN0Q2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVpbnQ2NF90KTsK
ICNpZiBQTEFURk9STShHVEspCiAgICAgdm9pZCBwcmludEZpbmlzaGVkQ2FsbGJhY2soY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIHVpbnQ2NF90KTsKICNlbmRpZgpAQCAtMTA5Niw2ICsx
MDk4LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U2NyaXB0VmFs
dWVDYWxsYmFjaz4gPiBtX3NjcmlwdFZhbHVlQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+ID4gbV9jb21wdXRlZFBhZ2VzQ2FsbGJh
Y2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxWYWxpZGF0ZUNvbW1hbmRDYWxsYmFj
az4gPiBtX3ZhbGlkYXRlQ29tbWFuZENhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8UmVjdENhbGxiYWNrPiA+IG1fcmVjdENhbGxiYWNrczsKICNpZiBQTEFURk9STShHVEsp
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFByaW50RmluaXNoZWRDYWxsYmFjaz4gPiBt
X3ByaW50RmluaXNoZWRDYWxsYmFja3M7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDY0YzU3ZWQuLmU5NGE5ZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgpAQCAtMTUyLDYgKzE1Miw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
U2NyaXB0VmFsdWVDYWxsYmFjayhDb3JlSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgQ29tcHV0ZWRQYWdlc0NhbGxiYWNrKFZlY3RvcjxXZWJD
b3JlOjpJbnRSZWN0PiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRp
bmcsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soV1RG
OjpTdHJpbmcgY29tbWFuZCwgYm9vbCBpc0VuYWJsZWQsIGludDMyX3Qgc3RhdGUsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCisgICAgUmVjdENhbGxiYWNrKFdlYkNvcmU6OkludFJlY3QgcmVzdWx0UmVj
dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICNpZiBQTEFURk9STShHVEspCiAgICAgUHJpbnRGaW5p
c2hlZENhbGxiYWNrKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KaW5kZXggOThiZDgzNS4uZTMxZmQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTI0NywxNiArMjQ3LDYgQEAg
dWludDY0X3QgV2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KGNvbnN0IEludFBv
aW50IHBvaW50KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUludFJlY3QgV2ViUGFnZVByb3h5
OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSh1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3Qg
bGVuZ3RoKQotewotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gSW50UmVjdCgp
OwotCi0gICAgSW50UmVjdCByZXN1bHRSZWN0OwotICAgIHByb2Nlc3MoKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2U6OkZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKGxvY2F0aW9uLCBsZW5n
dGgpLCBNZXNzYWdlczo6V2ViUGFnZTo6Rmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2U6OlJlcGx5
KHJlc3VsdFJlY3QpLCBtX3BhZ2VJRCk7Ci0gICAgcmV0dXJuIHJlc3VsdFJlY3Q7Ci19Ci0KIGJv
b2wgV2ViUGFnZVByb3h5OjpleGVjdXRlS2V5cHJlc3NDb21tYW5kcyhjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6S2V5cHJlc3NDb21tYW5kPiYgY29tbWFuZHMpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggNjlkNmEyYy4uMzdlNzk5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNDUwLDYgKzQ1MCwxMyBAQCB2b2lkIFdL
QnVuZGxlUGFnZVNlbGVjdGVkUmFuZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIHVpbnQ2NF90
JiBsb2NhdGlvbiwgdWludAogICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPnNlbGVjdGVkUmFu
Z2UobG9jYXRpb24sIGxlbmd0aCk7CiB9CiAKK1dLUmVjdCBXS0J1bmRsZVBhZ2VGaXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZShXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgaW50IGxvY2F0aW9uLCBp
bnQgbGVuZ3RoKQoreworICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdDsKKyAgICB0b0ltcGwocGFn
ZVJlZiktPmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKGxvY2F0aW9uLCBsZW5ndGgsIHJlY3Qp
OworICAgIHJldHVybiB0b0FQSShyZWN0KTsKK30KKwogYm9vbCBXS0J1bmRsZVBhZ2VDYW5TaG93
TUlNRVR5cGUoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIG1pbWVUeXBlUmVm
KQogewogICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmNhblNob3dNSU1FVHlwZSh0b1dURlN0
cmluZyhtaW1lVHlwZVJlZikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUu
aAppbmRleCAwOTJhYTUzLi5hMWQ0ZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZVByaXZhdGUuaApAQCAtNjgsNiArNjgsNyBAQCBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VS
ZXNldFRyYWNrZWRSZXBhaW50cyhXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgV0tB
cnJheVJlZiBXS0J1bmRsZVBhZ2VDb3B5VHJhY2tlZFJlcGFpbnRSZWN0cyhXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSk7CiAKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNlbGVjdGVkUmFuZ2UoV0tC
dW5kbGVQYWdlUmVmIHBhZ2VSZWYsIHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0
aCk7CitXS19FWFBPUlQgV0tSZWN0IFdLQnVuZGxlUGFnZUZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpOwogCiBX
S19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb21wb3NpdGlvbihXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tTdHJpbmdSZWYgdGV4dCwgaW50IGZyb20sIGludCBsZW5ndGgpOwogV0tfRVhQT1JU
IGJvb2wgV0tCdW5kbGVQYWdlSGFzQ29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGRk
NmQxZTIuLjE3ZmU2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTM1NDgsNiArMzU0OCwzNiBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVj
dGVkUmFuZ2UodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9CiAKK3Zv
aWQgV2ViUGFnZTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UodWludDY0X3QgbG9jYXRpb24s
IHVpbnQ2NF90IGxlbmd0aCwgSW50UmVjdCYgcmVzdWx0UmVjdCkKK3sKKyAgICBGcmFtZSogZnJh
bWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAg
ICByZXN1bHRSZWN0LnNldExvY2F0aW9uKEludFBvaW50KDAsIDApKTsKKyAgICByZXN1bHRSZWN0
LnNldFNpemUoSW50U2l6ZSgwLCAwKSk7CisKKyAgICBpZiAobG9jYXRpb24gPiBJTlRfTUFYKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAobGVuZ3RoID4gSU5UX01BWCB8fCBsb2NhdGlvbiAr
IGxlbmd0aCA+IElOVF9NQVgpCisgICAgICAgIGxlbmd0aCA9IElOVF9NQVggLSBsb2NhdGlvbjsK
KworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoKGZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9j
dW1lbnRFbGVtZW50KCksIGxvY2F0aW9uLCBsZW5ndGgpOworICAgIGlmICghcmFuZ2UpCisgICAg
ICAgIHJldHVybjsKKworICAgIEFTU0VSVChyYW5nZS0+c3RhcnRDb250YWluZXIoKSk7CisgICAg
QVNTRVJUKHJhbmdlLT5lbmRDb250YWluZXIoKSk7CisKKyAgICBJbnRSZWN0IHJlY3QgPSBmcmFt
ZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKKyAgICByZXN1bHRS
ZWN0ID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhyZWN0KTsKK30KKwordm9pZCBX
ZWJQYWdlOjpnZXRGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSh1aW50NjRfdCBjYWxsYmFja0lE
LCB1aW50NjRfdCBsb2NhdGlvbiwgdWludDY0X3QgbGVuZ3RoKQoreworICAgIEludFJlY3QgcmVz
dWx0UmVjdDsKKyAgICBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShsb2NhdGlvbiwgbGVuZ3Ro
LCByZXN1bHRSZWN0KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlY3RDYWxs
YmFjayhyZXN1bHRSZWN0LCBjYWxsYmFja0lEKSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6c2V0Q29t
cG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIHVpbnQ2
NF90IGZyb20sIHVpbnQ2NF90IGxlbmd0aCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDRlZDUxMTcuLjdkODZlY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDQ5LDcg
KzQ0OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldE1hcmtlZFJhbmdlKHVpbnQ2NF90JiBsb2Nh
dGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CiAgICAgdm9pZCBnZXRBdHRyaWJ1dGVkU3Vic3RyaW5n
RnJvbVJhbmdlKHVpbnQ2NF90IGxvY2F0aW9uLCB1aW50NjRfdCBsZW5ndGgsIEF0dHJpYnV0ZWRT
dHJpbmcmKTsKICAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90JiByZXN1bHQpOwotICAgIHZvaWQgZmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgV2ViQ29y
ZTo6SW50UmVjdCYgcmVzdWx0UmVjdCk7CiAgICAgdm9pZCBleGVjdXRlS2V5cHJlc3NDb21tYW5k
cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiYsIGJvb2wmIGhhbmRsZWQs
IEVkaXRvclN0YXRlJiBuZXdTdGF0ZSk7CiAgICAgdm9pZCByZWFkU2VsZWN0aW9uRnJvbVBhc3Rl
Ym9hcmQoY29uc3QgV1RGOjpTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBib29sJiByZXN1bHQpOwog
ICAgIHZvaWQgZ2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZChXVEY6OlN0cmluZyYgc3Ry
aW5nVmFsdWUpOwpAQCAtNDc0LDYgKzQ3Myw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0U2Vs
ZWN0ZWRSYW5nZSh1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIHNlbGVjdGVkUmFuZ2Uo
dWludDY0X3QmIGxvY2F0aW9uLCB1aW50NjRfdCYgbGVuZ3RoKTsKKyAgICB2b2lkIGdldEZpcnN0
UmVjdEZvckNoYXJhY3RlclJhbmdlKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGxvY2F0
aW9uLCB1aW50NjRfdCBsZW5ndGgpOworICAgIHZvaWQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFu
Z2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgV2ViQ29yZTo6SW50UmVjdCYg
cmVzdWx0UmVjdCk7CiAKICAgICB2b2lkIHNldENvbXBvc2l0aW9uRm9yVGVzdGluZyhjb25zdCBT
dHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCB1aW50NjRfdCBmcm9tLCB1aW50NjRfdCBsZW5ndGgp
OwogICAgIGJvb2wgaGFzQ29tcG9zaXRpb25Gb3JUZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGVi
ZDY0NDAuLmE1NmJhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC05MSw2ICs5MSw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIENsZWFyU2VsZWN0aW9uKCkKIAogICAgIEdl
dFNlbGVjdGVkUmFuZ2UodWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBHZXRGaXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZSh1aW50NjRfdCBjYWxsYmFja0lELCB1aW50NjRfdCBsb2NhdGlvbiwgdWlu
dDY0X3QgbGVuZ3RoKQogCiAgICAgIyBDYWxsYmFja3MuCiAgICAgR2V0Q29udGVudHNBc1N0cmlu
Zyh1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGQ3NmM5NzkuLjk5MzhjNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KQEAgLTM5NywyMyArMzk3LDYgQEAgUGFzc1JlZlB0cjxSYW5nZT4gY29udmVydFRvUmFuZ2Uo
RnJhbWUqIGZyYW1lLCBOU1JhbmdlIG5zcmFuZ2UpCiAgICAgLy8gVGhhdCBmaXRzIHdpdGggQXBw
S2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250ZXh0LgogICAgIHJldHVybiBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRh
YmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIG5zcmFuZ2UubG9jYXRpb24sIG5zcmFuZ2Uu
bGVuZ3RoKTsKIH0KLSAgICAKLXZvaWQgV2ViUGFnZTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFu
Z2UodWludDY0X3QgbG9jYXRpb24sIHVpbnQ2NF90IGxlbmd0aCwgV2ViQ29yZTo6SW50UmVjdCYg
cmVzdWx0UmVjdCkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICByZXN1bHRSZWN0LnNldExvY2F0aW9uKElu
dFBvaW50KDAsIDApKTsKLSAgICByZXN1bHRSZWN0LnNldFNpemUoSW50U2l6ZSgwLCAwKSk7Ci0g
ICAgCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGNvbnZlcnRUb1JhbmdlKGZyYW1lLCBOU01h
a2VSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKSk7Ci0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIEFTU0VSVChyYW5nZS0+c3RhcnRDb250YWluZXIoKSk7Ci0gICAgQVNT
RVJUKHJhbmdlLT5lbmRDb250YWluZXIoKSk7Ci0gICAgIAotICAgIEludFJlY3QgcmVjdCA9IGZy
YW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpOwotICAgIHJlc3Vs
dFJlY3QgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHJlY3QpOwotfQogCiB2b2lk
IFdlYlBhZ2U6OmV4ZWN1dGVLZXlwcmVzc0NvbW1hbmRzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpL
ZXlwcmVzc0NvbW1hbmQ+JiBjb21tYW5kcywgYm9vbCYgaGFuZGxlZCwgRWRpdG9yU3RhdGUmIG5l
d1N0YXRlKQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDAwM2U2Y2EuLmEyYmVkNTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0wMy0wOCAgTWFyaXVzeiBH
cnplZ29yY3p5ayAgPG1hcml1c3ouZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbV0syXVtXVFJd
IFRleHQgaW5wdXQgY29udHJvbGxlciBuZWVkcyBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSBp
bXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAwMjE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRGVjbGFyYXRpb24gYW5kIGltcGxlbWVudGF0aW9uIG9mIGZpcnN0UmVjdEZvckNoYXJh
Y3RlclJhbmdlIGZ1bmN0aW9uIGluIFRleHRJbnB1dENvbnRyb2xsZXIuCisKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1RleHRJbnB1dENvbnRyb2xs
ZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElu
cHV0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRleHRJbnB1dENvbnRyb2xsZXI6OmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKToKKyAgICAgICAgKFdUUik6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmg6CisgICAg
ICAgIChUZXh0SW5wdXRDb250cm9sbGVyKToKKwogMjAxMy0wMy0wNiAgSnVsaWUgUGFyZW50ICA8
anBhcmVudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRGFzaGJvYXJkIGNsZWFudXA6IE1vdmUg
YWxsIGRhc2hib2FyZCB1aSByZWxhdGVkIGNvZGUgaW50byB1aS5qcy4KZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGV4dElucHV0Q29u
dHJvbGxlci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1RleHRJbnB1dENvbnRyb2xsZXIuaWRsCmluZGV4IDZkODVmNzguLmViNjNjMWMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGV4
dElucHV0Q29udHJvbGxlci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXh0SW5wdXRDb250cm9sbGVyLmlkbApAQCAtMjksNSArMjksNiBA
QCBpbnRlcmZhY2UgVGV4dElucHV0Q29udHJvbGxlciB7CiAgICAgdm9pZCB1bm1hcmtUZXh0KCk7
CiAgICAgdm9pZCBpbnNlcnRUZXh0KGluIERPTVN0cmluZyBzdHJpbmcpOwogICAgIG9iamVjdCBz
ZWxlY3RlZFJhbmdlKCk7CisgICAgb2JqZWN0IGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKGlu
IGxvbmcgbG9jYXRpb24sIGluIGxvbmcgbGVuZ3RoKTsKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xs
ZXIuY3BwCmluZGV4IDE3YWVhZDUuLjBjODYyZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGV4dElucHV0Q29udHJvbGxlci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVyLmNw
cApAQCAtOTUsNCArOTUsMjAgQEAgSlNWYWx1ZVJlZiBUZXh0SW5wdXRDb250cm9sbGVyOjpzZWxl
Y3RlZFJhbmdlKCkKICAgICByZXR1cm4gSlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgMiwgYXJy
YXlWYWx1ZXMsIDApOwogfQogCitKU1ZhbHVlUmVmIFRleHRJbnB1dENvbnRyb2xsZXI6OmZpcnN0
UmVjdEZvckNoYXJhY3RlclJhbmdlKGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkKK3sKKyAgICBX
S0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBh
Z2UoKTsKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1h
aW5GcmFtZShwYWdlKTsKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVH
ZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOworCisgICAgV0tSZWN0IHJlY3QgPSBXS0J1
bmRsZVBhZ2VGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShwYWdlLCBsb2NhdGlvbiwgbGVuZ3Ro
KTsKKworICAgIEpTVmFsdWVSZWYgYXJyYXlWYWx1ZXNbNF07CisgICAgYXJyYXlWYWx1ZXNbMF0g
PSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCByZWN0Lm9yaWdpbi54KTsKKyAgICBhcnJheVZh
bHVlc1sxXSA9IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIHJlY3Qub3JpZ2luLnkpOworICAg
IGFycmF5VmFsdWVzWzJdID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgcmVjdC5zaXplLndp
ZHRoKTsKKyAgICBhcnJheVZhbHVlc1szXSA9IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIHJl
Y3Quc2l6ZS5oZWlnaHQpOworICAgIHJldHVybiBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCA0
LCBhcnJheVZhbHVlcywgMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXh0SW5wdXRDb250cm9sbGVy
LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRy
b2xsZXIuaAppbmRleCBlNmI5ZGYyLi4yN2ViNDJiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuaAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1RleHRJbnB1dENvbnRyb2xsZXIuaApA
QCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bm1hcmtUZXh0KCk7CiAgICAgdm9p
ZCBpbnNlcnRUZXh0KEpTU3RyaW5nUmVmIHRleHQpOwogICAgIEpTVmFsdWVSZWYgc2VsZWN0ZWRS
YW5nZSgpOworICAgIEpTVmFsdWVSZWYgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoaW50IGxv
Y2F0aW9uLCBpbnQgbGVuZ3RoKTsKIAogcHJpdmF0ZToKICAgICBUZXh0SW5wdXRDb250cm9sbGVy
KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>