<?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>194073</bug_id>
          
          <creation_ts>2019-01-30 20:39:59 -0800</creation_ts>
          <short_desc>Hit testing functions optimizations</short_desc>
          <delta_ts>2019-02-05 00:52:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>joepeck</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1500391</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2019-01-30 20:39:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/47692312&gt; Hit testing functions optimizations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500394</commentid>
    <comment_count>1</comment_count>
      <attachid>360684</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2019-01-30 20:42:00 -0800</bug_when>
    <thetext>Created attachment 360684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500395</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2019-01-30 20:42:02 -0800</bug_when>
    <thetext>&lt;rdar://problem/47692312&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500767</commentid>
    <comment_count>3</comment_count>
      <attachid>360684</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-01-31 13:58:11 -0800</bug_when>
    <thetext>Comment on attachment 360684
Patch

Do any of these really make measurable perf improvements?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500862</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2019-01-31 15:58:44 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; Comment on attachment 360684 [details]
&gt; Patch
&gt; 
&gt; Do any of these really make measurable perf improvements?

Oh yeah.

Maybe not on your machine but on older CPUs that hurts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500865</commentid>
    <comment_count>5</comment_count>
      <attachid>360684</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-01-31 16:04:19 -0800</bug_when>
    <thetext>Comment on attachment 360684
Patch

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

&gt; Source/WTF/ChangeLog:4
&gt; +        &lt;rdar://problem/47692312&gt; Hit testing functions optimizations
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=194073

This is usually:

Title
Bugzilla link
Radar link</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500867</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-01-31 16:07:00 -0800</bug_when>
    <thetext>&quot;webkit-patch upload&quot; will format the changelog for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500869</commentid>
    <comment_count>7</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-01-31 16:08:29 -0800</bug_when>
    <thetext>or prepare-ChangeLog -b 194073 if you prefer uploading patches manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500895</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2019-01-31 16:47:02 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #5)
&gt; Comment on attachment 360684 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=360684&amp;action=review
&gt; 
&gt; &gt; Source/WTF/ChangeLog:4
&gt; &gt; +        &lt;rdar://problem/47692312&gt; Hit testing functions optimizations
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=194073
&gt; 
&gt; This is usually:
&gt; 
&gt; Title
&gt; Bugzilla link
&gt; Radar link

