<?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>211991</bug_id>
          
          <creation_ts>2020-05-16 17:21:06 -0700</creation_ts>
          <short_desc>Some color-related cleanup</short_desc>
          <delta_ts>2020-05-18 10:42:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1653371</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-16 17:21:06 -0700</bug_when>
    <thetext>Some color-related cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653372</commentid>
    <comment_count>1</comment_count>
      <attachid>399576</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-16 17:23:30 -0700</bug_when>
    <thetext>Created attachment 399576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653373</commentid>
    <comment_count>2</comment_count>
      <attachid>399577</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-16 17:43:30 -0700</bug_when>
    <thetext>Created attachment 399577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653376</commentid>
    <comment_count>3</comment_count>
      <attachid>399577</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-16 18:07:23 -0700</bug_when>
    <thetext>Comment on attachment 399577
Patch

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

&gt; Source/WebCore/platform/graphics/Color.cpp:571
&gt; +    float r, g, b, a;
&gt; +    getRGBA(r, g, b, a);

Is there any good reason getRGBA() should take out parameters? Is it just for ADL to distinguish between float and double? Is the double version really necessary or used (I ask without looking)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653379</commentid>
    <comment_count>4</comment_count>
      <attachid>399577</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-16 18:11:23 -0700</bug_when>
    <thetext>Comment on attachment 399577
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/Color.cpp:571
&gt;&gt; +    getRGBA(r, g, b, a);
&gt; 
&gt; Is there any good reason getRGBA() should take out parameters? Is it just for ADL to distinguish between float and double? Is the double version really necessary or used (I ask without looking)?

I will try this a follow up cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653380</commentid>
    <comment_count>5</comment_count>
      <attachid>399577</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-16 18:17:18 -0700</bug_when>
    <thetext>Comment on attachment 399577
Patch

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

&gt; Source/WebCore/platform/graphics/Color.h:218
&gt; +    // This will convert non-sRGB colorspace colors into sRGB.
&gt; +    FloatComponents toSRGBAComponentsLossy() const;

I think you want to forward declare FloatComponents in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653382</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-16 18:36:55 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #3)
&gt; Comment on attachment 399577 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=399577&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/Color.cpp:571
&gt; &gt; +    float r, g, b, a;
&gt; &gt; +    getRGBA(r, g, b, a);
&gt; 
&gt; Is there any good reason getRGBA() should take out parameters? Is it just
&gt; for ADL to distinguish between float and double? Is the double version
&gt; really necessary or used (I ask without looking)?

