<?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>96508</bug_id>
          
          <creation_ts>2012-09-12 06:53:12 -0700</creation_ts>
          <short_desc>[Chromium] Merge moveSelectionStart, moveSelectionEnd, and moveCaret into selectRange</short_desc>
          <delta_ts>2012-09-18 10:23:18 -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>
          <dependson>66973</dependson>
    
    <dependson>93998</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Iain Merrick">husky</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>husky</cc>
    
    <cc>jamesr</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>varunjain</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>718309</commentid>
    <comment_count>0</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-12 06:53:12 -0700</bug_when>
    <thetext>[chromium] WebViewImpl::selectionRange should return start/end on Android</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718313</commentid>
    <comment_count>1</comment_count>
      <attachid>163617</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-12 06:57:13 -0700</bug_when>
    <thetext>Created attachment 163617
husky@chromium.org</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718317</commentid>
    <comment_count>2</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-12 07:06:11 -0700</bug_when>
    <thetext>There&apos;s an unfortunate conflict between https://bugs.webkit.org/show_bug.cgi?id=66973 (WebViewImpl::selectionBounds) and my recent patch https://bugs.webkit.org/show_bug.cgi?id=93998 (WebFrameImpl::selectRange).

66973 makes selectionBounds return base/extent rather than start/end. But on Android we do want start/end, in order to draw the selection handles correctly. Why do we need base/extent on other platforms?

93998 interacts badly because it tries to handle base/extent correctly on Android: &quot;extent&quot; is always the selection handle currently being moved, &quot;base&quot; is the stationary one. This means isBaseFirst() can flip back and forth as the user adjusts the selection -- that&apos;s correct, but it means the values returned by selectionBounds will flip back and forth too.

I&apos;ve uploaded a patch that just skips the isBaseFirst check on OS(ANDROID). That obviously isn&apos;t ideal. Varun, is there anything else we could do here? Have I just taken the wrong approach in 93998?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718320</commentid>
    <comment_count>3</comment_count>
      <attachid>163621</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-12 07:09:27 -0700</bug_when>
    <thetext>Created attachment 163621
husky@chromium.org</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718418</commentid>
    <comment_count>4</comment_count>
      <attachid>163621</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-12 08:54:39 -0700</bug_when>
    <thetext>Comment on attachment 163621
husky@chromium.org

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2266
&gt; +// &quot;Start&quot; always precedes &quot;end&quot;. &quot;Base&quot; is where the user&apos;s selection gesture
&gt; +// started, &quot;end&quot; is where it finished. Most platforms want base/extent here.
&gt; +// Android wants start/end even if base/extent are reversed.
&gt; +// FIXME: This shouldn&apos;t be OS-specific. http://webkit.org/b/96508

This is very confusing. Why are arguments called start and end, and yet they expect it to be base and extent? Furthermore, they aren&apos;t base and extent. They&apos;re anchor and focus.
The terminology here is all messed up. Please fix them.

Also, we should probably add a new enum like ShouldUseAnchorAndFocus with values UseAnchorAndFocus and UseStartAndEnd instead of hard-coding if-endif like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718419</commentid>
    <comment_count>5</comment_count>
      <attachid>163621</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-12 08:59:02 -0700</bug_when>
    <thetext>Comment on attachment 163621
husky@chromium.org

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

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2266
&gt;&gt; +// FIXME: This shouldn&apos;t be OS-specific. http://webkit.org/b/96508
&gt; 
&gt; This is very confusing. Why are arguments called start and end, and yet they expect it to be base and extent? Furthermore, they aren&apos;t base and extent. They&apos;re anchor and focus.
&gt; The terminology here is all messed up. Please fix them.
&gt; 
&gt; Also, we should probably add a new enum like ShouldUseAnchorAndFocus with values UseAnchorAndFocus and UseStartAndEnd instead of hard-coding if-endif like this.

I could just remove this swizzle completely, instead of #ifdef&apos;ing it, but I assume there was some good reason for doing it in the first place. Any idea what that might be? Do you think I could just go ahead and delete these 4 lines?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718424</commentid>
    <comment_count>6</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-12 09:01:19 -0700</bug_when>
    <thetext>I would also appreciate any comments you have on https://bugs.webkit.org/show_bug.cgi?id=93998, which was submitted in your absence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719543</commentid>
    <comment_count>7</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-13 08:41:27 -0700</bug_when>
    <thetext>Just had a chat offline about this with olilan (who wrote our text selection code for Android). There&apos;s a similar start/end swizzle in our Java code as well.

I think we could use *either* start/end or base/extent, we just need to be much clearer about which it is, and make sure we do the same thing consistently in all the APIs. The smallest change would be to use base/extent, as that&apos;s what most of the code already does (despite parameter names to the contrary). That means:

WebFrameImpl::selectRange() should take base and extent parameters
WebViewImpl::selectionBounds() should return base and extent

My new moveSelectionStart / moveSelection end methods wouldn&apos;t be needed.

I can go ahead and make a patch for that. Ryosuke, does that sound like a reasonable approach?

Also, can you explain the distinction between base/extent and anchor/focus? It looks to me like those are just the WebKit and HTML names for the same concepts, but maybe there&apos;s an important difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719678</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-13 11:01:47 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I think we could use *either* start/end or base/extent, we just need to be much clearer about which it is, and make sure we do the same thing consistently in all the APIs.

Yes.

&gt; The smallest change would be to use base/extent, as that&apos;s what most of the code already does (despite parameter names to the contrary). That means:
&gt; 
&gt; WebFrameImpl::selectRange() should take base and extent parameters
&gt; WebViewImpl::selectionBounds() should return base and extent

Okay but from the code, it appears that you&apos;re using anchor/focus instead.

&gt; My new moveSelectionStart / moveSelection end methods wouldn&apos;t be needed.
&gt; 
&gt; I can go ahead and make a patch for that. Ryosuke, does that sound like a reasonable approach?

Sure. I&apos;m happy as long as there isn&apos;t obnoxious if-endif depending on Android.

&gt; Also, can you explain the distinction between base/extent and anchor/focus? It looks to me like those are just the WebKit and HTML names for the same concepts, but maybe there&apos;s an important difference.

Base/extent are different from anchor/focus when the user double or triple clicks on a page and creates a selection with granularity other than character. In such case, base/extent are at where the user clicked whereas anchor/focus will be extended to where the selection ends are.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722029</commentid>
    <comment_count>9</comment_count>
      <attachid>164414</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-17 10:31:31 -0700</bug_when>
    <thetext>Created attachment 164414
husky@chromium.org</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722030</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-17 10:34:19 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722068</commentid>
    <comment_count>11</comment_count>
      <attachid>164414</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-17 11:03:03 -0700</bug_when>
    <thetext>Comment on attachment 164414
husky@chromium.org

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

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:1477
&gt; +        TextGranularity granularity = frameSelection-&gt;isNone() ? CharacterGranularity : frameSelection-&gt;granularity();

This doesn&apos;t look right. Why do we want to select a word just because a word was selected elsewhere before?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722254</commentid>
    <comment_count>12</comment_count>
      <attachid>164414</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-17 13:59:32 -0700</bug_when>
    <thetext>Comment on attachment 164414
husky@chromium.org

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

&gt; Source/WebKit/chromium/ChangeLog:4


We also need to rename the bug as these patches do much more than renaming argument variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722701</commentid>
    <comment_count>13</comment_count>
      <attachid>164414</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-18 05:50:32 -0700</bug_when>
    <thetext>Comment on attachment 164414
husky@chromium.org

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

&gt;&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:1477
&gt;&gt; +        TextGranularity granularity = frameSelection-&gt;isNone() ? CharacterGranularity : frameSelection-&gt;granularity();
&gt; 
&gt; This doesn&apos;t look right. Why do we want to select a word just because a word was selected elsewhere before?

Hmm, that felt like the right way to handle an existing selection, but you&apos;re right, there isn&apos;t really a use case for this and it isn&apos;t being tested.

Will just use character granularity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722716</commentid>
    <comment_count>14</comment_count>
      <attachid>164541</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-18 06:14:58 -0700</bug_when>
    <thetext>Created attachment 164541
husky@chromium.org</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722862</commentid>
    <comment_count>15</comment_count>
      <attachid>164541</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-18 09:32:23 -0700</bug_when>
    <thetext>Comment on attachment 164541
husky@chromium.org

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

&gt; Source/WebKit/chromium/ChangeLog:3
&gt; +        [chromium] Fix parameter names selectionBounds and selectRange, remove moveSelectionStart/End/Caret

I&apos;ve just updated the bug title to be something more appropriate. Please update this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722863</commentid>
    <comment_count>16</comment_count>
      <attachid>164541</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-18 09:32:46 -0700</bug_when>
    <thetext>Comment on attachment 164541
husky@chromium.org

Ugh... I mean cq-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722866</commentid>
    <comment_count>17</comment_count>
      <attachid>164541</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-18 09:36:41 -0700</bug_when>
    <thetext>Comment on attachment 164541
husky@chromium.org

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

&gt;&gt; Source/WebKit/chromium/ChangeLog:3
&gt;&gt; +        [chromium] Fix parameter names selectionBounds and selectRange, remove moveSelectionStart/End/Caret
&gt; 
&gt; I&apos;ve just updated the bug title to be something more appropriate. Please update this line.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722867</commentid>
    <comment_count>18</comment_count>
      <attachid>164579</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-18 09:37:53 -0700</bug_when>
    <thetext>Created attachment 164579
husky@chromium.org</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722868</commentid>
    <comment_count>19</comment_count>
      <attachid>164579</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-18 09:40:46 -0700</bug_when>
    <thetext>Comment on attachment 164579
husky@chromium.org

Updated ChangeLog headline and &quot;reviewed by&quot; only</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722882</commentid>
    <comment_count>20</comment_count>
      <attachid>164579</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-18 10:23:14 -0700</bug_when>
    <thetext>Comment on attachment 164579
husky@chromium.org

Clearing flags on attachment: 164579

Committed r128903: &lt;http://trac.webkit.org/changeset/128903&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722883</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-18 10:23:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163617</attachid>
            <date>2012-09-12 06:57:13 -0700</date>
            <delta_ts>2012-09-12 07:09:21 -0700</delta_ts>
            <desc>husky@chromium.org</desc>
            <filename>bug-96508-20120912145647.patch</filename>
            <type>text/plain</type>
            <size>2030</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDA3M2NiYmM1M2ZlODVlYTRjYzk2ZTcwZDA4NGJlMmEwOTdmZGI5NzYuLjljNmI3YmEyNmEzMjUx
MmRjNGYxN2E4YWNiMGQwODE5ZTI2YWZmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTItMDktMTIgIElhaW4gTWVycmljayAgPGh1c2t5QGdvb2dsZS5j
b20+CisKKyAgICAgICAgW2Nocm9taXVtXSBXZWJWaWV3SW1wbDo6c2VsZWN0aW9uUmFuZ2Ugc2hv
dWxkIHJldHVybiBzdGFydC9lbmQgb24gQW5kcm9pZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNvZGUgd2FzIHVwZGF0ZWQgdG8gcmV0dXJuIGJh
c2UvZXh0ZW50IHJhdGhlciB0aGFuIHN0YXJ0L2VuZCBpbgorICAgICAgICBodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC85Mzg5My4gVW5mb3J0dW5hdGVseSB3ZSByZWFsbHkgZG8KKyAg
ICAgICAgd2FudCBzdGFydC9lbmQgb24gQW5kcm9pZCwgaW4gb3JkZXIgdG8gZHJhdyB0aGUgc2Vs
ZWN0aW9uIGhhbmRsZXMKKyAgICAgICAgY29ycmVjdGx5IC0tIHRoZXNlIGRlcGVuZCBwdXJlbHkg
b24gdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHJhbmdlLAorICAgICAgICBhbmQgbm90IG9uIHRoZSBk
aXJlY3Rpb24gaW4gd2hpY2ggdGhlIHVzZXIgZHJhZ2dlZCB3aGVuIHNlbGVjdGluZy4KKworICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpzZWxlY3Rpb25Cb3VuZHMpOgorCiAyMDEyLTA5LTEyICBJbHlhIFRpa2hvbm92c2t5ICA8bG9p
c2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBOTUkgbW92ZSBTdHJp
bmcqIGluc3RydW1lbnRhdGlvbiB0byB3dGYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggYWFhMjQ5YTcxZDU4MDk4MDJlNDE1NDM4N2U5MTEzYTk0M2Ew
ZTBjYS4uN2Y1NDc0MzJkNmMxMjE0YmQwMTE3NTNlM2IwMTAyYjk1OWY1OGNiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMjI2MCw4ICsyMjYwLDE0
IEBAIGJvb2wgV2ViVmlld0ltcGw6OnNlbGVjdGlvbkJvdW5kcyhXZWJSZWN0JiBzdGFydCwgV2Vi
UmVjdCYgZW5kKSBjb25zdAogICAgIHN0YXJ0ID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dp
bmRvdyhzdGFydCk7CiAgICAgZW5kID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhl
bmQpOwogCisvLyAiU3RhcnQiIGFsd2F5cyBwcmVjZWRlcyAiZW5kIi4gIkJhc2UiIGlzIHdoZXJl
IHRoZSB1c2VyJ3Mgc2VsZWN0aW9uIGdlc3R1cmUKKy8vIHN0YXJ0ZWQsICJlbmQiIGlzIHdoZXJl
IGl0IGZpbmlzaGVkLiBNb3N0IHBsYXRmb3JtcyB3YW50IGJhc2UvZXh0ZW50IGhlcmUuCisvLyBB
bmRyb2lkIHdhbnRzIHN0YXJ0L2VuZCBldmVuIGlmIGJhc2UvZXh0ZW50IGFyZSByZXZlcnNlZC4K
Ky8vIEZJWE1FOiBUaGlzIHNob3VsZG4ndCBiZSBPUy1zcGVjaWZpYy4gaHR0cDovL3dlYmtpdC5v
cmcvYi85NjUwOAorI2lmICFPUyhBTkRST0lEKQogICAgIGlmICghZnJhbWUtPnNlbGVjdGlvbigp
LT5zZWxlY3Rpb24oKS5pc0Jhc2VGaXJzdCgpKQogICAgICAgICBzdGQ6OnN3YXAoc3RhcnQsIGVu
ZCk7CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163621</attachid>
            <date>2012-09-12 07:09:27 -0700</date>
            <delta_ts>2012-09-17 10:31:24 -0700</delta_ts>
            <desc>husky@chromium.org</desc>
            <filename>bug-96508-20120912150901.patch</filename>
            <type>text/plain</type>
            <size>2031</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDA3M2NiYmM1M2ZlODVlYTRjYzk2ZTcwZDA4NGJlMmEwOTdmZGI5NzYuLjZkNDVkNDVmOTE3MDUx
OWU0Njc0NzU2Mzg0OTRjZmE0NGZjNzEyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTItMDktMTIgIElhaW4gTWVycmljayAgPGh1c2t5QGdvb2dsZS5j
b20+CisKKyAgICAgICAgW2Nocm9taXVtXSBXZWJWaWV3SW1wbDo6c2VsZWN0aW9uQm91bmRzIHNo
b3VsZCByZXR1cm4gc3RhcnQvZW5kIG9uIEFuZHJvaWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjb2RlIHdhcyB1cGRhdGVkIHRvIHJldHVybiBi
YXNlL2V4dGVudCByYXRoZXIgdGhhbiBzdGFydC9lbmQgaW4KKyAgICAgICAgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTM4OTMuIFVuZm9ydHVuYXRlbHkgd2UgcmVhbGx5IGRvCisg
ICAgICAgIHdhbnQgc3RhcnQvZW5kIG9uIEFuZHJvaWQsIGluIG9yZGVyIHRvIGRyYXcgdGhlIHNl
bGVjdGlvbiBoYW5kbGVzCisgICAgICAgIGNvcnJlY3RseSAtLSB0aGVzZSBkZXBlbmQgcHVyZWx5
IG9uIHRoZSBjdXJyZW50IHNlbGVjdGlvbiByYW5nZSwKKyAgICAgICAgYW5kIG5vdCBvbiB0aGUg
ZGlyZWN0aW9uIGluIHdoaWNoIHRoZSB1c2VyIGRyYWdnZWQgd2hlbiBzZWxlY3RpbmcuCisKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6c2VsZWN0aW9uQm91bmRzKToKKwogMjAxMi0wOS0xMiAgSWx5YSBUaWtob25vdnNreSAgPGxv
aXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTk1JIG1vdmUgU3Ry
aW5nKiBpbnN0cnVtZW50YXRpb24gdG8gd3RmLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCmluZGV4IGFhYTI0OWE3MWQ1ODA5ODAyZTQxNTQzODdlOTExM2E5NDNh
MGUwY2EuLjdmNTQ3NDMyZDZjMTIxNGJkMDExNzUzZTNiMDEwMmI5NTlmNThjYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTIyNjAsOCArMjI2MCwx
NCBAQCBib29sIFdlYlZpZXdJbXBsOjpzZWxlY3Rpb25Cb3VuZHMoV2ViUmVjdCYgc3RhcnQsIFdl
YlJlY3QmIGVuZCkgY29uc3QKICAgICBzdGFydCA9IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9X
aW5kb3coc3RhcnQpOwogICAgIGVuZCA9IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3co
ZW5kKTsKIAorLy8gIlN0YXJ0IiBhbHdheXMgcHJlY2VkZXMgImVuZCIuICJCYXNlIiBpcyB3aGVy
ZSB0aGUgdXNlcidzIHNlbGVjdGlvbiBnZXN0dXJlCisvLyBzdGFydGVkLCAiZW5kIiBpcyB3aGVy
ZSBpdCBmaW5pc2hlZC4gTW9zdCBwbGF0Zm9ybXMgd2FudCBiYXNlL2V4dGVudCBoZXJlLgorLy8g
QW5kcm9pZCB3YW50cyBzdGFydC9lbmQgZXZlbiBpZiBiYXNlL2V4dGVudCBhcmUgcmV2ZXJzZWQu
CisvLyBGSVhNRTogVGhpcyBzaG91bGRuJ3QgYmUgT1Mtc3BlY2lmaWMuIGh0dHA6Ly93ZWJraXQu
b3JnL2IvOTY1MDgKKyNpZiAhT1MoQU5EUk9JRCkKICAgICBpZiAoIWZyYW1lLT5zZWxlY3Rpb24o
KS0+c2VsZWN0aW9uKCkuaXNCYXNlRmlyc3QoKSkKICAgICAgICAgc3RkOjpzd2FwKHN0YXJ0LCBl
bmQpOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164414</attachid>
            <date>2012-09-17 10:31:31 -0700</date>
            <delta_ts>2012-09-18 06:14:51 -0700</delta_ts>
            <desc>husky@chromium.org</desc>
            <filename>bug-96508-20120917183058.patch</filename>
            <type>text/plain</type>
            <size>24590</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDViZjczNGFkMzNmOTRiNDQ3YmQ2NTdiY2EyZDU0YmQyOWY5ZGU5NWIuLjliODVlNjQ4ZTYzNDAx