I just use the radar title as bug title. What&apos;s the easiest way to create bugzilla bug from radars?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500901</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-01-31 16:50:19 -0800</bug_when>
    <thetext>(In reply to Benjamin Poulain from comment #8)
&gt; (In reply to Tim Horton from comment #5)
&gt; &gt; Comment on attachment 360684 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=360684&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/ChangeLog:4
&gt; &gt; &gt; +        &lt;rdar://problem/47692312&gt; Hit testing functions optimizations
&gt; &gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=194073
&gt; &gt; 
&gt; &gt; This is usually:
&gt; &gt; 
&gt; &gt; Title
&gt; &gt; Bugzilla link
&gt; &gt; Radar link
&gt; 
&gt; I just use the radar title as bug title. What&apos;s the easiest way to create
&gt; bugzilla bug from radars?

webkit-patch will make a bugzilla bug for you when you&apos;re uploading your patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500905</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2019-01-31 16:56:02 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #9)
&gt; &gt; I just use the radar title as bug title. What&apos;s the easiest way to create
&gt; &gt; bugzilla bug from radars?
&gt; 
&gt; webkit-patch will make a bugzilla bug for you when you&apos;re uploading your
&gt; patch

What I always use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500975</commentid>
    <comment_count>11</comment_count>
      <attachid>360823</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2019-01-31 20:37:49 -0800</bug_when>
    <thetext>Created attachment 360823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500976</commentid>
    <comment_count>12</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2019-01-31 20:40:02 -0800</bug_when>
    <thetext>(In reply to Benjamin Poulain from comment #4)
&gt; (In reply to Simon Fraser (smfr) from comment #3)
&gt; &gt; Comment on attachment 360684 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Do any of these really make measurable perf improvements?
&gt; 
&gt; Oh yeah.
&gt; 
&gt; Maybe not on your machine but on older CPUs that hurts.

Most of it is getting rid of int&lt;-&gt;float and int&lt;-&gt;double conversion. That&apos;s where we bleed the most.

I would expect ARM would benefit even more but I guess we do a lot less hit testing there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500978</commentid>
    <comment_count>13</comment_count>
      <attachid>360823</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-01-31 20:41:48 -0800</bug_when>
    <thetext>Comment on attachment 360823
Patch

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

&gt; Source/WebCore/page/FrameViewLayoutContext.h:96
&gt; +    RenderLayoutState* layoutState() const PURE_FUNCTION;

What does PURE_FUNCTION do?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500980</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-01-31 20:42:43 -0800</bug_when>
    <thetext>(In reply to Benjamin Poulain from comment #12)
&gt; Most of it is getting rid of int&lt;-&gt;float and int&lt;-&gt;double conversion. That&apos;s
&gt; where we bleed the most.

I bet we have TONS of LayoutRect &lt;-&gt; FloatRect &lt;-&gt; IntRect conversions in various places. Is there any way to find the hotspots?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500986</commentid>
    <comment_count>15</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2019-01-31 20:50:28 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #13)
&gt; Comment on attachment 360823 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=360823&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/FrameViewLayoutContext.h:96
&gt; &gt; +    RenderLayoutState* layoutState() const PURE_FUNCTION;
&gt; 
&gt; What does PURE_FUNCTION do?

We tell the compiler that the return value only depends on its parameters, and global memory. AND that the function does not change the state of the program.

Since we do not change the memory of FrameViewLayoutContext between the two calls, the compiler is allowed to reuse the value of the first call.

The doc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes
A good Stackoverflow: https://stackoverflow.com/questions/29117836/attribute-const-vs-attribute-pure-in-gnu-c

&gt; I bet we have TONS of LayoutRect &lt;-&gt; FloatRect &lt;-&gt; IntRect conversions in
&gt; various places. Is there any way to find the hotspots?

I suspect you are right.

I don&apos;t have an idea to find the bad ones though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501405</commentid>
    <comment_count>16</comment_count>
      <attachid>360945</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2019-02-01 18:44:22 -0800</bug_when>
    <thetext>Created attachment 360945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501406</commentid>
    <comment_count>17</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2019-02-01 18:45:10 -0800</bug_when>
    <thetext>I added a fast int-&gt;unsigned since that was used in an API test.

Also added some tests for the new functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501513</commentid>
    <comment_count>18</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-02-02 11:50:08 -0800</bug_when>
    <thetext>It&apos;s probably better to fork the clamp changes into their own bug (Darin might have opinions).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501646</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-02-03 11:28:54 -0800</bug_when>
    <thetext>I agree that we should separate out the clampTo fixes; I’d think we’d want to land them first, and then go on to the optimizations that are built on them. Even if it’s just for regression testing and future bisection if no other reason.

I haven’t studied the behavior changes in clampTo yet -- I understand the principle but not the details of how the function needs to be used differently. I see many call sites changing and the regression tests alone don’t make it clear to me what changed about how it has to be used and what results you get.

The idea of making it more efficient without changing behavior is fantastic. I almost wish that any changes on how it has to be used or implements in behavior could be separate from a patch that was purely about performance and didn’t require changes at call sites. That could take the form of a patch that changes call sites without affecting behavior or performance. Then another that affects performance without changing behavior. Or whatever sequence we can make like that. Again, better for later bisection to see if any problems were caused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1501647</commentid>
    <comment_count>20</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2019-02-03 11:33:54 -0800</bug_when>
    <thetext>Sounds good. I&apos;ll make a separate clampTo() patch with better explanations and testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502243</commentid>
    <comment_count>21</comment_count>
      <attachid>361155</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2019-02-04 21:06:30 -0800</bug_when>
    <thetext>Created attachment 361155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502305</commentid>
    <comment_count>22</comment_count>
      <attachid>361155</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-05 00:52:10 -0800</bug_when>
    <thetext>Comment on attachment 361155
Patch

Clearing flags on attachment: 361155

Committed r240968: &lt;https://trac.webkit.org/changeset/240968&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502306</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-05 00:52:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360684</attachid>
            <date>2019-01-30 20:42:00 -0800</date>
            <delta_ts>2019-01-31 20:37:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194073-20190130204200.patch</filename>
            <type>text/plain</type>
            <size>7910</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQxNjg5MTg2ODhmYjhlMzdjYjNkODY4
M2Y1Y2M0NmM5ZDE4N2EzNmYuLjAzZTI5MjdmM2RlMzFhZDEwM2RlZjkyMDgxYzMyZWUxZmQ3ZjFh
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDEtMzAgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzY5MjMxMj4g
SGl0IHRlc3RpbmcgZnVuY3Rpb25zIG9wdGltaXphdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA3MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL01hdGhFeHRyYXMuaDoKKyAgICAgICAg
KGNsYW1wVG8pOgorICAgICAgICAoc2l6ZW9mKToKKwogMjAxOS0wMS0yOCAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBVlN0cmVhbVNlc3Npb24gaXNu
J3QgYWx3YXlzIGF2YWlsYWJsZSwgbWFrZSBhIEhBVkUgY29tcGlsZSBmbGFnIGZvciBpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDRiMWUwN2FhODQ0YjQyN2U1MTAwZThjZDE5MjRhMzdjMTk0ODJjOGQuLmY4NzEz
YTJkZDM2OGFlNmJmYjc5MDJjMTJkZWNkMmY4NmIxMGViMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxOS0wMS0zMCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3NjkyMzEyPiBIaXQgdGVzdGluZyBmdW5j
dGlvbnMgb3B0aW1pemF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk0MDczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6bWFw
TG9jYWxUb0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0T3BhY2l0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2hhcGVJbWFnZVRocmVzaG9sZCk6CisK
IDIwMTktMDEtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQVZTdHJlYW1TZXNzaW9uIGlzbid0IGFsd2F5cyBhdmFpbGFibGUsIG1ha2UgYSBIQVZF
IGNvbXBpbGUgZmxhZyBmb3IgaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRy
YXMuaCBiL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaAppbmRleCA1ZWVmMTk4NzkwY2IxZWU4
NjQ5MGQ0OWVlMWU3ZTY5YTVjOTJhMzJhLi5jNjEyMzQzZDQ5OGQ3NDE3ZjBlNDY3ODMwNzgwMTUz
MDFjMzQxYWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKKysrIGIv
U291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCkBAIC0xMjMsMTUgKzEyMyw2MCBAQCB0ZW1wbGF0
ZTw+IGNvbnN0ZXhwciBmbG9hdCBkZWZhdWx0TWluaW11bUZvckNsYW1wKCkgeyByZXR1cm4gLXN0
ZDo6bnVtZXJpY19saW1pdAogdGVtcGxhdGU8PiBjb25zdGV4cHIgZG91YmxlIGRlZmF1bHRNaW5p
bXVtRm9yQ2xhbXAoKSB7IHJldHVybiAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgo
KTsgfQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIFQgZGVmYXVsdE1heGltdW1Gb3JD
bGFtcCgpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpOyB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIGNsYW1wVG8oZG91YmxlIHZhbHVlLCBUIG1pbiA9IGRl
ZmF1bHRNaW5pbXVtRm9yQ2xhbXA8VD4oKSwgVCBtYXggPSBkZWZhdWx0TWF4aW11bUZvckNsYW1w
PFQ+KCkpCisvLyBTYW1lIHR5cGUgaW4gYW5kIG91dC4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSBUIGNsYW1wVG8oVCB2YWx1ZSwgVCBtaW4gPSBkZWZhdWx0TWluaW11bUZvckNsYW1wPFQ+
KCksIFQgbWF4ID0gZGVmYXVsdE1heGltdW1Gb3JDbGFtcDxUPigpKQogewotICAgIGlmICh2YWx1
ZSA+PSBzdGF0aWNfY2FzdDxkb3VibGU+KG1heCkpCisgICAgaWYgKHZhbHVlID49IG1heCkKICAg
ICAgICAgcmV0dXJuIG1heDsKLSAgICBpZiAodmFsdWUgPD0gc3RhdGljX2Nhc3Q8ZG91YmxlPiht
aW4pKQorICAgIGlmICh2YWx1ZSA8PSBtaW4pCiAgICAgICAgIHJldHVybiBtaW47Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PFQ+KHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKKy8vIEZs
b2F0aW5nIHBvaW50IHNvdXJjZS4KK3RlbXBsYXRlPHR5cGVuYW1lIFRhcmdldFR5cGUsIHR5cGVu
YW1lIFNvdXJjZVR5cGU+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19zYW1lPFRh
cmdldFR5cGUsIFNvdXJjZVR5cGU+Ojp2YWx1ZQorICAgICYmIHN0ZDo6aXNfZmxvYXRpbmdfcG9p
bnQ8U291cmNlVHlwZT46OnZhbHVlLCBUYXJnZXRUeXBlPjo6dHlwZQorY2xhbXBUbyhTb3VyY2VU
eXBlIHZhbHVlLCBUYXJnZXRUeXBlIG1pbiA9IGRlZmF1bHRNaW5pbXVtRm9yQ2xhbXA8VGFyZ2V0
VHlwZT4oKSwgVGFyZ2V0VHlwZSBtYXggPSBkZWZhdWx0TWF4aW11bUZvckNsYW1wPFRhcmdldFR5
cGU+KCkpCit7CisgICAgaWYgKHZhbHVlID49IHN0YXRpY19jYXN0PFNvdXJjZVR5cGU+KG1heCkp
CisgICAgcmV0dXJuIG1heDsKKyAgICBpZiAodmFsdWUgPD0gc3RhdGljX2Nhc3Q8U291cmNlVHlw
ZT4obWluKSkKKyAgICByZXR1cm4gbWluOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUYXJnZXRU
eXBlPih2YWx1ZSk7Cit9CisKKy8vIFNvdXJjZSBhbmQgVGFyZ2V0IGFyZSBib3RoIHNpZ25lZCBp
bnRlZ2VyIGFuZCBTb3VyY2UgaXMgbGFyZ2VyIG9yIGVxdWFsIHRvIFRhcmdldAordGVtcGxhdGU8
dHlwZW5hbWUgVGFyZ2V0VHlwZSwgdHlwZW5hbWUgU291cmNlVHlwZT4KK3R5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8VGFyZ2V0VHlwZSwgU291cmNlVHlwZT46OnZhbHVlCisg
ICAgJiYgc3RkOjpudW1lcmljX2xpbWl0czxTb3VyY2VUeXBlPjo6aXNfaW50ZWdlcgorICAgICYm
IHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0VHlwZT46OmlzX2ludGVnZXIKKyAgICAmJiBzdGQ6
Om51bWVyaWNfbGltaXRzPFRhcmdldFR5cGU+Ojppc19zaWduZWQgPT0gc3RkOjpudW1lcmljX2xp
bWl0czxTb3VyY2VUeXBlPjo6aXNfc2lnbmVkCisgICAgJiYgc2l6ZW9mKFNvdXJjZVR5cGUpID49
IHNpemVvZihUYXJnZXRUeXBlKSwgVGFyZ2V0VHlwZT46OnR5cGUKK2NsYW1wVG8oU291cmNlVHlw
ZSB2YWx1ZSwgVGFyZ2V0VHlwZSBtaW4gPSBkZWZhdWx0TWluaW11bUZvckNsYW1wPFRhcmdldFR5
cGU+KCksIFRhcmdldFR5cGUgbWF4ID0gZGVmYXVsdE1heGltdW1Gb3JDbGFtcDxUYXJnZXRUeXBl
PigpKQoreworICAgIGlmICh2YWx1ZSA+PSBzdGF0aWNfY2FzdDxTb3VyY2VUeXBlPihtYXgpKQor
ICAgICAgICByZXR1cm4gbWF4OworICAgIGlmICh2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2VU
eXBlPihtaW4pKQorICAgICAgICByZXR1cm4gbWluOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxU
YXJnZXRUeXBlPih2YWx1ZSk7Cit9CisKKy8vIENsYW1waW5nIGEgdW5zaWduZWQgaW50ZWdlciB0
byB0aGUgbWF4IHNpZ25lZCB2YWx1ZS4KK3RlbXBsYXRlPHR5cGVuYW1lIFRhcmdldFR5cGUsIHR5
cGVuYW1lIFNvdXJjZVR5cGU+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19zYW1l
PFRhcmdldFR5cGUsIFNvdXJjZVR5cGU+Ojp2YWx1ZQorICAgICYmIHN0ZDo6bnVtZXJpY19saW1p
dHM8U291cmNlVHlwZT46OmlzX2ludGVnZXIKKyAgICAmJiBzdGQ6Om51bWVyaWNfbGltaXRzPFRh
cmdldFR5cGU+Ojppc19pbnRlZ2VyCisgICAgJiYgc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXRU
eXBlPjo6aXNfc2lnbmVkCisgICAgJiYgIXN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNlVHlwZT46
OmlzX3NpZ25lZAorICAgICYmIHNpemVvZihTb3VyY2VUeXBlKSA+PSBzaXplb2YoVGFyZ2V0VHlw
ZSksIFRhcmdldFR5cGU+Ojp0eXBlCitjbGFtcFRvKFNvdXJjZVR5cGUgdmFsdWUpCit7CisgICAg
VGFyZ2V0VHlwZSBtYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldFR5cGU+OjptYXgoKTsK
KyAgICBpZiAodmFsdWUgPj0gc3RhdGljX2Nhc3Q8U291cmNlVHlwZT4obWF4KSkKKyAgICAgICAg
cmV0dXJuIG1heDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGFyZ2V0VHlwZT4odmFsdWUpOwog
fQotdGVtcGxhdGU8PiBpbmxpbmUgbG9uZyBsb25nIGludCBjbGFtcFRvKGRvdWJsZSwgbG9uZyBs
b25nIGludCwgbG9uZyBsb25nIGludCk7IC8vIGNsYW1wVG8gZG9lcyBub3Qgc3VwcG9ydCBsb25n
IGxvbmcgaW50cy4KIAogaW5saW5lIGludCBjbGFtcFRvSW50ZWdlcihkb3VibGUgdmFsdWUpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oCmluZGV4IGIw
N2NmNWE1ZDliMzhlYzE1MjI3M2JhODQ3NzNkM2IzZDdiMWY4OGEuLjBmZmZjMzZhYmRkMWFmMWE5
Nzg0NzRjZjA3MmM2NzgzNmMxMjZiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3TGF5b3V0Q29udGV4dC5oCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Zmx1c2hBc3luY2hyb25vdXNUYXNrcygpOwogCi0gICAgUmVuZGVyTGF5b3V0U3RhdGUqIGxheW91
dFN0YXRlKCkgY29uc3Q7CisgICAgUmVuZGVyTGF5b3V0U3RhdGUqIGxheW91dFN0YXRlKCkgY29u
c3QgUFVSRV9GVU5DVElPTjsKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgbGF5b3V0U3RhdGUgc2hv
dWxkIGJlIHVzZWQgZm9yIGl0cyBjYWNoZWQgb2Zmc2V0IGFuZCBjbGlwLgogICAgIGJvb2wgaXNQ
YWludE9mZnNldENhY2hlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX3BhaW50T2Zmc2V0Q2Fj
aGVEaXNhYmxlQ291bnQgJiYgbGF5b3V0U3RhdGUoKTsgfQogI2lmbmRlZiBOREVCVUcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggZDM4NzIwYzkxNTlmMGJlMzRlZTZk
MmVhYzZhYWZlOGEyNWVjYmY1My4uN2JkMjc5YjA2ZGQwZDQ2ZThhMmZmOTFkZWU2OGZjYTNiOTM4
Y2ZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTE5ODgsNyAr
MTk4OCw3IEBAIHZvaWQgUmVuZGVyQm94OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluCiAgICAgaWYgKHJlcGFpbnRDb250YWlu
ZXIgPT0gdGhpcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHZpZXcoKS5mcmFtZVZpZXco
KS5sYXlvdXRDb250ZXh0KCkuaXNQYWludE9mZnNldENhY2hlRW5hYmxlZCgpICYmICFyZXBhaW50
Q29udGFpbmVyKSB7CisgICAgaWYgKCFyZXBhaW50Q29udGFpbmVyICYmIHZpZXcoKS5mcmFtZVZp
ZXcoKS5sYXlvdXRDb250ZXh0KCkuaXNQYWludE9mZnNldENhY2hlRW5hYmxlZCgpKSB7CiAgICAg
ICAgIGF1dG8qIGxheW91dFN0YXRlID0gdmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQo
KS5sYXlvdXRTdGF0ZSgpOwogICAgICAgICBMYXlvdXRTaXplIG9mZnNldCA9IGxheW91dFN0YXRl
LT5wYWludE9mZnNldCgpICsgbG9jYXRpb25PZmZzZXQoKTsKICAgICAgICAgaWYgKHN0eWxlKCku
aGFzSW5GbG93UG9zaXRpb24oKSAmJiBsYXllcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAzMjRlZmU1OGNkMDllOWU0NGFjODYyMDljOGEz
MjQ5ODE2ZDAyYzQzLi42OTY1MGRmMjBmMDhlOWRlOTMyNWZkZmYwNjdlNDc3MjIyYjEzNDhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTA1
NSw3ICsxMDU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGV4dFN0cm9rZVdpZHRoKGZsb2F0
IHcpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0U3Ryb2tlV2lkdGgsIHcpOyB9
CiAgICAgdm9pZCBzZXRUZXh0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgdGV4dEZpbGxDb2xvciwgYyk7IH0KICAgICB2b2lkIHNldENhcmV0
Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBjYXJl
dENvbG9yLCBjKTsgfQotICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCBmKSB7IGZsb2F0IHYgPSBj
bGFtcFRvPGZsb2F0PihmLCAwLCAxKTsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBv
cGFjaXR5LCB2KTsgfQorICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCBmKSB7IGZsb2F0IHYgPSBj
bGFtcFRvPGZsb2F0PihmLCAwLmYsIDEuZik7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0
YSwgb3BhY2l0eSwgdik7IH0KICAgICB2b2lkIHNldEFwcGVhcmFuY2UoQ29udHJvbFBhcnQgYSkg
eyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGFwcGVhcmFuY2UsIGEpOyB9CiAgICAg
Ly8gRm9yIHZhbGlkIHZhbHVlcyBvZiBib3gtYWxpZ24gc2VlIGh0dHA6Ly93d3cudzMub3JnL1RS
LzIwMDkvV0QtY3NzMy1mbGV4Ym94LTIwMDkwNzIzLyNhbGlnbm1lbnQKICAgICB2b2lkIHNldEJv
eEFsaWduKEJveEFsaWdubWVudCBhKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIGRlcHJlY2F0ZWRGbGV4aWJsZUJveCwgYWxpZ24sIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihhKSk7IH0KQEAgLTIxOTYsNyArMjE5Niw3IEBAIGlubGluZSB2b2lkIFJlbmRlclN0eWxlOjpz
ZXRTaGFwZU91dHNpZGUoUmVmUHRyPFNoYXBlVmFsdWU+JiYgdmFsdWUpCiAKIGlubGluZSB2b2lk
IFJlbmRlclN0eWxlOjpzZXRTaGFwZUltYWdlVGhyZXNob2xkKGZsb2F0IHNoYXBlSW1hZ2VUaHJl
c2hvbGQpCiB7Ci0gICAgZmxvYXQgY2xhbXBlZFNoYXBlSW1hZ2VUaHJlc2hvbGQgPSBjbGFtcFRv
PGZsb2F0PihzaGFwZUltYWdlVGhyZXNob2xkLCAwLCAxKTsKKyAgICBmbG9hdCBjbGFtcGVkU2hh
cGVJbWFnZVRocmVzaG9sZCA9IGNsYW1wVG88ZmxvYXQ+KHNoYXBlSW1hZ2VUaHJlc2hvbGQsIDAu
ZiwgMS5mKTsKICAgICBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIHNoYXBlSW1hZ2VU
aHJlc2hvbGQsIGNsYW1wZWRTaGFwZUltYWdlVGhyZXNob2xkKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360823</attachid>
            <date>2019-01-31 20:37:49 -0800</date>
            <delta_ts>2019-02-01 18:44:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194073-20190131203748.patch</filename>
            <type>text/plain</type>
            <size>10676</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDEwZmM4ZDA0NGM5ZTE4NTA1ZDQzOWJl
N2NkYmE3Yjk2NjdmMTJhZmQuLmQ5ZDMwNmEwZjNmNzk0MmQxOTQ1M2I5ZWQ3ZjRlZTFlYTAxMTM2
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMDEtMzEgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEhpdCB0ZXN0aW5nIGZ1bmN0aW9ucyBvcHRp
bWl6YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTQwNzMKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNDc2OTIzMTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCBhbGwgdXNlIG9m
IGNsYW1wVG8oKSB3b3VsZCBjb252ZXJ0IHRoZSB2YWx1ZSB0byBkb3VibGUKKyAgICAgICAgdG8g
ZG8gY2hlY2tzIGluIGRvdWJsZSwgdGhlbiBjb252ZXJ0IGJhY2sgdG8gaW50ZWdlci4KKworICAg
ICAgICBUaGlzIHNpZ25pZmljYW50bHkgaW1wYWN0cyBXZWJDb3JlJ3MgTGF5b3V0VW5pdCB3aGVy
ZSBtb3N0IG9mIHRob3NlCisgICAgICAgIGNoZWNrcyB3b3VsZCBoYXZlIGJlZW4gdHJpdmlhbCBp
ZiB3ZSBkbyBub3Qgc3dpdGNoIHRvIGRvdWJsZSB0byBjb21wdXRlCisgICAgICAgIGV2ZXJ5dGhp
bmcuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIGNsYW1wVG8oKSB0byB3b3JrIHdpdGg6
CisgICAgICAgIC1TYW1lIHR5cGUgYXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbi4KKyAgICAgICAg
LUZsb2F0aW5nIHBvaW50IGlucHV0LCBpbnRlZ2VyIGRlc3RpbmF0aW9uLgorICAgICAgICAtQm90
aCBhcmUgc2lnbmVkIGludGVnZXJzIG9mIGRpZmZlcmVudCBzaXplcy4KKyAgICAgICAgcGx1cyBh
IHZlcnNpb24gdGhhdCBjbGFtcCBhbiB1bnNpZ25lZCBpbnRlZ2VyIGludG8gaXRzIHNpZ25lZCBy
YW5nZS4KKworICAgICAgICBBbGwgb2YgdGhvc2UgYXJlIHVzZWQgaW4gV2ViQ29yZS4KKworICAg
ICAgICAqIHd0Zi9NYXRoRXh0cmFzLmg6CisgICAgICAgIChjbGFtcFRvKToKKyAgICAgICAgKHNp
emVvZik6CisKIDIwMTktMDEtMzEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBXUEUgY29tcGlsZSB3YXJuaW5ncyBk
dWUgdG8gZGVwcmVjYXRlZCBnbGliIEFQSS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5MzM4Mjg5M2E4OWVlZDY4
ZTFjN2E2YTE4ZTZlZmU4ZjAxMjdjY2NlLi43YjEwMDBjZjIxNDZiOWI4NTNiYjYxMzFhYjFkYzY3
Mzk5OWE1MGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTktMDEtMzEgIEJlbmph
bWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEhpdCB0ZXN0aW5n
IGZ1bmN0aW9ucyBvcHRpbWl6YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTQwNzMKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNDc2OTIzMTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGltcGxlbWVudHMgc29tZSBlYXN5IG9wdGltaXphdGlvbnMgdGhhdCBzcGVlZCB1cAorICAg
ICAgICBoaXQgdGVzdGluZyB3aXRob3V0IGNoYW5naW5nIHRoZSBhbGdvcml0aG1zLgorCisgICAg
ICAgICogcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0Lmg6CisgICAgICAgIFRoZSBjb2RlIGZv
cjoKKyAgICAgICAgICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkuaXNQYWlu
dE9mZnNldENhY2hlRW5hYmxlZCgpCisgICAgICAgIGZvbGxvd2VkIGJ5OgorICAgICAgICAgICAg
dmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKS5sYXlvdXRTdGF0ZSgpCisgICAgICAg
IHdhcyBsb2FkaW5nIGFsbCB0aGUgaW50ZXJtZWRpYXRlIHZhbHVlcyB0d2ljZSBhbmQgY2FsbGlu
ZyBsYXlvdXRTdGF0ZSgpCisgICAgICAgIHR3aWNlLgorCisgICAgICAgIEJ5IG1hcmtpbmcgdGhl
IGZ1bmN0aW9uIGFzIHB1cmUsIENsYW5nIGNhbiBDU0UgdGhlIHdob2xlIHRoaW5nIGFuZAorICAg
ICAgICByZW1vdmUgdGhlIGR1cGxpY2F0ZWQgY29kZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0xheW91dFJlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFJlY3Q6OmlzSW5m
aW5pdGUgY29uc3QpOgorICAgICAgICBUaGF0IG9uZSBpcyBwcmV0dHkgZnVubnkuCisKKyAgICAg
ICAgU2luY2UgTGF5b3V0UmVjdDo6aXNJbmZpbml0ZSgpIHdhcyBpbXBsZW1lbnRlZCBiZWZvcmUg
b3BlcmF0b3I9PSgpIGlzCisgICAgICAgIGRlY2xhcmVkLCB0aGUgY29tcGlsZXIgd2FzIGZhbGxp
bmcgYmFjayB0byB0aGUgaW1wbGljaXQgY29udmVydGlvbiB0byBGbG9hdFJlY3QoKQorICAgICAg
ICBiZWZvcmUgZG9pbmcgYW55IGNvbXBhcmlzb24uCisKKyAgICAgICAgVGhpcyBleHBsYWlucyBh
IGJ1bmNoIG9mIHRoZSBjb252ZXJ0aW9ucyB0byBmbG9hdCB3aGVuIHVzaW5nIExheW91dFJlY3Qu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgIEp1c3QgcmVv
ZGVyIHRvIG1ha2UgdGhlIHJlZ2lzdGVyIG5pY2UgYW5kIGNsZWFuIGZvciB0aGUgb3B0aW1pemF0
aW9uIGRlc2NyaWJlZCBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldE9wYWNpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNoYXBlSW1hZ2VUaHJlc2hvbGQpOgorICAg
ICAgICBGaXggYSBjb3VwbGUgb2YgYW1iaWd1aXRpZXMgd2l0aCB0aGUgbmV3IGNsYW1wVG8oKS4K
KwogMjAxOS0wMS0zMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ29jb2FdW0VNRV0gQWlyUGxheWluZyBhIEZhaXJQbGF5LXByb3RlY3RlZCBITFMgc3RyZWFt
IGZhaWxzIHRvIGRlY3J5cHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMu
aCBiL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaAppbmRleCA1ZWVmMTk4NzkwY2IxZWU4NjQ5
MGQ0OWVlMWU3ZTY5YTVjOTJhMzJhLi5jNjEyMzQzZDQ5OGQ3NDE3ZjBlNDY3ODMwNzgwMTUzMDFj
MzQxYWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKKysrIGIvU291
cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCkBAIC0xMjMsMTUgKzEyMyw2MCBAQCB0ZW1wbGF0ZTw+
IGNvbnN0ZXhwciBmbG9hdCBkZWZhdWx0TWluaW11bUZvckNsYW1wKCkgeyByZXR1cm4gLXN0ZDo6
bnVtZXJpY19saW1pdAogdGVtcGxhdGU8PiBjb25zdGV4cHIgZG91YmxlIGRlZmF1bHRNaW5pbXVt
Rm9yQ2xhbXAoKSB7IHJldHVybiAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKTsg
fQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIFQgZGVmYXVsdE1heGltdW1Gb3JDbGFt
cCgpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpOyB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGlubGluZSBUIGNsYW1wVG8oZG91YmxlIHZhbHVlLCBUIG1pbiA9IGRlZmF1
bHRNaW5pbXVtRm9yQ2xhbXA8VD4oKSwgVCBtYXggPSBkZWZhdWx0TWF4aW11bUZvckNsYW1wPFQ+
KCkpCisvLyBTYW1lIHR5cGUgaW4gYW5kIG91dC4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGlu
ZSBUIGNsYW1wVG8oVCB2YWx1ZSwgVCBtaW4gPSBkZWZhdWx0TWluaW11bUZvckNsYW1wPFQ+KCks
IFQgbWF4ID0gZGVmYXVsdE1heGltdW1Gb3JDbGFtcDxUPigpKQogewotICAgIGlmICh2YWx1ZSA+
PSBzdGF0aWNfY2FzdDxkb3VibGU+KG1heCkpCisgICAgaWYgKHZhbHVlID49IG1heCkKICAgICAg
ICAgcmV0dXJuIG1heDsKLSAgICBpZiAodmFsdWUgPD0gc3RhdGljX2Nhc3Q8ZG91YmxlPihtaW4p
KQorICAgIGlmICh2YWx1ZSA8PSBtaW4pCiAgICAgICAgIHJldHVybiBtaW47Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PFQ+KHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKKy8vIEZsb2F0
aW5nIHBvaW50IHNvdXJjZS4KK3RlbXBsYXRlPHR5cGVuYW1lIFRhcmdldFR5cGUsIHR5cGVuYW1l
IFNvdXJjZVR5cGU+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19zYW1lPFRhcmdl
dFR5cGUsIFNvdXJjZVR5cGU+Ojp2YWx1ZQorICAgICYmIHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8
U291cmNlVHlwZT46OnZhbHVlLCBUYXJnZXRUeXBlPjo6dHlwZQorY2xhbXBUbyhTb3VyY2VUeXBl
IHZhbHVlLCBUYXJnZXRUeXBlIG1pbiA9IGRlZmF1bHRNaW5pbXVtRm9yQ2xhbXA8VGFyZ2V0VHlw
ZT4oKSwgVGFyZ2V0VHlwZSBtYXggPSBkZWZhdWx0TWF4aW11bUZvckNsYW1wPFRhcmdldFR5cGU+
KCkpCit7CisgICAgaWYgKHZhbHVlID49IHN0YXRpY19jYXN0PFNvdXJjZVR5cGU+KG1heCkpCisg
ICAgcmV0dXJuIG1heDsKKyAgICBpZiAodmFsdWUgPD0gc3RhdGljX2Nhc3Q8U291cmNlVHlwZT4o
bWluKSkKKyAgICByZXR1cm4gbWluOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUYXJnZXRUeXBl
Pih2YWx1ZSk7Cit9CisKKy8vIFNvdXJjZSBhbmQgVGFyZ2V0IGFyZSBib3RoIHNpZ25lZCBpbnRl
Z2VyIGFuZCBTb3VyY2UgaXMgbGFyZ2VyIG9yIGVxdWFsIHRvIFRhcmdldAordGVtcGxhdGU8dHlw
ZW5hbWUgVGFyZ2V0VHlwZSwgdHlwZW5hbWUgU291cmNlVHlwZT4KK3R5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPCFzdGQ6OmlzX3NhbWU8VGFyZ2V0VHlwZSwgU291cmNlVHlwZT46OnZhbHVlCisgICAg
JiYgc3RkOjpudW1lcmljX2xpbWl0czxTb3VyY2VUeXBlPjo6aXNfaW50ZWdlcgorICAgICYmIHN0
ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0VHlwZT46OmlzX2ludGVnZXIKKyAgICAmJiBzdGQ6Om51
bWVyaWNfbGltaXRzPFRhcmdldFR5cGU+Ojppc19zaWduZWQgPT0gc3RkOjpudW1lcmljX2xpbWl0
czxTb3VyY2VUeXBlPjo6aXNfc2lnbmVkCisgICAgJiYgc2l6ZW9mKFNvdXJjZVR5cGUpID49IHNp
emVvZihUYXJnZXRUeXBlKSwgVGFyZ2V0VHlwZT46OnR5cGUKK2NsYW1wVG8oU291cmNlVHlwZSB2
YWx1ZSwgVGFyZ2V0VHlwZSBtaW4gPSBkZWZhdWx0TWluaW11bUZvckNsYW1wPFRhcmdldFR5cGU+
KCksIFRhcmdldFR5cGUgbWF4ID0gZGVmYXVsdE1heGltdW1Gb3JDbGFtcDxUYXJnZXRUeXBlPigp
KQoreworICAgIGlmICh2YWx1ZSA+PSBzdGF0aWNfY2FzdDxTb3VyY2VUeXBlPihtYXgpKQorICAg
ICAgICByZXR1cm4gbWF4OworICAgIGlmICh2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2VUeXBl
PihtaW4pKQorICAgICAgICByZXR1cm4gbWluOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUYXJn
ZXRUeXBlPih2YWx1ZSk7Cit9CisKKy8vIENsYW1waW5nIGEgdW5zaWduZWQgaW50ZWdlciB0byB0
aGUgbWF4IHNpZ25lZCB2YWx1ZS4KK3RlbXBsYXRlPHR5cGVuYW1lIFRhcmdldFR5cGUsIHR5cGVu
YW1lIFNvdXJjZVR5cGU+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19zYW1lPFRh
cmdldFR5cGUsIFNvdXJjZVR5cGU+Ojp2YWx1ZQorICAgICYmIHN0ZDo6bnVtZXJpY19saW1pdHM8
U291cmNlVHlwZT46OmlzX2ludGVnZXIKKyAgICAmJiBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdl
dFR5cGU+Ojppc19pbnRlZ2VyCisgICAgJiYgc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXRUeXBl
Pjo6aXNfc2lnbmVkCisgICAgJiYgIXN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNlVHlwZT46Omlz
X3NpZ25lZAorICAgICYmIHNpemVvZihTb3VyY2VUeXBlKSA+PSBzaXplb2YoVGFyZ2V0VHlwZSks
IFRhcmdldFR5cGU+Ojp0eXBlCitjbGFtcFRvKFNvdXJjZVR5cGUgdmFsdWUpCit7CisgICAgVGFy
Z2V0VHlwZSBtYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldFR5cGU+OjptYXgoKTsKKyAg
ICBpZiAodmFsdWUgPj0gc3RhdGljX2Nhc3Q8U291cmNlVHlwZT4obWF4KSkKKyAgICAgICAgcmV0
dXJuIG1heDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGFyZ2V0VHlwZT4odmFsdWUpOwogfQot
dGVtcGxhdGU8PiBpbmxpbmUgbG9uZyBsb25nIGludCBjbGFtcFRvKGRvdWJsZSwgbG9uZyBsb25n
IGludCwgbG9uZyBsb25nIGludCk7IC8vIGNsYW1wVG8gZG9lcyBub3Qgc3VwcG9ydCBsb25nIGxv
bmcgaW50cy4KIAogaW5saW5lIGludCBjbGFtcFRvSW50ZWdlcihkb3VibGUgdmFsdWUpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oCmluZGV4IGIwN2Nm
NWE1ZDliMzhlYzE1MjI3M2JhODQ3NzNkM2IzZDdiMWY4OGEuLjBmZmZjMzZhYmRkMWFmMWE5Nzg0
NzRjZjA3MmM2NzgzNmMxMjZiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3TGF5b3V0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
TGF5b3V0Q29udGV4dC5oCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmx1
c2hBc3luY2hyb25vdXNUYXNrcygpOwogCi0gICAgUmVuZGVyTGF5b3V0U3RhdGUqIGxheW91dFN0
YXRlKCkgY29uc3Q7CisgICAgUmVuZGVyTGF5b3V0U3RhdGUqIGxheW91dFN0YXRlKCkgY29uc3Qg
UFVSRV9GVU5DVElPTjsKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgbGF5b3V0U3RhdGUgc2hvdWxk
IGJlIHVzZWQgZm9yIGl0cyBjYWNoZWQgb2Zmc2V0IGFuZCBjbGlwLgogICAgIGJvb2wgaXNQYWlu
dE9mZnNldENhY2hlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX3BhaW50T2Zmc2V0Q2FjaGVE
aXNhYmxlQ291bnQgJiYgbGF5b3V0U3RhdGUoKTsgfQogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaAppbmRleCBhMmEyMmNiM2Uw
ZGZhN2UyMmRjYzUwMzQyYjQ2NGQ1Y2I5ZThhOTlmLi42MDkxODFlYTZmMWNkYjMzOWQ5NjE0Mzg3
ZjY1ZDRiYWNlNDA3N2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9MYXlvdXRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TGF5b3V0UmVjdC5oCkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2NhbGUo
ZmxvYXQgeFNjYWxlLCBmbG9hdCB5U2NhbGUpOwogCiAgICAgTGF5b3V0UmVjdCB0cmFuc3Bvc2Vk
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QobV9sb2NhdGlvbi50cmFuc3Bvc2VkUG9p
bnQoKSwgbV9zaXplLnRyYW5zcG9zZWRTaXplKCkpOyB9Ci0gICAgYm9vbCBpc0luZmluaXRlKCkg
Y29uc3QgeyByZXR1cm4gKnRoaXMgPT0gTGF5b3V0UmVjdDo6aW5maW5pdGVSZWN0KCk7IH0KKyAg
ICBib29sIGlzSW5maW5pdGUoKSBjb25zdDsKIAogICAgIHN0YXRpYyBMYXlvdXRSZWN0IGluZmlu
aXRlUmVjdCgpCiAgICAgewpAQCAtMjA3LDYgKzIwNywxMSBAQCBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IExheW91dFJlY3QmIGEsIGNvbnN0IExheW91dFJlY3QmIGIpCiAgICAgcmV0dXJu
IGEubG9jYXRpb24oKSAhPSBiLmxvY2F0aW9uKCkgfHwgYS5zaXplKCkgIT0gYi5zaXplKCk7CiB9
CiAKK2lubGluZSBib29sIExheW91dFJlY3Q6OmlzSW5maW5pdGUoKSBjb25zdAoreworICAgIHJl
dHVybiAqdGhpcyA9PSBMYXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKTsKK30KKwogLy8gSW50ZWdy
YWwgc25hcHBpbmcgZnVuY3Rpb25zLgogaW5saW5lIEludFJlY3Qgc25hcHBlZEludFJlY3QoY29u
c3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKaW5kZXggZDM4NzIwYzkxNTlmMGJlMzRlZTZkMmVhYzZhYWZlOGEyNWVjYmY1My4uN2JkMjc5
YjA2ZGQwZDQ2ZThhMmZmOTFkZWU2OGZjYTNiOTM4Y2ZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKQEAgLTE5ODgsNyArMTk4OCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpt
YXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluCiAgICAgaWYgKHJlcGFpbnRDb250YWluZXIgPT0gdGhpcykKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkuaXNQYWludE9m
ZnNldENhY2hlRW5hYmxlZCgpICYmICFyZXBhaW50Q29udGFpbmVyKSB7CisgICAgaWYgKCFyZXBh
aW50Q29udGFpbmVyICYmIHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkuaXNQYWlu
dE9mZnNldENhY2hlRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8qIGxheW91dFN0YXRlID0gdmll
dygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKS5sYXlvdXRTdGF0ZSgpOwogICAgICAgICBM
YXlvdXRTaXplIG9mZnNldCA9IGxheW91dFN0YXRlLT5wYWludE9mZnNldCgpICsgbG9jYXRpb25P
ZmZzZXQoKTsKICAgICAgICAgaWYgKHN0eWxlKCkuaGFzSW5GbG93UG9zaXRpb24oKSAmJiBsYXll
cigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRl
eCAzMjRlZmU1OGNkMDllOWU0NGFjODYyMDljOGEzMjQ5ODE2ZDAyYzQzLi42OTY1MGRmMjBmMDhl
OWRlOTMyNWZkZmYwNjdlNDc3MjIyYjEzNDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTA1NSw3ICsxMDU1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0VGV4dFN0cm9rZVdpZHRoKGZsb2F0IHcpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0
ZWREYXRhLCB0ZXh0U3Ryb2tlV2lkdGgsIHcpOyB9CiAgICAgdm9pZCBzZXRUZXh0RmlsbENvbG9y
KGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEZpbGxD
b2xvciwgYyk7IH0KICAgICB2b2lkIHNldENhcmV0Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VU
X1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCBjYXJldENvbG9yLCBjKTsgfQotICAgIHZvaWQgc2V0
T3BhY2l0eShmbG9hdCBmKSB7IGZsb2F0IHYgPSBjbGFtcFRvPGZsb2F0PihmLCAwLCAxKTsgU0VU
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvcGFjaXR5LCB2KTsgfQorICAgIHZvaWQgc2V0
T3BhY2l0eShmbG9hdCBmKSB7IGZsb2F0IHYgPSBjbGFtcFRvPGZsb2F0PihmLCAwLmYsIDEuZik7
IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgb3BhY2l0eSwgdik7IH0KICAgICB2b2lk
IHNldEFwcGVhcmFuY2UoQ29udHJvbFBhcnQgYSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIGFwcGVhcmFuY2UsIGEpOyB9CiAgICAgLy8gRm9yIHZhbGlkIHZhbHVlcyBvZiBib3gt
YWxpZ24gc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDkvV0QtY3NzMy1mbGV4Ym94LTIwMDkw
NzIzLyNhbGlnbm1lbnQKICAgICB2b2lkIHNldEJveEFsaWduKEJveEFsaWdubWVudCBhKSB7IFNF
VF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGRlcHJlY2F0ZWRGbGV4aWJsZUJv
eCwgYWxpZ24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihhKSk7IH0KQEAgLTIxOTYsNyArMjE5Niw3
IEBAIGlubGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRTaGFwZU91dHNpZGUoUmVmUHRyPFNoYXBl
VmFsdWU+JiYgdmFsdWUpCiAKIGlubGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRTaGFwZUltYWdl
VGhyZXNob2xkKGZsb2F0IHNoYXBlSW1hZ2VUaHJlc2hvbGQpCiB7Ci0gICAgZmxvYXQgY2xhbXBl
ZFNoYXBlSW1hZ2VUaHJlc2hvbGQgPSBjbGFtcFRvPGZsb2F0PihzaGFwZUltYWdlVGhyZXNob2xk
LCAwLCAxKTsKKyAgICBmbG9hdCBjbGFtcGVkU2hhcGVJbWFnZVRocmVzaG9sZCA9IGNsYW1wVG88
ZmxvYXQ+KHNoYXBlSW1hZ2VUaHJlc2hvbGQsIDAuZiwgMS5mKTsKICAgICBTRVRfVkFSKG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEsIHNoYXBlSW1hZ2VUaHJlc2hvbGQsIGNsYW1wZWRTaGFwZUltYWdl
VGhyZXNob2xkKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360945</attachid>
            <date>2019-02-01 18:44:22 -0800</date>
            <delta_ts>2019-02-04 21:06:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194073-20190201184422.patch</filename>
            <type>text/plain</type>
            <size>21752</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDEwZmM4ZDA0NGM5ZTE4NTA1ZDQzOWJl
N2NkYmE3Yjk2NjdmMTJhZmQuLjJhYmNjZDIxMDlkOGVhNDM1ZTQ4MDE5N2VmY2NhOWMzYmMxMmU2
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMDEtMzEgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEhpdCB0ZXN0aW5nIGZ1bmN0aW9ucyBvcHRp
bWl6YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTQwNzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3NjkyMzEyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3VzbHksIGFsbCB1c2Ug
b2YgY2xhbXBUbygpIHdvdWxkIGNvbnZlcnQgdGhlIHZhbHVlIHRvIGRvdWJsZQorICAgICAgICB0
byBkbyBjaGVja3MgaW4gZG91YmxlLCB0aGVuIGNvbnZlcnQgYmFjayB0byBpbnRlZ2VyLgorCisg
ICAgICAgIFRoaXMgc2lnbmlmaWNhbnRseSBpbXBhY3RzIFdlYkNvcmUncyBMYXlvdXRVbml0IHdo
ZXJlIG1vc3Qgb2YgdGhvc2UKKyAgICAgICAgY2hlY2tzIHdvdWxkIGhhdmUgYmVlbiB0cml2aWFs
IGlmIHdlIGRvIG5vdCBzd2l0Y2ggdG8gZG91YmxlIHRvIGNvbXB1dGUKKyAgICAgICAgZXZlcnl0
aGluZy4KKworICAgICAgICBUaGlzIHBhdGNoIGNoYW5nZXMgY2xhbXBUbygpIHRvIHdvcmsgd2l0
aDoKKyAgICAgICAgLVNhbWUgdHlwZSBhcyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uLgorICAgICAg
ICAtRmxvYXRpbmcgcG9pbnQgaW5wdXQsIGludGVnZXIgZGVzdGluYXRpb24uCisgICAgICAgIC1C
b3RoIGFyZSBzaWduZWQgaW50ZWdlcnMgb2YgZGlmZmVyZW50IHNpemVzLgorICAgICAgICBwbHVz
IGEgdmVyc2lvbiB0aGF0IGNsYW1wIGFuIHVuc2lnbmVkIGludGVnZXIgaW50byBpdHMgc2lnbmVk
IHJhbmdlLgorCisgICAgICAgIEFsbCBvZiB0aG9zZSBhcmUgdXNlZCBpbiBXZWJDb3JlLgorCisg
ICAgICAgICogd3RmL01hdGhFeHRyYXMuaDoKKyAgICAgICAgKGNsYW1wVG8pOgorICAgICAgICAo
c2l6ZW9mKToKKwogMjAxOS0wMS0zMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IFdQRSBjb21waWxlIHdhcm5pbmdz
IGR1ZSB0byBkZXByZWNhdGVkIGdsaWIgQVBJLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdiOGRjNGNlNTA4NmFm
YmZkMjZhY2FhY2VmZjkyYTM1ZDNlMGZiNjYuLjM5MTQ1NjRhOGNhNGNlNmJiMTkyZDhlNWMwODdi
MjI0MDNjZDMyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxOS0wMS0zMSAgQmVu
amFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSGl0IHRlc3Rp
bmcgZnVuY3Rpb25zIG9wdGltaXphdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NDA3MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDc2OTIz
MTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIHNvbWUgZWFzeSBvcHRpbWl6YXRpb25zIHRoYXQgc3BlZWQgdXAK
KyAgICAgICAgaGl0IHRlc3Rpbmcgd2l0aG91dCBjaGFuZ2luZyB0aGUgYWxnb3JpdGhtcy4KKwor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oOgorICAgICAgICBUaGUgY29k
ZSBmb3I6CisgICAgICAgICAgICB2aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpLmlz
UGFpbnRPZmZzZXRDYWNoZUVuYWJsZWQoKQorICAgICAgICBmb2xsb3dlZCBieToKKyAgICAgICAg
ICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkubGF5b3V0U3RhdGUoKQorICAg
ICAgICB3YXMgbG9hZGluZyBhbGwgdGhlIGludGVybWVkaWF0ZSB2YWx1ZXMgdHdpY2UgYW5kIGNh
bGxpbmcgbGF5b3V0U3RhdGUoKQorICAgICAgICB0d2ljZS4KKworICAgICAgICBCeSBtYXJraW5n
IHRoZSBmdW5jdGlvbiBhcyBwdXJlLCBDbGFuZyBjYW4gQ1NFIHRoZSB3aG9sZSB0aGluZyBhbmQK
KyAgICAgICAgcmVtb3ZlIHRoZSBkdXBsaWNhdGVkIGNvZGUuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9MYXlvdXRSZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRSZWN0Ojpp
c0luZmluaXRlIGNvbnN0KToKKyAgICAgICAgVGhhdCBvbmUgaXMgcHJldHR5IGZ1bm55LgorCisg
ICAgICAgIFNpbmNlIExheW91dFJlY3Q6OmlzSW5maW5pdGUoKSB3YXMgaW1wbGVtZW50ZWQgYmVm
b3JlIG9wZXJhdG9yPT0oKSBpcworICAgICAgICBkZWNsYXJlZCwgdGhlIGNvbXBpbGVyIHdhcyBm
YWxsaW5nIGJhY2sgdG8gdGhlIGltcGxpY2l0IGNvbnZlcnRpb24gdG8gRmxvYXRSZWN0KCkKKyAg
ICAgICAgYmVmb3JlIGRvaW5nIGFueSBjb21wYXJpc29uLgorCisgICAgICAgIFRoaXMgZXhwbGFp
bnMgYSBidW5jaCBvZiB0aGUgY29udmVydGlvbnMgdG8gZmxvYXQgd2hlbiB1c2luZyBMYXlvdXRS
ZWN0LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIgY29uc3QpOgorICAgICAgICBKdXN0
IHJlb2RlciB0byBtYWtlIHRoZSByZWdpc3RlciBuaWNlIGFuZCBjbGVhbiBmb3IgdGhlIG9wdGlt
aXphdGlvbiBkZXNjcmliZWQgYWJvdmUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRPcGFjaXR5KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRTaGFwZUltYWdlVGhyZXNob2xkKToK
KyAgICAgICAgRml4IGEgY291cGxlIG9mIGFtYmlndWl0aWVzIHdpdGggdGhlIG5ldyBjbGFtcFRv
KCkuCisKIDIwMTktMDItMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBSRUdSRVNTSU9OOiBGbGFreSBBU1NFUlRJT04gRkFJTEVEOiBtX3VuY29tbWl0dGVkU3Rh
dGUuc3RhdGUgPT0gU3RhdGU6OkNvbW1pdHRlZCBvbiBodHRwL3Rlc3RzL2Nvb2tpZXMvc2FtZS1z
aXRlL2ZldGNoLWFmdGVyLXRvcC1sZXZlbC1uYXZpZ2F0aW9uLWluaXRpYXRlZC1mcm9tLWlmcmFt
ZS1pbi1jcm9zcy1vcmlnaW4tcGFnZS5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9N
YXRoRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKaW5kZXggNWVlZjE5ODc5
MGNiMWVlODY0OTBkNDllZTFlN2U2OWE1YzkyYTMyYS4uN2IxNjMxNTM1NTM4ZTBkYTgzZGE0OWJh
YWQwMzAwNTRlYmVmNGQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaApAQCAtMTIzLDE1ICsxMjMsOTQgQEAg
dGVtcGxhdGU8PiBjb25zdGV4cHIgZmxvYXQgZGVmYXVsdE1pbmltdW1Gb3JDbGFtcCgpIHsgcmV0
dXJuIC1zdGQ6Om51bWVyaWNfbGltaXQKIHRlbXBsYXRlPD4gY29uc3RleHByIGRvdWJsZSBkZWZh
dWx0TWluaW11bUZvckNsYW1wKCkgeyByZXR1cm4gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6bWF4KCk7IH0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBUIGRlZmF1bHRNYXhp
bXVtRm9yQ2xhbXAoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKTsgfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCBjbGFtcFRvKGRvdWJsZSB2YWx1ZSwgVCBt
aW4gPSBkZWZhdWx0TWluaW11bUZvckNsYW1wPFQ+KCksIFQgbWF4ID0gZGVmYXVsdE1heGltdW1G
b3JDbGFtcDxUPigpKQorLy8gU2FtZSB0eXBlIGluIGFuZCBvdXQuCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUYXJnZXRUeXBlLCB0eXBlbmFtZSBTb3VyY2VUeXBlPgordHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19zYW1lPFRhcmdldFR5cGUsIFNvdXJjZVR5cGU+Ojp2YWx1ZSwgVGFyZ2V0VHlw
ZT46OnR5cGUKK2NsYW1wVG8oU291cmNlVHlwZSB2YWx1ZSwgVGFyZ2V0VHlwZSBtaW4gPSBkZWZh
dWx0TWluaW11bUZvckNsYW1wPFRhcmdldFR5cGU+KCksIFRhcmdldFR5cGUgbWF4ID0gZGVmYXVs
dE1heGltdW1Gb3JDbGFtcDxUYXJnZXRUeXBlPigpKQogewotICAgIGlmICh2YWx1ZSA+PSBzdGF0
aWNfY2FzdDxkb3VibGU+KG1heCkpCisgICAgaWYgKHZhbHVlID49IG1heCkKICAgICAgICAgcmV0
dXJuIG1heDsKLSAgICBpZiAodmFsdWUgPD0gc3RhdGljX2Nhc3Q8ZG91YmxlPihtaW4pKQorICAg
IGlmICh2YWx1ZSA8PSBtaW4pCiAgICAgICAgIHJldHVybiBtaW47Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFQ+KHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKKy8vIEZsb2F0aW5nIHBv
aW50IHNvdXJjZS4KK3RlbXBsYXRlPHR5cGVuYW1lIFRhcmdldFR5cGUsIHR5cGVuYW1lIFNvdXJj
ZVR5cGU+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19zYW1lPFRhcmdldFR5cGUs
IFNvdXJjZVR5cGU+Ojp2YWx1ZQorICAgICYmIHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8U291cmNl
VHlwZT46OnZhbHVlLCBUYXJnZXRUeXBlPjo6dHlwZQorY2xhbXBUbyhTb3VyY2VUeXBlIHZhbHVl
LCBUYXJnZXRUeXBlIG1pbiA9IGRlZmF1bHRNaW5pbXVtRm9yQ2xhbXA8VGFyZ2V0VHlwZT4oKSwg
VGFyZ2V0VHlwZSBtYXggPSBkZWZhdWx0TWF4aW11bUZvckNsYW1wPFRhcmdldFR5cGU+KCkpCit7
CisgICAgaWYgKHZhbHVlID49IHN0YXRpY19jYXN0PFNvdXJjZVR5cGU+KG1heCkpCisgICAgICAg
IHJldHVybiBtYXg7CisgICAgaWYgKHZhbHVlIDw9IHN0YXRpY19jYXN0PFNvdXJjZVR5cGU+KG1p
bikpCisgICAgICAgIHJldHVybiBtaW47CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRhcmdldFR5
cGU+KHZhbHVlKTsKK30KKworLy8gU291cmNlIGFuZCBUYXJnZXQgaGF2ZSB0aGUgc2FtZSBzaWdu
IGFuZCBTb3VyY2UgaXMgbGFyZ2VyIG9yIGVxdWFsIHRvIFRhcmdldAordGVtcGxhdGU8dHlwZW5h
bWUgVGFyZ2V0VHlwZSwgdHlwZW5hbWUgU291cmNlVHlwZT4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPCFzdGQ6OmlzX3NhbWU8VGFyZ2V0VHlwZSwgU291cmNlVHlwZT46OnZhbHVlCisgICAgJiYg
c3RkOjpudW1lcmljX2xpbWl0czxTb3VyY2VUeXBlPjo6aXNfaW50ZWdlcgorICAgICYmIHN0ZDo6
bnVtZXJpY19saW1pdHM8VGFyZ2V0VHlwZT46OmlzX2ludGVnZXIKKyAgICAmJiBzdGQ6Om51bWVy
aWNfbGltaXRzPFRhcmdldFR5cGU+Ojppc19zaWduZWQgPT0gc3RkOjpudW1lcmljX2xpbWl0czxT
b3VyY2VUeXBlPjo6aXNfc2lnbmVkCisgICAgJiYgc2l6ZW9mKFNvdXJjZVR5cGUpID49IHNpemVv
ZihUYXJnZXRUeXBlKSwgVGFyZ2V0VHlwZT46OnR5cGUKK2NsYW1wVG8oU291cmNlVHlwZSB2YWx1
ZSwgVGFyZ2V0VHlwZSBtaW4gPSBkZWZhdWx0TWluaW11bUZvckNsYW1wPFRhcmdldFR5cGU+KCks
IFRhcmdldFR5cGUgbWF4ID0gZGVmYXVsdE1heGltdW1Gb3JDbGFtcDxUYXJnZXRUeXBlPigpKQor
eworICAgIGlmICh2YWx1ZSA+PSBzdGF0aWNfY2FzdDxTb3VyY2VUeXBlPihtYXgpKQorICAgICAg
ICByZXR1cm4gbWF4OworICAgIGlmICh2YWx1ZSA8PSBzdGF0aWNfY2FzdDxTb3VyY2VUeXBlPiht
aW4pKQorICAgICAgICByZXR1cm4gbWluOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUYXJnZXRU
eXBlPih2YWx1ZSk7Cit9CisKKy8vIENsYW1waW5nIGEgdW5zaWduZWQgaW50ZWdlciB0byB0aGUg
bWF4IHNpZ25lZCB2YWx1ZS4KK3RlbXBsYXRlPHR5cGVuYW1lIFRhcmdldFR5cGUsIHR5cGVuYW1l
IFNvdXJjZVR5cGU+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19zYW1lPFRhcmdl
dFR5cGUsIFNvdXJjZVR5cGU+Ojp2YWx1ZQorICAgICYmIHN0ZDo6bnVtZXJpY19saW1pdHM8U291
cmNlVHlwZT46OmlzX2ludGVnZXIKKyAgICAmJiBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldFR5
cGU+Ojppc19pbnRlZ2VyCisgICAgJiYgc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXRUeXBlPjo6
aXNfc2lnbmVkCisgICAgJiYgIXN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNlVHlwZT46OmlzX3Np
Z25lZAorICAgICYmIHNpemVvZihTb3VyY2VUeXBlKSA+PSBzaXplb2YoVGFyZ2V0VHlwZSksIFRh
cmdldFR5cGU+Ojp0eXBlCitjbGFtcFRvKFNvdXJjZVR5cGUgdmFsdWUpCit7CisgICAgVGFyZ2V0
VHlwZSBtYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldFR5cGU+OjptYXgoKTsKKyAgICBp
ZiAodmFsdWUgPj0gc3RhdGljX2Nhc3Q8U291cmNlVHlwZT4obWF4KSkKKyAgICAgICAgcmV0dXJu
IG1heDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGFyZ2V0VHlwZT4odmFsdWUpOworfQorCisv
LyBDbGFtcGluZyBhIHNpZ25lZCBpbnRlZ2VyIGludG8gYSB2YWxpZCB1bnNpZ25lZCBpbnRlZ2Vy
LgordGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0VHlwZSwgdHlwZW5hbWUgU291cmNlVHlwZT4KK3R5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8VGFyZ2V0VHlwZSwgU291cmNlVHlw
ZT46OnZhbHVlCisgICAgJiYgc3RkOjpudW1lcmljX2xpbWl0czxTb3VyY2VUeXBlPjo6aXNfaW50
ZWdlcgorICAgICYmIHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0VHlwZT46OmlzX2ludGVnZXIK
KyAgICAmJiAhc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXRUeXBlPjo6aXNfc2lnbmVkCisgICAg
JiYgc3RkOjpudW1lcmljX2xpbWl0czxTb3VyY2VUeXBlPjo6aXNfc2lnbmVkCisgICAgJiYgc2l6
ZW9mKFNvdXJjZVR5cGUpID09IHNpemVvZihUYXJnZXRUeXBlKSwgVGFyZ2V0VHlwZT46OnR5cGUK
K2NsYW1wVG8oU291cmNlVHlwZSB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPCAwKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGFyZ2V0VHlwZT4odmFsdWUpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXRUeXBlLCB0eXBlbmFtZSBTb3VyY2VUeXBlPgor
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IXN0ZDo6aXNfc2FtZTxUYXJnZXRUeXBlLCBTb3VyY2VU
eXBlPjo6dmFsdWUKKyAgICAmJiBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZVR5cGU+Ojppc19p
bnRlZ2VyCisgICAgJiYgc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXRUeXBlPjo6aXNfaW50ZWdl
cgorICAgICYmICFzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldFR5cGU+Ojppc19zaWduZWQKKyAg
ICAmJiBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZVR5cGU+Ojppc19zaWduZWQKKyAgICAmJiAo
c2l6ZW9mKFNvdXJjZVR5cGUpID4gc2l6ZW9mKFRhcmdldFR5cGUpKSwgVGFyZ2V0VHlwZT46OnR5
cGUKK2NsYW1wVG8oU291cmNlVHlwZSB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPCAwKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICBUYXJnZXRUeXBlIG1heCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
VGFyZ2V0VHlwZT46Om1heCgpOworICAgIGlmICh2YWx1ZSA+PSBzdGF0aWNfY2FzdDxTb3VyY2VU
eXBlPihtYXgpKQorICAgICAgICByZXR1cm4gbWF4OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxU
YXJnZXRUeXBlPih2YWx1ZSk7CiB9Ci10ZW1wbGF0ZTw+IGlubGluZSBsb25nIGxvbmcgaW50IGNs
YW1wVG8oZG91YmxlLCBsb25nIGxvbmcgaW50LCBsb25nIGxvbmcgaW50KTsgLy8gY2xhbXBUbyBk
b2VzIG5vdCBzdXBwb3J0IGxvbmcgbG9uZyBpbnRzLgogCiBpbmxpbmUgaW50IGNsYW1wVG9JbnRl
Z2VyKGRvdWJsZSB2YWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBiNTZi
NGViOTZmOGVjN2NhMTJmMzUwNDkzODJkY2ZiYWNlZDI2OTlmLi4wMThkNDQyNDg5NDc0OTIzYTJh
ODFlZDk1MWQ5Y2M1YWQ3NmZlMWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0x
NTY2LDggKzE1NjYsOCBAQCBMYXlvdXRSZWN0IEZyYW1lVmlldzo6Y29tcHV0ZVVwZGF0ZWRMYXlv
dXRWaWV3cG9ydFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbGF5b3V0VgogICAgICAgICAvLyBUaGUg
bWF4IHN0YWJsZSBsYXlvdXQgdmlld3BvcnQgb3JpZ2luIHJlYWxseSBkZXBlbmRzIG9uIHRoZSBz
aXplIG9mIHRoZSBsYXlvdXQgdmlld3BvcnQgaXRzZWxmLCBzbyB3ZSBuZWVkIHRvIGFkanVzdCB0
aGUgbG9jYXRpb24gb2YgdGhlIGxheW91dCB2aWV3cG9ydCBvbmUgZmluYWwgdGltZSB0byBtYWtl
IHN1cmUgaXQgZG9lcyBub3QgZW5kIHVwIG91dCBvZiBib3VuZHMgb2YgdGhlIGRvY3VtZW50Lgog
ICAgICAgICAvLyBXaXRob3V0IHRoaXMgYWRqdXN0bWVudCAoYW5kIHdpdGggdXNpbmcgdGhlIG5v
bi1jb25zdHJhaW5lZCB1bm9ic2N1cmVkQ29udGVudFJlY3QncyBzaXplIGFzIHRoZSBzaXplIG9m
IHRoZSBsYXlvdXQgdmlld3BvcnQpIHRoZSBsYXlvdXQgdmlld3BvcnQgY2FuIGJlIHB1c2hlZCBw
YXN0IHRoZSBib3VuZHMgb2YgdGhlIGRvY3VtZW50IGR1cmluZyBydWJiZXItYmFuZGluZywgYW5k
IGNhbm5vdCBiZSBwdXNoZWQKICAgICAgICAgLy8gYmFjayBpbiB1bnRpbCB0aGUgdXNlciBzY3Jv
bGxzIGJhY2sgaW4gdGhlIG90aGVyIGRpcmVjdGlvbi4KLSAgICAgICAgbGF5b3V0Vmlld3BvcnRP
cmlnaW4uc2V0WChjbGFtcFRvPGZsb2F0PihsYXlvdXRWaWV3cG9ydE9yaWdpbi54KCksIDAsIGRv
Y3VtZW50UmVjdC53aWR0aCgpIC0gbGF5b3V0Vmlld3BvcnRSZWN0LndpZHRoKCkpKTsKLSAgICAg
ICAgbGF5b3V0Vmlld3BvcnRPcmlnaW4uc2V0WShjbGFtcFRvPGZsb2F0PihsYXlvdXRWaWV3cG9y
dE9yaWdpbi55KCksIDAsIGRvY3VtZW50UmVjdC5oZWlnaHQoKSAtIGxheW91dFZpZXdwb3J0UmVj
dC5oZWlnaHQoKSkpOworICAgICAgICBsYXlvdXRWaWV3cG9ydE9yaWdpbi5zZXRYKGNsYW1wVG88
ZmxvYXQ+KGxheW91dFZpZXdwb3J0T3JpZ2luLngoKS50b0Zsb2F0KCksIDAsIGRvY3VtZW50UmVj
dC53aWR0aCgpIC0gbGF5b3V0Vmlld3BvcnRSZWN0LndpZHRoKCkpKTsKKyAgICAgICAgbGF5b3V0
Vmlld3BvcnRPcmlnaW4uc2V0WShjbGFtcFRvPGZsb2F0PihsYXlvdXRWaWV3cG9ydE9yaWdpbi55
KCkudG9GbG9hdCgpLCAwLCBkb2N1bWVudFJlY3QuaGVpZ2h0KCkgLSBsYXlvdXRWaWV3cG9ydFJl
Y3QuaGVpZ2h0KCkpKTsKICAgICB9CiAgICAgbGF5b3V0Vmlld3BvcnRSZWN0LnNldExvY2F0aW9u
KGxheW91dFZpZXdwb3J0T3JpZ2luKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXdMYXlvdXRDb250ZXh0LmgKaW5kZXggYjA3Y2Y1YTVkOWIzOGVjMTUyMjczYmE4NDc3M2Qz
YjNkN2IxZjg4YS4uMGZmZmMzNmFiZGQxYWYxYTk3ODQ3NGNmMDcyYzY3ODM2YzEyNmI2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgKQEAgLTkzLDcg
KzkzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBmbHVzaEFzeW5jaHJvbm91c1Rhc2tzKCk7CiAK
LSAgICBSZW5kZXJMYXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUoKSBjb25zdDsKKyAgICBSZW5kZXJM
YXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUoKSBjb25zdCBQVVJFX0ZVTkNUSU9OOwogICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiBsYXlvdXRTdGF0ZSBzaG91bGQgYmUgdXNlZCBmb3IgaXRzIGNhY2hlZCBv
ZmZzZXQgYW5kIGNsaXAuCiAgICAgYm9vbCBpc1BhaW50T2Zmc2V0Q2FjaGVFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gIW1fcGFpbnRPZmZzZXRDYWNoZURpc2FibGVDb3VudCAmJiBsYXlvdXRTdGF0
ZSgpOyB9CiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTGF5b3V0UmVjdC5oCmluZGV4IGEyYTIyY2IzZTBkZmE3ZTIyZGNjNTAzNDJiNDY0ZDVjYjll
OGE5OWYuLjYwOTE4MWVhNmYxY2RiMzM5ZDk2MTQzODdmNjVkNGJhY2U0MDc3YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKQEAgLTE2Niw3ICsx
NjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2FsZShmbG9hdCB4U2NhbGUsIGZsb2F0IHlTY2Fs
ZSk7CiAKICAgICBMYXlvdXRSZWN0IHRyYW5zcG9zZWRSZWN0KCkgY29uc3QgeyByZXR1cm4gTGF5
b3V0UmVjdChtX2xvY2F0aW9uLnRyYW5zcG9zZWRQb2ludCgpLCBtX3NpemUudHJhbnNwb3NlZFNp
emUoKSk7IH0KLSAgICBib29sIGlzSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiAqdGhpcyA9PSBM
YXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKTsgfQorICAgIGJvb2wgaXNJbmZpbml0ZSgpIGNvbnN0
OwogCiAgICAgc3RhdGljIExheW91dFJlY3QgaW5maW5pdGVSZWN0KCkKICAgICB7CkBAIC0yMDcs
NiArMjA3LDExIEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgTGF5b3V0UmVjdCYgYSwg
Y29uc3QgTGF5b3V0UmVjdCYgYikKICAgICByZXR1cm4gYS5sb2NhdGlvbigpICE9IGIubG9jYXRp
b24oKSB8fCBhLnNpemUoKSAhPSBiLnNpemUoKTsKIH0KIAoraW5saW5lIGJvb2wgTGF5b3V0UmVj
dDo6aXNJbmZpbml0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICp0aGlzID09IExheW91dFJlY3Q6
OmluZmluaXRlUmVjdCgpOworfQorCiAvLyBJbnRlZ3JhbCBzbmFwcGluZyBmdW5jdGlvbnMuCiBp
bmxpbmUgSW50UmVjdCBzbmFwcGVkSW50UmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0KQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCBkMzg3MjBjOTE1OWYwYmUz
NGVlNmQyZWFjNmFhZmU4YTI1ZWNiZjUzLi43YmQyNzliMDZkZDBkNDZlOGEyZmY5MWRlZTY4ZmNh
M2I5MzhjZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTk4
OCw3ICsxOTg4LDcgQEAgdm9pZCBSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW4KICAgICBpZiAocmVwYWludENv
bnRhaW5lciA9PSB0aGlzKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodmlldygpLmZyYW1l
VmlldygpLmxheW91dENvbnRleHQoKS5pc1BhaW50T2Zmc2V0Q2FjaGVFbmFibGVkKCkgJiYgIXJl
cGFpbnRDb250YWluZXIpIHsKKyAgICBpZiAoIXJlcGFpbnRDb250YWluZXIgJiYgdmlldygpLmZy
YW1lVmlldygpLmxheW91dENvbnRleHQoKS5pc1BhaW50T2Zmc2V0Q2FjaGVFbmFibGVkKCkpIHsK
ICAgICAgICAgYXV0byogbGF5b3V0U3RhdGUgPSB2aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29u
dGV4dCgpLmxheW91dFN0YXRlKCk7CiAgICAgICAgIExheW91dFNpemUgb2Zmc2V0ID0gbGF5b3V0
U3RhdGUtPnBhaW50T2Zmc2V0KCkgKyBsb2NhdGlvbk9mZnNldCgpOwogICAgICAgICBpZiAoc3R5
bGUoKS5oYXNJbkZsb3dQb3NpdGlvbigpICYmIGxheWVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDMyNGVmZTU4Y2QwOWU5ZTQ0YWM4NjIw
OWM4YTMyNDk4MTZkMDJjNDMuLjY5NjUwZGYyMGYwOGU5ZGU5MzI1ZmRmZjA2N2U0NzcyMjJiMTM0
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBA
IC0xMDU1LDcgKzEwNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0U3Ryb2tlV2lkdGgo
ZmxvYXQgdykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHRTdHJva2VXaWR0aCwg
dyk7IH0KICAgICB2b2lkIHNldFRleHRGaWxsQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RmlsbENvbG9yLCBjKTsgfQogICAgIHZvaWQgc2V0
Q2FyZXRDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEs
IGNhcmV0Q29sb3IsIGMpOyB9Ci0gICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0IGYpIHsgZmxvYXQg
diA9IGNsYW1wVG88ZmxvYXQ+KGYsIDAsIDEpOyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERh
dGEsIG9wYWNpdHksIHYpOyB9CisgICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0IGYpIHsgZmxvYXQg
diA9IGNsYW1wVG88ZmxvYXQ+KGYsIDAuZiwgMS5mKTsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLCBvcGFjaXR5LCB2KTsgfQogICAgIHZvaWQgc2V0QXBwZWFyYW5jZShDb250cm9sUGFy
dCBhKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgYXBwZWFyYW5jZSwgYSk7IH0K
ICAgICAvLyBGb3IgdmFsaWQgdmFsdWVzIG9mIGJveC1hbGlnbiBzZWUgaHR0cDovL3d3dy53My5v
cmcvVFIvMjAwOS9XRC1jc3MzLWZsZXhib3gtMjAwOTA3MjMvI2FsaWdubWVudAogICAgIHZvaWQg
c2V0Qm94QWxpZ24oQm94QWxpZ25tZW50IGEpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBhbGlnbiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGEpKTsgfQpAQCAtMjE5Niw3ICsyMTk2LDcgQEAgaW5saW5lIHZvaWQgUmVuZGVyU3R5
bGU6OnNldFNoYXBlT3V0c2lkZShSZWZQdHI8U2hhcGVWYWx1ZT4mJiB2YWx1ZSkKIAogaW5saW5l
IHZvaWQgUmVuZGVyU3R5bGU6OnNldFNoYXBlSW1hZ2VUaHJlc2hvbGQoZmxvYXQgc2hhcGVJbWFn
ZVRocmVzaG9sZCkKIHsKLSAgICBmbG9hdCBjbGFtcGVkU2hhcGVJbWFnZVRocmVzaG9sZCA9IGNs
YW1wVG88ZmxvYXQ+KHNoYXBlSW1hZ2VUaHJlc2hvbGQsIDAsIDEpOworICAgIGZsb2F0IGNsYW1w
ZWRTaGFwZUltYWdlVGhyZXNob2xkID0gY2xhbXBUbzxmbG9hdD4oc2hhcGVJbWFnZVRocmVzaG9s
ZCwgMC5mLCAxLmYpOwogICAgIFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2hhcGVJ
bWFnZVRocmVzaG9sZCwgY2xhbXBlZFNoYXBlSW1hZ2VUaHJlc2hvbGQpOwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWYzY2Y4ZjhjM2Vj
YTU3MTkyOWM3MWRkOWZjMzVkNTczYTA1ZDg3ZS4uMGFkMjZlZWEyOGNlOGM3OGE4ZWZlN2Y3Yzlj
NWQyNGMwOGUxZTIwMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTAyLTAxICBCZW5qYW1pbiBQb3VsYWluICA8
YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBIaXQgdGVzdGluZyBmdW5jdGlvbnMgb3B0
aW1pemF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk0MDczCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzY5MjMxMj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL01hdGhFeHRyYXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdENsYW1w
RmxvYXRpbmdQb2ludFRvSW50ZWdlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RDbGFtcFNhbWVTaWduSW50ZWdlcnMpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdENsYW1wVW5zaWduZWRUb1NpZ25lZCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjp0ZXN0Q2xhbXBTaWduZWRUb1Vuc2lnbmVkKToKKwogMjAxOS0wMi0w
MSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSBDb25zaXN0ZW50IDEgc2VjIGhhbmcgd2hlbiB0cmlnZ2VyaW5nIG1vZGFsIGFsZXJ0cyB3aGls
ZSBoYW5kbGluZyBzeW5jaHJvbm91cyB0b3VjaCBldmVudHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL01hdGhFeHRyYXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvTWF0aEV4dHJhcy5jcHAKaW5kZXggMTc4OWEwZWI4YjA3NzMwYjlhM2QxMmMw
NTM5M2Y0NTliYTllYWU2ZC4uNmM2MTZjYWIxMDNlZTJmMzhiZTZkZjkwM2I0MTQwYmYyN2ZiOWFl
MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWF0aEV4dHJhcy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWF0aEV4dHJhcy5jcHAKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzQsNiArMTc1LDEwOCBAQCBURVNU
KFdURiwgY2xhbXBUb1Vuc2lnbmVkTG9uZ0xvbmcpCiAgICAgRVhQRUNUX0VRKGNsYW1wVG88dW5z
aWduZWQ+KC0xKSwgMHUpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBGbG9hdGluZ1BvaW50VHlw
ZT4KK3N0YXRpYyB2b2lkIHRlc3RDbGFtcEZsb2F0aW5nUG9pbnRUb0ludGVnZXIoKQoreworICAg
IEVYUEVDVF9FUShjbGFtcFRvPGludDMyX3Q+KHN0YXRpY19jYXN0PEZsb2F0aW5nUG9pbnRUeXBl
PigwKSksIDApOworICAgIEVYUEVDVF9FUShjbGFtcFRvPGludDMyX3Q+KHN0YXRpY19jYXN0PEZs
b2F0aW5nUG9pbnRUeXBlPigxKSksIDEpOworICAgIEVYUEVDVF9FUShjbGFtcFRvPGludDMyX3Q+
KHN0YXRpY19jYXN0PEZsb2F0aW5nUG9pbnRUeXBlPigtMSkpLCAtMSk7CisgICAgRVhQRUNUX0VR
KGNsYW1wVG88aW50MzJfdD4oc3RhdGljX2Nhc3Q8RmxvYXRpbmdQb2ludFR5cGU+KHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSksIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpKTsKKyAgICBFWFBFQ1RfRVEoY2xhbXBUbzxpbnQzMl90PihzdGF0aWNfY2FzdDxG
bG9hdGluZ1BvaW50VHlwZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpICsg
MS5mKSwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOworICAgIEVYUEVDVF9F
UShjbGFtcFRvPGludDMyX3Q+KHN0YXRpY19jYXN0PEZsb2F0aW5nUG9pbnRUeXBlPihzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptaW4oKSk7CisgICAgRVhQRUNUX0VRKGNsYW1wVG88aW50MzJfdD4oc3RhdGljX2Nhc3Q8
RmxvYXRpbmdQb2ludFR5cGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSAt
IDEuZiksIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKKyAgICBFWFBFQ1Rf
RVEoY2xhbXBUbzxpbnQzMl90PihzdGF0aWNfY2FzdDxGbG9hdGluZ1BvaW50VHlwZT4oc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKSksIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1heCgpKTsKKyAgICBFWFBFQ1RfRVEoY2xhbXBUbzxpbnQzMl90PihzdGF0aWNfY2Fz
dDxGbG9hdGluZ1BvaW50VHlwZT4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgp
KSArIDEuZiksIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICBFWFBF
Q1RfRVEoY2xhbXBUbzxpbnQzMl90PihzdGF0aWNfY2FzdDxGbG9hdGluZ1BvaW50VHlwZT4oc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1pbigpKSksIDAuZik7CisgICAgRVhQRUNUX0VR
KGNsYW1wVG88aW50MzJfdD4oc3RhdGljX2Nhc3Q8RmxvYXRpbmdQb2ludFR5cGU+KHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpKSksIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1heCgpKTsKKyAgICBFWFBFQ1RfRVEoY2xhbXBUbzxpbnQzMl90PihzdGF0aWNfY2FzdDxG
bG9hdGluZ1BvaW50VHlwZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpICsg
MS5mKSwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOworICAgIEVYUEVDVF9F
UShjbGFtcFRvPGludDMyX3Q+KHN0YXRpY19jYXN0PEZsb2F0aW5nUG9pbnRUeXBlPihzdGQ6Om51
bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptaW4oKSk7CisgICAgRVhQRUNUX0VRKGNsYW1wVG88aW50MzJfdD4oc3RhdGljX2Nhc3Q8
RmxvYXRpbmdQb2ludFR5cGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKSAt
IDEuZiksIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKKyAgICBFWFBFQ1Rf
RVEoY2xhbXBUbzxpbnQzMl90PihzdGF0aWNfY2FzdDxGbG9hdGluZ1BvaW50VHlwZT4oc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKSksIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1heCgpKTsKKyAgICBFWFBFQ1RfRVEoY2xhbXBUbzxpbnQzMl90PihzdGF0aWNfY2Fz
dDxGbG9hdGluZ1BvaW50VHlwZT4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgp
KSArIDEuZiksIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICBFWFBF
Q1RfRVEoY2xhbXBUbzxpbnQzMl90PihzdGF0aWNfY2FzdDxGbG9hdGluZ1BvaW50VHlwZT4oc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1pbigpKSksIDAuZik7CisKKyAgICBFWFBFQ1Rf
RVEoY2xhbXBUbzxpbnQzMl90PihzdGF0aWNfY2FzdDxGbG9hdGluZ1BvaW50VHlwZT4oc3RkOjpu
dW1lcmljX2xpbWl0czxGbG9hdGluZ1BvaW50VHlwZT46OmluZmluaXR5KCkpKSwgc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOworICAgIEVYUEVDVF9FUShjbGFtcFRvPGludDMy
X3Q+KHN0YXRpY19jYXN0PEZsb2F0aW5nUG9pbnRUeXBlPigtc3RkOjpudW1lcmljX2xpbWl0czxG
bG9hdGluZ1BvaW50VHlwZT46OmluZmluaXR5KCkpKSwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQz
Ml90Pjo6bWluKCkpOworfQorCitURVNUKFdURiwgY2xhbXBGbG9hdFRvSW50KQoreworICAgIHRl
c3RDbGFtcEZsb2F0aW5nUG9pbnRUb0ludGVnZXI8ZmxvYXQ+KCk7CisgICAgdGVzdENsYW1wRmxv
YXRpbmdQb2ludFRvSW50ZWdlcjxkb3VibGU+KCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRh
cmdldFR5cGUsIHR5cGVuYW1lIFNvdXJjZVR5cGU+CitzdGF0aWMgdm9pZCB0ZXN0Q2xhbXBTYW1l
U2lnbkludGVnZXJzKCkKK3sKKyAgICBFWFBFQ1RfRVEoY2xhbXBUbzxUYXJnZXRUeXBlPihzdGF0
aWNfY2FzdDxTb3VyY2VUeXBlPigwKSksIHN0YXRpY19jYXN0PFRhcmdldFR5cGU+KDApKTsKKyAg
ICBFWFBFQ1RfRVEoY2xhbXBUbzxUYXJnZXRUeXBlPihzdGF0aWNfY2FzdDxTb3VyY2VUeXBlPigx
KSksIHN0YXRpY19jYXN0PFRhcmdldFR5cGU+KDEpKTsKKyAgICBFWFBFQ1RfRVEoY2xhbXBUbzxU
YXJnZXRUeXBlPihzdGF0aWNfY2FzdDxTb3VyY2VUeXBlPigtMSkpLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPFRhcmdldFR5cGU+Ojppc19zaWduZWQgPyBzdGF0aWNfY2FzdDxUYXJnZXRUeXBlPigtMSkg
OiBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldFR5cGU+OjptYXgoKSk7CisKKyAgICBFWFBFQ1Rf
RVEoY2xhbXBUbzxUYXJnZXRUeXBlPihzdGF0aWNfY2FzdDxTb3VyY2VUeXBlPihzdGQ6Om51bWVy
aWNfbGltaXRzPFRhcmdldFR5cGU+OjptaW4oKSkpLCBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdl
dFR5cGU+OjptaW4oKSk7CisgICAgRVhQRUNUX0VRKGNsYW1wVG88VGFyZ2V0VHlwZT4oc3RhdGlj
X2Nhc3Q8U291cmNlVHlwZT4oc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXRUeXBlPjo6bWF4KCkp
KSwgc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXRUeXBlPjo6bWF4KCkpOworCisgICAgRVhQRUNU
X0VRKGNsYW1wVG88VGFyZ2V0VHlwZT4oc3RkOjpudW1lcmljX2xpbWl0czxTb3VyY2VUeXBlPjo6
bWluKCkpLCBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldFR5cGU+OjptaW4oKSk7CisgICAgRVhQ
RUNUX0VRKGNsYW1wVG88VGFyZ2V0VHlwZT4oc3RkOjpudW1lcmljX2xpbWl0czxTb3VyY2VUeXBl
Pjo6bWF4KCkpLCBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldFR5cGU+OjptYXgoKSk7Cit9CisK
K1RFU1QoV1RGLCBjbGFtcFNhbWVTaWduSW50ZWdlcnMpCit7CisgICAgdGVzdENsYW1wU2FtZVNp
Z25JbnRlZ2VyczxpbnQzMl90LCBpbnQzMl90PigpOworICAgIHRlc3RDbGFtcFNhbWVTaWduSW50
ZWdlcnM8dWludDMyX3QsIHVpbnQzMl90PigpOworICAgIHRlc3RDbGFtcFNhbWVTaWduSW50ZWdl
cnM8aW50MzJfdCwgaW50NjRfdD4oKTsKKyAgICB0ZXN0Q2xhbXBTYW1lU2lnbkludGVnZXJzPHVp
bnQzMl90LCB1aW50NjRfdD4oKTsKKyAgICB0ZXN0Q2xhbXBTYW1lU2lnbkludGVnZXJzPGludDE2
X3QsIGludDY0X3Q+KCk7CisgICAgdGVzdENsYW1wU2FtZVNpZ25JbnRlZ2Vyczx1aW50MTZfdCwg
dWludDY0X3Q+KCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRhcmdldFR5cGUsIHR5cGVuYW1l
IFNvdXJjZVR5cGU+CitzdGF0aWMgdm9pZCB0ZXN0Q2xhbXBVbnNpZ25lZFRvU2lnbmVkKCkKK3sK
KyAgICBFWFBFQ1RfRVEoY2xhbXBUbzxUYXJnZXRUeXBlPihzdGF0aWNfY2FzdDxTb3VyY2VUeXBl
PigwKSksIHN0YXRpY19jYXN0PFRhcmdldFR5cGU+KDApKTsKKyAgICBFWFBFQ1RfRVEoY2xhbXBU
bzxUYXJnZXRUeXBlPihzdGF0aWNfY2FzdDxTb3VyY2VUeXBlPigxKSksIHN0YXRpY19jYXN0PFRh
cmdldFR5cGU+KDEpKTsKKworICAgIEVYUEVDVF9FUShjbGFtcFRvPFRhcmdldFR5cGU+KHN0YXRp
Y19jYXN0PFNvdXJjZVR5cGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0VHlwZT46Om1heCgp
KSksIHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0VHlwZT46Om1heCgpKTsKKyAgICBFWFBFQ1Rf
RVEoY2xhbXBUbzxUYXJnZXRUeXBlPihzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZVR5cGU+Ojpt
YXgoKSksIHN0ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0VHlwZT46Om1heCgpKTsKK30KKworVEVT
VChXVEYsIGNsYW1wVW5zaWduZWRUb1NpZ25lZCkKK3sKKyAgICB0ZXN0Q2xhbXBVbnNpZ25lZFRv
U2lnbmVkPGludDMyX3QsIHVpbnQzMl90PigpOworICAgIHRlc3RDbGFtcFVuc2lnbmVkVG9TaWdu
ZWQ8aW50NjRfdCwgdWludDY0X3Q+KCk7CisgICAgdGVzdENsYW1wVW5zaWduZWRUb1NpZ25lZDxp
bnQzMl90LCB1aW50NjRfdD4oKTsKKyAgICB0ZXN0Q2xhbXBVbnNpZ25lZFRvU2lnbmVkPGludDE2
X3QsIHVpbnQzMl90PigpOworICAgIHRlc3RDbGFtcFVuc2lnbmVkVG9TaWduZWQ8aW50MTZfdCwg
dWludDY0X3Q+KCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRhcmdldFR5cGUsIHR5cGVuYW1l
IFNvdXJjZVR5cGU+CitzdGF0aWMgdm9pZCB0ZXN0Q2xhbXBTaWduZWRUb1Vuc2lnbmVkKCkKK3sK
KyAgICBFWFBFQ1RfRVEoY2xhbXBUbzxUYXJnZXRUeXBlPihzdGF0aWNfY2FzdDxTb3VyY2VUeXBl
PigwKSksIHN0YXRpY19jYXN0PFRhcmdldFR5cGU+KDApKTsKKyAgICBFWFBFQ1RfRVEoY2xhbXBU
bzxUYXJnZXRUeXBlPihzdGF0aWNfY2FzdDxTb3VyY2VUeXBlPigxKSksIHN0YXRpY19jYXN0PFRh
cmdldFR5cGU+KDEpKTsKKyAgICBFWFBFQ1RfRVEoY2xhbXBUbzxUYXJnZXRUeXBlPihzdGF0aWNf
Y2FzdDxTb3VyY2VUeXBlPigtMSkpLCBzdGF0aWNfY2FzdDxUYXJnZXRUeXBlPigwKSk7CisKKyAg
ICBpZiAoc2l6ZW9mKFRhcmdldFR5cGUpIDwgc2l6ZW9mKFNvdXJjZVR5cGUpKSB7CisgICAgICAg
IEVYUEVDVF9FUShjbGFtcFRvPFRhcmdldFR5cGU+KHN0YXRpY19jYXN0PFNvdXJjZVR5cGU+KHN0
ZDo6bnVtZXJpY19saW1pdHM8VGFyZ2V0VHlwZT46Om1pbigpKSksIHN0YXRpY19jYXN0PFRhcmdl
dFR5cGU+KDApKTsKKyAgICAgICAgRVhQRUNUX0VRKGNsYW1wVG88VGFyZ2V0VHlwZT4oc3RhdGlj
X2Nhc3Q8U291cmNlVHlwZT4oc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXRUeXBlPjo6bWF4KCkp
KSwgc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXRUeXBlPjo6bWF4KCkpOworICAgIH0KKworICAg
IEVYUEVDVF9FUShjbGFtcFRvPFRhcmdldFR5cGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNl
VHlwZT46Om1pbigpKSwgc3RhdGljX2Nhc3Q8VGFyZ2V0VHlwZT4oMCkpOworICAgIGlmIChzaXpl
b2YoVGFyZ2V0VHlwZSkgPCBzaXplb2YoU291cmNlVHlwZSkpCisgICAgICAgIEVYUEVDVF9FUShj
bGFtcFRvPFRhcmdldFR5cGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8U291cmNlVHlwZT46Om1heCgp
KSwgc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXRUeXBlPjo6bWF4KCkpOworICAgIGVsc2UKKyAg
ICAgICAgRVhQRUNUX0VRKGNsYW1wVG88VGFyZ2V0VHlwZT4oc3RkOjpudW1lcmljX2xpbWl0czxT
b3VyY2VUeXBlPjo6bWF4KCkpLCBzdGF0aWNfY2FzdDxUYXJnZXRUeXBlPihzdGQ6Om51bWVyaWNf
bGltaXRzPFNvdXJjZVR5cGU+OjptYXgoKSkpOworfQorCitURVNUKFdURiwgY2xhbXBTaWduZWRU
b1Vuc2lnbmVkKQoreworICAgIHRlc3RDbGFtcFNpZ25lZFRvVW5zaWduZWQ8dWludDMyX3QsIGlu
dDMyX3Q+KCk7CisgICAgdGVzdENsYW1wU2lnbmVkVG9VbnNpZ25lZDx1aW50NjRfdCwgaW50NjRf
dD4oKTsKKyAgICB0ZXN0Q2xhbXBTaWduZWRUb1Vuc2lnbmVkPHVpbnQzMl90LCBpbnQ2NF90Pigp
OworICAgIHRlc3RDbGFtcFNpZ25lZFRvVW5zaWduZWQ8dWludDE2X3QsIGludDMyX3Q+KCk7Cisg
ICAgdGVzdENsYW1wU2lnbmVkVG9VbnNpZ25lZDx1aW50MTZfdCwgaW50NjRfdD4oKTsKK30KKwog
VEVTVChXVEYsIHJvdW5kVXBUb1Bvd2VyT2ZUd28pCiB7CiAgICAgRVhQRUNUX0VRKFdURjo6cm91
bmRVcFRvUG93ZXJPZlR3byhVSU5UMzJfTUFYKSwgMFUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361155</attachid>
            <date>2019-02-04 21:06:30 -0800</date>
            <delta_ts>2019-02-05 00:52:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194073-20190204210629.patch</filename>
            <type>text/plain</type>
            <size>4321</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwOTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTcwMWZlM2Y5NDYyNWFm
NzhhN2U2Yzk0MmQ5M2RkMWVhNGM5N2FjNC4uMzdkYzkxMGVkNzNjZjBhMjIwNTk5Y2NmMGIzNmFk
ODE5ZTc0ZTQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE5LTAyLTA0ICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBIaXQgdGVzdGlu
ZyBmdW5jdGlvbnMgb3B0aW1pemF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDczCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzY5MjMx
Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbXBsZW1lbnRzIHNvbWUgZWFzeSBvcHRpbWl6YXRpb25zIHRoYXQgc3BlZWQgdXAKKyAg
ICAgICAgaGl0IHRlc3Rpbmcgd2l0aG91dCBjaGFuZ2luZyB0aGUgYWxnb3JpdGhtcy4KKworICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oOgorICAgICAgICBUaGUgY29kZSBm
b3I6CisgICAgICAgICAgICB2aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpLmlzUGFp
bnRPZmZzZXRDYWNoZUVuYWJsZWQoKQorICAgICAgICBmb2xsb3dlZCBieToKKyAgICAgICAgICAg
IHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkubGF5b3V0U3RhdGUoKQorICAgICAg
ICB3YXMgbG9hZGluZyBhbGwgdGhlIGludGVybWVkaWF0ZSB2YWx1ZXMgdHdpY2UgYW5kIGNhbGxp
bmcgbGF5b3V0U3RhdGUoKQorICAgICAgICB0d2ljZS4KKworICAgICAgICBCeSBtYXJraW5nIHRo
ZSBmdW5jdGlvbiBhcyBwdXJlLCBDbGFuZyBjYW4gQ1NFIHRoZSB3aG9sZSB0aGluZyBhbmQKKyAg
ICAgICAgcmVtb3ZlIHRoZSBkdXBsaWNhdGVkIGNvZGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9MYXlvdXRSZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRSZWN0Ojppc0lu
ZmluaXRlIGNvbnN0KToKKyAgICAgICAgVGhhdCBvbmUgaXMgcHJldHR5IGZ1bm55LgorCisgICAg
ICAgIFNpbmNlIExheW91dFJlY3Q6OmlzSW5maW5pdGUoKSB3YXMgaW1wbGVtZW50ZWQgYmVmb3Jl
IG9wZXJhdG9yPT0oKSBpcworICAgICAgICBkZWNsYXJlZCwgdGhlIGNvbXBpbGVyIHdhcyBmYWxs
aW5nIGJhY2sgdG8gdGhlIGltcGxpY2l0IGNvbnZlcnRpb24gdG8gRmxvYXRSZWN0KCkKKyAgICAg
ICAgYmVmb3JlIGRvaW5nIGFueSBjb21wYXJpc29uLgorCisgICAgICAgIFRoaXMgZXhwbGFpbnMg
YSBidW5jaCBvZiB0aGUgY29udmVydGlvbnMgdG8gZmxvYXQgd2hlbiB1c2luZyBMYXlvdXRSZWN0
LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIgY29uc3QpOgorICAgICAgICBKdXN0IHJl
b2RlciB0byBtYWtlIHRoZSByZWdpc3RlciBuaWNlIGFuZCBjbGVhbiBmb3IgdGhlIG9wdGltaXph
dGlvbiBkZXNjcmliZWQgYWJvdmUuCisKIDIwMTktMDItMDQgIE1zMmdlciAgPE1zMmdlckBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gTmVlZCBhIGZ1bmN0aW9uIHRvIGNvbnZlcnQg
aW50ZXJuYWwgVVJJIHRvIGRpc3BsYXkgKCJwcmV0dHkiKSBVUkkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgKaW5kZXggMDQ2NjJkMGQyMjM4ZGI0MTVlYzIw
ZDU4NzgyNDkzZjQ3Y2ZiYjQ2Yi4uZDE2ZjZjMzVjZjk2ODYwYzEwODQyZTY4MjIzMjFhZWIzMTM5
MWVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgK
QEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBmbHVzaEFzeW5jaHJvbm91c1Rh
c2tzKCk7CiAKLSAgICBSZW5kZXJMYXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUoKSBjb25zdDsKKyAg
ICBSZW5kZXJMYXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUoKSBjb25zdCBQVVJFX0ZVTkNUSU9OOwog
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBsYXlvdXRTdGF0ZSBzaG91bGQgYmUgdXNlZCBmb3IgaXRz
IGNhY2hlZCBvZmZzZXQgYW5kIGNsaXAuCiAgICAgYm9vbCBpc1BhaW50T2Zmc2V0Q2FjaGVFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gIW1fcGFpbnRPZmZzZXRDYWNoZURpc2FibGVDb3VudCAmJiBs
YXlvdXRTdGF0ZSgpOyB9CiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCmluZGV4IGEyYTIyY2IzZTBkZmE3ZTIyZGNjNTAzNDJi
NDY0ZDVjYjllOGE5OWYuLjYwOTE4MWVhNmYxY2RiMzM5ZDk2MTQzODdmNjVkNGJhY2U0MDc3Yzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKQEAg
LTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2FsZShmbG9hdCB4U2NhbGUsIGZs
b2F0IHlTY2FsZSk7CiAKICAgICBMYXlvdXRSZWN0IHRyYW5zcG9zZWRSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gTGF5b3V0UmVjdChtX2xvY2F0aW9uLnRyYW5zcG9zZWRQb2ludCgpLCBtX3NpemUudHJh
bnNwb3NlZFNpemUoKSk7IH0KLSAgICBib29sIGlzSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiAq
dGhpcyA9PSBMYXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKTsgfQorICAgIGJvb2wgaXNJbmZpbml0
ZSgpIGNvbnN0OwogCiAgICAgc3RhdGljIExheW91dFJlY3QgaW5maW5pdGVSZWN0KCkKICAgICB7
CkBAIC0yMDcsNiArMjA3LDExIEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgTGF5b3V0
UmVjdCYgYSwgY29uc3QgTGF5b3V0UmVjdCYgYikKICAgICByZXR1cm4gYS5sb2NhdGlvbigpICE9
IGIubG9jYXRpb24oKSB8fCBhLnNpemUoKSAhPSBiLnNpemUoKTsKIH0KIAoraW5saW5lIGJvb2wg
TGF5b3V0UmVjdDo6aXNJbmZpbml0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICp0aGlzID09IExh
eW91dFJlY3Q6OmluZmluaXRlUmVjdCgpOworfQorCiAvLyBJbnRlZ3JhbCBzbmFwcGluZyBmdW5j
dGlvbnMuCiBpbmxpbmUgSW50UmVjdCBzbmFwcGVkSW50UmVjdChjb25zdCBMYXlvdXRSZWN0JiBy
ZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCBkMzg3MjBj
OTE1OWYwYmUzNGVlNmQyZWFjNmFhZmU4YTI1ZWNiZjUzLi43YmQyNzliMDZkZDBkNDZlOGEyZmY5
MWRlZTY4ZmNhM2I5MzhjZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cApAQCAtMTk4OCw3ICsxOTg4LDcgQEAgdm9pZCBSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWlu
ZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW4KICAgICBpZiAo
cmVwYWludENvbnRhaW5lciA9PSB0aGlzKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodmll
dygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKS5pc1BhaW50T2Zmc2V0Q2FjaGVFbmFibGVk
KCkgJiYgIXJlcGFpbnRDb250YWluZXIpIHsKKyAgICBpZiAoIXJlcGFpbnRDb250YWluZXIgJiYg
dmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKS5pc1BhaW50T2Zmc2V0Q2FjaGVFbmFi
bGVkKCkpIHsKICAgICAgICAgYXV0byogbGF5b3V0U3RhdGUgPSB2aWV3KCkuZnJhbWVWaWV3KCku
bGF5b3V0Q29udGV4dCgpLmxheW91dFN0YXRlKCk7CiAgICAgICAgIExheW91dFNpemUgb2Zmc2V0
ID0gbGF5b3V0U3RhdGUtPnBhaW50T2Zmc2V0KCkgKyBsb2NhdGlvbk9mZnNldCgpOwogICAgICAg
ICBpZiAoc3R5bGUoKS5oYXNJbkZsb3dQb3NpdGlvbigpICYmIGxheWVyKCkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>