No, getRGBA, getHSL etc can return FloatComponents. I&apos;ll do that in a followup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653390</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-16 21:56:10 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/261791/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653391</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-16 21:57:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/63312412&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653421</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-17 10:45:11 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #6)
&gt; (In reply to Sam Weinig from comment #3)
&gt; &gt; Comment on attachment 399577 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=399577&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/Color.cpp:571
&gt; &gt; &gt; +    float r, g, b, a;
&gt; &gt; &gt; +    getRGBA(r, g, b, a);
&gt; &gt; 
&gt; &gt; Is there any good reason getRGBA() should take out parameters? Is it just
&gt; &gt; for ADL to distinguish between float and double? Is the double version
&gt; &gt; really necessary or used (I ask without looking)?
&gt; 
&gt; No, getRGBA, getHSL etc can return FloatComponents. I&apos;ll do that in a
&gt; followup.

Ok. Cool. Can we reconsider the name FloatComponents. I would much prefer something that included the work Color in it. Perhaps just ColorFloatComponents? Or make it a template and combine it with ColorComponents to create ColorComponents&lt;float&gt;/ColorComponents&lt;uint8_t&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653422</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-05-17 10:46:46 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #9)
&gt; (In reply to Simon Fraser (smfr) from comment #6)
&gt; &gt; (In reply to Sam Weinig from comment #3)
&gt; &gt; &gt; Comment on attachment 399577 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=399577&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/graphics/Color.cpp:571
&gt; &gt; &gt; &gt; +    float r, g, b, a;
&gt; &gt; &gt; &gt; +    getRGBA(r, g, b, a);
&gt; &gt; &gt; 
&gt; &gt; &gt; Is there any good reason getRGBA() should take out parameters? Is it just
&gt; &gt; &gt; for ADL to distinguish between float and double? Is the double version
&gt; &gt; &gt; really necessary or used (I ask without looking)?
&gt; &gt; 
&gt; &gt; No, getRGBA, getHSL etc can return FloatComponents. I&apos;ll do that in a
&gt; &gt; followup.
&gt; 
&gt; Ok. Cool. Can we reconsider the name FloatComponents. I would much prefer
&gt; something that included the work Color in it. Perhaps just
&gt; ColorFloatComponents? Or make it a template and combine it with
&gt; ColorComponents to create ColorComponents&lt;float&gt;/ColorComponents&lt;uint8_t&gt;?

Or add some additional types and have RGBAFloatComponents/HSLAFloatComponents/HSVAFloatComponents?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653662</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-18 10:42:33 -0700</bug_when>
    <thetext>Excited to see this progress. I have notes about a lot of improvements for Color that I’d like to make, and I hope after you do some of these things there’s almost nothing left for me.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399576</attachid>
            <date>2020-05-16 17:23:30 -0700</date>
            <delta_ts>2020-05-16 17:35:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211991-20200516172329.patch</filename>
            <type>text/plain</type>
            <size>19475</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIyN2E4MzIwNmY1OGU5
M2U4NmQ1NDQyNTAyMDE2MjA2Mjg2ZmEzZi4uNjIyYzk4YWY1OTdmYzliMGUwMTY0MmMwOWE1NDQ1
NTg0MjY3MGM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTA1LTE2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgY29sb3It
cmVsYXRlZCBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTE5OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDaGFuZ2UgRmxvYXRDb21wb25lbnRzIGFuZCBDb2xvckNvbXBvbmVudHMgdG8gdXNl
IHN0ZDo6YXJyYXk8Pi4KKworICAgICAgICBBZGQgQ29sb3I6OnRvU1JHQkFDb21wb25lbnRzTG9z
c3koKSB0byBtYWtlIGV4cGxpY2l0IHBvdGVudGlhbGx5IGxvc3N5IGNvbnZlcnNpb25zCisgICAg
ICAgIGJldHdlZW4gUDMgYW5kIHNSR0IgY29sb3JzLCBhbmQgY2FsbCBpdCBpbiBwbGFjZXMgd2hl
cmUgd2UgZG8gdGhhdCBjb252ZXJzaW9uLgorCisgICAgICAgIEFkZCBjb25zdCBpbiBhIGZldyBw
bGFjZXMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Q29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3I6OnRvU1JHQkFDb21wb25lbnRzTG9zc3kgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3I6OmFzRXh0ZW5kZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JNYXRyaXg6OkNvbG9yTWF0cml4KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
RmxvYXRDb21wb25lbnRzOjpGbG9hdENvbXBvbmVudHMpOgorICAgICAgICAoKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuZGVkQ29sb3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bmRlZENvbG9yOjpjc3NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9F
eHRlbmRlZENvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpyZWQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5kZWRDb2xvcjo6Z3JlZW4gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5kZWRDb2xvcjo6Ymx1ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbmRlZENvbG9yOjphbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bmRlZENvbG9yOjpjaGFubmVscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENv
bG9yOjpFeHRlbmRlZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
ckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxlYWtDR0NvbG9yKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRVR1cmJ1bGVuY2U6OmZpbGxSZWdpb24gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dmVydExpZ2h0bmVzc0ZpbHRlck9wZXJhdGlvbjo6dHJhbnNmb3JtQ29sb3IgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SW52ZXJ0TGlnaHRuZXNzRmlsdGVyT3BlcmF0aW9uOjppbnZlcnNlVHJh
bnNmb3JtQ29sb3IgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xv
ckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6b3BlcmF0b3IgR2RrUkdCQSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29sb3I6Om9wZXJhdG9yIEQyRDFfQ09MT1JfRiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb2xvcjo6b3BlcmF0b3IgRDJEMV9WRUNUT1JfNEYgY29uc3QpOgor
CiAyMDIwLTA1LTE0ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBFeHBvc2UgaXNDb2x1bW5IZWFkZXJDZWxsIGFuZCBpc1Jvd0hlYWRlckNlbGwgdGhy
b3VnaCBBWENvcmVPYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA1YTFiNDVhMjFlZjcwMDRk
OGY1NTBjMjhhZTkzMmIxMzIxZWQzMTQyLi5iMTAyNDA0OTFjODQ0MjUzMDUzMzA1OTUwZmQyMWIx
MjRjZjVlNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEwODAsNiArMTA4MCw3IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JIYXNoLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Db2xvclNwYWNlLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGll
cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9EYXNoQXJyYXkuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDNhOGY4ZmE2ZGJjNjcxZmJjMzRjNTkyMGY4YWQ0Y2MzNjNj
YjkwZjguLjBhMTEyNDlkYTA0M2M2MDRmZmM4ZGE1Y2JmZGEyODgyYzAxYmY1ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM2
Myw2ICszNjMsNyBAQAogCQkwRkVBM0U4MDE5MUIzMTY5MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZFQTNFN0UxOTFCMzE2OTAwMEYxQjU1IC8qIFNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRkVBM0U4NDE5MUIzMUJGMDAwRjFCNTUgLyogU2Nyb2xsaW5nU3Rh
dGVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRUEzRTgyMTkxQjMxQkYwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGRUEzRTg4MTkxQjNCRDcwMDBGMUI1NSAvKiBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkVBM0U4NjE5MUIzQkQ3MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGRUFGNjZCMjNCRkMzOUUwMDQwMzBEQSAvKiBDb2xvclV0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNkM3NkMx
RkJGQjdBNjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFQzEyMEMyMkJGMkNEMjAwNEU5RDM1IC8q
IExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDMTIwOTIyQkYyQ0M3MDA0RTlEMzUgLyogTGF5ZXJBbmNl
c3RvckNsaXBwaW5nU3RhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRkYzQjkyOTFFRTNCNkRFMDBCODQxNDQgLyogSlNET01RdWFkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkYzQjkyNTFFRTNC
NkRFMDBCODQxNDQgLyogSlNET01RdWFkLmggKi87IH07CiAJCTBGRjNCOTJCMUVFM0I2REUwMEI4
NDE0NCAvKiBKU0RPTVF1YWRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkYzQjkyNzFFRTNCNkRFMDBCODQxNDQgLyogSlNET01RdWFkSW5pdC5o
ICovOyB9OwpAQCAtMjk4NzYsNiArMjk4NzcsNyBAQAogCQkJCUNFNTE2OUU3MjFGMUI4NDcwMEVB
NEY3OCAvKiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRURFM0E1MDAwQzdBNDMwNjAw
OTU2QTM3IC8qIENvbG9yTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzgyREY1ODEwQThENUM5
MDA5MjU2NTIgLyogQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQUY2NkIyM0JG
QzM5RTAwNDAzMERBIC8qIENvbG9yVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0RE
NDU0RTEyMzZDOTVDMDA5QTc5ODUgLyogQ29sdW1uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDNFREQ2N0YxQjQ4NURCRjAwNjQwRTc1IC8qIENvbWJpbmVkRmlsdGVyc0FscGhhYmV0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkyNkU5NDREOTFBQzRCMkREMDA3Qjg1QjUgLyogQ29tYmluZWRVUkxG
aWx0ZXJzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcAppbmRleCA3MzgwMjVlNTM1MzJhMDkwOGViZjZiMGVhNzhhZTgyNzg1M2RhODc4
Li5mMDkyMmE4OGQyZDQ2OTE0NWQ0ZTNkNjkwNGExZTE0OGE4ZTgxNmY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCkBAIC0yNDAsMTIgKzI0MCwxMiBAQCBD
b2xvcjo6Q29sb3IoQ29sb3ImJiBvdGhlcikKICAgICAqdGhpcyA9IFdURk1vdmUob3RoZXIpOwog
fQogCi1Db2xvcjo6Q29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKQorQ29sb3I6OkNvbG9yKGZsb2F0IGMxLCBmbG9hdCBjMiwgZmxv
YXQgYzMsIGZsb2F0IGFscGhhLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgLy8gWmVy
byB0aGUgdW5pb24sIGp1c3QgaW4gY2FzZSBhIDMyLWJpdCBzeXN0ZW0gb25seSBhc3NpZ25zIHRo
ZQogICAgIC8vIHRvcCAzMiBiaXRzIHdoZW4gY29weWluZyB0aGUgZXh0ZW5kZWRDb2xvciBwb2lu
dGVyIGJlbG93LgogICAgIG1fY29sb3JEYXRhLnJnYmFBbmRGbGFncyA9IDA7Ci0gICAgYXV0byBl
eHRlbmRlZENvbG9yUmVmID0gRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKHIsIGcsIGIsIGEsIGNvbG9y
U3BhY2UpOworICAgIGF1dG8gZXh0ZW5kZWRDb2xvclJlZiA9IEV4dGVuZGVkQ29sb3I6OmNyZWF0
ZShjMSwgYzIsIGMzLCBhbHBoYSwgY29sb3JTcGFjZSk7CiAgICAgbV9jb2xvckRhdGEuZXh0ZW5k
ZWRDb2xvciA9ICZleHRlbmRlZENvbG9yUmVmLmxlYWtSZWYoKTsKICAgICBBU1NFUlQoaXNFeHRl
bmRlZCgpKTsKIH0KQEAgLTU1NSw2ICs1NTUsMjMgQEAgdm9pZCBDb2xvcjo6Z2V0SFNWKGRvdWJs
ZSYgaHVlLCBkb3VibGUmIHNhdHVyYXRpb24sIGRvdWJsZSYgdmFsdWUpIGNvbnN0CiAgICAgdmFs
dWUgPSBtYXg7CiB9CiAKK0Zsb2F0Q29tcG9uZW50cyBDb2xvcjo6dG9TUkdCQUNvbXBvbmVudHNM
b3NzeSgpIGNvbnN0Cit7CisgICAgaWYgKGlzRXh0ZW5kZWQoKSkgeworICAgICAgICBhdXRvJiBl
eHRlbmRlZENvbG9yID0gYXNFeHRlbmRlZCgpOworICAgICAgICBzd2l0Y2ggKGV4dGVuZGVkQ29s
b3IuY29sb3JTcGFjZSgpKSB7CisgICAgICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAg
ICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAgIGNhc2UgQ29sb3JTcGFjZTo6
RGlzcGxheVAzOgorICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBjb252ZXJ0IGlu
dG8gc1JHQiBhbmQgc2hvdWxkLgorICAgICAgICAgICAgcmV0dXJuIHt7IGV4dGVuZGVkQ29sb3Iu
cmVkKCksIGV4dGVuZGVkQ29sb3IuZ3JlZW4oKSwgZXh0ZW5kZWRDb2xvci5ibHVlKCksIGV4dGVu
ZGVkQ29sb3IuYWxwaGEoKSB9fTsgLy8gRG91YmxlIGJyYWNlcyByZXF1aXJlZCB0byBhdm9pZCB3
YXJuaW5nIHdpdGggb2xkZXIgY2xhbmcgdmVyc2lvbnMuCisgICAgICAgIH0KKyAgICB9CisgICAg
ZmxvYXQgciwgZywgYiwgYTsKKyAgICBnZXRSR0JBKHIsIGcsIGIsIGEpOworICAgIHJldHVybiB7
eyBhLCBnLCBiLCBhIH19OworfQorCiBDb2xvciBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQihS
R0JBMzIgcGl4ZWxDb2xvcikKIHsKICAgICBpZiAocGl4ZWxDb2xvci5pc1Zpc2libGUoKSAmJiAh
cGl4ZWxDb2xvci5pc09wYXF1ZSgpKQpAQCAtNjA3LDcgKzYyNCw3IEBAIHZvaWQgQ29sb3I6OnRh
Z0FzVmFsaWQoKQogICAgIG1fY29sb3JEYXRhLnJnYmFBbmRGbGFncyB8PSB2YWxpZFJHQkFDb2xv
cjsKIH0KIAotRXh0ZW5kZWRDb2xvciYgQ29sb3I6OmFzRXh0ZW5kZWQoKSBjb25zdAorY29uc3Qg
RXh0ZW5kZWRDb2xvciYgQ29sb3I6OmFzRXh0ZW5kZWQoKSBjb25zdAogewogICAgIEFTU0VSVChp
c0V4dGVuZGVkKCkpOwogICAgIHJldHVybiAqbV9jb2xvckRhdGEuZXh0ZW5kZWRDb2xvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCmluZGV4IGI5NDI0Y2M0YzMwNmMx
ZjVjMzRlM2FkZDFlZWQ3YmU3MTQ3ZGIzYmYuLjMwYjM3NGM5ZDU5NDYyYTc2NTc1ZGQwODdjZWYx
ZTBkNTcxNmY1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApA
QCAtMTY5LDcgKzE2OSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGNyZWF0ZXMgYW4gRXh0ZW5k
ZWRDb2xvci4KICAgICAvLyBGSVhNRTogSWYgdGhlIGNvbG9yU3BhY2UgaXMgc1JHQiBhbmQgdGhl
IHZhbHVlcyBjYW4gYWxsIGJlCiAgICAgLy8gY29udmVydGVkIGV4YWN0bHkgdG8gaW50ZWdlcnMs
IHdlIHNob3VsZCBtYWtlIGEgbm9ybWFsIENvbG9yLgotICAgIFdFQkNPUkVfRVhQT1JUIENvbG9y
KGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IENvbG9yU3BhY2UpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3IoY29uc3QgQ29sb3ImKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvcihDb2xvciYmKTsKQEAgLTIxNCw2ICsyMTQsOSBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRIU0woZG91YmxlJiBoLCBkb3VibGUm
IHMsIGRvdWJsZSYgbCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRIU1YoZG91
YmxlJiBoLCBkb3VibGUmIHMsIGRvdWJsZSYgdikgY29uc3Q7CiAKKyAgICAvLyBUaGlzIHdpbGwg
Y29udmVydCBub24tc1JHQiBjb2xvcnNwYWNlIGNvbG9ycyBpbnRvIHNSR0IuCisgICAgRmxvYXRD
b21wb25lbnRzIHRvU1JHQkFDb21wb25lbnRzTG9zc3koKSBjb25zdDsKKwogICAgIENvbG9yIGxp
Z2h0KCkgY29uc3Q7CiAgICAgQ29sb3IgZGFyaygpIGNvbnN0OwogCkBAIC0yNzIsNyArMjc1LDcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuICEobV9jb2xvckRhdGEucmdiYUFuZEZs
YWdzICYgaW52YWxpZFJHQkFDb2xvcik7CiAgICAgfQotICAgIFdFQkNPUkVfRVhQT1JUIEV4dGVu
ZGVkQ29sb3ImIGFzRXh0ZW5kZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBF
eHRlbmRlZENvbG9yJiBhc0V4dGVuZGVkKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBD
b2xvciYgb3BlcmF0b3I9KGNvbnN0IENvbG9yJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3Im
IG9wZXJhdG9yPShDb2xvciYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAppbmRleCA3ZTlmOTg5MmRjM2MxNGFjZWVkODM4MTBm
YjUzYWVlYjc4MDk4YTFmLi5jMmI4NjQ0OGNlOTBkNWRhZDdmYjEyMzJjNTU2ZmY2OTNhNjFlMDJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGls
aXRpZXMuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgQ29sb3JNYXRyaXg6OkNvbG9yTWF0cml4KCkK
ICAgICBtYWtlSWRlbnRpdHkoKTsKIH0KIAotQ29sb3JNYXRyaXg6OkNvbG9yTWF0cml4KGZsb2F0
IHZhbHVlc1syMF0pCitDb2xvck1hdHJpeDo6Q29sb3JNYXRyaXgoY29uc3QgZmxvYXQgdmFsdWVz
WzIwXSkKIHsKICAgICBtX21hdHJpeFswXVswXSA9IHZhbHVlc1swXTsKICAgICBtX21hdHJpeFsw
XVsxXSA9IHZhbHVlc1sxXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvclV0aWxpdGllcy5oCmluZGV4IDc4ZWY4MjdlNWM5NzQ1NjBmNTQ1MTY2ZmJlZmNmN2Y2
YjU2YmNkZTcuLjIzNDRjMmI5ZWQ1M2FkZTg1OTVmMWJiNTE3ZDUwZGM0NDFlMDgwOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaApA
QCAtMjUsMTIgKzI1LDE0IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sb3IuaCIK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bWF0aC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbG9yOworCiBzdHJ1Y3QgRmxvYXRD
b21wb25lbnRzIHsKICAgICBGbG9hdENvbXBvbmVudHMoZmxvYXQgYSA9IDAsIGZsb2F0IGIgPSAw
LCBmbG9hdCBjID0gMCwgZmxvYXQgZCA9IDApCiAgICAgewpAQCAtNDAsNiArNDIsMTQgQEAgc3Ry
dWN0IEZsb2F0Q29tcG9uZW50cyB7CiAgICAgICAgIGNvbXBvbmVudHNbM10gPSBkOwogICAgIH0K
IAorICAgIEZsb2F0Q29tcG9uZW50cyhjb25zdCBzdGQ6OmFycmF5PGZsb2F0LCA0PiYgdmFsdWVz
KQorICAgIHsKKyAgICAgICAgY29tcG9uZW50c1swXSA9IHZhbHVlc1swXTsKKyAgICAgICAgY29t
cG9uZW50c1sxXSA9IHZhbHVlc1sxXTsKKyAgICAgICAgY29tcG9uZW50c1syXSA9IHZhbHVlc1sy
XTsKKyAgICAgICAgY29tcG9uZW50c1szXSA9IHZhbHVlc1szXTsKKyAgICB9CisKICAgICBGbG9h
dENvbXBvbmVudHMoY29uc3QgQ29sb3ImKTsKIAogICAgIEZsb2F0Q29tcG9uZW50cyYgb3BlcmF0
b3IrPShjb25zdCBGbG9hdENvbXBvbmVudHMmIHJocykKQEAgLTkxLDcgKzEwMSw3IEBAIHN0cnVj
dCBGbG9hdENvbXBvbmVudHMgewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAg
IGZsb2F0IGNvbXBvbmVudHNbNF07CisgICAgc3RkOjphcnJheTxmbG9hdCwgND4gY29tcG9uZW50
czsKIH07CiAKIHN0cnVjdCBDb2xvckNvbXBvbmVudHMgewpAQCAtMTE1LDcgKzEyNSw3IEBAIHN0
cnVjdCBDb2xvckNvbXBvbmVudHMgewogICAgICAgICByZXR1cm4gY29tcG9uZW50c1swXSA8PCAy
NCB8IGNvbXBvbmVudHNbMV0gPDwgMTYgfCBjb21wb25lbnRzWzJdIDw8IDggfCBjb21wb25lbnRz
WzNdOwogICAgIH0KIAotICAgIHVpbnQ4X3QgY29tcG9uZW50c1s0XSB7IH07CisgICAgc3RkOjph
cnJheTx1aW50OF90LCA0PiBjb21wb25lbnRzOwogfTsKIAogaW5saW5lIENvbG9yQ29tcG9uZW50
cyBwZXJDb21wb25lbnRNYXgoY29uc3QgQ29sb3JDb21wb25lbnRzJiBhLCBjb25zdCBDb2xvckNv
bXBvbmVudHMmIGIpCkBAIC0xNzIsNyArMTgyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBDb2xv
ck1hdHJpeCBzZXBpYU1hdHJpeChmbG9hdCk7CiAKICAgICBDb2xvck1hdHJpeCgpOwotICAgIENv
bG9yTWF0cml4KGZsb2F0WzIwXSk7CisgICAgQ29sb3JNYXRyaXgoY29uc3QgZmxvYXRbMjBdKTsK
ICAgICAKICAgICB2b2lkIHRyYW5zZm9ybUNvbG9yQ29tcG9uZW50cyhGbG9hdENvbXBvbmVudHMm
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RXh0ZW5kZWRDb2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bmRlZENvbG9yLmNwcAppbmRleCA1YWQ4Y2JmZTExNDljN2VjMDAzYmNjMGJiOWU3MzVmOTFmMGY5
MGNkLi5hZTkxYjAwMWU5MjE3ZjE4MjVlOTVlZmI1YzRjNDcwMzg5MzMyYjBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcApAQCAt
MzEsOSArMzEsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxFeHRlbmRlZENvbG9y
PiBFeHRlbmRlZENvbG9yOjpjcmVhdGUoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1
ZSwgZmxvYXQgYWxwaGEsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK1JlZjxFeHRlbmRlZENvbG9y
PiBFeHRlbmRlZENvbG9yOjpjcmVhdGUoZmxvYXQgYzEsIGZsb2F0IGMyLCBmbG9hdCBjMywgZmxv
YXQgYWxwaGEsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBFeHRlbmRlZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhLCBjb2xvclNwYWNlKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRXh0ZW5kZWRDb2xvcihjMSwgYzIsIGMzLCBhbHBo
YSwgY29sb3JTcGFjZSkpOwogfQogCiBTdHJpbmcgRXh0ZW5kZWRDb2xvcjo6Y3NzVGV4dCgpIGNv
bnN0CkBAIC01Myw2ICs1Myw3IEBAIFN0cmluZyBFeHRlbmRlZENvbG9yOjpjc3NUZXh0KCkgY29u
c3QKIAogICAgIGlmIChXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoYWxwaGEoKSwgMS4wZikpCiAg
ICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJjb2xvcigiLCBjb2xvclNwYWNlLCAnICcsIHJlZCgp
LCAnICcsIGdyZWVuKCksICcgJywgYmx1ZSgpLCAnKScpOworCiAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoImNvbG9yKCIsIGNvbG9yU3BhY2UsICcgJywgcmVkKCksICcgJywgZ3JlZW4oKSwgJyAnLCBi
bHVlKCksICIgLyAiLCBhbHBoYSgpLCAnKScpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmgKaW5kZXggMTI3N2Y5NDhmMTIxNTU5NThj
ODkzMmNlOWM2MTczNTgxZTMxNGFmOS4uY2E4MmI4N2ViZWJlMDZmOWRjMDdhNDYzMGM4ODE4ZWNj
MWE4NTk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0
ZW5kZWRDb2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVu
ZGVkQ29sb3IuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgog
CisjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
QEAgLTM1LDMxICszNiwzOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV4dGVuZGVk
Q29sb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxFeHRlbmRlZENvbG9yPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxFeHRlbmRlZENvbG9yPiBjcmVhdGUoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwg
ZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpTUkdCKTsK
KyAgICBzdGF0aWMgUmVmPEV4dGVuZGVkQ29sb3I+IGNyZWF0ZShmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCBhbHBoYSwgQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0IpOwogCi0gICAgZmxv
YXQgcmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZWQ7IH0KLSAgICBmbG9hdCBncmVlbigpIGNvbnN0
IHsgcmV0dXJuIG1fZ3JlZW47IH0KLSAgICBmbG9hdCBibHVlKCkgY29uc3QgeyByZXR1cm4gbV9i
bHVlOyB9Ci0gICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX2FscGhhOyB9CisgICAg
ZmxvYXQgcmVkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NoYW5uZWxzLmNvbXBv
bmVudHNbMF07CisgICAgfQorCisgICAgZmxvYXQgZ3JlZW4oKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fY2hhbm5lbHMuY29tcG9uZW50c1sxXTsKKyAgICB9CisKKyAgICBmbG9hdCBi
bHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NoYW5uZWxzLmNvbXBvbmVudHNb
Ml07CisgICAgfQorCisgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxz
LmNvbXBvbmVudHNbM107IH0KKworICAgIGNvbnN0IEZsb2F0Q29tcG9uZW50cyYgY2hhbm5lbHMo
KSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxzOyB9CiAKICAgICBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgRXh0ZW5kZWRDb2xvcihm
bG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Up
Ci0gICAgICAgIDogbV9yZWQocikKLSAgICAgICAgLCBtX2dyZWVuKGcpCi0gICAgICAgICwgbV9i
bHVlKGIpCi0gICAgICAgICwgbV9hbHBoYShhKQorICAgIEV4dGVuZGVkQ29sb3IoZmxvYXQgYzEs
IGZsb2F0IGMyLCBmbG9hdCBjMywgZmxvYXQgYWxwaGEsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkK
KyAgICAgICAgOiBtX2NoYW5uZWxzKGMxLCBjMiwgYzMsIGFscGhhKQogICAgICAgICAsIG1fY29s
b3JTcGFjZShjb2xvclNwYWNlKQogICAgIHsgfQogCi0gICAgZmxvYXQgbV9yZWQgeyAwIH07Ci0g
ICAgZmxvYXQgbV9ncmVlbiB7IDAgfTsKLSAgICBmbG9hdCBtX2JsdWUgeyAwIH07Ci0gICAgZmxv
YXQgbV9hbHBoYSB7IDAgfTsKLQorICAgIEZsb2F0Q29tcG9uZW50cyBtX2NoYW5uZWxzOwogICAg
IENvbG9yU3BhY2UgbV9jb2xvclNwYWNlIHsgQ29sb3JTcGFjZTo6U1JHQiB9OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAppbmRleCA3
ODM4ZjM1MzFjMmJlNTA2NTk1MmFlMWNiMzgxODdiYzliNzJlOTVkLi5kNzFhYzYyNDUyNmQ5Yjlm
OGQxZDAzNGZmNThkNzllNDdkYTcyOGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcApAQCAtMTA1LDExICsxMDUsMTIgQEAgc3RhdGljIENH
Q29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIENHRmxvYXQg
Y29tcG9uZW50c1s0XTsKICAgICBpZiAoY29sb3IuaXNFeHRlbmRlZCgpKSB7Ci0gICAgICAgIEV4
dGVuZGVkQ29sb3ImIGV4dGVuZGVkQ29sb3IgPSBjb2xvci5hc0V4dGVuZGVkKCk7Ci0gICAgICAg
IGNvbXBvbmVudHNbMF0gPSBleHRlbmRlZENvbG9yLnJlZCgpOwotICAgICAgICBjb21wb25lbnRz
WzFdID0gZXh0ZW5kZWRDb2xvci5ncmVlbigpOwotICAgICAgICBjb21wb25lbnRzWzJdID0gZXh0
ZW5kZWRDb2xvci5ibHVlKCk7Ci0gICAgICAgIGNvbXBvbmVudHNbM10gPSBleHRlbmRlZENvbG9y
LmFscGhhKCk7CisgICAgICAgIGNvbnN0IGF1dG8mIGV4dGVuZGVkQ29sb3IgPSBjb2xvci5hc0V4
dGVuZGVkKCk7CisgICAgICAgIGF1dG8gY2hhbm5lbHMgPSBleHRlbmRlZENvbG9yLmNoYW5uZWxz
KCk7CisgICAgICAgIGNvbXBvbmVudHNbMF0gPSBjaGFubmVscy5jb21wb25lbnRzWzBdOworICAg
ICAgICBjb21wb25lbnRzWzFdID0gY2hhbm5lbHMuY29tcG9uZW50c1sxXTsKKyAgICAgICAgY29t
cG9uZW50c1syXSA9IGNoYW5uZWxzLmNvbXBvbmVudHNbMl07CisgICAgICAgIGNvbXBvbmVudHNb
M10gPSBjaGFubmVscy5jb21wb25lbnRzWzNdOwogICAgICAgICBzd2l0Y2ggKGV4dGVuZGVkQ29s
b3IuY29sb3JTcGFjZSgpKSB7CiAgICAgICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKICAgICAg
ICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCksIGNvbXBvbmVu
dHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVR1cmJ1bGVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVR1cmJ1bGVuY2UuY3BwCmluZGV4IGYxNmI5YjMxYTU1OWQ3NDYyMWZmMjMyNDRkYTkz
MmRmNDMxNjhkNDkuLmU2YjhjMDgwZjJmMDQ1NTIwMDQzZDg1MDdmMmMzMWFmMDllMWUyMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJi
dWxlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVHVyYnVsZW5jZS5jcHAKQEAgLTM4Miw3ICszODIsNyBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6
ZmlsbFJlZ2lvbihVaW50OENsYW1wZWRBcnJheSYgcGl4ZWxBcnJheSwgY29uc3QgUGFpbnRpbmdE
YXRhJgogICAgICAgICAgICAgcG9pbnQuc2V0WChwb2ludC54KCkgKyAxKTsKICAgICAgICAgICAg
IEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGludmVyc2VUcmFuc2Zyb20ubWFwUG9pbnQocG9pbnQp
OwogICAgICAgICAgICAgQ29sb3JDb21wb25lbnRzIHZhbHVlcyA9IGNhbGN1bGF0ZVR1cmJ1bGVu
Y2VWYWx1ZUZvclBvaW50KHBhaW50aW5nRGF0YSwgc3RpdGNoRGF0YSwgbG9jYWxQb2ludCk7Ci0g
ICAgICAgICAgICBwaXhlbEFycmF5LnNldFJhbmdlKHZhbHVlcy5jb21wb25lbnRzLCA0LCBpbmRl
eE9mUGl4ZWxDaGFubmVsKTsKKyAgICAgICAgICAgIHBpeGVsQXJyYXkuc2V0UmFuZ2UodmFsdWVz
LmNvbXBvbmVudHMuZGF0YSgpLCA0LCBpbmRleE9mUGl4ZWxDaGFubmVsKTsKICAgICAgICAgICAg
IGluZGV4T2ZQaXhlbENoYW5uZWwgKz0gNDsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3Bl
cmF0aW9uLmNwcAppbmRleCAzMGJiNDhjYzhmMGM0OTU0NDhhYjY1ZjY4MTE3MmNjYzZiY2E1MzVj
Li4xNzAzMmQyNDQxOTBkMWZkMmIwZDFkOTcwZGRmZTEwMmQzYWVmNDMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb24uY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgYm9vbCBJbnZlcnRMaWdodG5lc3NGaWx0
ZXJPcGVyYXRpb246OnRyYW5zZm9ybUNvbG9yKEZsb2F0Q29tcG9uZW50cyYgc1JHQkNvbG9yQ28K
ICAgICBzUkdCQ29sb3JDb21wb25lbnRzID0gSFNMVG9TUkdCKGhzbENvbXBvbmVudHMpOwogICAg
IAogICAgIC8vIEFwcGx5IHRoZSBtYXRyaXguIFNlZSByZGFyOi8vcHJvYmxlbS80MTE0NjY1MCBm
b3IgaG93IHRoaXMgbWF0cml4IHdhcyBkZXJpdmVkLgotICAgIGZsb2F0IG1hdHJpeFZhbHVlc1sy
MF0gPSB7CisgICAgY29uc3QgZmxvYXQgbWF0cml4VmFsdWVzWzIwXSA9IHsKICAgICAgICAtMC43
NzAsICAwLjA1OSwgLTAuMDg5LCAwLCAxLAogICAgICAgICAwLjAzMCwgLTAuNzQxLCAtMC4wODks
IDAsIDEsCiAgICAgICAgIDAuMDMwLCAgMC4wNTksIC0wLjg5MCwgMCwgMSwKQEAgLTI1Miw3ICsy
NTIsNyBAQCBib29sIEludmVydExpZ2h0bmVzc0ZpbHRlck9wZXJhdGlvbjo6aW52ZXJzZVRyYW5z
Zm9ybUNvbG9yKEZsb2F0Q29tcG9uZW50cyYgc1JHQgogewogICAgIEZsb2F0Q29tcG9uZW50cyBy
Z2JDb21wb25lbnRzID0gc1JHQkNvbG9yQ29tcG9uZW50czsKICAgICAvLyBBcHBseSB0aGUgbWF0
cml4LgotICAgIGZsb2F0IG1hdHJpeFZhbHVlc1syMF0gPSB7CisgICAgY29uc3QgZmxvYXQgbWF0
cml4VmFsdWVzWzIwXSA9IHsKICAgICAgICAgLTEuMzAwLCAtMC4wOTcsICAwLjE0NywgMCwgMS4y
NSwKICAgICAgICAgLTAuMDQ5LCAtMS4zNDcsICAwLjE0NiwgMCwgMS4yNSwKICAgICAgICAgLTAu
MDQ5LCAtMC4wOTcsIC0xLjEwNCwgMCwgMS4yNSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ndGsvQ29sb3JHdGsuY3BwCmluZGV4IDZmYjFlOTQyZDFmYWMyYjZhMTNj
OWNhOTBlOTQwNzdlMmYyMTJiNGEuLjQzZGI1YzNmYjQ5MTdkYTQxOGNkMjA5NmEwYmZkOGVjZDBm
ZWEyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9D
b2xvckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Nv
bG9yR3RrLmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkNvbG9yLmgiCiAKKyNpbmNsdWRlICJDb2xvclV0aWxpdGllcy5oIgogI2luY2x1ZGUgPGdk
ay9nZGsuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsOCArMzYsMTAgQEAgQ29sb3I6
OkNvbG9yKGNvbnN0IEdka1JHQkEmIGMpCiAKIENvbG9yOjpvcGVyYXRvciBHZGtSR0JBKCkgY29u
c3QKIHsKLSAgICBpZiAoaXNFeHRlbmRlZCgpKQotICAgICAgICByZXR1cm4geyBhc0V4dGVuZGVk
KCkucmVkKCksIGFzRXh0ZW5kZWQoKS5ncmVlbigpLCBhc0V4dGVuZGVkKCkuYmx1ZSgpLCBhc0V4
dGVuZGVkKCkuYWxwaGEoKSB9OworICAgIGlmIChpc0V4dGVuZGVkKCkpIHsKKyAgICAgICAgYXV0
byBhc1JHQkEgPSB0b1NSR0JBQ29tcG9uZW50c0xvc3N5KCk7CisgICAgICAgIHJldHVybiB7IGFz
UkdCQS5jb21wb25lbnRzWzBdLCBhc1JHQkEuY29tcG9uZW50c1sxXSwgYXNSR0JBLmNvbXBvbmVu
dHNbMl0sIGFzUkdCQS5jb21wb25lbnRzWzNdIH07CisgICAgfQogCiAjaWYgVVNFKEdUSzQpCiAg
ICAgZmxvYXQgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQ29sb3JEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vQ29sb3JEaXJlY3QyRC5jcHAKaW5kZXggOGMzMWI2
NzI2ZWE0NjcxOWNjNWFhZjViODgwNWQxZTNlYzkwODM0MC4uMjM4MjU1OTJmNGM4NDNlOGNjNWM4
YjIxYzRjMzJlN2UzM2EzZWMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Db2xvckRpcmVjdDJELmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgUExBVEZPUk0oV0lOKQogCisjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRl
IDxkMmQxLmg+CiAjaW5jbHVkZSA8ZDJkMV8xaGVscGVyLmg+CiAKQEAgLTQwLDE2ICs0MSwxOSBA
QCBDb2xvcjo6Q29sb3IoRDJEMV9DT0xPUl9GIGNvbG9yKQogCiBDb2xvcjo6b3BlcmF0b3IgRDJE
MV9DT0xPUl9GKCkgY29uc3QKIHsKLSAgICBmbG9hdCBjb2xvckFscGhhID0gYWxwaGEoKSAvIDI1
NS4wZjsKKyAgICBpZiAoaXNFeHRlbmRlZCgpKSB7CisgICAgICAgIGF1dG8gYXNSR0JBID0gdG9T
UkdCQUNvbXBvbmVudHNMb3NzeSgpOworICAgICAgICByZXR1cm4gRDJEMTo6Q29sb3JGKGFzUkdC
QS5jb21wb25lbnRzWzBdLCBhc1JHQkEuY29tcG9uZW50c1sxXSwgYXNSR0JBLmNvbXBvbmVudHNb
Ml0sIGFzUkdCQS5jb21wb25lbnRzWzNdKTsKKyAgICB9CiAKKyAgICBmbG9hdCBjb2xvckFscGhh
ID0gYWxwaGEoKSAvIDI1NS4wZjsKICAgICByZXR1cm4gRDJEMTo6Q29sb3JGKHJnYigpLnZhbHVl
KCksIGNvbG9yQWxwaGEpOwogfQogCiBDb2xvcjo6b3BlcmF0b3IgRDJEMV9WRUNUT1JfNEYoKSBj
b25zdAogewotICAgIGZsb2F0IHIsIGcsIGIsIGE7Ci0gICAgZ2V0UkdCQShyLCBnLCBiLCBhKTsK
LSAgICByZXR1cm4gRDJEMTo6VmVjdG9yNEYociwgZywgYiwgYSk7CisgICAgYXV0byBhc1JHQkEg
PSB0b1NSR0JBQ29tcG9uZW50c0xvc3N5KCk7CisgICAgcmV0dXJuIEQyRDE6OlZlY3RvcjRGKGFz
UkdCQS5jb21wb25lbnRzWzBdLCBhc1JHQkEuY29tcG9uZW50c1sxXSwgYXNSR0JBLmNvbXBvbmVu
dHNbMl0sIGFzUkdCQS5jb21wb25lbnRzWzNdKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399577</attachid>
            <date>2020-05-16 17:43:30 -0700</date>
            <delta_ts>2020-05-16 18:07:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211991-20200516174329.patch</filename>
            <type>text/plain</type>
            <size>19334</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIyN2E4MzIwNmY1OGU5
M2U4NmQ1NDQyNTAyMDE2MjA2Mjg2ZmEzZi4uNjIyYzk4YWY1OTdmYzliMGUwMTY0MmMwOWE1NDQ1
NTg0MjY3MGM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTA1LTE2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgY29sb3It
cmVsYXRlZCBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTE5OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDaGFuZ2UgRmxvYXRDb21wb25lbnRzIGFuZCBDb2xvckNvbXBvbmVudHMgdG8gdXNl
IHN0ZDo6YXJyYXk8Pi4KKworICAgICAgICBBZGQgQ29sb3I6OnRvU1JHQkFDb21wb25lbnRzTG9z
c3koKSB0byBtYWtlIGV4cGxpY2l0IHBvdGVudGlhbGx5IGxvc3N5IGNvbnZlcnNpb25zCisgICAg
ICAgIGJldHdlZW4gUDMgYW5kIHNSR0IgY29sb3JzLCBhbmQgY2FsbCBpdCBpbiBwbGFjZXMgd2hl
cmUgd2UgZG8gdGhhdCBjb252ZXJzaW9uLgorCisgICAgICAgIEFkZCBjb25zdCBpbiBhIGZldyBw
bGFjZXMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6Q29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3I6OnRvU1JHQkFDb21wb25lbnRzTG9zc3kgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29sb3I6OmFzRXh0ZW5kZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JNYXRyaXg6OkNvbG9yTWF0cml4KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
RmxvYXRDb21wb25lbnRzOjpGbG9hdENvbXBvbmVudHMpOgorICAgICAgICAoKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuZGVkQ29sb3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bmRlZENvbG9yOjpjc3NUZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9F
eHRlbmRlZENvbG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENvbG9yOjpyZWQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5kZWRDb2xvcjo6Z3JlZW4gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5kZWRDb2xvcjo6Ymx1ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbmRlZENvbG9yOjphbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bmRlZENvbG9yOjpjaGFubmVscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbmRlZENv
bG9yOjpFeHRlbmRlZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
ckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxlYWtDR0NvbG9yKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRVR1cmJ1bGVuY2U6OmZpbGxSZWdpb24gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dmVydExpZ2h0bmVzc0ZpbHRlck9wZXJhdGlvbjo6dHJhbnNmb3JtQ29sb3IgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SW52ZXJ0TGlnaHRuZXNzRmlsdGVyT3BlcmF0aW9uOjppbnZlcnNlVHJh
bnNmb3JtQ29sb3IgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xv
ckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcjo6b3BlcmF0b3IgR2RrUkdCQSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29sb3I6Om9wZXJhdG9yIEQyRDFfQ09MT1JfRiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb2xvcjo6b3BlcmF0b3IgRDJEMV9WRUNUT1JfNEYgY29uc3QpOgor
CiAyMDIwLTA1LTE0ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBFeHBvc2UgaXNDb2x1bW5IZWFkZXJDZWxsIGFuZCBpc1Jvd0hlYWRlckNlbGwgdGhy
b3VnaCBBWENvcmVPYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA1YTFiNDVhMjFlZjcwMDRk
OGY1NTBjMjhhZTkzMmIxMzIxZWQzMTQyLi5iMTAyNDA0OTFjODQ0MjUzMDUzMzA1OTUwZmQyMWIx
MjRjZjVlNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEwODAsNiArMTA4MCw3IEBAIHNldChX
ZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JIYXNoLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Db2xvclNwYWNlLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGll
cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9EYXNoQXJyYXkuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDNhOGY4ZmE2ZGJjNjcxZmJjMzRjNTkyMGY4YWQ0Y2MzNjNj
YjkwZjguLjBhMTEyNDlkYTA0M2M2MDRmZmM4ZGE1Y2JmZGEyODgyYzAxYmY1ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM2
Myw2ICszNjMsNyBAQAogCQkwRkVBM0U4MDE5MUIzMTY5MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZFQTNFN0UxOTFCMzE2OTAwMEYxQjU1IC8qIFNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRkVBM0U4NDE5MUIzMUJGMDAwRjFCNTUgLyogU2Nyb2xsaW5nU3Rh
dGVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRUEzRTgyMTkxQjMxQkYwMDBGMUI1NSAvKiBTY3JvbGxpbmdTdGF0
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGRUEzRTg4MTkxQjNCRDcwMDBGMUI1NSAvKiBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkVBM0U4NjE5MUIzQkQ3MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGRUFGNjZCMjNCRkMzOUUwMDQwMzBEQSAvKiBDb2xvclV0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNkM3NkMx
RkJGQjdBNjAwMjVDMDUzIC8qIENvbG9yVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFQzEyMEMyMkJGMkNEMjAwNEU5RDM1IC8q
IExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDMTIwOTIyQkYyQ0M3MDA0RTlEMzUgLyogTGF5ZXJBbmNl
c3RvckNsaXBwaW5nU3RhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRkYzQjkyOTFFRTNCNkRFMDBCODQxNDQgLyogSlNET01RdWFkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkYzQjkyNTFFRTNC
NkRFMDBCODQxNDQgLyogSlNET01RdWFkLmggKi87IH07CiAJCTBGRjNCOTJCMUVFM0I2REUwMEI4
NDE0NCAvKiBKU0RPTVF1YWRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkYzQjkyNzFFRTNCNkRFMDBCODQxNDQgLyogSlNET01RdWFkSW5pdC5o
ICovOyB9OwpAQCAtMjk4NzYsNiArMjk4NzcsNyBAQAogCQkJCUNFNTE2OUU3MjFGMUI4NDcwMEVB
NEY3OCAvKiBDb2xvcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRURFM0E1MDAwQzdBNDMwNjAw
OTU2QTM3IC8qIENvbG9yTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzgyREY1ODEwQThENUM5
MDA5MjU2NTIgLyogQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZFQUY2NkIyM0JG
QzM5RTAwNDAzMERBIC8qIENvbG9yVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0RE
NDU0RTEyMzZDOTVDMDA5QTc5ODUgLyogQ29sdW1uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDNFREQ2N0YxQjQ4NURCRjAwNjQwRTc1IC8qIENvbWJpbmVkRmlsdGVyc0FscGhhYmV0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkyNkU5NDREOTFBQzRCMkREMDA3Qjg1QjUgLyogQ29tYmluZWRVUkxG
aWx0ZXJzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcAppbmRleCA3MzgwMjVlNTM1MzJhMDkwOGViZjZiMGVhNzhhZTgyNzg1M2RhODc4
Li5kMjJjMmVkOTdhZWRlYTJkOThlZGNiYTIwZmEwYTBjM2ZhNTJlYTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCkBAIC0yNDAsMTIgKzI0MCwxMiBAQCBD
b2xvcjo6Q29sb3IoQ29sb3ImJiBvdGhlcikKICAgICAqdGhpcyA9IFdURk1vdmUob3RoZXIpOwog
fQogCi1Db2xvcjo6Q29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlKQorQ29sb3I6OkNvbG9yKGZsb2F0IGMxLCBmbG9hdCBjMiwgZmxv
YXQgYzMsIGZsb2F0IGFscGhhLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgLy8gWmVy
byB0aGUgdW5pb24sIGp1c3QgaW4gY2FzZSBhIDMyLWJpdCBzeXN0ZW0gb25seSBhc3NpZ25zIHRo
ZQogICAgIC8vIHRvcCAzMiBiaXRzIHdoZW4gY29weWluZyB0aGUgZXh0ZW5kZWRDb2xvciBwb2lu
dGVyIGJlbG93LgogICAgIG1fY29sb3JEYXRhLnJnYmFBbmRGbGFncyA9IDA7Ci0gICAgYXV0byBl
eHRlbmRlZENvbG9yUmVmID0gRXh0ZW5kZWRDb2xvcjo6Y3JlYXRlKHIsIGcsIGIsIGEsIGNvbG9y
U3BhY2UpOworICAgIGF1dG8gZXh0ZW5kZWRDb2xvclJlZiA9IEV4dGVuZGVkQ29sb3I6OmNyZWF0
ZShjMSwgYzIsIGMzLCBhbHBoYSwgY29sb3JTcGFjZSk7CiAgICAgbV9jb2xvckRhdGEuZXh0ZW5k
ZWRDb2xvciA9ICZleHRlbmRlZENvbG9yUmVmLmxlYWtSZWYoKTsKICAgICBBU1NFUlQoaXNFeHRl
bmRlZCgpKTsKIH0KQEAgLTU1NSw2ICs1NTUsMjMgQEAgdm9pZCBDb2xvcjo6Z2V0SFNWKGRvdWJs
ZSYgaHVlLCBkb3VibGUmIHNhdHVyYXRpb24sIGRvdWJsZSYgdmFsdWUpIGNvbnN0CiAgICAgdmFs
dWUgPSBtYXg7CiB9CiAKK0Zsb2F0Q29tcG9uZW50cyBDb2xvcjo6dG9TUkdCQUNvbXBvbmVudHNM
b3NzeSgpIGNvbnN0Cit7CisgICAgaWYgKGlzRXh0ZW5kZWQoKSkgeworICAgICAgICBhdXRvJiBl
eHRlbmRlZENvbG9yID0gYXNFeHRlbmRlZCgpOworICAgICAgICBzd2l0Y2ggKGV4dGVuZGVkQ29s
b3IuY29sb3JTcGFjZSgpKSB7CisgICAgICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKKyAgICAg
ICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJSR0I6CisgICAgICAgIGNhc2UgQ29sb3JTcGFjZTo6
RGlzcGxheVAzOgorICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBjb252ZXJ0IGlu
dG8gc1JHQiBhbmQgc2hvdWxkLgorICAgICAgICAgICAgcmV0dXJuIGV4dGVuZGVkQ29sb3IuY2hh
bm5lbHMoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmbG9hdCByLCBnLCBiLCBhOworICAgIGdl
dFJHQkEociwgZywgYiwgYSk7CisgICAgcmV0dXJuIHsgYSwgZywgYiwgYSB9OworfQorCiBDb2xv
ciBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQihSR0JBMzIgcGl4ZWxDb2xvcikKIHsKICAgICBp
ZiAocGl4ZWxDb2xvci5pc1Zpc2libGUoKSAmJiAhcGl4ZWxDb2xvci5pc09wYXF1ZSgpKQpAQCAt
NjA3LDcgKzYyNCw3IEBAIHZvaWQgQ29sb3I6OnRhZ0FzVmFsaWQoKQogICAgIG1fY29sb3JEYXRh
LnJnYmFBbmRGbGFncyB8PSB2YWxpZFJHQkFDb2xvcjsKIH0KIAotRXh0ZW5kZWRDb2xvciYgQ29s
b3I6OmFzRXh0ZW5kZWQoKSBjb25zdAorY29uc3QgRXh0ZW5kZWRDb2xvciYgQ29sb3I6OmFzRXh0
ZW5kZWQoKSBjb25zdAogewogICAgIEFTU0VSVChpc0V4dGVuZGVkKCkpOwogICAgIHJldHVybiAq
bV9jb2xvckRhdGEuZXh0ZW5kZWRDb2xvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvci5oCmluZGV4IGI5NDI0Y2M0YzMwNmMxZjVjMzRlM2FkZDFlZWQ3YmU3MTQ3ZGIzYmYu
LjMwYjM3NGM5ZDU5NDYyYTc2NTc1ZGQwODdjZWYxZTBkNTcxNmY1N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtMTY5LDcgKzE2OSw3IEBAIHB1YmxpYzoK
ICAgICAvLyBUaGlzIGNyZWF0ZXMgYW4gRXh0ZW5kZWRDb2xvci4KICAgICAvLyBGSVhNRTogSWYg
dGhlIGNvbG9yU3BhY2UgaXMgc1JHQiBhbmQgdGhlIHZhbHVlcyBjYW4gYWxsIGJlCiAgICAgLy8g
Y29udmVydGVkIGV4YWN0bHkgdG8gaW50ZWdlcnMsIHdlIHNob3VsZCBtYWtlIGEgbm9ybWFsIENv
bG9yLgotICAgIFdFQkNPUkVfRVhQT1JUIENvbG9yKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIs
IGZsb2F0IGEsIENvbG9yU3BhY2UgY29sb3JTcGFjZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29s
b3IoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIENvbG9yU3BhY2UpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvcihD
b2xvciYmKTsKQEAgLTIxNCw2ICsyMTQsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBnZXRIU0woZG91YmxlJiBoLCBkb3VibGUmIHMsIGRvdWJsZSYgbCkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRIU1YoZG91YmxlJiBoLCBkb3VibGUmIHMsIGRvdWJsZSYg
dikgY29uc3Q7CiAKKyAgICAvLyBUaGlzIHdpbGwgY29udmVydCBub24tc1JHQiBjb2xvcnNwYWNl
IGNvbG9ycyBpbnRvIHNSR0IuCisgICAgRmxvYXRDb21wb25lbnRzIHRvU1JHQkFDb21wb25lbnRz
TG9zc3koKSBjb25zdDsKKwogICAgIENvbG9yIGxpZ2h0KCkgY29uc3Q7CiAgICAgQ29sb3IgZGFy
aygpIGNvbnN0OwogCkBAIC0yNzIsNyArMjc1LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
cmV0dXJuICEobV9jb2xvckRhdGEucmdiYUFuZEZsYWdzICYgaW52YWxpZFJHQkFDb2xvcik7CiAg
ICAgfQotICAgIFdFQkNPUkVfRVhQT1JUIEV4dGVuZGVkQ29sb3ImIGFzRXh0ZW5kZWQoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBFeHRlbmRlZENvbG9yJiBhc0V4dGVuZGVkKCkg
Y29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciYgb3BlcmF0b3I9KGNvbnN0IENvbG9y
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgQ29sb3ImIG9wZXJhdG9yPShDb2xvciYmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcApp
bmRleCA3ZTlmOTg5MmRjM2MxNGFjZWVkODM4MTBmYjUzYWVlYjc4MDk4YTFmLi5jMmI4NjQ0OGNl
OTBkNWRhZDdmYjEyMzJjNTU2ZmY2OTNhNjFlMDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCkBAIC0yMjAsNyArMjIwLDcg
QEAgQ29sb3JNYXRyaXg6OkNvbG9yTWF0cml4KCkKICAgICBtYWtlSWRlbnRpdHkoKTsKIH0KIAot
Q29sb3JNYXRyaXg6OkNvbG9yTWF0cml4KGZsb2F0IHZhbHVlc1syMF0pCitDb2xvck1hdHJpeDo6
Q29sb3JNYXRyaXgoY29uc3QgZmxvYXQgdmFsdWVzWzIwXSkKIHsKICAgICBtX21hdHJpeFswXVsw
XSA9IHZhbHVlc1swXTsKICAgICBtX21hdHJpeFswXVsxXSA9IHZhbHVlc1sxXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5oCmluZGV4IDc4
ZWY4MjdlNWM5NzQ1NjBmNTQ1MTY2ZmJlZmNmN2Y2YjU2YmNkZTcuLjIzNDRjMmI5ZWQ1M2FkZTg1
OTVmMWJiNTE3ZDUwZGM0NDFlMDgwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuaApAQCAtMjUsMTIgKzI1LDE0IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5j
bHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bWF0aC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIENvbG9yOworCiBzdHJ1Y3QgRmxvYXRDb21wb25lbnRzIHsKICAgICBGbG9hdENvbXBv
bmVudHMoZmxvYXQgYSA9IDAsIGZsb2F0IGIgPSAwLCBmbG9hdCBjID0gMCwgZmxvYXQgZCA9IDAp
CiAgICAgewpAQCAtNDAsNiArNDIsMTQgQEAgc3RydWN0IEZsb2F0Q29tcG9uZW50cyB7CiAgICAg
ICAgIGNvbXBvbmVudHNbM10gPSBkOwogICAgIH0KIAorICAgIEZsb2F0Q29tcG9uZW50cyhjb25z
dCBzdGQ6OmFycmF5PGZsb2F0LCA0PiYgdmFsdWVzKQorICAgIHsKKyAgICAgICAgY29tcG9uZW50
c1swXSA9IHZhbHVlc1swXTsKKyAgICAgICAgY29tcG9uZW50c1sxXSA9IHZhbHVlc1sxXTsKKyAg
ICAgICAgY29tcG9uZW50c1syXSA9IHZhbHVlc1syXTsKKyAgICAgICAgY29tcG9uZW50c1szXSA9
IHZhbHVlc1szXTsKKyAgICB9CisKICAgICBGbG9hdENvbXBvbmVudHMoY29uc3QgQ29sb3ImKTsK
IAogICAgIEZsb2F0Q29tcG9uZW50cyYgb3BlcmF0b3IrPShjb25zdCBGbG9hdENvbXBvbmVudHMm
IHJocykKQEAgLTkxLDcgKzEwMSw3IEBAIHN0cnVjdCBGbG9hdENvbXBvbmVudHMgewogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIGZsb2F0IGNvbXBvbmVudHNbNF07CisgICAg
c3RkOjphcnJheTxmbG9hdCwgND4gY29tcG9uZW50czsKIH07CiAKIHN0cnVjdCBDb2xvckNvbXBv
bmVudHMgewpAQCAtMTE1LDcgKzEyNSw3IEBAIHN0cnVjdCBDb2xvckNvbXBvbmVudHMgewogICAg
ICAgICByZXR1cm4gY29tcG9uZW50c1swXSA8PCAyNCB8IGNvbXBvbmVudHNbMV0gPDwgMTYgfCBj
b21wb25lbnRzWzJdIDw8IDggfCBjb21wb25lbnRzWzNdOwogICAgIH0KIAotICAgIHVpbnQ4X3Qg
Y29tcG9uZW50c1s0XSB7IH07CisgICAgc3RkOjphcnJheTx1aW50OF90LCA0PiBjb21wb25lbnRz
OwogfTsKIAogaW5saW5lIENvbG9yQ29tcG9uZW50cyBwZXJDb21wb25lbnRNYXgoY29uc3QgQ29s
b3JDb21wb25lbnRzJiBhLCBjb25zdCBDb2xvckNvbXBvbmVudHMmIGIpCkBAIC0xNzIsNyArMTgy
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBDb2xvck1hdHJpeCBzZXBpYU1hdHJpeChmbG9hdCk7
CiAKICAgICBDb2xvck1hdHJpeCgpOwotICAgIENvbG9yTWF0cml4KGZsb2F0WzIwXSk7CisgICAg
Q29sb3JNYXRyaXgoY29uc3QgZmxvYXRbMjBdKTsKICAgICAKICAgICB2b2lkIHRyYW5zZm9ybUNv
bG9yQ29tcG9uZW50cyhGbG9hdENvbXBvbmVudHMmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcAppbmRleCA1YWQ4Y2Jm
ZTExNDljN2VjMDAzYmNjMGJiOWU3MzVmOTFmMGY5MGNkLi5hZTkxYjAwMWU5MjE3ZjE4MjVlOTVl
ZmI1YzRjNDcwMzg5MzMyYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9FeHRlbmRlZENvbG9yLmNwcApAQCAtMzEsOSArMzEsOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZjxFeHRlbmRlZENvbG9yPiBFeHRlbmRlZENvbG9yOjpjcmVhdGUoZmxv
YXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSkKK1JlZjxFeHRlbmRlZENvbG9yPiBFeHRlbmRlZENvbG9yOjpjcmVhdGUoZmxv
YXQgYzEsIGZsb2F0IGMyLCBmbG9hdCBjMywgZmxvYXQgYWxwaGEsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBFeHRlbmRlZENvbG9yKHJlZCwgZ3Jl
ZW4sIGJsdWUsIGFscGhhLCBjb2xvclNwYWNlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RXh0ZW5kZWRDb2xvcihjMSwgYzIsIGMzLCBhbHBoYSwgY29sb3JTcGFjZSkpOwogfQogCiBTdHJp
bmcgRXh0ZW5kZWRDb2xvcjo6Y3NzVGV4dCgpIGNvbnN0CkBAIC01Myw2ICs1Myw3IEBAIFN0cmlu
ZyBFeHRlbmRlZENvbG9yOjpjc3NUZXh0KCkgY29uc3QKIAogICAgIGlmIChXVEY6OmFyZUVzc2Vu
dGlhbGx5RXF1YWwoYWxwaGEoKSwgMS4wZikpCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJj
b2xvcigiLCBjb2xvclNwYWNlLCAnICcsIHJlZCgpLCAnICcsIGdyZWVuKCksICcgJywgYmx1ZSgp
LCAnKScpOworCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImNvbG9yKCIsIGNvbG9yU3BhY2UsICcg
JywgcmVkKCksICcgJywgZ3JlZW4oKSwgJyAnLCBibHVlKCksICIgLyAiLCBhbHBoYSgpLCAnKScp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bmRlZENvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbmRlZENv
bG9yLmgKaW5kZXggMTI3N2Y5NDhmMTIxNTU5NThjODkzMmNlOWM2MTczNTgxZTMxNGFmOS4uY2E4
MmI4N2ViZWJlMDZmOWRjMDdhNDYzMGM4ODE4ZWNjMWE4NTk0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5kZWRDb2xvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuZGVkQ29sb3IuaApAQCAtMjcsNiArMjcsNyBA
QAogCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogCisjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMu
aCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM1LDMxICszNiwzOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV4dGVuZGVkQ29sb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxF
eHRlbmRlZENvbG9yPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxFeHRlbmRlZENvbG9yPiBj
cmVhdGUoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEsIENv
bG9yU3BhY2UgPSBDb2xvclNwYWNlOjpTUkdCKTsKKyAgICBzdGF0aWMgUmVmPEV4dGVuZGVkQ29s
b3I+IGNyZWF0ZShmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCBhbHBoYSwgQ29sb3JTcGFjZSA9
IENvbG9yU3BhY2U6OlNSR0IpOwogCi0gICAgZmxvYXQgcmVkKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWQ7IH0KLSAgICBmbG9hdCBncmVlbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JlZW47IH0KLSAgICBm
bG9hdCBibHVlKCkgY29uc3QgeyByZXR1cm4gbV9ibHVlOyB9Ci0gICAgZmxvYXQgYWxwaGEoKSBj
b25zdCB7IHJldHVybiBtX2FscGhhOyB9CisgICAgZmxvYXQgcmVkKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2NoYW5uZWxzLmNvbXBvbmVudHNbMF07CisgICAgfQorCisgICAgZmxv
YXQgZ3JlZW4oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2hhbm5lbHMuY29tcG9u
ZW50c1sxXTsKKyAgICB9CisKKyAgICBmbG9hdCBibHVlKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2NoYW5uZWxzLmNvbXBvbmVudHNbMl07CisgICAgfQorCisgICAgZmxvYXQgYWxw
aGEoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxzLmNvbXBvbmVudHNbM107IH0KKworICAgIGNv
bnN0IEZsb2F0Q29tcG9uZW50cyYgY2hhbm5lbHMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5uZWxz
OyB9CiAKICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9y
U3BhY2U7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CiAK
IHByaXZhdGU6Ci0gICAgRXh0ZW5kZWRDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBm
bG9hdCBhLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCi0gICAgICAgIDogbV9yZWQocikKLSAgICAg
ICAgLCBtX2dyZWVuKGcpCi0gICAgICAgICwgbV9ibHVlKGIpCi0gICAgICAgICwgbV9hbHBoYShh
KQorICAgIEV4dGVuZGVkQ29sb3IoZmxvYXQgYzEsIGZsb2F0IGMyLCBmbG9hdCBjMywgZmxvYXQg
YWxwaGEsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKKyAgICAgICAgOiBtX2NoYW5uZWxzKGMxLCBj
MiwgYzMsIGFscGhhKQogICAgICAgICAsIG1fY29sb3JTcGFjZShjb2xvclNwYWNlKQogICAgIHsg
fQogCi0gICAgZmxvYXQgbV9yZWQgeyAwIH07Ci0gICAgZmxvYXQgbV9ncmVlbiB7IDAgfTsKLSAg
ICBmbG9hdCBtX2JsdWUgeyAwIH07Ci0gICAgZmxvYXQgbV9hbHBoYSB7IDAgfTsKLQorICAgIEZs
b2F0Q29tcG9uZW50cyBtX2NoYW5uZWxzOwogICAgIENvbG9yU3BhY2UgbV9jb2xvclNwYWNlIHsg
Q29sb3JTcGFjZTo6U1JHQiB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9Db2xvckNHLmNwcAppbmRleCA3ODM4ZjM1MzFjMmJlNTA2NTk1MmFlMWNiMzgx
ODdiYzliNzJlOTVkLi5kNzFhYzYyNDUyNmQ5YjlmOGQxZDAzNGZmNThkNzllNDdkYTcyOGNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcApA
QCAtMTA1LDExICsxMDUsMTIgQEAgc3RhdGljIENHQ29sb3JSZWYgbGVha0NHQ29sb3IoY29uc3Qg
Q29sb3ImIGNvbG9yKQogewogICAgIENHRmxvYXQgY29tcG9uZW50c1s0XTsKICAgICBpZiAoY29s
b3IuaXNFeHRlbmRlZCgpKSB7Ci0gICAgICAgIEV4dGVuZGVkQ29sb3ImIGV4dGVuZGVkQ29sb3Ig
PSBjb2xvci5hc0V4dGVuZGVkKCk7Ci0gICAgICAgIGNvbXBvbmVudHNbMF0gPSBleHRlbmRlZENv
bG9yLnJlZCgpOwotICAgICAgICBjb21wb25lbnRzWzFdID0gZXh0ZW5kZWRDb2xvci5ncmVlbigp
OwotICAgICAgICBjb21wb25lbnRzWzJdID0gZXh0ZW5kZWRDb2xvci5ibHVlKCk7Ci0gICAgICAg
IGNvbXBvbmVudHNbM10gPSBleHRlbmRlZENvbG9yLmFscGhhKCk7CisgICAgICAgIGNvbnN0IGF1
dG8mIGV4dGVuZGVkQ29sb3IgPSBjb2xvci5hc0V4dGVuZGVkKCk7CisgICAgICAgIGF1dG8gY2hh
bm5lbHMgPSBleHRlbmRlZENvbG9yLmNoYW5uZWxzKCk7CisgICAgICAgIGNvbXBvbmVudHNbMF0g
PSBjaGFubmVscy5jb21wb25lbnRzWzBdOworICAgICAgICBjb21wb25lbnRzWzFdID0gY2hhbm5l
bHMuY29tcG9uZW50c1sxXTsKKyAgICAgICAgY29tcG9uZW50c1syXSA9IGNoYW5uZWxzLmNvbXBv
bmVudHNbMl07CisgICAgICAgIGNvbXBvbmVudHNbM10gPSBjaGFubmVscy5jb21wb25lbnRzWzNd
OwogICAgICAgICBzd2l0Y2ggKGV4dGVuZGVkQ29sb3IuY29sb3JTcGFjZSgpKSB7CiAgICAgICAg
IGNhc2UgQ29sb3JTcGFjZTo6U1JHQjoKICAgICAgICAgICAgIHJldHVybiBDR0NvbG9yQ3JlYXRl
KHNSR0JDb2xvclNwYWNlUmVmKCksIGNvbXBvbmVudHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCmluZGV4
IGYxNmI5YjMxYTU1OWQ3NDYyMWZmMjMyNDRkYTkzMmRmNDMxNjhkNDkuLmU2YjhjMDgwZjJmMDQ1
NTIwMDQzZDg1MDdmMmMzMWFmMDllMWUyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKQEAgLTM4Miw3
ICszODIsNyBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1wZWRBcnJh
eSYgcGl4ZWxBcnJheSwgY29uc3QgUGFpbnRpbmdEYXRhJgogICAgICAgICAgICAgcG9pbnQuc2V0
WChwb2ludC54KCkgKyAxKTsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGlu
dmVyc2VUcmFuc2Zyb20ubWFwUG9pbnQocG9pbnQpOwogICAgICAgICAgICAgQ29sb3JDb21wb25l
bnRzIHZhbHVlcyA9IGNhbGN1bGF0ZVR1cmJ1bGVuY2VWYWx1ZUZvclBvaW50KHBhaW50aW5nRGF0
YSwgc3RpdGNoRGF0YSwgbG9jYWxQb2ludCk7Ci0gICAgICAgICAgICBwaXhlbEFycmF5LnNldFJh
bmdlKHZhbHVlcy5jb21wb25lbnRzLCA0LCBpbmRleE9mUGl4ZWxDaGFubmVsKTsKKyAgICAgICAg
ICAgIHBpeGVsQXJyYXkuc2V0UmFuZ2UodmFsdWVzLmNvbXBvbmVudHMuZGF0YSgpLCA0LCBpbmRl
eE9mUGl4ZWxDaGFubmVsKTsKICAgICAgICAgICAgIGluZGV4T2ZQaXhlbENoYW5uZWwgKz0gNDsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAppbmRleCAzMGJiNDhjYzhm
MGM0OTU0NDhhYjY1ZjY4MTE3MmNjYzZiY2E1MzVjLi4xNzAzMmQyNDQxOTBkMWZkMmIwZDFkOTcw
ZGRmZTEwMmQzYWVmNDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCkBAIC0yMzYsNyArMjM2
LDcgQEAgYm9vbCBJbnZlcnRMaWdodG5lc3NGaWx0ZXJPcGVyYXRpb246OnRyYW5zZm9ybUNvbG9y
KEZsb2F0Q29tcG9uZW50cyYgc1JHQkNvbG9yQ28KICAgICBzUkdCQ29sb3JDb21wb25lbnRzID0g
SFNMVG9TUkdCKGhzbENvbXBvbmVudHMpOwogICAgIAogICAgIC8vIEFwcGx5IHRoZSBtYXRyaXgu
IFNlZSByZGFyOi8vcHJvYmxlbS80MTE0NjY1MCBmb3IgaG93IHRoaXMgbWF0cml4IHdhcyBkZXJp
dmVkLgotICAgIGZsb2F0IG1hdHJpeFZhbHVlc1syMF0gPSB7CisgICAgY29uc3QgZmxvYXQgbWF0
cml4VmFsdWVzWzIwXSA9IHsKICAgICAgICAtMC43NzAsICAwLjA1OSwgLTAuMDg5LCAwLCAxLAog
ICAgICAgICAwLjAzMCwgLTAuNzQxLCAtMC4wODksIDAsIDEsCiAgICAgICAgIDAuMDMwLCAgMC4w
NTksIC0wLjg5MCwgMCwgMSwKQEAgLTI1Miw3ICsyNTIsNyBAQCBib29sIEludmVydExpZ2h0bmVz
c0ZpbHRlck9wZXJhdGlvbjo6aW52ZXJzZVRyYW5zZm9ybUNvbG9yKEZsb2F0Q29tcG9uZW50cyYg
c1JHQgogewogICAgIEZsb2F0Q29tcG9uZW50cyByZ2JDb21wb25lbnRzID0gc1JHQkNvbG9yQ29t
cG9uZW50czsKICAgICAvLyBBcHBseSB0aGUgbWF0cml4LgotICAgIGZsb2F0IG1hdHJpeFZhbHVl
c1syMF0gPSB7CisgICAgY29uc3QgZmxvYXQgbWF0cml4VmFsdWVzWzIwXSA9IHsKICAgICAgICAg
LTEuMzAwLCAtMC4wOTcsICAwLjE0NywgMCwgMS4yNSwKICAgICAgICAgLTAuMDQ5LCAtMS4zNDcs
ICAwLjE0NiwgMCwgMS4yNSwKICAgICAgICAgLTAuMDQ5LCAtMC4wOTcsIC0xLjEwNCwgMCwgMS4y
NSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xv
ckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvQ29sb3JHdGsu
Y3BwCmluZGV4IDZmYjFlOTQyZDFmYWMyYjZhMTNjOWNhOTBlOTQwNzdlMmYyMTJiNGEuLjQzZGI1
YzNmYjQ5MTdkYTQxOGNkMjA5NmEwYmZkOGVjZDBmZWEyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0ay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0NvbG9yR3RrLmNwcApAQCAtMjEsNiArMjEsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAKKyNpbmNsdWRlICJD
b2xvclV0aWxpdGllcy5oIgogI2luY2x1ZGUgPGdkay9nZGsuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzUsOCArMzYsMTAgQEAgQ29sb3I6OkNvbG9yKGNvbnN0IEdka1JHQkEmIGMpCiAK
IENvbG9yOjpvcGVyYXRvciBHZGtSR0JBKCkgY29uc3QKIHsKLSAgICBpZiAoaXNFeHRlbmRlZCgp
KQotICAgICAgICByZXR1cm4geyBhc0V4dGVuZGVkKCkucmVkKCksIGFzRXh0ZW5kZWQoKS5ncmVl
bigpLCBhc0V4dGVuZGVkKCkuYmx1ZSgpLCBhc0V4dGVuZGVkKCkuYWxwaGEoKSB9OworICAgIGlm
IChpc0V4dGVuZGVkKCkpIHsKKyAgICAgICAgYXV0byBhc1JHQkEgPSB0b1NSR0JBQ29tcG9uZW50
c0xvc3N5KCk7CisgICAgICAgIHJldHVybiB7IGFzUkdCQS5jb21wb25lbnRzWzBdLCBhc1JHQkEu
Y29tcG9uZW50c1sxXSwgYXNSR0JBLmNvbXBvbmVudHNbMl0sIGFzUkdCQS5jb21wb25lbnRzWzNd
IH07CisgICAgfQogCiAjaWYgVVNFKEdUSzQpCiAgICAgZmxvYXQgcmVkLCBncmVlbiwgYmx1ZSwg
YWxwaGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Q29sb3JEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Q29sb3JEaXJlY3QyRC5jcHAKaW5kZXggOGMzMWI2NzI2ZWE0NjcxOWNjNWFhZjViODgwNWQxZTNl
YzkwODM0MC4uMjM4MjU1OTJmNGM4NDNlOGNjNWM4YjIxYzRjMzJlN2UzM2EzZWMzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0NvbG9yRGlyZWN0MkQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Db2xvckRpcmVj
dDJELmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oV0lOKQogCisjaW5jbHVk
ZSAiQ29sb3JVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxkMmQxLmg+CiAjaW5jbHVkZSA8ZDJkMV8x
aGVscGVyLmg+CiAKQEAgLTQwLDE2ICs0MSwxOSBAQCBDb2xvcjo6Q29sb3IoRDJEMV9DT0xPUl9G
IGNvbG9yKQogCiBDb2xvcjo6b3BlcmF0b3IgRDJEMV9DT0xPUl9GKCkgY29uc3QKIHsKLSAgICBm
bG9hdCBjb2xvckFscGhhID0gYWxwaGEoKSAvIDI1NS4wZjsKKyAgICBpZiAoaXNFeHRlbmRlZCgp
KSB7CisgICAgICAgIGF1dG8gYXNSR0JBID0gdG9TUkdCQUNvbXBvbmVudHNMb3NzeSgpOworICAg
ICAgICByZXR1cm4gRDJEMTo6Q29sb3JGKGFzUkdCQS5jb21wb25lbnRzWzBdLCBhc1JHQkEuY29t
cG9uZW50c1sxXSwgYXNSR0JBLmNvbXBvbmVudHNbMl0sIGFzUkdCQS5jb21wb25lbnRzWzNdKTsK
KyAgICB9CiAKKyAgICBmbG9hdCBjb2xvckFscGhhID0gYWxwaGEoKSAvIDI1NS4wZjsKICAgICBy
ZXR1cm4gRDJEMTo6Q29sb3JGKHJnYigpLnZhbHVlKCksIGNvbG9yQWxwaGEpOwogfQogCiBDb2xv
cjo6b3BlcmF0b3IgRDJEMV9WRUNUT1JfNEYoKSBjb25zdAogewotICAgIGZsb2F0IHIsIGcsIGIs
IGE7Ci0gICAgZ2V0UkdCQShyLCBnLCBiLCBhKTsKLSAgICByZXR1cm4gRDJEMTo6VmVjdG9yNEYo
ciwgZywgYiwgYSk7CisgICAgYXV0byBhc1JHQkEgPSB0b1NSR0JBQ29tcG9uZW50c0xvc3N5KCk7
CisgICAgcmV0dXJuIEQyRDE6OlZlY3RvcjRGKGFzUkdCQS5jb21wb25lbnRzWzBdLCBhc1JHQkEu
Y29tcG9uZW50c1sxXSwgYXNSR0JBLmNvbXBvbmVudHNbMl0sIGFzUkdCQS5jb21wb25lbnRzWzNd
KTsKIH0KIAogfQo=
</data>
<flag name="review"
          id="414999"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>