OTE5NTJmMDdiZGZkZTAzNDIyYzU0OTgxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTItMDktMTcgIElhaW4gTWVycmljayAgPGh1c2t5QGdvb2dsZS5j
b20+CisKKyAgICAgICAgW2Nocm9taXVtXSBGaXggcGFyYW1ldGVyIG5hbWVzIGluIFdlYldpZGdl
dDo6c2VsZWN0aW9uQm91bmRzIGFuZCBXZWJGcmFtZTo6c2VsZWN0UmFuZ2UKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NTA4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlc2UgbWV0aG9kcyBoYWQgInN0
YXJ0IiBhbmQgImVuZCIgcGFyYW1ldGVycywgYnV0IHRoaXMgaXMgaW5jb3JyZWN0LgorICAgICAg
ICBzZWxlY3RSYW5nZSgpIGFjdHVhbGx5IHRha2VzIGJhc2UgYW5kIGV4dGVudCAod2hlcmUgdGhl
IHVzZXIgYWN0dWFsbHkKKyAgICAgICAgdG91Y2hlZCksIHdoZSBzZWxlY3Rpb25Cb3VuZHMoKSBy
ZXR1cm5zIGFuY2hvciBhbmQgZm9jdXMgKGJhc2UgYW5kIGV4dGVudAorICAgICAgICBleHBhbmRl
ZCB0byBhY2NvdW50IGZvciB0aGUgc2VsZWN0aW9uIGdyYW51bGFyaXR5KS4KKworICAgICAgICBS
ZW1vdmVkIG1vdmVTZWxlY3Rpb25TdGFydC9tb3ZlU2VsZWN0aW9uRW5kL21vdmVDYXJldCAod2hp
Y2ggYXJlbid0IGJlaW5nCisgICAgICAgIHVzZWQgeWV0KSwgYW5kIHVwZGF0ZWQgV2ViRnJhbWVU
ZXN0IHRvIHNob3cgaG93IHRoZXNlIGNhbiBiZSBpbXBsZW1lbnRlZAorICAgICAgICB2aWEgc2Vs
ZWN0UmFuZ2UuCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2VsZWN0aW9uQm91bmRzKToKKwogMjAxMi0wOS0xNSAgWXVyeSBT
ZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBhdXRvbWF0aWNhbGx5IGRldGVjdCBpZiBjbGFzcyBoYXMgcmVwb3J0TWVtb3J5VXNhZ2UgbWV0
aG9kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAppbmRleCA1NmNiZTFl
YTQ3ZGRhMmQ5MjkyY2U4NGI4MmVmMmRkYWMzMWM0NjI0Li5kYjljMzc1MmM0ZTZmNWFhMDhhNzk4
NDE5Y2UyMGFkNDdhNWY3MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lLmgKQEAgLTQ3MiwzMCArNDcyLDEzIEBAIHB1YmxpYzoKICAgICAvLyB0aGVyZSBpcyByYW5n
ZWQgc2VsZWN0aW9uLgogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RXb3JkQXJvdW5kQ2FyZXQoKSA9
IDA7CiAKLSAgICAvLyBERVBSRUNBVEVEOiBVc2UgbW92ZVNlbGVjdGlvblN0YXJ0IC8gbW92ZVNl
bGVjdGlvbkVuZCAvIG1vdmVDYXJldAotICAgIC8vIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIGZv
ciB0b3VjaC1iYXNlZCBVSXMsIGJ1dCBpdCdzIG1pc3Npbmcgc29tZQotICAgIC8vIGZ1bmN0aW9u
YWxpdHkgbmVlZGVkIG9uIEFuZHJvaWQsIGxpa2UgcHJldmVudGluZyBjb2xsYXBzZWQgc2VsZWN0
aW9ucy4KLSAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0UmFuZ2UoY29uc3QgV2ViUG9pbnQmIHN0YXJ0
LCBjb25zdCBXZWJQb2ludCYgZW5kKSA9IDA7CisgICAgLy8gU2VsZWN0IGEgcmFuZ2Ugb2YgdGV4
dCwgYXMgaWYgYnkgZHJhZy1zZWxlY3RpbmcgZnJvbSBiYXNlIHRvIGV4dGVudCwKKyAgICAvLyB1
c2luZyB0aGUgZ3JhbnVsYXJpdHkgb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLCBvciBjaGFyYWN0
ZXIgZ3JhbnVsYXJpdHkKKyAgICAvLyBpZiB0aGVyZSBpcyBubyBjdXJyZW50IHNlbGVjdGlvbi4K
KyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0UmFuZ2UoY29uc3QgV2ViUG9pbnQmIGJhc2UsIGNvbnN0
IFdlYlBvaW50JiBleHRlbnQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RSYW5nZShj
b25zdCBXZWJSYW5nZSYpID0gMDsKIAotICAgIC8vIFRoZSBtZXRob2RzIGJlbG93IGFyZSBmb3Ig
YWRqdXN0aW5nIHRoZSBzdGFydCBhbmQvb3IgZW5kIG9mIHRoZSBjdXJyZW50Ci0gICAgLy8gc2Vs
ZWN0aW9uIGJ5IGRpcmVjdCBtYW5pcHVsYXRpb24gb24gYSB0b3VjaC1iYXNlZCBVSS4gVG8gZW50
ZXIgc2VsZWN0aW9uCi0gICAgLy8gbW9kZSBpbiB0aGUgZmlyc3QgcGxhY2UsIGNhbGwgc2VsZWN0
UmFuZ2UoKSBvciBzZW5kIGEgZmFrZSBtb3VzZSBldmVudC4KLQotICAgIC8vIE1vdmVzIHRoZSBz
dGFydCBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24sIGtlZXBpbmcgdGhlIGVuZCBmaXhlZC4KLSAg
ICAvLyBSZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2UgaWYgdGhlcmUgaXMgbm8gc2VsZWN0
aW9uIHRvIG1vZGlmeS4KLSAgICB2aXJ0dWFsIGJvb2wgbW92ZVNlbGVjdGlvblN0YXJ0KGNvbnN0
IFdlYlBvaW50JiwgYm9vbCBhbGxvd0NvbGxhcHNlZFNlbGVjdGlvbikgPSAwOwotCi0gICAgLy8g
TW92ZXMgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24sIGtlZXBpbmcgdGhlIHN0YXJ0
IGZpeGVkLgotICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBpZiB0aGVyZSBp
cyBubyBzZWxlY3Rpb24gdG8gbW9kaWZ5LgotICAgIHZpcnR1YWwgYm9vbCBtb3ZlU2VsZWN0aW9u
RW5kKGNvbnN0IFdlYlBvaW50JiwgYm9vbCBhbGxvd0NvbGxhcHNlZFNlbGVjdGlvbikgPSAwOwot
Ci0gICAgLy8gTW92ZSBib3RoIGVuZHBvaW50cyBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24gdG8g
dGhlIGdpdmVuIHBvc2l0aW9uLgotICAgIC8vIFRoZSBjYXJldCB3aWxsIHJlbWFpbiBwaW5uZWQg
aW5zaWRlIHRoZSBjdXJyZW50IGVkaXRhYmxlIHJlZ2lvbi4KLSAgICAvLyBSZXR1cm5zIHRydWUg
b24gc3VjY2VzcywgZmFsc2UgaWYgdGhlcmUgaXMgbm8gc2VsZWN0aW9uIG9yIGlmIHdlJ3JlIG5v
dCBlZGl0aW5nLgotICAgIHZpcnR1YWwgYm9vbCBtb3ZlQ2FyZXQoY29uc3QgV2ViUG9pbnQmKSA9
IDA7Ci0KICAgICAvLyBQcmludGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIC8vIFJlZm9ybWF0cyB0aGUgV2ViRnJh
bWUgZm9yIHByaW50aW5nLiBXZWJQcmludFBhcmFtcyBzcGVjaWZpZXMgdGhlIHByaW50YWJsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaAppbmRleCBhYzE2NTgxNDAy
MTdlYjE1NGRiMGUzZDBjZTkzYzgzMzE0ZGRhOWMxLi5mYTQ1NjIzOGEzYmQxNzhhOWUxMmE5MjMy
ZThlMTc4YTNiMWYyYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJXaWRnZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRn
ZXQuaApAQCAtMTk0LDkgKzE5NCw5IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
aXMgbWV0aG9kLiBJdCdzIHJlZHVuZGFudCB3aXRoIHRleHRJbnB1dEluZm8oKS4KICAgICB2aXJ0
dWFsIFdlYlRleHRJbnB1dFR5cGUgdGV4dElucHV0VHlwZSgpIHsgcmV0dXJuIFdlYlRleHRJbnB1
dFR5cGVOb25lOyB9CiAKLSAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBhbmQgZW5kIGJvdW5kcyBv
ZiB0aGUgY3VycmVudCBzZWxlY3Rpb24uCisgICAgLy8gUmV0dXJucyB0aGUgYW5jaG9yIGFuZCBm
b2N1cyBib3VuZHMgb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgogICAgIC8vIElmIHRoZSBzZWxl
Y3Rpb24gcmFuZ2UgaXMgZW1wdHksIGl0IHJldHVybnMgdGhlIGNhcmV0IGJvdW5kcy4KLSAgICB2
aXJ0dWFsIGJvb2wgc2VsZWN0aW9uQm91bmRzKFdlYlJlY3QmIHN0YXJ0LCBXZWJSZWN0JiBlbmQp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNlbGVjdGlvbkJvdW5k
cyhXZWJSZWN0JiBhbmNob3IsIFdlYlJlY3QmIGZvY3VzKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCiAgICAgLy8gUmV0dXJucyB0aGUgdGV4dCBkaXJlY3Rpb24gYXQgdGhlIHN0YXJ0IGFuZCBl
bmQgYm91bmRzIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbi4KICAgICAvLyBJZiB0aGUgc2VsZWN0
aW9uIHJhbmdlIGlzIGVtcHR5LCBpdCByZXR1cm5zIGZhbHNlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggZWIwMjM1MWRhYWMxNTMyMTVlZjIyYjRj
NzAyNWM3ZmY4M2RhYTVlZS4uMTMzNmM5ZDBkYWM1MmFiMmQ0YmYwNGZlMzRkZjYyZGZkZDY1YzZm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC0x
NDY2LDY5ICsxNDY2LDE3IEBAIGJvb2wgV2ViRnJhbWVJbXBsOjpzZWxlY3RXb3JkQXJvdW5kQ2Fy
ZXQoKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFdlYkZyYW1lSW1wbDo6c2VsZWN0UmFu
Z2UoY29uc3QgV2ViUG9pbnQmIHN0YXJ0LCBjb25zdCBXZWJQb2ludCYgZW5kKQordm9pZCBXZWJG
cmFtZUltcGw6OnNlbGVjdFJhbmdlKGNvbnN0IFdlYlBvaW50JiBiYXNlLCBjb25zdCBXZWJQb2lu
dCYgZXh0ZW50KQogewotICAgIGlmIChzdGFydCA9PSBlbmQgJiYgbW92ZUNhcmV0KHN0YXJ0KSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1vdmVTZWxlY3Rpb25TdGFydChzdGFydCwgdHJ1
ZSkgJiYgbW92ZVNlbGVjdGlvbkVuZChlbmQsIHRydWUpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICAvLyBGYWlsZWQgdG8gbW92ZSBlbmRwb2ludHMsIHByb2JhYmx5IGJlY2F1c2UgdGhlcmUncyBu
byBjdXJyZW50IHNlbGVjdGlvbi4KLSAgICAvLyBKdXN0IHNldCB0aGUgc2VsZWN0aW9uIGV4cGxp
Y2l0bHkgKGJ1dCB0aGlzIHdvbid0IGhhbmRsZSBlZGl0YWJsZSBib3VuZGFyaWVzIGNvcnJlY3Rs
eSkuCi0gICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24odmlzaWJsZVBvc2l0aW9uRm9y
V2luZG93UG9pbnQoc3RhcnQpLCB2aXNpYmxlUG9zaXRpb25Gb3JXaW5kb3dQb2ludChlbmQpKTsg
ICAgCi0gICAgaWYgKGZyYW1lKCktPnNlbGVjdGlvbigpLT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24o
bmV3U2VsZWN0aW9uKSkKLSAgICAgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlv
bihuZXdTZWxlY3Rpb24sIENoYXJhY3RlckdyYW51bGFyaXR5KTsKLX0KLQotYm9vbCBXZWJGcmFt
ZUltcGw6Om1vdmVTZWxlY3Rpb25TdGFydChjb25zdCBXZWJQb2ludCYgcG9pbnQsIGJvb2wgYWxs
b3dDb2xsYXBzZWRTZWxlY3Rpb24pCi17Ci0gICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2Vs
ZWN0aW9uID0gZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpOwotICAgIGlmIChzZWxl
Y3Rpb24uaXNOb25lKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFZpc2libGVQb3Np
dGlvbiBzdGFydCA9IHZpc2libGVQb3NpdGlvbkZvcldpbmRvd1BvaW50KHBvaW50KTsKLSAgICBp
ZiAoIWFsbG93Q29sbGFwc2VkU2VsZWN0aW9uKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiBt
YXhTdGFydCA9IHNlbGVjdGlvbi52aXNpYmxlRW5kKCkucHJldmlvdXMoKTsKLSAgICAgICAgaWYg
KGNvbXBhcmVQb3NpdGlvbnMoc3RhcnQsIG1heFN0YXJ0KSA+IDApCi0gICAgICAgICAgICBzdGFy
dCA9IG1heFN0YXJ0OwotICAgIH0KLQotICAgIC8vIHN0YXJ0IGlzIG1vdmluZywgc28gYmFzZT1l
bmQsIGV4dGVudD1zdGFydAotICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uID0gVmlz
aWJsZVNlbGVjdGlvbihzZWxlY3Rpb24udmlzaWJsZUVuZCgpLCBzdGFydCk7Ci0gICAgZnJhbWUo
KS0+c2VsZWN0aW9uKCktPnNldE5vbkRpcmVjdGlvbmFsU2VsZWN0aW9uSWZOZWVkZWQobmV3U2Vs
ZWN0aW9uLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19CisgICAg
VmlzaWJsZVBvc2l0aW9uIGJhc2VQb3MgPSB2aXNpYmxlUG9zaXRpb25Gb3JXaW5kb3dQb2ludChi
YXNlKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gZXh0ZW50UG9zID0gdmlzaWJsZVBvc2l0aW9uRm9y
V2luZG93UG9pbnQoZXh0ZW50KTsKKyAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbiA9
IFZpc2libGVTZWxlY3Rpb24oYmFzZVBvcywgZXh0ZW50UG9zKTsKIAotYm9vbCBXZWJGcmFtZUlt
cGw6Om1vdmVTZWxlY3Rpb25FbmQoY29uc3QgV2ViUG9pbnQmIHBvaW50LCBib29sIGFsbG93Q29s
bGFwc2VkU2VsZWN0aW9uKQotewotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlv
biA9IGZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKTsKLSAgICBpZiAoc2VsZWN0aW9u
LmlzTm9uZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24g
ZW5kID0gdmlzaWJsZVBvc2l0aW9uRm9yV2luZG93UG9pbnQocG9pbnQpOwotICAgIGlmICghYWxs
b3dDb2xsYXBzZWRTZWxlY3Rpb24pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG1pbkVuZCA9
IHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKS5uZXh0KCk7Ci0gICAgICAgIGlmIChjb21wYXJlUG9z
aXRpb25zKGVuZCwgbWluRW5kKSA8IDApCi0gICAgICAgICAgICBlbmQgPSBtaW5FbmQ7Ci0gICAg
fQotCi0gICAgLy8gZW5kIGlzIG1vdmluZywgc28gYmFzZT1zdGFydCwgZXh0ZW50PWVuZAotICAg
IFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihzZWxlY3Rp
b24udmlzaWJsZVN0YXJ0KCksIGVuZCk7Ci0gICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldE5v
bkRpcmVjdGlvbmFsU2VsZWN0aW9uSWZOZWVkZWQobmV3U2VsZWN0aW9uLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgV2ViRnJhbWVJbXBsOjptb3Zl
Q2FyZXQoY29uc3QgV2ViUG9pbnQmIHBvaW50KQotewogICAgIEZyYW1lU2VsZWN0aW9uKiBmcmFt
ZVNlbGVjdGlvbiA9IGZyYW1lKCktPnNlbGVjdGlvbigpOwotICAgIGlmIChmcmFtZVNlbGVjdGlv
bi0+aXNOb25lKCkgfHwgIWZyYW1lU2VsZWN0aW9uLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gcG9zID0gdmlzaWJsZVBv
c2l0aW9uRm9yV2luZG93UG9pbnQocG9pbnQpOwotICAgIGZyYW1lU2VsZWN0aW9uLT5zZXRFeHRl
bnQocG9zLCBVc2VyVHJpZ2dlcmVkKTsKLSAgICBmcmFtZVNlbGVjdGlvbi0+c2V0QmFzZShmcmFt
ZVNlbGVjdGlvbi0+ZXh0ZW50KCksIFVzZXJUcmlnZ2VyZWQpOwotICAgIHJldHVybiB0cnVlOwor
ICAgIGlmIChmcmFtZVNlbGVjdGlvbi0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG5ld1NlbGVjdGlv
bikpIHsKKyAgICAgICAgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gZnJhbWVTZWxlY3Rp
b24tPmlzTm9uZSgpID8gQ2hhcmFjdGVyR3JhbnVsYXJpdHkgOiBmcmFtZVNlbGVjdGlvbi0+Z3Jh
bnVsYXJpdHkoKTsKKyAgICAgICAgZnJhbWVTZWxlY3Rpb24tPnNldFNlbGVjdGlvbihuZXdTZWxl
Y3Rpb24sIGdyYW51bGFyaXR5KTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViRnJhbWVJbXBsOjpzZWxl
Y3RSYW5nZShjb25zdCBXZWJSYW5nZSYgd2ViUmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZyYW1lSW1wbC5oCmluZGV4IGU1OWM5MzJjNTkyYjA0MmEwN2RkZmEzNGU3ZDNkZjkx
Yzk5NThlOWUuLjRiN2JmOWVkM2YxYTAwOTYwYjVkNTQ3ZjQ2ZDFkM2YxZDUwNjZmY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBAIC0xODQsMTEgKzE4NCw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBzZWxlY3Rpb25Bc1RleHQoKSBjb25z
dDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBzZWxlY3Rpb25Bc01hcmt1cCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCBzZWxlY3RXb3JkQXJvdW5kQ2FyZXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2VsZWN0UmFuZ2UoY29uc3QgV2ViUG9pbnQmIHN0YXJ0LCBjb25zdCBXZWJQb2ludCYgZW5kKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0UmFuZ2UoY29uc3QgV2ViUG9pbnQmIGJhc2UsIGNvbnN0
IFdlYlBvaW50JiBleHRlbnQpOwogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RSYW5nZShjb25zdCBX
ZWJSYW5nZSYpOwotICAgIHZpcnR1YWwgYm9vbCBtb3ZlU2VsZWN0aW9uU3RhcnQoY29uc3QgV2Vi
UG9pbnQmLCBib29sIGFsbG93Q29sbGFwc2VkU2VsZWN0aW9uKTsKLSAgICB2aXJ0dWFsIGJvb2wg
bW92ZVNlbGVjdGlvbkVuZChjb25zdCBXZWJQb2ludCYsIGJvb2wgYWxsb3dDb2xsYXBzZWRTZWxl
Y3Rpb24pOwotICAgIHZpcnR1YWwgYm9vbCBtb3ZlQ2FyZXQoY29uc3QgV2ViUG9pbnQmKTsKICAg
ICB2aXJ0dWFsIGludCBwcmludEJlZ2luKGNvbnN0IFdlYlByaW50UGFyYW1zJiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYk5vZGUmIGNvbnN0cmFpblRvTm9kZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wqIHVzZUJyb3dzZXJPdmVybGF5cyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggZDE4Y2QyMzZjZWQ0OTJk
MzVmNzEzMDJiMTgzNjA2Y2MyNWQ1OTQzMy4uMDkyYjI4ZDkzYWJiN2ViZGQwM2UzMTEzYTc4YmM2
MTcyMDc3MDc1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cApAQCAtMjIyNiw3ICsyMjI2LDcgQEAgV2ViVGV4dElucHV0VHlwZSBXZWJWaWV3SW1wbDo6dGV4
dElucHV0VHlwZSgpCiAgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVOb25lOwogfQogCi1ib29s
IFdlYlZpZXdJbXBsOjpzZWxlY3Rpb25Cb3VuZHMoV2ViUmVjdCYgc3RhcnQsIFdlYlJlY3QmIGVu
ZCkgY29uc3QKK2Jvb2wgV2ViVmlld0ltcGw6OnNlbGVjdGlvbkJvdW5kcyhXZWJSZWN0JiBhbmNo
b3IsIFdlYlJlY3QmIGZvY3VzKSBjb25zdAogewogICAgIGNvbnN0IEZyYW1lKiBmcmFtZSA9IGZv
Y3VzZWRXZWJDb3JlRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtMjIzNiw3ICsyMjM2LDcg
QEAgYm9vbCBXZWJWaWV3SW1wbDo6c2VsZWN0aW9uQm91bmRzKFdlYlJlY3QmIHN0YXJ0LCBXZWJS
ZWN0JiBlbmQpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChzZWxlY3Rp
b24tPmlzQ2FyZXQoKSkgewotICAgICAgICBzdGFydCA9IGVuZCA9IGZyYW1lLT52aWV3KCktPmNv
bnRlbnRzVG9XaW5kb3coc2VsZWN0aW9uLT5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpOworICAgICAg
ICBhbmNob3IgPSBmb2N1cyA9IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coc2VsZWN0
aW9uLT5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKQEAgLTIyNDksMjAgKzIyNDksMjAgQEAgYm9vbCBXZWJWaWV3SW1wbDo6c2VsZWN0aW9uQm91
bmRzKFdlYlJlY3QmIHN0YXJ0LCBXZWJSZWN0JiBlbmQpIGNvbnN0CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2UtPnN0YXJ0T2Zmc2V0KCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVk
UmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpKTsKLSAgICBzdGFydCA9IGZyYW1lLT5lZGl0b3IoKS0+Zmly
c3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpOworICAgIGFuY2hvciA9IGZyYW1lLT5lZGl0b3Io
KS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpOwogCiAgICAgcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKHNlbGVjdGVkUmFuZ2UtPmVuZENvbnRhaW5lcigpLT5kb2N1bWVudCgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFJhbmdlLT5lbmRDb250YWluZXIoKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZS0+ZW5kT2Zmc2V0KCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2UtPmVuZENvbnRhaW5lcigpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFJhbmdlLT5lbmRPZmZzZXQoKSk7Ci0gICAgZW5k
ID0gZnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7CisgICAg
Zm9jdXMgPSBmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsK
IAotICAgIHN0YXJ0ID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhzdGFydCk7Ci0g
ICAgZW5kID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhlbmQpOworICAgIGFuY2hv
ciA9IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coYW5jaG9yKTsKKyAgICBmb2N1cyA9
IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coZm9jdXMpOwogCiAgICAgaWYgKCFmcmFt
ZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLmlzQmFzZUZpcnN0KCkpCi0gICAgICAgIHN0ZDo6
c3dhcChzdGFydCwgZW5kKTsKKyAgICAgICAgc3RkOjpzd2FwKGFuY2hvciwgZm9jdXMpOwogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aAppbmRleCAxMWEwNWQwZGVkNGQ5MzllMWYzY2U3ZWQ3NWVlOGM2MjlhNmQyZmQ5Li44NjU4OTg2
MDg0NGM1ZDI4Y2RkZmQwNGFhYWQ5MDhjNmFlNmNhZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTE2Nyw3ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGV4dGVuZFNlbGVjdGlvbkFuZERlbGV0ZShpbnQgYmVmb3JlLCBpbnQgYWZ0ZXIp
OwogICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGlvbkVkaXRhYmxlKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBXZWJDb2xvciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
c2VsZWN0aW9uQm91bmRzKFdlYlJlY3QmIHN0YXJ0LCBXZWJSZWN0JiBlbmQpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBzZWxlY3Rpb25Cb3VuZHMoV2ViUmVjdCYgYW5jaG9yLCBXZWJSZWN0JiBm
b2N1cykgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHNlbGVjdGlvblRleHREaXJlY3Rpb24oV2Vi
VGV4dERpcmVjdGlvbiYgc3RhcnQsIFdlYlRleHREaXJlY3Rpb24mIGVuZCkgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIGNhcmV0T3JTZWxlY3Rpb25SYW5nZShzaXplX3QqIGxvY2F0aW9uLCBzaXpl
X3QqIGxlbmd0aCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHREaXJlY3Rpb24oV2ViVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9XZWJGcmFtZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJG
cmFtZVRlc3QuY3BwCmluZGV4IDQzMjhhMGU0YTliMmY2YzVmMzRkZTE5YzBmMjUzN2EwNzRkN2Vm
YzYuLmEwMDQ5YjY3ZThkNDFiNjJiYTUyODViOWExMDBkNjljNjA2ZjQwMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKQEAgLTEwNzIsNyArMTA3
Miw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIFNlbGVjdFJhbmdlKQogICAgIGZyYW1lID0gd2Vi
Vmlldy0+bWFpbkZyYW1lKCk7CiAgICAgRVhQRUNUX0VRKCJUaGlzIHRleHQgaXMgaW5pdGlhbGx5
IHNlbGVjdGVkLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7CiAgICAgd2ViVmlldy0+c2Vs
ZWN0aW9uQm91bmRzKHN0YXJ0V2ViUmVjdCwgZW5kV2ViUmVjdCk7Ci0gICAgZnJhbWUtPnNlbGVj
dFJhbmdlKFdlYlBvaW50KDAsIDApLCBib3R0b21SaWdodE1pbnVzT25lKGVuZFdlYlJlY3QpKTsK
KyAgICBmcmFtZS0+c2VsZWN0UmFuZ2UoYm90dG9tUmlnaHRNaW51c09uZShlbmRXZWJSZWN0KSwg
V2ViUG9pbnQoMCwgMCkpOwogICAgIEVYUEVDVF9FUSgiMTYtY2hhciBoZWFkZXIuIFRoaXMgdGV4
dCBpcyBpbml0aWFsbHkgc2VsZWN0ZWQuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKICAg
ICB3ZWJWaWV3LT5jbG9zZSgpOwogCkBAIC0xMDg2LDE3NiArMTA4NiwxMDAgQEAgVEVTVF9GKFdl
YkZyYW1lVGVzdCwgU2VsZWN0UmFuZ2UpCiAgICAgd2ViVmlldy0+Y2xvc2UoKTsKIH0KIAotVEVT
VF9GKFdlYkZyYW1lVGVzdCwgTW92ZVNlbGVjdGlvblN0YXJ0KQorVEVTVF9GKFdlYkZyYW1lVGVz
dCwgU2VsZWN0UmFuZ2VDYW5Nb3ZlU2VsZWN0aW9uU3RhcnQpCiB7CiAgICAgcmVnaXN0ZXJNb2Nr
ZWRIdHRwVVJMTG9hZCgidGV4dF9zZWxlY3Rpb24uaHRtbCIpOwogICAgIFdlYlZpZXcqIHdlYlZp
ZXcgPSBjcmVhdGVXZWJWaWV3Rm9yVGV4dFNlbGVjdGlvbihtX2Jhc2VVUkwgKyAidGV4dF9zZWxl
Y3Rpb24uaHRtbCIpOwogICAgIFdlYkZyYW1lKiBmcmFtZSA9IHdlYlZpZXctPm1haW5GcmFtZSgp
OwogCi0gICAgLy8gbW92ZVNlbGVjdGlvblN0YXJ0KCkgYWx3YXlzIHJldHVybnMgZmFsc2UgaWYg
dGhlcmUncyBubyBzZWxlY3Rpb24uCi0gICAgRVhQRUNUX0ZBTFNFKGZyYW1lLT5tb3ZlU2VsZWN0
aW9uU3RhcnQodG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzEiKSksIGZhbHNl
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZyYW1lLT5tb3ZlU2VsZWN0aW9uU3RhcnQodG9wTGVmdChl
bGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzEiKSksIHRydWUpKTsKLQotICAgIGZyYW1lLT5l
eGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgic2VsZWN0RWxlbWVudCgnaGVhZGVyXzEnKTsi
KSk7Ci0gICAgRVhQRUNUX0VRKCJIZWFkZXIgMS4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkp
OwotICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5tb3ZlU2VsZWN0aW9uRW5kKGJvdHRvbVJpZ2h0TWlu
dXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8yIikpLCBmYWxzZSkpOwotICAgIEVY
UEVDVF9FUSgiSGVhZGVyIDEuIEhlYWRlciAyLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7
Ci0KICAgICAvLyBTZWxlY3Qgc2Vjb25kIHNwYW4uIFdlIGNhbiBtb3ZlIHRoZSBzdGFydCB0byBp
bmNsdWRlIHRoZSBmaXJzdCBzcGFuLgogICAgIGZyYW1lLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlw
dFNvdXJjZSgic2VsZWN0RWxlbWVudCgnaGVhZGVyXzInKTsiKSk7CiAgICAgRVhQRUNUX0VRKCJI
ZWFkZXIgMi4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwotICAgIEVYUEVDVF9UUlVFKGZy
YW1lLT5tb3ZlU2VsZWN0aW9uU3RhcnQodG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVh
ZGVyXzEiKSksIGZhbHNlKSk7CisgICAgZnJhbWUtPnNlbGVjdFJhbmdlKGJvdHRvbVJpZ2h0TWlu
dXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8yIikpLCB0b3BMZWZ0KGVsZW1lbnRC
b3VuZHMoZnJhbWUsICJoZWFkZXJfMSIpKSk7CiAgICAgRVhQRUNUX0VRKCJIZWFkZXIgMS4gSGVh
ZGVyIDIuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKIAotICAgIC8vIElmIGFsbG93Q29s
bGFwc2VkU2VsZWN0aW9uPWZhbHNlIHdlIGNhbid0IG1vdmUgdGhlIHNlbGVjdGlvbiBzdGFydCBi
ZXlvbmQgdGhlIGN1cnJlbnQgZW5kLgotICAgIC8vIFdlIGVuZCB1cCB3aXRoIGEgc2luZ2xlIGNo
YXJhY3RlciBzZWxlY3RlZC4KKyAgICAvLyBXZSBjYW4gbW92ZSB0aGUgc3RhcnQgYW5kIGVuZCB0
b2dldGhlci4KICAgICBmcmFtZS0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoInNlbGVj
dEVsZW1lbnQoJ2hlYWRlcl8xJyk7IikpOwogICAgIEVYUEVDVF9FUSgiSGVhZGVyIDEuIiwgc2Vs
ZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICBFWFBFQ1RfVFJVRShmcmFtZS0+bW92ZVNlbGVj
dGlvblN0YXJ0KGJvdHRvbVJpZ2h0TWludXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRl
cl8xIikpLCBmYWxzZSkpOwotICAgIEVYUEVDVF9FUSgiLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZy
YW1lKSk7Ci0KLSAgICAvLyBJZiBhbGxvd0NvbGxhcHNlZFNlbGVjdGlvbj10cnVlIHdlIGNhbiBt
b3ZlIHRoZSBzdGFydCBhbmQgZW5kIHRvZ2V0aGVyLgotICAgIGZyYW1lLT5leGVjdXRlU2NyaXB0
KFdlYlNjcmlwdFNvdXJjZSgic2VsZWN0RWxlbWVudCgnaGVhZGVyXzEnKTsiKSk7Ci0gICAgRVhQ
RUNUX0VRKCJIZWFkZXIgMS4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwotICAgIEVYUEVD
VF9UUlVFKGZyYW1lLT5tb3ZlU2VsZWN0aW9uU3RhcnQoYm90dG9tUmlnaHRNaW51c09uZShlbGVt
ZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzEiKSksIHRydWUpKTsKKyAgICBmcmFtZS0+c2VsZWN0
UmFuZ2UoYm90dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzEi
KSksIGJvdHRvbVJpZ2h0TWludXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8xIikp
KTsKICAgICBFWFBFQ1RfRVEoIiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7CiAgICAgLy8g
U2VsZWN0aW9uIGlzIGEgY2FyZXQsIG5vdCBlbXB0eS4KICAgICBFWFBFQ1RfRkFMU0UoZnJhbWUt
PnNlbGVjdGlvblJhbmdlKCkuaXNOdWxsKCkpOwotICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5tb3Zl
U2VsZWN0aW9uU3RhcnQodG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzEiKSks
IHRydWUpKTsKLSAgICBFWFBFQ1RfRVEoIkhlYWRlciAxLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZy
YW1lKSk7CiAKLSAgICAvLyBJZiBhbGxvd0NvbGxhcHNlZFNlbGVjdGlvbj10cnVlIHdlIGNhbiBt
b3ZlIHRoZSBzdGFydCBhY3Jvc3MgdGhlIGVuZC4KKyAgICAvLyBXZSBjYW4gbW92ZSB0aGUgc3Rh
cnQgYWNyb3NzIHRoZSBlbmQuCiAgICAgZnJhbWUtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291
cmNlKCJzZWxlY3RFbGVtZW50KCdoZWFkZXJfMScpOyIpKTsKICAgICBFWFBFQ1RfRVEoIkhlYWRl
ciAxLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7Ci0gICAgRVhQRUNUX1RSVUUoZnJhbWUt
Pm1vdmVTZWxlY3Rpb25TdGFydChib3R0b21SaWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJh
bWUsICJoZWFkZXJfMiIpKSwgdHJ1ZSkpOworICAgIGZyYW1lLT5zZWxlY3RSYW5nZShib3R0b21S
aWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMSIpKSwgYm90dG9tUmln
aHRNaW51c09uZShlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzIiKSkpOwogICAgIEVYUEVD
VF9FUSgiIEhlYWRlciAyLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7CiAKICAgICAvLyBD
YW4ndCBleHRlbmQgdGhlIHNlbGVjdGlvbiBwYXJ0LXdheSBpbnRvIGFuIGVkaXRhYmxlIGVsZW1l
bnQuCiAgICAgZnJhbWUtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJzZWxlY3RFbGVt
ZW50KCdmb290ZXJfMicpOyIpKTsKICAgICBFWFBFQ1RfRVEoIkZvb3RlciAyLiIsIHNlbGVjdGlv
bkFzU3RyaW5nKGZyYW1lKSk7Ci0gICAgRVhQRUNUX1RSVUUoZnJhbWUtPm1vdmVTZWxlY3Rpb25T
dGFydCh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJlZGl0YWJsZV8yIikpLCB0cnVlKSk7
CisgICAgZnJhbWUtPnNlbGVjdFJhbmdlKGJvdHRvbVJpZ2h0TWludXNPbmUoZWxlbWVudEJvdW5k
cyhmcmFtZSwgImZvb3Rlcl8yIikpLCB0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJlZGl0
YWJsZV8yIikpKTsKICAgICBFWFBFQ1RfRVEoIiBbIEZvb3RlciAxLiBGb290ZXIgMi4iLCBzZWxl
Y3Rpb25Bc1N0cmluZyhmcmFtZSkpOwogCiAgICAgLy8gQ2FuIGV4dGVuZCB0aGUgc2VsZWN0aW9u
IGNvbXBsZXRlbHkgYWNyb3NzIGVkaXRhYmxlIGVsZW1lbnRzLgogICAgIGZyYW1lLT5leGVjdXRl
U2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgic2VsZWN0RWxlbWVudCgnZm9vdGVyXzInKTsiKSk7CiAg
ICAgRVhQRUNUX0VRKCJGb290ZXIgMi4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwotICAg
IEVYUEVDVF9UUlVFKGZyYW1lLT5tb3ZlU2VsZWN0aW9uU3RhcnQodG9wTGVmdChlbGVtZW50Qm91
bmRzKGZyYW1lLCAiaGVhZGVyXzIiKSksIHRydWUpKTsKKyAgICBmcmFtZS0+c2VsZWN0UmFuZ2Uo
Ym90dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91bmRzKGZyYW1lLCAiZm9vdGVyXzIiKSksIHRv
cExlZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8yIikpKTsKICAgICBFWFBFQ1RfRVEo
IkhlYWRlciAyLiBdIFsgRWRpdGFibGUgMS4gRWRpdGFibGUgMi4gXSBbIEZvb3RlciAxLiBGb290
ZXIgMi4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwogCiAgICAgLy8gSWYgdGhlIHNlbGVj
dGlvbiBpcyBlZGl0YWJsZSB0ZXh0LCB3ZSBjYW4ndCBleHRlbmQgaXQgaW50byBub24tZWRpdGFi
bGUgdGV4dC4KICAgICBmcmFtZS0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoInNlbGVj
dEVsZW1lbnQoJ2VkaXRhYmxlXzInKTsiKSk7CiAgICAgRVhQRUNUX0VRKCJFZGl0YWJsZSAyLiIs
IHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7Ci0gICAgRVhQRUNUX1RSVUUoZnJhbWUtPm1vdmVT
ZWxlY3Rpb25TdGFydCh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMiIpKSwg
dHJ1ZSkpOworICAgIGZyYW1lLT5zZWxlY3RSYW5nZShib3R0b21SaWdodE1pbnVzT25lKGVsZW1l
bnRCb3VuZHMoZnJhbWUsICJlZGl0YWJsZV8yIikpLCB0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJh
bWUsICJoZWFkZXJfMiIpKSk7CiAgICAgRVhQRUNUX0VRKCJbIEVkaXRhYmxlIDEuIEVkaXRhYmxl
IDIuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKIAogICAgIHdlYlZpZXctPmNsb3NlKCk7
CiB9CiAKLVRFU1RfRihXZWJGcmFtZVRlc3QsIE1vdmVTZWxlY3Rpb25FbmQpCitURVNUX0YoV2Vi
RnJhbWVUZXN0LCBTZWxlY3RSYW5nZUNhbk1vdmVTZWxlY3Rpb25FbmQpCiB7CiAgICAgcmVnaXN0
ZXJNb2NrZWRIdHRwVVJMTG9hZCgidGV4dF9zZWxlY3Rpb24uaHRtbCIpOwogICAgIFdlYlZpZXcq
IHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3Rm9yVGV4dFNlbGVjdGlvbihtX2Jhc2VVUkwgKyAidGV4
dF9zZWxlY3Rpb24uaHRtbCIpOwogICAgIFdlYkZyYW1lKiBmcmFtZSA9IHdlYlZpZXctPm1haW5G
cmFtZSgpOwogCi0gICAgLy8gbW92ZVNlbGVjdGlvbkVuZCgpIGFsd2F5cyByZXR1cm5zIGZhbHNl
IGlmIHRoZXJlJ3Mgbm8gc2VsZWN0aW9uLgotICAgIEVYUEVDVF9GQUxTRShmcmFtZS0+bW92ZVNl
bGVjdGlvbkVuZCh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMSIpKSwgZmFs
c2UpKTsKLSAgICBFWFBFQ1RfRkFMU0UoZnJhbWUtPm1vdmVTZWxlY3Rpb25FbmQodG9wTGVmdChl
bGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzEiKSksIHRydWUpKTsKLQogICAgIC8vIFNlbGVj
dCBmaXJzdCBzcGFuLiBXZSBjYW4gbW92ZSB0aGUgZW5kIHRvIGluY2x1ZGUgdGhlIHNlY29uZCBz
cGFuLgogICAgIGZyYW1lLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgic2VsZWN0RWxl
bWVudCgnaGVhZGVyXzEnKTsiKSk7CiAgICAgRVhQRUNUX0VRKCJIZWFkZXIgMS4iLCBzZWxlY3Rp
b25Bc1N0cmluZyhmcmFtZSkpOwotICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5tb3ZlU2VsZWN0aW9u
RW5kKGJvdHRvbVJpZ2h0TWludXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8yIikp
LCBmYWxzZSkpOworICAgIGZyYW1lLT5zZWxlY3RSYW5nZSh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMo
ZnJhbWUsICJoZWFkZXJfMSIpKSwgYm90dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91bmRzKGZy
YW1lLCAiaGVhZGVyXzIiKSkpOwogICAgIEVYUEVDVF9FUSgiSGVhZGVyIDEuIEhlYWRlciAyLiIs
IHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7CiAKLSAgICAvLyBJZiBhbGxvd0NvbGxhcHNlZFNl
bGVjdGlvbj1mYWxzZSB3ZSBjYW4ndCBtb3ZlIHRoZSBzZWxlY3Rpb24gZW5kIGJleW9uZCB0aGUg
Y3VycmVudCBzdGFydC4KLSAgICAvLyBXZSBlbmQgdXAgd2l0aCBhIHNpbmdsZSBjaGFyYWN0ZXIg
c2VsZWN0ZWQuCisgICAgLy8gV2UgY2FuIG1vdmUgdGhlIHN0YXJ0IGFuZCBlbmQgdG9nZXRoZXIu
CiAgICAgZnJhbWUtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJzZWxlY3RFbGVtZW50
KCdoZWFkZXJfMicpOyIpKTsKICAgICBFWFBFQ1RfRVEoIkhlYWRlciAyLiIsIHNlbGVjdGlvbkFz
U3RyaW5nKGZyYW1lKSk7Ci0gICAgRVhQRUNUX1RSVUUoZnJhbWUtPm1vdmVTZWxlY3Rpb25FbmQo
dG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzIiKSksIGZhbHNlKSk7Ci0gICAg
RVhQRUNUX0VRKCJIIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLQotICAgIC8vIElmIGFs
bG93Q29sbGFwc2VkU2VsZWN0aW9uPXRydWUgd2UgY2FuIG1vdmUgdGhlIHN0YXJ0IGFuZCBlbmQg
dG9nZXRoZXIuCi0gICAgZnJhbWUtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJzZWxl
Y3RFbGVtZW50KCdoZWFkZXJfMicpOyIpKTsKLSAgICBFWFBFQ1RfRVEoIkhlYWRlciAyLiIsIHNl
bGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7Ci0gICAgRVhQRUNUX1RSVUUoZnJhbWUtPm1vdmVTZWxl
Y3Rpb25FbmQodG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzIiKSksIHRydWUp
KTsKKyAgICBmcmFtZS0+c2VsZWN0UmFuZ2UodG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAi
aGVhZGVyXzIiKSksIHRvcExlZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8yIikpKTsK
ICAgICBFWFBFQ1RfRVEoIiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7CiAgICAgLy8gU2Vs
ZWN0aW9uIGlzIGEgY2FyZXQsIG5vdCBlbXB0eS4KICAgICBFWFBFQ1RfRkFMU0UoZnJhbWUtPnNl
bGVjdGlvblJhbmdlKCkuaXNOdWxsKCkpOwotICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5tb3ZlU2Vs
ZWN0aW9uRW5kKGJvdHRvbVJpZ2h0TWludXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRl
cl8yIikpLCB0cnVlKSk7Ci0gICAgRVhQRUNUX0VRKCJIZWFkZXIgMi4iLCBzZWxlY3Rpb25Bc1N0
cmluZyhmcmFtZSkpOwogCi0gICAgLy8gSWYgYWxsb3dDb2xsYXBzZWRTZWxlY3Rpb249dHJ1ZSB3
ZSBjYW4gbW92ZSB0aGUgZW5kIGFjcm9zcyB0aGUgc3RhcnQuCisgICAgLy8gV2UgY2FuIG1vdmUg
dGhlIGVuZCBhY3Jvc3MgdGhlIHN0YXJ0LgogICAgIGZyYW1lLT5leGVjdXRlU2NyaXB0KFdlYlNj
cmlwdFNvdXJjZSgic2VsZWN0RWxlbWVudCgnaGVhZGVyXzInKTsiKSk7CiAgICAgRVhQRUNUX0VR
KCJIZWFkZXIgMi4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwotICAgIEVYUEVDVF9UUlVF
KGZyYW1lLT5tb3ZlU2VsZWN0aW9uRW5kKHRvcExlZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhl
YWRlcl8xIikpLCB0cnVlKSk7CisgICAgZnJhbWUtPnNlbGVjdFJhbmdlKHRvcExlZnQoZWxlbWVu
dEJvdW5kcyhmcmFtZSwgImhlYWRlcl8yIikpLCB0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUs
ICJoZWFkZXJfMSIpKSk7CiAgICAgRVhQRUNUX0VRKCJIZWFkZXIgMS4gIiwgc2VsZWN0aW9uQXNT
dHJpbmcoZnJhbWUpKTsKIAogICAgIC8vIENhbid0IGV4dGVuZCB0aGUgc2VsZWN0aW9uIHBhcnQt
d2F5IGludG8gYW4gZWRpdGFibGUgZWxlbWVudC4KICAgICBmcmFtZS0+ZXhlY3V0ZVNjcmlwdChX
ZWJTY3JpcHRTb3VyY2UoInNlbGVjdEVsZW1lbnQoJ2hlYWRlcl8xJyk7IikpOwogICAgIEVYUEVD
VF9FUSgiSGVhZGVyIDEuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICBFWFBFQ1Rf
VFJVRShmcmFtZS0+bW92ZVNlbGVjdGlvbkVuZChib3R0b21SaWdodE1pbnVzT25lKGVsZW1lbnRC
b3VuZHMoZnJhbWUsICJlZGl0YWJsZV8xIikpLCB0cnVlKSk7CisgICAgZnJhbWUtPnNlbGVjdFJh
bmdlKHRvcExlZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8xIikpLCBib3R0b21SaWdo
dE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJhbWUsICJlZGl0YWJsZV8xIikpKTsKICAgICBFWFBF
Q1RfRVEoIkhlYWRlciAxLiBIZWFkZXIgMi4gXSAiLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkp
OwogCiAgICAgLy8gQ2FuIGV4dGVuZCB0aGUgc2VsZWN0aW9uIGNvbXBsZXRlbHkgYWNyb3NzIGVk
aXRhYmxlIGVsZW1lbnRzLgogICAgIGZyYW1lLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJj
ZSgic2VsZWN0RWxlbWVudCgnaGVhZGVyXzEnKTsiKSk7CiAgICAgRVhQRUNUX0VRKCJIZWFkZXIg
MS4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwotICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5t
b3ZlU2VsZWN0aW9uRW5kKGJvdHRvbVJpZ2h0TWludXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwg
ImZvb3Rlcl8xIikpLCB0cnVlKSk7CisgICAgZnJhbWUtPnNlbGVjdFJhbmdlKHRvcExlZnQoZWxl
bWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8xIikpLCBib3R0b21SaWdodE1pbnVzT25lKGVsZW1l
bnRCb3VuZHMoZnJhbWUsICJmb290ZXJfMSIpKSk7CiAgICAgRVhQRUNUX0VRKCJIZWFkZXIgMS4g
SGVhZGVyIDIuIF0gWyBFZGl0YWJsZSAxLiBFZGl0YWJsZSAyLiBdIFsgRm9vdGVyIDEuIiwgc2Vs
ZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKIAogICAgIC8vIElmIHRoZSBzZWxlY3Rpb24gaXMgZWRp
dGFibGUgdGV4dCwgd2UgY2FuJ3QgZXh0ZW5kIGl0IGludG8gbm9uLWVkaXRhYmxlIHRleHQuCiAg
ICAgZnJhbWUtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJzZWxlY3RFbGVtZW50KCdl
ZGl0YWJsZV8xJyk7IikpOwogICAgIEVYUEVDVF9FUSgiRWRpdGFibGUgMS4iLCBzZWxlY3Rpb25B
c1N0cmluZyhmcmFtZSkpOwotICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5tb3ZlU2VsZWN0aW9uRW5k
KGJvdHRvbVJpZ2h0TWludXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImZvb3Rlcl8xIikpLCB0
cnVlKSk7CisgICAgZnJhbWUtPnNlbGVjdFJhbmdlKHRvcExlZnQoZWxlbWVudEJvdW5kcyhmcmFt
ZSwgImVkaXRhYmxlXzEiKSksIGJvdHRvbVJpZ2h0TWludXNPbmUoZWxlbWVudEJvdW5kcyhmcmFt
ZSwgImZvb3Rlcl8xIikpKTsKICAgICBFWFBFQ1RfRVEoIkVkaXRhYmxlIDEuIEVkaXRhYmxlIDIu
IF0iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwogCiAgICAgd2ViVmlldy0+Y2xvc2UoKTsK
IH0KIAotVEVTVF9GKFdlYkZyYW1lVGVzdCwgTW92ZUNhcmV0KQotewotICAgIHJlZ2lzdGVyTW9j
a2VkSHR0cFVSTExvYWQoInRleHRfc2VsZWN0aW9uLmh0bWwiKTsKLSAgICBXZWJWaWV3KiB3ZWJW
aWV3ID0gY3JlYXRlV2ViVmlld0ZvclRleHRTZWxlY3Rpb24obV9iYXNlVVJMICsgInRleHRfc2Vs
ZWN0aW9uLmh0bWwiKTsKLSAgICBXZWJGcmFtZSogZnJhbWUgPSB3ZWJWaWV3LT5tYWluRnJhbWUo
KTsKLQotICAgIC8vIG1vdmVDYXJldCgpIHJldHVybnMgZmFsc2UgaWYgdGhlcmUncyBubyBzZWxl
Y3Rpb24sIG9yIGlmIGl0IGlzbid0IGVkaXRhYmxlLgotICAgIEVYUEVDVF9GQUxTRShmcmFtZS0+
bW92ZUNhcmV0KHRvcExlZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImVkaXRhYmxlIikpKSk7Ci0g
ICAgZnJhbWUtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJzZWxlY3RFbGVtZW50KCdo
ZWFkZXJfMScpOyIpKTsKLSAgICBFWFBFQ1RfRVEoIkhlYWRlciAxLiIsIHNlbGVjdGlvbkFzU3Ry
aW5nKGZyYW1lKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZyYW1lLT5tb3ZlQ2FyZXQodG9wTGVmdChl
bGVtZW50Qm91bmRzKGZyYW1lLCAiZWRpdGFibGUiKSkpKTsKLQotICAgIC8vIFNlbGVjdCB0aGUg
ZWRpdGFibGUgdGV4dCBzcGFuLiBOb3cgbW92ZUNhcmV0KCkgd29ya3MuCi0gICAgZnJhbWUtPmV4
ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJzZWxlY3RFbGVtZW50KCdlZGl0YWJsZV8xJyk7
IikpOwotICAgIEVYUEVDVF9FUSgiRWRpdGFibGUgMS4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFt
ZSkpOwotCi0gICAgRVhQRUNUX1RSVUUoZnJhbWUtPm1vdmVDYXJldCh0b3BMZWZ0KGVsZW1lbnRC
b3VuZHMoZnJhbWUsICJlZGl0YWJsZV8xIikpKSk7Ci0gICAgRVhQRUNUX0VRKCIiLCBzZWxlY3Rp
b25Bc1N0cmluZyhmcmFtZSkpOwotICAgIEVYUEVDVF9GQUxTRShmcmFtZS0+c2VsZWN0aW9uUmFu
Z2UoKS5pc051bGwoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZnJhbWUtPm1vdmVTZWxlY3Rpb25FbmQo
Ym90dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91bmRzKGZyYW1lLCAiZWRpdGFibGVfMSIpKSwg
ZmFsc2UpKTsKLSAgICBFWFBFQ1RfRVEoIkVkaXRhYmxlIDEuIiwgc2VsZWN0aW9uQXNTdHJpbmco
ZnJhbWUpKTsKLQotICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5tb3ZlQ2FyZXQoYm90dG9tUmlnaHRN
aW51c09uZShlbGVtZW50Qm91bmRzKGZyYW1lLCAiZWRpdGFibGVfMiIpKSkpOwotICAgIEVYUEVD
VF9FUSgiIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICBFWFBFQ1RfRkFMU0UoZnJh
bWUtPnNlbGVjdGlvblJhbmdlKCkuaXNOdWxsKCkpOwotICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5t
b3ZlU2VsZWN0aW9uU3RhcnQodG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiZWRpdGFibGVf
MiIpKSwgZmFsc2UpKTsKLSAgICBFWFBFQ1RfRVEoIkVkaXRhYmxlIDIuIiwgc2VsZWN0aW9uQXNT
dHJpbmcoZnJhbWUpKTsKLQotICAgIC8vIENhcmV0IGlzIHBpbm5lZCBhdCB0aGUgc3RhcnQgb2Yg
dGhlIGVkaXRhYmxlIHJlZ2lvbi4KLSAgICBFWFBFQ1RfVFJVRShmcmFtZS0+bW92ZUNhcmV0KHRv
cExlZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8xIikpKSk7Ci0gICAgRVhQRUNUX0VR
KCIiLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwotICAgIEVYUEVDVF9GQUxTRShmcmFtZS0+
c2VsZWN0aW9uUmFuZ2UoKS5pc051bGwoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZnJhbWUtPm1vdmVT
ZWxlY3Rpb25FbmQoYm90dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91bmRzKGZyYW1lLCAiZWRp
dGFibGVfMSIpKSwgZmFsc2UpKTsKLSAgICBFWFBFQ1RfRVEoIlsgRWRpdGFibGUgMS4iLCBzZWxl
Y3Rpb25Bc1N0cmluZyhmcmFtZSkpOwotCi0gICAgLy8gQ2FyZXQgaXMgcGlubmVkIGF0IHRoZSBl
bmQgb2YgdGhlIGVkaXRhYmxlIHJlZ2lvbi4KLSAgICBFWFBFQ1RfVFJVRShmcmFtZS0+bW92ZUNh
cmV0KGJvdHRvbVJpZ2h0TWludXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImZvb3Rlcl8yIikp
KSk7Ci0gICAgRVhQRUNUX0VRKCIiLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwotICAgIEVY
UEVDVF9GQUxTRShmcmFtZS0+c2VsZWN0aW9uUmFuZ2UoKS5pc051bGwoKSk7Ci0gICAgRVhQRUNU
X1RSVUUoZnJhbWUtPm1vdmVTZWxlY3Rpb25TdGFydCh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJh
bWUsICJlZGl0YWJsZV8yIikpLCBmYWxzZSkpOwotICAgIEVYUEVDVF9FUSgiRWRpdGFibGUgMi4g
XSIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7Ci0KLSAgICB3ZWJWaWV3LT5jbG9zZSgpOwot
fQotCiBjbGFzcyBEaXNhbWJpZ3VhdGlvblBvcHVwVGVzdFdlYlZpZXdDbGllbnQgOiBwdWJsaWMg
V2ViVmlld0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRpZFRhcE11bHRpcGxl
VGFyZ2V0cyhjb25zdCBXZWJHZXN0dXJlRXZlbnQmLCBjb25zdCBXZWJWZWN0b3I8V2ViUmVjdD4m
IHRhcmdldFJlY3RzKSBPVkVSUklERQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164541</attachid>
            <date>2012-09-18 06:14:58 -0700</date>
            <delta_ts>2012-09-18 09:37:44 -0700</delta_ts>
            <desc>husky@chromium.org</desc>
            <filename>bug-96508-20120918141424.patch</filename>
            <type>text/plain</type>
            <size>24829</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4ODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDg1MWU0Mzk3NjI5OTllYzM4NWE2ZDY3MjNlNGUwODdkZDkxNGIzNzYuLjdiNWRlZTNhMDFiNDI3
NWZkNWQyYzkyNzgxOWEwNTJhNmUwZThlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTItMDktMTggIElhaW4gTWVycmljayAgPGh1c2t5QGdvb2dsZS5j
b20+CisKKyAgICAgICAgW2Nocm9taXVtXSBGaXggcGFyYW1ldGVyIG5hbWVzIHNlbGVjdGlvbkJv
dW5kcyBhbmQgc2VsZWN0UmFuZ2UsIHJlbW92ZSBtb3ZlU2VsZWN0aW9uU3RhcnQvRW5kL0NhcmV0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjUwOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIG1l
dGhvZHMgaGFkICJzdGFydCIgYW5kICJlbmQiIHBhcmFtZXRlcnMsIGJ1dCB0aGlzIGlzIGluY29y
cmVjdC4KKyAgICAgICAgc2VsZWN0UmFuZ2UoKSBhY3R1YWxseSB0YWtlcyBiYXNlIGFuZCBleHRl
bnQgKHdoZXJlIHRoZSB1c2VyIGFjdHVhbGx5CisgICAgICAgIHRvdWNoZWQpLCBhbmQgc2VsZWN0
aW9uQm91bmRzKCkgcmV0dXJucyBhbmNob3IgYW5kIGZvY3VzIChiYXNlIGFuZCBleHRlbnQKKyAg
ICAgICAgZXhwYW5kZWQgdG8gYWNjb3VudCBmb3IgdGhlIHNlbGVjdGlvbiBncmFudWxhcml0eSku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcGFyYW1ldGVyIG5hbWVzLCBhbmQgdXBk
YXRlcyBzZWxlY3RSYW5nZSwgaXRzIHRlc3QKKyAgICAgICAgYW5kIGl0cyBkb2N1bWVudGF0aW9u
IHRvIHJlZmxlY3QgdGhlIGNvcnJlY3QgdXNhZ2UuIEl0IGFsc28gcmVtb3ZlcworICAgICAgICBt
b3ZlU2VsZWN0aW9uU3RhcnQvbW92ZVNlbGVjdGlvbkVuZC9tb3ZlQ2FyZXQgKHdoaWNoIGFyZW4n
dCBiZWluZyB1c2VkCisgICAgICAgIHlldCksIGFuZCB1cGRhdGVzIFdlYkZyYW1lVGVzdCB0byBz
aG93IGhvdyB0aGVzZSBjYW4gYmUgaW1wbGVtZW50ZWQgdmlhCisgICAgICAgIHNlbGVjdFJhbmdl
LgorCisgICAgICAgICogcHVibGljL1dlYkZyYW1lLmg6CisgICAgICAgIChXZWJGcmFtZSk6Cisg
ICAgICAgICogcHVibGljL1dlYldpZGdldC5oOgorICAgICAgICAoV2ViV2lkZ2V0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViV2lkZ2V0OjpzZWxlY3Rpb25Cb3VuZHMpOgorICAgICAgICAqIHNyYy9X
ZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OnNlbGVjdFJh
bmdlKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisgICAgICAgIChXZWJGcmFtZUlt
cGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpzZWxlY3Rpb25Cb3VuZHMpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5o
OgorICAgICAgICAoV2ViVmlld0ltcGwpOgorICAgICAgICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5j
cHA6CisKIDIwMTItMDktMTcgIEJyaWFuIEFuZGVyc29uICA8YnJpYW5kZXJzb25AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIHJlbmRlcmluZyBjb21taXQgc3RhdGlzdGlj
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKaW5kZXggNTZjYmUxZWE0
N2RkYTJkOTI5MmNlODRiODJlZjJkZGFjMzFjNDYyNC4uZjM4YzczOTM0OTllMWM3ZWVhMGZiNTAw
YzQ1MWEzZTJjOWI3ZmY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFt
ZS5oCkBAIC00NzIsMzAgKzQ3MiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gdGhlcmUgaXMgcmFuZ2Vk
IHNlbGVjdGlvbi4KICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0V29yZEFyb3VuZENhcmV0KCkgPSAw
OwogCi0gICAgLy8gREVQUkVDQVRFRDogVXNlIG1vdmVTZWxlY3Rpb25TdGFydCAvIG1vdmVTZWxl
Y3Rpb25FbmQgLyBtb3ZlQ2FyZXQKLSAgICAvLyBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCBmb3Ig
dG91Y2gtYmFzZWQgVUlzLCBidXQgaXQncyBtaXNzaW5nIHNvbWUKLSAgICAvLyBmdW5jdGlvbmFs
aXR5IG5lZWRlZCBvbiBBbmRyb2lkLCBsaWtlIHByZXZlbnRpbmcgY29sbGFwc2VkIHNlbGVjdGlv
bnMuCi0gICAgdmlydHVhbCB2b2lkIHNlbGVjdFJhbmdlKGNvbnN0IFdlYlBvaW50JiBzdGFydCwg
Y29uc3QgV2ViUG9pbnQmIGVuZCkgPSAwOworICAgIC8vIFNlbGVjdCBhIHJhbmdlIG9mIHRleHQs
IGFzIGlmIGJ5IGRyYWctc2VsZWN0aW5nIGZyb20gYmFzZSB0byBleHRlbnQKKyAgICAvLyB3aXRo
IGNoYXJhY3RlciBncmFudWxhcml0eS4KKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0UmFuZ2UoY29u
c3QgV2ViUG9pbnQmIGJhc2UsIGNvbnN0IFdlYlBvaW50JiBleHRlbnQpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCBzZWxlY3RSYW5nZShjb25zdCBXZWJSYW5nZSYpID0gMDsKIAotICAgIC8vIFRo
ZSBtZXRob2RzIGJlbG93IGFyZSBmb3IgYWRqdXN0aW5nIHRoZSBzdGFydCBhbmQvb3IgZW5kIG9m
IHRoZSBjdXJyZW50Ci0gICAgLy8gc2VsZWN0aW9uIGJ5IGRpcmVjdCBtYW5pcHVsYXRpb24gb24g
YSB0b3VjaC1iYXNlZCBVSS4gVG8gZW50ZXIgc2VsZWN0aW9uCi0gICAgLy8gbW9kZSBpbiB0aGUg
Zmlyc3QgcGxhY2UsIGNhbGwgc2VsZWN0UmFuZ2UoKSBvciBzZW5kIGEgZmFrZSBtb3VzZSBldmVu
dC4KLQotICAgIC8vIE1vdmVzIHRoZSBzdGFydCBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24sIGtl
ZXBpbmcgdGhlIGVuZCBmaXhlZC4KLSAgICAvLyBSZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFs
c2UgaWYgdGhlcmUgaXMgbm8gc2VsZWN0aW9uIHRvIG1vZGlmeS4KLSAgICB2aXJ0dWFsIGJvb2wg
bW92ZVNlbGVjdGlvblN0YXJ0KGNvbnN0IFdlYlBvaW50JiwgYm9vbCBhbGxvd0NvbGxhcHNlZFNl
bGVjdGlvbikgPSAwOwotCi0gICAgLy8gTW92ZXMgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBzZWxl
Y3Rpb24sIGtlZXBpbmcgdGhlIHN0YXJ0IGZpeGVkLgotICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBz
dWNjZXNzLCBmYWxzZSBpZiB0aGVyZSBpcyBubyBzZWxlY3Rpb24gdG8gbW9kaWZ5LgotICAgIHZp
cnR1YWwgYm9vbCBtb3ZlU2VsZWN0aW9uRW5kKGNvbnN0IFdlYlBvaW50JiwgYm9vbCBhbGxvd0Nv
bGxhcHNlZFNlbGVjdGlvbikgPSAwOwotCi0gICAgLy8gTW92ZSBib3RoIGVuZHBvaW50cyBvZiB0
aGUgY3VycmVudCBzZWxlY3Rpb24gdG8gdGhlIGdpdmVuIHBvc2l0aW9uLgotICAgIC8vIFRoZSBj
YXJldCB3aWxsIHJlbWFpbiBwaW5uZWQgaW5zaWRlIHRoZSBjdXJyZW50IGVkaXRhYmxlIHJlZ2lv
bi4KLSAgICAvLyBSZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2UgaWYgdGhlcmUgaXMgbm8g
c2VsZWN0aW9uIG9yIGlmIHdlJ3JlIG5vdCBlZGl0aW5nLgotICAgIHZpcnR1YWwgYm9vbCBtb3Zl
Q2FyZXQoY29uc3QgV2ViUG9pbnQmKSA9IDA7Ci0KICAgICAvLyBQcmludGluZyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAg
IC8vIFJlZm9ybWF0cyB0aGUgV2ViRnJhbWUgZm9yIHByaW50aW5nLiBXZWJQcmludFBhcmFtcyBz
cGVjaWZpZXMgdGhlIHByaW50YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViV2lkZ2V0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJX
aWRnZXQuaAppbmRleCBhYzE2NTgxNDAyMTdlYjE1NGRiMGUzZDBjZTkzYzgzMzE0ZGRhOWMxLi5m
YTQ1NjIzOGEzYmQxNzhhOWUxMmE5MjMyZThlMTc4YTNiMWYyYjNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaApAQCAtMTk0LDkgKzE5NCw5IEBAIHB1YmxpYzoK
ICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kLiBJdCdzIHJlZHVuZGFudCB3aXRoIHRl
eHRJbnB1dEluZm8oKS4KICAgICB2aXJ0dWFsIFdlYlRleHRJbnB1dFR5cGUgdGV4dElucHV0VHlw
ZSgpIHsgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVOb25lOyB9CiAKLSAgICAvLyBSZXR1cm5zIHRo
ZSBzdGFydCBhbmQgZW5kIGJvdW5kcyBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24uCisgICAgLy8g
UmV0dXJucyB0aGUgYW5jaG9yIGFuZCBmb2N1cyBib3VuZHMgb2YgdGhlIGN1cnJlbnQgc2VsZWN0
aW9uLgogICAgIC8vIElmIHRoZSBzZWxlY3Rpb24gcmFuZ2UgaXMgZW1wdHksIGl0IHJldHVybnMg
dGhlIGNhcmV0IGJvdW5kcy4KLSAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0aW9uQm91bmRzKFdlYlJl
Y3QmIHN0YXJ0LCBXZWJSZWN0JiBlbmQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIHNlbGVjdGlvbkJvdW5kcyhXZWJSZWN0JiBhbmNob3IsIFdlYlJlY3QmIGZvY3Vz
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gUmV0dXJucyB0aGUgdGV4dCBkaXJl
Y3Rpb24gYXQgdGhlIHN0YXJ0IGFuZCBlbmQgYm91bmRzIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlv
bi4KICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIHJhbmdlIGlzIGVtcHR5LCBpdCByZXR1cm5zIGZh
bHNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXgg
N2JiMGVmZWVhM2JmOGNmYTc0Yzg0MDRmNWVmMzhlODEwODc1MjRjYy4uNDc4NTRjOGMwOTA1ZTAw
N2NlNjgzYjk0ZGFiMjViMWEwMDNiMjc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGcmFtZUltcGwuY3BwCkBAIC0xNDY2LDcxICsxNDY2LDE1IEBAIGJvb2wgV2ViRnJhbWVJ
bXBsOjpzZWxlY3RXb3JkQXJvdW5kQ2FyZXQoKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IFdlYkZyYW1lSW1wbDo6c2VsZWN0UmFuZ2UoY29uc3QgV2ViUG9pbnQmIHN0YXJ0LCBjb25zdCBX
ZWJQb2ludCYgZW5kKQordm9pZCBXZWJGcmFtZUltcGw6OnNlbGVjdFJhbmdlKGNvbnN0IFdlYlBv
aW50JiBiYXNlLCBjb25zdCBXZWJQb2ludCYgZXh0ZW50KQogewotICAgIGlmIChzdGFydCA9PSBl
bmQgJiYgbW92ZUNhcmV0KHN0YXJ0KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1vdmVT
ZWxlY3Rpb25TdGFydChzdGFydCwgdHJ1ZSkgJiYgbW92ZVNlbGVjdGlvbkVuZChlbmQsIHRydWUp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGYWlsZWQgdG8gbW92ZSBlbmRwb2ludHMsIHBy
b2JhYmx5IGJlY2F1c2UgdGhlcmUncyBubyBjdXJyZW50IHNlbGVjdGlvbi4KLSAgICAvLyBKdXN0
IHNldCB0aGUgc2VsZWN0aW9uIGV4cGxpY2l0bHkgKGJ1dCB0aGlzIHdvbid0IGhhbmRsZSBlZGl0
YWJsZSBib3VuZGFyaWVzIGNvcnJlY3RseSkuCi0gICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxl
Y3Rpb24odmlzaWJsZVBvc2l0aW9uRm9yV2luZG93UG9pbnQoc3RhcnQpLCB2aXNpYmxlUG9zaXRp
b25Gb3JXaW5kb3dQb2ludChlbmQpKTsgICAgCisgICAgVmlzaWJsZVBvc2l0aW9uIGJhc2VQb3Mg
PSB2aXNpYmxlUG9zaXRpb25Gb3JXaW5kb3dQb2ludChiYXNlKTsKKyAgICBWaXNpYmxlUG9zaXRp
b24gZXh0ZW50UG9zID0gdmlzaWJsZVBvc2l0aW9uRm9yV2luZG93UG9pbnQoZXh0ZW50KTsKKyAg
ICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24oYmFzZVBv
cywgZXh0ZW50UG9zKTsKICAgICBpZiAoZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNob3VsZENoYW5n
ZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKQogICAgICAgICBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+
c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogfQogCi1i
b29sIFdlYkZyYW1lSW1wbDo6bW92ZVNlbGVjdGlvblN0YXJ0KGNvbnN0IFdlYlBvaW50JiBwb2lu
dCwgYm9vbCBhbGxvd0NvbGxhcHNlZFNlbGVjdGlvbikKLXsKLSAgICBjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCk7Ci0g
ICAgaWYgKHNlbGVjdGlvbi5pc05vbmUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
VmlzaWJsZVBvc2l0aW9uIHN0YXJ0ID0gdmlzaWJsZVBvc2l0aW9uRm9yV2luZG93UG9pbnQocG9p
bnQpOwotICAgIGlmICghYWxsb3dDb2xsYXBzZWRTZWxlY3Rpb24pIHsKLSAgICAgICAgVmlzaWJs
ZVBvc2l0aW9uIG1heFN0YXJ0ID0gc2VsZWN0aW9uLnZpc2libGVFbmQoKS5wcmV2aW91cygpOwot
ICAgICAgICBpZiAoY29tcGFyZVBvc2l0aW9ucyhzdGFydCwgbWF4U3RhcnQpID4gMCkKLSAgICAg
ICAgICAgIHN0YXJ0ID0gbWF4U3RhcnQ7Ci0gICAgfQotCi0gICAgLy8gc3RhcnQgaXMgbW92aW5n
LCBzbyBiYXNlPWVuZCwgZXh0ZW50PXN0YXJ0Ci0gICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxl
Y3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHNlbGVjdGlvbi52aXNpYmxlRW5kKCksIHN0YXJ0KTsK
LSAgICBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2V0Tm9uRGlyZWN0aW9uYWxTZWxlY3Rpb25JZk5l
ZWRlZChuZXdTZWxlY3Rpb24sIENoYXJhY3RlckdyYW51bGFyaXR5KTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotYm9vbCBXZWJGcmFtZUltcGw6Om1vdmVTZWxlY3Rpb25FbmQoY29uc3QgV2ViUG9p
bnQmIHBvaW50LCBib29sIGFsbG93Q29sbGFwc2VkU2VsZWN0aW9uKQotewotICAgIGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rp
b24oKTsKLSAgICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kID0gdmlzaWJsZVBvc2l0aW9uRm9yV2luZG93UG9p
bnQocG9pbnQpOwotICAgIGlmICghYWxsb3dDb2xsYXBzZWRTZWxlY3Rpb24pIHsKLSAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIG1pbkVuZCA9IHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKS5uZXh0KCk7
Ci0gICAgICAgIGlmIChjb21wYXJlUG9zaXRpb25zKGVuZCwgbWluRW5kKSA8IDApCi0gICAgICAg
ICAgICBlbmQgPSBtaW5FbmQ7Ci0gICAgfQotCi0gICAgLy8gZW5kIGlzIG1vdmluZywgc28gYmFz
ZT1zdGFydCwgZXh0ZW50PWVuZAotICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uID0g
VmlzaWJsZVNlbGVjdGlvbihzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCksIGVuZCk7Ci0gICAgZnJh
bWUoKS0+c2VsZWN0aW9uKCktPnNldE5vbkRpcmVjdGlvbmFsU2VsZWN0aW9uSWZOZWVkZWQobmV3
U2VsZWN0aW9uLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LWJvb2wgV2ViRnJhbWVJbXBsOjptb3ZlQ2FyZXQoY29uc3QgV2ViUG9pbnQmIHBvaW50KQotewot
ICAgIEZyYW1lU2VsZWN0aW9uKiBmcmFtZVNlbGVjdGlvbiA9IGZyYW1lKCktPnNlbGVjdGlvbigp
OwotICAgIGlmIChmcmFtZVNlbGVjdGlvbi0+aXNOb25lKCkgfHwgIWZyYW1lU2VsZWN0aW9uLT5p
c0NvbnRlbnRFZGl0YWJsZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBWaXNpYmxl
UG9zaXRpb24gcG9zID0gdmlzaWJsZVBvc2l0aW9uRm9yV2luZG93UG9pbnQocG9pbnQpOwotICAg
IGZyYW1lU2VsZWN0aW9uLT5zZXRFeHRlbnQocG9zLCBVc2VyVHJpZ2dlcmVkKTsKLSAgICBmcmFt
ZVNlbGVjdGlvbi0+c2V0QmFzZShmcmFtZVNlbGVjdGlvbi0+ZXh0ZW50KCksIFVzZXJUcmlnZ2Vy
ZWQpOwotICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lkIFdlYkZyYW1lSW1wbDo6c2VsZWN0UmFu
Z2UoY29uc3QgV2ViUmFuZ2UmIHdlYlJhbmdlKQogewogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2Ug
PSBzdGF0aWNfY2FzdDxQYXNzUmVmUHRyPFJhbmdlPiA+KHdlYlJhbmdlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKaW5kZXggNTg1MjVkNzAxMzNhOGVlMGUyMjdk
OGI2N2M2ZTFmMGY5M2E5NjFkMi4uYTJmZTc5N2UzYzA0ZDU5YTdmNzg4MDk0MzM4MjM4OTdmNWNl
Mzg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKQEAgLTE4
NCwxMSArMTg0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIHNlbGVjdGlvbkFz
VGV4dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU3RyaW5nIHNlbGVjdGlvbkFzTWFya3VwKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIHNlbGVjdFdvcmRBcm91bmRDYXJldCgpOwotICAgIHZp
cnR1YWwgdm9pZCBzZWxlY3RSYW5nZShjb25zdCBXZWJQb2ludCYgc3RhcnQsIGNvbnN0IFdlYlBv
aW50JiBlbmQpOworICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RSYW5nZShjb25zdCBXZWJQb2ludCYg
YmFzZSwgY29uc3QgV2ViUG9pbnQmIGV4dGVudCk7CiAgICAgdmlydHVhbCB2b2lkIHNlbGVjdFJh
bmdlKGNvbnN0IFdlYlJhbmdlJik7Ci0gICAgdmlydHVhbCBib29sIG1vdmVTZWxlY3Rpb25TdGFy
dChjb25zdCBXZWJQb2ludCYsIGJvb2wgYWxsb3dDb2xsYXBzZWRTZWxlY3Rpb24pOwotICAgIHZp
cnR1YWwgYm9vbCBtb3ZlU2VsZWN0aW9uRW5kKGNvbnN0IFdlYlBvaW50JiwgYm9vbCBhbGxvd0Nv
bGxhcHNlZFNlbGVjdGlvbik7Ci0gICAgdmlydHVhbCBib29sIG1vdmVDYXJldChjb25zdCBXZWJQ
b2ludCYpOwogICAgIHZpcnR1YWwgaW50IHByaW50QmVnaW4oY29uc3QgV2ViUHJpbnRQYXJhbXMm
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViTm9kZSYgY29uc3RyYWluVG9O
b2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCogdXNlQnJvd3Nlck92ZXJsYXlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA5NzQx
NmUwMjQwMzI4ZjM2NzVkNGQxZmIxZjBhMjRjZDY3YmU3Mjc2Li4zNDYwMDVlZTQxMjQyNmI1YzU3
ZWZjZTE0ZmU5NjA4MTVmODg4YjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCkBAIC0yMjIzLDcgKzIyMjMsNyBAQCBXZWJUZXh0SW5wdXRUeXBlIFdlYlZp
ZXdJbXBsOjp0ZXh0SW5wdXRUeXBlKCkKICAgICByZXR1cm4gV2ViVGV4dElucHV0VHlwZU5vbmU7
CiB9CiAKLWJvb2wgV2ViVmlld0ltcGw6OnNlbGVjdGlvbkJvdW5kcyhXZWJSZWN0JiBzdGFydCwg
V2ViUmVjdCYgZW5kKSBjb25zdAorYm9vbCBXZWJWaWV3SW1wbDo6c2VsZWN0aW9uQm91bmRzKFdl
YlJlY3QmIGFuY2hvciwgV2ViUmVjdCYgZm9jdXMpIGNvbnN0CiB7CiAgICAgY29uc3QgRnJhbWUq
IGZyYW1lID0gZm9jdXNlZFdlYkNvcmVGcmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBAIC0yMjMz
LDcgKzIyMzMsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpzZWxlY3Rpb25Cb3VuZHMoV2ViUmVjdCYg
c3RhcnQsIFdlYlJlY3QmIGVuZCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKHNlbGVjdGlvbi0+aXNDYXJldCgpKSB7Ci0gICAgICAgIHN0YXJ0ID0gZW5kID0gZnJhbWUt
PnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhzZWxlY3Rpb24tPmFic29sdXRlQ2FyZXRCb3VuZHMo
KSk7CisgICAgICAgIGFuY2hvciA9IGZvY3VzID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dp
bmRvdyhzZWxlY3Rpb24tPmFic29sdXRlQ2FyZXRCb3VuZHMoKSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIApAQCAtMjI0NiwyMCArMjI0NiwyMCBAQCBib29sIFdlYlZpZXdJbXBsOjpz
ZWxlY3Rpb25Cb3VuZHMoV2ViUmVjdCYgc3RhcnQsIFdlYlJlY3QmIGVuZCkgY29uc3QKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZS0+c3RhcnRPZmZz
ZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSYW5n
ZS0+c3RhcnRDb250YWluZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZWN0ZWRSYW5nZS0+c3RhcnRPZmZzZXQoKSkpOwotICAgIHN0YXJ0ID0gZnJhbWUtPmVk
aXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7CisgICAgYW5jaG9yID0gZnJh
bWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7CiAKICAgICByYW5n
ZSA9IFJhbmdlOjpjcmVhdGUoc2VsZWN0ZWRSYW5nZS0+ZW5kQ29udGFpbmVyKCktPmRvY3VtZW50
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2UtPmVuZENvbnRhaW5l
cigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFJhbmdlLT5lbmRPZmZzZXQo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZS0+ZW5kQ29udGFpbmVy
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2UtPmVuZE9mZnNldCgp
KTsKLSAgICBlbmQgPSBmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVjdEZvclJhbmdlKHJhbmdlLmdl
dCgpKTsKKyAgICBmb2N1cyA9IGZyYW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFu
Z2UuZ2V0KCkpOwogCi0gICAgc3RhcnQgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93
KHN0YXJ0KTsKLSAgICBlbmQgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KGVuZCk7
CisgICAgYW5jaG9yID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhhbmNob3IpOwor
ICAgIGZvY3VzID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhmb2N1cyk7CiAKICAg
ICBpZiAoIWZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuaXNCYXNlRmlyc3QoKSkKLSAg
ICAgICAgc3RkOjpzd2FwKHN0YXJ0LCBlbmQpOworICAgICAgICBzdGQ6OnN3YXAoYW5jaG9yLCBm
b2N1cyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCmluZGV4IDExYTA1ZDBkZWQ0ZDkzOWUxZjNjZTdlZDc1ZWU4YzYyOWE2ZDJm
ZDkuLjg2NTg5ODYwODQ0YzVkMjhjZGRmZDA0YWFhZDkwOGM2YWU2Y2FlZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMTY3LDcgKzE2Nyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZXh0ZW5kU2VsZWN0aW9uQW5kRGVsZXRlKGludCBiZWZvcmUs
IGludCBhZnRlcik7CiAgICAgdmlydHVhbCBib29sIGlzU2VsZWN0aW9uRWRpdGFibGUoKSBjb25z
dDsKICAgICB2aXJ0dWFsIFdlYkNvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCBzZWxlY3Rpb25Cb3VuZHMoV2ViUmVjdCYgc3RhcnQsIFdlYlJlY3QmIGVuZCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIHNlbGVjdGlvbkJvdW5kcyhXZWJSZWN0JiBhbmNob3Is
IFdlYlJlY3QmIGZvY3VzKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0aW9uVGV4dERp
cmVjdGlvbihXZWJUZXh0RGlyZWN0aW9uJiBzdGFydCwgV2ViVGV4dERpcmVjdGlvbiYgZW5kKSBj
b25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FyZXRPclNlbGVjdGlvblJhbmdlKHNpemVfdCogbG9j
YXRpb24sIHNpemVfdCogbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dERpcmVjdGlv
bihXZWJUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKaW5kZXggNDMyOGEwZTRhOWIyZjZjNWYzNGRlMTljMGYy
NTM3YTA3NGQ3ZWZjNi4uYTAwNDliNjdlOGQ0MWI2MmJhNTI4NWI5YTEwMGQ2OWM2MDZmNDAzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcApAQCAt
MTA3Miw3ICsxMDcyLDcgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgU2VsZWN0UmFuZ2UpCiAgICAg
ZnJhbWUgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKTsKICAgICBFWFBFQ1RfRVEoIlRoaXMgdGV4dCBp
cyBpbml0aWFsbHkgc2VsZWN0ZWQuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKICAgICB3
ZWJWaWV3LT5zZWxlY3Rpb25Cb3VuZHMoc3RhcnRXZWJSZWN0LCBlbmRXZWJSZWN0KTsKLSAgICBm
cmFtZS0+c2VsZWN0UmFuZ2UoV2ViUG9pbnQoMCwgMCksIGJvdHRvbVJpZ2h0TWludXNPbmUoZW5k
V2ViUmVjdCkpOworICAgIGZyYW1lLT5zZWxlY3RSYW5nZShib3R0b21SaWdodE1pbnVzT25lKGVu
ZFdlYlJlY3QpLCBXZWJQb2ludCgwLCAwKSk7CiAgICAgRVhQRUNUX0VRKCIxNi1jaGFyIGhlYWRl
ci4gVGhpcyB0ZXh0IGlzIGluaXRpYWxseSBzZWxlY3RlZC4iLCBzZWxlY3Rpb25Bc1N0cmluZyhm
cmFtZSkpOwogICAgIHdlYlZpZXctPmNsb3NlKCk7CiAKQEAgLTEwODYsMTc2ICsxMDg2LDEwMCBA
QCBURVNUX0YoV2ViRnJhbWVUZXN0LCBTZWxlY3RSYW5nZSkKICAgICB3ZWJWaWV3LT5jbG9zZSgp
OwogfQogCi1URVNUX0YoV2ViRnJhbWVUZXN0LCBNb3ZlU2VsZWN0aW9uU3RhcnQpCitURVNUX0Yo
V2ViRnJhbWVUZXN0LCBTZWxlY3RSYW5nZUNhbk1vdmVTZWxlY3Rpb25TdGFydCkKIHsKICAgICBy
ZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJ0ZXh0X3NlbGVjdGlvbi5odG1sIik7CiAgICAgV2Vi
Vmlldyogd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdGb3JUZXh0U2VsZWN0aW9uKG1fYmFzZVVSTCAr
ICJ0ZXh0X3NlbGVjdGlvbi5odG1sIik7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gd2ViVmlldy0+
bWFpbkZyYW1lKCk7CiAKLSAgICAvLyBtb3ZlU2VsZWN0aW9uU3RhcnQoKSBhbHdheXMgcmV0dXJu
cyBmYWxzZSBpZiB0aGVyZSdzIG5vIHNlbGVjdGlvbi4KLSAgICBFWFBFQ1RfRkFMU0UoZnJhbWUt
Pm1vdmVTZWxlY3Rpb25TdGFydCh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJf
MSIpKSwgZmFsc2UpKTsKLSAgICBFWFBFQ1RfRkFMU0UoZnJhbWUtPm1vdmVTZWxlY3Rpb25TdGFy
dCh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMSIpKSwgdHJ1ZSkpOwotCi0g
ICAgZnJhbWUtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJzZWxlY3RFbGVtZW50KCdo
ZWFkZXJfMScpOyIpKTsKLSAgICBFWFBFQ1RfRVEoIkhlYWRlciAxLiIsIHNlbGVjdGlvbkFzU3Ry
aW5nKGZyYW1lKSk7Ci0gICAgRVhQRUNUX1RSVUUoZnJhbWUtPm1vdmVTZWxlY3Rpb25FbmQoYm90
dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzIiKSksIGZhbHNl
KSk7Ci0gICAgRVhQRUNUX0VRKCJIZWFkZXIgMS4gSGVhZGVyIDIuIiwgc2VsZWN0aW9uQXNTdHJp
bmcoZnJhbWUpKTsKLQogICAgIC8vIFNlbGVjdCBzZWNvbmQgc3Bhbi4gV2UgY2FuIG1vdmUgdGhl
IHN0YXJ0IHRvIGluY2x1ZGUgdGhlIGZpcnN0IHNwYW4uCiAgICAgZnJhbWUtPmV4ZWN1dGVTY3Jp
cHQoV2ViU2NyaXB0U291cmNlKCJzZWxlY3RFbGVtZW50KCdoZWFkZXJfMicpOyIpKTsKICAgICBF
WFBFQ1RfRVEoIkhlYWRlciAyLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7Ci0gICAgRVhQ
RUNUX1RSVUUoZnJhbWUtPm1vdmVTZWxlY3Rpb25TdGFydCh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMo
ZnJhbWUsICJoZWFkZXJfMSIpKSwgZmFsc2UpKTsKKyAgICBmcmFtZS0+c2VsZWN0UmFuZ2UoYm90
dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzIiKSksIHRvcExl
ZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8xIikpKTsKICAgICBFWFBFQ1RfRVEoIkhl
YWRlciAxLiBIZWFkZXIgMi4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwogCi0gICAgLy8g
SWYgYWxsb3dDb2xsYXBzZWRTZWxlY3Rpb249ZmFsc2Ugd2UgY2FuJ3QgbW92ZSB0aGUgc2VsZWN0
aW9uIHN0YXJ0IGJleW9uZCB0aGUgY3VycmVudCBlbmQuCi0gICAgLy8gV2UgZW5kIHVwIHdpdGgg
YSBzaW5nbGUgY2hhcmFjdGVyIHNlbGVjdGVkLgorICAgIC8vIFdlIGNhbiBtb3ZlIHRoZSBzdGFy
dCBhbmQgZW5kIHRvZ2V0aGVyLgogICAgIGZyYW1lLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNv
dXJjZSgic2VsZWN0RWxlbWVudCgnaGVhZGVyXzEnKTsiKSk7CiAgICAgRVhQRUNUX0VRKCJIZWFk
ZXIgMS4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwotICAgIEVYUEVDVF9UUlVFKGZyYW1l
LT5tb3ZlU2VsZWN0aW9uU3RhcnQoYm90dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91bmRzKGZy
YW1lLCAiaGVhZGVyXzEiKSksIGZhbHNlKSk7Ci0gICAgRVhQRUNUX0VRKCIuIiwgc2VsZWN0aW9u
QXNTdHJpbmcoZnJhbWUpKTsKLQotICAgIC8vIElmIGFsbG93Q29sbGFwc2VkU2VsZWN0aW9uPXRy
dWUgd2UgY2FuIG1vdmUgdGhlIHN0YXJ0IGFuZCBlbmQgdG9nZXRoZXIuCi0gICAgZnJhbWUtPmV4
ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJzZWxlY3RFbGVtZW50KCdoZWFkZXJfMScpOyIp
KTsKLSAgICBFWFBFQ1RfRVEoIkhlYWRlciAxLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7
Ci0gICAgRVhQRUNUX1RSVUUoZnJhbWUtPm1vdmVTZWxlY3Rpb25TdGFydChib3R0b21SaWdodE1p
bnVzT25lKGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMSIpKSwgdHJ1ZSkpOworICAgIGZy
YW1lLT5zZWxlY3RSYW5nZShib3R0b21SaWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJhbWUs
ICJoZWFkZXJfMSIpKSwgYm90dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91bmRzKGZyYW1lLCAi
aGVhZGVyXzEiKSkpOwogICAgIEVYUEVDVF9FUSgiIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUp
KTsKICAgICAvLyBTZWxlY3Rpb24gaXMgYSBjYXJldCwgbm90IGVtcHR5LgogICAgIEVYUEVDVF9G
QUxTRShmcmFtZS0+c2VsZWN0aW9uUmFuZ2UoKS5pc051bGwoKSk7Ci0gICAgRVhQRUNUX1RSVUUo
ZnJhbWUtPm1vdmVTZWxlY3Rpb25TdGFydCh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJo
ZWFkZXJfMSIpKSwgdHJ1ZSkpOwotICAgIEVYUEVDVF9FUSgiSGVhZGVyIDEuIiwgc2VsZWN0aW9u
QXNTdHJpbmcoZnJhbWUpKTsKIAotICAgIC8vIElmIGFsbG93Q29sbGFwc2VkU2VsZWN0aW9uPXRy
dWUgd2UgY2FuIG1vdmUgdGhlIHN0YXJ0IGFjcm9zcyB0aGUgZW5kLgorICAgIC8vIFdlIGNhbiBt
b3ZlIHRoZSBzdGFydCBhY3Jvc3MgdGhlIGVuZC4KICAgICBmcmFtZS0+ZXhlY3V0ZVNjcmlwdChX
ZWJTY3JpcHRTb3VyY2UoInNlbGVjdEVsZW1lbnQoJ2hlYWRlcl8xJyk7IikpOwogICAgIEVYUEVD
VF9FUSgiSGVhZGVyIDEuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICBFWFBFQ1Rf
VFJVRShmcmFtZS0+bW92ZVNlbGVjdGlvblN0YXJ0KGJvdHRvbVJpZ2h0TWludXNPbmUoZWxlbWVu
dEJvdW5kcyhmcmFtZSwgImhlYWRlcl8yIikpLCB0cnVlKSk7CisgICAgZnJhbWUtPnNlbGVjdFJh
bmdlKGJvdHRvbVJpZ2h0TWludXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8xIikp
LCBib3R0b21SaWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMiIpKSk7
CiAgICAgRVhQRUNUX0VRKCIgSGVhZGVyIDIuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsK
IAogICAgIC8vIENhbid0IGV4dGVuZCB0aGUgc2VsZWN0aW9uIHBhcnQtd2F5IGludG8gYW4gZWRp
dGFibGUgZWxlbWVudC4KICAgICBmcmFtZS0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2Uo
InNlbGVjdEVsZW1lbnQoJ2Zvb3Rlcl8yJyk7IikpOwogICAgIEVYUEVDVF9FUSgiRm9vdGVyIDIu
Iiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICBFWFBFQ1RfVFJVRShmcmFtZS0+bW92
ZVNlbGVjdGlvblN0YXJ0KHRvcExlZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImVkaXRhYmxlXzIi
KSksIHRydWUpKTsKKyAgICBmcmFtZS0+c2VsZWN0UmFuZ2UoYm90dG9tUmlnaHRNaW51c09uZShl
bGVtZW50Qm91bmRzKGZyYW1lLCAiZm9vdGVyXzIiKSksIHRvcExlZnQoZWxlbWVudEJvdW5kcyhm
cmFtZSwgImVkaXRhYmxlXzIiKSkpOwogICAgIEVYUEVDVF9FUSgiIFsgRm9vdGVyIDEuIEZvb3Rl
ciAyLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7CiAKICAgICAvLyBDYW4gZXh0ZW5kIHRo
ZSBzZWxlY3Rpb24gY29tcGxldGVseSBhY3Jvc3MgZWRpdGFibGUgZWxlbWVudHMuCiAgICAgZnJh
bWUtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJzZWxlY3RFbGVtZW50KCdmb290ZXJf
MicpOyIpKTsKICAgICBFWFBFQ1RfRVEoIkZvb3RlciAyLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZy
YW1lKSk7Ci0gICAgRVhQRUNUX1RSVUUoZnJhbWUtPm1vdmVTZWxlY3Rpb25TdGFydCh0b3BMZWZ0
KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMiIpKSwgdHJ1ZSkpOworICAgIGZyYW1lLT5z
ZWxlY3RSYW5nZShib3R0b21SaWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJhbWUsICJmb290
ZXJfMiIpKSwgdG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzIiKSkpOwogICAg
IEVYUEVDVF9FUSgiSGVhZGVyIDIuIF0gWyBFZGl0YWJsZSAxLiBFZGl0YWJsZSAyLiBdIFsgRm9v
dGVyIDEuIEZvb3RlciAyLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7CiAKICAgICAvLyBJ
ZiB0aGUgc2VsZWN0aW9uIGlzIGVkaXRhYmxlIHRleHQsIHdlIGNhbid0IGV4dGVuZCBpdCBpbnRv
IG5vbi1lZGl0YWJsZSB0ZXh0LgogICAgIGZyYW1lLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNv
dXJjZSgic2VsZWN0RWxlbWVudCgnZWRpdGFibGVfMicpOyIpKTsKICAgICBFWFBFQ1RfRVEoIkVk
aXRhYmxlIDIuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICBFWFBFQ1RfVFJVRShm
cmFtZS0+bW92ZVNlbGVjdGlvblN0YXJ0KHRvcExlZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhl
YWRlcl8yIikpLCB0cnVlKSk7CisgICAgZnJhbWUtPnNlbGVjdFJhbmdlKGJvdHRvbVJpZ2h0TWlu
dXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImVkaXRhYmxlXzIiKSksIHRvcExlZnQoZWxlbWVu
dEJvdW5kcyhmcmFtZSwgImhlYWRlcl8yIikpKTsKICAgICBFWFBFQ1RfRVEoIlsgRWRpdGFibGUg
MS4gRWRpdGFibGUgMi4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwogCiAgICAgd2ViVmll
dy0+Y2xvc2UoKTsKIH0KIAotVEVTVF9GKFdlYkZyYW1lVGVzdCwgTW92ZVNlbGVjdGlvbkVuZCkK
K1RFU1RfRihXZWJGcmFtZVRlc3QsIFNlbGVjdFJhbmdlQ2FuTW92ZVNlbGVjdGlvbkVuZCkKIHsK
ICAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJ0ZXh0X3NlbGVjdGlvbi5odG1sIik7CiAg
ICAgV2ViVmlldyogd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdGb3JUZXh0U2VsZWN0aW9uKG1fYmFz
ZVVSTCArICJ0ZXh0X3NlbGVjdGlvbi5odG1sIik7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gd2Vi
Vmlldy0+bWFpbkZyYW1lKCk7CiAKLSAgICAvLyBtb3ZlU2VsZWN0aW9uRW5kKCkgYWx3YXlzIHJl
dHVybnMgZmFsc2UgaWYgdGhlcmUncyBubyBzZWxlY3Rpb24uCi0gICAgRVhQRUNUX0ZBTFNFKGZy
YW1lLT5tb3ZlU2VsZWN0aW9uRW5kKHRvcExlZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRl
cl8xIikpLCBmYWxzZSkpOwotICAgIEVYUEVDVF9GQUxTRShmcmFtZS0+bW92ZVNlbGVjdGlvbkVu
ZCh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMSIpKSwgdHJ1ZSkpOwotCiAg
ICAgLy8gU2VsZWN0IGZpcnN0IHNwYW4uIFdlIGNhbiBtb3ZlIHRoZSBlbmQgdG8gaW5jbHVkZSB0
aGUgc2Vjb25kIHNwYW4uCiAgICAgZnJhbWUtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNl
KCJzZWxlY3RFbGVtZW50KCdoZWFkZXJfMScpOyIpKTsKICAgICBFWFBFQ1RfRVEoIkhlYWRlciAx
LiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7Ci0gICAgRVhQRUNUX1RSVUUoZnJhbWUtPm1v
dmVTZWxlY3Rpb25FbmQoYm90dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91bmRzKGZyYW1lLCAi
aGVhZGVyXzIiKSksIGZhbHNlKSk7CisgICAgZnJhbWUtPnNlbGVjdFJhbmdlKHRvcExlZnQoZWxl
bWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8xIikpLCBib3R0b21SaWdodE1pbnVzT25lKGVsZW1l
bnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMiIpKSk7CiAgICAgRVhQRUNUX0VRKCJIZWFkZXIgMS4g
SGVhZGVyIDIuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKIAotICAgIC8vIElmIGFsbG93
Q29sbGFwc2VkU2VsZWN0aW9uPWZhbHNlIHdlIGNhbid0IG1vdmUgdGhlIHNlbGVjdGlvbiBlbmQg
YmV5b25kIHRoZSBjdXJyZW50IHN0YXJ0LgotICAgIC8vIFdlIGVuZCB1cCB3aXRoIGEgc2luZ2xl
IGNoYXJhY3RlciBzZWxlY3RlZC4KKyAgICAvLyBXZSBjYW4gbW92ZSB0aGUgc3RhcnQgYW5kIGVu
ZCB0b2dldGhlci4KICAgICBmcmFtZS0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoInNl
bGVjdEVsZW1lbnQoJ2hlYWRlcl8yJyk7IikpOwogICAgIEVYUEVDVF9FUSgiSGVhZGVyIDIuIiwg
c2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICBFWFBFQ1RfVFJVRShmcmFtZS0+bW92ZVNl
bGVjdGlvbkVuZCh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMiIpKSwgZmFs
c2UpKTsKLSAgICBFWFBFQ1RfRVEoIkgiLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwotCi0g
ICAgLy8gSWYgYWxsb3dDb2xsYXBzZWRTZWxlY3Rpb249dHJ1ZSB3ZSBjYW4gbW92ZSB0aGUgc3Rh
cnQgYW5kIGVuZCB0b2dldGhlci4KLSAgICBmcmFtZS0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRT
b3VyY2UoInNlbGVjdEVsZW1lbnQoJ2hlYWRlcl8yJyk7IikpOwotICAgIEVYUEVDVF9FUSgiSGVh
ZGVyIDIuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICBFWFBFQ1RfVFJVRShmcmFt
ZS0+bW92ZVNlbGVjdGlvbkVuZCh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJf
MiIpKSwgdHJ1ZSkpOworICAgIGZyYW1lLT5zZWxlY3RSYW5nZSh0b3BMZWZ0KGVsZW1lbnRCb3Vu
ZHMoZnJhbWUsICJoZWFkZXJfMiIpKSwgdG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVh
ZGVyXzIiKSkpOwogICAgIEVYUEVDVF9FUSgiIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsK
ICAgICAvLyBTZWxlY3Rpb24gaXMgYSBjYXJldCwgbm90IGVtcHR5LgogICAgIEVYUEVDVF9GQUxT
RShmcmFtZS0+c2VsZWN0aW9uUmFuZ2UoKS5pc051bGwoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZnJh
bWUtPm1vdmVTZWxlY3Rpb25FbmQoYm90dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91bmRzKGZy
YW1lLCAiaGVhZGVyXzIiKSksIHRydWUpKTsKLSAgICBFWFBFQ1RfRVEoIkhlYWRlciAyLiIsIHNl
bGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7CiAKLSAgICAvLyBJZiBhbGxvd0NvbGxhcHNlZFNlbGVj
dGlvbj10cnVlIHdlIGNhbiBtb3ZlIHRoZSBlbmQgYWNyb3NzIHRoZSBzdGFydC4KKyAgICAvLyBX
ZSBjYW4gbW92ZSB0aGUgZW5kIGFjcm9zcyB0aGUgc3RhcnQuCiAgICAgZnJhbWUtPmV4ZWN1dGVT
Y3JpcHQoV2ViU2NyaXB0U291cmNlKCJzZWxlY3RFbGVtZW50KCdoZWFkZXJfMicpOyIpKTsKICAg
ICBFWFBFQ1RfRVEoIkhlYWRlciAyLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7Ci0gICAg
RVhQRUNUX1RSVUUoZnJhbWUtPm1vdmVTZWxlY3Rpb25FbmQodG9wTGVmdChlbGVtZW50Qm91bmRz
KGZyYW1lLCAiaGVhZGVyXzEiKSksIHRydWUpKTsKKyAgICBmcmFtZS0+c2VsZWN0UmFuZ2UodG9w
TGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzIiKSksIHRvcExlZnQoZWxlbWVudEJv
dW5kcyhmcmFtZSwgImhlYWRlcl8xIikpKTsKICAgICBFWFBFQ1RfRVEoIkhlYWRlciAxLiAiLCBz
ZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwogCiAgICAgLy8gQ2FuJ3QgZXh0ZW5kIHRoZSBzZWxl
Y3Rpb24gcGFydC13YXkgaW50byBhbiBlZGl0YWJsZSBlbGVtZW50LgogICAgIGZyYW1lLT5leGVj
dXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgic2VsZWN0RWxlbWVudCgnaGVhZGVyXzEnKTsiKSk7
CiAgICAgRVhQRUNUX0VRKCJIZWFkZXIgMS4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwot
ICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5tb3ZlU2VsZWN0aW9uRW5kKGJvdHRvbVJpZ2h0TWludXNP
bmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImVkaXRhYmxlXzEiKSksIHRydWUpKTsKKyAgICBmcmFt
ZS0+c2VsZWN0UmFuZ2UodG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzEiKSks
IGJvdHRvbVJpZ2h0TWludXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImVkaXRhYmxlXzEiKSkp
OwogICAgIEVYUEVDVF9FUSgiSGVhZGVyIDEuIEhlYWRlciAyLiBdICIsIHNlbGVjdGlvbkFzU3Ry
aW5nKGZyYW1lKSk7CiAKICAgICAvLyBDYW4gZXh0ZW5kIHRoZSBzZWxlY3Rpb24gY29tcGxldGVs
eSBhY3Jvc3MgZWRpdGFibGUgZWxlbWVudHMuCiAgICAgZnJhbWUtPmV4ZWN1dGVTY3JpcHQoV2Vi
U2NyaXB0U291cmNlKCJzZWxlY3RFbGVtZW50KCdoZWFkZXJfMScpOyIpKTsKICAgICBFWFBFQ1Rf
RVEoIkhlYWRlciAxLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7Ci0gICAgRVhQRUNUX1RS
VUUoZnJhbWUtPm1vdmVTZWxlY3Rpb25FbmQoYm90dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91
bmRzKGZyYW1lLCAiZm9vdGVyXzEiKSksIHRydWUpKTsKKyAgICBmcmFtZS0+c2VsZWN0UmFuZ2Uo
dG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzEiKSksIGJvdHRvbVJpZ2h0TWlu
dXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImZvb3Rlcl8xIikpKTsKICAgICBFWFBFQ1RfRVEo
IkhlYWRlciAxLiBIZWFkZXIgMi4gXSBbIEVkaXRhYmxlIDEuIEVkaXRhYmxlIDIuIF0gWyBGb290
ZXIgMS4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwogCiAgICAgLy8gSWYgdGhlIHNlbGVj
dGlvbiBpcyBlZGl0YWJsZSB0ZXh0LCB3ZSBjYW4ndCBleHRlbmQgaXQgaW50byBub24tZWRpdGFi
bGUgdGV4dC4KICAgICBmcmFtZS0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoInNlbGVj
dEVsZW1lbnQoJ2VkaXRhYmxlXzEnKTsiKSk7CiAgICAgRVhQRUNUX0VRKCJFZGl0YWJsZSAxLiIs
IHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7Ci0gICAgRVhQRUNUX1RSVUUoZnJhbWUtPm1vdmVT
ZWxlY3Rpb25FbmQoYm90dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91bmRzKGZyYW1lLCAiZm9v
dGVyXzEiKSksIHRydWUpKTsKKyAgICBmcmFtZS0+c2VsZWN0UmFuZ2UodG9wTGVmdChlbGVtZW50
Qm91bmRzKGZyYW1lLCAiZWRpdGFibGVfMSIpKSwgYm90dG9tUmlnaHRNaW51c09uZShlbGVtZW50
Qm91bmRzKGZyYW1lLCAiZm9vdGVyXzEiKSkpOwogICAgIEVYUEVDVF9FUSgiRWRpdGFibGUgMS4g
RWRpdGFibGUgMi4gXSIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7CiAKICAgICB3ZWJWaWV3
LT5jbG9zZSgpOwogfQogCi1URVNUX0YoV2ViRnJhbWVUZXN0LCBNb3ZlQ2FyZXQpCi17Ci0gICAg
cmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgidGV4dF9zZWxlY3Rpb24uaHRtbCIpOwotICAgIFdl
YlZpZXcqIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3Rm9yVGV4dFNlbGVjdGlvbihtX2Jhc2VVUkwg
KyAidGV4dF9zZWxlY3Rpb24uaHRtbCIpOwotICAgIFdlYkZyYW1lKiBmcmFtZSA9IHdlYlZpZXct
Pm1haW5GcmFtZSgpOwotCi0gICAgLy8gbW92ZUNhcmV0KCkgcmV0dXJucyBmYWxzZSBpZiB0aGVy
ZSdzIG5vIHNlbGVjdGlvbiwgb3IgaWYgaXQgaXNuJ3QgZWRpdGFibGUuCi0gICAgRVhQRUNUX0ZB
TFNFKGZyYW1lLT5tb3ZlQ2FyZXQodG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiZWRpdGFi
bGUiKSkpKTsKLSAgICBmcmFtZS0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoInNlbGVj
dEVsZW1lbnQoJ2hlYWRlcl8xJyk7IikpOwotICAgIEVYUEVDVF9FUSgiSGVhZGVyIDEuIiwgc2Vs
ZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICBFWFBFQ1RfRkFMU0UoZnJhbWUtPm1vdmVDYXJl
dCh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJlZGl0YWJsZSIpKSkpOwotCi0gICAgLy8g
U2VsZWN0IHRoZSBlZGl0YWJsZSB0ZXh0IHNwYW4uIE5vdyBtb3ZlQ2FyZXQoKSB3b3Jrcy4KLSAg
ICBmcmFtZS0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoInNlbGVjdEVsZW1lbnQoJ2Vk
aXRhYmxlXzEnKTsiKSk7Ci0gICAgRVhQRUNUX0VRKCJFZGl0YWJsZSAxLiIsIHNlbGVjdGlvbkFz
U3RyaW5nKGZyYW1lKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShmcmFtZS0+bW92ZUNhcmV0KHRvcExl
ZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImVkaXRhYmxlXzEiKSkpKTsKLSAgICBFWFBFQ1RfRVEo
IiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZyYW1lLT5z
ZWxlY3Rpb25SYW5nZSgpLmlzTnVsbCgpKTsKLSAgICBFWFBFQ1RfVFJVRShmcmFtZS0+bW92ZVNl
bGVjdGlvbkVuZChib3R0b21SaWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJhbWUsICJlZGl0
YWJsZV8xIikpLCBmYWxzZSkpOwotICAgIEVYUEVDVF9FUSgiRWRpdGFibGUgMS4iLCBzZWxlY3Rp
b25Bc1N0cmluZyhmcmFtZSkpOwotCi0gICAgRVhQRUNUX1RSVUUoZnJhbWUtPm1vdmVDYXJldChi
b3R0b21SaWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJhbWUsICJlZGl0YWJsZV8yIikpKSk7
Ci0gICAgRVhQRUNUX0VRKCIiLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwotICAgIEVYUEVD
VF9GQUxTRShmcmFtZS0+c2VsZWN0aW9uUmFuZ2UoKS5pc051bGwoKSk7Ci0gICAgRVhQRUNUX1RS
VUUoZnJhbWUtPm1vdmVTZWxlY3Rpb25TdGFydCh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUs
ICJlZGl0YWJsZV8yIikpLCBmYWxzZSkpOwotICAgIEVYUEVDVF9FUSgiRWRpdGFibGUgMi4iLCBz
ZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwotCi0gICAgLy8gQ2FyZXQgaXMgcGlubmVkIGF0IHRo
ZSBzdGFydCBvZiB0aGUgZWRpdGFibGUgcmVnaW9uLgotICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5t
b3ZlQ2FyZXQodG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzEiKSkpKTsKLSAg
ICBFWFBFQ1RfRVEoIiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKGZyYW1lLT5zZWxlY3Rpb25SYW5nZSgpLmlzTnVsbCgpKTsKLSAgICBFWFBFQ1RfVFJVRShm
cmFtZS0+bW92ZVNlbGVjdGlvbkVuZChib3R0b21SaWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMo
ZnJhbWUsICJlZGl0YWJsZV8xIikpLCBmYWxzZSkpOwotICAgIEVYUEVDVF9FUSgiWyBFZGl0YWJs
ZSAxLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7Ci0KLSAgICAvLyBDYXJldCBpcyBwaW5u
ZWQgYXQgdGhlIGVuZCBvZiB0aGUgZWRpdGFibGUgcmVnaW9uLgotICAgIEVYUEVDVF9UUlVFKGZy
YW1lLT5tb3ZlQ2FyZXQoYm90dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91bmRzKGZyYW1lLCAi
Zm9vdGVyXzIiKSkpKTsKLSAgICBFWFBFQ1RfRVEoIiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1l
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZyYW1lLT5zZWxlY3Rpb25SYW5nZSgpLmlzTnVsbCgpKTsK
LSAgICBFWFBFQ1RfVFJVRShmcmFtZS0+bW92ZVNlbGVjdGlvblN0YXJ0KHRvcExlZnQoZWxlbWVu
dEJvdW5kcyhmcmFtZSwgImVkaXRhYmxlXzIiKSksIGZhbHNlKSk7Ci0gICAgRVhQRUNUX0VRKCJF
ZGl0YWJsZSAyLiBdIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLQotICAgIHdlYlZpZXct
PmNsb3NlKCk7Ci19Ci0KIGNsYXNzIERpc2FtYmlndWF0aW9uUG9wdXBUZXN0V2ViVmlld0NsaWVu
dCA6IHB1YmxpYyBXZWJWaWV3Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZGlk
VGFwTXVsdGlwbGVUYXJnZXRzKGNvbnN0IFdlYkdlc3R1cmVFdmVudCYsIGNvbnN0IFdlYlZlY3Rv
cjxXZWJSZWN0PiYgdGFyZ2V0UmVjdHMpIE9WRVJSSURFCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164579</attachid>
            <date>2012-09-18 09:37:53 -0700</date>
            <delta_ts>2012-09-18 10:23:14 -0700</delta_ts>
            <desc>husky@chromium.org</desc>
            <filename>bug-96508-20120918173719.patch</filename>
            <type>text/plain</type>
            <size>24813</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4ODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDg1MWU0Mzk3NjI5OTllYzM4NWE2ZDY3MjNlNGUwODdkZDkxNGIzNzYuLjYyNjc5ZjcwODRhMzA4
OTY2NGNhODQxYWViMmEyNGQyNjdhYzZhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTItMDktMTggIElhaW4gTWVycmljayAgPGh1c2t5QGdvb2dsZS5j
b20+CisKKyAgICAgICAgW0Nocm9taXVtXSBNZXJnZSBtb3ZlU2VsZWN0aW9uU3RhcnQsIG1vdmVT
ZWxlY3Rpb25FbmQsIGFuZCBtb3ZlQ2FyZXQgaW50byBzZWxlY3RSYW5nZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1MDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgVGhlc2UgbWV0aG9kcyBoYWQgInN0YXJ0
IiBhbmQgImVuZCIgcGFyYW1ldGVycywgYnV0IHRoaXMgaXMgaW5jb3JyZWN0LgorICAgICAgICBz
ZWxlY3RSYW5nZSgpIGFjdHVhbGx5IHRha2VzIGJhc2UgYW5kIGV4dGVudCAod2hlcmUgdGhlIHVz
ZXIgYWN0dWFsbHkKKyAgICAgICAgdG91Y2hlZCksIGFuZCBzZWxlY3Rpb25Cb3VuZHMoKSByZXR1
cm5zIGFuY2hvciBhbmQgZm9jdXMgKGJhc2UgYW5kIGV4dGVudAorICAgICAgICBleHBhbmRlZCB0
byBhY2NvdW50IGZvciB0aGUgc2VsZWN0aW9uIGdyYW51bGFyaXR5KS4KKworICAgICAgICBUaGlz
IHBhdGNoIGZpeGVzIHRoZSBwYXJhbWV0ZXIgbmFtZXMsIGFuZCB1cGRhdGVzIHNlbGVjdFJhbmdl
LCBpdHMgdGVzdAorICAgICAgICBhbmQgaXRzIGRvY3VtZW50YXRpb24gdG8gcmVmbGVjdCB0aGUg
Y29ycmVjdCB1c2FnZS4gSXQgYWxzbyByZW1vdmVzCisgICAgICAgIG1vdmVTZWxlY3Rpb25TdGFy
dC9tb3ZlU2VsZWN0aW9uRW5kL21vdmVDYXJldCAod2hpY2ggYXJlbid0IGJlaW5nIHVzZWQKKyAg
ICAgICAgeWV0KSwgYW5kIHVwZGF0ZXMgV2ViRnJhbWVUZXN0IHRvIHNob3cgaG93IHRoZXNlIGNh
biBiZSBpbXBsZW1lbnRlZCB2aWEKKyAgICAgICAgc2VsZWN0UmFuZ2UuCisKKyAgICAgICAgKiBw
dWJsaWMvV2ViRnJhbWUuaDoKKyAgICAgICAgKFdlYkZyYW1lKToKKyAgICAgICAgKiBwdWJsaWMv
V2ViV2lkZ2V0Lmg6CisgICAgICAgIChXZWJXaWRnZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJX
aWRnZXQ6OnNlbGVjdGlvbkJvdW5kcyk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6c2VsZWN0UmFuZ2UpOgorICAgICAgICAq
IHNyYy9XZWJGcmFtZUltcGwuaDoKKyAgICAgICAgKFdlYkZyYW1lSW1wbCk6CisgICAgICAgICog
c3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNlbGVj
dGlvbkJvdW5kcyk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJW
aWV3SW1wbCk6CisgICAgICAgICogdGVzdHMvV2ViRnJhbWVUZXN0LmNwcDoKKwogMjAxMi0wOS0x
NyAgQnJpYW4gQW5kZXJzb24gIDxicmlhbmRlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBBZGQgcmVuZGVyaW5nIGNvbW1pdCBzdGF0aXN0aWNzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAppbmRleCA1NmNiZTFlYTQ3ZGRhMmQ5MjkyY2U4NGI4
MmVmMmRkYWMzMWM0NjI0Li5mMzhjNzM5MzQ5OWUxYzdlZWEwZmI1MDBjNDUxYTNlMmM5YjdmZjcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKQEAgLTQ3MiwzMCAr
NDcyLDEyIEBAIHB1YmxpYzoKICAgICAvLyB0aGVyZSBpcyByYW5nZWQgc2VsZWN0aW9uLgogICAg
IHZpcnR1YWwgYm9vbCBzZWxlY3RXb3JkQXJvdW5kQ2FyZXQoKSA9IDA7CiAKLSAgICAvLyBERVBS
RUNBVEVEOiBVc2UgbW92ZVNlbGVjdGlvblN0YXJ0IC8gbW92ZVNlbGVjdGlvbkVuZCAvIG1vdmVD
YXJldAotICAgIC8vIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIGZvciB0b3VjaC1iYXNlZCBVSXMs
IGJ1dCBpdCdzIG1pc3Npbmcgc29tZQotICAgIC8vIGZ1bmN0aW9uYWxpdHkgbmVlZGVkIG9uIEFu
ZHJvaWQsIGxpa2UgcHJldmVudGluZyBjb2xsYXBzZWQgc2VsZWN0aW9ucy4KLSAgICB2aXJ0dWFs
IHZvaWQgc2VsZWN0UmFuZ2UoY29uc3QgV2ViUG9pbnQmIHN0YXJ0LCBjb25zdCBXZWJQb2ludCYg
ZW5kKSA9IDA7CisgICAgLy8gU2VsZWN0IGEgcmFuZ2Ugb2YgdGV4dCwgYXMgaWYgYnkgZHJhZy1z
ZWxlY3RpbmcgZnJvbSBiYXNlIHRvIGV4dGVudAorICAgIC8vIHdpdGggY2hhcmFjdGVyIGdyYW51
bGFyaXR5LgorICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RSYW5nZShjb25zdCBXZWJQb2ludCYgYmFz
ZSwgY29uc3QgV2ViUG9pbnQmIGV4dGVudCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNlbGVj
dFJhbmdlKGNvbnN0IFdlYlJhbmdlJikgPSAwOwogCi0gICAgLy8gVGhlIG1ldGhvZHMgYmVsb3cg
YXJlIGZvciBhZGp1c3RpbmcgdGhlIHN0YXJ0IGFuZC9vciBlbmQgb2YgdGhlIGN1cnJlbnQKLSAg
ICAvLyBzZWxlY3Rpb24gYnkgZGlyZWN0IG1hbmlwdWxhdGlvbiBvbiBhIHRvdWNoLWJhc2VkIFVJ
LiBUbyBlbnRlciBzZWxlY3Rpb24KLSAgICAvLyBtb2RlIGluIHRoZSBmaXJzdCBwbGFjZSwgY2Fs
bCBzZWxlY3RSYW5nZSgpIG9yIHNlbmQgYSBmYWtlIG1vdXNlIGV2ZW50LgotCi0gICAgLy8gTW92
ZXMgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbiwga2VlcGluZyB0aGUgZW5kIGZp
eGVkLgotICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBpZiB0aGVyZSBpcyBu
byBzZWxlY3Rpb24gdG8gbW9kaWZ5LgotICAgIHZpcnR1YWwgYm9vbCBtb3ZlU2VsZWN0aW9uU3Rh
cnQoY29uc3QgV2ViUG9pbnQmLCBib29sIGFsbG93Q29sbGFwc2VkU2VsZWN0aW9uKSA9IDA7Ci0K
LSAgICAvLyBNb3ZlcyB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbiwga2VlcGluZyB0
aGUgc3RhcnQgZml4ZWQuCi0gICAgLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIGlm
IHRoZXJlIGlzIG5vIHNlbGVjdGlvbiB0byBtb2RpZnkuCi0gICAgdmlydHVhbCBib29sIG1vdmVT
ZWxlY3Rpb25FbmQoY29uc3QgV2ViUG9pbnQmLCBib29sIGFsbG93Q29sbGFwc2VkU2VsZWN0aW9u
KSA9IDA7Ci0KLSAgICAvLyBNb3ZlIGJvdGggZW5kcG9pbnRzIG9mIHRoZSBjdXJyZW50IHNlbGVj
dGlvbiB0byB0aGUgZ2l2ZW4gcG9zaXRpb24uCi0gICAgLy8gVGhlIGNhcmV0IHdpbGwgcmVtYWlu
IHBpbm5lZCBpbnNpZGUgdGhlIGN1cnJlbnQgZWRpdGFibGUgcmVnaW9uLgotICAgIC8vIFJldHVy
bnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBpZiB0aGVyZSBpcyBubyBzZWxlY3Rpb24gb3IgaWYg
d2UncmUgbm90IGVkaXRpbmcuCi0gICAgdmlydHVhbCBib29sIG1vdmVDYXJldChjb25zdCBXZWJQ
b2ludCYpID0gMDsKLQogICAgIC8vIFByaW50aW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gUmVmb3JtYXRzIHRo
ZSBXZWJGcmFtZSBmb3IgcHJpbnRpbmcuIFdlYlByaW50UGFyYW1zIHNwZWNpZmllcyB0aGUgcHJp
bnRhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRn
ZXQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCmluZGV4IGFj
MTY1ODE0MDIxN2ViMTU0ZGIwZTNkMGNlOTNjODMzMTRkZGE5YzEuLmZhNDU2MjM4YTNiZDE3OGE5
ZTEyYTkyMzJlOGUxNzhhM2IxZjJiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYldpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYldpZGdldC5oCkBAIC0xOTQsOSArMTk0LDkgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyBtZXRob2QuIEl0J3MgcmVkdW5kYW50IHdpdGggdGV4dElucHV0SW5mbygpLgog
ICAgIHZpcnR1YWwgV2ViVGV4dElucHV0VHlwZSB0ZXh0SW5wdXRUeXBlKCkgeyByZXR1cm4gV2Vi
VGV4dElucHV0VHlwZU5vbmU7IH0KIAotICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGFuZCBlbmQg
Ym91bmRzIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbi4KKyAgICAvLyBSZXR1cm5zIHRoZSBhbmNo
b3IgYW5kIGZvY3VzIGJvdW5kcyBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24uCiAgICAgLy8gSWYg
dGhlIHNlbGVjdGlvbiByYW5nZSBpcyBlbXB0eSwgaXQgcmV0dXJucyB0aGUgY2FyZXQgYm91bmRz
LgotICAgIHZpcnR1YWwgYm9vbCBzZWxlY3Rpb25Cb3VuZHMoV2ViUmVjdCYgc3RhcnQsIFdlYlJl
Y3QmIGVuZCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0
aW9uQm91bmRzKFdlYlJlY3QmIGFuY2hvciwgV2ViUmVjdCYgZm9jdXMpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICAvLyBSZXR1cm5zIHRoZSB0ZXh0IGRpcmVjdGlvbiBhdCB0aGUgc3Rh
cnQgYW5kIGVuZCBib3VuZHMgb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgogICAgIC8vIElmIHRo
ZSBzZWxlY3Rpb24gcmFuZ2UgaXMgZW1wdHksIGl0IHJldHVybnMgZmFsc2UuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCA3YmIwZWZlZWEzYmY4Y2Zh
NzRjODQwNGY1ZWYzOGU4MTA4NzUyNGNjLi40Nzg1NGM4YzA5MDVlMDA3Y2U2ODNiOTRkYWIyNWIx
YTAwM2IyNzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5j
cHAKQEAgLTE0NjYsNzEgKzE0NjYsMTUgQEAgYm9vbCBXZWJGcmFtZUltcGw6OnNlbGVjdFdvcmRB
cm91bmRDYXJldCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV2ViRnJhbWVJbXBsOjpz
ZWxlY3RSYW5nZShjb25zdCBXZWJQb2ludCYgc3RhcnQsIGNvbnN0IFdlYlBvaW50JiBlbmQpCit2
b2lkIFdlYkZyYW1lSW1wbDo6c2VsZWN0UmFuZ2UoY29uc3QgV2ViUG9pbnQmIGJhc2UsIGNvbnN0
IFdlYlBvaW50JiBleHRlbnQpCiB7Ci0gICAgaWYgKHN0YXJ0ID09IGVuZCAmJiBtb3ZlQ2FyZXQo
c3RhcnQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobW92ZVNlbGVjdGlvblN0YXJ0KHN0
YXJ0LCB0cnVlKSAmJiBtb3ZlU2VsZWN0aW9uRW5kKGVuZCwgdHJ1ZSkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIC8vIEZhaWxlZCB0byBtb3ZlIGVuZHBvaW50cywgcHJvYmFibHkgYmVjYXVzZSB0
aGVyZSdzIG5vIGN1cnJlbnQgc2VsZWN0aW9uLgotICAgIC8vIEp1c3Qgc2V0IHRoZSBzZWxlY3Rp
b24gZXhwbGljaXRseSAoYnV0IHRoaXMgd29uJ3QgaGFuZGxlIGVkaXRhYmxlIGJvdW5kYXJpZXMg
Y29ycmVjdGx5KS4KLSAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbih2aXNpYmxlUG9z
aXRpb25Gb3JXaW5kb3dQb2ludChzdGFydCksIHZpc2libGVQb3NpdGlvbkZvcldpbmRvd1BvaW50
KGVuZCkpOyAgICAKKyAgICBWaXNpYmxlUG9zaXRpb24gYmFzZVBvcyA9IHZpc2libGVQb3NpdGlv
bkZvcldpbmRvd1BvaW50KGJhc2UpOworICAgIFZpc2libGVQb3NpdGlvbiBleHRlbnRQb3MgPSB2
aXNpYmxlUG9zaXRpb25Gb3JXaW5kb3dQb2ludChleHRlbnQpOworICAgIFZpc2libGVTZWxlY3Rp
b24gbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihiYXNlUG9zLCBleHRlbnRQb3MpOwog
ICAgIGlmIChmcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG5ld1Nl
bGVjdGlvbikpCiAgICAgICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24obmV3
U2VsZWN0aW9uLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiB9CiAKLWJvb2wgV2ViRnJhbWVJbXBs
Ojptb3ZlU2VsZWN0aW9uU3RhcnQoY29uc3QgV2ViUG9pbnQmIHBvaW50LCBib29sIGFsbG93Q29s
bGFwc2VkU2VsZWN0aW9uKQotewotICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlv
biA9IGZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKTsKLSAgICBpZiAoc2VsZWN0aW9u
LmlzTm9uZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24g
c3RhcnQgPSB2aXNpYmxlUG9zaXRpb25Gb3JXaW5kb3dQb2ludChwb2ludCk7Ci0gICAgaWYgKCFh
bGxvd0NvbGxhcHNlZFNlbGVjdGlvbikgewotICAgICAgICBWaXNpYmxlUG9zaXRpb24gbWF4U3Rh
cnQgPSBzZWxlY3Rpb24udmlzaWJsZUVuZCgpLnByZXZpb3VzKCk7Ci0gICAgICAgIGlmIChjb21w
YXJlUG9zaXRpb25zKHN0YXJ0LCBtYXhTdGFydCkgPiAwKQotICAgICAgICAgICAgc3RhcnQgPSBt
YXhTdGFydDsKLSAgICB9Ci0KLSAgICAvLyBzdGFydCBpcyBtb3ZpbmcsIHNvIGJhc2U9ZW5kLCBl
eHRlbnQ9c3RhcnQKLSAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbiA9IFZpc2libGVT
ZWxlY3Rpb24oc2VsZWN0aW9uLnZpc2libGVFbmQoKSwgc3RhcnQpOwotICAgIGZyYW1lKCktPnNl
bGVjdGlvbigpLT5zZXROb25EaXJlY3Rpb25hbFNlbGVjdGlvbklmTmVlZGVkKG5ld1NlbGVjdGlv
biwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFdl
YkZyYW1lSW1wbDo6bW92ZVNlbGVjdGlvbkVuZChjb25zdCBXZWJQb2ludCYgcG9pbnQsIGJvb2wg
YWxsb3dDb2xsYXBzZWRTZWxlY3Rpb24pCi17Ci0gICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
c2VsZWN0aW9uID0gZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpOwotICAgIGlmIChz
ZWxlY3Rpb24uaXNOb25lKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFZpc2libGVQ
b3NpdGlvbiBlbmQgPSB2aXNpYmxlUG9zaXRpb25Gb3JXaW5kb3dQb2ludChwb2ludCk7Ci0gICAg
aWYgKCFhbGxvd0NvbGxhcHNlZFNlbGVjdGlvbikgewotICAgICAgICBWaXNpYmxlUG9zaXRpb24g
bWluRW5kID0gc2VsZWN0aW9uLnZpc2libGVTdGFydCgpLm5leHQoKTsKLSAgICAgICAgaWYgKGNv
bXBhcmVQb3NpdGlvbnMoZW5kLCBtaW5FbmQpIDwgMCkKLSAgICAgICAgICAgIGVuZCA9IG1pbkVu
ZDsKLSAgICB9Ci0KLSAgICAvLyBlbmQgaXMgbW92aW5nLCBzbyBiYXNlPXN0YXJ0LCBleHRlbnQ9
ZW5kCi0gICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9u
KHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgZW5kKTsKLSAgICBmcmFtZSgpLT5zZWxlY3Rpb24o
KS0+c2V0Tm9uRGlyZWN0aW9uYWxTZWxlY3Rpb25JZk5lZWRlZChuZXdTZWxlY3Rpb24sIENoYXJh
Y3RlckdyYW51bGFyaXR5KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBXZWJGcmFtZUlt
cGw6Om1vdmVDYXJldChjb25zdCBXZWJQb2ludCYgcG9pbnQpCi17Ci0gICAgRnJhbWVTZWxlY3Rp
b24qIGZyYW1lU2VsZWN0aW9uID0gZnJhbWUoKS0+c2VsZWN0aW9uKCk7Ci0gICAgaWYgKGZyYW1l
U2VsZWN0aW9uLT5pc05vbmUoKSB8fCAhZnJhbWVTZWxlY3Rpb24tPmlzQ29udGVudEVkaXRhYmxl
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFZpc2libGVQb3NpdGlvbiBwb3MgPSB2
aXNpYmxlUG9zaXRpb25Gb3JXaW5kb3dQb2ludChwb2ludCk7Ci0gICAgZnJhbWVTZWxlY3Rpb24t
PnNldEV4dGVudChwb3MsIFVzZXJUcmlnZ2VyZWQpOwotICAgIGZyYW1lU2VsZWN0aW9uLT5zZXRC
YXNlKGZyYW1lU2VsZWN0aW9uLT5leHRlbnQoKSwgVXNlclRyaWdnZXJlZCk7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KIHZvaWQgV2ViRnJhbWVJbXBsOjpzZWxlY3RSYW5nZShjb25zdCBXZWJSYW5n
ZSYgd2ViUmFuZ2UpCiB7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHN0YXRpY19jYXN0PFBh
c3NSZWZQdHI8UmFuZ2U+ID4od2ViUmFuZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuaAppbmRleCA1ODUyNWQ3MDEzM2E4ZWUwZTIyN2Q4YjY3YzZlMWYwZjkzYTk2
MWQyLi5hMmZlNzk3ZTNjMDRkNTlhN2Y3ODgwOTQzMzgyMzg5N2Y1Y2UzODZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaApAQCAtMTg0LDExICsxODQsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgc2VsZWN0aW9uQXNUZXh0KCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBXZWJTdHJpbmcgc2VsZWN0aW9uQXNNYXJrdXAoKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgc2VsZWN0V29yZEFyb3VuZENhcmV0KCk7Ci0gICAgdmlydHVhbCB2b2lkIHNlbGVj
dFJhbmdlKGNvbnN0IFdlYlBvaW50JiBzdGFydCwgY29uc3QgV2ViUG9pbnQmIGVuZCk7CisgICAg
dmlydHVhbCB2b2lkIHNlbGVjdFJhbmdlKGNvbnN0IFdlYlBvaW50JiBiYXNlLCBjb25zdCBXZWJQ
b2ludCYgZXh0ZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0UmFuZ2UoY29uc3QgV2ViUmFu
Z2UmKTsKLSAgICB2aXJ0dWFsIGJvb2wgbW92ZVNlbGVjdGlvblN0YXJ0KGNvbnN0IFdlYlBvaW50
JiwgYm9vbCBhbGxvd0NvbGxhcHNlZFNlbGVjdGlvbik7Ci0gICAgdmlydHVhbCBib29sIG1vdmVT
ZWxlY3Rpb25FbmQoY29uc3QgV2ViUG9pbnQmLCBib29sIGFsbG93Q29sbGFwc2VkU2VsZWN0aW9u
KTsKLSAgICB2aXJ0dWFsIGJvb2wgbW92ZUNhcmV0KGNvbnN0IFdlYlBvaW50Jik7CiAgICAgdmly
dHVhbCBpbnQgcHJpbnRCZWdpbihjb25zdCBXZWJQcmludFBhcmFtcyYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBXZWJOb2RlJiBjb25zdHJhaW5Ub05vZGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sKiB1c2VCcm93c2VyT3ZlcmxheXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDk3NDE2ZTAyNDAzMjhmMzY3NWQ0
ZDFmYjFmMGEyNGNkNjdiZTcyNzYuLjM0NjAwNWVlNDEyNDI2YjVjNTdlZmNlMTRmZTk2MDgxNWY4
ODhiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAg
LTIyMjMsNyArMjIyMyw3IEBAIFdlYlRleHRJbnB1dFR5cGUgV2ViVmlld0ltcGw6OnRleHRJbnB1
dFR5cGUoKQogICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTm9uZTsKIH0KIAotYm9vbCBXZWJW
aWV3SW1wbDo6c2VsZWN0aW9uQm91bmRzKFdlYlJlY3QmIHN0YXJ0LCBXZWJSZWN0JiBlbmQpIGNv
bnN0Citib29sIFdlYlZpZXdJbXBsOjpzZWxlY3Rpb25Cb3VuZHMoV2ViUmVjdCYgYW5jaG9yLCBX
ZWJSZWN0JiBmb2N1cykgY29uc3QKIHsKICAgICBjb25zdCBGcmFtZSogZnJhbWUgPSBmb2N1c2Vk
V2ViQ29yZUZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTIyMzMsNyArMjIzMyw3IEBAIGJv
b2wgV2ViVmlld0ltcGw6OnNlbGVjdGlvbkJvdW5kcyhXZWJSZWN0JiBzdGFydCwgV2ViUmVjdCYg
ZW5kKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoc2VsZWN0aW9uLT5p
c0NhcmV0KCkpIHsKLSAgICAgICAgc3RhcnQgPSBlbmQgPSBmcmFtZS0+dmlldygpLT5jb250ZW50
c1RvV2luZG93KHNlbGVjdGlvbi0+YWJzb2x1dGVDYXJldEJvdW5kcygpKTsKKyAgICAgICAgYW5j
aG9yID0gZm9jdXMgPSBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHNlbGVjdGlvbi0+
YWJzb2x1dGVDYXJldEJvdW5kcygpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBA
IC0yMjQ2LDIwICsyMjQ2LDIwIEBAIGJvb2wgV2ViVmlld0ltcGw6OnNlbGVjdGlvbkJvdW5kcyhX
ZWJSZWN0JiBzdGFydCwgV2ViUmVjdCYgZW5kKSBjb25zdAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxlY3RlZFJhbmdlLT5zdGFydE9mZnNldCgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFJhbmdlLT5zdGFydENvbnRhaW5l
cigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFJhbmdl
LT5zdGFydE9mZnNldCgpKSk7Ci0gICAgc3RhcnQgPSBmcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVj
dEZvclJhbmdlKHJhbmdlLmdldCgpKTsKKyAgICBhbmNob3IgPSBmcmFtZS0+ZWRpdG9yKCktPmZp
cnN0UmVjdEZvclJhbmdlKHJhbmdlLmdldCgpKTsKIAogICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShzZWxlY3RlZFJhbmdlLT5lbmRDb250YWluZXIoKS0+ZG9jdW1lbnQoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZS0+ZW5kQ29udGFpbmVyKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2UtPmVuZE9mZnNldCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxlY3RlZFJhbmdlLT5lbmRDb250YWluZXIoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZS0+ZW5kT2Zmc2V0KCkpOwotICAgIGVuZCA9IGZy
YW1lLT5lZGl0b3IoKS0+Zmlyc3RSZWN0Rm9yUmFuZ2UocmFuZ2UuZ2V0KCkpOworICAgIGZvY3Vz
ID0gZnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZShyYW5nZS5nZXQoKSk7CiAKLSAg
ICBzdGFydCA9IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coc3RhcnQpOwotICAgIGVu
ZCA9IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3coZW5kKTsKKyAgICBhbmNob3IgPSBm
cmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KGFuY2hvcik7CisgICAgZm9jdXMgPSBmcmFt
ZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KGZvY3VzKTsKIAogICAgIGlmICghZnJhbWUtPnNl
bGVjdGlvbigpLT5zZWxlY3Rpb24oKS5pc0Jhc2VGaXJzdCgpKQotICAgICAgICBzdGQ6OnN3YXAo
c3RhcnQsIGVuZCk7CisgICAgICAgIHN0ZDo6c3dhcChhbmNob3IsIGZvY3VzKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5k
ZXggMTFhMDVkMGRlZDRkOTM5ZTFmM2NlN2VkNzVlZThjNjI5YTZkMmZkOS4uODY1ODk4NjA4NDRj
NWQyOGNkZGZkMDRhYWFkOTA4YzZhZTZjYWVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBleHRlbmRTZWxlY3Rpb25BbmREZWxldGUoaW50IGJlZm9yZSwgaW50IGFmdGVyKTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3Rpb25FZGl0YWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwg
V2ViQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHNlbGVj
dGlvbkJvdW5kcyhXZWJSZWN0JiBzdGFydCwgV2ViUmVjdCYgZW5kKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgc2VsZWN0aW9uQm91bmRzKFdlYlJlY3QmIGFuY2hvciwgV2ViUmVjdCYgZm9jdXMp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3Rpb25UZXh0RGlyZWN0aW9uKFdlYlRleHRE
aXJlY3Rpb24mIHN0YXJ0LCBXZWJUZXh0RGlyZWN0aW9uJiBlbmQpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBjYXJldE9yU2VsZWN0aW9uUmFuZ2Uoc2l6ZV90KiBsb2NhdGlvbiwgc2l6ZV90KiBs
ZW5ndGgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RGlyZWN0aW9uKFdlYlRleHREaXJlY3Rp
b24gZGlyZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
V2ViRnJhbWVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVU
ZXN0LmNwcAppbmRleCA0MzI4YTBlNGE5YjJmNmM1ZjM0ZGUxOWMwZjI1MzdhMDc0ZDdlZmM2Li5h
MDA0OWI2N2U4ZDQxYjYyYmE1Mjg1YjlhMTAwZDY5YzYwNmY0MDMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCkBAIC0xMDcyLDcgKzEwNzIsNyBA
QCBURVNUX0YoV2ViRnJhbWVUZXN0LCBTZWxlY3RSYW5nZSkKICAgICBmcmFtZSA9IHdlYlZpZXct
Pm1haW5GcmFtZSgpOwogICAgIEVYUEVDVF9FUSgiVGhpcyB0ZXh0IGlzIGluaXRpYWxseSBzZWxl
Y3RlZC4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwogICAgIHdlYlZpZXctPnNlbGVjdGlv
bkJvdW5kcyhzdGFydFdlYlJlY3QsIGVuZFdlYlJlY3QpOwotICAgIGZyYW1lLT5zZWxlY3RSYW5n
ZShXZWJQb2ludCgwLCAwKSwgYm90dG9tUmlnaHRNaW51c09uZShlbmRXZWJSZWN0KSk7CisgICAg
ZnJhbWUtPnNlbGVjdFJhbmdlKGJvdHRvbVJpZ2h0TWludXNPbmUoZW5kV2ViUmVjdCksIFdlYlBv
aW50KDAsIDApKTsKICAgICBFWFBFQ1RfRVEoIjE2LWNoYXIgaGVhZGVyLiBUaGlzIHRleHQgaXMg
aW5pdGlhbGx5IHNlbGVjdGVkLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7CiAgICAgd2Vi
Vmlldy0+Y2xvc2UoKTsKIApAQCAtMTA4NiwxNzYgKzEwODYsMTAwIEBAIFRFU1RfRihXZWJGcmFt
ZVRlc3QsIFNlbGVjdFJhbmdlKQogICAgIHdlYlZpZXctPmNsb3NlKCk7CiB9CiAKLVRFU1RfRihX
ZWJGcmFtZVRlc3QsIE1vdmVTZWxlY3Rpb25TdGFydCkKK1RFU1RfRihXZWJGcmFtZVRlc3QsIFNl
bGVjdFJhbmdlQ2FuTW92ZVNlbGVjdGlvblN0YXJ0KQogewogICAgIHJlZ2lzdGVyTW9ja2VkSHR0
cFVSTExvYWQoInRleHRfc2VsZWN0aW9uLmh0bWwiKTsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0g
Y3JlYXRlV2ViVmlld0ZvclRleHRTZWxlY3Rpb24obV9iYXNlVVJMICsgInRleHRfc2VsZWN0aW9u
Lmh0bWwiKTsKICAgICBXZWJGcmFtZSogZnJhbWUgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKTsKIAot
ICAgIC8vIG1vdmVTZWxlY3Rpb25TdGFydCgpIGFsd2F5cyByZXR1cm5zIGZhbHNlIGlmIHRoZXJl
J3Mgbm8gc2VsZWN0aW9uLgotICAgIEVYUEVDVF9GQUxTRShmcmFtZS0+bW92ZVNlbGVjdGlvblN0
YXJ0KHRvcExlZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8xIikpLCBmYWxzZSkpOwot
ICAgIEVYUEVDVF9GQUxTRShmcmFtZS0+bW92ZVNlbGVjdGlvblN0YXJ0KHRvcExlZnQoZWxlbWVu
dEJvdW5kcyhmcmFtZSwgImhlYWRlcl8xIikpLCB0cnVlKSk7Ci0KLSAgICBmcmFtZS0+ZXhlY3V0
ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoInNlbGVjdEVsZW1lbnQoJ2hlYWRlcl8xJyk7IikpOwot
ICAgIEVYUEVDVF9FUSgiSGVhZGVyIDEuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAg
ICBFWFBFQ1RfVFJVRShmcmFtZS0+bW92ZVNlbGVjdGlvbkVuZChib3R0b21SaWdodE1pbnVzT25l
KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMiIpKSwgZmFsc2UpKTsKLSAgICBFWFBFQ1Rf
RVEoIkhlYWRlciAxLiBIZWFkZXIgMi4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwotCiAg
ICAgLy8gU2VsZWN0IHNlY29uZCBzcGFuLiBXZSBjYW4gbW92ZSB0aGUgc3RhcnQgdG8gaW5jbHVk
ZSB0aGUgZmlyc3Qgc3Bhbi4KICAgICBmcmFtZS0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3Vy
Y2UoInNlbGVjdEVsZW1lbnQoJ2hlYWRlcl8yJyk7IikpOwogICAgIEVYUEVDVF9FUSgiSGVhZGVy
IDIuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICBFWFBFQ1RfVFJVRShmcmFtZS0+
bW92ZVNlbGVjdGlvblN0YXJ0KHRvcExlZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8x
IikpLCBmYWxzZSkpOworICAgIGZyYW1lLT5zZWxlY3RSYW5nZShib3R0b21SaWdodE1pbnVzT25l
KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMiIpKSwgdG9wTGVmdChlbGVtZW50Qm91bmRz
KGZyYW1lLCAiaGVhZGVyXzEiKSkpOwogICAgIEVYUEVDVF9FUSgiSGVhZGVyIDEuIEhlYWRlciAy
LiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7CiAKLSAgICAvLyBJZiBhbGxvd0NvbGxhcHNl
ZFNlbGVjdGlvbj1mYWxzZSB3ZSBjYW4ndCBtb3ZlIHRoZSBzZWxlY3Rpb24gc3RhcnQgYmV5b25k
IHRoZSBjdXJyZW50IGVuZC4KLSAgICAvLyBXZSBlbmQgdXAgd2l0aCBhIHNpbmdsZSBjaGFyYWN0
ZXIgc2VsZWN0ZWQuCisgICAgLy8gV2UgY2FuIG1vdmUgdGhlIHN0YXJ0IGFuZCBlbmQgdG9nZXRo
ZXIuCiAgICAgZnJhbWUtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJzZWxlY3RFbGVt
ZW50KCdoZWFkZXJfMScpOyIpKTsKICAgICBFWFBFQ1RfRVEoIkhlYWRlciAxLiIsIHNlbGVjdGlv
bkFzU3RyaW5nKGZyYW1lKSk7Ci0gICAgRVhQRUNUX1RSVUUoZnJhbWUtPm1vdmVTZWxlY3Rpb25T
dGFydChib3R0b21SaWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMSIp
KSwgZmFsc2UpKTsKLSAgICBFWFBFQ1RfRVEoIi4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkp
OwotCi0gICAgLy8gSWYgYWxsb3dDb2xsYXBzZWRTZWxlY3Rpb249dHJ1ZSB3ZSBjYW4gbW92ZSB0
aGUgc3RhcnQgYW5kIGVuZCB0b2dldGhlci4KLSAgICBmcmFtZS0+ZXhlY3V0ZVNjcmlwdChXZWJT
Y3JpcHRTb3VyY2UoInNlbGVjdEVsZW1lbnQoJ2hlYWRlcl8xJyk7IikpOwotICAgIEVYUEVDVF9F
USgiSGVhZGVyIDEuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICBFWFBFQ1RfVFJV
RShmcmFtZS0+bW92ZVNlbGVjdGlvblN0YXJ0KGJvdHRvbVJpZ2h0TWludXNPbmUoZWxlbWVudEJv
dW5kcyhmcmFtZSwgImhlYWRlcl8xIikpLCB0cnVlKSk7CisgICAgZnJhbWUtPnNlbGVjdFJhbmdl
KGJvdHRvbVJpZ2h0TWludXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8xIikpLCBi
b3R0b21SaWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMSIpKSk7CiAg
ICAgRVhQRUNUX0VRKCIiLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwogICAgIC8vIFNlbGVj
dGlvbiBpcyBhIGNhcmV0LCBub3QgZW1wdHkuCiAgICAgRVhQRUNUX0ZBTFNFKGZyYW1lLT5zZWxl
Y3Rpb25SYW5nZSgpLmlzTnVsbCgpKTsKLSAgICBFWFBFQ1RfVFJVRShmcmFtZS0+bW92ZVNlbGVj
dGlvblN0YXJ0KHRvcExlZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8xIikpLCB0cnVl
KSk7Ci0gICAgRVhQRUNUX0VRKCJIZWFkZXIgMS4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkp
OwogCi0gICAgLy8gSWYgYWxsb3dDb2xsYXBzZWRTZWxlY3Rpb249dHJ1ZSB3ZSBjYW4gbW92ZSB0
aGUgc3RhcnQgYWNyb3NzIHRoZSBlbmQuCisgICAgLy8gV2UgY2FuIG1vdmUgdGhlIHN0YXJ0IGFj
cm9zcyB0aGUgZW5kLgogICAgIGZyYW1lLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgi
c2VsZWN0RWxlbWVudCgnaGVhZGVyXzEnKTsiKSk7CiAgICAgRVhQRUNUX0VRKCJIZWFkZXIgMS4i
LCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwotICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5tb3Zl
U2VsZWN0aW9uU3RhcnQoYm90dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91bmRzKGZyYW1lLCAi
aGVhZGVyXzIiKSksIHRydWUpKTsKKyAgICBmcmFtZS0+c2VsZWN0UmFuZ2UoYm90dG9tUmlnaHRN
aW51c09uZShlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzEiKSksIGJvdHRvbVJpZ2h0TWlu
dXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8yIikpKTsKICAgICBFWFBFQ1RfRVEo
IiBIZWFkZXIgMi4iLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwogCiAgICAgLy8gQ2FuJ3Qg
ZXh0ZW5kIHRoZSBzZWxlY3Rpb24gcGFydC13YXkgaW50byBhbiBlZGl0YWJsZSBlbGVtZW50Lgog
ICAgIGZyYW1lLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgic2VsZWN0RWxlbWVudCgn
Zm9vdGVyXzInKTsiKSk7CiAgICAgRVhQRUNUX0VRKCJGb290ZXIgMi4iLCBzZWxlY3Rpb25Bc1N0
cmluZyhmcmFtZSkpOwotICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5tb3ZlU2VsZWN0aW9uU3RhcnQo
dG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiZWRpdGFibGVfMiIpKSwgdHJ1ZSkpOworICAg
IGZyYW1lLT5zZWxlY3RSYW5nZShib3R0b21SaWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJh
bWUsICJmb290ZXJfMiIpKSwgdG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiZWRpdGFibGVf
MiIpKSk7CiAgICAgRVhQRUNUX0VRKCIgWyBGb290ZXIgMS4gRm9vdGVyIDIuIiwgc2VsZWN0aW9u
QXNTdHJpbmcoZnJhbWUpKTsKIAogICAgIC8vIENhbiBleHRlbmQgdGhlIHNlbGVjdGlvbiBjb21w
bGV0ZWx5IGFjcm9zcyBlZGl0YWJsZSBlbGVtZW50cy4KICAgICBmcmFtZS0+ZXhlY3V0ZVNjcmlw
dChXZWJTY3JpcHRTb3VyY2UoInNlbGVjdEVsZW1lbnQoJ2Zvb3Rlcl8yJyk7IikpOwogICAgIEVY
UEVDVF9FUSgiRm9vdGVyIDIuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICBFWFBF
Q1RfVFJVRShmcmFtZS0+bW92ZVNlbGVjdGlvblN0YXJ0KHRvcExlZnQoZWxlbWVudEJvdW5kcyhm
cmFtZSwgImhlYWRlcl8yIikpLCB0cnVlKSk7CisgICAgZnJhbWUtPnNlbGVjdFJhbmdlKGJvdHRv
bVJpZ2h0TWludXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImZvb3Rlcl8yIikpLCB0b3BMZWZ0
KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMiIpKSk7CiAgICAgRVhQRUNUX0VRKCJIZWFk
ZXIgMi4gXSBbIEVkaXRhYmxlIDEuIEVkaXRhYmxlIDIuIF0gWyBGb290ZXIgMS4gRm9vdGVyIDIu
Iiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKIAogICAgIC8vIElmIHRoZSBzZWxlY3Rpb24g
aXMgZWRpdGFibGUgdGV4dCwgd2UgY2FuJ3QgZXh0ZW5kIGl0IGludG8gbm9uLWVkaXRhYmxlIHRl
eHQuCiAgICAgZnJhbWUtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJzZWxlY3RFbGVt
ZW50KCdlZGl0YWJsZV8yJyk7IikpOwogICAgIEVYUEVDVF9FUSgiRWRpdGFibGUgMi4iLCBzZWxl
Y3Rpb25Bc1N0cmluZyhmcmFtZSkpOwotICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5tb3ZlU2VsZWN0
aW9uU3RhcnQodG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzIiKSksIHRydWUp
KTsKKyAgICBmcmFtZS0+c2VsZWN0UmFuZ2UoYm90dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91
bmRzKGZyYW1lLCAiZWRpdGFibGVfMiIpKSwgdG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAi
aGVhZGVyXzIiKSkpOwogICAgIEVYUEVDVF9FUSgiWyBFZGl0YWJsZSAxLiBFZGl0YWJsZSAyLiIs
IHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7CiAKICAgICB3ZWJWaWV3LT5jbG9zZSgpOwogfQog
Ci1URVNUX0YoV2ViRnJhbWVUZXN0LCBNb3ZlU2VsZWN0aW9uRW5kKQorVEVTVF9GKFdlYkZyYW1l
VGVzdCwgU2VsZWN0UmFuZ2VDYW5Nb3ZlU2VsZWN0aW9uRW5kKQogewogICAgIHJlZ2lzdGVyTW9j
a2VkSHR0cFVSTExvYWQoInRleHRfc2VsZWN0aW9uLmh0bWwiKTsKICAgICBXZWJWaWV3KiB3ZWJW
aWV3ID0gY3JlYXRlV2ViVmlld0ZvclRleHRTZWxlY3Rpb24obV9iYXNlVVJMICsgInRleHRfc2Vs
ZWN0aW9uLmh0bWwiKTsKICAgICBXZWJGcmFtZSogZnJhbWUgPSB3ZWJWaWV3LT5tYWluRnJhbWUo
KTsKIAotICAgIC8vIG1vdmVTZWxlY3Rpb25FbmQoKSBhbHdheXMgcmV0dXJucyBmYWxzZSBpZiB0
aGVyZSdzIG5vIHNlbGVjdGlvbi4KLSAgICBFWFBFQ1RfRkFMU0UoZnJhbWUtPm1vdmVTZWxlY3Rp
b25FbmQodG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVhZGVyXzEiKSksIGZhbHNlKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKGZyYW1lLT5tb3ZlU2VsZWN0aW9uRW5kKHRvcExlZnQoZWxlbWVu
dEJvdW5kcyhmcmFtZSwgImhlYWRlcl8xIikpLCB0cnVlKSk7Ci0KICAgICAvLyBTZWxlY3QgZmly
c3Qgc3Bhbi4gV2UgY2FuIG1vdmUgdGhlIGVuZCB0byBpbmNsdWRlIHRoZSBzZWNvbmQgc3Bhbi4K
ICAgICBmcmFtZS0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoInNlbGVjdEVsZW1lbnQo
J2hlYWRlcl8xJyk7IikpOwogICAgIEVYUEVDVF9FUSgiSGVhZGVyIDEuIiwgc2VsZWN0aW9uQXNT
dHJpbmcoZnJhbWUpKTsKLSAgICBFWFBFQ1RfVFJVRShmcmFtZS0+bW92ZVNlbGVjdGlvbkVuZChi
b3R0b21SaWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMiIpKSwgZmFs
c2UpKTsKKyAgICBmcmFtZS0+c2VsZWN0UmFuZ2UodG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1l
LCAiaGVhZGVyXzEiKSksIGJvdHRvbVJpZ2h0TWludXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwg
ImhlYWRlcl8yIikpKTsKICAgICBFWFBFQ1RfRVEoIkhlYWRlciAxLiBIZWFkZXIgMi4iLCBzZWxl
Y3Rpb25Bc1N0cmluZyhmcmFtZSkpOwogCi0gICAgLy8gSWYgYWxsb3dDb2xsYXBzZWRTZWxlY3Rp
b249ZmFsc2Ugd2UgY2FuJ3QgbW92ZSB0aGUgc2VsZWN0aW9uIGVuZCBiZXlvbmQgdGhlIGN1cnJl
bnQgc3RhcnQuCi0gICAgLy8gV2UgZW5kIHVwIHdpdGggYSBzaW5nbGUgY2hhcmFjdGVyIHNlbGVj
dGVkLgorICAgIC8vIFdlIGNhbiBtb3ZlIHRoZSBzdGFydCBhbmQgZW5kIHRvZ2V0aGVyLgogICAg
IGZyYW1lLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgic2VsZWN0RWxlbWVudCgnaGVh
ZGVyXzInKTsiKSk7CiAgICAgRVhQRUNUX0VRKCJIZWFkZXIgMi4iLCBzZWxlY3Rpb25Bc1N0cmlu
ZyhmcmFtZSkpOwotICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5tb3ZlU2VsZWN0aW9uRW5kKHRvcExl
ZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8yIikpLCBmYWxzZSkpOwotICAgIEVYUEVD
VF9FUSgiSCIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7Ci0KLSAgICAvLyBJZiBhbGxvd0Nv
bGxhcHNlZFNlbGVjdGlvbj10cnVlIHdlIGNhbiBtb3ZlIHRoZSBzdGFydCBhbmQgZW5kIHRvZ2V0
aGVyLgotICAgIGZyYW1lLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgic2VsZWN0RWxl
bWVudCgnaGVhZGVyXzInKTsiKSk7Ci0gICAgRVhQRUNUX0VRKCJIZWFkZXIgMi4iLCBzZWxlY3Rp
b25Bc1N0cmluZyhmcmFtZSkpOwotICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5tb3ZlU2VsZWN0aW9u
RW5kKHRvcExlZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRlcl8yIikpLCB0cnVlKSk7Cisg
ICAgZnJhbWUtPnNlbGVjdFJhbmdlKHRvcExlZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImhlYWRl
cl8yIikpLCB0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMiIpKSk7CiAgICAg
RVhQRUNUX0VRKCIiLCBzZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwogICAgIC8vIFNlbGVjdGlv
biBpcyBhIGNhcmV0LCBub3QgZW1wdHkuCiAgICAgRVhQRUNUX0ZBTFNFKGZyYW1lLT5zZWxlY3Rp
b25SYW5nZSgpLmlzTnVsbCgpKTsKLSAgICBFWFBFQ1RfVFJVRShmcmFtZS0+bW92ZVNlbGVjdGlv
bkVuZChib3R0b21SaWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMiIp
KSwgdHJ1ZSkpOwotICAgIEVYUEVDVF9FUSgiSGVhZGVyIDIuIiwgc2VsZWN0aW9uQXNTdHJpbmco
ZnJhbWUpKTsKIAotICAgIC8vIElmIGFsbG93Q29sbGFwc2VkU2VsZWN0aW9uPXRydWUgd2UgY2Fu
IG1vdmUgdGhlIGVuZCBhY3Jvc3MgdGhlIHN0YXJ0LgorICAgIC8vIFdlIGNhbiBtb3ZlIHRoZSBl
bmQgYWNyb3NzIHRoZSBzdGFydC4KICAgICBmcmFtZS0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRT
b3VyY2UoInNlbGVjdEVsZW1lbnQoJ2hlYWRlcl8yJyk7IikpOwogICAgIEVYUEVDVF9FUSgiSGVh
ZGVyIDIuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICBFWFBFQ1RfVFJVRShmcmFt
ZS0+bW92ZVNlbGVjdGlvbkVuZCh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJf
MSIpKSwgdHJ1ZSkpOworICAgIGZyYW1lLT5zZWxlY3RSYW5nZSh0b3BMZWZ0KGVsZW1lbnRCb3Vu
ZHMoZnJhbWUsICJoZWFkZXJfMiIpKSwgdG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAiaGVh
ZGVyXzEiKSkpOwogICAgIEVYUEVDVF9FUSgiSGVhZGVyIDEuICIsIHNlbGVjdGlvbkFzU3RyaW5n
KGZyYW1lKSk7CiAKICAgICAvLyBDYW4ndCBleHRlbmQgdGhlIHNlbGVjdGlvbiBwYXJ0LXdheSBp
bnRvIGFuIGVkaXRhYmxlIGVsZW1lbnQuCiAgICAgZnJhbWUtPmV4ZWN1dGVTY3JpcHQoV2ViU2Ny
aXB0U291cmNlKCJzZWxlY3RFbGVtZW50KCdoZWFkZXJfMScpOyIpKTsKICAgICBFWFBFQ1RfRVEo
IkhlYWRlciAxLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7Ci0gICAgRVhQRUNUX1RSVUUo
ZnJhbWUtPm1vdmVTZWxlY3Rpb25FbmQoYm90dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91bmRz
KGZyYW1lLCAiZWRpdGFibGVfMSIpKSwgdHJ1ZSkpOworICAgIGZyYW1lLT5zZWxlY3RSYW5nZSh0
b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMSIpKSwgYm90dG9tUmlnaHRNaW51
c09uZShlbGVtZW50Qm91bmRzKGZyYW1lLCAiZWRpdGFibGVfMSIpKSk7CiAgICAgRVhQRUNUX0VR
KCJIZWFkZXIgMS4gSGVhZGVyIDIuIF0gIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKIAog
ICAgIC8vIENhbiBleHRlbmQgdGhlIHNlbGVjdGlvbiBjb21wbGV0ZWx5IGFjcm9zcyBlZGl0YWJs
ZSBlbGVtZW50cy4KICAgICBmcmFtZS0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoInNl
bGVjdEVsZW1lbnQoJ2hlYWRlcl8xJyk7IikpOwogICAgIEVYUEVDVF9FUSgiSGVhZGVyIDEuIiwg
c2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICBFWFBFQ1RfVFJVRShmcmFtZS0+bW92ZVNl
bGVjdGlvbkVuZChib3R0b21SaWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJhbWUsICJmb290
ZXJfMSIpKSwgdHJ1ZSkpOworICAgIGZyYW1lLT5zZWxlY3RSYW5nZSh0b3BMZWZ0KGVsZW1lbnRC
b3VuZHMoZnJhbWUsICJoZWFkZXJfMSIpKSwgYm90dG9tUmlnaHRNaW51c09uZShlbGVtZW50Qm91
bmRzKGZyYW1lLCAiZm9vdGVyXzEiKSkpOwogICAgIEVYUEVDVF9FUSgiSGVhZGVyIDEuIEhlYWRl
ciAyLiBdIFsgRWRpdGFibGUgMS4gRWRpdGFibGUgMi4gXSBbIEZvb3RlciAxLiIsIHNlbGVjdGlv
bkFzU3RyaW5nKGZyYW1lKSk7CiAKICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIGlzIGVkaXRhYmxl
IHRleHQsIHdlIGNhbid0IGV4dGVuZCBpdCBpbnRvIG5vbi1lZGl0YWJsZSB0ZXh0LgogICAgIGZy
YW1lLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgic2VsZWN0RWxlbWVudCgnZWRpdGFi
bGVfMScpOyIpKTsKICAgICBFWFBFQ1RfRVEoIkVkaXRhYmxlIDEuIiwgc2VsZWN0aW9uQXNTdHJp
bmcoZnJhbWUpKTsKLSAgICBFWFBFQ1RfVFJVRShmcmFtZS0+bW92ZVNlbGVjdGlvbkVuZChib3R0
b21SaWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJhbWUsICJmb290ZXJfMSIpKSwgdHJ1ZSkp
OworICAgIGZyYW1lLT5zZWxlY3RSYW5nZSh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJl
ZGl0YWJsZV8xIikpLCBib3R0b21SaWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJhbWUsICJm
b290ZXJfMSIpKSk7CiAgICAgRVhQRUNUX0VRKCJFZGl0YWJsZSAxLiBFZGl0YWJsZSAyLiBdIiwg
c2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKIAogICAgIHdlYlZpZXctPmNsb3NlKCk7CiB9CiAK
LVRFU1RfRihXZWJGcmFtZVRlc3QsIE1vdmVDYXJldCkKLXsKLSAgICByZWdpc3Rlck1vY2tlZEh0
dHBVUkxMb2FkKCJ0ZXh0X3NlbGVjdGlvbi5odG1sIik7Ci0gICAgV2ViVmlldyogd2ViVmlldyA9
IGNyZWF0ZVdlYlZpZXdGb3JUZXh0U2VsZWN0aW9uKG1fYmFzZVVSTCArICJ0ZXh0X3NlbGVjdGlv
bi5odG1sIik7Ci0gICAgV2ViRnJhbWUqIGZyYW1lID0gd2ViVmlldy0+bWFpbkZyYW1lKCk7Ci0K
LSAgICAvLyBtb3ZlQ2FyZXQoKSByZXR1cm5zIGZhbHNlIGlmIHRoZXJlJ3Mgbm8gc2VsZWN0aW9u
LCBvciBpZiBpdCBpc24ndCBlZGl0YWJsZS4KLSAgICBFWFBFQ1RfRkFMU0UoZnJhbWUtPm1vdmVD
YXJldCh0b3BMZWZ0KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJlZGl0YWJsZSIpKSkpOwotICAgIGZy
YW1lLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgic2VsZWN0RWxlbWVudCgnaGVhZGVy
XzEnKTsiKSk7Ci0gICAgRVhQRUNUX0VRKCJIZWFkZXIgMS4iLCBzZWxlY3Rpb25Bc1N0cmluZyhm
cmFtZSkpOwotICAgIEVYUEVDVF9GQUxTRShmcmFtZS0+bW92ZUNhcmV0KHRvcExlZnQoZWxlbWVu
dEJvdW5kcyhmcmFtZSwgImVkaXRhYmxlIikpKSk7Ci0KLSAgICAvLyBTZWxlY3QgdGhlIGVkaXRh
YmxlIHRleHQgc3Bhbi4gTm93IG1vdmVDYXJldCgpIHdvcmtzLgotICAgIGZyYW1lLT5leGVjdXRl
U2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgic2VsZWN0RWxlbWVudCgnZWRpdGFibGVfMScpOyIpKTsK
LSAgICBFWFBFQ1RfRVEoIkVkaXRhYmxlIDEuIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsK
LQotICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5tb3ZlQ2FyZXQodG9wTGVmdChlbGVtZW50Qm91bmRz
KGZyYW1lLCAiZWRpdGFibGVfMSIpKSkpOwotICAgIEVYUEVDVF9FUSgiIiwgc2VsZWN0aW9uQXNT
dHJpbmcoZnJhbWUpKTsKLSAgICBFWFBFQ1RfRkFMU0UoZnJhbWUtPnNlbGVjdGlvblJhbmdlKCku
aXNOdWxsKCkpOwotICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5tb3ZlU2VsZWN0aW9uRW5kKGJvdHRv
bVJpZ2h0TWludXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImVkaXRhYmxlXzEiKSksIGZhbHNl
KSk7Ci0gICAgRVhQRUNUX0VRKCJFZGl0YWJsZSAxLiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1l
KSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShmcmFtZS0+bW92ZUNhcmV0KGJvdHRvbVJpZ2h0TWludXNP
bmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImVkaXRhYmxlXzIiKSkpKTsKLSAgICBFWFBFQ1RfRVEo
IiIsIHNlbGVjdGlvbkFzU3RyaW5nKGZyYW1lKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZyYW1lLT5z
ZWxlY3Rpb25SYW5nZSgpLmlzTnVsbCgpKTsKLSAgICBFWFBFQ1RfVFJVRShmcmFtZS0+bW92ZVNl
bGVjdGlvblN0YXJ0KHRvcExlZnQoZWxlbWVudEJvdW5kcyhmcmFtZSwgImVkaXRhYmxlXzIiKSks
IGZhbHNlKSk7Ci0gICAgRVhQRUNUX0VRKCJFZGl0YWJsZSAyLiIsIHNlbGVjdGlvbkFzU3RyaW5n
KGZyYW1lKSk7Ci0KLSAgICAvLyBDYXJldCBpcyBwaW5uZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBl
ZGl0YWJsZSByZWdpb24uCi0gICAgRVhQRUNUX1RSVUUoZnJhbWUtPm1vdmVDYXJldCh0b3BMZWZ0
KGVsZW1lbnRCb3VuZHMoZnJhbWUsICJoZWFkZXJfMSIpKSkpOwotICAgIEVYUEVDVF9FUSgiIiwg
c2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICBFWFBFQ1RfRkFMU0UoZnJhbWUtPnNlbGVj
dGlvblJhbmdlKCkuaXNOdWxsKCkpOwotICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5tb3ZlU2VsZWN0
aW9uRW5kKGJvdHRvbVJpZ2h0TWludXNPbmUoZWxlbWVudEJvdW5kcyhmcmFtZSwgImVkaXRhYmxl
XzEiKSksIGZhbHNlKSk7Ci0gICAgRVhQRUNUX0VRKCJbIEVkaXRhYmxlIDEuIiwgc2VsZWN0aW9u
QXNTdHJpbmcoZnJhbWUpKTsKLQotICAgIC8vIENhcmV0IGlzIHBpbm5lZCBhdCB0aGUgZW5kIG9m
IHRoZSBlZGl0YWJsZSByZWdpb24uCi0gICAgRVhQRUNUX1RSVUUoZnJhbWUtPm1vdmVDYXJldChi
b3R0b21SaWdodE1pbnVzT25lKGVsZW1lbnRCb3VuZHMoZnJhbWUsICJmb290ZXJfMiIpKSkpOwot
ICAgIEVYUEVDVF9FUSgiIiwgc2VsZWN0aW9uQXNTdHJpbmcoZnJhbWUpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoZnJhbWUtPnNlbGVjdGlvblJhbmdlKCkuaXNOdWxsKCkpOwotICAgIEVYUEVDVF9UUlVF
KGZyYW1lLT5tb3ZlU2VsZWN0aW9uU3RhcnQodG9wTGVmdChlbGVtZW50Qm91bmRzKGZyYW1lLCAi
ZWRpdGFibGVfMiIpKSwgZmFsc2UpKTsKLSAgICBFWFBFQ1RfRVEoIkVkaXRhYmxlIDIuIF0iLCBz
ZWxlY3Rpb25Bc1N0cmluZyhmcmFtZSkpOwotCi0gICAgd2ViVmlldy0+Y2xvc2UoKTsKLX0KLQog
Y2xhc3MgRGlzYW1iaWd1YXRpb25Qb3B1cFRlc3RXZWJWaWV3Q2xpZW50IDogcHVibGljIFdlYlZp
ZXdDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBkaWRUYXBNdWx0aXBsZVRhcmdl
dHMoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiwgY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JiB0YXJn
ZXRSZWN0cykgT1ZFUlJJREUK
</data>

          </attachment>
      

    </bug>

</bugzilla>